Как сделать содержание в латехе
Перейти к содержимому

Как сделать содержание в латехе

  • автор:

Записки дебианщика

В этом блоге публикуются заметки и решения, найденные в процессе работы, освоения и жизни в дистрибутиве Debian GNU/Linux.

5/09/2011

Оглавление и нумерация глав в LaTeX

Оглавление и нумерация разделов настраивается довольно просто в LaTeX, однако информация об этом разбросана по сайтам и книгам, которые искать вновь каждый раз лениво. Этот пост есть небольшая коллекция трюков на эту тему.

Подробность оглавления
По умолчанию в оглавлении отображается chapter , section и subsection . Почти всегда этого достаточно, однако время от времени хочется отобразить в оглавлении больше или меньше информации. Это легко настроить с помощью команды в преамбуле (до \begin < document >):

\setcounter < tocdepth > < n >%%where n is the level, starting with 0 (chapters only)

По умолчанию n=2 , другие параметры это:

n=4 это chapter, section, subsection, subsubsection и paragraph;
n=3 это chapter, section, subsection и subsubsection;
n=2 это chapter, section, и subsection;
n=1 это chapter и section;
n=0 это chapter .

Однако это распространяется на весь документ сразу, и это может быть неудобно: если в документе есть Appendix, то отображать в оглавлении его subsections совсем не обязательно.

Для этого есть пакет tocvsec2 который позволяет нам менять уровень отображения разделов там, где нам надо. Например, если мы хотим в первой главе поменять подробность оглавления до section, в первой главе (внутри документа) пишем:

\settocdepth

Уровень подробности останется тем же до следующей команды \settocdepth . Например, в Appendix я не хочу отображать подразделы вовсе:

\settocdepth

После этого наше оглавление выглядит так, как мы того хотели.

Как переименовать оглавление в LaTeX?
Иногда нужно переименовать «Оглавление» во что-нибдудь другое. Несложное действие само по себе, но дабы не гуглить, есть готовый рецепт:

\renewcommand\contentsname %%% renaming the Table of Contents

вставить это в преамбулу документа, то есть до \begin < document >
Команда переименует Table of Contents в Projects List.

Как сделать главу в тексте без номера, но чтобы она была указана в Оглавлении?
Если нужно сделать так, чтобы заголовок главы состоял исключительно из её названия, но глава присутствовала бы в оглавлении, выкрутиться можно так:

\chapter*
\addcontentsline < toc > < chapter >

Первое вырубает номер главы и слово ГЛАВА. Второе добавляет оное в оглавление, но без номера.

Как начать новую главу без новой страницы?
Обычно если вы начинаете в LaTeX документе новую главу, она начинается с новой страницы. Но если очень нужно, чтобы глава начиналась на той же странице в ЛаТеХ-документе? Это можно сделать с помощью переопределения команды \chapter <> в преамбуле документа так:

После этого глава будет начинаться на той же странице. Рецепт взят отсюда, ссылкой поделился Minoru, за что ему огромное спасибо.

Римские цифры в оглавлении
Для любителей старины можно сделать в ЛаТеХ римские цифры в оглавлении. Для этого добавляем в преамбулу следующий код:

\renewcommand <(\roman)>
\renewcommand . >

и наслаждаемся суровыми римскими цифрами в Subsections.

Обратно переопределить главу или раздел в арабские цифры можно следующим кодом в преамбуле:

\renewcommand < \arabic > \renewcommand < \arabic \arabic >

Больше узнать о переопределении можно здесь.

Поставить точку в названии главы или раздела в ЛаТеХ
Команда \renewcommand может переопределять формирование главы, разделов и подразделов — так можно ставить или убирать точки в названиях разделов в LaTeX. Вот код, который нужно вставить в преамбулу документа:

\renewcommand . > \renewcommand . \arabic . >

  • \arabic -> арабские цифры (1,2,3. )
  • \roman -> римские цифры (I, II, III..)
  • \alph -> буквы (a, b, c. )

Нумерация подразделов : subsection depth
Есть в нашем документе, скажем, \subsubsubsection и мы хотим его занумеровать по разным причинам. Запросто! Добавляем в преамбулу параметр:

