重命名算法包中的 while 循环

重命名算法包中的 while 循环

如何While使用algorithm和重命名循环algpseudocode

\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\begin{document}
 \begin{algorithm*}
  \caption{bar baz}
   \label{alg:interesting}
    \begin{algorithmic}[1]
     \While{foo bar}
     \EndWhile
    \end{algorithmic}
 \end{algorithm*}
\end{document}

它打印出来为

While foo bar do
end while

我希望它能

Until foo bar repeat

end while

我如何仅更改 while 循环的第一部分。

答案1

while 块的原始定义algpseudocode.sty

\algdef{SE}[WHILE]{While}{EndWhile}[1]{\algorithmicwhile\ #1\ \algorithmicdo}%
{\algorithmicend\ \algorithmicwhile}%

然后,您可以\algorithmicwhile用替换\algorithmicuntil,并\algorithmicdo用 替换\algorithmicrepeat;完整的示例:

\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}

\algdef{SE}[WHILE]{While}{EndWhile}[1]{\algorithmicuntil\ #1\ \algorithmicrepeat}{\algorithmicend\ \algorithmicwhile}%

\begin{document}
 \begin{algorithm*}
  \caption{bar baz}
   \label{alg:interesting}
    \begin{algorithmic}[1]
     \While{foo bar}
     \EndWhile
    \end{algorithmic}
 \end{algorithm*}
\end{document}

在此处输入图片描述

我只按照问题的要求替换了第一次出现的\algorithmicwhile;也许最好同时更改两者。

也许,正如埃格尔在评论中建议,更好的选择是定义一个新的Until块;以下是如何做到这一点:

\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}

\algdef{SE}[UNTIL]{Until}{EndUntil}[1]{\algorithmicuntil\ #1\ \algorithmicrepeat}{\algorithmicend\ \algorithmicuntil}%

\begin{document}
 \begin{algorithm*}
  \caption{bar baz}
   \label{alg:interesting}
    \begin{algorithmic}[1]
     \Until{foo bar}
     \EndUntil
    \end{algorithmic}
 \end{algorithm*}
\end{document}

在此处输入图片描述

相关内容