fix(textbooks): Физика 9 — escape § в num + phys9_legacy.js + финалы 5 глав

Багфиксы:
- gen_phys9_ch.js: убран двойной escape \u00a7 → литерал §
  (раньше карточка показывала '\u00a7 1' вместо '§ 1')
- phys9_legacy.js (262 КБ): извлечён весь JS монолита для глобальных onclick-
  обработчиков (startAnim1, lab11add/all/reset, checkNum, togglePend36 и пр.).
  Setup-код в конце обёрнут в try/catch — он рассчитан на DOM монолита.
- migrate_phys9_ch4.js + migrate_phys9_content.js: подключают phys9_legacy.js
  во все 5 ch-файлов перед закрытием <head>.

Финалы глав (write_phys9_finals.js):
- ch1: 5 задач (кинематика — поезд, разгон, окружность, лодка/река)
- ch2: 5 задач (динамика — трение, Гук, свободное падение, перегрузка)
- ch3: 5 задач (статика — рычаг, Архимед, блок, КПД накл. плоск., льдина)
- ch4: 5 задач (импульс — неупр. удар, ЗСЭ, мощность крана, пуля, бросок)
- ch5: 5 контрольных по практикуму (среднее, ЛР2, ЛР4, ЛР6, ЛР10)

Все задачи с автопроверкой через checkNum() (теперь работает из legacy.js).
This commit is contained in:
Maxim Dolgolyov
2026-05-30 08:55:00 +03:00
parent 0c6618fb38
commit dcdcde5b4e
10 changed files with 6625 additions and 62 deletions
+14
View File
@@ -155,6 +155,14 @@ function migrateChapter(chN, paraNums) {
);
}
// phys9_legacy.js (provides startAnim1, lab11*, checkNum, togglePend36, etc.)
if (!h.includes('phys9_legacy.js')) {
h = h.replace(
'<script src="/js/phys.js" defer></script>',
'<script src="/js/phys.js" defer></script>\n<script src="/js/phys9_legacy.js" defer></script>'
);
}
fs.writeFileSync(dstPath, h);
console.log(`ch${chN}: ${before}${h.length} bytes`);
@@ -204,6 +212,12 @@ function migrateCh5(chN = 5) {
'<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/katex@0.16.9/dist/katex.min.css">\n<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.5.1/css/all.min.css">'
);
}
if (!h.includes('phys9_legacy.js')) {
h = h.replace(
'<script src="/js/phys.js" defer></script>',
'<script src="/js/phys.js" defer></script>\n<script src="/js/phys9_legacy.js" defer></script>'
);
}
fs.writeFileSync(dstPath, h);
console.log(`ch5: ${before}${h.length} bytes`);