1

変更された段落のみで Markdown/Tex を変換することにより、Markdown エディターで部分レンダリングを実装しようとしています。基本的に、変換された HTML 段落を#preview含む複数の要素を含む要素があります。.preview_section1 つまたは複数の.preview_section要素を更新するときに、MathJax でそれらの要素のみを処理するようにしたいと考えています。

私はさまざまなアプローチを試しました:

  • 変更された要素のリストを.preview_sectiontypset パラメータとして渡します。これは、パフォーマンスの点で最悪のソリューションです。複数の要素を渡す場合、レンダリング時間はほぼ要素数倍になります。
  • #preview要素を typeset パラメーターとして渡します。このソリューションの問題は、MathJax が既にレンダリングされた を再度レンダリングすることscript[type="math/tex; mode=display"]です。tex2jax 構成を設定し、変更されていない要素と既にレンダリングされた要素の両方ignoreClass: "tex2jax_ignore"に追加しようとしましたが、tex2jax プリプロセッサによって処理されていないため効果がありません (推測)。.tex2jax_ignore.preview_sectionscript
  • #preview要素を typeset パラメーターとして渡しますがscript[type="math/tex; mode=display"]、プレビューからすべてを削除した後です。これが最も効率的ですが、これらのスクリプトをプレビューから削除するのはあまり好きではありません。

scriptこれらの要素を処理しないように MathJax に指示する方法はありますか? または、ソースコードに飛び込む前のアイデア...ありがとう。

4

1 に答える 1

1

わかりました、私はちょうど私の問題を見つけました。MathJaxscript[type="math/tex"]は、DOM のすべての要素に JavaScript オブジェクトを格納します。このオブジェクトは、実際には に格納されておりelement.MathJax、次のものが含まれています。

checked: 1
elementJax: Object
preview: span.MathJax_Preview
startNumber: 0
state: 2

stateプレビューの状態です (2 は処理済みを意味します)。そのため、DOM で script タグを書き直さない限り (私が行っていたことです)、既にレンダリングされている場合、TypeSet はプレビューを再度レンダリングしません。この場合、MathJax オブジェクトとプレビューの状態が失われます。そのため、MathJax はすべてのスクリプトを再レンダリングし続けていました。

于 2013-07-27T00:36:07.500 に答える