PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Aktuelle Seitenzahl in longtable



an123
27-03-2012, 21:02
Hallo zusammen!

Habe ein Problem mit der longtable-Umgebung. Ich versuche im Kopf der Tabelle auf jeder Seite die aktuelle Seitenzahl anzugeben. Dabei will ich aber nur die Seiten der Tabelle zählen, d.h. bei 1 mit der ersten Seite der Tabelle anfangen usw.
Habe schon alles versucht, aber wie mir scheint, zählt Latex eine longtable als ein Element und gibt deshalb nur die erste Seite der Tabelle an.
Kann man das irgendwie umgehen bzw. sich vielleicht einen eigenen Zähler basteln, auf den man dann zugreift?

Danke schonmal!

ctansearch
30-03-2012, 11:09
Da gäbe es eine Möglichkeit, aber erst eine Nachfrage:
Willst Du nur die Tabellenseiten nummerieren, oder willst Du die aktuelle Seitenzahl in die Tabelle übernehmen?

an123
30-03-2012, 12:06
Ich möchte die Tabellenseiten unabhängig von den Seiten nummerieren, d.h. ich will zusätzlich zur Seitenzahl des Dokuments in der Tabelle die jeweilige Seitenzahl der Tabelle von eins aufsteigend angeben.

ctansearch
30-03-2012, 18:47
Hier mal ein Ansatz
Probiers mal aus, aber achte darauf, nicht die Originaldatei longtable.sty zu verändern, sondern nur Deine Kopie.
Du kannst die Datei longtable.sty in Dein Verzeichnis kopieren, umbenennen und in das Dokument einbinden und folgendes ausprobieren:

Setze in der neuen Datei nach


\newcounter{LT@chunks}[LT@tables]




\newcounter{tabpage}[LT@tables]
\newcommand{\tabpages}{\refstepcounter{tabpage} \large{\thetabpage}}

ein

Dann setze in Zeile 410 bei


\copy\LT@head\nobreak



\copy\LT@head \tabpages \nobreak

Dann erhältst Du jeweils nach dem Kopftext die Seitenzahl der Tabelle in Schriftgröße large. Bislang kann ich die Position der Seitenzahl nicht verändern, vielleicht hat jemand noch eine Idee dazu.

ctansearch
30-03-2012, 23:19
Mit einem Befehl wie


\renewcommand{\tabpages}{\refstepcounter{tabpage} \begin{picture}(0,0){\put(90,0){\Large{Tabelle \thetable. Seite \thetabpage}} }\end{picture} \vspace{3em}}

läßt sich die Position und Gestaltung der Seitenangaben beliebig formatieren und positionieren,
mit

\tabpages \endfirsthead

wird bereits die erste Tabelle nummeriert.

ctansearch
31-03-2012, 10:09
In der Anlage ein Beispiel

an123
01-04-2012, 11:29
Unglaublich - es funktioniert!!

Aber... ich habe in meiner Tabelle einen "firsthead", in dem auch ein Teil des normalen "heads" steht, weil der da halt auch drin sein muss. Auf der ersten Seite sieht auch alles ganz super aus, aber ab der zweiten Seite bekomme ich meinen head immer doppelt ausgegeben und darunter immer nochmal die Seitenzahl+1 in einer extram Zeile. Im head selbst zählt die Seite auch nur bis zwei hoch.

In meiner nächsten longtable im Dokument wird dann ab der letzten Seitenzahl der vorherigen longtable weitergezählt, aber mit dem gleichen Problem.

Vielleicht hat ja noch jemand Anregungen dazu?

ctansearch
01-04-2012, 11:55
Ohne ein Beispiel von Dir weiß ich da auch nicht viel zu sagen.

Gib mal ein Minibeispiel

an123
01-04-2012, 12:08
\begin{longtable}{|p{1cm}|p{0.8cm}|p{0.3cm}|p{8cm} |p{0.3cm}|p{1.6cm}|}
\hline
\multicolumn{3}{|p{2.1cm}}{\textbf{~~~~~Labor}}&\multicolumn{1}{|p{8cm}}{\centering{\textbf{\Large {Anforderungsliste}}}}&\multicolumn{2}{|p{1.9cm}|}{~}\\
\multicolumn{3}{|p{2.1cm}}{~}&\multicolumn{1}{|p{8cm}}{~}&\multicolumn{2}{|p{1.9cm}|}{Seite:~\tabpages}\\
\hline
\hline
\multicolumn{1}{|p{1cm}}{Änderung}&\multicolumn{1}{|p{0.8cm}}{~}&\multicolumn{3}{|p{8.6cm}}{Anforderungen}&\multicolumn{1}{|p{1.6cm}|}{Verantwortlich}\\
\hline
\endfirsthead
\hline
\multicolumn{6}{|r|}{Seite:~\tabpages}\\
\hline
\multicolumn{1}{|p{1cm}}{Änderung}&\multicolumn{1}{|p{0.8cm}}{~}&\multicolumn{3}{|p{8.6cm}}{Anforderungen}&\multicolumn{1}{|p{1.6cm}|}{Verantwortlich}\\
\hline
\endhead

