我怎样才能删除 algorithmicx 中的 \EndIf 和 \EndFor?

我怎样才能删除 algorithmicx 中的 \EndIf 和 \EndFor?

出于空间考虑,我希望浓缩我的伪代码。

我觉得每个块末尾总是有一个 \EndIf 或 \EndFor 有点烦人,尤其是当块内只有一个语句时。例如

\documentclass[a4paper]{article}

\usepackage{algorithmicx}
\usepackage{algorithm} % http://ctan.org/pkg/algorithms
\usepackage{algpseudocode} % http://ctan.org/pkg/algorithmicx
\newcommand*{\Let}[2]{\State #1 $\gets$ \parbox[t]{\linegoal}{#2\strut}}
\algnewcommand\algorithmicinput{\textbf{INPUT: }}
\algnewcommand\Input{\item[\algorithmicinput]}
\algnewcommand\algorithmicoutput{\textbf{OUTPUT: }}
\algnewcommand\Output{\item[\algorithmicoutput]}

\begin{document}
\begin{algorithm}
\begin{algorithmic}[1]
\Procedure{A}{}
    \ForAll{$a\in A$}
        \If{$a\geq b$}
            \State\Return $a$
        \EndIf
    \EndFor
\EndProcedure
\end{algorithmic}
\end{algorithm}
\end{document}

为了节省空间,我希望删除它们,尽管这可能是非标准的。

一旦我这样做,代码就会因错误而无法编译。

是否有任何“非法”技巧可以将它们从输出 PDF 中删除?

答案1

预防结尾关键字排版

只需将noend选项传递给algpseudocode包:在代码中替换即可\usepackage[noend]{algpseudocode}获得\usepackage{algpseudocode}

在此处输入图片描述

为了避免在输入文件\EndIf中使用\Endfor

(经原帖作者澄清后,发现这是题外话。)

缺少\EndIf\EndFor会产生错误;您不能简单地在输入文件中省略它们。如果您想省去在输入文件中使用这些宏来关闭控制流语句的麻烦,您可以定义一个结合\If和的宏\EndIf,另一个结合\ForAll和的宏\EndFor,等等。

在此处输入图片描述

\documentclass[a4paper]{article}

\usepackage{algorithmicx}
\usepackage{algorithm}
\usepackage{algpseudocode}
\newcommand*{\Let}[2]{\State #1 $\gets$ \parbox[t]{\linegoal}{#2\strut}}
\algnewcommand\algorithmicinput{\textbf{INPUT: }}
\algnewcommand\Input{\item[\algorithmicinput]}
\algnewcommand\algorithmicoutput{\textbf{OUTPUT: }}
\algnewcommand\Output{\item[\algorithmicoutput]}

\begin{document}
\newcommand\sForAll[2]{ \ForAll{#1}#2\EndFor} % snappy version of \ForAll...\EndFor
\newcommand\sIf[2]{ \If{#1}#2\EndIf}          % snappy version of \If...\EndIf

\begin{algorithm}
\begin{algorithmic}[1]
\Procedure{A}{}
    \sForAll{$a\in A$}{
        \sIf{$a\geq b$}{
            \State\Return $a$
        }
    }
\EndProcedure
\end{algorithmic}
\end{algorithm}

\end{document}

答案2

\usepackage[noend]{algorithmic}

相关内容