|
|
@@ -89,9 +89,19 @@ class MathFormulaProcessor
|
|
|
// 保留 \\+大写字母 的情况(换行符后跟文本,如 \\CD 应保持为 \\CD)
|
|
|
// 保留 \\+数字 或 \\+空白 的情况(矩阵换行符)
|
|
|
$fixEscapedCommands = function ($tex) {
|
|
|
+ // 保护 cases 环境中的换行符 \\,避免被误判为 LaTeX 命令
|
|
|
+ $placeholder = '__KATEX_CASES_BR__';
|
|
|
+ $tex = preg_replace_callback('/\\\\begin\{cases\}([\s\S]*?)\\\\end\{cases\}/', function ($m) use ($placeholder) {
|
|
|
+ $content = str_replace('\\\\', $placeholder, $m[1]);
|
|
|
+ return '\\begin{cases}' . $content . '\\end{cases}';
|
|
|
+ }, $tex);
|
|
|
+
|
|
|
// \\sqrt -> \sqrt, \\frac -> \frac, 但 \\CD 或 \\2 保持不变
|
|
|
// 【修复】只匹配小写字母,因为 LaTeX 命令都是小写
|
|
|
- return preg_replace('/\\\\\\\\([a-z])/', '\\\\$1', $tex);
|
|
|
+ $tex = preg_replace('/\\\\\\\\([a-z])/', '\\\\$1', $tex);
|
|
|
+
|
|
|
+ // 还原 cases 换行
|
|
|
+ return str_replace($placeholder, '\\\\', $tex);
|
|
|
};
|
|
|
|
|
|
// 1. 处理 $$...$$ 块级公式
|