
Es scheint ein einfaches Problem zu sein, aber es ist nicht klar, wie es zu beheben ist.
Bedenken Sie
\renewcommand{\thesection}{\arabic{section} ABCXYZ}
...
\tableofcontents
\section{The title of the section}
ergibt sich eine Überschneidung zwischen der Zahl „1“ und „Der Titel des Abschnitts“ sowie ABCXYZ.
Der Abstand zwischen Nummer und Titel wird durch das Inhaltsverzeichnis festgelegt. Er ist nicht variabel. Sie können dort nichts eingeben. Es ist natürlich dasselbe Problem wie wenn die Abschnittsnummer im Vergleich zum festgelegten Abstand zu lang ist:\setcounter{section}{1000}
Die folgende Lösung
\makeatletter\renewcommand*\l@section{\@dottedtocline{1}{...}{...}}\makeatother
funktioniert mehr oder weniger.
Es scheint jedoch, als würden einige der normalen Toc-Parameter zurückgesetzt.
Zumindest wird dadurch sichtbar die Fettschrift der Abschnittsnummern und -überschriften zurückgesetzt, während die Unterabschnittskacheln und Unterunterabschnittsüberschriften nicht fett sind. Die Seitenzahlen der Abschnitte sind ebenfalls nicht mehr fett. Sie werden zu den Seitenzahlen der Unterabschnitte im Inhaltsverzeichnis.
Das ist schlecht.
Einpacken
\textbf{arabic{section}}
innen\renewcommand{\thesection}
funktioniert. Aber ... es kann den Abschnittstitel nicht erreichen.
\section{\textbf{TITLE IS HERE}}
ist aus verschiedenen Gründen nicht optimal.
F: Wie erhalten wir nach der Erneuerung von *l@section den Rest der normalen Fettschrift und Formatierung im Standardinhaltsverzeichnis zurück?
Bitte ohne Pakete.
Eine Unterfrage ist diese: Ich definiere eine Länge und lege deren Breite auf die Länge von ```\arabic{section} ABCXYZ'' fest. Nachdem ich nun die Abschnitts-Toc-Distanz ziemlich groß festgelegt habe, möchte ich diese variable Distanz abziehen.
Das Ergebnis wäre, dass trotz der geringen Größe der Abschnittsnummer kein großer Abstand zwischen ihr und dem Titel besteht. Das scheint \renewcommand{\thesection}{...}
der falsche Ort dafür zu sein. Es würde den Abstand des Abschnittstitels nicht beeinflussen.
F: Was muss sonst noch erneuert werden und wo ist die richtige Stelle, um ein hspace{\correction}-Objekt einzufügen, um den Abschnittstitel so zu ändern, wie er im Inhaltsverzeichnis erscheint.
Wahrscheinlich handelt es sich hier um genau die Stelle, an der auch die Standardformatierung wiederhergestellt werden kann.
Antwort1
Die Definition von \l@section
stammt aus der Dokumentklasse, also kein Paket, aber auch nicht unbedingt Teil von LaTeX. Ich schlage vor, Sie setzen
\makeatletter \show\l@section \makeatother
in Ihrem Dokument, um die bereits vorhandene Definition anzuzeigen.
Ich vermute, Sie verwenden die Dokumentklasse „article“, \l@section
die Fettdruck verwendet und \@dottedtocline
überhaupt nicht verwendet! In der Definition in article.cls gibt es eine mysteriöse Einstellung von
\setlength\@tempdima{1.5em}%
und das ist die Breite der Abschnittsnummer (verwendet von \numberline
).
Ich werde nicht die gesamte Definition veröffentlichen, da ich nicht die neueste Version habe. Aber vielleicht möchten Sie die Verwendung eines Pakets zum Formatieren des Inhaltsverzeichnisses noch einmal überdenken.
Eine Alternative besteht darin, es \numberline
so neu zu definieren, dass es einfach nicht zu einer Überschneidung zwischen Nummer und Titel kommt!
\makeatletter
\renewcommand\numberline[1]{%
\begingroup
\sbox\@tempboxa{#1 }%
\ifdim\wd\@tempboxa<\@tempdima
\wd\@tempboxa=\@tempdima
\fi
\usebox\@tempboxa
\endgroup
}
Antwort2
Ich weiß, Sie sagten, Sie möchten keine Pakete verwenden, aber unten habe ich das tocloft
Paket verwendet, um anzuzeigen, was getan werden könnte. Die einzige Änderung am Inhaltsverzeichnis ist der Platz für Abschnittsnummern. Wenn Sie andere Änderungen wünschen, bietet das Paket viele Möglichkeiten ( 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}
Ich hoffe, dass Sie die Neudefinition Ihres Beispiels nicht in Ihrem echten Dokument verwenden, \thesection
da dann die Nummerierung des ersten \subsection
Abschnitts \section
als „1 ABCXYZ.1“ erfolgt, was für mich wirklich seltsam aussieht. Vielleicht möchten Sie die Nummerierung der Unterabschnitte neu definieren.