没有可见 EndIf 的 algpseudocode

没有可见 EndIf 的 algpseudocode

我有以下代码块

\begin{algorithmic}
\State $\mathit{FlatMask}(c)=0$
\If{$\mathit{Inc1}(c)>0$}
    \State $\mathit{FlatMask}(c)\;+\!\!=2(\mathit{Inc1}(c)-1)$
\EndIf
\end{algorithmic}

它使用包显示algpseudocode,但我希望最终打印万一不会显示,只是缩进被重置。

有什么想法吗?

答案1

以下是实现此目的的简单方法:

\algtext*{EndIf}% Remove "end if" text

有扩展答案这里

答案2

在这种情况下,定义一个新的循环很容易,因为它们不需要附带的结束宏:

在此处输入图片描述

\documentclass{article}
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\begin{document}
\algloopdefx{NoEndIf}[1]{\textbf{If} #1 \textbf{then}}
\begin{algorithmic}
\State $\mathit{FlatMask}(c)=0$
\NoEndIf{$\mathit{Inc1}(c)>0$}
    \State $\mathit{FlatMask}(c)\;+\!\!=2(\mathit{Inc1}(c)-1)$
\State Some code
\end{algorithmic}
\end{document}​

上面的例子中,\NoEndIF是新定义的“循环”结构。

相关内容