fix(textbooks): убраны лишние слэши в LaTeX-формулах (over-escaping)

Формулы в JS-литералах имели \\\\dfrac / \\\\\\\\dfrac (4/8 слэшей) вместо
\\dfrac (2). После JS-анескейпа KaTeX получал \\dfrac, трактовал \\ как
перенос строки и печатал dfrac/cdot/sqrt/pi как текст (карточка пирамиды и
конуса в geometry_11_ch2, и др.).

Схлопнуты прогоны слэшей кратные 4 перед LaTeX-командой -> 2. Прогоны из
3 слэшей (\\ перенос строки + \cmd в \begin{cases}) и перед x/цифрой не
тронуты. 150 правок в 7 файлах (algebra_11_ch1/ch2/ch3, geometry_11_ch1..ch4).

БД чиста: questions (1398) text/explanation/correct_text + options (5187) -
0 багов. Скрипт: backend/scripts/fix_overescaped_latex.js (идемпотентный,
dry-run по умолчанию, --apply, с KaTeX-валидацией).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Maxim Dolgolyov
2026-05-30 11:53:17 +03:00
parent 3801d0cfa8
commit 8786cf5e20
8 changed files with 163 additions and 55 deletions
+7 -7
View File
@@ -411,17 +411,17 @@ function goTo(id){
}
const SIDEBARS = {
p7:{title:"Шпаргалка §7",rows:[["Произв.","$\\\\log_a(bc) = \\\\log_a b + \\\\log_a c$"],["Част.","$\\\\log_a(b/c) = \\\\log_a b - \\\\log_a c$"],["Степ.","$\\\\log_a b^k = k \\\\log_a b$"],["Перех.","$\\\\log_a b = \\\\dfrac{\\\\log_c b}{\\\\log_c a}$"]]},
p8:{title:"Шпаргалка §8",rows:[["Вид","$y = \\\\log_a x$, $a > 0$, $a \\\\ne 1$"],["D(f)","$x > 0$"],["E(f)","$y \\\\in \\\\mathbb{R}$"],["$a > 1$","возрастает"],["$0 < a < 1$","убывает"],["Точка","проходит через $(1; 0)$"]]},
p9:{title:"Шпаргалка §9",rows:[["Базовый","$\\\\log_a f = \\\\log_a g \\\\iff f = g$, $f, g > 0$"],["ОДЗ","всё под $\\\\log > 0$, основание $a > 0$, $a \\\\ne 1$"],["Замена","$t = \\\\log_a x$"]]},
p10:{title:"Шпаргалка §10",rows:[["$a > 1$","$\\\\log_a f > \\\\log_a g \\\\iff f > g > 0$"],["$0 < a < 1$","$\\\\log_a f > \\\\log_a g \\\\iff 0 < f < g$ (знак меняется!)"],["ОДЗ","обязательно учесть"]]},
p7:{title:"Шпаргалка §7",rows:[["Произв.","$\\log_a(bc) = \\log_a b + \\log_a c$"],["Част.","$\\log_a(b/c) = \\log_a b - \\log_a c$"],["Степ.","$\\log_a b^k = k \\log_a b$"],["Перех.","$\\log_a b = \\dfrac{\\log_c b}{\\log_c a}$"]]},
p8:{title:"Шпаргалка §8",rows:[["Вид","$y = \\log_a x$, $a > 0$, $a \\ne 1$"],["D(f)","$x > 0$"],["E(f)","$y \\in \\mathbb{R}$"],["$a > 1$","возрастает"],["$0 < a < 1$","убывает"],["Точка","проходит через $(1; 0)$"]]},
p9:{title:"Шпаргалка §9",rows:[["Базовый","$\\log_a f = \\log_a g \\iff f = g$, $f, g > 0$"],["ОДЗ","всё под $\\log > 0$, основание $a > 0$, $a \\ne 1$"],["Замена","$t = \\log_a x$"]]},
p10:{title:"Шпаргалка §10",rows:[["$a > 1$","$\\log_a f > \\log_a g \\iff f > g > 0$"],["$0 < a < 1$","$\\log_a f > \\log_a g \\iff 0 < f < g$ (знак меняется!)"],["ОДЗ","обязательно учесть"]]},
final3:{title:"Финал главы 3",rows:[["§§710","теория главы 3"],["Награда","+50 XP"]]}
};
const TIPS=[
{sec:'p7',html:"$\\\\log_a(bc) = \\\\log_a b + \\\\log_a c$ — произведение в логарифме превращается в сумму."},
{sec:'p8',html:"График $y = \\\\log_a x$ — зеркальное отражение $y = a^x$ относительно $y = x$."},
{sec:'p9',html:"<b>Всегда</b> выписывай ОДЗ: всё под $\\\\log$ должно быть строго положительно."},
{sec:'p7',html:"$\\log_a(bc) = \\log_a b + \\log_a c$ — произведение в логарифме превращается в сумму."},
{sec:'p8',html:"График $y = \\log_a x$ — зеркальное отражение $y = a^x$ относительно $y = x$."},
{sec:'p9',html:"<b>Всегда</b> выписывай ОДЗ: всё под $\\log$ должно быть строго положительно."},
{sec:'p10',html:"При $0 < a < 1$ — знак неравенства меняется. ОДЗ обязательно."},
{sec:'final3',html:"Финал главы 3 — синтез логарифмов и логарифмических функций."}
];