\setcounter < secnumdepth >

и это позволит занумеровать subsubsections в тексте.

  • part
  • chapter
  • section
  • subsection
  • subsubsection
  • paragraph
  • subparagraph
  • page
  • equation
  • figure
  • table
  • footnote
  • mpfootnote
  • enumi
  • enumii
  • enumiii
  • enumiv

\addtocounter < counter > < value >увеличивает указанный счётчик counter на значение value .

\newcounter < newcounter >[ oldcounter ] создаёт новый счётчик newcounter ; опция нужна для связывания старого счётчика oldcounter и нового newcounter .

\setcounter < counter > < value >устанавливает счётчик counter в заданное значение value .

\value < counter >выдаёт значение счётчика counter и вообще полезная команда для разного рода арифметических операций со значениями счётчиков.

\renewcommand [args][opt] общая команда для создания или переопределения новых команд.

Это позволит вытворять разные полезные фокусы со счётчиками в латехе.

43 комментария:

Ещё полезно было бы написать как сделать нумерацию глав, секций и прочего не с 0, а с 1. Ответить Удалить

@librarian комментирует.
Ещё полезно было бы написать как сделать нумерацию глав, секций и прочего не с 0, а с 1.
Если честно, не понял вопроса. Если не хочется вставлять chapter перед одинокой section, тогда может помочь это. Оно?

Добавил в пост ещё римские цифры. Мало ли, пригодится. Просто у скубентов сейчас пора дипломов, что отражается на стремительно возросшем числе заходов на мой пост Как сделать диплом в ЛаТеХе? Ответить Удалить

n=4 это chapter, section, subsection, subsubsection and paragraph
n=3 это chapter, section, subsection, subsubsection
n=2 это chapter, section, subsection,
n=1 это chapter, section,
n=0 это chapter,

«And» заменить на «и», в конце каждого пункта поставить точку с запятой (или оставить запятые, но тогда нужно поправить первые два пункта — там в конце ничего нет).

Команда переименует Table of Contents в Project List.

В Projects List. В коде так, по крайней мере.

Кстати, я бы ещё добавил трюк с удалением перевода страницы перед каждой главой вот отсюда. Я вот как раз недавно с такой потребностью столкнулся, думаю, и другим было бы полезно. Ответить Удалить

@Minoru комментирует.
«And» заменить на «и», в конце каждого пункта поставить точку с запятой
Ну ни фига ж себе ты суров, тааиищщ Редактор 🙂 Ну просто быка за рога! Сейчас я вот к тебе в комменты прийду отрываться 🙂

Но по делу. Исправлено.

В Projects List. В коде так, по крайней мере.
Пофиксено.

Кстати, я бы ещё добавил трюк с удалением перевода страницы перед каждой главой вот отсюда.
Минору, а я вот сам навскидку не помню такой приём. Может добавишь в комментах? Я всегда думал, что это встроенная фича. Ответить Удалить

@virenc Оно?
Ага, вроде оно самое. Ответить Удалить

@librarian комментирует.
Ага, вроде оно самое.
Как-то криво там написано. Очень уж красноглазо. Порывшись в своих заметках, нашёл про счётчики и запостил в пост. Спасибо, librarian, за наводку. Ответить Удалить

Михаил, во-первых хочу сказать, что мне Ваш блог всё больше нравится 🙂
А во-вторых, нет ли у Вас случайно распиленной функции \chapter? 🙂
А то я хочу, чтобы заголовок главы состоял исключительно из её названия (например, «Краткий обзор важнейших работ по выбросам», как у меня), вместо конкатенации его с «Глава n.», но ручками переписывать в \renewcommand не хочется, так как предчувствую, что сразу начнутся конфликты с \tableofcontents, а дедлайн с дипломом не оставляет времени играться, хоть в мирное время я и был самый большой любитель 🙂

PS. \chapter[optional] пробовал, optional не работает Ответить Удалить

Михаил, во-первых хочу сказать, что мне Ваш блог всё больше нравится 🙂
Ну, я очень рад, и всё такое. Тут вообще нахаляву много чего выкладывают, чего в других местах нету 🙂

