Browse Source

enh: latex

Timothy J. Baek 9 months ago
parent
commit
41fecb800d
2 changed files with 21 additions and 0 deletions
  1. 1 0
      src/lib/components/chat/Messages/ResponseMessage.svelte
  2. 20 0
      src/lib/utils/index.ts

+ 1 - 0
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 },

+ 20 - 0
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 <video> tags with a placeholder
 	const videoTagRegex = /<video\s+src="([^"]+)"\s+controls><\/video>/gi;