mirror of
https://github.com/danny-avila/LibreChat.git
synced 2025-12-19 01:40:15 +01:00
25 lines
1.1 KiB
TypeScript
25 lines
1.1 KiB
TypeScript
|
|
// Regex to check if the processed content contains any potential LaTeX patterns
|
||
|
|
const containsLatexRegex =
|
||
|
|
/\\\(.*?\\\)|\\\[.*?\\\]|\$.*?\$|\\begin\{equation\}.*?\\end\{equation\}/;
|
||
|
|
// Regex for inline and block LaTeX expressions
|
||
|
|
const inlineLatex = new RegExp(/\\\((.+?)\\\)/, 'g');
|
||
|
|
// const blockLatex = new RegExp(/\\\[(.*?)\\\]/, 'gs');
|
||
|
|
const blockLatex = new RegExp(/\\\[(.*?[^\\])\\\]/, 'gs');
|
||
|
|
|
||
|
|
export const processLaTeX = (content: string) => {
|
||
|
|
// Escape dollar signs followed by a digit or space and digit
|
||
|
|
let processedContent = content.replace(/(\$)(?=\s?\d)/g, '\\$');
|
||
|
|
|
||
|
|
// If no LaTeX patterns are found, return the processed content
|
||
|
|
if (!containsLatexRegex.test(processedContent)) {
|
||
|
|
return processedContent;
|
||
|
|
}
|
||
|
|
|
||
|
|
// Convert LaTeX expressions to a markdown compatible format
|
||
|
|
processedContent = processedContent
|
||
|
|
.replace(inlineLatex, (match: string, equation: string) => `$${equation}$`) // Convert inline LaTeX
|
||
|
|
.replace(blockLatex, (match: string, equation: string) => `$$${equation}$$`); // Convert block LaTeX
|
||
|
|
|
||
|
|
return processedContent;
|
||
|
|
};
|