Crates.io | pulldown-latex |
lib.rs | pulldown-latex |
version | 0.1.0 |
source | src |
created_at | 2024-05-01 00:26:10.246361 |
updated_at | 2024-05-01 00:26:10.246361 |
description | Pull parser to convert LaTeX equations to MathML |
homepage | |
repository | https://github.com/Carlosted/pulldown-latex |
max_upload_size | |
id | 1225664 |
size | 830,872 |
A pull parser for $\LaTeX$ parsing and 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.
\limits
, \nolimits
.\relax
\char
\sideset
command (using mmultiscripts
?)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 a space 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 match pt
). This library does not support this behavior, as keywords must match exactly (i.e.,
em
, true
, pt
, etc.).
fil
units
TeX allows the use of fil
(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.
colorIsTextColor
ThrowOnError
maxSize
trust
\toggle
groups