lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Recueil - gestion du nombre de système par page


From: david427
Subject: Re: Recueil - gestion du nombre de système par page
Date: Sun, 6 Dec 2020 14:21:35 +0100 (CET)

Merci pour l'idée !

Le problème c'est que mon recueil fera environ 150 pages (il en fait 128 pour l'instant, avec la mise en page automatique)
ça va être un peu long de définir le nombre de systèmes par page + le nombre de mesures pas système ^^'

Mais s'il n'y a pas d'autre solution, je retrousserai mes manches !



De : Bernard Meylan <bameylan@bluewin.ch>
À : lilypond-user-fr@gnu.org
Sujet : Re: Recueil - gestion du nombre de système par page
Date : 06/12/2020 12:51:07 Europe/Paris

C'est un des problèmes non encore résolus… enfin pas complètement.

J'ai trouvé ce code sur le forum anglais de LilyPond… mais autant te dire
d'emblée que je n'en suis pas convaincu…

% 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 arg)
;; 4*5 --> 4 4 4 4 4
;; (at any level of nesting)
(fold-right
(lambda (elem prev)
(cond ((pair? elem)
(cons (expand-repetitions elem) prev))
((symbol? elem)
(let* ((str (symbol->string elem))
(split (string-split str #\*))
(split (map (lambda (elem) (string->number elem))
split)))
(append (make-list (cadr split) (car split))
prev)))
(else (cons elem prev))))
'()
arg))

#(define ((bars-per-line-systems-per-page-engraver lst) ctx)
(let* ((bars-and-systems? (any pair? lst))
(working-copy (expand-repetitions lst))
(systems-per-page
(if bars-and-systems?
(car working-copy)
#f))
(total
(if systems-per-page
(1+ (car systems-per-page))
(1+ (car working-copy))))
(last-measure-seen (ly:context-property ctx 'internalBarNumber)))
`((stop-translation-timestep
. ,(lambda (trans)
(let ((internal-bar (ly:context-property ctx 'internalBarNumber))
(current-col (ly:context-property ctx
'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 bars-and-systems?
(begin
(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))))
(begin
(if (null? (cdr working-copy))
(set! working-copy lst)
(begin
(set! working-copy (cdr working-copy))))
(set! total (+ total (car
working-copy)))))))))))))

%{\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....
}
}



-----
Cordialement

Bernard
--
Sent from: http://lilypond-french-users.1298960.n2.nabble.com/


reply via email to

[Prev in Thread] Current Thread [Next in Thread]