Skip to content

Instantly share code, notes, and snippets.

@Theigrams
Created November 12, 2023 07:31
Show Gist options
  • Select an option

  • Save Theigrams/c67cd5bb0883d564391d3a22e7ff3145 to your computer and use it in GitHub Desktop.

Select an option

Save Theigrams/c67cd5bb0883d564391d3a22e7ff3145 to your computer and use it in GitHub Desktop.
LaTeX HyperSnips
global
// JavaScript code
function gen_matrix(nrow, ncol) {
let results = "";
let order = 1;
for (var i=0; i < nrow; i++){
results += ' ';
for(var j = 0; j < ncol - 1; j++){
results += "$" + (order).toString() + " & ";
order ++;
}
results += "$" + (order).toString() + " \\\\" + "\\";
order ++;
}
return results;
}
function gen_matrix_transposed(nrow, ncol) {
let results = "";
for (var i = 0; i < nrow; i++){
results += ' ';
var j = 0;
for(; j < ncol - 1;j++){
results += "$" + (i + j * ncol + 1).toString() + " & ";
}
results += "$" + (i + j * ncol + 1).toString() + " \\\\" + "\\";
}
return results;
}
function tes_matrix(nrow, ncol,t) {
let results = "";
let order = 1;
for (var i=0; i<nrow; i++){
results += ' ';
for(var j = 0;j <ncol-1;j++){
if (order > 1 ){
results += "${" +(order ).toString() + ":" + t[order-2] + "}\t & ";
}
else{
results += "$" +(order ).toString() + " & ";
}
order ++;
}
results += "$"+(order).toString() +" \\\\" + "\\ ";
order ++;
}
return results;
}
// 输出一个表格
function createTable(rows, cols) {
let ret = "";
let order = 1;
for (let i = 0; i < parseInt(rows) + 2; i++) {
for (let j = 0; j < parseInt(cols); j++) {
if (i === 1) {
ret += "|---";
} else {
ret += "| $" + (order).toString() + " ";
order++;
}
}
ret += "|\n"
}
return ret;
}
endglobal
# == Fraction Match ==
snippet // "Fraction" iAm
\\frac{${1:${VISUAL}}}{$2}$0
endsnippet
snippet `((\d+)|(\d*)(\\)?([A-Za-z!]+)((\^|_)(\{\d+\}|\d))*)/` "Fraction no ()" iAm
\frac{``rv = m[1]``}{$1}$0
endsnippet
priority 200
snippet `(?<=\s)(\\mu|\\alpha|\\sigma|\\rho|\\beta|\\gamma|\\delta|\\zeta|\\eta|\\varepsilon|\\theta|\\iota|\\kappa|\\vartheta|\\lambda|\\nu|\\pi|\\rho|\\tau|\\upsilon|\\phi|\\chi|\\psi|\\omega|\\Gamma|\\Delta|\\Theta|\\Lambda|\\Xi|\\Pi|\\Sigma|\\Upsilon|\\Phi|\\Psi|\\Omega|[A-Za-z]{1,2})?(_[A-Za-z0-9]|_\{[^}]+\})?(\^[A-Za-z0-9]|\^\{[^}]+\})?(_[A-Za-z0-9]|_\{[^}]+\})?(\([^)]+\))(_[A-Za-z0-9]|_\{[^}]+\})?(\^[A-Za-z0-9]|\^\{[^}]+\})?(_[A-Za-z0-9]|_\{[^}]+\})?\/` "Fraction with ()" iAm
``rv = "\\frac{" + m.slice(1, m.length).join('') + "}{$1}$2"``
endsnippet
# == Hat Operation ==
# ==== Auto Capture Hat Operation ====
snippet `([a-zA-Z])(htd)` "tilde" iAm
\tilde{``rv = m[1]``}
endsnippet
snippet `([a-zA-Z])(hvc)` "hvc" iAm
\overrightarrow{``rv = m[1]``}
endsnippet
snippet `([a-zA-Z])(bar)` "bar" iAm
\overline{``rv = m[1]``}
endsnippet
snippet `([a-zA-Z])(hat)` "hat" iAm
\widehat{``rv = m[1]``}
endsnippet
snippet `([a-zA-Z])(hdot)` "dot" iAm
\dot{``rv = m[1]``}
endsnippet
snippet `([a-zA-Z])(hddot)` "ddot" iAm
\ddot{``rv = m[1]``}
endsnippet
# == Superscript Operation ==
priority 10000
snippet TT "Transpose" iAm
^{\top}$0
endsnippet
# == Subscript Operation ==
snippet `([A-Za-z])(\d)` "auto subscript" iAm
`` rv = m[1] + "_" + m[2]``
endsnippet
priority 100
snippet `([A-Za-z])_(\d{2})` "auto subscript2" iAm
`` rv = m[1] + "_{" + m[2] + "$1}$0" ``
endsnippet
# Custom: Add more greek letters
snippet `(\\mu|\\alpha|\\sigma|\\rho|\\beta|\\gamma|\\delta|\\zeta|\\eta|\\varepsilon|\\theta|\\iota|\\kappa|\\vartheta|\\lambda|\\nu|\\pi|\\rho|\\tau|\\upsilon|\\phi|\\chi|\\psi|\\omega|\\Gamma|\\Delta|\\Theta|\\Lambda|\\Xi|\\Pi|\\Sigma|\\Upsilon|\\Phi|\\Psi|\\Omega)([a-z])\2` "auto subscript for greek letter" iAm
`` rv = m[1] + "_" + m[2].substring(0, 1) ``
endsnippet
snippet `(\\mu|\\alpha|\\sigma|\\rho|\\beta|\\gamma|\\delta|\\zeta|\\eta|\\varepsilon|\\theta|\\iota|\\kappa|\\vartheta|\\lambda|\\nu|\\pi|\\rho|\\tau|\\upsilon|\\phi|\\chi|\\psi|\\omega|\\Gamma|\\Delta|\\Theta|\\Lambda|\\Xi|\\Pi|\\Sigma|\\Upsilon|\\Phi|\\Psi|\\Omega)S([a-z])\2` "auto subscript for greek letter" iAm
`` rv = m[1] + "_{${1:" + m[2].substring(0, 1) + "}}$2"``
endsnippet
# == Font Operation ==
# ==== Dynamic Operation ====
priority 100
snippet `(\\?[a-zA-Z]\w*({?\w*})?)(bf)` "mathbf" iAm
\mathbf{``rv = m[1]``}
endsnippet
priority 100
snippet `(\\?[a-zA-Z]\w*({?\w*})?)(bm)` "mathbm" iAm
\bm{``rv = m[1]``}
endsnippet
priority 100
snippet `(\\?[a-zA-Z]\w*({?\w*})?)(bs)` "boldsymbol" iAm
\boldsymbol{``rv = m[1]``}
endsnippet
priority 100
snippet `(\\?[a-zA-Z]\w*({?\w*})?)cal` "mathcal" iAm
\mathcal{``rv = m[1].toUpperCase()``}$0
endsnippet
priority 100
snippet `(?<!\\)\b([a-zA-Z]+)rm` "mathrm" iAm
\mathrm{``rv = m[1]``}
endsnippet
priority 100
snippet `(?<!\\)\b([a-zA-Z]+)mop` "operatorname" iAm
\operatorname{``rv = m[1]``}
endsnippet
priority 100
snippet `([a-zA-Z]|\d)bb` "bold math" iAm
``
if (/[A-Z]/.test(m[1]))
rv = "\\mathbf{" + m[1] + "}"
else
// rv = "\\bm{" + m[1] + "}"
rv = "\\mathbf{" + m[1] + "}"
``
endsnippet
# == Auto Symbol ==
snippet oo "infty" iAmm
\infty
endsnippet
priority 100
snippet ... "cdots" iAm
\cdots
endsnippet
# +... -> , \cdots
# - ... -> , \cdots
# add a space if there already is one.
priority 101
snippet `(?<=[-+])\s*\.\.\.` "smart cdots" iAm
\cdots
endsnippet
# It seems that \ldots is only used when , ...,
# ,... -> , \ldots
# , ... -> , \ldots
priority 101
snippet `(?<=,)(\s*)\.\.\.` "smart ldots" iAm
\ldots
endsnippet
priority 101
snippet xx "cross" iAm
\times
endsnippet
snippet ** "star" iAm
^{\star}$0
endsnippet
# ==== Logic Symbol ====
snippet -> "to" iAm
\to
endsnippet
snippet !> "mapsto" iAm
\mapsto
endsnippet
snippet => "implies" iAm
\implies
endsnippet
snippet =< "implied by" iAm
\impliedby
endsnippet
# ==== Possibility Symbol ====
snippet Pr "Pr" iAm
\operatorname{Pr}\left[$1\right]$0
endsnippet
snippet Var "Var" iAm
\operatorname{Var}\left[$1\right]$0
endsnippet
snippet Cov "Cov" iAm
\operatorname{Cov}\left[$1\right]$0
endsnippet
snippet Exp "Expected" iAm
\mathbb{E}\left[$1\right]$0
endsnippet
# ==== Compare Symbol ====
snippet -- "setminus" iAm
\setminus
endsnippet
snippet >= "greater than" iAm
\ge $0
endsnippet
snippet <= "less than" iAm
\le $0
endsnippet
snippet != "no equals" iAm
\neq
endsnippet
snippet == " constan equals" iAm
\equiv
endsnippet
snippet ~~ " Amppro equals" iAm
\approx
endsnippet
snippet ~= " Amppro equals2" iAm
\cong
endsnippet
snippet >> ">>" iAm
\gg
endsnippet
snippet << "<<" iAm
\ll
endsnippet
# == Auto Environment ==
# ==== Auto Math Mode ====
# ==== Common Environment ====
snippet Case "cases" iAm
\begin{cases}
$1 & \\text{$2}, \\\\
$3 & \\text{$4}.
\end{cases}$0
endsnippet
snippet Ali "aligned" iAm
\begin{aligned}
$1 &= $2 \\\\
&= $3 \\\\
\end{aligned}
endsnippet
# == Auto Adaptive Close ==
snippet ceil "ceil" iAm
\left\lceil $1 \right\rceil $0
endsnippet
snippet floor "floor" iAm
\left\lfloor $1 \right\rfloor$0
endsnippet
priority 100
snippet @) "left( right)" Aim
\left( ${1} \right) $0
endsnippet
priority 100
snippet @| "left| right|" Aim
\left| ${1} \right| $0
endsnippet
priority 100
snippet @} "left\{ right\}" Aim
\left\\{ ${1} \right\\} $0
endsnippet
priority 100
snippet set "\{ \}" Aim
\\{ ${1} \\}$0
endsnippet
priority 100
snippet @] "left[ right]" Aim
\left[ ${1} \right] $0
endsnippet
priority 100
snippet @> "leftangle rightangle" iAm
\left<${1} \right>$0
endsnippet
priority 200
snippet norm iAm
\left\| ${1} \right\|_{$2}$3
endsnippet
# == Snippet ==
# ==== General Snippet ====
# ====== Lite Snippet ======
priority 100
snippet `\b([a-zA-Z])n(\d)` "x[n+1]" iAm
``rv = m[1]``_{${1:n}+``rv = m[2]``}$0
endsnippet
# Unkown
snippet rij "mrij" iAm
(${1:x}_${2:n})_{${3:$2} \\in ${4:N}}$0
endsnippet
priority 200
snippet abs "absolute value" iAm
\left\vert ${1} \right\vert $0
endsnippet
snippet beg "begin{} / end{}" bA
\\begin{$1}
$0
\\end{$1}
endsnippet
# ======== N Series ========
priority 100
snippet comma "comma" iAm
${1:\\alpha}_1,${1:\\alpha}_2,\\cdots,${1:\\alpha}_${2:n}
endsnippet
priority 100
snippet plus "plus" iAm
${1:k}_1${2:\\alpha}_1+${1:k}_2${2:\\alpha}_2+\\cdots+${1:k}_${3:n}${2:\\alpha}_${3:n}
endsnippet
snippet `\b([ijk])=n` "i=1,2,\cdots,n" iAm
``rv = m[1]``=1,2,\cdots,n
endsnippet
# ======== Common Operator Snippet ========
snippet sumeq "taylor" iAm
\sum_{${1:k}=${2:0}}^{${3:\infty}} ${4:c_$1} (x-a)^$1 $0
endsnippet
snippet limeq "limit" iAm
\lim_{${1:n} \to ${2:\infty}}
endsnippet
snippet `(?<!\\)prod` "product" iAm
\prod_{${1:n=${2:1}}}^{${3:\infty}} ${4:${VISUAL}}$0
endsnippet
snippet `(?<!\\)part` "d/dx" iAm
\frac{\partial ${1:V}}{\partial ${2:x}}$0
endsnippet
priority 300
snippet `(?<!\\)diff` "d/dx" iAm
\frac{\mathrm{d}${1:y}}{\mathrm{d}${2:x}}$0
endsnippet
priority 300
snippet `dd` "dd" iAm
\mathrm{d}
endsnippet
snippet buu "bigcup" iAm
\bigcup_{${1:i \in ${2: I}}} $0
endsnippet
snippet bnn "bigcap" iAm
\bigcap_{${1:i \in ${2: I}}} $0
endsnippet
priority 100
snippet inteq "integral" iAm
\int_{${1:-\infty}}^{${2:\infty}} ${3} \\mathrm{d}${4:x}$0
endsnippet
priority 200
snippet `c(o|n)?(l|n)?(b|c)?int` "s egral" iAm
``
let final = "\\"; // init
let isO = m[1] == "o";
(isO) ? final += "o" : "" // o option
let b = 1;
let isL = m[2] == "l";
(m[3] == 'b') ? b = 2 : (m[3] == 'c') ? b = 3 : 1;
for (let i = 0; i < b - 1; i++) {
final += "i";
}
final += "int";
final += ((b >= 2) || (b != 1 && !isO && isL)) ? "\\limits" : "";
let r = (b == 3) ? "E" : (b == 1 && (isL || isO)) ? "C" : "R";
final += ((b >= 2) || isO || (b == 1 && isL)) ? "_{${1:" + r + "}}" : "_{${1:-\\infty}}^{${2:\\infty}}";
let x = (b == 2) ? "A" : (b == 3) ? "V" : (b == 1 && isL) ? "s" : "x";
final += " ${3} \\mathrm{d}${4:" + x + "}$0";
rv = final;
``
endsnippet
# Custom: Can add more defined operator
priority 100
snippet `(?<![\a-zA-Z])(rank|lcm|gcd|atan2|softmax|tr|trace|diag|sign|const|arg)` "math function" iAm
\\operatorname{``rv = m[1]``}
endsnippet
# ====== Big Snippet ======
snippet bigdef "Big function" iAm
\begin{equation$6}
\begin{aligned}
$1\colon $2 &\longrightarrow $3 \\\\
$4 &\longmapsto $1($4) = $5
\end{aligned}
\end{equation$6}$0
endsnippet
snippet bigmin "Optimization problem" iAm
\begin{equation$4}
\begin{aligned}
\min &\quad ${1:f(x)}\\\\
\text{s.t.} &\quad ${2:g(x)} \leq 0\\\\
&\quad ${3:h(x)} = 0\\\\
\end{aligned}
\end{equation$4}$0
endsnippet
snippet bigmax "Optimization problem" iAm
\begin{equation$4}
\begin{aligned}
\max &\quad ${1:f(x)}\\\\
\text{s.t.} &\quad ${2:g(x)} \leq 0\\\\
&\quad ${3:h(x)} = 0\\\\
\end{aligned}
\end{equation$4}$0
endsnippet
snippet deff "Definition of function" iAm
$1\colon ${2:\\mathbb{R\}} \to ${3:\\mathbb{R\}}, ${4:x} \mapsto $0
endsnippet
snippet iid "independent and identical distribution" iAm
\overset{\text{i.i.d.}}{\sim}
endsnippet
snippet defe "define equal" iAm
\overset{\underset{\mathrm{def}}{}}{=}
endsnippet
# == Matrix ==
# ==== Static Matrix ====
snippet pmat "pmat" iAm
\\begin{pmatrix}
${1:1} & ${2:1} & \\cdots & ${4:1}\\\\
${5:1} & ${6:1} & \\cdots & ${8:1}\\\\
\\vdots & \\vdots & \\ddots & \\vdots\\\\
${13:1} & ${14:1} & \\cdots & ${16:1}
\\end{pmatrix}
endsnippet
snippet bmat "bmat" iAm
\\begin{bmatrix}
${1:1} & ${2:1} & \\cdots & ${4:1}\\\\
${5:1} & ${6:1} & \\cdots & ${8:1}\\\\
\\vdots & \\vdots & \\ddots & \\vdots\\\\
${13:1} & ${14:1} & \\cdots & ${16:1}
\\end{bmatrix}
endsnippet
snippet vecC "column vector" iAm
\begin{pmatrix} ${1:x}_1 \\\\ ${1:x}_2 \\\\ \vdots \\\\ ${1:x}_${2:n} \end{pmatrix}
endsnippet
snippet vecR "row vector" iAm
\begin{pmatrix} ${1:x}_1, ${1:x}_2, \cdots, ${1:x}_${2:n} \end{pmatrix}$0
endsnippet
priority 300
snippet matsub "submat" iAm
\\begin{bmatrix}
${1:a}_{11} & ${1:a}_{12} & \\cdots & ${1:a}_{1n} \\\\
${1:a}_{21} & ${1:a}_{22} & \\cdots & ${1:a}_{2n} \\\\
\\vdots & \\vdots & \\ddots & \\vdots \\\\
${1:a}_{n1} & ${1:a}_{n2} & \\cdots & ${1:a}_{nn}
\\end{bmatrix}
endsnippet
priority 300
snippet matplus "submatplus" iAm
\\begin{bmatrix}
${1:a}_{11}+${2:b}_{11} & ${1:a}_{12}+${2:b}_{12} & \\cdots & ${1:a}_{1n}+${2:b}_{1n} \\\\
${1:a}_{21}+${2:b}_{21} & ${1:a}_{22}+${2:b}_{22} & \\cdots & ${1:a}_{2n}+${2:b}_{2n} \\\\
\\vdots & \\vdots & \\ddots & \\vdots \\\\
${1:a}_{n1}+${2:b}_{n1} & ${1:a}_{n2}+${2:b}_{n2} & \\cdots & ${1:a}_{nn}+${2:b}_{nn}
\\end{bmatrix}
endsnippet
snippet matdiv "jacobi" iAm
\\begin{pmatrix}
\\frac{\\partial ${1:f}_1}{\\partial ${2:x}_1}&\\frac{\\partial ${1:f}_1}{\\partial ${2:x}_2}&\\cdots&\\frac{\\partial ${1:f}_1}{\\partial ${2:x}_${3:n}}\\\\
\\frac{\\partial ${1:f}_2}{\\partial ${2:x}_1}&\\frac{\\partial ${1:f}_2}{\\partial ${2:x}_2}&\\cdots&\\frac{\\partial ${1:f}_2}{\\partial ${2:x}_${3:n}}\\\\
\\vdots&\\vdots&\\ddots&\\vdots\\\\
\\frac{\\partial ${1:f}_${3:m}}{\\partial ${2:x}_1}&\\frac{\\partial ${1:f}_${3:m}}{\\partial ${2:x}_2}&\\cdots&\\frac{\\partial ${1:f}_${3:m}}{\\partial ${2:x}_${3:n}}
\\end{pmatrix}
endsnippet
# ==== Dynamic Matrix ====
priority 300
snippet `mat@([1-9])([1-9])` "DynamicMatrix" iiAm
\\begin{bmatrix}
``
rv = gen_matrix(m[1], m[2]);
``
\\end{bmatrix}$0
endsnippet
priority 300
snippet `mata@([1-9])([1-9])` "DynamicMatrix" iiAm
\\begin{bmatrix}
``
let row = m[1];
let col = m[2];
let results = "";
for (var i=0; i<row; i++){
results += "$1 &".repeat(col-1) + " $1 \\\\\\\\";
}
rv = results;
``
\\end{bmatrix}$0
endsnippet
# == General ==
snippet \box "Box"
``rv = '┌' + '─'.repeat(t[0].length + 2) + '┐'``
│ $1 │
``rv = '└' + '─'.repeat(t[0].length + 2) + '┘'``
endsnippet
priority 300
snippet `tab@([1-9])([1-9])` "create table with rows and columns" wA
``
rv = createTable(m[1], m[2]);
``
endsnippet
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment