第二次渲染时出现 MathJax 错误

MathJax error on second time render

我使用 MathJax 动态呈现以下代码:

When $a \ne 0$, there are two solutions to \(ax^2 + bx + c = 0\) and they are
$$x = {-b \pm \sqrt{b^2-4ac} \over 2a}.$$  

In equation \eqref{eq:sample}, we find the value of an interesting integral:
\begin{equation}
  \int_0^\infty \frac{x^3}{e^x-1}\,dx = \frac{\pi^4}{15}
  \label{eq:sample}
\end{equation}

使用Hub.Queue

MathJax.Hub.Queue(["Typeset",MathJax.Hub]);

第一次渲染效果不错。但是当我尝试使用相同的代码再次渲染时,只渲染了第一部分,但第二部分(从 \begin 开始)没有被解析并显示在黑框中。为什么会这样?

问题是 \label 的使用。当重新排版数学时,标签已经存在(从第一次排版开始),因此 TeX 输入 jax 将其报告为错误(禁用 noErrors 扩展以查看错误消息)。

在再次排版之前,您需要重置标签(可能还有方程式编号)。为此,请使用

MathJax.Hub.Queue(
  ["resetEquationNumbers",MathJax.InputJax.TeX],
  ["Typeset",MathJax.Hub]
);

而不是 MathJax.Hub.Queue(["Typeset",MathJax.Hub]) 调用。