静静地运行pdflatex

时间:2009-06-24 12:01:47

标签: latex pdflatex

我正在使用system()从我的(C ++)程序中调用pdflatex,不用说在这种情况下,所有垃圾pdflatex放在屏幕上都有点恼火。

那么......我如何鼓励pdflatex放弃冗长的输出? 如果只能看到错误会更好......

2 个答案:

答案 0 :(得分:62)

不幸的是(La)TeX并没有真正遵守stdoutsterr的规则,因为(我假设)它起源于80年代初期。但是您可以调用一些开关来改变显示的信息量。

即使出现语法错误,也可以使用latex-interaction=nonstopmode开关执行-interaction=batchmode非停止行为。 nonstopmode将打印所有常用的行,它不会停止。 batchmode将压制除少数声明性行之外的所有行(“这是pdfTeX v3.14 ......”)。

也可以使用\batchmode\nonstopmode从文档中调用这些内容,但这对您所描述的情况不太有用。

答案 1 :(得分:23)

要简单地忽略所有输出,请将pdflatex标准输出重定向到/ dev / null:

system("pdflatex yourdocument >/dev/null");

您可能希望在文档的开头添加\nonstopmode,以指示tex即使遇到错误也能继续运行。

要获取错误消息,请将pdflatex输出传递给您的程序,并查找以!开头的行周围的错误,例如

FILE *outputf = popen("pdflatex yourdocument", "r");

// ... read and analyze output from outputf ...

pclose(outputf);