我正在使用 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}}
\@tempdima
in的默认长度\l@chapter
是1.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}%
}