[ADD] поддержка изображений и рефакторинг диспетчера токенов
- registry.py: реестры BLOCK/PATTERNS/INLINE с декораторами @block/@pattern/@inline - render.py: единый диспетчер, слой паттернов, проверка контракта pos (RuntimeError), pending_toc вместо current_heading для единственной вставки СОДЕРЖАНИЯ - handlers/image.py: вики-ссылки ![[путь|ширина]], подпись Рисунок N —— ... , figure-окружение, авто-нумерация, копирование файлов в tmpdir - handlers/inline.py: табличная диспетчеризация вместо if/elif - Все block-обработчики подписаны @block, корректно продвигают pos - parser.py: препроцессинг ![[...]] → , iter_image_sources() - main.py: _copy_assets (emblem+картинки в tmpdir), фикс лога (имя .tex), cwd=tmpdir для xelatex, цикл вместо дублирования, force-include emblem - tests/test_render.py: pytest (10 тестов), pyproject dev-dep, make test - preamble.py: name=Рисунок для figure-caption (было Рис. от babel) - Исправлены баги: мёртвый обработчик, emblem не копировалась, множественный TOC, захардкожен report.log, маскировка pos - README/AGENTS.md обновлены
This commit is contained in:
@@ -48,20 +48,46 @@ docker build -t md2gost .
|
||||
- Параграфы, списки (маркированные и нумерованные)
|
||||
- Таблицы
|
||||
- Код с подсветкой синтаксиса
|
||||
- Изображения
|
||||
- Изображения (см. ниже)
|
||||
- Аббревиатуры (раздел "Перечень принятых сокращений")
|
||||
- Ссылки, жирный, курсив
|
||||
|
||||
### Изображения
|
||||
|
||||
Рисунок — вики-ссылка отдельным абзацем; подпись — следующий абзац вида
|
||||
`Рисунок N <тире> Название` (номер отбрасывается, LaTeX нумерует сам):
|
||||
|
||||
```markdown
|
||||
![[images/antenna.png]]
|
||||
|
||||
Рисунок 1 —— Антенна
|
||||
|
||||
Данная антенна используется для ...
|
||||
```
|
||||
|
||||
Ширина задаётся суффиксом `|N` (доля от ширины текста):
|
||||
|
||||
```markdown
|
||||
![[images/scheme.png|50]]
|
||||
```
|
||||
|
||||
Файлы картинок копируются в каталог компиляции автоматически; эмблема
|
||||
титульного листа ищется рядом со входным файлом или берётся из пакета.
|
||||
Картинка внутри текстового абзаца не поддерживается (по ГОСТ рисунок
|
||||
оформляется отдельным абзацем) и пропускается с предупреждением.
|
||||
|
||||
## Структура проекта
|
||||
|
||||
```
|
||||
md2gost/
|
||||
md2gost/
|
||||
main.py # точка входа
|
||||
parser.py # парсинг markdown
|
||||
render.py # рендер в LaTeX
|
||||
handlers/ # обработчики блоков
|
||||
parser.py # парсинг markdown (+ вики-ссылки картинок)
|
||||
registry.py # реестры block/pattern/inline обработчиков
|
||||
render.py # проход по токенам и диспетчеризация
|
||||
handlers/ # обработчики блоков (декораторы @block/@pattern/@inline)
|
||||
latex/ # преамбула, титульный лист
|
||||
tests/ # pytest
|
||||
md2gost.sh # обёртка для Docker
|
||||
Dockerfile
|
||||
Makefile
|
||||
@@ -74,4 +100,5 @@ make build # сборка Docker-образа
|
||||
make run # сборка + конвертация report.md
|
||||
make format # форматирование кода (black + ruff)
|
||||
make tidy # статический анализ (ruff + mypy)
|
||||
make test # pytest
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user