下列的这个帖子,我可以使用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
\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 级除外)。这允许目录中的级别之间水平对齐。因此,如果您希望将第 级的内容标签空间减少\section
到article
只有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
在article
,book
和report
。
附言:使用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
任意值。