Recueil - gestion du nombre de système par page

classic Classique list Liste threaded Arborescence
8 messages Options
Répondre | Arborescence
Ouvrir ce message en vue arborescente
|

Recueil - gestion du nombre de système par page

david427
Bonjour à tous,

Je suis en train d'essayer de faire un recueil de partitions, et je n'arrive pas à gérer le nombre de systèmes par page.

J'aimerai que sur chaque page, il y ait 6 systèmes au maximum.
De plus, s'il y a un nouveau titre sur la page (changement de mouvement), il n'y ait plus que 5 systèmes de musique.
(dans mon idée, la ligne de titre serait comptée en tant que 6ème système)

si j'utilise page-count=9 : ça fonctionne à peu près ici, parce qu'il n'y a que 4 morceaux avec uniquement des rondes. si j'utilise cette commande dans mon recueil, ça serait compliqué d'estimer le nombre de pages que je souhaite au final.... c'est pour celà que j'aimerai pouvoir régler automatiquement le nombre de système par page
De plus, le journal me donne cette info étrange :

Dessin des systèmes...

Sortie mise en page vers « /tmp/lilypond-SNA562 »...

Avertissement : Détection d'une valeur infini ou non numérique. Substitution par 0.0

Avertissement : Détection d'une valeur infini ou non numérique. Substitution par 0.0

Avertissement : Détection d'une valeur infini ou non numérique. Substitution par 0.0

Avertissement : Détection d'une valeur infini ou non numérique. Substitution par 0.0

Conversion à « test-recueil.pdf »...

Suppression de « /tmp/lilypond-SNA562 »...

Compilation menée à son terme, avec succès.



J'ai essayé d'utiliser :
min-systems-per-page = 5
max-systems-per-page = 6
Dans ce cas, la compilation reste bloquée sur 100% sans terminer et je suis obligé d'arrêter la compilation à la main

Répartition de la musique sur 8 à 9 pages...

Abandon lilypond 2.20.0 [test-recueil.ly]...

Arrêté avec le code de retour 15.




