[Tex/LaTex] the best looking pseudo code package


I have stumbled across various pseudo code packages but can't seem to find that's simple and eye-candy and practical.

What I'm looking for:

  • Visually attractive structure (eye-candy) ( easy to look at — understandable )
  • Numbered
  • Colored (optional)
  • Title on top
  • Practical and easy to use

The one I'm using now is

\usepackage{algorithm2e} %for psuedo code
\begin{algorithm}[H] %or another one check
 \caption{How to write algorithms}
     \KwData{this text}
     \KwResult{how to write algorithm with \LaTeX2e }
     \While{not at end of this document}{
      read current\;
       go to next section\;
       current section becomes this one\;
       go back to the beginning of current section\;


which outputs

enter image description here

However, I do not really like how the code is presented here.

Best Answer

Probably the user who asked this question is not interested in my answer anymore. But I was in the same quest didn't find any good-looking algorithm package (for my taste).
Since I'm a fan of the Listings package I followed Ruben's suggestion and created my own environment. Features:

  • higlights my own specific keywords (but a predefined language can be used to that end)
  • When defined a caption, it appears as "Algorithm x.y: the caption" where x is the number of the chapter and y is the number of the algorithm (but this is easily changed if chapter-level is not required)

Here follows the code to go in the preamble!


\newcounter{nalg}[chapter] % defines algorithm counter for chapter-level
\renewcommand{\thenalg}{\thechapter .\arabic{nalg}} %defines appearance of the algorithm counter
\DeclareCaptionLabelFormat{algocaption}{Algorithm \thenalg} % defines a new caption label as Algorithm x.y

\lstnewenvironment{algorithm}[1][] %defines the algorithm listing environment
    \refstepcounter{nalg} %increments algorithm number
    \captionsetup{labelformat=algocaption,labelsep=colon} %defines the caption setup for: it ises label format as the declared caption label above and makes label and caption text to be separated by a ':'
    \lstset{ %this is the stype
        keywords={,input, output, return, datatype, function, in, if, else, foreach, while, begin, end, } %add the keywords you want, or load a language as Rubens explains in his comment above.
        #1 % this is to add specific settings to an usage of this environment (for instnce, the caption and referable label)

Now you can use as simple as follows:

\begin{algorithm}[caption={Integer division.}, label={alg1}]
 input: int N, int D
 output: int
   res $\gets$ 0
   while N $\geq$ D 
     N $\gets$ N - D
     res $\gets$ res + 1      
   return res

Typeset result

Hope you enjoy as much as I did :P

Related Question