mathjs
Version:
Math.js is an extensive math library for JavaScript and Node.js. It features a flexible expression parser with support for symbolic computation, comes with a large set of built-in functions and constants, and offers an integrated solution to work with dif
107 lines (96 loc) • 2.84 kB
JavaScript
;
var escape_latex = require('escape-latex')
exports.symbols = {
// GREEK LETTERS
Alpha: 'A', alpha: '\\alpha',
Beta: 'B', beta: '\\beta',
Gamma: '\\Gamma', gamma: '\\gamma',
Delta: '\\Delta', delta: '\\delta',
Epsilon: 'E', epsilon: '\\epsilon', varepsilon: '\\varepsilon',
Zeta: 'Z', zeta: '\\zeta',
Eta: 'H', eta: '\\eta',
Theta: '\\Theta', theta: '\\theta', vartheta: '\\vartheta',
Iota: 'I', iota: '\\iota',
Kappa: 'K', kappa: '\\kappa', varkappa: '\\varkappa',
Lambda: '\\Lambda', lambda: '\\lambda',
Mu: 'M', mu: '\\mu',
Nu: 'N', nu: '\\nu',
Xi: '\\Xi', xi: '\\xi',
Omicron: 'O', omicron: 'o',
Pi: '\\Pi', pi: '\\pi', varpi: '\\varpi',
Rho: 'P', rho: '\\rho', varrho: '\\varrho',
Sigma: '\\Sigma', sigma: '\\sigma', varsigma: '\\varsigma',
Tau: 'T', tau: '\\tau',
Upsilon: '\\Upsilon', upsilon: '\\upsilon',
Phi: '\\Phi', phi: '\\phi', varphi: '\\varphi',
Chi: 'X', chi: '\\chi',
Psi: '\\Psi', psi: '\\psi',
Omega: '\\Omega', omega: '\\omega',
//logic
'true': '\\mathrm{True}',
'false': '\\mathrm{False}',
//other
i: 'i', //TODO use \i ??
inf: '\\infty',
Inf: '\\infty',
infinity: '\\infty',
Infinity: '\\infty',
oo: '\\infty',
lim: '\\lim',
'undefined': '\\mathbf{?}'
};
exports.operators = {
'transpose': '^\\top',
'factorial': '!',
'pow': '^',
'dotPow': '.^\\wedge', //TODO find ideal solution
'unaryPlus': '+',
'unaryMinus': '-',
'bitNot': '~', //TODO find ideal solution
'not': '\\neg',
'multiply': '\\cdot',
'divide': '\\frac', //TODO how to handle that properly?
'dotMultiply': '.\\cdot', //TODO find ideal solution
'dotDivide': '.:', //TODO find ideal solution
'mod': '\\mod',
'add': '+',
'subtract': '-',
'to': '\\rightarrow',
'leftShift': '<<',
'rightArithShift': '>>',
'rightLogShift': '>>>',
'equal': '=',
'unequal': '\\neq',
'smaller': '<',
'larger': '>',
'smallerEq': '\\leq',
'largerEq': '\\geq',
'bitAnd': '\\&',
'bitXor': '\\underline{|}',
'bitOr': '|',
'and': '\\wedge',
'xor': '\\veebar',
'or': '\\vee'
};
exports.defaultTemplate = '\\mathrm{${name}}\\left(${args}\\right)';
var units = {
deg: '^\\circ'
};
exports.escape = function (string) {
return escape_latex(string, {'preserveFormatting': true});
}
//@param {string} name
//@param {boolean} isUnit
exports.toSymbol = function (name, isUnit) {
isUnit = typeof isUnit === 'undefined' ? false : isUnit;
if (isUnit) {
if (units.hasOwnProperty(name)) {
return units[name];
}
return '\\mathrm{' + exports.escape(name) + '}';
}
if (exports.symbols.hasOwnProperty(name)) {
return exports.symbols[name];
}
return exports.escape(name);
};