Punkt im Inhaltsverzeichnis, aber nicht in der Referenz

Punkt im Inhaltsverzeichnis, aber nicht in der Referenz

Ich möchte, dass auf römische Abschnittsnummern im Inhaltsverzeichnis und in Abschnittstiteln ein Punkt folgt. Hier ist das MWE.

\documentclass{book}
\renewcommand{\thesection}{\Roman{section}.}
\begin{document}
 \tableofcontents
 \section{First section\label{l}}
 This is Section \ref{l}.
\end{document}

Das führt zu

Verlängerung im Schiedsrichter

Ein zusätzlicher Punkt in der Referenz erscheint. Wenn ich jedoch den nachfolgenden Punkt entferne aus

\renewcommand{\thesection}{\Roman{section}.},

die Punkte im Inhaltsverzeichnis und in der Abschnittsbeschriftung verschwinden dabei.

Kein Punkt im Inhaltsverzeichnis und in der Abschnittsbezeichnung

Wie kann ich das lösen? Danke.

Antwort1

Das Schreiben des Punktes .in die Datei für das Label muss verhindert werden, der Trick besteht also darin , beim Schreiben .auxanzugreifen .\@currentlabel\p@section

Dadurch wird der Punkt \thesectiondurch Änderung verschlungen \p@sectionund \Roman{section}die Referenzen werden erneut geschrieben, das I.Format für das Inhaltsverzeichnis und die Überschriften wird jedoch beibehalten.

Es sind keine anderen Klassen oder Pakete beteiligt, der Nachteil besteht darin, dass die Definition \thesectiongespeichert werden muss.

SehenSchreiben von Theorembedingungen mit automatischer Nummerierung und Beschriftungfür eine andere Anwendung dieses „Tricks“.

\documentclass{book}

\renewcommand{\thesection}{\Roman{section}.}


\makeatletter
\def\remove@@dot\csname the#1\endcsname{\Roman{#1}}
\def\p@section{\remove@@dot}
\makeatother

\begin{document}
 \tableofcontents
 \section{First section\label{l}}
 This is Section \ref{l}.
\end{document}

Bildbeschreibung hier eingeben

Antwort2

Am einfachsten geht das, indem man die Klasse ändert. scrbook aus dem KOMA-Bundle verfügt über eine „Autodot“-Funktion, die den Punkt nur an den entsprechenden Stellen einfügt:

\documentclass{scrbook}
\renewcommand{\thesection}{\Roman{section}}

\begin{document}
 \tableofcontents
 \section{First section\label{l}}
 This is Section \ref{l}.
\end{document}

Bildbeschreibung hier eingeben

Antwort3

Hier ist eine Lösung, die mit der bookDokumentklasse funktioniert. Sie (a) verwendet das tocloftPaket und (b) setzt das Low-Level-LaTeX-Makro \@seccntformatfür Einträge auf Abschnittsebene zurück.

\documentclass{book}

\renewcommand{\thesection}{\Roman{section}}
\makeatletter
\def\@seccntformat#1{\@ifundefined{#1@cntformat}%
   {\csname the#1\endcsname\quad}%     default
   {\csname #1@cntformat\endcsname}}%  enable individual control
\newcommand\section@cntformat{\thesection.\quad} % for section-level entries
\makeatother
\usepackage[titles]{tocloft}
\renewcommand{\cftsecaftersnum}{.} % place "." after section-level "number"

\begin{document}
\tableofcontents
\section{First section\label{l}}
This is Section \ref{l}.
\end{document}

Antwort4

Sie können titlesecund verwenden titletoc. Allerdings wird dann den Nummern auf allen Abschnittsebenen ein Punkt hinzugefügt.

\documentclass{book}
\renewcommand{\thesection}{\Roman{section}}
\usepackage{titlesec}
\titlelabel{\thetitle.\enskip}
\usepackage[dotinlabels]{titletoc}
\begin{document}
\tableofcontents
\section{First section\label{l}}
Section \ref{l} contains new definitions.
\end{document}

Bildbeschreibung hier eingeben


Hier ist ein zusätzlicher KOMA-Script-Vorschlag, der den Punkt nur auf Abschnittsebene hinzufügt:

\documentclass[
  numbers=noenddot
  ]
  {scrbook}
\addtokomafont{disposition}{\rmfamily}
\renewcommand{\thesection}{\Roman{section}}

\usepackage{xpatch}
\xpatchcmd{\sectionformat}{\autodot}{.}{}{\PatchFailed}
\newcommand\sectionentrynumberformat[1]{\renewcommand\autodot{.}#1}
\RedeclareSectionCommand[
  tocentrynumberformat=\sectionentrynumberformat
]{section}

\usepackage{blindtext}
\begin{document}
 \tableofcontents
 \section{First section\label{l}}
 Section \ref{l} contains new definitions.
%
\blinddocument
\end{document}

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

verwandte Informationen