[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
Re: Numérotation des pages, Jean Abou Samra, 2022/07/12
Re: Numérotation des pages, Jean Abou Samra, 2022/07/13