如何将引用放入 algorithm2e 包的 nlset 命令中

如何将引用放入 algorithm2e 包的 nlset 命令中

我想使用 algorithm2e 包提供现有算法的替代版本。我的源代码如下:

\begin{algorithm}[t]
\dots \;
\nlset{\ref{alg:previous:ref}} alternative line content \;
\dots \;
\end{algorithm}

但是,该源导致以下编译错误:! \reserved@a 的参数有一个额外的 }

有什么帮助吗?

编辑

模拟错误的最小文档:

\documentclass{article}
\usepackage{algorithm2e}
\usepackage{hyperref}
\begin{document}

\begin{algorithm}
line content \; \label{alg:previous:ref} 
\end{algorithm}

\begin{algorithm}
\nlset{\ref{alg:previous:ref}} alternative line content \;
\end{algorithm}

\end{document}

问题似乎发生在加载 hyperref 包时,如果没有它,它会运行良好。

答案1

您可以提取参考编号并将其存储在计数器中refcount。这是您的 MWE,目前正在与hyperref

在此处输入图片描述

\documentclass{article}
\usepackage{algorithm2e}% http://ctan.org/pkg/algorithm2e
\usepackage{refcount}% http://ctan.org/pkg/refcount
\usepackage{hyperref}% http://ctan.org/pkg/hyperref
\newcounter{mycount}% To store extracted references
  % Default printing using \themycount will be \arabic
\begin{document}

\begin{algorithm}
line content \; \label{alg:previous:ref} 
\end{algorithm}

\begin{algorithm}
\setcounterref{mycount}{alg:previous:ref}%
\nlset{\themycount} alternative line content \;
\end{algorithm}

\end{document}

当然,引用本身已经丢失。但是,我不确定您是否有兴趣保留超引用,因为很难理解它所用的上下文。

相关内容