Letzten Punkt in der Titelnummerierung entfernen

Letzten Punkt in der Titelnummerierung entfernen

Mein aktuelles Dokument ist folgendermaßen verarbeitet:

1. Some chapter
1.1. Some section
1.1.1. Some subsection

Appendix A.
Some appendix

Was ich haben möchte:

1 Some chapter
1.1 Some section
1.1.1 Some subsection

Appendix A: Some appendix

Ich möchte also, dass im Hauptteil die letzten Punkte der Nummerierung entfernt werden. Im Anhang möchte ich anstelle des Punktes einen Doppelpunkt und den Titel in der gleichen Zeile.

Ein kleines Beispiel, inklusive aller verwendeten Pakete:

\documentclass[appendixprefix=true,11pt,a4paper]{scrreprt}
%The packages used in my document
\usepackage{listings}
\usepackage{mathtools}
\usepackage{graphicx}
\usepackage{enumitem}
\usepackage{chngcntr}
\usepackage[usenames,dvipsnames]{color}
%Appendix definition (Write "Appendix A")
\makeatletter
\newcommand\appendix@numberline[1]{\appendixname\ #1: }
\g@addto@macro\appendix{%
  \addtocontents{toc}{
    \let\protect\numberline\protect\appendix@numberline}%
}
\makeatother

\begin{document}
\chapter{First chapter}
\section{First section}
\subsection{First subsection}
\appendix
\chapter{Last chapter}
\end{document}

Wie bekomme ich Doppelpunkt und Titel in eine Zeile? Und wie entferne ich die letzten Punkte der Titel?


Die Antwort von Symbol1 funktioniert nicht. Fehlermeldung:

Undefined control sequence. \@makechapterhead ...mdepth >\m@ne \if@mainmatter
\huge \bfseries \@chapapp ... l.108 \chapter{Definition of the Problem}

Antwort1

So erhalten Sie die gewünschte Ausgabe imKOMA-SkriptKlassen:

Bildbeschreibung hier eingeben

\documentclass[appendixprefix=true]{scrreprt}

\usepackage{etoolbox}
\makeatletter
\g@addto@macro{\appendix}{%
  \patchcmd{\@@makechapterhead}% <cmd>
    {\endgraf\nobreak\vskip.5\baselineskip}% <search>
    {\hspace*{-.5em}:\space}% <replace>
    {}{}% <success><failure>
  \patchcmd{\@chapter}% <cmd>
    {\addchaptertocentry{\thechapter}}% <search>
    {\addchaptertocentry{Appendix~\thechapter:}}% <replace>
    {}{}% <success><failure>
  \addtocontents{toc}{%
    \protect\patchcmd{\protect\l@chapter}% <cmd>
      {1.5em}% <search>
      {6.5em}% <replace>
      {}{}}% <success><failure>
}
\renewcommand{\autodot}{}% Remove all end-of-counter dots
\makeatother

\begin{document}

\tableofcontents

\chapter{First chapter}
\section{First section}
\subsection{First subsection}

\appendix
\chapter{Last chapter}

\end{document}

Die Punkte werden durch eine Neudefinition von entfernt , während die Formatierung des Anhangs über ein von \autodoterfolgt, wenn Sie aufrufen . Der letzte Patch passt die Breite des Felds von auf an . Diese Anpassung ist spezifisch für den kapitelbezogenen Eintrag im Inhaltsverzeichnis, da er sich mit befasst .\patchcmd\@@makechapterhead\appendix\numberline1.5em6.5em\l@chapter

etoolboxstellt die Patching-Funktion bereit.

Antwort2

Seit KOMA-Script Version 3.20 können Sie verwenden \DeclareTOCStyleEntry. Hier ist also ein neuer Vorschlag:

\documentclass[
  %appendixprefix=true,%<- removed
  11pt,a4paper,
  numbers=noenddot% <- added
]{scrreprt}[2016/05/10]% needs at least version 3.20

\DeclareTOCStyleEntry[
  level=\chaptertocdepth,
  indent=0pt,
  numwidth=2.3em,
  dynnumwidth,
  linefill=\hfill,
  entryformat=\appendixtocformat,
  entrynumberformat=\appendixtocnumberformat,
  pagenumberformat=\appendixtocpagenumberformat
]{tocline}{appendixchapter}
\newcommand*\appendixtocformat[1]{{\usekomafont{chapterentry}#1}}
\newcommand*\appendixtocnumberformat[1]{{\def\autodot{:}\appendixname\ #1}}
\newcommand*\appendixtocpagenumberformat[1]
  {{\usekomafont{chapterentry}\usekomafont{chapterentrypagenumber}#1}}

\usepackage{xpatch}
\xapptocmd\appendix
  {%
    \renewcommand*{\chapterformat}{%
      \mbox{\appendixname{\nobreakspace}\thechapter:%
        \IfUsePrefixLine{}{\enskip}}%
    }%
    \renewcommand*{\chaptermarkformat}{\appendixname\ \thechapter:\enskip}%
    \xpatchcmd{\addchaptertocentry}
      {\addtocentrydefault{chapter}{#1}{#2}}
      {\addtocentrydefault{appendixchapter}{#1}{#2}}%
      {}{\PatchFailed}%
  }{}{\PatchFailed}

\begin{document}
\tableofcontents
\chapter{First chapter}
\section{First section}
\subsection{First subsection}
\appendix
\chapter{Last chapter}
\end{document}

Führen Sie den Lauf dreimal aus, um Folgendes zu erhalten:

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Antwort3

Hier sind Sie ja

\documentclass{book}
\begin{document}
\makeatletter
\def\@makechapterhead#1{\vspace*{50\p@}{\parindent\z@\raggedright\normalfont\ifnum\c@secnumdepth>\m@ne\if@mainmatter\huge\bfseries\@chapapp\space\thechapter: \fi\fi\interlinepenalty\@M\Huge\bfseries#1\par\nobreak\vskip40\p@}}
\makeatother
\chapter{CHAPI}
\section{SECI}
\subsection{SUBSECTI}
\appendix
\chapter{CHAPII}
\section{SECII}
\subsection{SUBSECTII}
\end{document}

Antwort4

Das Folgende ist fast dasselbe wie @werners Antwort, mit einem kleinen Unterschied. Mit der Option appendixprefixerhalten Sie das PräfixAnhangdirekt vor der Nummer. Dies widerspricht der Tatsache, dass der Titel in derselben Zeile steht (so ist es implementiert). Die Grundidee ist dieselbe, das Patchen, \@@makechapterheadwenn es passiert, ist die Magie. Zuerst habe ich einfach nichts gespeichert, das als Autodot gedruckt werden sollte. Wenn der Anhang beginnt, werden einige Neudefinitionen vorgenommen, z. B.
- Wiederherstellen des Autodot, um einen Doppelpunkt ( :) zu drucken
- Patchen des Zeilenumbruchs auf einfach nichts (kein Herumfummeln mit Leerzeichen erforderlich, das Standard-KOMA hat die Kontrolle)
- Wenn Sie nur die Kapiteleinträge um den erforderlichen Betrag einrücken möchten, werden sie dynamisch durch den Inhalt von eingerückt \appendixTocString. Wenn Sie zu einem späteren Zeitpunkt entscheiden, das Wort nicht zu druckenAnhang, entfernen Sie es aus der Zeichenfolge und es wird richtig eingerückt.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

\documentclass[
appendixprefix=true,
]{scrreprt}
%The packages used in my document
%\usepackage{scrhack}%patches listings
%\usepackage{listings}
%\usepackage{mathtools}
%\usepackage{graphicx}
%\usepackage{enumitem}
%\usepackage{chngcntr}
%\usepackage[usenames,dvipsnames]{color}
\usepackage{etoolbox}
\renewcommand{\autodot}{}%
\newcommand{\appendixTocString}{\appendixname\space\thechapter\autodot}%
\newlength{\appendixTocStringLength}%
\settowidth{\appendixTocStringLength}{\appendixTocString}%
\addtolength{\appendixTocStringLength}{1.5em}%
\makeatletter%
\gappto{\appendix}{%Doing everything in the appendix%
\patchcmd{\@@makechapterhead}{\endgraf\nobreak\vskip.5\baselineskip}{}{}{}%
\renewcommand{\autodot}{:}%
\addtocontents{toc}{%
    \protect\patchcmd{\protect\l@chapter}%
    {1.5em}%
    {\protect\appendixTocStringLength}%
    {}{}}%
\patchcmd{\@chapter}{\addchaptertocentry{\thechapter}{\scr@ds@tocentry}%
}{%
\addchaptertocentry{\appendixTocString}{\scr@ds@tocentry}}{}{}%
}%
\makeatother%
\begin{document}
\tableofcontents
\chapter{First chapter}
\section{First section}
\subsection{First subsection}
\chapter{Second chapter}
\section{Second section}
\subsection{Second subsection}
\appendix
\chapter{In case the chapter title is really long, we need to
make sure that it gets indented properly.}
\section{appendix section}
\subsection{appendix subsection}
\chapter{appendix chapter}
\section{appendix section}
\subsection{appendix subsection}
\chapter{appendix chapter}
\section{appendix section}
\subsection{appendix subsection}
\chapter{appendix chapter}
\section{appendix section}
\subsection{appendix subsection}

\end{document}

verwandte Informationen