Files
test/.template/development/modules/lists.md
T
2026-10-09 04:24:38 +00:00

45 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Модуль: Настраиваемые списки
**Ответственность**: формирует многоуровневые номера и маркеры, сохраняя нативную вёрстку `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.