Tex: подробное описание С. М. Львовский


Download 1.51 Mb.
Pdf ko'rish
bet126/143
Sana08.05.2023
Hajmi1.51 Mb.
#1444247
1   ...   122   123   124   125   126   127   128   129   ...   143
Bog'liq
LaTeX-Lvovsky


разделов печатались в оглавлении одно под другим. После заглавия идут
«лидеры» — ряд
точек до завершающего строку номера страницы. Если заглавие в строку не укладывается,
то оно обычным образом будет перенесено на следующую строку (если есть какие-то неяс

ности, загляните в оглавление к этой книге). Из сказанного следует, что, если раздел имеет
слишком длинный номер, то в оглавлении он может наложиться на заглавие. Средство про

тив этого
— переопределить в стилевом файле команду \l@section (или \l@subsection. . . ),
увеличив должным образом третий аргумент команды \@dottedtocline.
Параметры оформления элемента оглавления, задаваемого командами, определенными
через \@dottedtocline, можно менять. Именно, размер места, отводимого на номер страни

цы, задается значением команды \@pnumwidth, которую можно переопределить (в стилевом
файле, естественно, так как в имени этой команды присутствует @). В стиле book эта команда
определена как
\newcommand{\@pnumwidth}{1.55em}
и соответственно на номер страницы отводится 1,55 em места. Если мы хотим, чтобы на но

мер страницы отводилось 2 em, надо написать в своем стилевом файле
\renewcommand{\@pnumwidth}{2em}
Еще одна команда, значение которой отвечает за оформление оглавления,
— это \@tocrmarg.
Если запись в оглавлении занимает более одной строки, то значение этой команды задает от

ступ от правого поля, который будет у всех строк, кроме той последней, что завершается
номером страницы. Если Вы хотите, чтобы размер этого отступа равнялся 3 em, напишите в
своем стилевом файле так:
\renewcommand{\@tocrmarg}{3em}
В этом месте необходимо предупредить читателя об опасности: хотя \@pnumwidth и \@tocrmarg
используются для задания размеров, они не являются параметрами со значением длины, и
запись наподобие \@tocrmarg=4em не даст ничего, кроме сообщения об ошибке!
Наконец, регулировать густоту точек-
«лидеров» можно, если переопределить коман
ду \@dotsep. В стиле book она определена как
\newcommand{\@dotsep}{4.5}


IX.4. ОГЛАВЛЕНИЕ, СПИСОК ИЛЛЮСТРАЦИЙ И ПРОЧЕЕ
190
Если Вы хотите, чтобы точки шли погуще, попробуйте переопределить ее, заменив 4.5 на
число поменьше (число может быть дробным, в нем можно использовать как десятичную
запятую, так и десятичную точку):
\newcommand{\@dotsep}{3,9}
Только не пытайтесь писать вместо этого \@dotsep=3,9: получите сообщение об ошибке, и
ничего более.
В приложении
Г
Вы найдете определения команд \l@section и им подобных, чтобы Вам
было от чего отталкиваться при их модификации.
Теперь рассмотрим, как в стандартных стилях определяются записи в оглавлении, соот

ветствующие самым крупным разделам. Вот (в адаптированном виде, как водится) определе

