我正在尝试使用算法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
选项更好。
我更喜欢第一个例子的解决方案,但仅针对第二个例子的解决方案仍会被标记为已接受。