188 lines
9.4 KiB
Markdown
188 lines
9.4 KiB
Markdown
# Автотитульник
|
||
|
||
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`.
|
||
|
||
Пример:
|
||
|
||
```yaml
|
||
Институт: Институт информационных технологий (ИИТ)
|
||
Кафедра: Кафедра цифровой трансформации (ЦТ)
|
||
Дисциплина: Проектирование архитектуры цифровой организации
|
||
Преподаватель: Иванов Иван Иванович
|
||
Должность: старший преподаватель, кафедра ЦТ
|
||
```
|
||
|
||
Формат — плоский список `ключ: значение` (UTF-8). Вложенный YAML и списки не нужны. Строки с `#` в начале — комментарии; хвост ` # …` в значении отрезается.
|
||
|
||
Один `info_conv.yaml` удобно держать на весь семестр/дисциплину и не копировать институт с кафедрой в каждый отчёт.
|
||
|
||
---
|
||
|
||
## Блок `title` в Markdown
|
||
|
||
Опциональный блок в **начале** файла (до `# *СОДЕРЖАНИЕ`), ограда языка `title`. Перед конвертацией он **вырезается** из тела отчёта и не попадает в DOCX как код.
|
||
|
||
Типичное использование — номер работы и год:
|
||
|
||
````markdown
|
||
```title
|
||
number: 1
|
||
year: 2026
|
||
```
|
||
|
||
# *СОДЕРЖАНИЕ
|
||
|
||
[TOC]
|
||
…
|
||
````
|
||
|
||
Можно переопределить любые академические поля прямо в блоке (они сильнее yaml):
|
||
|
||
````markdown
|
||
```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
|
||
|
||
```bash
|
||
# автотитул выкл. по умолчанию — только тело отчёта
|
||
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`:
|
||
|
||
````markdown
|
||
```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` рядом с приложением (см. каталог схем). Не коммитьте его с чужими ФИО в общие репозитории отчётов — это локальные данные студента.
|