在中algorithmic
,我想编写一个如下所示的循环:
repeat $n$ times:
[command]
end
我发现这个问题,解释了如何在 algorithm2e 中执行此操作,但它不适用于算法。
编辑:这是我现在所做的:
\documentclass{article}
\usepackage{algorithm}
\usepackage{algorithmic}
\begin{document}
\begin{algorithmic}[1]
\WHILE{Repeated at most $T$ times}
\STATE Do Stuff
\ENDWHILE
\end{algorithmic}
\end{document}
答案1
您可以使用以下内容定义新块algpseudocode
::\RepeatN
\documentclass{article}
\usepackage{algpseudocode}
\usepackage{algorithm}
\begin{document}
\algdef{SE}[REPEATN]{RepeatN}{End}[1]{\algorithmicrepeat\ #1 \textbf{times}}{\algorithmicend}
\begin{algorithmic}
\RepeatN{$n$}
\State Do stuff
\End
\end{algorithmic}
\end{document}
为了向后兼容,algorithmic
您可以使用algcompatible
:
\documentclass{article}
\usepackage{algcompatible}
\usepackage{algorithm}
\begin{document}
\algdef{SE}[REPEATN]{REPEATN}{END}[1]{\algorithmicrepeat\ #1 \textbf{times}}{\algorithmicend}
\begin{algorithmic}
\REPEATN{$n$}
\STATE Do stuff
\END
\end{algorithmic}
\end{document}
答案2
为了比较,仅使用包内部的版本algorithmic
:
\documentclass{article}
\usepackage{algorithm}
\usepackage{algorithmic}
\makeatletter
\newcommand{\REPEATN}[1]{\ALC@it\algorithmicrepeat%
\ #1 \textbf{times}\begin{ALC@rpt}}%
\newcommand{\ENDREPEAT}{\end{ALC@rpt}\ALC@it\algorithmicend}%
\makeatother
\begin{document}
\begin{algorithmic}[1]
\WHILE{Repeated at most $T$ times}
\STATE Do Stuff
\ENDWHILE
\REPEATN{$n$}
\STATE Do Stuff
\ENDREPEAT
\end{algorithmic}
\end{document}
可以看出,DG' 的解决方案algcompatible
更易于使用。