pub enum Node<'arena> {
Show 31 variants
Number(&'arena str),
IdentifierChar(SuperChar, LetterAttr),
IdentifierStr(&'arena str),
Operator {
op: MathMLOperator,
attrs: OpAttrs,
size: Option<Size>,
left: Option<MathSpacing>,
right: Option<MathSpacing>,
},
PseudoOp {
attrs: OpAttrs,
left: Option<MathSpacing>,
right: Option<MathSpacing>,
name: &'arena str,
},
Space(Length),
Sub {
target: &'arena Node<'arena>,
symbol: &'arena Node<'arena>,
},
Sup {
target: &'arena Node<'arena>,
symbol: &'arena Node<'arena>,
},
SubSup {
target: &'arena Node<'arena>,
sub: &'arena Node<'arena>,
sup: &'arena Node<'arena>,
},
OverAccent(MathMLOperator, OpAttrs, &'arena Node<'arena>),
UnderAccent(MathMLOperator, OpAttrs, &'arena Node<'arena>),
Over {
symbol: &'arena Node<'arena>,
target: &'arena Node<'arena>,
},
Under {
symbol: &'arena Node<'arena>,
target: &'arena Node<'arena>,
},
UnderOver {
target: &'arena Node<'arena>,
under: &'arena Node<'arena>,
over: &'arena Node<'arena>,
},
Sqrt(&'arena Node<'arena>),
Root(&'arena Node<'arena>, &'arena Node<'arena>),
Frac {
num: &'arena Node<'arena>,
denom: &'arena Node<'arena>,
lt_value: LengthValue,
lt_unit: LengthUnit,
attr: Option<FracAttr>,
},
Row {
nodes: &'arena [&'arena Node<'arena>],
attrs: RowAttrs,
},
Padded {
node: &'arena Node<'arena>,
width_0: bool,
height_0: bool,
},
Phantom {
node: &'arena Node<'arena>,
},
Text(Option<HtmlTextStyle>, Option<HtmlTextSize>, &'arena str),
AHref(&'arena AHref<'arena>),
Table {
align: Alignment,
style: Option<Style>,
content: &'arena [&'arena Node<'arena>],
},
EquationArray {
align: Alignment,
last_row_info: Option<&'arena RowLabelInfo<'arena>>,
content: &'arena [&'arena Node<'arena>],
},
MultLine {
num_rows: NonZeroU16,
last_row_info: Option<&'arena RowLabelInfo<'arena>>,
content: &'arena [&'arena Node<'arena>],
},
Array {
style: Option<Style>,
array_spec: &'arena ArraySpec<'arena>,
content: &'arena [&'arena Node<'arena>],
},
ColumnSeparator,
RowSeparator {
tag: Option<NonZeroU16>,
link_target: Option<&'arena str>,
},
Enclose {
content: &'arena Node<'arena>,
notation: Notation,
},
Multiscripts {
base: &'arena Node<'arena>,
pre: &'arena &'arena [MultiscriptPair<'arena>],
post: &'arena &'arena [MultiscriptPair<'arena>],
},
UnknownCommand(&'arena str),
}Expand description
AST node
Variants§
Number(&'arena str)
<mn>...</mn>
IdentifierChar(SuperChar, LetterAttr)
<mi>...</mi> for a SuperChar.
IdentifierStr(&'arena str)
<mi>...</mi> for a string.
Operator
<mo>...</mo> for a single character.
PseudoOp
<mo>...</mo> for a string.
Space(Length)
<mspace width="..."/>
Sub
<msub>...</msub>
Sup
<msup>...</msup>
SubSup
<msubsup>...</msubsup>
OverAccent(MathMLOperator, OpAttrs, &'arena Node<'arena>)
<mover accent="true">...</mover>
UnderAccent(MathMLOperator, OpAttrs, &'arena Node<'arena>)
<munder accentunder="true">...</munder>
Over
<mover>...</mover>
Under
<munder>...</munder>
UnderOver
<munderover>...</munderover>
Sqrt(&'arena Node<'arena>)
<msqrt>...</msqrt>
Root(&'arena Node<'arena>, &'arena Node<'arena>)
<mroot>...</mroot>
Frac
<mfrac>...</mfrac>
Row
<mrow>...</mrow>
Padded
<mpadded>...</mpadded>
Phantom
<mphantom>...</mphantom>
Text(Option<HtmlTextStyle>, Option<HtmlTextSize>, &'arena str)
<mtext>...</mtext>.
The str gets HTML-escaped.
AHref(&'arena AHref<'arena>)
<mtext><a href="...">...</mtext>.
The link and text get HTML-escaped.
Table
<mtable>...</mtable> for matrices and similar constructs
EquationArray
<mtable>...</mtable> for equation arrays like the align environment
Fields
last_row_info: Option<&'arena RowLabelInfo<'arena>>MultLine
<mtable>...</mtable> for the multline environment
Array
<mtable>...</mtable> for arrays
Fields
ColumnSeparator
<mtd>...</mtd>
RowSeparator
<mtr>...</mtr>
Enclose
<menclose>...</menclose>
Multiscripts
<mmultiscripts>...</mmultiscripts>
Double pointer indirection is to keep Node’s size down.
Ideally we would use some sort of thinslice type
Fields
pre: &'arena &'arena [MultiscriptPair<'arena>]post: &'arena &'arena [MultiscriptPair<'arena>]UnknownCommand(&'arena str)
This node is used for displaying unknown commands.
We are not using <merror> here because it’s rendered with a red border and a yellow
background, which is not desirable for our use case. We’ll just render it as <mtext>
with a custom style.