我正在使用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
帮助下修补命令可以简化代码:\patchcmd
etoolbox
\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}