45

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

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

どのように私はそのようなことをしますか?

4

2 に答える 2

57

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

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

ただし、このメソッドを直接呼び出すだけではいけません。[代わりに] typeset アクションをキューに入れ、[これを使用して] コマンド:

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

デモはこちら: http://cdn.mathjax.org/mathjax/latest/test/sample-dynamic.html

于 2011-03-04T23:56:51.910 に答える
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>

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

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

于 2012-02-13T23:40:03.893 に答える