06使用 LaTeX Workshop 编译与预览文档

配置 LaTeX Workshop 的 recipe、编译工具、自动构建、辅助文件清理和 PDF 预览。

2026-08-10
VS CodeLaTeXLaTeX WorkshoplatexmkPDF
本章目录 · 6

LaTeX Workshop 负责从 VS Code 调用 LaTeX 工具链、解析日志并预览 PDF,但它不包含 TeX compiler。开始前需要先安装 TeX Live 或 MiKTeX,并确认终端可以找到 latexmkpdflatexxelatex

安装扩展并检查工具链

code --install-extension james-yu.latex-workshop
latexmk --version
xelatex --version

工具命令在普通终端中不可用时,先修复 TeX distribution 的安装或 PATH,不要在每一条 VS Code recipe 中写死安装目录。

优先使用 latexmk

LaTeX 文档可能需要多次编译,并在中间调用 BibTeX 或 Biber。latexmk 会根据依赖自动决定需要执行哪些步骤,比手写 pdflatex → bibtex → pdflatex → pdflatex 更容易维护。LaTeX Workshop 默认也提供 latexmk recipe。LaTeX Workshop: Compile

使用 pdfLaTeX 时,默认 recipe 通常已经足够。需要 XeLaTeX 时可以增加一套明确的工具:

{
  "latex-workshop.latex.recipes": [
    {
      "name": "latexmk (XeLaTeX)",
      "tools": ["latexmk-xelatex"]
    }
  ],
  "latex-workshop.latex.tools": [
    {
      "name": "latexmk-xelatex",
      "command": "latexmk",
      "args": [
        "-synctex=1",
        "-interaction=nonstopmode",
        "-file-line-error",
        "-xelatex",
        "-outdir=%OUTDIR%",
        "%DOC%"
      ]
    }
  ],
  "latex-workshop.latex.recipe.default": "first"
}

%DOC%%OUTDIR% 等由 LaTeX Workshop 在运行时替换,因此配置可以跨项目和电脑使用。

不同项目使用不同 engine 时,不必把所有人的用户设置改成 XeLaTeX。可以把 recipe 放进项目 .vscode/settings.json,或者在 root .tex 文件中使用项目已经约定的构建方式。

自动构建不要过于频繁

{
  "latex-workshop.latex.autoBuild.run": "onSave"
}

onSave 适合普通文档:保存后构建一次,不会在每个按键后触发工具链。大型文档、需要外部数据或编译时间较长时,可以关闭自动构建并手动运行 LaTeX Workshop: Build LaTeX project

自动构建使用 latex-workshop.latex.recipe.default 指定的 recipe。值为 "first" 时使用列表第一项,"lastUsed" 则重复上一次手工选择。

优先使用内置 PDF viewer

{
  "latex-workshop.view.pdf.viewer": "tab"
}

内置 viewer 不需要本机可执行文件路径,支持自动刷新和 SyncTeX,因而比下面这种配置更容易迁移:

{
  "latex-workshop.view.pdf.viewer": "external",
  "latex-workshop.view.pdf.external.viewer.command": "D:/specific/viewer.exe"
}

确实依赖外部阅读器功能时,再把 command 保存在本机用户设置中,不要提交给项目。LaTeX Workshop: View

清理辅助文件

latexmk 已经知道自己生成了哪些中间文件。手动清理时可以继续使用扩展默认的 latexmk clean command,而不必维护一长串扩展名:

{
  "latex-workshop.latex.clean.method": "command",
  "latex-workshop.latex.clean.command": "latexmk",
  "latex-workshop.latex.clean.args": [
    "-outdir=%OUTDIR%",
    "-c",
    "%TEX%"
  ],
  "latex-workshop.latex.autoClean.run": "never"
}

保持 autoClean: "never" 可以留下 .aux.fls 等供增量构建和 root-file 分析使用。需要清理时运行 LaTeX Workshop: Clean up auxiliary files;不建议每次成功构建后自动删除全部中间文件。

多文件项目先确认 root file

LaTeX Workshop 会从 \documentclass\input\include 等关系寻找 root document。无法正确识别时,在子文件开头加入:

% !TEX root = ../main.tex

然后重新运行构建。只有 root 判断正确,recipe、PDF 路径、引用和 SyncTeX 才会指向同一份文档。

一份精简配置
{
  "latex-workshop.latex.recipes": [
    {
      "name": "latexmk (XeLaTeX)",
      "tools": ["latexmk-xelatex"]
    }
  ],
  "latex-workshop.latex.tools": [
    {
      "name": "latexmk-xelatex",
      "command": "latexmk",
      "args": [
        "-synctex=1",
        "-interaction=nonstopmode",
        "-file-line-error",
        "-xelatex",
        "-outdir=%OUTDIR%",
        "%DOC%"
      ]
    }
  ],
  "latex-workshop.latex.recipe.default": "first",
  "latex-workshop.latex.autoBuild.run": "onSave",
  "latex-workshop.view.pdf.viewer": "tab",
  "latex-workshop.latex.autoClean.run": "never"
}

配置完成后,用一个包含引用和 bibliography 的小项目测试,而不只是编译单页 Hello World。依次确认 Problems pane 能定位错误、保存会触发构建、PDF 自动刷新,以及从源码到 PDF 的 SyncTeX 跳转正常。