71

正如这里所建议的,这latexmk是一种在源代码更改时不断编译文档的便捷方法。但是,当您处理文档时,通常会遇到错误,然后latex会惊慌失措并等待用户输入,然后再继续。这会变得非常烦人,尤其是最近当我破解了一些东西以latex直接从etherpad文档编译时,它会在您键入时不断保存。

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

(我曾认为pdflatex's 选项-halt-on-error可以解决问题,但显然不是。)

额外的问题:Mac OSX 上的 Skim 是一个不错的 pdf 查看器,它会在 pdf 更改时自动刷新(与预览不同),除了每当出现乳胶错误时,它会让您重新确认您想要自动刷新。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刷新而不接触任何东西。

4

4 回答 4

44

使用 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)。

于 2009-04-10T20:28:20.553 回答
7

您也可以将\nonstopmode\batchmode放在 tex 文件的开头;那么它将适用于任何 TeX 版本,而不仅仅是pdflatex. 有关这些和相关命令的更多信息,请参阅David Bausum 对(原始)TeX 命令的非常好的参考。特别是来自调试系列的命令在这里可能很有趣。

于 2011-10-20T13:14:42.143 回答
4

另一种可能的破解方法是简单地使用:

yes x | latexmk source.tex

你总是可以为 'yes x | 创建一个别名。latexmk' 如果你要使用这个选项很多。我可以在其他建议上方看到的主要优点是,当您偶尔希望latexmk 表现得像这样时,它非常快。

穆罕默德

于 2010-07-21T11:30:20.147 回答
0

还有一个 \batchmode 命令可以做这项工作。

于 2010-07-21T11:38:08.667 回答