最近在写博客的时候发现对数学公式的支持并不好,于是就想寻找一个解决方案。我本身是一个爱折腾的人,有时尽管有现成的解决方案我有事也不愿意去用。于是多方查找资料,想寻求一个自定义的解决方案,最终把自己的目标定为:使用自己喜爱的文本编辑器Vim写tex代码,能够在Vim中方便的编译tex并生成pdf,当tex文件改变时pdf能够实时做出变化。下面就是我为了达成这个目标所做的一些工作。
1.目前的文本编辑器大多都支持markdown语法,也都具有对LaTeX公式的支持。那么在现成的文本编辑器中加入LaTex数学公式似乎是一个很简单的问题。下面进行一个试验:我将在本文本编辑器中输入一下一串公式:
$x^n + x^{n-1} + \cdots + x$
熟悉LaTex的朋友肯定能看出这一串代表什么。看看效果如何 -> $x^n + x^{n-1} + \cdots + x$
可见本文本编辑器(TinyMCE)能够正确识别LaTex数学公式,那么我最初的愿望也就实现了:在博客中能够随心所欲的书写数学公式。但是我又是爱折腾的人,能够在Vim中写LaTex代码并且实时呈现在pdf的变化上成了我下一个目标。
2.使用Vim写tex其实并不困难。Vim是可以正确识别Tex文件格式的,只要你把文件名的后缀改成.tex。那么简单的书写LaTex代码肯定是没问题了,接下来我查找资料得到了这样一个插件:Vimtex,插件安装很简单,常规的Plugin安装即可,安装完成后只需要按下<Leader> ll,.tex文件就会自动编译,并且产生pdf。然而这个插件默认是调用系统默认的pdfviewer接口,所以运行<Leader> ll之后打开了我的PDF Expert并且把pdf正确显示出来了。而且当重新保存.tex文件之后,pdf会实时更新,只不过很慢。于是我查找这个插件的文档,选择在系统中安装skim这个开源的pdfviewer,使用brew cask安装即可。安装完成后在.vimrc配置vimtex插件如下。
Plug 'lervag/vimtex' "帮助写latex let g:vimtex_latexmk_options='-pdf -pdflatex="xelatex -synctex=1 \%S \%O" -verbose -file-line-error -interaction=nonstopmode' let g:tex_flavor='latex' let g:vimtex_view_method='skim' let g:vimtex_quickfix_mode=0 set conceallevel=1 let g:tex_conceal='abdmg'
最后两行配置了tex文件的隐藏功能,参看这里https://castel.dev/post/lecture-notes-1/
The last two lines configure the concealment. This is a feature where LaTeX code is replaced or made invisible when your cursor is not on that line. By making \[
, \]
, $
invisible, they’re less obtrusive which gives you a better overview of the document. This feature also replaces \bigcap
by by ∩
, \in
by ∈
etc.
3.按理说按照以上的步骤,已经达到了目的。使用Vim写LaTex,使用<Leader> ll 命令实时编译产生pdf 但是在测试时发现对中文编译时会失败。解决方法是在文件头加上这样一串代码:
%! Tex program = xelatex
将编译软件换成对中文支持更好的xelatex,目前没有发现更好的解决办法。
下面看看最终的效果:
确实达到了预期的目标。需要改进的是LaTex语法的自动补全等等,因为自己刚刚入门,留待日后钻研。
下面附上这个文章的核心Vimtex的简易命令说明:
Start compiling the document with '\ll'
Open pdf viewer and/or do forward searching with '\lv'
Stop the running compilation with '\ll' (or 'lk')
To parse the log file for errors and warnings, press '\le'
To clearn auxiliary files, press '\lc' (or '\lC' to remove pdf's)