
Вроде бы простая проблема, но не ясно, как ее решить.
Учти это
\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.
По крайней мере, он визуально сбрасывает номера разделов и заголовки разделов, делая их жирными, в то время как плитки подразделов и заголовки подподразделов не жирными. Номера страниц для разделов также перестают быть жирными. Становятся похожими на номера страниц подразделов в toc.
Это плохо.
Упаковка в
\textbf{arabic{section}}
внутри\renewcommand{\thesection}
работает. Но... не может достичь заголовка раздела.
\section{\textbf{TITLE IS HERE}}
не идеален по разным причинам.
В: Как вернуть оставшуюся часть обычного жирного шрифта и форматирования в оглавлении по умолчанию после обновления *l@section?
Пожалуйста, без каких-либо упаковок.
Подвопрос такой: я определяю длину и задаю ее ширину, равную длине ```\arabic{section} ABCXYZ'', и теперь, задав расстояние до конца секции довольно большим, я хочу вычесть это переменное расстояние.
Результатом будет то, что номер раздела, будучи маленьким, не будет иметь большого пробела между ним и заголовком. Кажется, это \renewcommand{\thesection}{...}
неправильное место для его размещения. Это не повлияет на интервал заголовка раздела.
В: Что еще необходимо обновить и где правильно вставить объект hspace{\correction}, чтобы изменить заголовок раздела, отображаемый в оглавлении.
Вероятно, это как раз то самое место, где можно восстановить форматирование по умолчанию.
решение1
Определение \l@section
происходит из класса документа, так что это не пакет, но и не часть LaTeX в точности. Я предлагаю вам поместить
\makeatletter \show\l@section \makeatother
в вашем документе, чтобы увидеть существующее определение.
Я предполагаю, что вы используете класс документа "article", где \l@section
используется жирный шрифт, и не используется \@dottedtocline
вообще! В определении, найденном в article.cls, есть загадочная настройка
\setlength\@tempdima{1.5em}%
и это ширина номера раздела (используется \numberline
).
Я не буду публиковать все определение, потому что у меня нет последней версии. Но, возможно, вы захотите пересмотреть использование пакета для форматирования toc.
Альтернативой является переопределение \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", что для меня выглядит действительно странно. Возможно, вы захотите сделать некоторое переопределение нумерации подразделов.