PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : pdflatex verlinkt falsch (hyperref)



bienchen
16-05-2006, 19:11
Ola,

ich hab mal wieder ein Problem.
Ich arbeite mit pdflatex+hyperref. Zusaetzlich faengt mein Dokument im Inhaltsverzeichnis mit roem. Zahlen an, und dann gehts mit arab. Zahlen bei 1 weiter.
Nun ist vom Index die Verlinkung der Seiten leicht verkehrt. Wenn etws auf Seite 6 stehen soll, so fuehrt der Link auf die 6. Seite des Dokumentes, nicht auf die gezehlte Seite 6...woran kann denn das liegen?

mfg,

bienchen

daswaldhorn
16-05-2006, 19:52
Hallo,

schau dir mal die Doku von hyperref an. Die Option "pdfpagelabels=true" sollte das machen, was du willst.

Grüße, Carsten

bienchen
16-05-2006, 21:24
Hm, bringt keine Aenderung. Allerdings ist die hyperref-Doku auch nicht besonders ergiebig zu pdfpagelabels.

mfg,

bienchen

daswaldhorn
17-05-2006, 08:32
Hallo,

oh, du hast mich erwischt :), die "Beschreibung" von pdfpagelabels in der hyperref-Doku ist wirklich sehr knapp.
Also ich hatte den Hinweis auf diese Option in der Newsgroup de.comp.text.tex gefunden. Aber schau dir mal das Dokument LaTeX2PDF (ftp://dante.ctan.org/tex-archive/info/german/LaTeX2PDF.pdf)von Sascha Beuermann an, da ist diese Option etwas besser beschrieben.
Gut, mit dem Minimalbeispiel hier klappt es mit der logischen Seitennummerierung, oder hab ich dich ganz falsch verstanden? Dann mache bitte du ein Minimalbeispiel, damit wir nicht weiterhin aneinander vorbei reden. :)
\documentclass{scrreprt}
\usepackage[pdfpagelabels=true]{hyperref}
\begin{document}
\chapter{Kapitel 1}
Arabische Seitennummerierung
\chapter{Kapitel 2}
nochmal arabisch
\chapter{Kapitel 3}
\pagenumbering{roman}
Römische Seitennummerierung
\chapter{Kapitel 4}
nochmal römisch
\end{document}
Jetzt kannst du direkt auf römische Seiten im AdobeReader springen, "Gehe zu Seite: ii" landet auf Seite ii (absolute Nummer 4), aber wenn du die obengenannte Option deaktivierst, klappt das nicht; die Meldung ist "Seite ii ist nicht vorhanden." oder so ähnlich.

Grüße, Carsten

bienchen
17-05-2006, 09:22
So, Probleme ueber Probleme...erstmal: pdfpagelabels veraendert die Anzeige der Seitenzahlen im Acrobat-Reader...auch sehr nett (genau das waere meine naechste Frage gewesen), hat aber nix mit meinem Problem zu tun.


\documentclass{scrreprt}
\usepackage[breaklinks=true,pdfpagelabels=true]{hyperref}
\usepackage{index}
\usepackage[nottoc]{tocbibind}

\makeindex

\begin{document}
\pagenumbering{roman}
\tableofcontents
\clearpage
\pagenumbering{arabic}
\setcounter{page}{1}
\chapter{Kapitel 1}
Arabische Seitennummerierung\index{Eintrag 1}
\chapter{Kapitel 2}
nochmal arabisch \index{Noch ein Eintrag}
\chapter{Kapitel 3}
Roemisch nur im TOC Seitennummerierung
\chapter{Kapitel 4}
nochmal römisch

\printindex

\end{document}


Waere eher was ich will. Problem: Wieso werden die Indexeintraege nicht mehr als Links gesetzt? In meinem anderen Dok werden sie dass. Kompiliere mit pdflatex, makeindex, pdflatex.
Meieiei, Latex ist ja ganz toll, aber manchmal echt schwer.

mfg,

bienchen

bienchen
17-05-2006, 09:46
Ich vergass: Mit pdfpagelabel passiert folgendes beim Index:
Ich habe einen Eintrag

Blumenkohl 25

Klicke ich auf die 25 lande ich ich bei:

21 (25 von 40)

mfg,

bienchen

daswaldhorn
17-05-2006, 19:10
Hallo,

also lade bitte das Paket "hyperref" ganz zum Schluss, dann wird auch der Index verlinkt.
Das die Links am falschen Ort rauskommen, liegt an der doppelt vorhandenen Referenzen. Die Fehlermeldung sagt es ja auch:
destination with the same identifier (name{page.1}) has been already used, duplicate ignoredWillst du aus dem Index auf die arabische "1" springen, so landest du auf der römischen "1", weil die ja zuerst da ist. Bei der arabische "2" klappt es, da es keine römische "2" gibt. Wenn das Inhaltsverzeichnis auf zwei Seiten wächst, wird das hier auch schief gehen...
Aber wie man das Problem jetzt beseitigt, weis ich im Moment auch nicht.

