Копия пользовательской автопамяти (29 фактов + индекс MEMORY.md) в .claude/memory/, чтобы переносить между машинами через git. README.md — как восстановить в пользовательскую папку на другой машине. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.1 KiB
name, description, metadata
| name | description | metadata | ||||||
|---|---|---|---|---|---|---|---|---|
| reference_textbook_latex_escaping | Баг формул в учебниках = ЛИШНИЕ слэши (over-escaping), не нехватка; правило чётности и фикс-скрипт |
|
Формулы в учебниках (frontend/textbooks/*.html) лежат в JS-строковых литералах, рендерит KaTeX через renderMathInElement. Симптом «формула печатается текстом» (dfrac13S_осн, sqrtR^2+h^2, cdoth — карточка пирамиды/конуса в geometry_11_ch2) — это ЛИШНИЕ обратные слэши (over-escaping), а НЕ их нехватка. (Первичная гипотеза «не хватает \» была НЕВЕРНА — проверять байты ДО выводов.)
Механика: в литерале \\\\dfrac (4 слэша) вместо \\dfrac (2). После JS-анескейпа KaTeX получает \\dfrac → трактует \\ как перенос строки, а dfrac печатает как обычный текст, поэтому формула разваливается на строки.
Правило чётности (защищает легитимные \\ разделители строк):
- 2 слэша →
\cmd→ ОК - 4 слэша →
\\+текст → БАГ → схлопнуть до 2 - 6 слэшей →
\\+\cmd(перенос строки + команда в\begin{cases}) → ОК, не трогать - 8 слэшей → БАГ → до 2
Схлопывать ТОЛЬКО прогоны слэшей, кратные 4, и ТОЛЬКО перед известной LaTeX-командой. Перед
x/цифрой (настоящие\\в cases/array) — не трогать.
Исправлено 2026-05-30: 150 правок, 7 файлов (algebra_11_ch1/ch2/ch3, geometry_11_ch1/ch2/ch3/ch4), коммит 8786cf5 (запушен в master). Скрипт: backend/scripts/fix_overescaped_latex.js (идемпотентный, dry-run по умолчанию, --apply, с KaTeX-валидацией). algebra_8 / algebra_7_ch4 имели только легитимные \begin{cases} → 0 правок.
БД чиста: questions колонки text/explanation/correct_text (НЕ payload!), 1398 вопросов + 5187 options (options.text) → 0 багов обеих форм. Баг только в HTML.
Окружение этой сессии: stdout периодически рвался, Read иногда галлюцинировал/дублировал содержимое — надёжно писать результат в файл с маркерами <<<BEGIN>>>/<<<END>>> и читать через PowerShell [IO.File]::ReadAllText. Bash искажает кириллический путь Тесты→"5ABK (ENOENT) — использовать PowerShell. БД — через node:sqlite (см. reference_sqlite_node).