49 lines
1.6 KiB
JavaScript
49 lines
1.6 KiB
JavaScript
/* Math render plugin */
|
||
NexT.plugins.others.math = function() {
|
||
const render = NexT.CONFIG.page.math.render;
|
||
|
||
if (render === 'mathjax') {
|
||
const render_js = NexT.utils.getCDNResource(NexT.CONFIG.page.math.js);
|
||
const mathjaxCfg = `
|
||
window.MathJax = {
|
||
// 自定义内联数学公式的分隔符号
|
||
tex: {
|
||
inlineMath: [['$', '$'], ['\\(', '\\)']]
|
||
},
|
||
// SVG 渲染配置为全局共享字体缓存
|
||
svg: {
|
||
fontCache: 'global'
|
||
},
|
||
// 排除特定的HTML标签,避免过度渲染
|
||
options: {
|
||
skipHtmlTags: ["script", "noscript", "style", "textarea", "pre", "footer"],
|
||
}
|
||
};
|
||
`;
|
||
NexT.utils.getScript(null, { textContent: mathjaxCfg });
|
||
NexT.utils.getScript(render_js, { attributes: { id: "MathJax-script", "async": true }});
|
||
}
|
||
|
||
if (render === 'katex') {
|
||
const render_css = NexT.utils.getCDNResource(NexT.CONFIG.page.math.css);
|
||
NexT.utils.getStyle(render_css);
|
||
const render_js_list = NexT.CONFIG.page.math.js;
|
||
render_js_list.forEach(js => {
|
||
const js_loader = NexT.utils.getScript(NexT.utils.getCDNResource(js));
|
||
if(js.name === 'auto-render') {
|
||
js_loader.then(function(){
|
||
renderMathInElement(document.body, {
|
||
delimiters: [
|
||
{left: '$$', right: '$$', display: true},
|
||
{left: '$', right: '$', display: false},
|
||
{left: '\\(', right: '\\)', display: false},
|
||
{left: '\\[', right: '\\]', display: true}
|
||
],
|
||
|
||
throwOnError : false
|
||
})
|
||
});
|
||
}
|
||
});
|
||
}
|
||
} |