Tournez la page SVP

Bonjour,

J'ai un .ly avec plusieurs scores successifs pour générer un unique pdf. OK

Il faudrait, pour chaque score qui s'étale sur plusieurs pages, mettre en bas de la page pdf un texte du genre "Tournez la page SVP".
Bien sûr, si un score se termine en bas de page, il ne doit pas y avoir de "TSVP" en bas de cette page-là.

Quelqu'un a une idée?

Il faudrait, pour chaque score qui s'étale sur plusieurs pages, mettre
en bas de la page pdf un texte du genre "Tournez la page SVP".
Bien sûr, si un score se termine en bas de page, il ne doit pas y avoir de
"TSVP" en bas de cette page-là.

Je n'ai pas (encore ?) trouvé, mais pour avoir l'aide éventuelle d'autre
collistiers, je propose l'exemple suivant :

%%%%%%%%%%%%%%
\version "2.10.25"

\paper{
  printallheaders=##t
  }

\score % score 1

{
\new Staff
{
      c'1 \pageBreak % page 1
      c'1 \pageBreak % page 2
      c'1 % page 3
}
\header {
      title = "SCORE I"
}
}

\score % score 2
{
\new Staff
{
      d'1 \pageBreak % page 4
      d'1 \pageBreak % page 5
      d'1 % page 6
}
\header
{
      breakbefore = ##t
      title = "SCORE II"
}
}
%%%%%%%%%%%%%%%

Si j'ai bien compris, on veut avoir en bas de la page 1,2,4,5
le message "Tournez la page SVP ".

Gilles

Gilles THIBAULT a écrit :

Il faudrait, pour chaque score qui s'étale sur plusieurs pages, mettre
en bas de la page pdf un texte du genre "Tournez la page SVP".
Bien sûr, si un score se termine en bas de page, il ne doit pas y avoir de
"TSVP" en bas de cette page-là.

Je n'ai pas (encore ?) trouvé, mais pour avoir l'aide éventuelle d'autre
collistiers, je propose l'exemple suivant :

%%%%%%%%%%%%%%
\version "2.10.25"

\paper{
printallheaders=##t
}

\score % score 1

