titletoc:\addvspace 不起作用

titletoc:\addvspace 不起作用

假设以下简单的代码:

\documentclass{article}

\usepackage{titletoc}
\titlecontents{section}
    [2em]
    {\addvspace{\baselineskip}}
    {}
    {}
    {}
    [\addvspace{\baselineskip}]  % <----

\begin{document}

\tableofcontents

\section{A}
\section{B}

\end{document}

在此处输入图片描述

使用 时\addvspace,我期望两个连续的s 只会在目录中的两个条目之间\section增加一个垂直空间。然而,事实并非如此,通过注释掉标记的行可以看到:垂直空间不应该改变,但它减少了一半。\baselineskip

我该如何解决这个问题?这是一个错误吗?

编辑:也许这是相关的:titlesec 标题后 \addvspace

答案1

我提议埃托克枚举项埃托克\etocnumber通过、\etocname或等命令提供目录内容\etocpage枚举项topsep允许通过设置列表前( )和项目之间的空格( \itemsep)来自定义列表。

\documentclass{article}

\usepackage{etoc}
\usepackage{enumitem}

\etocsetstyle{section}
    {% before
      \begin{itemize}
         [label={}, topsep=\baselineskip, itemsep=\baselineskip, itemindent=2em]
    }
    {% label
         \bfseries\item%
    }
    {% page
         \etocifnumbered{\makebox[2.25ex][r]{\etocnumber.~}}{}\etocname{}%
         ~\dotfill\makebox[0pt][l]{\makebox[5.5ex][r]{~\etoclink{p.\hfill\etocpage}}}%
    }
    {% after
      \end{itemize}
    }

\etocsetstyle{subsection}
    {% before
      \begin{itemize}
         [label={}, topsep=\baselineskip, itemsep=0.5\baselineskip, itemindent=2em]
    }
    {% label
         \itshape{}\item%
    }
    {% page
         \etocifnumbered{\makebox[2.25ex][r]{\etocnumber.~}}{}\etocname{}%
         ~\dotfill\makebox[0pt][l]{\makebox[5.5ex][r]{~\etoclink{p.\hfill\etocpage}}}%
    }
    {% after
      \end{itemize}
    }

\begin{document}

\tableofcontents

\begin{itemize}
 \item \verb|\baselineskip| between two \verb|\sections|,
 \item \verb|\baselineskip| between \verb|\section| and \verb|\subsection|,
 \item \verb|.5\baselineskip| between two \verb|\subsections|.
\end{itemize}

\section{Section A}

\section{Section B}

\subsection{B1}
\subsection{B2}
\subsection{B3}

\section{Section C}

\section{Section D}

\section{Section E}

\end{document}

etoc 和 enumitem

相关内容