├── README.md ├── latex.hsnips ├── markdown.hsnips └── typst.hsnips /README.md: -------------------------------------------------------------------------------- 1 | # OrangeX4's HyperSnips 2 | 3 | You can use it in vscode instead of vim like 4 | https://castel.dev/post/lecture-notes-1/#fractions 5 | 6 | Use it via vscode extension https://marketplace.visualstudio.com/items?itemName=OrangeX4.hsnips 7 | 8 | Specially, it support **math environment**! It only goes into effect in `$...$`, `$$...$$`, etc... 9 | 10 | For example: 11 | 12 | ``` 13 | (1+2)/ ---> \frac{1+2}{} 14 | ``` 15 | 16 | The snippets is adapted from https://zhuanlan.zhihu.com/p/199268436. 17 | 18 | 需要和 [HyperSnips for Math](https://marketplace.visualstudio.com/items?itemName=OrangeX4.hsnips) 插件配套使用. 19 | 20 | **安装完成后**, 按下快捷键 `Ctrl + Shift + P`, 输入命令 `Open Snippets Directory`, 就可以打开一个文件夹. 在 **该文件夹** 新建一个文件 `markdown.hsnips`, 并将 [OrangeX4's hsnips](https://github.com/OrangeX4/OrangeX4-HyperSnips/blob/main/markdown.hsnips) 里面的内容输入进去, 保存, 就可以使用了. 21 | -------------------------------------------------------------------------------- /latex.hsnips: -------------------------------------------------------------------------------- 1 | global 2 | // JavaScript code 3 | function gen_matrix(nrow, ncol) { 4 | let results = ""; 5 | let order = 1; 6 | for (var i=0; i < nrow; i++){ 7 | results += ' '; 8 | for(var j = 0; j < ncol - 1; j++){ 9 | results += "$" + (order).toString() + " & "; 10 | order ++; 11 | } 12 | results += "$" + (order).toString() + " \\\\" + "\\"; 13 | order ++; 14 | } 15 | return results; 16 | } 17 | 18 | function gen_matrix_transposed(nrow, ncol) { 19 | let results = ""; 20 | for (var i = 0; i < nrow; i++){ 21 | results += ' '; 22 | var j = 0; 23 | for(; j < ncol - 1;j++){ 24 | results += "$" + (i + j * ncol + 1).toString() + " & "; 25 | } 26 | results += "$" + (i + j * ncol + 1).toString() + " \\\\" + "\\"; 27 | } 28 | return results; 29 | } 30 | 31 | function tes_matrix(nrow, ncol,t) { 32 | let results = ""; 33 | let order = 1; 34 | for (var i=0; i 1 ){ 38 | results += "${" +(order ).toString() + ":" + t[order-2] + "}\t & "; 39 | } 40 | else{ 41 | results += "$" +(order ).toString() + " & "; 42 | } 43 | order ++; 44 | } 45 | results += "$"+(order).toString() +" \\\\" + "\\ "; 46 | order ++; 47 | } 48 | return results; 49 | } 50 | 51 | // 输出一个表格 52 | function createTable(rows, cols) { 53 | let ret = ""; 54 | let order = 1; 55 | for (let i = 0; i < parseInt(rows) + 2; i++) { 56 | for (let j = 0; j < parseInt(cols); j++) { 57 | if (i === 1) { 58 | ret += "|---"; 59 | } else { 60 | ret += "| $" + (order).toString() + " "; 61 | order++; 62 | } 63 | } 64 | ret += "|\n" 65 | } 66 | return ret; 67 | } 68 | 69 | endglobal 70 | 71 | 72 | # == Fraction Match == 73 | 74 | 75 | snippet // "Fraction" iAm 76 | \\frac{${1:${VISUAL}}}{$2}$0 77 | endsnippet 78 | 79 | snippet `((\d+)|(\d*)(\\)?([A-Za-z!]+)((\^|_)(\{\d+\}|\d))*)/` "Fraction no ()" iAm 80 | \frac{``rv = m[1]``}{$1}$0 81 | endsnippet 82 | 83 | priority 200 84 | 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 85 | ``rv = "\\frac{" + m.slice(1, m.length).join('') + "}{$1}$2"`` 86 | endsnippet 87 | 88 | # == Hat Operation == 89 | 90 | # ==== Auto Capture Hat Operation ==== 91 | snippet `(\\?[a-zA-Z]\w*({?\w*})?)(hbar|BAR)` "Bar" iAm 92 | \overline{``rv = m[1] + m[2] + m[3]``} 93 | endsnippet 94 | 95 | snippet `(\\?[a-zA-Z]\w*({?\w*})?)(htd|TD)` "tilde" iAm 96 | \tilde{``rv = m[1]``} 97 | endsnippet 98 | 99 | snippet `(\\?[a-zA-Z]\w*({?\w*})?)bar` "bar" iAm 100 | \bar{``rv = m[1]``} 101 | endsnippet 102 | 103 | snippet `(\\?[a-zA-Z]\w*({?\w*})?)(hat|HAT)` "hat" iAm 104 | \hat{``rv = m[1]``} 105 | endsnippet 106 | 107 | snippet `(\\?[a-zA-Z]\w*({?\w*})?)(hvec)` "Vector postfix" iAm 108 | \vec{``rv = m[1]``} 109 | endsnippet 110 | 111 | snippet `(\\?[a-zA-Z]\w*({?\w*})?)(rta)` "Vector postfix" iAm 112 | \overrightarrow{``rv = m[1]``} 113 | endsnippet 114 | 115 | snippet `(\\?[a-zA-Z]\w*({?\w*})?)(dot)` "dot" iAm 116 | \dot{``rv = m[1]``} 117 | endsnippet 118 | 119 | priority 1000 120 | snippet `(\\?[a-zA-Z]\w*({?\w*})?)(hdd)` "ddot" iAm 121 | \ddot{``rv = m[1]``} 122 | endsnippet 123 | 124 | # ===== Static Hat Operation ==== 125 | 126 | snippet hbar "bar" iAm 127 | \overline{$1}$0 128 | endsnippet 129 | 130 | snippet hat "hat" iAm 131 | \hat{$1}$0 132 | endsnippet 133 | 134 | snippet hsq "\sqrt{}" iAm 135 | \sqrt{${1}}$0 136 | endsnippet 137 | 138 | # == Superscript Operation == 139 | 140 | snippet invs "inverse" iAm 141 | ^{-1} 142 | endsnippet 143 | 144 | snippet dig "digree" iAm 145 | ^{\circ} 146 | endsnippet 147 | 148 | priority 10000 149 | snippet TR "inverse" iAm 150 | ^{\mathsf{T}} 151 | endsnippet 152 | 153 | snippet CL "complement" iAm 154 | ^{c} 155 | endsnippet 156 | 157 | snippet R+ "R0+" iAm 158 | R_0^+ 159 | endsnippet 160 | 161 | snippet pow "power" iAm 162 | ^{${1:2}}$0 163 | endsnippet 164 | 165 | snippet tp "to the ... power" iAm 166 | ^{${1:2}}$0 167 | endsnippet 168 | 169 | snippet sr "square" iAm 170 | ^{2}$0 171 | endsnippet 172 | 173 | # == Subscript Operation == 174 | 175 | snippet td "subscript" iAm 176 | _{${1}}$0 177 | endsnippet 178 | 179 | snippet sb "subscript" iAm 180 | _{${1:2}}$0 181 | endsnippet 182 | 183 | snippet `(})(\d)\2` "auto subscript" iAm 184 | `` rv = m[1] + "_" + m[2]`` 185 | endsnippet 186 | 187 | snippet `([A-Za-z])(\d)` "auto subscript" iAm 188 | `` rv = m[1] + "_" + m[2]`` 189 | endsnippet 190 | 191 | priority 100 192 | snippet `([A-Za-z])_(\d{2})` "auto subscript" iAm 193 | `` rv = m[1] + "_{" + m[2] + "}$0" `` 194 | endsnippet 195 | 196 | priority 100 197 | snippet `([A-Za-z])S(\d)` "auto subscript" iAm 198 | `` rv = m[1] + "_{" + m[2] + "$1}$2"`` 199 | endsnippet 200 | 201 | snippet `\b(? "${1:_}" + d + "${2:, }").join('');``\cdots${3:${2:, }${1:_}n} 351 | endsnippet 352 | 353 | snippet `(\d\d+),` "0, 1, 2" iAm 354 | ``rv = m[1].split('').map((d) => "${1:_}" + d).join("${2:, }");`` 355 | endsnippet 356 | 357 | snippet <> "hokje" iA 358 | \diamond 359 | endsnippet 360 | 361 | # +... -> , \cdots 362 | # - ... -> , \cdots 363 | # add a space if there already is one. 364 | priority 101 365 | snippet `(?<=[-+])\s*\.\.\.` "smart cdots" imA 366 | \cdots 367 | endsnippet 368 | 369 | # It seems that \ldots is only used when , ..., 370 | # ,... -> , \ldots 371 | # , ... -> , \ldots 372 | priority 101 373 | snippet `(?<=,)(\s*)\.\.\.` "smart ldots" imA 374 | \ldots 375 | endsnippet 376 | 377 | snippet ** "dot multiply" iAm 378 | \cdot 379 | endsnippet 380 | 381 | snippet +- "pm" iAm 382 | \pm 383 | endsnippet 384 | 385 | snippet -+ "mp" iAm 386 | \mp 387 | endsnippet 388 | 389 | snippet odot "odot" iAm 390 | \odot 391 | endsnippet 392 | 393 | priority 101 394 | snippet xx "cross" iAm 395 | \times 396 | endsnippet 397 | 398 | snippet eps "epsilon" iAm 399 | \epsilon 400 | endsnippet 401 | 402 | priority 100 403 | snippet veps "varepsilon" iAm 404 | \varepsilon 405 | endsnippet 406 | 407 | priority 100 408 | snippet ell "ell" iAm 409 | \ell 410 | endsnippet 411 | 412 | priority 100 413 | snippet log "log" iAm 414 | \log 415 | endsnippet 416 | 417 | snippet bin "binom" iAm 418 | \binom{$1}{$2} 419 | endsnippet 420 | 421 | snippet oth "otherwise" iAm 422 | \text{otherwise} 423 | endsnippet 424 | 425 | snippet star "star" iAm 426 | ^{*} 427 | endsnippet 428 | 429 | snippet `(? "to" iAm 495 | \to 496 | endsnippet 497 | 498 | snippet !> "mapsto" iAm 499 | \mapsto 500 | endsnippet 501 | 502 | snippet => "implies" iAm 503 | \implies 504 | endsnippet 505 | 506 | snippet =< "implied by" iAm 507 | \impliedby 508 | endsnippet 509 | 510 | priority 200 511 | snippet iff "if and only if" iAm 512 | \iff 513 | endsnippet 514 | 515 | snippet EE "exist" iAm 516 | \exists 517 | endsnippet 518 | 519 | snippet AA "forall" iAm 520 | \forall 521 | endsnippet 522 | 523 | snippet bec "because" iAm 524 | \because 525 | endsnippet 526 | 527 | snippet thr "therefore" iAm 528 | \therefore 529 | endsnippet 530 | 531 | 532 | # ==== Possibility Symbol ==== 533 | 534 | snippet Pr "Pr" iAm 535 | \operatorname{Pr} 536 | endsnippet 537 | 538 | snippet Var "Var" iAm 539 | \operatorname{Var} 540 | endsnippet 541 | 542 | snippet Cov "Cov" iAm 543 | \operatorname{Cov} 544 | endsnippet 545 | 546 | snippet Exp "Expected" iAm 547 | \mathbb{E} 548 | endsnippet 549 | 550 | 551 | # ==== Compare Symbol ==== 552 | 553 | snippet -- "setminus" iAm 554 | \setminus 555 | endsnippet 556 | 557 | snippet >= "greater than" iAm 558 | \ge $0 559 | endsnippet 560 | 561 | snippet dis "displaystyle" iAm 562 | \displaystyle 563 | endsnippet 564 | 565 | snippet <= "less than" iAm 566 | \le $0 567 | endsnippet 568 | 569 | snippet != "no equals" iAm 570 | \neq 571 | endsnippet 572 | 573 | snippet == " constan equals" iAm 574 | \equiv 575 | endsnippet 576 | 577 | snippet sim "sim" iAm 578 | \sim 579 | endsnippet 580 | 581 | snippet `\\sim eq` "simeq" iAm 582 | \simeq 583 | endsnippet 584 | 585 | snippet ~~ " Amppro equals" iAm 586 | \approx 587 | endsnippet 588 | 589 | snippet ~= " Amppro equals2" iAm 590 | \cong 591 | endsnippet 592 | 593 | snippet >> ">>" iAm 594 | \gg 595 | endsnippet 596 | 597 | 598 | snippet << "<<" iAm 599 | \ll 600 | endsnippet 601 | 602 | 603 | # == Auto Environment == 604 | 605 | # ==== Auto Math Mode ==== 606 | 607 | snippet lm "inline Math" wA 608 | $${1}$$0 609 | endsnippet 610 | 611 | snippet dm "display Math" wA 612 | $$ 613 | ${1} 614 | $$$0 615 | endsnippet 616 | 617 | snippet eqt "equation" wA 618 | \begin{equation} 619 | ${1} 620 | \end{equation} 621 | endsnippet 622 | 623 | snippet eqs "equation*" wA 624 | \begin{equation*} 625 | ${1} 626 | \end{equation*} 627 | endsnippet 628 | 629 | # ==== Common Environment ==== 630 | 631 | snippet case "cases" iAm 632 | \begin{cases} $1, & $2 \\\\ $3, & $4 \end{cases} 633 | endsnippet 634 | 635 | snippet ali "aligned" iAm 636 | \begin{aligned} 637 | $1 \\\\ 638 | \end{aligned} 639 | endsnippet 640 | 641 | # == Auto Adaptive Close == 642 | 643 | snippet ceil "ceil" iAm 644 | \left\lceil $1 \right\rceil $0 645 | endsnippet 646 | 647 | snippet floor "floor" iAm 648 | \left\lfloor $1 \right\rfloor$0 649 | endsnippet 650 | 651 | priority 100 652 | snippet @) "left( right)" Aim 653 | \left( ${1} \right) $0 654 | endsnippet 655 | 656 | priority 100 657 | snippet @| "left| right|" Aim 658 | \left| ${1} \right| $0 659 | endsnippet 660 | 661 | priority 100 662 | snippet @\ "left. right|" Aim 663 | \left. ${1} \right|_{${2}}$0 664 | endsnippet 665 | 666 | priority 100 667 | snippet @} "left\{ right\}" Aim 668 | \left\\{ ${1} \right\\} $0 669 | endsnippet 670 | 671 | priority 100 672 | snippet set "\{ \}" Aim 673 | \\{ ${1} \\}$0 674 | endsnippet 675 | 676 | priority 100 677 | snippet @] "left[ right]" Aim 678 | \left[ ${1} \right] $0 679 | endsnippet 680 | 681 | priority 100 682 | snippet @> "leftangle rightangle" iAm 683 | \left<${1} \right>$0 684 | endsnippet 685 | 686 | priority 200 687 | snippet norm iAm 688 | \left\| ${1} \right\|$2 689 | endsnippet 690 | 691 | # == Snippet == 692 | 693 | # ==== General Snippet ==== 694 | 695 | # ====== Lite Snippet ====== 696 | 697 | snippet tag "tag" iAm 698 | \tag{$1} 699 | endsnippet 700 | 701 | snippet xyb "Auto (x, y)" iAm 702 | (x, y) 703 | endsnippet 704 | 705 | snippet xyzb "Auto (x, y ,z)" iAm 706 | (x, y, z) 707 | endsnippet 708 | 709 | priority 100 710 | snippet `\b([a-zA-Z])n(\d)` "x[n+1]" iAm 711 | ``rv = m[1]``_{${1:n}+``rv = m[2]``}$0 712 | endsnippet 713 | 714 | # Unkown 715 | snippet rij "mrij" iAm 716 | (${1:x}_${2:n})_{${3:$2} \\in ${4:N}}$0 717 | endsnippet 718 | 719 | priority 200 720 | snippet abs "absolute value" iAm 721 | \left\vert ${1} \right\vert $0 722 | endsnippet 723 | 724 | snippet beg "begin{} / end{}" bA 725 | \\begin{$1} 726 | $0 727 | \\end{$1} 728 | endsnippet 729 | 730 | # ======== N Series ======== 731 | 732 | priority 100 733 | snippet comma "comma" iAm 734 | ${1:\\alpha}_1,${1:\\alpha}_2,\\cdots,${1:\\alpha}_${2:n} 735 | endsnippet 736 | 737 | priority 100 738 | snippet plus "plus" iAm 739 | ${1:k}_1${2:\\alpha}_1+${1:k}_2${2:\\alpha}_2+\\cdots+${1:k}_${3:n}${2:\\alpha}_${3:n} 740 | endsnippet 741 | 742 | snippet `\b([ijk])=n` "i=1,2,\cdots,n" iAm 743 | ``rv = m[1]``=1,2,\cdots,n 744 | endsnippet 745 | 746 | # ======== Common Operator Snippet ======== 747 | 748 | snippet taylor "taylor" iAm 749 | \sum_{${1:k}=${2:0}}^{${3:\infty}} ${4:c_$1} (x-a)^$1 $0 750 | endsnippet 751 | 752 | snippet `(?= 2) || (b != 1 && !isO && isL)) ? "\\limits" : ""; 811 | let r = (b == 3) ? "E" : (b == 1 && (isL || isO)) ? "C" : "R"; 812 | final += ((b >= 2) || isO || (b == 1 && isL)) ? "_{${1:" + r + "}}" : "_{${1:-\\infty}}^{${2:\\infty}}"; 813 | let x = (b == 2) ? "A" : (b == 3) ? "V" : (b == 1 && isL) ? "s" : "x"; 814 | final += " ${3} \\mathrm{d}${4:" + x + "}$0"; 815 | rv = final; 816 | `` 817 | endsnippet 818 | 819 | # Custom: Can add more defined operator 820 | priority 100 821 | snippet `(? 0} \\\\ 866 | \end{aligned} 867 | endsnippet 868 | 869 | priority 300 870 | snippet Argmax "Optimization problem" iAm 871 | \begin{aligned} 872 | \argmax_{${1:\beta}} 873 | &\quad ${2:f(x)} \\\\ 874 | \text{s.t.} 875 | &\quad ${3:g(x) > 0} \\\\ 876 | \end{aligned} 877 | endsnippet 878 | 879 | snippet deff "Definition of function" iAm 880 | $1\colon ${2:\\mathbb{R\}} \to ${3:\\mathbb{R\}}, ${4:x} \mapsto $0 881 | endsnippet 882 | 883 | 884 | snippet iid "independent and identical distribution" iAm 885 | \overset{\text{i.i.d.}}{\sim} 886 | endsnippet 887 | 888 | snippet defe "define equal" iAm 889 | \overset{\underset{\mathrm{def}}{}}{=} 890 | endsnippet 891 | 892 | snippet deft "define triangleq" iAm 893 | \triangleq 894 | endsnippet 895 | 896 | 897 | # == Matrix == 898 | 899 | # ==== Static Matrix ==== 900 | 901 | snippet pmat "pmat" wm 902 | \begin{pmatrix} 903 | ${1: } 904 | \end{pmatrix} $0 905 | endsnippet 906 | 907 | snippet bmat "pmat" wm 908 | \begin{bmatrix} 909 | $1 910 | \end{bmatrix} $0 911 | endsnippet 912 | 913 | snippet vecC "column vector" iAm 914 | \begin{bmatrix} ${1:x}_1 \\\\ ${1:x}_2 \\\\ \vdots \\\\ ${1:x}_${2:n} \end{bmatrix} 915 | endsnippet 916 | 917 | snippet vecR "row vector" iAm 918 | \begin{bmatrix} ${1:x}_1, ${1:x}_2, \cdots, ${1:x}_${2:n} \end{bmatrix}$0 919 | endsnippet 920 | 921 | priority 300 922 | snippet omis "omission" iAm 923 | \\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} 924 | endsnippet 925 | 926 | priority 300 927 | snippet submat "omission" iAm 928 | \\begin{bmatrix} 929 | ${1:a}_{11} & ${1:a}_{12} & \\cdots & ${1:a}_{1n} \\\\ 930 | ${1:a}_{21} & ${1:a}_{22} & \\cdots & ${1:a}_{2n} \\\\ 931 | \\vdots & \\vdots & \\ddots & \\vdots \\\\ 932 | ${1:a}_{n1} & ${1:a}_{n2} & \\cdots & ${1:a}_{nn} 933 | \\end{bmatrix} 934 | endsnippet 935 | 936 | priority 300 937 | snippet subplusmat "omission" iAm 938 | \\begin{bmatrix} 939 | ${1:a}_{11}+${2:b}_{11} & ${1:a}_{12}+${2:b}_{12} & \\cdots & ${1:a}_{1n}+${2:b}_{1n} \\\\ 940 | ${1:a}_{21}+${2:b}_{21} & ${1:a}_{22}+${2:b}_{22} & \\cdots & ${1:a}_{2n}+${2:b}_{2n} \\\\ 941 | \\vdots & \\vdots & \\ddots & \\vdots \\\\ 942 | ${1:a}_{n1}+${2:b}_{n1} & ${1:a}_{n2}+${2:b}_{n2} & \\cdots & ${1:a}_{nn}+${2:b}_{nn} 943 | \\end{bmatrix} 944 | endsnippet 945 | 946 | snippet jacobi "jacobi" iAm 947 | \\begin{bmatrix}\\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{bmatrix} 948 | endsnippet 949 | 950 | # ==== Dynamic Matrix ==== 951 | 952 | priority 300 953 | snippet `(b|p|v)mata([1-9])` "bmatrix" iiAm 954 | \\begin{``rv = m[1]``matrix}`` 955 | let len = m[2]; 956 | let results = ""; 957 | for (var i=0; i 1 ){ 38 | results += "${" +(order ).toString() + ":" + t[order-2] + "}\t & "; 39 | } 40 | else{ 41 | results += "$" +(order ).toString() + " & "; 42 | } 43 | order ++; 44 | } 45 | results += "$"+(order).toString() +" \\\\" + "\\ "; 46 | order ++; 47 | } 48 | return results; 49 | } 50 | 51 | // 输出一个表格 52 | function createTable(rows, cols) { 53 | let ret = ""; 54 | let order = 1; 55 | for (let i = 0; i < parseInt(rows) + 2; i++) { 56 | for (let j = 0; j < parseInt(cols); j++) { 57 | if (i === 1) { 58 | ret += "|---"; 59 | } else { 60 | ret += "| $" + (order).toString() + " "; 61 | order++; 62 | } 63 | } 64 | ret += "|\n" 65 | } 66 | return ret; 67 | } 68 | 69 | endglobal 70 | 71 | 72 | # == Fraction Match == 73 | 74 | 75 | snippet // "Fraction" iAm 76 | \\frac{${1:${VISUAL}}}{$2}$0 77 | endsnippet 78 | 79 | snippet `((\d+)|(\d*)(\\)?([A-Za-z!]+)((\^|_)(\{\d+\}|\d))*)/` "Fraction no ()" iAm 80 | \frac{``rv = m[1]``}{$1}$0 81 | endsnippet 82 | 83 | priority 200 84 | 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 85 | ``rv = "\\frac{" + m.slice(1, m.length).join('') + "}{$1}$2"`` 86 | endsnippet 87 | 88 | # == Hat Operation == 89 | 90 | # ==== Auto Capture Hat Operation ==== 91 | snippet `(\\?[a-zA-Z]\w*({?\w*})?)(hbar|BAR)` "Bar" iAm 92 | \overline{``rv = m[1] + m[2] + m[3]``} 93 | endsnippet 94 | 95 | snippet `(\\?[a-zA-Z]\w*({?\w*})?)(htd|TD)` "tilde" iAm 96 | \tilde{``rv = m[1]``} 97 | endsnippet 98 | 99 | snippet `(\\?[a-zA-Z]\w*({?\w*})?)bar` "bar" iAm 100 | \bar{``rv = m[1]``} 101 | endsnippet 102 | 103 | snippet `(\\?[a-zA-Z]\w*({?\w*})?)(hat|HAT)` "hat" iAm 104 | \hat{``rv = m[1]``} 105 | endsnippet 106 | 107 | snippet `(\\?[a-zA-Z]\w*({?\w*})?)(hvec)` "Vector postfix" iAm 108 | \vec{``rv = m[1]``} 109 | endsnippet 110 | 111 | snippet `(\\?[a-zA-Z]\w*({?\w*})?)(rta)` "Vector postfix" iAm 112 | \overrightarrow{``rv = m[1]``} 113 | endsnippet 114 | 115 | snippet `(\\?[a-zA-Z]\w*({?\w*})?)(dot)` "dot" iAm 116 | \dot{``rv = m[1]``} 117 | endsnippet 118 | 119 | priority 1000 120 | snippet `(\\?[a-zA-Z]\w*({?\w*})?)(hdd)` "ddot" iAm 121 | \ddot{``rv = m[1]``} 122 | endsnippet 123 | 124 | # ===== Static Hat Operation ==== 125 | 126 | snippet hbar "bar" iAm 127 | \overline{$1}$0 128 | endsnippet 129 | 130 | snippet hat "hat" iAm 131 | \hat{$1}$0 132 | endsnippet 133 | 134 | snippet hsq "\sqrt{}" iAm 135 | \sqrt{${1}}$0 136 | endsnippet 137 | 138 | # == Superscript Operation == 139 | 140 | snippet invs "inverse" iAm 141 | ^{-1} 142 | endsnippet 143 | 144 | snippet dig "digree" iAm 145 | ^{\circ} 146 | endsnippet 147 | 148 | priority 10000 149 | snippet TR "inverse" iAm 150 | ^{\mathsf{T}} 151 | endsnippet 152 | 153 | snippet CL "complement" iAm 154 | ^{c} 155 | endsnippet 156 | 157 | snippet R+ "R0+" iAm 158 | R_0^+ 159 | endsnippet 160 | 161 | snippet pow "power" iAm 162 | ^{${1:2}}$0 163 | endsnippet 164 | 165 | snippet tp "to the ... power" iAm 166 | ^{${1:2}}$0 167 | endsnippet 168 | 169 | snippet sr "square" iAm 170 | ^{2}$0 171 | endsnippet 172 | 173 | # == Subscript Operation == 174 | 175 | snippet td "subscript" iAm 176 | _{${1}}$0 177 | endsnippet 178 | 179 | snippet sb "subscript" iAm 180 | _{${1:2}}$0 181 | endsnippet 182 | 183 | snippet `(})(\d)\2` "auto subscript" iAm 184 | `` rv = m[1] + "_" + m[2]`` 185 | endsnippet 186 | 187 | snippet `([A-Za-z])(\d)` "auto subscript" iAm 188 | `` rv = m[1] + "_" + m[2]`` 189 | endsnippet 190 | 191 | priority 100 192 | snippet `([A-Za-z])_(\d{2})` "auto subscript" iAm 193 | `` rv = m[1] + "_{" + m[2] + "}$0" `` 194 | endsnippet 195 | 196 | priority 100 197 | snippet `([A-Za-z])S(\d)` "auto subscript" iAm 198 | `` rv = m[1] + "_{" + m[2] + "$1}$2"`` 199 | endsnippet 200 | 201 | snippet `\b(? "${1:_}" + d + "${2:, }").join('');``\cdots${3:${2:, }${1:_}n} 351 | endsnippet 352 | 353 | snippet `(\d\d+),` "0, 1, 2" iAm 354 | ``rv = m[1].split('').map((d) => "${1:_}" + d).join("${2:, }");`` 355 | endsnippet 356 | 357 | snippet <> "hokje" iA 358 | \diamond 359 | endsnippet 360 | 361 | # +... -> , \cdots 362 | # - ... -> , \cdots 363 | # add a space if there already is one. 364 | priority 101 365 | snippet `(?<=[-+])\s*\.\.\.` "smart cdots" imA 366 | \cdots 367 | endsnippet 368 | 369 | # It seems that \ldots is only used when , ..., 370 | # ,... -> , \ldots 371 | # , ... -> , \ldots 372 | priority 101 373 | snippet `(?<=,)(\s*)\.\.\.` "smart ldots" imA 374 | \ldots 375 | endsnippet 376 | 377 | snippet ** "dot multiply" iAm 378 | \cdot 379 | endsnippet 380 | 381 | snippet +- "pm" iAm 382 | \pm 383 | endsnippet 384 | 385 | snippet -+ "mp" iAm 386 | \mp 387 | endsnippet 388 | 389 | snippet odot "odot" iAm 390 | \odot 391 | endsnippet 392 | 393 | priority 101 394 | snippet xx "cross" iAm 395 | \times 396 | endsnippet 397 | 398 | snippet eps "epsilon" iAm 399 | \epsilon 400 | endsnippet 401 | 402 | priority 100 403 | snippet veps "varepsilon" iAm 404 | \varepsilon 405 | endsnippet 406 | 407 | priority 100 408 | snippet ell "ell" iAm 409 | \ell 410 | endsnippet 411 | 412 | priority 100 413 | snippet log "log" iAm 414 | \log 415 | endsnippet 416 | 417 | snippet bin "binom" iAm 418 | \binom{$1}{$2} 419 | endsnippet 420 | 421 | snippet oth "otherwise" iAm 422 | \text{otherwise} 423 | endsnippet 424 | 425 | snippet star "star" iAm 426 | ^{*} 427 | endsnippet 428 | 429 | snippet `(? "to" iAm 495 | \to 496 | endsnippet 497 | 498 | snippet !> "mapsto" iAm 499 | \mapsto 500 | endsnippet 501 | 502 | snippet => "implies" iAm 503 | \implies 504 | endsnippet 505 | 506 | snippet =< "implied by" iAm 507 | \impliedby 508 | endsnippet 509 | 510 | priority 200 511 | snippet iff "if and only if" iAm 512 | \iff 513 | endsnippet 514 | 515 | snippet EE "exist" iAm 516 | \exists 517 | endsnippet 518 | 519 | snippet AA "forall" iAm 520 | \forall 521 | endsnippet 522 | 523 | snippet bec "because" iAm 524 | \because 525 | endsnippet 526 | 527 | snippet thr "therefore" iAm 528 | \therefore 529 | endsnippet 530 | 531 | 532 | # ==== Possibility Symbol ==== 533 | 534 | snippet Pr "Pr" iAm 535 | \operatorname{Pr} 536 | endsnippet 537 | 538 | snippet Var "Var" iAm 539 | \operatorname{Var} 540 | endsnippet 541 | 542 | snippet Cov "Cov" iAm 543 | \operatorname{Cov} 544 | endsnippet 545 | 546 | snippet Exp "Expected" iAm 547 | \mathbb{E} 548 | endsnippet 549 | 550 | 551 | # ==== Compare Symbol ==== 552 | 553 | snippet -- "setminus" iAm 554 | \setminus 555 | endsnippet 556 | 557 | snippet >= "greater than" iAm 558 | \ge $0 559 | endsnippet 560 | 561 | snippet dis "displaystyle" iAm 562 | \displaystyle 563 | endsnippet 564 | 565 | snippet <= "less than" iAm 566 | \le $0 567 | endsnippet 568 | 569 | snippet != "no equals" iAm 570 | \neq 571 | endsnippet 572 | 573 | snippet == " constan equals" iAm 574 | \equiv 575 | endsnippet 576 | 577 | snippet sim "sim" iAm 578 | \sim 579 | endsnippet 580 | 581 | snippet `\\sim eq` "simeq" iAm 582 | \simeq 583 | endsnippet 584 | 585 | snippet ~~ " Amppro equals" iAm 586 | \approx 587 | endsnippet 588 | 589 | snippet ~= " Amppro equals2" iAm 590 | \cong 591 | endsnippet 592 | 593 | snippet >> ">>" iAm 594 | \gg 595 | endsnippet 596 | 597 | 598 | snippet << "<<" iAm 599 | \ll 600 | endsnippet 601 | 602 | 603 | # == Auto Environment == 604 | 605 | # ==== Auto Math Mode ==== 606 | 607 | snippet lm "inline Math" wA 608 | $${1}$$0 609 | endsnippet 610 | 611 | snippet dm "display Math" wA 612 | $$ 613 | ${1} 614 | $$$0 615 | endsnippet 616 | 617 | snippet eqt "equation" wA 618 | \begin{equation} 619 | ${1} 620 | \end{equation} 621 | endsnippet 622 | 623 | snippet eqs "equation*" wA 624 | \begin{equation*} 625 | ${1} 626 | \end{equation*} 627 | endsnippet 628 | 629 | # ==== Common Environment ==== 630 | 631 | snippet case "cases" iAm 632 | \begin{cases} $1, & $2 \\\\ $3, & $4 \end{cases} 633 | endsnippet 634 | 635 | snippet ali "aligned" iAm 636 | \begin{aligned} 637 | $1 \\\\ 638 | \end{aligned} 639 | endsnippet 640 | 641 | # == Auto Adaptive Close == 642 | 643 | snippet ceil "ceil" iAm 644 | \left\lceil $1 \right\rceil $0 645 | endsnippet 646 | 647 | snippet floor "floor" iAm 648 | \left\lfloor $1 \right\rfloor$0 649 | endsnippet 650 | 651 | priority 100 652 | snippet @) "left( right)" Aim 653 | \left( ${1} \right) $0 654 | endsnippet 655 | 656 | priority 100 657 | snippet @| "left| right|" Aim 658 | \left| ${1} \right| $0 659 | endsnippet 660 | 661 | priority 100 662 | snippet @\ "left. right|" Aim 663 | \left. ${1} \right|_{${2}}$0 664 | endsnippet 665 | 666 | priority 100 667 | snippet @} "left\{ right\}" Aim 668 | \left\\{ ${1} \right\\} $0 669 | endsnippet 670 | 671 | priority 100 672 | snippet set "\{ \}" Aim 673 | \\{ ${1} \\}$0 674 | endsnippet 675 | 676 | priority 100 677 | snippet @] "left[ right]" Aim 678 | \left[ ${1} \right] $0 679 | endsnippet 680 | 681 | priority 100 682 | snippet @> "leftangle rightangle" iAm 683 | \left<${1} \right>$0 684 | endsnippet 685 | 686 | priority 200 687 | snippet norm iAm 688 | \left\| ${1} \right\|$2 689 | endsnippet 690 | 691 | # == Snippet == 692 | 693 | # ==== General Snippet ==== 694 | 695 | # ====== Lite Snippet ====== 696 | 697 | snippet tag "tag" iAm 698 | \tag{$1} 699 | endsnippet 700 | 701 | snippet xyb "Auto (x, y)" iAm 702 | (x, y) 703 | endsnippet 704 | 705 | snippet xyzb "Auto (x, y ,z)" iAm 706 | (x, y, z) 707 | endsnippet 708 | 709 | priority 100 710 | snippet `\b([a-zA-Z])n(\d)` "x[n+1]" iAm 711 | ``rv = m[1]``_{${1:n}+``rv = m[2]``}$0 712 | endsnippet 713 | 714 | # Unkown 715 | snippet rij "mrij" iAm 716 | (${1:x}_${2:n})_{${3:$2} \\in ${4:N}}$0 717 | endsnippet 718 | 719 | priority 200 720 | snippet abs "absolute value" iAm 721 | \left\vert ${1} \right\vert $0 722 | endsnippet 723 | 724 | snippet beg "begin{} / end{}" bA 725 | \\begin{$1} 726 | $0 727 | \\end{$1} 728 | endsnippet 729 | 730 | # ======== N Series ======== 731 | 732 | priority 100 733 | snippet comma "comma" iAm 734 | ${1:\\alpha}_1,${1:\\alpha}_2,\\cdots,${1:\\alpha}_${2:n} 735 | endsnippet 736 | 737 | priority 100 738 | snippet plus "plus" iAm 739 | ${1:k}_1${2:\\alpha}_1+${1:k}_2${2:\\alpha}_2+\\cdots+${1:k}_${3:n}${2:\\alpha}_${3:n} 740 | endsnippet 741 | 742 | snippet `\b([ijk])=n` "i=1,2,\cdots,n" iAm 743 | ``rv = m[1]``=1,2,\cdots,n 744 | endsnippet 745 | 746 | # ======== Common Operator Snippet ======== 747 | 748 | snippet taylor "taylor" iAm 749 | \sum_{${1:k}=${2:0}}^{${3:\infty}} ${4:c_$1} (x-a)^$1 $0 750 | endsnippet 751 | 752 | snippet `(?= 2) || (b != 1 && !isO && isL)) ? "\\limits" : ""; 811 | let r = (b == 3) ? "E" : (b == 1 && (isL || isO)) ? "C" : "R"; 812 | final += ((b >= 2) || isO || (b == 1 && isL)) ? "_{${1:" + r + "}}" : "_{${1:-\\infty}}^{${2:\\infty}}"; 813 | let x = (b == 2) ? "A" : (b == 3) ? "V" : (b == 1 && isL) ? "s" : "x"; 814 | final += " ${3} \\mathrm{d}${4:" + x + "}$0"; 815 | rv = final; 816 | `` 817 | endsnippet 818 | 819 | # Custom: Can add more defined operator 820 | priority 100 821 | snippet `(? 0} \\\\ 866 | \end{aligned} 867 | endsnippet 868 | 869 | priority 300 870 | snippet Argmax "Optimization problem" iAm 871 | \begin{aligned} 872 | \argmax_{${1:\beta}} 873 | &\quad ${2:f(x)} \\\\ 874 | \text{s.t.} 875 | &\quad ${3:g(x) > 0} \\\\ 876 | \end{aligned} 877 | endsnippet 878 | 879 | snippet deff "Definition of function" iAm 880 | $1\colon ${2:\\mathbb{R\}} \to ${3:\\mathbb{R\}}, ${4:x} \mapsto $0 881 | endsnippet 882 | 883 | 884 | snippet iid "independent and identical distribution" iAm 885 | \overset{\text{i.i.d.}}{\sim} 886 | endsnippet 887 | 888 | snippet defe "define equal" iAm 889 | \overset{\underset{\mathrm{def}}{}}{=} 890 | endsnippet 891 | 892 | snippet deft "define triangleq" iAm 893 | \triangleq 894 | endsnippet 895 | 896 | 897 | # == Matrix == 898 | 899 | # ==== Static Matrix ==== 900 | 901 | snippet pmat "pmat" wm 902 | \begin{pmatrix} 903 | ${1: } 904 | \end{pmatrix} $0 905 | endsnippet 906 | 907 | snippet bmat "pmat" wm 908 | \begin{bmatrix} 909 | $1 910 | \end{bmatrix} $0 911 | endsnippet 912 | 913 | snippet vecC "column vector" iAm 914 | \begin{bmatrix} ${1:x}_1 \\\\ ${1:x}_2 \\\\ \vdots \\\\ ${1:x}_${2:n} \end{bmatrix} 915 | endsnippet 916 | 917 | snippet vecR "row vector" iAm 918 | \begin{bmatrix} ${1:x}_1, ${1:x}_2, \cdots, ${1:x}_${2:n} \end{bmatrix}$0 919 | endsnippet 920 | 921 | priority 300 922 | snippet omis "omission" iAm 923 | \\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} 924 | endsnippet 925 | 926 | priority 300 927 | snippet submat "omission" iAm 928 | \\begin{bmatrix} 929 | ${1:a}_{11} & ${1:a}_{12} & \\cdots & ${1:a}_{1n} \\\\ 930 | ${1:a}_{21} & ${1:a}_{22} & \\cdots & ${1:a}_{2n} \\\\ 931 | \\vdots & \\vdots & \\ddots & \\vdots \\\\ 932 | ${1:a}_{n1} & ${1:a}_{n2} & \\cdots & ${1:a}_{nn} 933 | \\end{bmatrix} 934 | endsnippet 935 | 936 | priority 300 937 | snippet subplusmat "omission" iAm 938 | \\begin{bmatrix} 939 | ${1:a}_{11}+${2:b}_{11} & ${1:a}_{12}+${2:b}_{12} & \\cdots & ${1:a}_{1n}+${2:b}_{1n} \\\\ 940 | ${1:a}_{21}+${2:b}_{21} & ${1:a}_{22}+${2:b}_{22} & \\cdots & ${1:a}_{2n}+${2:b}_{2n} \\\\ 941 | \\vdots & \\vdots & \\ddots & \\vdots \\\\ 942 | ${1:a}_{n1}+${2:b}_{n1} & ${1:a}_{n2}+${2:b}_{n2} & \\cdots & ${1:a}_{nn}+${2:b}_{nn} 943 | \\end{bmatrix} 944 | endsnippet 945 | 946 | snippet jacobi "jacobi" iAm 947 | \\begin{bmatrix}\\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{bmatrix} 948 | endsnippet 949 | 950 | # ==== Dynamic Matrix ==== 951 | 952 | priority 300 953 | snippet `(b|p|v)mata([1-9])` "bmatrix" iiAm 954 | \\begin{``rv = m[1]``matrix}`` 955 | let len = m[2]; 956 | let results = ""; 957 | for (var i=0; i oo) 15 | endsnippet 16 | 17 | snippet derive "derive" iAm 18 | derive(${1:f}, ${2:x}) 19 | endsnippet 20 | 21 | snippet part "partial" iAm 22 | (diff ${1:f})/(diff ${3:x}) 23 | endsnippet 24 | 25 | snippet int "integral" iAm 26 | integral 27 | endsnippet 28 | 29 | snippet sb "subscript" iAm 30 | _(${1:2}) 31 | endsnippet 32 | 33 | snippet sr "square" iAm 34 | ^2 35 | endsnippet 36 | 37 | snippet tp "to the ... power" iAm 38 | ^(${1:3}) 39 | endsnippet 40 | 41 | snippet veps "epsilon.alt" iAm 42 | epsilon.alt 43 | endsnippet 44 | 45 | snippet ;; "\;" iAm 46 | \; 47 | endsnippet 48 | 49 | snippet ,, "\," iAm 50 | \, 51 | endsnippet 52 | 53 | snippet `([A-Za-z\)])(\d)` "auto subscript" iAm 54 | `` rv = m[1] + "_" + m[2]`` 55 | endsnippet 56 | 57 | snippet `([A-Za-z\)])_(\d{2})` "auto subscript" iAm 58 | `` rv = m[1] + "_(" + m[2] + ")" `` 59 | endsnippet 60 | 61 | snippet `(?