UNPKG

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

139 lines (128 loc) 2.8 kB
'use strict' const escapeLatex = 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', 'ctranspose': '^H', '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)` const units = { deg: '^\\circ' } exports.escape = function (string) { return escapeLatex(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) }