我有一个演示,我使用MathJax.js在网页中渲染Math。此演示位于Online Demo。
我完美地渲染了数学,但是现在我想要进行数学渲染的反向,即获得与渲染数学相关联的html标记。我尝试了几种方法MathJax.Hub.getJaxFor(div)
和div.innerHTML
但没有人给我原始标记。
我想获得原始标记,在此演示中使用MathJax中的某些API $$x^2 = x +2$$
。
问题
我将使用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>
答案 0 :(得分:1)
我想获得原始标记,在此演示中使用MathJax中的某些API来获取$$ x ^ 2 = x + 2 $$。
这是不可能的;分隔符将在预处理期间被删除,并且不会被存储。如果您需要原始文件,则必须自己跟踪用户输入。
但是,您可以查看显示样式并从那里派生分隔符。
以下是一个例子。
<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>
&#13;
另一种方法是在输出后立即查找放置在DOM中的脚本标记。然后,您可以从那里重建信息,而无需依赖MathJax的API。