Hallo, Mein Text beginnt mit einer Section-Überschrift "A". Darauf folgt eine Subsection-Überschrift A.1. Der Text unter dieser Überschrift ist ca. 1 ½ Seiten lang. Wenn ich nun nach dem Text eine neue Section-Überschrift "B" einfüge, steht in der Kopfzeile "B" anstatt "A | A.1". Hier ist mein Quellcode (auf der Seite 2. Sollte in der Kopfzeile eigentlich stehen " Section A | Subsection A.1"

% !TeX spellcheck = de_DE_igerman96
\documentclass[a4papier,12pt]{scrartcl}
%\usepackage[applemac]{inputenc}
\usepackage[ngerman]{babel}
%\renewcommand{\familydefault}{\sfdefault}
%\usepackage{helvet}    
\usepackage[left=2.5cm, right=2cm, top=2cm, bottom=2cm]{geometry} %Seitenränder
%Kopfzeile
%Macht: Section | Subsection und die Kopfzeile wird erst NACH der Überschrift angepasst
\usepackage[headsepline=1pt,autooneside=false]{scrlayer-scrpage}
\clearpairofpagestyles
\automark[subsection]{section} 
\ihead{\leftmark{}\ifstr{\leftmark}{\rightmark}{}{ $|$ \righttopmark}} 
\ohead*{\pagemark} 
\renewcommand*{\sectionmarkformat}{} %Kopfzeile ohne Kaptitelnummer
\renewcommand*{\subsectionmarkformat}{} %Kopfzeile ohne Kapitelnummer

\usepackage{blindtext}

\begin{document}

\section{Section A}
\blindtext
\subsection{Subsection A.1}
\blindtext \blindtext \blindtext \blindtext \blindtext \blindtext
\section{Section B}
\blindtext

\end{document}

gefragt 21 Jul, 08:21

Simon's gravatar image

Simon
453
Akzeptiert: 0%


Um die in Ijon's Antwort auf deine letzte Frage erwähnten Anweisungen besser zu verstehen, könntest du sie versuchsweise zunächst einfach einmal alle verwenden, beispielsweise (die fehlerhafte Option a4papier habe ich entfernt):

% !TeX spellcheck = de_DE_igerman96
\documentclass[12pt]{scrartcl}
%\usepackage[applemac]{inputenc}
\usepackage[ngerman]{babel}
%\renewcommand{\familydefault}{\sfdefault}
%\usepackage{helvet}    
\usepackage[left=2.5cm, right=2cm, top=2cm, bottom=2cm]{geometry} %Seitenränder
%Kopfzeile
%Macht: Section | Subsection und die Kopfzeile wird erst NACH der Überschrift angepasst
\usepackage[headsepline=1pt,autooneside=false]{scrlayer-scrpage}
\clearpairofpagestyles
\automark[subsection]{section} 
\ihead{%
  leftfirst=\leftfirstmark, lefttop=\lefttopmark, leftbot=\leftbotmark\\
  rightfirst=\rightfirstmark, righttop=\righttopmark, rightbot=\rightbotmark}
\ohead*{\pagemark} 
\renewcommand*{\sectionmarkformat}{} %Kopfzeile ohne Kaptitelnummer
\renewcommand*{\subsectionmarkformat}{} %Kopfzeile ohne Kapitelnummer

\usepackage{blindtext}

\begin{document}

\section{Section A}
\blindtext
\subsection{Subsection A.1}
\blindtext \blindtext \blindtext \blindtext \blindtext \blindtext
\section{Section B}
\blindtext

\end{document}

Schaut man sich das Ergebnis auf der zweiten Seite an:

leftfirst=Section B, lefttop=Section A, leftbot=Section B
rightfirst=Section B, righttop=Subsection A.1, rightbot=Section B

so sieht es sehr danach aus, dass

\ihead{\lefttopmark $|$ \righttopmark}

das gewünschte Ergebnis liefert. Allerdings stimmt dann vermutlich das Ergebnis auf der ersten Seite, bei dem die beiden Felder laut Anzeige mit dem Testdokument leer ist:

leftfirst=Section A, lefttop=, leftbot=Section A
rightfirst=Section A, righttop=, rightbot=Subsection A.1

vermutlich nicht mit dem wunsch überein. Also braucht man zusätzich eine Fallunterscheidung, beispielsweise

\ihead{%
  \ifstr{\lefttopmark}{}{\leftfirstmark}{\lefttopmark}
  \ifstr{\righttopmark}{}{}{$|$ \righttopmark}%
}

o. ä. Als vollständiges Beispiel also eventuell:

% !TeX spellcheck = de_DE_igerman96
\documentclass[12pt]{scrartcl}
%\usepackage[applemac]{inputenc}
\usepackage[ngerman]{babel}
%\renewcommand{\familydefault}{\sfdefault}
%\usepackage{helvet}    
\usepackage[left=2.5cm, right=2cm, top=2cm, bottom=2cm]{geometry} %Seitenränder
%Kopfzeile
%Macht: Section | Subsection und die Kopfzeile wird erst NACH der Überschrift angepasst
\usepackage[headsepline=1pt,autooneside=false]{scrlayer-scrpage}
\clearpairofpagestyles
\automark[subsection]{section} 
\ihead{%
  \ifstr{\lefttopmark}{}{\leftfirstmark}{\lefttopmark}
  \ifstr{\righttopmark}{}{}{$|$ \righttopmark}%
}
\ohead*{\pagemark} 
\renewcommand*{\sectionmarkformat}{} %Kopfzeile ohne Kaptitelnummer
\renewcommand*{\subsectionmarkformat}{} %Kopfzeile ohne Kapitelnummer

\usepackage{blindtext}

\begin{document}

\section{Section A}
\blindtext
\subsection{Subsection A.1}
\blindtext \blindtext \blindtext \blindtext \blindtext \blindtext
\section{Section B}
\blindtext

\end{document}

Mit Hilfe der Testdefinition aus dem Eingangsbeispiel, sollte es möglich sein, auch weitere Sonderfälle zu berücksichtigen. Für einige Sonderfälle muss man eventuell auch mit der Sternform von \automark die Markenerzeugung erweitern, was dann natürlich auch Auswikrungen auf das Ergebnis der Ausgabe anderer Marken haben kann. Es gibt vermutlich auch Sonderfälle, die nicht oder nur sehr schwer vollautomatisch lösbar sind. In dem Fall kann ggf. ein \sectionmark oder \subsectionmark an der richtigen Stelle helfen.

Permanenter link

beantwortet 21 Jul, 09:18

okay's gravatar image

okay
1513

bearbeitet 21 Jul, 09:49

vielen dank! eine super Erklärung + Lösung. Mir ist gerade leider nur aufgefallen, dass wenn ich ein Inhaltsverzeichnis einfüge

also:

\begin{document}
\tableofcontents
\newpage
\section{Section A}
\blindtext
\subsection{Subsection A.1}
\blindtext \blindtext \blindtext \blindtext \blindtext \blindtext
\section{Section B}
\blindtext
\end{document}

dann ist die Kopfzeile des ersten Kapitels "Inhaltsverzeichnis | Inhaltsverzeichnis". Wie könnte man das noch beheben?

(22 Jul, 06:34) Simon
2

@Simon Das ist genau eines der Probleme, wenn man mit \lefttopmark (aber auch \righttopmark) arbeitet. Das geht eigentlich auch aus der Erklärung in der KOMA-Script-Anleitung hervor. Letztlich musst du in solchen Fällen vor dem Seitenumbruch die Marke mit \sectionmark ändern. solange man \leftbotmark nicht verwendet, sollte das gefahrlos sein. Trotzdem bleibt das Problem auch im Falle, dass zufällig der Seitenumbruch genau vor der Überschrift landet. Das eigentliche Problem ist, der (unübliche) Wunsch aus der Frage, dass auf Seite 2 nicht die erste Überschrift von Seite 2 steht.

(22 Jul, 06:48) Ijon Tichy
1

@Simon In der Tat hat @Ijon da absolut recht. LaTeX selbst verwendet daher auch \topmark (das TeX-Primitiv, das hinter \lefttopmark und \righttopmark steht) nicht, sondern nur \firstmark (das TeX-Primitiv hinter \leftfirstmark und \rightfirstmark) und \botmark (das TeX-Primitiv hinter \leftbotmark und \rightbotmark). In der Regel ist es besser, es LaTeX gleich zu tun und nur \leftfirstmark, \leftbotmark, \rightfirstmark und \rightbotmark zu verwenden. Für seltsame Anforderungen sind aber manchmal auch \lefttopmark und \righttopmark verlockend.

(22 Jul, 07:17) okay

Und wie könnte man das Problem lösen, dass wenn ich in Section B mehr Text einfüge und dieser auf einer neuen Seite landet, dass dort in der Kopfzeile nicht "Section B | Section B" steht?

(22 Jul, 07:18) Simon

@Simon Genau wegen solcher Sonderfälle oder Randbedingungen habe ich auch darauf hingewiesen, dass Automatismen für alles und jedes u. U. recht aufwänmdig werden können und es dann sinnvoller sein kann, von Fall zu Fall manuell einzugreifen.

(22 Jul, 07:21) okay

@Simon: Hast du dir mal mein letztes Beispiel in https://texwelt.de/wissen/fragen/25282/kopfzeilenaktualisierung-falsch/25283 angeschaut? Da steht nicht zweimal „Section B“ in der Kopfzeile – auch nicht, wenn man am Ende noch ein \blindtext[10] anfügt. Ansonsten: Entweder Fallunterscheidung mit \ifstr basteln, nachdem man sich mit einer Definition wie in der Antwort hier angeschaut hat, welches Feld, welches Ergebnis bringt, oder eben wie von okay erwähnt, von Hand eingreifen.

(22 Jul, 09:04) Ijon Tichy

BTW: Das wird mir schon wieder viel zu diskutierend … Ich klinke mich deshalb aus.

(22 Jul, 09:06) Ijon Tichy
Ergebnis 5 von 7 Alle anzeigen
Deine Antwort auf die Frage (nicht auf andere Antworten)
Knebel-Vorschau

Folge dieser Frage

Per E-Mail:

Wenn Du Dich anmeldest, kannst Du Updates hier abonnieren

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs füge einfach zwei Leerzeichen an die Stelle ein, an der die neue Zeile sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Zugeordnete Themen:

×2

Frage gestellt: 21 Jul, 08:21

Frage wurde angeschaut: 291 Mal

Zuletzt aktualisiert: 22 Jul, 09:07