调试 LaTeX 错误:如何隔离问题

调试 LaTeX 错误:如何隔离问题

使用 TeXWorks 和 TeXLive,错误通常会显示相关文本,然后我就可以找到问题所在。当然,如果有一个按钮可以点击进入,那就太好了,但这并没有什么用。但是,我现在有一个很大的文档,突然,我收到以下错误,却不知道文档中的哪个地方出错了:

(c:/bin/texlive/2013/texmf-dist/tex/latex/hyperref/hyperref.sty
(c:/bin/texlive/2013/texmf-dist/tex/generic/oberdiek/hobsub-hyperref.sty
(c:/bin/texlive/2013/texmf-dist/tex/generic/oberdiek/hobsub-generic.sty))
(c:/bin/texlive/2013/texmf-dist/tex/latex/oberdiek/auxhook.sty)
(c:/bin/texlive/2013/texmf-dist/tex/latex/hyperref/pd1enc.def)
(c:/bin/texlive/2013/texmf-dist/tex/latex/latexconfig/hyperref.cfg)
(c:/bin/texlive/2013/texmf-dist/tex/latex/url/url.sty))

Package hyperref Message: Driver (autodetected): hpdftex.

(c:/bin/texlive/2013/texmf-dist/tex/latex/hyperref/hpdftex.def
(c:/bin/texlive/2013/texmf-dist/tex/latex/oberdiek/rerunfilecheck.sty))
(c:/bin/texlive/2013/texmf-dist/tex/latex/geometry/geometry.sty)
(c:/bin/texlive/2013/texmf-dist/tex/latex/listings/lstlang1.sty)

(./QuickFlippedLessons2.aux
! Undefined control sequence.
l.75 \@writefil

? 

我没有保存以前的版本,因此查找此内容可能是一个非常繁琐的过程,我需要删除部分,直到找到相关的部分。我能做什么吗?

答案1

错误消息之前的一行

(./QuickFlippedLessons2.aux

表明错误发生在辅助文件内部。

\@writefile是 LaTeX 内核命令,\@writefil是截断版本。也许之前的运行因某种原因中止,辅助文件已关闭,但写入缓冲区仍处于打开状态。

删除QuickFlippedLessons2.aux并重试。

答案2

()控制台或日志文件中的 表示包含的文件。因此,此错误是在 LaTeX 处理文件时发生的。QuickFlippedLessons2.auxl.首的 表示行号。因此,这告诉您 的\@writefil第 75 行有一个未定义的控制序列QuickFlippedLessons2.aux

现在,.aux文件会在之前的 LaTeX 运行期间自动创建,并在\begin{document}当前运行中读取。除非您有意写入文件.aux,否则我猜您之前中止了 LaTeX 运行,只向文件写入了部分内容.aux

如果是这种情况,点击enter此错误将命令 LaTeX 尽可能继续编译。如果这是唯一的问题,则运行将成功,文件.aux将正确写入,并且错误将在以后的运行中消失。

或者,您可以删除该.aux文件并重新编译。第一次运行将.aux正确写入文件。

(Heiko 比我早了一分钟,但由于我试图讲得更详细,所以我将保留该帖子。)

相关内容