PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Pageref-Wert von Label um eines dekrementieren



derFuxx
24-09-2010, 00:00
Hey,

ich habe ein kleines Problem bei dem ich mal wieder kurz vor Abgabe einer Arbeit nicht auf die schnelle weiterkomme.

Und zwar habe ich an einer Stelle ein Label gesetzt und möchte mir über pageref die Seitenanzahl holen. (\pageref{meinLabel}). Ich möchte jedoch nicht diese eigentliche Seitenzahl haben, sondern die Seite davor. Also quasi \pageref{meinLabel -1}.

Fragt bitte nicht, was ich komisches vorhabe ^^ Ist etwas länger zu erklären und hat damit zu tun, dass ich im Vorfeld nicht weiß, wie viele Seiten mein Literaturverzeichnis haben wird, ich jedoch die Nummer auf der letzten Seite vom späteren Literaturverzeichnis benötige. Dafür dann nachm Verzeichnis das folgende "\newpage ~\label{meinLabel}" eingefügt und am Ende schmeiße ich die Seite wieder ausm pdf raus. (mir ist leider nichts anderes eingefallen).

Danke für eure Hilfe.

rais
24-09-2010, 00:45
Moin moin,


Und zwar habe ich an einer Stelle ein Label gesetzt und möchte mir über pageref die Seitenanzahl holen. (\pageref{meinLabel}). Ich möchte jedoch nicht diese eigentliche Seitenzahl haben, sondern die Seite davor. Also quasi \pageref{meinLabel -1}.

mir ist zwar nicht klar gworden, warum Du das \label nicht einfach auf die Seite setzt, auf die Du Dich beziehen willst, aber als Idee -- arabische Paginierung vorausgesetzt -- vllt


\documentclass{book}
\newcounter{foo}
\newcommand*\onebefore[1]{%
\edef\mytemp{\pageref{#1}}%
\ifnum0<0\mytemp\relax
\setcounter{foo}{\mytemp}%
\else
\setcounter{foo}{0}%
\fi
\addtocounter{foo}{-1}%
\thefoo
}
\begin{document}
\chapter{foo}
Seite vor bar:\onebefore{bar}
\chapter{bar}\label{bar}
\end{document}

MfG

Schweinebacke
24-09-2010, 08:54
Das geht aber ganz schnell schief, wenn \pageref nicht nur eine Zahl zurück liefert, sondern beispielsweise noch eine Box oder sonst etwas darum packt (siehe hyperref). Deshalb sollte man für solche Spielereien vermutlich eher ein Paket wie refcount (http://www.ctan.org/pkg/refcount) verwenden. Vielleicht geht es auch mit Heikos Schweizer Taschenmesser für Referenzen: zref (http://www.ctan.org/pkg/zref). Da beide Pakete von Heiko sind, nehme ich aber an, dass er refcount nicht einfach nur aus Langeweile gebaut hat.

derFuxx
24-09-2010, 17:25
mir ist zwar nicht klar gworden, warum Du das \label nicht einfach auf die Seite setzt, auf die Du Dich beziehen willst,


dass ich im Vorfeld nicht weiß, wie viele Seiten mein Literaturverzeichnis haben wird, ich jedoch die Nummer auf der letzten Seite vom späteren Literaturverzeichnis benötige.
Hmmh, wie kann ich denn ein Label auf die letzte Seite vom Literaturverzeichnis setzen, wenn dieses automatisch erstellt wird und ich im Vorfeld nicht weiß, wie viele Seiten dieses haben wird?

Darum die Idee, danach noch eine leere Seite einzufügen, deren Zahl ermitteln, 1 abziehen und die Seite später wieder raus. Das war jetzt meine erste Herangehensweise.

Egal, danke für deinen Code und die Paketverweise :)

Schweinebacke
24-09-2010, 18:31
Da am Ende des Literaturverzeichnisses nicht automatisch eine neue Seite begonnen wird (sondern erst, wenn man danach beispielsweise eine neues Kapitel beginnt), sollte es genügen, wenn man nach dem Literaturverzeichnis eine \label-Anweisung setzt. Anderenfalls muss man \endthebibliography patchen, damit unmittelbar vor dem Ende eine \label gesetzt wird.