将 shorttoc 中的垂直间距选项更改为“紧密”

将 shorttoc 中的垂直间距选项更改为“紧密”

我正在使用shorttoc 包

\documentclass{scrartcl}
\usepackage[tight]{shorttoc}

\begin{document}

\shorttoc{Shorttoc}{1}
\tableofcontents

\section{Sec1}
\subsection{Subs1}
\section{Sec2}
\subsection{Subs2}
\section{Sec3}
\subsection{Subs3}

\end{document}

包装文档声明该选项tight应该减少 shorttoc 中条目之间的垂直间距,但在我的示例中却没有。我怀疑这是由于短文

\newif\if@tightshtoc \@tightshtocfalse
\def\shorttableofcontents#1#2{\bgroup\c@tocdepth=#2\@restonecolfalse
  \if@tightshtoc
     \parsep\z@
  \fi

我要怎么做才能调整垂直间距的大小?

答案1

就像\parsep列表项段落之间的垂直间距一样,我不知道为什么重新定义它会改变目录行之间的间距。对于节条目,后者由宏\l@section(包含行\addvspace{1.0em \@plus\p@})控制,并且需要重新定义此宏。如果您只想更改短目录的间距,则必须在组内进行重新定义。(注意:我使用的是etoolbox包及其\patchcmd宏以方便使用。)

\documentclass{scrartcl}

\usepackage{shorttoc}
\usepackage{etoolbox}

\begin{document}

\begingroup
\makeatletter
\patchcmd{\l@section}{%
  \addvspace{1.0em \@plus\p@}% original code line
}{%
  \addvspace{0.3em \@plus 0.3\p@}% substitute code line
}{}{}
\makeatother
\shorttoc{Shorttoc}{1}
\endgroup

\tableofcontents

\section{Sec1}
\subsection{Subs1}
\section{Sec2}
\subsection{Subs2}
\section{Sec3}
\subsection{Subs3}

\end{document}

相关内容