also so sieht der head aus. die Ausgabe der zweiten Seite habe ich angängt. Hoffe das hilft...

ctansearch
01-04-2012, 13:16
Schau mal nach, ob Du zufällig die Anweisung

\copy\LT@head \nobreak
zweimal in der modifizierten sty-Datei stehen hast.

Später mehr..

an123
01-04-2012, 13:23
das löst schonmal das Problem mit dem doppelten head... danke!

ctansearch
01-04-2012, 16:31
Schöne Tabelle.
In Deinem Beispiel erscheint die Seitenzahl links zwischen den Köpfen.
Leider gelingt es mit nicht, die Tabellenseitenzahl zu einem Textelement zu machen, das man frei im Text aufrufen kann, die Anweisung \tabpages funktioniert nur innerhalb der sty-Datei, da die Wiederholung der \endheads dort nur als \copy-Funktion aufgeführt ist.
\tabpages also nicht nochmal im \endhead in der .tex- Datei aufrufen.

Mit dem folgenden Code werden die Seiten durchgezählt und mit Hilfe des umständlichen \pciture-Umgebung an die richtige Stelle gerückt. Das funktioniert ab des ersten \endhead, also ab Seite zwei.
Mit \firsthead kämpfe ich noch. Sie wird zwar mitgezählt, die Zahl erscheint jedoch nicht.
Naja, auch da wird sich was finden. Hier habe ich die 1 direkt eingetragen.




\documentclass[a4paper]{article}
\usepackage[utf8]{inputenc}
\usepackage[ngerman]{babel}
\usepackage{geänderte datei,multicol}
\renewcommand{\tabpages}{\refstepcounter{tabpage} \begin{picture}(0,0){\put(350,15){ Seite \thetabpage}}\end{picture} \vspace{3em}}
\begin{document}
\begin{longtable}{|p{1cm}|p{0.8cm}|p{0.3cm}|p{8cm} |p{0.3cm}|p{1.6cm}|}
\hline
\multicolumn{3}{|p{2.1cm}}{\textbf{~~~~~Labor}}&\multicolumn{1}{|p{8cm}}{\centering{\textbf{\Large {Anforderungsliste}}}}&\multicolumn{2}{|p{1.9cm}|}{~}\\
\multicolumn{3}{|p{2.1cm}}{~}&\multicolumn{1}{|p{8cm}}{~}&\multicolumn{2}{|p{1.9cm}|}{Seite:~{\tabpages 1} }\\
\hline
\hline
\multicolumn{1}{|p{1cm}}{Änderung}&\multicolumn{1}{|p{0.8cm}}{~}&\multicolumn{3}{|p{8.6cm}}{Anforderungen}&\multicolumn{1}{|p{1.6cm}|}{Verantwortlich}\\
\hline
\endfirsthead
\hline
\multicolumn{6}{|r|}{}\\
\hline
\multicolumn{1}{|p{1cm}}{Änderung}&\multicolumn{1}{|p{0.8cm}}{~}&\multicolumn{3}{|p{8.6cm}}{Anforderungen}&\multicolumn{1}{|p{1.6cm}|}{Verantwortlich}\\
\hline
\endhead
\end{longtable}
\end{document}

an123
01-04-2012, 17:31
Danke! So funktioniert es ja auch erstmal. Und durch ändern der Angaben im renewcommand ist es ja auch für alle Tabellen anwendbar.

ctansearch
01-04-2012, 20:54
Tja, schade, so einfach ist es doch nicht, bei seitenübergreifenden Texten verliert longtable (wegen der p{}-Spalten) den Überblick und es werden ein paar hundert Seiten.
Da muß mal wohl zunächst damit arbeiten, die Texte nicht zu lang werden zu lassen.

ctansearch
02-04-2012, 01:04
Super Idee, an123!

Bei mir sieht es derzeit so aus:

Siehe Anlage