如何用相同的算法编号重述一个算法?

如何用相同的算法编号重述一个算法?

我尝试在一篇论文中复制两份相同的算法,使用相同的数字两次。环境restatable能够重现该算法,但每次重述时都会引入一个新的算法编号。

例如:

\begin{restatable}{algorithm}{myAlgo}
   \vdots
\end{restatable}
% ...
\myAlgo*  % will introduce a new number, even when using *

问题:是否有一种(简单的)方法可以使用与以前相同的数字来重述算法。

注意:这个问题极其类似于这个。但是,那里没有提供任何答案,并且这个问题(对我来说,莫名其妙地)被关闭了。

答案1

不以 递增的计数器restatable存储在逗号分隔的列表中\thmt@innercounters。默认情况下,它仅包含equation。您可以重新定义它以使用算法计数器,至少对于algorithm2ealgocf

\documentclass{article}
\usepackage{algorithm2e,thmtools}

\makeatletter
\def\thmt@innercounters{equation,algocf}
\makeatother

\begin{document}

\begin{restatable}{algorithm}{myAlgo}
   \SetAlgoLined
   \KwData{this text}
   \KwResult{how to write algorithm with \LaTeX2e }
   initialization\;
   \While{not at end of this document}{
   read current\;
   \eIf{understand}{
   go to next section\;
   current section becomes this one\;
   }{
   go back to the beginning of current section\;
   }
   }
   \caption{How to write algorithms}
\end{restatable}

\myAlgo*

\end{document}

算法

相关内容