---
name: format-typst-gost
description: Use when formatting academic papers, thesis, or reports in Typst using the local GOST template. Use when you need the correct macros for tables, figures, equations, listings, references, and appendixes according to GOST standards.
---

# Форматирование документа по ГОСТу в Typst

## Обзор

Этот навык предоставляет точные макросы и синтаксис, необходимые для форматирования документа `Typst` в соответствии с российскими стандартами ГОСТ, используя локальный шаблон проекта. Он строго соблюдает правила ГОСТ в отношении форматирования.

**Важно:** Этот навык посвящен _форматированию_ текста (синтаксис и макросы), а не _написанию_ академического контента.

## Краткий справочник

| Элемент                   | Синтаксис / Макрос                                                      |
| ------------------------- | ----------------------------------------------------------------------- |
| **Главы (с номером)**     | `= НАЗВАНИЕ`                                                            |
| **Главы (без номера)**    | `#heading(level: 1, numbering: none)[ВВЕДЕНИЕ]`                         |
| **Рисунки**               | `#figure(image("path"), caption: [Название]) <метка>`                   |
| **Таблицы (с переносом)** | `#gost-table(columns: (...), caption: [...], header: (...), ...ячейки)` |
| **Формулы**               | `$ A = B + C $ <метка>`                                                 |
| **Пояснения к формулам**  | `#gost-where(($Символ$, [Описание]), ...)`                              |
| **Листинги кода**         | `#gost-listing(file: "path", caption: [...], numbers: true)`            |
| **Библиография**          | `#gost-bib-item("1.1.", [Описание источника])`                          |
| **Приложения**            | `#gost-appendix("А", "Название")[ ...контент... ]`                      |
| **Ссылки в тексте**       | `@метка` или `#ref(<метка>, supplement: "Рисунком")`                    |

## Доступные для редактирования файлы

- `chapters/01_toc.typ` - Содержание, генерируется автоматически через `#gost-toc()`, не редактируется вручную.
- `chapters/02_main_text.typ` — основной текст работы, должен начинаться со `Вступления`, включать основной раздел и заканчиваться `Заключением`.
- `chapters/03_references.typ` — список литературы, оформленный через макросы `#gost-bibliography-title`, `#gost-bib-section`, `#gost-bib-item`.
- `chapters/04_appendix.typ` — приложения, оформленные через `#gost-appendix-list` и `#gost-appendix`.

## Базовая структура (chapters/02_main_text.typ)

Все заголовки 1 уровня (`=`) автоматически начинаются с новой страницы и пишутся ПРОПИСНЫМИ буквами. Заголовки 2 (`==`) и 3 (`===`) уровней пишутся с большой буквы.
Если нужен заголовок без нумерации (например, для Введения или Заключения), используйте явный вызов:

```typst
#heading(level: 1, numbering: none)[ВВЕДЕНИЕ]

Текст введения...

= ИССЛЕДОВАТЕЛЬСКИЙ РАЗДЕЛ
== Постановка задачи
Текст подраздела...
```

## Рисунки

Рисунки вставляются стандартным макросом `#figure`. Нумерация (сквозная или по главам) и слово «Рисунок» подставляются автоматически.

```typst
#figure(
  image("assets/images/schema.png", width: 80%),
  caption: [Схема работы]
) <img-schema>

В соответствии с @img-schema... // Вывод: В соответствии с Рисунок 1.1...
```

_Для широких схем (альбомная ориентация) оборачивайте в `#set page(flipped: true)` ... `#set page(flipped: false)`._

Перекрестные ссылки создаются с помощью встроенной функции #ref(). Typst распознает тип объекта и автоматически генерирует нужное слово с номером:

```typst
В соответствии с @img-details можно заметить...
// Вывод: В соответствии с Рисунок 1 можно заметить...

// Для изменения падежа передается аргумент supplement:
В соответствии с #ref(<img-details>, supplement: "Рисунком") можно заметить...
// Вывод: В соответствии с Рисунком 1 можно заметить...
```

## Таблицы

Для таблиц ГОСТ требует автоматического переноса заголовков на новые страницы с добавлением надписи "Продолжение Таблицы N". Используйте макрос `#gost-table`.

```typst
#import "../settings/gost_tables.typ": gost-table

#gost-table(
  columns: (1fr, 2fr), // 1fr растягивает колонку на доступную ширину
  caption: [Анализ параметров],
  header: ([Параметр], [Значение]),
  [Шрифт], [Times New Roman],
  [Размер], [14pt]
) <tab-params>
```

## Формулы и Пояснения

Формулы нумеруются автоматически, если они вынесены в отдельный блок (с пустыми строками до и после). Пояснения («где...») оформляются макросом `#gost-where`.

```typst
#import "../settings/gost_math.typ": gost-where

Расчет ведется по формуле:
$
  Delta T = T_0 - T_1
$ <eq-trud>

#gost-where(
  ($T_0$, [трудовые затраты по базовому варианту;]),
  ($T_1$, [трудовые затраты по предлагаемому варианту.])
)
```

## Листинги кода

Код вставляется через `#gost-listing`. Он рисует рамку, ставит подпись сверху и нумерует строки с шагом 10. Можно брать код напрямую из файла.

```typst
#import "../settings/gost_listings.typ": gost-listing

#gost-listing(
  file: "assets/codes/script.py",
  caption: [Алгоритм обработки],
  lang: "python",
  numbers: true
) <list-algo>

В @list-algo {10-30} показан цикл...
```

## Список литературы

Список источников набирается через макросы разделов и отдельных пунктов, чтобы обеспечить правильный отступ.

```typst
#import "../settings/gost_references.typ": gost-bibliography-title, gost-bib-section, gost-bib-item

#gost-bibliography-title() // Главный заголовок страницы

#gost-bib-section(1, "АНАЛИТИЧЕСКИЙ РАЗДЕЛ")

#gost-bib-item("1.1.", [Борзенко А... \// Компьютер-пресс. --- 2006...])
```

_Ссылки в тексте ставятся вручную:_ `В работе [1.1]...`

## Приложения

Каждое приложение изолирует счетчики (рисунки становятся А.1, А.2 и т.д.).

```typst
#import "../settings/gost_appendix.typ": gost-appendix-list, gost-appendix

// 1. Вывод оглавления приложений (отдельная страница)
#gost-appendix-list(("А", "Техническое задание"))

// 2. Само приложение
#gost-appendix("А", "Техническое задание")[
  Текст приложения...
  #figure(image("...")) <img-app> // Станет "Рисунок А.1"
]
```

## Основные ошибки при форматировании

- **Неправильные отступы в Содержании:** Использование ручных пробелов. Содержание генерируется автоматически через `#gost-toc()`.
- **Ручная нумерация рисунков:** Написание текста "Рисунок 1" под картинкой. Нужно использовать `<label>` и `@label`, шаблон сам подставит слова и номера по ГОСТу.
- **Использование неимпортированных инструментов:** Использование макросов или функций, которые не были импортированы в документ. Всегда проверяйте, что в начале файла есть нужные `#import` для всех используемых макросов.
