4

MathJax出力をに変換する方法があるかどうか疑問に思っていましたMathML

MathJaxと言っているいくつかの記事を読みましMathMLた。数式Show MathMLを右クリックすると、オプション ' ' も表示されます。MathJax私の質問は、MathMLから Web ページへの出力を取得できMathJaxますか? 私はよく知らMathJaxず、それがどのように機能するのかわかりません。リソースやチュートリアルのページがあればよかったのに!

4

3 に答える 3

4

@Peter、OPは、MathMLタグをページに直接挿入する方法ではなく、MathJaxからMathML文字列を取得する方法を尋ねているのではないかと思います。したがって、 toMathMLの使用方法を説明するMathJaxフォーラムでの議論でうまくいくかもしれません。

基本的な考え方は、変換する数学の要素jaxを(を使用してMathJax.Hub.getAllJax)取得してから、そのtoMathMLメソッドを呼び出すことです。toMathMLただし、非同期で動作する可能性があるため、これには注意が必要です。上記のリンクで詳細を確認できます。

編集MathJaxノードプロジェクトでは、コマンドラインからこれを実行できるため、これも確認することをお勧めします。

于 2013-01-26T16:30:36.367 に答える
3

私はいくつかのコードを書きました。チェックアウトしてください。 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);             
     });
于 2015-03-10T14:13:53.067 に答える
0

MathJax の構成に関する MathJax ドキュメントは、おそらく読み始める場所です。ブラウザごとに出力 jaxを設定できます。

注意の言葉。現在、MathJax がどのブラウザーでもMathML 出力を使用していないのには理由があります。ブラウザーのサポートはまだ十分ではありません。(ブラウザが追いつき、MathJax がネイティブ サポートを利用できるようになると、これは変わります。) したがって、コンテンツが実際に正常にレンダリングされることを確認してください。

于 2013-01-20T07:44:50.180 に答える