【教程】Windows系统下VScode配置LaTeX环境

  1. 1. 前言
  2. 2. 一、下载TexLive
  3. 3. 二、安装TexLive
  4. 4. 三、VScode安装LaTeX支持插件LaTeX Workshop
  5. 5. 四、配置LaTeX设置
    1. 5.1. 配置文件解读
      1. 5.1.1. 1.自动保存:latex-workshop.latex.autoBuild.run
      2. 5.1.2. 2.上下文LaTeX菜单
      3. 5.1.3. 3.从宏包自动提取命令和环境
      4. 5.1.4. 4.是否弹出Error
      5. 5.1.5. 5.是否弹出Warning
      6. 5.1.6. 6.编译命令
      7. 5.1.7. 7.recipes编译链
      8. 5.1.8. 8.自动清理
      9. 5.1.9. 9.是否自动清理
      10. 5.1.10. 10.选择的默认编译链
      11. 5.1.11. 11.反向同步
  6. 6. 五、测试Tex文件编译
    1. 6.1. 1.打开文件夹
    2. 6.2. 2.写一个测试项目
    3. 6.3. 3.编译项目
    4. 6.4. 4.测试同步
  7. 7. 参考

前言

LaTeX作为一款强大的文字排版工具,在学术领域等的重要性不言而喻,那么如何在VScode环境中搭建LaTeX编辑器呢?本文将详细概述。

一、下载TexLive

由于MiKTex标准版安装程序只安装基本的东西,其它任何需要的东西可以动态安装;而TexLive则是完全安装,由于本人不希望在实际使用时被打断安装需要的包,因此选择TexLive进行安装。

你可以进入TexLive的官网下载,也可以直接此链接进入iso镜像下载页面,点击如下图所示位置进入最近的镜像站。

image-20251206201301660

这里我进入了北京外国语大学的镜像站。如果加载缓慢,也可选择第二行的 mirror list 进入镜像列表,自行选择镜像源。进入镜像后选择最新版本的iso文件,如下图所示。(如果下载缓慢也可以自行更换镜像源,国内一般清华大学的比较快,由实际网络情况决定,点这里直接进入清华大学镜像

image-20251206201651427

二、安装TexLive

下载好后,找到下载好的iso镜像,双击(使用资源管理器)打开,找到install-tl-windows.bat,右键选择以管理员身份允许。

image-20251207114315036

运行后会出现下图界面,不必管它,过一会自动消失。

image-20251207121841970

出现如下界面后,正式开始安装,第一行Installation root是安装路径,自行选择,最后一行TeXwork是TexLive自带的编辑工具,据说不好用,同时本文使用VScode作为编辑器,故取消勾选,不安装TeXworks。如果你需要更加个性化的安装,请点击左下角的Advanced

image-20251207121956434

如下所示为各个选项的功能,不懂的功能一定不要乱改,一般改一下安装路径就好了。点击右下角的安装会自动开始安装。

image-20251207123501928

我当前安装的版本要安装个4810组件,要安装很久。安装好后点击右下角的关闭即可。

image-20251207133506614

可以通过按下win+R后输入cmd,打开命令行,输入命令xelatex -v来检查是否安装正常:

image-20251207134332820

如果如上图输出了版本信息,则说明安装正常。

三、VScode安装LaTeX支持插件LaTeX Workshop

点击拓展图标,打开拓展;搜索框输入 latex workshop ,选择第一个LaTeX Workshop插件,点击 安装 ,等待安装完成。

image-20251207140849902

四、配置LaTeX设置

点击左下角小齿轮图标篇,再点击设置进入设置界面。

image-20251207141717627

点击设置页右上角的 打开设置(json) ,打开设置的json文档。

image-20251207141806149

正常情况下该文档应该为如下情况:

1
2
{
}

如果你之前修改过设置,或添加过远程等内容,花括号中间应该有一些配置内容。例如我之前有用过vscode远程开发,我这边的setting.json的内容为:

1
2
3
4
5
6
7
8
9
{
"python.defaultInterpreterPath": "c:\\Users\\*****\\AppData\\Local\\Programs\\Python\\Python313\\python.exe",
"editor.unicodeHighlight.nonBasicASCII": false,
"remote.SSH.remotePlatform": {
"4090-out": "linux",
"3090-out": "linux",
"4090-in": "linux"
}
}

如果你是第一种情况,那很简单了,你只需要直接复制下面给出的配置内容粘贴到文档的花括号中就行了,注意外侧的两个花括号仍然独占一行,保证易读性。

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
  "latex-workshop.latex.autoBuild.run": "onSave",
"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",
"%DOC%"
]
},
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
]
},
{
"name": "latexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"%DOC%"
]
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
]
},
{
"name": "biber",
"command": "biber",
"args": [
"%DOCFILE%"
]
}
],
"latex-workshop.latex.recipes": [
{
"name": "XeLaTeX",
"tools": [
"xelatex"
]
},
{
"name": "PDFLaTeX",
"tools": [
"pdflatex"
]
},
{
"name": "BibTeX",
"tools": [
"bibtex"
]
},
{
"name": "LaTeXmk",
"tools": [
"latexmk"
]
},
{
"name": "biber",
"tools": [
"biber"
]
},
{
"name": "xelatex -> bibtex -> xelatex*2",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
},
{
"name": "pdflatex -> bibtex -> pdflatex*2",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
},
{
"name": "xelatex -> biber -> xelatex*2",
"tools": [
"xelatex",
"biber",
"xelatex",
"xelatex"
]
}
],
"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"

