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: Jean Abou Samra
Subject: Re: Numérotation des pages
Date: Fri, 22 Jul 2022 23:11:28 +0200
User-agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0



Le 22/07/2022 à 22:58, Ya Gloops a écrit :
Bonsoir !
S'il n'y a pas de bookpart on obtient une erreur, c'est normal ?
Gilles


Effectivement, c'était un autre bug dans mon code… Je me reprends
(bis repetita placent) :

\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 {
  #(use-modules (srfi srfi-2))
  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
                 (or (and-let* (((not per-bookpart))
                                (parent (ly:output-def-parent paper))
                                ((not (null? parent))))
                        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" }

%\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]