Menu

HowTo_SectionPrefix

Wie man alle Überschriften horizontal zentrieren und mit einer Präfixzeile versehen kann

Bei scrreprt und scrbook gibt es die Möglichkeit, die Kapitelüberschriften so zu setzen, dass „Kapitel“ gefolgt von der Nummer in einer eigenen Zeile steht und der Titel dann darunter gesetzt wird. Dereinst erreichte mich die Frage, ob das auch den Ebenen \section bis \subsubsection möglich ist. Gleichzeitig sollen all diese Überschriften horizontal zentriert werden.

Die Zentrierung ist sehr einfach möglich:

\RenewCommandCopy{\raggedchapter}{\centering}
\RenewCommandCopy{\raggedsection}{\centering}

Es werden also \raggedchapter und \raggedsection mit \centering gleich gesetzt. Alternativ könnte man auch \renewcommand statt \RenewCommandCopy verwenden. TeX benötigt dann jedoch einen Expansionsschritt mehr.

Um nun die Überschriften mit einer Präfixzeile zu versehen, definieren \sectionlinesformat um. Die Originaldefinition lautet:

\newcommand{\sectionlinesformat}[4]{%
  \@hangfrom{\hskip #2#3}{#4}%
}

Da wir ohnehin zentrieren, benötigen wir den Einzug \hskip #2 nicht mehr. Aus dem gleichen Grund ist auch der hängende Einzug ab der zweiten Zeile nicht mehr sinnvoll. Stattdessen wollen wir nach der Nummer, also #3 einen Zeilenumbruch. Die neue Definition lautet also:

\renewcommand*{\sectionlinesformat}[4]{%
  #3\\*
  #4%
}

Allerdings führt das zu einem Problem mit nicht nummerierten Abschnitten wie dem Inhaltsverzeichnis bei scrartcl oder \subsubsection in der Voreinstellung von scrbook und scrreprt. Dies können wir einfach mit der Anweisung \IfUseNumber abfangen, die innerhalb von \sectionlinesformat zur Unterscheidung von nummerierten und nicht nummerierten Überschriften verwendet werden kann:

\renewcommand*{\sectionlinesformat}[4]{%
  \IfUseNumber{#3\\*}{}%
  #4%
}

Soll vor der Nummer noch ein „Abschnitt“ stehen, so fügt man das vorzugsweise in die Definition von \sectionformat, \subsectionformat, \subsubsectionformat ein:

\renewcommand*{\sectionformat}{Abschnitt~\thesection\autodot}
\renewcommand*{\subsectionformat}{Abschnitt~\thesubsection\autodot}
\renewcommand*{\subsubsectionformat}{Abschnitt~\thesubsubsection\autodot}

Insgesamt erhält man so:

\documentclass[chapterprefix]{scrreprt}
\usepackage[ngerman]{babel}
\usepackage{mwe}

\RenewCommandCopy{\raggedchapter}{\centering}
\RenewCommandCopy{\raggedsection}{\centering}
\renewcommand*{\sectionlinesformat}[4]{%
  \IfUseNumber{#3\\*}{}%
  #4%
}
\renewcommand*{\sectionformat}{Abschnitt~\thesection\autodot}
\renewcommand*{\subsectionformat}{Abschnitt~\thesubsection\autodot}
\renewcommand*{\subsubsectionformat}{Abschnitt~\thesubsubsection\autodot}

\begin{document}
\tableofcontents
\blinddocument
\end{document}

Will man das ganze auf \paragraph und \subparagraph erweitern, so muss man nur zusätzlich “Wie \paragraph als freistehende Überschrift formatiert werden kann” anwenden.


Related

Wiki (Deutsch): HowTo_ParagraphNonRunin

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.