将MathML转换为Latex

时间:2014-11-28 22:45:38

标签: xslt latex transformation mathml

受到this帖子的启发,我尝试转换MathML示例,如下所示:

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

使用xsltproc到Latex。首先,我从here下载了XSLT文件。现在,对于那些不会说MathML的人来说,上面的例子是一个分数:1/2

在我解压缩xslt文件并创建MathML文件(input.mml)后,我有以下文件:

$ ls
README  cmarkup.xsl  entities.xsl  glayout.xsl  input.mml  mmltex.xsl  scripts.xsl  tables.xsl  tokens.xsl

所以,当我做的时候

$> xsltproc mmltex.xsl input.mml




                    x


                    y

哪个不正确,它不是乳胶部分。有什么建议我可能在这里做错了吗?

2 个答案:

答案 0 :(得分:5)

仅将文本内容作为转换的结果通常表示样式表中没有应用任何模板。然后,内置模板进入并跳过除文本节点之外的所有内容,这些节点将被发送到输出。

查看您使用的样式表,样式表假定MathML输入位于名称空间中。例如,查看我从 mmmltext.xsl 样式表中获取的模板匹配:

match="m:math[not(@mode) or @mode='inline'][not(@display)] | m:math[@display='inline']">

正如您所看到的,元素带有m:的前缀,更有趣的是,m:被声明为

xmlns:m="http://www.w3.org/1998/Math/MathML"

另一方面,您显示的输入文件不在任何命名空间中。请尝试以下输入文件:

<math xmlns="http://www.w3.org/1998/Math/MathML">
  <mrow>
    <mfrac>
      <mrow><mi>x</mi></mrow>
      <mrow><mi>y</mi></mrow>
    </mfrac>
  </mrow>
</math>

在上面的XML文档中,我在math元素上声明了默认命名空间。它的所有子元素也都采用这个命名空间。

然后,输出包含:

\frac{x}{y}

作为W3C page says

  

[此命名空间]的典型用法是:

     

<math xmlns="http://www.w3.org/1998/Math/MathML">

答案 1 :(得分:1)

我正在寻找一种快速的在线方法。

下面是指向npm软件包的链接,该软件包将MathML转换为LateX。 https://npm.runkit.com/mathml-to-latex

只需复制,粘贴并运行