A pull parser for mathml
rendering.
This project is inspired Katex
, Temml
, MathJax
, etc. It is in its very early
stages of development, and works for a small subset of what Katex
and the likes support.
It is not production ready and is mostly untested.
Follow modern LaTeX principles:
Ideally, this library should be mostly compatible with latex2e
and amsmath
. The term
mostly is used here to refer to the mathematical commands exposed by these packages; typesetting prose
is out of scope for this crate. Another consequence of this goal is that some plain-TeX commands that
are deprecated (e.g., \atop
, \over
, etc.) are not supported by this crate.
Closely resembling conventional LaTeX:
It is a goal for this crate to make efforts in generating aesthetic equations. This means that
the mathml
output may be tweaked to make it resemble what pdflatex
, Katex
or MathJax
outputs.
Sources used during the development of this crate. Any reference in code comments refer to these links specifically.
- TeXBook
- latex2e unofficial Reference
- amsmath docs
- Comprehensive symbol list
- Unicode-math symbol list
- Unicode-math package page
- Font tester
- Math Variant Selection
- All the things temml and katex test
- Cargo Mutants
- Errors
- Changing
catcode
s of characters \if
* macros^^_
&^^[0-9a-f][0-9a-f]
as a way of specifying characters- Redefining active characters This library currently only supports default active characters, and hence does not allow for the definition of active characters.
- Implicit characters as whitespace tokens
As in the TeXbook p. 265, Knuth specifies that a
space token
stands for an explicit or implicit space. This library does not currently support implicit space tokens when aspace token
is required. - Use of internal values and parameters, such as registers, and things like
\tolerance
(See TeXbook p. 267 for a complete definition) \magnification
parameter &true
sizes- Case insensitive keywords matching.
According to TeXbook p. 265, keywords such as
pt
,em
,true
, etc. are matched case insensitively (e.g.,pT
would matchpt
). This library does not support this behavior, as keywords must match exactly (i.e.,em
,true
,pt
, etc.). fil
units TeX allows the use offil
(ll...) units, this library does not.\outer
specifier on definitions\csname
&\endcsname
\begingroup
and{
, and\endgroup
and}
behave the same way; that is to say,\begingroup
and\endgroup
do not have the property of "keeping the same mode" (TeXbook p. 275).- All vertical list manipulation commands.
Things like
\vskip
,\vfil
,\moveleft
etc. \hfil
,\hfill
\eqno
,\leqno
, and equation numbers in general.\over
,\atop
, and all deprecated "fraction like" control sequences.
Splitting groupings within user defined macros. E.g.,
\def\abc{\left(}
\abc 4 \right)
This currently does not work.
- Macros preamble
- Wrap
- Left equation numbers
colorIsTextColor
ThrowOnError
maxSize
trust
\toggle
groups