titletoc:删除目录开头的空行

titletoc:删除目录开头的空行

请考虑以下简化的目录样式(是的,实际版本确实比此 MWE 更好)。除了第一行目录比其应在的位置低一行之外,其他都还不错。比较第 1 页和第 2 页。

这是因为 TOC 中章节条目之间的空格是通过\addvspace{\baselineskip}›before-code‹(titletoc 文档中这样称呼它)实现的:在每个章节条目之前,都会产生一个空行。除了第一个条目之前,这很好。我们如何摆脱它?我对负空间的实验并不太成功,使用 titlesec ›after-code‹ 也不是一种选择,因为它不是在整个章节块之后调用的,而是在该块的章节行之后调用的(此 MWE 中的选项 B)。

请注意,这\addvspace{\baselineskip}是官方认可的垂直间距方法titlesec。为了恢复 LaTeX 的标准行为,似乎需要做额外的工作,这似乎很奇怪:如果我们不重新定义目录章节样式或titlesec完全卸载,问题就会消失。

在此处输入图片描述

\documentclass{scrreprt}
\usepackage{blindtext,titletoc}

\titlecontents{chapter}[0em]%
{\addvspace{\baselineskip}}% (A)
%{}% (B)
{\thecontentslabel\enskip}%
{}%
{\quad\emph{\thecontentspage}}%
[]% (A)
%[\addvspace{\baselineskip}] % (B)

\titlecontents{section}[0em]{}
{\thecontentslabel\enskip}%
{}%
{\quad\emph{\thecontentspage}}%
[]

\begin{document}
\tableofcontents

\chapter{Lorem}\blindtext
\chapter{Lorem}\blindtext
\chapter{Lorem}\blindtext

\section{Ipsum}\blindtext
\section{Ipsum}\blindtext
\section{Ipsum}\blindtext

\end{document}

答案1

给你:

\documentclass{scrreprt}
\usepackage{blindtext,titlesec, titletoc}
\uspackage{etoolbox}
\titlecontents{chapter}[0em]%
{\ifnumgreater{\thecontentslabel}{1}{\addvspace{\baselineskip}}{}}% (A)
%{}% (B)
{\thecontentslabel\enskip}%
{}%
{\quad\emph{\thecontentspage}}%
[]% (A)
%[\addvspace{\baselineskip}] % (B)

\titlecontents{section}[0em]{}
{\thecontentslabel\enskip}%
{}%
{\quad\emph{\thecontentspage}}%
[]

\begin{document}
\tableofcontents

\chapter{Lorem}\blindtext
\chapter{Lorem}\blindtext
\chapter{Lorem}\blindtext

\section{Ipsum}\blindtext
\section{Ipsum}\blindtext
\section{Ipsum}\blindtext

\end{document}

在此处输入图片描述

答案2

这里有一个简单的方法,它完全不依赖于章节编号。我们只需用条件标记第一个目录条目,然后将其设置为 false。

\documentclass{scrreprt}
\usepackage{blindtext,titletoc}
\newif\iffirst\firsttrue

\titlecontents{chapter}[0em]%
{\iffirst\global\firstfalse\else\addvspace{\baselineskip}\fi}% (A)
%{}% (B)
{\thecontentslabel\enskip}%
{}%
{\quad\emph{\thecontentspage}}%
[]% (A)
%[\addvspace{\baselineskip}] % (B)

\titlecontents{section}[0em]{}
{\thecontentslabel\enskip}%
{}%
{\quad\emph{\thecontentspage}}%
[]

\begin{document}
\tableofcontents

\chapter{Lorem}\blindtext
\chapter{Lorem}\blindtext
\chapter{Lorem}\blindtext

\section{Ipsum}\blindtext
\section{Ipsum}\blindtext
\section{Ipsum}\blindtext

\end{document}

相关内容