![空文档为什么会出错?](https://linux22.com/image/283839/%E7%A9%BA%E6%96%87%E6%A1%A3%E4%B8%BA%E4%BB%80%E4%B9%88%E4%BC%9A%E5%87%BA%E9%94%99%EF%BC%9F.png)
我正在使用 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
,应该使用latex
或tex
,具体取决于在每种情况下要使用的正确格式。
需要补充的是,从 TeX 核心的角度来看,没有页面和只有一个空白页面之间有很大区别。请注意,pdftex
使用此代码不会生成任何页面:
\bye
(是的,这是一个完整的纯 TeX 文档)。但是,在这种情况下,它将生成一个只有页码的页面(如果您愿意的话,还有一个空白的不可见段落):
\leavevmode\bye
因此,从空白文档生成空白页是没有意义的。
总结
回答你的问题:为什么rubber
将其视为错误?因为它的设计者/程序员选择了它。