使用katex,'&'对齐符号显示为'amp;'

时间:2018-04-08 16:04:58

标签: tex katex

我正在使用katex来渲染数学。

article

通常,为了实现这一点,我从cdn链接到文件katex.min.jskatex.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/Khan/KaTeX

这里提出了同样的问题:

enter image description here

但我无法理解任何一个。

4 个答案:

答案 0 :(得分:1)

解决方案是使用 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
}

答案 1 :(得分:0)

一种对我有用的解决方案如下(它更多是一种hack,而不是一种修复):

<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>

答案 2 :(得分:0)

function convert(input) {
    var input = input.replace(/amp;/g, '&'); //Find all 'amp;' and replace with '&'
    input=input.replace(/&&/g, '&'); //Find all '&&' and replace with '&'. For leveling 10&x+ &3&y+&125&z = 34232
    var html = katex.renderToString(input, {
        throwOnError: false});
    return html
}

答案 3 :(得分:-1)

您使用的是哪个版本?

在终端机src/utils.js中运行更新后,编辑npm run build和注释行号51至55。