Initial commit

This commit is contained in:
malysheva committed 2026-10-09 04:24:38 +00:00
commit c534d5ce80
163 files changed
+11500

No files matched your search

+44
View File
@@ -0,0 +1,44 @@
# Модуль: Настраиваемые списки
**Ответственность**: формирует многоуровневые номера и маркеры, сохраняя нативную вёрстку `enum`.
**Расположение**: `.template/lib/presentation/lists.typ`
## Публичный интерфейс
| Символ | Тип | Описание |
|--------|-----|----------|
| `bullet-list()` | function | Локально применяет геометрию к стандартному маркированному списку |
| `numbered-list()` | function | Локально применяет схему и геометрию к стандартному нумерованному списку |
| `list-scheme()` | constructor | Создаёт проверенную конфигурацию уровней, разделителей и окончаний |
| `list-level()` | constructor | Описывает нестандартный уровень, включая prefix, suffix и width |
| `list-numbering()` | function factory | Возвращает функцию нумерации для прямого использования в `enum` |
| `list-schemes` | dictionary | Хранит публичные готовые схемы |
## Инварианты
- Модуль не заменяет `enum`: переносы страниц, вложенность и многоабзацные элементы остаются ответственностью Typst.
- Внутренне `enum.full` всегда включён, чтобы форматтер знал глубину; показ родительских уровней определяет `scheme.full`.
- Если массив levels, separators или suffixes короче глубины, повторяется его последнее значение.
- Неизвестная именованная схема вызывает понятную ошибку и не подменяется схемой по умолчанию.
- Режимы `normal`, `compact` и `flush` меняют только геометрию; `auto` наследует окружающий стиль.
- Локальные параметры `bullet-list` и `numbered-list` не должны менять списки за пределами переданного body.
## Поддерживаемые обозначения
- арабские числа: `1`;
- арабские числа с ведущим нулём: `01` или `list-level("1", width: N)`;
- римские числа: `I`, `i`;
- латинские буквы: `A`, `a`;
- кириллица по ГОСТ: `А`, `а`;
- любой строковый или content-маркер;
- пользовательская функция `value => content`.
## Намеренно НЕ обрабатывает
- собственную раскладку строк и переносы страниц;
- скрытое глобальное продолжение счётчика между несвязанными списками;
- автоматический выбор схемы по содержимому текста.
## Заметки для агента
> Не заменяйте нативный `enum` ручной сеткой или таблицей. Это ухудшит переносы, семантику документа и поддержку многоабзацных пунктов. Новые возможности добавляйте через форматирование массива родительских номеров и локальные set/show rules.