xdvipdfmx:fatal: File ended prematurely. No output PDF file written.
今天忽然遇到:使用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.