41 lines
3.1 KiB
Markdown
41 lines
3.1 KiB
Markdown
# Модуль: Нумерация
|
||
|
||
**Ответственность**: предоставляет чистые стратегии арабской, многоуровневой и кириллической нумерации без управления counters конкретного профиля.
|
||
**Расположение**: `.template/lib/shared/numbering.typ`
|
||
|
||
## Публичный интерфейс
|
||
|
||
| Символ | Тип | Описание |
|
||
|--------|-----|----------|
|
||
| `cyrillic-numbering()` | чистая функция | Преобразует положительный номер в допустимую заглавную кириллическую букву |
|
||
| `cyrillic-lower-numbering()` | чистая функция | Формирует строчную кириллическую часть списка |
|
||
| `num-11()` | чистая функция | Формирует многоуровневый формат `1.1.` |
|
||
| `num-1a()` | чистая функция | Чередует цифровые и кириллические уровни с наследованием |
|
||
| `num-1-a()` | чистая функция | Чередует уровни без полного наследования родителей |
|
||
| `attachment-numbering()` | чистая функция | Выбирает арабское или кириллическое обозначение из policy |
|
||
|
||
## Зависимости
|
||
|
||
| Модуль | Что использует |
|
||
|--------|----------------|
|
||
| Нет | Модуль состоит из чистых функций и неизменяемых массивов символов |
|
||
|
||
## Инварианты
|
||
|
||
- Исключённые ГОСТ-буквы не используются в кириллической последовательности.
|
||
- Ноль и отрицательные значения не маскируются неявным fallback, несовместимым с будущими версиями Typst.
|
||
- Функции не читают counters самостоятельно и форматируют только переданные числа.
|
||
- Один и тот же вход всегда возвращает одинаковую строку.
|
||
- Profile renderer управляет reset и scope counters, а не shared-модуль.
|
||
|
||
## Намеренно НЕ обрабатывает
|
||
|
||
- Сброс counters при новой главе.
|
||
- Выбор numbering policy конкретного документа.
|
||
- Формат заголовка приложения и supplement.
|
||
- Локализацию на другие языки.
|
||
|
||
## Заметки для агента
|
||
|
||
> Typst 0.15 предупреждает о fallback для numbering systems, которые не умеют отображать ноль. Добавьте явные негативные unit tests. Сохраните существующие варианты `num_11`, `num_1a`, `num_1_a` семантически, но публичные имена можно унифицировать, поскольку обратная совместимость не требуется.
|