vscode本身不编译latex,仅调度xelatex、latexmk等系统工具;必须先在终端验证xelatex --version和latexmk --version能输出版本号,确保path配置正确,并在settings.json中显式指定xelatex引擎及-synctex=1等参数。

VSCode 本身不编译 LaTeX,它只调用系统里的 xelatex、latexmk 等命令;环境没配对,插件再全也编译失败——90% 的“找不到命令”“乱码”“PDF 不跳转”问题,都卡在系统工具链或参数上。
确认 xelatex 和 latexmk 在终端可用
LaTeX Workshop 不会帮你装编译器,只从 PATH 里找。如果终端运行 xelatex --version 或 latexmk --version 报 “command not found”,VSCode 必定失败。
- Windows:安装 TeX Live 时必须勾选 “Add TeX Live to PATH”;漏了就手动把类似
C:\texlive\2024\bin\win32加进系统环境变量 - macOS:用
brew install --cask mactex(别用basictex);装完后运行echo $PATH确认/Library/TeX/texbin在里面 - Linux:运行
sudo apt install texlive-latex-recommended texlive-latex-extra latexmk;只装texlive-base不够 - 验证方式:关掉 VSCode 内置终端,用系统终端(Terminal / cmd / PowerShell)执行
which xelatex和which latexmk,两个都必须有输出 - 改完
PATH后,VSCode 必须完全退出再重开,否则读不到新路径
配置 latex-workshop.latex.tools 显式指定 xelatex 引擎
默认 recipe 用的是 pdflatex,中文文档一编译就报字体缺失或乱码——这不是插件 bug,是引擎选错了。
微软正式发布 Visual Studio Code 1.118 版本 。本次更新重点强化了 AI 开发体验与企业管理能力,其中最引人注目的是新增 Copilot CLI 远程控制功能,允许开发者通过手机或网页远程监控和接管 AI 会话 。同时,为了提高 AI 的运行性价比,新版本优化了令牌缓存策略以降低成本 。此外,1.118 版还引入了 Chronicle 本地历史追踪、TypeScript 7.0 支持以及更严格的企业级访问管控 。
- 在 VSCode 中按
Ctrl+Shift+P→ 输入Preferences: Open User Settings (JSON),编辑settings.json -
latex-workshop.latex.tools中必须定义xelatex工具,且args包含:-synctex=1(否则 PDF 无法跳回源码)、-interaction=nonstopmode(避免卡在错误提示)、-file-line-error(精准定位报错行)、%DOCFILE%(比%DOC%更可靠,尤其多目录项目) - 别混用
pdflatex和xelatex配置;同一项目只保留一种主引擎定义 - 如果用了 BibTeX,recipe 要写成
["xelatex", "bibtex", "xelatex", "xelatex"],不能只跑一遍
中文支持必须用 ctex + xelatex + 显式字体声明
光装 ctex 宏包没用;xelatex 找不到系统字体就会 fallback 成方块,甚至死循环编译。
- 主文件第一行必须是
\documentclass[UTF8]{ctexart}(或ctexrep/ctexbook),不能是article+ 手动加xeCJK - 导言区显式声明字体:
\setmainfont{Noto Serif CJK SC}(macOS/Linux)、\setmainfont{"Microsoft YaHei"}(Windows,带空格必须加引号) - 别重复加载
fontspec或xeCJK——ctex已内置,冲突会导致fontspec error或静默卡住 - Windows 用户若用
SimSun,确保系统真有该字体(部分精简版 Win10/11 默认不带)
多文件项目必须声明 % !TEX root = main.tex
VSCode 默认只把当前打开的 .tex 文件当编译目标。如果你拆了 intro.tex、method.tex,又没告诉插件哪个是主文件,\cite{xxx} 全显示 ??,参考文献根本不出。
- 在每个子文件(如
intro.tex)顶部第一行加注释:% !TEX root = main.tex - 或者在 VSCode 命令面板(
Ctrl+Shift+P)运行LaTeX Workshop: Set Root File手动指定 - 检查设置中
latex-workshop.latex.search.rootFiles.include是否包含你的主文件名模式(默认是**/*.{tex,cls,sty,bib}) - 子文件路径必须正确:
\input{chapters/intro}对应的是chapters/intro.tex,不是chapters/intro或chapters/intro.tex.tex
最常被忽略的其实是 % !TEX root 注释和 -synctex=1 参数——前者让整个项目结构可识别,后者让 PDF 跳转真正可用;缺一个,长论文协作或调试就立刻降级成“盲编”。










