在内容中的页码前使用 hspace,不右对齐

在内容中的页码前使用 hspace,不右对齐

根据 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}

按顺序,参数代表:

  • 节类型
  • 之前的缩进
  • 任何用于条目全局格式的代码
  • 如果该部分有编号,则显示标签
  • 如果该部分未编号,则显示标签
  • 显示页码的代码,包括页码前面的空格

相关内容