这看起来像是一个简单的问题,但不清楚如何解决它。
考虑一下
\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”,这对我来说看起来很奇怪。也许您需要对子节编号进行一些重新定义。