Оглавление в scrbook/komascript: добавить точки к названиям глав

Оглавление в scrbook/komascript: добавить точки к названиям глав

Мне необходимо настроить внешний вид оглавления в соответствии с требованиями издателя.

Вот минимальный пример того, как это выглядит сейчас:

\documentclass{scrbook}

\begin{document}

\frontmatter

\tableofcontents

\chapter{Preface}

\mainmatter

\part{First part}

\chapter{First chapter}
\section{First section}
\subsection{First subsection}
\subsection{Second subsection}
\section{Second section}

\chapter{Second chapter}

\end{document}

В результате получается что-то вроде этого:


Скриншот моего текущего оглавления


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

Я нашел tocstyleпакет, но не понимаю его документацию. Я даже не уверен, что пакет позволяет мне делать то, что мне нужно. Может кто-нибудь подсказать, как получить то, что я хочу? Спасибо.

Редактировать:Мне также нужно удалить номера страниц частей. Я разместил это требование в своем первоначальном вопросе, но несколько вопросов в одной теме не поощрялись. Однако позже выяснилось, что это может иметь значение и для вопроса, заданного здесь: Если я использую подавление номеров частей страниц tocstyle, это может повлиять на размещенные здесь решения по удалению точек глав.

решение1

Не используйте пакет tocloft(упомянутый в вашем ответе) вместе с классом KOMA-Script.

Существует опция KOMA-Script для заполнения пробелов между названием главы и номером страницы в оглавлении точками:

\KOMAoptions{toc=chapterentrydotfill}

введите описание изображения здесь


Если номера страниц для заголовков глав не должны быть жирными, используйте

\addtokomafont{chapterentrypagenumber}{\mdseries}

Также можно удалить номер страницы для заголовков частей из оглавления:

\addtokomafont{partentrypagenumber}{\nullfont}

введите описание изображения здесь

Код:

\documentclass[toc=chapterentrydotfill]{scrbook}
\addtokomafont{chapterentrypagenumber}{\mdseries}
\addtokomafont{partentrypagenumber}{\nullfont}
\begin{document}
\frontmatter
\tableofcontents
\chapter{Preface}
\mainmatter
\part{First part}
\chapter{First chapter}
\section{First section}
\subsection{First subsection}
\subsection{Second subsection}
\section{Second section}
\chapter{Second chapter}
\end{document}

Также возможно использовать пакет tocstyle, который является частью пакета KOMA-Script. Чтобы получить точки между заголовками всех уровней и номерами страниц в TOC, используйте

\usetocstyle{allwithdot}

как уже предложил @Peter Ebelsberger. Чтобы удалить точки и номера страниц для заголовков частей в TOC, добавьте

\settocstylefeature[-1]{leaders}{\hfill}
\settocstylefeature[-1]{pagenumberhook}{\nullfont}

МВЭ:

\documentclass{scrbook}
\usepackage{tocstyle}
\usetocstyle{allwithdot}
\settocstylefeature[-1]{leaders}{\hfill}
\settocstylefeature[-1]{pagenumberhook}{\nullfont}
\begin{document}
\frontmatter
\tableofcontents
\chapter{Preface}
\mainmatter
\part{First part}
\chapter{First chapter}
\section{First section}
\subsection{First subsection}
\subsection{Second subsection}
\section{Second section}
\chapter{Second chapter}
\end{document}

Запустите несколько раз, чтобы получить

введите описание изображения здесь

решение2

\documentclass{scrbook}

\usepackage{tocstyle}
\usetocstyle{allwithdot}
\begin{document}

\frontmatter

\tableofcontents

\chapter{Preface}

\mainmatter

\part{First part}

\chapter{First chapter}
\section{First section}
\subsection{First subsection}
\subsection{Second subsection}
\section{Second section}

\chapter{Second chapter}

\end{document}

решение3

Я нашел это в другом месте:

\RequirePackage{tocloft}
\let\partbackup\l@part  % create a backup copy of the part definition
\renewcommand*\l@part[2]{\partbackup{#1}{}}  % redefine part in order to leave out the page number for part
\renewcommand{\cftchapdotsep}{\cftdotsep}  % add dots for chapter entries
\renewcommand{\cftchapleader}{\cftdotfill{\cftchapdotsep}}  % add dots for chapter entries
\renewcommand{\cftchappagefont}{\mdseries}  % define chapter page numbers to be printed in normal font, not bold

Согласятся ли люди, что это хорошее решение, или есть побочные эффекты, о которых я не знаю?

решение4

С новым tocloft, это работает следующим образом:

\DeclareTOCStyleEntry[%
  level=\chaptertocdepth,
  linefill=\TOCLineLeaderFill,
]{chapter}{chapter}

Связанный контент