A.1 @-Command Syntax

Texinfo has the following types of @-command:

1. Brace commands

These commands start with @ followed by a letter or a word, followed by an argument within braces. For example, the command @dfn indicates the introductory or defining use of a term; it is used as follows: ‘In Texinfo, @@-commands are @dfn{mark-up} commands.

2. Line commands

These commands occupy an entire line. The line starts with @, followed by the name of the command (a word); for example, @center or @cindex. If no argument is needed, the word is followed by the end of the line. If there is an argument, it is separated from the command name by a space. Braces are not used.

3. Block commands

These commands are written at the start of a line, with general text on following lines, terminated by a matching @end command on a line of its own. For example, @example, then the lines of a coding example, then @end example. Some of these block commands take arguments as line commands do; for example, @enumerate A opening an environment terminated by @end enumerate. Here ‘A’ is the argument.

4. Symbol insertion commands with no arguments

These commands start with @ followed by a word followed by a left and right- brace. These commands insert special symbols in the document; they do not take arguments. Some examples: @dots{} ⇒ ‘’, @equiv{} ⇒ ‘’, @TeX{} ⇒ ‘TeX’, and @bullet{} ⇒ ‘’.

5. Non-alphabetic commands

The names of commands in all of the above categories consist of alphabetic characters, almost entirely in lower-case. Unlike those, the non-alphabetic commands consist of an @ followed by a punctuation mark or other character that is not part of the Latin alphabet. Non-alphabetic commands are almost always part of text within a paragraph. The non-alphabetic commands include @@, @{, @}, @., @SPACE, and most of the accent commands.

6. Miscellaneous commands

There are a handful of commands that don’t fit into any of the above categories; for example, the obsolete command @refill, which is always used at the end of a paragraph immediately following the final period or other punctuation character. @refill takes no argument and does not require braces. Likewise, @tab used in a @multitable block does not take arguments, and is not followed by braces.

Thus, the alphabetic commands fall into classes that have different argument syntaxes. You cannot tell to which class a command belongs by the appearance of its name, but you can tell by the command’s meaning: if the command stands for a glyph, it is in class 4 and does not require an argument; if it makes sense to use the command among other text as part of a paragraph, the command is in class 1 and must be followed by an argument in braces. The non-alphabetic commands, such as @:, are exceptions to the rule; they do not need braces.

The purpose of having different syntax for commands is to make Texinfo files easier to read, and also to help the GNU Emacs paragraph and filling commands work properly.