如果你是第二种情况,你需要再原有的配置最后一行(不包含花括号)上加上逗号(英文的逗号),,然后换行后粘贴上述内容。这里我最终的文档是这样的。

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
{
"python.defaultInterpreterPath": "c:\\Users\\NBU911_2\\AppData\\Local\\Programs\\Python\\Python313\\python.exe",
"editor.unicodeHighlight.nonBasicASCII": false,
"remote.SSH.remotePlatform": {
"4090-out": "linux",
"3090-out": "linux",
"4090-in": "linux"
},
"latex-workshop.latex.autoBuild.run": "onSave",
"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",
"%DOC%"
]
},
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
]
},
{
"name": "latexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"%DOC%"
]
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
]
},
{
"name": "biber",
"command": "biber",
"args": [
"%DOCFILE%"
]
}
],
"latex-workshop.latex.recipes": [
{
"name": "XeLaTeX",
"tools": [
"xelatex"
]
},
{
"name": "PDFLaTeX",
"tools": [
"pdflatex"
]
},
{
"name": "BibTeX",
"tools": [
"bibtex"
]
},
{
"name": "LaTeXmk",
"tools": [
"latexmk"
]
},
{
"name": "biber",
"tools": [
"biber"
]
},
{
"name": "xelatex -> bibtex -> xelatex*2",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
},
{
"name": "pdflatex -> bibtex -> pdflatex*2",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
},
{
"name": "xelatex -> biber -> xelatex*2",
"tools": [
"xelatex",
"biber",
"xelatex",
"xelatex"
]
}
],
"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"
}

完成后Ctrl+S保存文档。

这里再配置文件中直接插入配置是更快的方法,同样也可以使用GUI操作,这里不再赘述。

配置文件解读

如果你感兴趣,或需要更加个性化的自定义配置,可以看本篇,如果你不需要,可以直接跳过。

1.自动保存:latex-workshop.latex.autoBuild.run

1
"latex-workshop.latex.autoBuild.run": "never"

设置什么时候自动进行代码的编译,值可以是以下三个:

  • onFileChange:在检测任何依赖项中的文件更改(甚至被其他应用程序修改)时构建项目,即当检测到代码被更改时就自动编译tex文件;

  • onSave : 当代码被保存时自动编译文件;

  • never: 从不自动编译,即需编写者手动编译文档

这边我选择never,因为本人有三步一保存的习惯,一篇几千字的文章能保存几百次,为了避免造成卡顿,选择了never。如果你希望你的代码时刻再旁边展示编译结果,可以选择其它两种

2.上下文LaTeX菜单

1
"latex-workshop.showContextMenu": true

