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