voici un code simplifié de la structure de mon recueil (c'est le même en pièce jointe)
(il y aura une première de couverture, en \bookpart)


\version "2.20.0"
\language "français"

\paper { print-all-headers = ##t
         ragged-last-bottom = ##f
         tocTitleMarkup = \markup \huge \column { \fill-line { \null "Table des matières" \null } \hspace #1 }
         tocItemMarkup = \tocItemWithDotsMarkup
         tocActMarkup = \markup \large \column {
                        \fill-line { \null \italic \fromproperty #'toc:text \null }
         }
}

tocAct =
#(define-music-function (parser location text) (markup?)
   (add-toc-item! 'tocActMarkup text))

\paper { left-margin = 15\mm
         right-margin = 10\mm
         top-margin = 10\mm
         bottom-margin = 10\mm
         %page-count = 9
         %min-systems-per-page = 5
         %max-systems-per-page = 6
         }

\book {

%{
\paper { first-page-number = #-1 }

%% petit bookpart de couverture :
\bookpart {
   \header { copyright = ##f tagline = ##f }
%% bloc \paper local :
  \paper { left-margin = 0
           top-margin = -2\mm
           bookTitleMarkup = \markup  {  \epsfile #X #120 #"Duos-Couverture.eps" }
           evenHeaderMarkup = ##f
           oddHeaderMarkup = ##f }
  \pageBreak
  \markup \null }
%}

\markuplist \table-of-contents
\pageBreak


% 001 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\tocItem \markup "n° 1 - do"
\score { \new StaffGroup <<
  \new Staff \with { instrumentName = "Violoncelle 1" shortInstrumentName = "1." }
             { \clef bass \repeat unfold 150 do1 }
  \new Staff \with { instrumentName = "Violoncelle 2" shortInstrumentName = "2." }
             { \clef bass \repeat unfold 150 do1 \bar "|." } >>
\header { title = "1" subtitle = "do" } }
\markup { \vspace #2 }

% 002 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\tocItem \markup "n° 2 - ré"
\score { \new StaffGroup <<
  \new Staff \with { instrumentName = "Violoncelle 1" shortInstrumentName = "1." }
             { \clef bass \repeat unfold 150 ré1 }
  \new Staff \with { instrumentName = "Violoncelle 2" shortInstrumentName = "2." }
             { \clef bass \repeat unfold 150 ré1 \bar "|." } >>
\header { title = "2" subtitle = "ré" } }
\markup { \vspace #2 }

% 003 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\tocItem \markup "n° 3 - mi"
\score { \new StaffGroup <<
  \new Staff \with { instrumentName = "Violoncelle 1" shortInstrumentName = "1." }
             { \clef bass \repeat unfold 150 mi1 \bar "|." }
  \new Staff \with { instrumentName = "Violoncelle 2" shortInstrumentName = "2." }
             { \clef bass \repeat unfold 150 mi1 \bar "|." } >>
\header { title = "3" subtitle = "mi" } }
\markup { \vspace #2 }

% 004 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\tocAct \markup { }
\tocItem \markup "n° 4 - fa"
\score { \new StaffGroup <<
  \new Staff \with { instrumentName = "Violoncelle 1" shortInstrumentName = "1." }
             { \clef bass \repeat unfold 150 fa1 \bar "|." }
  \new Staff \with { instrumentName = "Violoncelle 2" shortInstrumentName = "2." }
             { \clef bass \repeat unfold 150 fa1 \bar "|." } >>
\header { title = "4" subtitle = "fa" } }
\markup { \vspace #2 }

}%Fin du book

test-recueil.ly (4K) Download Attachment
Répondre | Arborescence
Ouvrir ce message en vue arborescente
|

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

Bernard Meylan
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/

Cordialement

Bernard
Répondre | Arborescence
Ouvrir ce message en vue arborescente
|

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

david427
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 <[hidden email]>
À : [hidden email]
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/

Répondre | Arborescence
Ouvrir ce message en vue arborescente
|

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

Jean Abou Samra
En réponse à ce message posté par david427

Bonjour,


Le 06/12/2020 à 12:18, [hidden email] a écrit :
Bonjour à tous,

Je suis en train d'essayer de faire un recueil de partitions, et je n'arrive pas à gérer le nombre de systèmes par page.

J'aimerai que sur chaque page, il y ait 6 systèmes au maximum.
De plus, s'il y a un nouveau titre sur la page (changement de mouvement), il n'y ait plus que 5 systèmes de musique.
(dans mon idée, la ligne de titre serait comptée en tant que 6ème système)

si j'utilise page-count=9 : ça fonctionne à peu près ici, parce qu'il n'y a que 4 morceaux avec uniquement des rondes. si j'utilise cette commande dans mon recueil, ça serait compliqué d'estimer le nombre de pages que je souhaite au final.... c'est pour celà que j'aimerai pouvoir régler automatiquement le nombre de système par page
De plus, le journal me donne cette info étrange :

Dessin des systèmes...

Sortie mise en page vers « /tmp/lilypond-SNA562 »...

Avertissement : Détection d'une valeur infini ou non numérique. Substitution par 0.0

Avertissement : Détection d'une valeur infini ou non numérique. Substitution par 0.0

Avertissement : Détection d'une valeur infini ou non numérique. Substitution par 0.0

Avertissement : Détection d'une valeur infini ou non numérique. Substitution par 0.0

Conversion à « test-recueil.pdf »...

Suppression de « /tmp/lilypond-SNA562 »...

Compilation menée à son terme, avec succès.


Le problème provient de

\tocAct \markup { }

Pourquoi ceci ? LilyPond est dépassé quant à l'espacement, de la même manière qu'avec \markup \box "", par exemple. Si vous souhaitez vraiment un espacement vertical supplémentaire, mettez \markup " " (avec une espace), voire \markup \vspace #5.1, avec une valeur réglable.


J'ai essayé d'utiliser :
min-systems-per-page = 5
max-systems-per-page = 6
Dans ce cas, la compilation reste bloquée sur 100% sans terminer et je suis obligé d'arrêter la compilation à la main

Répartition de la musique sur 8 à 9 pages...

Abandon lilypond 2.20.0 [test-recueil.ly]...

Arrêté avec le code de retour 15.


Il s'agit d'un bug, que Kevin Barry est justement en train de résoudre en ce moment même :

https://gitlab.com/lilypond/lilypond/-/merge_requests/529

L'idée, c'est que LilyPond teste différentes configurations de sauts de page et leur attribue une note de laideur. Comme elle n'apprécie pas l'espacement que vous avez choisi, qu'elle trouve trop étalé, elle donne des notes très mauvaises à toutes les configurations qu'elle essaie, ce qui la conduit à augmenter le nombre de systèmes toujours plus dans l'espoir, évidemment vain, de découvrir une configuration acceptable.

Avec le code de Kevin, elle finit par se rend compte que cela ne sert à rien et abandonne la partie.

Comme ceci touche au cœur de LilyPond en C++, je n'ai rien de mieux à vous proposer pour l'instant que

\paper {
  page-breaking = #ly:page-turn-breaking
}

Cela semble fonctionner, même si des avertissements étranges sont émis.

Si d'aventure les sauts ne vous convenaient pas, il faudrait ajouter des \break à la main ou à l'aide du code de Bernard.

Cordialement,
Jean

Répondre | Arborescence
Ouvrir ce message en vue arborescente
|

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

david427
En réponse à ce message posté par david427

Merci pour la réponse !


La commande :
\paper {
  page-breaking = #ly:page-turn-breaking
}
ne donne pas un résultat satisfaisant (dommage !)
jai essayé de renseigner un system-count dans le  \layout de chaque pièce pour voir si je pouvais m'en sortir comme ça.... mais ce n'est pas satisfaisant non plus





Le problème provient de \tocAct \markup { }

Pourquoi ceci ?

J'avais trouvé cette formulation dans la doc (je n'aurais pas inventé ça tout seul...)
effectivement, si je remplace par \tocAct \markup \vspace, je n'ai plus les messages d'erreur
Je cherchais à aérer un peu la table des matières : sauter une ligne toutes les 10 entrées

J'ai une autre question par rapport à la table des matières :
\paper
tocTitleMarkup = \markup \huge \column {
           \fill-line { \null "Table des matières" \null } \hspace #1 }
         tocItemMarkup = \tocItemWithDotsMarkup
         tocActMarkup = \markup \large \column {
                         \fill-line { \null \italic \fromproperty #'toc:text \null }}

Avec ce code, dans la table des matières, mes 100 pièces se répartissent sur 3 pages (1/3 des pièces sur chaque page).
Le problème, c'est que les titres sont en haut de la page, ce qui laisse un espace "blanc" (1/4 de page) en bas de chaque page.
Existe-t-il un moyen de ne pas répartir les pièces par tiers (toutes à la suite, avec un grand blanc seulement à la fin de la table des matières)

Actuellement, j'ai rajouté une grande photo blanche (en .eps) à la fin de la table des matières (juste avant le \pageBreak ), donc, dans ce cas, la table des matières se place correctement



PS : "elle" ? Lilypond serait féminin ?
ça expliquerait que j'ai tant de problèmes : au lieu de regarder lilypond droit dans les yeux, d'homme à homme, je devrais peut-être essayer de la séduire ?? je vais tester ... :)


De : Jean Abou Samra <[hidden email]>
À : [hidden email];
   lilypond-user-fr <[hidden email]>
Sujet : Re: Recueil - gestion du nombre de système par page
Date : 06/12/2020 14:35:56 Europe/Paris

Bonjour,


Le 06/12/2020 à 12:18, [hidden email] a écrit :
Bonjour à tous,

Je suis en train d'essayer de faire un recueil de partitions, et je n'arrive pas à gérer le nombre de systèmes par page.

J'aimerai que sur chaque page, il y ait 6 systèmes au maximum.
De plus, s'il y a un nouveau titre sur la page (changement de mouvement), il n'y ait plus que 5 systèmes de musique.
(dans mon idée, la ligne de titre serait comptée en tant que 6ème système)

si j'utilise page-count=9 : ça fonctionne à peu près ici, parce qu'il n'y a que 4 morceaux avec uniquement des rondes. si j'utilise cette commande dans mon recueil, ça serait compliqué d'estimer le nombre de pages que je souhaite au final.... c'est pour celà que j'aimerai pouvoir régler automatiquement le nombre de système par page
De plus, le journal me donne cette info étrange :

Dessin des systèmes...

Sortie mise en page vers « /tmp/lilypond-SNA562 »...

Avertissement : Détection d'une valeur infini ou non numérique. Substitution par 0.0

Avertissement : Détection d'une valeur infini ou non numérique. Substitution par 0.0

Avertissement : Détection d'une valeur infini ou non numérique. Substitution par 0.0

Avertissement : Détection d'une valeur infini ou non numérique. Substitution par 0.0

Conversion à « test-recueil.pdf »...

Suppression de « /tmp/lilypond-SNA562 »...

Compilation menée à son terme, avec succès.


Le problème provient de

\tocAct \markup { }

Pourquoi ceci ? LilyPond est dépassé quant à l'espacement, de la même manière qu'avec \markup \box "", par exemple. Si vous souhaitez vraiment un espacement vertical supplémentaire, mettez \markup " " (avec une espace), voire \markup \vspace #5.1, avec une valeur réglable.


J'ai essayé d'utiliser :
min-systems-per-page = 5
max-systems-per-page = 6
Dans ce cas, la compilation reste bloquée sur 100% sans terminer et je suis obligé d'arrêter la compilation à la main

Répartition de la musique sur 8 à 9 pages...

Abandon lilypond 2.20.0 [test-recueil.ly]...

Arrêté avec le code de retour 15.


Il s'agit d'un bug, que Kevin Barry est justement en train de résoudre en ce moment même :

https://gitlab.com/lilypond/lilypond/-/merge_requests/529

L'idée, c'est que LilyPond teste différentes configurations de sauts de page et leur attribue une note de laideur. Comme elle n'apprécie pas l'espacement que vous avez choisi, qu'elle trouve trop étalé, elle donne des notes très mauvaises à toutes les configurations qu'elle essaie, ce qui la conduit à augmenter le nombre de systèmes toujours plus dans l'espoir, évidemment vain, de découvrir une configuration acceptable.

Avec le code de Kevin, elle finit par se rend compte que cela ne sert à rien et abandonne la partie.

Comme ceci touche au cœur de LilyPond en C++, je n'ai rien de mieux à vous proposer pour l'instant que

\paper {
  page-breaking = #ly:page-turn-breaking
}

Cela semble fonctionner, même si des avertissements étranges sont émis.

Si d'aventure les sauts ne vous convenaient pas, il faudrait ajouter des \break à la main ou à l'aide du code de Bernard.

Cordialement,
Jean

Répondre | Arborescence
Ouvrir ce message en vue arborescente
|

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

david427
En réponse à ce message posté par david427
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 <[hidden email]>
À : [hidden email]
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/

Répondre | Arborescence
Ouvrir ce message en vue arborescente
|

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

Jean Abou Samra
En réponse à ce message posté par david427
Bonjour,


Le 08/12/2020 à 06:37, [hidden email] a écrit :
>
> Merci pour la réponse !
>
>
> 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 ?


> jai essayé de renseigner un system-count dans le  \layout de chaque
> pièce pour voir si je pouvais m'en sortir comme ça.... mais ce n'est
> pas satisfaisant non plus
>
>> Le problème provient de \tocAct \markup { }
>>
>> Pourquoi ceci ?
>>
>
>
> J'avais trouvé cette formulation dans la doc (je n'aurais pas inventé
> ça tout seul...)
> effectivement, si je remplace par \tocAct \markup \vspace, je n'ai
> plus les messages d'erreur
> Je cherchais à aérer un peu la table des matières : sauter une ligne
> toutes les 10 entrées


Dans ce cas, effectivement, mieux vaut \null ou bien un \vspace. La
commande n'est pas prévue pour le cas du \markup vide.


> J'ai une autre question par rapport à la table des matières :
> \paper
> tocTitleMarkup = \markup \huge \column {
>            \fill-line { \null "Table des matières" \null } \hspace #1 }
>          tocItemMarkup = \tocItemWithDotsMarkup
>          tocActMarkup = \markup \large \column {
>                          \fill-line { \null \italic \fromproperty
> #'toc:text \null }}
>
> Avec ce code, dans la table des matières, mes 100 pièces se
> répartissent sur 3 pages (1/3 des pièces sur chaque page).
> Le problème, c'est que les titres sont en haut de la page, ce qui
> laisse un espace "blanc" (1/4 de page) en bas de chaque page.
> Existe-t-il un moyen de ne pas répartir les pièces par tiers (toutes à
> la suite, avec un grand blanc seulement à la fin de la table des matières)
>

Pas trouvé, désolé... Ce qui est curieux, c'est que les entrées
consomment toute la place disponible sur chaque page dans ce cas :

\markuplist \column-lines #(map (lambda (x) #{ \markup a #}) (iota 120))

Mais dès lors que l'on ajoute une nouvelle page, elles se répartissent
par tiers comme vous le décrivez :

\markuplist \column-lines #(map (lambda (x) #{ \markup a #}) (iota 120))
\pageBreak
\markup "AAA"

Le réglage de ragged-bottom est inopérant.

Je n'ai pas le temps en ce moment pour fouiller plus. Peut-être les
autres ont-ils des idées ? Vous pourriez aussi essayer d'écrire à la
liste internationale.


> Actuellement, j'ai rajouté une grande photo blanche (en .eps) à la fin
> de la table des matières (juste avant le \pageBreak ), donc, dans ce
> cas, la table des matières se place correctement
>
>
>
> PS : "elle" ? Lilypond serait féminin ?
> ça expliquerait que j'ai tant de problèmes : au lieu de regarder
> lilypond droit dans les yeux, d'homme à homme, je devrais peut-être
> essayer de la séduire ?? je vais tester ... :)


C'est selon. Sur cette liste comme dans les listes anglophones, le nom
LilyPond est souvent pris au féminin. Personnellement, je le fais car il
commence par « Lily », ce qui invite à divers jeux de mots récurrents
sur cette liste, dans le goût de « Je m'appelle Pond. Lily Pond », etc.

Cordialement,
Jean


Répondre | Arborescence
Ouvrir ce message en vue arborescente
|

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

raphael.broussier
En réponse à ce message posté par david427
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 ?