PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : hyperref vs. algorithmicx



fatsack
06-05-2008, 05:20
Hi,

meine erste Frage wäre, wieso ich beim Verwenden von algorithmicx \usepackage{algorithm} angebe und nicht \usepackage{algorithmicx}? Wer soll da bei der Vielzahl der Algorithmen-Pakete noch durchsteigen? Mich verwirrt's total, aber das nur am Rande.

Meine zweite Frage bezieht auf das (wohl öfter) auftretende Problem "destination with the same identifier..." wenn ich hyperref und algorithmicx verwende. Ich meine gelesen zu haben, dass hyperref in der Regel ganz am Ende, aber vor hypcap und algorithmicx eingebunden werden soll.

So habe ich's dann auch gemacht:

... hier noch ein paar andere Pakete eingebunden ...
\usepackage[
pdfstartview={FitH},
plainpages=false,
pdfpagelabels,
colorlinks=true,
linkcolor=black,
citecolor=black,
urlcolor=black]{hyperref}
\usepackage[figure, table]{hypcap}
\usepackage{algorithm}
\usepackage{algpseudocode}
... hier KEINE anderen Pakete mehr eingebunden ...

Tollerweise bekomme ich nun also oben genannte Warnung sobald ich eine Grafik im Text referenziere (andere Verweise auf Kapitel haben zu keinen Problemen geführt) obwohl ich die vorgeschlagene Reihenfolge einhalte. Wenn ich die Reihenfolge spaßeshalber mal umdrehe, also einfach mal \usepackage{algorithm} vor \usepackage[...]{hyperref} setze, kommt die Warnung nicht... --> Sinn?
Ich muss allerdings sagen, dass ich keine Ahnung habe, ob in diesem Fall dann das algorithmicx Paket noch seinen Dienst verrichtet...


PS: Minimalbeispiel in kürze...

Minimalbeispiel:


\documentclass{report}
\usepackage{graphicx}
\usepackage[pdfstartview={FitH},
plainpages=false,
pdfpagelabels,
colorlinks=true,
linkcolor=black,
citecolor=black,
urlcolor=black]{hyperref}
\usepackage[figure, table]{hypcap}
\usepackage{algorithm}
\usepackage{algpseudocode}

\begin{document}

\chapter{Kapitel 1}
\label{kap1}
Blablablablablablabla \ref{kap1}.

\begin{figure}
\centering
\includegraphics[width=\textwidth]{Winter}
\caption{Windows im Winter}
\label{winter}
\end{figure}

Blablablablablablabla .
\end{document}

In dem Beispiel brauch ich das Bild nicht mal zu referenzieren und schon bekomm ich die Warnung:

destination with the same identifier (name{figure.1.1}) has been already used, duplicate ignored \end{document} (followed by: <Winter.jpg>] (document.aux) )) min document.tex line 32 1210044660265 93290

Wenn ich die beiden Anweisungen für die algopakete vor das hyperref stelle, verschwindet die Warnung.

sommerfee
06-05-2008, 06:08
Die korrekte Ladereihenfolge ist laut hyperref README: float, dann hyperref, dann algorithm, also:



\documentclass{report}
\usepackage{graphicx}
\usepackage{float}
\usepackage[pdfstartview={FitH},
plainpages=false,
pdfpagelabels,
colorlinks=true,
linkcolor=black,
citecolor=black,
urlcolor=black]{hyperref}
\usepackage[figure, table]{hypcap}
\usepackage{algorithm}
\usepackage{algpseudocode}

\begin{document}
...

fatsack
06-05-2008, 06:13
Danke, dann klappt's auch mit dem Minimalbeispiel. :)

Das muss ich damals wohl übersehen haben. Ich hab vorhin, als ich den Thread eröffnet habe nicht mal mehr die Stelle über hyperref gefunden.

PS: Kann's auch jetzt werden in der README noch in der algorithmicx.pdf finden. Wo stand das gleich nochmal?

sommerfee
06-05-2008, 06:32
PS: Kann's auch jetzt werden in der README noch in der algorithmicx.pdf finden. Wo stand das gleich nochmal?

ftp://ftp.dante.de/tex-archive/macros/latex/contrib/hyperref/README
ftp://ftp.dante.de/tex-archive/macros/latex/contrib/hyperref/README.pdf

fatsack
06-05-2008, 06:37
Danke, hab in der algorithmicx README geschaut...

Earl Grey
24-02-2009, 17:23
Liebe Spezialisten,


Die korrekte Ladereihenfolge ist laut hyperref README: float, dann hyperref, dann algorithm, also:



meine Ladereihenfolge sieht genau so aus. Ich verwende algorithm und algorithmic. Leider bekomme ich trotzdem die Warnungen (same identifier...) nicht weg, außer ich verwende keine Algorithmen oder keine Bilder ;-)

Wenn mir in diesem Zusammenhang noch jemand sagen kann, wie algorithm, algorithmic, algorithmicx und algpseudocode zusammenhängen und wie ich sie am sinnvollsten für das Setzen von Pseudocode nutzen kann, dann bin ich sehr glücklich.

Sicherheitshalber, hier noch mein erster Versuch, ein "Minimalbeispiel" zu erstellen. Damit bekomme ich schon zwei Warnungen, ich muss noch nicht mal Bilder im Dokument haben :-)



\documentclass[abstracton]{scrartcl}

% links in PDF-Datei für Verweise
\usepackage[bookmarks=false]{hyperref}
\hypersetup{colorlinks=true, breaklinks=true, linkcolor=black, menucolor=darkblue, urlcolor=darkblue, citecolor=darkblue, plainpages=false}

% Pakete für Pseudocode
\usepackage{algorithmic}

\begin{document}

\begin{algorithmic}[1]
\FORALL{$i$ such that $0\leq i\leq 10$}
\STATE carry out some processing
\ENDFOR
\end{algorithmic}

\end{document}


Vielen Dank.

Earl Grey
24-02-2009, 18:29
So, ich bin nun ein Stückchen weiter gekommen: wenn ich algorithmicx statt algorithmic verwende, treten keine Warnungen mehr auf. Wenn ihr mir nun sagen könnt, dass ich dadurch keine Einschränkungen habe oder mit algorithmicx nichts falsch mache, dann werde ich dabei bleiben und algorithmic ist für mich Geschichte. Leider kann ich den Unterschied der beiden Pakete nicht selbst abschätzen.

Danke für eure Hilfe.

sommerfee
03-03-2009, 19:01
Es gibt leider eine Inkompatibilität von algorithmic mit hyperref, die nicht so leicht zu beheben ist. Ich habe in der Vergangenheit mal ein wenig mit der Kombination herumgespielt, herausgekommen ist unter anderem ein Zusatzpaket namens algorithmic-fix:

http://groups.google.de/group/comp.text.tex/browse_frm/thread/bbf264a827c258b7?hl=de#2e85a2c13c1a69d0

http://www.mrunix.de/forums/showthread.php?t=56962

Liebe Grüße,
Axel