feat: Latex support (#929)
* feat: implement LaTeX math rendering via KaTeX - Add katex, remark-math, and rehype-katex dependencies - Integrate KaTeX CSS with light/dark theme color overrides - Wire remark-math and rehype-katex plugins into MarkdownRenderer - Support inline ($...$) and display ($$...$$) math delimiters - Add plan and task documentation * fix(katex): display inline error messages for invalid LaTeX - Configure rehypeKatex with throwOnError: false to render errors inline - Use destructive color var for error text - Update feature documentation with verification results * chore: remove latex PR artifacts and hardcoded color fallback --------- Co-authored-by: Bohdan Triapitsyn <artmore@protonmail.com>
This commit is contained in:
committed by
GitHub
co-authored by
Bohdan Triapitsyn
parent
2fbfd803f7
commit
324cf49755
@@ -3,6 +3,8 @@ import { renderMermaidASCII, renderMermaidSVG } from 'beautiful-mermaid';
|
||||
import ReactMarkdown from 'react-markdown';
|
||||
import type { Components } from 'react-markdown';
|
||||
import remarkGfm from 'remark-gfm';
|
||||
import remarkMath from 'remark-math';
|
||||
import rehypeKatex from 'rehype-katex';
|
||||
import { marked, type Tokens } from 'marked';
|
||||
import remend from 'remend';
|
||||
import { FadeInOnReveal } from './message/FadeInOnReveal';
|
||||
@@ -817,7 +819,7 @@ const MarkdownBlockView: React.FC<{
|
||||
components: Components;
|
||||
}> = React.memo(({ block, components }) => {
|
||||
return (
|
||||
<ReactMarkdown remarkPlugins={[remarkGfm]} components={components}>
|
||||
<ReactMarkdown remarkPlugins={[remarkGfm, remarkMath]} rehypePlugins={[[rehypeKatex, { throwOnError: false, errorColor: 'var(--destructive)' }]]} components={components}>
|
||||
{block.src}
|
||||
</ReactMarkdown>
|
||||
);
|
||||
|
||||
Reference in New Issue
Block a user