[макрос]
define-book
Сигнатура
define-book name {:option value}* => book
Пакет
ystok.help
Аргументы
- name
- Задает краткое имя или код разрабатываемой книги помощи:
строка или символ;
для символа берется печатное имя и преобразуется в нижний регистр.
- :option value
- Ключевые аргументы, которые аналогичны
asd:defsystem
и по
большей части не оцениваются. Отличные от "стандартных" приведены ниже.
Типы компонентов (задаются ключами)
chapter
- Имя раздела (главы). Каждый раздел реализуется экземпляром подкласса
asd:module
и позволяет сгруппировать статьи в отдельной папке. Имя раздела служит умолчанием
для имени исходной и
целевой папок раздела,
но может быть перекрыто явным заданием
аргумента pathname, согласно принципам обязательным является . Единственным
нестандартным аргументом раздела является start, см. ниже.
- В качестве компонентов допускаются все типы.
Раздел уровня два или ниже, т.е. вложенный в другой раздел,
называется также подразделом.
- topic
- Имя исходного HTML-файла "нормальной" статьи.
- navigation
- Имя исходного HTML-файла навигационной страницы,
показываемой в левой фрамуге; не подлежит разбиению на сегменты.
- popup
- Имя исходного HTML-файла всплывающей заметки.
- aux-file
- Имя вспомогательного файла, просто копируемого в папку назначения.
- aux-folder
- Имя вспомогательной подпапки, например, содержащей графические файлы и
просто копируемой в папку назначения.
- index
- Имя файла предметного указателя.
- toc
- Имя файла оглавления.
Ключевые аргументы :option value
- id
- Идентификатор книги помощи;
если не задан, принимается равным строке, полученной из name.
Идентификатор упоминается в гибких ссылках и служит для поиска
во внутреннем реестре во время компиляции книги или
исполнения прикладной программы.
В идентификаторе не допустимы пробелы, буквы, кроме латинских, и другие специальные знаки. Разрешены
лишь литеры, соответствующие компоненту host спецификации URI.
- title
- Строка названия книги, которое будет отображаться в заголовке окна браузера
и которое печаталось бы на обложке книги или её на самой первой странице.
- author
- Стандартный для ASDlite
аргумент, строка, в которой перечислены авторы книги через запятую.
- description
- Стандартный для ASDlite аргумент,
строка аннотации или расширенное (полное) название книги.
- pathname
- Определяет исходную папку,
откуда берутся препарированные автором файлы статей и прочие компоненты.
- Стандартный для ASDlite аргумент, оценивается.
Если не задан, то в качестве исходной принимается папка, где находится сам файл
определения книги.
Допустим логический путь.
- output-pathname
- Определяет целевую папку,
куда компилятор поместит готовую книгу. Аргумент
обязательно должен быть задан и, аналогично pathname, оценивается.
Конечный слэш, прямой (/) или обратный (\), необязателен.
Допустим логический путь.
- start
- Имя компонента — начальной статьи. Страница этой статьи (точнее, её нулевого
сегмента) называется также
начальной страницей книги.
Она будет помещена первой в линейном упорядочении всех страниц.
- Список ключей, задающий кнопки на панелях инструментов, которые будут
показаны соответственно вверху или внизу всех статейных страниц,
cм. ниже.
Значение по умолчанию: (:prev :up :next :toggle)
.
- external-format
- Внешний формат
для исходных файлов книги по умолчанию, см.
ниже.
- language
- Код языка всех страниц книги в виде строки или ключа.
Строка автоматически преобразуется в
символ-ключ путём перевода всех букв
в верхний регистр и включения в пакет keyword
.
- charset
- Кодировка букв на всех страницах книги.
- output-html-format
- Внешний формат
окончательных HTML-файлов книги.
- use-templates
- Одно из значений:
nil
, t
или :braces
.
Умолчание: :braces
(фактически зависит от
html-template:*accept-braces-markers*
).
- aliases
- Список определений виртуальных якорей.
- dump
- Задаёт значение по умолчанию для слота dump
статей книги.
Умолчание: t
(истина).
- environment
- Список пар вида
(имя-шаблонной-переменной . значение).
Задаёт глобальные значения шаблонных переменных,
на которые могут ссылаться псевдотеги.
- entities
- Список пар вида
("имя-псевдолитеры" . "HTML-элемент").
Каждая ссылка на псевдолитеру внутри книги
будет заменяться на указанное значение.
Возвращаемое значения
Экземпляр класса book-system,
представляющий дескриртор книги помощи, находящей в стадии разработки/компилирования.
Описание
Макрос создает дескриптор разрабатываемой книги
и все её компоненты: разделы, статьи, вспомогательные файлы.
Порядок задания компонентов определяет линейную последовательность
статейных страниц. В эту последовательность вносят вклад все компоненты типа topic
,
а компоненты типа navi-topic
исключаются.
Первой в последовательности будет страница, полученная из самый
первого экземпляра topic
. Явное указание аргумента
start позволяет скорректировать эту естественную последовательность.
Аргументы title и description
задают строки, которые попадут в шапку HTML-файла
набора фрамуг.
Если title не задан, то в качестве заголовка окна по умолчанию
принимается имя книги.
:prev :next
- Создают кнопки, позволяющие пролистывать книгу в обратном и прямом
направлениях по одной странице.
:up
- Создаёт кнопки, позволяющие переходить на
начальную страницу раздела. Если пользователь находится на начальной странице,
то произойдёт переход на начальную страницу надраздела или книги.
:toggle
- Создаёт выключатель, позволяющий спрятать или показать левую фрамугу.
Аргумент external-format
определяет, какой кодировке
(1) были подготовлены
(2) будут созданы
Аргумент output-html-format
определяет кодировку окончательных страниц книги. Если он
не указан, его значение вычисляется из
charset
. Явное указание кодировки и языка книги необходимы для правильной генерации предметного указателя
и оглавления.
Аргумент use-templates может принимать одно из следующих значений.
nil
- Исходные файлы страниц книги являются "обычными" HTML-файлами.
t
- Исходные HTML-файлы являются шаблонами,
т.е. могут содержать псевтотеги
и к содержимому файлов будет применена функция
html:parse-htt
.
Шаблонные выражения в фигурных скобках не допускаются.
:braces
- Исходные HTML-файлы являются шаблонами
и в них допустимы шаблонные выражения в фигурных скобках вида
{выражение}
.
Внутри конкретного исходного HTML-файла или его части способ интерпретации
фигурных скобок можно уточнить посредством
Для конкретного текстового файла интерпретацию шаблонов можно включить или
отключить посредством аргумента
:use-templates.
Аргумент aliases является списком подсписков следующего вида:
(alias_name origin_name ...)
где alias_name — виртуальный якорь,
определяемый через реально существующие в книге якорь origin_name.
(В подсписке допустимо указывать несколько реальных якорей.)
Аргумент entities является ассоциативным списком. Каждая его пара
сопоставляет имени псевдолитеры
соответствующий HTML-элемент или любой другой
HTML-код, указанный в двойных кавычках. Эта строка-значение сначала подлежит синтаксическому разбору,
а затем будет подставляться в результирующие страницы вместо
ссылки на псевдолитеру. Ссылки имеют вид escape-последовательности
&имя;
и аналогичны стандартным
именованным HTML-литерам.
Пример
:aliases (("book-descriptor" "BOOK-SYSTEM" "BOOK"))
Виртуальный якорь book-descriptor
переопределяется через
два исходных якоря BOOK-SYSTEM
и BOOK
.
Каждая гибкая ссылка на виртуальный якорь
book-descriptor
на страницах книги будет заменена всплывающим меню
с двумя пунктами, переадресующими на исходные якоря.
В нашем случае оно выглядит так.
См. также