code:
#!/usr/bin/env perl
# $Id$
# Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015
# Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License,
# or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Original author: Karl Berry.
#
# Kludge of a script to check command lists in refcard vs. refman vs.
# tp for consistency.

exit (&main ());

sub main {
  my $no_common = $ARGV[0] eq "--no-common";

  my %card_cmds = &read_refcard ("txirefcard.tex");
  my %idx_cmds = &read_refidx ("../texinfo.texi");
  my %man_cmds = &read_refman ("../texinfo.texi");
  my %tp_cmds = &read_tp ("../../util/txicmdlist");

  # find the commands that are covered everywhere.
  my @found = ();
  for my $cc (keys %card_cmds) {
    if (exists $idx_cmds{$cc}
        && exists $man_cmds{$cc}
        && exists $tp_cmds{$cc}) {
      push (@found, $cc);
      delete $card_cmds{$cc};
      delete $idx_cmds{$cc};
      delete $man_cmds{$cc};
      delete $tp_cmds{$cc};
    }
  }

  printf ("    common %d: @{[sort @found]}\n", @found + 0)
    unless $no_common;

  # there are numerous @findex entries which are not @-commands, which
  # can be seen this way:
  #my @idx_only = keys %idx_cmds;
  #printf "findex  only %s: @{[sort @idx_only]}\n", @idx_only + 0;
  #
  # let's not report those, but we do want to report normal commands that
  # did not have findex entries: those which are present in all the
  # other lists.
  my @idx_missing = ();
  for my $cc (sort keys %card_cmds) {
    if (exists $man_cmds{$cc} && exists $tp_cmds{$cc}) {
      push (@idx_missing, $cc);
      delete $card_cmds{$cc};
      delete $man_cmds{$cc};
      delete $tp_cmds{$cc};
    }
  }
  printf "findex missing %s: @idx_missing\n", @idx_missing + 0
    if @idx_missing;

  # now report on commands only in some other subset.
  my @card_only = keys %card_cmds;
  printf "refcard only %s: @{[sort @card_only]}\n", @card_only + 0;

  my @man_only = keys %man_cmds;
  printf "refman  only %s: @{[sort @man_only]}\n", @man_only + 0;

  my @tp_only = keys %tp_cmds;
  printf "tp      only %s: @{[sort @tp_only]}\n", @tp_only + 0;

  return @card_only + @man_only + @tp_only;
}

