
\usepackage{algorithm,algpseudocode}
\usepackage{hyperref}
Así que cuando yo
\begin{algorithm}
\caption{Baseline}\label{ALG_baseline}
\begin{algorithmic}[1]
...
\end{algorithmic}
\end{algorithm}
la salida se verá algo así:
--------------------------------------
Algorithm 1: Baseline
--------------------------------------
...
--------------------------------------
Entonces, obviamente, ya HAY un contador.
Pero
\autoref{ALG_baseline} is simply linked to with a number.
resultará en
[1] is simply linked to with a number.
¿Cómo puedo hacer una salida autoref?
[Algorithm 1] is ...
¿en cambio?
Respuesta1
\autoref
sólo funciona completamente con una \....autorefname
macro correspondiente, es decir, \sectionautorefname
etc.
hyperref
extrae la información de referencia de la información de su etiqueta específica, donde también se almacena el nombre del contador relevante.
Esto significa que, si el contador se llama foo
, \fooautorefname
debe existir; de lo contrario, se ignora (y se envía una advertencia a la consola).
El algorithm
entorno tiene un contador del mismo nombre, por lo que
\newcommand{\algorithmautorefname}{Algorithm}
le proporcionará hyperref
la información correcta.
\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}
Tenga en cuenta que ese cleveref
paquete proporciona una característica similar; sin embargo, los nombres también deben configurarse, \crefname{algorithm}{algorithm}{algorithms}
etc.
Actualizar
Esto aborda el comentario del OP sobre la detección de nombres de contadores.
Un extracto del .log
archivo:
Las definiciones de los contadores se escriben en el .log
archivo como c@foo=\countY
, donde Y
es el número de un registro de contador gratuito y no es realmente importante (salvo algunas excepciones).
\@float@every@algorithm=\toks16
\c@algorithm=\count88
Más adelante encontramos
\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
Esto significa que ese ALG@line
es (muy probablemente) el contador de números de línea.
Sin embargo, es un contador "oculto", debido al @
uso en el nombre.
Respuesta2
Me tomó media hora descubrir que tenía que usar \renewcommand{} en lugar de solo \newcommand para sobrescribir el nombre del algoritmo predeterminado de hyperref.