Visual Studio Code配置LaTeX对于初学者一直是个具有些许门槛的难题,本文参考知乎Ali-loner的Visual Studio Code (vscode)配置LaTeX和Marvey的使用VSCode编写LaTeX,致力于个人更高效熟练的配置….

1. TeX Live 下载与安装

1.1 TeXLive和MiKTeX的区别

1.2 TeXLive的下载与安装

  • 首先给出笔者下载好的2020/2021/2022版TeXLive的ISO文件:百度网盘,提取码:1234。
  • 通过网址 :Acquiring TeX Live as an ISO image进入ISO下载页面,点击图示红框圈画位置进入随机的镜像网站。
  • 可以看到的是,笔者进入了清华大学镜像网站,点击红框圈画链接进行 TeX Live 下载。
  • 如果下载速度过慢,可以返回前一页面,进行重新点击,随机进入另一镜像网站进行下载尝试,直到下载速度在您的可接受范围内即可。或者在前一页面,点击 “mirror list” 进入镜像列表。 然后手动选择某一镜像网站进行下载:
  • 找到下载好的压缩包,右键,在打开方式中选择“Windows 资源管理器”打开。
  • 找到 “install-tl-windows” 文件,为了后面不必要的麻烦,右键以管理员身份运行。
  • 会先出现下图,无需理会,等会儿会消失。
  • 基本更改:出现下图后,需要进行路径的更改;由于 TeX Live 自带的 TeXworks 不怎么好用,并且此文主要将 vscode 作为 LaTeX 的编辑器,故而取消 安装 TeXworks 前端的选项,再点击安装
  • 个性化安装: 如果您需要个性化程度高的话,那么可以点击上图左下角的 Advancde ,根据您的需要进行相应的更改,但建议在不明白各个选项的作用时,不要对其进行修改,以免后期使用产生奇怪的问题。要注意的是,Adjust searchpath 这个选项一定要选中,将之添加到环境变量,否则后期手动添加比较麻烦;而对于我们大部分人来说,只需要更改下图框选出的部分即可,也就是上图所完成的功能,再点击安装即可。
  • 进行安装:接着就会出现下图,具体的安装指标已在下图标明,可根据其数字来判断安装所需时间。
  • 当上面标示的时间安装完之后,会出现一些配置文件的安装运行写入,进行等待即可,几分钟左右,当出现第二张图弹窗时,说明安装完毕,点击关闭即可。
  • 检查安装是否正常:按win + R 打开运行,输入’cmd’,打开命令行窗口;然后输入命令’xelatex -v’ ,如下图:

2. VsCode的下载与安装

  • 官网下载:VsCode的下载
  • 点进去之后就可以进行下载了。具体安装过程与常见的软件安装过程一致,这里就不作赘述。笔者只对几个要点进行提及:
  • 修改安装路径,根据个人想法可以选择是否在开始菜单文件夹创建 vscode 的快捷方式。
  • 一定要选上”添加到PATH”这个选项,能省很多麻烦。其余如图所示,自行选择。
  • 安装好之后,打开 vscode,应如下图页面所示:
  • vscode的中文环境需要下载插件来进行支持。点击拓展图标,打开拓展;输入”Chinese”,选择第一个Chinese (Simplified) Language Pack for Visual Studio Code插件;点击”install”进行安装,等待安装完成。如下图所示:

  • 点击页面右下角跳出窗口中的”Restart now”,进行 vscode 重启。

  • 完成中文环境配置,显示如下:

3. LaTeX Workshop安装

  • 点击拓展图标,打开拓展;
  • 输入”latex workshop”,选择第一个LaTeX Workshop插件;
  • 点击”install”进行安装,等待安装完成;
  • 若在安装完该插件之后在 vscode 页面右下角跳出如下弹窗,无需在意,只是提醒该插件已经更新到了8.11.1版本。若您想要了解新版本增加的功能,可以点击”Change log”进行查看;若不想了解,点击 “Disable this message” 即可。

4. LaTeX环境设置

  • 点击设置图标,点击设置,转到 UI 设置页面
  • 点击下图 1 处打开 json 文件,进入代码设置页面
  • UI 设置页面和JSON设置页面均为设置页面,其功能是一样的。不同的是,UI 设置页面交互能力较强,但一些设置需要去寻找,比较麻烦;而JSON设置页面虽然相对 UI 而言不那么直观,但却可以对自己想要的功能直接进行代码编写,且代码设置可以直接克隆别人的代码到自己的编辑器中,从而直接完成相应设置,比较便捷。
  • 可以直接按Ctrl + +,进入设置页面。

