空文档为什么会出错?

空文档为什么会出错?

我正在使用 Pluma(基本上是 gedit)和一个我发现可以帮助处理 tex 文档的插件,它做得非常好,我刚刚启动了一个新的插件并激活了预览(因为我在某些时候会需要它)我发现空文档是一个错误!

\documentclass{report}

\begin{document}

\end{document}

这会出现 PDF 文件不存在的错误,为什么?

这是什么错误吗?为什么需要有文本才能工作?添加一个字母就可以解决这个问题。

顺便说一下,使用的发动机是“橡胶”。

答案1

您展示的 LaTeX 代码不会生成任何页面,因此不会写入任何 PDF 文件。PDF 查看器无法找到它,因为它不存在。

这不是 LaTeX 方面的错误;如果前端无法处理这种情况,那就是前端的问题。

正在做

pdflatex teal && echo $?

您的示例文件在哪里teal.tex,终端报告

This is pdfTeX, Version 3.1415926-2.5-1.40.14 (TeX Live 2013)
 restricted \write18 enabled.
entering extended mode
(./teal.tex
LaTeX2e <2011/06/27>
Babel <3.9h> and hyphenation patterns for 78 languages loaded.
(/usr/local/texlive/2013/texmf-dist/tex/latex/base/report.cls
Document Class: report 2007/10/19 v1.4h Standard LaTeX document class
(/usr/local/texlive/2013/texmf-dist/tex/latex/base/size10.clo)) (./teal.aux)
(./teal.aux) )
No pages of output.
Transcript written on teal.log.
0

因此很明显退出代码是 0(无错误)。

诸如rubber(已经停止运行好几年了)或latexmk将向您发出非零退出代码,因为它们预计一些输出和认为PDF 文件丢失是由于某些错误造成的。在我看来,这是错误的,因为他们可以检查进程的退出代码pdflatex(顺便说一下,只有 0 或 1)。

在这种情况下latexmk退出代码为 12,但同样,这是不是TeX/LaTeX 错误。我认为除了向开发人员提出功能请求/错误报告外,没有其他解决方法。您可能不会幸运rubber

答案2

正如@egreg 在回答中所说:如果您不让 PDFLaTeX 发出任何页面,它就无法生成 PDF,因为根据 PDF 规范,它必须包含一个页面。

即使您可以制作没有页面的 PDF 文件,PDFLaTeX 设计人员也不会生成任何 PDF 文件,这是合理的。因为在某些情况下,您不希望生成任何文档,例如,当运行.dtx/.ins文件以生成包.sty文件时,或者当运行 时makebst。但是,在这种情况下,使用 是没有意义的pdflatex,应该使用latextex,具体取决于在每种情况下要使用的正确格式。

需要补充的是,从 TeX 核心的角度来看,没有页面和只有一个空白页面之间有很大区别。请注意,pdftex使用此代码不会生成任何页面:

\bye

(是的,这是一个完整的纯 TeX 文档)。但是,在这种情况下,它将生成一个只有页码的页面(如果您愿意的话,还有一个空白的不可见段落):

\leavevmode\bye

因此,从空白文档生成空白页是没有意义的。

总结

回答你的问题:为什么rubber将其视为错误?因为它的设计者/程序员选择了它。

相关内容