
\usepackage{algorithm,algpseudocode}
\usepackage{hyperref}
だから私が
\begin{algorithm}
\caption{Baseline}\label{ALG_baseline}
\begin{algorithmic}[1]
...
\end{algorithmic}
\end{algorithm}
出力は次のようになります。
--------------------------------------
Algorithm 1: Baseline
--------------------------------------
...
--------------------------------------
つまり、明らかに、すでにカウンターが存在しているのです。
しかし
\autoref{ALG_baseline} is simply linked to with a number.
結果的に
[1] is simply linked to with a number.
オートリファレンス出力を作成するにはどうすればいいですか
[Algorithm 1] is ...
その代わり?
答え1
\autoref
\....autorefname
対応するマクロ、つまり\sectionautorefname
などを使用した場合にのみ完全に機能します。
hyperref
関連するカウンター名も保存されている特定のラベル情報から参照情報を抽出します。
つまり、カウンターの名前が である場合はfoo
、\fooautorefname
が存在する必要があります。そうでない場合は無視されます (コンソールに警告が送信されます)。
環境algorithm
には同じ名前のカウンターがあるので、
\newcommand{\algorithmautorefname}{Algorithm}
hyperref
正しい情報を提供します。
\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}
このcleveref
パッケージは同様の機能を提供しますが、名前なども設定する必要があることに\crefname{algorithm}{algorithm}{algorithms}
注意してください。
アップデート
これは、カウンターの名前の検出に関する OP のコメントに対応しています。
ファイルの抜粋.log
:
カウンタ定義は.log
としてファイルに書き込まれますc@foo=\countY
。ここで はY
空きカウンタ レジスタの番号であり、あまり重要ではありません (いくつかの例外を除く)。
\@float@every@algorithm=\toks16
\c@algorithm=\count88
その後、
\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
つまり、それはALG@line
(おそらく)行番号カウンタです。
@
ただし、名前に使用されているため、これは「隠し」カウンターです。
答え2
hyperref のデフォルトのアルゴリズム名を上書きするには、\newcommand だけではなく \renewcommand{} を使用する必要があることに気づくのに 30 分ほどかかりました。