Kapitelüberschrift mit Hintergrund mit KOMA-Skript

Klassen und Pakete zur einfachen Umsetzung individueller Vorstellungen


Seneca
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Di 5. Feb 2019, 10:07

Kapitelüberschrift mit Hintergrund mit KOMA-Skript

Beitrag von Seneca »

Liebe Forums-Mitglieder,

mein Ziel ist es, mit den Mitteln von KOMA-Skript hinter Kapitelüberschriften eine Hintergrundfarbe anzeigen zu lassen, die den gesamten oberen Teil der Seite einnimmt.
In diesem Bereich soll die Kapitelüberschrift erscheinen, und zwar so, dass die erste Zeile der Kapitelüberschrift immer auf derselben Höhe erscheint. Das heißt insbesondere, dass bei mehrzeiligen Kapitelüberschriften die nachfolgende Abschnittsüberschrift ihre Höhe im Vergleich zu einzeiligen Kapitelüberschriften nicht verändern soll.

Der folgende Code (das vollständige Minimalbeispiel, das das Problem veranschaulicht, habe ich als LaTeX-Datei angehängt) führt noch dazu, dass die Abschnittsüberschrift bei mehrzeiligen Kapitelüberschriften nach unten verschoben wird.
%
\documentclass{scrbook}

\usepackage{scrlayer-scrpage}
\usepackage{tikz}

% Definiere den Hintergrund für Kapitelseiten
\DeclareNewLayer[background, 
	contents={
	    \tikz{%
	      \fill[color=yellow]
	      	(0,\textheight+2cm) rectangle(\paperwidth,\paperheight);
	    }%
    }%
]{chapterbackground.bg}

% Definiere den Seitenstil für Kapitelseiten
\DeclareNewPageStyleByLayers{chapterbackground}{chapterbackground.bg}

% Weise ihn den Kapitelseiten zu
\renewcommand\chapterpagestyle{chapterbackground}

