Sublime Text 下的 LaTeX 及高级应用

Sublime Text 是一个很好的文本编辑器,它的各种方便的功能以及优美的代码高亮让人心旷神怡,相较于其他的编辑器还具有打开速度快的特点,使其在文本编辑器中占有一席之地。
那么在 Sublime Text 中如何编辑、编译 LaTeX 呢?又如何将其配置成超越 IDE 的神器呢?本文就是介绍这个的。

选择 Sublime Text 写 LaTeX 的理由

  • 优美的代码高亮
  • 高效的代码补全
  • 便利的自定义补全
  • 强大的快捷键
  • 近乎完美的辅助周边——如集成 Detexify、清理辅助文件、字数统计、跳转打开宏包说明文档、双向搜索
  • 公式、插图的实时预览
    实时预览
  • 列举环境下自动补全(Shift+Enter)\item 等信息。
    Item
  • 引用时的自动补全 (交叉引用、参考文献、宏包均支持)
  • 环境的自动扩展与快速修改
  • 文本编辑的功能(下划线、强调、加粗等等)快速完成
  • 便捷的自行搭建多发行版
  • 完善的魔术注释生态

下载列表清单

  • Sublime Text 3 & 相关插件如下(插件不需要在此处下载):
    • LaTeXTools LaTeX 环境配置以及编译
    • LaTeX-cwl LaTeX 命令的自动补全
    • LaTeXYZ 提供更加智能的数学环境下的自动补全以及快捷键
  • Sumatra PDF PDF 阅读器,以及用于双向搜索
  • ImageMagick & GhostScript 用于公式、插图的实时预览

开始搭建

安装 Sublime Text

官网下载 后双击执行,基本没什么要注意的。
注:Sublime Text 是收费软件,但是试用版享有所有的功能,只是偶尔弹出购买的对话框,相较于大多数收费软件算十分良心了。

安装 Package Control

依次点击 Tools -> Install Package Control,或者参考 官网 给出的两种方法。

插件安装

Control+Shift+P,输入 pcip(找到 Package Control: Install Package),回车后,输入 LaTeX,找到待安装的插件—— LaTeXTools、LaTeX-cwl、LaTeXYZ 等等,依次敲回车后进行安装。

注意:

  • 插件安装后需要重启 Sublime Text 方能生效,尤其是安装 Package Control 后。

  • 在安装 LaTeXTools 之前需要安装有 TeX 发行版,如 MikTeX、TeXLive 等。安装好该插件后可以依次点击 Preferences -> Package Settings -> LaTeXTools -> Check System 来对环境进行检测。

关于插件的功能,之后会再提到。

安装 Sumatra PDF

官网下载 后执行安装。

接下来是配置 Sumatra PDF 用于反向搜索:

  • 由于最新版本的 Sumatra PDF 关闭了直接设置反向搜索选项功能,所以我们需要先编译一个简单的 tex 文档,然后才能够进行配置。

    测试样例如下,将其复制粘贴后命名为 test.tex (只要名字不含中文均可),然后将其编译(在 Sublime Text 中按 Ctrl+B)。

    1
    2
    3
    4
    5
    \documentclass{article}

    \begin{document}
    Hello, \LaTeX{}.
    \end{document}

    接下来用 Sumatra PDF 打开生成的 PDF,然后点击左上角,找到设置,然后点击选项,在最下方添加以下字符:

    1
    "C:\Program Files\Sublime Text 3\sublime_text.exe" "%f:%l"

    如图所示。
    反向搜索

  • 你也可以用命令行执行以下代码以完成配置(未测试过此方法是否仍然可行)
    注:此种方法须将 SumatraPDF 添加到系统环境变量 Path 中。

    1
    sumatrapdf.exe -inverse-search "\"C:\Program Files\Sublime Text 2\sublime_text.exe\"\"%f:%l\""

    想来,直接在高级选项中添加如下代码应该也是可以的

    1
    InverseSearchCmdLine = "C:\Program Files\Sublime Text 3\sublime_text.exe" "%f:%l"

注:不论哪种方法,你都需要将 Sublime text 的安装路径改成你自己的安装路径。
至此,你就可以在 Sumatra PDF 中点击跳转到相应的代码了——不管该代码是否在 Sublime Text 中打开。

安装 ImageMagick & GhostScript

这一步是为了实现行间公式和插图的实时预览。

  • 安装 ImageMagick
    这一步需要注意的是,必须勾选上两个:添加系统环境变量、安装实用工具,如图所示:

  • 安装 GhostScript
    官网 上下载后安装。

    至此,你就可以享用在 TeX 环境下由 LaTeXTools 插件带来的在线查看行间公式以及插图的功能了。

    注:如果在使用过程中,出现了某一个实时预览不消失的情况,请点击 Ctrl+Shift+P 后输入 lcc 找到 LaTeXTools: clear cache 清除一下缓存。

LaTeXTools 高级应用

设置

依次点击 Preferences -> Package Settings -> LaTeXTools -> Settings-User 可以打开设置文件。

亦可以在 官网上查看

设置文件里面的注释说得很清楚,基本上可以让懂得英语的人看懂每一项设置是什么。

