# md2gost Конвертер Markdown в LaTeX по ГОСТ Р 7.0.5-2008. Генерирует PDF-отчёты с титульным листом, содержанием, нумерацией и форматированием по ГОСТ. ## Установка Требуется Docker. Локальная установка LaTeX не нужна. ```bash docker build -t md2gost . ``` ## Использование ```bash ./md2gost.sh report.md -o ./build ``` Скрипт создаст `build/report.tex` и `build/report.pdf`. ### Флаги - `-o dir` -- выходная директория (по умолчанию `./build`) - `--no-pdf` -- только .tex, без компиляции ## Формат Markdown Используется front matter в начале файла: ```yaml --- факультет: Информатика и системы управления кафедра: Программные средства тип: Отчёт по практике название: Исследование алгоритмов оптимизации студент: Иванов И.И. преподаватель: Петров П.П. группа: ИУ1-12 год: 2026 --- ``` Обязательные поля: `название`, `тип`. ### Поддерживаемые элементы - Заголовки (1-3 уровень) с нумерацией - Параграфы, списки (маркированные и нумерованные) - Таблицы - Код с подсветкой синтаксиса - Изображения (см. ниже) - Аббревиатуры (раздел "Перечень принятых сокращений") - Ссылки, жирный, курсив ### Изображения Рисунок — вики-ссылка отдельным абзацем; подпись — следующий абзац вида `Рисунок N <тире> Название` (номер отбрасывается, LaTeX нумерует сам): ```markdown ![[images/antenna.png]] Рисунок 1 —— Антенна Данная антенна используется для ... ``` Ширина задаётся суффиксом `|N` (доля от ширины текста): ```markdown ![[images/scheme.png|50]] ``` Файлы картинок копируются в каталог компиляции автоматически; эмблема титульного листа ищется рядом со входным файлом или берётся из пакета. Картинка внутри текстового абзаца не поддерживается (по ГОСТ рисунок оформляется отдельным абзацем) и пропускается с предупреждением. ## Структура проекта ``` md2gost/ md2gost/ main.py # точка входа parser.py # парсинг markdown (+ вики-ссылки картинок) registry.py # реестры block/pattern/inline обработчиков render.py # проход по токенам и диспетчеризация handlers/ # обработчики блоков (декораторы @block/@pattern/@inline) latex/ # преамбула, титульный лист tests/ # pytest md2gost.sh # обёртка для Docker Dockerfile Makefile ``` ## Команды ```bash make build # сборка Docker-образа make run # сборка + конвертация report.md make format # форматирование кода (black + ruff) make tidy # статический анализ (ruff + mypy) make test # pytest ```