Seite 1 von 2

scrlayer-scrpage: Seltsame Kopfzeilen

Verfasst: Do 22. Feb 2018, 15:37
von fs
Hallo,

bei scrlayer-scrpage erscheint im Kopf an der Stelle, an der laut Vereinbarung der Titel einer \subsection stehen soll, der Titel einer \section. Bug oder Feature? Wie behebe ich dies?

Hier ein Beispiel, siehe Kopf ab Seite 2:
\documentclass[ngerman,a4paper,10pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{geometry}
\usepackage{microtype}
\usepackage{lastpage}
\usepackage{blindtext}
% scrlayer-scrpage
\usepackage{scrlayer-scrpage}
\KOMAoptions{automark,autooneside=false,headsepline}
\pagestyle{scrheadings}
\automark[subsection]{section}
\ihead{\MakeUppercase{\leftmark}}
\chead{}
\ohead{\ifstr{\leftmark}{\rightmark}{}{\rightmark}}
\cfoot{\emph{\thepage/\pageref{LastPage}}}
% document
\begin{document}
\title{Jenkins unter Debian installieren und konfigurieren}
\author{}
\date{}
\maketitle
\thispagestyle{empty}
\tableofcontents
\section{Installation}
\blindtext[2]
\section{Jenkins starten/stoppen}
\blindtext[2]
\section{Englischsprachige Bedienoberfläche}
\blindtext[2]
\section{Zugriff auf Git Repository einrichten}
\blindtext[2]
\section{Zugriff auf Docker einrichten}
\blindtext[2]
\section{Links}
\blindtext[2]
\end{document}
Das gleiche mit fancyhdr, was für mich erwartungskonformer ist:
\documentclass[ngerman,a4paper,10pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{geometry}
\usepackage{microtype}
\usepackage{lastpage}
\usepackage{blindtext}
% fancyhdr
\usepackage{fancyhdr}
\pagestyle{fancy}
\lhead{\MakeUppercase{\textit{\leftmark}}}
\rhead{\ifstr{\leftmark}{\rightmark}{}{\textit{\rightmark}}}
\cfoot{\thepage/\pageref{LastPage}}
% document
\begin{document}
\title{Jenkins unter Debian installieren und konfigurieren}
\author{}
\date{}
\maketitle
\thispagestyle{empty}
\tableofcontents
\section{Installation}
\blindtext[2]
\section{Jenkins starten/stoppen}
\blindtext[2]
\section{Englischsprachige Bedienoberfläche}
\blindtext[2]
\section{Zugriff auf Git Repository einrichten}
\blindtext[2]
\section{Zugriff auf Docker einrichten}
\blindtext[2]
\section{Links}
\blindtext[2]
\end{document}
Grüße
Frank

Verfasst: Do 22. Feb 2018, 16:23
von Gast
scrlayer-scrpage setzt bei einseitigen Dokumenten innerhalb von \sectionmark die linke und die rechte Marke, damit man bei üblichen Seitenstilen auf Seiten ohne \subsection keinen leeren Kopf hat. Man kann das einfach ändern:
\makeatletter
\let\@mkdouble\@mkboth
\makeatletter
oder
\renewcommand*{\sectionmark}[1]{\markboth{\ifnumbered{section}{\sectionmarkformat}#1}{}}
Während es bei ersterem egal ist, wo man es in der Dokumentpräambel setzt, muss man letzteres nach dem zugehörigen \automark-Aufruf verwenden.


Wer mehr auf den Namen des Verfassers als auf den Inhalt eines Beitrags gibt, ist selbst schuld.

Verfasst: Do 22. Feb 2018, 16:51
von u_fischer
Nun während die Lösung von Gast zwar verhindert, dass das falsche erscheint, führt sie auch nicht dazu, dass das richtige passiert, sobald man \subsection einfügt:
\documentclass[ngerman,a4paper,10pt]{scrartcl}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage{geometry}
\usepackage{microtype}
\usepackage{lastpage}
\usepackage{blindtext}
% scrlayer-scrpage
\usepackage{scrlayer-scrpage}
\KOMAoptions{automark,autooneside=false,headsepline}
\pagestyle{scrheadings}
\automark[subsection]{section}

\ihead{\MakeUppercase{\leftmark}}
\chead{}
\ohead{\rightmark}
\cfoot{\emph{\thepage/\pageref{LastPage}}}
% document
\makeatletter
\let\@mkdouble\@mkboth
\makeatletter

\begin{document}
\title{Jenkins unter Debian installieren und konfigurieren}
\author{}
\date{}
\maketitle
\thispagestyle{empty}
\tableofcontents
\section{Installation}
\blindtext[2]
\section{Jenkins starten/stoppen}
\blindtext[2]
\section{Englischsprachige Bedienoberfläche}
\subsection{abc}
\blindtext[2]
\section{Zugriff auf Git Repository einrichten}
\subsection{zu Zugriff xyz}
\blindtext[2]
\subsection{zu Zugriff 2 xyz}
\section{Zugriff auf Docker einrichten}
\blindtext[2]
\section{Links}
\blindtext[2]
\end{document}
Man kann nicht einfach Kopfzeilen von chapter/section auf section/subsection übertragen, denn \section beginnt im Unterschied zu \chapter keine neue Seite.

Verfasst: Do 22. Feb 2018, 18:51
von Gast
Ja. Das Ergebnis wird auch in meinen Augen besser, wenn man \rightbotmark an Stelle von \rightmark verwendet. Aber der OP hat bei vielen Dingen eigene Vorstellungen. Wenn er also unbedingt \rightmark haben will, dann will ich ihm das nicht verbieten.

Verfasst: Do 22. Feb 2018, 20:11
von fs
Hallo,

besten Dank für die Antworten. Diese haben mich zu einer Lösung geführt, die bei mir bislang die besten Ergebnisse liefert. Die Änderung besteht darin, statt \leftmark und \rightmark die KOMA-Erweiterungen \leftfirstmark und \rightfirstmark zu nutzen. Das ist von der angezeigten Information her auch viel logischer, da die Abschnitte und Subabschnitte vom Anfang statt vom Ende im Kopf angezeigt werden. Dies ist ein echter Mehrwert von scrlayer-scrpage. Optimal ist das m.E. zwar auch nicht, aber ich möchte vermeiden, dass die Diskussion wieder ausufert... ;-)

Hier mein modifiziertes Eingangsbeispiel:
\documentclass[ngerman,a4paper,10pt]{scrartcl} 
\usepackage[T1]{fontenc} 
\usepackage{lmodern} 
\usepackage[utf8]{inputenc} 
\usepackage{babel} 
\usepackage{geometry} 
\usepackage{microtype} 
\usepackage{lastpage} 
\usepackage{blindtext} 
% scrlayer-scrpage 
\usepackage{scrlayer-scrpage} 
\KOMAoptions{automark,autooneside=false,headsepline} 
\pagestyle{scrheadings} 
\automark[subsection]{section} 
\ihead{\MakeUppercase{\leftfirstmark}} 
\chead{} 
\ohead{\ifstr{\leftfirstmark}{\rightfirstmark}{}{\rightfirstmark}} 
\cfoot{\emph{\thepage/\pageref{LastPage}}} 
% document 
\begin{document} 
\title{Jenkins unter Debian installieren und konfigurieren} 
\author{} 
\date{} 
\maketitle 
\thispagestyle{empty} 
\tableofcontents 
\section{Installation} 
\blindtext[2] 
\section{Jenkins starten/stoppen} 
\blindtext[2] 
\section{Englischsprachige Bedienoberfläche} 
\blindtext[2] 
\section{Zugriff auf Git Repository einrichten} 
\blindtext[2] 
\section{Zugriff auf Docker einrichten} 
\blindtext[2] 
\section{Links} 
\blindtext[2] 
\end{document}
Grüße
Frank

Verfasst: Do 22. Feb 2018, 20:22
von u_fischer
Finde ich auch nicht überzeugend. Du musst nur mal in deinem Beispiel das hier einfügen
%\subsection{sub Zugriff}

\section{Zugriff auf Docker einrichten}
%\subsection{sub docker}
und dann mal ausprobieren, was passiert, wenn du die \subsection's abwechselnd auskommentierst. Kannst du erklären, wann genau die \subsection im Kopf erscheint? Und warum manchmal section 4 und manchmal section 5?

Verfasst: Do 22. Feb 2018, 21:18
von fs
u_fischer hat geschrieben:Finde ich auch nicht überzeugend. Du musst nur mal in deinem Beispiel das hier einfügen
%\subsection{sub Zugriff}

\section{Zugriff auf Docker einrichten}
%\subsection{sub docker}
und dann mal ausprobieren, was passiert, wenn du die \subsection's abwechselnd auskommentierst. Kannst du erklären, wann genau die \subsection im Kopf erscheint? Und warum manchmal section 4 und manchmal section 5?
Den Effekt habe ich auch bemerkt. Er ist der Grund, warum ich diesen Stand auch nicht optimal finde. Zumindest ist die Kopfinformation konsistent. Deswegen habe ich beschlossen, damit erst einmal zufrieden zu sein. Hast du eine bessere Lösung?

Grüße
Frank

Verfasst: Do 22. Feb 2018, 22:01
von u_fischer
Ich würde keine subsection in den Kopfzeilen zeigen. Oder -- falls die section so lang sind und so viele subsection haben, dass man die doch braucht -- statt \section \chapter verwenden.

Verfasst: Fr 23. Feb 2018, 08:00
von fs
u_fischer hat geschrieben:Ich würde keine subsection in den Kopfzeilen zeigen. Oder -- falls die section so lang sind und so viele subsection haben, dass man die doch braucht -- statt \section \chapter verwenden.
Naja, das ist mehr ein Herumdoktern an den Symptomen, oder? Das ändert an dem Verhalten ja nichts. Optimal wäre aus meiner Sicht, wenn die Kopfinformation immer passend zur ersten Zeile der Seite gesetzt würde. Geht sowas mit TeX/LaTeX nicht?

Grüße
Frank

Verfasst: Fr 23. Feb 2018, 08:17
von Gast
Leider ist passend eine sehr subjektive Spezifikation.