如何强制基于cdn的MathJax使用LaTeX数学进行输入并输出到MathML



我想使用MathJax编写一些网页,其中我编写LaTeX数学公式,但强制MathJax以MathML格式输出。我知道这是可以做到的,但我不知道如何配置它以这种方式工作。文档要求在HTML中包含以下内容:

<script type="text/javascript" async
  src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_CHTML">
</script>

,我猜config值是我可以用来强制它。MathJax提供了其他选项,但没有一个适合我的需求。我该怎么做呢?

如果您没有使用组合配置文件(在config=...查询中指定),那么您可以在常规MathJax配置中设置输出,例如,修改OP中列出的组合配置定义的基础配置可能会给您:

<script type="text/x-mathjax-config">
 MathJax.Hub.Config({
   jax: ["input/TeX","output/NativeMML"], // instead of "output/CommonHTML"
   extensions: ["tex2jax.js","MathMenu.js","MathZoom.js", "AssistiveMML.js"],
   TeX: {
     extensions: ["AMSmath.js","AMSsymbols.js","noErrors.js","noUndefined.js"]
   }
 });
</script>

如果只使用这个配置,您将失去组合配置的好处,即TeX输入Jax和Element Jax与配置选项一起组合到一个文件中。

(现在您可能想在使用组合配置时重写输出jax,例如

)
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    jax: ["output/NativeMML"]
  });
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_CHTML"></script>

但是不起作用,因为组合配置在内联配置之后加载。)

如果你想使用一个组合配置,但不想自己构建一个,你必须在配置后覆盖它,例如,

<script type="text/x-mathjax-config">
MathJax.Hub.Register.StartupHook("End Jax",function () {
  return MathJax.Hub.setRenderer("NativeMML");
});
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.0/MathJax.js?config=TeX-AMS_CHTML"></script>

如果需要更细粒度的控制,请查看MathJax文档,了解其浏览器嗅探功能。

最新更新