DOC HOME SITE MAP MAN PAGES GNU INFO SEARCH PRINT BOOK
 

(texinfo) Defining Macros

Info Catalog (texinfo) Defining New Texinfo Commands (texinfo) Invoking Macros
 
 Defining Macros
 ===============
 
   You use the Texinfo `@macro' command to define a macro, like this:
 
      @macro MACRONAME{PARAM1, PARAM2, ...}
      TEXT ... \PARAM1\ ...
      @end macro
 
   The "parameters" PARAM1, PARAM2, ... correspond to arguments supplied
 when the macro is subsequently used in the document (described in the
 next section).
 
   For a macro to work with TeX, MACRONAME must consist entirely of
 letters: no digits, hyphens, underscores, or other special characters.
 
   If a macro needs no parameters, you can define it either with an empty
 list (`@macro foo {}') or with no braces at all (`@macro foo').
 
   The definition or "body" of the macro can contain most Texinfo
 commands, including previously-defined macros.  Not-yet-defined macro
 invocations are not allowed; thus, it is not possible to have mutually
 recursive Texinfo macros.  Also, a macro definition that defines another
 macro does not work in TeX due to limitations in the design of `@macro'.
 
   In the macro body, instances of a parameter name surrounded by
 backslashes, as in `\PARAM1\' in the example above, are replaced by the
 corresponding argument from the macro invocation.  You can use
 parameter names any number of times in the body, including zero.
 
   To get a single `\' in the macro expansion, use `\\'.  Any other use
 of `\' in the body yields a warning.
 
   The newlines after the `@macro' line and before the `@end macro' line
 are ignored, that is, not included in the macro body.  All other
 whitespace is treated according to the usual Texinfo rules.
 
   To allow a macro to be used recursively, that is, in an argument to a
 call to itself, you must define it with `@rmacro', like this:
 
      @rmacro rmac
      a\arg\b
      @end rmacro
      ...
      @rmac{1@rmac{text}2}
 
   This produces the output `a1atextb2b'.  With `@macro' instead of
 `@rmacro', an error message is given.
 
   You can undefine a macro FOO with `@unmacro FOO'.  It is not an error
 to undefine a macro that is already undefined.  For example:
 
      @unmacro foo
 
Info Catalog (texinfo) Defining New Texinfo Commands (texinfo) Invoking Macros
automatically generated byinfo2html