Files
Report-showcase/.template/development/modules/references.md
T
2026-10-09 01:45:17 +00:00

50 lines
5.1 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Модуль: Ссылки и библиографии
**Ответственность**: предоставляет русскоязычные перекрёстные ссылки и модель одной или нескольких библиографических секций Typst 0.15.
**Расположение**: `.template/lib/domain/references.typ`, `.template/lib/presentation/references.typ`
## Публичный интерфейс
| Символ | Тип | Описание |
|--------|-----|----------|
| `vref()` | contextual function | Форматирует одну ссылку с падежом для рисунка, таблицы, формулы, раздела или приложения |
| `vrefs()` | contextual function | Форматирует массив однородных labels с корректным соединением |
| `eqref()` | contextual function | Создаёт ссылку на формулу без лишнего supplement |
| `bibliography-section()` | domain constructor | Описывает sources, title, style, target, group и политику переноса |
| `render-bibliographies()` | function | Размещает произвольное число секций через нативный `bibliography()` |
| `validate-bibliographies()` | function | Проверяет ids, sources, target/group и наличие default coverage policy |
`vref()` и `vrefs()` по умолчанию используют предложный падеж и прописную первую букву названия объекта. Короткие коды — `"и"`, `"р"`, `"д"`, `"в"`, `"т"`, `"п"`; прежние сокращения и полные русские названия нормализуются во внутренние ключи `"имен"`, `"род"`, `"дат"`, `"вин"`, `"тв"`, `"предл"`. Строчная форма включается явно через `capitalized: false`.
## Зависимости
| Модуль | Что использует |
|--------|----------------|
| Typst `query`, `selector`, `ref`, `cite` | Разрешение labels и citations |
| Typst 0.15 `bibliography(target:, group:)` | Несколько списков источников и управление нумерацией |
| `.template/lib/domain/document.typ` | Profile metadata и render options |
## Инварианты
- Cross-reference label и bibliography citation являются разными типами использования и не смешиваются в одной функции.
- `vref` всегда обрабатывает состояние `element == none`, потому что Typst может ещё не обнаружить элемент.
- `vref` поддерживает `имен`, `род`, `дат`, `вин`, `тв`, `предл`; неизвестный падеж является ошибкой, а не тихим fallback.
- `vrefs` объединяет однородные labels под одной формой множественного числа (`рисунках 1 и 2`, `приложениях А и Б`), смешанные типы форматирует поэлементно.
- Заголовок с supplement `Приложение` классифицируется отдельно от обычного раздела и поддерживает все шесть падежей.
- Каждая bibliography section имеет стабильный id и хотя бы один source.
- Последующие секции по умолчанию начинаются с новой страницы (`page_break: true`), поэтому их заголовки и записи не могут наложиться; компактный режим включается явно.
- `target` передаётся как `auto`, label, selector, location или function без преобразования в строку.
- `group: none` сбрасывает нумерацию секции; одинаковая строковая группа продолжает нумерацию.
- Если используется несколько sections, fixture обязан доказать, что каждая citation попала ровно в одну bibliography.
## Намеренно НЕ обрабатывает
- Редактирование `.bib` и Hayagriva-файлов.
- Поиск научных источников.
- Ссылки на внешние URL без label.
- Автоматическое определение падежа по окружающему тексту.
## Заметки для агента
> Typst 0.15 нативно распределяет citations между несколькими bibliographies. Не воспроизводите этот алгоритм вручную. Domain хранит настройки, presentation вызывает built-in и смещает уровень заголовка библиографии по официальной схеме. Добавьте fixtures для поглавных, тематических, общей и раздельной нумерации.