diff --git a/src/lib/components/chat/Messages/ResponseMessage.svelte b/src/lib/components/chat/Messages/ResponseMessage.svelte index c1224b5e1..0d02cba61 100644 --- a/src/lib/components/chat/Messages/ResponseMessage.svelte +++ b/src/lib/components/chat/Messages/ResponseMessage.svelte @@ -182,6 +182,7 @@ { left: '\\[', right: '\\]', display: false }, { left: '[ ', right: ' ]', display: false }, { left: '\\begin{equation}', right: '\\end{equation}', display: true }, + { left: '\\begin{matrix}', right: '\\end{matrix}', display: true }, { left: '\\begin{align}', right: '\\end{align}', display: true }, { left: '\\begin{alignat}', right: '\\end{alignat}', display: true }, { left: '\\begin{gather}', right: '\\end{gather}', display: true }, diff --git a/src/lib/utils/index.ts b/src/lib/utils/index.ts index 196085dbd..860bb92cf 100644 --- a/src/lib/utils/index.ts +++ b/src/lib/utils/index.ts @@ -6,9 +6,29 @@ import { WEBUI_BASE_URL } from '$lib/constants'; // Helper functions ////////////////////////// +const convertLatexToSingleLine = (content) => { + // Patterns to match multiline LaTeX blocks + const patterns = [ + /(\$\$[\s\S]*?\$\$)/g, // Match $$ ... $$ + /(\\[\s\S]*?\\])/g, // Match \[ ... \] + /(\$\[\s\S]*?\$\])/g, // Match $\[ ... \]$ + /(\$\(\s\S]*?\$\))/g, // Match $\( ... \)$ + /(\\begin\{[a-z]+\}[\s\S]*?\\end\{[a-z]+\})/g // Match \begin{...} ... \end{...} + ]; + + patterns.forEach((pattern) => { + content = content.replace(pattern, (match) => { + return match.replace(/\s+/g, ' ').trim(); + }); + }); + + return content; +}; + export const sanitizeResponseContent = (content: string) => { // replace single backslash with double backslash content = content.replace(/\\/g, '\\\\'); + content = convertLatexToSingleLine(content); // First, temporarily replace valid