为什么 (La)TeX 时不时会毫无理由地出现错误?

为什么 (La)TeX 时不时会毫无理由地出现错误?

有时,当我在 LaTeX 编辑器中编写一些新的“代码”(纯文本、方程式、特殊命令等)并编译文件时,就会出现错误。通常,当我遇到错误时,我会检查编辑器随后突出显示的代码。但是,对于这些“无法解释的错误”,没有突出显示任何代码(与所有“红色”错误一样,代码无法编译)。所以,我再次编译并且...它成功了。通常我只是继续写作,但这次我想尝试找出是否有人遇到过这种情况,以及是否有人知道为什么会发生这种情况。

编辑1 以下是错误截图:

在此处输入图片描述

答案1

有时错误(或其描述)可能与错误指向的位置或内容无关。最简单的形式可能是 LaTeX 的\label-\ref系统,尽管这并非真正的错误。您的文档很完美,但参考资料却显示为??编译时。“突然”,当您再次编译时,引用会按预期显示。目录也是如此;它似乎总是落后一步,或者“不知从何而来”导致错误。

如果情况确实如此,总是通过删除辅助文件重新开始(.aux.toc ...参见LaTeX 相关文件的文件扩展名和/或天哪!这些文件都是什么?) 并再次编译,至少两次(有时更多),因为引用和其他内容可能需要几次运行才能解决。

典型的错误与编译相关的问题通常源自.aux上次运行中遗留的内容。导致此问题的常见软件包包括hyperreftikz/pgf,因为他们在其中写入了实际的命令定义(当然,软件包作者会尝试避免这种情况)。也就是说,在删除这些软件包后,第一次重新编译仍会处理.aux包含完全不受支持的定义,并且可能会导致文档出现问题。

Knuth 将 TeX 描述为“进食机器”(第7 TeX 如何读取你输入的内容,第 38 页):

如果您想彻底了解 TeX,那么理解标记列表的概念非常重要,通过将 TeX 视为活的有机体来学习这个概念会很方便。文件中的各行输入只能被 TeX 的“眼睛”和“嘴巴”看到;但在文本被吞噬之后,它会以标记列表的形式发送到 TeX 的“胃”,而实际排版的消化过程完全基于标记。就胃而言,输入以标记流的形式流入,有点像您的 TeX 手稿被全部输入到一行非常长的行中。

说白了,TeX 可能已经吞噬了你的部分内容,只是在完全不同/后期的阶段才出现了胃问题。

对于一些塔姆斯大学*, 看

*可能的补救措施电视eX 的未知股票每个问题年代

相关内容