% Passe die Abstände vor und nach Kapitelüberschriften an
\renewcommand*\chapterformat{\normalfont\fontsize{100pt}{20pt}\selectfont\thechapter\hspace{.07em}}
\renewcommand*{\chapterheadstartvskip}{\vspace*{-3\baselineskip}}
\renewcommand*{\chapterheadendvskip}{\vspace*{7\baselineskip}}
\renewcommand*{\chapterheadmidvskip}{\hspace{1em}}
Mein Versuch, das Problem zu lösen, ist durch den folgenden Code gegeben:
%
\makeatletter
\renewcommand{\chapterlinesformat}[3]{%
	\smash{\parbox{\dimexpr\linewidth-2\fboxrule-2\fboxsep}{%
		\raggedchapter
		\@hangfrom{#2}#3%
	}}%
}
\makeatother
Leider wird dann die Kapitelüberschrift im Falle mehrerer Zeilen nach oben verschoben. Die Abschnittsüberschrift bleibt dann aber auf der beabsichtigten Höhe. (Man muss dazu lediglich \chapterheadendvskip im Vergleich zum ersten Code oben auf 9\baselineskip erhöhen).

Es könnte eine Lösung sein, eine minipage um die Kapitel zu packen und dann die Position der Kapitelüberschrift innerhalb der minipage geeignet festzulegen. Leider konnte ich nicht herausfinden, wie das gehen könnte, weil mir nicht klar ist, wie ich den Kapitelbefehl \chapter so direkt beeinflussen kann, dass es mir möglich wäre, eine minipage oder eine box um den gesamten Befehl zu legen.

Vielleicht gibt es aber auch eine einfachere Lösung. Leider konnte ich trotz längeren Herumprobierens und Durchstöberns der KOMA-Skript-Anleitung keine Lösung für mein Problem finden. Daher wende ich mich jetzt an das Forum.

Zusätzliche wäre es wünschenswert, die Kapitelüberschriften unabhängig von der gewählten Seitengröße so definieren zu können, dass das das Layout sich an die geänderte Seitengröße automatisch anpasst (und man nicht \chapterheadstartvskip und \chapterheadendvskip für die einzelnen Seitengrößen einzeln zu definieren braucht).

Vielen Dank im Voraus und viele Grüße!
Dateianhänge
chaptertest.tex
(2.15 KiB) 287-mal heruntergeladen

esdd
Forum-Meister
Forum-Meister
Beiträge: 2561
Registriert: So 7. Feb 2010, 16:36

Beitrag von esdd »

Mir ist jetzt nicht ganz klar, wie das gewünschte Ergebnis aussehen soll. Hier ist trotzdem ein Vorschlag:
\documentclass{scrbook}
\usepackage{lmodern}% skalierbare Schrift verwenden (wegen der Kapitelnummer)
\usepackage{scrlayer-scrpage}
\usepackage{xcolor}% für einen farbigen Balken reicht das
%\usepackage{showframe}% zur Anzeige des Seitenlayouts

\usepackage[ngerman]{babel}

\DeclareNewLayer[
  background,
  topmargin,
  addheight=\headheight+\headsep+\topskip+8\baselineskip,
  contents={\textcolor{yellow}{\rule{\layerwidth}{\layerheight}}}
]{chapterbackground.bg}
\DeclareNewPageStyleByLayers{chapterbackground}{chapterbackground.bg}
\renewcommand\chapterpagestyle{chapterbackground}

\renewcommand*\chapterformat{\smash{% Verstecken der Höhe der Kapitelnummer
  {\normalfont\fontsize{100pt}{20pt}\selectfont\thechapter}~%
}}
\RedeclareSectionCommand[
  afterindent=false,% erst ab KOMA-Script Version 3.26 definiert
  beforeskip=\topskip,% für ältere KOMA-Script Versionen ohne afterindent=false: beforeskip=-\topskip
  innerskip=1em,% eigentlich unnötig, da keine Präfixzeile genutzt wird
  afterskip=7\baselineskip
]{chapter}

\makeatletter
\renewcommand{\chapterlinesformat}[3]{%
  \parbox[b][\ht\strutbox][tt]{\dimexpr\linewidth-2\fboxrule-2\fboxsep}
    {\raggedchapter\@hangfrom{#2}#3}%
}
\makeatother

\begin{document}
\tableofcontents
\chapter{Ein kurzer Kapiteltitel}
\section{Erster Abschnitt im Kapitel}
Die Höhe, auf der die Überschrift dieses Abschnitts erscheint, soll sich bei längeren Kapitelüberschriften nicht ändern.
Außerdem soll die Kapitelnummer und die erste Zeile der Kapitelüberschrift auch bei mehrzeiligen Kapitelüberschriften auf derselben Höhe erscheinen wie die bei einzeiligen Kapitelüberschriften.
\chapter{Ein langer Kapiteltitel, der zeigt, was passiert, wenn die Kapitelüberschrift drei Zeilen umspannt}
\section{Erster Abschnitt im Kapitel}
Dieser Abschnitt sollte auf derselben Höhe erscheinen wie der erste Abschnitt im Kapitel davor.
Dabei soll aber die Position der Kapitelüberschrift nicht geändert werden.
\chapter{Kapitel ohne Abschnitt}
Erster Absatz nach der Kapitelüberschrift ohne Absatzeinzug.
\end{document}
Beachte beim Testen, dass die Eigenschaft afterindent=false für \RedeclareSectionCommand erst ab KOMA-Script Version 3.26 zur Verfügung steht. Falls Du noch eine ältere Version hast, musst Du diese entfernen und den Abstand vor der Kapitelüberschrift mit einem Minus versehen: beforeskip=-\topskip. Das ist jeweils auch in der zu Deiner Version gehörigen Doku erklärt.

Seneca
Forum-Newbie
Forum-Newbie
Beiträge: 2
Registriert: Di 5. Feb 2019, 10:07

Beitrag von Seneca »

Hallo esdd,

vielen Dank! Das ist genau das, was ich wollte! Der Text der Überschrift sollte in dem farblich abgesetzten Bereich etwa in der Mitte stehen und bei längeren Überschriften von da aus nach unten erweitert werten. Und die Position des eigentlichen Kapiteltitels sollte auch bei Kapiteln ohne Kapitelnummer (wie etwa beim Inhaltsverzeichnis) auf derselben Höhe erscheinen (sodass die Nummer keinen Einfluss hat). Das hatte ich bislang noch gar nicht dazu gesagt.

All das leistet Dein Vorschlag. Du hast die Intention also richtig verstanden und perfekt umgesetzt. Genial!

Ich verwende die aktuelle Version von KOMA-Skript, daher funktioniert alles sofort mit den Einstellungen, wie Du sie vorgenommen hast.

Vielen Dank nochmal für die schnelle und kompetente Hilfe!

Antworten