无法编译的大学类文件
分类:第一个错误、引擎、过时的包、二分搜索。
无法编译的大学类文件
大学论文模板是一种特殊的遗留代码。一名研究生十五年前根据当时的 TeX 发行版编写了课程文件,毕业后将其冻结,而 LaTeX 生态系统仍在继续发展。当你今天下载“universitythesis.cls”并且它因屏幕上的错误而终止时,该类通常不是被破坏,而是被时间搁浅了。不过,故障模式是可以预测的,固定的分类顺序可以解决大多数故障。
仅从第一个错误开始
LaTeX 失败级联:课程早期的一个未定义命令可能会产生数十个毫无意义的下游错误。将日志滚动到以“!”开头的第一行,修复该问题,然后在读取其他内容之前重新编译。重复这个循环通常可以在三到四遍内清除令人生畏的错误墙。如果第一个错误是未知命令,未定义的控制序列 将逐步进行诊断。
检查引擎
许多模板假设有一个特定的引擎,但在任何其他引擎下都会奇怪地失败。加载 fontspec 或按名称设置字体的类需要 XeLaTeX 或 LuaLaTeX;围绕“pdftex”特定原语构建的类可能会在这两种情况下失败。查找类文件顶部附近的注释或大学说明中命名预期引擎的一行,并在调试其他任何内容之前进行匹配。 该项目使用哪个引擎 中总结了这些差异。
实现您所控制的现代化
旧模板会加载过时的软件包,而这些软件包的现代替代品已经在您的发行版中,然后双方就会发生争执; 互相争斗的包列出了经典组合。可行的策略是保留类文件本身,因为大学的格式要求就在那里,并且只现代化您自己的序言:删除过时的“\usepackage”行,稍后加载“hyperref”,并避免重新加载类已经加载的任何内容。
对序言进行二分搜索
当错误无法检查时,注释掉序言的后半部分并重新编译。如果错误消失,则触发器位于注释的一半中;恢复一半并重复。少数编译可以隔离出错的单行,这比推理您没有编写的前导码要快得多。
在受苦之前先搜索一下
那所大学的每个学生都编写相同的课程,因此几乎可以肯定您的错误以前已经遇到过。搜索确切的错误消息以及类文件的名称,并检查大学或后续学生是否在 GitHub 上维护已修补的分支。使用维护的分叉(如果存在)比您自己重新修复已知错误要好。