在此之前我用过TeXStudio和VS code了(注意编译器与编辑器的区别)。但是TeXStudio界面有点难看,写代码没感觉。并且我要写书用的模板,在TeXStudio下总是编译有问题(虽然跟编辑器无关,应该是编译器顺序的问题,但我没能力排查)。VS code界面超级好看,我也配置好了,但还是用Latex插件辅助编译有问题。然后又转战到Sublime Text,配置完就编译很正常。。。。玄学。。。

所以记录一下Sublime Text的配置。

主要参考https://noc-leung.gitbook.io/techdocs/

一、 配置Sublime

  1. 下载最新版Sublime https://www.sublimetext.com/
  2. 在Sublime上安装Package Controlhttps://packagecontrol.io/installation
    1. 在线安装:按住快捷键Ctrl+Shift+P或者点击Tool->Command Palette... 进入控制台再输入Install Package Control,点击Enter确认。这个方法。。。很可能安装失败。需要翻墙。
    2. 推荐使用手动安装方法,在https://packagecontrol.io/installation的Manual下,过程非常详细。先下载Package Control.sublime-package包; 再点击Preferences -> Browse Packages…,在打开的文件夹的上一层文件夹下找到Installed Packages/文件夹,把刚才下载的包文件复制进去重启Sublime即可。
  3. 安装**LaTeXTools ** 1. 安装好Package Control就能安装LaTeXTools 了。继续按按住快捷键Ctrl+Shift+P或者点击Tool->Command Palette... 进入控制台。 2. 输入install,看到Package Control: Install Package。再按Enter, 可能需要等一会儿,别急。等他加载出来一个输入框。 3. 在输入框里输入latextools再安装即可。重启Sublime生效

此时Sublime是配置好了,再点击Preferences -> Settings, 在User设置里加上一行

"keep_focus": false

目的是为了之后编译latex后让pdf显示在前面

二、 安装TeXLive

TeXLive安装过程完全按照的 Install-LaTeX.pdf即可, 感谢大佬的奉献,此处不再赘述。

安装完后再配置**LaTeXTools **

  1. 点击Preferences -> Package Settings ->LatexTools ->Setting-User进入LaTeXTools 的设置。

  2. 安装SumatraPDF用来打开编译生成的PDF,以及之后进行正反向搜索。https://www.sumatrapdfreader.org/free-pdf-reader.html

  3. 在打开的文件里按Ctrl+F查找关键词windows, 找到windows平台下的相关配置。

    	"windows": {
    		// Path used when invoking tex & friends; "" is fine for MiKTeX
    		// For TeXlive 2011 (or other years) use
    		// "texpath" : "C:\\texlive\\2011\\bin\\win32;$PATH",
    		"texpath" : "D:\\Software\\texlive\\2020\\bin\\win32;$PATH",//Latex编译器的 的路径,按照TeXLive的安装路径即可。
    		// TeX distro: "miktex" or "texlive"
    		"distro" : "texlive",//用的miktex还是texlive
    		// Command to invoke Sumatra. If blank, "SumatraPDF.exe" is used (it has to be on your PATH)
    		"sumatra": "D:\\Software\\SumatraPDF\\SumatraPDF.exe",//SumatraPDF的路径
    		// Command to invoke Sublime Text. Used if the keep_focus toggle is true.
    		// If blank, "subl.exe" or "sublime_text.exe" will be used.
    		"sublime_executable": "D:\\Software\\Sublime Text 3\\sublime_text.exe", //sublime_text的路径
    		// how long (in seconds) to wait after the jump_to_pdf command completes
    		// before switching focus back to Sublime Text. This may need to be
    		// adjusted depending on your machine and configuration.
    		"keep_focus_delay": 0.5
    	},
    

    务必配置好上面的路径。

三、使用Sublime+Latex

1.编译

打开.tex文件后按Ctrl+B或者点击Tools -> Build进行编译。注意选择编译器是xelatex还是pdflatex哦。

2. 正向搜索

也就是从LaTex代码跳转到PDF文件的位置。

在配置好上面SumatraPDF路径的情况下点击Ctrl+L, J

注意!!!这里是Ctrl+LJ快速先后连按。我这个就纠结了好长时间。怎么按Ctrl+L都跳转不了,还以为是Ctrl+LJ都行呢。

3. 反向搜索

也就是从PDF文件的位置代码跳转到LaTex源代码的位置。

先配置一下

  1. 打开SumatraPDF点击设置->选项搜索命令行下面的框里输入

  2. 设置反向搜索命令行下面的框里输入

    "D:/Software/Sublime Text 3/sublime_text.exe" "%f":"%l"

    注意!!!

    sublime text的路径要用双引号括住,里面要用斜杠/分开,用反斜杠\就不行。都是踩的坑呀。

    2020.08.11更新

    我发现有的时候安装,并没有设置反向搜索命令行这个选项,可能是版本问题?

    解决方案:点击设置->高级选项,打开一个txt文本文件,在最后面加上一句

    InverseSearchCmdLine = "D:/Software/Sublime Text 3/sublime_text.exe"  "%f":"%l"
    

    就好啦,效果跟上面是等价的。

