如何更改目录中各节条目与每节中第一个子节条目之间的垂直间距?

如何更改目录中各节条目与每节中第一个子节条目之间的垂直间距?

我正在使用article类和tocloft包。

有人知道如何在目录部分条目和仅有的每个部分中的第一个小节条目。

当我使用\setlength\cftbeforesubsecskip{22pt}这个时,每个小节条目前都会有一个空格。我不希望小节条目之间有额外的空格。我只希望在节条目和第一个小节条目之间有一个空格(在每个节中)。

有用的是改变空间的命令部分条目,而不是之前。这样,我可以在部分条目之后设置空格,但据我所知,\cftAFTERsecskip不存在类似的东西。

有人有什么建议吗?谢谢!

\documentclass[12pt]{article}
\usepackage{tocloft}

\setlength\cftparskip{0pt}

\setlength\cftbeforesecskip{0pt}

\setlength\cftbeforesubsecskip{22pt}

\setlength\cftaftertoctitleskip{44pt}

\begin{document}
\tableofcontents

\section{Test section one}
\subsection{test section one one}
\subsection{test section one two}
\section{Test section two}
\subsection{test section two one}
\subsection{test section two two}
\clearpage
\section{Test section three}
\subsection{test section three one}
\subsection{test section three two}

\end{document}

答案1

一种选择是\subsection按照 中的实现重新定义article.cls。在重新定义中,测试计数器的值subsection;如果该值大于一,则不执行任何操作;如果等于一,则将空间添加到 ToC:

\documentclass[12pt]{article}
\usepackage{tocloft}

\setlength\cftparskip{0pt}
\setlength\cftaftertoctitleskip{44pt}

\makeatletter
\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
  {-3.25ex\@plus -1ex \@minus -.2ex}%
  {1.5ex \@plus .2ex}%
  {\normalfont\large\bfseries%
  \ifnum\value{subsection}>1 \else \addtocontents{toc}{\protect\addvspace{22pt}}\fi}}
\makeatother

\begin{document}
\tableofcontents

\section{Test section one}
\subsection{test section one one}
\subsection{test section one two}
\section{Test section two}
\subsection{test section two one}
\subsection{test section two two}
\clearpage
\section{Test section three}
\subsection{test section three one}
\subsection{test section three two}

\end{document}

在此处输入图片描述

在包的\subsection帮助下修补命令可以简化代码:\patchcmdetoolbox

\documentclass[12pt]{article}
\usepackage{tocloft}
\usepackage{etoolbox}

\setlength\cftparskip{0pt}
\setlength\cftaftertoctitleskip{44pt}

\patchcmd{\subsection}{\bfseries}%
  {\ifnum\value{subsection}>1 \else \addtocontents{toc}{\protect\addvspace{22pt}}\fi}{}{}

\begin{document}
\tableofcontents

\section{Test section one}
\subsection{test section one one}
\subsection{test section one two}
\section{Test section two}
\subsection{test section two one}
\subsection{test section two two}
\clearpage
\section{Test section three}
\subsection{test section three one}
\subsection{test section three two}

\end{document}

相关内容