在寫文檔/論文的時候,最常用的莫過於Markdown和TeX語言了,不過,由於Markdown編輯的多樣性受到嚴格限制,所以,安裝一個TeX編譯環境非常必要。本文將從安裝配置的角度描述整個過程,並作部分原理上的闡述,畢竟授之以魚不如授之以漁。
我究竟需要什么?
TeX是一種語言,但是由於其包含的命令比較復雜,因此將其組合打包成不同的宏包以供文檔編寫者使用,常見的有:
- Plain TeX:Knuth提供的最小的宏集合;
- LaTeX:一種更常用的宏集合。
為了能夠把寫好的TeX文件編譯產生PDF文檔,需要用到編譯工具TeX、PDFTeX以及XeTeX等:
- TeX編譯工具中的TeX命令: 最初的由Knuth大神開發的將Plain TeX文件編譯成.div;
- PDFTeX編譯工具中的PDFTeX命令:把Plain Tex文件直接編譯成 PDF文件;
- XeTeX編譯工具中的XeTeX命令:把Plain TeX文件直接編譯成 PDF文件,支持Unicode編碼和直接訪問操作系統字體;
- PDFTeX編譯工具中的PDFLaTeX命令:PDFTeX中的命令,把LaTeX文件直接編譯成 PDF文件;
- XeTeX編譯工具中的XeLaTeX命令:XeTeX中的命令,把LaTeX文件直接編譯成 PDF文件,支持Unicode編碼和直接訪問操作系統字體。
那么,什么工具提供這些編譯工具呢?常用的有:TeXLive、MikTex等。
TeXLive怎么安裝?
很多人喜歡下載完整的TeXLive,然后直接打開編輯器(如VSCode)編輯代碼並聲稱。但是,一個完整的iso文件太大了,也不利於以后出了錯誤進行調試。因此,這里用最小版從頭開始安裝TeXLive。基本步驟如下:
- 到清華的開源軟件鏡像站下載TexLive的安裝器https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet/install-tl.zip;
- 解壓以后進入解壓后的文件夾並執行這個命令來安裝
./install-tl --gui(如果提示需要安裝某些插件的話,請配合安裝,例如Ubuntu下sudo apt install wish)。這里,可能要明白幾個概念,首先,為了保證下載速度,選擇一個鏡像倉庫地址,這個可以在界面的首頁選擇;其次,在安裝的時候可以選擇便攜式安裝(也就是portable),我個人習慣盡量不把這個東西安裝在系統路徑,以防后面重裝系統;再次,根據需要選擇初始安裝的包,我在這里一般選擇最小化安裝(minimal)以方便后期我自己添加需要的包;最后,在選項里面選擇allow execution of restricted list of programs via \write18和create all format files,另外兩個安裝文檔樹的選項不用勾選,但是一定要記得勾選生成格式化文件那個選項); - 等待一段時間的下載和安裝以后,最小化的TeXLive系統就安裝好了,這時候記得配置環境變量,讓命令行可以順利的訪問基本命令。
TeXLive在VSCode下如何編譯TeX文件?
這里,可以使用相應的命令加上tex文件,例如:xelatex XXX.tex,其中的編譯選項就不在此列出了。VSCode需要安裝Latex Workshop這個擴展,然后對VSCode的Preferences: Open Settings (JSON)這個文件進行編輯,下面給出一個Linux下我常用的配置文件:
{
"latex-workshop.synctex.synctexjs.enabled": true,
"latex-workshop.showContextMenu":true,
"latex-workshop.intellisense.package.enabled": true,
"latex-workshop.message.log.show": false,
"latex-workshop.message.warning.show": false,
"latex-workshop.latex.autoBuild.run": "never",
"latex-workshop.synctex.afterBuild.enabled": true,
"editor.wordWrap": "on",
"workbench.startupEditor": "newUntitledFile",
// 對應Clean up auxiliary files命令需要清楚的臨時文件類型
"latex-workshop.latex.clean.fileTypes": [
"*.aux",
"*.bbl",
"*.blg",
"*.bcf",
"*.cut",
"*.dvi",
"*.idx",
"*.ind",
"*.lof",
"*.lot",
"*.out",
"*.toc",
"*.xml",
"*.pdf",
"*.acn",
"*.acr",
"*.alg",
"*.glg",
"*.glo",
"*.gls",
"*.ist",
"*.fls",
"*.log",
"*.synctex.gz",
"*.fdb_latexmk",
"*.gz"
],
// 這個viewer的配置好像不太需要,因為在對應的View Latex PDF命令里面可以選瀏覽方式
"latex-workshop.view.pdf.viewer": "tab",
// 重點:這決定了下面的recipes調用不同TeX命令具體的執行方式
"latex-workshop.latex.tools": [
{
"name": "pdflatex",
"command": "/path/to/pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"%DOCFILE%.tex"
]
},
{
"name": "xelatex",
"command": "/path/to/xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"%DOCFILE%.tex"
]
},
{
"name": "bibtex",
"command": "/path/to/bibtex",
"args": [
"%DOCFILE%.aux"
]
},
{
"name": "biber",
"command": "/path/to/biber",
"args": [
"%DOCFILE%.bcf"
]
}
],
// 這個會生成在Commands里面的recipe
"latex-workshop.latex.recipes": [
{
"name": "pdflatex",
"tools": [
"pdflatex"
]
},
{
"name": "xelatex",
"tools": [
"xelatex"
]
},
{
"name": "bibtex",
"tools": [
"bibtex"
]
},
{
"name": "biber",
"tools": [
"biber"
]
}
]
}
TeXLive怎么安裝其他軟件包?
在TeXLive中,包含一個非常有用的包管理器,叫做tlmgr(TeXLive Manager)。這個包管理器有一些基本的命令需要了解(在Linux或者Mac上,這個命令是tlgmr,在windows上是tlmgr.bat,這里就用tlmgr舉例):
tlmgr init-usertree:用來給你建立一個工作區域管理存放后續安裝的東西,這個要首先執行。tlmgr option repository https://mirrors.tuna.tsinghua.edu.cn/CTAN/systems/texlive/tlnet:用來更換倉庫源以加快下載速度。tlmgr install XXX:用來安裝XXX這個包。tlmgr info XXX:用來搜索並展示包含XXX的包。
這樣就可以愉快的使用安裝好的包了。
TeXLive后續問題匯總(持續更新)
問:最小化TeXLive無法執行XeLaTeX命令。
答:這里需要重新安裝XeTeX,tlmgr install --reinstall xetex。
問:找不到格式化文件,例如,I can't find the format file `xelatex.fmt'!。
答:解決步驟同上。
問:編譯過程中發現字體有問題。
答:這里可以用tlmgr info命令搜索需要下載的字體並從CTAN官網下載。一般這個時候也會有對應的路徑,比如texmf-dist/fonts/。把下載的字體解壓放在這些路徑下,然后分別運行mktexlsr和sudo fc-cache。如果是Windows下發現mktexmf: empty or non-existent rootfile!這種錯誤的,請重新為所有用戶安裝字體文件(右鍵點擊xxx.ttf或者xxx.otf,然后“為所有用戶安裝”),然后運行fc-cache。
問:在VSCode的編譯過程中出現extractbb --versionsh: extractbb: command not found。
答:原因可能和VSCode本身執行方式有關,有待排查。臨時解決方案為在命令行中運行xelatex xxx.tex看是否報錯,如果出現類似的編譯錯誤,請使用xelatex xxx.tex -shell-escape。
如果大家還有什么問題也可以在下面留言,我會盡力解決。
