267 lines
14 KiB
Typst
267 lines
14 KiB
Typst
#import "@preview/modern-g7-32:0.2.0": abstract, appendix-heading, appendixes, enum-numbering, gost
|
||
|
||
// Нумерация с использованием кириллицы
|
||
#set enum(numbering: enum-numbering)
|
||
|
||
#show: gost.with(
|
||
ministry: "Наименование министерства (ведомства) или другого структурного образования, в систему которого входит организация-исполнитель",
|
||
organization: (
|
||
full: "Полное наименование организации — исполнителя НИР",
|
||
short: "Сокращённое наименование организации",
|
||
),
|
||
udk: "индекс УДК",
|
||
research-number: "регистрационный номер НИР",
|
||
report-number: "регистрационный номер отчета",
|
||
approved-by: (
|
||
name: "Фамилия И.О.",
|
||
position: "Должность, наимен. орг.",
|
||
year: 2017,
|
||
), // Гриф согласования
|
||
agreed-by: (
|
||
name: "Фамилия И.О.",
|
||
position: "Должность, наимен. орг.",
|
||
year: auto,
|
||
), // Гриф утверждения, год подставляется из аргумента year
|
||
report-type: "отчёт",
|
||
about: "О научно-исследовательской работе",
|
||
research: "Наименование НИР",
|
||
bare-subject: false, // Можно убрать "по теме"
|
||
subject: "Наименование отчёта",
|
||
manager: (
|
||
name: "Фамилия И.О.",
|
||
position: "Должность",
|
||
title: "Руководитель НИР,",
|
||
), // Руководитель отчёта
|
||
year: 2022,
|
||
stage: (type: "вид отчёта", num: 1), // Этап отчёта
|
||
federal: "Наименование федеральной программы",
|
||
part: 2, // Номер книги отчёта
|
||
city: "Город",
|
||
text-size: (default: 14pt, small: 10pt), // Можно указать размеры текста
|
||
indent: 1.25cm, // Можно указать отступ
|
||
hide-title: false, // Убрать ли титульный лист
|
||
title-footer-align: center, // Выравнивание города и года на титульном листе
|
||
pagination-align: center, // Выравнивание номера страницы
|
||
margin: (
|
||
left: 30mm,
|
||
right: 15mm,
|
||
top: 20mm,
|
||
bottom: 20mm,
|
||
), // Отступы страницы
|
||
add-pagebreaks: true, // Убрать ли разрывы страниц
|
||
performers: (
|
||
"Всероссийский институт научной и технической информации " + "Российской академии наук (ВИНИТИ РАН)",
|
||
// Можно указать организацию, к которой относятся следующие исполнители
|
||
(
|
||
name: "И.О. Фамилия",
|
||
position: "Должность",
|
||
part: "введение, раздел 1",
|
||
), // Можно добавить выполненную часть
|
||
(name: "И.О. Фамилия", position: "Должность"),
|
||
"Другая организация",
|
||
(name: "И.О. Фамилия", position: "Должность"),
|
||
(
|
||
name: "И.О. Фамилия",
|
||
position: "Должность",
|
||
co-performer: true,
|
||
), // Поддерживаются соисполнители
|
||
), // Если исполнитель один - он будет перенесён на титульный лист
|
||
)
|
||
|
||
#abstract(
|
||
"шаблон",
|
||
"typst",
|
||
"государственные стандарты",
|
||
"оформление документов",
|
||
"система вёрстки",
|
||
"автоматизация",
|
||
)[
|
||
Настоящий документ представляет собой описание шаблона modern-g7-32, разработанного для системы вёрстки #link(
|
||
"https://typst.app/",
|
||
)[typst] с целью автоматизации создания документов, соответствующих государственным стандартам. Шаблон упрощает
|
||
процесс оформления, в частности, титульного листа, благодаря функции `gost.with`, которая позволяет гибко настраивать
|
||
отображение информации и автоматически подставлять текущий год.
|
||
|
||
В документе рассмотрены основные элементы шаблона, включая оформление таблиц, блоков кода и изображений, а также
|
||
детально описана работа с аргументами функции `gost.with` для кастомизации титульной страницы. Представленный шаблон
|
||
предназначен для пользователей системы typst, стремящихся к созданию стандартизированных документов с минимальными
|
||
усилиями.
|
||
]
|
||
|
||
#outline()
|
||
|
||
= Введение
|
||
|
||
Шаблон modern-g7-32 предназначен для создания документов в строгом соответствии с ГОСТ. Он упрощает оформление
|
||
титульного листа, автоматизирует подстановку даты и позволяет легко управлять отображением информации.
|
||
|
||
|
||
= Документация шаблона Typst
|
||
|
||
Этот документ описывает особенности использования шаблона modern-g7-32 для системы вёрстки #link(
|
||
"https://typst.app/",
|
||
)[typst]. Ниже приведены примеры оформления элементов, таких как таблицы, блоки кода и изображения, а также подробное
|
||
описание работы с аргументами шаблона через функцию `gost.with` @examplewebsite.
|
||
|
||
= Основные элементы шаблона
|
||
|
||
Шаблон modern-g7-32 позволяет создавать документы, оформленные в строгом соответствии с государственными стандартами.
|
||
|
||
== Таблицы
|
||
|
||
Для создания таблиц используется функция `table()`, обёрнутая в макрос `#figure` для добавления подписи. Пример показан
|
||
на таблице @example-table.
|
||
|
||
#figure(
|
||
table(
|
||
columns: 4,
|
||
table.header([Заголовок 1], [Заголовок 2], [Т], [Заголовок 4]),
|
||
[Проверка], [Проверка], [Проверка], [Проверка],
|
||
[Проверка], [Проверка], [Проверка], [Проверка],
|
||
),
|
||
caption: [Пример таблицы с данными],
|
||
) <example-table>
|
||
|
||
== Блоки кода
|
||
|
||
Чтобы оформить блоки кода в документе, можно использовать синтаксис, похожий на Markdown. Пример указан на листинге
|
||
@example-code:
|
||
|
||
#figure(
|
||
```typst
|
||
// Пример кода на Typst:
|
||
#import "package.typ"
|
||
|
||
// Функция вывода сообщения
|
||
print("Hello, world!")
|
||
```,
|
||
caption: [Пример кода на Typst],
|
||
) <example-code>
|
||
|
||
Этот блок кода демонстрирует базовую структуру программы на Typst.
|
||
|
||
#pagebreak()
|
||
|
||
== Формулы
|
||
|
||
Чтобы оформить формулы в документе, можно использовать синтаксис typst-math. Примеры демонстрируют использование формул
|
||
в шаблоне:
|
||
|
||
Формула @example-formula-first показывает как применять сложные функции, формула @example-formula-second демонстрирует
|
||
как можно оформить матрицы, а формула @example-formula-third – использование типов и обозначений @ivanov2020osnovy.
|
||
|
||
|
||
$ sum_(k=0)^n k = 1 + ... + n = (n(n+1)) / 2 $
|
||
<example-formula-first>
|
||
|
||
|
||
$ mat(1, 2, 3; 4, 5, 6; 7, 8, 9) * x = pi * psi(aleph/x) $
|
||
<example-formula-second>
|
||
|
||
$ cal(A) := { x in RR | x "натуральное" } $
|
||
<example-formula-third>
|
||
|
||
== Изображения
|
||
|
||
Изображения добавляются с помощью функции `image()` внутри макроса `#figure`. Пример вставки изображения указан на
|
||
рисунке @example-image.
|
||
|
||
#figure(
|
||
image("images/home.jpg", width: 40%),
|
||
caption: "Пример изображения",
|
||
) <example-image>
|
||
|
||
= Работа с аргументами шаблона в gost.with
|
||
|
||
Функция `gost.with` принимает множество аргументов, позволяющих настраивать титульную страницу и другие элементы
|
||
документа.
|
||
|
||
Рассмотрим основные возможности:
|
||
|
||
- Обязательные и необязательные аргументы. Многие параметры могут быть опущены, если вы не хотите, чтобы соответствующая
|
||
информация отображалась на титульном листе.
|
||
- Параметр auto (автоматический год). В аргументах, таких как `approved-by.year` или `year`, можно использовать значение
|
||
`auto`.
|
||
|
||
- Примеры аргументов: В заголовке шаблона задаются такие параметры, как:
|
||
+ `ministry-name` – название министерства.
|
||
+ `organization` – информация об учреждении (полное и сокращённое наименования).
|
||
+ `performers` – список исполнителей с указанием их позиций.
|
||
|
||
== Работа с аргументами шаблона <with-numbering>
|
||
|
||
Как уже отмечалось, функция `gost.with` позволяет детально настраивать титульную страницу. Рассмотрим ключевые моменты:
|
||
|
||
- При передаче параметра `year: auto` текущий год будет вычисляться автоматически.
|
||
- Если не требуется выводить определённый элемент (например, номер инвентаризации), соответствующий аргумент можно не
|
||
указывать.
|
||
- Все аргументы передаются в виде именованных параметров, что обеспечивает гибкость конфигурации.
|
||
|
||
= Заключение <conclusion>
|
||
|
||
Шаблон modern-g7-32 для Typst значительно упрощает подготовку документов, соответствующих государственным стандартам. Он
|
||
обеспечивает удобное создание таблиц, блоков кода и изображений, а гибкая настройка через функцию `gost.with` позволяет
|
||
автоматически подставлять дату и исключать ненужные элементы с титульной страницы. Используйте данный шаблон для
|
||
создания качественных и стандартизированных документов @petrov2021analiz.
|
||
|
||
#bibliography("references.bib")
|
||
|
||
#show: appendixes
|
||
|
||
= Изображения в приложениях
|
||
Пример вставки изображения в приложение указан на рисунке @appendix-image.
|
||
|
||
#figure(
|
||
image("images/nature.jpg", width: 40%),
|
||
caption: "Пример изображения",
|
||
) <appendix-image>
|
||
|
||
== Изображения в под-приложениях
|
||
Пример вставки изображения в под-приложение указан на рисунке @appendix-image-3. #figure(
|
||
image("images/abstract.jpg", width: 40%),
|
||
caption: "Пример изображения",
|
||
) <appendix-image-3>
|
||
|
||
= Блоки кода
|
||
Чтобы оформить блоки кода в документе, можно использовать синтаксис, похожий на Markdown. Пример указан на листинге
|
||
@appendix-code:
|
||
|
||
#figure(
|
||
```typst
|
||
// Пример кода на Typst:
|
||
#import "package.typ"
|
||
|
||
// Функция вывода сообщения
|
||
print("Hello, world!")
|
||
```,
|
||
caption: [Пример кода на Typst],
|
||
) <appendix-code>
|
||
|
||
= Формулы
|
||
Чтобы оформить формулы в документе, можно использовать синтаксис typst-math. Примеры демонстрируют использование формул
|
||
в шаблоне:
|
||
|
||
$ sum_(k=0)^n k = 1 + ... + n = (n(n+1)) / 2 $ <appendix-formula>
|
||
|
||
как оформлять таблицы сказано в приложении @appendix-tables, а также в разделе с нумерацией @with-numbering.
|
||
|
||
== Таблицы <appendix-tables>
|
||
Для создания таблиц используется функция `table()`, обёрнутая в макрос `#figure` для добавления подписи. Пример показан
|
||
на таблице @appendix-table.
|
||
|
||
#figure(
|
||
table(
|
||
columns: 4,
|
||
table.header([Заголовок 1], [Заголовок 2], [Заголовок 3], [Заголовок 4]),
|
||
[Проверка], [Проверка], [Проверка], [Проверка],
|
||
[Проверка], [Проверка], [Проверка], [Проверка],
|
||
),
|
||
caption: [Пример таблицы с данными],
|
||
) <appendix-table>
|
||
|
||
#appendix-heading("справочное", level: 1)[Приложение с указанием статуса]
|
||
#lorem(100)
|
||
|
||
#appendix-heading("справочное", level: 2)[Приложение второго уровня со статусом]
|
||
#lorem(100)
|