-->

我们可以从MathJax得到MATHML输出(Can we get MathML output fr

2019-08-07 05:11发布

如果有办法转变我想知道MathJax输出MathML

我通过说一些文章阅读MathJax支持MathML 。 我还可以看到选项“ Show MathML ”当我右键单击MathJax公式。 我的问题是,我可以得到MathML输出从网页MathJax ? 我不熟悉MathJax ,我不知道它是如何工作的。 任何资源或教程网页本来不错!

Answer 1:

@Peter,我觉得OP可能会问如何从MathJax得到MATHML字符串,而不是如何将MATHML标签直接插入到页面中。 因此,也许在MathJax论坛的讨论中,描述了如何使用toMathML会做的伎俩。

其基本思想是让元素JAX(使用MathJax.Hub.getAllJax )为你要转换,然后调用它的数学toMathML方法。 但是,你需要使用一些照顾这一点,因为toMathML可以异步操作。 上面的链接通过细节去。

编辑 : MathJax节点项目,您可以在命令行中做到这一点,所以你可能要检查出来为好。



Answer 2:

我已经写了一些代码,检查出来:一是包括“ https://code.jquery.com/jquery-1.11.2.min.js ”和“ http://cdn.mathjax.org/mathjax/latest/MathJax。 JS?配置= 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);             
     });


Answer 3:

在MathJax文档配置MathJax可能是开始阅读的地方。 您可以配置每个浏览器输出JAX 。

一个忠告。 还有一个原因,为什么MathJax目前不使用成MathML输出在任何浏览器:浏览器支持还没有应用。 (如浏览器赶上和MathJax可以开始利用他们的原生支持这将会改变。)因此,请确保您的内容实际上呈现确定。



文章来源: Can we get MathML output from MathJax