我正在使用 Koma-Script Book,我想从 2012 年开始输入零件编号。但是,4 位零件编号条目在目录中引起了问题。水平框溢出,2012 的最后一位数字与零件标题的前一个或两个字符重叠。我正在使用命令\tableofcontents
生成目录。
有什么好方法可以修复此问题?
答案1
使用tocloft
包中,你可以重新定义\cftpartnumwidth
:
\documentclass{scrbook}
\usepackage{tocloft}
\renewcommand\cftpartnumwidth{2cm}
\begin{document}
\tableofcontents
\setcounter{part}{2011}
\part{Test Part}
\end{document}
另一种选择是,不需要额外的包来重新定义\l@part
;scrbook.cls
这是一种可能的重新定义:
\documentclass{scrbook}
\makeatletter
\renewcommand*\l@part[2]{%
\ifnum \c@tocdepth >-2\relax
\addpenalty{-\@highpenalty}%
\addvspace{2.25em \@plus\p@}%
\setlength{\@tempdima}{2cm}% original value: 2em
\if@tocleft
\ifx\toc@l@number\@empty\else
\setlength\@tempdima{0\toc@l@number}%
\fi
\fi
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode
\advance\leftskip\@tempdima
\hskip -\leftskip
\usekomafont{partentry}{#1\nobreak
\usekomafont{partentrypagenumber}{\hfil\nobreak
\hb@xt@\@pnumwidth{\hss#2}}}\par
\ifnum \scr@compatibility>\@nameuse{scr@[email protected]}\relax
\endgroup
\penalty20010
\else
\penalty\@highpenalty
\endgroup
\fi
\fi
}
\makeatother
\begin{document}
\tableofcontents
\setcounter{part}{2011}
\part{Test Part}
\end{document}
答案2
使用 KOMA-Script 类不需要额外的包。你可以使用
\RedeclareSectionCommand[
tocnumwidth=2cm
]{part}
将目录中零件编号的空间更改为2cm
。
代码:
\documentclass{scrbook}
\RedeclareSectionCommand[
tocnumwidth=2cm
]{part}
\setcounter{part}{2011}
\begin{document}
\tableofcontents
\part{First part}
\chapter{A chapter}\section{A section}
\chapter{A chapter}\section{A section}
\part{Second part}
\chapter{A chapter}\section{A section}
\chapter{A chapter}\section{A section}
\part{Last part}
\chapter{A chapter}\section{A section}
\chapter{A chapter}\section{A section}
\end{document}
答案3
由于您正在使用 KOMA-Script,您可以查看一下该包tocstyle
。
\usepackage{tocstyle}
\usetocstyle{KOMAlike}
这需要额外的编译运行来计算目录的宽度。