901 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
			
		
		
	
	
			901 lines
		
	
	
		
			13 KiB
		
	
	
	
		
			Plaintext
		
	
	
 | 
						|
global !p
 | 
						|
from datetime import datetime
 | 
						|
from math import factorial
 | 
						|
import subprocess
 | 
						|
import re
 | 
						|
import sys
 | 
						|
 | 
						|
ZOTERO_BASE = "http://127.0.0.1:23119/better-bibtex/cayw"
 | 
						|
FENCES = {
 | 
						|
	"i": "idea",
 | 
						|
	"q": "question",
 | 
						|
	"n": "note",
 | 
						|
	"t": "thought",
 | 
						|
}
 | 
						|
 | 
						|
def math_inline():
 | 
						|
	return vim.command_output('GetContext') == 'math_inline'
 | 
						|
 | 
						|
def math_block():
 | 
						|
	return vim.command_output('GetContext') == 'math_block'
 | 
						|
 | 
						|
def math():
 | 
						|
	return math_inline() or math_block()
 | 
						|
 | 
						|
def code_block():
 | 
						|
	return vim.command_output('GetContext') == 'pandocDelimitedCodeBlock'
 | 
						|
 | 
						|
def code_inline():
 | 
						|
	return vim.command_output('GetContext') == 'pandocNoFormatted'
 | 
						|
 | 
						|
def code():
 | 
						|
	return code_inline() or code_block()
 | 
						|
 | 
						|
def slugify(text):
 | 
						|
	return re.sub('\s+', '-', text.lower())
 | 
						|
 | 
						|
def linkify(text, link):
 | 
						|
	return f"[{text}]({link})"
 | 
						|
 | 
						|
def zot(action):
 | 
						|
		if action == "get_title":
 | 
						|
			cmd = f"curl -s '{ZOTERO_BASE}?format=json&selected=1' | jq '.[].title' -r"
 | 
						|
		elif action == "get_citekey":
 | 
						|
			cmd = f"curl -s '{ZOTERO_BASE}?format=pandoc&selected=1'"
 | 
						|
		elif action == "get_citekey_brackets":
 | 
						|
			cmd = f"curl -s '{ZOTERO_BASE}?format=pandoc&selected=1&brackets=1'"
 | 
						|
		elif action == "get_link":
 | 
						|
			link_path = re.sub("^@", "", zot("get_citekey"))
 | 
						|
			link_title = zot("get_title")
 | 
						|
			link = linkify(link_title, link_path)
 | 
						|
			return link
 | 
						|
		elif action == "get_file":
 | 
						|
			link_path = re.sub("^@", "", zot("get_citekey"))
 | 
						|
			link_title = zot("get_title")
 | 
						|
			link = linkify(link_title, f"file://{link_path}.pdf")
 | 
						|
			return link
 | 
						|
		else:
 | 
						|
			return "Zotero action not found"
 | 
						|
		return subprocess.check_output(cmd, shell=True).decode("utf-8").strip()
 | 
						|
endglobal
 | 
						|
 | 
						|
snippet ctx "Context" i
 | 
						|
`!p snip.rv = vim.command_output('GetContext')`
 | 
						|
endsnippet
 | 
						|
 | 
						|
# General markdown
 | 
						|
 | 
						|
snippet ^h "Markdown header" r
 | 
						|
# $1
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet ^sec "Markdown section" r
 | 
						|
## $1
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet ^ssec "Markdown subsection" r
 | 
						|
### $1
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet ^sex "Markdown example section" r
 | 
						|
## Example: $1
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet ^ssex "Markdown example subsection" r
 | 
						|
### Example: $1
 | 
						|
endsnippet
 | 
						|
 | 
						|
# Zettelkasten templating
 | 
						|
 | 
						|
snippet nl
 | 
						|
*nld*: $1
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet eng
 | 
						|
*eng*: $1
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet fr
 | 
						|
