发生错误时,不要让我手动中止LaTeX编译


69

作为建议在这里latexmk就是不断编译你的文档只要源变化的便捷方式。但是,当您处理文档时,通常会遇到错误,然后latex会出现恐慌并等待用户输入,然后再继续。这可能会很烦人,尤其是最近,当我黑客入侵某个东西以latex直接从etherpad文档进行编译时,该文件在您键入时会不断保存。

如果无法编译,是否有设置latexlatexmk使其仅中止并显示一条错误消息?或者,如有必要,我将如何设置某种Expect脚本来自动消除LaTeX的投诉?

(我原以为pdflatex,选择-halt-on-error可以解决问题,但显然没有。)

额外的问题:Mac OSX上的Skim是一个不错的pdf查看器,它在pdf更改时会自动刷新(与Preview不同),只是每当出现乳胶错误时,它都会使您重新确认要自动刷新。Texniscope没有这个问题,但是出于其他原因,我不得不放弃Texniscope 。有没有一种方法可以使Skim始终自动刷新,还是有其他查看器可以实现此目的?


添加:latexmk基于此问题的答案的迷你教程:

  1. 到达latexmk这里:http : //www.phys.psu.edu/~collins/software/latexmk-jcc/

  2. 将以下内容添加到您的~/.latexmkrc文件中:

    $pdflatex = 'pdflatex -interaction=nonstopmode';
    

    (对于带有脱脂功能的OS X)

    $pdf_previewer = "open -a /Applications/Skim.app";
    
  3. 编辑源文件时,foo.tex在终端上运行以下命令:

    latexmk -pvc -pdf foo.tex
    
  4. 使用Skim或其他实时pdf查看器查看foo.pdf。对于Skim,只需查看Skim首选项中的“同步”选项卡,然后为您的编辑器进行设置即可。

瞧!foo.tex现在点击保存将foo.pdf刷新而不触碰任何东西。


3
撇脂仍在挫败原本完美的解决方案。现在,即使没有错误,它也经常会冻结并说“无法加载文件”,直到我说“确定”为止。我只想要一个永远不会困扰我的pdf查看器!
dreeves

2
您是否有任何教程说明如何使用Etherpad进行这项工作?
拉斐尔·S·卡尔萨维里尼09年

我使用-halt-on-error,它对我有用。否则我不会真正了解失败的原因。关于Skim,在这里也是一样,没有更好的选择了……我猜最好是与开发人员讨论以推动该功能。
Damien Pollet 2010年

你能把你的迷你教程变成一个答案吗?这不是问题的一部分。
圣保罗Ebermann

使用Latexmk时,您也可以直接使用'-interaction = nonstopmode'选项,以避免出现错误。这对于TexMaker至关重要,后者会在发生任何错误时与latexmk挂起。您应该将该选项添加到latexmk命令中的“选项>配置TexMaker>命令”中
ravemir

Answers:


41

对于MikTeX,pdflatex具有以下命令行选项:

  -interaction=MODE               Set the interaction mode; MODE must be one
                                  of: batchmode, nonstopmode, scrollmode,
                                  errorstopmode.

由@ 9999years建议编辑:

这些值等效于一组\commands提供相同功能的LaTeX 。

TeX使用技巧

这些模式使TeX的行为如下:

  • errorstopmode 停止所有错误,无论是源代码错误还是不存在的文件错误。

  • scrollmode 不会因源中的错误而停止,而是在发生更严重的错误(如丢失的文件)时请求输入。

  • 在名称不正确的情况下nonstopmode,TeX在出现严重错误后不会请求输入,但会完全停止。

  • batchmode阻止除此以外的所有输出(打算在自动脚本中使用)。在所有情况下,所有错误都会写入日志文件(yourtexfile.log)。


8
这不是特定于MixTeX甚至LaTeX的-它是Knuth的第一个TeX AFAIK版本提供的。
ShreevatsaR

2
即使不存在,我也使用echo q | pdflatex来实现这一点。效果很好:)
乔伊(Joey)

2
我在弄清楚这些模式的实际含义时遇到了麻烦。联机帮助页上说:“这些模式的含义与相应的\ command相同”。它在说什么“ \ commands”?
dreeves

6
答:这是在谈论原始TeX命令,我想我要使用非停止模式:在控制台上显示所有错误,但不提示它们。errorstopmode是通常的操作。对于某些错误(例如丢失文件),scrollmode停止。batchmode既不停止也不向控制台输出错误。
dreeves


4

另一个可能的破解方法只是使用:

yes x | latexmk source.tex

您总是可以为'yes x |创建别名。latexmk”(如果您打算大量使用此选项)。我可以在其他建议之上看到的主要优点是,当您偶尔希望Latexmk表现为这种行为时,它非常快。

穆罕默德


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.