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
+4 -4
View File
@@ -409,14 +409,14 @@ function goTo(id){
}
const SIDEBARS = {
p1:{title:"Шпаргалка § 1", rows:[["Тема","Призма"],["Прямая","$S_{бок}=P_{осн}\\\\cdot h$"],["Наклонная","$S_{бок}=P_{пер}\\\\cdot l$"],["Объём","$V=S_{осн}\\\\cdot h$"],["Диагональ пар.","$d=\\\\sqrt{a^2+b^2+c^2}$"]]},
p2:{title:"Шпаргалка § 2", rows:[["Тема", "Цилиндр"],["$S_{осн}$","$\\\\pi R^2$"],["$S_{бок}$","$2\\\\pi Rh$"],["$S_{полн}$","$2\\\\pi R(R+h)$"],["$V$","$\\\\pi R^2 h$"],["Развёртка","прямоуг. $2\\\\pi R \\\\times h$"],["Осевое сеч.","прямоуг. $2R \\\\times h$"],["Наклон. сеч.","эллипс, $a=R/\\\\cos\\\\alpha$, $b=R$"]]},
p1:{title:"Шпаргалка § 1", rows:[["Тема","Призма"],["Прямая","$S_{бок}=P_{осн}\\cdot h$"],["Наклонная","$S_{бок}=P_{пер}\\cdot l$"],["Объём","$V=S_{осн}\\cdot h$"],["Диагональ пар.","$d=\\sqrt{a^2+b^2+c^2}$"]]},
p2:{title:"Шпаргалка § 2", rows:[["Тема", "Цилиндр"],["$S_{осн}$","$\\pi R^2$"],["$S_{бок}$","$2\\pi Rh$"],["$S_{полн}$","$2\\pi R(R+h)$"],["$V$","$\\pi R^2 h$"],["Развёртка","прямоуг. $2\\pi R \\times h$"],["Осевое сеч.","прямоуг. $2R \\times h$"],["Наклон. сеч.","эллипс, $a=R/\\cos\\alpha$, $b=R$"]]},
final1:{title:"Финал раздела 1", rows:[["§ 1","Призма"],["§ 2","Цилиндр"],["Боссы","5 интегрированных"],["Награда","+50 XP + ачивка"]]}
};
const TIPS=[
{sec:'p1',html:"§ 1 «Призма» — крути 3D-модель в интерактиве 1, проверь формулы в калькуляторе. Главное: $V=S_{осн}\\\\cdot h$, $S_{бок}=P_{осн}\\\\cdot h$ (для прямой)."},
{sec:'p2',html:"§ 2 «Цилиндр» — крути 3D-модель в интерактиве 1, разбирай сечения в IV2 (круг/прямоугольник/эллипс). Главное: $S_{бок}=2\\\\\\\\pi Rh$, $V=\\\\\\\\pi R^2 h$, развёртка боковой поверхности — прямоугольник $2\\\\\\\\pi R \\\\\\\\times h$."},
{sec:'p1',html:"§ 1 «Призма» — крути 3D-модель в интерактиве 1, проверь формулы в калькуляторе. Главное: $V=S_{осн}\\cdot h$, $S_{бок}=P_{осн}\\cdot h$ (для прямой)."},
{sec:'p2',html:"§ 2 «Цилиндр» — крути 3D-модель в интерактиве 1, разбирай сечения в IV2 (круг/прямоугольник/эллипс). Главное: $S_{бок}=2\\pi Rh$, $V=\\pi R^2 h$, развёртка боковой поверхности — прямоугольник $2\\pi R \\times h$."},
{sec:'final1',html:"Финал раздела 1 — интегрированные задачи по разделу."}
];