vscode+latex本地搭建tex写论文

如果是为了方便简洁,实际使用Overleaf完全够了,之前也写过使用Obsidian写文章的教程. 这次主要介绍使用在本地vscode加上插件写论文.

需要工具

  1. vscode 官网即可
  2. texlive 通过镜像站即可,比如Index of /CTAN/systems/texlive/Images/ | 清华大学开源软件镜像站 | Tsinghua Open Source Mirror

image-20230322162300639

选中箭头指向的其中一个即可,然后一步一步来即可.可以参考相关教程TeX Live 2022 安装指南【安装 LaTeX】. 安装TexLive目的就是为了有个解析引擎,类似与c++程序下载g++一样

  1. Sumatra PDF (sumatrapdfreader.org) 用于查看pdf,当然用其他的也可以.这是一个开源免费的pdf阅读器,用于查看tex编译后得到的pdf,并且设置反向搜索(即双击pdf的某个位置可以跳转到tex代码相应的位置)

配置步骤

下载texlive之后,进行测试是否安装成功. 在命令行输入

1
tex

显示

image-20230322163046678

表示安装成功.

这里区分一下可能混淆的名字。

一个完整的 TeX 需要最基本的 TeX 引擎、格式支持、各种辅助宏包、一些转换程序、GUI、编辑器、文档查看器等等。通过选择不同的组合就构成了不同的发行版。

  • TeXLive:支持 Linux,Windows,macOS
  • MiKTeX:支持 Windows,macOS (Intel)

可能有的人听过TexStudio,这是TexLive官方的写tex的编辑器

在vscode中下载插件Latex Workshop,用于有效地编译预览tex文件.

image-20230322162849810

当然你也可以同时下载其他用于自动补全tex的插件.然后进行配置.

如果你还不了解tex相关的一类东西,可以在文章末尾参考资料中查看Tex家族.

简单实用

image-20230322163519674

下载了插件后,你会注意到左部有这个插件标识,点击即可. 发现上面有相关命令.有编译,查看pdf,导向等等. 我们常用的就是构建,值得注意的是我们构建就是利用工具设置工具链进行一套编译流程.

现在你就可以写tex然后点击 pdflatex->bibtex->pdflatex*2即可得到pdf

image-20230322163846157

但是你会发现使用中文会报错,所以接下来我们会进行相关配置.

  • TeX:1978年由Donald Erwin Knuth(高德纳)开发。是后来大部分TeX相关的基础。其生成dvi文件,然后经由其他程序转换为pdf文件。
  • pdfTeX:Tex语言的又一个实现,将TeX代码直接编译成PDF文件。
  • XeTeX:TeX 语言的新的实现,支持 Unicode 编码和直接访问操作系统字体。
  • LuaTeX:TeX 语言的一个完整的有扩展的实现。LuaTeX支持Unicode、系统字体和内嵌语言扩展,能直接输出PDF格式文件,也可以仍然输出 DVI 格式。

我们需要增加xelatex工具.首先在设置中搜索tools

image-20230322164243143

点击setting.json配置,增加xelatex,代码如下.即数组中的第一项.

image-20230322164343493

1
2
3
4
5
6
7
8
9
10
  {
"name": "xelatex",
"command": "xelatex",
"args": [
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOCFILE%"
]
}

以上相当于增加了一个tool.

现在需要增加一个recipe,相当于一套流程,这个流程需要用到xelatex.

设置中搜索recipe

image-20230322164525817

点击setting.json,增加红框的代码

image-20230322164546431

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
{
"name": "xelatex",
"tools": [
"xelatex"
],
},
{
"name": "xelatex ➞ bibtex ➞ xelatex × 2",
"tools": [
"xelatex",
"bibtex",
"xelatex",
"xelatex"
]
}

现在你可以看见增加的recipe了,如红箭头所示. 现在支持tex中有中文了.

注意需要使用ctex包

1
\usepackage{ctex}

image-20230322164634064

实现正反向搜索

这里使用sumatra作为external的pdf阅读器并实现双向搜索.

设置中搜索viewer.

image-20230322165018028

image-20230322165036922

设置external同时设置sumatra安装路径.

正向搜索

在设置中搜索 viewer,看到下图参数设置.

image-20230322165147100