启用上下文LaTeX菜单。默认为false,因为它可以通过新的 LaTeX 标记使用(新的 LaTeX 标记能够编译文档,将在下文提及)。只需将此变量设置为true即可恢复菜单。即此命令设置是否将编译文档的选项出现在鼠标右键的菜单中。

3.从宏包自动提取命令和环境

1
"latex-workshop.intellisense.package.enabled": true

设置为true,则该拓展能够从使用的宏包中自动提取命令和环境,从而补全正在编写的代码。

4.是否弹出Error

1
"latex-workshop.message.error.show"  : false,

文档编译时是否弹出Error信息,即使关闭也可以从终端看到,程序员的话是要学会无视警告和错误的。

5.是否弹出Warning

1
"latex-workshop.message.warning.show": false

同上

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
"latex-workshop.latex.tools": [
{
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
]
},
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
]
},
{
"name": "latexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"%DOC%"
]
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
]
},
{
"name": "biber",
"command": "biber",
"args": [
"%DOCFILE%"
]
}
]

定义下文recipes编译链中使用的编译命令。

  • name:命令的标签,可被下文recipes引用
  • command:该扩展的编译方式
  • args:命令的参数列表

前三个xelatexpdflatexlatexmk中,如果将参数列表中的%DOC%改为%DOCFILE%则可以使编译器支持中文路径,但不建议这么做,因为其它包仍然要访问文档的路径,可能会因为中文路径报错。

这里biber是一种更加现代的参考文献工具,bibtex是传统的工具。

7.recipes编译链

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
"latex-workshop.latex.recipes": [
{
"name": "XeLaTeX",
"tools": [
"xelatex"
]
},
{
"name": "PDFLaTeX",
"tools": [
"pdflatex"
]
},
{
"name": "BibTeX",
"tools": [
"bibtex"
]
},
{
"name": "LaTeXmk",
"tools": [
"latexmk"
]
},
{
"name": "biber",
"tools": [
"biber"
]
},
{
"name": "xelatex -> bibtex -> xelatex*2",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
},
{
"name": "pdflatex -> bibtex -> pdflatex*2",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
},
{
"name": "xelatex -> biber -> xelatex*2",
"tools": [
"xelatex",
"biber",
"xelatex",
"xelatex"
]
}
]

此串代码是对编译链进行定义,其中name是标签,也就是出现在工具栏中的链名称;toolname标签所对应的编译顺序,其内部编译命令来自上文latex-workshop.latex.recipes中内容。

PDFLaTeX 编译模式与 XeLaTeX 区别如下:

  1. PDFLaTeX 使用的是TeX的标准字体,所以生成PDF时,会将所有的非 TeX 标准字体进行替换,其生成的 PDF 文件默认嵌入所有字体;而使用 XeLaTeX 编译,如果说论文中有很多图片或者其他元素没有嵌入字体的话,生成的 PDF 文件也会有些字体没有嵌入。

  2. XeLaTeX 对应的 XeTeX 对字体的支持更好,允许用户使用操作系统字体来代替 TeX 的标准字体,而且对非拉丁字体的支持更好。

  3. PDFLaTeX 进行编译的速度比 XeLaTeX 速度快。

引用自 蛐蛐蛐先生的博客

编译链是为了更方便的添加其它内容,如biber,如果需要插入参考文献,则需要多次执行编译,而编译链很好的解决了这个问题。

8.自动清理

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
"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"
]

编译过程中会生成很多中间文件,如果无特殊需要,可以直接删除,该配置就是自动帮我们做了这件事。

9.是否自动清理

1
"latex-workshop.latex.autoClean.run": "onFailed"

这条命令是设置什么时候对上文设置的辅助文件进行清除。

  • onBuilt : 无论是否编译成功,都选择清除辅助文件;

  • onFailed : 当编译失败时,清除辅助文件;

  • never : 无论何时,都不清除辅助文件。

由于 tex 文档编译有时需要用到辅助文件,比如编译目录和编译参考文献时,如果使用onBuilt命令,则会导致编译不出完整结果甚至编译失败;

而有时候将 tex 文件修改后进行编译时,可能会导致 pdf 文件没有正常更新的情况,这个时候可能就是由于辅助文件没有进行及时更新的缘故,需要清除辅助文件了,而never命令做不到这一点。

