Die KOMA-Script-Anleitung scrguide-de.pdf
zeigt eine Kopfzeile mit gefärbtem Hintergrund. Die Frage, wie man dergleichen für ein beliebiges Dokument erreichen kann, drängt sich daher fast auf.
Bei KOMA-Script sind für Kopf- und Fuß-Definitionen, die über die Möglichkeiten der KOMA-Script-Klassen hinaus gehen, die Paket scrlayer
und scrlayer-scrpage
zuständig. Dabei bietet das Paket scrlayer
mit der Möglichkeit der Ebenen-Definition und der Definition von Seitenstilen, die sich aus der Anwendung dieser Ebenen zusammensetzen, die Grundlage. Das Paket scrlayer-scrpage
stellt eine Anwendung dieser Grundlagen dar, die eine nahtlose und komfortable Integration der Ebenen-Seitenstile sowohl mit den KOMA-Script-Klassen als auch den Standardklassen und vielen anderen Klassen, die auf diesen beiden Familien basieren, bietet.
Um nun den Hintergrund des Seitenkopfes einzufärben, definiert man einfach eine neue Ebene:
\DeclareLayer[
head,
background,
contents={\color{DeepSkyBlue3}\rule[-\dp\strutbox]{\layerwidth}{\layerheight}}
]{head.background}
Dabei legt die Eigenschaft head
die Position und Größe der Ebene so fest, dass diese genau den Seitenkopf umfasst. Man könnte Position und Größe auch über die Eigenschaft area
oder einzeln über voffset
, hoffset
, height
und width
festlegen. head
ist hier eine willkommene Vereinfachung. In der Anleitung sind weitere solche Vereinfachungen für andere Bereiche der Seiten dokumentiert.
Die Eigenschaft background
besagt, dass es sich um eine Hintergrundebene handelt, also eine Ebene, die vor dem eigentlichen Seitentext ausgegeben werden soll. scrlayer-scrpage
gibt den Inhalt des Seitenkopfes selbst, also in der Regel den Kolumnentitel mit der Wiederholung von Kapitel- oder Abschnittsüberschriften, ebenfalls mit dieser Eigenschaft aus. Würde man stattdessen foreground
verwenden, würde also der farbige Balken über dem eigentlichen Kopfinhalt ausgegeben und diesen somit überschreiben. Wird keine der beiden Eigenschaften explizit angegeben, so würde in der Voreinstellung der Inhalt sowohl im Hintergrund als auch im Vordergrund ausgegeben und damit ebenfalls der eigentliche Kopfinhalt überschrieben.
Als Inhalt wird nach der Änderung der aktuellen Farbe einfach eine \rule
der Größe \layerwidth
und \layerheight
ausgegeben. Die beiden Anweisungen \layerwidth
und \layerheight
können innerhalb einer Ebenendefinition wie Längen verwendet werden und geben die Breite und Höhe der aktuellen Ebene wieder. Das ist insbesondere bei Ebenen praktisch, die nicht über die explizite Angabe von Position und Größe definiert wurden, sondern über Vereinfachungen wie head
. Da eine \rule
normalerweise auf der Grundlinie steht, wird diese noch um die Tiefe einer Standardtextzeile \dp\strutbox
nach unten verschoben, so dass sie tatsächlich genau den Kopfbereich umfasst.
Alternativ zur Verschiebung über das optionale Argument von \rule
könnte man die Ebene übrigens statt als Text-Ebene auch als Bild-Ebene deklarieren:
\DeclareLayer[
background,
mode=picture,
head,
contents={\color{DeepSkyBlue3}\rule{\layerwidth}{\layerheight}}
]{head.background}
Damit erfolgt die Ausgabe von contents
nicht auf der Grundlinie, sondern ausgehend vom unteren Rand der Ebene. Dies ist auch nützlich, wenn man mit einer picture
-Umgebung oder TikZ in die Ebene zeichnen will, beispielsweise um mit einem Farbverlauf statt einer einzelnen Farbe zu arbeiten.
Zusätzlich zur Deklaration der Ebene muss man natürlich noch dafür sorgen, dass die Ebene auch verwendet wird. Dazu fügt man die Ebene einem Seitenstil hinzu. scrlayer
bietet die Möglichkeit, Ebenen wahlweise am Anfang oder am Ende eines Ebenen-Seitenstils oder auch vor oder nach einem bestimmten anderen Seitenstil einzufügen. Wir wollen, dass die Farbe im Hintergrund und damit als erstes ausgegeben wird, also fügen wir sie mit \AddLayersAtBeginOfPageStyle
ganz am Anfang ein.
\documentclass{scrartcl}
\usepackage[x11names]{xcolor}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{blindtext}
\DeclareLayer[
background,
mode=picture,
head,
contents={\color{DeepSkyBlue3}\rule{\layerwidth}{\layerheight}}
]{head.background}
\AddLayersAtBeginOfPageStyle{scrheadings}{head.background}
\begin{document}
\title{Titel}
\author{Autor}
\maketitle
\blinddocument
\end{document}
Da bei Verwendung von scrartcl
die Voreinstellung von scrlayer-scrpage
der plain
-Seitenstil plain.scrheadings
keinen Kopfinhalt hat, würde es keinen Sinn ergeben, diesen Seitenstil mit dem Kopfhintergrund zu versehen. Daher wird die Ebene im Beispiel nur dem headings
-Stil scrheadings
hinzugefügt.
Wollte man die Ebene allen Ebenen-Seitenstilen (auch empty
!) hinzufügen, so könnte man einfach
\AddLayersAtBeginOfPageStyle{@everystyle@}{head.background}
verwenden.