System()を使用して(C++)プログラム内からpdflatexを呼び出していますが、言うまでもなく、pdflatexが画面に表示するすべてのゴミはこの場合少しイライラします。
だから...どうやってpdflatexに長い出力を控えるよう奨励するのですか?エラーのみが表示される場合はさらに良いでしょう...
すべての出力を単に無視するには、pdflatex stdoutを/ dev/nullにリダイレクトします。
system("pdflatex yourdocument >/dev/null");
ドキュメントの先頭に\nonstopmode
を追加して、エラーが発生した場合でもtexが続行し続けるように指示できます。
エラーメッセージを取得するには、pdflatexの出力をプログラムにパイプし、!
で始まる行の周りのエラーを探します。
FILE *outputf = popen("pdflatex yourdocument", "r");
// ... read and analyze output from outputf ...
pclose(outputf);
残念ながら、(La)TeXはstdout
とsterr
のルールを実際に順守していません。これは、80年代前半の起源に起因する(と思われます)。ただし、表示する情報の量を変更するために呼び出すことができるスイッチがいくつかあります。
構文エラーの場合でも、-interaction=nonstopmode
または-interaction=batchmode
スイッチを使用してlatex
スイッチを実行すると、停止しない動作が得られます。 nonstopmode
は通常の行をすべて出力しますが、停止しません。 batchmode
は、少数の宣言行を除くすべてを抑制します( "this is pdfTeX v3.14 ...")。
これらは\batchmode
および\nonstopmode
を使用してドキュメント内から呼び出すこともできますが、これは説明している状況ではあまり役に立ちません。