[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: Nombre de portées par page différent en page 1
From: |
NOreply |
Subject: |
Re: Nombre de portées par page différent en page 1 |
Date: |
Wed, 21 Jun 2017 04:05:28 -0700 (MST) |
Avec le code ci-dessous, il est possible de définir à la fois le nombre de
mesures par système + le nombre de systèmes par page.
#(define (expand-repetitions lst seed)
(if (symbol? (car lst))
(let* ((str (symbol->string (car lst)))
(split (string-split str #\*))
(split (map (lambda (elem) (string->number elem)) split)))
(set! seed (append seed (make-list (cadr split) (car split)))))
(set! seed (append seed (list (car lst)))))
(if (null? (cdr lst))
seed
(expand-repetitions (cdr lst) seed)))
#(define ((bars-per-line-systems-per-page-engraver lst) context)
(let* ((working-copy
(map (lambda (sys) (expand-repetitions sys '()))
lst))
(systems-per-page (car working-copy))
(total (1+ (car systems-per-page)))
(last-measure-seen 0))
`((stop-translation-timestep
. ,(lambda (trans)
(let ((internal-bar (ly:context-property context
'internalBarNumber))
(current-col (ly:context-property context
'currentCommandColumn)))
;; we are only interested in the first NonMusicalPaperColumn of
;; each measure
(if (and (> internal-bar last-measure-seen)
(= (remainder internal-bar total) 0)
(pair? working-copy))
(begin
(set! (ly:grob-property current-col
'line-break-permission) 'force)
(set! last-measure-seen internal-bar)
(if (null? (cdr systems-per-page))
(begin
(set! (ly:grob-property current-col
'page-break-permission) 'force)
(if (pair? (cdr working-copy))
(begin
(set! working-copy (cdr working-copy))
(set! systems-per-page (car working-copy)))
(set! working-copy '())))
(set! systems-per-page (cdr systems-per-page)))
(set! total (+ total (car systems-per-page)))))))))))
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\layout {
\context {
\Score
\consists #(bars-per-line-systems-per-page-engraver '((1 6) (4 4 4)
(1)))
% 3 pages: 1° page = 2 systèmes, 1°système avec 1 mesure, 2° système avec 4
mesures
% 2° page avec 3 systèmes de 4 mesures....
}
}
\score {
\repeat unfold 500 { c'1 }
}
--
View this message in context:
http://lilypond-french-users.1298960.n2.nabble.com/Nombre-de-portees-par-page-different-en-page-1-tp7585009p7585010.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.