Hallo ich würde gerne in meinem Dokument in der Kopfzeile auf der einen Seite der jeweilige Name der aktuellen section und auf der anderen der jeweilige Name subsection angezeigt bekommen.

Open in writeLaTeX
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[L]{ HIER SOLL DIE SUBSUBSECTION STEHEN}
\fancyhead[R]{  \leftmark }
\fancyfoot[C]{\thepage}

Wie mache ich das am besten?

Minimalbeispiel:

Open in writeLaTeX
\documentclass[12pt,a4paper,titlepage]{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[R]{\leftmark}
\fancyhead[L]{Hier soll Subsection  stehen }
\fancyfoot[C]{\thepage}
\setlength{\headheight}{15pt}
\begin{document}
\section{Section1}
\newpage
\section{Section2}
\subsection{Subsection2.1}
\newpage
\subsection{Subsection2.2}
\end{document}

gefragt 28 Jul '14, 10:00

bor44's gravatar image

bor44
992410
Akzeptiert: 83%

bearbeitet 28 Jul '14, 13:15

Wenn du eine KOMA-Klasse benutzt, dann nimm lieber das Paket scrlayer-scrpage.

(28 Jul '14, 10:21) Johannes

Noch ein anderer Hinweis, falls du es noch nicht selbst gefunden hast. Kann danach gelöscht werden. http://texwelt.de/wissen/fragen/991/wie-kann-ich-die-von-autoref-verwendete-bezeichnung-fur-abbildungen-andern

(28 Jul '14, 10:28) Johannes

@Ijon Tichy: Ich würde gerne den LatexCode auf dieser Seite einbinden, allerdings funktioniert das bei mir nicht so richtig. (Nutze Chrome unter Linux). Screenshot von Editor: https://dl.dropboxusercontent.com/u/14369950/16%3A01%3A21280716%3A01%3A21201407001.png

(28 Jul '14, 11:57) bor44

Du musst den Code doch nur hier reinkopieren, markieren und strg + k drücken?

(28 Jul '14, 11:59) Johannes

@Johannes Danke für den Tipp, überlege jetzt auf KOMA umzusteigen, allerdings nutze ich bisher immer article

(28 Jul '14, 12:35) bor44

Wenn mehrere Unterabschnitte oder aber ein neuer Abschnitt auf einer Seite beginnen, welcher Unterabschnitt soll denn dann in die Kopfzeile - der erste oder der letzte auf der Seite? Was soll links stehen, wenn keine aktuelle Unterabschnittsüberschrift vorhanden ist?

(28 Jul '14, 15:53) esdd

@Johannes Ja, wenn man es in der Rheinenfolge macht, funktioniert es mit dem highlighting des LatexCodes. Erst einfügen dann markieren und STRG+k.

@esdd Wenn mehrere Unterabschnitte auf einer Seite beginnen, dann würde ich sagen, dass der letzte oben stehen sollte - von mir aus aber auch der erste. Wenn kein U-Abschnitt auf einer Seite ist, dann sollte der letzte aktuelle U-Abschnitt angezeigt werden, es sei denn, es wurde ein neues Kapitel gestarten, das noch keinen U-Abschnitt hat. In dem Fall würde ich besser gar nichts anzeigen. -Sehr gute frage :)

(29 Jul '14, 02:52) bor44

@bor44 article hat keine Kapitel.

(29 Jul '14, 03:02) Ijon Tichy

@Ijon Tichy Das heißt ich müsste auf scrartcl umsteigen und anstatt fancyhdr scrlayer-scrpage nutzen? Das ist von mir aus auch möglich.

(29 Jul '14, 03:09) bor44

@bor44 Nein. scrartcl hat auch keine Kapitel. Beide Klassen haben lediglich \part = Teil, \section = Abschnitt, \subsection = Unterabschnitt etc. aber kein \chapter = Kapitel. Außerdem habe ich in meiner Antwort bereits eine Lösung mit article gezeigt. Die solltest Du einfach mal gründlich durchlesen und ausprobieren. Den Wechsel zu scrlayer-scrpage würde ich empfehlen. Sicher kann man ähnliches mit fancyhdr erreichen. Benötigt dann aber weitere Pakete, um zumindest das \ifstr nachzubilden. Einfacher ist es, gleich scrlayer-scrpage zu verwenden. Und ich kenne das besser!

(29 Jul '14, 03:12) Ijon Tichy

Auch scrartcl hat keine Kapitel. Nimm dann stattdessen scrreprt (siehe auch die Antwort von @Tichy.

(29 Jul '14, 03:14) Johannes
Ergebnis 5 von 11 Alle anzeigen

Theoretisch erreichst Du bereits mit

Open in writeLaTeX
\documentclass[12pt,a4paper,titlepage]{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[R]{\leftmark}
\fancyhead[L]{\rightmark}
\fancyfoot[C]{\thepage}
\setlength{\headheight}{15pt}
\begin{document}
\section{Section1}
\newpage
\section{Section2}
\subsection{Subsection2.1}
\newpage
\subsection{Subsection2.2}
\end{document}

das gewünschte. Wie zu erwarten ist, trägt Seite 1 nur die section-Überschrift im Kolumnentitel (hier in der Kopfzeile). Vielleicht etwas überraschen ist aber auch auf Seite 2 kein subsection im Kolumnentitel zu finden. Die Ursache dafür ist einfach: LaTeX verwendet für \rightmark das TeX-Primitiv \firstmark. Dieses gibt die erste Marke, die auf der Seite gesetzt wird, wieder. Die erste Marke wird von \section gesetzt. Dabei ist das linke Element die Überschrift von \section und das rechte Element ist leer. Damit ist \firstmark in diesem Fall leer.

Noch seltsamer wird es, wenn man ein etwas komplexeres Dokument hat, bei dem dann auf einer Seite erst ein Unterabschnitt und dann ein Abschnitt beginnt:

Open in writeLaTeX
\documentclass[12pt,a4paper,titlepage]{article}
\usepackage{fancyhdr}
\pagestyle{fancy}
\fancyhf{}
\fancyhead[R]{\leftmark}
\fancyhead[L]{\rightmark}
\fancyfoot[C]{\thepage}
\usepackage{blindtext}
\begin{document}
\section{Section1}
\Blindtext[5]

\section{Section2}
\blindtext

\subsection{Subsection2.1}
\blindtext

\subsection{Subsection2.2}
\blindtext

\section{Section3}
\Blindtext[2]
\subsection{Subsection 3.1}
\Blindtext[5]
\end{document}

Wenn Du Dir hier einmal Seite 3 anschaust, dann hast Du dort in der Kopfzeile links »2.2 Subsection2.2« und rechts »3 Section 3« stehen, obwohl auf der Seite weiter unten auch noch »3.1 subsection 3.1« beginnt. Das finde ich eher verwirrend.

Um beide Probleme zu lösen, schlage ich einen Wechsel zum KOMA-Script-Paket scrlayer-scrpage vor, das in der KOMA-Script-Anleitung und im KOMA-Script-Buch dokumentiert ist:

Open in writeLaTeX
\documentclass[12pt,a4paper,titlepage]{article}
\usepackage[autooneside=false,headsepline,markcase=noupper]{scrlayer-scrpage}
\automark[subsection]{section}

\pagestyle{scrheadings}
\clearscrheadfoot
\ofoot[\pagemark]{\pagemark}
\ihead{\ifstr{\rightbotmark}{\leftmark}{}{\rightbotmark}}
\ohead{\leftmark}

\usepackage{blindtext}

\makeatletter
% Damit die letzte (\botmark) statt der ersten (\firstmark) Marke auf
% einer Seite für die "rechte Marke" genommen wird:
\providecommand*{\rightbotmark}{\expandafter\@rightmark\botmark\@empty\@empty}
\makeatother

\begin{document}
\section{Section1}
\Blindtext[5]

\section{Section2}
\blindtext

\subsection{Subsection2.1}
\blindtext

\subsection{Subsection2.2}
\blindtext

\section{Section3}
\blindtext
\subsection{Subsection 3.1}
\Blindtext[5]
\end{document}

Damit hast Du nun immer die unterste subsection-Überschrift der Seite links oben. Das führst sowohl dazu, dass auf Seite 2 bereits das Feld belegt ist und auf Seite 3 nicht mehr 2.2, sondern 3.1 verwendet wird.

Noch besser fände ich allerdings, wenn Du in diesem Beispiel \ohead und \ihead vertauschen würdest, also:

Open in writeLaTeX
\ohead{\ifstr{\rightbotmark}{\leftmark}{}{\rightbotmark}}
\ihead{\leftmark}

verwenden würdest.

Es sei noch darauf hingewiesen, dass bei einem Wechsel zu scrartcl als Klasse, Option headsepline bereits bei \documentclass angegeben werden sollte, damit das Paket typearea einen angepassten Satzspiegel berechnen kann. Außerdem kann und sollte dann Option markcase entfallen, da die KOMA-Script-Klassen bereits von sich aus auf diesen unsäglichen Versalsatz im Kolumnentitel verzichten. Siehe dazu ggf. auch die KOMA-Script-Anleitung oder das Buch.

Bei Verwendung von scrreprt und \chapter (was sehr zu empfehlen wäre, wenn man vor \section ansonsten immer ein \clearpage oder \newpage von Hand einfügen würde, was leider sehr viele Anwender machen, die scrreprt nicht kennen) würde sich lediglich die \automark-Anweisung zu

Open in writeLaTeX
\automark[section]{chapter}

ändern. Außerdem bräuchte man dann noch:

Open in writeLaTeX
\makeatletter
% damit \leftmark voll expandierbar ist (wird für \ifstr benötigt)
\renewcommand*{\@seccntformat}[1]{%
  \othersectionlevelsformat{#1}{}{\csname the#1\endcsname}%
}
\makeatother

Das war's dann schon.

BTW: Diese Antwort basiert u. a. auf einem Beitrag von Elke auf matheplanet (Anmerkung: Dieser Link benötigt leider JavaScript).

Permanenter link

beantwortet 29 Jul '14, 02:50

Ijon%20Tichy's gravatar image

Ijon Tichy
4.4k618

bearbeitet 29 Jul '14, 03:19

Danke für die umfangreiche, gut beschriebene Antwort! Ich werde es gleich mal ausprobieren und dann ggf als gelöst markieren!

(29 Jul '14, 03:16) bor44

Funktioniert so, wie ich es mir vorstelle! VIELEN DANK!

(29 Jul '14, 04:31) bor44
1

Seit der KOMA-Script Version 3.16 stellt scrlayer den Befehl \rightbotmark direkt bereit und auch die Umdefinition von \@seccntformat ist nicht mehr notwendig.

(28 Apr '15, 04:34) esdd

@esdd, @Ijon: Wobei die Definition von \rightbotmark im Beispiel nicht stört, weil sie mit \providecommand erfolgte und daher mit neuere Versionen von KOMA-Script einfach ignoriert wird.

(28 Apr '15, 08:47) saputello
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

Aktuelle Buch-Infos

LaTeX Cookbook

LaTeX Beginners Guide

Limitierter Rabatt ebook
50% Coupon code tDRet6Y

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:

×7

Frage gestellt: 28 Jul '14, 10:00

Frage wurde angeschaut: 14,565 Mal

Zuletzt aktualisiert: 28 Apr '15, 08:47