如何(快速)重新定义目录中章节编号和章节标题之间的间距

如何(快速)重新定义目录中章节编号和章节标题之间的间距

下列的这个帖子,我可以使用titletoc(我想这样做)并完全重新定义格式

\titlecontents{<section>}[<left>]{<above>}
          {<before with label>}{<before without label>}
          {<filler and page>}[<after>]

如文档中所示,并在字段中titletoc放置一个。但我对样式非常满意,我只想修改空间。有没有办法以某种方式使用而不重新定义整个?\contentslabel{length}<before with label>\contentslabel{length}\titlecontents

答案1

ToC 条目的间距规范\contentslabel受 约束\@dottedtocline。并且,即使titletoc虽然允许对这些进行全局修改,但不允许使用简单的界面来仅修改其中的某些部分。因此,这里有一个解决方法:\@dottedtocline直接修改。

为了article

  • \section(级别 1):缩进 = 0pt;标签宽度 =1.5em
  • \subsection(级别 2):缩进 = 1.5em;标签宽度 =2.3em
  • \subsubsection(级别 3):缩进 = 3.8em;标签宽度 =3.2em
  • \paragraph(级别 4):缩进 = 7.0em;标签宽度 =4.1em
  • \subparagraph(级别 5):缩进 = 10.0em;标签宽度 =5.0em

为了bookreport

  • \chapter(级别 0):缩进 = 0pt;标签宽度 =1.5em
  • \section(级别 1):缩进 = 1.5em;标签宽度 =2.3em
  • \subsection(级别 2):缩进 = 3.8em;标签宽度 =3.2em
  • \subsubsection(级别 3):缩进 = 7.0em;标签宽度 =4.1em
  • \paragraph(级别 4):缩进 = 10.0em;标签宽度 =5.0em
  • \subparagraph(级别 5):缩进 = 12.0em;标签宽度 =6.0em

请注意,X 级的缩进等于 (X-1)、(X-2) 等级标签宽度的总和(...第 4 级和第 5 级除外)。这允许目录中的级别之间水平对齐。因此,如果您希望将第 级的内容标签空间减少\sectionarticle只有1em,则可以使用

\usepackage{etoolbox}% http://ctan.org/pkg/etoolbox
\makeatletter
\patchcmd{\l@section}{1.5em}{1.0em}{}{}% Patch \section label width
\renewcommand*\l@subsection{\@dottedtocline{2}{1.0em}{2.3em}}% Correct \subsection indent
\renewcommand*\l@subsubsection{\@dottedtocline{3}{3.3em}{3.2em}}% Correct \subsubsection indent
\renewcommand*\l@paragraph{\@dottedtocline{4}{6.5em}{4.1em}}% Correct \paragraph indent
\renewcommand*\l@subparagraph{\@dottedtocline{5}{10.6em}{5em}}% Correct \subparagraph indent
\makeatletter

再次注意,下面所有级别都需要进行修改,\section以确保 ToC 在水平方向上正确对齐。

最后,LoF 和 LoT 中包括类似的缩进和宽度,默认情况下均位于节级 (1)。为了保持一致性,您可能还希望使用与上述类似的方法更改这些内容。感兴趣的定义是

\newcommand*\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}
\let\l@table\l@figure

articlebookreport

附言:使用etoolbox修补\l@section比执行重新定义更容易,因为结构\l@section与低级\l@<section>命令不同。

答案2

替换\tableofcontents为:

\begingroup
\let\orignumberline\numberline
\def\numberline#1{\orignumberline{#1}\kern-1ex}
\tableofcontents
\endgroup

您可以调整1ex\kern-1ex任意值。

相关内容