0%

使用VScode与MiKTex写论文

说明

研究生了,于是写Latex的文档也比较多,之前同学们之间推荐的都是使用的Ctex,在 CTeX 套装刚刚问世之时,因其解决了繁琐的中文字体安装工作,所以广受欢迎,但是,一方面 CTeX 套装已经很久不更新,内里的宏包、工具陈旧。不过个人感觉太臃肿,而且安装要接近4G的样子,而且自带的编辑器界面是真的丑。于是就去扒了一下,发现其实就是使用MikTex编译和生成的,于是下载了MikTex的原版软件安装了试试,安装完了之后800M不到,虽然界面也比较难看,不过比Ctex好,而且非常简洁,还自带了PDF的阅读器,他的放大镜用起来非常舒服,感觉还是挺不错的,也用了一段时间,最近看到了用VSCode配置,发现真的是非常的简单和方便,而且VSCode这个软件真的是越用越爽,于是搜了一些资料然后自己尝试了一下,做了这个记录。

软件安装和配置

软件有三个,分别是VSCode,MiKTeX或者Tex Live选其一,还有Sumatra PDF

说说这三个软件,VSCode是微软推出的轻量级编辑器,个人觉得非常好用,目前我在Win10上的文本编辑基本都是这个软件,不管是C,还是Python都是非常好的,还能用SSH,十分推荐。其次是MiXTek和Tex Live,这两个我觉得都是差不多的,个人比较建议用MiKTex,他能设置自动获取的宏包,感觉还比较方便,安装起来也比较简洁,最后是Sumatra PDF,我个人认为最好的PDF阅读器,没有之一,要说缺点的话就是不能编辑,但是真的是非常清凉,而且打开速度非常快,重点是右键就是手抓模式,跟AD里面一样,所以用着很爽,还有就是他的缩放很到位。

软件的安装还是比较简单,我觉得没什么说的,重点就是添加环境变量。Win10 中将路径添加到环境变量中的步骤如下:右键我的电脑,然后选择”属性”,在左侧选择 “高级系统设置”,然后选择下方的”环境变量”,选择变量”Path”编辑,将需要添加的路径添加进去即可,如下所示:

P2.1

现在已经可以完整使用MiKTex编译tex文件并且生成PDF了,但是MiKTex的环境也不太友好,我们还是选择VSCode。要做的就是VSCode里面安装拓展来调用插件LaTeX Workshop插件,直接搜索和安装即可在使用VSCode里面写论文了。新建一个文件夹,在文件夹里面新建一个 .tex 文件,最好是英文的,然后试试下面的Hello World。

1
2
3
4
5
6
7
8
9
\documentclass{article}

\begin{document}

Hello,world 1!
Hello,world 2!
Hello,world 3!

\end{document}

按”Ctrl + Alt + B”三个按键编译,会生成PDF文件,第一次可能比较慢,后面编译会快很多,这样基本环境就搭建好了。

添加其他的编译方式

VSCode 默认添加了3个编译工具:分别是latexmk,pdflatex 和bibtex,这样会导致一些问题,比如中文编译报错, 添加参考文献”.bib”文件有问题等等。为了添加其他的编译方式(比如xelatex),我们需要修改LaTeX Workshop 的配置。打开LaTeX Workshop 配置的方法如下:在VSCode界面左上角,依次选择 “文件”->”首选项”->”设置”,这样就到了设置界面,然后在屏幕右上角找到文件上一个箭头的标志,弹出内容是”打开设置(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
"latex-workshop.showContextMenu":true, //右键菜单  
"latex-workshop.intellisense.package.enabled": true, //根据加载的包,自动完成命令或包
"latex-workshop.latex.autoBuild.run": "never",//禁止保存文件时自动build
"latex-workshop.latex.recipes": [
{
"name": "PDFLaTeX",
"tools":["pdflatex"]
},
{
"name": "PDFLaTeX with Shell Escape",
"tools": ["pdflatex-with-shell-escape"]
},
{
"name": "XeLaTeX",
"tools": ["xelatex"]
},
{
"name": "XeLaTeX with Shell Escape",
"tools": ["xelatex-with-shell-escape"]
},
{
"name": "pdflatex -> bibtex -> pdflatex*2",
"tools": ["pdflatex", "bibtex", "pdflatex", "pdflatex"]
},
{
"name": "xelatex -> bibtex -> xelatex*2",
"tools": ["xelatex", "bibtex", "xelatex", "xelatex"]
},
{
"name": "LaTeXmk",
"tools": ["latexmk"]
},
{
"name": "BibTeX",
"tools": ["bibtex"]
}
],
"latex-workshop.latex.tools": [
{
"name": "latexmk",
"command": "latexmk",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"-pdf",
"-outdir=%OUTDIR%",
"%DOCFILE%"
],
"env": {}
},
{
"name": "pdflatex",
"command": "pdflatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
],
"env": {}
},
{
"name": "pdflatex-with-shell-escape",
"command": "pdflatex",
"args": [
"--shell-escape",
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
],
"env": {}
},
{
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
],
"env": {}
},
{
"name": "xelatex-with-shell-escape",
"command": "xelatex",
"args": [
"--shell-escape",
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
],
"env": {}
},
{
"name": "bibtex",
"command": "bibtex",
"args": ["%DOCFILE%"],
"env": {}
}
],
"latex-workshop.latex.clean.fileTypes": [
//设定清理文件的类型(ctrl+alt+c:清除辅助文件) "*.aux",
"*.bbl",
"*.blg",
"*.idx",
"*.ind",
"*.lof",
"*.lot",
"*.out",
"*.toc",
"*.acn",
"*.acr",
"*.alg",
"*.glg",
"*.glo",
"*.gls",
"*.ist",
"*.fls",
"*.log",
"*.fdb_latexmk",
"*.nav",
"*.snm",
"*.synctex.gz",
"*.bcf",
"*.run.xml"
],

