解决SumatraPDF 在VS Code上反向搜索失效

问题描述

在使用 VS Code + SumatraPDF 进行 Latex 写作时,经常会遇到在 SumatraPDF 上反向搜索失效,或者在 VS Code 中打开了 cli.js 文件的场景

尝试解决

  1. 发现独立打开 SumatraPDF 时可以反向搜索,然后进一步搜索后,了解到从VS Code中直接打开 SumatraPDF 时调用的是 VS Code 的子线程,这才导致无法反向搜索
  2. 通过阅读 SumatraPDF 官方文档,发现在命令行设置反向搜索和在图形界面设置是等价的,因此在 VS Code 配置里写入反向搜索命令没有必要
  3. 网上搜到在反向搜索命令参数中添加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"

推荐阅读更多精彩内容