我正在编写一个 Latex 到文本转换器,即它接受 Latex 代码的输入并输出可读文本,然后计算机会自动朗读。当两个部分连接在一起时,它就是一个 Latex 到语音的程序。示例如下:
"5m and m is a unit, $m\cdot f(x)\cdot sin(90^\circ)=f'(x)$"
转换为 ->"5 meter and meter is a unit, m times f of x times sine of 90 degrees equals f dash of x"
我已经在这个项目上工作了一段时间,现在它几乎可以转换所有的 Latex 公式,但代码非常临时,我的意思是当我开始这个项目时,它是如此全面,我认为开始的唯一方法就是不要过度思考一切。现在我对项目包含的问题有了更深入的了解,我想重写一些基本功能。现在程序不会像典型的编译器那样扫描和创建抽象语法树,我正在考虑复制经典的编译器方法是否是一种好方法。我读过堆栈交换Latex 编译器仅仅基于宏,也许从 Latex 编译器中寻找灵感更明智?您认为最好的方法是什么?
答案1
几年前,我也面临过和你一样的挑战。在这方面,我聚苯胺一个基于 Python 的工具,用于为一些基本的 LaTeX 公式构建一个非常基本的词法分析器和解析器。最终结果虽然粗糙且非常基础,但很有用。如果你想查看它,请点击此处盲文。更具体地说是在 blindtex/latex2ast 文件中。我必须警告你,如果你想测试它,输出是西班牙语;尽管我的糟糕评论是英文的。
正如评论中指出的那样,最好的方向是看看 Raman 的作品。我这样做了,但作为一名业余程序员,学习 Lisp 和 E-Macs 以便能够更详细地探索它超出了我的能力范围。
我希望这篇文章有用,如果您有任何疑问,可以联系我了解更多详细信息。