А во-вторых, нет ли у Вас случайно распиленной функции \chapter?
В моих загашниках постов блога aka drafts чего только нет: начиная от настройки Самбы и заканчивая рабочей теорией холодного термоядерного синтеза 🙂 Так что оставайтесь на нашей волне, да 🙂

А то я хочу, чтобы заголовок главы состоял исключительно из её названия
Ммм. ну я всегда выкручивался так:

Первое вырубает номер главы и слово ГЛАВА. Второе добавляет оное в оглавление, но без номера. Это оно? Если да — добавлю в пост. Я от такого маразма уже отвык в загнивающем Западе 🙂

а дедлайн с дипломом не оставляет времени играться
Да я уж понял.
Отпишитесь в комментах, Лев, если оно работает и это то, что вы искали. Ответить Удалить

Ну..это почти то, что я хотел..спасибо. В крайнем случае при окончательной сшивке диплома так и сделаю.

А вообще вот какую функцию хотел:
— так же изменяет счётчик chapter (или аналогичный)
— имеет то же оформление в оглавлении, что и \chapter
+ при этом в начале главы отображается не «Chapter $Chapternumber. $Chaptername», а «$Chaptername»
— и это делается автоматически, без дописывания руками каждый раз строчки наподобе \addcontentsline в оглавление (к тому же, такого же отступа я пока не добился, \indent мне не помог.)

Что пока сделал с Вашей подсказкой:
— вместо \chapter<> написал \chapter*<> в инициализации главы (убил упоминание этой главы в оглавлении, как в Библии написано; теперь название, написанное в <>, отображается в начале главы непосредственно (без конкатенации с «Глава 2. «))
— добавил в хидер (index.tex) перед инклюдом файла с главой строчку: \addcontentsline

Что пока получил с Вашей подсказкой:
— возможность вручную указать, что написано в начале главы (тот самый пресловутый «$Chaptername»)
— возможность вручную указать, как называется строчка в оглавлении

Если бы был распиленный код функции \chapter и можно было бы в нём поменять буквально одно место: что выводится в документ при вызове этой функции. 😉 Ответить Удалить

Ура! Почитал Львовского, нашёл, заработало!

\makeatletter % эта строка НЕОБХОДИМА!
\renewcommand % необязательная строчка.
% определяет значение \@chapapp (используется ниже)
\renewcommand[1] \vspace*% Пустое место вверху страницы
<\parindent=0pt
\raggedright \normalfont\huge\bfseries
\@chapapp<> % \@chapapp печатает слово «Glava» (см. выше)
% вот эту строку
\thechapter \par % номер главы — в отдельной строке
% и ещё вот эту я убрал, и у меня наступило ШЧАСТЬЕ
% \thechapter — печать счётчика глав; \par — насильственно
% закончить абзац
\vspace % между словом «Glava» и ее заголовком
% и ещё эту строчку я грохнул, ибо нефиг
\normalfont\Huge\bfseries #1\par % заголовок главы
\nopagebreak % чтоб не оторвать заголовок от текста
\vspace % между заголовком и текстом
>% конец группы.
>% конец макроопределения
\makeatother % эта строка НЕОБХОДИМА! Ответить Удалить

>> Кстати, я бы ещё добавил трюк с удалением перевода страницы перед каждой главой вот отсюда.
> Минору, а я вот сам навскидку не помню такой приём. Может добавишь в комментах? Я всегда думал, что это встроенная фича.

Дык это, «вот отсюда» — это ссылка на приём (второй листинг). Я его как раз недавно юзал, работает.

И это ни разу не встроенная фича — я обгуглился уже рецепт искать. Впрочем, насколько я понял, есть стили, которые сразу это делают, но report, увы, не таков. Ответить Удалить

Пожалуйста , просветите, как сделать двух уровневую нумерацию рисунков. Т.е. тех выдает автоматом Рис.1 , Рис.2 и т.д., а мне надо Рис.8.1, Рис.8.2 и т.д. Заранее спасибо! Ответить Удалить

Рекомендую рассмотреть использование пакетов «titlesec» и «titletoc». Ответить Удалить

@Лев комментирует.
Ну..это почти то, что я хотел..спасибо.
Пожалуйста.

