Sie sind hier

Wie man die Seitenzahl im Kopf mit einem vertikalen Strich abtrennt

Bild von Markus Kohm

In English: How to separate the page number in the head with a vertical line

Die KOMA-Script-Klassen setzen die Seitenzahl normalerweise im Fuß. In einem eigenen Beitrag wurde bereits erklärt, wie man die Seitenzahl im Kopf statt im Fuß ausgibt. Willl man nun zusätzlich einen vertikalen Strich zwischen der restlichen Kopfzeile und der Seitenzahl, so ist man wiederum auf ein Seitenstil-Paket wie scrlayer-scrpage angewiesen.

Einen vertikalen Strich der Dicke 1 pt, der die Höhe und Tiefe einer Zeile hat, kann beispielsweise

\rule[-\dp\strutbox]{1pt}{\normalbaselineskip}

verwendet werden. Dabei hat die Linie die gewünschte Breite (= Dicke) von 1 pt. Die Gesamthöhe beträgt \normalbaselineskip, entspricht also dem normalen Grundlinienabstand. Normalerweise würde die gesamte Linie über der Grundlinie ausgegeben werden. Sie soll aber um die normale Tiefe einer Zeile unter diese ragen. Daher erfolgt mit dem optionalen Argument eine entsprechende vertikale Verschiebung nach unten.

Bei einem einseitigen Dokument kann diese Angabe vor der Ausgabe der Seitenzahl, \pagemark, in den Kopf eingefügt werden. In der Regel wird man noch einen gewissen Abstand zwischen der Linie und der Seitenzahl haben wollen, beispielsweise \, (verminderter Zwischenraum), \nobreakspace (nicht umbrechbares Leerzeichen) oder \enskip (Halbgeviertabstand, also 0,5 em).

Eine mögliche Lösung für ein einseitiges Dokument wäre damit:

\documentclass{scrreprt}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{blindtext}
\clearpairofpagestyles
\ihead{\headmark}
\ohead{\rule[-\dp\strutbox]{1pt}{\normalbaselineskip}\nobreakspace\pagemark}
\begin{document}
\blinddocument
\end{document}

Hier wurde ein etwas anderer Weg, als im oben verlinkten Beitrag gewählt, um die Seitenzahl in den Kopf zu verschieben. Zunächst wurden mit \clearpairofpagestyles alle Felder in den Seitenstilen scrheadings und plain.scrheadings gelöscht. Dann wurde mit \ihead das innere Kopfelement von scrheadings mit dem Kolumnentitel, \headmark, belegt. Bei einem einseitigen Dokument entspricht \ihead der Anweisung \lohead, setzt also das linke ungerade Element. Zum Schluss wurden mit \ohead Trennstrich, Abstand und Seitenzahl in das äußere Element von scrheadings gebracht. Die Verwendung von \ohead ist bei einseitigen Dokumenten gleichbedeutend mit \rohead, setzt also das rechte ungerade Elemente. Warum auf die Seitenzahl bei plain.scrheadings verzichtet wurde, ist im oben verlinkten Beitrag erklärt. Will man sie auf der Kapitelanfangsseite dennoch haben, verwendet man einfach die Sternform \ohead*.

Bei einem doppelseitigen Dokument ist die Sache schon etwas schwieriger. Hier muss der Strich auf rechten (in der LaTeX-Terminologie ungeraden) Seiten wie bei einseitigen Dokumenten vor der Seitenzahl stehen. Bei linken (in der LaTeX-Terminologie geraden) Seiten gehört der Strich jedoch hinter die Seitenzahl. scrlayer-scrpage bietet für diesen Zweck mit \rohead und \lehead die notwendige Unterscheidungsmöglichkeit:

\documentclass{scrbook}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{blindtext}
\clearpairofpagestyles
\ihead{\headmark}
\rohead{\rule[-\dp\strutbox]{1pt}{\normalbaselineskip}\nobreakspace\pagemark}
\lehead{\pagemark\nobreakspace\rule[-\dp\strutbox]{1pt}{\normalbaselineskip}}
\begin{document}
\blinddocument
\end{document}

Bei genauer Betrachtung des Beispiels kommt vielleicht der Wunsch auf, die Seitenzahl nicht mehr innerhalb der normalen Kopfzeile, sondern quasi über der Randnotizspalte zu platzieren. Die vertikale Linie und der Abstand sollte dabei innerhalb des Abstandes zwischen Textbereich und Randnotizspalte platziert werden. Dazu gibt es zwei grundsätzliche Vorgehensweisen. Zum einen kann man über Option headwidth=textwithmarginpar die Kopfzeile über die Randnotizspalte hinaus verlängern und dann mit einer Box der Breite \marginparwidth die Seitenzahl selbst innen bündig zur Randnotizspalte setzen:

