Initial commit

This commit is contained in:
tkachenko committed 2026-10-09 01:45:17 +00:00
commit 41d230d524
163 files changed
+11500

No files matched your search

@@ -0,0 +1,40 @@
# Модуль: Нумерация
**Ответственность**: предоставляет чистые стратегии арабской, многоуровневой и кириллической нумерации без управления 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` семантически, но публичные имена можно унифицировать, поскольку обратная совместимость не требуется.