4.1 LaTeX环境的代码配置

  • LaTeX 配置代码如下(不包含外部pdf查看器设置):
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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
{
"latex-workshop.latex.autoBuild.run": "never",
"latex-workshop.showContextMenu": true,
"latex-workshop.intellisense.package.enabled": true,
"latex-workshop.message.error.show": false,
"latex-workshop.message.warning.show": false,
"latex-workshop.latex.tools": [
{
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "latexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"%DOCFILE%"
]
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
]
}
],
"latex-workshop.latex.recipes": [
{
"name": "XeLaTeX",
"tools": [
"xelatex"
]
},
{
"name": "PDFLaTeX",
"tools": [
"pdflatex"
]
},
{
"name": "BibTeX",
"tools": [
"bibtex"
]
},
{
"name": "LaTeXmk",
"tools": [
"latexmk"
]
},
{
"name": "xelatex -> bibtex -> xelatex*2",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
},
{
"name": "pdflatex -> bibtex -> pdflatex*2",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
},
],
"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"
],
"latex-workshop.latex.autoClean.run": "onFailed",
"latex-workshop.latex.recipe.default": "lastUsed",
"latex-workshop.view.pdf.internal.synctex.keybinding": "double-click"
}
  • 若您不想要配置外部查看器以及了解内部查看和外部查看之间切换操作,可以直接复制上述代码至 json 文件中,即可完成 LaTeX 的配置,从而可以对 LaTeX 代码进行编译。
  • 根据 json 文件编写规则,每个代码语句(除了代码块儿最后一句)都需要加上英文状态下的,,否则就会报错;而每个代码块儿的最后一句是不需要加上,的。从上文整个代码块儿可以看出此规则。
  • 如果您日后需要在上述代码之后再添加其他代码,请记得在最后一句:
1
"latex-workshop.view.pdf.internal.synctex.keybinding": "double-click"

后添加上,即变为

1
2
"latex-workshop.view.pdf.internal.synctex.keybinding": "double-click",
...

其中的...为您添加的其余代码。

4.2 tex文件编译

  • 为了测试 vscode 功能是否比较完整,笔者编写了一份简单的 tex 文件,以此测试其是否支持中英文,能否编译目录,能否插入图片,能否进行引用,能否编译参考文献(编译bixtex文件)等功能。
  • 测试所用的 tex 文件可以从 github 下载。下载步骤如图:
  • 若因网络原因无法连接到github导致无法下载,可以使用自己的tex文件进行测试,或者复制以下代码进行文档的简单编译测试,但其只能测试一部分功能:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
\documentclass[a4paper]{article}
\usepackage[margin=1in]{geometry} % 设置边距,符合Word设定
\usepackage{ctex}
\usepackage{lipsum}
\title{\heiti\zihao{2} This is a test for vscode}
\author{\songti Ali-loner}
\date{2020.08.02}
\begin{document}
\maketitle
\begin{abstract}
\lipsum[2]
\end{abstract}
\tableofcontents
\section{This is a section}
Hello world! 你好,世界
\end{document}
  • 打开测试文件所在文件夹:
  • 点击选中 tex 文件,进行文件内容查看
  • 开始编译文件。 由于进行测试的文件中涉及参考文献的引用(.bib的编译),故而选择xelatex -> bibtex -> xelatex*2编译链。
  • 为了更方便进行编译,可对其设置快捷键,设置快捷键步骤如下:
  • 笔者将快捷键设置为Ctrl+Alt+R。选中tex文件的代码页面(若未选中,则无法进行编译),然后按下该快捷键,在编辑器页面上端进行编译链选择,如下图:
  • 编译成功:当发现页面下方出现 √ 符号时,说明编译成功,相反,如果出现 × 符号,说明编译失败,就要找失败原因了。
    • 左侧工具栏:当编译成功后,选中 tex 文件中任意的代码,以此来选中 tex 文件,然后进行图示操作。其中侧边栏所展现的就是上文提及的新的 LaTeX 标记。
  • 快捷键:选中 tex 文件中任意的代码,然后按Ctrl+Alt+V,出现编译好的 pdf 页面。该快捷键为默认设置。若您想要更改,可以根据上文进行配置。注意到,现在编译的结果为内部查看器查看。
  • 正向同步测试,即从代码定位到 pdf 页面相应位置。有以下三种方法:
  • 使用侧边工具栏:
  • 使用右键菜单
  • 使用快捷键:选中需要跳转的代码所在行,按Ctrl+Alt+J,右侧就会跳转到相应行。这里的快捷键为默认设置,可自行通过上文方式设置为您想要的快捷键。
  • 反向同步测试,即从 pdf 页面定位到代码相应位置。
  • 在编译生成的 pdf 上,选中想要跳转行,鼠标左键双击或Ctrl+鼠标左键单击,跳转到对应代码。此处快捷键的选择为上文设置,若使用笔者的代码,则为鼠标左键双击。

