Files
md_to_gost/docs/title.md
T
Igor20264 510f7e7adf
Python application / build (push) Waiting to run
v0.5.2
Что то сделал
2026-09-08 19:37:54 +03:00

9.4 KiB
Raw Blame History

Автотитульник

md2gost умеет сам собрать титульный лист из вшитого шаблона TitleTemplate.docx, подставив институт, кафедру, дисциплину, преподавателя, номер работы, ФИО и группу.

Готовый чужой DOCX титула (--title / «Настройки → Файлы → Титульный лист») по-прежнему работает и полностью отключает автогенерацию.


Когда титул генерируется

Автотитул по умолчанию выключен. Включается явно:

  • CLI: --auto-title
  • GUI: галочка «Автотитул»

При включённом автотитуле он собирается, если одновременно:

  1. Не задан явный путь к титульному DOCX (--title пуст, в GUI поле «Титульный лист» пустое).
  2. Рядом с .md есть файл info_conv.yaml или в начале Markdown есть блок ```title.

Если автотитул выключен или нет ни yaml, ни блока title — титул не вставляется (готовый DOCX по --title по-прежнему можно передать отдельно).

ФИО и группа обязательны для генерации: из профиля GUI / md2gost.user.json или из --student / --group. Без них конвертация с --auto-title завершится ошибкой с подсказкой.


Быстрый сценарий (GUI)

  1. Первый запуск → окно «Данные студента»: введите ФИО и группу, сохраните.
    Позже: Настройки → Студент….
  2. В папке с отчётом создайте info_conv.yaml (см. ниже).
  3. В начале .md при необходимости добавьте блок ```title с номером работы и годом.
  4. Включите галочку «Автотитул» на главном окне.
  5. Не указывайте готовый титул в «Настройки → Файлы», если хотите автогенерацию.
  6. Конвертируйте как обычно — перед телом отчёта появится титул.

Профиль студента хранится в md2gost.user.json рядом с приложением (рядом с exe или в текущей папке при python -m md2gost) — тот же каталог, что и md2gost.schemes.json. В том же файле блок metadata — свойства DOCX (автор/название/примечание); GUI: Настройки → Метаданные…, CLI: --doc-*. Это не поля титульного листа.


info_conv.yaml (данные курса / кафедры)

Файл кладётся в тот же каталог, что и конвертируемый .md. Имя строго: info_conv.yaml.

Пример:

Институт: Институт информационных технологий (ИИТ)
Кафедра: Кафедра цифровой трансформации (ЦТ)
Дисциплина: Проектирование архитектуры цифровой организации
Преподаватель: Иванов Иван Иванович
Должность: старший преподаватель, кафедра ЦТ

Формат — плоский список ключ: значение (UTF-8). Вложенный YAML и списки не нужны. Строки с # в начале — комментарии; хвост # … в значении отрезается.

Один info_conv.yaml удобно держать на весь семестр/дисциплину и не копировать институт с кафедрой в каждый отчёт.


Блок title в Markdown

Опциональный блок в начале файла (до # *СОДЕРЖАНИЕ), ограда языка title. Перед конвертацией он вырезается из тела отчёта и не попадает в DOCX как код.

Типичное использование — номер работы и год:

```title
number: 1
year: 2026
```

# *СОДЕРЖАНИЕ

[TOC]
…

Можно переопределить любые академические поля прямо в блоке (они сильнее yaml):

```title
number: 3
year: 2026
discipline: Другая формулировка дисциплины
teacher: Петров П. П.
```

Английские ключи тоже принимаются: institute, department, discipline, teacher, teacher_position, number, year.


Поля: куда попадают и откуда берутся

Поле на титуле Ключи (любой из вариантов) Источник
Институт Институт, Institute, institute; опечатка Инститиут yaml / ```title
Кафедра Кафедра, Department, department yaml / ```title
Дисциплина (в «…») Дисциплина, Discipline, discipline yaml / ```title
№ практической работы number, номер, , n ```title (иначе 1)
Группа («студент группы …») профиль GUI / --group
ФИО студента профиль GUI / --student
Должность преподавателя Должность, должность преподавателя, teacher_position yaml / ```title
ФИО преподавателя Преподаватель, Преподователь, Teacher, teacher yaml / ```title
Год («Москва … г.») year, год ```title (иначе текущий календарный год)

Строка «ОТЧЁТ ПО ПРАКТИЧЕСКОЙ РАБОТЕ» и шапка МИРЭА в шаблоне не заполняются из переменных — это фиксированный текст шаблона.

ФИО/группа из yaml или ```title игнорируются (даже если написать Студент: / Группа:) — студент всегда из профиля или CLI.


Приоритет слияния

Академические поля:   info_conv.yaml  <  ```title   (блок сильнее)
Студент / группа:     md2gost.user.json  <  --student / --group
Явный титул DOCX:     --title / путь в GUI  →  генератор не вызывается

year без значения → текущий год. number без значения → 1.


CLI

# автотитул выкл. по умолчанию — только тело отчёта
python -m md2gost report.md -o report.docx

# включить автотитул (yaml + профиль из md2gost.user.json)
python -m md2gost report.md -o report.docx --auto-title

# ФИО и группа на один прогон
python -m md2gost report.md --auto-title --student "Тарасов Игорь Алексеевич" --group ИНБО-31-23

# свой готовый титул — автогенерация не используется
python -m md2gost report.md --title title.docx

Пример структуры папки

Отчет_практики/
  info_conv.yaml          ← институт, кафедра, дисциплина, препод
  report_pr1.md           ← в начале ```title с number/year
  figures/
  …

report_pr1.md:

```title
number: 1
year: 2026
```

# *СОДЕРЖАНИЕ

[TOC]

# *ВВЕДЕНИЕ

Частые вопросы

Титул не появился.
Проверьте: включён ли --auto-title / галочка «Автотитул»; нет ли пути в «Титульный лист» / --title; есть ли info_conv.yaml или ```title; заполнены ли ФИО и группа.

Не тот номер работы.
Задайте number: в ```title — из yaml номер не читается (только из блока или дефолт 1).

Нужен другой шаблон вёрстки.
Сейчас слоты привязаны к bundled TitleTemplate.docx. Чужой макет — собирайте титул вручную и передавайте через --title.

Задание (бланк).
Автотитул не заменяет бланк задания: по-прежнему --assignment / «Бланк задания» в GUI.

Где лежит профиль.
md2gost.user.json рядом с приложением (см. каталог схем). Не коммитьте его с чужими ФИО в общие репозитории отчётов — это локальные данные студента.