
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:
\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 \autodot
erfolgt, 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
\numberline
1.5em
6.5em
\l@chapter
etoolbox
stellt 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:
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 appendixprefix
erhalten 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, \@@makechapterhead
wenn 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.
\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}