【问题标题】:Unable to render MathML content in Google Chrome无法在 Google Chrome 中呈现 MathML 内容
【发布时间】:2015-06-23 07:14:24
【问题描述】:

我在 HTML 页面中有一些 MathML 内容,该页面需要通过 HTTPS 连接在 Google Chrome 中呈现。所以我尝试按照下面链接中所说的方法

Displaying Mathml equations

但它不起作用(我在我的 HTML 页面中复制了脚本)。然后我尝试安装 chrome 的 MathJax 插件作为 Google Chrome 的扩展。这似乎在我的文件中呈现了一些 MathML,但对于一些我得到了错误。我发现 MathJax 可以呈现 Presentation MathML 内容,但不能呈现 Content MathML 内容(我的页面中有两种类型的内容)。它也不能通过 HTTPS 连接工作。如果我能找到一些解决方法来解决这个问题,这将非常有帮助。

问候, 阿尼尔班

【问题讨论】:

标签: html google-chrome mathjax mathml


【解决方案1】:

The question linked to in the OP 有点过时了,它描述了如何在 xhtml 中包含 MathML(不是 html,因为当时它实际上并不有效)。使用 HTML5,包含 MathML 会容易得多。

Chrome 不支持 MathML,因此您需要一个 polyfill。 MathJax 可以呈现 Presentation 和 Content MathML;请参阅http://docs.mathjax.org/en/latest/ 的相关文档。

但是,作者需要正确配置 MathJax 才能这样做。仅供参考,Chrome 商店中的插件由第三方制作;此外,如果操作正确,MathJax 在 https 上也能正常工作。

以下示例展示了如何启用 MathJax 可以提供的所有 MathML 功能,包括用于实验功能的 mml3.js 扩展。

<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  <title>Fullest MathML support using MathJax</title>
  <script>window.MathJax = { MathML: { extensions: ["mml3.js", "content-mathml.js"]}};</script>
<script type="text/javascript" async src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=MML_HTMLorMML"></script>
</head>
<body>
  <math display="block"> 
    <apply> 
      <plus/> 
      <ci>a</ci> 
      <apply> 
        <minus/> 
        <ci>b</ci> 
        <ci>c</ci> 
      </apply> 
    </apply> 
  </math> 
  <math display="block">
    <mrow>
      <mi>a</mi>
      <mo>+</mo>
      <mrow>
        <mi>b</mi>
        <mo>-</mo>
        <mi>c</mi>
      </mrow>
    </mrow>
  </math>

</body>
</html>

【讨论】:

  • 使用此方法,不会抛出任何错误,但许多内容都显示为“无”。就像等式 "1+2=" 是 "1none+none2none none ="
  • mml3 还处于试验阶段,能否请您给我一些可以在生产中使用的建议?这真的很有帮助。
  • 另外我需要在 Chrome 和 Safari 中运行相同的东西,内容在 Safari 中正确显示,添加这些扩展后会不会受到影响?
  • 对于您的第一条评论,如果没有一些代码示例,我不能说太多。对于第二个,您不需要 mml3.js 扩展。第三,MathJax 平等地支持所有浏览器和平台,所以它应该可以工作。
  • 我已经更新了答案,因为 cdn.mathjax.org 已接近其生命周期,参见。 mathjax.org/cdn-shutting-down.
【解决方案2】:

当我处于类似情况时,这对我来说非常有效..

将这些脚本添加到&lt;head&gt;

<script type="text/x-mathjax-config">MathJax.Hub.Config({
  config: ["MMLorHTML.js"],
  jax: ["input/TeX","input/MathML","output/HTML-CSS","output/NativeMML"],
  extensions: ["tex2jax.js","mml2jax.js","MathMenu.js","MathZoom.js"],
  TeX: {
    extensions: ["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"]
  }
});</script>
<script type="text/javascript" src="https://cdn.mathjax.org/mathjax/2.0-latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

那么,

&lt;body&gt; 标签结束后添加这个&lt;script&gt;

<script type="text/javascript">
  MathJax.Hub.Configured()
</script>

documentation

你可以看到这个美妙的例子..https://math.stackexchange.com/..检查math.stackexchange的来源..它真的很有帮助..

更新

请参阅link.. 中的第 54 页。它说

MathJax 支持 MathML3.0 数学标签,其中包含一些 限制。 MathML 支持仍在积极开发中,因此 有些标签还没有实现,有些功能还没有完全实现 发达,但即将到来。不足之处包括:

• 不支持 表格中的对齐组。

• 并非所有属性都支持 表。例如,columnspan 和 rowspan 尚未实现。

•对初等数学标签的实验性支持:mstack、mlongdiv、 msgroup、msrow、mscarries 和 mscarry。 (通过 mml3 扩展,请参阅 下面。)

• 双向数学实验支持。

【讨论】:

  • 我尝试这样做,一些内容正确呈现,但对于某些内容,我收到以下错误 Unknown node type: mstack
【解决方案3】:

似乎可以借助 CSS 和使用 HTML5(即支持未知标签的 Chrome 版本)在 Chrome 中呈现 MathML。

作为一个实验,包括一些使用 contenteditable="true" 来测试 HTML5 编辑的小步骤,我在这里使用了这个 CSS:
https://developer.mozilla.org/en-US/docs/Mozilla/MathML_Project/test-mathml-css

没有 CSS 的 Chrome 示例:

带有 CSS 的 Chrome 示例:

源文件在这里:
https://gist.github.com/jburse/fb43afd01048feac7028b5642817af0a#file-mathml-html

【讨论】:

    【解决方案4】:
    【解决方案5】:

    试试我的 Chrome 扩展“HTML + MathML”: https://chrome.google.com/webstore/detail/fmath-html-%2B-mathml-solut/emdjdpchbjipnjhkfljbcapgfecmnglm?hl=en-GB

    或者我对“所有浏览器”的解决方案: http://www.fmath.info/formula/js/allBrowser.jsp

    问候

    【讨论】:

      猜你喜欢
      • 2014-03-27
      • 2017-09-20
      • 1970-01-01
      • 2019-02-05
      • 1970-01-01
      • 2020-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多