![如何用相同的算法编号重述一个算法?](https://linux22.com/image/466694/%E5%A6%82%E4%BD%95%E7%94%A8%E7%9B%B8%E5%90%8C%E7%9A%84%E7%AE%97%E6%B3%95%E7%BC%96%E5%8F%B7%E9%87%8D%E8%BF%B0%E4%B8%80%E4%B8%AA%E7%AE%97%E6%B3%95%EF%BC%9F.png)
我尝试在一篇论文中复制两份相同的算法,使用相同的数字两次。环境restatable
能够重现该算法,但每次重述时都会引入一个新的算法编号。
例如:
\begin{restatable}{algorithm}{myAlgo}
\vdots
\end{restatable}
% ...
\myAlgo* % will introduce a new number, even when using *
问题:是否有一种(简单的)方法可以使用与以前相同的数字来重述算法。
注意:这个问题极其类似于这个。但是,那里没有提供任何答案,并且这个问题(对我来说,莫名其妙地)被关闭了。
答案1
不以 递增的计数器restatable
存储在逗号分隔的列表中\thmt@innercounters
。默认情况下,它仅包含equation
。您可以重新定义它以使用算法计数器,至少对于algorithm2e
是algocf
。
\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}