Оглавление, списки рисунков, списки таблиц
tableofcontents и почему второй проход имеет значение.
Оглавление, списки рисунков, списки таблиц
Оглавление в LaTeX — это не то, что вы создаете или поддерживаете. Вы помещаете одну команду туда, где хотите, и LaTeX собирает записи из уже написанных вами заголовков. То же самое касается списка рисунков и списка таблиц, в которых вместо заголовков собраны подписи. Это один из тех случаев, когда объявление структуры окупается напрямую: переименуйте раздел или переместите фигуру, и вступительная часть исправится сама собой.
Три команды
\tableofcontents\listoffigures\listoftables\tableofcontents печатает оглавление в том месте, где оно появляется, обычно сразу после титульного листа или аннотации. Каждый пронумерованный \chapter, \section и \subsection отображается со своим номером, заголовком и страницей, вплоть до глубины, установленной счетчиком toclength, описанным в уроке заголовков. \listoffigures и \listoftables делают то же самое для заголовков рисунков и таблиц, извлекая текст из каждого \caption{...}. В статьях они необычны, но тезисы обычно требуют обоих и размещаются на отдельных страницах после оглавления.
Почему важен второй проход
Компилируйте дважды после структурных изменений. Это не суеверие. Так работает механизм. Во время компиляции LaTeX не может знать на странице 2, что окажется на странице 47, поэтому он записывает каждый заголовок и номер его последней страницы во вспомогательный файл (.toc, .lof, .lot) по ходу дела. \tableofcontents читает файл, оставшийся от предыдущего запуска. В новом проекте этот файл еще не существует, поэтому первая компиляция создает пустое оглавление. После добавления или перемещения разделов в оглавлении отображаются устаревшие заголовки или неправильные номера страниц до следующего запуска. Вторая компиляция читает только что написанный файл, и все выравнивается. Редакторы, которые запускают latexmk или эквивалентную оболочку, обрабатывают повторы за вас, поэтому вы, возможно, даже не заметили. Если ваше TOC когда-либо выглядит неправильно, скомпилируйте еще раз, прежде чем отлаживать что-либо еще.
Помеченные разделы и оглавление
Помеченным разделам требуется \addcontentsline{toc}{section}{Title}, если они должны появиться в оглавлении. Заголовок, отмеченный звездочкой, например \section*{Acknowledgments}, намеренно пропускает как нумерацию, так и файл содержимого, поэтому, если вы хотите, чтобы он был внесен в список, вы добавляете запись самостоятельно. Три аргумента команды — это файл для записи («toc»), уровень записи («раздел») и отображаемый текст. Поместите строку сразу после заголовка, отмеченного звездочкой, чтобы записанный номер страницы был правильным.
Стоит выработать одну привычку: прежде чем поделиться PDF-файлом, взгляните на оглавление на предмет явных признаков устаревшей сборки, таких как вопросительные знаки, пропущенные записи или последняя запись, которая не соответствует последней главе. Почти всегда лечится еще одной компиляцией. Поймать это самостоятельно дешевле, чем поймать рецензента. Тот же танец со вспомогательным файлом позволяет \ref и его друзьям, описанным в перекрестных ссылках.