ние команды \l@chapter из стандартного стиля book. Чтобы было понятно, о чем идет речь,
напомним, что в этом определении на место #1 подставляется информация о номере (если
главы нумеруются) и заглавии главы, а на место #2
— номер страницы.
\newcommand{\l@chapter}[2]%
{\pagebreak[3]\vspace{1em plus 1pt}%
\@tempdima=1.5em % MESTO DLQ NOMERA GLAWY
{% dALXNEJ[EE PROISHODIT WNUTRI GRUPPY...
\rightskip=\@pnumwidth % SM. NIVE
\leftskip=\@tempdima % SM. NIVE
\bf % USTANOWITX VIRNYJ [RIFT
\noindent % NAˆATX ABZAC BEZ OTSTUPA...
\hspace{-\leftskip}% I S LEWOGO POLQ.
#1\nolinebreak\hfil\nolinebreak
\rlap{\mbox[\@pnumwidth][r]{#2}}\par
\nopagebreak[3]%
}% KONEC “TOJ GRUPPY
}% KONEC OPREDELENIQ
Определение, как видите, длинное и сложное, к тому же автору не удалось полностью из

гнать из него не упоминавшиеся ранее TEXовские конструкции. Приведено оно здесь не для
того, чтобы Вы самостоятельно создавали подобные определения
«с нуля» (для этого надо
знать про TEX больше, чем написано в этой книге), но чтобы Вы при необходимости смог
ли в нем кое-что осторожно изменить. Чтобы было понятно, что и как менять, разберем это
определение по порядку. В начале определения встречаются не рассматривавшиеся нами па

раметры \leftskip и \rightskip. Эти параметры со значением длины (по умолчанию они
равны нулю) имеют следующий смысл: все строки абзаца начинаются с отступом \leftskip
от левого поля и кончаются с отступом \rightskip от правого поля. При этом \rightskip
устанавливается равным длине, записанной в определении команды \@pnumwidth, определя

ющей, как мы помним, сколько места будет отведено на номер страницы, а \leftskip уста

навливается равным значению переменной со значением длины \@tempdima, определяющей,
сколько места будет отведено на номер главы. Между \@pnumwidth и \@tempdima есть очень
существенная разница. Команда \@pnumwidth всегда определяет только место, отводимое на
номер страницы, и эту команду можно переопределять в своем стилевом файле. С другой сто

роны, параметр \@tempdima используется L
A
TEXом для самых разных целей (в основном —
для временного хранения различных длин в процессе каких-то вычислений), и он может изме

ниться в процессе выполнения очень многих L
A
TEXовских команд. Поэтому присваивать ему


IX.4. ОГЛАВЛЕНИЕ, СПИСОК ИЛЛЮСТРАЦИЙ И ПРОЧЕЕ
191
какое-то значение в стилевом файле совершенно бессмысленно
— все равно оно после это
го сто раз изменится. Как мог заметить читатель, значение этому параметру присваивается в
начале исполнения команды \l@chapter, именно это значение принимается в расчет в даль

нейшем. Поэтому, если Вы захотите отводить на номер главы, скажем, 2 em вместо 1,5 em, то
Вам придется переопределить в своем стилевом файле команду \l@chapter, заменив в этом
определении третью строчку на
\@tempdima=1.5em
Такое переопределение \l@chapter на практике встречается чаще всего. Например, нужда
в нем возникает, если мы переопределяем команду \thechapter таким образом, чтоб номер
печатался римскими цифрами (как в книге, которую Вы читаете). Далее, #1
— это, как уже
было сказано, номер и заглавие главы. Точнее говоря, на месте #1 печатается
1
такой текст
(мы предполагаем, что глава называется
«Все о слонах» и что ее номер печатается как 5):
\makebox[\@tempdima][l]{5}wSE O SLONAH
Таким образом, заглавие главы всегда печатается на расстоянии \@tempdima от левого поля;
если номер главы занимает больше места, чем \@tempdima, то он наложится на заглавие.
Команда \hfil в десятой строчке обеспечивает пробел между заглавием главы и номером
страницы. Если Вы хотите заполнить этот пробел лидерами, можете переопределить коман

ду \l@chapter, заменив \hfil на, скажем,
\leaders\hbox to .5em{\hss.\hss}\hfil
(автор не гарантирует, что именно при таком выборе параметров лидеры будут выглядеть
красиво).
Надо еще сказать про команды, определяющие вид записей в списке иллюстраций (со

ответствующих плавающим иллюстрациям) и списке таблиц (соответствующих плавающим
таблицам). Они называются \l@figure и \l@table соответственно, и определяются в стан

дартных стилях с помощью \@dottedtocline. Соответствующие определения приведены в
приложении
Г
.
До сих пор речь шла про сборку материала для оглавления, списка иллюстраций и т. п.
Однако же и у самого оглавления есть заголовок, и его оформление тоже можно менять.
Чтобы было понятно, как это делать, опишем, как определена команда \tableofcontents в
стандартном стиле article:
\newcommand{\tableofcontents}%
{\section*{\contentsname}\@starttoc{toc}}
Здесь \contentsname
— это уже знакомая нам команда, которую при работе с русскими тек
стами приходится переопределять (см. стр.
104
). Как видите, заголовок оглавления оформ

ляется просто как заголовок ненумерованной секции. Вы можете вместо этого оформить за

головок, скажем, с помощью \subsection, или еще каким-либо образом. Новой для Вас бу

дет команда \@starttoc. У этой команды предусмотрен один обязательный аргумент. Этим
аргументом должно быть toc (для оглавления), либо lot или lof (для списка таблиц или
иллюстраций, соответственно). Команда \@starttoc читает toc- (соответственно, lot- или
lof-
) файл и создает оглавление как таковое. Как определены эти команды в других стилях,
написано в приложении
Г
.
1
Начиная с левого поля, невзирая на установленное значение \leftskip; именно для этих целей в опреде

ление включена команда \hspace{-\leftskip}.


IX.5. ПЕРЕЧНИ ОБЩЕГО ВИДА
192
На самом деле в определении \tableofcontents присутствует еще команда, позволяющая задать
текст для включения в колонтитулы (вспомним, что \section* сама по себе никакой информации для
колонтитулов не дает). Мы не будем вдаваться в скучные подробности по поводу этой опущенной
нами команды. Когда, по прочтении раздела 6, Вы научитесь задавать такие команды, Вы сможете
соответствующим образом переопределить и \tableofcontents.

Download 1.51 Mb.

Do'stlaringiz bilan baham:
1   ...   122   123   124   125   126   127   128   129   ...   143




Ma'lumotlar bazasi mualliflik huquqi bilan himoyalangan ©fayllar.org 2024
ma'muriyatiga murojaat qiling