\documentclass{scrbook}
\usepackage[automark,headwidth=textwithmarginpar]{scrlayer-scrpage}
\usepackage{blindtext}
\usepackage{showframe}
\clearpairofpagestyles
\ihead{\headmark}
\rohead{%
  \rule[-\dp\strutbox]{1pt}{\normalbaselineskip}\nobreakspace
  \makebox[\marginparwidth][l]{\pagemark}%
}
\lehead{%
  \makebox[\marginparwidth][r]{\pagemark}%
  \nobreakspace\rule[-\dp\strutbox]{1pt}{\normalbaselineskip}%
}
\begin{document}
\blinddocument
\end{document}

Zum anderen könnte man bei gleichbleibender Kopfbreite das komplette Konstrukt über eine Box der Breite 0 in den jeweiligen Rand schieben:

\documentclass{scrbook}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{blindtext}
\usepackage{showframe}
\clearpairofpagestyles
\ihead{\headmark}
\rohead{%
  \makebox[0pt][l]{%
    \makebox[\marginparsep][r]{%
      \rule[-\dp\strutbox]{1pt}{\normalbaselineskip}\nobreakspace
    }%
    \makebox[\marginparwidth][l]{\pagemark}%
  }%
}
\lehead{%
  \makebox[0pt][r]{%
    \makebox[\marginparwidth][r]{\pagemark}%
    \makebox[\marginparsep][l]{%
      \nobreakspace\rule[-\dp\strutbox]{1pt}{\normalbaselineskip}%
    }%
  }%
}
\begin{document}
\blinddocument
\end{document}

Bei beiden Beispielen wurde das Paket showframe eingefügt, um die unterschiedlichen Seitenbereiche mit Rahmen zu verdeutlichen.

Während die beiden Beispiele auf den ersten Blick keinen nennenswerte Unterschied erkennen lassen, wird ein solcher deutlich, wenn man mit headsepline eine Trennlinie unter dem Kopf anzeigen lässt. Im ersten Fall erstreckt sich diese nun über den Textbereich und die komplette Randnotizspalte. Im zweiten Fall bleibt sie hingegen auf die Breite des Textbereichs beschränkt und erstreckt sich damit auch nicht unter dem vertikalen Strich und der Seitenzahl.

In einigen Fällen wird gewünscht, dass der vertikale Strich bis an die obere Kante der Seite verlängert wird. Die genaue Länge wäre dann 1in+\topmargin+\headheight. Gibt man diese bei \rule an, so vergrößert scrlayer-scrpage aber automatisch die Kopfhöhe, weil durch die lange Linie eben auch eine größere Kopfhöhe resultiert. Man kann diesen Automatismus in scrlayer-scrpage per Option abschalten. Man kann aber auch mit einer zusätzlichen \raisebox-Anweisung einen weniger hohen Kopf vorgaukeln:

\documentclass{scrbook}
\usepackage[automark]{scrlayer-scrpage}
\usepackage{blindtext}
\usepackage{showframe}
\clearpairofpagestyles
\ihead{\headmark}
\rohead{%
  \makebox[0pt][l]{%
    \makebox[\marginparsep][r]{%
      \raisebox{0pt}[\ht\strutbox][\dp\strutbox]{%
        \rule[-\dp\strutbox]{1pt}{\dimexpr 1in+\topmargin+\headheight}%
      }%
      \nobreakspace
    }%
    \makebox[\marginparwidth][l]{\pagemark}%
  }%
}
\lehead{%
  \makebox[0pt][r]{%
    \makebox[\marginparwidth][r]{\pagemark}%
    \makebox[\marginparsep][l]{%
      \nobreakspace
      \raisebox{0pt}[\ht\strutbox][\dp\strutbox]{%
        \rule[-\dp\strutbox]{1pt}{\dimexpr 1in+\topmargin+\headheight}%
      }%
    }%
  }%
}
\begin{document}
\blinddocument
\end{document}

Um Berechnungen als Argument von \rule zu ermöglichen, wurde hier die TeX-Erweiterung \dimexpr verwendet. Über das erste Argument von \raisebox wurde mit 0 pt keine vertikale Verschiebung gefordert. Dafür wurde über die optionalen Argumente die Höhe und Tiefe mit \ht\strutbox und \dp\strutbox als die Höhe und Tiefe einer Standardzeile festgelegt. Man hätte hier tatsächlich ebenfalls jeweils 0 pt angeben können.

Zum letzten Beispiel wäre noch anzumerken, dass Material, das bis an den Rand heran reicht, immer etwas über den Rand hinaus ragen sollte. Insbesondere bei Buchprojekten ist nur dann sichergestellt, dass beim Druck durch minimale Verschiebungen kein weißer Rand entsteht. Es wird daher empfohlen die Linie um drei bis sechs Millimeter oder einfach ein bis drei Zehntel Inch zu verlängern.

Comments for "Wie man die Seitenzahl im Kopf mit einem vertikalen Strich abtrennt" abonnieren