引用 algorithm2e 中以关键字开头的行

引用 algorithm2e 中以关键字开头的行

我想通过链接到特定行来描述算法的各个部分。我发现该包algorithm2e非常适合排版算法,而且它似乎还可以处理标签。

但是,它似乎没有按预期工作。我是否遗漏了正确的语法?

例如,请参见下面的 MWE 及其输出。第一次和第三次尝试显示指向\ref我想要标记的行上方的行的链接。第二次尝试是正确的,只是它跳过了一行。但是,我认为这是正常的,因为当自动编号被禁用时,此语法应该手动对行进行编号。我只是为了完整性而在这里包含它。

请注意,该问题至少出现在 中\For\ForEach因此\If我认为所有关键字都是相同的,但这当然可能是错误的。

代码:

\documentclass{article}

\usepackage[linesnumbered]{algorithm2e}

\begin{document}

\begin{algorithm}
  \caption{Algorithm 1}
  First line \;
  \label{line1}\For{Condition}{
    Third line\;
  }
\end{algorithm}

I want to refer to line 2: \ref{line1}.

\begin{algorithm}
  \caption{Algorithm 2}
  First line \;
  \nl\label{line2}\For{Condition}{
    Third line\;
  }
\end{algorithm}

I want to refer to line 2: \ref{line2}.

\begin{algorithm}
  \caption{Algorithm 3}
  First line \;
  \nllabel{line3}\For{Condition}{
    Third line\;
  }
\end{algorithm}

I want to refer to line 2: \ref{line3}.

\end{document}

结果:

Output

答案1

这似乎可以解决问题(将标签置于条件中):

\documentclass{article}

\usepackage[linesnumbered]{algorithm2e}


\begin{document}

\begin{algorithm}
  \caption{Algorithm 1}
  First line \;
  \For{\label{line} Condition}{
    Third line\;
  }
\end{algorithm}

I want to refer to line 2: \ref{line}.

\end{document}

enter image description here

答案2

我认为如果你想参考有条件的行,你可以去

 \For{Condition\label{line1}}{

相关内容