#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: [Пример таблицы с данными], ) == Блоки кода Чтобы оформить блоки кода в документе, можно использовать синтаксис, похожий на Markdown. Пример указан на листинге @example-code: #figure( ```typst // Пример кода на Typst: #import "package.typ" // Функция вывода сообщения print("Hello, world!") ```, caption: [Пример кода на Typst], ) Этот блок кода демонстрирует базовую структуру программы на 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 $ $ mat(1, 2, 3; 4, 5, 6; 7, 8, 9) * x = pi * psi(aleph/x) $ $ cal(A) := { x in RR | x "натуральное" } $ == Изображения Изображения добавляются с помощью функции `image()` внутри макроса `#figure`. Пример вставки изображения указан на рисунке @example-image. #figure( image("images/home.jpg", width: 40%), caption: "Пример изображения", ) = Работа с аргументами шаблона в gost.with Функция `gost.with` принимает множество аргументов, позволяющих настраивать титульную страницу и другие элементы документа. Рассмотрим основные возможности: - Обязательные и необязательные аргументы. Многие параметры могут быть опущены, если вы не хотите, чтобы соответствующая информация отображалась на титульном листе. - Параметр auto (автоматический год). В аргументах, таких как `approved-by.year` или `year`, можно использовать значение `auto`. - Примеры аргументов: В заголовке шаблона задаются такие параметры, как: + `ministry-name` – название министерства. + `organization` – информация об учреждении (полное и сокращённое наименования). + `performers` – список исполнителей с указанием их позиций. == Работа с аргументами шаблона Как уже отмечалось, функция `gost.with` позволяет детально настраивать титульную страницу. Рассмотрим ключевые моменты: - При передаче параметра `year: auto` текущий год будет вычисляться автоматически. - Если не требуется выводить определённый элемент (например, номер инвентаризации), соответствующий аргумент можно не указывать. - Все аргументы передаются в виде именованных параметров, что обеспечивает гибкость конфигурации. = Заключение Шаблон modern-g7-32 для Typst значительно упрощает подготовку документов, соответствующих государственным стандартам. Он обеспечивает удобное создание таблиц, блоков кода и изображений, а гибкая настройка через функцию `gost.with` позволяет автоматически подставлять дату и исключать ненужные элементы с титульной страницы. Используйте данный шаблон для создания качественных и стандартизированных документов @petrov2021analiz. #bibliography("references.bib") #show: appendixes = Изображения в приложениях Пример вставки изображения в приложение указан на рисунке @appendix-image. #figure( image("images/nature.jpg", width: 40%), caption: "Пример изображения", ) == Изображения в под-приложениях Пример вставки изображения в под-приложение указан на рисунке @appendix-image-3. #figure( image("images/abstract.jpg", width: 40%), caption: "Пример изображения", ) = Блоки кода Чтобы оформить блоки кода в документе, можно использовать синтаксис, похожий на Markdown. Пример указан на листинге @appendix-code: #figure( ```typst // Пример кода на Typst: #import "package.typ" // Функция вывода сообщения print("Hello, world!") ```, caption: [Пример кода на Typst], ) = Формулы Чтобы оформить формулы в документе, можно использовать синтаксис typst-math. Примеры демонстрируют использование формул в шаблоне: $ sum_(k=0)^n k = 1 + ... + n = (n(n+1)) / 2 $ как оформлять таблицы сказано в приложении @appendix-tables, а также в разделе с нумерацией @with-numbering. == Таблицы Для создания таблиц используется функция `table()`, обёрнутая в макрос `#figure` для добавления подписи. Пример показан на таблице @appendix-table. #figure( table( columns: 4, table.header([Заголовок 1], [Заголовок 2], [Заголовок 3], [Заголовок 4]), [Проверка], [Проверка], [Проверка], [Проверка], [Проверка], [Проверка], [Проверка], [Проверка], ), caption: [Пример таблицы с данными], ) #appendix-heading("справочное", level: 1)[Приложение с указанием статуса] #lorem(100) #appendix-heading("справочное", level: 2)[Приложение второго уровня со статусом] #lorem(100)