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}
\newcommand{\incfig}[1]{%
    \def\svgwidth{\columnwidth}
    \import{./figures/}{#1.pdf_tex}
}

\pdfsuppresswarningpagegroup=1

\begin{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
\begin{table}[${1:htpb}]
    \centering
    \caption{${2:caption}}
    \label{tab:${3:label}}
    \begin{tabular}{${5:c}}
    $0${5/((?<=.)c|l|r)|./(?1: & )/g}
    \end{tabular}
\end{table}
endsnippet

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

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

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

snippet desc "Description" b
\begin{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
\begin{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])_(\d\d)‘ "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
\neq
endsnippet

context "math()"
snippet ceil "ceil" iA
\left\lceil $1 \right\rceil $0
endsnippet

context "math()"
snippet floor "floor" iA
\left\lfloor $1 \right\rfloor$0
endsnippet

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

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

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

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

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

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

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

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

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

snippet lra "leftangle rightangle" iA
\left<${1:${VISUAL}} \right>$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} \to ${2:\infty}}
endsnippet

snippet limsup "limsup" w
\limsup_{${1:n} \to ${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
\begin{figure}[$1]
    \centering
    \begin{tikzpicture}
        \begin{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
\node[$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
\nabla
endsnippet

context "math()"
snippet xx "cross" iA
\times
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
\to
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
\not\in
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
\bigcup_{${1:i \in ${2: I}}} $0
endsnippet

snippet nnn "bigcap" iA
\bigcap_{${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
\Z
endsnippet

snippet <! "normal" iA
\triangleleft
endsnippet

snippet <> "hokje" iA
\diamond
endsnippet

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

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

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

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

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

snippet cvec "column vector" iA
\begin{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

原文地址:https://www.cnblogs.com/litifeng/p/11770558.html

时间: 2024-11-10 01:13:36

latex在vim中的代码片段的相关文章

使用 Git 来管理 Xcode 中的代码片段

使用 Git 来管理 Xcode 中的代码片段 代码片段介绍 xcode4 引入了一个新 feature: code snippets,在整个界面的右下角,可以通过快捷键:cmd + ctrl + opt + 2 调出来.code snippets 是一些代码的模版,对于一些常见的编程模式,xcode 都将这些代码抽象成模版放到 code snippet 中,使用的时候,只需要键入快捷键,就可以把模版的内容填到代码中. 例如,在引入 GCD(Grand Central Dispatch) 后,当

如何在Sublime Text中添加代码片段

我们在编写代码的时候,总会遇到一些需要反复使用的代码片段.这时候就需要反复的复制和黏贴,大大影响效率.我们利用Sublime Text的snippet(代码片段)功能,就能很好的解决这一问题.通俗的讲,就是把我们常用的代码分别保存起啦,然后通过插件的形式来反复调用. 创建方法:Tools (工具)> New Snippet(新片段) 此时,会出现如下代码: <snippet> <content><![CDATA[ Hello, ${1:this} is a ${2:sn

sublimetext3中保存代码片段

在日常的开发工作中,不断重复上一次敲过的代码,有时确实感到伐木累.“蓝瘦”(难受).“香菇”(想哭),大概表达的也是这样的心境吧!:grinning: 所以,在空闲的时候就把常常用到的代码找出来,做成代码片段,为以后的开发缩减时间. 这里整理了保存代码片段的整个过程: 1.打开sublimetext3,在菜单栏找到tool,在tool这一栏找到“新代码片段...”;如下所示: 2.点击“新代码片段...” 3.在 <content><![CDATA[ 代码  ]]></con

VS中添加自定义代码片段——偷懒小技巧

前言 打出cw,然后敲击两下Tab键就会快速敲出Console.WriteLine() ,快捷方便,那怎么自定义快速敲出Console.readKey();呢?带着这个问题去寻找方法啊,总结如下,其中的代码涉及到了XML(可扩展性标记语言),很巧,前一阵子了解到了XML,并编写了自己的第一个例子,功能挺强大. 实现过程 工具→代码片段管理器→语言:CSharp→Visual C#→复制位置路径→编写代码片段→保存后重启VS. 上机操作 打开工具 进入代码片段管理器 自定义代码片段 打开资源管理器

金蝶handler中 collection 代码片段理解

1,AtsOverTimeBillBatchEditHandler中collection的理解 1 SelectorItemCollection selectors = new SelectorItemCollection(); 2 //自定义集合SelectorItemCollection的定义 3 selectors.add(new SelectorItemInfo("id")); //集合selectors中添加id 4 selectors.add(new SelectorIte

vim 代码片段:通过vundle插件管理器安装ultisnips |centos6.5|vim7.2

背景:中午醒来,饭都没吃,突然想到要给vim增加个代码片段的功能,因为昨天使用了gedit的代码片段,感觉不错.为什么不直接使用gedit呢?因为我相信把时间投入到vim是不会错的,精通vim就好了....就这样的一个想法,让我搞到了快5点. T_T 1 安装vundle 地址在:https://github.com/gmarik/Vundle.vim,不过不需要在这边下载什么,看看文档就好 git clone https://github.com/gmarik/Vundle.vim.git ~

xcode自动生成代码片段

一.什么是代码片段 当在Xcode中输入dowhile并回车后,Xcode会出现下图所示的提示代码: 这就是代码片段,目的是使程序员以最快的速度输入常用的代码片段,提高编程效率.该功能是从Xcode4开始引入的.在Xcode中的位置如下图所示: 里面有很多Xcode自带的代码片段,上例中的dowhile就是其中的一个. 二.如何自定义代码片段 由于项目.所用语言或者编码习惯的差别,不同的程序员习惯用的代码片段也不尽相同,这就有了自定义代码片段的需求,好在Xcode是支持该功能的. @proper

iOS开发 偷懒小技巧---自定义XCode代码片段

有句话说的好,聪明的程序员懂得"偷懒"来提升开发效率.我们在日常开发中,有一些代码片段会经常利用到,大家可能会觉得定义一些宏可以解决问题,但是遇到比如,UITableView的协议方法,或者写Demo时候想要快速的定义一个UIButton(当然,你用storyboard除外)呢? 好吧,先来介绍下什么是代码片段? 我们在XCode中输入if,选择ifelse后回车,出现 这个就是系统给我们已经定义好的代码片段,能够快速的完成我们想要的代码片段,来大大的提升程序员的编程效率,我们所要做的

设置 Xcode 自动生成代码片段(转)

Xcode开发技巧之code snippets(代码片段) 作者:wangzz 原文地址:http://blog.csdn.net/wzzvictory/article/details/12163939 转载请注明出处 如果觉得文章对你有所帮助,请通过留言或关注微信公众帐号wangzzstrive来支持我,谢谢! 一.什么是代码片段 当在Xcode中输入dowhile并回车后,Xcode会出现下图所示的提示代码: 这就是代码片段,目的是使程序员以最快的速度输入常用的代码片段,提高编程效率.该功能