【问题标题】:MathML to LaTeX conversionMathML 到 LaTeX 的转换
【发布时间】:2011-09-29 02:15:14
【问题描述】:

我正在尝试弄清楚如何转换数学方程式的 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,我能够使用this Java library 来做我想做的事。然而,它并不完美,但我可以轻松地对其进行修改并使其正常工作。但是,我仍然希望在 JavaScript 中看到这一点。那么有没有像这样用 JavaScript 编写的工具呢?如果没有,我会自己翻译。

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

【问题讨论】:

  • 如果您曾经在 JavaScript 中实现过这个,请务必在此处分享实现的链接。
  • @Mikko... 可以,我可能会开源它

标签: java javascript latex xml-parsing mathml


【解决方案1】:

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

【讨论】:

  • 这很酷。唯一的问题是,它是一个桌面应用程序,我需要一种基于 Web 的方式来执行此操作。你知道这个来源是否可用? +1
  • 是的,来源可用。转到下载链接,在底部有一个指向源代码的链接。
  • 嗯...甜!这应该可以解决问题。我将尝试在 JavaScript 中实现它,因为我需要在网络上使用它。
【解决方案2】:

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

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

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

【讨论】:

  • 这些没有错。我只是想弄清楚如何构造 LaTeX 字符串,所以如果我找不到一个库来为我做这件事,我可能会求助于使用 DOM 解析器(或 SAX,还没有决定哪个更对我的情况有利)。单独的解析器不能构建 LaTeX 字符串吗?
  • @Hristo:很明显,你用它们来写你的程序,但这是一个非常简单的翻译。
【解决方案3】:

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

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

saxon 的命令行用法:

saxon -o output.tex input.mml xsltml_2.1.2/mmltex.xsl

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-27
    • 1970-01-01
    相关资源
    最近更新 更多