没有结束块文本的 algpseudocode

没有结束块文本的 algpseudocode

algpseudocode让我编写如下代码:

\documentclass{article}
\usepackage{algpseudocode}
\begin{document}

\begin{algorithmic}
\While{$n>3$}
   \If{$m>n$}
      \State ...
      \State ...
   \EndIf
   \If{$m>2$}
      \State ...
   \EndIf
\EndWhile
\end{algorithmic}

\end{document}

得到的结果类似于

while n>3
   if m>n
       ...
       ...
   end if
   if m>2
       ...
   end if
end while

我希望所有“end if”、“end while”、“end procedure”文本消失,并且所有内容向上压缩,结果是:

while n>3
   if m>n
       ...
       ...
   if m>2
       ...

也就是说,我想要一种用缩进表示块的 Pythonic 风格。

可以algpseudocode这样做吗?或者还有其他具有类似功能的软件包吗?

答案1

您无需(重新)定义方式\While\If工作方式,只需通过以下方式删除“结束行”文本即可

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

这是您的 MWE:

在此处输入图片描述

\documentclass{article}
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\algtext*{EndWhile}% Remove "end while" text
\algtext*{EndIf}% Remove "end if" text
\begin{document}

\begin{algorithmic}
\While{$n>3$}
   \If{$m>n$}
      \State ...
      \State ...
   \EndIf
   \If{$m>2$}
      \State ...
   \EndIf
\EndWhile
\end{algorithmic}

\end{document}​

答案2

使用没有结束选项如下

\usepackage[noend]{algpseudocode}

产量

在此处输入图片描述

答案3

你可以说

\algdef{SxnE}[WHILE]{While}{EndWhile}[1]{\algorithmicwhile\ #1\ \algorithmicdo}
\algdef{SxnE}[IF]{If}{EndIf}[1]{\algorithmicif\ #1\ \algorithmicthen}
\algdef{cxnE}{IF}{Else}{EndIf}

查找其他构造\algdef中的行algpseudocode.sty以进行修改。

该标志SxnE表示有“起始线”,但没有“结束线”。

相关内容