Next: , Previous: Diversions, Up: Diversions


9.1 出力を切替える(divert)

出力はdivertを使って切替えます。

     divert(opt number)

numberは使用する切替え先です。 numberを省略したときはゼロとして解釈されます。

divertは展開されると消滅します。

m4への入力がすべて処理されると、 その時点で存在するすべての切替え先が自動的に番号の順で逆切替え(undivert) されて、そこにたまっていたテキストが出力されます。

     divert(1)
     This text is diverted.
     divert
     
     This text is not diverted.
     This text is not diverted.
     ^D
     
     This text is diverted.

同じ引数でdivertを何回か呼び出すと、 切替え先にある以前のテキストは上書きされずに、 新しいテキストが以前のテキストの後に追加されてゆきます。

存在するはずのない切替え先へ出力を切替えるとそこから後の出力は 単に捨てられます。 よくある不要な出力の例はマクロ定義の後にある改行です。 次はそれらを避ける方法です。

     divert(-1)
     define(`foo', `Macro `foo'.')
     define(`bar', `Macro `bar'.')
     divert
     

これはm4でのプログラミングで広く使われている慣用句のひとつです。