PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Probleme mit hyperref und falschen Links



MasterOfPuppets
27-09-2007, 00:08
Moin,

bei einem Dokument habe ich festgestellt, dass manche Links aus \pageref zwar richtig angezeigt werden, aber die falsche Seite angesprungen wird. Alle Suchen hier und im Netz haben leider nichts geholfen.

Also habe ich ein Minimalbeispiel gebastelt. Das verwirrt mich jedoch völlig. Alle \pagerefs verweisen auf Seite 1. Jemand eine Idee, wie das sein kann?



\documentclass[cleardoubleempty]{scrbook}
\usepackage[latin1jk]{inputenc}
\usepackage[T1]{fontenc}
\usepackage[ngerman]{babel}
\usepackage{blindtext}

\usepackage%
[%
pdfpagelabels,%
hypertexnames=true,%
breaklinks=true, %
plainpages=false, %
colorlinks=true, %
a4paper=true, %
bookmarks=true, %
bookmarksopen=true, %
]{hyperref}


\begin{document}
Gehe zu Seite \pageref{eins} oder Seite \pageref{zwei} oder Seite \pageref{drei} oder besonders Seite \pageref{nachItemize} \\

\Blindtext\Blindtext

\begin{itemize}
\item \begin{description}
\item[Erstens] Erster Punkt im Test\label{eins}
\item[Zweitens] Zweiter Punkt im selben Test \label{zwei}
\end{description}
\item Tralala \label{drei}
\end{itemize}

Text nach Itemize.\label{nachItemize}

\vspace{30mm}

Gehe zu Seite \pageref{eins} oder Seite \pageref{zwei} oder Seite \pageref{drei}

\end{document}

edico
27-09-2007, 07:53
Es kann (AFAIK) nicht mit itemize, aber z.B. mit enumerate klappen.
Mir ist es an sich auch einleuchtend; denn wie sollte eine Referenzierung bei einem 'undefinierten' Item (wie bei itemize) erfolgen --- haben doch alle nur einen Punkt ;-) und label bezieht sich auf item und nicht auf den Inhalt des Items.

...
\begin{enumerate}
\item \begin{description}
\item[Erstens]\label{eins} Erster Punkt im Test
\item[Zweitens]\label{zwei} Zweiter Punkt im selben Test
\end{description}
\item\label{drei} Tralala
\end{enumerate}
...

edico

MasterOfPuppets
27-09-2007, 10:59
Also kann man gar keine label - die mit hyperref angesprungen werden sollen - mitten im Text setzen, sondern braucht immer eine "definierte Besonderheit" wie ein Item einer Enumeration, ein Bild/Caption, eine Gleichung usw.?

sommerfee
27-09-2007, 11:37
Also kann man gar keine label - die mit hyperref angesprungen werden sollen - mitten im Text setzen, sondern braucht immer eine "definierte Besonderheit" wie ein Item einer Enumeration, ein Bild/Caption, eine Gleichung usw.?

Nur wenn man mit \label und \ref arbeiten will. Parallel dazu bietet hyperref einem auch an, Sprungziele und Links selber zu setzen, mit den Befehlen \hyperlink und \hypertarget.

Gruß,
Axel

MasterOfPuppets
27-09-2007, 12:54
Ah, die fand ich bisher sinnlos, weil ich der Meinung war, dass label und ref immer funktionieren ... :)

sommerfee
27-09-2007, 13:00
Nein, das ist ein weitverbreiteter Irrtum. \label setzt keine Hundemarke, es gibt nur der letzten, intern bereits existierenden Marke einen "Namen" (und einen Eintrag in der AUX-Datei), nicht mehr. Wenn man z.B. folgendes macht:



\section{Überschrift}
....ganz ganz ganz viel Text...
\label{Test}


Dann verweist ein \ref{Test} nicht auf die Stelle bzw. Seite, wo das \label{Test} steht, sondern auf die Stelle, wo das \section steht, sofern dies der letzte Befehl war, der eine interne Marke setzt.

Gruß,
Axel

MasterOfPuppets
28-09-2007, 16:08
Danke für die Erklärung! Gut zu wissen!

Falls es noch jemanden interessiert. Verweise mit klickbaren Seitenzahlen (und etwas variablem Komfort) setze und rufe ich jetzt so auf:



\newcommand{\Link}[2][]%
{
\hypertarget{#2}{#1}\label{#2} %#2 ist der Linkname, #1 wird im Text angezeigt (Standard: leer)
}

\newcommand{\Verweis}[2][Seite]%
{
\hyperlink{#2}{#1 \pageref*{#2}}
}