14

I have this code

\documentclass{article}
\usepackage{algorithm}
\usepackage{algpseudocode}
\begin{document}
\begin{algorithm}
   \caption{Minimal Working Example for my Problem}
\begin{algorithmic}[1]
   \While{Indentation is a mess}
      \State Examine a very long line that looks horrible because the indentation is all messed up.
   \EndWhile
\end{algorithmic}
\end{algorithm}
\end{document}​

I would want the broken text to be indented to the same column, where the statement began.

17

Wrap your long line in a top-aligned \parbox:

enter image description here

\documentclass{article}
\usepackage{algorithm}% http://ctan.org/pkg/algorithms
\usepackage{algpseudocode}% http://ctan.org/pkg/algorithmicx
\begin{document}
\begin{algorithm}
  \caption{Minimal Working Example for my Problem}
  \begin{algorithmic}[1]
    \While{Indentation is a mess}
      \State \parbox[t]{\dimexpr\linewidth-\algorithmicindent}{Examine a very long line that looks horrible 
        because the indentation is all messed up.\strut}
    \EndWhile
  \end{algorithmic}
\end{algorithm}
\end{document}​

The current indentation (\algorithmicindent) is removed from \linewidth to fit exactly within the horizontal line width. Adding a \strut at the end allows for proper vertical alignment between lines (or \States) in lines that have no descenders.

  • 1
    Thanks. Works well. Is there a way to make this the default behaviour? – Tom Aug 24 '12 at 5:50
  • @Tom: I'll have to look at the source code and see. I'll get back to you if I find anything. – Werner Aug 24 '12 at 14:27
  • @Tom: I'm sure this is possible, but it would be difficult. One would have to capture the content - not easily done - and pass it to \parbox. – Werner Oct 7 '12 at 6:12
  • 4
    @SamuelYusim: So you're getting an "overfull \hbox warning"? You probably are deeper into the nesting than in my example, right? You could use a manual 1.5em (1st level), 3em (2nd level), 4.5em (3rd level) ... rather than \algorithmicindent. The reason is that \algorithmicindent is not a length, but a macro. If this doesn't help, could you post some code I can look at (at Pastebin). – Werner Aug 6 '15 at 17:26
  • 1
    For the reference of others, here is a macro ready to use for you: \newcommand{\algparbox}[1]{\parbox[t]{\dimexpr\linewidth-\algorithmicindent}{#1\strut}}. – Ricardo Cruz Jan 7 '16 at 1:52

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.