/ LaTeX  

如何优雅的书写LaTeX论文

TeX Live+VSCode+Sumatra PDF书写你的LaTeX论文

📝更新:

LaTeX是一个非常强大的文本排版软件,在科研论文中使用的尤其多。数模美赛最推荐的也是使用LaTeX编辑,有的出版社甚至只接受LaTeX的论文。最早我用的是CTEX套装,后来改到了TeX Live,但是LaTeX自带的各种编辑器真的丑到爆炸,作为一个”颜控“,不能该背景颜色,没有各种方便的提示,完全没法接受。后来我在网上看到,VSCode居然也可以作为LaTeX的编译器呃,然后我就心动了😜。经过各种磨难(包括但不限于外部阅读器失效,找不到开关,工作区设置每次打开文件都要修改……),我终于搭出了一个大致能用的LaTeX编辑环境。下面呢就把这个过程分享给大家。

前提准备:

  • 安装好了VSCode。 (这不用我教了吧) 一个光秃秃的VSCode就可以了。

Step 1:安装TeX Live\TeX\ \text{Live}

书写LaTeX,我们当然需要一个编译环境,这里推荐TeX Live。这也是lshort里面推荐的TeX排版引擎。

选择那种TeX开发版?

  • 为什么不推荐CTEX套装呢?原因是CTEX已经过时了,他使用的是MikiTeX,但CTEX已经已经断更很久了,没能兼容一些新的特性。
  • 至于TeX Live的下载当然是版本越新越好咯,这里我们以TeX Live 2020为例来演示其安装过程。

至于TeX Live的下载我们可以在CTAN上下载,为了获取更快的下载速度,我们可以选择在清华的开源镜像上下载。我们这里下载iso镜像文件。清华的镜像还是很快的,我在家差不多能跑到5 M/s的样子。

清华镜像

下面开始正式安装TeX Live。

  1. 双击加载iso光盘文件,进入虚拟光盘。

  2. 右击install-tl-windows,并以管理员身份运行安装程序

    texlive安装1

  3. 进入TeX Live安装界面,我们可以选择安装的位置,我选择在D盘。该软件体积比较大,大约要6个GB左右。

    texlive安装2-1

    (可选) 我们可以点击下方的Advanced按钮,进入高级设置,选择我们需要的应用。我们可以Customize选项下来取消勾选不需要的宏包。在电脑空间充足的前提下,推荐安装所有的宏包。

    texlive安装2-2

  4. 多等一会,静候佳音。这个安装过程是很漫长的,大致需要一小时左右。

Step 2:安装Sumatra PDF

在等待的过程中,我们不妨下载Sumatra PDF,这是一个很轻量的的PDF阅读器,但是它支持通过命令行代码实现反向搜索

我们可以在官网下载这个软件,不推荐在微软商店下载。(这个下载可能需要科学上网)这个软件更新版本很多,这里提供一个在2020年7月21日最新的版本(v3.3.13082版本)的下载地址,大家可以有选择性地选择是否更新。安装时记得记住安装路径哦!

突然发现我一直用的是预览版,难怪更新这么勤快,这里再给一个普通版的网址

Sumatra软件的界面大致如下。

sumatra界面

下面我们来配置反向搜索的命令行。

  1. 看到左上方三横的菜单栏了吗,依次选择里面的设置->选项。也许我们能够看到下面的页面,当然设置反向搜索命令行的内容肯定是空的,但是如果出现了设置反向搜索命令行,那恭喜你,很方便的就能设置反向搜索。

    sumatra选项1

    你只需要在文本框中输入以下内容

    1
    "C:\Users\qcl\AppData\Local\Programs\Microsoft VS Code\Code.exe" "C:\Users\qcl\AppData\Local\Programs\Microsoft VS Code\resources\app\out\cli.js" -r -g "%f:%l"

    当然这两句代码要根据你VSCode的安装路径决定,如果你没有动过的话大致就是这样的路径。

  2. 如果你的软件没有出现设置反向搜索命令行,甚至没有出现选项,甚至没有出现高级选项,更甚至没有出现设置。别担心,不是软件出了问题,我们可以通过修改文本内容来解决。

    • 我们在Sumatra PDF的安装路径下,应该能够找到名为”SumatraPDF-settings“的文本文档。(如果能找到高级选项,在高级选项中打开也就是这个文本文档。)

      sumatra选项2-1

    • 进入这个文档,在里面加入以下文字:

      1
      2
      InverseSearchCmdLine = "C:\Users\qcl\AppData\Local\Programs\Microsoft VS Code\Code.exe" "C:\Users\qcl\AppData\Local\Programs\Microsoft VS Code\resources\app\out\cli.js" -r -g "%f:%l"
      EnableTeXEnhancements = true

