import "katex/dist/katex.min.css" import remarkGfm from "remark-gfm" import remarkMath from "remark-math" import ReactMarkdown from "react-markdown" import rehypeKatex from "rehype-katex" import "property-information" import React from "react" import { CodeBlock } from "./CodeBlock" export const preprocessLaTeX = (content: string) => { // Replace block-level LaTeX delimiters \[ \] with $$ $$ const blockProcessedContent = content.replace( /\\\[(.*?)\\\]/gs, (_, equation) => `$$${equation}$$` ) // Replace inline LaTeX delimiters \( \) with $ $ const inlineProcessedContent = blockProcessedContent.replace( /\\\((.*?)\\\)/gs, (_, equation) => `$${equation}$` ) return inlineProcessedContent } function Markdown({ message, className = "prose break-words dark:prose-invert prose-p:leading-relaxed prose-pre:p-0 dark:prose-dark" }: { message: string className?: string }) { message = preprocessLaTeX(message) return ( ) : ( {children} ) }, a({ node, ...props }) { return ( {props.children} ) }, p({ children }) { return

{children}

} }}> {message}
) } export default Markdown