Grüße, Carsten

edico
17-05-2006, 22:35
... es wird schon wieder alles ein Ratespiel, wenn nicht klar ist, was du wirklich machst. So könnte ein Minimalbeispiel aussehen:
%
\documentclass[12pt,a4paper,twoside,idxtotoc,bibtotoc,smallheadin gs]{scrbook}
\usepackage[pdftex,plainpages=false]{hyperref} %<<<<<< die Loesung <<<<<<<<
\usepackage{makeidx}
\makeindex
% ------------------------------
\begin{document}
\frontmatter
\tableofcontents
\listoftables
\listoffigures
\mainmatter
\chapter{Erstes Kapitel}
1.Seite im \index{erste}Hauptteil
\begin{figure}
\centering
\rule{5mm}{5mm}
\caption{blabla}\label{bla}
\end{figure} \newpage
2.Seite im \index{zweite}Hauptteil \newpage
3.Seite im \index{dritte}Hauptteil
\begin{table}
\centering
\begin{tabular}{ll}
a&b\\
\end{tabular}
\caption{blubblub}\label{blub}
\end{table} \newpage
4.Seite im \index{vierte}Hauptteil \newpage
5.Seite im \index{fuenfte}Hauptteil \newpage
6.Seite im \index{sechste}Hauptteil \newpage
7.Seite im \index{siebte} Hauptteil \newpage
8.Seite im \index{achte} Hauptteil
\chapter{Zweites Kapitel}
\appendix
\printindex
\end{document}
%
edico

bienchen
17-05-2006, 23:08
Also das Beispiel auf der Seite passt schon ganz gut. Es wird halt der Indexeintrag der zur Seite 1 gehoert, auf die physikalisch erste Seite verlinkt.
Bei mir bekomm ich nur noch richtige Verlinkung hin, wenn ich ALLES von wegen Seitennummerlayout/ Seitenzaehler nicht anfasse.

Also wenn mir jemand sagt, wie ich genau vorgehen soll waers noch n Versuch wert. Ansonsten bin ich da mit meinem Latein ziemlich am Ende.

mfg,

bienchen

rais
18-05-2006, 03:41
Moin moin,
wie denn, was meinst Du denn mit
Also das Beispiel auf der Seite passt schon ganz gut.
Welches Beispiel auf welcher Seite? :confused:

\documentclass[idxtotoc]{scrreprt}
\usepackage{index}
%\usepackage[nottoc]{tocbibind} %%wozu Pakete laden, was Klassenoptionen erledigen können?
%von den folgenden hyperref-Aufrufen kannst Du beide mal nacheinander ausprobieren...
\usepackage[breaklinks=true,pdfpagelabels=true]{hyperref} %zum Schluß, wie Carsten schon sagt
%so hat's bei mir schon gefunzt (auch ohne die anderen Änderungen unten); der Vollständigkeit halber hier gleich edico's Lösung mit angehängt
%\usepackage[pdftex,plainpages=false]{hyperref} %<<<<<< die Loesung <<<<<<<<

\makeindex

\begin{document}
\pagenumbering{roman}
\tableofcontents
%\clearpage %%unnötig, wenn \pagenumbering erst nach \chapter aufgerufen wird
\chapter{Kapitel 1}
\pagenumbering{arabic} %nach \chapter paßt hier die Seitenzahl automatisch
%\setcounter{page}{1} %%unnötig - wird von \pagenumbering schon erledigt
Arabische Seitennummerierung\index{Eintrag 1}
\chapter{Kapitel 2}
nochmal arabisch \index{Noch ein Eintrag}
\chapter{Kapitel 3}
Roemisch nur im TOC Seitennummerierung
\chapter{Kapitel 4}
nochmal arabisch %nicht römisch

\printindex

\end{document}

...natürlich wäre die verwendung von \frontmatter/ \mainmatter, wie bei edico zu sehen, eleganter - funzt aber nur bei den Buchklassen...da Du ja scrreprt hier hast... oder wo klickst Du drauf...?
MfG,

bienchen
18-05-2006, 10:26
Ich meine das erste Beispiel, nicht das von edico. Hier nochmal eines, welches relativ nah an meinem Dokument ist:



\documentclass[twoside]{report}
\usepackage{index}
\usepackage[nottoc]{tocbibind}
\usepackage[breaklinks=true,pdfpagelabels=true,plainpages=fals e]{hyperref}

\makeindex

\begin{document}
\newpage\thispagestyle{empty}~\newpage
\pagenumbering{roman}
\tableofcontents
\cleardoublepage
\pagenumbering{arabic}
\chapter{Kapitel 1}
Arabische Seitennummerierung\index{Eintrag 1}
\chapter{Kapitel 2}
nochmal arabisch \index{Noch ein Eintrag}
\chapter{Kapitel 3}
Roemisch nur im TOC Seitennummerierung
\chapter{Kapitel 4}
nochmal römisch

