更新目錄距離會破壞章節頁碼和標題的粗體字

更新目錄距離會破壞章節頁碼和標題的粗體字

這似乎是一個簡單的問題,但尚不清楚如何解決它。

考慮一下這個

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

將在數字「1」和「章節標題」以及 ABCXYZ 之間產生重疊。

編號和標題之間的距離由目錄固定。它不是可變的。你不能在那裡放任何東西。當然,與固定距離相比,節數太長時會出現同樣的問題:\setcounter{section}{1000}

以下解決方案

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

或多或少起作用。

然而,它似乎重置了一些正常的目錄參數。

至少它明顯地將節號和節標題重置為粗體,而小節圖塊和子小節標題不是粗體。章節的頁碼也不再是粗體。變得像目錄中的小節頁碼。

那很不好。

包裹在

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

確實有效。但是......它無法到達部分標題。

\section{\textbf{TITLE IS HERE}}

由於各種原因不太理想。

Q:更新*l@section後,如何恢復預設目錄中其餘的普通粗體和格式?

沒有任何包裹請。

一個子問題是這樣的:我定義了一個長度並將其寬度設置為“``\arabic{section} ABCXYZ”的長度,現在,將部分 toc 距離設置得相當大,我希望減去這個可變距離。

結果是節號較小,與標題之間的間距不會很大。看來\renewcommand{\thesection}{...}放錯地方了。它不會影響章節標題的間距。

Q:還需要更新哪些內容以及貼上 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軟體包來指示可以做什麼。 ToC 的唯一變化是章節編號的空間。如果您想要其他更改,那麼該軟體包提供了許多便利 ( 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”,這對我來說看起來非常奇怪。也許您會想要重新定義小節編號。

相關內容