/** * Convertit les délimiteurs LaTeX en nœuds TipTap pour le rendu KaTeX. * À appliquer sur tout contenu HTML généré par l'IA avant stockage en DB. */ export function preprocessMathInHtml(html: string): string { let result = html // 1. \[...\] → block math result = result.replace(/\\\[([\s\S]+?)\\\]/g, (_, latex) => { const escaped = latex.trim().replace(/"/g, '"') return `

` }) // 2. $$...$$ → block math result = result.replace(/\$\$([\s\S]+?)\$\$/g, (_, latex) => { const escaped = latex.trim().replace(/"/g, '"') return `

` }) // 3. \(...\) → inline math result = result.replace(/\\\(([\s\S]+?)\\\)/g, (_, latex) => { const escaped = latex.trim().replace(/"/g, '"') return `${escaped}` }) // 4. $...$ → inline math (only single $ not followed by another $) result = result.replace(/(? { const escaped = latex.trim().replace(/"/g, '"') return `${escaped}` }) // 5. Clean up empty

tags result = result.replace(/

\s*<\/p>/g, '') return result }