如下图所示:
P2.2

保存好了之后重启VSCOde,用XeLaTex尝试下面编译带中文的例子。

1
2
3
4
5
6
7
8
9
10
\documentclass[a4paper]{ctexart} %CTEX报告文章格式

\usepackage[top = 2cm, bottom = 2cm, left = 2cm, right = 2cm]{geometry} % 页边距
\usepackage{ctex}

\begin{document}

试试

\end{document}

如图所示,应该也是没多大问题的。
P2.3

正向检索,反向检索和双向检索

“反向检索”是什么意思呢,就是是同.tex文件生成的PDF,在查阅的时候双击,可以快速定位到原来tex文档的地方,可以用来快速且准确地修改。

正向检索

首先是正向检索,跟前面设置编译项相同,在VSCode里面设置JSON,添加如下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
// 设置预览方式
"latex-workshop.view.pdf.viewer": "external",
"latex-workshop.view.pdf.ref.viewer": "external",
// 设置外部PDF预览器
"latex-workshop.view.pdf.external.viewer.command": "D:/Sumatra/SumatraPDF.exe",
"latex-workshop.view.pdf.external.viewer.args": ["%PDF%"],
// 配置Syntex的正向搜索(Latex->PDF)
"latex-workshop.view.pdf.external.synctex.command": "D:/Sumatra/SumatraPDF.exe",
"latex-workshop.view.pdf.external.synctex.args": [
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
"-inverse-search",
"D:/VSCode/Code.exe D:/VSCode/resources/app/out/cli.js -r -g %f:%l",
"%PDF%"
],

注意注意,路径要替换成自己的!!!路径要替换成自己的!!!路径要替换成自己的!!!

反向检索

下面是反向搜索,这个应该是SumatraPDF软件带的功能,在SumatraPDF的”设置”->”选项”中设置,添加的内容如下,还是注意:路径要替换成自己的!其次就是”"和”/“的用法,在VSCode里面”"是转义符,因此要表达”"可以用”\“或者”/“来表达,大家按照我上面写的直接改路径即可,记得两个符号的不同。大家可以试试双击生成的PDF文字就可以体会到,非常实用!

1
"D:\VSCode\Code.exe"  -g  "%f:%l"

P2.4

双向检索

将光标移动到TeX文件的正文。ctrl+alt+x,找到”navigator,select and edit”,点击第一项”syncTeX from cursor”(或右键选择,或快捷键ctrl+alt+j),会切换到PDF文件的相应位置并高亮显示。

其实VSCode里面也能立即展示PDF,感觉也挺好用的,也能自适应页宽,大家觉得不错的话也可以试试。

结语

其实这就是一个提高效率的方法,用着自己觉得舒服的编辑器来工作我觉得是非常舒服的事情,早期我一直用的Sublime,但是Sublime会弹出自动更新的提示,还有提醒捐赠,虽然弹窗次数不多但是也觉着不舒服,也不想网上找破解了,尊重一下别人的劳动成果嘛,毕竟VSCode是免费的,也挺好用的,整体就是这样,感觉VSCode+MiKTex是一个非常好的选择!最后感谢VSCode中文社区的分享

-------------本文结束感谢您的阅读-------------