MacOS 下 VS Code + LaTeX + Skim 双向同步配置

必备工具安装

首先安装三个核心工具,缺一不可:

  1. 安装 LaTeX 环境
    首先你得有 LaTeX 的编译环境,推荐直接装完整版的 MacTeX,这是 Mac 上最通用的 LaTeX 环境,包含了所有的编译工具和宏包。下载地址是 https://www.tug.org/mactex/,双击安装。
  2. 安装 VS Code 和 LaTeX Workshop
    VS Code 是我们写 LaTeX 的编辑器。下载地址是 https://code.visualstudio.com/,双击安装。然后打开 VS Code 的插件市场,搜索 LaTeX Workshop,安装这个插件。
  3. 安装 Skim PDF 阅读器
    Skim 是 Mac 上免费开源的 PDF 阅读器,专门支持 LaTeX 的 SyncTeX 同步功能,比系统自带的 Preview 好用太多了。下载地址是 https://skim-app.sourceforge.io/,双击安装。

在 VS Code 中配置 LaTeX

  1. 打开 VS Code,按下快捷键 Command + , 打开设置
  2. 点击设置页面右上角的 {} 图标,打开 settings.json 文件(这是 JSON 格式的配置文件)
  3. 把下面这段配置,完整的复制粘贴到你的 settings.json 里面(如果原来有其他配置,就加在大括号里面就行):
bash 复制代码
// LaTeX Workshop 配置
"latex-workshop.view.pdf.viewer": "external",
"latex-workshop.view.pdf.external.viewer.command": "/Applications/Skim.app/Contents/MacOS/Skim",
"latex-workshop.view.pdf.external.viewer.args": [
        "-r",
        "%LINE%",
        "%PDF%",
        "%TEX%"
],
"latex-workshop.view.pdf.ref.viewer": "external",
"latex-workshop.view.pdf.external.synctex.args": [
        "-r",
        "%LINE%",
        "%PDF%",
        "%TEX%"
],

这些配置是什么意思?解释一下,你就知道每个配置是干嘛的,不是瞎复制:

  • latex-workshop.view.pdf.viewer: 把默认的 PDF 查看器,从内置预览改成外部程序
  • 下面两行指定了外部程序就是 Skim,告诉 VS Code 编译完用 Skim 打开 PDF
  • 最后几行是同步跳转的参数,用来实现编译完自动跳转到对应的 PDF 行

settings.json的完整代码(仅供参考)

bash 复制代码
{
    // ======================== LaTeX 完整配置 BEGIN ========================
    // bibtex 格式化缩进
    "latex-workshop.bibtex-format.tab": "tab",

    // 关闭自动编译,手动控制编译时机
    "latex-workshop.latex.autoBuild.run": "never",
    "latex-workshop.latex.autoBuild.cleanAndRetry.enabled": false,

    // 编译完成后自动同步跳转到PDF
    "latex-workshop.synctex.afterBuild.enabled": true,

    // 公式悬浮预览
    "latex-workshop.hover.preview.enabled": true,
    "latex-workshop.hover.preview.scale": 0.7,

    // ========== PDF 查看器配置:使用外部 Skim ==========
    "latex-workshop.view.pdf.viewer": "external",
    "latex-workshop.view.pdf.ref.viewer": "external",

    // Skim 正向同步专用工具(编译后自动跳行)
    "latex-workshop.view.pdf.external.viewer.command": "/Applications/Skim.app/Contents/SharedSupport/displayline",
    "latex-workshop.view.pdf.external.viewer.args": [
        "-r",
        "%LINE%",
        "%PDF%",
        "%TEX%"
    ],

    // Skim 同步命令配置
    "latex-workshop.view.pdf.external.synctex.command": "/Applications/Skim.app/Contents/SharedSupport/displayline",
    "latex-workshop.view.pdf.external.synctex.args": [
        "-r",
        "%LINE%",
        "%PDF%",
        "%TEX%"
    ],

    "latex-workshop.view.pdf.internal.synctex.keybinding": "double-click",

    // ========== 编译工具配置 ==========
    "latex-workshop.latex.tools": [
        {
            "name": "xelatex",
            "command": "xelatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOCFILE%"
            ]
        },
        {
            "name": "pdflatex",
            "command": "pdflatex",
            "args": [
                "-synctex=1",
                "-interaction=nonstopmode",
                "-file-line-error",
                "%DOCFILE%"
            ]
        },
        {
            "name": "biber",
            "command": "biber",
            "args": [
              "%DOC%"
            ]
        },
        {
            "name": "bibtex",
            "command": "bibtex",
            "args": [
                "%DOCFILE%"
            ]
        },
        {
            "name": "makeglossaries",
            "command": "makeglossaries",
            "args": [
              "%DOCFILE%"
            ]
        }
    ],

    // ========== 编译方案(中文论文推荐使用 xelatex 系列) ==========
    "latex-workshop.latex.recipes": [
        {
            "name": "pdf->bibtex->pdf->pdf",
            "tools": [
                "pdflatex",
                "bibtex",
                "pdflatex",
                "pdflatex"
            ]
        },
        {
            "name": "xe->bibtex->xe->xe",
            "tools": [
                "xelatex",
                "bibtex",
                "xelatex",
                "xelatex"
            ]
        },
        {
            "name": "pdf->biber->pdf->pdf",
            "tools": [
                "pdflatex",
                "biber",
                "pdflatex",
                "pdflatex"
            ]
        },
        {
            "name": "xe->biber->xe->xe",
            "tools": [
                "xelatex",
                "biber",
                "xelatex",
                "xelatex"
            ]
        },
        {
            "name": "xelatex",
            "tools": [
                "xelatex"
            ]
        },
        {
            "name": "pdflatex",
            "tools": [
                "pdflatex"
            ]
        }
    ],

    // 清理中间文件(保留同步必需文件,不删除 synctex.gz)
    "latex-workshop.latex.clean.fileTypes": [
        "*.aux",
        "*.bbl",
        "*.blg",
        "*.idx",
        "*.ind",
        "*.lof",
        "*.lot",
        "*.out",
        "*.toc",
        "*.acn",
        "*.acr",
        "*.alg",
        "*.glg",
        "*.glo",
        "*.gls",
        "*.ist",
        "*.fls",
        "*.log",
        "*.fdb_latexmk",
        "*.bcf",
        "*.run.xml"
    ],
    // ======================== LaTeX 设置 END ========================
    "workbench.sideBar.location": "right",
    "files.autoSave": "afterDelay",
    "security.promptForLocalFileProtocolHandling": false
}

