MathML 和 TeX 的关系

MathML 和 TeX 的关系

如果有的话,Tex 和 MathML 之间有什么关系?

我对表示数学信息很感兴趣,但 TeX 会成为未来的遗留格式吗?是否有尝试将一种格式自动转换为另一种格式?MathML 显然会在不久的将来取代 TeX 吗?本质上,我需要一种数学标记语言,我正在编写一个数学编辑器,我可以自由选择其中一种(或两种,但据我所知,这意味着两倍的工作量)以适合我。理论上 TeX 比 MathML 更强大吗?我的意思是,在底层标记功能方面,它可以表示的事物类别方面更完整?

Meta this - 我明白这个问题可能会引起反感,因为每当有两种不同的技术具有相同的目标时,它们有时会被视为“竞争对手”或“竞争者”,并有各自的“阵营”。请知道我在这个领域完全是新手,我绝不会评判这两种技术的价值。我真的只是想了解从业者如何理解他们自己的世界。

答案1

MathML 非常冗长,手动编写起来很麻烦,但如果您的代码是自动生成的,那就没有问题了。对于程序来说,它很容易解析,因为它是 XML。

TeX 数学代码是为人类编写而设计的,因此代码要短得多。我无法回答你的问题,一种格式是否会取代另一种格式。正如我提到的,它们有不同的用途。

是否有人知道尝试自动将一个转换为另一个?

我不能代表 LaTeX 说话,但在 ConTeXt 中你可以直接输入 MathML。有关的信息ConTeXt 中的 MathML维基百科——MathML。这里有一个取自 ConTeXt 手册的例子(感谢 Hans Hagen):

\usemodule[mathml]
\starttext
\xmlprocessdata{}{
<?xml version="1.0" encoding="UTF-8"?>
<math xmlns="http://www.w3c.org/mathml" version="2.0">
  <apply>
    <eq/>
    <apply>
      <diff/>
      <bvar>
        <ci> x </ci>
      </bvar>
      <apply>
        <root/>
        <ci> u </ci>
      </apply>
    </apply>
    <apply>
      <times/>
      <apply>
        <divide/>
        <cn> 1 </cn>
        <apply>
          <times/>
          <cn> 2 </cn>
          <apply>
            <root/>
            <ci> u </ci>
          </apply>
        </apply>
      </apply>
      <apply>
        <diff/>
        <bvar>
          <ci> x </ci>
        </bvar>
        <ci> u </ci>
      </apply>
    </apply>
  </apply>
</math>
}{}
\stoptext

输出: 输出

对于 TeX 到 MathML 的转换,您可以使用 XML 导出,请参阅ConTeXt 维基百科 - epub和我的回答针对这个问题将 ConTeXt 文档转换为 HTML

答案2

经原作者许可,我想引用一篇关于 LaTeX 和 MathML 的文章访问2科学。该网站的目的是提供“关于科学、技术、工程和数学 (STEM) 无障碍的文章和链接。其目的是为有阅读障碍的人及其朋友、父母和老师提供实用信息。”。以一致和标准化的方式表示数学对于该网站服务的社区非常重要。本文最初是发给盲目数学邮件列表以响应关于 LaTeX 和 MathML 的作用的类似查询。


这里似乎对 LaTeX 和 MathML 有一些混淆。如果可以的话,我想帮忙理清这个问题。混淆之处是它们的角色。

LaTeX 是一种输入格式。它是我们数学家撰写文章、书籍、网页以及涉及数学的任何其他内容的方式。(通常也是不涉及数学的任何东西。)它不是设计用来按原样阅读的。它旨在被处理成合适的输出格式,然后阅读。

如果有人认为他们可以阅读 LaTeX 并理解其中的内容,那么我可以发布一些示例文档,这些文档很快就会打消你的这种想法。当然,非常简单的 LaTeX 也可以阅读。类似的东西x^2 + y^2 = z^2相当容易理解,但尝试一些更复杂的东西,例如

\sum_{m = 2 \over m \text{prime}}^{\infty} \frac{1}{m^s}

你会明白我的意思。与可以写的内容相比,这相当简单。当你意识到 LaTeX(或者更确切地说,TeX)是完全可编程的,你就会发现你可以在 LaTeX 文档中找到任何东西。

MathML 是一种输出格式。它不是为直接书写而设计的,而是为阅读而设计的。当然,需要一个合适的渲染器:为视力正常的人准备的浏览器,以及为那些想大声朗读数学知识的人准备的 MathPlayer 之类的东西,但任何输出格式都是如此。由于它是一种开放标准,因此设计一个程序将 MathML 渲染到任何所需的媒体上是一项合理的任务。

虽然并非总是那么简单,但将 LaTeX 转换为 MathML 是可能的。之所以并非总是那么简单,原因之一是 TeX(LaTeX 的底层程序)通常需要了解其输出的信息。正常运行时,TeX 可以完全控制该过程,因此可以准确知道输出将如何显示。生成 MathML(或 XHTML)时,它无法准确知道输出将如何显示。但这些是通常可以避免的技术难题。

主要的困难在于大多数网站都不采用这种方式。他们将 LaTeX 数学公式转换为图形,然后显示出来,原始 LaTeX 则作为替代文本。由于其生成方式,LaTeX 通常非常简单(没有复杂的宏),因此可能只需阅读替代文本即可。

因此,如果你想阅读数学,请查找 MathML。如果你想写数学,请学习 LaTeX(或其他 TeX 变体)。


现在,回答一下你们的一些问题。

MathML 在不久的将来显然会取代 TeX 吗?

不是,因为它们的作用不同。我使用 LaTeX 来生成 MathML 文档。我的工作流程中离不开 LaTeX 或 MathML。

从理论上讲,TeX 是否比 MathML 更强大?我的意思是,就底层标记功能以及它所能表示的事物类别而言,TeX 是否更完整?

是的。TeX 是一种编程语言。它的优势之一是可以进行定制和扩展。MathML 是一种标记语言。因此,在扩展和定制方面受到很大限制。

Meta this-我明白这个问题可能会引起反感,因为每当有两种不同的技术具有相同的目标时,它们有时会被视为“竞争对手”或“竞争者”,并有各自的“阵营”。请知道我在这个领域完全是新手,我绝不会评判这两种技术的价值。我真的只是想了解从业者如何理解他们自己的世界。

我引用的文章的重点是这些技术绝不是竞争对手。如果你想在这里制造竞争,最好是 PDF 和 MathML,或者 TeX 和……好吧,实际上没有任何东西能像 TeX 一样。

为了回答你的真实的问题:你应该使用哪种格式,答案取决于你要用它做什么。编辑器的最终输出是什么?你是要通过 TeX 运行输出来生成漂亮的文档,还是最终将其放在网页上?用户是否会看到存储的文档?文档编写完成后,你允许用户拥有多大的灵活性?

我的直觉是,如果你不知道,你应该选择 MathML。我的理由是,由于它是一种标记格式和 Web 标准,因此在程序中使用它会更容易,而且更容易确保你确切知道编辑器将针对给定的输入生成什么。

答案3

显然,LaTeX 和 MathML 的设计者是死对头,他们从不互相交流(或者与 OpenMath 的设计者交流)。[有人要求我在评论中指出这句话是轻率的:LaTeX2e、MathML、OpenMath 的设计者和这个答案之间存在重叠


Tex 和 MathML 无法真正进行比较,因为 TeX 本质上是一种排版程序,而 MathML 本质上只是一种输入语言。但是 TeX 带有某些输入约定,而 MathML 输入表达式通常最终会被排版,因此两者存在重叠。

请注意,MathML 天生以 Unicode 为中心:几乎所有字符都通过 Unicode 访问。TeX 对 Unicode 的感知程度在很大程度上取决于您使用的 TeX 引擎。另一个区别是,TeX 面向作者完全了解所使用的字体和页面大小等的情况,因此,如果需要,可以添加微调(尽管许多期刊提交流程都受到这些“调整”的影响:-)另一方面,MathML 的设计可能更多地受到典型浏览器场景的影响,其中作者对使用的字体的控制非常有限,并且几乎无法控制页面大小。

您也可以看看我在相关问题中的回答:

为什么 LaTeX 被用作数学方程式的事实标准?


从一个平台转换到另一个平台需要大量的软件。

在方向 (La)TeX → MathML

  • LaTeXML(NIST)(我个人目前最喜欢的,所有 MathML 示例直连光纤是通过该软件制作的)

  • tex4ht(也非常好,非常可定制,但从历史上看有点难以控制)

  • 艾泰克斯我没有直接使用过这个,但是我使用过另一种流行的转换器。

  • tex 输入解析器数学JaX(可能是将数学放到网络上最流行的方式,该 stackexchange 网络中的许多姊妹网站都使用这种方式。

在方向上 MathML → TeX

几个 XSLT 样式表,我只想提到我的

  • pmml2tex 这用于生成 MathML 规范的 HTML 和 PDF 版本中的许多示例图像和 TeX 渲染。

答案4

这里有很多好的答案,但在我看来,有一点被忽视了:那就是 MathML 能够使用数学的语义表示,内容数学,除了排版数学布局之外。LaTex 不会这样做。

更详细地描述了这一点MathML 维基举一个非常简单的例子,假设你有代码

y = mx + c

在 LaTex 中。这会告诉您如何呈现输出,但没有任何内容告诉您m乘以x。然而,如果您使用内容 MathML,则此“隐式”乘法在语法树中表示

<math>
    <apply>
        <plus/>
        <apply>
            <times/>
            <ci>m</ci>
            <ci>x</ci>
        </apply>
        <ci>c</ci>
    </apply>
</math>

它还包含了评估方程的优先顺序。

从这种“语义”表示转换为 LaTex 或(表示)MathML 很简单,但反过来却很模糊,而且是一个困难得多的问题。在这方面,MathML 的用途与 Tex 不同。

相关内容