当章节包含节和小节时,我的目录显示的行间距与没有节和小节时不同。我需要每个章节的上方和下方具有相同的间距,同时在目录中保持节和小节的单倍行距。任何帮助我都会很感激。
答案1
以下适用于支持\chapter
(report
和book
)的默认文档类:
\documentclass{report}
\makeatletter
\let\old@makechapterhead\@makechapterhead
\renewcommand{\@makechapterhead}{%
\addtocontents{toc}{\protect\addvspace{1.0em \@plus\p@}}%
\old@makechapterhead%
}
\renewcommand*\l@chapter[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\addvspace{1.0em \@plus\p@}%
\setlength\@tempdima{1.5em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak\hfil \nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\penalty\@highpenalty
\endgroup
\fi}
\makeatother
\begin{document}
\tableofcontents
\chapter{A chapter}\section{A section}\section{A section}
\chapter{A chapter}
\chapter{A chapter}\section{A section}\section{A section}
\chapter{A chapter}\section{A section}\subsection{A subsection}\subsection{A subsection}
\chapter{A chapter}
\end{document}
该解决方案有两个作用。它...
- ...修改
\l@chapter
- 负责设置目录中与章节相关的条目的宏 - 以\addvspace
代替“传统”\vskip
。这只是为了确保在添加更多 时不会出现垂直空间“翻倍”的情况\vspace
。 - ...用于在目录中
\@makechapterhead
插入一个垂直空格(再次使用\addvspace
),以便有一个空格后目录条目。
使用与提供的解决方案类似的方法在 LaTeX 文档各部分的目录中添加点,可以通过以下方式在目录中的章节条目中添加点
\renewcommand*\l@chapter[2]{%
\ifnum \c@tocdepth >\m@ne
\addpenalty{-\@highpenalty}%
\addvspace{1.0em \@plus\p@}%
\setlength\@tempdima{1.5em}%
\begingroup
\parindent \z@ \rightskip \@pnumwidth
\parfillskip -\@pnumwidth
\leavevmode \bfseries
\advance\leftskip\@tempdima
\hskip -\leftskip
#1\nobreak
\xleaders\hbox{$\m@th % Added \xleaders
\mkern \@dotsep mu\hbox{.}\mkern \@dotsep
mu$}\hfil\nobreak\hb@xt@\@pnumwidth{\hss #2}\par
\penalty\@highpenalty
\endgroup
\fi}
\leaders
我没有使用,而是使用了\xleaders
。这些领导者类型的差异在想要用重复的字符串填充行。