*fra*: $1
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet (de
 | 
						|
*deu*: $1
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet (nl
 | 
						|
(*nld*: $1)
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet (eng
 | 
						|
(*eng*: $1)
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet (fr
 | 
						|
(*fra*: $1)
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet (de
 | 
						|
(*deu*: $1)
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet in
 | 
						|
(In [$1]($2))$3
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet liwhat "What?" A
 | 
						|
`!p snip.rv = "* [What?](" + snip.basename + "_what)"`$1
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet liwhy "Why?" A
 | 
						|
`!p snip.rv = "* [Why?](" + snip.basename + "_why)"`$1
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet < "Comment (html)"
 | 
						|
<!-- $1 -->$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet <. "Comment (html) ..." i
 | 
						|
<!-- ... -->$1
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet <t "Thought (html)" i
 | 
						|
<!--:::thought
 | 
						|
$1
 | 
						|
:::-->
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet <q "Question (html)" i
 | 
						|
<!--:::question
 | 
						|
$1
 | 
						|
:::-->
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet <i "Idea (html)" i
 | 
						|
<!--:::idea
 | 
						|
$1
 | 
						|
:::-->
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet <n "Note (html)" i
 | 
						|
<!--:::note
 | 
						|
$1
 | 
						|
:::-->
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet td "Todo"
 | 
						|
TODO${1:: $2}
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet ref "References"
 | 
						|
<!--references-->
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet sort "Sort"
 | 
						|
<!--sort-->
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet foot "Footnotes"
 | 
						|
<!--footnotes-->
 | 
						|
[^0]:
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet def "Definition"
 | 
						|
**Definition${1:: $2}**${3: [${4:citation}${5:, ${6:pointer}}]}
 | 
						|
 | 
						|
$7
 | 
						|
 | 
						|
___
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet theo "Theorem"
 | 
						|
**Theorem${1:: $2}**${3: [${4:citation}${5:, ${6:pointer}}]}
 | 
						|
 | 
						|
$7
 | 
						|
 | 
						|
${8/(\w+).*/**Theorem** \n\n.../}
 | 
						|
 | 
						|
___
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet prop "Property"
 | 
						|
**Property $1** [@]
 | 
						|
 | 
						|
$2
 | 
						|
 | 
						|
___
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet lemm "Lemma"
 | 
						|
**Lemma $1** [@]
 | 
						|
 | 
						|
$2
 | 
						|
 | 
						|
___
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet coro "Corollary"
 | 
						|
**Corollary $1** [@]
 | 
						|
 | 
						|
$2
 | 
						|
 | 
						|
___
 | 
						|
endsnippet
 | 
						|
 | 
						|
# Greek symbols
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet alpha "Alpha"
 | 
						|
\\alpha
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet beta "Beta"
 | 
						|
\\beta
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet gamma "Gamma"
 | 
						|
\\gamma
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet delta "Delta"
 | 
						|
\\delta
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet epsilon "Epsilon"
 | 
						|
\\epsilonilon
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet zeta "Zeta"
 | 
						|
\\zeta
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet eta "Eta"
 | 
						|
\\eta
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet theta "Theta"
 | 
						|
\\theta
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet iota "Iota"
 | 
						|
\\iota
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet kappa "Kappa"
 | 
						|
\\kappa
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet lambda "Lambda" i
 | 
						|
\\lambda
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet mu "Mu"
 | 
						|
\\mu
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet nu "Nu"
 | 
						|
\\nu
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet xi "Xi"
 | 
						|
\\xi
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet omicron "Omicron"
 | 
						|
\\omicron
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet pi "Pi"
 | 
						|
\\pi
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet rho "Rho"
 | 
						|
\\rho
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet sigma "Sigma"
 | 
						|
\\sigma
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet tau "Tau"
 | 
						|
\\tau
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet upsilon "Upsilon"
 | 
						|
\\upsilon
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet phi "Phi"
 | 
						|
\\phi
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet chi "Chi"
 | 
						|
\\chi
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet psi "Psi"
 | 
						|
\\psi
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet omega "Omega"
 | 
						|
\\omega
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet Gamma "Gamma"
 | 
						|
\\Gamma
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet Delta "Delta"
 | 
						|
\\Delta
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet Theta "Theta"
 | 
						|
\\Theta
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet Lambda "Lambda"
 | 
						|
\\Lambda
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet Xi "Xi"
 | 
						|
\\Xi
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet Pi "Pi"
 | 
						|
\\Pi
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet Sigma "Sigma"
 | 
						|
\\Sigma
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet Upsilon "Upsilon"
 | 
						|
\\Upsilon
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet Phi "Phi"
 | 
						|
\\Phi
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet Psi "Psi"
 | 
						|
\\Psi
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet Omega "Omega"
 | 
						|
\\Omega
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet asaw "Als en slechts als (woorden)" i
 | 
						|
als en slechts als 
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet iffw "If and only if (words)" i
 | 
						|
if and only if
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet asas "Als en slechts als (shorthand)" i
 | 
						|
**asa**
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet iffs "If and only if (shorthand)" i
 | 
						|
**iff**
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet beg "Begin"
 | 
						|
\begin{$1}
 | 
						|
$2
 | 
						|
\end{$1}
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet align "" i
 | 
						|
\begin{align}
 | 
						|
$1
 | 
						|
\end{align}
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet cases "" i
 | 
						|
\begin{cases}
 | 
						|
$1 \\\\
 | 
						|
$2
 | 
						|
\end{cases}
 | 
						|
$3
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet tik "Tikzpicture" i
 | 
						|
\begin{tikzpicture}
 | 
						|
$1
 | 
						|
\end{tikzpicture}
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet matrix "Matrix" i
 | 
						|
\begin{bmatrix}
 | 
						|
$1
 | 
						|
\end{bmatrix}
 | 
						|
endsnippet
 | 
						|
 | 
						|
# Insert anything after m/M in math mode
 | 
						|
 | 
						|
snippet "(\b)m(.*)" "MathJax" r
 | 
						|
`!p snip.rv = match.group(1) + "$" + match.group(2) + "$"`
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet (\b)M(.*) "MathJax block" irw
 | 
						|
$$
 | 
						|
`!p snip.rv = match.group(2)`
 | 
						|
$$
 | 
						|
endsnippet
 | 
						|
 | 
						|
# Calligraphic letters
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet c([A-z]) "Calligraphic A" r
 | 
						|
`!p snip.rv = "\\mathcal{" + match.group(1) + "}"`$1
 | 
						|
endsnippet
 | 
						|
 | 
						|
# Subscripts
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet '([A-z])(\w+)' "Subscripts" irw
 | 
						|
`!p snip.rv = match.group(1) + '_' + match.group(2) if len(match.group(2)) == 1 else match.group(1) + '_{' + match.group(2) + '}'`$1
 | 
						|
endsnippet
 | 
						|
 | 
						|
# MathJax
 | 
						|
 | 
						|
snippet fa "For all" i
 | 
						|
\forall
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet frac "" i
 | 
						|
\frac{$1}{$2}$3
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet set "" i
 | 
						|
\\{$1\\}$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet N "" i
 | 
						|
\mathbb{N}
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet N0 "" i
 | 
						|
\mathbb{N}_0
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet N+ "" i
 | 
						|
\mathbb{N}^+
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet Z "" i
 | 
						|
\mathbb{Z}
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet Z0 "" i
 | 
						|
\mathbb{Z}_0
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet Z+ "" i
 | 
						|
\mathbb{Z}^+
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet R "" i
 | 
						|
\mathbb{R}
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet R0 "" i
 | 
						|
\mathbb{R}_0
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet R+ "" i
 | 
						|
\mathbb{R}^+
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet C "" i
 | 
						|
\mathbb{C}
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet lim "" i
 | 
						|
\lim_{$1}$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet limn "" i
 | 
						|
\lim_{n \to \infty}$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet binom "" i
 | 
						|
\binom{$1}{$2}$3
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet andmath "description" i
 | 
						|
\text{ and }
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet enmath "description" i
 | 
						|
\text{ en }
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet lra "MathJax: long right arrow" i
 | 
						|
\longrightarrow
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet Ra "MathJax: right arrow" i
 | 
						|
\Rightarrow
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet Im "MathJax: image operator" i
 | 
						|
\operatorname{Im}
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet ggd "Grootste gemene deler" i
 | 
						|
\operatorname{ggd}
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet fl "Floating point" i
 | 
						|
\operatorname{fl}
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet Var "Variance" i
 | 
						|
\operatorname{Var}
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet E "Expectation" i
 | 
						|
\operatorname{E}
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet Cov "Covariance" i
 | 
						|
\operatorname{Cov}
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()" i
 | 
						|
snippet ntup "Alpha"
 | 
						|
(x_1, \ldots, x_n)
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet mxn "Matrix" i
 | 
						|
m \times n
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet mxn- "Matrix" i
 | 
						|
$m \times n$-matrix
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet nxn "Matrix" i
 | 
						|
n \times n
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet det "Determinant" i
 | 
						|
\operatorname{det}(${1:A})$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet det| "Determinant alternative notation" i
 | 
						|
|${1:A}|$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet Span "Span" i
 | 
						|
\operatorname{Span}\\{$1\\}$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet Nul "Null" i
 | 
						|
\operatorname{Nul}($1)$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet Col "Column space" i
 | 
						|
\operatorname{Col}($1)$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet kern "Kernel" i
 | 
						|
\operatorname{kern}($1)$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet vec "Vector" i
 | 
						|
\mathbf{$1}$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "math()"
 | 
						|
snippet vec([A-z]) "Vector ..." r
 | 
						|
`!p snip.rv = "\\mathbf{" + match.group(1) + "}"`$1
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet v1tovp "Vectors v indexed from 1 to p"
 | 
						|
\mathbf{v_1},...,\mathbf{v_p}$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet a1toan "Vectors a indexed from 1 to n"
 | 
						|
\mathbf{a_1},...,\mathbf{v_n}$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet .. "Dot dot dot" i
 | 
						|
\dots $1
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet text "MathJax text" i
 | 
						|
\text{$1}$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet leq "Less than or equal to" i
 | 
						|
\leq
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet leq "Greater than or equal to" i
 | 
						|
\geq
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet eat "Evaluated at" i
 | 
						|
{\biggr\rvert}_{$1}$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet sketch "Link a sketch" i
 | 
						|
[$1](file:///home/h/sketches/$2)
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet deck "Get anki deck"
 | 
						|
`get-anki-decks`
 | 
						|
endsnippet
 | 
						|
 | 
						|
# snippet ` "Inline code" i
 | 
						|
# `$1`
 | 
						|
# endsnippet
 | 
						|
 | 
						|
# Escape backticks
 | 
						|
snippet `` "Code block" bA
 | 
						|
\`\`\`$1
 | 
						|
$2
 | 
						|
\`\`\`
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet `tex "Latex block (see latex filter)" bA
 | 
						|
\`\`\`{.tex}
 | 
						|
$1
 | 
						|
\`\`\`
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet `tik "Tikz block (see tikz filter)" bA
 | 
						|
\`\`\`{.tex}
 | 
						|
\\begin{tikzpicture}
 | 
						|
$1
 | 
						|
\\end{tikzpicture}
 | 
						|
\`\`\`
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet task "Task" i
 | 
						|
* [ ] $1 -- pro:$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet "(\b)fn(\d+)" "" ir
 | 
						|
`!p snip.rv = snip.basename + "_" + match.group(2).zfill(2)`$1
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet "ch(\d+)" "Link chapter" ir
 | 
						|
`!p
 | 
						|
num_str = match.group(1).zfill(2)
 | 
						|
title = 3*"."
 | 
						|
link = snip.basename + "_" + num_str
 | 
						|
snip.rv = num_str + ". " + linkify(title, link)
 | 
						|
`
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet "ch(\d+)to(\d+)" "Link chapters ... to ..." irA
 | 
						|
`!p
 | 
						|
for i in range(int(match.group(1)), int(match.group(2)) + 1):
 | 
						|
	num_str = str(i).zfill(2)
 | 
						|
	title = 3*"."
 | 
						|
	link = snip.basename + "_" + num_str
 | 
						|
	snip.rv += num_str + ". " + linkify(title, link) + "\n"
 | 
						|
`
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet "sec([\sA-z]+)" "Link section titled ..." r
 | 
						|
`!p
 | 
						|
snip.rv = "* " + linkify(match.group(1), f"{snip.basename}_{slugify(match.group(1))}")
 | 
						|
`
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet cp(\d+) "Comment current page (and date)" r
 | 
						|
`!p snip.rv = "<!--" + datetime.now().strftime("%Y-%m-%d") + " p. " + match.group(1) + "-->"`
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet (\d+)! "Factorial of ..." r
 | 
						|
`!p snip.rv = factorial(int(match.group(1)))`
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet d "Date"
 | 
						|
`!p snip.rv = datetime.now().strftime("%Y-%m-%d")`
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet :(\w*) "Fence" r
 | 
						|
`!p snip.rv += ":::" + FENCES.get(match.group(1) or "", "") + "\n" `$1
 | 
						|
`!p snip.rv += ":::"`$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet \[(\w*) "Fence inline" ir
 | 
						|
`!p snip.rv += "["`$1`!p snip.rv += "]{." + FENCES.get(match.group(1) or "", "") + "}"`$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet ^eg "Example" r
 | 
						|
E.g. $1
 | 
						|
endsnippet
 | 
						|
 | 
						|
# E.g. after list (or list preceded by space)
 | 
						|
snippet (\*\s|\*)eg "Example" r
 | 
						|
* E.g. $1
 | 
						|
endsnippet
 | 
						|
 | 
						|
# E.g. after dot (or dot preceded by space)
 | 
						|
snippet (\.\s|\.)eg "Example" r
 | 
						|
. E.g. $1
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet (?<!^|\*\s|\*|\.\s|\.)eg "Example" r
 | 
						|
e.g. $1
 | 
						|
endsnippet
 | 
						|
 | 
						|
# Zettelkasten to Anki
 | 
						|
 | 
						|
snippet td "TARGET DECK: <Deck name>"
 | 
						|
TARGET DECK: $1::$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet clo "Cloze"
 | 
						|
START
 | 
						|
Cloze
 | 
						|
${0:${VISUAL}}$1
 | 
						|
END
 | 
						|
$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet clos "Cloze start"
 | 
						|
START
 | 
						|
Cloze
 | 
						|
$1
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet cloe "Cloze end"
 | 
						|
END
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet clod
 | 
						|
START
 | 
						|
Cloze
 | 
						|
**Definition$1**
 | 
						|
 | 
						|
$2
 | 
						|
END
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet clop
 | 
						|
START
 | 
						|
Cloze
 | 
						|
**Property$1**
 | 
						|
 | 
						|
$2
 | 
						|
END
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet clot
 | 
						|
START
 | 
						|
Cloze
 | 
						|
**Theorem$1**
 | 
						|
 | 
						|
$2
 | 
						|
END
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet clol
 | 
						|
START
 | 
						|
Cloze
 | 
						|
**Lemma$1**
 | 
						|
 | 
						|
$2
 | 
						|
END
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet "c(\d+)" "Cloze <number>" r
 | 
						|
{{c`!p snip.rv = int(match.group(1))`::${0:${VISUAL}}$1}}$2
 | 
						|
endsnippet
 | 
						|
 | 
						|
# Match preceded by whitespace or start of line
 | 
						|
snippet (?<!\S)z($|t|l|z|o|\.) "Zotero" r
 | 
						|
`!p
 | 
						|
 | 
						|
ACTIONS = {
 | 
						|
	"": "get_citekey",
 | 
						|
	"t": "get_title",
 | 
						|
	"l": "get_link",
 | 
						|
	"z": "get_citekey_brackets",
 | 
						|
	"o": "get_file",
 | 
						|
}
 | 
						|
 | 
						|
snip.rv = zot(ACTIONS.get(match.group(1)))
 | 
						|
`
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet zq "Zotero quote" r
 | 
						|
`!p snip.rv = '>\n> --' + zot("get_citekey_brackets")`
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet acz "According to ..."
 | 
						|
`!p snip.rv = "According to " + zot("get_citekey")`
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet azex "As ... explains"
 | 
						|
`!p snip.rv = "As " + zot("get_citekey") + " explains, "`
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet iz "In ..."
 | 
						|
`!p snip.rv = "In " + zot("get_citekey")`
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet izd "In ...'s definition"
 | 
						|
`!p snip.rv = "In " + zot("get_citekey") + "'s definition, "`
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet zintends "... intends to ..." A
 | 
						|
`!p snip.rv = zot("get_citekey") + " intends to "`
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet tfol "The following" wA
 | 
						|
the following
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet tfolt "It follows that" wA
 | 
						|
it follows that
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet ntfol "In the following" wA
 | 
						|
in the following
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet algos "algorithms" wA
 | 
						|
algorithms
 | 
						|
endsnippet
 | 
						|
 | 
						|
snippet algo "algorithm" wA
 | 
						|
algorithm
 | 
						|
endsnippet
 | 
						|
 | 
						|
# TODO: Make only available in tikzpicture
 | 
						|
context "code()"
 | 
						|
snippet q "State" w
 | 
						|
\node[state] ($1) [] {$2};
 | 
						|
endsnippet
 | 
						|
 | 
						|
context "code()"
 | 
						|
snippet q0 "Initial state" w
 | 
						|
\node[initial,state] ($1) {$2};
 | 
						|
endsnippet
 |