# A valid snippet should starts with:
#
#		snippet trigger_word [ "description" [ options ] ]
#
# and end with:
#
#		endsnippet
#
# Snippet options:
#
#		b - Beginning of line.
#		i - In-word expansion.
#		w - Word boundary.
#		r - Regular expression
#		e - Custom context snippet
#		A - Snippet will be triggered automatically, when condition matches.
#
# Basic example:
#
#		snippet emitter "emitter properties" b
#		private readonly ${1} = new Emitter<$2>()
#		public readonly ${1/^_(.*)/$1/}: Event<$2> = this.$1.event
#		endsnippet
# Online reference: https://github.com/SirVer/ultisnips/blob/master/doc/UltiSnips.txt

snippet latex "A latex block" w
$${VISUAL}${1}$${0}
endsnippet

snippet dydx "The derivative" i
\frac{d${1:y}}{d${2:x}}${0}
endsnippet

snippet derivative "The derivative" i
\frac{d${1:y}}{d${2:x}}${0}
endsnippet

snippet inti "Integrate indefinitely" i
\int ${1} \text{ d}${2:x}${0}
endsnippet

snippet intd "Integrate definitely" i
\int^{${1}}_{${2}}${3} \text{ d}${4:x}${0}
endsnippet

snippet ihat "The I vector" i
\hat{\bm{i}}
endsnippet

snippet jhat "The J vector" i
\hat{\bm{j}}
endsnippet

snippet vecbold "A vector" i
\bm{${1}}${0}
endsnippet

snippet veccol2 "A 2-tall column vector" i
\begin{pmatrix} ${1} \\\\ ${2} \end{pmatrix}${0}
endsnippet

snippet nl "A latex newline (e.g. for column vectors)" i
\\\\ 
endsnippet

snippet d2ydx2 "The second derivative" i
\frac{d^2${1:y}}{d${2:x}^2}${0}
endsnippet

snippet nospell "Disable spellcheck on the visually-selected region"
<!-- spell-checker:disable -->
${VISUAL}
<!-- spell-checker:enable -->
endsnippet

snippet spellwords "Add extra words for spellchecking"
<!-- spell-checker:words ${1} -->${0}
endsnippet

snippet normaldistribution "A normal distribution" i
X\sim N(${1:mean}, ${2:variance})${0}
endsnippet

snippet 2x2matrix "A 2 by 2 matrix" i
\begin{bmatrix} ${1} & ${2} \\\\ ${3} & ${4} \end{bmatrix}${0}
endsnippet

snippet sum "A sum" i
\sum^{${1:n}}_{${2:r}=${3:1}}${4}${0}
endsnippet

snippet qed "quod erat demonstrandum - the thing we wanted to prove has been" w
Q.E.D.
endsnippet

snippet forallinzplus "For all in the positive integers" i
\forall ${1:n} \in \\${2:Z}^${3:+}${0}
endsnippet

snippet piby "By by something" i
\frac{${1}\pi}{${2}}${0}
endsnippet
