最近在写博客的时候发现对数学公式的支持并不好,于是就想寻找一个解决方案。我本身是一个爱折腾的人,有时尽管有现成的解决方案我有事也不愿意去用。于是多方查找资料,想寻求一个自定义的解决方案,最终把自己的目标定为:使用自己喜爱的文本编辑器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)

最新文章

  1. 深入浅出React Native 1: 环境配置
  2. 进程控制块(Process Control Block, PCB)
  3. 【转】SPDY协议
  4. VS2010 刷新工具箱(刷新自定义控件)
  5. EntityFramework_MVC4中EF5 新手入门教程之五 ---5.通过 Entity Framework 读取相关数据
  6. KafkaOffsetMonitor监控
  7. 【Itext】7步制作Itext5页眉页脚pdf实现第几页共几页
  8. 几种Android数据序列化方案
  9. 关于C++中char 型变量的地址输出
  10. Codeforces 437 D. The Child and Zoo 并查集
  11. Python中使用hashlib进行加密的简单使用
  12. Linux基本命令总结(六)
  13. Android x86 下运行纯ARM版APP
  14. elasticsearch 口水篇(3)java客户端 - Jest
  15. android view surfaceView GLSurfaceView
  16. scRNA-seq测序的两种技术[转载]
  17. Memcached append 命令
  18. centos7安装zabbix3.2详解
  19. Python中sorted函数的用法(转)
  20. java.net.SocketException: No buffer space available 异常

热门文章

  1. js-实现多列布局(瀑布流)
  2. MySQL高可用篇之MHA集群
  3. Spring笔记 - 组件注册
  4. 0507 构造代码块和static案例,接口interface
  5. 记录我在Docker 中一步一步搭建Mysql 数据库存开发环境
  6. [PHP学习教程 - 数字]001.数字补0(Num padding)
  7. [256个管理学理论]003.鳄鱼法则(Alligator Principle)
  8. echarts的时间轴的提示内容写在轴下方
  9. Javascript中target事件属性,事件的目标节点的获取。
  10. (Java实现) 洛谷 P1603 斯诺登的密码