KOMA-Script scrbook:章节和节号的宽度

KOMA-Script scrbook:章节和节号的宽度

我正在使用 KOMA-Script 的scrbook课程,但目录方面存在问题。

当章节号过大时,章节号会粘贴在章节标题上。章节部分号字段也会粘贴在部分标题上。部分页码会略微向右推,这样部分页码就不会与章节页码对齐。

如果部分数量太大,我也会遇到类似的问题。

在此处输入图片描述

我应该怎么办?

答案1

使用tocstyle包装及其KOMAlike风格:

\documentclass{scrbook}
\usepackage{tocstyle}

\usetocstyle{KOMAlike} 

\begin{document}

\tableofcontents
\setcounter{chapter}{100}% just for the example
\chapter{Title of chapter}
\setcounter{section}{10}% just for the example
\section{Title of a Section}
\section{Title of a Section}
\chapter{Title of chapter}
\setcounter{section}{20}% just for the example
\section{Title of a Section}
\section{Title of a Section}

\end{document}

在此处输入图片描述

答案2

该解决方案实际上并不符合 KOMA 脚本的要求。

对于\chapter目录中的条目,数字的宽度包含在内\@tempdima。您可以使用钩子\raggedchapterentry(默认情况下为空)按以下方式更新此长度:

\renewcommand*{\raggedchapterentry}{\setlength{\@tempdima}{3em}}

\@tempdimain的默认长度\l@chapter1.5em。因此,我将其加倍,只是为了进行比较。

\l@section控制单位编号/标题的位置\section,定义为

\newcommand*\l@section{\bprot@dottedtocline{1}{1.5em}{2.3em}}

在 KOMA 脚本基类中。第一个长度是单位缩进的宽度,第二个长度是单位数字的长度。您可以将其修改为(例如)

\renewcommand*\l@section{\bprot@dottedtocline{1}{3em}{3.5em}}

它将使它(水平)与3em章节号(上面定义)对齐,并使用数字宽度为3.5em\section这是一个完整的例子:

原始输出:

在此处输入图片描述

更新的输出:

在此处输入图片描述

\documentclass{scrreprt}% http://ctan.org/pkg/koma-script
\makeatletter
\renewcommand*{\raggedchapterentry}{\setlength{\@tempdima}{3em}}
\renewcommand*\l@section{\bprot@dottedtocline{1}{3em}{3.5em}}
\show\l@chapter
\show\l@section
\makeatother
\begin{document}
\tableofcontents
\setcounter{chapter}{100}
\chapter{A chapter}
\section{A section}
\end{document}

答案3

更新:从...开始KOMA-Script 版本 3.27还有一个选项pagenumberwidth可以\DeclareTOCStyleEntry调整页码的空间。加上前缀也toc可以使用\RecdeclareSectionCommand

\documentclass{scrbook}[2019/10/12]
\RedeclareSectionCommands[tocdynnumwidth]{chapter,section}
\RedeclareSectionCommands[tocpagenumberwidth=6ex]% adjust the space for the page number
  {part,chapter,section,subsection,subsubsection,paragraph,subparagraph}

\begin{document}
\tableofcontents
\setcounter{chapter}{100}% just for the example
\setcounter{page}{998}% just for the example
\chapter{Title of chapter}
\setcounter{section}{10}% just for the example
\section{Title of a Section}
\section{Title of a Section}
\chapter{Title of chapter}
\setcounter{section}{20}% just for the example
\section{Title of a Section}
\section{Title of a Section}
\end{document}

从...开始KOMA-Script 版本 3.20您可以使用

\documentclass{scrbook}[2016/10/05]
\RedeclareSectionCommands[tocdynnumwidth]{chapter,section}
\RedeclareSectionCommands[tocpagenumberbox=\pagenumberbox]
  {part,chapter,section,subsection,subsubsection,paragraph,subparagraph}

\newcommand\pagenumberbox[1]{%
  \makebox{\enskip #1}%
}

\begin{document}
\tableofcontents
\setcounter{chapter}{100}% just for the example
\setcounter{page}{998}% just for the example
\chapter{Title of chapter}
\setcounter{section}{10}% just for the example
\section{Title of a Section}
\section{Title of a Section}
\chapter{Title of chapter}
\setcounter{section}{20}% just for the example
\section{Title of a Section}
\section{Title of a Section}
\end{document}

在此处输入图片描述

或者

\RedeclareSectionCommand[tocnumwidth=3em]{chapter}
\RedeclareSectionCommand[tocindent=3em,tocnumwidth=3.5em]{section}
\RedeclareSectionCommands[tocpagenumberbox=\pagenumberbox]
  {part,chapter,section,subsection,subsubsection,paragraph,subparagraph}

\newcommand\pagenumberbox[1]{%
  \makebox[4ex][r]{#1}%
}

在此处输入图片描述

相关内容