这样反向搜索就配置完了。

Step 3:VSCode的加持

前面的都是小case啦,真正的重头戏来了,那就是VSCode

VSCode是一款优质的轻量的编辑器,它的界面美观,插件丰富,可以应用于编写各种代码。我还配置过C语言环境、Python环境等等。我比较建议的是将每种语言放在一个工作区内,互不干扰,也能在不同时候编译不同的语言。

3.1 安装LaTeX Workshop插件

我们在VSCode的扩展商店中安装LaTeX Workshop插件,这差不多算是一个All-in-one插件了,它的功能非常丰富。

VSC-2

安装完成后,随便打开一个 tex 源文件,代码已经可以高亮了。

3.2 创建LaTeX工作区

首先,我们先创建一个空文件夹。名称可以自己命名,要求最好不含中文、空格,分词可以使用下划线_来分词。(这点很重要,也是一个比较好的习惯吧)

在VSCode中打开创建的文件夹,接着选择文件->将工作区另存为

VSC

我们把工作区保存在该文件夹目录下即可。

3.3 配置工作区

创建完工作区,我们就需要配置工作区,记住既然我们创建了工作区,那么所有的操作都在工作区内进行就可以了,切记不要去别的地方操作,那是没用的。

我们将下述代码直接贴入.code-workspace文件中,下面我们再来谈谈这些代码的具体作用。(记得修改路径哦!

VSC-3

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
{
"folders": [
{
"path": "."
}
],
"settings": {
"latex-workshop.latex.tools": [
{
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"%DOCFILE%"
]
},
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
},
{
"name": "makeindex",
"command": "makeindex",
"args": [
"%DOCFILE%.nlo",
"-s",
"nomencl.ist",
"-o",
"%DOCFILE%.nls"
]
},
{
"name": "biber",
"command": "biber",
"args": [
"%DOCFILE%"
]
},
{
"name": "bibtex",
"command": "bibtex",
"args": [
"%DOCFILE%"
]
}
],
"latex-workshop.latex.recipes": [
{
"name": "xelatex🔃",
"tools": [
"xelatex"
]
},
{
"name": "xe->mkind->bib->xe*2🔃",
"tools": [
"xelatex",
"makeindex",
"biber",
"xelatex",
"xelatex"
]
},
{
"name": "pdf->mkind->bib->pdf*2🔃",
"tools": [
"pdflatex",
"makeindex",
"biber",
"pdflatex",
"pdflatex"
]
},
{
"name": "xe->bib->xe->xe🔃",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
},
{
"name": "biber🔃",
"tools": [
"biber"
]
},
{
"name": "pdflatex🔃",
"tools": [
"pdflatex"
]
},
{
"name": "pdf->bib->pdf->pdf🔃",
"tools": [
"pdflatex",
"bibtex",
"pdflatex",
"pdflatex"
]
},
{
"name": "BibTeX🔃",
"tools": [
"bibtex"
]
}
],
"latex-workshop.view.pdf.viewer": "external",
"latex-workshop.view.pdf.ref.viewer":"external",
"latex-workshop.showContextMenu":true,
"latex-workshop.view.pdf.external.command":{
"command": "C:/Users/qcl/AppData/Local/SumatraPDF/SumatraPDF.exe",
"args": [
"%PDF%"
]
},
"latex-workshop.view.pdf.external.viewer.command": "C:/Users/qcl/AppData/Local/SumatraPDF/SumatraPDF.exe",
"latex-workshop.view.pdf.external.viewer.args": [
"%PDF%"
],
"latex-workshop.view.pdf.external.synctex.command": "C:/Users/qcl/AppData/Local/SumatraPDF/SumatraPDF.exe", // 注意修改路径
"latex-workshop.view.pdf.external.synctex.args": [
"-forward-search",
"%TEX%",
"%LINE%",
"%PDF%"
],
"latex-workshop.latex.recipe.default": "lastUsed",
"editor.wordWrap": "on",
"latex-workshop.synctex.synctexjs.enabled": false,
"latex-workshop.synctex.afterBuild.enabled": true,
"latex-snippets.autoSuggestionOn": true,
}
}

