我正在使用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}