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

2939 lines
69 KiB
Lua
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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}
),
}