kontextsensitiv referenzieren < LaTeX < Mathe-Software < Mathe < Vorhilfe
|
gudn tach!
um die von latex irgendwohin gesetzten bilder gescheit referenzieren zu koennen, habe ich mir was gebastelt, was abhaengig von der seitenzahl entscheidet, wie ein bild referenziert wird; und zwar ist die idee dahinter, dass die seitenzahlen der bilder nur angegeben werden sollen, wenn sie nicht auf der aktuellen doppelseite zu sehen sind.
bisher dachte ich, es wuerde alles funktionieren. aber heute ist mir ein fall untergekommen, bei dem es nicht mehr 100%ig funzt. auf einer seite wird ein bild zwei mal referenziert. aber obwohl eigentlich dasselbe an den jeweiligen stellen stehen sollte, wird beim zweiten mal "auf der vorigen seite" dazugeschrieben und beim ersten mal nicht.
wenn ich den text zwischen den beiden referenzierungen kuerze, verhaelt sich seltsamerweise das zweite wie das erste. es scheint geradezu so zu sein, dass die seitenzahl \pageref nicht gescheit mit der realen seitenzahl synchronisiert wird.
am beispiel wird's klarer...
in muehevoller arbeit habe ich ein minimalbeispiel konstruiert und finde trotzdem den fehler nicht. vielleicht kann mir hier wieder jemand helfen.
das minimalbeispiel habe ich hochgeladen:
als pdf (auf der zweiten seite sieht man den fehler)
als tex
als tex mit syntaxhighlighting (html-format)
den code fuer die referenzierungsfunktion kann ich ja auch hier mal posten (da ich die hochgeladenen dateien vermutlich in ein wenigen wochen wieder loeschen werde):
1: | \newcounter{prevpage}
| 2: | \newcounter{nextpage}
| 3: | \newcommand\FigDiff[1]{Abb.~\ref*{#1} auf Seite~\pageref*{#1}}%
| 4: | \newcommand\FigPrev[1]{Abb.~\ref*{#1} auf der vorigen Seite}%
| 5: | \newcommand\FigNext[1]{Abb.~\ref*{#1} auf der nächsten Seite}%
| 6: | \newcommand\FigSame[1]{Abb.~\ref*{#1}}%
| 7: | \newcommand\Figref[1]{% mit Figref kann man bilder referenzieren, wobei die seite, auf denen
| 8: | \setcounter{prevpage}{\value{page}-1}% ein bild steht, nur angegeben wird, falls es sich nicht auf der ak-
| 9: | \setcounter{nextpage}{\value{page}+1}% tuellen doppelseite befindet.
| 10: | \ifthenelse{\value{page}=\pageref{#1}}{%
| 11: | \FigSame{#1}%
| 12: | }{%
| 13: | \ifthenelse{\value{nextpage}=\pageref{#1}}{%
| 14: | \ifthenelse{\isodd{\pageref{#1}}}{%
| 15: | \FigSame{#1}%
| 16: | }{%
| 17: | \FigNext{#1}%
| 18: | }%
| 19: | }{%
| 20: | \ifthenelse{\value{prevpage}=\pageref{#1}}{%
| 21: | \ifthenelse{\isodd{\pageref{#1}}}{%
| 22: | \FigPrev{#1}%
| 23: | }{%
| 24: | \FigSame{#1}%
| 25: | }%
| 26: | }{%
| 27: | \FigDiff{#1}%
| 28: | }%
| 29: | }%
| 30: | }%
| 31: | }%
|
prost
seth
|
|
|
|
Status: |
(Antwort) fertig | Datum: | 10:11 Mo 17.09.2007 | Autor: | rainerS |
Hallo,
hast du dir schonmal das Paket varioref angeschaut?
Dein Problem ist die Benutzung des page Counters. Der wird asynchron hochgezählt, nämlich dann, wenn eine vollständige Seite rausgeschrieben wird. Das passiert in der Regel erst dann, wenn bereits ein Teil des Textes der nächsten Seite eingelesen und verarbeitet wurde.
Viele Grüße
Rainer
|
|
|
|
|
Status: |
(Korrektur) richtig (detailiert geprüft) | Datum: | 18:23 Mo 17.09.2007 | Autor: | lustiger_seth |
gudn tach Rainer!
varioref kannte ich noch nicht. klasse tipp!
hab zwar ne weile gebraucht, bis ich merkte, dass man das hyperref-package erst danach einbinden darf, aber jetzt klappt's.
als code verwende ich jetzt:
1: | \RequirePackage{varioref}
| 2: | \renewcommand\reftextfaceafter {\!\!}
| 3: | \renewcommand\reftextfacebefore{\!\!}
| 4: | \renewcommand\reftextafter {auf der \reftextvario{nächsten}{folgenden} Seite}
| 5: | \renewcommand\reftextbefore {auf der vorigen Seite}
| 6: | \renewcommand\reftextfaraway[1]{auf Seite~\pageref{#1}}
| 7: | \newcommand\Figref[1]{Abb.~\vref{#1}}% |
prost
seth
|
|
|
|