Files
Learn_System/.claude/memory/reference_textbook_latex_escaping.md
T
Maxim Dolgolyov 8a7091ddec chore(memory): снимок файлов памяти Claude в репозиторий для переноса
Копия пользовательской автопамяти (29 фактов + индекс MEMORY.md) в
.claude/memory/, чтобы переносить между машинами через git.
README.md — как восстановить в пользовательскую папку на другой машине.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 08:32:16 +03:00

3.1 KiB

name, description, metadata
name description metadata
reference_textbook_latex_escaping Баг формул в учебниках = ЛИШНИЕ слэши (over-escaping), не нехватка; правило чётности и фикс-скрипт
node_type type originSessionId
memory reference a705e035-e600-43a2-b98c-197923986186

Формулы в учебниках (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).