Динамическое оглавление

Назначение

Связывание шаблонных переменных на каждой итерации цикла по (под)заголовкам.

Сигнатура

[функция] toc-children &key heading-class depth referrer suffix

Пакет

ystok.help

Аргументы
heading-class
Образец имени CSS класса, к которому относятся подбираемые заголовки. Имя класса может быть указано в HTML-элементах Hi с помощью атрибута class="css-class". Умолчание есть :all.
depth
Наибольшая глубина вложенности подзаголовков внутри component. Умолчание есть 1.
referrer
Задает компонент книги, по которому строится оглавление.
suffix
Булево значение,
умолчание есть t.
Значение

Список ассоциативных списков, связывающих шаблонные переменные, для всех подзаголовков, вложенных в компонент referrer. Список отсортирован в "естественном" порядке вхождения статей в книгу.

Описание

В качестве referrer можно указать одну из специальных переменных:

*current-chapter*
Означает оглавление раздела, в который непосредственно входит статья.
*current-topic*
Означает оглавление самой текущей статьи, которое будет содержать все подзаголовки по из всех её сегментов.

По умолчанию, если текущая статья является начальной в разделе, в качестве компонента принимается *current-chapter*, иначе *current-topic*. Собираются все подзаголовки, разница уровней которых с уровнем заголовка самого component не превышает depth.

Образец heading-class сопоставляется со значением атрибута class элементов Hi. Он задается в синтаксисе языка Лисп согласно следующему правилу:

pattern ::= nil | keyword | string
      | (not pattern) | (and pattern...) | (or pattern...)

Причем

Если вложенные подзаголовки отсутствуют внутри component, возвращается пустой список (), т.е. nil.

Если значение suffix истино, значение шаблонной переменной item-content будет включать и текст заголовка, и дополнительные свойства, нампример, category. Если значение suffix есть nil, вслед за содержимым ничего не выдаётся.

Примеры

На начальной странице раздела верхнего уровня часто размещают его краткое оглавление. Для этого в исходный код страницы нужно поместить шаблон следующего вида:

<ul>
<!-- TMPL_LOOP (toc-children) -->
<li><a href="{item-uri}" class="{item-class}" title="{item-description}">{item-content}</a></li>
<!-- /TMPL_LOOP -->
</ul>