最近在写博客的时候发现对数学公式的支持并不好,于是就想寻找一个解决方案。我本身是一个爱折腾的人,有时尽管有现成的解决方案我有事也不愿意去用。于是多方查找资料,想寻求一个自定义的解决方案,最终把自己的目标定为:使用自己喜爱的文本编辑器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 con­fig­ure the con­ceal­ment. This is a fea­ture where LaTeX code is re­placed or made in­vis­i­ble when your cur­sor is not on that line. By mak­ing \[\]$ in­vis­i­ble, they’re less ob­tru­sive which gives you a bet­ter overview of the doc­u­ment. This fea­ture also re­places \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)

使用Vim写LaTeX代码(Vim+Vimtex+Skim)的更多相关文章

  1. 用vim写go代码——vim-go插件

    GoImport:导入包 GoImport!:导入远程包 GoImportAs: 导入包并且重命名

  2. gvim写html代码时如何快速地跳转到一个标签的结束位置: 终极插件: matchit.vim

    gvim写html代码时如何快速地跳转到一个标签的结束位置 参考这个vimrc的配置, 里面有一些 很好的东西, 配置很有用, 以前没有用到: http://www.cnblogs.com/wangj ...

  3. 【转】vim格式化C代码

    转自:http://blog.chinaunix.net/uid-24774106-id-3396220.html 在自己的目录下编辑自己的.vimrc, vim ~/.vimrc 添加下面的几行: ...

  4. Vim 写 iOS App

    Vim 写 iOS App 我们都知道 Vim 和 Emacs 都是文本编辑器中的上古神器,你也许用 ctags,cscopes 配合 Vim 完成过大型 C 或者 C++ 的开发,你也许配合过其他插 ...

  5. linux常用终端指令+如何用vim写一个c程序并运行

    在装好ubuntu之后今天学习了一些linux的一些基础知识: windows里面打开命令窗口是win+r,在linux系统里面,ctrl+alt+t打开终端,今天的一些指令都是围绕终端来说的 首先s ...

  6. 就是要用Vim写Vue

    Vim关于Vue的生态链还是很少,不过凑活凑活还是能用的. 缩进 缩进采用的是两个空格,.vimrc配置: au BufNewFile,BufRead *.html,*.js,*.vue set ta ...

  7. vim(5)vim下wimrc的配置,解决中文乱码问题

    解决linux下vim乱码的情况:(修改vimrc的内容) 全局的情况下:即所有用户都能用这个配置 文件地址:/etc/vimrc 在文件中添加: ,ucs-bom,gb18030,gbk,gb231 ...

  8. VIM学习一: VIM命令学习及插件介绍

    一.光标移动及编辑命令(含查找替换) [打开关闭窗口] :e file或:open file       打开新文档 :q或者ctrl+w+q         关闭当前视图的窗口 :tab split ...

  9. 【vim】mac配置vim,molokai配色

    效果如下: 首先修改主目录下的.vimrc: "======================================================================= ...

随机推荐

  1. layui 让弹窗始终居中于屏幕

    前话:今天用 layer.confirm()  弹窗的时候,滚动到页面尾部再弹窗时,发现弹窗还显示在上面,要滚动会上面才能看到. 度娘找了一个获取滚动条位置的方法: function ScollPos ...

  2. 【XSS-labs】Level 1-5

    写在前面: 这个闯关游戏旨在理解XSS的原理并运用各种姿势绕过对于XSS攻击的过滤和限制. 这个练习只要弹出弹框即可过关 ,每一关我也会附上payload和源代码的解析 Level 1 观察源码 &l ...

  3. [不得不知道系列]Java线程面试你不得不知道的基础知识一

    Java内存管理面试指南一 Java基础面试指南一 Java基础面试指南二 Java基础面试指南三 Java基础面试指南四 Java线程面试指南一 Java线程面试指南二 Redis面试指南一 Kaf ...

  4. 强力解决使用node版本管理工具 NVM 出现的问题(找不到 node,或者找不到 npm)

    nvm是好用的Nodejs版本管理工具, 通过它可以方便地在本地调换Node版本. 2020-05-28 当前长期稳定版12.17.0,于是 nvm install 12.17.0 然后C:/nvm/ ...

  5. Order by 优化

    写在前面 文章涉及到的 customer 表来源于案例库 sakila,下载地址为 http://downloads.mysql.com/docs/sakila-db.zip MySQL 排序方式 通 ...

  6. 安卓到底是不是Linux

    有人说安卓就是 Linux,也有人说安卓是安卓.Linux 是 Linux,两者没什么关系,还有人说安卓用的是 Linux 的内核,那么它们之间到底是什么关系呢.要想得到这个问题的答案,我们要先弄清楚 ...

  7. Alink漫谈(五) : 迭代计算和Superstep

    Alink漫谈(五) : 迭代计算和Superstep 目录 Alink漫谈(五) : 迭代计算和Superstep 0x00 摘要 0x01 缘由 0x02 背景概念 2.1 四层执行图 2.2 T ...

  8. abp(net core)+easyui+efcore实现仓储管理系统——出库管理之一(四十九)

    abp(net core)+easyui+efcore实现仓储管理系统目录 abp(net core)+easyui+efcore实现仓储管理系统——ABP总体介绍(一) abp(net core)+ ...

  9. HashiCorp遭禁不必过于担忧,博云云管产品自主可控

    近日,国外知名 DevOps 服务商 HashiCorp 官网相关条款页面更新,声明中表示禁止在中国使用其 Vault 企业版产品,此事件引发国内开源界广泛关注. HashiCorp解释是由于中国的出 ...

  10. 从软件开发到 AI 领域工程师:模型训练篇

    前言 4 月热播的韩剧<王国>,不知道大家有没有看?我一集不落地看完了.王子元子出生时,正逢宫内僵尸作乱,元子也被咬了一口,但是由于大脑神经元尚未形成,寄生虫无法控制神经元,所以医女在做了 ...