diff --git a/frontend/package.json b/frontend/package.json index d5449b6..5f5c660 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -12,6 +12,7 @@ "@sveltejs/adapter-node": "^5.0.0", "@sveltejs/kit": "^2.0.0", "@sveltejs/vite-plugin-svelte": "^5.0.0", + "@types/katex": "^0.16.7", "svelte": "^5.0.0", "svelte-check": "^4.0.0", "typescript": "^5.0.0", @@ -23,6 +24,7 @@ "@codemirror/theme-one-dark": "^6.1.0", "codemirror": "^6.0.1", "highlight.js": "^11.11.0", + "katex": "^0.16.9", "marked": "^15.0.0" } } diff --git a/frontend/src/app.html b/frontend/src/app.html index cb664d7..a1c50e5 100644 --- a/frontend/src/app.html +++ b/frontend/src/app.html @@ -6,6 +6,7 @@ + %sveltekit.head%
diff --git a/frontend/src/lib/actions/renderMath.ts b/frontend/src/lib/actions/renderMath.ts new file mode 100644 index 0000000..24e93d9 --- /dev/null +++ b/frontend/src/lib/actions/renderMath.ts @@ -0,0 +1,59 @@ +import { browser } from '$app/environment'; +import katex from 'katex'; + +export async function autoRenderMath(node: HTMLElement) { + if (!browser) return; + + try { + const renderMathInElement = (await import('katex/dist/contrib/auto-render')).default; + await import('katex/dist/katex.min.css'); + + // 1. First, handle the standard delimiters + renderMathInElement(node, { + delimiters: [ + { left: '$$', right: '$$', display: true }, + { left: '$', right: '$', display: false }, + { left: '\\(', right: '\\)', display: false }, + { left: '\\[', right: '\\]', display: true } + ], + throwOnError: false + }); + + // 2. Then, handle @@ -10,7 +11,7 @@ {#if data.homeContent} -