Sie sind hier

scrpage2: Verwendung von markboth bei der Option twoside

Hallo,

ich habe folgendes Verständnisproblem. Bei dem folgenden Minimalbeispiel wird ohne die Option twoside auf der Seite 2 der Kopfzeileneintrag gemäß der Anweisung \markboth geändert. Auf der Seite 3 ist es hingegen wieder richtig. So soll es sein. Verwende ich hingegen die Option twoside, so funktioniert es nicht.

\documentclass{scrreprt}
% \documentclass[twoside]{scrreprt}
\usepackage[plainheadsepline]{scrpage2}
\clearscrheadfoot
\automark[chapter]{section}
\ihead{\headmark}
\pagestyle{scrheadings}
\usepackage{lipsum}
\begin{document}
\chapter{foo}
\lipsum
\section{foobar 1}
\markboth{foobar 1}{foobar1}
\lipsum[1]
\section{foobar 2}
\lipsum
\end{document}

Vielen Dank
Marco

Bild von Markus Kohm

Bei dem folgenden Minimalbeispiel wird ohne die Option twoside auf der Seite 2 der Kopfzeileneintrag gemäß der Anweisung \markboth geändert.

Bei mir nicht. Laut Deiner \markboth-Anweisung würde da »foobar 1« stehen, es steht aber »1.1 foobar 1« dort. Das ist die automatisch per \automark[chapter]{section} konfigurierte und im onside-Fall per \section gesetzte Marke. \section ruft dazu \sectionmark auf, das letztlich zu einem \markboth {\sectionmarkformat #1}{\sectionmarkformat #1} (#1 ist dabei der Text der Überschrift) führt. Das \chapter auf der gleichen Seite führt hingegen zu \markboth{}{\chaptermarkformat  #1}. Wir haben also:

\markboth{}[1 foo}% von \chapter{foo}
% Ausgabe Seite 1
\markboth{1.1 foobar 1}{1.1 foobar 1}% von \section{foobar 1}
\markboth{foobar 1}{foobar 1}
\markboth{1.2 foobar 2}{1.2 foobar 2}% von \section{foobar 2}
% Ausgabe Seite 2, 3, 4

Da wir uns im einseitigen Modus befinden, wird immer der Kopf von rechten Seiten ausgegeben. Dabei ist \headmark immer \rightmark. Dieses wiederum verwendet die TeX-Marke \firstmark, also die erste Marke, die auf der Seite gesetzt wurde. Wurde auf der Seite keine Marke gesetzt, ist es die letzte Marke, die zuvor gesetzt wurde. Das wäre also auf Seite 1 "1 foo" (wird wegen des Seitenstils nicht ausgegeben), auf Seite 2 "1.1 foobar 1", auf Seite 3 "1.2 foobar 2" und auf Seite 4 ebenfalls "1.1 foobar 2". Das \markboth{foobar 1}{foobar 1} kommt nicht zum Zuge.

Im twoside-Fall sieht es etwas anders aus. In dem Fall für \chapter ebenfalls zu einem \markboth{}{\chaptermarkformat #1}, jedoch \section zu einem \markleft{\sectionmarkformat #1}. Wir haben dann also

\markboth{}{1 foo}% von \chapter{foo}
% Ausgabe Seite 1
\markleft{1.1 foobar 1}% von \section{foobar 1}
\markboth{foobar 1}{foobar 2}
\markleft{1.2 foobar 2}% von \section{foobar 2}
% Ausgabe Seite 2

Außerdem wir auf linken Seiten nun der Kopf für gerade Seiten ausgegeben. Dabei ist \headmark dann \leftmark. Dieses wiederum verwendet die TeX-Marke \botmark. Dies ist die letzte Marke, die auf einer Seite gesetzt wurde (bzw. die zuletzt gesetzte Marke zuvor, wenn auf der Seite keine Marke gesetzt wurde). Damit haben wir auf Seite 1 (ungerade Seite, also \rightmark) "foobar 1" (wird wegen des Seitenstils nicht ausgegeben), auf Seite 2 (gerade Seite, also \leftmark) "1.2 foobar 2", auf Seite 3 (ungerade Seite, also \rightmark) "foobar 1" und auf Seite 4 (gerade Seite, also \leftmark) "1.2 foobar 2".

Der Hauptunterschied zwischen ein- und doppelseitig ist die Verwendung von \markleft und \leftmark. \markleft lässt die rechte Marke unangetastet und \leftmark verwendet \botmark an Stelle von \firstmark. Dadurch lassen sich alle Unterschiede erklären.

Noch einmal anders wird es, wenn man wie üblich \automark[section]{chapter} verwendet. Dann wird nämlich rein mit \markboth und \markright gearbeitet. Dabei verwendet im twoside-Modus \chapter dann \markboth{\chaptermarkformat #1}{}, und \section verwendet \markright{\sectionmarkformat #1} im doppelseitigen Modus.

Ich hoffe, ich konnte ein wenig verständlich machen, was da geschieht.

Im KOMA-Script-Buch gibt es übrigens in Teil II ebenfalls einige Erklärungen zu \rightmark etc.

Hallo,

vielen Dank für die ausführliche Antwort. Habe sie auch verstanden. Ich habe oben wirklich was falsches gesehen.

Die Anweisung botmark war mir neu. Habe sie aber in Tex by Topic gefunden.

Danke
Marco

Comments for "scrpage2: Verwendung von markboth bei der Option twoside" abonnieren