Sie sind hier

\ihead{} auf jeder Seite neu setzen

Ich erzeuge mit Komascript und pdfLaTeX die PDF-Versionen für ein Russisch-Deutsches Wörterbuch.

Die Daten werden aus einer PostgreSQL-Datenbank mittels Perlskript ausgelesen und für LaTeX formatiert.

Nun muss auf jeder Seite im \ihead{} das erste Lemma (Stichwort) und im \ohead{} das letzte Lemma der Seite stehen.

Das letzte Lemma zu setzen ist nicht das Problem:
\newcommand\lemma[1]{\textbf{#1}\ohead{#1}}
sorgt auf "Brute-Force-Weise" dafür.

Welche Möglichkeit gibt es dies auch für das erste Lemma zu erreichen? Handarbeit ist ja nicht opportun.

Als Perl-Hacker würde ich ja die Lemmata einfach auf ein Array packen und \meinLemmaArray[0] als \ihead{} setzen. Gibt es eine Möglichkeit dies zu tun? Oder andere Wege? Die Lemmata als "blindes" Kapitel formatieren und \headmark verwenden, so dass das erste Lemma gesetzt wird?

Bild von Markus Kohm

So, wie Du das machst, kann Dir leicht die asynchrone Ausgaberoutine von LaTeX einen Streich spielen. Wenn nämlich Dein \lemma ausgeführt wird und anschließend LaTeX entscheidet, dass die dadurch erzeugte Ausgabe auf die nächste Seite muss, dann wird das äußere Kopfelement eine Seite zu früh geändert.

Damit solche Probleme gar nicht erst entstehen, kennt TeX den mark-Mechanismus. Unter LaTeX steuert man den mit \markboth und \markright und greift auf die Marken dann mit \rightmark und \leftmark zu. LaTeX verwendet das dann auch selbst für die Kolumnentitel. Bei Verwendung von scrpage2 gibt es außerdem auch noch \markleft und \headmark, wobei letzteres je nach Seite \leftmark oder \rightmark entspricht.

\documentclass{article}
\usepackage{lipsum}
\usepackage [manualmark]{scrpage2}
\pagestyle{scrheadings}
\ihead{\rightmark}
\ohead{\leftmark}
\cfoot{\pagemark}

\newcommand*{\lemma}[1]{\textbf{#1}\markboth{#1}{#1}}

\begin{document}
\lemma{A} \lipsum[1-2]
\lemma{B} \lipsum[1-2]
\lemma{C} \lipsum[1-7]
\lemma{D} \lipsum[1-2]
\lemma{E} \lipsum[1-2]
\lemma{F} \lipsum[1-2]
\lemma{G} \lipsum[1-2]
\lemma{H} \lipsum[1-2]
\end{document}
Comments for "\ihead{} auf jeder Seite neu setzen" abonnieren