Home LaTeX 用 Vim 记笔记
Post
Cancel

LaTeX 用 Vim 记笔记

之前摘录了一系列 LaTeX 的笔记,主要目的是想重温微积分并好好记录下笔记,不想把多年前的知识丢了。

这里有两篇比利时鲁汶大学学生写的文章,讲述如何用 vim 快速记录数学笔记以及绘图:How I’m able to take notes in mathematics lectures using LaTeX and VimHow I draw figures for my mathematical lecture notes using Inkscape,其中第二篇综合利用了 python 脚本、开源软件、vim 配置,是典型的利用计算机技术解决问题和提高效率的案例,这种处理问题的思路非常值得学习。

上边第一篇文章的中文版:在数学课上用 LaTeX + Vim 运笔如飞地做笔记

速记数学笔记

速记主要是采用了两个插件:vimtexultisnips,vimtex 用来将 latex 语法高亮,ultisnips 用来提供代码片断。

vimtex

vimtex 不仅可以高亮代码,同时还可以对一些符号进行隐藏和替换,譬如,隐藏公式符号 \[ \] $、替换 \bigcup 等,以给予用户较好的编写体验。下边是简单的配置项:

1
2
3
4
5
6
7
8
Plugin 'lervag/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'

它还支持一些简单命令:\ll 编译文件,\lc 清理辅助文件等。

在写中文时,要注意调整引擎为 xelatex,否则不能完成编译:

1
2
%! TEX program = pdflatex
%! TEX program = xelatex

更多的帮助文档参考:the documentation,或者在 vim 中使用帮助::h vimtex

ultisnips

ultisnips 号称是 vim 下的终级片断解决方案,其安装需要 vim 支持 python3,是否支持可以用:vim --version 查看。

ultisnips 本身不提供代码片断,因此需要结合其它提供片断的插件(honza/vim-snippets)一起使用,快速的配置如下:

1
2
3
4
5
Plugin 'SirVer/ultisnips'
Plugin 'honza/vim-snippets'
let g:UltiSnipsExpandTrigger="<tab>"
let g:UltiSnipsJumpForwardTrigger="<tab>"
let g:UltiSnipsJumpBackwardTrigger="<s-tab>"

如果是出于通用目的使用 ultisnips,以上配置就够了,但有时候想自定义片断,那就需要遵循一定的语法,其基本形式如下:

1
2
3
snippet KEYWORD "some description" <options>
[snippet body...]
endsnippet

三个条件 KEYWORD + options + UltiSnipsExpandTrigger,一起决定了片断的展开。

UltiSnipsExpandTrigger 不用多说,是触发片断展开的按键,按个人喜好设定就可以。KEYWORD 则表示片断的名字,键入片断名,插件将其替换为片断体。

options 是片断的触发选项:

  • b,行首触发
  • i,词中展开
  • w,单词边界
  • A,自动展开

snippet body 中也有很多功能点:

  • 普通文本替换

    1
    2
    3
    4
    5
    
    snippet sign "Signature"
    Yours sincerely,
      
    Gilles Castel
    endsnippet
    
  • 执行命令,``

    1
    2
    3
    
    snippet today "Date"
    `date +%F`
    endsnippet
    
  • 使用 python 语法,`!p…`

    snippet box "Box"
    `!p snip.rv = '┌' + '─' * (len(t[1]) + 2) + '┐'`
    │ $1 │
    `!p snip.rv = '└' + '─' * (len(t[1]) + 2) + '┘'`
    $0
    endsnippet
    
  • 占位符,$1、$2 … $0

    1
    2
    3
    4
    5
    
    snippet beg "begin{} / end{}" bA
    \begin{$1}
    	$0
    \end{$1}
    endsnippet
    

关于片断文件存放的位置默认在:~/.vim/UltiSnips/,通过配置全局变量进行调整:

1
2
3
4
## 默认位置
let g:UltiSnipsSnippetDirectories=["UltiSnips"]
## 增加自定义位置
let g:UltiSnipsSnippetDirectories=["UltiSnips", "mycoolsnippets"]

最后附上一这位学生的 latex 片断:tex.snippets

快速绘图

绘图这篇文章主要是想提下文中用到的一款开源矢量图绘制软件:Inkscape,三大平台都有,它能够生成 latex 文件,方便在 vim + latex 场景下使用。

This post is licensed under CC BY 4.0 by the author.

LaTeX 自定义命令

Mac 重装