Если бы был распиленный код функции \chapter и можно было бы в нём поменять буквально одно место
Переписывать стиль ради одной функции это значит потратить минимум полдня. Лев, оно того не стоит 🙂

Ура! Почитал Львовского, нашёл, заработало!
Вот что сила документации делает! 🙂

@Minoru комментирует.
Дык это, «вот отсюда» — это ссылка на приём (второй листинг). Я его как раз недавно юзал, работает.
О, круто! Только что проверил — полезная штука, работает. Добавил в пост.

@Starodubss комментирует.
Пожалуйста , просветите, как сделать двух уровневую нумерацию рисунков.
Starodubss, у меня подписка энтерпрайзная в гугле кончилась 🙂
Кстати, в disser оно вроде так по дефолту и делает. Там ниже Анонимус предлагает решение.

@Анонимный комментирует.
Рекомендую рассмотреть использование пакетов «titlesec» и «titletoc».
Спасибо, Анонимус, за интересные ссылки на пакеты. Ответить Удалить

Не знаю почему, но переименовать оглавление я смог только такой командой:
\AtBeginDocument>
Просто \renewcommand\contentsname не срабатывало. Ответить Удалить

а какой командой можно нумеровать формулы ? Ответить Удалить

привет всем)) пишу диплом в техе и пытаюсь самостоятельно разобраться в командах. С трудом, но получается)) (просто это не моя стихия). Проблема в том, что не получается создать верно оглавление и список литературы(( Просьба-если можно выложите примеры.. буду признательна Вам)) Ответить Удалить

Привет. Формулы нумеровала так:
\begin
\text =>*>
\end Ответить Удалить

Есть такая проблема: Надо выровнить нумерацию в содержании и поменять шрифт section на прописные буквы (прописные буквы должны быть и в содержании и в самом тексте). Пожалуйста помогите =) Заранее спасибо! Ответить Удалить

Приветствую всех!
Скажите пожалуйста, как сделать так чтобы раздел в тексте отображался без точки между номером и заголовком, т.е.
Не так:
1. Теория
А вот так:
1 Теория Ответить Удалить

Подскажите, как изменить стиль и сделать так, чтобы в Оглавлении отображалось:
— Глава 1. Название главы
— $(Параграф это) 1.
— 1.1 название пункта. Ответить Удалить

Нашел некоторые полезные штучки по теме. Вот может кому пригодятся!

\makeatletter % Эти две строки переопределяют нумерацию
\def\@biblabel#1 % литературы, типа она будет [1],
% а 1. с пробелом после точки.

А вот эти штуки переименовывают, если их добавить
после \begin:

Люди выручайте. Бился бился не могу найти инфу как уменьшить шрифт Содержания и не затронут шрифты других разделов?

Извините что аноним, просто стиль жизни такой. Подскажите плиз ответ на мой вопрос. Ответить Удалить

Проблему со шрифтом содержания решил. Оказалось все банально. Вот может кому надо будет:
% Мелкое содержание

можно и другие шрифты использовать.
% и т.д.

А вот так можно добавить что нибудь к содержанию
\addcontentsline\include% Подключение например литературы

Если страницы отображает не те что надо используй способ описанный выше — это верняк. Ответить Удалить

Очень хотелось бы знать ответы на вопросы Андрея Гавришина и Елены Шатровой. Каким кодом все таки можно убрать или поставить точку после номера главы или раздела (что бы было так 1. или так 1 без точки) тоже самое касается отображения слова Глава или Раздел перед 1. или 1 без точки. Интересно очень если кто знает подскажите.

Р.S. Аноним — это просто стиль жизни такой. Ответить Удалить

Очень хотелось бы знать ответы на вопросы Андрея Гавришина и Елены Шатровой. Каким кодом все таки можно убрать или поставить точку после номера главы или раздела

Переопределением в преамбуле:

Первая команда поставит аж целых четыре точки в названии главы. Команда \arabic будет ставить цифры.

Интересно очень если кто знает подскажите.
Всё для тебя, Анонимус! Много информации по ссылке. Вот даже рабочий пример:

Р.S. Аноним — это просто стиль жизни такой.
Здесь на блоге демократия, гласность и плюрализм мнений (и самодурство ведущего :-)). Анонимус из вэлком! Ответить Удалить

