答案1
请参阅本文(我想我是从这里学到的)这个答案):
- 莱因霍尔德·赫克曼和莱因哈德·威廉,TeX 公式布局的功能描述, 函数式编程杂志,第 7 卷,第 5 期,第 451–485 页,1997 年 9 月
抽象的:
尽管 TeX 数学公式布局算法的结果质量令人信服,但其原始描述却难以理解,因为它以命令式程序的形式呈现,具有复杂的控制流和对表示公式的数据结构的破坏性操作。在本文中,我们用函数式语言 SML 重新实现了 TeX 的公式布局算法,从而提供了从单片 TeX 系统中提取的更易读的算法描述。
审查(不确定这出自哪里或是谁写的,但我认为这可能是该期刊的一个特点?):
TeX 排版系统基本上由两部分组成:宏语言和一些基本的排版功能,例如将框垂直或水平地并排放置。然而,排版功能的真正文档是 TeXbook 和 TeX 源代码。
这篇论文确实很受欢迎。TeX 使用的基本排版功能应该变得更加清晰,并且应该可以通过适当的声明性语言访问,从而允许以声明性方式排版或生成文档。
随着人们越来越深入地理解思想,它们会以越来越声明性的方式表达出来。本文所做的工作展示了如何对一个用非常难读的形式编写的非常有用的算法进行这样的表达。对于其他常用的算法也应该进行这样的工作。
本文所做的工作使人们认识到需要更通用的方法来布局二维图表,并通过美学或其他约束来定义原子组件的实际位置,以形成更复杂的图表。
在论文中,在解释了为什么他们发现 TeX 程序源代码难以阅读之后,他们提取并重新实现了相关部分:
公式布局算法的主要任务是将公式术语(一种公式的抽象语法)转换为框术语,描述最终布局中公式成分的大小和相对位置。
这就是实现的。读完论文后,你可以找到他们的完整代码(58 个.sml
文件中 2312 行),网址为论文中描述的位置并且镜像别处。请注意(正如论文所述)它并未实现 TeX 中的所有内容:甚至平方根也未实现。
否则,你可以看看更新的(并且仍然维护的)仅实现 TeX 数学部分的程序,例如MathJax(来源),卡泰克斯(来源),iosMath或其港口Android数学。
答案2
发帖后,我发现MathJAXJavaScript 库(除其他功能外)用于在 MathML 中渲染 TeX 方程式。我还没有机会详细研究,但它处理了align
我手头的一些问题。解析 TeX 方程的代码和我见过的语法最接近了。
如果你安装本地副本,测试/示例-动态-2.html将呈现您粘贴到文本框中的方程式。