我想通过链接到特定行来描述算法的各个部分。我发现该包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}
结果:
答案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}
答案2
我认为如果你想参考有条件的行,你可以去
\For{Condition\label{line1}}{