运行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并不真正遵守stdout
和sterr
的规则,因为(我认为)源于80年代初。 但是可以调用一些开关来改变显示的信息量。
即使在出现语法错误的情况下,使用-interaction=nonstopmode
或-interaction=batchmode
开关执行latex
,以实现非停止行为。 nonstopmode
将打印所有常用的线,它不会停止。 batchmode
将压制除less数几个声明行(“this is pdfTeX v3.14 …”)。
也可以使用\batchmode
和\nonstopmode
从文档中调用这些文件,但是这对于描述的情况来说不太有用。