Skip to content

Commit

Permalink
Fix: Fixed an issue where math formulas could not be displayed correc…
Browse files Browse the repository at this point in the history
…tly #4405 (#4506)

### What problem does this PR solve?

[remarkjs/react-markdown/issues/785](remarkjs/react-markdown#785)
Fix: Fixed an issue where math formulas could not be displayed correctly
#4405

### Type of change

- [x] Bug Fix (non-breaking change which fixes an issue)
  • Loading branch information
cike8899 authored Jan 16, 2025
1 parent 39be08c commit 3723531
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 2 deletions.
3 changes: 2 additions & 1 deletion web/src/components/highlight-markdown/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import remarkMath from 'remark-math';

import 'katex/dist/katex.min.css'; // `rehype-katex` does not import the CSS for you

import { preprocessLaTeX } from '@/utils/chat';
import styles from './index.less';

const HightLightMarkdown = ({
Expand Down Expand Up @@ -43,7 +44,7 @@ const HightLightMarkdown = ({
} as any
}
>
{children}
{children ? preprocessLaTeX(children) : children}
</Markdown>
);
};
Expand Down
4 changes: 3 additions & 1 deletion web/src/pages/chat/markdown-content/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,9 @@ import { useTranslation } from 'react-i18next';

import 'katex/dist/katex.min.css'; // `rehype-katex` does not import the CSS for you

import { preprocessLaTeX } from '@/utils/chat';
import { replaceTextByOldReg } from '../utils';

import styles from './index.less';

const reg = /(~{2}\d+={2})/g;
Expand Down Expand Up @@ -48,7 +50,7 @@ const MarkdownContent = ({
text = t('chat.searching');
}
const nextText = replaceTextByOldReg(text);
return loading ? nextText?.concat('~~2$$') : nextText;
return loading ? nextText?.concat('~~2$$') : preprocessLaTeX(nextText);
}, [content, loading, t]);

useEffect(() => {
Expand Down
15 changes: 15 additions & 0 deletions web/src/utils/chat.ts
Original file line number Diff line number Diff line change
Expand Up @@ -34,3 +34,18 @@ export const buildMessageUuidWithRole = (
) => {
return `${message.role}_${message.id}`;
};

// Preprocess LaTeX equations to be rendered by KaTeX
// ref: https://github.com/remarkjs/react-markdown/issues/785

export const preprocessLaTeX = (content: string) => {
const blockProcessedContent = content.replace(
/\\\[([\s\S]*?)\\\]/g,
(_, equation) => `$$${equation}$$`,
);
const inlineProcessedContent = blockProcessedContent.replace(
/\\\(([\s\S]*?)\\\)/g,
(_, equation) => `$${equation}$`,
);
return inlineProcessedContent;
};

0 comments on commit 3723531

Please sign in to comment.