预览的有趣行为

预览的有趣行为

如果你编译此代码(请注意,\begin{document}已被注释):

% arara: pdflatex
\documentclass{article}
\usepackage{tikz}
\usepackage[active,tightpage]{preview}
%\begin{document}
\PreviewEnvironment{tikzpicture}
\begin{tikzpicture}
    \node  {a node}; 
\end{tikzpicture}
\end{document}

你收到此错误:

! I can't find file `preview.aux'.

但如果你取消注释\begin{document},请再次编译并创建preview.aux

\relax 
\gdef \@abspage@last{1}

再次评论\begin{document},并最终重新编译它,它有效!

为什么会发生这种情况?

答案1

错误

 ! LaTeX Error: Missing \begin{document}.

有一个相当简单的实现:它已被添加到 \everypar 中,格式如下:

 \everypar{\@nodocument}

因此,如果某件事在序言中开始一个段落,它就会被触发。

抑制错误很容易,只需清空\everpar

\documentclass{article}
\everypar{} 
zzz

\begin{document}
aaa
\end{document}

另一种方法是调用\@arrayparboxrestore包含以下内容的函数\everypar{}

\documentclass{article}
\makeatletter \@arrayparboxrestore \makeatletter
zzz

\begin{document}
aaa
\end{document}

预览代码在开头包含 a \@arrayparboxrestore,因此它会抑制错误,但如果没有\begin{document}重要代码丢失,那么最后您就会收到缺少辅助文件的错误。证明辅助文件在这里有帮助,但这并不意味着您有一个健全的文档。

相关内容