文章

LaTeX+VSCode环境配置

VSCode作为一个小巧而又功能强大的编辑器,已经成为我进行仿真程序开发调试的唯一工具,是否可以直接拿VSCode来写LaTeX?当然可以,从此一个程序内仿真、画图、码字一气呵成。


1. 前言

由于VSCode太牛逼,所有的C和Python仿真均已经迁移至该编辑器下完成,偶然发现其还可编译LaTeX,狂喜,遂研究之,步骤列于下。

下面以 MikTeX 20.6 + VSCode 1.48.2 为例进行安装和部署讲解。

2. LaTeX配置

2.1. 安装MikTeX

参考此处。此处摘录如下:

官网的下载页面 包括三种下载(安装)方式,如图分别为安装程序(Installer)、绿色版(Portable Edition)以及命令行(Command-line installer)。对于Windows开发环境,不考虑命令行方式,因此可以任意选择安装程序或者绿色版。

image-20200720222610238

需要注意的是,绿色版并没有单独的压缩包,而是直接对应安装版的安装程序,只不过将安装程序重命名为 MiKTeX-portable.exe,然后双击安装即可。绿色版与安装版的区别在于,绿色版不会向系统盘写入配置信息,也不会注册环境变量,意味着之后如果需要安装编辑器,无法自动获取系统中已经安装的LaTeX版本,而需要手动配置。懒人推荐安装版,省去配置环境变量等步骤(虽然后面是以绿色版介绍的)。

双击下载的 exe 文件进行安装,路径任意。

2.2. 配置环境变量(绿色版)

将 miktex 附带的 xelatex.exepdflatex.exe 等工具所在的路径加入系统 Path 环境变量。假设安装的MiKTeX为绿色版,安装根目录为X:\ProgramFiles\MiKTeX\,则上述路径均位于

1
X:\ProgramFiles\MiKTeX\texmfs\install\miktex\bin\x64

相应的,安装版的路径位于

1
X:\ProgramFiles\MiKTeX\miktex\bin\x64

注意,如果在 VSCode 打开的情况下改变了环境变量,需要重启 VSCode 使其能够获取最新的环境变量。

3. 配置VSCode的LaTeX环境

3.1. 安装LaTeX Workshop

LaTeX Workshop 几乎可以认为是 VSCode 标配的 LaTeX 编译扩展,挂上翻墙通过扩展商店搜索 latex 弹出的第一个就是。

image-20200828095040527

安装完成后,ctrl+, 打开设置面板(或通过左下角的小齿轮点击进入),搜索 json 然后点击 「在settings.json 中编辑」,打开 settings.json。

3.2. 配置json

settings.json 中新增如下代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
{
	"latex-workshop.latex.recipes": [
      {
        "name": "pdflatex -> bibtex -> pdflatex*2",
        "tools": [
          "pdflatex",
          "bibtex",
          "pdflatex",
          "pdflatex"
        ]
      }
    ],
    "latex-workshop.latex.tools": [
      {
        "name": "xelatex",
        "command": "xelatex",
        "args": [
          "-synctex=1",
          "-interaction=nonstopmode",
          "-file-line-error",
          "%DOC%"
        ]
      },
      {
        "name": "latexmk",
        "command": "latexmk",
        "args": [
          "-synctex=1",
          "-interaction=nonstopmode",
          "-file-line-error",
          "%DOC%"
        ]
      },
      {
        "name": "pdflatex",
        "command": "pdflatex",
        "args": [
          "-synctex=1",
          "-interaction=nonstopmode",
          "-file-line-error",
          "%DOC%"
        ]
      },
      {
        "name": "bibtex",
        "command": "bibtex",
        "args": [
          "%DOCFILE%"
        ]
      }
    ],
    "latex-workshop.view.pdf.viewer": "tab",
}

最终效果如下(忽略前面的若干主体配置项):

image-20200828095421375

注意latex-workshop.latex.tools 字段定义了编译 LaTeX 的序列操作,默认为 xelatex -> bibtex -> xelatex*2,这里将其修改为 pdflatex -> bibtex -> pdflatex*2,对应的顺序为调用1次 pdflatex,1次 bibtex,2次 pdflatex与texstudio保持一致,确保生成的 pdf 文件字体和格式一致

进阶配置还包括:设置禁止保存时自动build,以及设定自动清理中间文件的类型。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
{
    "latex-workshop.latex.autoBuild.run": "never", //禁止保存时自动build  
    "latex-workshop.latex.clean.fileTypes": [  //设定清理文件的类型  
      "*.aux",  
      "*.bbl",  
      "*.blg",  
      "*.idx",  
      "*.ind",  
      "*.lof",  
      "*.lot",  
      "*.out",  
      "*.toc",  
      "*.acn",  
      "*.acr",  
      "*.alg",  
      "*.glg",  
      "*.glo",  
      "*.gls",  
      "*.ist",  
      "*.fls",  
      "*.log",  
      "*.fdb_latexmk",  
      "*.nav",  
      "*.snm",  
      "*.synctex.gz"  
    ],
}

