有没有办法algpseudocode
根据现有命令定义新命令?特别是,在我的文档中,我需要同时使用\ForAll
和\ForEach
命令。事实证明,仅仅重命名\ForAll
对我来说不起作用。我想定义一个新命令,\ForEach
使其保留所有功能\ForAll
(包括排版“do”和“end for”,以及缩进循环内的所有状态)。
下面的代码显示了我到目前为止尝试过的方法,但显然这不是可行的方法。我需要将第 3、4、5 行与新命令一起移动,并排版“end for”。
\documentclass{article} % Specifies the document class
\usepackage{amsmath}
\usepackage{algpseudocode}
\usepackage{algorithm}
\algnewcommand\algorithmicforeach{\textbf{for each:}}
\algnewcommand\ForEach{\item[ \algorithmicforeach]}
\begin{document}
\begin{algorithm} \caption{Iterative Policy Evaluation Algorithm}
\begin{algorithmic}[1]
\Require $\pi$, the policy to be evaluated
\State Initilize $V(s) = 0$, for all $s \in \mathcal S^+$
\Repeat
\ForEach {$s \in \mathcal S $}
\State $v \gets V(s)$
\State $V(s) \gets \sum_a \pi(s,a) \sum_{s'} \mathcal P_{ss'}^a [ \mathcal R_{ss'}^a + \gamma V(s')$
\State $\Delta \gets \max(\Delta, |v- V(s)|)$
%\EndFor
\Until {$\Delta < \theta \text{ (a small positive number)}$}
\Ensure $V \approx V^\pi$
\end{algorithmic}
\end{algorithm}
\end{document}
答案1
在algpseudocode
包中,ForAll
循环定义如下:
\algnewcommand\algorithmicforall{\textbf{for all}}
\algdef{S}[FOR]{ForAll}[1]{\algorithmicforeall\ #1\ \algorithmicdo}
您可以简单地定义一个ForEach
模仿ForAll
循环的循环,如下所示:
\algnewcommand\algorithmicforeach{\textbf{for each}}
\algdef{S}[FOR]{ForEach}[1]{\algorithmicforeach\ #1\ \algorithmicdo}
\documentclass{article} % Specifies the document class
\usepackage{amsmath}
\usepackage{algpseudocode}
\usepackage{algorithm}
\algnewcommand\algorithmicforeach{\textbf{for each}}
\algdef{S}[FOR]{ForEach}[1]{\algorithmicforeach\ #1\ \algorithmicdo}
\begin{document}
\begin{algorithm} \caption{Iterative Policy Evaluation Algorithm}
\begin{algorithmic}[1]
\Require $\pi$, the policy to be evaluated
\State Initilize $V(s) = 0$, for all $s \in \mathcal S^+$
\Repeat
\ForEach {$s \in \mathcal S $}
\State $v \gets V(s)$
\State $V(s) \gets \sum_a \pi(s,a) \sum_{s'} \mathcal P_{ss'}^a [ \mathcal R_{ss'}^a + \gamma V(s')$
\State $\Delta \gets \max(\Delta, |v- V(s)|)$
\EndFor
\Until {$\Delta < \theta \text{ (a small positive number)}$}
\Ensure $V \approx V^\pi$
\end{algorithmic}
\end{algorithm}
\end{document}