# feat: parse equations into a tree that renders the MathML OneNote exports · clo/snowbound

[View on GitCafe](https://git.cafe/clo/snowbound/commit/db49720208e16a932d4c13ebe1172ab872638ac7)

Repository: [clo/snowbound](https://git.cafe/clo/snowbound)

Visibility: public

Requested revision: db49720208e16a932d4c13ebe1172ab872638ac7

Requested commit: db49720208e16a932d4c13ebe1172ab872638ac7

Commit: db49720208e16a932d4c13ebe1172ab872638ac7

Tree: db0d588f0b60bfdbc452233f7aca5c66ea8ab638

Author: clover caruso

Committer: clover caruso

## Message

```
feat: parse equations into a tree that renders the MathML OneNote exports

An equation is stored as linear text where U+FDD0 opens an inline object,
U+FDEE separates its arguments and U+FDEF closes it, with the object's kind
(the text object model's OBJECTTYPE: 31 superscript, 16 fraction, …),
argument count and building symbols on the text-run data of the opening
character. The reader now carries that data on each run's format as
Format::math_object, and page::Math parses a paragraph into a tree of
identifiers, numbers, operators and objects and renders it as MathML in the
form OneNote's own export uses (mml: prefix, one mi per letter, math-italic
Latin letters plain, other alphabets as stored, single-node arguments bare
and multi-node ones in mrow).

corpus/m6/native-math-01 is the oracle: its three equation-editor
expressions render byte for byte to the MathML the COM read exported
(superscripts, a fraction and inline Greek). Subscripts, radicals, limits
and brackets follow the OBJECTTYPE meaning without a native check yet.

Assisted-by: claude-fable-5.1

```

## Parents

- [237d4668ad21d8c6275da60e59bc4acb066fb853](https://git.cafe/clo/snowbound/commit/237d4668ad21d8c6275da60e59bc4acb066fb853?format=markdown)

[Source at this commit](https://git.cafe/clo/snowbound/tree/db49720208e16a932d4c13ebe1172ab872638ac7?format=markdown)
