【问题标题】:Browser to Display MathML code instead of equation浏览器显示 MathML 代码而不是方程
【发布时间】:2018-04-07 15:56:49
【问题描述】:

有谁知道如何强制浏览器显示 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>所在的轴是_____

【问题讨论】:

  • Display HTML code in HTML的可能重复
  • @scraaappy,我认为这不是那个问题的重复。我认为 OP 是在询问如何让 MathJax 将 TeX 转换为 MathML 并显示 MathML 代码而不是排版版本(而您所指的问题是关于如何显示 HTML 特殊字符)。这仅适用于您已经开始使用 MathML 的情况。这里真正的问题是如何让 MathJax 为你做这件事。
  • 是的,完全正确....我想将内容复制粘贴到 word 中,然后我可以编写一个 word VBA 代码来查找 之间的文本并转换为方程式。 TEX 的自动转换是困难而不可能的
  • @DavideCervone 你说得对,我标记的有点快,这只是答案的一部分。

标签: mathjax mathml


【解决方案1】:

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

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

如果您的目标是从 html 中获取 mathml 格式的方程式,您可以创建一个脚本来解析您的文档并获取所有 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>

那么用word来说,这个链接应该会让你感兴趣 https://superuser.com/questions/340650/type-math-formulas-in-microsoft-word-the-latex-way#802093

【讨论】:

  • 非常感谢您的指导,我正在努力理解这一点。我是 JavaScript 的新手。我搜索了一些建议,发现我可以使用 JavaScript 注入之类的东西。但恐怕,它对我不起作用!在一个例子中,我想运行脚本的页面(来自 URL:cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.3/…)让 pagfe 冻结了!请以 LayMan 的身份进一步指导我!
  • @InsightAcademyPrivateTutori,如果您需要进一步的帮助,请通过编辑您的问题发布完整的代码示例,并尝试更清楚地描述您想要实现的上下文和过程。您越能识别错误,问题就越清晰。控制台中是否有任何消息(在大多数现代浏览器中,按“F12”检查元素,然后单击选项卡控制台)?
  • @scraaappy-好的,就是这样......我想抓取一个包含数学内容但以数学排版显示的网站。我想将所有数学内容转换为在 mathml 代码中显示。所以基本上我想当我的浏览器(谷歌浏览器)打开网站时,它应该将数学排版转换为 mathml 代码
  • @scraaappy - 你能给我提供 javascript 代码吗,因为我有一个 chrome 扩展,每次页面加载时都会执行一个 javascript
  • @InsightAcademyPrivateTutori 你能提供链接吗?
猜你喜欢
  • 2021-12-29
  • 2020-08-16
  • 1970-01-01
  • 1970-01-01
  • 2011-05-04
  • 2012-10-25
  • 1970-01-01
  • 2012-04-24
  • 1970-01-01
相关资源
最近更新 更多