# Модуль: Настраиваемые списки **Ответственность**: формирует многоуровневые номера и маркеры, сохраняя нативную вёрстку `enum`. **Расположение**: `.template/lib/presentation/lists.typ` ## Публичный интерфейс | Символ | Тип | Описание | |--------|-----|----------| | `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 короче глубины, повторяется его последнее значение. - Неизвестная именованная схема вызывает понятную ошибку и не подменяется схемой по умолчанию. - Локальные параметры `numbered-list` не должны менять списки за пределами переданного body. ## Поддерживаемые обозначения - арабские числа: `1`; - арабские числа с ведущим нулём: `01` или `list-level("1", width: N)`; - римские числа: `I`, `i`; - латинские буквы: `A`, `a`; - кириллица по ГОСТ: `А`, `а`; - любой строковый или content-маркер; - пользовательская функция `value => content`. ## Намеренно НЕ обрабатывает - собственную раскладку строк и переносы страниц; - скрытое глобальное продолжение счётчика между несвязанными списками; - автоматический выбор схемы по содержимому текста. ## Заметки для агента > Не заменяйте нативный `enum` ручной сеткой или таблицей. Это ухудшит переносы, семантику документа и поддержку многоабзацных пунктов. Новые возможности добавляйте через форматирование массива родительских номеров и локальные set/show rules.