Typst GOSTTypst Gost
Настройка и экспорт

Пользовательские титульные листы

Создание и использование альтернативных шаблонов титульных страниц.

Хотя ГОСТ 7.32-2017 задаёт общую структуру титульного листа, вузы и организации часто требуют собственный порядок блоков, логотип, подписи или формулировки. modern-g7-32 позволяет заменить только титульный лист и оставить всю остальную логику отчёта: поля, содержание, структурные заголовки, список исполнителей, источники и приложения.

В текущей версии пакета встроены title-templates.default и title-templates.mai-university-lab. Примеры ГУАП и МИРЭА ниже показывают минимальные пользовательские шаблоны с той же сигнатурой аргументов.

Готовый шаблон МАИ

Встроенный пресет МАИ подключается через параметр title-template. Остальные аргументы остаются обычными аргументами gost.with: subject, manager, approved-by, agreed-by, city, year и так далее.

#import "@preview/modern-g7-32:0.2.0": gost, title-templates#show: gost.with(title-template: title-templates.mai-university-lab,organization: (  full: "Московский авиационный институт",  short: "Национальный исследовательский университет",),institute: (number: 3, name: "Системы управления, информатика и электроэнергетика"),department: (number: 307, name: "Цифровые технологии"),report-type: "Отчёт",about: "о лабораторной работе",subject: "Разработка программного модуля",manager: (name: "Иванов И.И.", position: "доцент"),city: "Москва",year: 2024,)
Preview

Одинаковые аргументы

Пользовательский титульный шаблон обычно состоит из двух функций:

  • arguments(..args, year: auto) нормализует данные, задаёт значения по умолчанию и проверяет вложенные словари.
  • template(..args) получает уже подготовленные аргументы и верстает страницу.

Эта схема работает как наследование: можно взять аргументы базового шаблона, добавить несколько полей для конкретного вуза и оставить общие поля прежними. Благодаря этому в gost.with не нужно менять названия стандартных аргументов при переходе между титульниками.

// local-title.typ
#import "@preview/modern-g7-32:0.2.0": custom-title-template
#import custom-title-template: *

#let arguments(..args, year: auto) = {
  let args = args.named()
  args.organization = fetch-field(
    args.at("organization", default: none),
    ("*full", "short"),
    hint: "организации",
  )
  args.manager = fetch-field(
    args.at("manager", default: none),
    ("position*", "name*"),
    hint: "руководителя",
  )
  return args
}

#let template(
  organization: (full: none, short: none),
  department: none,
  group: none,
  subject: none,
  manager: (position: none, name: none),
  city: none,
  year: auto,
  ..rest,
) = {
  align(center)[
    #upper(organization.full) \
    #if organization.short != none { upper(organization.short) }
    #v(1fr)
    #strong[ОТЧЁТ]
    #v(0.4fr)
    #subject
    #v(1fr)
  ]
  sign-field(manager.name, manager.position)
  v(0.5fr)
}

Подключается такой файл через custom-title-template.from-module(...):

#import "@preview/modern-g7-32:0.2.0": gost, custom-title-template
#import "local-title.typ" as local-title

#show: gost.with(
  title-template: custom-title-template.from-module(local-title),
  subject: "Собственный титульный лист",
  organization: (full: "Моя организация"),
  manager: (name: "Иванов И.И.", position: "Руководитель"),
  city: "Москва",
)

Минимальные примеры

ГУАП

#let template(
  organization: (full: "Санкт-Петербургский государственный университет аэрокосмического приборостроения"),
  faculty: none,
  department: none,
  group: none,
  subject: none,
  manager: (position: none, name: none),
  city: "Санкт-Петербург",
  year: auto,
  ..rest,
) = [
  #align(center)[
    #upper(organization.full) \
    #if faculty != none [Факультет #faculty \]
    #if department != none [Кафедра #department \]
    #v(1fr)
    #strong[ОТЧЁТ] \
    #subject
  ]
  #v(1fr)
  #if group != none [Группа: #group \]
  #sign-field(manager.name, manager.position)
]

МИРЭА

#let template(
  organization: (full: "МИРЭА -- Российский технологический университет"),
  institute: none,
  department: none,
  subject: none,
  manager: (position: none, name: none),
  city: "Москва",
  year: auto,
  ..rest,
) = [
  #align(center)[
    #upper(organization.full) \
    #if institute != none [Институт #institute \]
    #if department != none [Кафедра #department \]
    #v(1fr)
    #strong[ОТЧЁТ ПО ПРАКТИЧЕСКОЙ РАБОТЕ] \
    #subject
  ]
  #v(1fr)
  #sign-field(manager.name, manager.position)
]

Скрыть стандартный титульник

Если титульный лист верстается отдельно или вставляется из PDF, отключите его в gost.with.

#show: gost.with(
  hide-title: true,
)

Доступные утилиты

Для упрощения вёрстки в модуле custom-title-template доступны те же утилиты, которые использует встроенный титульный лист.

Параметр

Параметры настройки

Параметр

Пользовательский шаблон получает все именованные аргументы gost.with, поэтому можно добавлять локальные поля вроде faculty, group, variant, teacher или practice-kind. Общие поля лучше оставлять с теми же именами, что и у стандартного титульника.

Требования ГОСТ 7.32-2017

6.1.1 На титульном листе приводят сведения, предусмотренные 5.2 в соответствии с формами, приведенными в приложениях А и Б.

6.10.1 Титульный лист содержит реквизиты: наименование министерства... полное наименование организации... грифы согласования и утверждения...

Поделитесь своим мнением об этой странице

На этой странице