Так, пост обновлён — я добавил немного про римские цифры и переопределение названий заголовков по многочисленным просьбам трудящихся:-)

Я напоминаю участникам дискуссии в комментариях, что:
1. Комментарии — часть поста, и они должны быть информативными, относиться (хотя бы отчасти) к теме поста и содержать полезную информацию
1.1. Если вы задаёте вопрос, то автор может ответить на него не сразу — постов уже под четыре сотни, и отвечать на все вопросы автор просто не в силах.
2. Издёвки, спам, жирный троллинг, оффтопик и переход на личности будет безжалостно удалён ведущим блога.
2.1 призывы типа RTF n00b расцениваются как оффтопик и будут удалены — если нечего сказать по теме, не надо засорять эфир.
3. Подразумевается, что участники относятся друг к другу уважительно, вне зависимости от чинов, учёных степеней и наличия аккаунтов. Анонимусы, регистранты и члены экипажа блога в равных условиях. Ответить Удалить

@virens комментирует…

\renewcommand. >
\renewcommand.\arabic.>

Открываем Львовского на стр.297, и вуаля — видим те же самые строки, что и приведённые здесь без ссылки на первоисточник. virens, ты таки не поверить, но люди вроде меня учили LaTeX, штудируя Львовского. На мой взгляд, это лучшая книга по LaTeX, когда-либо изданная в России. А уж азы нужно учить исключительно по ней. Кстати, приложение Е. «LaTeX в России».
P.S. Можешь удалить и этот комментарий, но, по крайней мере, его ты прочтёшь. Ответить Удалить

@iv_vl комментирует.
Открываем Львовского на стр.297, и вуаля

В комментах задали конкретный вопрос: как сделать точку после главы. Там не спрашивали, на какой странице Львовского это написано. Ты ответил в стиле RTFM n00b, что мной считается хамством — именно поэтому твой комент был снесён, а в пост добавлен этот трюк.

ты таки не поверить, но люди вроде меня учили LaTeX, штудируя Львовского.

Я тоже его читал, что не отменяет необходимости написания постов типа некого минимума для написания диплома в латехе.

Смысл этого блога в том, чтобы содержать конкретные рецепты, а не перечитывать Львовского снова если тебе что-то нужно быстро найти.

это лучшая книга по LaTeX

Не знаю, как насчёт «лучшая», но во всяком случае исключительно хорошая и годная.

азы нужно учить исключительно по ней.

\renewcommand это нифига не азы. И этот блог — не научная статья, а походный справочник с рецептами.

Можешь удалить и этот комментарий
Нет, я не буду его удалять. Я объяснил, почему твой предыдущий коммент был снесён: если нечего добавить по существу беседы — не надо посылать в маны. По крайней мере нужно привести цитату и источник. Ответить Удалить

@virens комментирует…
…не отменяет необходимости написания постов типа некого минимума для написания диплома в латехе.
Если цель книги — объяснить, как всё работает, то сборника рецептов — представить рабочий вариант. Может сделать стилевой пакет? Так хоть сразу поставил и проверил, насколько эти рецепты подходят для диплома. А то в гугле отбоя нет от «просто рецептов», и у каждого автора они свои. А ответа на вопрос, почему нужно доверять конкретному рецепту, как с комсомольца на допросе, с автора не вытянуть. В конце-концов, в отличие от гуманитария, человек технический не должен просто заучивать рецепты.

Не знаю, как насчёт «лучшая», но во всяком случае исключительно хорошая и годная.
Сейчас азы уже не учат, а учат подключать тот или иной стилевой пакет, пример тому — «LaTeX в России» Балдина. Кому-то такой подход ближе, но это опять же на тему оформления рецептов в стилевой пакет. Кстати, ты принципиально не ставишь ссылки на первоисточники? (например, ту ссылку на Львовского, что я давал раньше.) С трудом верится, что никого книга не заинтересует, а нужны только рабочие рецепты. Видимо, от жизни я поотстал.
Ответить Удалить

К готовым рецептам:
\makeatletter
\def\@seccntformat#1 % точка после номера раздела
\def\@biblabel#1 % формат номеров в списке литературы
\makeatother

