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
表示有“起始线”,但没有“结束线”。