
這似乎是一個簡單的問題,但尚不清楚如何解決它。
考慮一下這個
\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”,這對我來說看起來非常奇怪。也許您會想要重新定義小節編號。