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
+15 -15
View File
@@ -413,30 +413,30 @@ const SIDEBARS = {
["Пирамида", "основание + апекс"],
["Правильная","основание — правильный многоугольник; высота в центре основания"],
["Апофема $l$","высота боковой грани"],
["Объём","$V=\\\\dfrac{1}{3}S_{осн}\\\\cdot h$"],
["$S_{бок}$ (правильной)","$\\\\dfrac{1}{2}P_{осн}\\\\cdot l$"],
["Боковое ребро","$b=\\\\sqrt{R^2+h^2}$"],
["Апофема","$l=\\\\sqrt{r^2+h^2}$"],
["Усечённая","$V=\\\\dfrac{h}{3}(S_1+S_2+\\\\sqrt{S_1 S_2})$"]
["Объём","$V=\\dfrac{1}{3}S_{осн}\\cdot h$"],
["$S_{бок}$ (правильной)","$\\dfrac{1}{2}P_{осн}\\cdot l$"],
["Боковое ребро","$b=\\sqrt{R^2+h^2}$"],
["Апофема","$l=\\sqrt{r^2+h^2}$"],
["Усечённая","$V=\\dfrac{h}{3}(S_1+S_2+\\sqrt{S_1 S_2})$"]
]},
p4:{title:"Шпаргалка § 4", rows:[
["Конус","основание ($R$) + апекс"],
["Связь","$l^2=R^2+h^2$"],
["$S_{осн}$","$\\\\pi R^2$"],
["$S_{бок}$","$\\\\pi R l$"],
["$S_{полн}$","$\\\\pi R(R+l)$"],
["$V$","$\\\\dfrac{1}{3}\\\\pi R^2 h$"],
["Развёртка","сектор $r=l$, дуга $2\\\\pi R$"],
["Угол развёртки","$\\\\varphi=\\\\dfrac{360°R}{l}$"],
["Усечённый $V$","$\\\\dfrac{\\\\pi h}{3}(R_1^2+R_2^2+R_1R_2)$"],
["Усечённый $S_{бок}$","$\\\\pi(R_1+R_2)l$"]
["$S_{осн}$","$\\pi R^2$"],
["$S_{бок}$","$\\pi R l$"],
["$S_{полн}$","$\\pi R(R+l)$"],
["$V$","$\\dfrac{1}{3}\\pi R^2 h$"],
["Развёртка","сектор $r=l$, дуга $2\\pi R$"],
["Угол развёртки","$\\varphi=\\dfrac{360°R}{l}$"],
["Усечённый $V$","$\\dfrac{\\pi h}{3}(R_1^2+R_2^2+R_1R_2)$"],
["Усечённый $S_{бок}$","$\\pi(R_1+R_2)l$"]
]},
final2:{title:"Финал раздела 2", rows:[["§ 3–§ 4","теория раздела 2"],["Награда","+50 XP"]]}
};
const TIPS=[
{sec:'p3',html:"Главное правило: <b>$V=\\\\\\\\dfrac{1}{3}S_{осн}h$</b> для <i>любой</i> пирамиды. А для правильной — $S_{бок}=\\\\\\\\dfrac{1}{2}P_{осн}l$, где $l$ — апофема."},
{sec:'p4',html:"Запомни связку: $l^2=R^2+h^2$. Все формулы конуса — это $\\\\\\\\pi R$ умноженное на соответствующий «множитель»: $R$ (основание), $l$ (боковая), $R+l$ (полная), $\\\\\\\\dfrac{Rh}{3}$ (объём)."},
{sec:'p3',html:"Главное правило: <b>$V=\\dfrac{1}{3}S_{осн}h$</b> для <i>любой</i> пирамиды. А для правильной — $S_{бок}=\\dfrac{1}{2}P_{осн}l$, где $l$ — апофема."},
{sec:'p4',html:"Запомни связку: $l^2=R^2+h^2$. Все формулы конуса — это $\\pi R$ умноженное на соответствующий «множитель»: $R$ (основание), $l$ (боковая), $R+l$ (полная), $\\dfrac{Rh}{3}$ (объём)."},
{sec:'final2',html:"Финал раздела 2 — интегрированные задачи по разделу."}
];