enh: latex

This commit is contained in:
Timothy J. Baek 2024-07-20 11:17:24 +02:00
parent 52cf06b36c
commit 41fecb800d
2 changed files with 21 additions and 0 deletions

View File

@ -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 },

View File

@ -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;