[Tex/LaTex] Creating sub-algorithms in latex using the algorithm package

algorithmspackages

I want to do something like this (see image below)
where I can describe my algorithm in smaller steps or "phases" as this person calls them. I've used the algorithm and algorithmic package before but I can't figure out how to do these "sub-algorithms" and i cant seem to find it in any tutorial.
enter image description here

Best Answer

You can use the algpseudocode package and define a simple command to let you format the phases; a simple example:

\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}

\newcommand\Algphase[1]{%
\vspace*{-.7\baselineskip}\Statex\hspace*{\dimexpr-\algorithmicindent-2pt\relax}\rule{\textwidth}{0.4pt}%
\Statex\hspace*{-\algorithmicindent}\textbf{#1}%
\vspace*{-.7\baselineskip}\Statex\hspace*{\dimexpr-\algorithmicindent-2pt\relax}\rule{\textwidth}{0.4pt}%
}
\begin{document}

\begin{algorithm}
\caption{Euclid’s algorithm}\label{euclid}
\begin{algorithmic}[1]
\Require something
\Ensure something
\Procedure{Euclid}{$a,b$}\Comment{The g.c.d. of a and b}
\State $r\gets a\bmod b$
\While{$r\not=0$}\Comment{We have the answer if r is 0}
\State $a\gets b$
\State $b\gets r$
\State $r\gets a\bmod b$
\EndWhile\label{euclidendwhile}
\State \textbf{return} $b$\Comment{The gcd is b}
\EndProcedure%
\Algphase{Phase 1 - Gossip piece ids}
\Require something
\Function{somename}{someparams}
\While{$x>-5$}
\State $x\gets x-1$
\EndWhile
\EndFunction
\Algphase{Phase 2 - Require chunks}
\Ensure something
\Procedure{somename}{someparams}
\While{$x>-5$}
\State $x\gets x-1$
\EndWhile
\EndProcedure
\end{algorithmic}
\end{algorithm}

\end{document}

enter image description here