TeX Live+VSCode+Sumatra PDF书写你的LaTeX论文
📝更新:
- 反向传播失败的问题见Polarnova同学在评论区的方法。(2021-12-21),具体说明见VScode+Latex+SumatraPDF反向搜索失败解决办法(Version 1.63) - 知乎 (zhihu.com)
LaTeX是一个非常强大的文本排版软件,在科研论文中使用的尤其多。数模美赛最推荐的也是使用LaTeX编辑,有的出版社甚至只接受LaTeX的论文。最早我用的是CTEX套装,后来改到了TeX Live,但是LaTeX自带的各种编辑器真的丑到爆炸,作为一个”颜控“,不能该背景颜色,没有各种方便的提示,完全没法接受。后来我在网上看到,VSCode居然也可以作为LaTeX的编译器呃,然后我就心动了😜。经过各种磨难(包括但不限于外部阅读器失效,找不到开关,工作区设置每次打开文件都要修改……),我终于搭出了一个大致能用的LaTeX编辑环境。下面呢就把这个过程分享给大家。
前提准备:
- 安装好了VSCode。 (这不用我教了吧) 一个光秃秃的VSCode就可以了。
Step 1:安装
书写LaTeX,我们当然需要一个编译环境,这里推荐TeX Live。这也是lshort里面推荐的TeX排版引擎。
选择那种TeX开发版?
- 为什么不推荐CTEX套装呢?原因是CTEX已经过时了,他使用的是MikiTeX,但CTEX已经已经断更很久了,没能兼容一些新的特性。
- 至于TeX Live的下载当然是版本越新越好咯,这里我们以TeX Live 2020为例来演示其安装过程。
至于TeX Live的下载我们可以在CTAN上下载,为了获取更快的下载速度,我们可以选择在清华的开源镜像上下载。我们这里下载iso镜像文件。清华的镜像还是很快的,我在家差不多能跑到5 M/s的样子。
下面开始正式安装TeX Live。
-
双击加载iso光盘文件,进入虚拟光盘。
-
右击
install-tl-windows
,并以管理员身份运行安装程序 -
进入TeX Live安装界面,我们可以选择安装的位置,我选择在D盘。该软件体积比较大,大约要6个GB左右。
(可选) 我们可以点击下方的
Advanced
按钮,进入高级设置,选择我们需要的应用。我们可以Customize
选项下来取消勾选不需要的宏包。在电脑空间充足的前提下,推荐安装所有的宏包。 -
多等一会,静候佳音。这个安装过程是很漫长的,大致需要一小时左右。
Step 2:安装Sumatra PDF
在等待的过程中,我们不妨下载Sumatra PDF,这是一个很轻量的的PDF阅读器,但是它支持通过命令行代码实现反向搜索。
我们可以在官网下载这个软件,不推荐在微软商店下载。(这个下载可能需要科学上网)这个软件更新版本很多,这里提供一个在2020年7月21日最新的版本(v3.3.13082版本)的下载地址,大家可以有选择性地选择是否更新。安装时记得记住安装路径哦!
突然发现我一直用的是预览版,难怪更新这么勤快,这里再给一个普通版的网址。
Sumatra软件的界面大致如下。
下面我们来配置反向搜索的命令行。
-
看到左上方三横的菜单栏了吗,依次选择里面的
设置
->选项
。也许我们能够看到下面的页面,当然设置反向搜索命令行的内容肯定是空的,但是如果出现了设置反向搜索命令行,那恭喜你,很方便的就能设置反向搜索。你只需要在文本框中输入以下内容
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的安装路径决定,如果你没有动过的话大致就是这样的路径。
-
如果你的软件没有出现设置反向搜索命令行,甚至没有出现
选项
,甚至没有出现高级选项
,更甚至没有出现设置
。别担心,不是软件出了问题,我们可以通过修改文本内容来解决。-
我们在Sumatra PDF的安装路径下,应该能够找到名为”SumatraPDF-settings“的文本文档。(如果能找到高级选项,在高级选项中打开也就是这个文本文档。)
-
进入这个文档,在里面加入以下文字:
1
2InverseSearchCmdLine = "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插件了,它的功能非常丰富。
安装完成后,随便打开一个 tex 源文件,代码已经可以高亮了。
3.2 创建LaTeX工作区
首先,我们先创建一个空文件夹。名称可以自己命名,要求最好不含中文、空格,分词可以使用下划线_
来分词。(这点很重要,也是一个比较好的习惯吧)
在VSCode中打开创建的文件夹,接着选择文件
->将工作区另存为
。
我们把工作区保存在该文件夹目录下即可。
3.3 配置工作区
创建完工作区,我们就需要配置工作区,记住既然我们创建了工作区,那么所有的操作都在工作区内进行就可以了,切记不要去别的地方操作,那是没用的。
我们将下述代码直接贴入.code-workspace
文件中,下面我们再来谈谈这些代码的具体作用。(记得修改路径哦!)
1 | { |
上述部分的代码呢,其实也来源于网络,但是用谁的都会出错,所以就被我改了一部分,下面讲讲具体的。
-
latex-workshop.latex.tools
这里面主要配置的就是各种编译方式,我们最常用到的就两种xelatex
和bibtex
(注意不是biber
),有时候也会用到pdflatex
。一开始,我一直都无法编译.bib
的参考文献,原因就出在编译链使用的是biber
,而非bibtex
,所以我就改了。 -
latex-workshop.latex.recipes
这里面就是所谓的编译链了。我们知道LaTeX生成PDF的原理就是使用编译器进行编译。一般的文件我们只需要使用一次或两次xelatex
即可编译成功;而当我们有含.bib
的参考文献时,一般的编译链就变成,编译一次xelatex
,一次bibtex
,两次xelatex
,也就是上述编译链中的"xe->bib->xe->xe🔃"
。其他还给了一些编译链,大家可以按需取舍。值得注意的是,默认的编译链时最上面一条,所以我一般放的是单次执行xelatex
编译。 -
下面主要的代码处理的就是利用外部PDF阅读器Sumatra所需要的代码了。需要注意修改部分的路径。
❗值得注意的是:这个代码可能会报错,显示未使用最新的语法,但是使用最新语法后,每次重开一个文件都需要修改该工作区配置文件,不知道bug在哪里,所以我就保留了一条老的语法。具体的错误说明如下: -
还有一些别的我也不记得是什么了,就不解释了。(¬‿¬)略略略
-
还有一些其他设置,来自参考文献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提供的常用工具吧!
我常用的也就上面这几个
- 编译常用的两个编译链,我们可以直接单击
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版本。
如果大家还有什么问题的话,欢迎在评论区指出。我会尽我所能解答大家的问题,但我也是勉勉强强写出这篇博客,可能有很多不太清楚的地方。不足之处还有很多,希望大家见谅。
参考文献
- Marvey.使用VSCode编写LaTeX[EB/OL].https://zhuanlan.zhihu.com/p/38178015