50 lines
5.1 KiB
Markdown
50 lines
5.1 KiB
Markdown
# Модуль: Ссылки и библиографии
|
||
|
||
**Ответственность**: предоставляет русскоязычные перекрёстные ссылки и модель одной или нескольких библиографических секций 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 для поглавных, тематических, общей и раздельной нумерации.
|