При этом меняется только отображение заголовка. В случае же переопределения \thesection и тп точка появится также при ссылках (В разделе \ref мы доказываем. ), а это не совсем то что нам нужно Ответить Удалить

Добрый день, Михаил. Подскажите пожалуйста, как убрать точки между главой и номером страницы.

Я недавно занимаюсь латехом, и даже не представляю в какую сторону капать. Спасибо) Ответить Удалить

@Юрий Шукуров комментирует.
Подскажите пожалуйста, как убрать точки между главой и номером страницы.

Ответил постом на Лунодроме по этой ссылке. Вообще настоятельно рекомендую внести в закладки http://tex.stackexchange.com

даже не представляю в какую сторону капать.
Капать не надо, а копать стоит в сторону tex.stackexchange.com — без шуток, он меня выручает постоянно. Ответить Удалить

А как изменить выравнивание из такого
https://dl.dropboxusercontent.com/u/59069601/1.png
в такое
https://dl.dropboxusercontent.com/u/59069601/2.png

второй день ломаю голову.
пример кода
https://dl.dropboxusercontent.com/u/59069601/diplom.tex

Заранее очень благодарен. Ответить Удалить

В итоге все нормально нумеруется, но слово Семинар появляется и при слове Содержание, что как-то бредово. Как бы это можно грамотно исправить? Ответить Удалить

Здравствуйте.
Кто-нить сталкивался с проблемой, когда оглавление занимает больше одной страницы, а нумерация страниц не учитывает этого при генерации номеров страниц в оглавлении? Например, при генерации оглавления «Введение» помещается на 3 страницу, а введение в тексте находится на 4, т.к. само оглавление занимает 2 страницы. В случае, если оглавление умещается на 1 страницу, проблем не возникает.
Заранее спасибо. Ответить Удалить

Простите. Вопрос снимается. На 4-й раз генерации все исправилось. Ответить Удалить

Скажите, пожалуйста, как сделать в одном файле два оглавления: одно на русском, другое на английском? Ответить Удалить

нужно расположить книгу а5 на а4, слева четные стр, справа нечетные, получается только наоборот, нужно в издательство отдать, не знаю что делать ( Ответить Удалить

Решил добавить свой комментарий, так как нигде не нашел описание titlesec на русском. Вдруг кому понадобится)). Просьба автору блока добавить этот комментарий в свою статью, если конечно это возможно и он еще читает комментарии)).
Краткий обзор пакета titlesec
Основная команда по переопределению формата рубрик:
\titleformat[«shape»][«after-code»]
Здесь

«command» — принимает значения \part, \chapter, \section и т.д., то есть рубрику которую мы хотим изменить;

«shape» — несколько значений:
1) hang – значение по умолчанию. Номер или ярлык рубрики будет на одном уровне с текстом рубрики (как в стандартном \section).
Пример:
\titleformat[ hang] получим:
Глава 1 «Текст названия»

2) block – печатает всю главу в блоке (абзац) без дополнительного форматирования. Полезно в центрированном названии и специальном форматировании (включая графические инструменты, такие как picture, pspicture и т.д.)
Пример:
не знаю, не пользовался.

3) display – номер рубрики над тестом рубрики (как в стандартном \chapter).
Пример:
\titleformat[ display] получим:
1.1
«Текст названия»

4) runin – оформление как в стандартном \paragraph.

5) leftmargin – ставит заголовок на левое поле страницы. Заголовки в самом конце страницы будут перемещены на следующую, а не будут торчать на нижнем поле, т.е. длинные заголовки могут привести к незаполненной странице. Далее см. док.

6) rightmargin – то же самое, но справа.

6) drop – текст документа (т.е. абзац следующий за заголовком) обтекает заголовок при условии, что данный абзац длиннее чем заголовок. Если нет, они перекрываются. Комментарии в leftmargin, применимы и здесь.

7) wrap – похож на drop. Разница лишь в том, что пространство, отведенное в drop на заголовок является фиксированным, а в wrap автоматически доводят до самой длинной строки. Есть ограничения (см. док.)

8) frame – вроде display, но заголовок окружен рамкой.

