ubuntu20.04下vim+vimtex编写latex的利器
ubuntu20.04下vim+vimtex编写latex的利器
之所以推荐vimtex编写latex是因为,vimtex属于实时编译预览的插件,使用起来更加方便。
- vimtex 实时编译,并预览
- vim-latex 只是编译和预览,并不能实时呈现,需要每次 “\ll” 和 "\lv"
- latex-live-preview 可以实时预览,但是不能编译生成pdf文档
而vimtex 基本上可以说是 vim-latex 和 latex-live-preview的综合,只需要一次 “\ll” ,更新内容后,记得保存,保存后就会刷新pdf文档。但是在当前目录下生成的中间文件有点多,有强迫症的同学会看着不舒服。
Latex的学习,请参考我的另外文章:
在开始正文之前,请看下效果图(左边是vim,右边是zathura)
系统环境
- ubuntu20.04
- i3wm,平铺式桌面管理器(我喜爱i3wm的简洁,比ubuntu原生自带的用着舒服)
安装中文环境的latex套件
既然要编写latex文档,那么编译套件必不可少。
或许有的同学会疑惑,不是要使用vimtex编写latex文档吗,为什么要安装latex套件?其实我刚开始接触的时候也会有这样的疑惑,
能看到本文的同学,应该大部分都多少会点c语言吧,这里以ubuntu下C语言编程为例来回答上述疑惑:C语言的编写使用的是文本编辑工具(例如vim,gedit等),编译使用的是gcc。
- latex套件 就好比是gcc编译套件
- vimtex 就好比文本编辑工具
安装命令如下:
sudo apt-get install texlive-latex-base latex-cjk-all texlive-latex-extra sudo apt-get install texlive-xetex texlive-publishers
这里面的部分介绍,请参考我的另外一篇文章(ubuntu20.04下vim+vim-latex+latex-live-preview编写中文latex文档)中的 “安装中文环境的latex套件” 部分,这里不再累述。
vimtex的安装与配置
本文使用vim-plug插件管理器安装vimtex,如果不会使用vim-plug的同学,可以参考我的另外一篇文章(ubuntu20.04安装之后需要做的事),这里不再累述。
安装vimtex
编辑你本地的vimrc文件,录入如下代码
call plug#begin('~/.vim/plugged') Plug 'lervag/vimtex' call plug#end()
之后在命令行模式下输入:“PlugInstall”,即可安装vimtex,安装完成后会有finish标志,请注意查看。
注意,安装完vimtex插件后,也要安装vimtex的编辑器 “latexmk”:
sudo apt-get install latexmk
PDF阅读器 zathura
vmtex推荐的pdf阅读器是zathura,这里也使用zathura。
“注意”:ubuntu14.04 对要求的zathura的支持不够完整,若有想在ubuntu14.04下实现该环境的同学,请使用其他的pdf阅读器,比如 “okular”。
sudo apt-get install zathura xdotool
- xdotool 是zathura必须的一个模块
vimtex 与 zathura的配置
打开自己的vimrc文件,录入如下配置(包括安装vimtex的配置)
filetype indent on call plug#begin('~/.vim/plugged') Plug 'lervag/vimtex' call plug#end() " vimtex配置 " let g:tex_flavor='latex' let g:vimtex_view_method='zathura' let g:vimtex_quickfix_mode=0 set conceallevel=1 let g:tex_conceal='abdmg' " 对中文的支持 let g:Tex_CompileRule_pdf = 'xelatex -synctex=1 --interaction=nonstopmode $*'
安装conceal需要的插件
有没有被只有的动图惊艳到
里面会把一些latex语法替换成相应的符号,并隐藏语法和 [,],$等,其实这个实时替换是通过如下两个插件实现的,但是有一点,并不是所有的语法都能预览替换,但是也能替换一大部分。
call plug#begin('~/.vim/plugged') Plug 'KeitaNakamura/tex-conceal.vim', {'for': 'tex'} Plug 'wjakob/wjakob.vim' call plug#end()
vimrc配置
安装完相应插件后,需要把插件配置起来,如下是我的完整配置
filetype indent on set number call plug#begin('~/.vim/plugged') Plug 'lervag/vimtex' Plug 'KeitaNakamura/tex-conceal.vim', {'for': 'tex'} Plug 'wjakob/wjakob.vim' call plug#end() " vimtex配置 " let g:tex_flavor='latex' let g:vimtex_view_method='zathura' let g:vimtex_quickfix_mode=0 " 对中文的支持 let g:Tex_CompileRule_pdf = 'xelatex -synctex=1 --interaction=nonstopmode $*' let g:vimtex_compiler_latexmk_engines = {'_':'-xelatex'} let g:vimtex_compiler_latexrun_engines ={'_':'xelatex'} set conceallevel=2 #这里建议写成2,写1时替换后的效果不好看 let g:tex_conceal='abdmg'
注意: 在vimrc中配好插件后,记得使用 “PlugInstall” 命令安装插件。
一个例子
用vim编写test.tex文件,录入如下内容后保存
%! Tex program = xelatex \documentclass{article} \usepackage[UTF8]{ctex} \begin{document} 你好,china \\ $f^{(n)}(z) $ $\sqrt{x} $ $\underbrace{a+b+\cdots+z}_{26} $ $\pm $ $\sum \bigcup \bigvee \bigwedge \prod \coprod $ feichanghao \end{document}
说明: 上述中的 “$ … $” 是开启行内数学模式,用于和文本合在一起使用。也可以使用 “ \ [ … \ ] ” ,使用 “\ [ … \ ]” 的格式如下:
\[ $\sqrt{x} \]
使用 “\ll” 命令编译该文件时,就会生成如效果图版的pdf文件。
又一个例子
latex使用tikzpicture 来绘制各种数学图形,其使用的包是 “\usepackage{tikz}”
%! Tex program = xelatex \documentclass{article} \usepackage[UTF8]{ctex} \usepackage{tikz} \begin{document} \begin{figure} \begin{tikzpicture} \draw[->](-1.2,0)--(1.2,0)node[left,below,font=\tiny]{$x$}; \draw[->](0,-0.2)--(0,1.2)node[right,font=\tiny]{$y$}; \draw[dashed](-1.2,1)--(1.2,1); \foreach \x in {-1,-0.5,0,0.5,1}{\draw(\x,0)--(\x,0.05)node[below,outer sep=2pt,font=\tiny]at(\x,0){\x};} \foreach \y in {0.5,1}{\draw(0,\y)--(0.05,\y)node[left,outer sep=2pt,font=\tiny]at(0,\y){\y};} \draw[color=red ,domain=-1.2:1.2]plot(\x,{1/(1+(e^(-1*(\x))))}); \end{tikzpicture} \end{figure} 该图的表达式是: \[ sigmoid(x) = \frac{1}{1 + e^{-x}} \] \end{document}
使用 “\ll” 命令编译该文件时,就会生成如下效果图版的pdf文件。
这个绘制数学图形的实现,主要是参考 uncle_gy 的《Latex 绘制函数图像》,十分感谢。
Snippets安装与配置
参考网上大神所述,下面给出我自己的相关配置
安装与配置
我还是使用的vim-plug做的插件安装
call plug#begin('~/.vim/plugged') Plug 'SirVer/ultisnips' Plug 'keelii/vim-snippets' "这是别人的片段库,你也可以配置自己的,也可以根据这个来改 call plug#end() " 片段配置,输入关键字后,按tab键补全片段 let g:UltiSnipsExpandTrigger = '<tab>' let g:UltiSnipsJumpForwardTrigger = '<tab>' let g:UltiSnipsJumpBackwardTrigger = '<s-tab>'
使用
keelii的片段库中没有 tex.snippets 文件,而这个文件是latex 文档需要的片段路,命名规则是
根据文件后缀名来加载,tex文件就加载 tex.snippets。
tex.snippets 文件位置: ~/.vim/plugged/vim-snippets/UltiSnips ,我的配置如下:
priority -50 snippet today "Date" `date +%F` endsnippet snippet box "Box" `!p snip.rv = '┌' + '─' * (len(t[1]) + 2) + '┐'` │ $1 │ `!p snip.rv = '└' + '─' * (len(t[1]) + 2) + '┘'` $0 endsnippet snippet beg "begin{} / end{}" bA \begin{$1} $0 \end{$1} endsnippet snippet mk "Math" wA $${1}$`!p if t[2] and t[2][0] not in [',', '.', '?', '-', ' ']: snip.rv = ' ' else: snip.rv = '' `$2 endsnippet snippet dm "Math" wA \[ $1 \] $0 endsnippet
上面的这些片段是参考国外小哥配置的,我们也可以根据自己的需要,在里面增删自己需要的配置。
小结
至此,算是把vim编写latex文档的配置工作完成了,也就是说可以初步达到《1700页数学笔记火了》文章描述的工作环境了,或许在编写的过程中,大家需要自己的代码片段快捷键,也都可以自己手动配置。
注意,也可以把英文关键字,替换为中文字符哦,如果有需要的话,也可以使用 Snippets 配置中文编程语言的开发环境。
下一步的计划是编写一篇《Latex入门教程》,有需要的同学,敬请期待啊……
参考资料
- https://www.geek-share.com/detail/2724765062.html
- https://keelii.com/2018/08/26/vim-plugin-ultisnips-advanced-tips/
- Ubuntu下使用vim编写makefile文件出现错误 "makefile: *** missing separator. stop ."的解决办法
- Linux环境下代码阅读与编写的利器----vim+ctags+cscope
- ubuntu10.10下vim的latex配置
- Ubuntu下的vim + latex + latex-live-preview
- ubuntu10.10下vim的latex配置
- 用vim编写LaTeX的小结
- Ubuntu 18.04/20.04下安装Vim 8.2
- 第一次使用Ubuntu的Vim编写C,简单的gcc编译方法
- Ubuntu18.04下vim+latex-live-preview搭建
- Ubuntu下LaTeX+vim安装与使用
- Ubuntu下终端Vim编写C语言程序
- vim下编写html的超级利器emmet
- Ubuntu16.04如何把vim打造成为latex编辑器
- 20160808 笔记 ubuntu,vim简单命令在ubuntu下编写nodejs
- vim使用latex(vimtex+vim-live-preview)
- 你应该知道关于 Ubuntu 20.04 LTS 的一些事
- vim-程序员的利器
- 如何在 Ubuntu 安装 Go 语言编写的 Git 服务器 Gogs | Linux 中国
- [转]Vim 中编写 Python 程序
- Mac开发利器之程序员编辑器MacVim学习总结