[Tex/LaTex] Linebreak in Package algorithm2e

algorithm2eline-breaking

I'm using the algorithm2e package for pseudocode. I got some very long lines that needed to be wrapped. Is there a way to indent the following (breaked) lines and/or put a mark at the first line to signalize that there happened a linebreak (similar to solution for listings package)

I found a similar question for the listings package, that was answered before, but I'm looking explicitly for an algorithm2e solution.

Best Answer

The following minimal example defines

  • \nosemic: remove printing of the end-of-line (EOL) character (typically ;);
  • \dosemic: reinstate printing of the EOL character;
  • \pushline: indents line by 1em (the typical indent); provided by algorithm2e as \Indp;
  • \popline: remove indent of \pushline (undent?); provided by algorithm2e as \Indm

enter image description here

\documentclass{article}
\usepackage{algorithm2e}% http://ctan.org/pkg/algorithm2e
\makeatletter
\newcommand{\nosemic}{\renewcommand{\@endalgocfline}{\relax}}% Drop semi-colon ;
\newcommand{\dosemic}{\renewcommand{\@endalgocfline}{\algocf@endline}}% Reinstate semi-colon ;
\newcommand{\pushline}{\Indp}% Indent
\newcommand{\popline}{\Indm\dosemic}% Undent
\makeatother
\begin{document}
\begin{algorithm}[H]
  \SetAlgoLined
  \KwData{this text}
  \KwResult{how to write algorithm with \LaTeX2e }
    initialization\;
  \While{not at end of this document}{
    read current\;
    \eIf{understand}{
      go to next section\;
      \nosemic this is a very long statement that has to be\;
        \pushline\dosemic wrapped over two lines\;
      \popline current section becomes this one\;
    }{
      go back to the beginning of current section\;
    }
  }
  \caption{How to write algorithms}
\end{algorithm}
\end{document}‚Äč

Since I am unfamiliar with your algorithm2e setup, I'm not sure how you would like to combine the four commands. As such, I've kept them separate for maximum (yet manual) usage.