我有以下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输入更新显示的MathJax,而不是乳胶?
如果可能,我不希望调用Typeset
来更新。
答案 0 :(得分: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>