今天忽然遇到:使用xelatex或lualatex編譯,一直卡住,不報錯,也無法生成PDF,主動停止編譯后就報錯?
xdvipdfmx:fatal: File ended prematurely. No output PDF file written.?
然后,之前能正常編譯的一些文件也無法編譯了,這些文件沒有任何更改,是通過input包含到主文檔內的。
刪除.aux, .log, .toc, .synctex.gz等文件無法解決。又懷疑是TexStudio和TexLive的問題,用最新的版本重新安裝了一遍,也沒用。然后在Windows終端在中用 xelatex "main.tex" 命令進行編譯,發現也卡住,按Ctrl+C終止,發現卡在that divergent integrals such as $\Li(x)$,其中的\Li是我自定義的命令,即\newcommand{\Li}{\mathrm{Li}},現在只能懷疑是\Li的定義出問題了,去定義處一看,居然變成\newcommand{\Li}{\Li}了,是我之前用全部替換命令把已有的\mathrm{Li}替換成\Li時不小心把\newcommand處的也替換掉了,于是造成了死循環,改回來就一切正常了。不過這也說明xelatex和lualatex對這種意外的遞歸定義未做檢查,導致了死循環,是一個bug.