更新目录距离中断粗体显示各节和标题的页码

更新目录距离中断粗体显示各节和标题的页码

这看起来像是一个简单的问题,但不清楚如何解决它。

考虑一下

\renewcommand{\thesection}{\arabic{section} ABCXYZ}
...
\tableofcontents
\section{The title of the section}

将在数字“1”和“部分标题”以及ABCXYZ之间产生重叠。

编号和标题之间的距离由目录固定。它不是可变的。你不能在那里放任何东西。当然,这与章节编号与固定距离相比太长时的问题相同:\setcounter{section}{1000}

以下解决方案

\makeatletter\renewcommand*\l@section{\@dottedtocline{1}{...}{...}}\makeatother

或多或少地起作用。

然而它似乎重置了一些正常的 toc 参数。

至少它明显重置了节号和节标题为粗体,而小节标题和小小节标题不为粗体。节的页码也不再为粗体。变得像目录中的小节页码一样。

那很不好。

包装

\textbf{arabic{section}}里面\renewcommand{\thesection}

确实有效。但是...它无法到达章节标题。

\section{\textbf{TITLE IS HERE}}

由于各种原因,效果并不理想。

问:更新 *l@section 后,如何恢复默认目录中其余的普通粗体和格式?

请不要携带任何包裹。

一个子问题是这样的:我定义一个长度并将其宽度设置为“\arabic{section} ABCXYZ”的长度,现在,将部分 toc 距离设置得相当大,我希望减去这个可变距离。

结果是,章节编号较小,与标题之间没有较大的间距。看来这\renewcommand{\thesection}{...}是错误的位置。它不会影响章节标题的间距。

问:还有什么需要更新,以及粘贴 hspace{\correction} 对象的正确位置在哪里,以影响目录中显示的章节标题。

这可能与可以重建默认格式的地方完全相同。

答案1

的定义\l@section来自文档类,因此不是一个包,但也不是 LaTeX 的一部分。我建议你把

\makeatletter \show\l@section \makeatother

在您的文档中查看预先存在的定义。

我猜你正在使用“article”文档类,其中\l@section使用粗体,并且\@dottedtocline根本不使用!在 article.cls 中的定义中,有一个神秘的设置

\setlength\@tempdima{1.5em}%

这就是节号的宽度(由 使用\numberline)。

我不会发布整个定义,因为我没有最新版本。但也许你想重新考虑使用包来格式化目录。

另一种方法是重新定义,\numberline这样它就不会与数字和标题重叠!

\makeatletter
\renewcommand\numberline[1]{%
\begingroup
 \sbox\@tempboxa{#1 }%
 \ifdim\wd\@tempboxa<\@tempdima
  \wd\@tempboxa=\@tempdima
 \fi
 \usebox\@tempboxa
\endgroup
}

答案2

我知道您说过您不想使用任何包,但下面我使用了包来tocloft指示可以做什么。对目录的唯一更改是部分编号的空间。如果您想要其他更改,那么包提供了许多便利(texdoc tocloft)。

    % tocprob5.tex SE 533343 section numbers
\documentclass{article}
\renewcommand{\thesection}{\arabic{section} ABCXYZ}
\usepackage{tocloft}
\newlength{\mylen} 
\settowidth{\mylen}{\textbf{99 ABCXYZ}} % the space required for the section number
\setlength{\cftsecnumwidth}{\mylen} % set space for section number
\setlength{\cftsubsecnumwidth}{\mylen} % set space for subsection number
\begin{document}
\tableofcontents
\section{Section}
\subsection{Subsection}
\section{Another section}
\end{document}

我希望您不会\thesection在实际文档中使用示例重新定义,因为这样\subsection第一个中的第一个\section将被编号为“1 ABCXYZ.1”,这对我来说看起来很奇怪。也许您需要对子节编号进行一些重新定义。

相关内容