Внимание, если не задавать [«shape»], тогда он примет значение по умолчанию (hang). Например если написать
\titleformatто номер главы будет на одном уровне с текстом названия главы. Ответить Удалить

Оглавление, список рисунков, список таблиц

Составьте оглавление, или список рисунков, или список таблиц. Поместите команду во входной файл, где вы хотите, чтобы таблица или список были go. Вы не вводите записи; например, обычно записи оглавления автоматически генерируются из команд разделения \chapter и т. д.

Этот пример иллюстрирует первую команду \tableofcontents . LaTeX создаст оглавление на первой странице книги.

\documentclass % \setcounter1> \begindocument> \tableofcontents\newpage . \chapter . \section . \subsection . \enddocument>

Раскомментирование второй строки приведет к тому, что эта таблица будет содержать списки глав и разделов, но не списки подразделов, поскольку команда \section имеет уровень 1. См. Sectioning для номеров уровней секционных блоков. Для получения дополнительной информации о tocdepth см. Sectioning/tocdepth .

Другой пример использования \tableofcontents есть в Larger book template .

Если вам нужен разрыв страницы после оглавления, напишите команду \newpage после команды \tableofcontents , как указано выше.

Для создания оглавления LaTeX сохраняет информацию во вспомогательном файле с именем root-file .toc (см. Splitting the input ). Например, этот файл LaTeX test.tex

\documentclassarticle> \begin \tableofcontents\newpage \sectionsection> \subsection .

пишет эти строки в test.toc .

\contentsline section><\numberline 1>First section>2> \contentsline <\numberline 1.1>First subsection>2>

Каждая строка содержит одну команду \contentsline (см. \contentsline ). Первый аргумент, section или subsection , — это блок секционирования. Второй аргумент состоит из двух компонентов. Крючок \numberline определяет, как номер раздела, 1 или 1.1 , отображается в таблице содержания (см. \numberline ). Остаток второго аргумента \contentsline , ‘ First section ‘ или ‘ First subsection ‘, это текст заголовка раздела. Наконец, третий аргумент, ‘ 2 ‘, это номер страницы, на которой начинается эта единица секционирования.

Для набора этих строк класс документа предоставляет команды \l@ section-unit , такие как \l@section< text > < pagenumber >и \l@subsection< text > < pagenumber >. Эти команды часто используют команду \@dottedtocline (см. \@dottedtocline ).

Следствием стратегии LaTeX’s использования вспомогательных файлов является то, что для получения правильной информации в документе необходимо запустить LaTeX дважды: один раз для сохранения информации и второй раз для ее извлечения. В ходе обычного написания документа авторы запускают LaTeX несколько раз, но вы можете заметить, что при первой компиляции нового документа страница оглавления будет пустой, за исключением ‘ Contents ‘ заголовок. Просто снова запустите LaTeX.

Команды \listoffigures и \listoftables создают список рисунков и список таблиц. Их информация хранится в файлах с расширением .lof and .lot . Они работают так же, как \tableofcontents , но последний встречается чаще, поэтому мы используем его для большинства примеров.

Вы можете вручную добавить материал в оглавление, список рисунков и список таблиц. Например, добавьте строку о разделе в оглавление с помощью \addcontentsline < text >. (см. \addcontentsline ). Добавить произвольный материал, то есть нелинейный материал, с помощью \addtocontents , как с командой \addtocontents<\protect\vspace<2ex>> , которая добавляет вертикальный пробел в список фигур (см. \addtocontents ).

Строки в оглавлении, список рисунков и список таблиц состоят из четырех частей. Во-первых, это отступ. Далее идет поле, в которое помещаются номера разделов, а затем третье поле содержит текст заголовка, например « First section ‘. Наконец, у правого поля есть поле, внутри которого LaTeX помещает поле номера страницы. Информацию об отступе и ширине числового поля см. в \@dottedtocline . Блок с правым полем имеет ширину \@tocrmarg , а номер страницы расположен прямо в этом пространстве внутри блока шириной \@pnumwidth . По умолчанию \@tocrmarg — это 2.55em , а \@pnumwidth — это 1.55em . Измените их, как с \renewcommand .

