MathJax 自动换行不起作用

MathJax automatic line breaking not working

我正在使用 MathJax 在我的网页中显示数学。这是我加载和配置它的方式:

<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    jax: ["input/TeX", "output/HTML-CSS"],
    tex2jax: {
      inlineMath: [ ['$','$'], ["\(","\)"] ],
      displayMath: [ ['$$','$$'], ["\[","\]"] ],
      processEscapes: true
    },
    "HTML-CSS": { fonts: ["TeX"], linebreaks: { automatic: true } }
  });
</script>
<script src="//mathjax.rstudio.com/latest/MathJax.js?config=TeX-MML-AM_CHTML"></script>

该脚本作为最后一个条目放置在 <body> 中。在此之前,我有一些(长)数学方程式,例如:

<body>
$$
    a + b + c + d + \int_a^b f(x)dx - \sum_k c_k\int g(x)dx = \prod_n \int_{\Omega_k} F(x,y,z) d\omega
$$ 
...

问题

当我加载页面时,它可以很好地呈现方程式。但是,当我将页面大小设置为非常窄并且 refresh/load 页面时;公式未以适合页面的方式呈现。

MathJax doc 说明 linebreaks: { automatic: true } 可用于自动打断长表达式。为什么这不起作用?

现场演示: 我已经发布了 CodePen demo


疑难解答

我也发现了类似 this question 中的问题。那里的CodePen可以用,我不明白为什么我的代码不能用。

问题源于您的内联配置与与 MathJax 一起加载的组合配置文件(通过查询字符串)不一致。

内联,您正在设置 HTML-CSS 输出以及自动换行。 但是,合并的配置文件会加载 CommonHTML 输出。

配置的最后更新来自合并的配置文件,所以你最终得到 CommonHTML 输出(你可以通过 MathJax 上下文菜单检查它,也可以切换到 HTML-CSS -- 注意:这会设置一个 cookie)。

因此您可以更新内联配置或切换组合配置。

我建议使用 CommonHTML 输出,它比现在非常古老的 HTML-CSS 输出(它是在 IE8 刚推出时设计的)更新更快。如果您知道要呈现内容,您还可以将 -full 添加到查询字符串以获得更大的有效负载(否则 MathJax 在加载更多组件之前首先查找内容)。

body { width: 10em}
<script type="text/x-mathjax-config">
  MathJax.Hub.Config({
    extensions: ["tex2jax.js"],
    tex2jax: {
      inlineMath: [ ['$','$'], ["\(","\)"] ],
      displayMath: [ ['$$','$$'], ["\[","\]"] ],
      processEscapes: true
    },
    "CommonHTML": { linebreaks: { automatic: true } }
  });
</script>
<script src="//mathjax.rstudio.com/latest/MathJax.js?config=TeX-MML-AM_CHTML"></script>

$$
    a + b + c + d + \int_a^b f(x)dx - \sum_k c_k\int g(x)dx = \prod_n \int_{\Omega_k} F(x,y,z) d\omega
$$