vscode+LaTeX论文排版

vscode+LaTeX 论文排版

1、什么是 LaTeX

LaTeX 是一种“非所见即所得”的排版系统,即用户需要输入特定的代码,保存在 后缀为.tex 的文件中,通过编译得到所需的 pdf 文件如何理解“非所见即所得”呢?在 这里举个“所见即所得”的例子:Word。Word 的界面就是一张 A4 纸,输入的时候是什么样子,最后呈现出来就是什么样子。这给了我们极高的自由度,也非常容易上手, 但是有如下问题:

  1. 对于对细节不敏感的用户,Word 的排版常常会在细节存在问题,比如两段话之间行间距不同、字体不同、标题样式不同等;
  2. 对于撰写论文的用户,Word 的标题、章节、图表、参考文献等无法自动标号,也很难在正文中引用;
  3. 对于有公式输入需求的用户,Word 自带的公式不稳定,而公式插件效果常常不好。

相比之下,使用 LaTeX 进行排版,就像是在铺好的轨道上驾驶火车一样。使用 LaTeX 没有办法像 Word 一样非常自由,但是可以保证规范性,这使得 LaTeX 非常适合用于论文的排版。

2、安装 LaTeX

LaTeX 国内镜像源:

下载后得到的 texlive.iso 大约 4.3G 大小,使用解压软件将其解压在磁盘上,打开 解压后的文件,将文件中的 install-tl-windows.bat 使用管理员身份运行。

LaTeX 安装界面

在这个界面可以修改安装路径;因为后续配置 vs code 编写环境,所以可以取消勾 选安装 TeXworks 前端的选项。

然后点击 Advanced,弹出如下界面:

LaTeX 安装 Advanced 界面

查看标红框的选项是否与设置的有误,然后点击 Customize 进入自定义安装界面, 可以取消勾选用不到的语言包已达到减少安装大小。自定义界面如下:

LaTeX 安装 Customize 界面

Languages 只需要勾选这三个就差不多了,然后点击确定安装,进入漫长的安装等 待环节。安装完成之后建议重启一下电脑,因为会需要注册环境变量。

3、Sumatra PDF 安装

Sumatra PDF,又叫 Sumatra,是一款专为 Microsoft Windows 开发的开放源代 码 PDF 阅读器。该程序也可以打开开放 XML 纸张规范、DjVu、EPUB、XPS、CHM、 CB7、CBR、CBT、CBZ、MOBI 和 PRC 文件。这里安装的 Sumatra PDF 是作为 vs code 编译后 LaTeX 之后形成的 pdf 文件的外部预览器,以获取更好的预览体验。

Sumatra PDF 官网下载地址

https://www.sumatrapdfreader.org/download-free-pdf-viewer

4、vscode 安装

Visual Studio Code(简称 VS Code)是一款由微软开发且跨平台的免费源代码编 辑器。该软件支持语法高亮、代码自动补全(又称 IntelliSense(英语:IntelliSense))、 代码重构功能,并且内置了命令行工具和 Git 版本控制系统。用户可以更改主题和键盘快捷方式实现个性化设置,也可以通过内置的扩展程序商店安装扩展以拓展软件功能。

Visual Studio Code 被认为是最受开发者欢迎的开发环境之一。

vscode官网地址

https://code.visualstudio.com/download

4.1、1.插件安装

vs code 的强大离不开优质的插件生态环境,其插件商店具有各种各样的插件,帮 助 vs code 可以编写几乎任何语言。

要在 vs code 中编写 LaTeX 首先需要安装插件:LaTeX Workshop 以获取 vs code 对 .tex 文件的支持。在插件商店下载安装插件:

LaTeX Workshop 插件

在 vs code 中新建一个 .tex 文件,输入以下内容,可以看到代码已经被高亮显示了。

LaTeX 代码高亮

4.2、2.插件配置

使用 F1 或 ctrl + shift + p 的快捷键,在弹出的输入框中输入 settings,打开用户 设置的 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
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
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
 "ltex.enabled": true,  // 启用插件
"ltex.language": "en-US",// 设置语言
// 设置是否自动编译 never
"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.recipes": [
{
"name": "xelatex",
"tools": [
"xelatex"
]
},
{
"name": "xelatex*2",
"tools": [
"xelatex",
"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"
]
},
{
"name": "pdflatex -> bibtex",
"tools": [
"pdflatex",
"bibtex"
]
},
{
"name": "xelatex -> biber -> xelatex*2",
"tools": [
"xelatex",
"biber",
"xelatex",
"xelatex"
]
}
],
// 编译工具和命令
"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%"
]
},
{
"name": "biber",
"command": "biber",
"args": [
"%DOCFILE%"
]
}
],
//文件清理。此属性必须是字符串数组
"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",
// 使用外部查看器时要执行的命令。此功能不受官方支持。
"latex-workshop.view.pdf.ref.viewer": "external",
// 使用外部查看器时要执行的命令。此功能不受官方支持。
"latex-workshop.view.pdf.external.viewer.command": "H:\\SumatraPDF\\SumatraPDF.exe",
// 使用外部查看器时,latex−workshop.view.pdf.external.view.command的参数。
//%PDF%是用于生成PDF文件的绝对路径的占位符。
"latex-workshop.view.pdf.external.viewer.args": [
"%PDF%"
],
// 将synctex转发到外部查看器时要执行的命令。
// 主要要修改为自己的 SumatraPDF.exe 所在路径
"latex-workshop.view.pdf.external.synctex.command": "H:\\SumatraPDF\\SumatraPDF.exe",
// %LINE%是行号,%PDF%是生成PDF文件的绝对路径的占位符,
// %TEX%是触发syncTeX的扩展名为.tex的LaTeX文件路径。
"latex-workshop.view.pdf.external.synctex.args": [
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
"-inverse-search",
"\"D:\\vscode\\Microsoft VS Code\\Code.exe\" \"D:\\vscode\\Microsoft VS Code\\resources\\app\\out\\cli.js\" --ms-enable-electron-run-as-node -r -g \"%f:%l\"",
"%PDF%"
]

具体配置也可以参考:使用VSCode编写LaTeX

https://zhuanlan.zhihu.com/p/38178015

需要注意的是 “latex-workshop.view.pdf.external.synctex.args” 命令中 需要 添加 –ms-enable-electron-run-as-node 才能完成和 SumatraPDF 的反向搜索。

接着就可以使用 vs code 编写 LaTeX 代码,然后用 SumatraPDF 进行预览了。

5、总结

不得不说 LaTeX 的门槛还是挺高的,有各种宏包、各种配置让人摸不着头脑,还有 使用了一些宏包还需要多次编译,有个编译链的概念在,也是大大加大了上手的难度。 比之 markdown,LaTeX 无疑复杂了许多,也许选择了一个合适的模板,在模板上进行 论文写作会好很多吧(在接触了 word 写大文档之后,更倾向于 LaTeX 了,稍微碰一下格式就乱了,太烦了)。。。

文章参考与分享:

  • Copyrights © 2022-2023 hqz

请我喝杯咖啡吧~

支付宝
微信