latex在vim中的代码片段

Posted litifeng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了latex在vim中的代码片段相关的知识,希望对你有一定的参考价值。

Gilles Castel写的vim中使用的代码片段,质量很高,原文:https://github.com/gillescastel

下载后,存放到 ~/.vim/plugged/ultisnips/UltiSnips 

下面是记录一下,该代码片段:

global !p
texMathZones = [texMathZone+x for x in [A, AS, B, BS, C, CS, D, DS, E, ES, F, FS, G, GS, H, HS, I, IS, J, JS, K, KS, L, LS, DS, V, W, X, Y, Z]]

texIgnoreMathZones = [texMathText]

texMathZoneIds = vim.eval(map(+str(texMathZones)+", ‘hlID(v:val)‘)")
texIgnoreMathZoneIds = vim.eval(map(+str(texIgnoreMathZones)+", ‘hlID(v:val)‘)")

ignore = texIgnoreMathZoneIds[0]

def math():
    synstackids = vim.eval("synstack(line(‘.‘), col(‘.‘) - (col(‘.‘)>=2 ? 1 : 0))")
    try:
        first = next(i for i in reversed(synstackids) if i in texIgnoreMathZoneIds or i in texMathZoneIds)
        return first != ignore
    except StopIteration:
        return False
endglobal

snippet template "Basic template" b
documentclass[a4paper]{article}

usepackage[utf8]{inputenc}
usepackage[T1]{fontenc}
usepackage{textcomp}
usepackage[dutch]{babel}
usepackage{amsmath, amssymb}


% figure support
usepackage{import}
usepackage{xifthen}
pdfminorversion=7
usepackage{pdfpages}
usepackage{transparent}

ewcommand{incfig}[1]{%
    defsvgwidth{columnwidth}
    import{./figures/}{#1.pdf_tex}
}

pdfsuppresswarningpagegroup=1

egin{document}
    $0
end{document}
endsnippet

snippet beg "begin{} / end{}" bA
\begin{$1}
    $0
\end{$1}
endsnippet

priority 100
snippet ... "ldots" iA
ldots
endsnippet

snippet table "Table environment" b
egin{table}[${1:htpb}]
    centering
    caption{${2:caption}}
    label{tab:${3:label}}
    egin{tabular}{${5:c}}
    $0${5/((?<=.)c|l|r)|./(?1: & )/g}
    end{tabular}
end{table}
endsnippet

snippet fig "Figure environment" b
egin{figure}[${1:htpb}]
    centering
    ${2:includegraphics[width=0.8	extwidth]{$3}}
    caption{${4:$3}}
    label{fig:${5:${3/W+/-/g}}}
end{figure}
endsnippet

snippet enum "Enumerate" bA
egin{enumerate}
    item $0
end{enumerate}
endsnippet

snippet item "Itemize" bA
egin{itemize}
    item $0
end{itemize}
endsnippet

snippet desc "Description" b
egin{description}
    item[$1] $0
end{description}
endsnippet

snippet pac "Package" b
usepackage[${1:options}]{${2:package}}$0
endsnippet

snippet => "implies" Ai
implies
endsnippet

snippet =< "implied by" Ai
impliedby
endsnippet

context "math()"
snippet iff "iff" Ai
iff
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:${VISUAL}}
.] $0
endsnippet

snippet ali "Align" bA
egin{align*}
    ${1:${VISUAL}}
.end{align*}
endsnippet


context "math()"
snippet // "Fraction" iA
\frac{$1}{$2}$0
endsnippet

snippet / "Fraction" i
\frac{${VISUAL}}{$1}$0
endsnippet

context "math()"
snippet ((d+)|(d*)(\)?([A-Za-z]+)((^|_)({d+}|d))*)/ "symbol frac" wrA
\frac{`!p snip.rv = match.group(1)`}{$1}$0
endsnippet

priority 1000
context "math()"
snippet ^.*)/ "() frac" wrA
`!p
stripped = match.string[:-1]
depth = 0
i = len(stripped) - 1
while True:
    if stripped[i] == ): depth += 1
    if stripped[i] == (: depth -= 1
    if depth == 0: break;
    i-=1
snip.rv = stripped[0:i] + "\frac{" + stripped[i+1:-1] + "}"
`{$1}$0
endsnippet

context "math()"
snippet ([A-Za-z])(d) "auto subscript" wrA
`!p snip.rv = match.group(1)`_`!p snip.rv = match.group(2)`
endsnippet

context "math()"
snippet ([A-Za-z])_(dd) "auto subscript2" wrA
`!p snip.rv = match.group(1)`_{`!p snip.rv = match.group(2)`}
endsnippet


snippet sympy "sympyblock " w
sympy $1 sympy$0
endsnippet

