10

I'd like to separate two sections in an algorithmic environment with a horizontal line, like:

-------------
Algorithm 1: MyAlgorithm
-------------
  Part 1:
  Do some stuff
-------------
  Part 2:
  Other stuff

\hline causes an error. My code so far looks like:

\begin{algorithm}
  \caption{Caption}
  \begin{algorithmic}
    \STATE algorithm here
    %I'd like to do \hline here!
    \STATE part 2 here
  \end{algorithmic}
\end{algorithm}
13

The command \hline works only inside tables. To draw a line about the whole width you can use the command \hrulefill.

\STATE stems from the algorithms bundle, while the more advanced and recent algorithmicx package defines \State.

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


\begin{document}
\begin{algorithm}
  \caption{Caption}
  \begin{algorithmic}
    \State algorithm here
    \\\hrulefill
    \State part 2 here
  \end{algorithmic}
\end{algorithm}
\end{document}

The result is:

enter image description here

If you want special line formating you can also use every other tool to draw a line. This is the simplest solution.

| improve this answer | |
  • Thanks, it also works for algorithm2e! – fidekild Aug 30 '18 at 12:34
11

Here is a mildly different approach to Marco's answer (which uses \hrulefill - a leader). The following MWE defines \algrule[<thickness>] that sets a \hrule at width \textwidth and height <thickness> (default is .4pt) vertically centered between two lines of code:

enter image description here

\documentclass{article}
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\usepackage{algorithm}% http://ctan.org/pkg/algorithms
\makeatletter
\newcommand{\algrule}[1][.2pt]{\par\vskip.5\baselineskip\hrule height #1\par\vskip.5\baselineskip}
\makeatother
\begin{document}
\begin{algorithm}
  \caption{Caption}
  \begin{algorithmic}[1]
    \State First part of algorithm here
    \algrule
    \State Second part of algorithm here
    \algrule[5pt]
    \State Third part of algorithm here
  \end{algorithmic}
\end{algorithm}
\end{document}​
| improve this answer | |
  • You can also use \linegoal ;-) – Marco Daniel Apr 18 '12 at 20:49

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.