vscode中LaTeX的编写
前言
在学习\(\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} |
`@ | ` |
@\ |
\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