如何在 MathJax 中获取与渲染数学关联的 Tex 标记?

How to get Tex markup associated with rendered Math in MathJax?

我有一个演示,其中我使用 MathJax.js 在网页中呈现数学。此演示位于 Online Demo.

我得到了完美呈现的数学,但现在我想做相反的数学渲染,即获得与呈现的数学相关的 html 标记。我尝试了几种方法 MathJax.Hub.getJaxFor(div)div.innerHTML 但 none 给了我原始标记。

我想获得原始标记,在此演示中是 $$x^2 = x +2$$ 使用 MathJax 中的一些 API。

问题

我将使用 MathJax 中的什么 API 来获取下面演示中的原始标记?

演示代码

<script>
   function getMathMarkup() {
   var div = document.getElementById("mathMarkup");
   //I need to get the original Tex markup with $$ delimiters
   //once the Math gets rendered
       alert(MathJax.Hub.getJaxFor(div));
       alert(div.innerHTML);
   }
</script>
<script type="text/x-mathjax-config">
   MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\(','\)']]}});
</script>
<script type="text/javascript"
   src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>
<button type="button" onclick="getMathMarkup();return false;">Get Math Markup</button>
<div id="mathMarkup">
   $$x^2 = x +2$$
</div>

I want to get the original markup , which in this demo is $$x^2 = x +2$$ using some API in MathJax.

这是不可能的;分隔符将在预处理期间被删除,并且不会被存储。如果您需要原件,则必须自己跟踪用户输入。

但是,您可以查看显示样式并从中导出分隔符。

这是一个例子。

<script>
   function getMathMarkup() {
   var div = document.getElementById("mathMarkup");
   //I need to get the original Tex markup with $$ delimiters
   //once the Math gets rendered
   var math = MathJax.Hub.getAllJax("MathMarkup")[0];
   var text =  '$' + math.originalText + '$';
   if (math.root.display) text = '$' + text + '$';
   alert(text);
   };
</script>
<script type="text/x-mathjax-config">
   MathJax.Hub.Config({tex2jax: {inlineMath: [['$','$'], ['\(','\)']]}});
</script>
<script type="text/javascript"
   src="https://cdnjs.cloudflare.com/ajax/libs/mathjax/2.7.1/MathJax.js?config=TeX-AMS-MML_HTMLorMML"></script>

<button type="button" onclick="getMathMarkup();return false;">Get Math Markup</button>
<div id="mathMarkup">
   $$x^2 = x+2$$
</div>

另一种方法是简单地查找位于输出后 DOM 中的脚本标记。然后你可以从那里重建信息,而不依赖 MathJax 的 API.