\printindex

\end{document}


Seltsamerweise verlinkt der Indexeintrag, welcher auf Seite 2 zeigt, richtig auf logische Seite 2 und physikalische Seite 5 (2 (5 von n)).

mfg,

bienchen

edico
18-05-2006, 12:23
... du machst ja auch 3mal Zahlenänderungen ...
...
\begin{document}
\pagenumbering{roman}%<-------------- hier richtig
\newpage\thispagestyle{empty}~\newpage

%\pagenumbering{roman}% <---------- falscher Platz
\tableofcontents
...
edico

bienchen
18-05-2006, 13:37
OK, das loest die Problematik im Beispiel...nicht so bei meinem Dokument. Ich schaetze mal, dass bleibt einfach ein unergruendliches Problem...was solls.

Danke fuer die vielen Versuche.

mfg,

bienchen

daswaldhorn
18-05-2006, 17:41
Hallo,
OK, das loest die Problematik im Beispiel...nicht so bei meinem Dokument.
Hier ein Beispiel, welches relativ nah...Mmmh, also du solltest schon noch sagen, was du in deinem eigentlichem Dokument anders machst, als in deinen Beispielen. Sonst wird es wohl wirklich
ein unergruendliches Problem...bleiben.

Grüße, Carsten

bienchen
18-05-2006, 18:09
Naja, nichts was ich wirklich fuer bedenklich halte...das ist es ja eben. Wenn ich das Dok auf die Beispiel anpasse, bleibt alles beim Alten.

mfg,

bienchen

lanix
19-05-2006, 16:11
Hallo Bienchen.


Du musst Latex mehrmals aufrufen, da sich durch den Eintrag
des Inhaltsverzeichnisses die Seitenzahlen ändern.
Einfach mehrmals (bis zu 3mal) Latex aufrufen!

bienchen
19-05-2006, 17:11
Hier mal der Eintrag aus meinem Makefile:

dokument.pdf:cover.pdf ${THESISFILES}
pdflatex dokument.tex
latex dokument.tex
dvips -o dokument-pics.ps dokument.dvi
ps2pdf14 dokument-pics.ps
pdflatex dokument.tex
bibtex dokument
makeindex -cl -o dokument.ind dokument.idx
pdflatex dokument.tex
pdflatex dokument.tex
pdflatex dokument.tex
thumbpdf dokument.pdf
pdflatex dokument.tex

Ich glaube dabei rufe ich pdflatex oft genug auf ;-)

mfg,

bienchen

Notwist
10-08-2006, 15:18
Hallo,

hatte das gleiche Problem. Bei mir lag es es daran, dass ich mehrmals den Aufruf

\pagenumbering{....}

aufgrufen hatte und somit im PDF häufiger zB die Seitenzahl 1 im Dokument hatte. Als Hyperref wurde dann immer zum ersten Aufkommen der "1" gesprungen.

Ich habe das jetzt so umgangen, dass ich meine Titelei mit

\pagenumbering{Alph}

gekennzeichnet habe (A, B, C,...), dann die Inhaltsangabe, Tabellenverzeichnis, Abbildungsverzeichnis usw. mit

\pagenumbering{roman} (i, ii, iii,...)

und meinen normalen Text mit

\pagenumbering{arabic}, (1, 2, 3, ...)

so dass nun die Sprünge in meinem Index richtig funktionieren! Du kannst ganz einfach sehen, ob Du doppelte Seitennummerierungen hast, in dem Du im Acrobat Reader unten die Anzeige im Format

13 (25 von 26)

beobachtest, während Du das PDF durchscrollst!

Ich vergaß noch was Wichtiges. Im Packetaufruf von hyperref muss folgende Option aufgerufen sein:

hypertexnames=TRUE

Gruß, Notwist

Jollero
16-08-2006, 12:06
SUPER- danke dir! Der Tipp hat geholfen- jetzt wird richtig vom Index aus verlinkt!!!

Area51
10-06-2011, 12:29
Hallo,

hatte das gleiche Problem. Bei mir lag es es daran, dass ich mehrmals den Aufruf

\pagenumbering{....}

aufgrufen hatte und somit im PDF häufiger zB die Seitenzahl 1 im Dokument hatte. Als Hyperref wurde dann immer zum ersten Aufkommen der "1" gesprungen.



Ich hole das Thema mal wieder hervor, weil ich monatelang nach einer Lösung gesucht hatte. Mittlerweile scheint Hyperref gut mit mehrfachen Seitenzahlen klar zu kommen. Bei mir funktionieren die internen Sprungmarken auch wenn ich bei der Einleitung den pagecounter auf 1 setze.

Allerdings konnte ich die Seiten die doppelt vorkamen im Druckmenü nie gezielt drucken. Wenn ich 1 eingebe, wird das Deckblatt gedruckt und nicht die Einleitung.

Da hat mir deine Lösung extrem geholfen auch wenn sie eigentlich offensichtlich war. Danke nochmal dafür!