Работа в системе LaTeX
de301fb4

Изменение отбивок в перечнях


Теперь настало время объяснить, как именно можно менять вышеописанные параметры. При "входе" в перечень LaTeX в первую очередь вычисляет уровень вложенности перечней: если перечень не вложен ни в какой другой, то этот уровень равен 1, для перечня, вложенного в перечень, уровень равен 2 и т. д. После этого исполняется команда \@listI, если уровень равен 1, \@listii, если уровень равен 2, и т.д.: имя команды — слово @list, к которому добавлен уровень вложенности, записанный римскими цифрами (если уровень вложенности равен 1, то римская цифра записывается прописной буквой I, в остальных случаях римские цифры записываются строчными латинскими буквами). В стандартных классах команды \@listI, \@listii и т.п. определены таким образом, что они в момент входа в перечень устанавливают значение параметров оформления перечня на соответствующем уровне. Именно поэтому переустановка (некоторых из) параметров перечня в стилевом пакете может ничего не дать.

Итак, чтобы менять отбивки в перечнях, надо переопределять команды \@listI, \@listii, ..., \@listvi. Видимо, самое практичное — переопределить в своем стилевом пакете команды \@listI, \@listii, ..., \@listvi (или не все из них — в зависимости от того, какова реальная максимальная глубина вложенности перечней в вашем документе), присвоив всем перечисленным в предыдущем разделе десяти параметрам явные значения. Например, можно написать что-нибудь в таком роде:

\renewcommand{\@listI}{% \leftmargin=25pt \rightmargin=0pt \labelsep=5pt \labelwidth=20pt \itemindent=0pt \listparindent=0pt \topsep=8pt plus 2pt minus 4pt \partopsep=2pt plus 1pt minus 1pt \parsep=0pt plus 1pt \itemsep=\parsep}

Здесь всем параметрам оставлены стандартные значения, за исключением \parsep и \itemsep: в отличие от положительных значений, задаваемых в стандарте, мы устанавливаем их такими же, как обычная вертикальная отбивка между абзацами (как вы помните, она обозначается \parskip и обладает нулевым естественным размером и растяжимостью 1pt). На взгляд автора, такие перечни смотрятся лучше.

Если какой-то из параметров (например, \labelsep) одинаков в перечнях всех уровней, то достаточно прописать его установку только в определении \@listI: при входе в перечень верхнего уровня этот параметр будет установлен командой \@listI, и LaTeX будет его помнить, пока не выйдет из " наружного" перечня.



Содержание раздела