上述部分的代码呢,其实也来源于网络,但是用谁的都会出错,所以就被我改了一部分,下面讲讲具体的。

  1. latex-workshop.latex.tools这里面主要配置的就是各种编译方式,我们最常用到的就两种xelatexbibtex(注意不是biber),有时候也会用到pdflatex。一开始,我一直都无法编译.bib的参考文献,原因就出在编译链使用的是biber,而非bibtex,所以我就改了。

  2. latex-workshop.latex.recipes这里面就是所谓的编译链了。我们知道LaTeX生成PDF的原理就是使用编译器进行编译。一般的文件我们只需要使用一次或两次xelatex即可编译成功;而当我们有含.bib的参考文献时,一般的编译链就变成,编译一次xelatex,一次bibtex,两次xelatex,也就是上述编译链中的"xe->bib->xe->xe🔃"。其他还给了一些编译链,大家可以按需取舍。值得注意的是,默认的编译链时最上面一条,所以我一般放的是单次执行xelatex编译。

  3. 下面主要的代码处理的就是利用外部PDF阅读器Sumatra所需要的代码了。需要注意修改部分的路径
    ❗值得注意的是:这个代码可能会报错,显示未使用最新的语法,但是使用最新语法后,每次重开一个文件都需要修改该工作区配置文件,不知道bug在哪里,所以我就保留了一条老的语法。具体的错误说明如下:

    错误

  4. 还有一些别的我也不记得是什么了,就不解释了。(¬‿¬)略略略

  5. 还有一些其他设置,来自参考文献1

    • LaTeX Workshop 默认保存的时候自动编译,如果不喜欢这个设置,可以添加以下代码进入设置区:
    1
    "latex-workshop.latex.autoBuild.run": "never",
    • 如果编译出错,插件会弹出两个很烦人的气泡,不喜欢的话可以在设置中添加以下代码:
    1
    2
    "latex-workshop.message.error.show": false,
    "latex-workshop.message.warning.show": false,

Step 4:使用上述工具来书写你的文章吧(●’◡’●)

首先,介绍一下LaTeX Workshop提供的常用工具吧!

VSC-4

我常用的也就上面这几个

  • 编译常用的两个编译链,我们可以直接单击Bulid LaTeX Project也是生成LaTeX文件啊!生成后会自动打开Sumatra PDF,我一般就让VSCode和Sumatra分布在屏幕的左右,方便工作。当然,我一般是ctrl+S保存就编译的,这个就看个人习惯了。
  • 正向搜索使用synctex命令。我们选中LaTeX代码中的位置,再选择SyncTeX from cursor即可实现文章的正向搜索
  • 在Sumatra PDF中双击文字,即可定位到tex代码中的相应段落。

下图就是我一般的写LaTeX文章的桌面环境。

样例

后记

这篇博客的内容想写了很久了,但是迟迟没有动笔,因为怕重装又配错了环境,导致直接没法用。今天也是鼓起勇气重装了一遍,也借此机会把电脑里的TeX Live 2019换成了2020版本,也把Sumatra从很老的版本更新到了13082版本。

如果大家还有什么问题的话,欢迎在评论区指出。我会尽我所能解答大家的问题,但我也是勉勉强强写出这篇博客,可能有很多不太清楚的地方。不足之处还有很多,希望大家见谅。

参考文献

  1. Marvey.使用VSCode编写LaTeX[EB/OL].https://zhuanlan.zhihu.com/p/38178015

本文标题:如何优雅的书写LaTeX论文

文章作者:Levitate_

发布时间:2020年07月20日 - 23:15:37

原始链接:https://levitate-qian.github.io/2020/07/21/latex-vscode/

许可协议: 署名-非商业性使用-禁止演绎 4.0 国际 转载请保留原文链接及作者。