对包含许多错误的自动生成的 LaTeX 文件进行稳健处理

对包含许多错误的自动生成的 LaTeX 文件进行稳健处理

我使用作为后端knitr来生成漂亮的报告pdflatex。如果 R 代码运行无误,则一切都正常。但是,如果 R 代码失败,自动生成的文件有时会无效,以至于 LaTeX 甚至不会从中生成 PDF——错误太多,导致以下输出:

(That makes 100 errors; please try again.)
! ==> Fatal error occurred, no output PDF file produced!

例子:texput.tex

\documentclass{scrartcl}
\pagestyle{empty}

\begin{document}
  \input{bad}
\end{document}

例子:bad.tex

\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e
\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e
\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e
\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e\e

(代码和Makefile可以下载或克隆这里

在这种情况下,R 脚本中的错误很难找到,因为没有可用的输出。

有没有一种万无一失的等效方法\input可以“在这种情况下正常工作”?即使生成的文档在致命错误的地方突然结束也没关系,只要生成了有效的 PDF 即可。或者也许只需将错误阈值设置为一个非常大的值和/或重置每次遇到的错误数量\input就会有所帮助?

答案1

您无法确定完全任意的 LaTeX 文档是否能够编译:有很多情况会导致无限循环。在消息的情况下,100 errors这是 TeX 内置的,而不是 LaTeX 内置的,因此无法通过 LaTeX 简单地“关闭”。在 DVI 模式下,您可能会从这些情况下获得一些可读的输出,因为 DVI 格式不需要有效的“文件结束”部分,但 PDF 需要,因此 pdfTeX 必须完成作业才能为您提供一些可用的东西。

相关内容