设置文件分为以下几个部分——

  • 通用设置:参考文献、交叉引用等常用功能的监视器与触发器开关
  • 预览设置:与数学公式、插图相关的设置
  • 辅助文件设置:指明哪些是辅助文件,以确认在使用 Ctrl+L,Backspace 时所需清理的辅助文件
  • 平台设置:与平台相关的设置,如发行版路径、发行版类型、终端平台、编辑器平台等等
  • 输出目录设置:日志之类的文件输出设置
  • 构建器设置:一般不涉及,使用默认即可
  • 构建面板设置:错误、警告信息相关设置
  • 阅读器设置:默认值与平台相关
  • 可于代码中打开的文件类型设置:主要用于插图时的提示
  • 参考文献设置:如使用 BibTeX 还是 BibLaTeX,参考文献应用时格式的自动生成等
  • 缓存选项

这里只提点两个地方

  • “texpath” 用以发行版的指定路径,如果自己要用两种发行版的话,这里不能指定,留空即可,系统会自动添加 $Path 参数。
  • “distro” 用以指定发行版类型,默认为 MiKTeX,TeXLive 用户最好指定一下,以消除 Check System 中不必要的参数。

常用快捷键

所有的快捷键都可以在 Sublime-keymap 中找到,亦可以去 官网 查看。

注意:

  • 在使用时,键盘须是英文状态。
  • 快捷键大多数是以 ctrl+l 开始的。
  • Mac 下请将 ctrl 换成 command

自动补全

LaTeXTools 插件为常规文本和数学文本提供了相当丰富的自动补全功能,这些自动补全都以 Tab 键作为触发。
你可以在 LaTeXTools 插件的安装目录里面看到 LaTeX.sublime-completionsLaTeX math.sublime-completions,这两个文件分别定义了常规文本模式下和数学模式下的自动补全,它们都以 Tab 键作为触发。

  • 在数学模式下,主要提供的是希腊字母的自动补全。
  • 在常规文本下,提供了常用环境的简写以实现补全功能。

自定义自动补全

我们可以仿照 LaTeX.sublime-completions 的模式,添加自己所需要的自动补全。
如添加以下一行

1
{"trigger": "befr", "contents": "\\begin{frame}{$1}\n$0\n\\end{frame}"}

就可以实现在 Sublime Text 中输入 befr 后按 Tab 就自动扩展为后面的内容了。
注意:$ 后数字越大,光标先出现在那儿,按了 Tab 后光标会按数字降序移动。

此外,Shift+Enter 也为我们提供了一个非常好的功能,那就是当光标所处环境为 itemize、enumerate 时,自动添加 \item ,而如果只是敲 Enter 则仅有为文本编辑器自带的换行功能——即换行加缩进,如果环境为 description,则会添加、item[] ,这个无疑为列举环境的快速书写提供了很大的便利。

修改编译选项与多发行版的集成

在 LaTeXTools 包文件中用 Sublime Text 打开 LaTeX.sublime-build。
以下是经我修改过的一段配置文件

1
2
3
4
5
{
"name": "TL - XeLaTeX",
"builder": "basic",
"program": "xelatex"
},

namebuilderprogram 均是默认参数,name 用以指定编译选项中的名称,program 用以指定最终执行的编译引擎,这些引擎均是可以在系统环境变量 Path 下可以找到的编译引擎。

如何进行多发行版的配置呢?
只需要添加一个参数 builder_path, 以下是我修改过的一部分配置文件,这样在我使用 Ctrl+Shift+B 后,就可以出来两个选项 —— TL - XeLaTeXMiK - XeLaTeX
经检测(编译后查看. log 文件)是可以实现多发行版的指定的。

1
2
3
4
5
6
7
8
9
10
11
12
{
"name": "TL - XeLaTeX",
"builder": "basic",
"builder_path":"C:\\texlive\\2018\\bin\\win32",
"program": "xelatex"
},

{
"name": "MiK - XeLaTeX",
"builder_path": "C:\\MiKTeX\\miktex\\bin\\x64",
"program": "xelatex"
},

需要注意的是,json 中路径要么用 /,要么用 \\

魔术注释

很多编辑器支持魔术注释,Sublime Text 亦不例外,到目前为止,支持多种魔术注释。

  • 编译引擎指定,这个是有提示的,支持所有的编译引擎。
1
% !TEX program = xelatex  (pdflatex,lualatex...)
  • 文件编码指定为 UTF-8,支持几乎所有的编码
1
% !TEX encoding = UTF-8  (utf8)
  • 编译选项指定,如在使用 minted 时需要添加这个。
1
% !TEX options = --shell-escape
  • 主文件指定,在使用 input、include 导入文档时用这个指定主文件,实现在其他文件界面时编译的文件是主文件。
1
%!TEX root = <master file name>
  • 拼写检查,设置 Sublime Text 中集成的拼写检查器的语言。
1
%!TEX spellcheck

其余的魔术注释请参考可以参考 官方文档

其他 feature

其他 feature,均可去 官方文档 中查询到,此处不再赘述。
基本都可以在 Ctrl+Shift+P 后输入 LaTeX 后找到。

LaTeXYZ 简介

LaTeXYZ 提供了更多的数学环境下的自动补全,诸如各种箭头符号、带定界符的括号等的快捷输入。官方说明 里面有更多的信息。

LaTeXYZ 和 LaTeXTools 自带的补全有相同的地方 —— 都是用 Tab 进行扩展触发,但是也有不同的地方,LaTeXYZ 提供了不少以 ` 开始的自动补全,如分数 (\frac) 为 `+/。

总之,LaTeXYZ 提供的数学环境自动补全支持还是挺好的。
当然除了当在数学环境下选中某些字符,试图添加 “{}”,结果变成了 “\{ \}“ 外。