根据 Robert Bringhurst (印刷风格的元素),目录中的前导符不美观。这个问题询问设置目录的一种更好的方法。
另一种方法,更接近 TeX 的默认设置,是在章节标题后留出一小段空格(可能是 2em),然后在后面设置数字。Bringhurst 在他的书的实际内容中就是这么做的(下图)。
奇怪的是,tocloft
似乎不直接支持这种风格。我这样想是错的吗?还是有其他包可以实现这一点?
答案1
使用 是可能的tocloft
。该示例还处理了节号:
\documentclass[openany]{book}
\usepackage{tocloft}
\usepackage{color}
\renewcommand*{\cftchappresnum}{\hss\color{red}}
\renewcommand*{\cftchapaftersnum}{\hspace{.5em}}
\settowidth{\cftchapindent}{\cftchapfont 99\cftchapaftersnum}
\setlength{\cftchapnumwidth}{0pt}
\renewcommand*{\cftchapleader}{\hspace{1em}}
\renewcommand*{\cftchapafterpnum}{\cftparfillskip}
\renewcommand*{\cftpnumalign}{l}
\begin{document}
\tableofcontents
\chapter*{Forword}
\addcontentsline{toc}{chapter}{Forword}
\setcounter{page}{9}
\chapter*{Historical Synopsis}
\addcontentsline{toc}{chapter}{Historical Synopsis}
\setcounter{page}{12}
\chapter{Rhytm \& Proportion}
\setcounter{page}{25}
\chapter{Harmony \& Counterpoint}
\setcounter{page}{45}
\chapter{Structural Forms \& Devices}
\setcounter{page}{61}
\chapter{Analphabetic Symbols}
\setcounter{page}{75}
\chapter{Choosing \& Combining Type}
\setcounter{page}{93}
\chapter{Historical Interlude}
\setcounter{page}{119}
\chapter{Shaping the Page}
\setcounter{page}{143}
\chapter{The State of the Art}
\setcounter{page}{179}
\chapter{Grooming the Font}
\setcounter{page}{198}
\chapter{Prowling the Specimen Books}
\setcounter{page}{209}
\end{document}
答案2
使用titletoc
包(的配套包titlesec
),可以使用类似如下的命令来实现:
\titlecontents{chapter}[0pt]{}%
{\contentslabel{2.25em}}{}%
{\hspace{2em}\thecontentspage}
按顺序,参数代表:
- 节类型
- 之前的缩进
- 任何用于条目全局格式的代码
- 如果该部分有编号,则显示标签
- 如果该部分未编号,则显示标签
- 显示页码的代码,包括页码前面的空格