Next: , Up: Defining New Texinfo Commands


18.1 マクロの定義

マクロを定義するため,以下のようにTexinfoの@macroコマンドを使用 します.

     @macro macroname{param1, param2, ...}
     text ... \param1\ ...
     @end macro

パラメータ(parameters)param1param2...は,後 でマクロをドキュメントで使用するとき(次のセクションで記述します)に供給さ れる引数に対応します.

マクロが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