注意,这里可以先尝试随便添加项,然后在setting.json中查找这个配置.

将这个参数修改如下,注意其中的逆向搜索路径(这里是"D:/Microsoft VS Code/Code.exe\" \"D:/Microsoft VS Code/resources/app/out/cli.js\" -r -g \"%f:%l\")表示vscode相关下载位置,注意使用自己安装vscode的相关位置.

1
2
3
4
5
6
7
8
9
"latex-workshop.view.pdf.external.viewer.args": [
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
"-inverse-search",
"\"D:/Microsoft VS Code/Code.exe\" \"D:/Microsoft VS Code/resources/app/out/cli.js\" -r -g \"%f:%l\"",
"%PDF%",
],

然后就配置成功了(事实上并没有完全成功,具体可以看下面的注意).

正向搜索方法:平时选择其中之一即可

  1. image-20230322165523694

  2. 按下Ctrl+Alt+J,直接跳转至PDF对应的地方。

  3. 点击View LaTeX PDF -> View in external viewer

逆向搜索

设置中搜索Synctex,配置参数和命令. 跟上面的其实类似.

image-20230322165659967

latex-workshop.view.pdf.external.synctex.args参数配置如下

1
2
3
4
5
6
7
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
"-inverse-search",
"\"D:/Microsoft VS Code/Code.exe\" \"D:/Microsoft VS Code/resources/app/out/cli.js\" -r -g \"%f:%l\"",
"%PDF%",

上面的路径也是根据你下载vscode的路径配置.

使用Zotero导出bib参考文献

学术党必备:Zotero一键导出BibTex 参考文献_zotero bibtex-CSDN博客主要参考这篇教程,可以将需要引用的所有文献都放在一个目录下,然后导出.

注意

事实上要实现在sumatra中反向搜索,你还需要进行其他配置. 打开sumatra,点击左上角选择高级选项.

image-20230322170018604

搜索InverseSearchCmdLine 可以发现这里的值应该已经被设置了.后面发现,按照上述设置在vscode中打开sumatra后会将这里的参数设置会vscode中配置的,但是现在需要更改一下.

在vscode配置中,逆向搜索增加--ms-enable-electron-run-as-node参数.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
"latex-workshop.view.pdf.external.viewer.args": [
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
"-inverse-search",
"\"D:/Microsoft VS Code/Code.exe\" \"D:/Microsoft VS Code/resources/app/out/cli.js\" --ms-enable-electron-run-as-node -r -g \"%f:%l\"",
"%PDF%",
],
"latex-workshop.view.pdf.external.synctex.command": "D:\\SumatraPDF\\SumatraPDF.exe",
"latex-workshop.view.pdf.external.synctex.args": [
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
"-inverse-search",
"\"D:/Microsoft VS Code/Code.exe\" \"D:/Microsoft VS Code/resources/app/out/cli.js\" --ms-enable-electron-run-as-node -r -g \"%f:%l\"",
"%PDF%",
],

这样双击sumatra中的pdf即可跳转到vscode中的tex相应位置了.

常用的有xelatex,pdflatex,biblatex以及latexmk,biblatex可以用于生成引用文献,其他的都差别不大.

基础语法

​ 源代码中,空格键和Tab 键输入的空白字符视为“空格”。连续的若干个空白字符视 为一个空格。一行开头的空格忽略不计。 行末的换行符视为一个空格;但连续两个换行符,也就是空行,会将文字分段。多个空行被 视为一个空行。也可以在行末使用\par命令分段。

​ % 字符作为注释。在这个字符之后直到行末,所有的字符都被忽略,行末的换行符 也不引入空格。

参考资料

  1. 在vscode中使用latex高效书写论文教程 - 知乎 (zhihu.com)
  2. 学术论文写作利器—— VS Code + LaTeX - 知乎 (zhihu.com)
  3. VS Code下配置LaTeX编译环境 - 知乎 (zhihu.com)
  4. VScode+Latex+SumatraPDF反向搜索失败解决办法(Version 1.63) - 知乎 (zhihu.com)
  5. TeX 家族(TeX, XeTeX, LuaTeX,XeLaTeX …看完这篇就懂了) - 知乎 (zhihu.com)
-------------本文结束感谢您的阅读-------------
感谢阅读.

欢迎关注我的其它发布渠道