無法編譯的大學類別文件
分類:第一個錯誤、引擎、過時的套件、二分搜尋。
無法編譯的大學類別文件
大學論文模板是一種特殊的遺留程式碼。一名研究生十五年前根據當時的 TeX 發行版編寫了課程文件,畢業後將其凍結,而 LaTeX 生態系統仍在繼續發展。當你今天下載「universitythesis.cls」並且它因螢幕上的錯誤而終止時,該類別通常不是被破壞,而是被時間擱淺了。不過,故障模式是可以預測的,固定的分類順序可以解決大多數故障。
僅從第一個錯誤開始
LaTeX 失敗級聯:課程早期的一個未定義命令可能會產生數十個毫無意義的下游錯誤。將日誌捲動到以“!”開頭的第一行,修復該問題,然後在讀取其他內容之前重新編譯。重複這個循環通常可以在三到四遍內清除令人生畏的錯誤牆。如果第一個錯誤是未知指令,未定義的控制序列 將逐步進行診斷。
檢查引擎
許多模板假設有一個特定的引擎,但在任何其他引擎下都會奇怪地失敗。載入 fontspec 或按名稱設定字體的類別需要 XeLaTeX 或 LuaLaTeX;圍繞「pdftex」特定原語建構的類別可能會在這兩種情況下失敗。尋找類別文件頂部附近的註釋或大學說明中命名預期引擎的一行,並在調試其他任何內容之前進行匹配。 該專案使用哪個引擎 中總結了這些差異。
實現您所控制的現代化
舊模板會載入過時的軟體包,而這些軟體包的現代替代品已經在您的發行版中,然後雙方就會發生爭執;互相爭鬥的包列出了經典組合。可行的策略是保留類別文件本身,因為大學的格式要求就在那裡,並且只現代化您自己的序言:刪除過時的“\usepackage”行,稍後加載“hyperref”,並避免重新加載類別已經加載的任何內容。
對序言進行二分搜索
當錯誤無法檢查時,註解掉序言的後半部並重新編譯。如果錯誤消失,則觸發器位於註釋的一半中;恢復一半並重複。少數編譯可以隔離出錯的單行,這比推理您沒有編寫的前導碼要快得多。
在受苦之前先搜尋一下
那所大學的每個學生都編寫相同的課程,因此幾乎可以肯定您的錯誤以前已經遇到過。搜尋確切的錯誤訊息以及類別文件的名稱,並檢查大學或後續學生是否在 GitHub 上維護已修補的分支。使用維護的分叉(如果存在)比您自己重新修復已知錯誤要好。