autoref para algoritmos

autoref para algoritmos
\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

\autorefsólo funciona completamente con una \....autorefnamemacro correspondiente, es decir, \sectionautorefnameetc.

hyperrefextrae 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, \fooautorefnamedebe existir; de lo contrario, se ignora (y se envía una advertencia a la consola).

El algorithmentorno tiene un contador del mismo nombre, por lo que

\newcommand{\algorithmautorefname}{Algorithm}

le proporcionará hyperrefla 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}

ingrese la descripción de la imagen aquí

Tenga en cuenta que ese cleverefpaquete 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 .logarchivo:

Las definiciones de los contadores se escriben en el .logarchivo como c@foo=\countY, donde Yes 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@linees (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.

información relacionada