[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: |
Wed, 13 Jul 2022 02:15:42 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.11.0 |
Le 10/07/2022 à 10:27, Vincent Gay a écrit :
Bonjour à toutes et à tous
Pierre Perol-Schneider m'avait donné une astuce pour redémarrer la
numérotation des pages à chaque \bookpart. Cela fonctionnait à
merveille. Mais ça ne fonctionne plus !
J'ai ré-essayé avec des fichiers datant de quelques mois (28/12/2021)
compilés en 2.22.1 et recompilés aujourd'hui en 2.22.2 sans modifier
la moindre ligne de code : pas de message d'erreur mais aucun résultat !
Si quelque bonne âme peut m'expliquer
voici un exemple "minimaliste" :
[...]
Bonjour Vincent,
Je n'ai pas cherché à comprendre ce code, car il me paraît beaucoup
trop compliqué. En effet, il existe une solution nettement plus simple
pour afficher des numéros de page relatifs au bookpart :
\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))
}
%% Fichier principal
\paper {
number-pages-per-bookpart = ##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 }
}
}
\bookpart {
\score {
\new Staff \with { instrumentName = "Part 2" }
{ c''1 \pageBreak c''1 }
}
}
}
Et voici un code qui va un peu plus loin et automatise aussi la
numérotation avec "/total", d'une manière qui fonctionne également
avec le code précédent :
\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
(ly:paper-book-paper (ly:prob-property page
'paper-book))
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 %% à enlever si non 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 <=
- Re: Numérotation des pages, Jean Abou Samra, 2022/07/12
- Re: Numérotation des pages, Vincent Gay, 2022/07/13
- Re: Numérotation des pages, Vincent Gay, 2022/07/15
- Re: Numérotation des pages, Jean Abou Samra, 2022/07/15
- Re: Numérotation des pages, Ya Gloops, 2022/07/22
- Re: Numérotation des pages, Jean Abou Samra, 2022/07/22
- Re: Numérotation des pages, Ya Gloops, 2022/07/22
Re: Numérotation des pages, Jean Abou Samra, 2022/07/13