lists.md 3.3 KB

Модуль: Настраиваемые списки

Ответственность: формирует многоуровневые номера и маркеры, сохраняя нативную вёрстку 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.