標籤:

LaTeX 如何進行 debug?

在寫 LaTeX 的過程中,用的 WinEdt,如果自己寫的語法錯誤,在生成 PDF 的過程中,會卡死,並不會提示語法哪錯了。導致 debug 很困難


LaTeX 的報錯確實比較晦澀,但是說「並不會提示語法哪錯了」就有點耍流氓了。

排錯的第一步是看懂 LaTeX 的報錯提示,再就是翻看相應位置的代碼進行分析,最後是根據經驗、資料進行修改。OP 既然能說出「debug」這個詞,想必是有一定編程經驗的,所以分析代碼的問題不需要說;根據經驗和資料修改代碼需要靠日積月累的功夫,熟練了就好,別無他法,所以也不用說。因此這裡只說說怎麼看懂 LaTeX 的報錯提示。

我們故意構建一段錯誤的代碼看看。

documentclass{minimal}
egin{document}
usepackage{amsmath}
end{document}

編譯運行之後,會提示錯誤:

LaTeX 的錯誤提示分成四個部分,以這個報錯為例。

  1. 以嘆號開頭的行說明出錯原因,示例中提示:「LaTeX 錯誤:只能用在導言區」。

  2. 中間段落是 LATEX 給出的提示建議

  3. 以字母 l 開頭的那一行給出出錯的具體位置。可以看到代碼在 usepackage 之後截斷分為兩行,這說明問題出在截斷處。這裡是第三行的 usepackage 出錯了。

  4. 以問號開頭的行,表示 LaTeX 正在等待用戶輸入。這裡可以輸入 x 停止編譯,直接按回車忽略該錯誤,甚至輸入 s 直接忽略後續一切錯誤。

所以你看,報錯其實還是挺清楚的。這裡表示「第三行的 usepackage 只能放在導言區,不能放在正文部分」,於是你只需要根據提示調整一下 usepackage 的位置就好了。

實際使用中遇到的錯誤多種多樣,一些錯誤的分析和修復可能不這麼簡單。 @劉海洋 的《LaTeX 入門》中有名為「從錯誤中救贖」的章節,專門講解 LaTeX 的排錯,對 LaTeX 的不同報錯進行了詳細地敘述。OP 可以去看一下。

另外,關於提問可以參考:

https://gitcafe.com/hellccm/LaTeX_howtoask/raw/master/LaTeX_howtoask.pdf


推薦texstudio. 會報錯啊有顏色啊!


如果用的模板,首先保證模板能通過編譯。然後自己寫正文的時候,每進行一項(可能會引起報錯的)操作(插入行間公式、插入圖片、引用文獻等),最好編譯一下,這樣基本直到寫完都不會被排錯問題所困擾。不然等文章寫完了再編譯而字數又比較多的話,debug就比較困難了。個人認為,用LaTeX寫作時,常常編譯看看正在寫作的文檔並不是個壞習慣。


推薦閱讀:

LaTeX 命令的可選參數不能有方括弧么?
表示內積時,應該選擇leftlangle, left< 和 langle 中的哪一個?
有啥辦法能讓listings去檢查源代碼是不是和tex文件里一樣,而不是直接把那幾行input進來?
TeX Live 2015 有哪些值得關注的新特性?
如何從零開始,入門 LaTeX?

TAG:LaTeX |