web-dev-qa-db-ja.com

MathJaxをリコールまたは再起動する方法は?

すべてのページを再確認するには、MathJaxが必要です。

つまり、ページが作成されると、すべてがうまくいきます。ただし、その間に内容が変更されたため、ページを再解析するためにwindow.onloadの後に呼び出す必要があります。

どうすればそんなことをできますか?

39
Rella

http://docs.mathjax.org/en/latest/advanced/typeset.html を参照してください:

MathJaxがページの残りの部分をすでにタイプセットした後に数学を含むコンテンツが表示される動的なWebページを作成している場合は、新しいコンテンツが作成されたときにページ内の数学を再度検索するようにMathJaxに指示する必要があります。これを行うには、MathJax.Hub.Typeset()メソッドを使用する必要があります。これにより、プリプロセッサ(ロードされている場合)がページ上で再度実行され、MathJaxはページ上で未処理の数学を探してタイプセットし、すでにタイプセットされている数学は変更しません。

ただし、単にこのメソッドを直接呼び出すべきではありません。 [代わりに]タイプセットアクションをキューに入れ、[これを使用して]コマンドを実行します。

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

ここでのデモ: http://cdn.mathjax.org/mathjax/latest/test/sample-dynamic.html

46
thirtydot

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>

したがって、関数を使用してdivの内容全体を新しいMathMLに置き換えるだけで、機能します。 (スクリプトは頭の中にあります。)

注:空のmath divがあり、後でMathMLを追加すると、スクリプトエラーが発生します。ただし、updateMathContentの呼び出し内に何も含まれていない数学タグが存在する場合は、機能します。

4
countzero