Ultisnip自动补全数学环境与符号
下面的代码可以自动补全数学环境与符号.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 |
# complete function global !p def complete(t, opts): if t: opts = [ m[len(t):] for m in opts if m.startswith(t) ] if len(opts) == 1: return opts[0] if len(opts) == 0: return '' return "(" + '|'.join(opts) + ')' # the translation function def alphabeta_map(latin): alphabeta={ 'a' : '\\alpha', 'b' : '\\beta', 'c' : '\\gamma', 'd' : '\\delta', 'e' : '\\epsilon', 'f' : '\\phi', 'g' : '\\gamma', 'h' : '\\eta', 'i' : '\\iota', 'k' : '\\kappa', 'l' : '\\lambda', 'm' : '\\mu', 'n' : '\\nu', 'p' : '\\pi', 'q' : '\\theta', 'r' : '\\rho', 's' : '\\sigma', 't' : '\\tau', 'u' : '\\upsilon', 'w' : '\\omega', 'x' : '\\xi', 'y' : '\\psi', 'z' : '\\zeta', 'A' : '\\forall', 'E' : '\\exists', 'D' : '\\Delta', 'F' : '\\Phi', 'G' : '\\Gamma', 'L' : '\\Lambda', 'N' : '\\nabla', 'P' : '\\Pi', 'Q' : '\\Theta', 'S' : '\\Sigma', 'U' : '\\Upsiln', 'W' : '\\Omega', 'X' : '\\Xi', 'Y' : '\\Psi', 've': '\\varepsilon', 'vf': '\\varphi', 'vk': '\\varkappa', 'vq': '\\vartheta', 'vr': '\\varrho', '~' : '\\tilde', '^' : '\\wedge', '|' : '\\perp', '-' : '\\top', 'o' : '\\circ', 'O' : '\\otimes', '2' : '\\sqrt', '6' : '\\partial', '8' : '\\infty', '0' : '\\emptyset', '\\': '\\setminus', '=' : '\\equiv', '.' : '\\cdot', '*' : '\\times', '<' : '\\langle', '>' : '\\rangle', '[' : '\\subseteq', ']' : '\\supseteq', '(' : '\\subset', ')' : '\\supset', 'jj': '\\downarrow', 'jJ': '\\Downarrow', 'jk': '\\uparrow', 'jK': '\\Uparrow', 'jh': '\\leftarrow', 'jH': '\\Leftarrow', 'jl': '\\rightarrow', 'jL': '\\Rightarrow' } return alphabeta[latin] endglobal #redefine begin environment snippet "b(egin)?" "begin{} / end{}" br \begin{${1}`!p benv =complete( t[1], ['equation', 'align*', 'split', 'multline*', 'cases', 'proof', 'frame', 'thm', 'lem', 'cor', 'prop', 'defn', 'rmk', 'claim'] ) if (t[1]+benv) == 'equation': labstr = 'eq' else: labstr = t[1]+benv snip.rv =benv`}`!p if (t[1]+benv) in ('thm', 'lem', 'cor', 'prop', 'defn', 'equation'): labstrb = '\label{' + labstr +':' labstre = '}' elif t[1]+benv == 'frame': labstrb = '{' labstre = '}' else: labstrb = '' labstre = ''`${2:${VISUAL}`!p snip.rv = labstrb`$3`!p snip.rv = labstre`} ${0:${VISUAL}} \end{$1`!p snip.rv=benv`} endsnippet snippet "\\la(bel)?" "\label{}" rA \label{$1`!p snip.rv=complete(t[1], ['eq:', 'thm:', 'lem:', 'cor:', 'prop:', 'item:'])`$2} endsnippet snippet "`([a-zA-Z^|\-0268\\=.*<>\[\]()~]+)" "Greeks" rA `!p m= match.group(1) snip.rv = alphabeta_map(m)` endsnippet |
本作品采用创作共用版权协议, 要求署名、非商业用途和保持一致. 转载本站内容必须也遵循署名-非商业用途-保持一致的创作共用协议.
发表回复