priority 10000
snippet sympy(.*)sympy "sympy" wr
`!p
from sympy import *
x, y, z, t = symbols(x y z t)
k, m, n = symbols(k m n, integer=True)
f, g, h = symbols(f g h, cls=Function)
init_printing()
snip.rv = eval(latex( + match.group(1).replace(\, ‘‘).replace(^, **).replace({, ().replace(}, )) + ))
`
endsnippet

priority 1000
snippet math "mathematicablock" w
math $1 math$0
endsnippet

priority 10000
snippet math(.*)math "math" wr
`!p
import subprocess
code = match.group(1)
code = ToString[ + code + , TeXForm]
snip.rv = subprocess.check_output([wolframscript, -code, code])
`
endsnippet

snippet == "equals" iA
&= $1 \endsnippet

snippet != "equals" iA

eq 
endsnippet

context "math()"
snippet ceil "ceil" iA
leftlceil $1 
ight
ceil $0
endsnippet

context "math()"
snippet floor "floor" iA
leftlfloor $1 
ight
floor$0
endsnippet

snippet pmat "pmat" iA
egin{pmatrix} $1 end{pmatrix} $0
endsnippet

snippet bmat "bmat" iA
egin{bmatrix} $1 end{bmatrix} $0
endsnippet

context "math()"
snippet () "left( right)" iA
left( ${1:${VISUAL}} 
ight) $0
endsnippet

snippet lr "left( right)" i
left( ${1:${VISUAL}} 
ight) $0
endsnippet

