kickstart.nvim/lua/custom/plugins/Luasnip/tex/math.lua

2939 lines
69 KiB
Lua
Raw Normal View History

local ls = require("luasnip")
local f = ls.function_node
local d = ls.dynamic_node
local r = ls.restore_node
local s = ls.snippet
local sn = ls.snippet_node
local isn = ls.indent_snippet_node
local t = ls.text_node
local i = ls.insert_node
local f = ls.function_node
local c = ls.choice_node
local d = ls.dynamic_node
local r = ls.restore_node
local events = require("luasnip.util.events")
local ai = require("luasnip.nodes.absolute_indexer")
local extras = require("luasnip.extras")
local l = extras.lambda
local rep = extras.rep
local p = extras.partial
local m = extras.match
local n = extras.nonempty
local dl = extras.dynamic_lambda
local fmt = require("luasnip.extras.fmt").fmt
local fmta = require("luasnip.extras.fmt").fmta
local conds = require("luasnip.extras.expand_conditions")
local postfix = require("luasnip.extras.postfix").postfix
local types = require("luasnip.util.types")
local parse = require("luasnip.util.parser").parse_snippet
local ms = ls.multi_snippet
local k = require("luasnip.nodes.key_indexer").new_key
-- Auxiliary functions
-- Math zone context
-- taken from https://ejmastnak.com/
local in_mathzone = function()
return vim.fn['vimtex#syntax#in_mathzone']() == 1
end
-- Visual placeholder
-- taken from https://ejmastnak.com/
local get_visual = function(args, parent, default_text)
if (#parent.snippet.env.LS_SELECT_RAW > 0) then
return sn(nil, i(1,parent.snippet.env.LS_SELECT_RAW))
else -- If LS_SELECT_RAW is empty, return a blank insert node
return sn(nil, i(1,default_text))
end
end
local function v(pos, default_text)
return d(pos, function(args, parent) return get_visual(args, parent, default_text) end)
end
-- Matrices and cases
-- taken from github.com/evesdropper
local generate_matrix = function(args, snip)
local rows = tonumber(snip.captures[2])
local cols = tonumber(snip.captures[3])
local nodes = {}
local ins_indx = 1
for j = 1, rows do
table.insert(nodes, r(ins_indx, tostring(j) .. "x1", i(1)))
ins_indx = ins_indx + 1
for k = 2, cols do
table.insert(nodes, t(" & "))
table.insert(nodes, r(ins_indx, tostring(j) .. "x" .. tostring(k), i(1)))
ins_indx = ins_indx + 1
end
table.insert(nodes, t({ " \\\\", "" }))
end
nodes[#nodes] = t(" \\\\")
return sn(nil, nodes)
end
local generate_hom_matrix = function(args, snip)
local rows = tonumber(snip.captures[2])
local cols = tonumber(snip.captures[3])
local nodes = {}
local ins_indx = 1
for j = 1, rows do
if j == 1 then
table.insert(nodes, r(ins_indx,i(1)))
table.insert(nodes, t("_{11}"))
else
table.insert(nodes, rep(1))
table.insert(nodes, t("_{" .. tostring(j) .. "1}"))
end
ins_indx = ins_indx + 1
for k = 2, cols do
table.insert(nodes, t(" & "))
table.insert(nodes, rep(1))
table.insert(nodes, t("_{" .. tostring(j) .. tostring(k) .. "}"))
ins_indx = ins_indx + 1
end
table.insert(nodes, t({ " \\\\", "" }))
end
nodes[#nodes] = t(" \\\\")
return sn(nil, nodes)
end
local generate_cases = function(args, snip)
local rows = tonumber(snip.captures[1]) or 2
local cols = 2
local nodes = {}
local ins_indx = 1
for j = 1, rows do
table.insert(nodes, r(ins_indx, tostring(j) .. "x1", sn(1,{t(" \\hfil "),i(1)})))
ins_indx = ins_indx + 1
for k = 2, cols do
table.insert(nodes, t(" & "))
table.insert(nodes, r(ins_indx, tostring(j) .. "x" .. tostring(k), i(1)))
ins_indx = ins_indx + 1
end
table.insert(nodes, t({ " \\\\", "" }))
end
table.remove(nodes, #nodes)
return sn(nil, nodes)
end
-- Snippets
return {
-- Math
-- Math alphabet identifiers
s({trig = "mc", name = "Calligraphic math font", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\mathcal{"), d(1,get_visual), t("}")
},
{condition = in_mathzone}
),
s({trig = "mr", name = "Roman math font", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\mathrm{"), d(1,get_visual), t("}")
},
{condition = in_mathzone}
),
s({trig = "mb", name = "Bold math font", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\mathbf{"), d(1,get_visual), t("}")
},
{condition = in_mathzone}
),
s({trig = "ms", name = "Sans serif math font", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\mathsf{"), d(1,get_visual), t("}")
},
{condition = in_mathzone}
),
s({trig = "mt", name = "Typewriter math font", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\mathtt{"), d(1,get_visual), t("}")
},
{condition = in_mathzone}
),
s({trig = "mn", name = "Normal math font", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\mathnormal{"), d(1,get_visual), t("}")
},
{condition = in_mathzone}
),
s({trig = "mi", name = "Italic math font", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\mathit{"), d(1,get_visual), t("}")
},
{condition = in_mathzone}
),
s({trig = "mf", name = "Euler Fraktur math font", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\mathfrak{"), d(1,get_visual), t("}")
},
{condition = in_mathzone}
),
s({trig = "mk", name = "Blackboard bold math font", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\mathbb{"), d(1,get_visual), t("}")
},
{condition = in_mathzone}
),
-- Display environments and alignment structures
s({trig = "mm", name = "Inline display", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("$"), d(1,get_visual), t("$")
}
),
s({trig = "en", name = "Generic environment"},
{
t("\\begin{"), i(1,"env"), t("}"),
t({"",""}), t(" "), d(2,get_visual),
t({"",""}), t("\\end{"), rep(1), t("}")
}
),
s({trig = "nn", name = "New equation"},
{
c(1,
{
{
t("\\begin{equation*}"),
t({"",""}), t(" "), d(1,get_visual),
t({"",""}), t("\\end{equation*}")
},
{
t("\\begin{equation}"),
t({"",""}), t(" "), d(1,get_visual),
t({"",""}), t("\\end{equation}")
}
}
)
}
),
s({trig = "ml", name = "New multline"},
{
c(1,
{
{
t("\\begin{multline}"),
t({"",""}), t(" "), d(1,get_visual),
t({"",""}), t("\\end{multline}")
},
{
t("\\begin{multline*}"),
t({"",""}), t(" "), d(1,get_visual),
t({"",""}), t("\\end{multline*}")
}
}
)
}
),
s({trig = "gap", name = "Multline gap"},
{
t("\\setlenght\\multlinegap{0pt}")
}
),
s({trig = "sp", name = "New split"},
{
t("\\begin{split}"),
t({"",""}), t(" "), d(1,get_visual),
t({"",""}), t("\\end{split}")
}
),
s({trig = "gg", name = "New gather"},
{
c(1,
{
{
t("\\begin{gather}"),
t({"",""}), t(" "), d(1,get_visual),
t({"",""}), t("\\end{gather}")
},
{
t("\\begin{gather*}"),
t({"",""}), t(" "), d(1,get_visual),
t({"",""}), t("\\end{gather*}")
}
}
)
}
),
s({trig = "aa", name = "New align"},
{
c(1,
{
{
t("\\begin{align*}"),
t({"",""}), t(" "), d(1,get_visual),
t({"",""}), t("\\end{align*}")
},
{
t("\\begin{align}"),
t({"",""}), t(" "), d(1,get_visual),
t({"",""}), t("\\end{align}")
}
}
)
}
),
s({trig = "fal", name = "New falign"},
{
c(1,
{
{
t("\\begin{falign}"),
t({"",""}), t(" "), d(1,get_visual),
t({"",""}), t("\\end{falign}")
},
{
t("\\begin{falign*}"),
t({"",""}), t(" "), d(1,get_visual),
t({"",""}), t("\\end{falign*}")
}
}
)
}
),
s({trig = "(%d?)cs", name = "New cases environment", snippetType = "autosnippet", regTrig = true},
{
t("\\begin{cases}"),
t({"",""}), d(1,generate_cases),
t({"",""}), t("\\end{cases}")
},
{condition = in_mathzone}
),
s({trig = "br", name = "Display line break", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\\\"),
t({"",""}), i(1)
},
{condition = in_mathzone}
),
s({trig = "itr", name = "Short text between lines", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\intertext{"), v(1,"text"), t("}")
},
{condition = in_mathzone}
),
s({trig = "tx", name = "Text inside display", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\text{"), v(1,"text"), t("}")
},
{condition = in_mathzone}
),
s({trig = "dib", name = "Display page break", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\displaybreak")
},
{condition = in_mathzone}
),
s({trig = "dis", name = "Displaystyle", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\displaystyle")
},
{condition = in_mathzone}
),
s({trig = "ty", name = "Textstyle", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\textstyle")
},
{condition = in_mathzone}
),
-- Equation numbering and tags
s({trig = "ntg", name = "Suppress equation tag", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\notag")
},
{condition = in_mathzone}
),
s({trig = "tag", name = "Equation tag", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\tag{"), v(1,"tag"), t("}")
},
{
t("\\tag*{"), v(1,"tag"), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "teq", name = "Last number equation"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\theequation")
}
),
-- Matrix-like environments
s({trig = "([bBpvV])(%d+)x(%d+)", name = "New matrix", snippetType = "autosnippet", regTrig = true},
{
t("\\begin{"), f(function(_, snip) return snip.captures[1] .. "matrix" end), t("}"),
t({"",""}), d(1,generate_matrix),
t({"",""}), t("\\end{"), f(function(_, snip) return snip.captures[1] .. "matrix" end), t("}")
},
{condition = in_mathzone}
),
s({trig = "([bBpvV])(%d+)h(%d+)", name = "New homogeneous matrix", snippetType = "autosnippet", regTrig = true},
{
t("\\begin{"), f(function(_, snip) return snip.captures[1] .. "matrix" end), t("}"),
t({"",""}), d(1,generate_hom_matrix),
t({"",""}), t("\\end{"), f(function(_, snip) return snip.captures[1] .. "matrix" end), t("}")
},
{condition = in_mathzone}
),
s({trig = "([bBpvV])gn", name = "New generic matrix", snippetType = "autosnippet", regTrig = true},
{
t("\\begin{"), f(function(_, snip) return snip.captures[1] .. "matrix" end), t("}"),
t({"",""}), t(" "), i(1), t("_{11} & "), rep(1), t("_{12} & \\cdots & "), rep(1), t("_{1"), i(2), t("}"), t(" \\\\"),
t({"",""}), t(" "), rep(1), t("_{21} & "), rep(1), t("_{22} & \\cdots & "), rep(1), t("_{2"), rep(2), t("}"), t(" \\\\"),
t({"",""}), t(" "), t("\\vdots & \\vdots & \\ddots & \\vdots \\\\"),
t({"",""}), t(" "), rep(1), t("_{"), i(3), t("1} & "), rep(1), t("_{"), rep(3), t("2} & \\cdots & "), rep(1), t("_{"), rep(3), rep(2), t("} \\\\"),
t({"",""}), t("\\end{"), f(function(_, snip) return snip.captures[1] .. "matrix" end), t("}")
},
{condition = in_mathzone}
),
-- Subscripts and superscripts
s({trig = ";", name = "Short subscript", snippetType = "autosnippet", wordTrig = false},
{
t("_")
},
{condition = in_mathzone}
),
s({trig = ":", name = "Subscript", snippetType = "autosnippet", wordTrig = false},
{
t("_{"), d(1,get_visual), t("}")
},
{condition = in_mathzone}
),
s({trig = "´", name = "Short superscript", snippetType = "autosnippet", wordTrig = false},
{
t("^")
},
{condition = in_mathzone}
),
s({trig = "¨", name = "Superscript", snippetType = "autosnippet", wordTrig = false},
{
t("^{"), d(1,get_visual), t("}")
},
{condition = in_mathzone}
),
s({trig = "¨", name = "Superscript", snippetType = "autosnippet", wordTrig = false},
{
t("^{"), d(1,get_visual), t("}")
},
{condition = in_mathzone}
),
s({trig = "\'", name = "Subscript and superscript", snippetType = "autosnippet", wordTrig = false},
{
t("_{"), i(1), t("}^{"), i(2), t("}")
},
{condition = in_mathzone}
),
s({trig = "st", name = "Stacking", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\substack{"), d(1,get_visual), t(" \\\\ "), i(2), t("}")
},
{condition = in_mathzone}
),
-- Compound structures
s({trig = "lxl", name = "Left relation arrow", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\xleftarrow{"), i(1,"top"), t("}")
},
{
t("\\xleftarrow["), i(1,"bottom"), t("]{"), i(2,"top"), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "lxr", name = "Left relation arrow", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\xrightarrow{"), i(1,"top"), t("}")
},
{
t("\\xrightarrow["), i(1,"bottom"), t("]{"), i(2,"top"), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "cf", name = "Continued fraction", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\cfrac{"), i(1,"num"), t("}{"),
t({"",""}), t(" "), i(2,"den"),
t({"",""}), t("}")
},
{
t("\\cfrac["), i(1,"num-alignment"), t("]{"), i(2,"num"), t("}{"),
t({"",""}), t(" "), i(3,"den"),
t({"",""}), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "bx", name = "Boxed formula", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\boxed{"), d(1,get_visual), t("}")
},
{condition = in_mathzone}
),
s({trig = "ff", name = "Fraction", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\frac{"), i(1), t("}{"), i(2), t("}")
},
{
t("\\dfrac{"), i(1), t("}{"), i(2), t("}")
},
{
t("\\tfrac{"), i(1), t("}{"), i(2), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "bm", name = "Binomial coefficient", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\binom{"), i(1), t("}{"), i(2), t("}")
},
{
t("\\dbinom{"), i(1), t("}{"), i(2), t("}")
},
{
t("\\tbinom{"), i(1), t("}{"), i(2), t("}")
}
}
)
},
{condition = in_mathzone}
),
-- Decorations
s({trig = "abv", name = "Place material above", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\overset{"), i(1,"above"), t("}{"), v(2,"material"), t("}")
},
{condition = in_mathzone}
),
s({trig = "bel", name = "Place material below", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\underset{"), i(1,"below"), t("}{"), v(2,"material"), t("}")
},
{condition = in_mathzone}
),
-- Limiting positions
s({trig = "lim", name = "Above/below operator", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\limits")
},
{condition = in_mathzone}
),
s({trig = "nli", name = "Right of the operator", snippetType = "autosnippet"},
{
t("\\nolimits")
},
{condition = in_mathzone}
),
-- Relations
s({trig = "eq", name = "Congruence relation", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\equiv")
},
{condition = in_mathzone}
),
s({trig = "md", name = "Mod operator", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\Mod{"), i(1), t("}")
},
{condition = in_mathzone}
),
-- local macro
s({trig = "mod", name = "Modular relation", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"..."), t(" \\equiv "), i(2,"..."), t(" \\pmod{"), i(3,"..."), t("}")
},
{
i(1,"..."), t(" \\not\\equiv "), i(2,"..."), t(" \\pmod{"), i(3,"..."), t("}")
},
{
i(1,"..."), t(" \\equiv "), i(2,"..."), t(" \\mod{"), i(3,"..."), t("}")
},
{
i(1,"..."), t(" \\not\\equiv "), i(2,"..."), t(" \\mod{"), i(3,"..."), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "sbg", name = "Left triangle", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\vartriangleleft")
},
{
i(1,"\\ntriangleleft")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "sgc", name = "Right triangle", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\vartriangleright")
},
{
i(1,"\\ntriangleright")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "ne", name = "Not equal", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\ne")
},
{condition = in_mathzone}
),
s({trig = "nr", name = "Relation negation", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\not")
},
{condition = in_mathzone}
),
s({trig = "app", name = "Approx", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\approx")
},
{condition = in_mathzone}
),
s({trig = "cn", name = "Congruent", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\cong")
},
{
i(1,"\\ncong")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "le", name = "Less or equal", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\le")
},
{condition = in_mathzone}
),
s({trig = "ge", name = "Greater or equal", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\ge")
},
{condition = in_mathzone}
),
s({trig = "pc", name = "Precedes", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\prec")
},
{
i(1,"\\nprec")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "sx", name = "Succedes", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\succ")
},
{
i(1,"\\nsucc")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "re", name = "Relation", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\sim")
},
{
i(1,"\\nsim")
}
}
)
},
{condition = in_mathzone}
),
-- Operators
s({trig = "opr", name = "Define new operator"},
{
c(1,
{
{
t("\\DeclareMathOperator{"), i(1,"cmd"), t("}{"), i(2,"text"), t("}")
},
{
t("\\DeclareMathOperator*{"), i(1,"cmd"), t("}{"), i(2,"text"), t("}")
}
}
)
}
),
s({trig = "ce", name = "Ceiling", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\lceil "), d(1,get_visual), t(" \\rceil")
},
{
t("\\left\\lceil "), d(1,get_visual), t(" \\right\\rceil")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "fl", name = "Floor", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\lfloor "), d(1,get_visual), t(" \\rfloor")
},
{
t("\\left\\lfloor "), d(1,get_visual), t(" \\right\\rfloor")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "sq", name = "Square root", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\sqrt{"), d(1,get_visual), t("}")
},
{
t("\\sqrt["), i(1,"n-th"), t("]{"), d(2,get_visual), t("}")
},
{
t("\\sqrt[\\leftroot{"), i(1,"x"), t("}\\uproot{"), i(2,"y"), t("} "), i(3,"n-th"), t("]{"), d(4,get_visual), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "imp", name = "Imaginary part", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\Im")
},
{condition = in_mathzone}
),
s({trig = "rpa", name = "Real part", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\Re")
},
{condition = in_mathzone}
),
s({trig = "opm", name = "Mod operator", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
i(1,"..."), t(" \\bmod "), i(2,"...")
},
{condition = in_mathzone}
),
s({trig = "mp", name = "Minus plus", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\mp")
},
{condition = in_mathzone}
),
s({trig = "pm", name = "Plus minus", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\pm")
},
{condition = in_mathzone}
),
s({trig = "tm", name = "Times", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\times")
},
{condition = in_mathzone}
),
s({trig = "cd", name = "Centered dot", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\cdot")
},
{condition = in_mathzone}
),
s({trig = "cir", name = "Circle", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\circ")
},
{condition = in_mathzone}
),
s({trig = "opl", name = "Oplus", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\oplus")
},
{condition = in_mathzone}
),
s({trig = "omt", name = "Otimes", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\otimes")
},
{condition = in_mathzone}
),
s({trig = "dv", name = "Middle bar", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\mid")
},
{condition = in_mathzone}
),
s({trig = "ndv", name = "Middle bar", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\centernot\\mid")
},
{condition = in_mathzone}
),
s({trig = "xm", name = "Maximum", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\max")
},
{
t("\\max_{"), i(1,"..."), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "mu", name = "Minimum", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\min")
},
{
t("\\min_{"), i(1,"..."), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "nf", name = "Infimum", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\inf")
},
{
t("\\inf_{"), i(1,"..."), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "sr", name = "Supremum", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\sup")
},
{
t("\\sup_{"), i(1,"..."), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "arg", name = "Argument", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\arg")
},
{condition = in_mathzone}
),
s({trig = "deg", name = "Degree", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\deg")
},
{condition = in_mathzone}
),
s({trig = "det", name = "Determinant", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\det")
},
{condition = in_mathzone}
),
s({trig = "dim", name = "Dimension", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\dim")
},
{condition = in_mathzone}
),
s({trig = "gc", name = "Greatest common divisor", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\gcd")
},
{condition = in_mathzone}
),
s({trig = "hm", name = "Hom", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\hom")
},
{condition = in_mathzone}
),
s({trig = "kr", name = "Kernel", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\ker")
},
{condition = in_mathzone}
),
s({trig = "lap", name = "Laplacian", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\nabla^2 ")
},
{condition = in_mathzone}
),
s({trig = "div", name = "Divergence", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\nabla\\cdot\\vv{"), i(1), t("}")
},
{
t("\\nabla\\cdot\\vec{"), i(1), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "cur", name = "Curl", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\nabla\\times\\vv{"), i(1), t("}")
},
{
t("\\nabla\\times\\vec{"), i(1), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "ba", name = "Bra", snippetType = "autosnippet"},
{
c(1,
{
{
t("\\bra{"), i(1), t("}")
},
{
t("\\bra*{"), i(1), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "kt", name = "Ket", snippetType = "autosnippet"},
{
c(1,
{
{
t("\\ket{"), i(1), t("}")
},
{
t("\\ket*{"), i(1), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "bk", name = "Braket", snippetType = "autosnippet"},
{
c(1,
{
{
t("\\braket{"), i(1), t("}{"), i(2), t("}")
},
{
t("\\braket*{"), i(1), t("}{"), i(2), t("}")
}
}
)
},
{condition = in_mathzone}
),
-- Operators with limits
s({trig = "lm", name = "Limit", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\lim_{"), i(1), t(" \\to "), i(2), t("}")
},
{
i(1,"\\lim")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "lif", name = "liminf", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\liminf_{"), i(1), t(" \\to "), i(2), t("}")
},
{
i(1,"\\liminf")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "lsu", name = "limsup", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\limsup_{"), i(1), t(" \\to "), i(2), t("}")
},
{
i(1,"\\limsup")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "lvf", name = "varliminf", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\varliminf_{"), i(1), t(" \\to "), i(2), t("}")
},
{
i(1,"\\varliminf")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "lvu", name = "varlimsup", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\varlimsup_{"), i(1), t(" \\to "), i(2), t("}")
},
{
i(1,"\\varlimsup")
}
}
)
},
{condition = in_mathzone}
),
-- Functions
s({trig = "fn", name = "Function domain and codomain", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
i(1,"fun"), t(" : "), i(2,"dom"), t(" \\longrightarrow "), i(3,"cod")
},
{condition = in_mathzone}
),
s({trig = "fd", name = "Function definition"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\begin{align*}"),
t({"",""}), t(" "), i(1,"fun"), t(" : "), i(2,"dom"), t(" & \\longrightarrow "), i(3,"cod"), t(" \\\\"),
t({"",""}), t(" "), i(4,"point"), t(" & \\longmapsto "), i(5,"img"),
t({"",""}), t("\\end{align*}")
}
),
s({trig = "sni", name = "sin", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\sin")
},
{condition = in_mathzone}
),
s({trig = "co", name = "cos", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\cos")
},
{condition = in_mathzone}
),
s({trig = "tan", name = "tan", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\tan")
},
{condition = in_mathzone}
),
s({trig = "ot", name = "cot", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\cot")
},
{condition = in_mathzone}
),
s({trig = "sc", name = "sec", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\sec")
},
{condition = in_mathzone}
),
s({trig = "cc", name = "csc", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\csc")
},
{condition = in_mathzone}
),
s({trig = "asin", name = "arcsin", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\arcsin")
},
{condition = in_mathzone}
),
s({trig = "acos", name = "arccos", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\arccos")
},
{condition = in_mathzone}
),
s({trig = "atan", name = "arctan", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\arctan")
},
{condition = in_mathzone}
),
s({trig = "acot", name = "arccot", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\arccot")
},
{condition = in_mathzone}
),
s({trig = "asec", name = "arcsec", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\arcsec")
},
{condition = in_mathzone}
),
s({trig = "acc", name = "arccsc", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\arccsc")
},
{condition = in_mathzone}
),
s({trig = "sinh", name = "sinh", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\sinh")
},
{condition = in_mathzone}
),
s({trig = "cosh", name = "cosh", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\cosh")
},
{condition = in_mathzone}
),
s({trig = "tanh", name = "tanh", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\tanh")
},
{condition = in_mathzone}
),
s({trig = "coth", name = "coth", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\coth")
},
{condition = in_mathzone}
),
s({trig = "sh", name = "sech", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\sech")
},
{condition = in_mathzone}
),
s({trig = "hcc", name = "csch", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\csch")
},
{condition = in_mathzone}
),
s({trig = "ahsin", name = "arcsinh", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\arcsinh")
},
{condition = in_mathzone}
),
s({trig = "ahcos", name = "arccosh", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\arccosh")
},
{condition = in_mathzone}
),
s({trig = "ahtan", name = "arctanh", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\arctanh")
},
{condition = in_mathzone}
),
s({trig = "ahcot", name = "arccoth", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\arccoth")
},
{condition = in_mathzone}
),
s({trig = "ahsec", name = "arcsech", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\arcsech")
},
{condition = in_mathzone}
),
s({trig = "ahcc", name = "arccsch", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\arccsch")
},
{condition = in_mathzone}
),
s({trig = "xp", name = "exp", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\exp")
},
{condition = in_mathzone}
),
s({trig = "ln", name = "ln", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\ln")
},
{condition = in_mathzone}
),
s({trig = "lg", name = "log", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\log")
},
{condition = in_mathzone}
),
-- Ellipsis
s({trig = "dd", name = "Lower dots", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\ldots")
},
{condition = in_mathzone}
),
s({trig = "cr", name = "Centered dots", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\cdots")
},
{condition = in_mathzone}
),
s({trig = "vd", name = "Vertical dots", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\vdots")
},
{condition = in_mathzone}
),
s({trig = "gd", name = "Diagonal dots", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\ddots")
},
{condition = in_mathzone}
),
s({trig = "cln", name = "Colon", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t(":")
},
{condition = in_mathzone}
),
s({trig = "sln", name = "Semicolon", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t(";")
},
{condition = in_mathzone}
),
-- Horizontal extensions
s({trig = "ovr", name = "Overline", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\overline{"), d(1,get_visual), t("}")
},
{condition = in_mathzone}
),
s({trig = "und", name = "Underline", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\underline{"), d(1,get_visual), t("}")
},
{condition = in_mathzone}
),
s({trig = "ovb", name = "Overbrace", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\overbrace{"), d(1,get_visual), t("}^{"), i(2,"top"), t("}")
},
{condition = in_mathzone}
),
s({trig = "unb", name = "Underbrace", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\underbrace{"), d(1,get_visual), t("}_{"), i(2,"bottom"), t("}")
},
{condition = in_mathzone}
),
-- Delimiters
s({trig = "dp", name = "Parenthesis", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\left( "), d(1,get_visual), t(" \\right)")
},
{condition = in_mathzone}
),
s({trig = "ds", name = "Brackets", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\left[ "), d(1,get_visual), t(" \\right]")
},
{condition = in_mathzone}
),
s({trig = "bb", name = "Braces", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\{ "), d(1,get_visual), t(" \\}")
},
{condition = in_mathzone}
),
s({trig = "db", name = "Extensible braces", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\left\\{ "), d(1,get_visual), t(" \\right\\}")
},
{condition = in_mathzone}
),
s({trig = "dk", name = "Angle brackets", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\left\\langle "), d(1,get_visual), t(" \\right\\rangle")
},
{
t("\\langle "), d(1,get_visual), t(" \\rangle")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "da", name = "Pipes", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\left\\lvert "), d(1,get_visual), t(" \\right\\rvert")
},
{
t("\\lvert "), d(1,get_visual), t(" \\rvert")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "dn", name = "Double pipes", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\left\\lVert "), d(1,get_visual), t(" \\right\\rVert")
},
{
t("\\lVert "), d(1,get_visual), t(" \\rVert")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "big", name = "Big-d delimiters", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\big")
},
{
i(1,"\\Big")
},
{
i(1,"\\bigg")
},
{
i(1,"\\Bigg")
}
}
)
},
{condition = in_mathzone}
),
-- Spacing commands
s({trig = "thp", name = "Thin space", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\,")
},
{condition = in_mathzone}
),
s({trig = "mdn", name = "Medium space", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\:")
},
{condition = in_mathzone}
),
s({trig = "tkp", name = "Thick space", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\;")
},
{condition = in_mathzone}
),
s({trig = "enp", name = "Enskip", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\enskip")
},
{condition = in_mathzone}
),
s({trig = "qu", name = "Quad", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\quad")
},
{condition = in_mathzone}
),
s({trig = "qq", name = "Double quad", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\qquad")
},
{condition = in_mathzone}
),
s({trig = "thn", name = "Negative thin space", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\!")
},
{condition = in_mathzone}
),
s({trig = "men", name = "Negative medium space", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\negmedspace")
},
{condition = in_mathzone}
),
s({trig = "tkn", name = "Negative thick space", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\negthickspace")
},
{condition = in_mathzone}
),
s({trig = "hs", name = "Horizontal space", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\hspace{"), i(1), t("}")
},
{condition = in_mathzone}
),
s({trig = "vs", name = "Vertical space", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\vspace{"), i(1), t("}")
},
{condition = in_mathzone}
),
-- Greek alphabet
s({trig = "[.]a", name = "Alpha", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\alpha")
},
{condition = in_mathzone}
),
s({trig = "[.]b", name = "Beta", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\beta")
},
{condition = in_mathzone}
),
s({trig = "[.]c", name = "Chi", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\chi")
},
{condition = in_mathzone}
),
s({trig = "[.]D", name = "Uppercase delta", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\Delta")
},
{condition = in_mathzone}
),
s({trig = "[.]d", name = "Lowercase delta", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\delta")
},
{condition = in_mathzone}
),
s({trig = "[.]e", name = "Epsilon", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\varepsilon")
},
{condition = in_mathzone}
),
s({trig = "[.]G", name = "Uppercase gamma", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\Gamma")
},
{condition = in_mathzone}
),
s({trig = "[.]g", name = "Lowercase gamma", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\gamma")
},
{condition = in_mathzone}
),
s({trig = "[.]h", name = "Eta", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\eta")
},
{condition = in_mathzone}
),
s({trig = "[.]i", name = "Iota", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\iota")
},
{condition = in_mathzone}
),
s({trig = "[.]k", name = "Kappa", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\kappa")
},
{condition = in_mathzone}
),
s({trig = "[.]L", name = "Uppercase lambda", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\Lambda")
},
{condition = in_mathzone}
),
s({trig = "[.]l", name = "Lowercase lambda", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\lambda")
},
{condition = in_mathzone}
),
s({trig = "[.]m", name = "Mu", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\mu")
},
{condition = in_mathzone}
),
s({trig = "[.]n", name = "Nu", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\nu")
},
{condition = in_mathzone}
),
s({trig = "[.]O", name = "Uppercase omega", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\Omega")
},
{condition = in_mathzone}
),
s({trig = "[.]o", name = "Lowercase omega", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\omega")
},
{condition = in_mathzone}
),
s({trig = "[.]Ph", name = "Uppercase phi", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\Phi")
},
{condition = in_mathzone}
),
s({trig = "[.]ph", name = "Lowecase phi", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\phi")
},
{condition = in_mathzone}
),
s({trig = "[.]Pi", name = "Uppercase pi", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\Pi")
},
{condition = in_mathzone}
),
s({trig = "[.]pi", name = "Lowercase pi", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\pi")
},
{condition = in_mathzone}
),
s({trig = "[.]Ps", name = "Uppercase psi", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\Psi")
},
{condition = in_mathzone}
),
s({trig = "[.]ps", name = "Lowercase psi", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\psi")
},
{condition = in_mathzone}
),
s({trig = "[.]r", name = "Rho", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\rho")
},
{condition = in_mathzone}
),
s({trig = "[.]S", name = "Uppercase sigma", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\Sigma")
},
{condition = in_mathzone}
),
s({trig = "[.]s", name = "Lowercase sigma", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\sigma")
},
{condition = in_mathzone}
),
s({trig = "[.]ta", name = "Tau", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\tau")
},
{condition = in_mathzone}
),
s({trig = "[.]Th", name = "Uppercase theta", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\Theta")
},
{condition = in_mathzone}
),
s({trig = "[.]th", name = "Lowercase theta", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\theta")
},
{condition = in_mathzone}
),
s({trig = "[.]U", name = "Uppercase upsilon", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\Upsilon")
},
{condition = in_mathzone}
),
s({trig = "[.]u", name = "Lowecase upsilon", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\upsilon")
},
{condition = in_mathzone}
),
s({trig = "[.]X", name = "Uppercase xi", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\Xi")
},
{condition = in_mathzone}
),
s({trig = "[.]x", name = "Lowercase xi", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\xi")
},
{condition = in_mathzone}
),
s({trig = "[.]z", name = "Zeta", snippetType = "autosnippet", regTrig = true},
{
f(function(_,snip) return snip.captures[1] end),
t("\\zeta")
},
{condition = in_mathzone}
),
-- Letter-shaped symbols
s({trig = "ha", name = "Aleph", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\aleph")
},
{condition = in_mathzone}
),
s({trig = "hb", name = "Beth", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\beth")
},
{condition = in_mathzone}
),
s({trig = "hd", name = "Daleth", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\daleth")
},
{condition = in_mathzone}
),
s({trig = "hg", name = "Gimel", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\gimel")
},
{condition = in_mathzone}
),
s({trig = "ll", name = "ell", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\ell")
},
{condition = in_mathzone}
),
s({trig = "cm", name = "Set complement", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\complement")
},
{condition = in_mathzone}
),
s({trig = "hr", name = "hbar", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\hbar")
},
{condition = in_mathzone}
),
s({trig = "hl", name = "hslash", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\hslash")
},
{condition = in_mathzone}
),
s({trig = "pt", name = "Partial", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\partial")
},
{condition = in_mathzone}
),
-- Miscellaneous symbols
s({trig = "dl", name = "Dollar sign", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\$")
},
{condition = in_mathzone}
),
s({trig = "hh", name = "Numeral", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\#")
},
{condition = in_mathzone}
),
s({trig = "fy", name = "Infinity", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\infty")
},
{condition = in_mathzone}
),
s({trig = "pr", name = "Prime", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\prime")
},
{condition = in_mathzone}
),
s({trig = "per", name = "Percentaje", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\%")
},
{condition = in_mathzone}
),
s({trig = "amp", name = "Ampersand", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\&")
},
{condition = in_mathzone}
),
s({trig = "ang", name = "Angle", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\angle")
},
{condition = in_mathzone}
),
s({trig = "nb", name = "Nabla", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\nabla")
},
{condition = in_mathzone}
),
s({trig = "ch", name = "Section symbol"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\S")
}
),
-- Accents
s({trig = "dr", name = "Dot accent", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\dot{"), v(1,"..."), t("}")
},
{
t("\\ddot{"), v(1,"..."), t("}")
},
{
t("\\dddot{"), v(1,"..."), t("}")
},
{
t("\\ddddot{"), v(1,"..."), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "ht", name = "Hat", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\hat{"), v(1,"..."), t("}")
},
{
t("\\widehat{"), v(1,"..."), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "rng", name = "Math ring", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\mathring{"), v(1,"..."), t("}")
},
{condition = in_mathzone}
),
s({trig = "til", name = "Tilde", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\tilde{"), i(1), t("}")
},
{
t("\\widetilde{"), i(1), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "vv", name = "Vector", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\vv{"), v(1,"..."), t("}")
},
{
t("\\vec{"), v(1,"..."), t("}")
}
}
)
},
{condition = in_mathzone}
),
-- Logic
s({trig = "fa", name = "For all", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\forall")
},
{condition = in_mathzone}
),
s({trig = "ex", name = "Exists", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\exists")
},
{condition = in_mathzone}
),
s({trig = "nx", name = "Not exist", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\nexists")
},
{condition = in_mathzone}
),
s({trig = "lt", name = "Logic negation", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\lnot")
},
{condition = in_mathzone}
),
s({trig = "lan", name = "Logic and", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\land")
},
{condition = in_mathzone}
),
s({trig = "lor", name = "Logic or", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\lor")
},
{condition = in_mathzone}
),
s({trig = "ip", name = "Implies", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\implies")
},
{condition = in_mathzone}
),
s({trig = "ib", name = "Implied by", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\impliedby")
},
{condition = in_mathzone}
),
s({trig = "iff", name = "If and only if", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\iff")
},
{condition = in_mathzone}
),
-- Sets and inclusion
s({trig = "in", name = "Belongs to", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\in")
},
{condition = in_mathzone}
),
s({trig = "ntn", name = "Not in", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\notin")
},
{condition = in_mathzone}
),
s({trig = "na", name = "Owns", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\ni")
},
{condition = in_mathzone}
),
s({trig = "vc", name = "Empty set", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\emptyset")
},
{
i(1,"\\varnothing")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "nun", name = "Union", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\cup")
},
{condition = in_mathzone}
),
s({trig = "bun", name = "Big union", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\bigcup")
},
{condition = in_mathzone}
),
s({trig = "sun", name = "Big subscript union", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\bigcup_{"), i(1), t("}")
},
{condition = in_mathzone}
),
s({trig = "dun", name = "Big definite union", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\bigcup_{"), i(1), t("}^{"), i(2), t("}")
},
{condition = in_mathzone}
),
s({trig = "nit", name = "Intersection", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\cap")
},
{condition = in_mathzone}
),
s({trig = "bit", name = "Big intersection", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\bigcap")
},
{condition = in_mathzone}
),
s({trig = "sit", name = "Big subscript intersection", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\bigcap_{"), i(1), t("}")
},
{condition = in_mathzone}
),
s({trig = "dit", name = "Big definite intersection", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\bigcap_{"), i(1), t("}^{"), i(2), t("}")
},
{condition = in_mathzone}
),
s({trig = "sf", name = "Set difference", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\setminus")
},
{condition = in_mathzone}
),
s({trig = "sbs", name = "Subset", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\subset")
},
{condition = in_mathzone}
),
s({trig = "sbq", name = "Subset or equals", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\subseteq")
},
{
i(1,"\\nsubseteq")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "sus", name = "Contains", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\supset")
},
{condition = in_mathzone}
),
s({trig = "suq", name = "Contains or equals", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\supseteq")
},
{
i(1,"\\nsupseteq")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "setd", name = "Dots set", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\{ "), i(1), t(" \\std "), i(2), t(" \\}")
},
{condition = in_mathzone}
),
s({trig = "setb", name = "Bar set", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\{ "), i(1), t(" \\mid "), i(2), t(" \\}")
},
{condition = in_mathzone}
),
-- Arrows
s({trig = "rar", name = "Long right arrow", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\longrightarrow")
},
{condition = in_mathzone}
),
s({trig = "lar", name = "Long left arrow", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\longleftarrow")
},
{condition = in_mathzone}
),
s({trig = "to", name = "Long maps to", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\longmapsto")
},
{condition = in_mathzone}
),
-- Sums
s({trig = "sm", name = "Subscript sum", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\sum_{"), i(1), t("}")
},
{
i(1,"\\sum")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "ss", name = "Definite sum", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\sum_{"), i(1), t("}^{"), i(2), t("}")
},
{condition = in_mathzone}
),
s({trig = "sos", name = "Subscript o-sum", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\bigoplus_{"), i(1), t("}")
},
{condition = in_mathzone}
),
s({trig = "nos", name = "Definite o-sum", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\bigoplus_{"), i(1), t("}^{"), i(2), t("}")
},
{condition = in_mathzone}
),
-- Products
s({trig = "sp", name = "Subscript product", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\prod_{"), i(1), t("}")
},
{
i(1,"\\prod")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "pp", name = "Definite product", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\prod_{"), i(1), t("}^{"), i(2), t("}")
},
{condition = in_mathzone}
),
s({trig = "sop", name = "Subscript o-product", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\bigotimes_{"), i(1), t("}")
},
{condition = in_mathzone}
),
s({trig = "nop", name = "Definite o-product", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\bigotimes_{"), i(1), t("}^{"), i(2), t("}")
},
{condition = in_mathzone}
),
-- Derivatives
s({trig = "df", name = "Differential", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\dx{"), i(1), t("}")
},
{condition = in_mathzone}
),
s({trig = "der", name = "Derivative", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\der{"), i(1,"func"), t("}{"), i(2,"var"), t("}")
},
{
t("\\Der{"), i(1,"func"), t("}{"), i(2,"var"), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "ndr", name = "n-th derivative", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\ndr{"), i(1,"n"), t("}{"), i(2,"func"), t("}{"), i(3,"var"), t("}")
},
{
t("\\Ndr{"), i(1,"n"), t("}{"), i(2,"func"), t("}{"), i(3,"var"), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "pdr", name = "Partial derivative", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\pdr{"), i(1,"func"), t("}{"), i(2,"var"), t("}")
},
{
t("\\Pdr{"), i(1,"func"), t("}{"), i(2,"var"), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "npd", name = "n-th partial derivative", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\npd{"), i(1,"n"), t("}{"), i(2,"func"), t("}{"), i(3,"var"), t("}")
},
{
t("\\Npd{"), i(1,"n"), t("}{"), i(2,"func"), t("}{"), i(3,"var"), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "evl", name = "Derivative evaluation", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\evl{"), i(1), t("}")
},
{condition = in_mathzone}
),
-- Integrals
s({trig = "itn", name = "Integral", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\int")
},
{
i(1,"\\oint")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "its", name = "Subscript integral", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\int_{"), i(1), t("}")
},
{
t("\\oint_{"), i(1), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "itd", name = "Definite integral", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\int_{"), i(1), t("}^{"), i(2), t("}")
},
{condition = in_mathzone}
),
s({trig = "itbn", name = "Double integral", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\iint")
},
{
i(1,"\\oiint")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "itbs", name = "Double integral subscript", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\iint_{"), i(1), t("}")
},
{
t("\\oiint_{"), i(1), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "ittn", name = "Triple integral", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\iiint")
},
{
i(1,"\\oiiint")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "itts", name = "Triple integral subscript", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\iiint_{"), i(1), t("}")
},
{
t("\\oiiint_{"), i(1), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "itqn", name = "Quadruple integral", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
i(1,"\\iiiint")
},
{
i(1,"\\oiiint")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "itqs", name = "Quadruple integral subscript", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
c(1,
{
{
t("\\iiint_{"), i(1), t("}")
},
{
t("\\oiiint_{"), i(1), t("}")
}
}
)
},
{condition = in_mathzone}
),
s({trig = "itmn", name = "Multiple integral", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\idotsint")
},
{condition = in_mathzone}
),
s({trig = "itms", name = "Multiple integral subscript", snippetType = "autosnippet"},
{
f(function(_,snip) return snip.captures[1] end),
t("\\idotsint_{"), i(1), t("}")
},
{condition = in_mathzone}
),
}