mirror of
https://github.com/open-webui/open-webui
synced 2025-06-25 09:47:41 +00:00
fix(katex): Allow Chinese characters adjacent to math delimiters
This commit is contained in:
parent
ed210517c2
commit
de182ddec2
@ -10,6 +10,9 @@ const DELIMITER_LIST = [
|
|||||||
{ left: '\\begin{equation}', right: '\\end{equation}', display: true }
|
{ left: '\\begin{equation}', right: '\\end{equation}', display: true }
|
||||||
];
|
];
|
||||||
|
|
||||||
|
// Defines characters that are allowed to immediately precede or follow a math delimiter.
|
||||||
|
const ALLOWED_SURROUNDING_CHARS = '\\s?。,!-\\/:-@\\[-`{-~\\p{Script=Han}';
|
||||||
|
|
||||||
// const DELIMITER_LIST = [
|
// const DELIMITER_LIST = [
|
||||||
// { left: '$$', right: '$$', display: false },
|
// { left: '$$', right: '$$', display: false },
|
||||||
// { left: '$', right: '$', display: false },
|
// { left: '$', right: '$', display: false },
|
||||||
@ -44,10 +47,13 @@ function generateRegexRules(delimiters) {
|
|||||||
|
|
||||||
// Math formulas can end in special characters
|
// Math formulas can end in special characters
|
||||||
const inlineRule = new RegExp(
|
const inlineRule = new RegExp(
|
||||||
`^(${inlinePatterns.join('|')})(?=[\\s?。,!-\/:-@[-\`{-~]|$)`,
|
`^(${inlinePatterns.join('|')})(?=[${ALLOWED_SURROUNDING_CHARS}]|$)`,
|
||||||
|
'u'
|
||||||
|
);
|
||||||
|
const blockRule = new RegExp(
|
||||||
|
`^(${blockPatterns.join('|')})(?=[${ALLOWED_SURROUNDING_CHARS}]|$)`,
|
||||||
'u'
|
'u'
|
||||||
);
|
);
|
||||||
const blockRule = new RegExp(`^(${blockPatterns.join('|')})(?=[\\s?。,!-\/:-@[-\`{-~]|$)`, 'u');
|
|
||||||
|
|
||||||
return { inlineRule, blockRule };
|
return { inlineRule, blockRule };
|
||||||
}
|
}
|
||||||
@ -91,7 +97,9 @@ function katexStart(src, displayMode: boolean) {
|
|||||||
|
|
||||||
// Check if the delimiter is preceded by a special character.
|
// Check if the delimiter is preceded by a special character.
|
||||||
// If it does, then it's potentially a math formula.
|
// If it does, then it's potentially a math formula.
|
||||||
const f = index === 0 || indexSrc.charAt(index - 1).match(/[\s?。,!-\/:-@[-`{-~]/);
|
const f =
|
||||||
|
index === 0 ||
|
||||||
|
indexSrc.charAt(index - 1).match(new RegExp(`[${ALLOWED_SURROUNDING_CHARS}]`, 'u'));
|
||||||
if (f) {
|
if (f) {
|
||||||
const possibleKatex = indexSrc.substring(index);
|
const possibleKatex = indexSrc.substring(index);
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user