我想在我们的页面上使用mathjax,我有一个带公式<formula>
的自定义标记。
但是,仅当我在自定义标记中使用分隔符时,它才能起作用,是否有可能丰富分隔符?
当我设置为inlineMath: [['', '']]
时,整个事情都挂了。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<title>title</title>
<link rel="stylesheet" href="style.css">
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script>
MathJax = {
tex: {inlineMath: [['$', '$']]},
startup: {
elements: ['formula'],
ready: function () {
MathJax.startup.defaultReady();
}
}
}
</script>
<script id="MathJax-script" src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
</head>
<body>
<p>hello world</p>
<p>this is a <formula>x^2 + y^2 = z^2</formula> formula x^2 + y^2 = z^2</p>
<p>this is a <formula>$x^2 + y^2 = z^2$</formula> formula x^2 + y^2 = z^2</p>
</body>
</html>
您可以执行类似于文档中给出的example的操作,该文档显示了如何处理用于保存数学信息的旧v2样式<script>
标记。
这里是一个例子:
<script src="https://polyfill.io/v3/polyfill.min.js?features=es6"></script>
<script>
MathJax = {
options: {
renderActions: {
find: [10, function (doc) {
for (const node of document.querySelectorAll('formula')) {
const math = new doc.options.MathItem(node.textContent, doc.inputJax[0], false);
const text = document.createTextNode('');
node.parentNode.replaceChild(text, node);
math.start = {node: text, delim: '', n: 0};
math.end = {node: text, delim: '', n: 0};
doc.math.push(math);
}
}, '']
}
}
};
</script>
<script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
<p>this is a <formula>x^2 + y^2 = z^2</formula> formula x^2 + y^2 = z^2</p>
[请注意,此函数用查找<formula>
标记的函数代替了通常的数学查找函数,因此,如果您也要使用原始定界符,请将find: [10
更改为findTags: [9
,这样原始函数就不会将被替换并在您的代码运行后运行。
也请注意,这不能给您一种将显示风格的数学与在线数学区分开的方法(就像TeX分隔符一样),因此所有数学都是在线风格。当然,您可以修改代码以具有两个不同的标记,或者允许<formula>
上的属性指定显示样式。