最近想要用命令列去編譯 latex 檔案。
最簡單的命令,輸入
```
xelatex a.tex
```
我隨便寫了一個報錯,看看 [Overleaf, Online LaTeX Editor](https://www.overleaf.com/) 這個平臺的表現如何。
因為這個專案是開源的,好奇心的驅使下,讓我想看看他背後用什麼命令去編譯的。
原始碼檔案地址:[/file/2020/09/21/20200921014517_1.jpg.js latexmk + xelatex 命令編譯的。
如果你還不了解 Latexmk 是什麼東東,這裡簡單的介紹一下:LaTeX 要生成最終的 PDF 文件,如果含有交叉引用、BibTeX、術語表等等,通常需要多次編譯才行。而使用 Latexmk 則只需執行一次,它會自動幫你做好其它所有事情。通常情況下,你安裝的 LaTeX 發行版已經包含了 Latexmk,我們並不需要手動安裝它。
一般來說,你可能已經在你的計算機上安裝了它,因為它是 MacTeX 和 MikTeX 它與許多linux發行版捆綁在一起。
在最簡單的情況下,你只需要輸入
```
latexmk
```
如果你想`.pdf`檔案作為輸出,只需輸入:
```
latexmk -pdf
```
如果你只想編譯一個特定的`.tex`檔案在當前目錄中,只需提供檔名:
```
latexmk myfile.tex
```
如果要預覽結果,只需使用
```
latexmk -pv
```
如果希望 Latexmk 連續檢查所有輸入檔案中的更改,並在需要時編譯整個過程並始終顯示結果,請鍵入
```
latexmk -pvc
```
使用 xelatex 引擎編譯
```
latexmk -pvc -xelatex file.tex
```
Latexmk 有檔案監測的機制。
它應該可以做到只需執行一次,然後每次檔案儲存動作後,自動重新編譯。
當然,選項可以組合在一起,例如。
```
latexmk -pdf -pv myfile.tex
```
執行LaTeX之後,當前目錄被大量臨時檔案汙染;您可以使用這個命令清理
```
latexmk -c
```
```
latexmk -C
```
更多的命令,只需要輸入
```
latexmk -help
```
更詳細的可以看官網:[Latexmk](https://link.zhihu.com/?target=http%3A//personal.psu.edu/~jcc8/software/latexmk/)
他上面有詳解。
## xelatex 命令列
最簡單的命令
```
xelatex a.tex
```
但這個命令遇到錯誤不會停止,你必須不斷的按回車鍵才行。
以下是幾個比較常用的命令
1. -halt-on-error 和 -interaction=nonstopmode 引數 使編譯遇到錯誤時立即停止
2. -file-line-error 使報錯輸出檔案和行號
3. -synctex=1 則開啟 synctex 的功能
更多的命令
```
xelatex -help
```
## latexmk 結合 xelatex 編譯
比如
```
latexmk -xelatex -file-line-error -halt-on-error -interaction=nonstopmode -synctex=1 a.tex
```
**參考資料:**
1、[LaTeX 技巧938:如何配置 latexmk](https://www.latexstudio.net/archives/51493.html)
2、[Using Latexmk - homepage](https://mg.readthedocs.io/latexmk.html)