1 | 'use strict'
|
2 |
|
3 | const escapeLatex = require('escape-latex')
|
4 |
|
5 | exports.symbols = {
|
6 |
|
7 | Alpha: 'A',
|
8 | alpha: '\\alpha',
|
9 | Beta: 'B',
|
10 | beta: '\\beta',
|
11 | Gamma: '\\Gamma',
|
12 | gamma: '\\gamma',
|
13 | Delta: '\\Delta',
|
14 | delta: '\\delta',
|
15 | Epsilon: 'E',
|
16 | epsilon: '\\epsilon',
|
17 | varepsilon: '\\varepsilon',
|
18 | Zeta: 'Z',
|
19 | zeta: '\\zeta',
|
20 | Eta: 'H',
|
21 | eta: '\\eta',
|
22 | Theta: '\\Theta',
|
23 | theta: '\\theta',
|
24 | vartheta: '\\vartheta',
|
25 | Iota: 'I',
|
26 | iota: '\\iota',
|
27 | Kappa: 'K',
|
28 | kappa: '\\kappa',
|
29 | varkappa: '\\varkappa',
|
30 | Lambda: '\\Lambda',
|
31 | lambda: '\\lambda',
|
32 | Mu: 'M',
|
33 | mu: '\\mu',
|
34 | Nu: 'N',
|
35 | nu: '\\nu',
|
36 | Xi: '\\Xi',
|
37 | xi: '\\xi',
|
38 | Omicron: 'O',
|
39 | omicron: 'o',
|
40 | Pi: '\\Pi',
|
41 | pi: '\\pi',
|
42 | varpi: '\\varpi',
|
43 | Rho: 'P',
|
44 | rho: '\\rho',
|
45 | varrho: '\\varrho',
|
46 | Sigma: '\\Sigma',
|
47 | sigma: '\\sigma',
|
48 | varsigma: '\\varsigma',
|
49 | Tau: 'T',
|
50 | tau: '\\tau',
|
51 | Upsilon: '\\Upsilon',
|
52 | upsilon: '\\upsilon',
|
53 | Phi: '\\Phi',
|
54 | phi: '\\phi',
|
55 | varphi: '\\varphi',
|
56 | Chi: 'X',
|
57 | chi: '\\chi',
|
58 | Psi: '\\Psi',
|
59 | psi: '\\psi',
|
60 | Omega: '\\Omega',
|
61 | omega: '\\omega',
|
62 |
|
63 | 'true': '\\mathrm{True}',
|
64 | 'false': '\\mathrm{False}',
|
65 |
|
66 | i: 'i',
|
67 | inf: '\\infty',
|
68 | Inf: '\\infty',
|
69 | infinity: '\\infty',
|
70 | Infinity: '\\infty',
|
71 | oo: '\\infty',
|
72 | lim: '\\lim',
|
73 | 'undefined': '\\mathbf{?}'
|
74 | }
|
75 |
|
76 | exports.operators = {
|
77 | 'transpose': '^\\top',
|
78 | 'ctranspose': '^H',
|
79 | 'factorial': '!',
|
80 | 'pow': '^',
|
81 | 'dotPow': '.^\\wedge',
|
82 | 'unaryPlus': '+',
|
83 | 'unaryMinus': '-',
|
84 | 'bitNot': '\\~',
|
85 | 'not': '\\neg',
|
86 | 'multiply': '\\cdot',
|
87 | 'divide': '\\frac',
|
88 | 'dotMultiply': '.\\cdot',
|
89 | 'dotDivide': '.:',
|
90 | 'mod': '\\mod',
|
91 | 'add': '+',
|
92 | 'subtract': '-',
|
93 | 'to': '\\rightarrow',
|
94 | 'leftShift': '<<',
|
95 | 'rightArithShift': '>>',
|
96 | 'rightLogShift': '>>>',
|
97 | 'equal': '=',
|
98 | 'unequal': '\\neq',
|
99 | 'smaller': '<',
|
100 | 'larger': '>',
|
101 | 'smallerEq': '\\leq',
|
102 | 'largerEq': '\\geq',
|
103 | 'bitAnd': '\\&',
|
104 | 'bitXor': '\\underline{|}',
|
105 | 'bitOr': '|',
|
106 | 'and': '\\wedge',
|
107 | 'xor': '\\veebar',
|
108 | 'or': '\\vee'
|
109 | }
|
110 |
|
111 | exports.defaultTemplate = `\\mathrm{\${name}}\\left(\${args}\\right)`
|
112 |
|
113 | const units = {
|
114 | deg: '^\\circ'
|
115 | }
|
116 |
|
117 | exports.escape = function (string) {
|
118 | return escapeLatex(string, { 'preserveFormatting': true })
|
119 | }
|
120 |
|
121 |
|
122 |
|
123 | exports.toSymbol = function (name, isUnit) {
|
124 | isUnit = typeof isUnit === 'undefined' ? false : isUnit
|
125 | if (isUnit) {
|
126 | if (units.hasOwnProperty(name)) {
|
127 | return units[name]
|
128 | }
|
129 |
|
130 | return '\\mathrm{' + exports.escape(name) + '}'
|
131 | }
|
132 |
|
133 | if (exports.symbols.hasOwnProperty(name)) {
|
134 | return exports.symbols[name]
|
135 | }
|
136 |
|
137 | return exports.escape(name)
|
138 | }
|