保存配置文件,使其生效。

配置 Skim 的反向搜索

这部分比你想象的简单 100 倍,不用自己填任何命令和参数,新版本的 Skim 已经帮你做好了:

  1. 打开 Skim,按下快捷键 Command + , 打开选项
  2. 点击顶部的 同步 标签(英文是 Sync)
  3. 最上面的 预设(Preset)下拉框,你直接选 Visual Studio Code 就行!
    就这一步!选完之后,下面的命令和参数会自动帮你填好,完全不用你自己动手改,也不用管什么路径,Skim 自己会找到 VS Code 的位置。

测试一下配置是否生效

现在所有配置都搞定了,我们来测试一下能不能用:

  1. 新建一个简单的 LaTeX 文件,比如 test.tex,内容随便写点,比如:
bash 复制代码
\documentclass{article}
\begin{document}
Hello World!
This is a test.
\end{document}
  1. 按下 Command + S 保存,然后编译一下(LaTeX Workshop 默认保存就会自动编译)
  2. 这时候你会发现,PDF 自动用 Skim 打开了!
  3. 你在源码里把光标放到第二行,重新编译,会发现 Skim 自动跳转到了 PDF 的第二行,这就是正向同步生效了!
  4. 然后你在 Skim 里,按住 Command + Shift,点击 PDF 的某一行,会发现 VS Code 自动跳转到了对应的源码行,这就是反向同步生效了!

如果这两步都没问题,那恭喜你,配置成功了!

常见问题

  1. 为什么我用系统自带的 Preview 不行?
    因为 Preview 不支持 SyncTeX 同步协议!这是 Preview 本身的功能限制,不管你怎么配置,都没法实现双向同步,所以必须用 Skim 才行。
  2. 我之前用的是 SumatraPDF,现在换 Mac 了不习惯?
    不用不习惯,Skim 的体验比 SumatraPDF 在 Mac 上好用太多了,而且配置完同步之后,写 LaTeX 的效率会高很多。
  3. 编译完还是用内置预览打开?
    检查一下 VS Code 的 settings.json 有没有写错,是不是把配置加对地方了,有没有打错逗号或者引号。确认你装的是 LaTeX Workshop 插件,不是别的 LaTeX 插件。
相关推荐
郝亚军2 小时前
如何在vscode上运行python程序
ide·vscode·编辑器
Arvin.Angela2 小时前
VsCode 安装文档
ide·vscode·编辑器
CAir23 小时前
copilot配置deepseek和skills
vscode·copilot·skill·deepseek
小小程序员mono3 小时前
WWDC 2026 之后,M5 桌面 Mac 上市时间预测
macos·ios·wwdc
2601_961875244 小时前
高考真题电子版|2025高考全科真题分类PDF
金融·pdf·云计算·azure·七牛云存储·交友·高考
yuguo.im4 小时前
Mac M4 安装 sd-webui 踩坑全记录
macos·stable diffusion
质造者4 小时前
Python 本地 RAG 实战 | Ollama+ChromaDB 实现 PDF 离线智能问答
开发语言·python·pdf·大模型·rag
王莎莎-MinerU4 小时前
从 OCR 到 Context Engineering:用 MinerU 搭一个可复现文档解析评测
人工智能·深度学习·机器学习·pdf·ocr·个人开发
独隅5 小时前
Visual Studio Code 和 Visual Studio 2026 两大开发工具的核心差异
java·vscode·visual studio
芋头莎莎6 小时前
window 右键菜单添加 vscode
ide·vscode·编辑器