如何在 algorithm2e 的一行中使用 \lIf 和 \lFor?

如何在 algorithm2e 的一行中使用 \lIf 和 \lFor?

我使用的是 algorithm2e,熟悉 \lIf 和 \lFor,这样就不会出现多余的行。但是当我同时使用它们时,会插入一个额外的空白行。有没有办法避免出现该行?MWE 如下。

\usepackage[ruled,vlined,linesnumbered]{algorithm2e}
\DontPrintSemicolon
\SetKw{KwBreak}{break}
\begin{document}
\begin{algorithm}[ht]
\caption{BWT::decoding($C$, $S$)}
\lFor{$j=0$ to $n-1$}{\lIf{$C[j]=\$$}{\KwBreak}}
Do some other stuff
\end{algorithm}
\end{document}

答案1

自 5.1 版起algorithm2e它提供了l命令;来自更改日志/发行说明algorithm2e文档

l命令(如\lIf)现在可以与星号一起使用。如果完成,则不会结束行,因此您可以将 l命令括在另一个命令中。例如,您可以编写: \lForEach{$i$}{\lIf*{foo}{bar}}。请注意,当您使用星号时,不允许使用旁注。

因此,要么 ,要么\lFor*{.}{\lIf{..}{...}}\lFor{.}{\lIf*{..}{...}}可以。

在此处输入图片描述

\documentclass{article}

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

\DontPrintSemicolon
\SetKw{KwBreak}{break}

\begin{document}

\begin{algorithm}[ht]
  \caption{BWT::decoding($C$, $S$)}
  \lFor*{$j = 0$ to $n - 1$}{\lIf{$C[j] = \$$}{\KwBreak}}
  \lFor{$j = 0$ to $n - 1$}{\lIf*{$C[j] = \$$}{\KwBreak}}
  Do some other stuff
\end{algorithm}

\end{document}

相关内容