sublime text 本身不编译 latex,完全依赖系统安装的 latexmk、xelatex 等工具;配置失败主因是命令不可达、路径错误或子文件未声明 %!tex root 注释。

Sublime Text 本身不编译 LaTeX,所有编译行为都依赖你系统里装好的 latexmk、xelatex 或 lualatex。配置失败的根源 90% 是命令找不到、路径没对上、或子文件没声明主文档——不是插件坏了,也不是 Sublime 不行。
验证 latexmk 和 xelatex 能否在终端直接运行
这是最常被跳过的一步,但决定后续一切是否有效。
- 打开终端(macOS/Linux)或命令提示符(Windows),依次执行:
latexmk -v
和xelatex --version
- 两者都必须返回版本信息;若报
command not found,说明工具没装或不在PATH中 - Windows 用户装 MiKTeX 时务必勾选「Add MiKTeX to the system PATH」;macOS 用 MacTeX 后,确认
/Library/TeX/texbin已加入 shell 的$PATH(运行echo $PATH查看) - Linux 用户若用
apt install texlive-full,latexmk通常已包含;但精简镜像(如某些 Docker 镜像)需手动补装:sudo apt install latexmk
手动配置 tex_path,禁用自动探测
use_simple_detection 会扫描 PATH 却忽略你实际 bin 目录的位置,尤其在多 TeX 环境或自定义路径下极易失效。
- 进入 Preferences → Package Settings → LaTeXTools → Settings – User
- 粘贴完整配置,不要留空、不要依赖默认值,例如 macOS + MacTeX:
{ "tex_path": "/Library/TeX/texbin", "builder": "latexmk", "builder_settings": { "cmd": ["latexmk", "-pdfxe", "-quiet", "-synctex=1", "-interaction=nonstopmode", "$file"] }, "view_pdf_viewer": "skim" } -
tex_path必须精确到含可执行文件的目录(不是安装根目录),多个路径用冒号(macOS/Linux)或分号(Windows)分隔 - 删掉配置里任何
"use_simple_detection": true字段,它会覆盖你手动设的tex_path
子文件第一行必须加 %!TEX root = main.tex
论文项目必然拆成 main.tex + ch1.tex + refs.bib 等,Sublime 不会自动识别主文件。
- 在每个子文件(如
ch1.tex)的**第一行,且只能有一行**,写入:%!TEX root = main.tex -
main.tex必须与子文件在同一目录,或使用相对路径(如../main.tex) - 如果路径含中文、空格或特殊字符,
latexmk极易失败;建议整个项目路径全用英文、无空格 - 不加这行注释,Sublime 默认以当前打开文件为主文档,
\include{}、\bibliography{}全部失效
PDF 同步失效?检查 synctex 和预览器绑定
点 PDF 跳不回源码,或根本打不开 PDF,问题几乎都在预览器设置和 synctex 生成环节。
- 确保编译命令带
-synctex=1参数(上面builder_settings.cmd示例已包含) -
main.pdf和main.synctex.gz必须在**同一目录**、同名;不要把输出设到output/子目录 - macOS 必须用 Skim(Preview.app 不支持反向搜索),并在 Skim 的 Preferences → Sync 中:
– 勾选「Enable SyncTeX」
– 「PDF viewer」设为 Sublime Text
– 勾选「Check for file changes」 - Windows 用 SumatraPDF,需在命令行执行:
sumatrapdf.exe -inverse-search "\"C:\path\to\sublime_text.exe\" \"%f:%l\""(路径需真实存在)
最容易被忽略的是:Sublime 启动方式不同,可能读不到你 shell 配置里的 PATH 或字体环境;验证方法是在 Sublime 控制台(Ctrl+`)中运行 import os; print(os.environ.get('PATH')),确认输出里真有 TeX 的 bin 路径。











