PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Erster Listeneintrag je Seite in Header



Sloothword
06-03-2011, 22:34
Hallo Erstmal :-)

Ich möchte wie der Titel schon sagt eine sehr lange Liste gliedern, indem ich den ersten und letzten Listeneintrag jeder Seite im Header nochmal angebe.

Das soll wie in einem Wörterbuch dazu dienen das Wort schnell aufzufinden.

Hier ist ein (Minimal-)Beispiel davon:

\documentclass[landscape,10pt,]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{multicol}

\usepackage{fancyhdr}
\pagestyle{fancy}

\begin{document}

\begin{multicols}{3}

\begin{enumerate}
\chead{Apfel - Kokosnuss}
\item Apfel
\item Birne
\item ...
\item Kokosnuss
\newpage
\chead{Zitrone - Zwetschge}
\item Zitrone
\item Zwetschge
\end{enumerate}
\end{multicols}
\end{document}

Angeben möchte ich aber die Liste nur mit:

\begin{enumerate}
\item Apfel
\item Birne
\item ...
\item Kokosnuss
\item Zitrone
\item Zwetschge
\end{enumerate}

Den Zeilenumbruch macht Latex ja von sich aus an der richtigen Stelle, aber wie bekomme ich die gewünschten ersten und letzten Listeneinträge in den Header?

Gibt es Pakete, die so eine Funktionalität einbinden?
Ich bin bei meiner Suche leider nicht fündig geworden, wobei ich auch nicht weiß, wie ich die gesuchte Funktionalität Suchmaschinentauglich umformulieren kann :-D

Vermutlich wird man nicht umhin kommen es selbst zu programmieren :-(

Falls es hilft:
Ich gebe den Listencode schon per Programm aus, man könnte also beliebig umfangreichen Code hinzufügen. Mir hilft das leider nichts, da ich nicht weiß, wie viele Einträge Latex auf eine Seite packt (und ich es nicht fest vorschreiben will) und ich demnach den Header nicht setzen kann.

Vielen Dank schonmal für eure Bemühungen

Gruß
Fabian

Schweinebacke
07-03-2011, 07:03
Einspaltig ist das kein Problem:
\documentclass[a5paper,10pt]{scrartcl}
\usepackage[utf8]{inputenc}
\usepackage{etex}
\newmarks\itemmark

\usepackage{scrpage2}
\pagestyle{scrheadings}
\clearscrheadfoot
\chead{\firstmarks\itemmark--\botmarks\itemmark}
\ohead{\pagemark}

\newcommand*{\hitem}[1]{%
\item #1\marks\itemmark{#1}%
}

\begin{document}

\begin{enumerate}
\hitem{Apfel}
\hitem{Birne}
\hitem{\dots}
\hitem{Kokosnuss}
\newpage
\hitem{Zitrone}
\hitem{Zwetschge}
\end{enumerate}
\end{document}Mehrspaltig? Keine Ahnung. Eventuell hilft fix2col (http://ctan.org/pkg/fix2col). Allerdings funktioniert das AFAIK nicht mit multicols. Vielleicht sagt aber die multicols-Anleitung noch etwas dazu.

Sloothword
07-03-2011, 19:12
Danke schonmal.

Für einspaltigen Text funktioniert das einwandfrei. Wie du aber schon selbst sagtest, für multicol-Umgebungen nicht.

fix2col schreibt:


The standard LATEX twocolumn system works internally by making each column
a separate ‘page’ that is passed independently to TEX’s pagebreaker. (Unlike say
the multicol package, where all columns are gathered together and then split into
columns later, using \vsplit.) This means that the primitive TEX marks that are

soweit ich das verstehe, beschäftigt sich fix2col gar nicht mit der multicol Umgebung

Wenn ich das multicol.pdf durchlese, meine ich herauszulesen, dass versucht wird marks richtig zu behandeln...
Komisch. Ich kann nicht mal herauslesen, welche marks er als \firstmark und \botmark nimmt :-(

Eine andere Frage:
Wieso nimmt er bei

\newcommand*{\hitem}[1]{%
\item #1\marks\itemmark{#1}%
}

nur das erste Zeichen? Und was muss ich ändern, damit er das ganze Wort als Marke übernimmt?

Schweinebacke
08-03-2011, 11:18
Wieso nimmt er bei

\newcommand*{\hitem}[1]{%
\item #1\marks\itemmark{#1}%
}
nur das erste Zeichen? Und was muss ich ändern, damit er das ganze Wort als Marke übernimmt?
In meinem Beispiel nimmt er das ganze Wort.