前言
在學習\(\mathrm{\LaTeX}\)的時候嘗試過很多編輯器,但都被其復古的外觀或者復雜的配置勸退。並且因為本身就在使用VScode寫其他的一些語言,正好借此機會也學習一下怎么用VScode寫\(\mathrm{\LaTeX}\),把工作環境統一起來。這里把一些踩過的坑和折騰過的配置整理起來。
前置工具
配置環境之前,需要保證如下工具被安裝:
- \(\mathrm{\TeX}\ \text{Live}\)套件。官網
- VScode最新版,並安裝 LaTeX Workshop 插件。
為了避免一些奇怪的包依賴問題,建議將\(\mathrm{\TeX}\ \text{Live}\)中所有的包都安裝下來,體現在操作上就是一直點下一步就好了。當然如果十分熟悉\(\mathrm{\LaTeX}\)的話可以按照自己的需求選擇自己需要的包。整個安裝過程大約需要30分鍾。
安裝完成后切記要檢查是否已經將\(\mathrm{\TeX}\ \text{Live}\)文件的目錄加到環境變量的路徑中,當然如果你一直點下一步的話這一項是默認勾選的。在\(\mathrm{\TeX}\ \text{Live}\)安裝完成之后打開控制台輸入tlmgr --version。如果有正常輸出說明已經在路徑中了,否則需要手動添加。
編寫
啟動 VScode,打開任意一個文件夾,新建一個*.tex文件並打開或新建一個文件並在VScode右下角選擇LaTeX語言並保存,以啟用針對\(\mathrm{\LaTeX}\)的語言高亮。我們在這個文件中隨意寫一些內容:
\documentclass[UTF8]{article}
\usepackage{ctex}
\begin{document}
Hello World!
你好世界!
\end{document}
保存后在左側活動欄中點擊 LaTeX 選項,再點擊 Build LaTeX project中的latexmk 🔃即可。稍等片刻便會生成pdf文件和一大堆臨時文件。當然還插件還自帶了很多其他的選項,可以按自己需求使用、添加或修改。
注意,latexmk默認是用pdflatex編譯。若要使用中文請務必設置編碼為UTF8,否則無法成功編譯。如果想換用xelatex,需在參數中添加-xelatex。
配置
對xelatex的支持
因為我們可能會用到xelatex工具,因此需要給latex-workshop.latex.tools這個選項中添加一個帶有-xelatex參數的latexmk編譯選項:
{
"name": "xelatexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"-xelatex",
"%DOCFILE%"
],
"env": {}
}
注意xelatex是強制在UTF8編碼下執行編譯的。由於win默認編碼不是UTF8,因此在出現有特殊字符(比如漢字)的路徑下會報錯。所以我們需要參數中的%DOC改為%DOCFILE,前者是有完整路徑的文件名,后者是文件名,以避免因為路徑出現漢字而報錯。但即使這樣也要注意避免在文件名中出現特殊字符。
添加后再把這個工具應用到latex-workshop.latex.recipe中,使得我們可以在 VScode 中使用:
{
"name": "latexmk (xelatex)",
"tools": [
"xelatexmk"
]
}
latexmk會自動檢查文件夾中*.bib文件,從而決定編譯方式。因此沒有必要再單獨留一個xelatex->bibtex->xelatex*2。可以刪除一些我們不需要的默認配置。
默認應用上次使用的方法來編譯
當我們不明確選擇某種方法來編譯時(即直接單擊Build LaTeX project選項),默認是使用排在第一個的方法的。這里改為上次使用過的方法。
"latex-workshop.latex.recipe.default": "lastUsed"
自動換行
與編寫其他大部分編程語言不同,在編寫\(\mathrm{\LaTeX}\)文件時大部分時間都是在編寫其中的內容。這讓自動換行功能顯得十分有必要,但用 VScode 編寫其他語言時又不需要這個功能。因此我們可以單獨為LaTeX語言設置自動換行:
"[latex]": {
"editor.wordWrap": "on"
}
補全提示時顯示 Unimath 符號
"latex-workshop.intellisense.unimathsymbols.enabled": true
默認在側邊 tab 中查看 pdf
"latex-workshop.view.pdf.viewer": "tab"
從已引用的包中補全
"latex-workshop.intellisense.package.enabled": true
更便捷地使用
latex-workshop默認提供了很多自帶的補全操作,用以快速編輯。雖說插件自帶的補全沒有 LaTeX Workshop 全,但加上VS code本身良好的體驗,也能很便捷地編寫。
環境補全
有些環境可以通過BXY補全,其中XY是想要補全的環境的前兩個字母。用BSXY來補全帶*的環境。
| 前綴 | 環境名 |
|---|---|
BEQ |
equation |
BSEQ |
equation* |
BAL |
align |
BSAL |
align* |
BIT |
itemize |
BEN |
enumerate |
BSPL |
split |
BCAS |
cases |
BFR |
frame |
BFI |
figure |
分段命令
關於段落的命令可以無需\直接打全稱來調用智能補全,或是形如SXY的縮寫來補全命令。
| 前綴 | 分段級別 |
|---|---|
SPA |
part |
CH |
chapter |
SSE |
section |
SSS |
subsection |
SS2 |
subsubsection |
SPG |
paragraph |
SSP |
subparagraph |
希臘字母補全
可以很方便地用@+字母來補全希臘字母的命令。
| 前綴 | 字母 |
|---|---|
@a |
\alpha |
@b |
\beta |
@c |
\chi |
@d |
\delta |
@e |
\epsilon |
@f |
\phi |
@g |
\gamma |
@h |
\eta |
@i |
\iota |
@k |
\kappa |
@l |
\lambda |
@m |
\mu |
@n |
\nu |
@p |
\pi |
@q |
\theta |
@r |
\rho |
@s |
\sigma |
@t |
\tau |
@u |
\upsilon |
@s |
\sigma |
@o |
\omega |
@& |
\wedge |
@x |
\xi |
@y |
\psi |
@z |
\zeta |
@D |
\Delta |
@F |
\Phi |
@G |
\Gamma |
@Q |
\Theta |
@L |
\Lambda |
@X |
\Xi |
@Y |
\Psi |
@S |
\Sigma |
@U |
\Upsilon |
@W |
\Omega |
@ve |
\varepsilon |
@vf |
\varphi |
@vs |
\varsigma |
@vq |
\vartheta |
關於數學的補全
部分數學功能有以@為開頭的縮寫。
| 前綴 | 命令 |
|---|---|
@( |
\left( $1 \right) |
@{ |
\left\{ $1 \right\} |
@[ |
\left[ $1 \right] |
__ |
_{$1} |
** |
^{$1} |
... |
\dots |
@. |
\cdot |
@8 |
\infty |
@6 |
\partial |
@/ |
\frac{$1}{$2} |
@% |
\frac{$1}{$2} |
@^ |
\Hat{$1} |
@_ |
\bar{$1} |
@@ |
\circ |
@0 |
^\circ |
@; |
\dot{$1} |
@: |
\ddot{$1} |
@= |
\equiv |
@* |
\times |
@< |
\leq |
@> |
\geq |
@2 |
\sqrt{$1} |
@I |
\int_{$1}^{$2} |
@| |
\Big | |
@\ |
\setminus |
@+ |
\bigcup |
@- |
\bigcap |
@, |
\nonumber |
字體命令補全
| 前綴 | 快捷鍵 | 命令 |
|---|---|---|
fontsize |
彈出字體相關命令的選項 | |
FNO |
ctrl+l, ctrl+n |
\textnormal{${1}} |
FRM |
ctrl+l, ctrl+r |
\textrm{${1}} |
FEM |
ctrl+l, ctrl+e |
\emph{${1}} |
FSF |
\textsf{${1}} |
|
FTT |
ctrl+l, ctrl+t |
\texttt{${1}} |
FIT |
ctrl+l, ctrl+i |
\textit{${1}} |
FSL |
ctrl+l, ctrl+s |
\textsl{${1}} |
FSC |
ctrl+l, ctrl+c |
\textsc{${1}} |
FUL |
ctrl+l, ctrl+u |
\underline{${1}} |
FUC |
\uppercase{${1}} |
|
FLC |
\lowercase{${1}} |
|
FBF |
ctrl+l, ctrl+b |
\textbf{${1}} |
FSS |
ctrl+l, ctrl+6 |
\textsuperscript{${1}} |
FBS |
ctrl+l, ctrl+minus |
\textsubscript{${1}} |
數學環境中字體的補全
| 前綴 | 快捷鍵 | 命令 |
|---|---|---|
MRM |
ctrl+m, ctrl+r |
\mathrm{${1}} |
MBF |
ctrl+m, ctrl+s |
\mathbf{${1}} |
MBB |
ctrl+m, ctrl+b |
\mathbb{${1}} |
MCA |
ctrl+m, ctrl+c |
\mathcal{${1}} |
MIT |
ctrl+m, ctrl+i |
\mathit{${1}} |
MTT |
ctrl+m, ctrl+t |
\mathtt{${1}} |
列表環境中添加項
| 快捷鍵 | 操作 |
|---|---|
ctrl+l, ctrl+Enter |
換行 + \item |
將文字添加進命令
若要把一段文字加在一個命令中,可以選中這段文字然后按ctrl+l, ctrl+w,便會彈出所有命令的快捷菜單。
片段面板
通過打開命令面板(ctrl+shift+p)並輸入LaTeX Workshop: Show Snippet Panel或在左側活動面板的LaTeX面板中點擊類似的選項來打開特殊符號的面板從而能夠很方便地找到自己想輸入的符號。
附錄
配置匯總:
"[latex]": {
"editor.wordWrap": "on"
},
"latex-workshop.latex.tools": [
{
"name": "latexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"%DOC%"
],
"env": {}
},
{
"name": "xelatexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"-xelatex",
"%DOCFILE%"
],
"env": {}
},
{
"name": "latexmk_rconly",
"command": "latexmk",
"args": [
"%DOC%"
],
"env": {}
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
],
"env": {}
},
{
"name": "rnw2pdf",
"command": "Rscript",
"args": [
"-e",
"knitr::knit2pdf('%DOCFILE%')"
],
"env": {}
}
],
"latex-workshop.latex.recipes": [
{
"name": "latexmk 🔃",
"tools": [
"latexmk"
]
},
{
"name": "latexmk (latexmkrc)",
"tools": [
"latexmk_rconly"
]
},
{
"name": "latexmk (xelatex)",
"tools": [
"xelatexmk"
]
},
{
"name": "Compile Rnw files",
"tools": [
"rnw2pdf"
]
}
],
"latex-workshop.latex.recipe.default": "lastUsed",
"latex-workshop.intellisense.unimathsymbols.enabled": true,
"latex-workshop.view.pdf.viewer": "tab",
"latex-workshop.intellisense.package.enabled": true
