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 smart_space(next_str, auto_str=" "): if next_str and next_str[0] in [",", ".", "-", "!", "?", " "]: snip.rv = auto_str else: snip.rv = "" def add_variable_numbers(*inputs, **kwargs): absolute = kwargs.pop("absolute", False) total = 0 for t in inputs: try: i = int(t) if absolute is True: total += abs(i) else: total += i except ValueError: continue return total endglobal snippet template "Main template (that should work without relying with style files)" bi \documentclass[class=memoir, crop=false, oneside, 14pt]{standalone} % all of the packages to be used \usepackage[nocomments]{standalone} \usepackage{chngcntr} \usepackage{import} \usepackage[utf8]{inputenc} \usepackage{fontawesome} \usepackage[english]{babel} \usepackage[rgb]{xcolor} \usepackage{amsmath} \usepackage{amssymb} \usepackage{amsthm} \usepackage{tikz} \usepackage{pgfplots} \usepackage{fancyhdr} \usepackage{minted} \usepackage[most]{tcolorbox} \usepackage[colorlinks=true, linkcolor=., urlcolor=blue]{hyperref} \usepackage{kpfonts} % using the fancy header package % http://linorg.usp.br/CTAN/macros/latex/contrib/fancyhdr/fancyhdr.pdf \pagestyle{fancy} % fill the header with the format \fancyhead[L]{\doctitle} \fancyhead[R]{\nouppercase{\rightmark}} % fill the footer with the format \fancyfoot[C]{\nouppercase{\leftmark}} \fancyfoot[R]{\thepage} % set the width of the horizontal bars in the header \renewcommand{\headrulewidth}{2pt} \renewcommand{\footrulewidth}{1pt} % set the paragraph formatting \renewcommand{\baselinestretch}{1.35} % set chapter style \chapterstyle{bianchi} % set chapter spacing for easier reading on digital screen \setlength{\beforechapskip}{-\beforechapskip} % document metadata \author{${1:"Gabriel Arazas"}} \title{${2:"New Title"}} \date{`!p `} \begin{document} % Frontmatter of the class note if it's compiled standalone \renewcommand{\abstractname}{Summary} \maketitle \newpage \frontmatter \chapter{Preface} $3 \newpage \tableofcontents \newpage \listoffigures \newpage \mainmatter % Core content (HINT: always start with chapter LaTeX tag) $0 \end{document} endsnippet # Document structure tags snippet chapter "Chapter element" bi \chapter{$1} \label{ch:$1} $0 endsnippet snippet section "Section tag" bi \section{$1} \label{sec:$1} $0 endsnippet snippet subsec "Subsection tag" bi \subsection{$1} \label{subsec:$1} $0 endsnippet # Common commands snippet pack "Use package command" i \usepackage`!p smart_space(t[2], "[")`$2`!p smart_space(t[2], "]")`{$1} $0 endsnippet snippet letter "Make at letter block" i \makeatletter $1 \makeatother $0 endsnippet snippet label "Create a label" i \label{$1} $0 endsnippet snippet ref "Create a reference for a label" i \ref{${1:<label to be referenced>}} $0 endsnippet snippet foot "Footnote" \footnote{${1:<text>}} $0 endsnippet # Common environments snippet begin "Simple empty environment" bi \begin{$1} $2 \end{$1} $0 endsnippet snippet ml "Math mode (inline)" i $${1}$`!p smart_space(t[2])`$2 endsnippet snippet mb "Math block" bi \begin{equation*} $1 \end{equation*} $0 endsnippet snippet equation "Equation environment for mathematical typesetting" bi \begin{equation} \label{eq:$1} $2 \end{equation} $0 endsnippet snippet figure "Figure environment" bi \begin{figure} \centering \label{fig:$1} $2 \caption{${3:$1}} \end{figure} $0 endsnippet snippet plot "Quickly plot a graph" bi \begin{figure}[$1] \centering \begin{tikzpicture} \begin{axis}[ xlabel=$x$, ylabel=$y$, xmin= ${2:-10}, xmax= ${3:10}, ymin= ${4:-10}, ymax = ${5:10}, axis lines = middle, grid=major, axis equal=false, major tick style=thick, scale only axis, ] \addplot[domain=$2:$3, samples=${6: `!p snip.rv = add_variable_numbers(t[2], t[3], absolute=True)`}]{$7}; \end{axis} \end{tikzpicture} \caption{$8} \label{fig:${9:$8}} \end{figure} $0 endsnippet snippet iplot "Quickly plot a graph with integers" bi \begin{figure}[$1] \centering \begin{tikzpicture} \begin{axis}[ xlabel=$x$, ylabel=$y$, axis lines = middle, ] \addplot[domain=$2:$3, samples=`!p snip.rv=abs(t[2]) + abs(t[3]) + 1`]{$4}; \end{axis} \end{tikzpicture} \caption{$5} \label{${9:$6}} \end{figure} $0 endsnippet # Common mathematical functions and symbols # Also take note that most expressions are prepended with 'M' to mean mathematical usage snippet === "Equivalent to" i \equiv endsnippet snippet ~= "Congruent to" i \cong endsnippet snippet ~~ "Approximately equal to" i \approx endsnippet snippet p= "Proportional to" i \propto endsnippet snippet != "Not equal" i \neq endsnippet snippet <= "Greater than or equal to" i \geq endsnippet snippet !> "Not greater than" i \ngtr endsnippet snippet >= "Less than or equal to" i \leq endsnippet snippet !< "Not less than" i \nless endsnippet snippet <-- "Precedes symbol" i \prec endsnippet snippet =<- "Precedes or equals" i \preceq endsnippet snippet !<- "Not precedes" i \nprec endsnippet snippet --> "Succeeds symbol" i \succ endsnippet snippet =-> "Succeeds or equals" i \succeq endsnippet snippet !-> "Not succeeds" i \nsucc endsnippet snippet << "Less order than" i \ll endsnippet snippet >> "Greater order than" i \gg endsnippet snippet int "Integral symbol" i \int endsnippet snippet -int "Integral with values" i \int_{${1:<lower bound>}}^{${2:<upper bound}}$0 endsnippet snippet OO "Empty set" i \O endsnippet snippet -sq "Square superscript" i ^{2}$0 endsnippet snippet -cb "Cube superscript" i ^{3}$0 endsnippet snippet -- "Superscript" iA ^{$1}$0 endsnippet snippet __ "Subscript" iA _{$1}$0 endsnippet snippet ... "Ellipsis" i \ldots endsnippet snippet c.. "Centered ellipsis" i \cdots endsnippet snippet v.. "Vertical ellipsis" i \vdots endsnippet snippet d.. "Diagonal ellipsis" i \ddots endsnippet snippet Mbc "Mathematical because symbol" i \because endsnippet snippet Mth "Mathematical therefore symbol" i \therefore endsnippet snippet exp "Expression" i \exp(${1:x}} $0 endsnippet snippet frac "Fraction" i \frac{${1:<enumerator>}{${2:<denominator}} $0 endsnippet snippet "-(\d+|\w+) over (\d+|\w+)-" "Quick fraction" riA `!p snip.rv = f"\\frac{{{match.group(1)}}}{{{match.group(2)}}}"` $0 endsnippet snippet "-(\d+|\w+) / (\d+|\w+)-" "Quick fraction" riA `!p snip.rv = f"\\frac{{{match.group(1)}}}{{{match.group(2)}}}"` $0 endsnippet snippet mod "Mod operator (as binary operator)" i \bmod $0 endsnippet ## Common notations snippet sum "Sigma notation symbol" i \sum endsnippet snippet -sum "Sigma notation" i \sum_{${1:<lower bound>}^{${2:<upper bound>}} f(${3:<function expression>}) $0 endsnippet snippet prod "Product notation symbol" i \prod endsnippet snippet -prod "Product notation" i \prod_{${1:<lower bound>}^{${2:upper bound}} f(${3:<function expression>}) $0 endsnippet snippet lim "Limit keyword" i \lim endsnippet snippet -lim "Limit operator" i \lim\limits_{${1:x \to \infty}} endsnippet snippet ooo "Infinity symbol" i \infty endsnippet snippet inf "Infinity symbol" i \infty endsnippet snippet choose "Choose function" i \binom{${1:<range>}}{${2:<N>}} $0 endsnippet snippet "-(\d+|\w+) choose (\d+|\w+)-" "Quick choose function" riA `!p snip.rv = f"\\binom{{{match.group(1)}}}{{{match.group(2)}}}"` $0 endsnippet ## Common sets of numbers snippet SN "Set of natural numbers" i \N endsnippet snippet SZ "Set of integers" i \Z endsnippet snippet SQ "Set of rational numbers" i \Q endsnippet snippet SA "Set of algebraic numbers" i \mathbb{A} endsnippet snippet SR "Set of real numbers" i \R endsnippet snippet SC "Set of complex numbers" i \C endsnippet ## Common mathematical logic symbols snippet Lin "Logical in symbol" i \in endsnippet snippet L!in "Logical not in symbol" i \notin endsnippet snippet Lon "Logical owns symbol" i \ni endsnippet snippet LSu "Logical set union" i \cup endsnippet snippet LSi "Logical set interaction" i \cap endsnippet snippet LSd "Logical set difference" i \setminus endsnippet snippet Lex "There exists at least one" i \exists endsnippet snippet Lex! "There exists one and only one" i \exists! endsnippet snippet L!ex "Not exists" i \nexists endsnippet snippet Lfa "For all" i \forall endsnippet snippet Lor "Logical 'or' symbol" i \lor endsnippet snippet Land "Logical 'and' symbol" i \land endsnippet snippet Lnot "Logical 'not' symbol" i \neg endsnippet snippet => "Implies" Ai \implies endsnippet snippet =< "Implied by" Ai \impliedby endsnippet snippet <=> "If and only if" i \iff endsnippet snippet iff "If and only if" i \iff endsnippet snippet (( "Subset" i \subset endsnippet snippet !( "Not a proper subset" i \not\subset endsnippet snippet =( "Subset is equal to" i \subseteq endsnippet snippet !=( "Not a subset of" i \nsubseteq endsnippet snippet )) "A proper subset of" i \supset endsnippet snippet !) "Not a proper superset of" i \not\supset endsnippet snippet =) "A subset of" i \supseteq endsnippet snippet !=) "Not a superset of" i \nsupseteq endsnippet ## Common functions ### Trigonometric functions snippet Msin "Sine function" i \sin`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet Mcos "Cosine function" i \cos`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet Mtan "Tangent function" i \tan`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet Mcsc "Cosecant function" i \csc`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet Msec "Secant function" i \sec`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet Mcot "Cotangent function" i \cot`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet ### Inverse trigonometric functions snippet M!sin "Inverse sine keyword" i \arcsin`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet M!cos "Inverse cosine keyword" i \arccos`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet M!tan "Inverse tangent keyword" i \arctan`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet M!csc "Inverse cosecant keyword" i \arccsc`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet M!sec "Inverse secant keyword" i \arcsec`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet M!cot "Inverse cotangent" i \arccot`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet ### Hyperbolic trigonometric functions snippet Msinh "Hyperbolic sine" i \sinh`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet Mcosh "Hyperbolic cosine" i \cosh`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet Mtanh "Hyperbolic tangent" i \tanh`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet Mcsch "Hyperbolic cosecant" i \operatorname{csch}`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet Msech "Hyperbolic secant" i \operatorname{sech}`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet Mcoth "Hyperbolic cotangent" i \coth`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet ### Inverse hyperbolic trigonometric functions snippet M!sinh "Inverse hyperbolic sine" i \operatorname{arsinh}`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet M!cosh "Inverse hyperbolic cosine" i \operatorname{arcosh}`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet M!tanh "Inverse hyperbolic tangent" i \operatorname{artanh}`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet M!csch "Inverse hyperbolic cosecant" i \operatorname{arcsch}`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet M!sech "Inverse hyperbolic secant" i \operatorname{arsech}`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet snippet M!coth "Inverse hyperbolic cotangent" i \operatorname{arcoth}`!p smart_space(t[1], "(")`$1`!p smart_space(t[1], ")")` endsnippet ## Common symbols found in geometry snippet Gov "Overline" i \overline{$1} endsnippet snippet ----- "Overline" i \overline{$1} endsnippet snippet Gra "Right arrow" i \overrightarrow{$1} endsnippet snippet ----> "Right arrow" i \overrightarrow{$1} endsnippet snippet Gang "Angle symbol" i \angle endsnippet snippet Gman "Measured angle symbol" i \measuredangle endsnippet snippet Gtri "Triangle" i \triangle endsnippet snippet Gpar "Parallel with" i \| endsnippet snippet G!par "Not parallel with" i \nparallel endsnippet snippet Gper "Perpendicular to" i \perp endsnippet snippet G!per "Not perpendicular to" i \not\perp endsnippet # Text formatting snippet bf "Boldface text" i \textbf{$1}$0 endsnippet snippet it "Italic text" i \emph{$1}$0 endsnippet snippet tt "Teletype font" i \texttt{$1}$0 endsnippet snippet ol "Enumerated list (ordered list)" i \begin{enumerate} $1 \end{enumerate} $0 endsnippet snippet ul "Itemized list (unordered list)" i \begin{itemize} $1 \end{itemize} $0 endsnippet snippet li "List item for the OL/UL lists" i \item{$1} $0 endsnippet snippet a "URL links (with description)" i \href{${1:<url>}{${2:<description>}}$0 endsnippet snippet al "Reference links with label" i \autoref{${1:<label>}}$0 endsnippet # Greek letters snippet GAA "Uppercase Greek letter alpha" \Alpha endsnippet snippet GAa "Lowercase Greek letter alpha" \alpha endsnippet snippet GBB "Uppercase Greek letter beta" \Beta endsnippet snippet GBb "Lowercase Greek letter beta" \beta endsnippet snippet GCC "Uppercase Greek letter gamma" \Gamma endsnippet snippet GCc "Lowercase Greek letter gamma" \gamma endsnippet snippet GDD "Uppercase Greek letter delta" \Delta endsnippet snippet GDd "Lowercase Greek letter delta" \delta endsnippet snippet GEE "Uppercase Greek letter epsilon" \Epsilon endsnippet snippet GEe "Lowercase Greek letter epsilon" \epsilon endsnippet snippet GVEe "Variation Greek letter epsilon" \varepsilon endsnippet snippet GTT "Uppercase Greek letter theta" \Theta endsnippet snippet GTt "Lowercase Greek letter theta" \theta endsnippet snippet GLL "Uppercase Greek letter lambda" \Lambda endsnippet snippet GLl "Lowercase Greek letter lambda" \lambda endsnippet snippet GPP "Uppercase Greek letter pi" \Pi endsnippet snippet GPp "Lowercase Greek letter pi" \pi endsnippet snippet GVPp "Variation Greek letter pi" \varpi endsnippet snippet GSS "Uppercase Greek letter sigma" \Sigma endsnippet snippet GSs "Lowercase Greek letter sigma" \sigma endsnippet snippet GPH "Uppercase Greek letter phi" \Phi endsnippet snippet GPh "Lowercase Greek letter phi" \phi endsnippet snippet GVPh "Variation Greek letter phi" \varphi endsnippet snippet GPS "Uppercase Greek letter psi" \Psi endsnippet snippet GPs "Lowercase Greek letter psi" \psi endsnippet snippet GOO "Uppercase Greek letter omega" \Omega endsnippet snippet GOo "Lowercase Greek letter omega" \omega endsnippet # Custom commands and environment (for my class notes) snippet dnote "Doc note admonition block" i \begin{-doc-note} $1 \end{-doc-note} $0 endsnippet snippet dinfo "Doc info admonition block" i \begin{-doc-info} $1 \end{-doc-info} $0 endsnippet snippet dtheo "Doc theorem block" i \begin{-doc-theorem} $1 \end{-doc-theorem} $0 endsnippet snippet ddef "Doc definition block" i \begin{-doc-definition} $1 \end{-doc-definition} $0 endsnippet snippet dwarn "Doc warning callout block" i \begin{-doc-warning} $1 \end{-doc-warning} $0 endsnippet snippet dcrit "Doc critical callout block" i \begin{-doc-critical} $1 \end{-doc-critical} $0 endsnippet