\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 (* dir baseline))
          (cdr stils)))))

#(define-markup-command (dir-column layout props args)
  (markup-list?)
  #:category align
  #:properties ((direction)
                (baseline-skip))
  "
@cindex changing direction of text columns

Make a column of @var{args}, going up or down, depending on the
setting of the @code{direction} layout property.

@lilypond[verbatim,quote]
\\markup {
  \\override #`(direction . ,UP) {
    \\dir-column {
      going up
    }
  }
  \\hspace #1
  \\dir-column {
    going down
  }
  \\hspace #1
  \\override #'(direction . 1) {
    \\dir-column {
      going up
    }
  }
}
@end lilypond"
  (stack-lines (if (number? direction) direction -1)
               0.0
               baseline-skip
               (interpret-markup-list layout props args)))

\markup {
  \override #'(direction . 1)
  \override #'(baseline-skip . 2)
  \dir-column {
    The
    quick
    brown
    fox
    jumps
    over
    the
    lazy
    dog.
  }
  \override #'(baseline-skip . 2)
  \dir-column {
    The
    quick
    brown
    fox
    jumps
    over
    the
    lazy
    dog.
  }
}

