两种针对不同类型算法的算法计数器

两种针对不同类型算法的算法计数器

我想在 Latex 中创建两个单独的算法计数器。第一个用于我的主要算法,第二个用于子程序。

具体来说,我现在有以下算法(按顺序):

算法 1

算法2

算法3

我想将其改成(按顺序):

算法 1

子程序 1(因此名称和计数器不同)

算法2

如何才能做到这一点?

我用:

\documentclass{article}
\usepackage{algorithm}    
\usepackage{algorithmic}     
\renewcommand{\algorithmicrequire}{\textbf{Input:}}
\renewcommand{\algorithmicensure}{\textbf{Output:}}

\begin{document}

\begin{algorithm}[H]
\caption{NameForAlgo1}
\label{}
\begin{algorithmic}[1]

\end{algorithmic}
\end{algorithm}

\begin{algorithm}[H]
\caption{NameForSubRoutine1}
\label{}
\begin{algorithmic}[1]

\end{algorithmic}
\end{algorithm}

\begin{algorithm}[H]
\caption{NameForAlgo2}
\label{}
\begin{algorithmic}[1]

\end{algorithmic}
\end{algorithm}

\end{document}  

答案1

algorithms基于包float,因此一个非常简单的修复方法是在前言中为子程序声明一个新的浮点数。为了确保它们出现在算法列表中,您可能应该确保它们进入带有扩展名的文件。您可能还应该确保您有一个用于子程序的 ToC 分段命令,因为我认为在使用loa时不会自动创建这些命令。\newfloat

但如果你添加

\newfloat{subroutine}{htbp}{loa} \floatname{subroutine}{Subroutine} \makeatletter\newcommand\l@subroutine{\@dottedtocline{1}{1.5em}{2.3em}}\makeatother

在开始文档之前,[编辑:然后\begin{subroutine}\end{subroutine}\begin{algorithm}需要的地方使用,]我认为你应该没问题。

相关内容