紧急停车与失控争论

由于缺少末端、大括号或错误的包含而导致致命中止。

#紧急停止与失控争论

症状

编译直接终止。日志以!紧急停止。 或显示“失控的论点?”,后跟一长段您自己的文本,通常带有伴随行,例如“扫描 \textbf 的使用时文件结束”或“段落在 \foo 完成之前结束”。与大多数 LaTeX 错误不同的是,根本没有 PDF,并且报告的行号经常指向文件末尾而不是真正的错误。

为什么会发生

两条消息都来自同一问题:TeX 开始读取必须关闭的内容,并在关闭标记到达之前到达输入末尾。当您编写 \textbf{ 时,TeX 会收集直到匹配的 } 为止的所有内容作为参数。如果大括号永远不会出现,TeX 会不断吞咽文本,穿过段落和部分,直到文件用完。 “失控的论证”是 TeX 向你展示它吞噬了什么。 “紧急停止”是 TeX 的放弃,因为如果没有缺失的部分,它就无法继续。缺失的“\end{document}”、未封闭的环境或不存在的文件的“\input”都会产生相同的最终状态。

如何找到真实位置

不要相信线路号码;它标志着 TeX 耗尽输入的位置,而不是不平衡开始的位置。相反,请阅读日志中的“失控参数?”块。被吞下的文本的前几个单词告诉您失控在文档中的何处开始,并且“文件在扫描使用…时结束”行命名了其参数从未关闭的命令。在引用的文本附近搜索该命令并计算其大括号的数量。

如果日志没有帮助,请对文档进行二进制搜索。注释掉主体的后半部分(或将其包装在 \iffalse ... \fi 中)并重新编译。如果错误消失,则问题出在您删除的那一半;继续减半,直到错误的段落被隔离。这听起来很粗糙,但在一个大文档中,它在少数编译中发现了一个单独缺失的大括号。

通常的嫌疑人

检查粗体、斜体、脚注和标题附近是否有不带“}”的“{”,因为这些命令采用您手写的参数大括号。检查每个“\begin{…}”是否都有一个具有相同环境名称的匹配“\end{…}”。确认文件以“\end{document}”结尾,并且每个“\input”和“\include”都命名了该路径中存在的文件。编辑器在这里提供帮助:Oleafly 在您键入时突出显示匹配的大括号和环境对,这会在编译器看到它们之前捕获其中的大部分。

返回 日志素养