Оглавление и нумерация разделов настраивается довольно просто в 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;Однако это распространяется на весь документ сразу, и это может быть неудобно: если в документе есть Appendix, то отображать в оглавлении его subsections совсем не обязательно.
n=3 это chapter, section, subsection и subsubsection;
n=2 это chapter, section, и subsection;
n=1 это chapter и section;
n=0 это chapter.
Для этого есть пакет tocvsec2 который позволяет нам менять уровень отображения разделов там, где нам надо. Например, если мы хотим в первой главе поменять подробность оглавления до section, в первой главе (внутри документа) пишем:
\settocdepth{section}Уровень подробности останется тем же до следующей команды \settocdepth. Например, в Appendix я не хочу отображать подразделы вовсе:
\settocdepth{chapter}После этого наше оглавление выглядит так, как мы того хотели.
Как переименовать оглавление в LaTeX?
Иногда нужно переименовать "Оглавление" во что-нибдудь другое. Несложное действие само по себе, но дабы не гуглить, есть готовый рецепт:
\renewcommand\contentsname{Projects List} %%% renaming the Table of Contentsвставить это в преамбулу документа, то есть до \begin{document}
Команда переименует Table of Contents в Projects List.
Как сделать главу в тексте без номера, но чтобы она была указана в Оглавлении?
Если нужно сделать так, чтобы заголовок главы состоял исключительно из её названия, но глава присутствовала бы в оглавлении, выкрутиться можно так:
\chapter*{Библиография}Первое вырубает номер главы и слово ГЛАВА. Второе добавляет оное в оглавление, но без номера.
\addcontentsline{toc}{chapter}{Библиография}
Как начать новую главу без новой страницы?
Обычно если вы начинаете в LaTeX документе новую главу, она начинается с новой страницы. Но если очень нужно, чтобы глава начиналась на той же странице в ЛаТеХ-документе? Это можно сделать с помощью переопределения команды \chapter{} в преамбуле документа так:
\makeatletter %%%%% <---- Starting chapter without a pagebreakПосле этого глава будет начинаться на той же странице. Рецепт взят отсюда, ссылкой поделился Minoru, за что ему огромное спасибо.
\renewcommand\chapter{\par%
\thispagestyle{plain}% \global\@topnum\z@
\@afterindentfalse \secdef\@chapter\@schapter}
\makeatother %%%%% <---- Starting chapter without a pagebreak
Римские цифры в оглавлении
Для любителей старины можно сделать в ЛаТеХ римские цифры в оглавлении. Для этого добавляем в преамбулу следующий код:
\renewcommand{\thesubsection}{(\roman{subsection})}и наслаждаемся суровыми римскими цифрами в Subsections.
\renewcommand{\thesubsubsection}{\roman{subsection}.}
Обратно переопределить главу или раздел в арабские цифры можно следующим кодом в преамбуле:
\renewcommand{\thechapter}{\arabic{chapter}}\renewcommand{\thesubsection}{\arabic{section}\arabic{subsection}}Больше узнать о переопределении можно здесь.
Поставить точку в названии главы или раздела в ЛаТеХ
Команда \renewcommand может переопределять формирование главы, разделов и подразделов - так можно ставить или убирать точки в названиях разделов в LaTeX. Вот код, который нужно вставить в преамбулу документа:
\renewcommand{\thechapter}{\arabic{chapter}.}\renewcommand{\thesubsection}{\arabic{section}.\arabic{subsection}.}Красным выделены точки - они-то и будут вставлены в название. Другие варианты на примере названий разделов:
- \arabic{section} -> арабские цифры (1,2,3....)
- \roman{section} -> римские цифры (I, II, III..)
- \alph{section} -> буквы (a, b, c...)
Нумерация подразделов: subsection depth
Есть в нашем документе, скажем, \subsubsubsection{Замечание о кроликах} и мы хотим его занумеровать по разным причинам. Запросто! Добавляем в преамбулу параметр:
\setcounter{secnumdepth}{3}и это позволит занумеровать subsubsections в тексте.
О счётчиках в LaTeX
Вообще, в ЛаТеХе есть множество счётчиков, которые и используются для нумерации глав, рисунков, таблиц и всего остального. Оными счётчиками можно управлять вручную, ежели знать как. Например, следующие команды имеют счётчики (counter):
- 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{cmd}[args][opt]{def} общая команда для создания или переопределения новых команд.
43 комментариев: |высказаться!| RSS-лента дискуссии.|
Ещё полезно было бы написать как сделать нумерацию глав, секций и прочего не с 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]{title} пробовал, optional не работает
@Лев комментирует...
Михаил, во-первых хочу сказать, что мне Ваш блог всё больше нравится :)
Ну, я очень рад, и всё такое. Тут вообще нахаляву много чего выкладывают, чего в других местах нету :-)
А во-вторых, нет ли у Вас случайно распиленной функции \chapter?
В моих загашниках постов блога aka drafts чего только нет: начиная от настройки Самбы и заканчивая рабочей теорией холодного термоядерного синтеза :-) Так что оставайтесь на нашей волне, да :-)
А то я хочу, чтобы заголовок главы состоял исключительно из её названия
Ммм... ну я всегда выкручивался так:
\chapter*{Краткий обзор важнейших работ по выбросам}
тут по выбросам.
\addcontentsline{toc}{chapter}{Краткий обзор важнейших работ по выбросам}
Первое вырубает номер главы и слово ГЛАВА. Второе добавляет оное в оглавление, но без номера. Это оно? Если да - добавлю в пост. Я от такого маразма уже отвык в загнивающем Западе :-)
а дедлайн с дипломом не оставляет времени играться
Да я уж понял.
Отпишитесь в комментах, Лев, если оно работает и это то, что вы искали.
Ну..это почти то, что я хотел..спасибо. В крайнем случае при окончательной сшивке диплома так и сделаю.
А вообще вот какую функцию хотел:
- так же изменяет счётчик chapter (или аналогичный)
- имеет то же оформление в оглавлении, что и \chapter
+ при этом в начале главы отображается не "Chapter $Chapternumber. $Chaptername", а "$Chaptername"
- и это делается автоматически, без дописывания руками каждый раз строчки наподобе \addcontentsline{toc}{chapter}{2 \indent Краткий обзор важнейших работ по выбросам} в оглавление (к тому же, такого же отступа я пока не добился, \indent мне не помог.)
Что пока сделал с Вашей подсказкой:
- вместо \chapter{} написал \chapter*{} в инициализации главы (убил упоминание этой главы в оглавлении, как в Библии написано; теперь название, написанное в {}, отображается в начале главы непосредственно (без конкатенации с "Глава 2. "))
- добавил в хидер (index.tex) перед инклюдом файла с главой строчку: \addcontentsline{toc}{chapter}{2 \indent Краткий обзор важнейших работ по выбросам}
Что пока получил с Вашей подсказкой:
- возможность вручную указать, что написано в начале главы (тот самый пресловутый "$Chaptername")
- возможность вручную указать, как называется строчка в оглавлении
Если бы был распиленный код функции \chapter и можно было бы в нём поменять буквально одно место: что выводится в документ при вызове этой функции... ;)
Ура! Почитал Львовского, нашёл, заработало!
\makeatletter % эта строка НЕОБХОДИМА!
\renewcommand{\@chapapp}{Glava} % необязательная строчка.
% определяет значение \@chapapp (используется ниже)
\renewcommand{\@makechapterhead}[1]{% Начало макроопределения
\vspace*{50 pt}% Пустое место вверху страницы
{\parindent=0pt
\raggedright \normalfont\huge\bfseries
\@chapapp{} % \@chapapp печатает слово "Glava" (см. выше)
% вот эту строку
\thechapter \par % номер главы - в отдельной строке
% и ещё вот эту я убрал, и у меня наступило ШЧАСТЬЕ
% \thechapter -- печать счётчика глав; \par -- насильственно
% закончить абзац
\vspace{20 pt} % между словом "Glava" и ее заголовком
% и ещё эту строчку я грохнул, ибо нефиг
\normalfont\Huge\bfseries #1\par % заголовок главы
\nopagebreak % чтоб не оторвать заголовок от текста
\vspace{40 pt} % между заголовком и текстом
}% конец группы.
}% конец макроопределения
\makeatother % эта строка НЕОБХОДИМА!
>> Кстати, я бы ещё добавил трюк с удалением перевода страницы перед каждой главой вот отсюда.
> Минору, а я вот сам навскидку не помню такой приём. Может добавишь в комментах? Я всегда думал, что это встроенная фича.
Дык это, «вот отсюда» — это ссылка на приём (второй листинг). Я его как раз недавно юзал, работает.
И это ни разу не встроенная фича — я обгуглился уже рецепт искать. Впрочем, насколько я понял, есть стили, которые сразу это делают, но report, увы, не таков.
Пожалуйста , просветите, как сделать двух уровневую нумерацию рисунков. Т.е. тех выдает автоматом Рис.1 , Рис.2 и т.д., а мне надо Рис.8.1, Рис.8.2 и т.д. Заранее спасибо!
Рекомендую рассмотреть использование пакетов "titlesec" и "titletoc".
@Лев комментирует...
Ну..это почти то, что я хотел..спасибо.
Пожалуйста.
Если бы был распиленный код функции \chapter и можно было бы в нём поменять буквально одно место
Переписывать стиль ради одной функции это значит потратить минимум полдня. Лев, оно того не стоит :-)
Ура! Почитал Львовского, нашёл, заработало!
Вот что сила документации делает! :-)
@Minoru комментирует...
Дык это, «вот отсюда» — это ссылка на приём (второй листинг). Я его как раз недавно юзал, работает.
О, круто! Только что проверил - полезная штука, работает. Добавил в пост.
@Starodubss комментирует...
Пожалуйста , просветите, как сделать двух уровневую нумерацию рисунков.
Starodubss, у меня подписка энтерпрайзная в гугле кончилась :-)
Кстати, в disser оно вроде так по дефолту и делает. Там ниже Анонимус предлагает решение.
@Анонимный комментирует...
Рекомендую рассмотреть использование пакетов "titlesec" и "titletoc".
Спасибо, Анонимус, за интересные ссылки на пакеты.
Не знаю почему, но переименовать оглавление я смог только такой командой:
\AtBeginDocument{\renewcommand\contentsname{Another title for the Table of Contents}}
Просто \renewcommand\contentsname{Another title for the Table of Contents} не срабатывало.
а какой командой можно нумеровать формулы ?
привет всем)) пишу диплом в техе и пытаюсь самостоятельно разобраться в командах. С трудом, но получается)) (просто это не моя стихия). Проблема в том, что не получается создать верно оглавление и список литературы(( Просьба-если можно выложите примеры.. буду признательна Вам))
Привет. Формулы нумеровала так:
\begin{equation}
\text{НДФЛмес} ={\text{Зповр мес}}*{\text{13\%}}
\end{equation}
Есть такая проблема: Надо выровнить нумерацию в содержании и поменять шрифт section на прописные буквы (прописные буквы должны быть и в содержании и в самом тексте). Пожалуйста помогите =) Заранее спасибо!
Приветствую всех!
Скажите пожалуйста, как сделать так чтобы раздел в тексте отображался без точки между номером и заголовком, т.е.
Не так:
1. Теория
А вот так:
1 Теория
Подскажите, как изменить стиль и сделать так, чтобы в Оглавлении отображалось:
- Глава 1. Название главы
- $(Параграф это) 1.
- 1.1 название пункта...
Нашел некоторые полезные штучки по теме. Вот может кому пригодятся!
\makeatletter % Эти две строки переопределяют нумерацию
\def\@biblabel#1{#1. } % литературы, типа она будет [1],
% а 1. с пробелом после точки.
А вот эти штуки переименовывают, если их добавить
после \begin{document}:
\renewcommand{\chaptername}{Раздел}
\renewcommand{\tablename}{Таблица}
\renewcommand{\bibname}{Список использованных источников}
\renewcommand{\contentsname}{Содержание}
\renewcommand{\appendixname}{Приложение}
Люди выручайте. Бился бился не могу найти инфу как уменьшить шрифт Содержания и не затронут шрифты других разделов?
Извините что аноним, просто стиль жизни такой. Подскажите плиз ответ на мой вопрос.
Проблему со шрифтом содержания решил. Оказалось все банально. Вот может кому надо будет:
{\footnotesize\tableofcontents} % Мелкое содержание
можно и другие шрифты использовать.
{\small\tableofcontents} % и т.д.
А вот так можно добавить что нибудь к содержанию
\addcontentsline{toc}{chapter}{Литература}\include{bib}% Подключение например литературы
Если страницы отображает не те что надо используй способ описанный выше - это верняк.
Очень хотелось бы знать ответы на вопросы Андрея Гавришина и Елены Шатровой. Каким кодом все таки можно убрать или поставить точку после номера главы или раздела (что бы было так 1. или так 1 без точки) тоже самое касается отображения слова Глава или Раздел перед 1. или 1 без точки. Интересно очень если кто знает подскажите.
Р.S. Аноним - это просто стиль жизни такой.
@Анонимный комментирует...
Очень хотелось бы знать ответы на вопросы Андрея Гавришина и Елены Шатровой. Каким кодом все таки можно убрать или поставить точку после номера главы или раздела
Переопределением в преамбуле:
\renewcommand{\thechapter}{\arabic{chapter}....}
\renewcommand{\thesubsection}{\arabic{section}.\arabic{subsection}.}
Первая команда поставит аж целых четыре точки в названии главы. Команда \arabic будет ставить цифры.
Интересно очень если кто знает подскажите.
Всё для тебя, Анонимус! Много информации по ссылке. Вот даже рабочий пример:
\documentclass[a4paper,10pt]{report}
\title{Earth-shuttering thesis}
\author{Anonumous}
\renewcommand{\thechapter}{\arabic{chapter}....}
\renewcommand{\thesubsection}{\arabic{section}.\arabic{subsection}.}
\begin{document}
\maketitle
\chapter{I'm the first chapter }
\section{First section}
\subsection{First subsection}
\chapter{I'm the very second chapter }
\end{document}
Р.S. Аноним - это просто стиль жизни такой.
Здесь на блоге демократия, гласность и плюрализм мнений (и самодурство ведущего :-)). Анонимус из вэлком!
Так, пост обновлён - я добавил немного про римские цифры и переопределение названий заголовков по многочисленным просьбам трудящихся:-)
Я напоминаю участникам дискуссии в комментариях, что:
1. Комментарии - часть поста, и они должны быть информативными, относиться (хотя бы отчасти) к теме поста и содержать полезную информацию
1.1. Если вы задаёте вопрос, то автор может ответить на него не сразу - постов уже под четыре сотни, и отвечать на все вопросы автор просто не в силах.
2. Издёвки, спам, жирный троллинг, оффтопик и переход на личности будет безжалостно удалён ведущим блога.
2.1 призывы типа RTF n00b расцениваются как оффтопик и будут удалены - если нечего сказать по теме, не надо засорять эфир.
3. Подразумевается, что участники относятся друг к другу уважительно, вне зависимости от чинов, учёных степеней и наличия аккаунтов. Анонимусы, регистранты и члены экипажа блога в равных условиях.
@virens комментирует…
\renewcommand{\thechapter}{\arabic{chapter}....}
\renewcommand{\thesubsection}{\arabic{section}.\arabic{subsection}.}
Открываем Львовского на стр.297, и вуаля — видим те же самые строки, что и приведённые здесь без ссылки на первоисточник. virens, ты таки не поверить, но люди вроде меня учили LaTeX, штудируя Львовского. На мой взгляд, это лучшая книга по LaTeX, когда-либо изданная в России. А уж азы нужно учить исключительно по ней. Кстати, приложение Е. «LaTeX в России».
P.S. Можешь удалить и этот комментарий, но, по крайней мере, его ты прочтёшь.
@iv_vl комментирует...
Открываем Львовского на стр.297, и вуаля
В комментах задали конкретный вопрос: как сделать точку после главы. Там не спрашивали, на какой странице Львовского это написано. Ты ответил в стиле RTFM n00b, что мной считается хамством - именно поэтому твой комент был снесён, а в пост добавлен этот трюк.
ты таки не поверить, но люди вроде меня учили LaTeX, штудируя Львовского.
Я тоже его читал, что не отменяет необходимости написания постов типа некого минимума для написания диплома в латехе.
Смысл этого блога в том, чтобы содержать конкретные рецепты, а не перечитывать Львовского снова если тебе что-то нужно быстро найти.
это лучшая книга по LaTeX
Не знаю, как насчёт "лучшая", но во всяком случае исключительно хорошая и годная.
азы нужно учить исключительно по ней.
\renewcommand это нифига не азы. И этот блог - не научная статья, а походный справочник с рецептами.
Можешь удалить и этот комментарий
Нет, я не буду его удалять. Я объяснил, почему твой предыдущий коммент был снесён: если нечего добавить по существу беседы - не надо посылать в маны. По крайней мере нужно привести цитату и источник.
@virens комментирует…
…не отменяет необходимости написания постов типа некого минимума для написания диплома в латехе.
Если цель книги — объяснить, как всё работает, то сборника рецептов — представить рабочий вариант. Может сделать стилевой пакет? Так хоть сразу поставил и проверил, насколько эти рецепты подходят для диплома. А то в гугле отбоя нет от «просто рецептов», и у каждого автора они свои. А ответа на вопрос, почему нужно доверять конкретному рецепту, как с комсомольца на допросе, с автора не вытянуть. В конце-концов, в отличие от гуманитария, человек технический не должен просто заучивать рецепты.
Не знаю, как насчёт "лучшая", но во всяком случае исключительно хорошая и годная.
Сейчас азы уже не учат, а учат подключать тот или иной стилевой пакет, пример тому — «LaTeX в России» Балдина. Кому-то такой подход ближе, но это опять же на тему оформления рецептов в стилевой пакет. Кстати, ты принципиально не ставишь ссылки на первоисточники? (например, ту ссылку на Львовского, что я давал раньше.) С трудом верится, что никого книга не заинтересует, а нужны только рабочие рецепты. Видимо, от жизни я поотстал.
К готовым рецептам:
\makeatletter
\def\@seccntformat#1{\csname the#1\endcsname.\ } % точка после номера раздела
\def\@biblabel#1{#1.} % формат номеров в списке литературы
\makeatother
При этом меняется только отображение заголовка. В случае же переопределения \thesection и тп точка появится также при ссылках (В разделе \ref{s:proof} мы доказываем...), а это не совсем то что нам нужно
Добрый день, Михаил. Подскажите пожалуйста, как убрать точки между главой и номером страницы.
Глава. . . . . . . . . . . . . . . . . . . . . . . . . 4
Я недавно занимаюсь латехом, и даже не представляю в какую сторону капать. Спасибо)
@Юрий Шукуров комментирует...
Подскажите пожалуйста, как убрать точки между главой и номером страницы.
Ответил постом на Лунодроме по этой ссылке. Вообще настоятельно рекомендую внести в закладки 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
Заранее очень благодарен.
Здравствуйте, вот у меня проблема возникла. Хочу нумеровать разделы, добавив слово "Семинар".
Делаю это так:
\renewcommand{\thesection}{\arabic{section}.}
\renewcommand{\section}{\@startsection{section}{1}{0pt}{3.5ex plus -1ex minus -.2ex}{2.3ex plus.2ex}{\textsc\Large\bfseries{Семинар }}}%насколько я из Львовского понял
В итоге все нормально нумеруется, но слово Семинар появляется и при слове Содержание, что как-то бредово. Как бы это можно грамотно исправить?
Здравствуйте.
Кто-нить сталкивался с проблемой, когда оглавление занимает больше одной страницы, а нумерация страниц не учитывает этого при генерации номеров страниц в оглавлении? Например, при генерации оглавления "Введение" помещается на 3 страницу, а введение в тексте находится на 4, т.к. само оглавление занимает 2 страницы. В случае, если оглавление умещается на 1 страницу, проблем не возникает.
Заранее спасибо.
Простите. Вопрос снимается. На 4-й раз генерации все исправилось.
Скажите, пожалуйста, как сделать в одном файле два оглавления: одно на русском, другое на английском?
нужно расположить книгу а5 на а4, слева четные стр, справа нечетные, получается только наоборот, нужно в издательство отдать, не знаю что делать (
Решил добавить свой комментарий, так как нигде не нашел описание titlesec на русском. Вдруг кому понадобится)). Просьба автору блока добавить этот комментарий в свою статью, если конечно это возможно и он еще читает комментарии)).
Краткий обзор пакета titlesec
Основная команда по переопределению формата рубрик:
\titleformat{«command»}[«shape»]{«format»}{«label»}{«sep»}{«before-code»}[«after-code»]
Здесь
«command» --- принимает значения \part, \chapter, \section и т.д., то есть рубрику которую мы хотим изменить;
«shape» --- несколько значений:
1) hang – значение по умолчанию. Номер или ярлык рубрики будет на одном уровне с текстом рубрики (как в стандартном \section).
Пример:
\titleformat{\chapter }[ hang]{…
получим:
Глава 1 «Текст названия»
2) block – печатает всю главу в блоке (абзац) без дополнительного форматирования. Полезно в центрированном названии и специальном форматировании (включая графические инструменты, такие как picture, pspicture и т.д.)
Пример:
не знаю, не пользовался.
3) display – номер рубрики над тестом рубрики (как в стандартном \chapter).
Пример:
\titleformat{\section}[ display]{…
получим:
1.1
«Текст названия»
4) runin – оформление как в стандартном \paragraph.
5) leftmargin – ставит заголовок на левое поле страницы. Заголовки в самом конце страницы будут перемещены на следующую, а не будут торчать на нижнем поле, т.е. длинные заголовки могут привести к незаполненной странице. Далее см. док.
6) rightmargin – то же самое, но справа.
6) drop – текст документа (т.е. абзац следующий за заголовком) обтекает заголовок при условии, что данный абзац длиннее чем заголовок. Если нет, они перекрываются. Комментарии в leftmargin, применимы и здесь.
7) wrap – похож на drop. Разница лишь в том, что пространство, отведенное в drop на заголовок является фиксированным, а в wrap автоматически доводят до самой длинной строки. Есть ограничения (см. док.)
8) frame – вроде display, но заголовок окружен рамкой.
Внимание, если не задавать [«shape»], тогда он примет значение по умолчанию (hang). Например если написать
\titleformat{\chapter}{\normalfont…
то номер главы будет на одном уровне с текстом названия главы.
Продолжение, ибо в один коммент не помещается)).
{«format»} --- форматирование применяемое на весь заголовок (номер и текст). Или код, применяемый до заголовка, например рисование линии над заголовком (см. пример ниже) и т.д. Здесь можно применить команды: \filcenter – выравнивает заголовок по центру, \filright – выравнивает слева, \filleft – выравнивает справа (почему так х.з.)).
{«label»} --- код до номера заголовка (на одном уровне с ним), форматирование номера заголовка.
{«sep»} --- расстояние между номером и текстом заголовка (вертикальное в display, в frame – это расстояние от рамки до текста заголовка. Не должно быть равным нулю.
{«before-code»} --- код до текста заголовка (на одном уровне с ним), форматирование текста заголовка. Если охота засунуть что то после текста заголовка, то нужно явно обраться к названию (опция explicit, к тексту обращаться как #1).
Например:
\usepackage[explicit]{titlesec}
\titleformat{\section}{\normalfont\Large\bfseries}{\thesection}{0.5em}
{\normalfont\Large\bfseries#1%
\hspace{0.5em}\titlerule[2pt]}
Нарисует линию толщиной 2pt до конца страницы, после заголовка (на одном с ним базовой линии) на расстоянии 0.5em.
[«after-code»] --- код выполняемый после заголовка. Возможны ошибки или игнорирования. Доп. см. док.
Пример. Нарисовать две линии над заголовком и одну под ним произвольной толщины.
\titleformat{\section}
{\titlerule[2pt]% первая линия толщиной 2pt
\vspace{2pt}% расстояние между двумя линиями
\titlerule[1pt]% вторая линия толщиной 1pt
\smallskip% расстояние до заголовка
\normalfont\Large\bfseries\filcenter }% выравниваем заголовок по центру
{\thechapter.}% нумерация с точкой
{1em}% расстояние между номером и текстом заголовка
{}% не изменяем формат текста заголовка
[{\smallskip% растояние между линией и концом заголовка
\titlerule[1pt]}]% собственно сама линия
Внимание на конструкцию [{\smallskip\titlerule[1pt]}]. Просто [\smallskip\titlerule[1pt]] – выдаст ошибку. Вообще говоря, так можно нарисовать произвольное количество линий.
Теперь о команде по переопределению расстояния над/под/и т.д. рубриками:
\titlespacing*{«command»}{«left»}{«before-sep»}{«after-sep»}[«right-sep»]
\titlespacing{«command»}{«left»}{«before-sep»}{«after-sep»}[«right-sep»]
Я так понял, основное отличие \titlespacing* от \titlespacing, то, что при \titlespacing* следующий после заголовка абзац текста не начинается с красной строки. Так что можно смело использовать \titlespacing и забыть про \indent.
Соответственно
«command» --- \part, \chapter, \section и т.д.;
«left» --- расстояние от левого поля документа. Если заголовок имеет форму leftmargin, rightmargin, или drop – этот параметр устанавливает ширину заголовка. В форме wrap – максимальную ширину заголовка, в runin – абзацный отступ заголовка (к примеру можно использовать \parindent и тогда название параграфа будет начинаться с красной строки)
«before-sep» --- вертикальное расстояние над заголовком.
«after-sep» --- расстояние от заголовка до текста документа. Вертикальное в hang, block, и display. Горизонтальное в runin, drop, wrap и ...margin.
[«right-sep»] --- расстояние от правого поля страницы до заголовка. Применимо только в hang, block и display.
Полная форма задания расстояний что то вроде {2ex plus 0.1ex minus 0.2ex}. Например:
\titlespacing{\section}{0pt}{2.5ex plus 0.1ex minus 0.2ex}{2ex plus%
0.1ex minus 0.2ex}%
Можно использовать конструкцию {*N} эквивалентную Nex с некоторым растяжением и сужением (х.з. каким).
Например:
\titlespacing{\section}{0pt}{*4}{*1.5}
Пример. Под подраздел должен обтекаться текстом.
\usepackage{titlesec}
\setcounter{tocdepth}{3} %для добавления подподраздела в оглавление
\setcounter{secnumdepth}{3} %для нумерации подподраздела
\titleformat{\subsubsection}[wrap]% выбираем нужную форму
{\normalfont\normalsize\bfseries\filright}% выравниваем слева
{\thesubsubsection.}%нумерация с точкой
{0.5em}% расстояние между номером и текстом заголовка
{}% не изменяем формат текста заголовка
\titlespacing{\subsubsection}{15pc}% максимальная ширина заголовка
{2ex plus 0.1ex minus 0.2ex}% отступ сверху и снизу заголовка
{1pc}% расстояние до текста документа
Здравствуйте! Подскажите, пожалуйста, как переопределить заголовки в Содержании (и м.б. тексте) так, чтобы не выделялись жирным (это по ГОСТу)? Я использую пакет pscyr, поэтому стандартное \textbf уже не прокатит
Привет! помогите,пожалуйста :)
нужно сделать в содержании заполнитель ....... во всех строках,а то автоматически делает только для section. хотелось бы добавить и для subsection.
спасибо!
Отправить комментарий