Скрипт для генерации отчёта в формате DOCX по ГОСТ из Markdown-файла.
В md2gost встроен FastAPI HTTP-сервер для интеграции с backend GostForge.
# Через entry point
md2gost-server
# Либо напрямую
python -m md2gost.server
# Через Docker
docker build -t md2gost .
docker run -p 8000:8000 md2gost| Endpoint | Метод | Описание |
|---|---|---|
/health |
GET | Проверка доступности сервиса |
/config/reference |
GET | Эталонные параметры Md2GostConfig с описаниями и значениями по умолчанию |
/convert |
POST | Синхронная конвертация Markdown → DOCX |
/jobs |
POST | Создание асинхронной задачи (ответ 202) |
/jobs/{id} |
GET | Получение статуса задачи |
/jobs/{id}/result |
GET | Скачивание результата завершённой задачи |
| Переменная | По умолчанию | Описание |
|---|---|---|
MD2GOST_HOST |
0.0.0.0 |
Хост, на котором слушает сервер |
MD2GOST_PORT |
8000 |
Порт сервера |
MD2GOST_WORKERS |
1 |
Число worker-процессов uvicorn для параллельной обработки запросов |
При создании асинхронной задачи через POST /jobs можно передать поле формы callback_url.
После завершения задачи (или ошибки) сервер выполнит POST c JSON-статусом на указанный URL.
- Генерация отчёта;
- Добавление титульной страницы в формате DOCX;
- Настройка генератора через
gostforge.yml; - Генерация интерактивного содержания;
- Поддержка сквозной нумерации и кросс-референсов;
- Автоматическая нумерация рисунков, продолжений таблиц, листингов и т.д.
Markdown-файл: example.md
Сгенерированный файл в ZIP-архиве (команда python -m md2gost --syntax-highlighting example.md): example.zip
pip install --upgrade git+https://github.com/witelokk/md2gost.git@mainЕсли ваша система использует стандарт PEP 668, рекомендуется pipx:
pipx install git+https://github.com/witelokk/md2gost.git@main(python -m ) md2gost [-h] [-o OUTPUT] [-T TITLE] [-c CONFIG] [--syntax-highlighting | --no-syntax-highlighting] [--debug] [filenames ...]
Если флаг -o не указан, итоговый отчёт создаётся с именем исходного файла и расширением .docx.
md2gost может читать параметры генерации из gostforge.yml.
Поддерживаются:
- как корневые ключи,
- так и секции
md2gostиmd2gost.generator.
Пример:
md2gost:
title_pages: 2
syntax_highlighting: true
sectional_numbering: true
page_margin_left: 2.5cm
font_size_main: 13pt
caption_separator: " — "
caption_image_style: "bold"title_pages задаётся через gostforge.yml.
Чтобы добавить титульную страницу, используйте флаг --title (-T) с путём к DOCX-файлу титульника.
Если в документе больше одной страницы, укажите количество через title_pages в gostforge.yml.
Пример:
md2gost report.md --title title.docxРисунки:
Таблицы:
%uniquename Текст подписи
| a | b | c |
|---|---|---|
| a | b | c |Листинги:
%uniquename Текст подписи
```python
print("hello world")
```Формулы:
%uniquename
$$
2 + 2 = 4
$$uniquename — уникальное имя для кросс-ссылок.
Чтобы вставить кликабельный номер рисунка/листинга/таблицы, используйте:
Рис. @unique_nameЧтобы заголовок был без сквозной нумерации (например, «СОДЕРЖАНИЕ»), используйте:
# *СОДЕРЖАНИЕ[TOC]Используйте флаг --syntax-highlighting.
```python code.py
```где code.py — путь к файлу с исходным кодом.