如何在目录的条目内以单倍行距显示文本?

如何在目录的条目内以单倍行距显示文本?

我正在写论文。我的大学要求文档采用双倍行距;我正在使用该setspace软件包来实现这一点。但是,如果目录条目的长度超过一行,我必须采用单倍行距。最好的做法是什么?

一个解决方案可能是在目录中添加简短标题。但是,我的大学要求不允许这样做。

此外,通过谷歌搜索,我发现使用该tocloft软件包可以实现我想要的功能。但是,即使阅读了该软件包的文档,我也不确定该怎么做。

答案1

这是一个可能的解决方案,使用来自目录的singlespace环境并重新定义命令以在 ToC 条目后添加必要的空间:setspacetocloft\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 整体排版为单倍行距——这可以通过封闭\tableofcontentssinglespace环境中来实现。

编辑:为了增加 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}

在此处输入图片描述

相关内容