5. SumatraPDF 安装设置

  • 您可自行选择是否需要设置此部分内容。有的时候,由于想要看到 pdf 文件的完整展现效果,使用内置查看器已无法满足需求,这时可以使用外部查看器进行查看。
  • 外部查看器的优势是能够看到 pdf 文件在查看器中的目录,可以实时进行跳转;且根据笔者使用来看,外部查看器展示出来的 pdf 默认会放大一些,使得字体变大,要更加让人舒服一些。
  • 笔者选择SumatraPDF 作为外部查看器,该软件的优点在于在具有 pdf 阅读功能的同时很轻量,安装包不到 10MB 大小,且支持双向同步功能。通过调整其与 vscode 的窗口位置,能够在拥有这些优势的同时,达到与内置 pdf 查看具有相同的效果。

5.1 SumatraPDF下载与安装

  • 其安装很简单,与通用软件安装过程一致,记得更改安装路径并记住,下文配置需要使用其路径。

5.2 使用SumatraPDF查看的代码配置

  • 代码展示:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
{
"latex-workshop.view.pdf.viewer": "external",
"latex-workshop.view.pdf.ref.viewer":"auto",
"latex-workshop.view.pdf.external.viewer.command": "F:/SumatraPDF/SumatraPDF.exe", // 注意修改路径
"latex-workshop.view.pdf.external.viewer.args": [
"%PDF%"
],
"latex-workshop.view.pdf.external.synctex.command": "F:/SumatraPDF/SumatraPDF.exe", // 注意修改路径
"latex-workshop.view.pdf.external.synctex.args": [
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
"-inverse-search",
"\"F:/Microsoft VS Code/Code.exe\" \"F:/Microsoft VS Code/resources/app/out/cli.js\" -r -g \"%f:%l\"", // 注意修改路径
"%PDF%"
]
}
  • 此代码仅为展示所用,让您进行查看,为下文解读之用。如需写入到 json 文件内,可直接完整复制文末笔者的个人配置到自己的编译器内。

5.3 代码解读

1
"latex-workshop.view.pdf.viewer": "external"

设置默认的pdf查看器,有三种变量参数:

  • tab : 使用 vscode 内置 pdf 查看器;
  • browser : 使用电脑默认浏览器进行 pdf 查看;
  • external : 使用外部 pdf 查看器查看。此处选择 external 参数,使用外部查看器。此参数为下文进行pdf内部查看和外部查看进行切换的关键参数。
1
"latex-workshop.view.pdf.ref.viewer":"auto"

设置PDF查看器用于在 \ref 命令上的[View on PDF]链接,此命令作用于 \ref 引用查看。有三个参数变量:

  • auto : 由编辑器根据情况自动设置;
  • tabOrBrowser : 使用vscode内置pdf查看器或使用电脑默认浏览器进行pdf查看;
  • external : 使用外部pdf查看器查看。
  • 此处设置为auto。
1
"latex-workshop.view.pdf.external.viewer.command": "F:/SumatraPDF/SumatraPDF.exe"// 注意修改路径
  • 使用外部查看器时要执行的命令,设置外部查看器启动文件SumatraPDF.exe文件所在位置,此处需要您根据自身情况进行路径更改,正常情况下只需更改磁盘盘符即可。
  • 请注意中间为 “ / “ 而不是” </kbd> " ,不然会报错。
1
2
3
"latex-workshop.view.pdf.external.viewer.args": [
"%PDF%"
]

此代码是设置使用外部查看器时,latex-workshop.view.pdf.external.view .command的参数。%PDF%是用于生成PDF文件的绝对路径的占位符。

1
"latex-workshop.view.pdf.external.synctex.command": "F:/SumatraPDF/SumatraPDF.exe" // 注意修改路径

此命令是将生成的辅助文件 .synctex.gz 转发到外部查看器时要执行的命令,设置其位置参数,您注意更改路径,此路径为 SumatraPDF.exe 文件路径。与上文相同。

