我正在写论文。我的大学要求文档采用双倍行距;我正在使用该setspace
软件包来实现这一点。但是,如果目录条目的长度超过一行,我必须采用单倍行距。最好的做法是什么?
一个解决方案可能是在目录中添加简短标题。但是,我的大学要求不允许这样做。
此外,通过谷歌搜索,我发现使用该tocloft
软件包可以实现我想要的功能。但是,即使阅读了该软件包的文档,我也不确定该怎么做。
答案1
这是一个可能的解决方案,使用来自目录的singlespace
环境并重新定义命令以在 ToC 条目后添加必要的空间:setspace
tocloft
\cftXafterpnum
\documentclass{article}
\usepackage[doublespacing]{setspace}
\usepackage{tocloft}
\renewcommand\cftsecafterpnum{\vskip\baselineskip}
\renewcommand\cftsubsecafterpnum{\vskip\baselineskip}
\renewcommand\cftsubsubsecafterpnum{\vskip\baselineskip}
\begin{document}
\begin{singlespace}
\tableofcontents
\end{singlespace}
\section{A section with a very long title that spans several lines - even in the ToC}
\subsection{A subsection}
\subsubsection{A subsection}
\end{document}
答案2
一个近似的解决方案是将 ToC 整体排版为单倍行距——这可以通过封闭\tableofcontents
在singlespace
环境中来实现。
编辑:为了增加 ToC 是双倍行距排版的错觉,人们可能会摆弄内部 ToC 宏的定义。
\documentclass{article}
\usepackage[doublespacing]{setspace}
\makeatletter
\renewcommand*\l@section[2]{%
\ifnum \c@tocdepth >\z@
\addpenalty\@secpenalty
\addvspace{2.0em \@plus\p@}% Replaced "1.0em" with "2.0em"
\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
\endgroup
\fi}
\renewcommand*\l@subsection{\addvspace{1em}\@dottedtocline{2}{1.5em}{2.3em}}
\renewcommand*\l@subsubsection{\addvspace{1em}\@dottedtocline{3}{3.8em}{3.2em}}
\makeatother
\usepackage{lipsum}
\begin{document}
\begin{singlespace}
\tableofcontents
\end{singlespace}
\section{A section with a very long title that spans several lines - even in the ToC}
\subsection{A subsection}
\lipsum[1]
\end{document}