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
posted @ 2020-02-16 19:17  qqktr  阅读(5537)  评论(0编辑  收藏  举报