Overleaf 上的 if 语句后的 ELSE if 块会抛出错误

Overleaf 上的 if 语句后的 ELSE if 块会抛出错误

我想实现这样的 if else 块

if A
  if B
    if C
       else if D
    end
   if E
   end
  end
end

在哪里如果 C如果 E有相同的缩进。如果 B在下面如果一个如果 C如果 E两者都在如果 B

我用了\SetKwIF{如果}{}{如果}{}{ELSEIF}{否则}{结束如果}设置 if 和 else 规则

我也把它写在了背面来实现上面的部分。我无法实现 else if 部分。如果我写否则* overleaf 抛出错误。

\documentclass{article}
\usepackage[linesnumbered]{algorithm2e}
\usepackage{xcolor}
\newcommand\mycommfont[1]{\small\ttfamily\textcolor{blue}{#1}}
\SetCommentSty{mycommfont}

\SetKwInput{KwInput}{Input}   % Set the Input
\SetKwInput{KwOutput}{Output} %Set the Output
\SetKwIF{If}{}{}{if}{}{ELSEIF}{else}{end if}%
\begin{document}
\SetAlgoNoLine
\begin{algorithm}[!ht]
\KwInput{abc}
\KwOutput{abc}
\KwData{abc}
\If{(A)}
    {
    \If{B}{
    \If{C}{
       do this
    }
    \ELSEIF{D}{
    Do this
    }
    
     \If{(E)}{
       do this
    }
    
    }
   }
       
\end{algorithm}
\end{document}
      

我收到的错误

在此处输入图片描述

我用于该算法的包 \usepackage[linesnumbered]{algorithm2e}

答案1

您需要填写第二个参数来\SetKwIF创建宏:

\documentclass{article}
\usepackage[linesnumbered]{algorithm2e}

\SetKwIF{If}{ELSEIF}{Else}{if}{then}{else if}{else}{endif}

\begin{document}
\SetAlgoNoLine
\begin{algorithm}[!ht]
\uIf{C}{
   do this
}
\ELSEIF{D}{
Do this
}
\end{algorithm}
\end{document}

在此处输入图片描述

相关内容