Il giorno mer 18 nov 2015 alle 0:49, Thomas Morley <thomasmorle...@gmail.com> ha scritto:
Yes, change #f to #t in this line:
               (make-wordwrap-internal-markup-list #f args))))

You should rename it to justify-two-columns-lines then

Great..
I see that when the text is long, I must play with the value in:

 \override-lines #'(amount . 115)

See attached example. Guessing the right number was easy in this simple one page example. But in a bigger text this is not easy at all and the result is: the first few pages are correct, then the text flows on one column only until the end.


\version "2.19.31"

% Contributed by Harm
% https://lists.gnu.org/archive/html/lilypond-user/2015-11/msg00524.html

%% split-stil-list
%% first part contains all stils, which don't exceed `amount' with their
%% accumulated Y-length
%% second part all others.
%% Ofcourse only two sublists are created, which will limit the
%% later defined markup-list-command to two columns
%% If the length of both list don't match, add point-stencils unless they do
#(define (split-stil-list stil-list rl init amount)
  (cond ((null? stil-list)
         (reverse rl))
        ((> init amount)
         (let* ((rl-lngth (length rl))
                (st-l-lngth (length stil-list))
                (pt-stil-l
                  (make-list (abs (- rl-lngth st-l-lngth)) point-stencil)))
         (cons
           (if (< rl-lngth st-l-lngth)
               (append (reverse rl) pt-stil-l)
               (reverse rl))
           (if (< st-l-lngth rl-lngth)
               (append stil-list pt-stil-l)
               stil-list))))
        (else
         (split-stil-list
           (cdr stil-list)
           (cons (car stil-list) rl)
           (+ init (interval-length (ly:stencil-extent (car stil-list) Y)))
           amount))))


#(define-markup-list-command (justify-two-columns-lines layout props args)
  (markup-list?)
  #:properties ((baseline-skip)
                (amount 20)
                (padding 10)
                wordwrap-internal-markup-list)
  (let* ((stils
           (space-lines
             baseline-skip
             (interpret-markup-list
               layout
               props
               (make-wordwrap-internal-markup-list #t args))))
         (divided-stils (split-stil-list stils '() 0 amount))
         (max-X-length-first-column
           (apply max 0
             (map
               (lambda (stil) (cdr (ly:stencil-extent stil X)))
               (car divided-stils)))))
        (map
          (lambda (s t)
            (ly:stencil-add
              s
              (ly:stencil-translate-axis
                t
                (+ padding max-X-length-first-column)
                X)))
          (car divided-stils)
          (cdr divided-stils))))

%% for testing of page-break-behaviour uncomment:
%\markup \box \with-dimensions #'(1 . 10) #'(1 . 120) \null

%% Example

\markuplist {
  %% be aware: line-width _and_ padding-overrides may exceed the visible area
  \override-lines #'(line-width . 50)
  \override-lines #'(padding . 10)
  \override-lines #'(amount . 115)
  \justify-two-columns-lines {
    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.

    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.

    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.
    
    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.

    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.

    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.
    
    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.

    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.

    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.
    
    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.

    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.

    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.
    
    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.

    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.

    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.
  }
}

_______________________________________________
lilypond-user mailing list
lilypond-user@gnu.org
https://lists.gnu.org/mailman/listinfo/lilypond-user

Reply via email to