From 8a73d3d42fff00ac8e45ba17bf0db344d15c0a1c Mon Sep 17 00:00:00 2001 From: Nicolas Sceaux Date: Sun, 22 Jun 2008 10:54:31 +0200 Subject: [PATCH] markuplines: fix vertical spacing of lines when using eg. \justify-lines --- scm/define-markup-commands.scm | 27 ++++++++++++++++++++------- 1 file changed, 20 insertions(+), 7 deletions(-) diff --git a/scm/define-markup-commands.scm b/scm/define-markup-commands.scm index d09df9e0a5..b6c539dc40 100644 --- a/scm/define-markup-commands.scm +++ b/scm/define-markup-commands.scm @@ -2196,13 +2196,26 @@ when @var{label} is not found." ;; Markup list commands ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -(define-public (space-lines baseline-skip lines) - (map (lambda (line) - (stack-lines DOWN 0.0 (/ baseline-skip 2.0) - (list point-stencil - line - point-stencil))) - lines)) +(define-public (space-lines baseline stils) + (let space-stil ((prev-stil #f) + (stil (car stils)) + (rest (cdr stils)) + (result (list))) + (cond ((null? rest) + (reverse! result)) + ((not prev-stil) + (space-stil stil (car rest) (cdr rest) (list stil))) + (else + (let* ((dy (max (- baseline + (+ (- (interval-bound (ly:stencil-extent prev-stil Y) DOWN)) + (interval-bound (ly:stencil-extent stil Y) UP))) + 0.0)) + (new-stil (ly:make-stencil + (ly:stencil-expr stil) + (ly:stencil-extent stil X) + (cons (interval-bound (ly:stencil-extent stil Y) DOWN) + (+ (interval-bound (ly:stencil-extent stil Y) UP) dy))))) + (space-stil stil (car rest) (cdr rest) (cons new-stil result))))))) (define-builtin-markup-list-command (justified-lines layout props args) (markup-list?) -- 2.39.5