54 lines
1.8 KiB
JavaScript
54 lines
1.8 KiB
JavaScript
|
|
/* KaTeX Auto-Render - Local Fallback */
|
||
|
|
(function() {
|
||
|
|
'use strict';
|
||
|
|
|
||
|
|
console.warn('KaTeX Auto-Render 本地备用版本 - 功能受限');
|
||
|
|
|
||
|
|
window.renderMathInElement = function(element, options) {
|
||
|
|
console.warn('KaTeX 自动渲染功能不可用 - 使用备用版本');
|
||
|
|
|
||
|
|
options = options || {};
|
||
|
|
var delimiters = options.delimiters || [
|
||
|
|
{left: "$$", right: "$$", display: true},
|
||
|
|
{left: "$", right: "$", display: false},
|
||
|
|
{left: "\\(", right: "\\)", display: false},
|
||
|
|
{left: "\\[", right: "\\]", display: true}
|
||
|
|
];
|
||
|
|
|
||
|
|
if (!element) {
|
||
|
|
element = document.body;
|
||
|
|
}
|
||
|
|
|
||
|
|
// 简单的文本替换处理
|
||
|
|
var walker = document.createTreeWalker(
|
||
|
|
element,
|
||
|
|
NodeFilter.SHOW_TEXT,
|
||
|
|
null,
|
||
|
|
false
|
||
|
|
);
|
||
|
|
|
||
|
|
var textNodes = [];
|
||
|
|
var node;
|
||
|
|
while (node = walker.nextNode()) {
|
||
|
|
textNodes.push(node);
|
||
|
|
}
|
||
|
|
|
||
|
|
textNodes.forEach(function(textNode) {
|
||
|
|
var text = textNode.textContent;
|
||
|
|
var hasMatch = false;
|
||
|
|
|
||
|
|
delimiters.forEach(function(delimiter) {
|
||
|
|
if (text.includes(delimiter.left) && text.includes(delimiter.right)) {
|
||
|
|
hasMatch = true;
|
||
|
|
}
|
||
|
|
});
|
||
|
|
|
||
|
|
if (hasMatch) {
|
||
|
|
var span = document.createElement('span');
|
||
|
|
span.innerHTML = text.replace(/\$([^$]+)\$/g,
|
||
|
|
'<span class="katex" style="font-style: italic; color: #666;" title="数学公式渲染服务不可用">$1</span>');
|
||
|
|
textNode.parentNode.replaceChild(span, textNode);
|
||
|
|
}
|
||
|
|
});
|
||
|
|
};
|
||
|
|
})();
|