local A = require("my.abbreviations") local scrap = require("scrap") local M = {} M.words = { -- {{{ General phrases { "thrf", "therefore" }, { "bcla", "by contradiction let's assume" }, { "wlg", "without loss of generality" }, { "tits", "that is to say," }, { "wpbd", "we will prove the statement in both directions." }, { "stam{,s}", "statement{}" }, { "{ww,tt}{m,i}", "{which,this} {means,implies}" }, { "cex{,s}", "counterexample{}" }, { "er{t,s,r}", "{transitivity,symmetry,reflexivity}" }, -- }}} -- {{{ Special chars -- System for writing special characters which need to also be easly -- accessible as {sub/super}scripts. -- -- The reason epsilon and lambda are separated out from everything else in -- the pattern is because they are the only ones where `foo` doesn't expand -- to `\\foo` directly (so I saved some keystrokes by letting scrap.nvim -- repeat everything for me). { "{,e,s}{{eps,lam},{star,delta,Delta,pi,tau,psi,phi,rho,sigma,alpha,beta,theta,gamma,omega,Omega}}", "{,^,_}\\\\{{epsilon,lambda},{}}", options = A.no_capitalization, }, -- }}} -- {{{ Set symbols -- - nats => naturals -- - ints => integers -- - rats => rationals -- - irats => irationals -- - rrea => reals -- - comp => complex -- - ppri => primes -- - ffie => fields { "{nats,ints,rats,irats,rrea,comp,ppri,ffie}", "\\mathbb\\{{N,Z,Q,I,R,C,P,F}\\}", options = A.no_capitalization, }, -- }}} -- {{{ Calculus & analysis { "ib{p,s}", "integration by {parts,substitution}" }, { "nb{,h}{,s}", "neighbour{,hood}{}" }, -- }}} -- {{{ Linear algebra { "rref", "reduced row echalon form" }, { "eg{va,ve,p}{,s}", "eigen{value,vector,pair}{}" }, { "mx{,s}", "matri{x,ces}" }, { "dete{,s}", "determinant{}" }, { "ort{n,g}", "orto{normal,gonal}" }, { "l{in,de}", "linearly {independent,dependent}" }, { "lcon{,s}", "linear combination{}" }, { "vst{,s}", "vector space{}" }, -- text vector space { "rizz", -- ok please ignore this one 💀 "Riesz vector", options = A.no_capitalization, }, -- }}} -- {{{ Differential equations -- Note: we must add the space inside the {} in order for capitalization to work! { "{{s,o,l},}deq{s,}", "{{scalar,ordinary,linear} ,}differential equation{}", }, -- }}} -- {{{ Graph theory { "vx{,s}", "vert{ex,ices}" }, { "edg{,s}", "edge{}" }, -- }}} } M.notation = { -- {{{ Exponents and subscripts: -- {operation}{argument} -- - operation = e (exponent) | s (subscript) -- - argument = t{special} | {basic} -- - basic = 0-9|n|i|t|k -- - special = -- - "p" => + -- - "m" => - -- - "i" => -1 { "{e,s}{{0,1,2,3,4,5,6,7,8,9,n,i,t,k},t{i,m,p}}", "{^,_}{{},{\\{-1\\},-,+}}", }, -- }}} } function M.setup() A.manyGlobalAbbr(scrap.expand_many(M.words)) A.manyGlobalAbbr(scrap.expand_many(M.notation, { capitalized = false })) end return M