我正在使用该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
。