浏览器显示MathML代码而不是方程式

时间:2018-04-07 15:56:49

标签: mathjax mathml

有没有人知道如何强制浏览器显示MathML代码而不是方程?

PS:渲染MathML以纯文本形式显示TeX输出。

例如,

  

(0,4)所在的轴是_____

应显示为:

  

<math xmlns="http://www.w3.org/1998/Math/MathML"><semantics><mrow><mo stretchy="false">(</mo><mn>0</mn><mo>,</mo><mn>4</mn><mo stretchy="false">)</mo></mrow><annotation encoding="application/x-tex">(0, 4)</annotation></semantics></math>所在的轴是_____

1 个答案:

答案 0 :(得分:1)

在大多数常见配置中,如果您的输出不是直接的mathML,则mathjax会在包含mathJax元素的span标记的属性data-mathml中存储mathml信息

这是右键单击mathJax元素时弹出窗口中显示的内容:show math as -> MathMl Code

如果你的目标是从mathml格式的html中获取方程式,你可以创建一个解析文档并获取所有data-mathml属性的脚本。 有很多方法可以实现这一点,这只是您可能需要调整的一个例子:

function grabMathMl(){ 
    var spanMathMl = document.querySelectorAll(".MathJax");

    let results = [];
    let i = 0, ln = spanMathMl.length;
    for ( i; i < ln; ++i){
        if ( spanMathMl[i].hasAttribute("data-mathml") ){
 		        results.push(spanMathMl[i].dataset.mathml);
            // if you really want to replace content
            spanMathMl[i].innerHTML = "<textarea>"+spanMathMl[i].dataset.mathml+"</textarea>";
		    }
    }
    return results;
}

// put this fonction in the mathJax queue for you have to wait until mathJax process is done
MathJax.Hub.Queue(function(){
    let equations = grabMathMl();
    //console.log (equations.toString());// your equations in mathml
});
<script>
</script>
<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

<div>$$\left|\int_a^b fg\right| \leq \left(\int_a^b
	f^2\right)^{1/2}\left(\int_a^b g^2\right)^{1/2}.$$</div>

<div>
\begin{equation} x+1\over\sqrt{1-x^2} \end{equation}
</div>

然后言语,这个链接应该引起你的兴趣 https://superuser.com/questions/340650/type-math-formulas-in-microsoft-word-the-latex-way#802093