Sublime Text 是本节所列编辑器中唯一收费的一款,也是在你安装任何东西之前、除了一份语法定义之外对 LaTeX 一无所知的一款。它从未有过免费版,只有一个不强制期限的评估版——而个人许可证仍要一次性支付 99 美元,面对的却是一个免费的明显竞争者。把这个编辑器变成 LaTeX 环境的是 LaTeXTools。本页讲 LaTeXTools 究竟添了什么、Ctrl+B 背后为何最终跑的是 latexmk、这个包最出彩的 \ref/\cite 快速面板、走 upLaTeX 时该怎么写 .latexmkrc,以及——因为这才是读者真正犹豫的地方——今天选择 Sublime Text 意味着什么。
LaTeXTools 由谁编写,现在由谁维护
对于「LaTeXTools 是不是已经死了」这个疑问,答案是明确的没有。仓库建于 2011 年 3 月;README 把 Ian Bacher、Marciano Siniscalchi 与 Richard Stein 列为作者,并注明当前维护者是 DeathAxe。稳定版 4.5.14 发布于 2026 年 7 月 30 日,文中没有任何弃用声明,也没有「招募维护者」的字样。有一点值得留意:它的落脚处。它位于 GitHub 上名为 SublimeText 的组织,但那是社区组织而非 Sublime HQ 公司,其自我介绍就写着「由社区维护的软件包集合」。也就是说,编辑器与这个包分属完全不同的人。
安装走 Package Control 这条路。Package Control 本身并非随附代码,而是一个引导式安装器,用来拉取它的菜单项与命令面板条目自 Sublime Text 3 的 build 3124(2016 年 9 月)起就已存在。先打开命令面板(Windows 与 Linux 为 Ctrl+Shift+P,macOS 为 Cmd+Shift+P)执行 Install Package Control,再执行 Package Control: Install Package 并选择 LaTeXTools。无需重启:打开一个 .tex 文件,语法便切换为 LaTeX,各项功能随即生效。
之后必须做两件事。其一是准备设置文件:Preferences → Package Settings → LaTeXTools → Settings – User 会在你的 User 目录里生成一份可编辑的 LaTeXTools.sublime-settings。切勿去改插件文件夹里的默认文件——每次升级都会被覆盖。其二是体检:从命令面板执行 LaTeXTools: Check system,可以逐项看到 TeX 命令、PDF 阅读器与 subl 可执行文件是否被 LaTeXTools 看见。这条命令没有快捷键,只能从面板调用。出问题时第一个该敲的就是它。
Ctrl+B 背后跑的其实是 latexmk
构建走的是 Sublime Text 自己的 Ctrl+B(macOS 为 Cmd+B)。LaTeXTools 并不新增按键,而是直接替换构建系统本身。默认构建器为 traditional,一次构建会保存当前文件、启动 TeX 构建命令、解析日志并把错误、警告以及(若启用)overfull box 排进底部面板,最后打开 PDF 阅读器并正向搜索到光标处。点击面板里的错误行即可跳到该行;关掉面板后可用 Shift+Escape 把它叫回来。
关键在于:traditional 构建器的实体就是 latexmk。 在 TeX Live 与 MacTeX 上它调用 latexmk,在 MiKTeX 上调用 texify。默认命令行是这样的:-cd 在处理前先切换到源文件所在目录,-f 即使出错也尽可能继续,-interaction=nonstopmode 避免交互式停顿,-synctex=1 则输出后文前向与反向搜索所需的同步数据。而 %E 是一个占位符,会按所选引擎替换为 -pdf(pdfLaTeX)、-lualatex 或 -xelatex。换句话说,选择引擎不过就是改变 %E 展开成什么。
latexmk -cd -f -%E -interaction=nonstopmode -synctex=1由此引出一句警告,因为它专坑那些只装了「够用就好」的人:LaTeXTools 依赖 latexmk,而 latexmk 并不总是在场。 macOS 的 BasicTeX 不含它,所以要执行 sudo tlmgr install latexmk,或用 TeX Live Utility 装上,或把 builder 换成不需要它的那种。Ubuntu 也一样:apt-get install texlive 不会带来它,还得 apt-get install latexmk。在 MiKTeX 上构建器改调 texify,而 texify 对 output_directory、aux_directory 与 jobname 一概不支持;若你需要这些,就转到 basic 构建器(它支持这些,但不处理 makeindex)。另外 builder_settings 还接受 env 键,即一份只在构建期间生效的环境变量字典。
选择引擎最省事的办法,是文件开头的魔法注释。把它写在 .tex 的第一行,就会使用对应的引擎;不写则默认 pdfLaTeX。多文件项目里,这一行要放在根(主)文件中。为兼容 TeXShop,TS-program 表示同样的意思。可接受的值只有三个:pdflatex、lualatex、xelatex。这一系列还有别的成员:%!TEX options = ... 向引擎传递额外选项(比如 --shell-escape),%!TEX root = <master> 指定根文件,%!TEX output_directory 与 %!TEX jobname 决定生成文件放在哪里、叫什么名字。优先级值得记住——指令强过设置文件,而用 Ctrl+Shift+B 选中的构建变体又强过指令。 选了变体之后引擎怎么改都不动,原因就在这里。
%!TEX program = lualatex
%!TEX root = main.tex
%!TEX options = --shell-escape另一处要害是 texpath——启动 latexmk 之类时用来寻找 TeX 命令的 PATH。尤其在 macOS 上,从图形界面启动的 Sublime Text 与你的 shell 拥有不同的 PATH,值填错就会以「command not found」告终。铁律是 texpath 必须包含 $PATH:自己的路径在前,$PATH 在后。macOS 的典型值是 "/Library/TeX/texbin:$PATH";Windows 上则形如 "C:\\texlive\\2026\\bin\\windows;$PATH",按自己的安装位置调整。在 Windows 上还要把 distro 设为 "texlive" 或 "miktex" 以对应发行版。想换构建器,就把 builder 设为 basic(只跑引擎加 bibtex/biber 的最小配置)或 script(在 script_commands 里自己写命令序列)。
{
// LaTeXTools.sublime-settings (User)
"texpath": "/Library/TeX/texbin:$PATH",
"builder": "traditional",
"builder_settings": {
"program": "lualatex",
"options": ["--shell-escape"]
}
}一敲下 \ref{ 或 \cite{ 就弹出的快速面板
这是 LaTeXTools 用起来最舒服的地方。刚敲完 \ref{ 或 \cite{,屏幕上方就会落下一个快速面板——Sublime Text 自带的筛选列表。\ref{ 里装的是文档中所有的 \label;\cite{ 里装的是你通过 \bibliography{} 或 biblatex 的 \addbibresource{} 引用的文献文件中的全部条目。敲几个字符就能模糊筛选,选中后按 Enter,整条命令会被插入,比如 \ref{my-label}。在右花括号前打一个逗号,写成 \cite{paper1,,就能以同样方式挑选多重引用的第二个及之后的键。
有两个坑。其一,LaTeXTools 是从已保存的文件里收集候选的;如果刚加的标签或键没出现,先保存。其二,它只支持外部 .bib 文件,正文里直接写的 \bibitem 不会被收进来。若嫌自动弹出碍事,可以在设置里关掉;想手动呼出,就在 \ref{ 之类后面按 Ctrl+l, x(macOS 为 Cmd+l, x)或 Ctrl+l, Ctrl+f。cleveref、fancyref、varioref、natbib 与 biblatex 的引用与交叉引用命令同样能被识别。
还有两类补全。命令补全内置了源自 TeXStudio 的补全词表(CWL),一旦你用 \ 起头就会给出候选:敲 \te,\textit 之类便会列出。其行为由 command_completion 设置决定——prefixed(默认,仅当以 \ 开头时)、always 或 never。文档所加载宏包的候选由 cwl_autoload(默认开启)自动补上;启用 env_auto_trigger 后,\begin{/\end{ 的环境名也会被补全。另一类是 Fill Helper:敲下 \usepackage{、\include{、\input{ 或 \includegraphics{,它会列出已装宏包或当前目录的文件(\includegraphics 会筛出图像)。手动呼出用 Ctrl+l, Ctrl+f。唯一需要准备的是宏包补全:从命令面板执行一次 LaTeXTools: Build cache for LaTeX packages。
upLaTeX 与 dvipdfmx:把路线写进 .latexmkrc
这正是日文文档最容易卡住的地方。%!TEX program 只接受 pdflatex、lualatex、xelatex,因此无法直接指名 uplatex 或 platex。用 LuaLaTeX 排日文很简单:写上 %!TEX program = lualatex,再用 luatexja/ltjsclasses 系的文档类即可。麻烦的是先生成 DVI 再转成 PDF 的 upLaTeX + dvipdfmx 这条路线。
解决办法很直白:让 .latexmkrc 去选引擎。 既然 traditional 构建器的实体就是 latexmk,那么在项目目录(或家目录)里放一份 .latexmkrc,几乎不用改动 LaTeXTools 自身的设置,工具链就切到了日文路线。要点是:把 uplatex 赋给 $latex,把 dvipdfmx 赋给 $dvipdf,再用 $pdf_mode = 3 选定「先生成 DVI,再用 dvipdfmx 转成 PDF」这条路。同时把 -synctex=1 传给 $latex,即便经过 DVI,同步数据也能一路带到 PDF,后文的搜索才会生效。在 LaTeXTools 这一侧,不写 %!TEX program 行最为稳妥——写了就会选中 pdfLaTeX 的 %E。
$latex = 'uplatex -synctex=1 -interaction=nonstopmode -file-line-error %O %S';
$bibtex = 'upbibtex %O %B';
$biber = 'biber --bblencoding=utf8 -u -U --output_safechars %O %S';
$makeindex = 'upmendex %O -o %D %S';
$dvipdf = 'dvipdfmx %O -o %D %S';
$pdf_mode = 3;
$max_repeat = 5;若想更明确,可以用 builder_settings 里的 command 键直接指名 latexmk。写上 "command": "latexmk"(选项仍留在 .latexmkrc 里),就能保证跑的是为日文配置好的 latexmk。自定义 command 会关掉通过 %!TEX program 的引擎自动选择,但在把路线固定在 .latexmkrc 里的日文工作流中,这没有任何损失。latexmk 自身的配置归自动构建那一页管。
正向搜索是 Ctrl+l, j,反向搜索则在阅读器一侧配置
LaTeXTools 的默认构建命令里已经带了 -synctex=1,所以普通地按 Ctrl+B 就会自动写出同步数据(.synctex.gz)。之后只需一击:编辑 .tex 时按 Ctrl+l, j(macOS 为 Cmd+l, j),就能显示与光标对应的 PDF 页面。构建结束后也会自动执行一次正向搜索,所以单按 Ctrl+B 也会打开正确的位置。若只想打开 PDF 而不同步,用 Ctrl+l, v。另外,Ctrl+l 在裸的 Sublime Text 里是「把选择扩展到整行」,但在启用了 LaTeXTools 的 .tex 文件中,它成了该包各命令的前缀。SyncTeX 本身的原理另有专页。
反向搜索(PDF → 源码)靠的是阅读器回头呼叫 Sublime Text,因此配置在阅读器一侧。默认阅读器按平台固定,可用 viewer 设置更改:Windows 上是 SumatraPDF,macOS 上是 Skim,Linux 上是 Evince(Linux Mint 上为 XReader),Linux 上还可以选 Okular 与 Zathura。Sioyek 三个平台通用;以上这些阅读器都同时支持正向与反向搜索。要留神的例外是 macOS 的 Preview.app,它两种搜索都不支持。点击手势也各不相同:Skim 用 Cmd+Shift+点击,SumatraPDF 用双击,Evince 与 Zathura 用 Ctrl+左键,Okular 用 Shift+左键。
| viewer 的取值 | 操作系统 | 备注 |
|---|---|---|
skim | macOS | macOS 上的默认项,也是 macOS 上事实上唯一同时支持正向与反向搜索的阅读器 |
preview | macOS | 仅打开 Preview.app。正向与反向搜索都无法使用 |
sumatra | Windows | Windows 上的默认项。避免使用 Adobe 的 PDF 阅读器:它会锁住打开的 PDF,导致构建失败 |
evince | Linux | Linux 上的默认项。系统 Python 需要装有 dbus 绑定 |
okular | Linux | 反向搜索需在 Settings → Configure Okular → Editor 中登记 subl "%f:%l" |
zathura | Linux | 几乎无需配置即可运行;装上 wmctrl 或 xdotool 可让焦点控制更可靠 |
xreader | Linux | Linux Mint 上的默认项;处理方式与 Evince 基本相同 |
sioyek | Linux / macOS / Windows | 面向技术书籍与论文的阅读器;三个平台通用 |
command | Linux / macOS / Windows | 接入任意阅读器的后门:自己写 view_command 与 forward_sync_command |
macOS 的 Skim 只需在偏好设置的 Sync 标签页里选择「Sublime Text」预设。若是没有该预设的旧版本,就选 Custom,把 Command 设为 subl 的绝对路径(/Applications/Sublime Text.app/Contents/SharedSupport/bin/subl),Arguments 设为 "%file":%line。Windows 的 SumatraPDF 只有在打开带同步数据的 PDF 时才会出现反向搜索设置栏,所以先用 Ctrl+B 构建一次,在 Sumatra 里打开该 PDF,再到 Settings → Options 登记下面这条命令行。出问题时请按此顺序检查:构建是否带了 -synctex=1、阅读器的预设或命令是否正确、以及通过 LaTeXTools: Check system 看 sublime_executable(subl 的位置)是否可见。
"C:\\Program Files\\Sublime Text\\sublime_text.exe" "%f:%l"如今为了 LaTeX 还值得买 Sublime Text 吗
先把许可证的形态弄准。按 Sublime HQ 自己的说法,Sublime Text 可以免费下载并试用,但若要继续使用就必须购买许可证,而目前并未对试用设定强制期限。许可证按用户计:依 EULA,它在所有受支持的操作系统上有效,只要持有者是主要使用者,就可以用在多台计算机上。个人版是一次性购买,附带 3 年的更新;超过 3 年后若还想继续收到更新,则需升级。商用版形态不同,是按席位年付的订阅:前 10 个席位为每席每年 65 美元,席位越多单价越低,呈阶梯式(截至 2026 年 8 月,个人许可证为 99 美元)。
在此之上,还有两个数字值得诚实地看一看。其一是开发节奏:稳定版自 2025 年 5 月 21 日的 build 4200 之后就再未更新,到 2026 年 8 月已停了一年多(开发版已推进到 4207,但那只对许可证持有者开放)。其二是用户分布:在 Stack Overflow 的 2025 年开发者调查中,把 Visual Studio Code 列为所用集成开发环境的受访者占 75.9%,而 Sublime Text 为 10.5%——大约七倍之差。
不过判断依然清晰。如果你已经拥有 Sublime Text,而它的速度正是你这样工作的理由之一,那么 LaTeXTools 是一个完成度足够、且仍在维护的包——构建、补全、引用面板,需要的都在。反过来,如果你今天纯粹为了 LaTeX 而挑选编辑器,那么扩展的数量与现成的答案都在 VS Code 那一侧。从稿件的角度看,无论选哪边,你的 .tex、.bib 与 .latexmkrc 都一模一样,迁移成本不过是几份配置文件。于是话就落到真正的重点上:把构建固定在项目里,远比选哪个编辑器重要。
初次体检:只确认四件事
- 第一条该敲的命令: 从命令面板执行
LaTeXTools: Check system,确认 TeX 命令、PDF 阅读器与subl可执行文件都能被看到。 - 日文的岔路: 用 LuaLaTeX 就写
%!TEX program = lualatex;用 upLaTeX 则完全不写%!TEX program,把路线交给.latexmkrc。 - 出问题时:
Ctrl+B报「找不到命令」就查texpath;引用不更新就先保存再构建;从 PDF 回不到源码就查阅读器的反向搜索设置。 - 该做成项目的信号: 当插图或章节文件多起来,用 Sublime 项目或
%!TEX root固定主文件,让从任何标签页按Ctrl+B都产出同一份 PDF。