目录中的章节标题后需要更多点

目录中的章节标题后需要更多点

我想修复我的 ToC 中的一个小点故障。以下是显示该问题的 MWE:

\documentclass[11pt,letterpaper,twoside]{book}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[total={6in,10in},left=1.5in,top=0.5in,includehead,includefoot]{geometry}
\usepackage{microtype}
\usepackage{amsmath}
\usepackage{amsfonts}
\usepackage{mathtools}
\usepackage[nottoc,notlof]{tocbibind}
\usepackage[titles]{tocloft}

\renewcommand{\cftdotsep}{2}
\makeatletter  % To fix a spacing problem with page number.
\renewcommand{\@pnumwidth}{2em} %
\makeatother
\setcounter{tocdepth}{2}

% Chapters spacement :
\renewcommand{\cftchapaftersnumb}{\newline}
\setlength{\cftchapindent}{0em} % Spacement to left of chapter number.
\setlength{\cftchapnumwidth}{0em} %

% Sections spacement :
\renewcommand{\cftsecpresnum}{\hfill} % \quad
\renewcommand{\cftsecaftersnum}{\hspace{0.75em}} % \enskip = 0.5em = demi \quad
\setlength{\cftsecindent}{0em} %
\setlength{\cftsecnumwidth}{4em} %
%\addtolength{\cftsecnumwidth}{0em} %

\begin{document}

\microtypesetup{protrusion=false} % To fix extra dots in ToC
\tableofcontents

\setcounter{chapter}{14}
\setcounter{page}{561}
\chapter{Title}
\section{Section title}
\newpage
\section{A new section title}
\newpage
\section{Another section title}

\end{document}

预览(问题以红色显示):

在此处输入图片描述

在这种情况下,我在章节标题后获得了一个相对较大的空间(如红色所示),但似乎还有一个点的空间。这在我的完整目录中经常发生,这让我有点恼火。我该如何告诉 LaTeX 在章节标题后使用较小的空间来添加一个额外的点?当然,这些点必须全部保持右对齐(如当前所示)。

答案1

您遇到的问题是,就 LaTeX 而言,没有多余的空间可以放置另一个点。想象一下,这些点位于小盒子中,两边的空间大小相等,.实际大小是\@dotsep mu(一个mu是 1/18 em,book设置\@dotsep为 4.5,因此点之间的空间实际上是半个 em)。

您可以重新定义\@dottedtocline,使带点的框周围的间距不对称。

\def\@dottedtocline#1#2#3#4#5{%
  \ifnum #1>\c@tocdepth \else
    \vskip \z@ \@plus.2\p@
    {\leftskip #2\relax \rightskip \@tocrmarg \parfillskip -\rightskip
     \parindent #2\relax\@afterindenttrue
     \interlinepenalty\@M
     \leavevmode
     \@tempdima #3\relax
     \advance\leftskip \@tempdima \null\nobreak\hskip -\leftskip
     {#4}\nobreak
     \leaders\hbox{$\m@th
        \mkern \@dotsep mu\hbox{.}\mkern \@dotsep % ⬅︎
        mu$}\hfill
     \nobreak
     \hb@xt@\@pnumwidth{\hfil\normalfont \normalcolor #5%
                        \kern-\p@\kern\p@}%
     \par}%
  \fi}

我在复制的定义中用 ⬅︎ 标记了相关行。您可以将其更改为具有\@ldotsep\@rdotsep适当定义,(您不能仅在 之前添加前缀,\@dotsep因为它\@dotsep只是一个包含数字的宏,而不是可以相乘的长度或胶水)。或者,您可以在 之前添加 kern 以\leaders缩小该空间。

一个丑陋的解决方案是做类似的事情

\section[Another section title\kern-.1em]{Another section title}

缩小那里的间距以获得额外的点,但如果只是一个实例,这可能是最快的解决方案。

答案2

tocloft包可让您更改领导者之间的点之间的分离。

\usepackage{tocloft}
\renewcommand{\cftdotsep}{3.5} % normally 4.5

这将使点更加紧密,并可能解决你的问题。

但是,如果您更改虚线引线来修复目录布局中一个明显的不当之处,那么这可能会导致其他条目中出现不同的不当之处。

我的建议是接受现状,但不要告诉任何人你的“小问题”。

相关内容