アルゴリズムの自動参照

アルゴリズムの自動参照
\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 分ほどかかりました。

関連情報