diff options
| author | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-02-12 20:57:17 +0100 |
|---|---|---|
| committer | Mitja Felicijan <mitja.felicijan@gmail.com> | 2026-02-12 20:57:17 +0100 |
| commit | b333b06772c89d96aacb5490d6a219fba7c09cc6 (patch) | |
| tree | 211df60083a5946baa2ed61d33d8121b7e251b06 /llama.cpp/tools/server/webui/src/lib/constants/latex-protection.ts | |
| download | llmnpc-b333b06772c89d96aacb5490d6a219fba7c09cc6.tar.gz | |
Engage!
Diffstat (limited to 'llama.cpp/tools/server/webui/src/lib/constants/latex-protection.ts')
| -rw-r--r-- | llama.cpp/tools/server/webui/src/lib/constants/latex-protection.ts | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/llama.cpp/tools/server/webui/src/lib/constants/latex-protection.ts b/llama.cpp/tools/server/webui/src/lib/constants/latex-protection.ts new file mode 100644 index 0000000..27c88e7 --- /dev/null +++ b/llama.cpp/tools/server/webui/src/lib/constants/latex-protection.ts @@ -0,0 +1,35 @@ +/** + * Matches common Markdown code blocks to exclude them from further processing (e.g. LaTeX). + * - Fenced: ```...``` + * - Inline: `...` (does NOT support nested backticks or multi-backtick syntax) + * + * Note: This pattern does not handle advanced cases like: + * `` `code with `backticks` `` or \\``...\\`` + */ +export const CODE_BLOCK_REGEXP = /(```[\s\S]*?```|`[^`\n]+`)/g; + +/** + * Matches LaTeX math delimiters \(...\) and \[...\] only when not preceded by a backslash (i.e., not escaped), + * while also capturing code blocks (```, `...`) so they can be skipped during processing. + * + * Uses negative lookbehind `(?<!\\)` to avoid matching \\( or \\[. + * Using the lookâbehind pattern `(?<!\\)` we skip matches + * that are preceded by a backslash, e.g. + * `Definitions\\(also called macros)` (title of chapter 20 in The TeXbook) + * or `\\[4pt]` (LaTeX line-break). + * + * group 1: code-block + * group 2: square-bracket + * group 3: round-bracket + */ +export const LATEX_MATH_AND_CODE_PATTERN = + /(```[\S\s]*?```|`.*?`)|(?<!\\)\\\[([\S\s]*?[^\\])\\]|(?<!\\)\\\((.*?)\\\)/g; + +/** Regex to capture the content of a $$...\\\\...$$ block (display-formula with line-break) */ +export const LATEX_LINEBREAK_REGEXP = /\$\$([\s\S]*?\\\\[\s\S]*?)\$\$/; + +/** map from mchem-regexp to replacement */ +export const MHCHEM_PATTERN_MAP: readonly [RegExp, string][] = [ + [/(\s)\$\\ce{/g, '$1$\\\\ce{'], + [/(\s)\$\\pu{/g, '$1$\\\\pu{'] +] as const; |
