11

我试图弄清楚如何转换数学方程的 MathML 表示并将其转换为该数学方程的 LaTeX 表示。所以例如...

<math>
  <mrow>
    <mfrac>
      <mrow><mi>x</mi></mrow>
      <mrow><mi>y</mi></mrow>
    </mfrac>
  </mrow>
</math>

...是一个简单的堆叠分数,它的 LaTeX 表示将是...

\frac{x}{y}

我保证 MathML 没有表示性标记,因为我正在动态构建 MathML 字符串并且我控制 MathML 元素的插入方式/位置;MathML 字符串只是数学方程的纯结构。

所以我的问题是,是否有任何 Java/JavaScript 库可以采用 MathML 输入字符串(如上面的那个)并生成相应的 LaTeX 字符串?我宁愿不必自己编写这个解析器。如果不是 Java/JavaScript,是否有任何库可以做到这一点?

如果没有,关于如何解决编写我自己的解析器这个问题的任何建议?从哪里开始,要考虑的事情,资源等......?

更新

感谢Optimal Cynic,我能够使用这个 Java 库来做我想做的事。然而,它并不完美,但我可以轻松地对其进行修改并使其正常工作。但是,我仍然希望在 JavaScript 中看到这一点。那么有没有像这样用 JavaScript 编写的工具呢?如果没有,我会求助于自己翻译。

注意:我正在使用MathJax在页面上呈现 MathML,但 MathJax 目前不支持从 MathML 到 LaTeX 的方法。它只能从 LaTeX 转到 MathML。

4

3 回答 3

5

试试http://www.tilman.de/programme/mathparser/anleitung_en.html - 它是用 Java 编写的,源代码可用。

于 2011-07-05T20:59:17.187 回答
3

XSLT、SAX 解析器或 DOM 解析器有什么问题?

所有主要语言(以及几乎所有其他语言)都存在 SAX 和 DOM 解析器的绑定。我会推荐使用函数式语言解析 DOM,但口味不同。

XSLT 是一种设计用于处理 XML 的函数式语言。

于 2011-07-05T21:09:38.520 回答
2

我有类似的问题,并且问题的 url 中提供的 mathparser 根本不适合我。

我通过使用带有Saxon-HE的 XSLT MathML将 MathML 转换为 LaTeX,但由于 XSLT MathML 库是纯 XSLT,因此任何 XSLT 转换工具都应该处理它。输出并不总是完美的,但它给了我比在 stackexchange 网络某处提到的web-xslt更好的结果。

撒克逊人的命令行用法:

saxon -o output.tex input.mml xsltml_2.1.2/mmltex.xsl
于 2014-01-14T15:48:00.143 回答