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: Tue, 8 Dec 2020 07:26:34 +0100 (CET)

Bonjour,
Je n'arrive pas à faire fonctionner cette astuce

j'ai d'abord rajouté un % à la deuxième ligne
%mesures par système + le nombre de systèmes par page.

et je n'ai pas compris comment l'utiliser ...
%{
\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....
}
}
%}

j'ai supposé que c'était cette partie que je devais intégrer à mon code
et que je devais modifier (1 6) (4 4 4) (1)

mais je ne suis pas sûr :
je comprends "2° page avec 3 systèmes de 4 mesures"

mais pas "1° page = 2 systèmes, 1°système avec 1 mesure, 2° système avec 4 mesures"
j'aurais dit 1er système avec 1 mesure, 2ème système avec 6 mesures
et donc on aurait 3ème page avec 1 système de 1 mesure ?



De plus, je ne peux rien vérifier car j'ai une erreur :

\paper est nécessaire pour définir les paramètres de la page

\layout { \context { \Score


là je sèche ^^
(j'ai déjà un \paper pour les dimensions de la page)





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]