vim-latex 整合latexmk

作者: 怪客 | 来源:发表于2016-02-10 15:53 被阅读645次

(该文已发布在我的个人博客

今日体验了一把vim-latex 插件,感觉很棒,然而挑剔的我还是遇到了几个问题:

  1. OSX 系统中Alt 键相关的快捷键失效。

  2. 插件自带的编译快捷键\ll只能用pdflatex 引擎,并且有编号的时候需要多编译几次,而我通常使用的是xetex 引擎。

问题1 比较容易解决,把用到的Alt 相关快捷键重新绑定到Meta(Option)键上,经过一番Google,参考vim-latex 插件文档[1] 以及sidyll 在stackoverflow 上解决关于alt 的绑定的方法[2] 的灵感,作出解决方案:(~/.vimrc)

imap ¬ <Plug>Tex_LeftRight
imap ∫ <Plug>Tex_MathBF
imap ç <Plug>Tex_MathCal
imap ˆ <Plug>Tex_InsertItemOnThisLine

问题2 稍微棘手一点,也绕了一个弯。首先参考了Mass 在tex.stackexchange上的关于设置xelatex的方法[3] 作出如下修改:
(~/.vimrc)

function ComplieWithXeTeX()
    let oldRule = g:Tex_CompileRule_pdf
    let g:Tex_CompileRule_pdf = 'xelatex --synctex=-1 -src-specials -interaction=nonstopmode $*'
    call Tex_RunLaTeX()
    let g:Tex_CompileRule_pdf = oldRule
endfunction
map <Leader>lx :<C-U>call ComplieWithXeTeX()<CR>

通过临时改变Tex_CompileRule_pdf这个内置参数,来调用所需引擎 。现在,问题似乎解决了,通过lx来使用xelatex,ll启动pdflatex,但是,有编号的时候,比如引用公式,则需要编译多次,不太方便,曾样才能像使用latexmk 这个命令这么方便呢?在Brian 的博客[4]的启发下,得到如下解决办法:
(~/.vimrc)

function CompileWithLatexmk()
    let targ = expand("%:t")
    execute '!latexmk '. targ
    call ErrorCheck()
endfunction
function ErrorCheck()
    let log = expand("%:r") . "." . "log"
    try
         silent execute 'vimgrep /^!/ ' . log
        copen
        catch /^Vim\%((\a\+)\)\=:E480/
    endtry
endfunction
map <Leader>lg :<C-U>call CompileWithLatexmk()<CR>

加入了错误日志回复,虽然也能用了,但是和原生的插件错误日志显示完全不同,关闭会关闭整个文档。正当一筹莫展之际,灵感一现的我突然想到,如果把第一个方法结合latexmk,不就完美了?所以最终解决方案如下:
(~/.vimrc)

function ComplieWithXeTeX()
    let oldRule = g:Tex_CompileRule_pdf
    let g:Tex_CompileRule_pdf = 'latexmk --synctex=-1 -src-specials -interaction=nonstopmode $*'
    call Tex_RunLaTeX()
    let g:Tex_CompileRule_pdf = oldRule
endfunction
map <Leader>lx :<C-U>call ComplieWithXeTeX()<CR>

function CleanTempFiles()
    execute '!latexmk -c'
endfunction
map <Leader>lc :<C-U>call CleanTempFiles()<CR>

其实就是把xelatex换成latexmk,最后还增加定义了自动清理临时文件的命令。

最后,祭出我的.latexmkrc[5],希望能帮到偶然读到的人。

Share to Improve~


  1. Vim-latex User Manual 10.1 Latex-Suite Maps

  2. Can I map Alt key in Vim?

  3. How to make vim short key for xelatex and pdflatex both?

  4. Compile with Latexmk in Vim

  5. My Github Gist

相关文章

  • vim-latex 整合latexmk

    (该文已发布在我的个人博客) 今日体验了一把vim-latex 插件,感觉很棒,然而挑剔的我还是遇到了几个问题: ...

  • latexmk配置

    Windows 下配置文件路径:C:\latexmk\LatexMk $pdf_mode=5: 使用 xelate...

  • `latexmk`

    latexmk 的学习(自用) 其实是把翻译给咕掉了, 先把实用的东西写了, 方便查阅, 剩下的嘛, 考完研再说吧...

  • TeX之中文索引以及符号列表

    我们使用latexmk可以非常方便的实现中文索引排序,只需将引擎更换为zhmakeindex, 下载zhmakei...

  • Latex: 报错latexmk: Failure in som

    一般有错误都会出现这种提示,但有些错误并没有定位到某一句,只说有错却没说哪错,有一种情况是:参考文献的.bib文件...

  • vim-latex安装和配置

    最近接触latex,一开始在mac上用texpad,感觉体验不错。后来,由于试用期过了,必须购买才能使用。因此,准...

  • xelatex 以及 latexmk 命令行编译

    最近想要用命令行去编译 latex 文件。 最简单的命令,输入 我随便写了一个报错,看看 Overleaf, On...

  • 整合SSM

    SSM整合 整合思路 各自搭建SSM环境 使用Spring整合Mybatis 使用Spring整合SpringMV...

  • ssh整合

    1.struts2整合Spring 2.Spring整合hibernate(完全整合) 2.Spring整合hib...

  • 第四章-高级整合应用1:导航

    RabbitMQ整合Spring AMQP RabbitMQ整合Spring Boot RabbitMQ整合Spr...

网友评论

    本文标题:vim-latex 整合latexmk

    本文链接:https://www.haomeiwen.com/subject/tbzykttx.html