scrlayer-scrpage: Seltsame Kopfzeilen

Layout von Seiten, Rändern, Fusszeilen, usw, modifizieren


fs
Forum-Anfänger
Forum-Anfänger
Beiträge: 35
Registriert: Di 2. Jan 2018, 09:24
Kontaktdaten:

scrlayer-scrpage: Seltsame Kopfzeilen

Beitrag 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
Dipl.-Inform. Frank Seitz
IT Consultant / {Web, Database, Linux} Developer + Admin
Tel: +49-176-78243503, Hauptstr. 32-34, D-25462 Rellingen

Blog: http://fseitz.de/blog

Gast

Beitrag 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.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4268
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag 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.

Gast

Beitrag 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.

fs
Forum-Anfänger
Forum-Anfänger
Beiträge: 35
Registriert: Di 2. Jan 2018, 09:24
Kontaktdaten:

Beitrag 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
Dipl.-Inform. Frank Seitz
IT Consultant / {Web, Database, Linux} Developer + Admin
Tel: +49-176-78243503, Hauptstr. 32-34, D-25462 Rellingen

Blog: http://fseitz.de/blog

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4268
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag 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?

fs
Forum-Anfänger
Forum-Anfänger
Beiträge: 35
Registriert: Di 2. Jan 2018, 09:24
Kontaktdaten:

Beitrag 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
Dipl.-Inform. Frank Seitz
IT Consultant / {Web, Database, Linux} Developer + Admin
Tel: +49-176-78243503, Hauptstr. 32-34, D-25462 Rellingen

Blog: http://fseitz.de/blog

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4268
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag 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.

fs
Forum-Anfänger
Forum-Anfänger
Beiträge: 35
Registriert: Di 2. Jan 2018, 09:24
Kontaktdaten:

Beitrag 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
Dipl.-Inform. Frank Seitz
IT Consultant / {Web, Database, Linux} Developer + Admin
Tel: +49-176-78243503, Hauptstr. 32-34, D-25462 Rellingen

Blog: http://fseitz.de/blog

Gast

Beitrag von Gast »

Leider ist passend eine sehr subjektive Spezifikation.

Antworten