如何手动设置 algorithm2e 中 end 语句的行号?

如何手动设置 algorithm2e 中 end 语句的行号?

\nlset我可以使用命令(与 一起)在 algorithm2e 环境中手动设置行号\LinesNotNumbered。但是,我不知道如何对带有endelse语句的行进行相同的操作,如下图所示:

algorithm2e 输出示例

答案1

这是一个使用的解决方案

  • 一种特殊的if-then-else构造称为\nlIf
  • 包装宏\nlsetend在本地重新定义 this \nlIf(在它之前调用),以添加自定义行号
\documentclass[margin=5mm]{standalone}
\usepackage{algorithm2e,amsmath} 

\newcommand{\nlsetend}[1]{%
\SetKwIF{nlIf}{ElseIf}{Else}{if}{then}{else if}{else}{\nlset{#1}end}
}
\begin{document}
\begin{algorithm}[H]
    \eIf{$\hdots$}{
        \eIf{$rank \neq \hdots$}{
            send\;
            send\;
        }{
            $\hdots$
        }
    }{
        $\hdots$\;
    }
    \eIf{$\hdots$}{
        \nlsetend{test}
        \enlIf{$rank \neq \hdots$}{
            send\;
            send\;
            }{
                $\hdots$
                }
                }{
                    $\hdots$\;
    }

\end{algorithm}
\end{document}

在此处输入图片描述

相关内容