diff --git a/web/app/components/base/markdown.tsx b/web/app/components/base/markdown.tsx index 3b846c0e2f..0e583fd48f 100644 --- a/web/app/components/base/markdown.tsx +++ b/web/app/components/base/markdown.tsx @@ -66,12 +66,22 @@ const preprocessLaTeX = (content: string) => { if (typeof content !== 'string') return content - return flow([ + const codeBlockRegex = /```[\s\S]*?```/g + const codeBlocks = content.match(codeBlockRegex) || [] + let processedContent = content.replace(codeBlockRegex, 'CODE_BLOCK_PLACEHOLDER') + + processedContent = flow([ (str: string) => str.replace(/\\\[(.*?)\\\]/g, (_, equation) => `$$${equation}$$`), (str: string) => str.replace(/\\\[(.*?)\\\]/gs, (_, equation) => `$$${equation}$$`), (str: string) => str.replace(/\\\((.*?)\\\)/g, (_, equation) => `$$${equation}$$`), (str: string) => str.replace(/(^|[^\\])\$(.+?)\$/g, (_, prefix, equation) => `${prefix}$${equation}$`), - ])(content) + ])(processedContent) + + codeBlocks.forEach((block) => { + processedContent = processedContent.replace('CODE_BLOCK_PLACEHOLDER', block) + }) + + return processedContent } const preprocessThinkTag = (content: string) => {