使用 AsciiMath 输入更新 MathJax

Updating MathJax with AsciiMath input

我有以下 div:

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

页面 运行s 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 输入而不是乳胶更新显示的 MathJax?

如果可能,我宁愿不调用Typeset更新。

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>