#latex #mathml #pull-parser #parser

pulldown-latex

将 LaTeX 方程式转换为 MathML 的拉式解析器

6 个版本 (破坏性更新)

0.5.1 2024 年 8 月 8 日
0.5.0 2024 年 8 月 2 日
0.4.0 2024 年 8 月 1 日
0.3.0 2024 年 7 月 21 日
0.1.0 2024 年 5 月 1 日

#542解析器实现

Download history 162/week @ 2024-04-27 7/week @ 2024-05-04 8/week @ 2024-05-18 2/week @ 2024-05-25 1/week @ 2024-06-01 224/week @ 2024-07-20 192/week @ 2024-07-27 159/week @ 2024-08-03 11/week @ 2024-08-10

每月 586 次下载

MIT 许可证

655KB
5.5K SLoC

包含 (WOFF 字体,390KB) font/latinmodern-math.woff2,(WOFF 字体,47KB) font/lmroman12-bold.woff2,(WOFF 字体,49KB) font/lmroman12-italic.woff2,(WOFF 字体,46KB) font/lmroman12-regular.woff2

pulldown-latex

用于 $\LaTeX$ 解析和 mathml 渲染的拉式解析器。

本项目受 KaTeXTemmlMathJax 等项目启发,正在积极维护,目前 95% 的功能与 KaTeX 等类似项目支持的功能相符,并且经过最小化测试。该软件应该适用于大多数用例。然而,不建议用于大规模生产环境,因为需要更健壮的测试。

目标

遵循现代 LaTeX 原则:理想情况下,此库应主要与 latex2eamsmath 兼容。这里的“主要”一词指的是这些包暴露的数学命令;排版文本超出了此crate的范围。此目标的另一个后果是,一些已废弃的 plain-TeX 命令(例如,\atop\over 等)不受此crate支持。

紧密模仿传统 LaTeX:此crate的目标是努力生成美观的方程式。这意味着 mathml 输出可能经过调整,以使其类似于 pdflatexKaTeXMathJax 的输出。

开发说明

测试

  • 所有 temmlkatex 测试的内容
  • Cargo Mutants
  • 错误

TODO's/已知错误

稍后:

  • 关于状态变化和解析器满足的不变性的更好的文档。
  • Dimension 值过大
  • 方括号矩阵的左右间距不等。
  • 斜体数字不是斜体,因为它们不在 unicode 中。
  • \bar 产生很小的横线,应该更大。
  • 颜色 API 重构
  • \sideset

不支持的 plain-TeX & LaTeX 行为

  • 更改字符的 catcode
  • \if* 宏
  • ^^_ & ^^[0-9a-f][0-9a-f] 作为指定字符的方式
  • 重新定义活动字符 该库目前仅支持默认活动字符,因此不允许定义活动字符。
  • 隐式字符作为空白标记 正如《TeX入门》第265页中Knuth所规定,一个 space token 表示一个 显式隐式 空格。该库目前不支持当需要 space token 时使用 隐式 空格标记。
  • 使用内部值和参数,如寄存器,以及类似 \tolerance 的事物(参见《TeX入门》第267页的完整定义)
  • \magnification 参数 & true 大小
  • 不区分大小写的关键词匹配。根据《TeX入门》第265页,关键词如 ptemtrue 等,是不区分大小写的(例如,pT 会匹配 pt)。该库不支持此行为,因为关键词必须完全匹配(即,emtruept 等)。
  • fil 单位 TeX 允许使用 fil(ll...) 单位,该库不支持。
  • 定义中的 \outer 指示符
  • \edef,我们不支持宏的预展开。
  • \csname & \endcsname
  • \begingroup{,以及 \endgroup} 的行为相同;也就是说,\begingroup\endgroup 没有保持“相同模式”的特性(见《TeX入门》第275页)。
  • 所有垂直列表操作命令。例如 \vskip\vfil\moveleft 等。
  • \hfil\hfill
  • \over\atop 以及所有已弃用的“分数样”控制序列。

不支持的 KaTeX/Temml 选项

  • 宏前缀
  • 包装
  • 左方程编号
  • colorIsTextColor
  • ThrowOnError
  • maxSize
  • trust
  • \toggle

杂项参考 & 工具

在开发此包期间使用的源。代码注释中的任何引用都专门指这些链接。

依赖项