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



         

Колонтитулы - часть 3


\renewcommand{\@evenhead}% {\vbox{\hbox to\textwidth{\hfil Л.Н.ТОЛСТОЙ}\hrule}}

У такого определения есть, однако, два недостатка. Во-первых, так как линейки в вертикальном режиме добавляются "впритык" к предшествующему блоку, у нас нет гарантии, что линейка не подойдет к тексту слишком близко; если бы к тому же текст в колонтитулах на разных страницах варьировался, как в дальнейших примерах, то может случиться и так, что две соседние линейки на развороте окажутся на разной высоте (из-за того, что в колонтитуле на одной странице будет буквы вроде у, опускающиеся ниже базисной линии, а на другой — нет). Средство от этого недостатка — добавить \strut в наш блок:

\renewcommand{\@evenhead}% {\vbox{\hbox to\textwidth{\hfil \strut Л.Н.ТОЛСТОЙ}\hrule}}

Второй недостаток — это то, что к размеру блока с текстом добавится ширина линейки, в результате чего этот размер превысит \headheight и мы будем получать уйму сообщений об overfull'е. Чтобы уйти от этого, надо еще чуть-чуть схитрить:

\renewcommand{\@evenhead}% {\raisebox{0pt}[\headheight][0pt]{% начало блока \vbox{\hbox to\textwidth{\hfil \strut Л.Н.ТОЛСТОЙ}\hrule}}% конец блока }% конец макроопределения

Понятно ли, что происходит? С помощью \raisebox мы заставляем TeX считать, что блок имеет высоту \headheight (нам даже незачем вникать, чему она фактически равна) и нулевую глубину (чтобы в сумме получилось то, что надо). Теперь ни о каких переполнениях речи не будет; пробел между колонтитулом и текстом можно при желании изменить, изменив значение \headsep.

Для нижних колонтитулов параметра, аналогичного \headheight, нет, так что смело делайте их любой высоты.

Кстати говоря, команду \@evenhead в этом примере можно было бы переопределить более простым образом, без \vbox, с использованием команды \underline. Наш способ, однако, более гибок: например, мы можем регулировать толщину линейки, чего с \underline не добьешься.

Итак, мы научились создавать собственные колонтитулы. Однако в LaTeX'овском стандарте в колонтитулы обычно помещается не только номер страницы, но и, например, номер и заглавие текущего раздела.


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