使用 katex,'&' 对齐符号显示为 'amp;'
using katex, '&' alignment symbol displays as 'amp;'
我正在使用 katex 来渲染数学。
通常,为了让它工作,我 link 从 cdn 到文件 katex.min.js
和 katex.min.css
,这是指示建议的方式之一。
我将需要呈现的内容包裹在标签中,并给出相同的内容class。例如:
<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 returns 有问题。上面的输出给我:
这里提出了完全相同的问题:
https://github.com/j13z/reveal.js-math-katex-plugin/issues/2
可是我一点都看不懂
您使用的是哪个版本?
在终端 npm run build
命令中更新 运行 后编辑 src/utils.js
和注释行号 51 至 55。
解决方案是使用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
}
适用于我的解决方案如下(它更像是一种 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>
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
}
我正在使用 katex 来渲染数学。
通常,为了让它工作,我 link 从 cdn 到文件 katex.min.js
和 katex.min.css
,这是指示建议的方式之一。
我将需要呈现的内容包裹在标签中,并给出相同的内容class。例如:
<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 returns 有问题。上面的输出给我:
这里提出了完全相同的问题:
https://github.com/j13z/reveal.js-math-katex-plugin/issues/2
可是我一点都看不懂
您使用的是哪个版本?
在终端 npm run build
命令中更新 运行 后编辑 src/utils.js
和注释行号 51 至 55。
解决方案是使用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
}
适用于我的解决方案如下(它更像是一种 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>
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 }