Skip to content

Commit 1c8c5c0

Browse files
committed
feat: support math formula
1 parent 81328b6 commit 1c8c5c0

File tree

4 files changed

+229
-2
lines changed

4 files changed

+229
-2
lines changed

app/[locale]/layout.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,7 @@ import { Inter } from "next/font/google"
1010
import { cookies } from "next/headers"
1111
import { ReactNode } from "react"
1212
import "./globals.css"
13+
import 'katex/dist/katex.min.css'
1314

1415
const inter = Inter({ subsets: ["latin"] })
1516
const APP_NAME = "Chatbot UI"

components/messages/message-markdown.tsx

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,16 +3,26 @@ import remarkGfm from "remark-gfm"
33
import remarkMath from "remark-math"
44
import { MessageCodeBlock } from "./message-codeblock"
55
import { MessageMarkdownMemoized } from "./message-markdown-memoized"
6+
import rehypeKatex from 'rehype-katex';
67

78
interface MessageMarkdownProps {
89
content: string
910
}
1011

12+
const replaceMathDelimiters = (content: string) => {
13+
return content
14+
.replace(/\\\(/g, '$')
15+
.replace(/\\\)/g, '$')
16+
.replace(/\\\[/g, '\n$$')
17+
.replace(/\\\]/g, '$$\n');
18+
};
19+
1120
export const MessageMarkdown: FC<MessageMarkdownProps> = ({ content }) => {
1221
return (
1322
<MessageMarkdownMemoized
1423
className="prose dark:prose-invert prose-p:leading-relaxed prose-pre:p-0 min-w-full space-y-6 break-words"
1524
remarkPlugins={[remarkGfm, remarkMath]}
25+
rehypePlugins={[rehypeKatex]}
1626
components={{
1727
p({ children }) {
1828
return <p className="mb-2 last:mb-0">{children}</p>
@@ -59,7 +69,7 @@ export const MessageMarkdown: FC<MessageMarkdownProps> = ({ content }) => {
5969
}
6070
}}
6171
>
62-
{content}
72+
{replaceMathDelimiters(content)}
6373
</MessageMarkdownMemoized>
6474
)
6575
}

package-lock.json

Lines changed: 216 additions & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,7 @@
9191
"react-markdown": "^9.0.1",
9292
"react-syntax-highlighter": "^15.5.0",
9393
"react-textarea-autosize": "^8.5.3",
94+
"rehype-katex": "^7.0.1",
9495
"remark-gfm": "^4.0.0",
9596
"remark-math": "^6.0.0",
9697
"sonner": "^1.3.1",

0 commit comments

Comments
 (0)