如何调用或重启MathJax?

时间:2011-03-04 23:51:37

标签: javascript html restart mathjax

我需要MathJax再次检查我的所有页面。

我的意思是在创建页面时它确实很棒。但是我需要在window.onload之后调用它来重新解析页面,因为它的内容在此期间已经发生了变化。

我该怎么做?

2 个答案:

答案 0 :(得分:42)

请参阅http://docs.mathjax.org/en/latest/advanced/typeset.html

  

如果您正在编写动态网页   其中包含数学的内容   可能会出现在MathJax之后   排版页面的其余部分,然后你   需要告诉MathJax寻找   数学在页面再次出现时   生成新内容。去做   那,你需要使用   MathJax.Hub.Typeset()方法。这个   将导致预处理器(如果有的话)   被加载)在页面上运行   再次,然后MathJax将寻找   页面上未经处理的数学   并排版它,保持不变   已经排版的数学。

     

但是,您不应该直接调用此方法。 [你应该]排版排版操作,[使用此命令]:

     

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

在这里演示:http://cdn.mathjax.org/mathjax/latest/test/sample-dynamic.html

答案 1 :(得分:4)

我发现使用MathML进行动态更新的最简单方法是让MathJax进行内容更改(而不是jQuery .html(s)函数,例如)然后它在更改内容时处理数学。

<script type="text/javascript">
   function updateMathContent(s) {
       var math = MathJax.Hub.getAllJax("mathdiv")[0];
       MathJax.Hub.Queue(["Text", math, s]);
   }
</script>

...

<div id="mathdiv">
   <math xmlns="http://www.w3.org/1998/Math/MathML">
      <msup>
         <mi>x</mi>
         <mn>2</mn>
       </msup> 
   </math>
</div>

所以只需使用该函数用新的MathML替换div的全部内容即可。 (脚本在脑海里。)

注意:如果您有一个空的math div并稍后添加MathML,则会出现脚本错误。但是如果数学标签中没有任何内容,则对updateMathContent的调用将起作用。