问题描述
在使用 VS Code + SumatraPDF 进行 Latex 写作时,经常会遇到在 SumatraPDF 上反向搜索失效,或者在 VS Code 中打开了 cli.js
文件的场景
尝试解决
- 发现独立打开 SumatraPDF 时可以反向搜索,然后进一步搜索后,了解到从VS Code中直接打开 SumatraPDF 时调用的是 VS Code 的子线程,这才导致无法反向搜索
- 通过阅读 SumatraPDF 官方文档,发现在命令行设置反向搜索和在图形界面设置是等价的,因此在 VS Code 配置里写入反向搜索命令没有必要
- 网上搜到在反向搜索命令参数中添加
cli.js
可以解决子线程无法调用的问题,尝试后发现无效
最终解决方案
有一点瑕疵,在写作前必须独立打开 SumatraPDF 阅读器,然后再打开 VS Code 进行写作。
在 VS Code 中去掉反向搜索配置,如下
"latex-workshop.view.pdf.viewer": "external",
"latex-workshop.view.pdf.external.viewer.command": "<SumatraPDF安装目录>/SumatraPDF.exe",
"latex-workshop.view.pdf.external.viewer.args": [
"%PDF%"
],
"latex-workshop.view.pdf.external.synctex.command": "<SumatraPDF安装目录>/SumatraPDF.exe",
"latex-workshop.view.pdf.external.synctex.args": [
"-forward-search",
"%TEX%",
"%LINE%",
"-reuse-instance",
"%PDF%"
],
注意到配置中没有任何反向搜索命令,只定义了外部阅读器路径和正向搜索。
然后在SumatraPDF阅读器界面修改设置高级选项里的反向搜索命令行如下
"C:\Program Files\Microsoft VS Code\Code.exe" -r -g "%f":"%l"