代码之家  ›  专栏  ›  技术社区  ›  NomeN

安静地运行pdflatex[关闭]

  •  53
  • NomeN  · 技术社区  · 17 年前

    我使用系统()在我的(C++)程序中调用PDPLATEX,不用说在这种情况下所有的垃圾PDPLATEX在屏幕上都有点恼人。

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

    2 回复  |  直到 15 年前
        1
  •  23
  •   laalto    17 年前

    要简单地忽略所有输出,请将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);
    
        2
  •  61
  •   Will Robertson    17 年前

    不幸的是,德州并没有真正遵守 stdout sterr 因为它起源于80年代早期,但是有一些开关可以用来改变显示的信息量。

    执行 latex 用任何一个 -interaction=nonstopmode -interaction=batchmode 用于不停止行为的开关,即使在出现语法错误的情况下也是如此。 nonstopmode 将打印所有常规行,它只是不会停止。 batchmode 将禁止除少数声明性行以外的所有行(“这是pdfex v3.14…”)。

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