1
2
3
4
5
6
7
8
9
"latex-workshop.view.pdf.external.synctex.args": [
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
"-inverse-search",
"\"F:/Microsoft VS Code/Code.exe\" \"F:/Microsoft VS Code/resources/app/out/cli.js\" -r -g \"%f:%l\"", // 注意修改路径
"%PDF%"
]
  • 当.synctex.gz 文件同步到外部查看器时latex-workshop.view.pdf.external.synctex的参数设置。%LINE%是行号,%PDF%是生成PDF文件的绝对路径的占位符,%TEX%是当触发syncTeX被触发时,扩展名为 .tex 的 LaTeX 文件路径。
  • 上面代码串中记得进行 Microsoft VS Code 路径修改,修改如下图:

5.4 SumatraPDF 的使用

将完整代码复制到自己的 json 文件内后,即可使用 SumatraPDF作为自己的 pdf 外部查看器了。以下为具体操作:

  • 点击编辑页面任意位置来选中 tex 文件;
  • Ctrl+Alt+V,打开编译出的 pdf 文件;
  • 出现如下图页面。可以看到的是,原本内嵌输出的 pdf 变为了在 SumatraPDF 上查看,且侧面带有书签:
  • 为了出现和内嵌输出具有相同的效果,可以将 vscode 和 SumatraPDF 进行分屏,且根据需要关闭标签,如下图:
  • 且同样支持双向同步(正向同步和反向同步),其操作步骤与内嵌输出 pdf 时操作步骤相同,此处就不再赘述。查看效果图:

5.5 pdf 内部查看与外部查看的切换

  • 以下展示由外部查看转为内部查看的操作,由内转外操作相同。共有两种操作方式:UI界面设置或Json界面设置。具体见下图,您可根据个人适应选择相应的方法。

6. 个人完整环境配置参考

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
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
{
//------------------------------LaTeX 配置----------------------------------
// 设置是否自动编译
"latex-workshop.latex.autoBuild.run":"never",
//右键菜单
"latex-workshop.showContextMenu":true,
//从使用的包中自动补全命令和环境
"latex-workshop.intellisense.package.enabled": true,
//编译出错时设置是否弹出气泡设置
"latex-workshop.message.error.show": false,
"latex-workshop.message.warning.show": false,
// 编译工具和命令
"latex-workshop.latex.tools": [
{
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "latexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"%DOCFILE%"
]
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
]
}
],
// 用于配置编译链
"latex-workshop.latex.recipes": [
{
"name": "XeLaTeX",
"tools": [
"xelatex"
]
},
{
"name": "PDFLaTeX",
"tools": [
"pdflatex"
]
},
{
"name": "BibTeX",
"tools": [
"bibtex"
]
},
{
"name": "LaTeXmk",
"tools": [
"latexmk"
]
},
{
"name": "xelatex -> bibtex -> xelatex*2",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
},
{
"name": "pdflatex -> bibtex -> pdflatex*2",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
}
],
//文件清理。此属性必须是字符串数组
"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"
],
//设置为onFaild 在构建失败后清除辅助文件
"latex-workshop.latex.autoClean.run": "onFailed",
// 使用上次的recipe编译组合
"latex-workshop.latex.recipe.default": "lastUsed",
// 用于反向同步的内部查看器的键绑定。ctrl/cmd +点击(默认)或双击
"latex-workshop.view.pdf.internal.synctex.keybinding": "double-click",

//使用 SumatraPDF 预览编译好的PDF文件
// 设置VScode内部查看生成的pdf文件
"latex-workshop.view.pdf.viewer": "external",
// PDF查看器用于在\ref上的[View on PDF]链接
"latex-workshop.view.pdf.ref.viewer":"auto",
// 使用外部查看器时要执行的命令。此功能不受官方支持。
"latex-workshop.view.pdf.external.viewer.command": "F:/SumatraPDF/SumatraPDF.exe", // 注意修改路径
// 使用外部查看器时,latex-workshop.view.pdf.external.view .command的参数。此功能不受官方支持。%PDF%是用于生成PDF文件的绝对路径的占位符。
"latex-workshop.view.pdf.external.viewer.args": [
"%PDF%"
],
// 将synctex转发到外部查看器时要执行的命令。此功能不受官方支持。
"latex-workshop.view.pdf.external.synctex.command": "F:/SumatraPDF/SumatraPDF.exe", // 注意修改路径
// latex-workshop.view.pdf.external.synctex的参数。当同步到外部查看器时。%LINE%是行号,%PDF%是生成PDF文件的绝对路径的占位符,%TEX%是触发syncTeX的扩展名为.tex的LaTeX文件路径。
"latex-workshop.view.pdf.external.synctex.args": [
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
"-inverse-search",
"\"F:/Microsoft VS Code/Code.exe\" \"F:/Microsoft VS Code/resources/app/out/cli.js\" -r -g \"%f:%l\"", // 注意修改路径
"%PDF%"
]
}