最近在使用TexStudio時,遇到一個棘手的問題:
無法編譯,提示如下:
kpathsea: Running mktexfmt xelatex.fmt
/Library/TeX/texbin/mktexfmt: kpsewhich -var-value=TEXMFROOT failed, aborting early. BEGIN failed–compilation aborted at /Library/TeX/texbin/mktexfmt line 25.
Process exited with error(s)
以往,把錯誤提示復制到搜索引擎,一般都能找到類似問題,按照大家的經驗,總能解決。但這次,無論如何也找不到類似錯誤提示。或許有,我看不懂。
這里嘗試分析一下這個錯誤。
kpathsea
是一個解決編譯過程中文件搜索問題的庫,是由Karl Berry編寫的,因此該程序命名為Karl’s Path Searching簡稱為kpathsea。想詳細了解一些可以看看對作者的采訪。
mktexfmt xelatex.fmt
mktexfmt是一個腳本(程序),它用于生成TeX
Live中的格式文件。在LaTeX中,格式文件是預先編譯的文件,可以使LaTeX快速地處理文檔。 比如,當執行 pdflatex
的時候,實際上 LaTeX 會調用 pdflatex.fmt 這個預編譯好的格式文件來快速處理 pdflatex。在LaTeX系統中,.fmt文件是格式文件(format
file),它是預編譯的,其中包含了LaTeX的所有宏定義,字符信息,以及其他的基礎格式設置。這樣,每次運行LaTeX的時候,就不必重新讀取所有的宏定義和格式設置,大大加快了編譯速度。當然,.fmt文件不僅只用于LaTeX,還用于TeX和其他一些TeX的變體。
.fmt文件通常在TeX系統安裝或是更新時自動生成,也可以手動創建。TeX系統在啟動時會加載一個.fmt文件,該文件決定了將要使用的格式。例如在啟動LaTeX時,系統會加載latex.fmt文件。
網上沒搜到合適的解釋,所以上面引用的文字是我問的chatGPT,它的回答。
繼續問chatGPT
問題是:
在只用TexStudio編譯tex文件時,遇到了錯誤提示“kpathsea: Running mktexfmt xelatex.fmt
/Library/TeX/texbin/mktexfmt: kpsewhich -var-value=TEXMFROOT failed, aborting early. BEGIN failed–compilation aborted at /Library/TeX/texbin/mktexfmt line 25.
Process exited with error(s)”,可能是什么原因?
回答是:
這個錯誤可能是由于你的電腦的TeX安裝有問題。這可能是由于安裝過程中的錯誤,或者是你的TeX環境變量沒有正確設置。
具體來講,錯誤提示顯示kpsewhich
-var-value=TEXMFROOT命令失敗,這說明在運行這條命令查找TeX安裝的根目錄時出了問題。mktexfmt是TeX用來創建格式文件的程序,當它找不到需要的文件或者無法確定TeX的根目錄時,就會退出并給出錯誤。如果你能夠確保TeX已經正確安裝,并且你知道TeX安裝的實際路徑,你可以嘗試在終端中執行下面的命令以設定環境變量:
export TEXMFROOT=/your/texmf/root
這里的/your/texmf/root應當替換為你電腦中TeX的實際安裝路徑。如果你不確定TeX的實際安裝路徑,那也可能需要重新安裝TeX。你可以去TeX Live官網下載最新的安裝包,按照其指示進行安裝。
在大多數情況下,這些步驟能夠解決問題。如果問題仍然存在,你可能需要尋找專業的TeX支持或者在TeX社區發。
chatGPT的回答是不錯的,但我是在寫這個文章的時候才想起來問它。寫文章之前其實已經解決了問題。現在看來,如果早點兒問chatGPT,能夠更快地找到問題所在。
實際問題所在
可能是由于我卸載了以前版本的TexLive,但實際上沒有卸載干凈,新安裝后,TexStudio默認的編譯引擎所指向的地址實際找不到引擎。
解決辦法
在TexStudio的preference中,設置引擎路徑為正確的路徑。。
或者把以前版本刪干凈后再重新安裝,我怕刪錯了,沒試。