algorithm2e - 如果具有多个条件和 vlined 选项,最好使用 Python 风格的语法

algorithm2e - 如果具有多个条件和 vlined 选项,最好使用 Python 风格的语法

我正在尝试使用算法2e编写一个如下所示的算法(使用 Latex+Paint 制作): 在此处输入图片描述

基于这个 Stack Exchange 答案,我尝试了以下操作:

\documentclass{article}
\usepackage[ruled, linesnumbered, vlined]{algorithm2e}

\begin{document}

\begin{algorithm}
\caption{Example algorithm}
\SetKw{And}{and} \SetKw{Not}{not} \SetKw{In}{in}
\SetKwArray{Array}{array} \SetKwData{El}{element}
\SetKwIF{If}{ElseIf}{Else}{if}{:}{else if}{else}{}
\SetKwBlock{Condition}{}{}
\SetKwFor{For}{for}{:}{}
\For{\El \In \Array}{
    \If{condition 1 \And \Condition{
        condition 2 \And \\
        \Not condition 3}}{
            do something with \El\;
       }
}
\end{algorithm}

\end{document}

得出的结果是: 在此处输入图片描述

红色标记显示了该问题。

然后,我尝试将语法改为 if-then 和 for-do,同时保留选项vlined,如下例所示

\documentclass{article}
\usepackage[ruled, vlined, linesnumbered]{algorithm2e}

\begin{document}

\begin{algorithm}
\caption{Example algorithm}
\SetKw{And}{and} \SetKw{Not}{not} \SetKw{In}{in}
\SetKwArray{Array}{array} \SetKwData{El}{element}
\SetKwIF{If}{ElseIf}{Else}{if}{then}{else if}{else}{}
\SetKwBlock{Condition}{}{}
\SetKwFor{For}{for}{do}{}
\For{\El \In \Array}{
    \If{condition 1 \And \Condition{
        condition 2 \And \\
        \Not condition 3}}{
            do something with \El\;
       }
}
\end{algorithm}

\end{document}

得出 在此处输入图片描述 现在的问题是,lined专门针对红色箭头所示区域的选项会比所需vlined选项更好。

我更喜欢第一个例子的解决方案,但仅针对第二个例子的解决方案仍会被标记为已接受。

相关内容