MathJax
出力をに変換する方法があるかどうか疑問に思っていましたMathML
。
MathJax
と言っているいくつかの記事を読みましMathML
た。数式Show MathML
を右クリックすると、オプション ' ' も表示されます。MathJax
私の質問は、MathML
から Web ページへの出力を取得できMathJax
ますか? 私はよく知らMathJax
ず、それがどのように機能するのかわかりません。リソースやチュートリアルのページがあればよかったのに!
@Peter、OPは、MathMLタグをページに直接挿入する方法ではなく、MathJaxからMathML文字列を取得する方法を尋ねているのではないかと思います。したがって、 toMathMLの使用方法を説明するMathJaxフォーラムでの議論でうまくいくかもしれません。
基本的な考え方は、変換する数学の要素jaxを(を使用してMathJax.Hub.getAllJax
)取得してから、そのtoMathML
メソッドを呼び出すことです。toMathML
ただし、非同期で動作する可能性があるため、これには注意が必要です。上記のリンクで詳細を確認できます。
編集:MathJaxノードプロジェクトでは、コマンドラインからこれを実行できるため、これも確認することをお勧めします。
私はいくつかのコードを書きました。チェックアウトしてください。 js?config=TeX-AMS-MML_HTMLorMML "
var JaxToML = {
toMathML: function(jax, callback) {
var mml;
try {
mml = jax.root.toMathML("");
} catch (err) {
if (!err.restart) {
throw err
} // an actual error
return MathJax.Callback.After([JaxToML.toMathML, jax, callback], err.restart);
}
MathJax.Callback(callback)(mml);
},
convert: function(AjaxText, callback) {
var tempDiv = $('<div style="width:455px;height:450px:border-width:thick;border-style:double;"></div>').appendTo("body").html(AjaxText)[0];
MathJax.Hub.Queue(["Typeset", MathJax.Hub, tempDiv]); //first place in Q
MathJax.Hub.Queue(function() { //wait for a callback to be fired
var jax = MathJax.Hub.getAllJax(tempDiv);
for (var i = 0; i < jax.length; i++) {
JaxToML.toMathML(jax[i], function(mml) {//alert(jax[i].originalText + "\n\n=>\n\n"+ mml);
AjaxText = AjaxText.replace(jax[i].originalText, mml);
});
}
$(tempDiv).remove();
AjaxText = AjaxText.replace(/\(/g,""); //notice this escape character for ( - i.e it has to be \( , know why it is beacuse JS will treat ) or ( as end/begin of function as there are no quotes here.
AjaxText = AjaxText.replace(/\)/g,""); //notice this escape character for ) - i.e it has to be \)
AjaxText = AjaxText.replace(/\\/g,"");
callback(AjaxText);
});
},
};
使用法 :
JaxToML.convert(AjaxText, function(mml) {
alert(mml);
});
MathJax の構成に関する MathJax ドキュメントは、おそらく読み始める場所です。ブラウザごとに出力 jaxを設定できます。
注意の言葉。現在、MathJax がどのブラウザーでもMathML 出力を使用していないのには理由があります。ブラウザーのサポートはまだ十分ではありません。(ブラウザが追いつき、MathJax がネイティブ サポートを利用できるようになると、これは変わります。) したがって、コンテンツが実際に正常にレンダリングされることを確認してください。