# Разделяне на произволен текст на секции Този документ описва **реалното** поведение на RIP Help System при разделяне на help-файл на секции. Източникът е `help_processor.py` след последните корекции (вкл. `merge_short_sections` / `merge_preamble_sections` / номерирани глави). Не е маркетингово резюме. Генерирането на ключови думи е **извън обхвата**, освен един ред в края. За да прегенерираш PDF-а: ``` python docs/md_to_pdf.py ``` --- ## 1. Място в обработката За всеки файл `process_file()` прави: 1. Избира парсер по разширение (`.html` / `.htm`, `.docx`, `.doc`, `.pdf`, `.txt`). 2. Парсерът връща списък от `Section(title, text, level, images, html_text)`. 3. Върху списъка се вика `merge_short_sections()`, после `merge_preamble_sections()`. 4. Празните блокове се филтрират при запис; заглавие без тяло се запазва (виж §8). ZIP не е формат за разделяне: разопакова се и всеки вътрешен файл минава по същия път. Нива: `1` = H1, `2` = H2, `3` = H3 (по-дълбоки HTML/Word заглавия се режат до 3), `0` = без заглавие. --- ## 2. Какво е граница на секция В HTML и DOCX граница е едно от: 1. **H1 / Heading 1 / Заглавие 1** (класическа граница); **или** 2. **Номерирана top-level глава** от вида `1. Заглавие` / `2) Заглавие` — дори ако е H2, bold или Normal — когато редът изглежда като заглавие на глава (виж §2.1). Текстът на границата става `title` и **не** се копира в тялото на секцията. В HTML/DOCX **не** отварят нова секция: - Word **Title** / **Наименование** / CSS `Title` / `MsoTitle` — корица; става заглавие на преамбюла (или ред в тялото, ако вече има съдържание); - „**Съдържание**“ / Contents / TOC и еквиваленти — остават в тялото и включват TOC фаза (виж §2.1); - H2–H6, Subtitle / Подзаглавие, изцяло bold параграфи — **освен** ако текстът е номерирана глава (`N. Title`); - редове от таблици (`a | b | c`), „Фигура N: …“, дълги изречения с номерация. TXT и PDF запазват своите правила (номерирани редове / по-голям шрифт) — там ниво 2 е нормална граница. Ако преди първата глава има корица + съдържание, те образуват **преамбюл** (title от корицата/първото H1). Ако парсерът не открие нито една секция, файлът става **една** секция без заглавие, с целия извлечен текст. ### 2.1. Номерирани глави и TOC Шаблон: `^\d{1,2}[\.\)]\s+\S` , дължина < 120, ≤ 12 думи след номера, без `|`, без „Фигура N“. След заглавие „Съдържание“/TOC парсерът влиза в **TOC фаза**: - първите срещания на `1. …`, `2. …` (Normal / списък) остават в преамбюла; - **повторно** срещане на същия текст (реалната глава) затваря TOC фазата и отваря нова секция; - ако TOC е в `
    `/`