LaTeXTools 是 Sublime Text 上的一个插件,用以增强在 Sublime Text 上编辑和编译 LaTeX 文档的体验。但是其自带的编译脚本比较难用,缺点如下:
- 调用 LaTeXmk 或者 TeXify,多次编译,速度缓慢,难以切换。
- 无法在编译时方便地添加命令行参数,导致依赖
\write18命令的宏包(比如minted)无法使用。
为了解决这个问题,我自己写了一个编译脚本,命名为 advancedBuilder.py。
安装方法
- 在这里下载编译脚本;
- 打开 Sublime Text 目录;
- 将脚本拷贝至
./Packages/LaTeXTools/builders/; - 编辑
./Packages/User/LaTeXTools.sublime-settings,将"builder"值从原来的traditional改为advanced,即:"builder": "advanced"; - 重启 Sublime Text。
使用方法
基本的使用方法和原本的 traditionalBuilder.py 相同,即使用快捷键 Ctrl + B 编译(Mac OS X 是 CMD + B)。但在文档开头的注释中,增加了更多的用法。
改变编译流程
可以在主文档开头的注释中,使用下列语法改变编译流程。
1 |
其中 BUILDER 的可选值有:
SIMPLELATEXMKTEXIFY
大小写不论,默认是 SIMPLE,即只编译一遍。
选择编译引擎
此功能继承自默认编译脚本,有增强。
可以在主文档开头的注释中,使用下列语法改变编译引擎。
1 |
其中 PROGRAM 的可选值有:
pdflatexxelatexlualatexplatex-ngpdftexxetexluatexptex-ng
大小写敏感,默认值是 pdflatex。
选择编译参数
可以在主文档开头的注释中,使用下列语法添加编译参数。
1 |
其中 OPTION 的可选值为对 PROGRAM 合法的任意参数。大小写敏感,默认为空。
另外,强制启动 -interaction=nonstopmode 和 -synctex=1 两个参数,不允许更改。
指定主文档
此功能完整继承自默认编译脚本。
可以在子文档的开头注释中,使用下列语法指定主文档。
1 |
其中 ROOT 为主文档相对当前子文档的路径。指定主文档之后,可以在子文档中直接使用快捷键编译主文档,而不用将 Sublime Text 标签页切换到主文档再进行编译。
示例
1 | \documentclass{article} |
对应的命令行为:
1 | pdflatex -interaction=nonstopmode -synctex=1 foo.tex |
1 |
|
对应的命令行为:
1 | latexmk -cd -e $pdflatex = 'pdflatex -interaction=nonstopmode -synctex=1 %S %O' -f -pdf foo.tex |
1 |
|
对应的命令行为:
1 | latexmk -cd -e $pdflatex = 'xelatex -interaction=nonstopmode -synctex=1 -shell-escape %S %O' -f -pdf |
1 |
|
1 |
|
在 bar.tex 的窗口编译,命令行为:
1 | latexmk -cd -e $pdflatex = 'xelatex -interaction=nonstopmode -synctex=1 -shell-escape %S %O' -f -pdf |