algorithm2e - 将命令应用于内容块时出现不必要的警告

algorithm2e - 将命令应用于内容块时出现不必要的警告

这一页,Andrew Swann 向我指出了一种对算法进行详细格式化的方法(我只需要出于教学原因这样做)。

此解决方案的问题在于,它会在以下示例中使用我的第二个算法产生不必要的警告。有没有办法避免出现这些警告?

平均能量损失

\documentclass[10pt,a4paper]{article}
    \usepackage[vlined]{algorithm2e}

    \newcommand\BlockIf[1]{\KwSty{Start If} \\ #1 \\ \KwSty{End If}}
    \newcommand\BlockElseIf[1]{\KwSty{Start Else If} \\ #1 \\ \KwSty{End Else If}}
    \newcommand\BlockElse[1]{\KwSty{Start Else} \\ #1 \\ \KwSty{End Else}}

    \makeatletter
        \renewcommand{\algocf@uIf}[2]{\If@ifthen{#1}\If@noend{\BlockIf{#2}}}
        \renewcommand{\algocf@uElseIf}[2]{\ElseIf@elseif{#1}\If@noend{\BlockElseIf{#2}}}
        \renewcommand{\algocf@Else}[1]{\Else@else\If@endif{\BlockElse{#1}}}
    \makeatother

\begin{document}

\begin{algorithm}[H]
    \uIf{1}{if...}
    \uElseIf{2}{else if...}
    \Else{else...}
\end{algorithm} 

\begin{algorithm}[H]
    \uIf{1}{if...}
    \uElseIf{2}{\ForAll{$i$}{Action $i$}}
    \Else{else...}
\end{algorithm} 

\end{document}

不必要的警告

! LaTeX Error: There's no line here to end.

See the LaTeX manual or LaTeX Companion for explanation.
Type  H <return>  for immediate help.
 ...                                              

l.26     \uElseIf{2}{\ForAll{$i$}{Action $i$}}

答案1

您可以根据想要的布局进行选择。

在强制换行之前,请确保 LaTeX 位于段落中,因此请将\\示例中的每个替换为

\mbox{}\\

或者,如果在段落之间,不要强制换行,因此请将每个段落替换\\

\ifhmode\\\fi

相关内容