21.7.3 HTML Cross-reference Command Expansion

Node names may contain @-commands (see @node Line Requirements). This section describes how they are handled.

First, comments are removed.

Next, any @value commands (see @set and @value) and macro invocations (see Invoking Macros) are fully expanded.

Then, for the following commands, the command name and braces are removed, and the text of the argument is recursively transformed:

@asis @b @cite @code @command @dfn @dmn @dotless
@emph @env @file @i @indicateurl @kbd @key
@samp @sansserif @sc @slanted @strong @sub @sup
@t @U @var @verb @w

In addition, the following commands are replaced by constant text, as shown below. If any of these commands have non-empty arguments, as in @TeX{bad}, it is an error, and the result is unspecified. In this table, ‘(space)’ means a space character and ‘(nothing)’ means the empty string. The notation ‘U+hhhh’ means Unicode code point hhhh (in hex, as usual).

There are further transformations of many of these expansions to yield the final file or other target name, such as space characters to ‘-’, etc., according to the other rules.


Quotation mark @-commands (@quotedblright{} and the like), are likewise replaced by their Unicode values. Normal quotation characters (e.g., ASCII ‘ and ’) are not altered. See Inserting Quotation Marks.

Any @acronym, @abbr, @email, and @image commands are replaced by their first argument. (For these commands, all subsequent arguments are optional, and ignored here.) See @acronym{acronym[, meaning]}, and @email{email-address[, displayed-text]}, and Inserting Images.

Accents are handled according to the next section.

Any other command is an error, and the result is unspecified.