更改目录宽度

更改目录宽度

在设置目录时,默认情况下,TOC 会覆盖整个页面的宽度,而不管章节标题的长度是多少。我希望整个 TOC 的宽度恰到好处,并可以选择在最长的章节标题和页码之间留出一小段额外的空格(1-4em)。我还希望右侧的所有页码都对齐(即不参差不齐)。有办法吗?

我不得不想象使用 tocloft 可以实现这一点,但我似乎找不到正确的设置。我正在尽最大努力避免软件包膨胀(这越来越难以管理),因此我特别感谢使用 tocloft 的解决方案。

编辑:这是一个 MWE

\documentclass[12pt]{article}
\usepackage{setspace, tocloft}

%Modifies line spacing of the ToC
\setlength\cftparskip{-1.2pt}
\setlength\cftbeforesecskip{1.3pt}
\setlength\cftaftertoctitleskip{2pt}

%Makes dots after sections/subsections: Sections 1., 2.1., etc
\makeatletter
\renewcommand{\@seccntformat}[1]{\csname the#1\endcsname.\quad}
\makeatother

%Makes the dots (above) appear in ToC
\let \savenumberline \numberline
\def \numberline#1{\savenumberline{#1.}}

\begin{document}
\tableofcontents
\begin{section}{Section 1}
\begin{subsection}{Section 1.1}\end{subsection}
\begin{subsection}{Section 1.2}\end{subsection}
\end{section}
\begin{section}{Section 2}\end{section}
\end{document}

其结果为:在此处输入图片描述

如上所述,我想控制章节标题末尾和页码开头之间的宽度,保持页码垂直对齐。

答案1

只需将这些行添加到您的序言中

\renewcommand{\cftsecafterpnum}{\hspace*{7.5em}}
\renewcommand{\cftsubsecafterpnum}{\hspace*{7.5em}}

7.5em根据您的需要进行调整。

平均能量损失

\documentclass[12pt]{article}
\usepackage{setspace, tocloft}

%Modifies line spacing of the ToC
\setlength\cftparskip{-1.2pt}
\setlength\cftbeforesecskip{1.3pt}
\setlength\cftaftertoctitleskip{2pt}

\renewcommand{\cftsecafterpnum}{\hspace*{7.5em}}
\renewcommand{\cftsubsecafterpnum}{\hspace*{7.5em}}

%Makes dots after sections/subsections: Sections 1., 2.1., etc
\makeatletter
\renewcommand{\@seccntformat}[1]{\csname the#1\endcsname.\quad}
\makeatother

%Makes the dots (above) appear in ToC
\let \savenumberline \numberline
\def \numberline#1{\savenumberline{#1.}}

\begin{document}
\tableofcontents
\begin{section}{Section 1}
\begin{subsection}{Section 1.1}\end{subsection}
\begin{subsection}{Section 1.2}\end{subsection}
\end{section}
\begin{section}{Section 2}\end{section}
\end{document} 

输出

在此处输入图片描述

备注

如果要在章节和小节编号后添加点,可以使用

\renewcommand{\cftsecaftersnum}{.}
\renewcommand{\cftsubsecaftersnum}{.}

代替

\let \savenumberline \numberline
\def \numberline#1{\savenumberline{#1.}}

答案2

我没有足够的声誉点来添加此评论,但根据@karlkoeller 的建议,您还可以添加:

\setlength{\cftsecindent}{7.5em}
\setlength{\cftsubsecindent}{\cftsecindent}
\addtolength{\cftsubsecindent}{2.3em}

到您的序言,再次7.5em根据您的需要进行调整。这将通过更改左缩进以匹配右“缩进”(pnum)来使目录居中(我认为完全正确)。第三行保留了 tocloft 包提供的默认间距,但您可以通过删除第三行并在当前占用的第二组括号中分配宽度来设置自定义缩进\cftsecindent,例如。

\setlength{\cftsecindent}{7.5em}
\setlength{\cftsubsecindent}{10em}

相关内容