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



         

Оглавление, список иллюстраций и прочее - часть 6


Вот (в адаптированном виде, как водится) определение команды \l@chapter из стандартного класса book. Чтобы было понятно, о чем идет речь, напомним, что в этом определении на место #1 подставляется информация о номере (если главы нумеруются) и названии главы, а на место #2 — номер страницы.

\newcommand{\l@chapter}[2]% {\pagebreak[3] \vspace{1em plus 1pt}% отбивка перед строкой оглавления \@tempdima=1.5em % место для номера главы {% Дальнейшее происходит внутри группы... \rightskip=\@pnumwidth % см. ниже \parfillskip=-\@pnumwidth \noindent\bfseries % Начать абзац, установить шрифт \addtolength{\leftskip}{\@tempdima}% см. ниже \hspace{-\leftskip}#1\nolinebreak \hfil\nolinebreak \hbox to \@pnumwidth {\hss #2}\par \nopagebreak[3] % лучше бы здесь не рвать страницу... }% конец этой группы }% конец определения

Определение, как видите, длинное и сложное, к тому же автору не удалось полностью изгнать из него не упоминавшиеся ранее TeX'овские конструкции. Приведено оно здесь не для того, чтобы вы самостоятельно создавали подобные определения "с нуля", но чтобы вы при необходимости смогли в нем кое-что осторожно изменить. Разберем определение по порядку. В начале встречаются не рассматривавшиеся нами параметры \rightskip и \leftskip. Эти параметры со значением длины (по умолчанию они равны нулю) имеют следующий смысл: все строки абзаца начинаются с отступом \leftskip от левого поля и кончаются с отступом \rightskip от правого поля (если речь идет о последней строке, то в дополнение к отступу \parfillskip). У нас \rightskip устанавливается равным длине, записанной в определении команды \@pnumwidth (именно столько места будет отведено на номер страницы), а \leftskip устанавливается равным значению переменной \@tempdima, определяющей, сколько места будет отведено на номер главы. С другой стороны, параметр \parfillskip устанавливается равным отрицательной величине - \@pnumwidth. Тем самым, если название главы длинное и не поместится в одну строку оглавления, произойдет следующее: все строки, кроме последней, будут заканчиваться на расстоянии \@pnumwidth от правого края, а последняя строка, содержащая номер страницы, закончится на расстоянии




Содержание  Назад  Вперед