我在用katex渲染数学。
通常,为了使其工作,我链接到来自cdn的文件katex.min.js和katex.min.css,这是指南建议的方法之一。
我封装了需要在标记中呈现的内容,并给出了所有相同的类。例如:
<span class='math'>\begin{bmatrix}a & b \\c & d\end{bmatrix}</span>在脚本标记中,我应用以下内容:
var math = document.getElementsByClassName('math');
for (var i = 0; i < math.length; i++) {
katex.render(math[i].innerHTML, math[i]);
}所以,我的实现可以工作,但是katex返回的内容有一个问题。以上的产出给了我:

这里也提出了同样的问题:
https://github.com/j13z/reveal.js-math-katex-plugin/issues/2
但我一点也不明白。
发布于 2018-12-13 04:01:31
解决方案是使用element.textContent,而不是element.innerHTML。
如果我使用如下形式,矩阵将被正确地呈现。
var math = document.getElementsByClassName('math');
for (var i = 0; i < math.length; i++) {
katex.render(math[i].textContent, math[i]); // <--element.textContent
}发布于 2019-04-25 15:01:50
对我有效的解决方案如下(与其说是修复,不如说是黑客攻击):
<script type="text/javascript">
//first we define a function
function replaceAmp(str,replaceWhat,replaceTo){
replaceWhat = replaceWhat.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');
var re = new RegExp(replaceWhat, 'g');
return str.replace(re,replaceTo);
}
//next we use this function to replace all occurences of 'amp;' with ""
var katexText = $(this).html();
var html = katex.renderToString(String.raw``+katexText+``, {
throwOnError: false
});
//hack to fix amp; error
var amp = '<span class="mord mathdefault">a</span><span class="mord mathdefault">m</span><span class="mord mathdefault">p</span><span class="mpunct">;</span>';
var html = replaceAmp(html, amp, "");
</script>发布于 2018-08-16 06:45:20
你用的是哪个版本?
在终端src/utils.js命令中运行更新后,编辑src/utils.js和注释行51至55。
https://stackoverflow.com/questions/49719914
复制相似问题