
\usepackage{algorithm,algpseudocode}
\usepackage{hyperref}
Então quando eu
\begin{algorithm}
\caption{Baseline}\label{ALG_baseline}
\begin{algorithmic}[1]
...
\end{algorithmic}
\end{algorithm}
a saída será mais ou menos assim:
--------------------------------------
Algorithm 1: Baseline
--------------------------------------
...
--------------------------------------
Então, obviamente, já EXISTE um contador.
Mas
\autoref{ALG_baseline} is simply linked to with a number.
resultará em
[1] is simply linked to with a number.
Como posso fazer a saída autoref
[Algorithm 1] is ...
em vez de?
Responder1
\autoref
só funciona completamente com uma \....autorefname
macro correspondente, ou seja, \sectionautorefname
etc.
hyperref
extrai as informações de referência de suas informações específicas do rótulo, onde o nome do contador relevante também é armazenado.
Isso significa que, se o contador for nomeado foo
, \fooautorefname
deverá existir - caso contrário, será ignorado (e um aviso será enviado ao console).
O algorithm
ambiente possui um contador com o mesmo nome, então
\newcommand{\algorithmautorefname}{Algorithm}
fornecerá hyperref
as informações corretas.
\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}
Observe que esse cleveref
pacote oferece um recurso semelhante, porém, os nomes também devem ser configurados, com \crefname{algorithm}{algorithm}{algorithms}
etc.
Atualizar
Isso aborda o comentário do OP sobre a detecção de nomes de contadores.
Um trecho do .log
arquivo:
As definições do contador são gravadas no .log
arquivo como c@foo=\countY
, onde Y
é o número de um registro de contador livre e não é realmente importante (exceto algumas exceções).
\@float@every@algorithm=\toks16
\c@algorithm=\count88
Mais tarde, 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
Isso significa que ALG@line
é (muito provavelmente) o contador do número da linha.
Porém, é um contador 'oculto', devido ao @
uso no nome!
Responder2
Levei meio minuto para descobrir que precisava usar \renewcommand{} em vez de apenas \newcommand para substituir o nome do algoritmo padrão do hyperref.