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

From: [email-masked]
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 <[email-masked]>
À : [email-masked]
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/

---

From: [email-masked]
Date: Fri, 11 Dec 2020 08:40:54 +0100 (CET)

ah !

je n'avais pas compris qu'il fallait garder min-system et max-system ^^'

je les avait remplacés par page-breaking ....

Je re-teste quand je rentre, merci beaucoup !

>
> La commande :
> \paper {
>   page-breaking = #ly:page-turn-breaking
> }
> ne donne pas un résultat satisfaisant (dommage !)

Avec min-systems-per-page et max-systems-per-page à côté ? Dommage, 
effectivement, qu'est ce qui cloche exactement ?