如何在 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.
我有一个演示,其中我使用 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.