目录章节号宽度

目录章节号宽度

我正在使用该tocloft包设计目录。我知道如何使用以下方法设置目录中章节编号的宽度

\setlength{\cftchapnumwidth}{2em}

但是这会为所有章节号设置固定的宽度2em。有些章节号需要比其他章节号更多的空间 - 例如 XVII 与 V。有没有办法设置宽度以动态包含章节号的宽度后跟一个空格?

答案1

在这种情况下,您很可能想要调整数字宽度全部ToC 中的分段单元,因为它们通常是按层次设置的。因此,只需简单地重新定义宏\numberline即可:

\usepackage{tocloft}% http://ctan.org/pkg/tocloft
\makeatletter
\renewcommand{\numberline}[1]{%
  \@cftbsnum #1\@cftasnum~\@cftasnumb%
}
\makeatother

上面的代码删除了之前的\hb@xt@\@tempdima{...}构造,该构造将数字设置在固定宽度的框内,左对齐。事实上,原始定义由tocloft是:

\renewcommand{\numberline}[1]{%
  \hb@xt@\@tempdima{\@cftbsnum #1\@cftasnum\hfil}\@cftasnumb}

这是一个显示结果的最小工作示例:

在此处输入图片描述

\documentclass{report}
\usepackage{tocloft}% http://ctan.org/pkg/tocloft
\makeatletter
\renewcommand{\numberline}[1]{%
  \@cftbsnum #1\@cftasnum~\@cftasnumb%
}
\makeatother
\begin{document}
\tableofcontents
\chapter{A chapter}\section{A section}
\setcounter{chapter}{11}
\chapter{A chapter}\section{A section}
\setcounter{chapter}{122}
\chapter{A chapter}\section{A section}
\setcounter{chapter}{1233}
\chapter{A chapter}\section{A section}
\setcounter{chapter}{12344}
\chapter{A chapter}\section{A section}
\end{document}

由于原始定义在数字和标题之间留下了“动态”间隙,因此我已将其强制放在~示例中。您可以将其修改为您感兴趣的任何长度(\quad\hspace*{2em}、 ...)。

请注意,必须插入此修改呼叫\tableofcontents

相关内容