运行pdflatex悄悄地

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

那么…我如何鼓励pdflatex放弃冗长的输出呢? 如果只有错误是可见的,那就更好了…

要简单地忽略所有输出,将pdflatex标准输出redirect到/ 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并不真正遵守stdoutsterr的规则,因为(我认为)源于80年代初。 但是可以调用一些开关来改变显示的信息量。

即使在出现语法错误的情况下,使用-interaction=nonstopmode-interaction=batchmode开关执行latex ,以实现非停止行为。 nonstopmode将打印所有常用的线,它不会停止。 batchmode将压制除less数几个声明行(“this is pdfTeX v3.14 …”)。

也可以使用\batchmode\nonstopmode从文档中调用这些文件,但是这对于描述的情况来说不太有用。