Laisser libre les numéros de page de couverture

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.

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 'first-page-number))
    (page-number (chain-assoc-get 'page:page-number props 0)))
    (interpret-markup layout props (format "~a" (1+ (- page-number
first-page-number))))))

et l'appel de la fonction par

\paper {
   oddHeaderMarkup = \markup
   \fill-line {
     \null
     \on-the-fly #not-first-page \fromproperty #'header:instrument
     \on-the-fly #print-page-number-check-first \bookpart-page-number
   }

   evenHeaderMarkup = \markup
   \fill-line {
     \on-the-fly #print-page-number-check-first \bookpart-page-number
     \on-the-fly #not-first-page \fromproperty #'header:instrument
     \null
   }
}

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).

Mais pas toujours trouvé la bonne solution.

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

Merci d'avance,

Jean-François

···

--
View this message in context: http://n2.nabble.com/Laisser-libre-les-numeros-de-page-de-couverture-tp4897413p4897413.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

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.

Désolé de répondre si tard.
En reprenant la declaration de "not-first-page" dans titling-init.ly, on
peut légérement modifier ce code pour se constuire une fonction
"not-first-or-second-page".

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#(define (not-first-or-second-page layout props arg)
  (define (ancestor layout)
    "Return the topmost layout ancestor"
    (let ((parent (ly:output-def-parent layout)))
       (if (not (ly:output-def? parent))
           layout
           (ancestor parent))))
  (let ((n (chain-assoc-get 'page:page-number props -1))
        (user-first-page (ly:output-def-lookup
                                         (ancestor layout)
'first-page-number)))
    (if (and (not (= n user-first-page))
             (not (= n (1+ user-first-page)))
             ; (not (= n (+ 2 user-first-page)))
             ; decommenter si on veux la numérotation
             ; à partir de la 3ème page
             )
      (interpret-markup layout props arg)
      empty-stencil)))

\paper {
   oddHeaderMarkup = \markup
   \fill-line {
     \null
% \on-the-fly #not-first-or-second-page \fromproperty
%#'header:instrument
     \on-the-fly #not-first-or-second-page \fromproperty
#'page:page-number-string
   }

   evenHeaderMarkup = \markup
   \fill-line {
     \on-the-fly #not-first-or-second-page \fromproperty
#'page:page-number-string
% \on-the-fly #not-first-or-second-page \fromproperty
%#'header:instrument
     \null
   }
  first-page-number = -1
}

% \header { instrument = violon }

\score {\new Staff
  { s1-\markup { page -1 } \pageBreak
   s1-\markup { page 0 } \pageBreak
   s1-\markup { page 1 } \pageBreak
   s1-\markup { page 2 }
  }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

NB
Il faut changer la position du \null dans oddHeaderMarkup et
evenHeaderMarkup pour avoir le numéro de page soit à droite soit à gauche.

Gilles

== En réponse au message du 15-04-2010, 22:48:23 ==

Désolé de répondre si tard.
En reprenant la declaration de "not-first-page" dans titling-init.ly, on
peut légérement modifier ce code pour se constuire une fonction
"not-first-or-second-page".

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
#(define (not-first-or-second-page layout props arg)
..................
}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

NB
Il faut changer la position du \null dans oddHeaderMarkup et
evenHeaderMarkup pour avoir le numéro de page soit à droite soit à gauche.

Gilles

Pas de problème et merci de ta réponse, mais ce point a été résolu de la manière la plus simple qui soit, via la commande
first-page-number = -1
placée dans la variable \paper

Toutefois, je ne sais pas si cette méthode fonctionne avec la version 2.12, il me semble l'avoir essayée en son temps, sans succès.

Je garde précieusement ton code pour l'analyser et tenter de comprendre les entrailles de LilyPond.

Un grand merci,

Jean-François