您的位置:首页 > 其它

ubuntu20.04下vim+vimtex编写latex的利器

2020-07-14 06:19 93 查看

ubuntu20.04下vim+vimtex编写latex的利器

  • 一个例子
  • 又一个例子
  • Snippets安装与配置
  • 小结
  • 参考资料
  • 之所以推荐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入门教程》,有需要的同学,敬请期待啊……

    参考资料

    1. https://www.geek-share.com/detail/2724765062.html
    2. https://keelii.com/2018/08/26/vim-plugin-ultisnips-advanced-tips/
    内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
    标签: