在浏览器中使用 KaTeX 渲染数学
Render math with KaTeX in the browser
我正在使用 KaTeX
在浏览器中呈现数学。
现在我正在使用类似
的东西
document.getElementById('el').innerHTML = function () {
const span = document.createElement('span');
katex.render('2+\frac{1}{x}', span);
return span.innerHTML;
});
但我必须将它应用于一个元素,然后从该元素中取出 html 并插入到我的字符串中,这似乎真的很愚蠢。
我已经查看了 KaTeX 文档,但我找不到任何东西可以帮助我直接在浏览器中渲染一些文本,比如 katex.render('2+3+4')
。
使用 KaTeX 的 auto-render extension,它可以让你将 KaTeX 直接添加到 HTML 中,并使用像 $$
这样的分隔符,然后一次渲染它:
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/contrib/auto-render.min.js"></script>
</head>
<body>
<div id="el"><span>$+\frac{1}{x}$$</span></div>
<script>
renderMathInElement(document.body);
</script>
</body>
</html>
我不知道您是否仍在寻找答案,但也许这会对您有所帮助。
首先,我从 cdn link 到 katex.min.js 和 katex.min.css。
我将我想要在 katex 中渲染的所有内容都包装在 span 标签内,并给它们 class 'math'
例如:
<span class='math'>2+\frac{1}{x}</span>
然后在一对脚本标签中,我包含如下内容:
var math = document.getElementsByClassName('math');
for (var i = 0; i < math.length; i++) {
katex.render(math[i].textContent, math[i]);
}
所以只要我用 class 数学将我的数学文本写在一个元素中,它就会被 katex 渲染。
编辑:我们应该使用 textContent 而不是 innerHTML。我 运行 遇到了使用 innerHTML 的问题。参见
我正在使用 KaTeX
在浏览器中呈现数学。
现在我正在使用类似
的东西document.getElementById('el').innerHTML = function () {
const span = document.createElement('span');
katex.render('2+\frac{1}{x}', span);
return span.innerHTML;
});
但我必须将它应用于一个元素,然后从该元素中取出 html 并插入到我的字符串中,这似乎真的很愚蠢。
我已经查看了 KaTeX 文档,但我找不到任何东西可以帮助我直接在浏览器中渲染一些文本,比如 katex.render('2+3+4')
。
使用 KaTeX 的 auto-render extension,它可以让你将 KaTeX 直接添加到 HTML 中,并使用像 $$
这样的分隔符,然后一次渲染它:
<!doctype html>
<html>
<head>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/katex.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.7.1/contrib/auto-render.min.js"></script>
</head>
<body>
<div id="el"><span>$+\frac{1}{x}$$</span></div>
<script>
renderMathInElement(document.body);
</script>
</body>
</html>
我不知道您是否仍在寻找答案,但也许这会对您有所帮助。
首先,我从 cdn link 到 katex.min.js 和 katex.min.css。
我将我想要在 katex 中渲染的所有内容都包装在 span 标签内,并给它们 class 'math'
例如:
<span class='math'>2+\frac{1}{x}</span>
然后在一对脚本标签中,我包含如下内容:
var math = document.getElementsByClassName('math');
for (var i = 0; i < math.length; i++) {
katex.render(math[i].textContent, math[i]);
}
所以只要我用 class 数学将我的数学文本写在一个元素中,它就会被 katex 渲染。
编辑:我们应该使用 textContent 而不是 innerHTML。我 运行 遇到了使用 innerHTML 的问题。参见