| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- // 简化的数学公式渲染调试脚本
- (function() {
- 'use strict';
- console.log('[Debug] Script loaded');
- // 等待页面加载完成
- function init() {
- console.log('[Debug] DOMContentLoaded fired');
- // 检查 KaTeX 是否存在
- if (typeof window.katex === 'undefined') {
- console.error('[Debug] KaTeX is not loaded!');
- return;
- }
- console.log('[Debug] KaTeX is loaded:', window.katex);
- // 查找所有 math-render 元素
- const elements = document.querySelectorAll('.math-render');
- console.log('[Debug] Found', elements.length, 'math-render elements');
- elements.forEach((el, index) => {
- console.log(`[Debug] Element ${index}:`, el);
- renderElement(el);
- });
- }
- function renderElement(element) {
- if (!element) return;
- // 避免重复渲染
- if (element.dataset.rendered === 'true') {
- console.log('[Debug] Already rendered:', element);
- return;
- }
- const content = element.dataset.mathContent || element.textContent;
- console.log('[Debug] Content to render:', content);
- if (!content) {
- console.warn('[Debug] No content found');
- return;
- }
- try {
- let html = content;
- // 渲染 $$...$$ 块级公式
- html = html.replace(/\$\$([\s\S]*?)\$\$/g, (match, formula) => {
- try {
- return window.katex.renderToString(formula.trim(), {
- throwOnError: false,
- displayMode: true
- });
- } catch (e) {
- console.warn('KaTeX block render error:', e);
- return match;
- }
- });
- // 渲染 $...$ 行内公式
- html = html.replace(/\$(.*?)\$/g, (match, formula) => {
- try {
- console.log('[Debug] Rendering inline formula:', formula);
- return window.katex.renderToString(formula, {
- throwOnError: false,
- displayMode: false
- });
- } catch (e) {
- console.warn('KaTeX inline render error:', e);
- return match;
- }
- });
- console.log('[Debug] Rendered HTML:', html);
- element.innerHTML = html;
- element.dataset.rendered = 'true';
- console.log('[Debug] Rendered successfully');
- } catch (e) {
- console.error('[Debug] Render error:', e);
- }
- }
- // 监听 DOMContentLoaded
- if (document.readyState === 'loading') {
- document.addEventListener('DOMContentLoaded', init);
- } else {
- init();
- }
- })();
|