我正在重命名环境中的行的“行”标签algorithmic
,因为我正在使用环境的默认标签lstlisting
。一旦我\crefname
为其添加定义,计数器就不会增加。
这是一个简单的问题,所以一个例子可以最好地说明它。
\documentclass{article}
\usepackage{algorithm}
\usepackage{hyperref}
\usepackage{algpseudocode}
\usepackage{cleveref}
\crefname{opC}{operation}{operations}
\Crefname{opC}{Operation}{Operations}
\begin{document}
\begin{algorithm}[bt]
\begin{algorithmic}[1]
\State First line
\label[opC]{line:1}
\State Second line
\label[opC]{line:2}
\end{algorithmic}
\end{algorithm}
Refer here to \cref{line:1} and to \cref{line:2}.
These two work just fine: \cref{line:4} and \cref{line:3}.
\begin{algorithm}[bt]
\begin{algorithmic}[1]
\State Another first line
\label{line:3}
\State Another second line
\label{line:4}
\end{algorithmic}
\end{algorithm}
\end{document}
我尝试过\newcounter{opC}
,但\crefalias{opC}{line}
无济于事。
顺便说一句,\ref
返回的数字与第二个算法中显示的一样。此外,链接hyperref
指向正确的位置(虽然在这个 MWE 中很难检查),所以只有实际标签是错误的。
答案1
在进一步研究了cleveref
软件包文档之后,我偶然发现了14.1 非错误。尽管我没有\label
在另一个命令中使用可选参数(如第三条建议的那样),但似乎应该用花括号括起来才能正常工作。
将上述示例中的更正\label[opC]{line:1}
为{\label[opC]{line:1}}
即可解决问题。