然后。在PDF文件里双击某个位置就好啦

四、使用技巧

1. 分多个tex文件编写

一般一个书的每一章都单独写一个tex文件,然后再主文件\include{}即可。但是编译的时候,在每个子tex文件按编译的话。texstudio会自动找到主文件,可是sublime不会自动找,它只编译当前的子tex文件,正向搜索也会出问题。我也困惑了好久,睡一觉就想到了解决方法。

只需要在子tex文件上最开始加上一行即可。也就是

%!TEX root = ../book.tex

指定一下主tex文件是谁就好啦。

注: ..的意思是上一层文件夹,所以../book.tex就是上一层文件夹的book.tex文件。根据自己的文件组织方式自行修改即可。

2. 添加拼写检查

点击Preferences -> Settings打开用户设置

加上一行

"spell_check": true,

如果想改字体什么的加上

"caret_style": "phase",
"font_face": "YaHei Consolas Hybrid",
"font_size": 12,
"highlight_line": true,
"highlight_modified_tabs": true,

2020.8.27更新

发现写的太慢,找了点方便快捷的方法

3. 添加补全命令

也就是安装一个插件

快捷键Ctrl+Shift+P->输入install->点击Package Control: Install Package->输入LaTeX-cwl->回车安装即可

然后重启sublime就可以啦。按\后就有命令提醒啦

cwl

4. 添加snippet代码段

snippet就是实现了一个狸猫换太子,用一个单词就能插入一段代码

  1. 新建一个snippet

snippet1

  1. 插入代码

    <snippet>
        <!-- 快速补全的内容 -->
        <!-- 1表示第一个输入点,1后加冒号和字符表示默认值 -->
        <!-- 如System.out.println(${1:"Hello World"}),可输入多行代码 -->
         <!-- 比如我这里就设置了三行代码,光标放在中间,没有默认值 -->
        <content><![CDATA[
        	\begin{equation}  
        	${1}
        	\end{equation}
        	]]></content>
        <!-- 触发字符 -->
        <!-- 这个输入前面equ也可以触发的 -->
        <tabTrigger>equation</tabTrigger>
        <!-- 指定的语法才会触发,可选 -->
        <!-- 必须把完整的语言名写在后缀中 -->
        <scope>text.tex</scope>
        <!-- 触发时的提示 -->
        <description>Latex equation</description>
    </snippet>
    

    我也暂时试了这一个,之后再慢慢加其他。

    注意scope指定语法还是很有必要的,我在本节最后收藏一下所有编程语言的关键字

  2. 保存这个snippet,注意文件的后缀名一定要是.sublime-snippet, 文件名可自行选择

  3. 重启后就可以使用啦

scope关键字

ActionScript: source.actionscript.2

AppleScript: source.applescript

ASP: source.asp

Batch FIle: source.dosbatch

C#: source.cs

C++: source.c++

Clojure: source.clojure

CoffeeScript: source.coffee

CSS: source.css

D: source.d

Diff: source.diff

Erlang: source.erlang

Go: source.go

GraphViz: source.dot

Groovy: source.groovy

Haskell: source.haskell

HTML: text.html(.basic)

JSP: text.html.jsp

Java: source.java

Java Properties: source.java-props

Java Doc: text.html.javadoc

JSON: source.json

Javascript: source.js

BibTex: source.bibtex

Latex Log: text.log.latex

Latex Memoir: text.tex.latex.memoir

Latex: text.tex.latex

LESS: source.css.less

TeX: text.tex

Lisp: source.lisp

Lua: source.lua

MakeFile: source.makefile

Markdown: text.html.markdown

Multi Markdown: text.html.markdown.multimarkdown

Matlab: source.matlab

Objective-C: source.objc

Objective-C++: source.objc++

OCaml campl4: source.camlp4.ocaml

OCaml: source.ocaml

OCamllex: source.ocamllex

Perl: source.perl

PHP: source.php

Regular Expression(python): source.regexp.python

Python: source.python

R Console: source.r-console

R: source.r

Ruby on Rails: source.ruby.rails

Ruby HAML: text.haml

SQL(Ruby): source.sql.ruby

Regular Expression: source.regexp

RestructuredText: text.restructuredtext

Ruby: source.ruby

SASS: source.sass

Scala: source.scala

Shell Script: source.shell

SQL: source.sql

Stylus: source.stylus

TCL: source.tcl

HTML(TCL): text.html.tcl

Plain text: text.plain

Textile: text.html.textile

XML: text.xml

XSL: text.xml.xsl

YAML: source.yaml