2026/10/10
VS Code中Latex与PDF反向搜索配置
由于正向搜索用的不多,正常写作来说场景大多是反向搜索,且一般正向搜索不管是内部PDF阅读器还是外部PDF阅读器都不会出问题,本文章专注于外部PDF阅读器与Latex代码的反向搜索配置。
我的环境是 Windows + VS Code + LaTeX Workshop + SumatraPDF。之前有过几次PDF双击跳转突然失效,把个人修复经验整理了一下,其实还是配置的问题:反向搜索命令引用了 VS Code 内部带版本号的目录,升级后路径变了。
下面是这次修好的配置,供遇到同样问题的朋友参考。文中使用通用路径占位符。请将 <VS_CODE_INSTALL_DIR>(包括尖括号)替换为自己的 VS Code 安装目录;占位符不能原样运行。
1. 在 SumatraPDF 中配置反向搜索
打开 SumatraPDF 的“设置 → 高级选项”,找到 InverseSearchCmdLine,改成:
InverseSearchCmdLine = "<VS_CODE_INSTALL_DIR>\Code.exe" --reuse-window --goto "%f:%l"直接使用安装目录下的 Code.exe。不要引用类似“版本目录\resources\app\out\cli.js”的内部路径,否则更新 VS Code 后可能再次失效。
参数说明:
- --reuse-window:尽量复用已有的 VS Code 窗口。
- --goto:打开文件并定位到指定行。
- %f:对应的 TeX 源文件。
- %l:对应的源码行号。
注意保留引号,避免安装路径或文件路径包含空格时出错。
2. 防止 LaTeX Workshop 覆盖回旧命令
在 VS Code 的用户 settings.json 中,找到外部阅读器的 SyncTeX 参数,将该项改为:
"latex-workshop.view.pdf.external.synctex.args": [ "-forward-search", "%TEX%", "%LINE%", "-reuse-instance", "%PDF%"]这是 settings.json 中的一个配置项,需要放在原有 JSON 对象内,并留意相邻配置项之间的逗号。
如果原来的数组中有 -inverse-search,连同它后面的旧反向搜索命令一起移除。否则每次从 VS Code 发起正向搜索,都可能再次向 SumatraPDF 传入旧命令。
这组参数用于“源码 → PDF”的正向搜索;“PDF → 源码”的双击反向搜索,由第一步的 InverseSearchCmdLine 负责。外部程序仍使用自己已配置好的 SumatraPDF.exe。
3. 确认生成了 SyncTeX 文件
编译时需要启用 SyncTeX。以 XeLaTeX 为例,编译参数中应包含:
-synctex=1正常编译后,输出目录里应有与 PDF 同名的映射文件,例如:
main.pdfmain.synctex.gz如果使用单独的输出目录,请打开本次编译生成的 PDF,并确保对应的 SyncTeX 文件仍然可用。
4. 检查跳转
保存配置,重新编译并用 SumatraPDF 打开 PDF,在正文位置双击,检查能否回到对应的 .tex 文件和行号。我这次修复后已恢复正常跳转。
如果仍有问题,优先检查 Code.exe 路径、SyncTeX 文件是否生成,以及其他启动参数中是否还残留旧的 -inverse-search 命令。
适用范围:本文针对 SumatraPDF 外部阅读器。LaTeX Workshop 内置 PDF 阅读器使用另一套跳转机制。
评论加载中…