请参见这个帖子以供参考。
我们可以使用texi2dvi
来让 LaTeX 编译正确的次数,并bibtex
在必要时在循环中插入调用。rubber
是另一个包装脚本可以完成同样的事情。(我甚至latexmk
通过 TextMate 听说过。)
问题是,两个包装器都会因编译器错误而失败(pdflatex
默认情况下)。这是一个问题,因为我将其用作org-mode
前端,并且使用包装器时我经常不会收到小错误的通知。有时,更改文档并引入错误会重置计数器,直到我打印出文档时我才会注意到计数被破坏了。
手动运行pdflatex
多次nonstopmode
似乎可以避免这些问题,并且计数器按预期工作。
您是否知道还有其他乳胶包装器,它们可能对这些小错误更稳健?我是否可以将任何标志传递给现有包装器,以使它们“继续运作”?
答案1
latexmk 可以配置为在出现错误时不停止,并且可以在守护进程模式下运行,在文档更新时重新编译。我不知道 rubber 是否也具有这些功能。我的印象是 latexmk 是处理这种 TeX/LaTeX 编译/重新编译的最广泛使用的程序,并且功能齐全且可靠。另请参阅https://stackoverflow.com/questions/738755/dont-make-me-manually-abort-a-latex-compile-when-theres-an-error对于自我描述的“latexmk 迷你教程”。
编辑:我目前用SCons
它来处理我的 LaTeX 构建,因为它对 TeX 有合理的支持,而且我也用它SCons
来满足我的一般构建需求。一个最小的例子如下
env = Environment()
env.Program(target='foo', 'foo.tex')
我认为对 TeX 的支持不如 那样强大SCons
,latexmk
但如果我以这种方式使用它,它可以很好地与我的其余构建集成,并且我可以根据需要进行额外的编程。SCons 还TeX
以不间断模式运行命令。它可以通过环境变量进行配置,非常方便。
答案2
我上次查看 rubber 是在两三年前,当时我认为它不支持 pdflatex。现在看来它支持,但我没有看到任何相关文档。据说最新版本支持 pdflatex。
显然 texi2dvi 不起作用——它生成的 dvi 指的是 latex,而不是 pdflatex。
latexmk 对我来说效果很好,尽管我还没有尝试过在 org-mode 中使用。不过你可能想看看这个Emacs-org-mode 和 latexmk