Header, mouvement, personnalisation (was: Laisser libre les numéros de page de couverture)

2010/4/13 Seventies <****@****> :

Bonsoir à tous.

J'avais posé cette question il y a peu, mais il n'avait pas été
possible de trouver une réponse simple : comment laisser les pages 1
et 2 sans numérotation (couverture) et attribuer le numéro de page 1
à la troisième page.

Salut !

Selon le message
http://lists.gnu.org/archive/html/lilypond-user/2009-12/msg00071.html
"first-page-number = -1" devrait convenir.

La discussion mentionnée par Neil Thornock semble être celle-ci :
http://lists.gnu.org/archive/html/lilypond-user/2008-01/msg00721.html

J'ai trouvé dans une liste de discussion anglaise
(http://old.nabble.com/Separate-page-numbering-in-separate-book-parts--td20831772.html)
une ébauche de solution avec cette fonction :

   \#\(define\-markup\-command \(bookpart\-page\-number layout props\) \(\)
           \(let \(\(first\-page\-number \(ly:output\-def\-lookup layout &#39;first\-page\-number\)\)
           \(page\-number \(chain\-assoc\-get &#39;page:page\-number props 0\)\)\)
           \(interpret\-markup layout props \(format &quot;\~a&quot; \(1\+ \(\- page\-number

first-page-number))))))

et l'appel de la fonction par

[...]

Malheureusement, mes connaissances de Scheme ne me permettent pas de
comprendre le fonctionnement.
Pourtant, la modification (un peu aléatoire) de l'expression (1+ (-
page-number first-page-number)) donne des résultats allant dans le
sens recherché. J'obtiens même des numéros de page négatifs.

Qui plus est, il faut appliquer cette méthode à un ensemble de
\bookpart (et continuer une numérotation normale d'un \bookpart à
l'autre).

Continuer la numérotation d'un \bookpart à l'autre, n'est-ce pas là le
comportement par défaut de LilyPond ?
Et le code en question ayant pour but justement de "remettre à zéro"
la numérotation à chaque \bookpart, si j'ai bien compris la discussion.

Mais pas toujours trouvé la bonne solution.

Quelqu'un aurait-il une suggestion - ou un début de solution ?

Désolé, suis une bille en Scheme également...

Au risque de me répéter, je pense que tout cela serait bien plus simple
s'il existait un moyen de mettre facilement les numéros de mouvement
(cf. les demandes en ce sens dans les discussions
"Movement numbers"
http://lists.gnu.org/archive/html/lilypond-user/2009-03/msg00051.html
"Multiple scores(movements) on one page"
http://lists.gnu.org/archive/html/lilypond-user/2009-06/msg00036.html
"Centered movement names"
http://lists.gnu.org/archive/html/lilypond-user/2007-08/msg00103.html
).

Resterait le problème de signifier si un mouvement doit commencer sur
une nouvelle page ou pas, mais il me semble que \pageBreak peut
s'utiliser en "top level" (en dehors des blocs \score).
Toutefois j'ai cru remarquer qu'utiliser \bookpart réduisait assez
considérablement le temps de traitement, via ces sauts de pages
obligatoires.

Autrement dit je pense qu'utiliser \bookpart pour les mouvements qui
nécessitent un saut de page n'est qu'une "solution de fortune" et il
serait intéressant de (re)lancer le débat sur la liste internationale
(avec l'avis des autres utilisateurs et surtout des développeurs).
Nicolas pourrait peut-etre déjà nous donner un avis éclairé sur le
sujet ?

Personnellement je verrais bien une variable "movement", assez
similaire à "piece" sauf que le mouvement serait écrit en plus grand
et surtout centré.

Parallèlement je me demande s'il existe un moyen pour modifier
l'apparence du titre, sous-tire, compositeur, ... (bref, tout ce qui
se trouve dans le bloc \header) via des commandes du style

  \override Header.Title #'font-size = #4
  \override Header.Composer #'font-shape = #'italic

Je compte faire quelques recherches, voir ce qui a été dit là-dessus,
puis (r)ouvrir tout ca sur lilypond-user.
Si vous avez des suggestions ou souhaits particuliers ou si vous vous
sentez l'envie de vous en occuper, n'hésitez pas !

Cordialement,
Xavier

···

--
Xavier Scheuer <****@****>

Autrement dit je pense qu'utiliser \bookpart pour les mouvements qui
nécessitent un saut de page n'est qu'une "solution de fortune"

Non, c'est exactement à cela que ça sert. Cela structure un bouquin, et
au passage on profite d'un endroit où le saut de page est obligatoire pour
simplifer le calcul des sauts de page. J'utilise \bookpart par exemple
pour chaque acte d'opéra, ou bien pour chaque motet d'un recueil.

Et alors il suffit de définir la variable title dans le bloc \header du
\bookpart pour avoir un titre centré.

Parallèlement je me demande s'il existe un moyen pour modifier
l'apparence du titre, sous-tire, compositeur, ... (bref, tout ce qui
se trouve dans le bloc \header) via des commandes du style

\override Header.Title #'font-size = #4
\override Header.Composer #'font-shape = #'italic

Non, cela se fait en modifiant les variables adéquates dans le bloc
\paper (e.g. bookTitleMarkup). Voir ly/titling-init.ly.

Nicolas

···

Le 14 avr. 2010 à 00:27, Xavier Scheuer a écrit :

== En réponse au message du 14-04-2010, 21:29:11 ==

···

Le 14 avr. 2010 à 00:27, Xavier Scheuer a écrit :

Autrement dit je pense qu'utiliser \bookpart pour les mouvements qui
nécessitent un saut de page n'est qu'une "solution de fortune"

Non, c'est exactement à cela que ça sert. Cela structure un bouquin, et
au passage on profite d'un endroit où le saut de page est obligatoire pour
simplifer le calcul des sauts de page. J'utilise \bookpart par exemple
pour chaque acte d'opéra, ou bien pour chaque motet d'un recueil.

Et alors il suffit de définir la variable title dans le bloc \header du
\bookpart pour avoir un titre centré.

Parallèlement je me demande s'il existe un moyen pour modifier
l'apparence du titre, sous-tire, compositeur, ... (bref, tout ce qui
se trouve dans le bloc \header) via des commandes du style

\override Header.Title #'font-size = #4
\override Header.Composer #'font-shape = #'italic

Non, cela se fait en modifiant les variables adéquates dans le bloc
\paper (e.g. bookTitleMarkup). Voir ly/titling-init.ly.

Nicolas

Mais toujours impossible d'enlever la redite du nom de l'instrument du haut de page. Le n° de page n'étant pas le n°1, le nom de l'instrument est écrit en en-tête, puis repris en titre.

C'est le dernier obstacle que je cherche à résoudre avant publication.

Seule solution : écrire un header de page dédicacé pour chaque mouvement avec un \oddHeaderMarkup et \evenHeaderMarkup (identiques) - mais à ce moment, le n° ou le nom du mouvement apparaît sur chaque page ...

2010/4/14 Nicolas Sceaux <****@****> :

Non, c'est exactement à cela que ça sert. Cela structure un bouquin,
et au passage on profite d'un endroit où le saut de page est
obligatoire pour simplifer le calcul des sauts de page. J'utilise
\bookpart par exemple pour chaque acte d'opéra, ou bien pour chaque
motet d'un recueil.

Et alors il suffit de définir la variable title dans le bloc \header
du \bookpart pour avoir un titre centré.

Merci Nicolas pour cette réponse.

Je pensais que \bookpart était plus destiné à regrouper un nombre bien
plus important de \score , pas qu'il servait exactement à imposer un
saut de page pour _un seul_ mouvement de symphonie par exemple.

Reste le problème du nom d'instrument, comme le fait remarquer
Jean-François (problème qui, entre autres, m'avait amené à émettre
cette suggestion).

Ta solution ne s'applique pas non plus lorsqu'il y a deux mouvements
sur une même page, comme c'est souvent le cas pour le 2e et 3e
mouvement (pour les symphonies).

Non, cela se fait en modifiant les variables adéquates dans le bloc
\paper (e.g. bookTitleMarkup). Voir ly/titling-init.ly.

Aaah, merci beaucoup !
En triturant un peu là-dedans il y a sûrement moyen d'arriver à ses
fins.

Xavier

2010/4/15 j-f.lucarelli <****@****> :

Mais toujours impossible d'enlever la redite du nom de l'instrument
du haut de page. Le n° de page n'étant pas le n°1, le nom de
l'instrument est écrit en en-tête, puis repris en titre.

C'est le dernier obstacle que je cherche à résoudre avant publication.

Seule solution : écrire un header de page dédicacé pour chaque
mouvement avec un \oddHeaderMarkup et \evenHeaderMarkup (identiques)
- mais à ce moment, le n° ou le nom du mouvement apparaît sur chaque
page ...

Rhaa, toujours cette messagerie qui renomme le sujet en remplaçant les
espaces par des underscores, ça fout le boxon dans les fils de
discussion ! :wink:

Une solution doit etre possible via ce qu'on peut trouver dans
ly/titling-init.ly (merci Nicolas).
Malheureusement c'est de la trop haute voltige pour moi. Peut-être
que quelqu'un qui a plus l'habitude de ce genre de fonction Scheme
pourra te concocter un bout de code qui va bien.

Cordialement,
Xavier

···

--
Xavier Scheuer <****@****>

== En réponse au message du 17-04-2010, 01:32:18 ==

2010/4/15 j-f.lucarelli <****@****> :

Mais toujours impossible d'enlever la redite du nom de l'instrument
du haut de page. Le n° de page n'étant pas le n°1, le nom de
l'instrument est écrit en en-tête, puis repris en titre.

C'est le dernier obstacle que je cherche à résoudre avant publication.

Seule solution : écrire un header de page dédicacé pour chaque
mouvement avec un \oddHeaderMarkup et \evenHeaderMarkup (identiques)
- mais à ce moment, le n° ou le nom du mouvement apparaît sur chaque
page ...

Rhaa, toujours cette messagerie qui renomme le sujet en remplaçant les
espaces par des underscores, ça fout le boxon dans les fils de
discussion ! :wink:

Une solution doit etre possible via ce qu'on peut trouver dans
ly/titling-init.ly (merci Nicolas).
Malheureusement c'est de la trop haute voltige pour moi. Peut-être
que quelqu'un qui a plus l'habitude de ce genre de fonction Scheme
pourra te concocter un bout de code qui va bien.

Cordialement,
Xavier

--
Xavier Scheuer <****@****>

J'ai trouvé la solution en enlevant l'instrument du \header, ce qui évite la redite, et en utilisant les oddHeaderMarkup et evenHeaderMarkup du bloc \paper

Mais là, autre problème, le centrage est défectueux, systématiquement décalé vers la droite de plusieurs centimètres (ver 2.13.17).

Finalement, la solution trouvée est la suivante, via le halign #-1 :

  \paper {
    oddHeaderMarkup = \markup {
      \halign #-1 \fill-line {
        \column { \center-align {
          \bold \huge "-- I mvt. --"
          \thisPart}}}}
    evenHeaderMarkup = \oddHeaderMarkup
  }

\thisPart est un \markup comprenant le nom de l'instrument.

Je ne sais pas trop comment ça marche, mais ça marche ...

Amicalement,

Jean-François