Fork me on GitHub


core/mathatom~ MathAtom

An atom is an object encapsulating an elementary mathematical unit, independent of its graphical representation.

It keeps track of the content, while the dimensions, position and style are tracked by Span objects which are created by the decompose() functions.


new MathAtom(mode: string, type: string, body: string | Array, style: object): MathAtomprivate

mode : string
type : string
body : string | Array
style : object
: MathAtom   
mode : string

'display', 'command', etc...

type : string

Type can be one of:

  • mord: ordinary symbol, e.g. x, \alpha
  • textord: ordinary characters
  • mop: operators, including special functions, \sin, \sum, \cap.
  • mbin: binary operator: +, *, etc...
  • mrel: relational operator: =, \ne, etc...
  • mpunct: punctuation: ,, :, etc...
  • mopen: opening fence: (, \langle, etc...
  • mclose: closing fence: ), \rangle, etc...
  • minner: special layout cases, overlap, \left...\right

In addition to these basic types, which correspond to the TeX atom types, some atoms represent more complex compounds, including:

  • space and spacing: blank space between atoms
  • mathstyle: to change the math style used: display or text. The layout rules are different for each, the latter being more compact and intended to be incorporated with surrounding non-math text.
  • root: a group, which has no parent (only one per formula)
  • group: a simple group of atoms, for example from a {...}
  • sizing: set the size of the font used
  • rule: draw a line, for the \rule command
  • line: used by \overline and \underline commands
  • box: a border drawn around an expression and change its background color
  • overlap: display a symbol over another
  • overunder: displays an annotation above or below a symbol
  • array: a group, which has children arranged in rows. Used by environments such as matrix, cases, etc...
  • genfrac: a generalized fraction: a numerator and denominator, separated by an optional line, and surrounded by optional fences
  • surd: a surd, aka root
  • leftright: used by the \left and \right commands
  • delim: some delimiter
  • sizeddelim: a delimiter that can grow

The following types are used by the editor:

  • command indicate a command being entered. The text is displayed in blue in the editor.
  • error: indicate a command that is unknown, for example \xyzy. The text is displayed with a wavy red underline in the editor.
  • placeholder: indicate a temporary item. Placeholders are displayed as a dashed square in the editor.
  • first: a special, empty, atom put as the first atom in math lists in order to be able to position the caret before the first element. Aside from the caret, they display nothing.
body : string | MathAtom[]
superscript : MathAtom[]
subscript : MathAtom[]
numer : MathAtom[]
denom : MathAtom[]
captureSelection : boolean

if true, this atom does not let its children be selected. Used by the \enclose annotations, for example.

skipBoundary : boolean

if true, when the caret reaches the first position in this element's body, it automatically moves to the outside of the element. Conversely, when the caret reaches the position right after this element, it automatically moves to the last position inside this element.