CTAN имеет множество пакетов для оглавления и списков рисунков и таблиц (см. CTAN: The Comprehensive TeX Archive Network ). Пакет tocloft удобен для настройки некоторых параметров по умолчанию, таких как интервал. Кроме того, tocbibbind автоматически добавит библиографию, указатель и т. д. в оглавление.

Чтобы изменить заголовок страницы оглавления, выполните что-то вроде этих команд, прежде чем вызывать \tableofcontents и т. д.

\renewcommandTable of Contents> \renewcommand<\listfigurename> \renewcommand <\listtablename>

Пакеты интернационализации, такие как babel или polyglossia , изменят эти заголовки в зависимости от выбранного базового языка.

Научный форум dxdy

Оформление содержания (оглавления) и заголовков разделов

Оформление содержания (оглавления) и заголовков разделов
25.07.2017, 09:44

Подскажите как настроить содержание:
1) Номера страниц section в содержании сделать не жирным шрифтом;
2) Добавить точки после названия section (глав, приложений, списка литературы и т.д.) как сделано для subsection и subsubsection ;
3) Номер листа с содержанием сделать по-центру, как на других страницах документа;
4) Выравнивание section, subsection и subsubsection в содержании оставить по левому краю без переносов слов;

Как настроить заголовки в тексте:
5) Для section выравнивание по ширине, без переносов;
6) Для subsection выравнивание по центру, без переносов.

Проект тут https://yadi.sk/d/VsCMVDYo3LNgDf , собираю в texstudio (texlive), компилятор LuaLaTeX.

Re: Оформление содержания (оглавления) и заголовков разделов
26.07.2017, 11:00

Последний раз редактировалось kostao 26.07.2017, 11:31, всего редактировалось 3 раз(а).

Как сделать содержание в латехе

Чтобы помочь читателю ориентироваться в вашей работе, вы должны разделять ее на главы, разделы и подразделы. L A T E X поддерживает это специальными командами, принимающими в качестве аргумента заголовок раздела. Ваше дело — использовать их в надлежащем порядке.

Класс article включает следующие команды секционирования:

section <. >paragraph <. >
subsection <. >subparagraph <. >
subsubsection <. >appendix

В классах report и book вы можете использовать две дополнительные команды:

Так как глав (chapters) в классе article нет, то статьи довольно легко добавлять в книгу в качестве глав. Интервалы между разделами, нумерация и размер шрифта заголовков устанавливаются L A T E X автоматически.

  • Команда part не влияет на последовательность нумерования глав.
  • Команда appendix аргумента не имеет. Она просто начинает нумеровать главы 10 буквами вместо цифр.

L A T E X создает оглавление, беря заголовки разделов и номера страниц из предыдущего прохода по документу. Команда

вставляет оглавление в то место, где она вызвана. Чтобы получить правильное оглавление, новый документ должен быть обработан L A T E X дважды. В особых случаях может быть необходим и третий проход. Когда это потребуется, L A T E X вас предупредит.

Все вышеперечисленные команды секционирования существуют также в вариантах со звездочкой. Такой вариант получается добавлением * к имени команды. Они генерируют заголовки разделов, которые не нумеруются и не включаются в оглавление. Например, команда \section становится \section* .

Обычно заголовки разделов появляются в оглавлении точно в том же виде, в каком они вводятся в тексте. Иногда это невозможно из-за того, что заголовок слишком длинен для оглавления. Элемент оглавления может в этом случае указываться необязательным аргументом перед собственно заголовком.

\chapter[Прочтите! Это замечательно] длинный и очень нудный заголовок>

Титульный лист документа в целом генерируется при помощи команды

Его содержимое должно быть определено командами

title <. >, author <. >и date

до момента вызова \maketitle . Аргумент команды authors может содержать несколько имен, разделенных командами and.

Пример некоторых из упомянутых команд может быть найден на иллюстрации.

Помимо описанных выше команд секционирования, L A T E X2 e вводит три дополнительных команды для использования с классом book .

frontmatter, mainmatter и backmatter Они полезны для деления вашей публикации. Команды изменяют заголовки глав и нумерацию страниц так, как это ожидается от книги. 11

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *