LaTeX 到 MathML 的转换:工具、限制和方法?

LaTeX 到 MathML 的转换:工具、限制和方法?

据我所知,有两种方法可以在网络上显示 LaTeX:

  • MathJax JavaScript 库,它允许您将 LaTeX 直接嵌入 HTML 标记中,但 MathJax 会将这种 LaTeX 转换为 MathML,这是一种浏览器可以理解的 XML 格式,与 LaTeX 不同。这种方法的缺点是 MathJax 对 LaTeX 的支持有限(如果有人能概述它的一些最重要的限制,也许会很有用)。

  • 使用命令行工具将 LaTeX 转换为 MathML(我发现此工具,但我想知道是否有一个命令行工具可以在 Linux 或 Windows 上安装,或者在两者上都安装得更好)。显然,这个解决方案的限制较少。我想知道用于这种转换的最佳工具是什么,以及 MathML 在以下方面是否有任何限制:

    1. MathML 语言能够对可以用 LaTeX 语法编码的所有内容进行编码,并且

    2. 由于浏览器对 MathML 的支持不完整而可能造成的任何限制(从这一页,与 Firefox 相比,Chrome 的支持似乎有限,但这也意味着,如果我的网站用户没有使用 Firefox,那么他们将无法正确查看数学运算,这是一个真正的缺点!)。

此外,如果有任何其他方法可以在网络上显示数学,而无需借助图像和 PDF 文件,那么我很想了解它们,但我认为我提到的替代方案很可能是两种也是唯一最可行的方案。

答案1

LaTeXML提供了几种将 TeX 转换为 XML/HTML/MathML 的工具。其中一个工具是latexmlmath。例如,在命令行上,输入:

latexmlmath '\mathbf{F}_{2}=k \frac{q_{1} q_{2} \hat{\mathbf{r}}_{21}}{r_{21}^{2}}'

输出如下:

<?xml version="1.0" encoding="UTF-8"?>
<math xmlns="http://www.w3.org/1998/Math/MathML" alttext="\mathbf{F}_{2}=k\frac{q_{1}q_{2}\hat{\mathbf{r}}_{21}}{r_{21}^{2}}" display="block">
  <mrow>
    <msub>
      <mi>

答案2

我很惊讶没有人提到潘多克,这是一个非常适合转换LaTeXhtml文档的工具。

使用关注markdown文件(使用LaTeX语法):

% Pandoc math demos

$a^2 + b^2 = c^2$

$v(t) = v_0 + \frac{1}{2}at^2$

$\gamma = \frac{1}{\sqrt{1 - v^2/c^2}}$  

$\exists x \forall y (Rxy \equiv Ryx)$

$p \wedge q \models p$

$\Box\diamond p\equiv\diamond p$

$\int_{0}^{1} x dx = \left[ \frac{1}{2}x^2 \right]_{0}^{1} = \frac{1}{2}$

$e^x = \sum_{n=0}^\infty \frac{x^n}{n!} = \lim_{n\rightarrow\infty} (1+x/n)^n$

根据选项,您可以获得:

pandoc math.text -s -o mathDefault.html=>http://pandoc.org/demo/mathDefault.html

pandoc math.text -s --mathml -o mathMathML.html=>http://pandoc.org/demo/mathMathML.html

pandoc math.text -s --webtex -o mathWebTeX.html=>http://pandoc.org/demo/mathWebTeX.html

pandoc math.text -s --mathjax -o mathMathJax.html=>http://pandoc.org/demo/mathMathJax.html

pandoc math.text -s --katex -o mathKaTeX.html=>https://pandoc.org/demo/mathKaTeX.html

第一个选项可能看起来很有限,但由于它只使用unicode,所以它确实是可移植和可靠的。

答案3

tex4ht可用于将 LaTeX 导出为 MathML。它的优点是它支持自定义命令,无论是来自用户还是来自非标准包,开箱即用。它还可以将整个 LaTeX 文档转换为包含 MathML 的 HTML。

MathML 的缺点是浏览器支持性差,几乎不存在(除了 Firefox,但并不完美)。幸运的是,可以使用 Mathjax 在不支持的浏览器中添加 MathML 支持。

要使用 MathML 和 MathJax 进行渲染,请使用以下调用make4ht

make4ht  filename.tex "mathml,mathjax"

答案4

我还要提一下数学,它提供了一个 Haskell 库、一个命令行程序和一个 Web 服务器(演示在这里)。这可以在 TeX math、MathML、OMML(Microsoft Word 中使用的方程式格式)和 roff eqn 之间进行转换。(该库设计用于 pandoc,但可以独立使用。)

例子:

% texmath -f tex -t mathml
\mathbf{F}_{2}=k \frac{q_{1} q_{2} \hat{\mathbf{r}}_{21}}{r_{21}^{2}}
<math display="block" xmlns="http://www.w3.org/1998/Math/MathML">
  <mrow>
    <msub>
      <mstyle mathvariant="bold">
        <mi>

相关内容