snippet lr( "left( right)" i
left( ${1:${VISUAL}} 
ight) $0
endsnippet

snippet lr| "left| right|" i
left| ${1:${VISUAL}} 
ight| $0
endsnippet

snippet lr{ "left{ right}" i
left\{ ${1:${VISUAL}} 
ight\} $0
endsnippet

snippet lrb "left{ right}" i
left\{ ${1:${VISUAL}} 
ight\} $0
endsnippet

snippet lr[ "left[ right]" i
left[ ${1:${VISUAL}} 
ight] $0
endsnippet

snippet lra "leftangle rightangle" iA
left<${1:${VISUAL}} 
ight>$0
endsnippet

context "math()"
snippet conj "conjugate" iA
overline{$1}$0
endsnippet

snippet sum "sum" w
sum_{n=${1:1}}^{${2:infty}} ${3:a_n z^n}
endsnippet

snippet taylor "taylor" w
sum_{${1:k}=${2:0}}^{${3:infty}} ${4:c_$1} (x-a)^$1 $0
endsnippet

snippet lim "limit" w
lim_{${1:n} 	o ${2:infty}} 
endsnippet

snippet limsup "limsup" w
limsup_{${1:n} 	o ${2:infty}} 
endsnippet

snippet prod "product" w
prod_{${1:n=${2:1}}}^{${3:infty}} ${4:${VISUAL}} $0
endsnippet

snippet part "d/dx" w
frac{partial ${1:V}}{partial ${2:x}} $0
endsnippet

context "math()"
snippet sq "sqrt{}" iA
sqrt{${1:${VISUAL}}} $0
endsnippet

context "math()"
snippet sr "^2" iA
^2
endsnippet

context "math()"
snippet cb "^3" iA
^3
endsnippet

context "math()"
snippet td "to the ... power" iA
^{$1}$0
endsnippet

context "math()"
snippet rd "to the ... power" iA
^{($1)}$0
endsnippet

snippet __ "subscript" iA
_{$1}$0
endsnippet

snippet ooo "infty" iA
infty
endsnippet

snippet rij "mrij" i
(${1:x}_${2:n})_{${3:$2}\in${4:\N}}$0
endsnippet

snippet <= "leq" iA
le 
endsnippet

snippet >= "geq" iA
ge 
endsnippet

context "math()"
snippet EE "geq" iA
exists 
endsnippet

context "math()"
snippet AA "forall" iA
forall 
endsnippet

context "math()"
snippet xnn "xn" iA
x_{n}
endsnippet

context "math()"
snippet ynn "yn" iA
y_{n}
endsnippet


context "math()"
snippet xii "xi" iA
x_{i}
endsnippet

context "math()"
snippet yii "yi" iA
y_{i}
endsnippet

context "math()"
snippet xjj "xj" iA
x_{j}
endsnippet

context "math()"
snippet yjj "yj" iA
y_{j}
endsnippet

context "math()"
snippet xp1 "x" iA
x_{n+1}
endsnippet

context "math()"
snippet xmm "x" iA
x_{m}
endsnippet

snippet R0+ "R0+" iA
\R_0^+
endsnippet

snippet plot "Plot" w
egin{figure}[$1]
    centering
    egin{tikzpicture}
        egin{axis}[
            xmin= ${2:-10}, xmax= ${3:10},
            ymin= ${4:-10}, ymax = ${5:10},
            axis lines = middle,
        ]
            addplot[domain=$2:$3, samples=${6:100}]{$7};
        end{axis}
    end{tikzpicture}
    caption{$8}
    label{${9:$8}}
end{figure}
endsnippet

snippet nn "Tikz node" w

ode[$5] (${1/[^0-9a-zA-Z]//g}${2}) ${3:at (${4:0,0}) }{$${1}$};
$0
endsnippet

context "math()"
snippet mcal "mathcal" iA
mathcal{$1}$0
endsnippet

snippet lll "l" iA
ell
endsnippet

context "math()"
snippet nabl "nabla" iA

abla 
endsnippet

context "math()"
snippet xx "cross" iA
	imes 
endsnippet

priority 100
snippet ** "cdot" iA
cdot 
endsnippet

context "math()"
snippet norm "norm" iA
|$1|$0
endsnippet

priority 100
context "math()"
snippet (?<!\)(sin|cos|arccot|cot|csc|ln|log|exp|star|perp) "ln" rwA
\`!p snip.rv = match.group(1)`
endsnippet

priority 300
context "math()"
snippet dint "integral" wA
int_{${1:-infty}}^{${2:infty}} ${3:${VISUAL}} $0
endsnippet

priority 200
context "math()"
snippet (?<!\)(arcsin|arccos|arctan|arccot|arccsc|arcsec|pi|zeta|int) "ln" rwA
\`!p snip.rv = match.group(1)`
endsnippet


priority 100
context "math()"
snippet -> "to" iA
	o 
endsnippet

priority 200
context "math()"
snippet <-> "leftrightarrow" iA
leftrightarrow
endsnippet

context "math()"
snippet !> "mapsto" iA
mapsto 
endsnippet

context "math()"
snippet invs "inverse" iA
^{-1}
endsnippet

context "math()"
snippet compl "complement" iA
^{c}
endsnippet

context "math()"
snippet \ "setminus" iA
setminus
endsnippet

snippet >> ">>" iA
gg
endsnippet

snippet << "<<" iA
ll
endsnippet


snippet ~~ "~" iA
sim 
endsnippet

context "math()"
snippet set "set" wA
\{$1\} $0
endsnippet

snippet || "mid" iA
 mid 
endsnippet


context "math()"
snippet cc "subset" Ai
subset 
endsnippet

snippet notin "not in " iA
notin 
endsnippet

context "math()"
snippet inn "in " iA
in 
endsnippet

snippet NN "n" iA
N
endsnippet

snippet Nn "cap" iA
cap 
endsnippet

snippet UU "cup" iA
cup 
endsnippet

snippet uuu "bigcup" iA
igcup_{${1:i in ${2: I}}} $0
endsnippet

snippet nnn "bigcap" iA
igcap_{${1:i in ${2: I}}} $0
endsnippet

snippet OO "emptyset" iA
O
endsnippet

snippet RR "real" iA
R
endsnippet

snippet QQ "Q" iA
Q
endsnippet

snippet ZZ "Z" iA

endsnippet

snippet <! "normal" iA
	riangleleft 
endsnippet

snippet <> "hokje" iA
diamond 
endsnippet


context "math()"
snippet (?<!i)sts "text subscript" irA
_	ext{$1} $0
endsnippet

context "math()"
snippet tt "text" iA
	ext{$1}$0
endsnippet

context "math()"
snippet case "cases" wA
egin{cases}
    $1
end{cases}
endsnippet

snippet SI "SI" iA
SI{$1}{$2}
endsnippet

snippet bigfun "Big function" iA
egin{align*}
    $1: $2 &longrightarrow $3 \    $4 &longmapsto $1($4) = $0
.end{align*}
endsnippet

snippet cvec "column vector" iA
egin{pmatrix} ${1:x}_${2:1}\\ vdots\\ $1_${2:n} end{pmatrix}
endsnippet

priority 10
context "math()"
snippet "bar" "bar" riA
overline{$1}$0
endsnippet

priority 100
context "math()"
snippet "([a-zA-Z])bar" "bar" riA
overline{`!p snip.rv=match.group(1)`}
endsnippet

priority 10
context "math()"
snippet "hat" "hat" riA
hat{$1}$0
endsnippet

priority 100
context "math()"
snippet "([a-zA-Z])hat" "hat" riA
hat{`!p snip.rv=match.group(1)`}
endsnippet

snippet letw "let omega" iA
Let $Omega subset C$ be open.
endsnippet


snippet HH "H" iA
mathbb{H}
endsnippet

snippet DD "D" iA
mathbb{D}
endsnippet

# vim:ft=snippets

 

以上是关于latex在vim中的代码片段的主要内容,如果未能解决你的问题,请参考以下文章

VIM 代码片段插件 ultisnips 使用教程

从零开始配置vim(27)——代码片段

从零开始配置vim(27)——代码片段

从零开始配置vim(27)——代码片段

vim代码片段插件ultisnips的使用

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js