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 litemplate "Little basic template" b \documentclass[a4paper]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{textcomp} \usepackage[french]{babel} \usepackage{amsmath, amssymb} \usepackage{amsthm} \usepackage[svgnames]{xcolor} \usepackage{thmtools} \usepackage{lipsum} \usepackage{framed} \usepackage{parskip} \renewcommand{\familydefault}{\sfdefault} \newenvironment{AQT}{{\fontfamily{qbk}\selectfont AQT}} \usepackage{titlesec} \usepackage{LobsterTwo} \titleformat{\section}{\newpage\LobsterTwo \huge\bfseries}{\thesection.}{1em}{} \titleformat{\subsection}{\vspace{2em}\LobsterTwo \Large\bfseries}{\thesubsection.}{1em}{} \titleformat{\subsubsection}{\vspace{1em}\LobsterTwo \large\bfseries}{\thesubsubsection.}{1em}{} \title{Titre} \author{William Hergès\thanks{CPES Science Henri-IV / PSL}} \begin{document} \maketitle $0 \end{document} endsnippet snippet template "Basic template" b \documentclass[a4paper, titlepage]{article} \usepackage[utf8]{inputenc} \usepackage[T1]{fontenc} \usepackage{textcomp} \usepackage[french]{babel} \usepackage{amsmath, amssymb} \usepackage{amsthm} \usepackage[svgnames]{xcolor} \usepackage{thmtools} \usepackage{lipsum} \usepackage{framed} \usepackage{parskip} \usepackage{titlesec} \renewcommand{\familydefault}{\sfdefault} % 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 \colorlet{defn-color}{DarkBlue} \colorlet{props-color}{Blue} \colorlet{warn-color}{Red} \colorlet{exemple-color}{Green} \colorlet{corol-color}{Orange} \newenvironment{defn-leftbar}{% \def\FrameCommand{{\color{defn-color}\vrule width 3pt} \hspace{10pt}}% \MakeFramed {\advance\hsize-\width \FrameRestore}}% {\endMakeFramed} \newenvironment{warn-leftbar}{% \def\FrameCommand{{\color{warn-color}\vrule width 3pt} \hspace{10pt}}% \MakeFramed {\advance\hsize-\width \FrameRestore}}% {\endMakeFramed} \newenvironment{exemple-leftbar}{% \def\FrameCommand{{\color{exemple-color}\vrule width 3pt} \hspace{10pt}}% \MakeFramed {\advance\hsize-\width \FrameRestore}}% {\endMakeFramed} \newenvironment{props-leftbar}{% \def\FrameCommand{{\color{props-color}\vrule width 3pt} \hspace{10pt}}% \MakeFramed {\advance\hsize-\width \FrameRestore}}% {\endMakeFramed} \newenvironment{corol-leftbar}{% \def\FrameCommand{{\color{corol-color}\vrule width 3pt} \hspace{10pt}}% \MakeFramed {\advance\hsize-\width \FrameRestore}}% {\endMakeFramed} \def \freespace {1em} \declaretheoremstyle[headfont=\sffamily\bfseries,% notefont=\sffamily\bfseries,% notebraces={}{},% headpunct=,% bodyfont=\sffamily,% headformat=\color{defn-color}Définition~\NUMBER\hfill\NOTE\smallskip\linebreak,% preheadhook=\vspace{\freespace}\begin{defn-leftbar},% postfoothook=\end{defn-leftbar},% ]{better-defn} \declaretheoremstyle[headfont=\sffamily\bfseries,% notefont=\sffamily\bfseries,% notebraces={}{},% headpunct=,% bodyfont=\sffamily,% headformat=\color{warn-color}Attention~\NUMBER\hfill\NOTE\smallskip\linebreak,% preheadhook=\vspace{\freespace}\begin{warn-leftbar},% postfoothook=\end{warn-leftbar},% ]{better-warn} \declaretheoremstyle[headfont=\sffamily\bfseries,% notefont=\sffamily\bfseries,% notebraces={}{},% headpunct=,% bodyfont=\sffamily,% headformat=\color{exemple-color}Exemple~\NUMBER\hfill\NOTE\smallskip\linebreak,% preheadhook=\vspace{\freespace}\begin{exemple-leftbar},% postfoothook=\end{exemple-leftbar},% ]{better-exemple} \declaretheoremstyle[headfont=\sffamily\bfseries,% notefont=\sffamily\bfseries,% notebraces={}{},% headpunct=,% bodyfont=\sffamily,% headformat=\color{props-color}Proposition~\NUMBER\hfill\NOTE\smallskip\linebreak,% preheadhook=\vspace{\freespace}\begin{props-leftbar},% postfoothook=\end{props-leftbar},% ]{better-props} \declaretheoremstyle[headfont=\sffamily\bfseries,% notefont=\sffamily\bfseries,% notebraces={}{},% headpunct=,% bodyfont=\sffamily,% headformat=\color{props-color}Théorème~\NUMBER\hfill\NOTE\smallskip\linebreak,% preheadhook=\vspace{\freespace}\begin{props-leftbar},% postfoothook=\end{props-leftbar},% ]{better-thm} \declaretheoremstyle[headfont=\sffamily\bfseries,% notefont=\sffamily\bfseries,% notebraces={}{},% headpunct=,% bodyfont=\sffamily,% headformat=\color{corol-color}Corollaire~\NUMBER\hfill\NOTE\smallskip\linebreak,% preheadhook=\vspace{\freespace}\begin{corol-leftbar},% postfoothook=\end{corol-leftbar},% ]{better-corol} \declaretheorem[style=better-defn]{defn} \declaretheorem[style=better-warn]{warn} \declaretheorem[style=better-exemple]{exemple} \declaretheorem[style=better-corol]{corol} \declaretheorem[style=better-props, numberwithin=defn]{props} \declaretheorem[style=better-thm, sibling=props]{thm} \newtheorem*{lemme}{Lemme}%[subsection] %\newtheorem{props}{Propriétés}[defn] \newenvironment{system}% {\left\lbrace\begin{align}}% {\end{align}\right.} \newenvironment{AQT}{{\fontfamily{qbk}\selectfont AQT}} \usepackage{LobsterTwo} \titleformat{\section}{\newpage\LobsterTwo \huge\bfseries}{\thesection.}{1em}{} \titleformat{\subsection}{\vspace{2em}\LobsterTwo \Large\bfseries}{\thesubsection.}{1em}{} \titleformat{\subsubsection}{\vspace{1em}\LobsterTwo \large\bfseries}{\thesubsubsection.}{1em}{} \newenvironment{lititle}% {\vspace{7mm}\LobsterTwo \large}% {\\} \renewenvironment{proof}{\par$\square$ \footnotesize\textit{Démonstration.}}{\begin{flushright}$\blacksquare$\end{flushright}\par} \title{Titre} \author{William Hergès\thanks{CPES Science Henri-IV / PSL}} \begin{document} \maketitle \tableofcontents \newpage $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" i \\frac{$1}{$2}$0 endsnippet snippet " ssi" "Si et seulement si" iA si et seulement si endsnippet snippet -> "to" iA \\to $0 endsnippet snippet |> "Maps to" iA \\longmapsto $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|[a-z]|\\)' "auto subscript2" wrA `!p snip.rv = match.group(1)`_{`!p snip.rv = match.group(2)`$0} 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 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_{${1:i=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 limarr "lim arrow" w \xrightarrow[${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 snippet ^_ "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 \leqslant endsnippet snippet >= "geq" iA \geqslant endsnippet snippet EE "geq" iA \exists endsnippet 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 snippet mcal "mathcal" iA \mathcal{$1}$0 endsnippet snippet mbb "mathbb" iA \mathbb{$1}$0 endsnippet snippet [bb "mathbb[X]" iA \mathbb{$1}[${2:X}]$0 endsnippet snippet (bb "mathbb(X)" iA \mathbb{$1}(${2:X})$0 endsnippet snippet mrm "mathrm" iA \mathrm{$1}$0 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 '(? "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 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 "hokje" iA \diamond endsnippet context "math()" snippet '(?