\version "2.17.9"

#(define (stack-lines dir padding baseline stils)
  "Stack vertically with a baseline skip." ;; modified for "strict" spacing
  (let loop ((result empty-stencil)
             (offset 0)
             (stils stils))
    (if (null? stils)
        result
        (loop
          (ly:stencil-add (ly:stencil-translate-axis (car stils) offset Y)
                          result)
          (- offset baseline)
          (cdr stils)))))

#(define-markup-command (justify layout props args)
  (markup-list?)
  #:category align
  #:properties ((baseline-skip)
                wordwrap-internal-markup-list)
  "
@cindex justifying text

Like @code{\\wordwrap}, but with lines stretched to justify the margins.
Use @code{\\override #'(line-width . @var{X})} to set the line width;
@var{X}@tie{}is the number of staff spaces.

@lilypond[verbatim,quote]
\\markup {
  \\justify {
    Lorem ipsum dolor sit amet, consectetur adipisicing elit, sed
    do eiusmod tempor incididunt ut labore et dolore magna aliqua.
    Ut enim ad minim veniam, quis nostrud exercitation ullamco
    laboris nisi ut aliquip ex ea commodo consequat.
  }
}
@end lilypond"
  (stack-lines DOWN 0.0 baseline-skip
               (wordwrap-internal-markup-list layout props #t args)))

\markup {
  \override #'(baseline-skip . 1.5)
  \override #'(line-width . 4) \justify { The eee heh . . . . . . x x x x f f f x x x f f f f f f j f f f f }
}
