マクロを定義するため,以下のようにTexinfoの@macro
コマンドを使用
します.
@macro macroname{param1, param2, ...} text ... \param1\ ... @end macro
パラメータ(parameters)のparam1,param2,...は,後 でマクロをドキュメントで使用するとき(次のセクションで記述します)に供給さ れる引数に対応します.
マクロがTeXで動作するため,macronameは完全に文字から成り立って いる必要があります.数字,ハイフン,アンダースコア,または他の特別な文字 を含めてはいけません.
マクロがパラメータを必要としない場合,空のリスト(`@macro foo {}'),またはカッコ無し(`@macro foo')で定義することが可能です.
定義やマクロの本体(body)は,前に定義されたマクロを含め,ほとんどの
Texinfoコマンドを含めることが可能です.まだ定義されていないマクロの呼び
出しはできません.このため,相互に繰り返されるTexinfoマクロを持つことは
不可能です.また,他のマクロを定義するマクロ定義は,@macro
の設計
の制限のため,TeXでは動作しません.
マクロの本体では,上記の例では`\param1\'のようにバックスラッ シュで囲まれているパラメータ名のインスタンスは,マクロ呼び出しでの対応す る引数で置換されます.パラメータ名は,ゼロ回を含め何度でも本体で使用可能 です.
マクロ式での単一の`\'を得るため,`\\'を使用してください.ほか のあらゆる本体での`\'の使用は警告されます.
@macro
行の後と@end macro
行の前の改行は無視されるので,マ
クロ本体に含まれません.全ての他の空白は通常のTexinfoの規則に従って扱わ
れます.
マクロを再帰的に使用可能にするため,すなわち,引数としてそれ自身を呼び出 すため,以下のように`@rmacro'で定義する必要があります.
@rmacro rmac {arg} a\arg\b @end rmacro ... @rmac{1@rmac{text}2}
これは,出力`a1atextb2b'を生成します.`@rmacro'の代わりに `@macro'を用いた場合,エラーメッセージが表示されるでしょう.
@unmacro
fooを用いて,マクロfooを未定義にすることが
可能です.既に未定義にされたマクロを未定義にすることはエラーではありませ
ん.例えば以下のようにします.
@unmacro foo