1

我有以下 div:

<div id="math-display">``</div>

该页面MathJax.Hub.Queue(['Typeset', MathJax.Hub, 'math-display'])在页面加载时运行。`是 AsciiMath 输入的分隔符。

如果我要使用 latex 输入方程式,并想刷新math-display,我可以运行以下代码:

MathJax.Hub.Queue(['Text', MathJax.Hub.getAllJax('math-display')[0], 'new latex here'])

但是,如果我使用 AsciiMath 输入而不是 Latex,结果仍会使用 Latex 呈现(即使'new latex here'字符串中使用了 AsciiMath 分隔符)。如何使用 AsciiMath 输入而不是 Latex 更新显示的 MathJax?

如果可能的话,我宁愿不打电话Typeset更新。

4

1 回答 1

1

Text()方法仅更新对象实例的文本,并且该对象已经具有输入的类型作为属性。这种类型的输入由delimiters创建对象的时间定义。

使用text()时修改 之间的字符串delimiters,因此不需要delimiters,但不能更改输入类型。

但是您可以typeset使用单个元素。它将使用由分隔符定义的输入创建一个新对象。例如,请参见片段:

document.querySelector('#switch').onclick = function() {
  //inputJax property defines type of input  
  alert('input type of math-display is: ' + MathJax.Hub.getAllJax('math-display')[0].inputJax);
  
  //To change type of input, you can modifiy content of math-display, not of the math object that was generated 
  document.querySelector('#math-display').textContent = "$$x = {-b \\pm \\sqrt{b^2-4ac} \\over 2a}.$$";
  
  //You typeset only element that has id math-display. 
  MathJax.Hub.Queue(['Typeset', MathJax.Hub, 'math-display']);

}
<script src="https://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-MML-AM_HTMLorMML"></script>
<div id="math-display">`sum_(i=1)^n i^3=((n(n+1))/2)^2`</div>
<button id="switch">Change content</button>

于 2015-07-18T15:16:52.203 回答