mirror of
https://github.com/langgenius/dify.git
synced 2024-11-16 03:32:23 +08:00
feat: support Latex (#5001)
Co-authored-by: crazywoola <100913391+crazywoola@users.noreply.github.com>
This commit is contained in:
parent
c7641be093
commit
3828d4cd22
|
@ -39,6 +39,11 @@ const getCorrectCapitalizationLanguageName = (language: string) => {
|
|||
|
||||
return language.charAt(0).toUpperCase() + language.substring(1)
|
||||
}
|
||||
|
||||
const preprocessLaTeX = (content: string) =>
|
||||
content.replace(/\\\[(.*?)\\\]/gs, (_, equation) => `$$${equation}$$`)
|
||||
.replace(/\\\((.*?)\\\)/gs, (_, equation) => `$${equation}$`)
|
||||
|
||||
export function PreCode(props: { children: any }) {
|
||||
const ref = useRef<HTMLPreElement>(null)
|
||||
|
||||
|
@ -82,12 +87,13 @@ const useLazyLoad = (ref: RefObject<Element>): boolean => {
|
|||
|
||||
export function Markdown(props: { content: string; className?: string }) {
|
||||
const [isSVG, setIsSVG] = useState(false)
|
||||
const latexContent = preprocessLaTeX(props.content)
|
||||
return (
|
||||
<div className={cn(props.className, 'markdown-body')}>
|
||||
<ReactMarkdown
|
||||
remarkPlugins={[[RemarkMath, { singleDollarTextMath: false }], RemarkGfm, RemarkBreaks]}
|
||||
rehypePlugins={[
|
||||
RehypeKatex,
|
||||
RehypeKatex as any,
|
||||
]}
|
||||
components={{
|
||||
code({ inline, className, children, ...props }) {
|
||||
|
@ -179,7 +185,7 @@ export function Markdown(props: { content: string; className?: string }) {
|
|||
linkTarget='_blank'
|
||||
>
|
||||
{/* Markdown detect has problem. */}
|
||||
{props.content}
|
||||
{latexContent}
|
||||
</ReactMarkdown>
|
||||
</div>
|
||||
)
|
||||
|
|
Loading…
Reference in New Issue
Block a user