lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: Numérotation des pages


From: Ya Gloops
Subject: Re: Numérotation des pages
Date: Fri, 22 Jul 2022 20:58:19 +0000 (UTC)

Bonsoir !
S'il n'y a pas de bookpart on obtient une erreur, c'est normal ?
Gilles

\version "2.22.2"

%% Fichier inclus

\paper {
  make-header =

    #(lambda (layout scopes page-number is-last-bookpart is-bookpart-last-page)
       ((marked-up-headfoot 'oddHeaderMarkup 'evenHeaderMarkup)
        layout scopes
        (if (ly:output-def-lookup layout 'number-pages-per-bookpart #f)

            (1+ (- page-number (ly:output-def-lookup layout 
'first-page-number)))
            page-number)
        is-last-bookpart is-bookpart-last-page))
}

#(define-markup-command (page-number layout props) ()
   (if (ly:output-def-lookup layout 'print-page-total #f)
       (let* ((make-stil
               (lambda (total-string)
                 (stack-stencils
                  X
                  RIGHT
                  0.0
                  (map (lambda (m)
                         (interpret-markup layout props m))

                         (list (chain-assoc-get 'page:page-number-string props)
                               "/"
                               total-string)))))
              (gauge-stil (make-stil "0")))
         (ly:make-stencil
          `(delay-stencil-evaluation
            ,(delay

              (ly:stencil-expr (make-stil (ly:output-def-lookup layout 
'page:page-total)))))
          (ly:stencil-extent gauge-stil X)
          (ly:stencil-extent gauge-stil Y)))

       (interpret-markup layout props (make-fromproperty-markup 
'page:page-number-string))))
\paper {
  page-post-process =
  #(lambda (paper pages)

     (let ((per-bookpart (ly:output-def-lookup paper 'number-pages-per-bookpart 
#f)))
       (for-each
        (lambda (page)
          (let ((local-paper
                 (if per-bookpart
                     paper
                     (ly:output-def-parent paper)))
                (page-number (ly:prob-property page 'page-number)))
            (ly:output-def-set-variable!
             local-paper
             'page:page-total
             (number->string
              (max (if per-bookpart

                       (1+ (- page-number (ly:output-def-lookup local-paper 
'first-page-number)))
                       page-number)

                   (string->number (ly:output-def-lookup local-paper 
'page:page-total "0")))))))
       pages)))

  oddHeaderMarkup = \markup {
    \on-the-fly \print-page-number-check-first {
      \fill-line { \null \concat { \page-number } }
    }
  }

  evenHeaderMarkup = \markup {
    \on-the-fly \print-page-number-check-first {
      \fill-line { \concat { \page-number } \null }
    }
  }
}

%% Fichier principal

\paper {
  %number-pages-per-bookpart = ##t %% à décommenter si souhaité
  print-page-total = ##t %% à enlever si non souhaité
  print-first-page-number = ##t
}

\header { title = "Essai numérotation bookparts" }


    \score {
      \new Staff \with { instrumentName = "Part 1" }
      { c''1 \pageBreak 1 \pageBreak 1 \label bookpartI }
    }
  

    \score {
      \new Staff \with { instrumentName = "Part 2" }
      { c''1 \pageBreak c''1 \label bookpartII }
    }
  










Le samedi 16 juillet 2022 à 00:19:11 UTC+2, Jean Abou Samra 
<jean@abou-samra.fr> a écrit : 







Le 15/07/2022 à 18:48, Vincent Gay a écrit :
> Heu... presque parfait, juste un tout petit bug...
>
> si  dans l'exemple donné je mets
> \paper {
>   number-pages-per-bookpart = ##f
> }
>
> je numéro de page est correctement calculé mais pas le total des pages
>
> Voici ce que j'obtiens  :
> 1er bookpart 1/3 2/3 3/3
> 2ème bookpart 4/5 5/5



Ça, c'est ce qui arrive quand on code trop tard le soir…
Je me reprends :


\version "2.22.2"

%% Fichier inclus

\paper {
  make-header =
    #(lambda (layout scopes page-number is-last-bookpart 
is-bookpart-last-page)
       ((marked-up-headfoot 'oddHeaderMarkup 'evenHeaderMarkup)
        layout scopes
        (if (ly:output-def-lookup layout 'number-pages-per-bookpart #f)
            (1+ (- page-number (ly:output-def-lookup layout 
'first-page-number)))
            page-number)
        is-last-bookpart is-bookpart-last-page))
}

#(define-markup-command (page-number layout props) ()
   (if (ly:output-def-lookup layout 'print-page-total #f)
       (let* ((make-stil
               (lambda (total-string)
                 (stack-stencils
                  X
                  RIGHT
                  0.0
                  (map (lambda (m)
                         (interpret-markup layout props m))
                         (list (chain-assoc-get 
'page:page-number-string props)
                               "/"
                               total-string)))))
              (gauge-stil (make-stil "0")))
         (ly:make-stencil
          `(delay-stencil-evaluation
            ,(delay
              (ly:stencil-expr (make-stil (ly:output-def-lookup layout 
'page:page-total)))))
          (ly:stencil-extent gauge-stil X)
          (ly:stencil-extent gauge-stil Y)))
       (interpret-markup layout props (make-fromproperty-markup 
'page:page-number-string))))

\paper {
  page-post-process =
  #(lambda (paper pages)
     (let ((per-bookpart (ly:output-def-lookup paper 
'number-pages-per-bookpart #f)))
       (for-each
        (lambda (page)
          (let ((local-paper
                 (if per-bookpart
                     paper
                     (ly:output-def-parent paper)))
                (page-number (ly:prob-property page 'page-number)))
            (ly:output-def-set-variable!
             local-paper
             'page:page-total
             (number->string
              (max (if per-bookpart
                       (1+ (- page-number (ly:output-def-lookup 
local-paper 'first-page-number)))
                       page-number)
                   (string->number (ly:output-def-lookup local-paper 
'page:page-total "0")))))))
       pages)))

  oddHeaderMarkup = \markup {
    \on-the-fly \print-page-number-check-first {
      \fill-line { \null \concat { \page-number } }
    }
  }

  evenHeaderMarkup = \markup {
    \on-the-fly \print-page-number-check-first {
      \fill-line { \concat { \page-number } \null }
    }
  }
}

%% Fichier principal

\paper {
  %number-pages-per-bookpart = ##t %% à décommenter si souhaité
  print-page-total = ##t %% à enlever si non souhaité
  print-first-page-number = ##t
}

\header { title = "Essai numérotation bookparts" }

\book {
  \bookpart {
    \score {
      \new Staff \with { instrumentName = "Part 1" }
      { c''1 \pageBreak 1 \pageBreak 1 \label bookpartI }
    }
  }
  \bookpart {
    \score {
      \new Staff \with { instrumentName = "Part 2" }
      { c''1 \pageBreak c''1 \label bookpartII }
    }
  }
}


Cordialement,

Jean






reply via email to

[Prev in Thread] Current Thread [Next in Thread]