![ログファイルに書き込む](https://rvso.com/image/254702/%E3%83%AD%E3%82%B0%E3%83%95%E3%82%A1%E3%82%A4%E3%83%AB%E3%81%AB%E6%9B%B8%E3%81%8D%E8%BE%BC%E3%82%80.png)
ログ ファイルにいくつかのことを書き込みたいのですが、これに対するベスト プラクティスは何ですか?\message{}
それとも、\typeout{}
それとも何か?
答え1
Plain TeXコマンドは\wlog
LaTeXでも利用可能である。
\wlog{This will be written in the log file}
マクロは\wlog
に展開され\immediate\write-1
、規則により引数はログ ファイルにのみ書き出され、ターミナルには表示されません。
の後に0から15までの数字が続く場合\write
、書き込み操作は、書き込みが実行される時点で開いている出力ストリームに対して行われます(が\immediate
先行している\write
かどうかに応じて、すぐに、または出力ルーチンが動作しているときに)。出力ストリームが開いていない場合は、または数が負でない場合、引数は\write
端末とログ ファイルに書き込まれます。逆に、数が負の場合、引数はログ ファイルにのみ書き込まれます。
例外: ほとんどの TeX ディストリビューションでは、\write18
シェル エスケープが有効になっている場合 (制限モードの可能性もあります。TeX Live または MiKTeX のマニュアルを参照してください)、引数をオペレーティング システムに渡します。
LaTeX コマンドは\typeout
を実行する\immediate\write\@unused
ため、引数を端末とログ ファイルの両方に書き込みます。Plain TeX には、この種の定義済みコマンドはありません。実際、引数内の脆弱なコマンドに対処するための適切な意味\typeout
も与えられます。ストリームはファイルに永久に割り当てられません。\protect
\@unused
また、\message
ターミナルとログ ファイルの両方に書き込みますが、新しい行は強制されず、代わりに\write
出力がログ ファイルに送信されるときに実行されます。