VS Code中 LaTeX 与 SumatraPDF 正反向跳转配置

本文介绍如何在 VSCode 中实现 LaTeX 与 SumatraPDF 正反向跳转功能。


VS Code环境配置

配置环境,在VS Code界面快捷键 Ctrl Shift + P,输入 Open User 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
"latex-workshop.latex.tools": [
{
"name": "latexmk-pdflatex",
"command": "latexmk",
"args": [
"-pdflatex",
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
]
},
{
"name": "latexmk-xelatex",
"command": "latexmk",
"args": [
"-xelatex",
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
]
},
{
"name": "latexmk-lualatex",
"command": "latexmk",
"args": [
"-lualatex",
"-synctex=1",
"-interaction=nonstopmode",
"-file-line-error",
"%DOC%"
]
},
],
// 用于配置编译链
"latex-workshop.latex.recipes": [
{
"name": "latexmk(pdflatex)",
"tools": [
"latexmk-pdflatex"
],
},
{
"name": "latexmk(xelatex)",
"tools": [
"latexmk-xelatex"
],
},
{
"name": "latexmk(lualatex)",
"tools": [
"latexmk-lualatex"
],
}
],
//设置是否自动编译tex文件,设置为保存时自动编译
"latex-workshop.latex.autoBuild.run": "onSave",
//显示右键菜单的latex相关选项
"latex-workshop.showContextMenu": true,
//显示错误
"latex-workshop.message.error.show": false,
//显示警告
"latex-workshop.message.warning.show": false,
//从使用的包中自动补全命令和环境
"latex-workshop.intellisense.package.enabled": true,
//设置为never,为不自动清除辅助文件
"latex-workshop.latex.autoClean.run": "never",
//设置清除辅助文件的方法为command,即使用latexmk的-clean选项
"latex-workshop.latex.clean.method": "command",
//设置清除辅助文件时,是否清除子文件夹中的辅助文件
"latex-workshop.latex.clean.subfolder.enabled": true,
//设置vscode编译tex文档时的默认编译链
"latex-workshop.latex.recipe.default": "lastUsed",
//tex文件浏览器,可选项为"none" "browser" "tab" "external"
"latex-workshop.view.pdf.viewer": "external", // tab 为内部查看器
// 用于反向同步的内部查看器的键绑定。ctrl/cmd +点击(默认)或双击
//"latex-workshop.view.pdf.internal.synctex.keybinding": "double-click",
"latex-workshop.view.pdf.external.synctex.command": "F:/install/SumatraPDF/SumatraPDF.exe",
"latex-workshop.view.pdf.external.synctex.args": [
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
"-inverse-search",
"\"F:/install/Microsoft VS Code/Code.exe\" \"F:/install/Microsoft VS Code/e7fb5e96c0/resources/app/out/cli.js\" --ms-enable-electron-run-as-node -r -g \"%f:%l\"",
"%PDF%"
],

其中 SumatraPDF 与 VS Code 路径修改为自己的安装路径, e7fb5e96c0 目录名称每个人不一样,需要修改。


SumatraPDF设置

SumatraPDF的设置-高级选项中,修改变量内容:

1
2
InverseSearchCmdLine = "F:/install/Microsoft VS Code/Code.exe" -r -g "%f:%l"
EnableTeXEnhancements = true

v3.5.2版本支持,v3.6此方法暂不支持。


编译与跳转说明

编译

英文一般选择latexmk(pdflatex)编译,中文一般选择latexmk(xelatex)编译,初始默认使用第一个配方,后续默认使用上次使用的编译方式,保存文件触发自动编译。

清理辅助文件会清除中间生成的辅助文件,不会清除*.pdf*.tex*.bib等有用的资源文件。

重启VS Code配置生效。

跳转

tex –> SumatraPDF: Ctrl + Alt + J

SumatraPDF –> tex: 双击


参考博文

  • VS Code + SumatraPDF 反向搜索问题