{
\new Staff
{
     c'1 \pageBreak % page 1
     c'1 \pageBreak % page 2
     c'1 % page 3
}
\header {
     title = "SCORE I"
}

\score % score 2
{
\new Staff
{
     d'1 \pageBreak % page 4
     d'1 \pageBreak % page 5
     d'1 % page 6
}
\header
{
     breakbefore = ##t
     title = "SCORE II"
}
%%%%%%%%%%%%%%%

Si j'ai bien compris, on veut avoir en bas de la page 1,2,4,5
le message "Tournez la page SVP ".

Gilles

Pour ma part, je ne vois qu'un markup :
   _\markup {"Tournez la page SVP "}
positionné sur une note de la dernière mesure des pages concernées.
On peut ensuite affiner le positionnement avec un :
    \once \override TextScript #'extra-offset = #'(5 . -2.5)
en adaptant les valeurs.
Bien sûr, il ne faut plus changer les \pageBreak sous peine de tout
devoir recommencer.
Ce n'est pas très élégant, mais ça devrait marcher.
     Phil.

Pour ma part, je ne vois qu'un markup :
   _\markup {"Tournez la page SVP "}
positionné sur une note de la dernière mesure des pages concernées.

Pour ma part, je pense très fort aux evenHeaderMarkup et
oddFooterMarkup, qui ont d'eux même le bon emplacement. C'est leur
seul avantage du reste, vu qu'il te faudra de toute façon les
spécifier à chaque fois.

Ce n'est pas très élégant, mais ça devrait marcher.

Pas mieux :frowning:

Valentin

···

Le 24/08/07, Philippe Hézaine<****@****> a écrit :

Bon, je suis arrivé au resultat, mais effectivement ce n'est pas très élégant.
Je me suis inspiré (très fortement ...) du fichier titling-init.ly (dans usr\share\lilypond\current\ly) et j'ai défini une fonction qui vérifie que le numero de page courant ne soit pas la dernière page du score
J'avais essayé d'utiliser
        chain-assoc-get 'page:last?
mais ça ne récupérait que la dernière page du \book et non du \score.
Dans cette solution donc, il faut noter la dernière page de chaque score, et répéter autant de fois que necessaire,
les lignes suivantes :
(= (chain-assoc-get 'page:page-number props -1) 3) % page 3
(= (chain-assoc-get 'page:page-number props -1) 6) % page 6
(= (chain-assoc-get 'page:page-number props -1) x) ... % page x.
J'ai pas mieux mieux pour l'instant.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\version "2.10.25"

#(define (is-last-page layout props arg)
  (if (not(or (= (chain-assoc-get 'page:page-number props -1) 3)
                 (= (chain-assoc-get 'page:page-number props -1) 6)
      ))
   (interpret-markup layout props arg)
   empty-stencil))

\paper{
  printallheaders = ##t
  oddFooterMarkup = \markup {\fill-line {"" \on-the-fly #is-last-page "Tournez la page SVP"}}
}

\score % score 1

{
\new Staff
{
      c'1 \pageBreak % page 1
      c'1 \pageBreak % page 2
      c'1 % page 3
}
\header {
      title = "SCORE I"
}
}

\score % score 2
{
\new Staff
{
      d'1 \pageBreak % page 4
      d'1 \pageBreak % page 5
      d'1 % page 6
}
\header
{
      breakbefore = ##t
      title = "SCORE II"
}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Bon, je suis arrivé au resultat, mais effectivement ce n'est pas très
élégant.

J'avais essayé d'utiliser
        chain-assoc-get 'page:last?
mais ça ne récupérait que la dernière page du \book et non du \score.

C'est effectivement le principal obstacle.

Dans cette solution donc, il faut noter la dernière page de chaque score, et
répéter autant de fois que necessaire,
les lignes suivantes :
(= (chain-assoc-get 'page:page-number props -1) 3) % page 3
(= (chain-assoc-get 'page:page-number props -1) 6) % page 6
(= (chain-assoc-get 'page:page-number props -1) x) ... % page x.
J'ai pas mieux mieux pour l'instant.

C'est déjà, de loin, la meilleure des solutions proposées ici.
Quelqu'un connaît-il une fonction qui permette de se renseigner sur le
nombre de pages de chaque \score dans un \book ? Faute de quoi, ça
pourrait être un "feature request" intéressant...

Valentin

···

Le 26/08/07, Gilles THIBAULT<****@****> a écrit :

Valentin Villenave a écrit :

C'est déjà, de loin, la meilleure des solutions proposées ici.
  

Effectivement.

Quelqu'un connaît-il une fonction qui permette de se renseigner sur le
nombre de pages de chaque \score dans un \book ? Faute de quoi, ça
pourrait être un "feature request" intéressant...
  

Effectivement!

Quelqu'un connaît-il une fonction qui permette de se renseigner sur le
nombre de pages de chaque \score dans un \book ? Faute de quoi, ça
pourrait être un "feature request" intéressant...

C'est vraiment là que la doc de lilypond fait défaut ; voici ce qu'il y a
dans :

    %%%
    Function: ly:chain-assoc-get key achain dfault
          Return value for key from a list of alists achain. If no if no entry is
        found, return DFAULT, or #f if no DFAULT not specified.
    %%%

  Aucune indication sur le paramètre "key" , qui est poutant la "clef"
essentielle pour l'utilisation de cette fonction.

Ce manque d'informations sur les fonctions de base de Lilypond sont pour moi un frein très important pour l'apprentissage du language Scheme.

Mais peut-être qu'il y a une autre page Web qui est plus explicite ?