LaTeX Workshop是VS Code中唯一持续更新且真正可用的LaTeX插件,它作为调度器依赖系统PATH中的latexmk/xelatex等编译器,需确保终端可执行、正确配置ctex+XeLaTeX、显式声明主文件及使用支持热重载的外部PDF查看器。

LaTeX Workshop 是唯一能真正跑起来的插件,其他如 LaTeX 或 LaTeX Tools 已长期不更新,装了也白装。
确认系统级编译器在终端可用
VSCode 不自带编译器,LaTeX Workshop 只是调度器。它调用的是你系统 PATH 里的命令。如果终端里运行 latexmk --version 或 xelatex --version 报 “command not found”,那 VSCode 编译必失败,且错误提示常是模糊的 “no recipe found”。
- macOS:装完
MacTeX后,需手动把/Library/TeX/texbin加进$PATH(尤其用brew install --cask mactex安装后) - Windows:安装
TeX Live时务必勾选 “Add TeX Live to PATH”;若装的是MiKTeX,必须勾选 “Add MiKTeX to PATH for all users” - Linux:别只装
texlive-base,要装texlive-full(Ubuntu/Debian)或texlive-most(Arch),再单独sudo apt install latexmk
验证方式:在 VSCode 内置终端(Ctrl+`)中运行 which latexmk 和 which xelatex,两个都必须有输出。
中文论文必须用 ctex + XeLaTeX 组合
用article 类 + 手动加 xeCJK 容易漏字体、拼错名、冲突报错;而 ctex 宏包已封装编码、字体、章节样式等一整套逻辑,配合 XeLaTeX 基本零配置就能出效果。
- 主文件第一行必须是
\documentclass[UTF8]{ctexart}(或ctexrep/ctexbook),不能是article+ 自己加载xeCJK - 不要在导言区重复加载
fontspec或xeCJK——ctex已内置,加了反而卡住或报fontspec error - VSCode 中右键空白处 → “
LaTeX Workshop: Select Recipe to Build” → 选含xelatex的 recipe(如xelatex → bibtex → xelatex ×2) - 确保
settings.json中xelatex的args包含-synctex=1和-interaction=nonstopmode
多文件项目必须声明 root 文件
VSCode 默认只认当前打开的.tex 文件为编译目标。如果你把引言、方法、实验拆成 intro.tex、method.tex 等,又没告诉 LaTeX Workshop 哪个是主文件,bibtex 和 \ref 就全失效。
- 在主文件(如
main.tex)顶部第一行加注释:% !TEX root = main.tex - 或在工作区根目录下建
.vscode/settings.json,写入:"latex-workshop.latex.rootFile.enabled": true - 别依赖插件自动探测——它经常猜错,尤其当目录下有多个
.tex文件时
PDF 预览不刷新?先关掉 tab 模式
默认启用的synctex 反向搜索(Ctrl+Click PDF 跳回源码)会锁住 PDF 文件,导致修改后不重载。这不是 bug,是 Adobe Reader 或某些查看器的行为限制。
- 换用
Skim(macOS)或SumatraPDF(Windows),它们支持文件系统级热重载 - VSCode 设置中把
latex-workshop.view.pdf.viewer改为external,并填对绝对路径,例如 Windows 下设:"latex-workshop.view.pdf.external.viewer.command": "C:\Program Files\SumatraPDF\SumatraPDF.exe" - 别碰
latex-workshop.view.pdf.internal.synctex.afterBuild.enabled这个开关——关了它虽能强制刷新,但会彻底失去点击跳转能力
复杂点在于:四个条件必须同时满足——latexmk 和 xelatex 在终端可用、ctex + XeLaTeX 引擎对齐、% !TEX root 显式声明、PDF 查看器支持热重载。漏一个,就卡在「编译成功但 PDF 不变」或「中文全方块」这种看似玄学的问题里。


