故使用onFailed可以同时解决这两个问题

10.选择的默认编译链

1
"latex-workshop.latex.recipe.default": "lastUsed"

该命令的作用为设置 vscode 编译 tex 文档时的默认编译链。

  • first : 使用latex-workshop.latex.recipes中的第一条编译链;
  • lastUsed : 使用最近一次编译所用的编译链。

11.反向同步

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

用于反向同步(从编译出的 pdf 文件指定位置跳转到 tex 文件中相应代码所在位置)的内部查看器的快捷键绑定。

  • ctrl-click : 为默认选项,使用Ctrl/cmd+鼠标左键单击

  • double-click : 使用鼠标左键双击

这里和overleaf保持同步,方便切换。

五、测试Tex文件编译

重启VScode就算是配置完成了,为了测试配置是否完整,建议先创建一个测试项目进行测试,如果能正确编译则说明配置完毕。

1.打开文件夹

点击菜单栏的文件打开文件夹,创建一个测试文件夹(或工作集)。

image-20251207151406087

2.写一个测试项目

这里我选择创建一个LatexTest子文件夹,在其中创建测试项目,这里给出我的测试项目如下。

①main.tex

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
\documentclass[UTF8]{ctexart}   % 中文支持
\usepackage{fontspec} % 字体调用
\setCJKmainfont{SimSun} % Windows 宋体;Linux 可改成 Noto Serif CJK SC
\setCJKsansfont{SimHei} % Windows 黑体;Linux 可改成 Noto Sans CJK SC

\usepackage{amsmath} % 公式
\usepackage{graphicx} % 插图
\usepackage{xcolor} % 颜色
\usepackage[backend=biber,style=gb7714-2015]{biblatex} % 用 biber
\addbibresource{test.bib} % 参考文献数据库

\begin{document}
\title{LaTeX 安装完整性测试}
\author{Your Name}
\date{\today}
\maketitle

\section{中英文混排测试}
中文 English 中文,字体应正常显示无乱码。

\section{公式测试}
行内公式 $E=mc^2$,行间公式
\begin{equation}
\int_{-\infty}^{+\infty} e^{-x^2}\,dx = \sqrt{\pi}.
\end{equation}

\section{图片测试}
\begin{center}
\includegraphics[width=.3\linewidth]{example-image-a}
\end{center}
(上面应出现一张带字母 A 的示例图片)

\section{颜色测试}
{\color{red}红色文字} 和 {\color{blue}蓝色文字}。

\section{引用测试}
见文献 \cite{knuth1984texbook}。

\printbibliography
\end{document}

②test.bib

1
2
3
4
5
6
@book{knuth1984texbook,
author = {Donald E. Knuth},
title = {The {\TeX}book},
publisher = {Addison-Wesley},
year = {1984}
}

3.编译项目

有多种方式进行编译,选择其中一种即可。

方法一:到LaTeX插件处编译

image-20251207152445147

因为测试文件使用的是较新的bibLatex作为插入参考文献的工具,故使用biber的编译链,也可以选择其它编译链进行编译。

方法二:在tex文件处直接右键编译

image-20251207152656379

但这种方式会选择默认编译链,会导致未经过biber编译链编译,参考文献处为上标的参考文献号。

image-20251207152804183

正确编译好后就可以在文件页看到pdf文件了,正确编译的pdf文件如下:

image-20251207153053385

image-20251207153102445

请自行检查编译好后的pdf文档,按大标题进行检查。

左下方这里会在编译时显示步骤

image-20251207153349257

如图就是在进行编译链的第一步,编译成功后会变为对号。

4.测试同步

不论是代码还是pdf文档都是可以直接同步到对侧的,代码处可以右键,选择从光标同步。

image-20251207153628103

可以看到立刻就同步到pdf中的对应位置了。

image-20251207153709294

pdf中也可以用之前设置的同步方式同步到代码的对应位置。

参考

本篇内容为参考Ali-loner在知乎的教程,实际操作所写,与原文步骤基本相同,但具体内容不同,对其内容进行了修改以与时俱进。