设置仅针对 LaTeX 的自动换行

1
2
3
4
5
6
7
8
{
    "latex-workshop.view.pdf.viewer": "tab",
    "[latex]": {
      "editor.wordWrap": "on", // <== auto wrap
      "editor.formatOnPaste": false,
      "editor.suggestSelection": "recentlyUsedByPrefix"
    },
}

3.3. 编译测试

快捷键 ctrl+alt+B 编译 .tex文件,快捷键 ctrl+alt+v 或者右上角的「查看pdf」图标查看 .pdf 文件。

image-20200828101128126

3.4. 快捷键

快捷键的更改根据个人习惯而定。

打开键盘快捷方式面板(左下侧齿轮,或快捷键ctrl+k,ctrl+s):

  • 搜索”切换侧栏可见性”,设置快捷键为ctrl+k ctrl+b

  • 搜索 latex build,将默认的ctrl+alt+b替换为ctrl+b(与Sublime Text 3统一)。

  • 搜索latex recipe,设置快捷键为ctlr+r,方便点菜(选择编译方式)!(ST3中是显示文档大纲)。

  • 其他常用的快捷键:

    • ctrl+k ctrl+a: 切换活动栏可见性(左侧图标开关)
    • ctrl+alt+x:显示LaTeX面板(左侧编译命令面板和文档大纲)。
    • ctrl+alt+c:清除辅助文件
    • ctrl+alt+v:查看编译的pdf文件(预览)
    • ctrl+alt+j:正向搜索。当设置"latex-workshop.view.pdf.viewer": "tab";时,在LaTeX源文件中按下快捷键,定位到PDF文档相应位置。(反向搜索见后面)

根据 latex-workshop.latex.recipes 中的name段设定,可在 .tex 文件首行指定编译方式。如 %!TEX program = xelatex 表示用 xelatex 编译文件,而 %!TEX program = PDFlatex 表示用 latexpdf 编译文件。多个文件情况,还可以用 % !TEX root 指定主文件,% !TEX bib 指定 bib 的编译方式。

示例

1
2
3
4
5
6
%! TeX program = pdflatex
\documentclass{article}

\begin{document}
    press ctrl+b to complie,press ctrl+alt+v to view pdf
\end{document}

3.5. 安装LTeX

用过 LaTeX 的都知道,对比 Office 家族,LaTeX 的语言纠错功能非常不方便。因为本身没这功能,需要借助外部工具才能实现。这个缺点对于我等「外语渣」是非常要命的。当然,解决方法也不是没有。典型的,如果你用的是 TeXstudio 这个编辑器,可以通过外挂 LanguageTool (简称: LT) 这个检查工具,实现拼写和语法检查。具体怎么配置,网上有很多教程。

VS Code 的插件市场其实是有提供一些插件, 让 Code 能够调用 LT 进行拼写检查。比如 「LanguageTool for Visual Studio Code」和 「LanguageTool Linter」。 但是邪门的是——他们竟然只支持纯文本 或者 Markdown 文件的拼写检查,不支持 .tex 文件! 不过幸运就降临在今天,在浏览扩展时,无意发现了「LTeX」 这个插件,下载使用后直呼内行,直接在 VS Code 插件市场搜索并安装,然后重启 VSCode 后打开任意 .tex 文档即可开始进行拼写、语法检查(不包括中文)。

有些品牌,网络词汇等可能会被识别为拼写错误,可以把他们加入词典避免误判:

1
2
"ltex.de.dictionary": [Niubility, Zhihu], 
//注意根据要对应语言,ltex.<LANGUAGE>.dictionary

有些环境内的语言可能不需要检查,比如代码块里的程序代码,可以参照如下设置过滤:

1
"ltex.environments.ignore": ["lstlisting", "verbatim], 

有些自定义命令也可以设置过滤避免检查

1
"ltex.commands.ignore": ["\\documentclass[]{}", "\\renewcommand*{}[]{}"]

其他诸如「自定义规则」,「错误提醒风格」等的可以自己参照说明设置。

语法检查的效果如下

image-4

image-5

4. 参考文献

[1] 当年老王. 论文写作的又一利器:VSCode + Latex Workshop + MikTex + Git.

[2] strange_jiong. Latex编译出现字体获取不到的情况.

[3] 开心鲨鱼. 配置VScode编辑LaTeX及正反向搜索等设置.

[4] LaTeX工作室. LaTeX技巧932:如何配置Visual Studio Code作为LaTeX编辑器新版更新.

本文由作者按照 CC BY 4.0 进行授权