如何增加目录中某一部分的数字宽度?

如何增加目录中某一部分的数字宽度?

我正在使用 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@partscrbook.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}

这需要额外的编译运行来计算目录的宽度。

相关内容