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



         

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


ниже). Наконец, тип_записи определяет, каким образом будет обрабатываться этот текст при чтении файла с оглавлением. Именно, если второй аргумент в команде \addcontentsline был abcd, то, когда при следующем запуске LaTeX'а будет читаться toc- (соответственно, lof- или lot-) файл, будет исполнена команда \l@abcd с двумя аргументами, первый из которых - текст, записанный в третьем аргументе команды \addcontentsline, а второй - номер страницы, на которую попала ваша команда \addcontentsline. Например, если в файле было написано

\leavevmode \hbox to\hsize{\verb"\addcontentsline{toc}{abcd}{О слонах}"\hfill $\displaystyle(*)$

и если эта команда попала на страницу

95
, то при следующем запуске LaTeX'а в процессе чтения toc-файла будет исполняться команда

\l@abcd{О слонах}{95}

Разумеется, чтобы при этом не получилось сообщения об ошибке, надо, чтобы команда \l@abcd была определена. Стало быть, в стилевом пакете должно присутствовать ее определение. Если мы хотим, чтобы запись

(*)
в исходном файле порождала в оглавлении строку

О слонах................................ 95

то в преамбуле надо написать вот что:

\newcommand{\l@abcd}[2]{\hbox to\textwidth{#1\dotfill #2}}

Чтобы при этом страница в оглавлении была указана верно, необходимо команду \addcontentsline разместить непосредственно после команды \section* (иначе есть опасность, что они попадут на разные страницы).

Если в третьем аргументе команды \addcontentsline присутствуют "хрупкие" команды, то их следует, как водится, защитить командой \protect, если, с другой стороны, в нем записана \the-команда, соответствующая какому-то счетчику, то в toc-файл будет записано печатное представление значения этого счетчика по состоянию на тот момент, когда выполнялась \addcontentsline. Таким способом можно, например, записать в оглавление номер текущего раздела документа: достаточно сказать

\addcontentsline{toc}{abcd}{\thesection. О слонах}

Теперь рассмотрим, как именно собирают оглавление стандартные команды наподобие \chapter или \section.


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