3

I am trying a way to number algorithms 1a, 1b, 1c, 2a, 2b, 2c, etc. As I understand from the documentation of the algorithms package here, I can number them after the part, chapter, section and so on. In this related topic they discuss how to customize the number. But I don't want the number, I would like to also have letters: for example, in the following MWE, I would like to have the two algorithms numbered (and therefore referenced to as) 1a and 1b.

\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\begin{document}
Algorithm~\ref{MyAlg} does things in a way. Algorithm~\ref{MyOtherAlg} does things in some other way.
\begin{algorithm}\caption{My algorithm}\label{MyAlg}
\begin{algorithmic}[1]
\State Do stuff.
\end{algorithmic}
\end{algorithm}
\begin{algorithm}\caption{My other algorithm}\label{MyOtherAlg}
\begin{algorithmic}[1]
\State Do stuff differently.
\end{algorithmic}
\end{algorithm}
\end{document}

Any idea on how to achieve this?

7
  • And what represents the "1"? Is it associated to a section? Jun 18, 2015 at 17:12
  • no, it can be a custom number Jun 18, 2015 at 17:24
  • What is a sequential counter? A user-defined one? Jun 18, 2015 at 17:25
  • See my edit: a custom number. It might as well not be there. For example I may want to number them simply "A" and "B", let's say. Hand curated numbering. Jun 18, 2015 at 17:28
  • Please see my recently updated answer. Something like that (see the las to examples after "Update")? Jun 18, 2015 at 17:30

1 Answer 1

2

All you have to do is to redefine the command \thealgorithm which controls the representation for the algorithm counter. For example, to number them using alphabetic lower-case characters and to prepend the section number you would do

\renewcommand\thealgorithm{\thesection\alph{algorithm}}

Assuming that you want the counter to reset at every section, you will also need

\usepackage{chngcntr}
\counterwithin{algorithm}{section}

A complete example.

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

\counterwithin{algorithm}{section}
\renewcommand\thealgorithm{\thesection\alph{algorithm}}

\begin{document}
\section{Test section}

Algorithm~\ref{MyAlg} does things in a way. Algorithm~\ref{MyOtherAlg} does things in some other way.
\begin{algorithm}\caption{My algorithm}\label{MyAlg}
\begin{algorithmic}[1]
\State Do stuff.
\end{algorithmic}
\end{algorithm}
\begin{algorithm}\caption{My other algorithm}\label{MyOtherAlg}
\begin{algorithmic}[1]
\State Do stuff differently.
\end{algorithmic}
\end{algorithm}

\end{document}

The result:

enter image description here

Update:

Same idea if a user-defined counter is to be used:

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

\newcounter{mycount}
\counterwithin{algorithm}{mycount}
\refstepcounter{mycount}
\renewcommand\thealgorithm{\arabic{mycount}\alph{algorithm}}

\begin{document}
\section{Test section}

Algorithm~\ref{MyAlg} does things in a way. Algorithm~\ref{MyOtherAlg} does things in some other way.
\begin{algorithm}\caption{My algorithm}\label{MyAlg}
\begin{algorithmic}[1]
\State Do stuff.
\end{algorithmic}
\end{algorithm}
\begin{algorithm}\caption{My other algorithm}\label{MyOtherAlg}
\begin{algorithmic}[1]
\State Do stuff differently.
\end{algorithmic}
\end{algorithm}

\end{document}

or to have the numbering with upper-case alphabetical characters:

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

\renewcommand\thealgorithm{\Alph{algorithm}}

\begin{document}
\section{Test section}

Algorithm~\ref{MyAlg} does things in a way. Algorithm~\ref{MyOtherAlg} does things in some other way.
\begin{algorithm}\caption{My algorithm}\label{MyAlg}
\begin{algorithmic}[1]
\State Do stuff.
\end{algorithmic}
\end{algorithm}
\begin{algorithm}\caption{My other algorithm}\label{MyOtherAlg}
\begin{algorithmic}[1]
\State Do stuff differently.
\end{algorithmic}
\end{algorithm}

\end{document}

The result:

enter image description here

1
  • Can we do something like this: For 2 algorithms Algorithm 2(a) and Algorithm 2(b) and the rest of the Algorithms like Algorithm 1, Algorithm 3, etc follow the normal naming and numbering styles? Aug 16, 2021 at 11:44

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.