Is there any elegent way to place algorithm without using algorithm
environment?
1 Answer
You don't have to put it in a float. But it depends on what you're after. If the intent is to avoid the algorithm
float yet still have captions, then the caption
package provides \captionof{<float type>}{<caption>}
that allows you to set a caption of a float outside a float. For example:
\documentclass{article}
\usepackage{algorithm,algpseudocode,caption}% http://ctan.org/pkg/{algorithms,algorithmicx,caption}
\begin{document}
%\noindent
%\begin{minipage}{\linewidth}
\captionof{algorithm}{Euclid’s algorithm\label{euclid}}
\begin{algorithmic}[1]
\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
\end{algorithmic}
%\end{minipage}
\end{document}
While algorithm
provides the floating algorithm
environment, it's only used for the algorithm
counter and float type. The above works for algorithmic
and/or algorithmicx
.
It is advisable to contain the algorithm inside a box (like a minipage
), but this may depend on the setting of the algorithm in the code itself. For example, algorithmicx
sets its algorithms (in the algorithmic
environment) as a list, which will break across the page boundary. If you don't want it, contain it.
algorithm2e
provides its own "do not float" [H]
float specifier, setting the contents in a minipage
if used this way. So one would have to use
\begin{algorithm}[H]
% <your algorithm here>
\end{algorithm}
under those conditions. A large amount of leg-work is done by the package at the start of the algorithm
environment in order to set things up since it has its own interface (using \;
to denote line-ends, otherwise known as a horizontal space in math-mode outside the environment).
-
The first code block raises
Package caption Warning: \setcaptiontype outside box or environment
now. Commented Feb 1 at 11:11 -
@user202729: True, since it is suggested to place the contents within a group (which is necessarily provided by a float/
minipage
). This is mentioned somewhat in the answer: "It is advisable to contain the algorithm inside a box (like aminipage
)...", as well as in the commented code.– Werner ♦Commented Feb 1 at 19:29
algorithm
environment. If it's not satisfactory, give some feedback and explain your use case.