123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760 |
- /*************************************************************
- *
- * Copyright (c) 2017-2022 The MathJax Consortium
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- /**
- * @fileoverview Base mappings for TeX Parsing.
- *
- * @author v.sorge@mathjax.org (Volker Sorge)
- */
- import * as sm from '../SymbolMap.js';
- import {TexConstant} from '../TexConstants.js';
- import BaseMethods from './BaseMethods.js';
- import ParseMethods from '../ParseMethods.js';
- import ParseUtil from '../ParseUtil.js';
- import {TEXCLASS} from '../../../core/MmlTree/MmlNode.js';
- import {MATHSPACE, em} from '../../../util/lengths.js';
- /**
- * Letter pattern for parsing identifiers and operators.
- */
- new sm.RegExpMap('letter', ParseMethods.variable, /[a-z]/i);
- /**
- * Digit pattern for parsing numbers.
- */
- new sm.RegExpMap('digit', ParseMethods.digit, /[0-9.,]/);
- /**
- * Pattern for spotting start of commands.
- */
- new sm.RegExpMap('command', ParseMethods.controlSequence, /^\\/ );
- /**
- * Treatment of special characters in LaTeX.
- */
- new sm.MacroMap('special', {
- // This is now handled with a RegExp!
- // '\\': 'ControlSequence',
- '{': 'Open',
- '}': 'Close',
- '~': 'Tilde',
- '^': 'Superscript',
- '_': 'Subscript',
- ' ': 'Space',
- '\t': 'Space',
- '\r': 'Space',
- '\n': 'Space',
- '\'': 'Prime',
- '%': 'Comment',
- '&': 'Entry',
- '#': 'Hash',
- '\u00A0': 'Space',
- '\u2019': 'Prime'
- }, BaseMethods);
- /**
- * Macros for identifiers.
- */
- new sm.CharacterMap('mathchar0mi', ParseMethods.mathchar0mi, {
- // Lower-case greek
- alpha: '\u03B1',
- beta: '\u03B2',
- gamma: '\u03B3',
- delta: '\u03B4',
- epsilon: '\u03F5',
- zeta: '\u03B6',
- eta: '\u03B7',
- theta: '\u03B8',
- iota: '\u03B9',
- kappa: '\u03BA',
- lambda: '\u03BB',
- mu: '\u03BC',
- nu: '\u03BD',
- xi: '\u03BE',
- omicron: '\u03BF', // added for completeness
- pi: '\u03C0',
- rho: '\u03C1',
- sigma: '\u03C3',
- tau: '\u03C4',
- upsilon: '\u03C5',
- phi: '\u03D5',
- chi: '\u03C7',
- psi: '\u03C8',
- omega: '\u03C9',
- varepsilon: '\u03B5',
- vartheta: '\u03D1',
- varpi: '\u03D6',
- varrho: '\u03F1',
- varsigma: '\u03C2',
- varphi: '\u03C6',
- // Ord symbols
- S: ['\u00A7', {mathvariant: TexConstant.Variant.NORMAL}],
- aleph: ['\u2135', {mathvariant: TexConstant.Variant.NORMAL}],
- hbar: ['\u210F', {variantForm: true}],
- imath: '\u0131',
- jmath: '\u0237',
- ell: '\u2113',
- wp: ['\u2118', {mathvariant: TexConstant.Variant.NORMAL}],
- Re: ['\u211C', {mathvariant: TexConstant.Variant.NORMAL}],
- Im: ['\u2111', {mathvariant: TexConstant.Variant.NORMAL}],
- partial: ['\u2202', {mathvariant: TexConstant.Variant.ITALIC}],
- infty: ['\u221E', {mathvariant: TexConstant.Variant.NORMAL}],
- prime: ['\u2032', {variantForm: true}],
- emptyset: ['\u2205', {mathvariant: TexConstant.Variant.NORMAL}],
- nabla: ['\u2207', {mathvariant: TexConstant.Variant.NORMAL}],
- top: ['\u22A4', {mathvariant: TexConstant.Variant.NORMAL}],
- bot: ['\u22A5', {mathvariant: TexConstant.Variant.NORMAL}],
- angle: ['\u2220', {mathvariant: TexConstant.Variant.NORMAL}],
- triangle: ['\u25B3', {mathvariant: TexConstant.Variant.NORMAL}],
- backslash: ['\u2216', {mathvariant: TexConstant.Variant.NORMAL}],
- forall: ['\u2200', {mathvariant: TexConstant.Variant.NORMAL}],
- exists: ['\u2203', {mathvariant: TexConstant.Variant.NORMAL}],
- neg: ['\u00AC', {mathvariant: TexConstant.Variant.NORMAL}],
- lnot: ['\u00AC', {mathvariant: TexConstant.Variant.NORMAL}],
- flat: ['\u266D', {mathvariant: TexConstant.Variant.NORMAL}],
- natural: ['\u266E', {mathvariant: TexConstant.Variant.NORMAL}],
- sharp: ['\u266F', {mathvariant: TexConstant.Variant.NORMAL}],
- clubsuit: ['\u2663', {mathvariant: TexConstant.Variant.NORMAL}],
- diamondsuit: ['\u2662', {mathvariant: TexConstant.Variant.NORMAL}],
- heartsuit: ['\u2661', {mathvariant: TexConstant.Variant.NORMAL}],
- spadesuit: ['\u2660', {mathvariant: TexConstant.Variant.NORMAL}]
- });
- /**
- * Macros for operators.
- */
- new sm.CharacterMap('mathchar0mo', ParseMethods.mathchar0mo, {
- surd: '\u221A',
- // big ops
- coprod: ['\u2210', {texClass: TEXCLASS.OP,
- movesupsub: true}],
- bigvee: ['\u22C1', {texClass: TEXCLASS.OP,
- movesupsub: true}],
- bigwedge: ['\u22C0', {texClass: TEXCLASS.OP,
- movesupsub: true}],
- biguplus: ['\u2A04', {texClass: TEXCLASS.OP,
- movesupsub: true}],
- bigcap: ['\u22C2', {texClass: TEXCLASS.OP,
- movesupsub: true}],
- bigcup: ['\u22C3', {texClass: TEXCLASS.OP,
- movesupsub: true}],
- 'int': ['\u222B', {texClass: TEXCLASS.OP}],
- intop: ['\u222B', {texClass: TEXCLASS.OP,
- movesupsub: true, movablelimits: true}],
- iint: ['\u222C', {texClass: TEXCLASS.OP}],
- iiint: ['\u222D', {texClass: TEXCLASS.OP}],
- prod: ['\u220F', {texClass: TEXCLASS.OP,
- movesupsub: true}],
- sum: ['\u2211', {texClass: TEXCLASS.OP,
- movesupsub: true}],
- bigotimes: ['\u2A02', {texClass: TEXCLASS.OP,
- movesupsub: true}],
- bigoplus: ['\u2A01', {texClass: TEXCLASS.OP,
- movesupsub: true}],
- bigodot: ['\u2A00', {texClass: TEXCLASS.OP,
- movesupsub: true}],
- oint: ['\u222E', {texClass: TEXCLASS.OP}],
- bigsqcup: ['\u2A06', {texClass: TEXCLASS.OP,
- movesupsub: true}],
- smallint: ['\u222B', {largeop: false}],
- // binary operations
- triangleleft: '\u25C3',
- triangleright: '\u25B9',
- bigtriangleup: '\u25B3',
- bigtriangledown: '\u25BD',
- wedge: '\u2227',
- land: '\u2227',
- vee: '\u2228',
- lor: '\u2228',
- cap: '\u2229',
- cup: '\u222A',
- ddagger: '\u2021',
- dagger: '\u2020',
- sqcap: '\u2293',
- sqcup: '\u2294',
- uplus: '\u228E',
- amalg: '\u2A3F',
- diamond: '\u22C4',
- bullet: '\u2219',
- wr: '\u2240',
- div: '\u00F7',
- divsymbol: '\u00F7',
- odot: ['\u2299', {largeop: false}],
- oslash: ['\u2298', {largeop: false}],
- otimes: ['\u2297', {largeop: false}],
- ominus: ['\u2296', {largeop: false}],
- oplus: ['\u2295', {largeop: false}],
- mp: '\u2213',
- pm: '\u00B1',
- circ: '\u2218',
- bigcirc: '\u25EF',
- setminus: '\u2216',
- cdot: '\u22C5',
- ast: '\u2217',
- times: '\u00D7',
- star: '\u22C6',
- // Relations
- propto: '\u221D',
- sqsubseteq: '\u2291',
- sqsupseteq: '\u2292',
- parallel: '\u2225',
- mid: '\u2223',
- dashv: '\u22A3',
- vdash: '\u22A2',
- leq: '\u2264',
- le: '\u2264',
- geq: '\u2265',
- ge: '\u2265',
- lt: '\u003C',
- gt: '\u003E',
- succ: '\u227B',
- prec: '\u227A',
- approx: '\u2248',
- succeq: '\u2AB0', // or '227C',
- preceq: '\u2AAF', // or '227D',
- supset: '\u2283',
- subset: '\u2282',
- supseteq: '\u2287',
- subseteq: '\u2286',
- 'in': '\u2208',
- ni: '\u220B',
- notin: '\u2209',
- owns: '\u220B',
- gg: '\u226B',
- ll: '\u226A',
- sim: '\u223C',
- simeq: '\u2243',
- perp: '\u22A5',
- equiv: '\u2261',
- asymp: '\u224D',
- smile: '\u2323',
- frown: '\u2322',
- ne: '\u2260',
- neq: '\u2260',
- cong: '\u2245',
- doteq: '\u2250',
- bowtie: '\u22C8',
- models: '\u22A8',
- notChar: '\u29F8',
- // Arrows
- Leftrightarrow: '\u21D4',
- Leftarrow: '\u21D0',
- Rightarrow: '\u21D2',
- leftrightarrow: '\u2194',
- leftarrow: '\u2190',
- gets: '\u2190',
- rightarrow: '\u2192',
- to: ['\u2192', {accent: false}],
- mapsto: '\u21A6',
- leftharpoonup: '\u21BC',
- leftharpoondown: '\u21BD',
- rightharpoonup: '\u21C0',
- rightharpoondown: '\u21C1',
- nearrow: '\u2197',
- searrow: '\u2198',
- nwarrow: '\u2196',
- swarrow: '\u2199',
- rightleftharpoons: '\u21CC',
- hookrightarrow: '\u21AA',
- hookleftarrow: '\u21A9',
- longleftarrow: '\u27F5',
- Longleftarrow: '\u27F8',
- longrightarrow: '\u27F6',
- Longrightarrow: '\u27F9',
- Longleftrightarrow: '\u27FA',
- longleftrightarrow: '\u27F7',
- longmapsto: '\u27FC',
- // Misc.
- ldots: '\u2026',
- cdots: '\u22EF',
- vdots: '\u22EE',
- ddots: '\u22F1',
- dotsc: '\u2026', // dots with commas
- dotsb: '\u22EF', // dots with binary ops and relations
- dotsm: '\u22EF', // dots with multiplication
- dotsi: '\u22EF', // dots with integrals
- dotso: '\u2026', // other dots
- ldotp: ['\u002E', {texClass: TEXCLASS.PUNCT}],
- cdotp: ['\u22C5', {texClass: TEXCLASS.PUNCT}],
- colon: ['\u003A', {texClass: TEXCLASS.PUNCT}]
- });
- /**
- * Macros for special characters and identifiers.
- */
- new sm.CharacterMap('mathchar7', ParseMethods.mathchar7, {
- Gamma: '\u0393',
- Delta: '\u0394',
- Theta: '\u0398',
- Lambda: '\u039B',
- Xi: '\u039E',
- Pi: '\u03A0',
- Sigma: '\u03A3',
- Upsilon: '\u03A5',
- Phi: '\u03A6',
- Psi: '\u03A8',
- Omega: '\u03A9',
- '_': '\u005F',
- '#': '\u0023',
- '$': '\u0024',
- '%': '\u0025',
- '&': '\u0026',
- And: '\u0026'
- });
- /**
- * Macros for delimiters.
- */
- new sm.DelimiterMap('delimiter', ParseMethods.delimiter, {
- '(': '(',
- ')': ')',
- '[': '[',
- ']': ']',
- '<': '\u27E8',
- '>': '\u27E9',
- '\\lt': '\u27E8',
- '\\gt': '\u27E9',
- '/': '/',
- '|': ['|', {texClass: TEXCLASS.ORD}],
- '.': '',
- '\\\\': '\\',
- '\\lmoustache': '\u23B0', // non-standard
- '\\rmoustache': '\u23B1', // non-standard
- '\\lgroup': '\u27EE', // non-standard
- '\\rgroup': '\u27EF', // non-standard
- '\\arrowvert': '\u23D0',
- '\\Arrowvert': '\u2016',
- '\\bracevert': '\u23AA', // non-standard
- '\\Vert': ['\u2016', {texClass: TEXCLASS.ORD}],
- '\\|': ['\u2016', {texClass: TEXCLASS.ORD}],
- '\\vert': ['|', {texClass: TEXCLASS.ORD}],
- '\\uparrow': '\u2191',
- '\\downarrow': '\u2193',
- '\\updownarrow': '\u2195',
- '\\Uparrow': '\u21D1',
- '\\Downarrow': '\u21D3',
- '\\Updownarrow': '\u21D5',
- '\\backslash': '\\',
- '\\rangle': '\u27E9',
- '\\langle': '\u27E8',
- '\\rbrace': '}',
- '\\lbrace': '{',
- '\\}': '}',
- '\\{': '{',
- '\\rceil': '\u2309',
- '\\lceil': '\u2308',
- '\\rfloor': '\u230B',
- '\\lfloor': '\u230A',
- '\\lbrack': '[',
- '\\rbrack': ']'
- });
- /**
- * Macros for LaTeX commands.
- */
- new sm.CommandMap('macros', {
- displaystyle: ['SetStyle', 'D', true, 0],
- textstyle: ['SetStyle', 'T', false, 0],
- scriptstyle: ['SetStyle', 'S', false, 1],
- scriptscriptstyle: ['SetStyle', 'SS', false, 2],
- rm: ['SetFont', TexConstant.Variant.NORMAL],
- mit: ['SetFont', TexConstant.Variant.ITALIC],
- oldstyle: ['SetFont', TexConstant.Variant.OLDSTYLE],
- cal: ['SetFont', TexConstant.Variant.CALLIGRAPHIC],
- it: ['SetFont', TexConstant.Variant.MATHITALIC], // needs special handling
- bf: ['SetFont', TexConstant.Variant.BOLD],
- bbFont: ['SetFont', TexConstant.Variant.DOUBLESTRUCK],
- scr: ['SetFont', TexConstant.Variant.SCRIPT],
- frak: ['SetFont', TexConstant.Variant.FRAKTUR],
- sf: ['SetFont', TexConstant.Variant.SANSSERIF],
- tt: ['SetFont', TexConstant.Variant.MONOSPACE],
- mathrm: ['MathFont', TexConstant.Variant.NORMAL],
- mathup: ['MathFont', TexConstant.Variant.NORMAL],
- mathnormal: ['MathFont', ''],
- mathbf: ['MathFont', TexConstant.Variant.BOLD],
- mathbfup: ['MathFont', TexConstant.Variant.BOLD],
- mathit: ['MathFont', TexConstant.Variant.MATHITALIC],
- mathbfit: ['MathFont', TexConstant.Variant.BOLDITALIC],
- mathbb: ['MathFont', TexConstant.Variant.DOUBLESTRUCK],
- Bbb: ['MathFont', TexConstant.Variant.DOUBLESTRUCK],
- mathfrak: ['MathFont', TexConstant.Variant.FRAKTUR],
- mathbffrak: ['MathFont', TexConstant.Variant.BOLDFRAKTUR],
- mathscr: ['MathFont', TexConstant.Variant.SCRIPT],
- mathbfscr: ['MathFont', TexConstant.Variant.BOLDSCRIPT],
- mathsf: ['MathFont', TexConstant.Variant.SANSSERIF],
- mathsfup: ['MathFont', TexConstant.Variant.SANSSERIF],
- mathbfsf: ['MathFont', TexConstant.Variant.BOLDSANSSERIF],
- mathbfsfup: ['MathFont', TexConstant.Variant.BOLDSANSSERIF],
- mathsfit: ['MathFont', TexConstant.Variant.SANSSERIFITALIC],
- mathbfsfit: ['MathFont', TexConstant.Variant.SANSSERIFBOLDITALIC],
- mathtt: ['MathFont', TexConstant.Variant.MONOSPACE],
- mathcal: ['MathFont', TexConstant.Variant.CALLIGRAPHIC],
- mathbfcal: ['MathFont', TexConstant.Variant.BOLDCALLIGRAPHIC],
- symrm: ['MathFont', TexConstant.Variant.NORMAL],
- symup: ['MathFont', TexConstant.Variant.NORMAL],
- symnormal: ['MathFont', ''],
- symbf: ['MathFont', TexConstant.Variant.BOLD],
- symbfup: ['MathFont', TexConstant.Variant.BOLD],
- symit: ['MathFont', TexConstant.Variant.ITALIC],
- symbfit: ['MathFont', TexConstant.Variant.BOLDITALIC],
- symbb: ['MathFont', TexConstant.Variant.DOUBLESTRUCK],
- symfrak: ['MathFont', TexConstant.Variant.FRAKTUR],
- symbffrak: ['MathFont', TexConstant.Variant.BOLDFRAKTUR],
- symscr: ['MathFont', TexConstant.Variant.SCRIPT],
- symbfscr: ['MathFont', TexConstant.Variant.BOLDSCRIPT],
- symsf: ['MathFont', TexConstant.Variant.SANSSERIF],
- symsfup: ['MathFont', TexConstant.Variant.SANSSERIF],
- symbfsf: ['MathFont', TexConstant.Variant.BOLDSANSSERIF],
- symbfsfup: ['MathFont', TexConstant.Variant.BOLDSANSSERIF],
- symsfit: ['MathFont', TexConstant.Variant.SANSSERIFITALIC],
- symbfsfit: ['MathFont', TexConstant.Variant.SANSSERIFBOLDITALIC],
- symtt: ['MathFont', TexConstant.Variant.MONOSPACE],
- symcal: ['MathFont', TexConstant.Variant.CALLIGRAPHIC],
- symbfcal: ['MathFont', TexConstant.Variant.BOLDCALLIGRAPHIC],
- textrm: ['HBox', null, TexConstant.Variant.NORMAL],
- textup: ['HBox', null, TexConstant.Variant.NORMAL],
- textnormal: ['HBox'],
- textit: ['HBox', null, TexConstant.Variant.ITALIC],
- textbf: ['HBox', null, TexConstant.Variant.BOLD],
- textsf: ['HBox', null, TexConstant.Variant.SANSSERIF],
- texttt: ['HBox', null, TexConstant.Variant.MONOSPACE],
- tiny: ['SetSize', 0.5],
- Tiny: ['SetSize', 0.6], // non-standard
- scriptsize: ['SetSize', 0.7],
- small: ['SetSize', 0.85],
- normalsize: ['SetSize', 1.0],
- large: ['SetSize', 1.2],
- Large: ['SetSize', 1.44],
- LARGE: ['SetSize', 1.73],
- huge: ['SetSize', 2.07],
- Huge: ['SetSize', 2.49],
- arcsin: 'NamedFn',
- arccos: 'NamedFn',
- arctan: 'NamedFn',
- arg: 'NamedFn',
- cos: 'NamedFn',
- cosh: 'NamedFn',
- cot: 'NamedFn',
- coth: 'NamedFn',
- csc: 'NamedFn',
- deg: 'NamedFn',
- det: 'NamedOp',
- dim: 'NamedFn',
- exp: 'NamedFn',
- gcd: 'NamedOp',
- hom: 'NamedFn',
- inf: 'NamedOp',
- ker: 'NamedFn',
- lg: 'NamedFn',
- lim: 'NamedOp',
- liminf: ['NamedOp', 'lim inf'],
- limsup: ['NamedOp', 'lim sup'],
- ln: 'NamedFn',
- log: 'NamedFn',
- max: 'NamedOp',
- min: 'NamedOp',
- Pr: 'NamedOp',
- sec: 'NamedFn',
- sin: 'NamedFn',
- sinh: 'NamedFn',
- sup: 'NamedOp',
- tan: 'NamedFn',
- tanh: 'NamedFn',
- limits: ['Limits', 1],
- nolimits: ['Limits', 0],
- overline: ['UnderOver', '2015'],
- underline: ['UnderOver', '2015'],
- overbrace: ['UnderOver', '23DE', 1],
- underbrace: ['UnderOver', '23DF', 1],
- overparen: ['UnderOver', '23DC'],
- underparen: ['UnderOver', '23DD'],
- overrightarrow: ['UnderOver', '2192'],
- underrightarrow: ['UnderOver', '2192'],
- overleftarrow: ['UnderOver', '2190'],
- underleftarrow: ['UnderOver', '2190'],
- overleftrightarrow: ['UnderOver', '2194'],
- underleftrightarrow: ['UnderOver', '2194'],
- overset: 'Overset',
- underset: 'Underset',
- overunderset: 'Overunderset',
- stackrel: ['Macro', '\\mathrel{\\mathop{#2}\\limits^{#1}}', 2],
- stackbin: ['Macro', '\\mathbin{\\mathop{#2}\\limits^{#1}}', 2],
- over: 'Over',
- overwithdelims: 'Over',
- atop: 'Over',
- atopwithdelims: 'Over',
- above: 'Over',
- abovewithdelims: 'Over',
- brace: ['Over', '{', '}'],
- brack: ['Over', '[', ']'],
- choose: ['Over', '(', ')'],
- frac: 'Frac',
- sqrt: 'Sqrt',
- root: 'Root',
- uproot: ['MoveRoot', 'upRoot'],
- leftroot: ['MoveRoot', 'leftRoot'],
- left: 'LeftRight',
- right: 'LeftRight',
- middle: 'LeftRight',
- llap: 'Lap',
- rlap: 'Lap',
- raise: 'RaiseLower',
- lower: 'RaiseLower',
- moveleft: 'MoveLeftRight',
- moveright: 'MoveLeftRight',
- ',': ['Spacer', MATHSPACE.thinmathspace],
- ':': ['Spacer', MATHSPACE.mediummathspace],
- '>': ['Spacer', MATHSPACE.mediummathspace],
- ';': ['Spacer', MATHSPACE.thickmathspace],
- '!': ['Spacer', MATHSPACE.negativethinmathspace],
- enspace: ['Spacer', .5],
- quad: ['Spacer', 1],
- qquad: ['Spacer', 2],
- thinspace: ['Spacer', MATHSPACE.thinmathspace],
- negthinspace: ['Spacer', MATHSPACE.negativethinmathspace],
- hskip: 'Hskip',
- hspace: 'Hskip',
- kern: 'Hskip',
- mskip: 'Hskip',
- mspace: 'Hskip',
- mkern: 'Hskip',
- rule: 'rule',
- Rule: ['Rule'],
- Space: ['Rule', 'blank'],
- nonscript: 'Nonscript',
- big: ['MakeBig', TEXCLASS.ORD, 0.85],
- Big: ['MakeBig', TEXCLASS.ORD, 1.15],
- bigg: ['MakeBig', TEXCLASS.ORD, 1.45],
- Bigg: ['MakeBig', TEXCLASS.ORD, 1.75],
- bigl: ['MakeBig', TEXCLASS.OPEN, 0.85],
- Bigl: ['MakeBig', TEXCLASS.OPEN, 1.15],
- biggl: ['MakeBig', TEXCLASS.OPEN, 1.45],
- Biggl: ['MakeBig', TEXCLASS.OPEN, 1.75],
- bigr: ['MakeBig', TEXCLASS.CLOSE, 0.85],
- Bigr: ['MakeBig', TEXCLASS.CLOSE, 1.15],
- biggr: ['MakeBig', TEXCLASS.CLOSE, 1.45],
- Biggr: ['MakeBig', TEXCLASS.CLOSE, 1.75],
- bigm: ['MakeBig', TEXCLASS.REL, 0.85],
- Bigm: ['MakeBig', TEXCLASS.REL, 1.15],
- biggm: ['MakeBig', TEXCLASS.REL, 1.45],
- Biggm: ['MakeBig', TEXCLASS.REL, 1.75],
- mathord: ['TeXAtom', TEXCLASS.ORD],
- mathop: ['TeXAtom', TEXCLASS.OP],
- mathopen: ['TeXAtom', TEXCLASS.OPEN],
- mathclose: ['TeXAtom', TEXCLASS.CLOSE],
- mathbin: ['TeXAtom', TEXCLASS.BIN],
- mathrel: ['TeXAtom', TEXCLASS.REL],
- mathpunct: ['TeXAtom', TEXCLASS.PUNCT],
- mathinner: ['TeXAtom', TEXCLASS.INNER],
- vcenter: ['TeXAtom', TEXCLASS.VCENTER],
- buildrel: 'BuildRel',
- hbox: ['HBox', 0],
- text: 'HBox',
- mbox: ['HBox', 0],
- fbox: 'FBox',
- boxed: ['Macro', '\\fbox{$\\displaystyle{#1}$}', 1],
- framebox: 'FrameBox',
- strut: 'Strut',
- mathstrut: ['Macro', '\\vphantom{(}'],
- phantom: 'Phantom',
- vphantom: ['Phantom', 1, 0],
- hphantom: ['Phantom', 0, 1],
- smash: 'Smash',
- acute: ['Accent', '00B4'], // or 0301 or 02CA
- grave: ['Accent', '0060'], // or 0300 or 02CB
- ddot: ['Accent', '00A8'], // or 0308
- tilde: ['Accent', '007E'], // or 0303 or 02DC
- bar: ['Accent', '00AF'], // or 0304 or 02C9
- breve: ['Accent', '02D8'], // or 0306
- check: ['Accent', '02C7'], // or 030C
- hat: ['Accent', '005E'], // or 0302 or 02C6
- vec: ['Accent', '2192'], // or 20D7
- dot: ['Accent', '02D9'], // or 0307
- widetilde: ['Accent', '007E', 1], // or 0303 or 02DC
- widehat: ['Accent', '005E', 1], // or 0302 or 02C6
- matrix: 'Matrix',
- array: 'Matrix',
- pmatrix: ['Matrix', '(', ')'],
- cases: ['Matrix', '{', '', 'left left', null, '.1em', null,
- true],
- eqalign: ['Matrix', null, null, 'right left',
- em(MATHSPACE.thickmathspace), '.5em', 'D'],
- displaylines: ['Matrix', null, null, 'center', null, '.5em', 'D'],
- cr: 'Cr',
- '\\': 'CrLaTeX',
- newline: ['CrLaTeX', true],
- hline: ['HLine', 'solid'],
- hdashline: ['HLine', 'dashed'],
- // noalign: 'HandleNoAlign',
- eqalignno: ['Matrix', null, null, 'right left',
- em(MATHSPACE.thickmathspace), '.5em', 'D', null,
- 'right'],
- leqalignno: ['Matrix', null, null, 'right left',
- em(MATHSPACE.thickmathspace), '.5em', 'D', null,
- 'left'],
- hfill: 'HFill',
- hfil: 'HFill', // \hfil treated as \hfill for now
- hfilll: 'HFill', // \hfilll treated as \hfill for now
- // TeX substitution macros
- bmod: ['Macro', '\\mmlToken{mo}[lspace="thickmathspace"' +
- ' rspace="thickmathspace"]{mod}'],
- pmod: ['Macro', '\\pod{\\mmlToken{mi}{mod}\\kern 6mu #1}', 1],
- mod: ['Macro', '\\mathchoice{\\kern18mu}{\\kern12mu}' +
- '{\\kern12mu}{\\kern12mu}\\mmlToken{mi}{mod}\\,\\,#1',
- 1],
- pod: ['Macro', '\\mathchoice{\\kern18mu}{\\kern8mu}' +
- '{\\kern8mu}{\\kern8mu}(#1)', 1],
- iff: ['Macro', '\\;\\Longleftrightarrow\\;'],
- skew: ['Macro', '{{#2{#3\\mkern#1mu}\\mkern-#1mu}{}}', 3],
- pmb: ['Macro', '\\rlap{#1}\\kern1px{#1}', 1],
- TeX: ['Macro', 'T\\kern-.14em\\lower.5ex{E}\\kern-.115em X'],
- LaTeX: ['Macro', 'L\\kern-.325em\\raise.21em' +
- '{\\scriptstyle{A}}\\kern-.17em\\TeX'],
- ' ': ['Macro', '\\text{ }'],
- // Specially handled
- not: 'Not',
- dots: 'Dots',
- space: 'Tilde',
- '\u00A0': 'Tilde',
- // LaTeX
- begin: 'BeginEnd',
- end: 'BeginEnd',
- label: 'HandleLabel',
- ref: 'HandleRef',
- nonumber: 'HandleNoTag',
- // Internal use:
- mathchoice: 'MathChoice',
- mmlToken: 'MmlToken'
- }, BaseMethods);
- /**
- * Macros for LaTeX environments.
- */
- new sm.EnvironmentMap('environment', ParseMethods.environment, {
- array: ['AlignedArray'],
- equation: ['Equation', null, true],
- eqnarray: ['EqnArray', null, true, true, 'rcl',
- ParseUtil.cols(0, MATHSPACE.thickmathspace), '.5em']
- }, BaseMethods);
- /**
- * Mapping for negated operators.
- */
- new sm.CharacterMap('not_remap', null, {
- '\u2190': '\u219A',
- '\u2192': '\u219B',
- '\u2194': '\u21AE',
- '\u21D0': '\u21CD',
- '\u21D2': '\u21CF',
- '\u21D4': '\u21CE',
- '\u2208': '\u2209',
- '\u220B': '\u220C',
- '\u2223': '\u2224',
- '\u2225': '\u2226',
- '\u223C': '\u2241',
- '\u007E': '\u2241',
- '\u2243': '\u2244',
- '\u2245': '\u2247',
- '\u2248': '\u2249',
- '\u224D': '\u226D',
- '\u003D': '\u2260',
- '\u2261': '\u2262',
- '\u003C': '\u226E',
- '\u003E': '\u226F',
- '\u2264': '\u2270',
- '\u2265': '\u2271',
- '\u2272': '\u2274',
- '\u2273': '\u2275',
- '\u2276': '\u2278',
- '\u2277': '\u2279',
- '\u227A': '\u2280',
- '\u227B': '\u2281',
- '\u2282': '\u2284',
- '\u2283': '\u2285',
- '\u2286': '\u2288',
- '\u2287': '\u2289',
- '\u22A2': '\u22AC',
- '\u22A8': '\u22AD',
- '\u22A9': '\u22AE',
- '\u22AB': '\u22AF',
- '\u227C': '\u22E0',
- '\u227D': '\u22E1',
- '\u2291': '\u22E2',
- '\u2292': '\u22E3',
- '\u22B2': '\u22EA',
- '\u22B3': '\u22EB',
- '\u22B4': '\u22EC',
- '\u22B5': '\u22ED',
- '\u2203': '\u2204'
- });
|