
\usepackage{algorithm,algpseudocode}
\usepackage{hyperref}
Wenn ich also
\begin{algorithm}
\caption{Baseline}\label{ALG_baseline}
\begin{algorithmic}[1]
...
\end{algorithmic}
\end{algorithm}
Die Ausgabe sieht ungefähr so aus:
--------------------------------------
Algorithm 1: Baseline
--------------------------------------
...
--------------------------------------
Es gibt also offensichtlich bereits einen Zähler.
Aber
\autoref{ALG_baseline} is simply linked to with a number.
wird in
[1] is simply linked to with a number.
Wie erstelle ich eine Autoref-Ausgabe?
[Algorithm 1] is ...
stattdessen?
Antwort1
\autoref
funktioniert komplett nur mit entsprechendem \....autorefname
Makro \sectionautorefname
etc.
hyperref
extrahiert die Referenzinformationen aus den spezifischen Etiketteninformationen, in denen auch der entsprechende Zählername gespeichert ist.
Dies bedeutet, dass der Zähler, wenn er den Namen hat foo
, \fooautorefname
vorhanden sein muss – andernfalls wird er ignoriert (und eine Warnung an die Konsole gesendet).
Die algorithm
Umgebung hat einen Zähler mit dem gleichen Namen, also
\newcommand{\algorithmautorefname}{Algorithm}
hyperref
wird die richtigen Informationen liefern .
\documentclass{article}
\usepackage{algorithm,algpseudocode}
\usepackage{hyperref}
\newcommand{\algorithmautorefname}{Algorithm}
\begin{document}
\begin{algorithm}
\caption{Baseline}\label{ALG_baseline}
%\begin{algorithmic}[1]
%
%\end{algorithmic}
\end{algorithm}
\autoref{ALG_baseline} is simply linked to with a number.
\end{document}
Bitte beachten Sie, dass das cleveref
Paket eine ähnliche Funktion bereitstellt, die Namen müssen jedoch ebenfalls eingerichtet werden \crefname{algorithm}{algorithm}{algorithms}
usw.
Aktualisieren
Dies geht auf den Kommentar des OP zum Erkennen von Zählernamen ein.
Ein Auszug der .log
Datei:
Die Zählerdefinitionen werden .log
als in die Datei geschrieben c@foo=\countY
, wobei Y
die Nummer eines freien Zählerregisters ist und (von wenigen Ausnahmen abgesehen) nicht wirklich wichtig ist.
\@float@every@algorithm=\toks16
\c@algorithm=\count88
Später finden wir
\c@ALG@line=\count89
\c@ALG@rem=\count90
\c@ALG@nested=\count91
\ALG@tlm=\skip43
\ALG@thistlm=\skip44
\c@ALG@Lnr=\count92
\c@ALG@blocknr=\count93
\c@ALG@storecount=\count94
\c@ALG@tmpcounter=\count95
\ALG@tmplength=\skip45
Dies bedeutet, dass es ALG@line
sich (sehr wahrscheinlich) um den Zeilennummernzähler handelt.
Aufgrund der @
Verwendung im Namen handelt es sich jedoch um einen „versteckten“ Zähler!
Antwort2
Ich habe eine halbe Stunde gebraucht, um herauszufinden, dass ich \renewcommand{} statt nur \newcommand verwenden musste, um den Hyperref-Standardalgorithmusnamen zu überschreiben.