Окружения list и trivlist
Все LaTeX'овские перечни являются на самом деле частными случаями одной общей конструкции — окружения list. Рассмотрим, как это окружение работает.
Окружение list имеет два обязательных аргумента. Общий вид этого окружения в исходном тексте будет такой:
\begin{list}{заголовок\_по\_умолчанию}{команды} ... \end{list}Аргументы окружения list означают следующее. "Заголовок по умолчанию — это заголовок элемента перечня, печатающийся в том случае, когда этот элемент перечня вводится командой \item без аргумента. Пример:
\begin{list}{И какой-то}{} \item малыш показал ему шиш. \item барбос укусил его в нос. Нехороший барбос, невоспитанный! \end{list} |
Аргумент команды окружения list содержит те команды, которые будут исполнены после входа в перечень. Поэтому в нем можно задать команды, присваивающие новые значения параметрам оформления перечня (в частности, отбивкам, описанным в лекции 5: эти команды будут выполнены после команды \@list..., выполняющейся при входе в перечень). Кроме этого, во втором аргументе окружения list можно поместить команду \usecounter. Эта последняя требует одного обязательного аргумента — имени счетчика (счетчик должен быть определен). Если \usecounter присутствует во втором аргументе окружения list, то при входе в окружение значение счетчика, являющегося аргументом \usecounter, будет установлено в нуль, а каждая команда \item без аргумента будет увеличивать его на единицу с помощью \refstepcounter (так что на значения этого счетчика можно будет ссылаться с помощью \label и \ref). Вот пример c \usecounter (подразумевается, что у нас определен счетчик tmp):
Вот как выглядят первые буквы латинского алфавита: \begin{list}{\Alph{tmp}:}% {\usecounter{tmp}} \item Выглядит так же, как соответствующая русская буква, и читается так же. \item Читается не так, как похожая на нее русская буква. \item И с ней та же история. \end{list} |
Чтобы заголовки элементов перечня выравнивались по левому краю, а не по правому, можно завершить "заголовок по умолчанию" командой \hfill; чтобы по левому краю выравнивались заголовки, заданные в явном виде в необязательном аргументе команд \item, нужно завершить командой \hfill этот необязательный аргумент.
Окружением list разумно пользоваться не непосредственно, как в приведенных примерах, а для определения нового окружения с помощью \newenvironment. Вот, например, как в стандарте определяется окружение {quote}:
\newenvironment{\quote}% {\begin{list}{}{\rightmargin=\leftmargin}\item[]}}% {\end{list}} Команда \item с пустым аргументом необходима, поскольку до команды \item в перечне не должно быть никакого текста.
Наряду с окружением list в LaTeX'е определен его важный частный случай — окружение trivlist. Его отличия от list таковы:
- это окружение не требует аргументов (так же, как и все окружения для создания перечней, с которыми мы имели дело раньше);
- \leftmargin, \labelwidth и \itemindent для него всегда равны нулю (стало быть, текст печатается без втяжки); \parsep равно \parskip;
- команда \item, употребленная внутри этого окружения, обязана иметь аргумент (хотя бы пустой).
Окружения list можно вкладывать друг в друга; максимальная глубина вложенности равна шести. В окружениях наподобие {itemize} предусмотрен "ограничитель", снижающий эту макимальную глубину до четырех. В личном стилевом файле, не рассчитанном на общее пользование, предусматривать такой ограничитель большого смысла нет: просто следите за тем, чтобы не вкладывать слишком много list'ов друг в друга.