Discussion:
hyperref and algorithm2e, autoref, no autorefname for algocfline, how to define autoref name?
(zu alt für eine Antwort)
Christoph
2011-11-17 14:52:01 UTC
Permalink
Mittels \autoref{} referenzierte Labels aus der algorithm2e algorithm-
Umgebung werden nicht richtig als PDF-Link gesetzt.
Hyperref gibt die Warnung: No autoref name for `algocfline' on input
line ...

Das Problem konnte ich mittels Definition von \def
\algocflineautorefname{Algorithmus} lösen.

\documentclass{article}
\usepackage[linesnumberedhidden,ruled,boxed]{algorithm2e}
\usepackage[german]{hyperref}
\usepackage[utf8]{inputenc}

\def\algocflineautorefname{Algorithmus}

\begin{document}
\begin{algorithm}[htb]
\SetLine
\KwIn{Bang!}
\KwOut{Boom!}

\While{true}{
magic stuff!
}

return Boomh!
\caption{Some thing}
\label{alg:thing}
\end{algorithm}

Verweis auf \autoref{alg:thing}

\end{document}

Gefunden habe ich den Trick mit der Definition hier:
http://tex.stackexchange.com/questions/24981/how-to-get-autoref-working-with-different-counters-for-different-listing-environ

Leider konnte mir die Dokumentation zu Hyperref bei der Lösung nicht
weiterhelfen.
Da steht zwar was zu dem Thema Kompatibilität von hyperref mit
algorithm in der Readme.pdf drin aber das hat mir überhaupt nicht
weitergeholfen.

Vielleicht hilft das jetzt Jemandem weiter.

viele Güße
Christoph
Heiko Oberdiek
2011-11-17 15:41:46 UTC
Permalink
Post by Christoph
Mittels \autoref{} referenzierte Labels aus der algorithm2e algorithm-
Umgebung werden nicht richtig als PDF-Link gesetzt.
Hyperref gibt die Warnung: No autoref name for `algocfline' on input
line ...
Das Problem konnte ich mittels Definition von \def
\algocflineautorefname{Algorithmus} lösen.
\documentclass{article}
\usepackage[linesnumberedhidden,ruled,boxed]{algorithm2e}
\usepackage[german]{hyperref}
\usepackage[utf8]{inputenc}
\def\algocflineautorefname{Algorithmus}
\begin{document}
\begin{algorithm}[htb]
\SetLine
\KwIn{Bang!}
\KwOut{Boom!}
\While{true}{
magic stuff!
}
return Boomh!
\caption{Some thing}
\label{alg:thing}
\end{algorithm}
Verweis auf \autoref{alg:thing}
\end{document}
http://tex.stackexchange.com/questions/24981/how-to-get-autoref-working-with-different-counters-for-different-listing-environ
Leider konnte mir die Dokumentation zu Hyperref bei der Lösung nicht
weiterhelfen.
Mit der algorithm2e-Version von CTAN und auf der TeX Live konnte ich
dein Beispiel nicht nachvollziehen:

* Der Zähler heißt "algocf", nicht "algocfline".
Bei "line" im Namen würde ich auch eher einen Zeilenzähler
vermuten.
* Das Paket algorithm2e definiert bereits selbst die
\*autorefname-Makros für das \autoref-Feature von hyperref.
* Der Befehl \SetLine ist unbekannt.

Das Herausfinden der Version war nicht ganz so trivial, da
algorithm2e.sty eine seltsame \ProvidesPackage-Angabe verwendet:

| \ProvidesPackage{algorithm2e}[2008/00/00 v3.10 algorithms environments]

Als Kommentare findet man:

| % $Id: algorithm2e.sty,v 4.1 2009/12/15 08:54:08 cfiorio Exp $

| % History:
| %
| % - december 14 2009 - revision 4.01
| [...]
| % - november 17 2009 - revision 4.00 -
| [...]
| % - \SetLine becomes \SetAlgoLined

Dem Autor habe ich einen Bug-Report geschickt wegen dem
falschen Datum und der falschen Versionsangabe in \ProvidesPackage.

Ansonsten empfehle ich, einfach die aktuelle Version zu verwenden, die
es nun auch schon seit fast zwei Jahren gibt.
--
Heiko Oberdiek
Christoph
2011-11-17 16:23:08 UTC
Permalink
Vielen Dank Heiko,

in meinem System ist wohl eine ältere Version von algorithm2e
installiert.

$Id: algorithm2e.sty,v 3.9 2005/10/04 12:34:52 fiorio Exp $

Die aktuelle Dokumentation von algorithm 4.01 weist unter 4.
Compatibility Issues auf die Änderung des Befehls
\SetLine hin. ( dieser heißt jetzt \SetAlgoLine).

In einem großen Latex-Dokument erhalte ich auch die Meldung "Package
hyperref Warning: No autoref name for `algocf' on input line 37"
Dort ist es algocf und nicht algocfline und in diesem Dokument musste
ich auch genau algocf definieren.
Ich konnte leider noch nicht feststellen warum in meinem
Minimalbeispiel algocfline und in dem großen Dokumen algocf verlangt
wird.
Ich probiere mal die aktuelle Version von algorithm2e von ctan aus.
Damit sollten sich meine Probleme in Luft auflösen.

viele Grüße
Christoph
Christoph
2011-11-17 17:42:21 UTC
Permalink
mit einer frischen TexLive Installation sieht die Welt schon wieder
viel fröhlicher aus.
In meinem letzten Beitrag hatte ich mich verschrieben. Es heißt nicht
\SetAlgoLine

sondern

\SetAlgoLined

mit "d".

Vielen Dank nochmal für den Hinweis mit der Version.

Loading...