3

ractive.jsでMathJaxを動的に更新しようとしています。

これで、次のコマンドで MathJax のリロードをトリガーできることがわかりました。

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

だから私はこれをobserveコールバックにバインドしました:

  ractive.observe('input', function (input) {
    ractive.set('output', input * 2);
    MathJax.Hub.Queue(["Typeset",MathJax.Hub]);
  });

しかし、MathJax をレンダリングしようとすると\begin{equation} {{output}} \end{equation} 、初期値のままになります。

テストケース

奇妙なことは、更新ではなく初期値を取得することです。

何かご意見は?

編集:ネストされたMathJax_MathContainer要素全体を追加しているように見えます.1つの呼び出しごとに1つずつ表示されます。


Peter Krautzberger の提案による JsFiddle デモ-- まだ動作していないようです

4

2 に答える 2

3

問題は、MathJax が DOM から要素を削除するため、Ractive が要素を更新できなくなることです。これは、MathJax 検索 (例: ) を使用する代わりに$$、LaTeX を<script type="math/tex; mode=display" id="foo">要素にラップすることで解決できます。MathJax はスクリプト要素を内部で処理できるため、これにより置換が防止されます。

これで、変数を観察し、再描画をトリガーできますMathJax.Hub.Queue(["Typeset",MathJax.Hub, "foo"]);

提案/解決策を提供してくれたPeter Krautzbergerに感謝します。

于 2013-11-27T13:09:47.793 に答える