MathJax 自动换行不起作用

And*_*dry 1 html javascript mathjax

我正在使用 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>
Run Code Online (Sandbox Code Playgroud)

该脚本作为最后一个条目放置在<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
$$ 
...
Run Code Online (Sandbox Code Playgroud)

问题

当我加载页面时,它会很好地呈现方程。但是,当我将页面大小设置得很窄并刷新/加载页面时;该方程未以适合页面的方式呈现。

MathJax 文档指出可linebreaks: { automatic: true }用于自动中断长表达式。为什么这不起作用?

现场演示:我发布了一个CodePen 演示


故障排除

我也发现了类似的问题,就像这个问题一样。那里的 CodePen 可以工作,我不明白为什么我的代码不能工作。

Pet*_*ger 5

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

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

配置的最后更新来自组合配置文件,因此您最终会得到 CommonHTML 输出(您可以通过 MathJax 上下文菜单检查这一点,也可以在那里切换到 HTML-CSS - 注意:这会设置 cookie)。

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

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

body { width: 10em}
Run Code Online (Sandbox Code Playgroud)
<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
$$ 
Run Code Online (Sandbox Code Playgroud)