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



         

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


\addtocontents{toc}{\hrule}

и в оглавлении появится линейка. Имейте только в виду, что в аргументе \addtocontents необходимо защищать хрупкие команды с помощью команды \protect. В случае с \hrule мы обошлись без \protect, так как эта команда не хрупка, но если есть сомнения, то лучше команду защитить. Напомним, что \protect действует только на непосредственно следующую команду и что команды для смены шрифта или установки пробелов в защите с помощью \protect не нуждаются. Приведем пример более разумного применения \addtocontents, в котором требуется \protect. Пусть вы не хотите, чтобы какая-то из строк в оглавлении начинала новую страницу. Тогда надо перед командой, порождающей эту строку оглавления (обычно таковой будет команда наподобие \section), написать в своем файле вот что:

\addtocontents{toc}{\protect\nopagebreak}

В результате в toc-файл запишется команда \nopagebreak, и нежелательный разрыв страницы в оглавлении будет предотвращен. Если опустить \protect, то получится весьма непонятное сообщение об ошибке.

При совместном использовании команд \addtocontents возникает следующий неприятный эффект. Пусть ваш файл имеет вид, скажем,

\documentclass{book} \usepackage{mystyle} \begin{document} \tableofcontents \include{ch1} \addtocontents{\hrule} \include{ch2} \end{document}

Тогда, вопреки всем ожиданиям, в оглавлении линейка окажется не между записями, отвечающими файлам ch1.tex и ch2.tex, а после записей, отвечающих файлу ch2.tex. Чтобы этого избежать, запишите команду \addtocontents в начало файла ch2.tex (самой первой строчкой).

Чтобы составить полноценное оглавление, надо иметь возможность записать в toc - (соответственно, lof- или lot-) файл не только текст, но и номер той страницы, к которой этот текст относится. Это делается с помощью команды \addcontentsline, имеющей такой синтаксис:

\addcontentsline{тип\_файла}{тип\_записи}{текст}

Здесь тип_файла — это toc, lof или lot, текст — тот текст, который будет записан в оглавление (например, команда \section в стандартном стиле article в качестве этого текста передает название раздела и его номер; подробности см.


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