我想通过MathJax动态地在html文件中插入'LATEX'文本。
<html>
<head>
<title>MathJax MathML Test Page</title>
<script type="text/javascript"
src="http://cdn.mathjax.org/mathjax/latest/MathJax.js?config=TeX-AMS-MML_HTMLorMML">
</script>
<script type="text/x-mathjax-config">
MathJax.Hub.Config({
tex2jax: {inlineMath: [["$","$"],["\\(","\\)"]]}
});
</script>
</head>
<body>
<div id="content" contenteditable="true" style="font-family: Helvetica">This is
</div>
<button onclick="myFunction()">Try it</button>
<script>
function myFunction() {
var newP = document.createElement("p");
newP.innerHTML = "\(ax^2 + bx + c = 0\)";
my_div = document.getElementById("2");
document.body.insertBefore(newP, my_div);
}
</script>
<p id = '2'>
\(ax^2 + bx + c = 0\)
</p>
</body>
这段代码都做得很好:
<p id = '2'>
\(ax^2 + bx + c = 0\)
</p>
但是当我动态插入新段落时,我看到错误的文字。 抱歉我的英语,但我实际上不知道如何解决它。
答案 0 :(得分:1)
试试这个:
function myFunction() {
var newP = document.createElement("p");
newP.id = 'unique-id';
newP.innerHTML = "\\(ax^2 + bx + c = 0\\)";
my_div = document.getElementById("2");
document.body.insertBefore(newP, my_div);
MathJax.Hub.Queue(['Typeset', MathJax.Hub, 'unique-id']);
}
一些评论:
\(
和\)
,但由于您将它们包含在Javascript字符串中,其中\
是特殊的,因此您需要使用两个反斜杠; <p>
元素后,您需要告诉MathJax对其进行排版,这是MathJax.Hub.Queue(...)
的作用;它被赋予新创建元素的id
,虽然这不是必需的(但 更快);请注意,id必须是唯一的; 2
的ID在HTML中无效;