在 html 中插入 'LATEX' - 动态文本
Insert 'LATEX' - text dynamically in html
我想通过 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>
但是当我动态插入新段落时,我看到了错误的文字。
对不起我的英语,但我实际上不知道如何解决它。
试试这个:
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 中无效;
我想通过 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>
但是当我动态插入新段落时,我看到了错误的文字。 对不起我的英语,但我实际上不知道如何解决它。
试试这个:
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 中无效;