# Return command names from the reference card as the keys of a hash
# (with empty values).  In principle it's a list, but as a practical
# matter we want to work with a hash anyway, so we might as well return
# it that way in the first place.  (Ditto for the other functions.)
#
sub read_refcard {
  my ($fname) = @_;
  my @ret = ();

  local *FILE;
  $FILE = $fname;
  open (FILE) || die "open($FILE) failed: $!";
  while (<FILE>) {
    next unless /^\\txicmd/;
    chomp;
    my $xcmd = 0;
    s/\\txicmdarg\{.*?\}\}?//; # first get rid of the arguments
    s/\}\{.*//;                # then the descriptions
    s/^\\txicmdx\{// && ($xcmd = 1);  # used for the @def...x
    s/^\\txicmd\{//;           # finally the markup cmd itself
    s/\\ttbraced\{\}//g;       # quote cmd list

    my (@cmds) = split (/,? +/, $_);  # occasionally we combine cmds

    # we typeset these specially in TeX.
    if ("@cmds" eq "@#1footing") {
      @cmds = ('@oddfooting', '@evenfooting', '@everyfooting');
    } elsif ("@cmds" eq "@#1heading") {
      @cmds = ('@oddheading', '@evenheading', '@everyheading');
    }

    # add each command from this line to the return.
    for my $c (@cmds) {
#warn "refcard $c\n";
#warn "refcard $c{x}\n" if $xcmd;
      next if $c eq "txicommandconditionals"; # variable not separate in manual
      if ($c eq '@\tildechar') { # TeX specialties, forcibly make them match
        $c = '@~';
      } elsif ($c eq '@\var{whitespace}') {
        $c = '@var{whitespace}';
      }
      $c = '@~' if $c eq '@\tildechar';  # TeX
      $c = '@\\' if $c eq '@\bschar';  # TeX
      $c = '@{' if $c eq '@\lbracechar';  # TeX
      $c = '@}' if $c eq '@\rbracechar';  # TeX
      push (@ret, $c);
      push (@ret, "${c}x") if $xcmd;
    }
  }
  push (@ret, '@end', '@uref', '@appendixsection');  # described in text
  push (@ret, '@,');  # our non-parsing above lost these
  push (@ret, qw(@atchar @lbracechar @rbracechar @backslashchar));
  close (FILE) || warn "close($FILE) failed: $!";

  my %ret; @ret{@ret} = ();
  return %ret;
}

# Return command names from @findex entries in the reference manual as
# the keys of a hash (empty values).
#
sub read_refidx {
  my ($fname) = @_;
  my @ret = ();

  local *FILE;
  $FILE = $fname;
  open (FILE) || die "open($FILE) failed: $!";
  while (<FILE>) {
    next unless s/^\@findex\s+//; # only consider @findex lines
    chomp;
    s/\s+\@r.*$//;# if /^[^a-zA-Z]/;        # remove comment
    s/\@\{\@\}//;         # remove @{@} used in atchar, etc.
    s/<colon>/:/;         # @:
    s/<newline>/var{whitespace}/;  # special generic entry: @var{whitespace}
    s/^/\@/ unless /^\@/; # prepend @ unless already there (@@ @{ @})
    push (@ret, $_);
  }
  close (FILE) || warn "close($FILE) failed: $!";

  my %ret; @ret{@ret} = ();
  return %ret;
}

# Return command names from the @-Command List node in the reference
# manual as the keys of a hash (empty values).
#
sub read_refman {
  my ($fname) = @_;
  my @ret = ();

  local *FILE;
  $FILE = $fname;
  open (FILE) || die "open($FILE) failed: $!";
  while (<FILE>) {
    last if /^\@section \@\@-Command List/;  # ignore until right section
  }
  while (<FILE>) {
    last if /^\@end table/; # ignore again after the summary
    next unless s/^\@itemx? *\@//;  # only want item[x]s in the table
    chomp;
    s/\@\{.+//;  # remove braced arguments (but not @{)
    s/ .*//;     # remove arguments following a space
    s/\@\@/@/g;  # @@ -> @
    next if $_ =~ /^\@(br|ctrl)$/;  # @ignore-d in text
    push (@ret, $_);
  }
  push (@ret, '@{'); # our non-parsing above fails on this one
  close (FILE) || warn "close($FILE) failed: $!";

  my %ret; @ret{@ret} = ();
  return %ret;
}

# Return command names implemented in the general parser as the keys of
# a hash (empty values).  The argument is the command to run to return
# the list.
#
sub read_tp {
  my ($prog) = @_;
  my @ret = ();

  local *FILE;
  $FILE = "$prog |";
  open (FILE) || die "open($FILE) failed: $!";
  while (<FILE>) {
    chomp;
    # excise @<whitespace> commands from normal list.
    next if $_ eq '@ ' || $_ eq "\@\t" || $_ eq "" || $_ eq '@';

    # obsolete and/or subsidiary commands we don't want to document as usual.
    next if $_ =~ /allow-recursion
                   |columnfractions
                   |cropmarks
                   |ctrl
                   |(even|every|odd)(foot|head)ingmarks
                   |quote-arg
                   |rmacro
                   |set(short)?contentsaftertitlepage
                   |shorttitle$
                   |\|
                  /x;
    push (@ret, $_);
  }
  close (FILE) || warn "close($FILE) failed: $!";

  push (@ret, '@var{whitespace}');

  my %ret; @ret{@ret} = ();
  return %ret;
}

path: doc/refcard/txicmdcheck


code:
% Texinfo reference card.
% $Id$
%
%**start of header
% This file can be printed with 1, 2, or 3 columns per page (see below).
% Specify how many you want here.  (Except only 3 has been tested.)
\newcount\columnsperpage
\columnsperpage=3

% Set letterpaper to 0 for A4 paper, 1 for letter (US) paper.
% (Except only 1 (letter) has been tested)
% Useful only when columnsperpage is 2 or 3.
% \afour is defined in the invocation from the Makefile.
\newcount\letterpaper
\ifx\undefined\afour\letterpaper=1 \else\letterpaper=0 \fi

% Copyright 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016
% Free Software Foundation, Inc.
%
% This file is part of GNU Texinfo.
%
% Texinfo is free software; you can redistribute it and/or modify it
% under the terms of the GNU General Public License as published by the
% Free Software Foundation; either version 3 of the License, or (at your
% option) any later version.
%
% Texinfo is distributed in the hope that it will be useful,
% but WITHOUT ANY WARRANTY; without even the implied warranty of
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
% GNU General Public License for more details.
%
% You should have received a copy of the GNU General Public License
% along with Texinfo.  If not, see <http://www.gnu.org/licenses/>.
%
% This file is written in plain TeX.
%
% To compile and print this document:
% tex refcard.tex
% dvips -t letter -t landscape refcard.dvi
%
% Author:
%  Robert D. Solimeno (adapted from Emacs reference card by Stephen Gildea)
%  Internet: solimeno (at) gmail (dot) com
%
% The author thanks Karl Berry for the opportunity to contribute to this
% project and for his assistance and great patience as I learned how to
% use TeX.
%
% Much of the text is based on, and sometimes copied from, the @-Command
% Summary node in the Texinfo manual, originally written by Bob Chassell.

\def\versionyear{2016}          % year manual was updated
\def\versionTexinfo{6.3}        % version of Texinfo this manual is for

\def\copyrightnotice{%
\vskip 1ex plus 1filll\begingroup\small
\advance\baselineskip by 1pt
\centerline{Copyright \copyright\ 2016 Free Software Foundation, Inc.}
\centerline{for Texinfo version \versionTexinfo, \versionyear}
\centerline{by Robert D. Solimeno}
\centerline{and the Texinfo maintainers}

\smallskip
  Copying and distribution of this material, with or without modification,
  are permitted in any medium without royalty provided the copyright
  notice and this notice are preserved.

\smallskip
For printed copies of the Texinfo manual, visit {\tt
http://www.gnupress.org} or write to the Free Software Foundation, Inc.,
51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.

\endgroup}

% make \bye not \outer so that the \def\bye in the \else clause below
% can be scanned without complaint.
\def\bye{\par\vfill\supereject\end}

\newdimen\intercolumnskip	%horizontal space between columns
\newbox\columna			%boxes to hold columns already built
\newbox\columnb

\def\ncolumns{\the\columnsperpage}

\message{[\ncolumns\space
  column\if 1\ncolumns\else s\fi\space per page]}

\def\scaledmag#1{ scaled \magstep #1}

% This multi-way format was designed by Stephen Gildea October 1986.
% Note that the 1-column format is fontfamily-independent.
\ifnum \ncolumns=1			%one-column format uses normal size
  \hsize 4in
  \vsize 10in
  \voffset -.7in
  \font\titlefont=\fontname\tenbf \scaledmag3
  \font\headingfont=\fontname\tenbf \scaledmag2
  \font\smallfont=\fontname\sevenrm
  \font\smallsy=\fontname\sevensy
  \font\acrofont=cmr9
  \footline{\hss\folio}
  \def\makefootline{\baselineskip10pt\hsize6.5in\line{\the\footline}}
\else				%2 or 3 columns uses prereduced size
  \hsize 3.4in
  \ifnum \letterpaper=1
     \vsize 7.95in
  \else
     \vsize 7.65in
  \fi
  \hoffset -.75in
  \voffset -.745in
  \font\titlefont=cmbx8 \scaledmag3
  \font\headingfont=cmbx8 \scaledmag2
  \font\subheadingfont=cmbx8 \scaledmag1
  \font\subsubheadingfont=cmbx8 \scaledmag0
  \font\smallfont=cmr8
  \font\smallsy=cmsy8
  \font\eightrm=cmr8
  \font\eightbf=cmbx8
  \font\eightit=cmti8
  \font\eighttt=cmtt8
  \font\eightmi=cmmi8
  \font\eightsl=cmsl8
  \font\eightsy=cmsy8
  \textfont0=\eightrm
  \textfont1=\eightmi
  \textfont2=\eightsy
  \def\rm{\eightrm}
  \def\bf{\eightbf}
  \def\it{\eightit}
  \def\sl{\eightsl}
  \def\tt{\eighttt}
  \font\acrofont=cmr7
  \ifnum \letterpaper=1
     \normalbaselineskip=.75\normalbaselineskip
  \else
     \normalbaselineskip=.7\normalbaselineskip
  \fi
  \normallineskip=.8\normallineskip
  \normallineskiplimit=.8\normallineskiplimit
  \normalbaselines\rm		%make definitions take effect

  \if 2\ncolumns
    \let\maxcolumn=b
    \footline{\hss\rm\folio\hss}
    \def\makefootline{\vskip 2in \hsize=6.86in\line{\the\footline}}
  \else \if 3\ncolumns
    \let\maxcolumn=c
    \nopagenumbers
  \else
    \errhelp{You must set \columnsperpage equal to 1, 2, or 3.}
    \errmessage{Invalid number of columns per page}
  \fi\fi

  \intercolumnskip=.1in
  \def\abc{a}
  \output={%			%see The TeXbook page 257
      % This next line is useful when designing the layout.
      %\immediate\write16{Column \folio\abc\space starts with \firstmark}
      \if \maxcolumn\abc \multicolumnformat \global\def\abc{a}
      \else\if a\abc
	\global\setbox\columna\columnbox \global\def\abc{b}
        %% in case we never use \columnb (two-column mode)
        \global\setbox\columnb\hbox to -\intercolumnskip{}
      \else
	\global\setbox\columnb\columnbox \global\def\abc{c}\fi\fi}
  \def\multicolumnformat{\shipout\vbox{\makeheadline
      \hbox{\box\columna\hskip\intercolumnskip
        \box\columnb\hskip\intercolumnskip\columnbox}
      \makefootline}\advancepageno}
  \def\columnbox{\leftline{\pagebody}}

  \def\bye{\par\vfill\supereject
    \if a\abc \else\null\vfill\eject\fi
    \if a\abc \else\null\vfill\eject\fi
    \end}
\fi

\parindent 0pt
\parskip 1ex plus.5ex minus.5ex  % between entries
\emergencystretch = .9\hsize
\rightskip = 0pt plus.33\hsize
\hbadness = 3000

% characters special to TeX.
\catcode`\^=12
\catcode`\_=12
\def\tildechar{{\tt \char`\~}}
\def\bschar{{\tt \char`\\}}
\def\lbracechar{{\tt \char`\{}}
\def\rbracechar{{\tt \char`\}}}

\def\small{\smallfont\textfont2=\smallsy\baselineskip=0.9\baselineskip}

% newcolumn - force a new column.  Use sparingly if at all.
\outer\def\newcolumn{\vfill\eject}

% title - page title.  Argument is title text.
\outer\def\title#1{{\titlefont\centerline{#1}}\vskip 1ex plus .5ex minus .75ex}

% chapter - new major section.  Argument is section name.
\outer\def\chapter#1{\glueabove{2ex plus1.5ex minus1.5ex}%
  \nobreak\noindent {\headingfont #1}%
  \nobreak\vskip 0pt plus1ex\nobreak}
%
\outer\def\section#1{\glueabove{1.5ex plus1ex minus1ex}
  \nobreak\noindent {\subheadingfont #1}%
  \nobreak\vskip 0pt plus.5ex\nobreak}
%
\outer\def\subsection#1{\glueabove{.75ex plus.5ex minus.5ex}%
  \nobreak\noindent \centerline{\it #1}%
  \nobreak\vskip-.5ex % reduce parskip
  \nobreak
  }

\def\glueabove#1{\par\ifnum\lastpenalty<10000 \filbreak \vskip #1\relax\fi}

% paralign - begin paragraph containing an alignment.
% If an \halign is entered while in vertical mode, a parskip is never
% inserted.  Using \paralign instead of \halign solves this problem.
\def\paralign{\vskip\parskip\halign}

% forced line break.
\def\linebreak{\hfil\break}

% code, samp - typewriter, without or with surrounding quotes.
\def\code#1{{\tt#1}\null}	%\null so not an abbrev even if period follows
\def\samp#1{`\code{#1}'}

% var - metasyntactic var, in slanted.
\def\var#1{{\sl#1\/}\null}

% acro - one point size smaller than main text.
\def\acro#1{{\acrofont #1}}

% beginexample...endexample surrounds literal text, such a code example.
% typeset in a typewriter font with line breaks preserved
\def\beginexample{\par\leavevmode\begingroup
  \obeylines\obeyspaces\parskip0pt\tt}
{\obeyspaces\global\let =\ }
\def\endexample{\endgroup}

% \beginindentedkeys...\endindentedkeys - key definitions will be
% indented, but running text, typically used as headings to group
% definitions, will not.
\newdimen\keyindent
\def\beginindentedkeys{\keyindent=1em}
\def\endindentedkeys{\keyindent=0em}
\endindentedkeys

% \key{key-name}{description of key}
% prints the description left-justified, and the key-name in a \code
% form near the right margin.  Both in typewriter.  The order of the
% arguments is because that is what describe-mode outputs.
\def\key#1#2{\leavevmode\hbox to \hsize{\tt
  \vtop{\hsize=.75\hsize \rightskip=1em \hskip\keyindent\relax #2}%
  #1\hfil}}

% \infokey KEY DESC
% the keystroke is delimited by space(s) from the description, the idea
% being to make straight copy-and-paste from the help message mostly work.
\gdef\infokey#1 #2\cr{\code{#1}&#2\cr}%

% make eol active.
\def\begininfokeys{
  \smallskip
  \begingroup
    \def\par{\noalign{\smallskip}}% blank lines within the table
    \halign\bgroup ##\quad\hfil&##\hfil\cr
}
\def\endinfokeys{\egroup\endgroup\smallskip}

% txicmd - definition of a txicmd.
% \txicmd{cmdname}{args}{description of txicmd}
% prints the txicmd-name left-justified in typewriter, and the description
% in small font in a paragraph below the command.
%
\def\txicmd#1#2#3{\ifnum\lastpenalty<10000 \filbreak\fi
  {{\tt#1}\txicmdarg{#2}\ {\small#3}\vskip -2pt}}
\def\txicmdarg#1{\ {\small\sl\kern-.17em #1}}
% the kern there gives us less than a full word space; we want enough
% space for the line-delimited commands like @chapter, but not to be
% excessive for the brace-delimited commands like @url.

% For the definition commands, which all have @foo and @foox variants.
\def\txicmdx#1{\txicmd{#1\rmbrack[x]}}

% Enclose argument in roman brackets.
\def\rmbrack[#1]{{\small[}#1\/{\small{]}\thinspace}}

% Enclose argument in typewriter braces.
\def\ttbraced#1{\lbracechar#1\rbracechar}

% metax - definition of a M-x command.
% \metax{description of command}{M-x command-name}
% Tries to justify the beginning of the command name at the same place
% as \key starts the key name.  (The "M-x " sticks out to the left.)
\newbox\metaxbox
\setbox\metaxbox\hbox{\code{M-x }}
\newdimen\metaxwidth
\metaxwidth=\wd\metaxbox

\def\metax#1#2{\leavevmode\hbox to \hsize{\hbox to .75\hsize
  {\hskip\keyindent\relax#1\hfil}%
  \hskip -\metaxwidth minus 1fil
  \code{#2}\hfil}}

% threecol - like "key" but with two key names.
% for example, one for doing the action backward, and one for forward.
\def\threecol#1#2#3{\hskip\keyindent\relax#1\hfil&\code{#2}\hfil\quad
  &\code{#3}\hfil\quad\cr}

% Define the LaTeX logo
\def\LaTeX{L\kern-.35em \raise.65ex\hbox{\fiverm A}\kern-.15em \TeX}%

% Define some special glyphs, taken from Texinfo.tex
% The @error{} command.
% Adapted from the TeXbook's \boxit.
%
\newbox\errorbox
%
{\tentt \global\dimen0 = 3em}% Width of the box.
\dimen2 = .35pt % Thickness of rules
% The text. (`r' is open on the right, `e' somewhat less so on the left.)
\setbox0 = \hbox{\kern-.75pt  \smallfont error\kern-1.5pt}
%
\setbox\errorbox=\hbox to \dimen0{\hfil
   \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
   \advance\hsize by -2\dimen2 % Rules.
   \vbox{%
      \hrule height\dimen2
      \hbox{\vrule width\dimen2 \kern3pt          % Space to left of text.
         \vtop{\kern2.4pt \box0 \kern2.4pt}% Space above/below.
         \kern3pt\vrule width\dimen2}% Space to right.
      \hrule height\dimen2}
    \hfil}
%
\def\error{\leavevmode\lower.7ex\copy\errorbox}

% @point{}, @result{}, @expansion{}, @print{}, @equiv{}.
%
% Since these characters are used in examples, it should be an even number of
% \tt widths. Each \tt character is 1en, so two makes it 1em.
%
\def\point{$\star$}
\def\result{\leavevmode\raise.15ex\hbox to 1em{\hfil$\Rightarrow$\hfil}}
\def\expansion{\leavevmode\raise.1ex\hbox to 1em{\hfil$\mapsto$\hfil}}
\def\print{\leavevmode\lower.1ex\hbox to 1em{\hfil$\dashv$\hfil}}

% @registeredsymbol - R in a circle.
\def\registeredsymbol{%
 \raise.8ex\hbox{{{\ooalign{\hfil\raise.07ex\hbox{\fiverm R}%
              \hfil\crcr\Orb}}%
   }}%
}

\def\ordf{\leavevmode\raise1ex\hbox{\fiverm \underbar{a}}}
\def\ordm{\leavevmode\raise1ex\hbox{\fiverm \underbar{o}}}

\font\eurofont = feybr10 at 8pt
\def\euro{{\eurofont e}}

\font\ecfont = ecrm0800
\def\DH{{\ecfont \char"D0}} % Eth
\def\dh{{\ecfont \char"F0}} % eth
\def\TH{{\ecfont \char"DE}} % Thorn
\def\th{{\ecfont \char"FE}} % thorn
\def\guillemetleft{{\ecfont \char"13}}
\def\guillemotleft{\guillemetleft}
\def\guillemetright{{\ecfont \char"14}}
\def\guillemotright{\guillemetright}
\def\guilsinglleft{{\ecfont \char"0E}}
\def\guilsinglright{{\ecfont \char"0F}}
\def\quotedblbase{{\ecfont \char"12}}
\def\quotesinglbase{{\ecfont \char"0D}}
\def\ogonek#1{{%
    \ecfont \setbox0=\hbox{#1}%
    \ifdim\ht0=1ex\accent"0C #1%
    \else\ooalign{\unhbox0\crcr\hidewidth\char"0C \hidewidth}%
    \fi
}}
% normal quotes
\def\quoteleft{`}
\def\quoteright{'}
\def\quotedblleft{``}
\def\quotedblright{''}

%**end of header

%
\title{GNU Texinfo Reference Card}

\centerline{(for Texinfo version \versionTexinfo)}
\vskip1pt
\centerline{\code{http://www.gnu.org/software/texinfo/}}

\chapter{Texinfo document skeleton}

Texinfo source files are plain text; standard extensions are
\samp{.texinfo}, \samp{.texi}, and \samp{.txi}.  A Texinfo file must
begin with lines like this:

{\advance\baselineskip by -3pt
\code{\bschar input texinfo}\linebreak
\code{@setfilename {\sl info-file-name}}\linebreak
\code{@settitle {\sl name-of-manual}}}

\dots the contents of the Texinfo document,
ending with:\linebreak
\code{@bye}

\chapter{Texinfo @-commands}

\section{Beginning a Texinfo document}

The commands in this section are given approximately in the order in
which they conventionally appear.

\txicmd{@setfilename}{info-file-name}{Provide a name to be used for the output files. This command is essential for \TeX\  formatting as well, even though it produces no output.  Should be the first command in the input.}
\txicmd{@settitle}{title}{Specify document \var{title}.}
\txicmd{@copying}{}{Specify copyright and licensing text. Pair with \code{@end copying}.}
\txicmd{@insertcopying}{}{Insert text defined by \code{@copying}.}

\subsection{Internationalization}

\txicmd{@documentencoding}{enc}{Declare the input encoding to be \var{enc}; use right after \code{@setfilename}.  Default is \code{US-ASCII}; other possibilities: \code{UTF-8}, \code{ISO-8859-1}, \code{koi8-r}, \dots}
\txicmd{@documentlanguage}{LL\rmbrack[\code{_}CC]}{Declare the current language as the two-character \acro{ISO}-639 abbreviation \var{LL}, optionally followed by an underscore and a two-letter \acro{ISO} 3166 two-letter country code (\var{CC}). Default is \code{en_US}.}
\txicmd{@frenchspacing}{\code{on|off}}{Control spacing after punctuation.}

\subsection{Info directory specifications}

\txicmd{@dircategory}{category name}{Specify an Info directory section for this file's entries.  Can be repeated.  We try to follow the categories in the Free Software Directory.}
\txicmd{@direntry}{}{Begin the Info directory menu entries for this file. Pair with \tt @end direntry.}

\subsection{\acro{HTML} document description}

\txicmd{@documentdescription}{}{Set the document description text for \acro{HTML}; default is just the title of the document. Pair with \code{@end documentdescription}.}

\subsection{Title pages}

\txicmd{@shorttitlepage}{title}{Generate a minimal title page, generally for the first page of output in a long printed manual.}
\txicmd{@center}{line-of-text}{Center \var{line-of-text}, usually for titles.}
\txicmd{@titlefont}{\ttbraced{\var{text}}}{In a printed manual, print \var{text} in a larger than normal font. Ignored in Info.}
\txicmd{@titlepage}{}{Begin the title page. Write the command on a line of its own, paired with \code{@end titlepage}. Ignored in Info.}
\txicmd{@title}{title}{Within \code{@titlepage}, display \var{title} appropriately.}
\txicmd{@subtitle}{subtitle}{Within \code{@titlepage}, display \var{subtitle}.}
\txicmd{@author}{author}{Within \code{@titlepage}, display \var{author}.}

\subsection{Tables of contents}

\txicmd{@shortcontents}{}{Print a short table of contents (chapter-level entries only). Not relevant to Info.}
\txicmd{@summarycontents}{}{Synonym for \code{@shortcontents}.}
\txicmd{@contents}{}{Print a complete table of contents. Has no effect in Info, which uses menus instead.}

\section{Nodes}

\txicmd{@node}{name\rmbrack[, next, previous, up]}{Begin a new node.  The \var{next}, \var{previous}, and \var{up} pointers are usually omitted in a normally-structured document.}
\txicmd{@top}{title}{Mark the topmost \code{@node} in the file, which must be defined on the line immediately preceding \code{@top}. The \var{title} is formatted as a chapter-level heading.  The entire top node, including the \code{@node} and \code{@top} lines, are normally enclosed with \code{@ifnottex ... @end ifnottex}.}
\txicmd{@anchor}{\ttbraced{\var{name}}}{Define \var{name} as the current location, for use as a cross-reference target.}
\txicmd{@novalidate}{}{Suppress validation of node references and omit creation of auxiliary files with \TeX. Use before \code{@setfilename}.}

\section{Chapter structuring}

\txicmd{@lowersections}{}{Change subsequent chapters to sections, sections to subsections, and so on.}
\txicmd{@raisesections}{}{Change subsequent sections to chapters, subsections to sections, and so on.}
\txicmd{@part}{title}{Print part page, beginning a group of chapters; included in contents.}

\subsection{Numbered, included in contents}

\txicmd{@chapter}{title}{Begin a numbered chapter; \var{title} appears in the table of contents.}
\txicmd{@centerchap}{title}{Like \code{@chapter}, with chapter title centered.}

\subsection{Context-dependent, included in contents}

\txicmd{@section}{title}{Begin a section within a chapter.  Within \code{@chapter} and \code{@appendix}, the section is numbered; within \code{@unnumbered}, it is unnumbered.}
\txicmd{@subsection}{title}{Begin a subsection within a section.  Same context-dependent numbering as \code{@section}.}
\txicmd{@subsubsection}{title}{Begin a numbered subsubsection within a subsection. Same context-dependent numbering as \code{@section}.}

\subsection{Unnumbered, included in contents}

\txicmd{@unnumbered}{title}{Begin an unnumbered chapter.}
\txicmd{@unnumberedsec}{title}{Begin an unnumbered section.}
\txicmd{@unnumberedsubsec}{title}{Begin an unnumbered subsection.}
\txicmd{@unnumberedsubsubsec}{title}{Begin an unnumbered subsubsection.}

\subsection{Lettered and numbered, included in contents}

\txicmd{@appendix}{title}{Begin an appendix.}
\txicmd{@appendixsec}{title}{Begin an appendix section within an appendix; \code{@appendixsection} is a synonym.}
\txicmd{@appendixsubsec}{title}{Begin an appendix subsection; \code{@appendixsubsection} is a synonym.}
\txicmd{@appendixsubsubsec}{title}{Begin an appendix subsubsection; \code{@appendixsubsubsection} is a synonym.}

\subsection{Unnumbered, not in contents, no new page}

\txicmd{@chapheading}{title}{Print an unnumbered chapter-like heading.}
\txicmd{@majorheading}{title}{Like \code{@chapheading}, but generate additional vertical whitespace before the heading.}
\txicmd{@heading}{title}{Print an unnumbered section-like heading.}
\txicmd{@subheading}{title}{Print an unnumbered subsection-like heading.}
\txicmd{@subsubheading}{title}{Print an unnumbered subsubsection-like heading.}

\section{Menus}

\txicmd{@menu}{}{Mark the beginning of a menu of nodes in Info. No effect in a printed manual. Pair with \code{@end menu}.}
\txicmd{@detailmenu}{}{Mark the (optional) detailed node listing in a master menu.}
\txicmd{@validatemenus}{}{Specify whether menus can be automatically generated.}

\section{Cross references}

\subsection{Within the Info system}

\txicmd{@xref}{\ttbraced{node, \rmbrack[entry], \rmbrack[node-title], \rmbrack[info-file], \rmbrack[manual]}}{Makes a reference that starts with `See' in a printed manual. Follow command with punctuation. Only the first argument is mandatory.}
\txicmd{@pxref}{\ttbraced{node, \rmbrack[entry], \rmbrack[node-title], \rmbrack[info-file], \rmbrack[manual]}}{Like \code{@xref}, but starts with `see' instead of `See', and must be used inside parentheses.}
\txicmd{@ref}{\ttbraced{node, \rmbrack[entry], \rmbrack[node-title], \rmbrack[info-file], \rmbrack[manual]}}{Like \code{@xref}, but produces only the bare reference without `See' or `see'; must be followed by a punctuation mark.}
\txicmd{@inforef}{\ttbraced{node, \rmbrack[entry-name], info-file}}{Make a cross reference to an Info file for which there is no printed manual.}
\txicmd{@xrefautomaticsectiontitle}{\code{on|off}}{By default, use the section title instead of the node name in cross references.}

\subsection{Outside of Info}

\txicmd{@url}{\ttbraced{url, \rmbrack[displayed-text], \rmbrack[replacement]}}{Make a hyperlink reference to a uniform resource locator.  \code{@uref} is a synonym.}
\txicmd{@cite}{\ttbraced{title}}{Indicate the name of a book or other reference that has no Info file; no hyperlink.}

\section{Marking text}

\subsection{Markup for regular text}

\txicmd{@abbr}{\ttbraced{abbreviation}}{Indicate a general abbreviation, such as `Comput.'}
\txicmd{@acronym}{\ttbraced{acronym}}{Indicate an acronym written in all capital letters, such as `\acro{NASA}'.}
\txicmd{@dfn}{\ttbraced{term}}{Indicate the introductory or defining use of a technical term.}
\txicmd{@emph}{\ttbraced{text}}{Emphasize \var{text}, by using italics where possible, and enclosing in asterisks in Info.}
\txicmd{@strong}{\ttbraced{text}}{Emphasize \var{text} even more strongly, by using bold where possible; still enclosed in asterisks in Info.}
\txicmd{@sub}{\ttbraced{text}}{Set \var{text} as a subscript.}
\txicmd{@sup}{\ttbraced{text}}{Set \var{text} as a superscript.}
\txicmd{@var}{\ttbraced{metasyntactic-variable}}{Indicate a meta variable (a name that stands for another piece of text).}

\subsection{Markup for literal text}

\txicmd{@code}{\ttbraced{sample-code}}{Indicate an expression, a syntactically complete token, or a program name. Unquoted in Info output.}
\txicmd{@command}{\ttbraced{command-name}}{Indicate a system command name, such as \code{ls}.}
\txicmd{@email}{\ttbraced{address, \rmbrack[displayed-text]}}{Indicate an email address.}
\txicmd{@env}{\ttbraced{environment-variable}}{Indicate an environment variable name, such as \code{PATH}.}
\txicmd{@file}{\ttbraced{filename}}{Indicate the name of a file, buffer, node, directory, etc.}
\txicmd{@indicateurl}{\ttbraced{url}}{Indicate a uniform resource locator, but without creating any hyperlink.}
\txicmd{@kbd}{\ttbraced{keyboard-characters}}{Indicate characters of input to be typed by users.}
\txicmd{@key}{\ttbraced{key-name}}{Indicate the name of a key on a keyboard.}
\txicmd{@option}{\ttbraced{option-name}}{Indicate a command-line option, such as \code{-v} and \code{--help}.}
\txicmd{@samp}{\ttbraced{text}}{Indicate a sequence of literal characters, in general. Quoted in Info output.}
\txicmd{@verb}{\ttbraced{delimchar literal-text delimchar}}{Output \var{literal-text}, delimited by the single character \var{delimchar}, exactly as is, including any whitespace or Texinfo special characters. Example: \code{@verb\ttbraced{|@ @\rbracechar|}}.}

\subsection{GUI sequences}

\txicmd{@arrow}{\ttbraced{}}{Insert a right arrow glyph, $\rightarrow$.}
\txicmd{@clicksequence}{\ttbraced{action \code{@click\ttbraced{}} \var{action} \dots}}{Represent a sequence of \acro{GUI} actions or clicks.}
\txicmd{@click}{\ttbraced{}}{Represent a single `click' in a \code{@clicksequence}.}
\txicmd{@clickstyle}{\code{@}cmd}{Execute \var{@cmd} for each \code{@click}; default is \code{@arrow}. Empty braces usually following \code{@\var{cmd}} are omitted here.}

\subsection{Math}

\txicmd{@math}{\ttbraced{math}}{Format the given math (inline); \bschar{} becomes an escape character, and all plain \TeX\ math is available.}
\txicmd{@minus}{\ttbraced{}}{Insert a minus sign, `$-$'.}
\txicmd{@\bschar}{}{Inside \code{@math}, insert a math backslash, $\backslash$.}
\txicmd{@geq}{\ttbraced{}}{Insert a greater-than-or-equal sign, $\geq$.}
\txicmd{@leq}{\ttbraced{}}{Insert a less-than-or-equal sign, $\leq$.}

\subsection{Explicit font selection}

\txicmd{@b}{\ttbraced{text}}{Set \var{text} in a bold font.}
\txicmd{@i}{\ttbraced{text}}{Set \var{text} in an italic font.}
\txicmd{@r}{\ttbraced{text}}{Set \var{text} in the regular roman font.}
\txicmd{@sansserif}{\ttbraced{text}}{Set \var{text} in a sans serif font if possible.}
\txicmd{@sc}{\ttbraced{text}}{Set \var{text} in a small caps font in printed output, and uppercase in Info.  No other font command has any effect in Info.}
\txicmd{@slanted}{\ttbraced{text}}{Set \var{text} in a slanted (oblique) font if possible.}
\txicmd{@t}{\ttbraced{text}}{Set \var{text} in a fixed-width, typewriter-like font.}

\section{Block environments}

`Environments' in Texinfo begin with \code{@\var{envname}} on a line of
its own and continue through the following lines of input until the
corresponding \code{@end \var{envname}} is seen.

\txicmd{@cartouche}{}{Highlight a block of text by drawing a box with rounded corners around it. Pair with \code{@end cartouche}. No effect in Info.}
\txicmd{@exdent}{line-of-text}{Output \var{line-of-text} without any indentation.}
\txicmd{@indent}{}{Insert normal paragraph indentation.}
\txicmd{@noindent}{}{Omit the normal indentation when starting a new paragraph; often used after environments.}

\subsection{Normally-filled displays using regular text fonts}

In these environments, the input is automatically rebroken into lines of
output as usual.

\txicmd{@quotation}{}{Fill text, indent on both left and right, retain
normal text font.  Often used for quoting text.  Pair with \code{@end quotation}.}
\txicmd{@smallquotation}{}{Like \code{@quotation}, but select a smaller (text) font where possible.  Pair with \code{@end quotation}.}
\txicmd{@indentedblock}{}{Fill text, indent on left (but not right), retain normal text font.  Pair with \code{@end indentedblock}.}
\txicmd{@smallindentedblock}{}{Like \code{@indentedblock}, but select a smaller (text) font where possible.  Pair with \code{@end smallindentedblock}.}
\txicmd{@raggedright}{}{Leave right end ragged, but otherwise fill text; retain normal text font. Pair with \code{@end raggedright}.}

\subsection{Line-for-line displays using regular text fonts}

In these environments, each line of input is a line of output.

\txicmd{@display}{}{Begin displayed text: do not fill, but indent text on left; retain normal text font. Pair with \code{@end display}.}
\txicmd{@smalldisplay}{}{Like \code{@display}, but select a smaller (text) font where possible.  Pair with \code{@end smalldisplay}.}
\txicmd{@format}{}{Begin formatted text: do not fill, retain normal margins and normal text font.  Pair with \code{@end format}.}
\txicmd{@smallformat}{}{Like \code{@format}, but select a smaller (text) font where possible.  Pair with \code{@end smallformat}.}
\txicmd{@flushleft}{}{Left justify lines, leaving the right end ragged: do not fill text, retain normal margins and normal text font. Pair with \code{@end flushleft}.}
\txicmd{@flushright}{}{Right justify lines, leaving the left end ragged: do not fill text, retain normal margins and normal text font. Pair with \code{@end flushright}.}

\subsection{Displays using fixed-width fonts}

In these environments also, each line of input is a line of output.

\txicmd{@example}{}{Begin an example. Indent text, do not fill, and select fixed-width font. Pair with \code{@end example}.}
\txicmd{@smallexample}{}{Like \code{@example}, but where possible, print text in a smaller font. Pair with \code{@end smallexample}.}
\txicmd{@lisp}{}{Like \code{@example}, but specifically for an example of Lisp code. Pair with \code{@end lisp}.}
\txicmd{@smalllisp}{}{Begin an example specifically of Lisp code; same effects as \code{@smallexample}. Pair with \code{@end smalllisp}.}
\txicmd{@verbatim}{}{Output the text of the environment exactly as is, without indentation. Pair with \code{@end verbatim}.}

\section{Lists and tables}

\txicmd{@itemize}{mark-command}{Begin an unordered list, using \code{@item} for each entry, which consist of indented paragraphs, with a mark such as \code{@bullet} inside the left margin at the beginning of each item. Pair with \code{@end itemize}.}
\txicmd{@enumerate}{\rmbrack[number-or-letter]}{Begin a numbered list, using \code{@item} for each entry. Optionally, start list with \var{number-or-letter} and count from there; by default, number consecutively from `1'. Pair with \code{@end enumerate}.}
\txicmd{@table}{formatting-command}{Begin a two-column table (description list), using \code{@item} for each entry. Write each first column entry on the same line as \code{@item}.  \var{formatting-command} is applied to each first column entry. Pair with \code{@end table}.}
\txicmd{@ftable}{formatting-command}{Like \code{@table}, but automatically enter each first column entry in the function index.}
\txicmd{@vtable}{formatting-command}{Like \code{@table}, but automatically enter each first column entry in the variable index.}
\txicmd{@multitable}{column-width-spec}{Begin multi-column table; start rows with \code{@item} or \code{@headitem}. Pair with \code{@end multitable}.}
\txicmd{@tab}{}{Separate columns in a row of a multitable.}
\txicmd{@item}{}{Begin an item for the list and table commands.}
\txicmd{@itemx}{}{Used only with \code{@table}.  Like \code{@item} but do not generate extra preceding vertical space.  When several items have the same description, use \code{@item} for the first and \code{@itemx} for the rest.}
\txicmd{@headitem}{}{Used only for multitables.  Like \code{@item}, but indicates a heading row.}
\txicmd{@headitemfont}{\ttbraced{text}}{Set \var{text} in the heading row font.}
\txicmd{@asis}{text}{Prints \var{text} as-is; used as \var{formatting-command} for tables when no highlighting is desired.}

\section{Floating displays}

\txicmd{@float}{}{Environment enclosing material which can float. Pair with \code{@end float}.}
\txicmd{@listoffloats}{}{Generate a list of floats for a given float type.}
\txicmd{@caption}{}{Define the full caption for a \code{@float} anywhere in the float environment.}
\txicmd{@shortcaption}{}{Define the short caption for a \code{@float}, used in the list of floats.}
\txicmd{@image}{\ttbraced{filename, \rmbrack[width], \rmbrack[height], \rmbrack[alt], \rmbrack[ext]}}{Include graphics image in external \var{filename} scaled to the given width and/or height, using alt text and looking for \samp{\var{filename}.\var{ext}} first.  Can occur inline or by itself on the page.}

\subsection{Footnotes}
\txicmd{@footnote}{\ttbraced{text-of-footnote}}{Insert a footnote: \var{text-of-footnote} is printed at the bottom of the page by \TeX, while Info and others may format at either (by default) the end of the current node, or in a separate node.}
\txicmd{@footnotestyle}{style}{Specify footnote style: \samp{end} or \samp{separate}.}

\section{Indices}

\txicmd{@cindex}{entry}{Add entry to the index of concepts.}
\txicmd{@findex}{entry}{Add entry to the index of functions.}
\txicmd{@kindex}{entry}{Add entry to the index of keys.}
\txicmd{@pindex}{entry}{Add entry to the index of programs.}
\txicmd{@tindex}{entry}{Add entry to the index of data types.}
\txicmd{@vindex}{entry}{Add entry to the index of variables.}
\txicmd{@defindex}{newidx}{Define a new index and its indexing command. Format entries as regular text.}
\txicmd{@defcodeindex}{newidx}{Define a new index and its indexing command (namely, \code{@\var{newidx}index}). Format entries in this index with \code{@code}.}
\txicmd{@syncodeindex}{from-index to-index}{Merge the contents of \var{from-index} into \code{to-index}, formatting the entries in \var{from-index} with \code{@code}.}
\txicmd{@synindex}{from-index to-index}{Merge the contents of \var{from-index} into \var{to-index}; no special formatting.}
\txicmd{@printindex}{index-name}{Generate an alphabetized index (using two columns in a printed manual).}
\txicmd{@sortas}{\ttbraced{key}}{Specify a string by which to sort an
index entry.}

\section{Insertions within a paragraph}

\subsection{Characters special to Texinfo}

\txicmd{@@}{, \code{@atchar\ttbraced{}}}{Insert an at sign, `@'.}
\txicmd{@\lbracechar}{, \code{@lbracechar\ttbraced{}}}{Insert a left brace, `$\{$'.}
\txicmd{@\rbracechar}{, \code{@rbracechar\ttbraced{}}}{Insert a right brace, `$\}$'.}
\txicmd{@backslashchar}{\ttbraced{}}{Insert a typewriter backslash, {\tt\char`\\}.}
\txicmd{@comma}{\ttbraced{}}{Insert a comma character; needed only when a literal comma would be an argument separator, as in \code{@xref}.}
\txicmd{@hashchar}{\ttbraced{}}{Insert a hash character, \#; needed only when a literal hash would introduce a \code{\#line} directive.}
\txicmd{@\var{whitespace}}{}{An \code{@} followed by a space, tab, or newline produces a normal, stretchable, interword space.}

\subsection{Spacing refinements}

\txicmd{@:}{}{Tell \TeX\  to refrain from inserting extra whitespace after an immediately preceding period, question mark, exclamation mark, or colon, as \TeX\  normally would.}
\txicmd{@.}{}{Insert a period that ends a sentence; typically needed after an end-of-sentence capital letter.}
\txicmd{@?}{}{Insert a question mark that ends a sentence.}
\txicmd{@!}{}{Insert an exclamation point that ends a sentence.}
\txicmd{@dmn}{\ttbraced{dimension}}{Format a unit of measure, as in `12\thinspace{}pt'. Causes \TeX\  to insert a thin space before \var{dimension}. No effect in Info.}

\subsection{Accents}

Braces are optional for the arguments to the accent commands, with the
exception of \code{@tieaccent}.

\txicmd{@"}{c}{Generate an umlaut, \"o.}
\txicmd{@'}{c}{Generate an acute accent, \'o.}
\txicmd{@,}{c}{Generate a cedilla accent, \c c.}
\txicmd{@=}{c}{Generate a macron accent, \=o.}
\txicmd{@^}{c}{Generate a circumflex (hat) accent, \^o.}
\txicmd{@`}{c}{Generate a grave accent, \'o.}
\txicmd{@\tildechar}{c}{Generate a tilde accent, \~o.}
\txicmd{@dotaccent}{c}{Generate a dot (over) accent, \.o.}
\txicmd{@H}{c}{Generate a long Hungarian umlaut accent, \H o.}
\txicmd{@ogonek}{c}{Generate an ogonek diacritic, \ogonek{a}.}
\txicmd{@ringaccent}{c}{Generate a ring accent, \accent23o.}
\txicmd{@tieaccent}{\ttbraced{cc}}{Generate a tie-after accent, \t{oo}; argument must be given in braces.}
\txicmd{@u}{c}{Generate a breve accent, \u{o}.}
\txicmd{@ubaraccent}{c}{Generate an underbar accent, \b{o}.}
\txicmd{@udotaccent}{c}{Generate an underdot accent, \d{o}.}
\txicmd{@v}{c}{Generate a check (hacek) accent, \v{o}.}

\subsection{Non-English characters}

\txicmd{@AA\txicmdarg{\ttbraced{}}, @aa}{\ttbraced{}}{Generate uppercase \AA\  and lowercase \aa.}
\txicmd{@AE\txicmdarg{\ttbraced{}}, @ae}{\ttbraced{}}{Generate uppercase \AE\ and lowercase \ae.}
\txicmd{@DH\txicmdarg{\ttbraced{}}, @dh}{\ttbraced{}}{Generate uppercase \DH\ and lowercase \dh.}
\txicmd{@L\txicmdarg{\ttbraced{}}, @l}{\ttbraced{}}{Generate uppercase \L\  and lowercase \l.}
\txicmd{@O\txicmdarg{\ttbraced{}}, @o}{\ttbraced{}}{Generate uppercase \O\  and lowercase \o.}
\txicmd{@OE\txicmdarg{\ttbraced{}}, @oe}{\ttbraced{}}{Generate uppercase \OE\  and lowercase \oe.}
\txicmd{@TH\txicmdarg{\ttbraced{}}, @th}{\ttbraced{}}{Generate uppercase \TH\ and lowercase \th.}
\txicmd{@dotless}{\ttbraced{\code{i|j}}}{Generate dotless \i\ and \j.}
\txicmd{@exclamdown}{\ttbraced{}}{Generate an upside-down exclamation point, \raise.4ex\hbox{<}.}
\txicmd{@ordf\txicmdarg{\ttbraced{}}, @ordm}{\ttbraced{}}{Generate \ordf\ and lowercase \ordm.}
\txicmd{@questiondown}{\ttbraced{}}{Generate an upside-down question mark, \raise.4ex\hbox{?`}.}
\txicmd{@ss}{\ttbraced{}}{Generate the German sharp-S (es-zet) letter, \ss.}

\subsection{Other text characters and logos}

\txicmd{@LaTeX}{\ttbraced{}}{Insert the \LaTeX\ logo.}
\txicmd{@TeX}{\ttbraced{}}{Insert the \TeX\ logo.}
\txicmd{@bullet}{\ttbraced{}}{Insert a large round dot, $\bullet$ (\samp{*} in Info).}
\txicmd{@copyright}{\ttbraced{}}{Insert the copyright symbol, \copyright.}
\txicmd{@dots}{\ttbraced{}}{Insert an ellipsis, `\dots'.}
\txicmd{@enddots}{\ttbraced{}}{Insert an end-of-sentence ellipsis, `\dots' (more following space in \TeX.)}
\txicmd{@euro}{\ttbraced{}}{Insert the Euro currency sign, \euro.}
\txicmd{@guillemetleft\ttbraced{} @guillemetright\ttbraced{} @guillemotleft\ttbraced{} @guillemotright @guilsinglleft\ttbraced{} @guilsinglright\ttbraced{} @quotedblbase\ttbraced{} @quotedblleft @quotedblright\ttbraced{} @quoteleft\ttbraced{} @quoteright\ttbraced{} @quotesinglbase\ttbraced{}}{}{Insert various quotation marks: \guillemetleft\ \guillemetright\ \guillemotleft\ \guillemotright\ \guilsinglleft\ \guilsinglright\ \quotedblbase\ \quotedblleft\ \quotedblright\ \quoteleft\ \quoteright\ \quotesinglbase.}
\txicmd{@pounds}{\ttbraced{}}{Insert the pounds sterling currency sign, {\it\$}.}
\txicmd{@registeredsymbol}{\ttbraced{}}{Insert the registered symbol, \registeredsymbol.}
\txicmd{@textdegree}{\ttbraced{}}{Insert the degree symbol, \raise.8ex\hbox{$\circ$}.}
\txicmd{@today}{\ttbraced{}}{Insert the current date, in `1 Jan 2000' style.}
\txicmd{@U}{\ttbraced{x}}{Insert Unicode character U+\var{x} (hex).}

\subsection{Glyphs for code examples}

\txicmd{@equiv}{\ttbraced{}}{Indicate equivalence of two forms, $\equiv$.}
\txicmd{@error}{\ttbraced{}}{Indicate an error message, \error.}
\txicmd{@expansion}{\ttbraced{}}{Indicate the result of a macro expansion, \expansion.}
\txicmd{@point}{\ttbraced{}}{Indicate the position of point in a buffer, \point.}
\txicmd{@print}{\ttbraced{}}{Indicate printed output, \print.}
\txicmd{@result}{\ttbraced{}}{Indicate the result of an expression, \result.}

\section{Making and preventing breaks}

\txicmd{@*}{}{Force a line break.}
\txicmd{@/}{}{Generates no output, but allows a line break.}
\txicmd{@-}{}{Insert a discretionary hyphenation point.}
\txicmd{@hyphenation}{\ttbraced{hy-phen-a-ted words}}{Explicitly define hyphenation points.}
\txicmd{@tie}{\ttbraced{}}{Generate a normal interword space at which a line break is not allowed.}
\txicmd{@w}{\ttbraced{text}}{Disallow line breaks within \var{text}.}
\txicmd{@refill}{}{Does nothing (previously refilled and indented the preceding paragraph for Info).}

\subsection{Vertical space}

\txicmd{@group}{\dots\code{@end group}}{In \TeX\ output, disallow page breaks in enclosed text; ignored otherwise.}
\txicmd{@need}{mils}{Start a new page in a printed manual if fewer than \var{mils} thousandths of an inch remain on the current page. Ignored in other formats.}
\txicmd{@page}{}{Start a new page in a printed manual. Ignored in other formats.}
\txicmd{@sp}{n}{Skip \var{n} blank lines.}
\txicmd{@vskip}{amount}{In a printed manual, insert whitespace \var{amount}.  Ignored in other formats.}

\section{Definition commands}

The \code{...x} variant of each command is analogous to \code{@itemx},
leaving no extra space above.  All definition commands must be written
entirely on one line.  Multiword arguments must be enclosed in braces.
Descriptive text follows, ended by \samp{@end \var{defcmdname}}.

\subsection{Function-like definitions, untyped}

\txicmdx{@deffn}{category name arguments}{Format a description for a function, interactive command, or similar entity that may take arguments. Its arguments are the \var{category} of entity being described, the \var{name} of this particular entity, and the entity's \var{arguments}, if any.}
\txicmdx{@defun}{name arguments}{Format a description for a function; equivalent to \samp{@deffn Function \dots}.}
\txicmdx{@defmac}{name arguments}{Format a description for a macro; equivalent to \samp{@deffn Macro \dots}.}
\txicmdx{@defspec}{name arguments}{Format a description for a special form; equivalent to \samp{@deffn \ttbraced{Special Form} \dots}.}

\subsection{Function-like definitions, typed}

\txicmdx{@deftypefn}{category data-type name arguments}{Like \code{@deffn}, but for typed entities.}
\txicmdx{@deftypefun}{data-type name arguments}{Like \code{@defun}, but for typed entities; equivalent to \samp{@deftypefn Function \dots}.}

\subsection{Variable-like definitions, untyped}

\txicmdx{@defvr}{category name}{Format a description for any kind of variable. Its arguments are the \var{category} of the entity and the \var{name} of this particular entity.}
\txicmdx{@defvar}{name}{Format a description for a variable; equivalent to \samp{@defvr Variable \dots}.}
\txicmdx{@defopt}{name}{Format a description for a user option; equivalent to \samp{@defvar \ttbraced{User Option} \dots}.}

\subsection{Variable-like definitions, typed}

\txicmdx{@deftypevr}{category data-type name}{Like \code{@defvr}, but for typed entities.}
\txicmdx{@deftypevar}{data-type name}{Like \code{@defvar}, but for typed entities; equivalent to \samp{@deftypevr Variable \dots}.}

\subsection{Type definitions}

\txicmdx{@deftp}{category name attributes}{Format a description for a data type.  Its arguments are the \var{category}, the \var{name} of the type (e.g., \samp{int}), and then the \var{attributes} of objects of that type.}

\subsection{Object-oriented entities, untyped}

\txicmdx{@defcv}{category class name}{Format a description for a variable associated with a class in object-oriented programming.}
\txicmdx{@defivar}{class name}{Format a description for an instance variable \var{name} in object-oriented programming; equivalent to  \samp{@defcv \ttbraced{Instance Variable of} \dots}.}
\txicmdx{@defmethod}{class name arguments}{Format a description for method \var{name}; equivalent to \samp{@defop \ttbraced{Method on} \dots}.}
\txicmdx{@defop}{category class name arguments}{Format a description for an operation in object-oriented programming.   Its arguments are the \var{category} of the variable, the \var{class} to which it belongs, its \var{name}, and any \var{arguments}.}

\subsection{Object-oriented entities, typed}

\txicmdx{@deftypecv}{category class datatype name}{Like \code{@defcv}, but for typed class variables.}
\txicmdx{@deftypeivar}{class data-type name}{Like \code{@defivar}, but for typed instance variables.}
\txicmdx{@deftypemethod}{class data-type name arguments}{Format a description for a typed method in object-oriented programming; equivalent to \samp{@deftypeop \ttbraced{Method on} \dots}.}
\txicmdx{@deftypeop}{category class data-type name arguments}{Format a description for a typed operation in object-oriented programming.}

\section{Conditionally (in)visible text}

\txicmd{@comment}{comment}{Begin a comment in Texinfo. The rest of the line is not visible in any output.}
\txicmd{@c}{comment}{Synonym for \code{@comment}.  \code{DEL} also starts a comment.}
\txicmd{@ignore}{\dots\code{@end ignore}}{Text that will not appear in any output.}

\subsection{Output formats}

\txicmd{@ifdocbook}{\dots\code{@end ifdocbook}}{Texinfo text to appear only in Docbook output.}
\txicmd{@ifhtml}{\dots\code{@end ifhtml}}{Text to appear only in \acro{HTML} output.}
\txicmd{@ifinfo}{\dots\code{@end ifinfo}}{Text to appear in both Info and (for historical compatibility) plain text output.}
\txicmd{@ifplaintext}{\dots\code{@end ifplaintext}}{Text to appear only in plain text output.}
\txicmd{@iftex}{\dots\code{@end iftex}}{Text to appear only in the \TeX\ output.}
\txicmd{@ifxml}{\dots\code{@end ifxml}}{Text to appear only in \acro{XML} output.}
\txicmd{@ifnotdocbook @ifnothtml @ifnotplaintext @ifnottex @ifnotxml}{\dots\code{@end ifnot\var{format}}}{Begin text to be ignored in one output format but no others: \code{@ifnothtml} text is omitted from \acro{HTML} output, etc.}
\txicmd{@ifnotinfo}{\dots\code{@end ifnotinfo}}{Like the other \code{@ifnot\dots} commands, but omit from plain text output as well as Info.}
\txicmd{@inlinefmt}{\ttbraced{format, text}}{Include Texinfo \var{text} only in \var{format} output.}
\txicmd{@inlinefmtifelse}{\ttbraced{format, then-text, else-text}}{Include either \var{then-text} or \var{else-text} according to whether \var{format} is output.}

\subsection{Raw formatter text}

\txicmd{@docbook}{\dots\code{@end docbook}}{Enter Docbook completely.}
\txicmd{@html}{\dots\code{@end html}}{Enter \acro{HTML} completely.}
\txicmd{@tex}{\dots\code{@end tex}}{Enter \TeX\  completely (e.g., \bschar\ becomes an escape character).}
\txicmd{@xml}{\dots\code{@end xml}}{Enter \acro{XML} completely.}
\txicmd{@inlineraw}{\ttbraced{format, text}}{Include raw \var{text} only in \var{format} output.}

\subsection{Document variables}

\txicmd{@set}{name \rmbrack[string]}{Define the Texinfo variable \var{name}, optionally to the value \var{string}.}
\txicmd{@clear}{name}{Undefine \var{name}.}
\txicmd{@value}{\ttbraced{name}}{Insert the value of \var{name}.}
\txicmd{@ifset}{name \dots\code{@end ifset}}{If \var{name} is set, format enclosed text.}
\txicmd{@ifclear}{name \dots\code{@end ifclear}}{If \var{name} is not set, format enclosed text.}
\txicmd{@inlineifset}{\ttbraced{name, text}}{If \var{name} is set, format \var{text}.}
\txicmd{@inlineifclear}{\ttbraced{name, text}}{If \var{name} is not set, format \var{text}.}

\subsection{Testing for commands}

\txicmd{@ifcommanddefined}{\var{cmd} \dots\code{@end ifcommanddefined}}{\linebreak Text to appear only if \code{@}\var{cmd} is defined \dots}
\txicmd{@ifcommandnotdefined}{\var{cmd} \dots\code{@end ifcommandnotdefined}}{\linebreak\dots\ or not defined.}
\txicmd{txicommandconditionals}{}{Texinfo variable predefined to true.}

\section{Defining new Texinfo commands}

\txicmd{@alias}{new\code{=}existing}{Make the command \code{@new} a synonym for the existing command \code{@existing}.}
\txicmd{@macro}{macroname \ttbraced{\var{params}} \dots\code{@end macro}}{Define a new Texinfo command \code{@\var{macroname}}.}
\txicmd{@unmacro}{macroname}{Undefine \code{@\var{macroname}} if it is defined.}
\txicmd{@definfoenclose}{newcmd\code{,} before\code{,} after}{Can only be used within \code{@ifinfo}; create a new command that encloses its argument in the \var{before} and \var{after} strings.}

\section{File inclusion}

\txicmd{@include}{filename}{Read the contents of Texinfo source file \var{filename}.}
\txicmd{@verbatiminclude}{filename}{Incorporate the contents of \var{filename} in the output, exactly as is (in the fixed-width font).}

\section{Formatting and headers/footers for \TeX}

\txicmd{@allowcodebreaks}{\code{true|false}}{Control breaks at \code{-} and \code{_} in \TeX; default true.}
\txicmd{@finalout}{}{Omit large black rectangles at overfull lines in \TeX\ output.}
\txicmd{@fonttextsize}{\code{10|11}}{Change size of main body font in \TeX.}

\subsection{Paper sizes}

The default paper size is \acro{US} letter-size, 8x11in.

\txicmd{@smallbook}{}{Format for a 7x9.25in trim size.}
\txicmd{@afourpaper, @afivepaper}{}{Format for A4 and A5 paper sizes.}
\txicmd{@afourlatex}{}{Variant for A4 with more whitespace.}
\txicmd{@afourwide}{}{Format for A4 in landscape.}
\txicmd{@pagesizes}{\rmbrack[{width{\small][}, height}]}{Format for the explicitly given page dimensions, \var{width} by \var{height}.}

\subsection{Page headers and footers}

\def\footingheading#1#2{% #1=odd/even/every, #2=description
\txicmd{@#1footing}{\rmbrack[left] \code{@|} \rmbrack[center] \code{@|} \rmbrack[right]}{}
\vskip-.3\parskip
\txicmd{@#1heading}{\rmbrack[left] \code{@|} \rmbrack[center] \code{@|} \rmbrack[right]}{\hfill Specify page footings resp.\ headings for #2.}
\vskip+.1\parskip
}

\footingheading{odd}{odd-numbered (right-hand) pages}
\footingheading{even}{even-numbered (left-hand) pages}
\footingheading{every}{every page}

\txicmd{@thischapter, @thischaptername, @thischapternum, @thisfile, @thispage, @thistitle}{}{These commands are only allowed in a heading or footing. They stand for, respectively, the number and name of the current chapter (in the format `Chapter~1: Title'), the current chapter name only (`Title'), the current chapter number only (`1'), the filename, the current page number, and the title of the document.}

\section{Document preferences}

It is usually best to omit any of these (merely preferential) settings
from the Texinfo document, so users can easily override the defaults
when processing the document.

\txicmd{@codequoteundirected}{\code{on|off}}{Use undirected single quote for \code{'}; default off.}
\txicmd{@codequotebacktick}{\code{on|off}}{Use backtick (standalone grave accent) for \code{`}; default off.}
\txicmd{@deftypefnnewline}{\code{on|off}}{Put return type on a line by itself; default off.}
\txicmd{@exampleindent}{indent}{Indent example-like environments by \var{indent} number of spaces (perhaps 0).}
\txicmd{@firstparagraphindent}{\code{insert|none}}{Indent first paragraphs after section headings, or not.}
\txicmd{@headings}{\code{on|off|single|double}}{Turn page headings on or off, specify single-sided or double-sided page headings for printing.}
\txicmd{@kbdinputstyle}{\code{code|distinct|example}}{Specify font for \code{@kbd}: normal \code{@code} font, a distinct (slanted) typewriter font, or a distinct font only within \code{@example} and similar.}
\txicmd{@paragraphindent}{indent}{Indent paragraphs by \var{indent} number of spaces (perhaps 0); preserve source file indentation if \var{indent} is the string \code{asis}.}
\txicmd{@setchapternewpage}{\code{on|off|odd}}{Specify whether chapters start on new pages, and if so, whether on odd-numbered (right-hand) new pages; also set page headings accordingly.}
\txicmd{@urefbreakstyle}{\code{after|before|none}}{Specify how \code{@uref} should break at special characters; default \code{after}.}

\section{Ending a Texinfo document}

\txicmd{@bye}{}{End reading the Texinfo source.  Any following text in the file is ignored.}

\smallskip Finally, this meta-command doesn't fit anywhere else:
\txicmd{@errormsg}{\ttbraced{msg}}{Report \var{msg} as an error.}

\chapter{Reading Info files}

There are two main Info readers: \code{M-x info} (\code{C-h i}) in GNU
Emacs, and the standalone \code{info} program.  These basic keystrokes
work in both.

\begininfokeys %
\infokey q           Quit Info altogether.\cr
\infokey h           Invoke the Info tutorial.\cr

\infokey Up          Move up one line.\cr
\infokey Down        Move down one line.\cr
\infokey DEL         Scroll backward one screenful.\cr
\infokey SPC         Scroll forward one screenful.\cr
\infokey Home,b      Go to the beginning of this node.\cr
\infokey End         Go to the end of this node.\cr

\infokey TAB         Skip to the next hypertext link.\cr
\infokey RET         Follow the hypertext link under the cursor.\cr
\infokey l           Go back to the last node seen in this window.\cr

\infokey [           Go to the previous node in the document.\cr
\infokey ]           Go to the next node in the document.\cr
\infokey p           Go to the previous node on this level.\cr
\infokey n           Go to the next node on this level.\cr
\infokey u           Go up one level.\cr
\infokey t           Go to the top node of this document.\cr
\infokey d           Go to the main `directory' node.\cr

\infokey 1...9       Pick the first...ninth item in this node's menu.\cr
\infokey 0           Pick the last item in this node's menu.\cr
\infokey m           Pick a menu item specified by name.\cr
\infokey f           Follow a cross reference specified by name.\cr
\infokey g           Go to a node specified by name.\cr

\infokey s           Search forward for a specified string.\cr
\infokey \lbracechar{}           Search for previous occurrence.\cr
\infokey \rbracechar{}           Search for next occurrence.\cr
\infokey i           Search for a specified string in the index, and\cr
\infokey {}              select the node referenced by the first entry found.\cr
\infokey I           Synthesize menu of matching index entries.\cr

\infokey C-g         Cancel the current operation.\cr
\endinfokeys

The Texinfo manual is available via \code{info texinfo}\linebreak
(and at \code{http://www.gnu.org/software/texinfo/manual}).

\copyrightnotice
\bye

repo_name: mthl/texinfo

license: mit


code:
#!/usr/bin/env perl
# $Id$
# Copyright 2012, 2013, 2016 Free Software Foundation, Inc.
#
# This program is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 3 of the License,
# or (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program.  If not, see <http://www.gnu.org/licenses/>.
#
# Original author: Karl Berry.
#
# Kludge of a script to check customization variables in refman vs. tp
# for consistency.  Although this has nothing to do with the reference
# card, since it's similar to the txicmdcheck script, keep them
# together.  And maybe we'll add the cust.vars to the refcard.

exit (&main ());

sub main {
  my $no_common = $ARGV[0] eq "--no-common";

  my @man_vars = &read_refman ("../texinfo.texi");
  my @tp_vars = &read_tp ("../../util/txicustomvars");

  my (%man_vars, %tp_vars);  # list to hash
  @man_vars{@man_vars} = ();
  @tp_vars{@tp_vars} = ();

  my @found = ();
  for my $name (@tp_vars) {
    if (exists $man_vars{$name}) {
      push (@found, $name);
      delete $man_vars{$name};
      delete $tp_vars{$name};
    }
  }

  printf ("common %3d: @{[sort @found]}\n", @found + 0)
    unless $no_common;

  # we can't reasonly reduce the list of variable names only in the
  # manual to null, since the manual necessarily includes many non-variables.
  #
  my @man_only = keys %man_vars;
  printf "man only %2s: @{[sort @man_only]}\n", @man_only + 0;

  my @tp_only = keys %tp_vars;
  printf "tp only %2s: @{[sort @tp_only]}\n", @tp_only + 0;

  return @tp_only;
}

# Return customization variable names from the section in the reference
# manual.  We assume their names are all uppercase, to avoid returning
# numerous non-variables.
#
sub read_refman {
  my ($fname) = @_;
  my @ret = ();

  local *FILE;
  $FILE = $fname;
  open (FILE) || die "open($FILE) failed: $!";

  # since we have to look at generic commands like @item, at least
  # ignore until right section to reduce chance of false matches.
  while (<FILE>) {
    last if /^\@section Customization Variables$/;
  }

  while (<FILE>) {
    if (/^\@node Customization Variables for \@\@/) {
      # in this node we have a bare of bare @-commands which have cust.vars.
      while (<FILE>) {
        last if /^\@smallexample/;
      }
      my $atcmds = "";
      while (<FILE>) {
        last if /^\@end smallexample/;
        s/\@\@//g;  # the variable names don't start with @
        $atcmds .= $_;
      }
      # done with special node.
      my @atcmds = split (" ", $atcmds);
      push (@ret, @atcmds);
      next;
    }

    # Stop looking for cust.var names after those nodes are done.
    last if /^\@node Internationalization of Document Strings/;

    # Otherwise, we're looking at a line in one of the cust.var
    # documentation nodes.
    next unless s/^\@(itemx?|vindex) *//;  # look for item[x]s and vindex
    next unless /^[A-Z0-9_]+$/;            # uppercase only

    chomp;
    push (@ret, $_);
  }

  close (FILE) || warn "close($FILE) failed: $!";
  return @ret;
}

# Return customization variable names implemented in the general parser.
# The argument is the command to run which returns the list.
#
sub read_tp {
  my ($prog) = @_;
  my @ret = ();

  local *FILE;
  $FILE = "$prog |";
  open (FILE) || die "open($FILE) failed: $!";
  while (<FILE>) {
    chomp;
    my ($var,$where) = split (/\t/);
    next if ($where eq 'variable_other_settables'
             || $where eq 'parser_options');
    next if $var eq "OUTPUT_PERL_ENCODING";  # not for users
    next if $var eq "HTMLXREF";  # not documented

    # these are documented, but their lowercase names don't match
    # everything
    #next if $var =~ /^(even|every|odd)(heading|footing)$/;
    push (@ret, $var);
  }
  close (FILE) || warn "close($FILE) failed: $!";

  return @ret;
}

path: doc/refcard/txivarcheck


code:
\input texinfo-ja

@documentencoding UTF-8
@documentlanguage ja

@settitle サンプル マニュアル 1.0 日本語版

@copying
これは完全な Texinfo ファイルの短い例です。

Copyright @copyright{} 2016 Free Software Foundation, Inc.
@end copying

@titlepage
@title サンプル タイトル
@page
@vskip 0pt plus 1filll
@insertcopying
@end titlepage

@c 最初に目次を出力します。
@contents

@ifnottex
@node Top
@top GNU サンプル

このマニュアルは GNU サンプル
(version @value{VERSION}, @value{UPDATED})
用です。
@end ifnottex

@menu
* 第一章::           第一章は
                      このサンプルの唯一の章です
* 索引::             完全な索引
@end menu

@node 第一章
@chapter 第一章

@cindex 章, 第一

これは第一章です。
@cindex 索引項目, 他

ここは番号付き一覧です。

@enumerate
@item
これは最初の項目です。

@item
これは二番目の項目です。
@end enumerate

@node 索引
@unnumbered 索引

@printindex cp

@bye