我想修复我的 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
这将使点更加紧密,并可能解决你的问题。
但是,如果您更改虚线引线来修复目录布局中一个明显的不当之处,那么这可能会导致其他条目中出现不同的不当之处。
我的建议是接受现状,但不要告诉任何人你的“小问题”。