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 插件。
相关推荐
2501_9159214313 小时前
从零开始学 Swift iOS 开发 iOS应用入门
ide·vscode·ios·objective-c·个人开发·swift·敏捷流程
一叶龙洲13 小时前
ubuntu26.04 xfce美化成mac
服务器·ubuntu·macos
李小白杂货铺1 天前
Oh My Zsh 简记
macos·macbook·zsh·主题·插件·oh my zsh·omz
蜡台1 天前
uniapp pdf文件预览组件
pdf·uni-app·合同·pdfh5
爱吃提升1 天前
VSCode 配置 Claude + Codex 完整教程
ide·vscode·编辑器
Am-Chestnuts1 天前
【无标题】
pdf
王莎莎-MinerU1 天前
MCP 解决的是工具接入,科研 Agent 还缺的是科学证据接口标准化
开发语言·网络·人工智能·深度学习·pdf·c#·php
协享科技1 天前
AI 读 PDF 的 2026 选型:ChatPDF、PDF.ai、通义智文之外,更要看证据链
人工智能·pdf
云泽8081 天前
VSCode入门指南:从认识、安装到语言插件配置全解析
ide·vscode·编辑器
fukai77221 天前
macOS防止休眠的菜单栏小工具
macos