algorithm2e:引用 while 循环开始/结束时的行号

algorithm2e:引用 while 循环开始/结束时的行号

我想引用 for/while 循环开始的行。但是,使用常规\label命令我无法在相应行中设置标签。我还能如何引用 while 循环的开头?特别是对于下面的示例,我如何为第 2-6 行创建引用?


\usepackage[linesnumbered]{algorithm2e}

\begin{document}

Reference to Lines \ref{alg:taskA}-\ref{alg:taskC}. How do I achieve a reference to lines 2-6?

\vspace{2em}

\begin{algorithm}[H]
\KwData{some data}
\KwResult{some result}
initialization\;
\While{termination condition not satisfied}{
Do task A\label{alg:taskA}\\
Do task B\label{alg:taskB}\\
Do task C\label{alg:taskC}\\
}
\end{algorithm}

\end{document}

在此处输入图片描述

答案1

}好吧,只需在while 循环结束后添加一个新标签:并在 while 循环的开始处\label{alg:endWhile} 添加一个标签...\label{alg:startWhile}

因此,有了以下 mwe

\documentclass{article}

\usepackage[linesnumbered]{algorithm2e}


\begin{document}

Reference to Lines~\ref{alg:taskA}--\ref{alg:taskC}. How do I achieve a reference to lines 2-6?

Like~\ref{alg:startWhile}--\ref{alg:endWhile}? % <===========================

\vspace{2em}

\begin{algorithm}[H]
\KwData{some data}
\KwResult{some result}
initialization\;
\While{termination condition not satisfied}{\label{alg:startWhile} % <===========================
Do task A\label{alg:taskA}\\
Do task B\label{alg:taskB}\\
Do task C\label{alg:taskC}\\
}\label{alg:endWhile} % <===============================================
\end{algorithm}

\end{document}

你得到了想要的结果:

结果

相关内容