我使用的是 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}