Автоматическое оформление .docx по ГОСТ 7.32-2017 — за секунду, без потери ни одного слова.
Кидаешь курсовую / ВКР / доклад / отчёт о НИР → получаешь файл с правильными полями, шрифтом, интервалами, отступами, нумерацией страниц и оформлением заголовков. Текст автора остаётся побайтно прежним — инструмент меняет только оформление, не содержание.
gostdoc Диплом.docx
→ Готово: Диплом.gost.docx
Ручное приведение работы к ГОСТ 7.32-2017 (поля 30/15/20/20, Times New Roman 14,
полуторный интервал, абзацный отступ 1,25 см, сквозная нумерация, заголовки по правилам) —
рутина на час-два, где легко ошибиться. gostdoc делает это за один запуск и одинаково.
⬇ Скачать gostdoc-gui.exe
→ двойной клик открывает окно: выбираешь файл .docx, при необходимости меняешь настройки
(поля, номер страницы, полужирность заголовков) и жмёшь «Оформить по ГОСТ». Рядом
появится ВашФайл.gost.docx.
Можно также перетащить .docx прямо на gostdoc-gui.exe — путь подставится в окно.
(Собрать самому — см. packaging/build.md.)
pip install -e .
gostdoc Диплом.docxgostdoc ВХОД.docx [-o ВЫХОД.docx] [--check] [--no-detect-structure] [переопределения]
- Без
-oрезультат пишется рядом:ВХОД.gost.docx(исходник не перезаписывается). --check— ничего не пишет, только проверяет соответствие ГОСТ и печатает отклонения (код выхода0— соответствует,1— есть отклонения).
Оформление по ГОСТ 7.32-2017: поля, гарнитура Times New Roman, кегль 14, полуторный интервал, абзацный отступ 1,25 см, выравнивание по ширине, цвет текста чёрный, сквозная нумерация страниц (на титуле номер не печатается), приведение существующих стилей заголовков и подписей.
Распознавание неразмеченной структуры (включено по умолчанию, всё логируется):
- структурные элементы (ВВЕДЕНИЕ, ЗАКЛЮЧЕНИЕ, СОДЕРЖАНИЕ, СПИСОК ИСТОЧНИКОВ, ПРИЛОЖЕНИЕ) → по центру, прописными, с новой страницы;
- главы и разделы (
ГЛАВА 1,РАЗДЕЛ II, одноуровневые «1 Название») → заголовки 1-го уровня; - многоуровневые заголовки (
1.1,1.2.3) → заголовки 2–3-го уровня; - подписи «Рисунок N — …» и «Таблица N — …» → стиль подписи;
- строки оглавления (с точечными или табличными лидерами) защищаются от порчи.
Отключить распознавание: --no-detect-structure (останется чистое ГОСТ-форматирование).
По умолчанию — базовый ГОСТ 7.32-2017. Если методичка отличается (а расходятся обычно только поля, номер страницы и полужирность заголовков), переопределите флагами:
gostdoc Диплом.docx --margins 30,10,20,20 # поля: лево,право,верх,низ (мм)
gostdoc Диплом.docx --page-number bottom-right # bottom-center | bottom-right | top-right | none
gostdoc Диплом.docx --page-number-size 12 # кегль номера страницы
gostdoc Диплом.docx --no-bold-headings # заголовки без полужирного
--check учитывает те же переопределения.
Инструмент построен на жёстком инварианте: слова, их порядок и орфография остаются побайтно прежними. Меняется только оформление. Это проверяется автотестом, который сравнивает текст тела документа до и после обработки. Формулы (OMML), рисунки, таблицы, гиперссылки и сноски сохраняются нетронутыми.
- Не конвертирует старый
.doc→.docx(выдаёт понятную ошибку — пересохраните в Word). - Не правит орфографию, грамматику и типографику текста.
- Не переписывает список литературы (оформление ссылок по ГОСТ Р 7.0.100-2018 — отдельная задача: переписывание текста ссылок противоречит инварианту «текст не меняем»).
- Не распознаёт титульный лист как структуру (у него отдельные правила оформления).
- 86 автотестов (pytest), покрытие ~95%,
ruff+mypyчисто, CI на Python 3.10–3.12. - Каждый критерий проверяется тестом, открывающим выходной
.docxи сверяющим значения. - Реальная валидация на 29 настоящих ВКР разных направлений (право, психология, экономика, педагогика, информатика, пищевые технологии, литература и др.): соответствие ГОСТ, сохранённый текст, корректные иерархии, валидный OOXML на выходе.
Python 3.10+, единственная зависимость — python-docx.
Где его API не хватает (поле PAGE, слоты rFonts) — точечная работа с XML через lxml.
python -m venv .venv
.venv\Scripts\activate # Linux/macOS: source .venv/bin/activate
pip install -e ".[dev]"
pytest # тесты
ruff check src tests # линтMIT.