在Qt creator, Sublime Text 3, VS Code中添加相关的snippets,让这些编辑器可以得心应手的处理LaTeX公式。
最近用LaTeX写作业,包括在博客里面用MathJax,输入公式总需要一个自动补全的编辑器。用TeX Studio用着很不顺手,因为它的自动补全是用回车键,而我习惯TAB键。于是只能用别的编辑器来替代了。
Sublime Text 3
首先是Sublime Text 3,这个有相应的LaTeX插件LaTeX Tools,比较方便。为了让它自动补全更加智能,需要在用户设置中增加下面一条语句:
"auto_complete_selector": "source, text",
不过这样仅仅是针对.tex文件,为了让平时写Markdown文件时也能有自动补全,还需要自己写sublime的sublime-completions文件。这个文件可以存储多个snippet,而一个sublime-snippet文件只能存储一个snippet.在文件中加入如下语句:
{
//"scope": "text.html - source - meta.tag, punctuation.definition.tag.begin",
"completions":
[
{ "trigger": "frac", "contents": "frac{$1}{$2}$0" },
{ "trigger": "bmatrix", "contents": "\\begin{matrix}\n${1}\n\\end{matrix}\n$0" },
{ "trigger": "mathbf", "contents": "mathbf{$1}{$2}$0" },
{ "trigger": "equaton", "contents": "\\begin{equation}\n${1}\n\\end{equation}\n$0"},
{ "trigger": "\\begin", "contents": "\\begin{$1}\n${2}\n\\end{$1}\n$0"}
]
}
大体上常用的也就是这些了,这样能够大大提升写作效率。
Qt Creator
没错,这是一个IDE,但是也可以充分挖掘它的文字编辑器功能。用Qt Creator打开一个Markdown文件,这个时候它会问你是否加载高亮方案,选择加载可以发现很多可以用的高亮格式,是基于Kate编辑器的所以非常齐全,把SQL, Markdown, LaTeX等等常用的高亮方案都下载下来。
接着就是设置snippet了,在Qt中可以不用手动地自己编写xml文件,只需要工具-选项-文本编辑器-片段里面自己设置一些snippet.最后生成的xml文件如下:
<?xml version="1.0" encoding="UTF-8"?>
<snippets>
<snippet group="Text" trigger="begin" id="" complement="" removed="false" modified="false">begin{$environment$}
$$
\\end{$environment$}
$next$</snippet>
<snippet group="Text" trigger="bmatrix" id="" complement="" removed="false" modified="false">\\begin{bmatrix}
$$
\\end{bmatrix}
$next$</snippet>
<snippet group="Text" trigger="equation" id="" complement="" removed="false" modified="false">\\begin{equation}
$$
\\end{equation}
$next$</snippet>
<snippet group="Text" trigger="frac" id="" complement="" removed="false" modified="false">frac{$num$}{$den$}$$</snippet>
<snippet group="Text" trigger="global" id="text_global" complement="example" removed="false" modified="true">// This is available in all editors.</snippet>
<snippet group="Text" trigger="mathbf" id="" complement="" removed="false" modified="false">mathbf{$$}$next$
</snippet>
</snippets>
其实还可以自己开发Qt Creator的插件,实现LaTeX文件的编译、预览这些。不过总的来说,Qt Creator的功能稍差些。但是我平时使用这个IDE的机会比较多,偶尔也会用这个处理一些文件。
VS Code
这个也是比较容易设置的,代码如下:
{
// Place your global snippets here. Each snippet is defined under a snippet name and has a scope, prefix, body and
// description. Add comma separated ids of the languages where the snippet is applicable in the scope field. If scope
// is left empty or omitted, the snippet gets applied to all languages. The prefix is what is
// used to trigger the snippet and the body will be expanded and inserted. Possible variables are:
// $1, $2 for tab stops, $0 for the final cursor position, and ${1:label}, ${2:another} for placeholders.
// Placeholders with the same ids are connected.
// Example:
// "Print to console": {
// "scope": "javascript,typescript",
// "prefix": "log",
// "body": [
// "console.log('$1');",
// "$2"
// ],
// "description": "Log output to console"
// }
"eqn": {
"prefix": "equation",
"body": [
"\\begin{equation}\n$1\n\\end{equation}"
],
"description": "A LaTeX equation"
}
}
不过一开始我很奇怪,同样设置了snippet,在LaTeX文件中就会提示,但是Markdown文件中就不提示。GOOGLE了一把,发现原因是:
Full extensions get auto (7x24) completion by default (e.g. latex, cake), some built-in extensions like Markdown do not.
所以需要进行特定语言设置:敲击Ctrl+Shift+P,输入Configure language specific settings,输入Markdown,进行下面的设置:
"[markdown]": {
"editor.quickSuggestions":true
}
更新:我发现了支持TAB键补全的LaTeX编辑器:TeXMaker,在写tex文件时就用TeXMaker了,不过在写Markdown文件时还是这些文本编辑器更好用,因为有时还需要打开别的类型的文件。