Subject: Numérotation des pages

From: Vincent Gay <[email-masked]>
Date: Mon, 3 Jan 2022 21:25:28 +0100

Tout d'abord je vous présente mes meilleurs vœux musicaux (mais pas que...)

Il y a un an presque jour pour jour j'évoquais sur cette liste mon 
besoin de numéroter les pages de mes recueils de partitions en 
réinitialisant à 1 le n° de page à chaque bookpart. Pierre 
Perol-Schneider m'avait alors renvoyé à cette page 
<https://www.mail-archive.com/[email-masked]/msg115188.html>.

Voici les quelques souci que j'ai avec cette fonction :

1- L'exemple dans le post de Thomas Morley compile parfaitement après 
passage a convert-ly, le mien (premier exemple ci-dessous) se termine 
avec cet erreur :
>
> FORMAT: error with call: (format #f "~(~@r<===~)" ===>0 )
>
> only positive integers can be romanized
>
> <unnamed port>: In procedure scm-error in expression (scm-error (quote 
> misc-error) #f ...):
>
> <unnamed port>: error in format
>
Je ne comprends pas pourquoi.

2- Quand je compile deux \books dans le même document et que 
print-first-page-number a la valeur ##f, la deuxième page du deuxième 
\book est numérotée avec la valeur 0. Si print-first-page-number a la 
valeur ##t, le résultat est correct. Voir le deuxième exemple ci-dessous.

3- Même quand print-first-page-number = ##f les premières pages de 
chaque \bookparts sont visible. Y a-t-il un moyen de les cacher ?
Merci d'avance

P.S. j'ai posté également cette question sur la liste anglophone.

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

Premier exemple :
\version "2.22.1"
\include "BookPartPagesNumber.ly"
musique = \relative c'' { \repeat unfold 2 { d1 \pageBreak } }

\book {
   \bookpart {
     \paper {
       oddHeaderMarkup = \oddMarkup #'roman-lower
       evenHeaderMarkup = \evenMarkup #'roman-lower
     }
     \score {
       \musique
     }
   }
   \bookpart {
     \paper {
       oddHeaderMarkup = \oddMarkup #'arabic
       evenHeaderMarkup = \evenMarkup #'arabic
     }
     \score {
       \musique
     }
   }
}

Second exemple :
\version "2.22.1"
\include "BookPartPagesNumber.ly"
musique = \relative c'' { \repeat unfold 2 { d1 \pageBreak } }

\paper {
   print-first-page-number = ##f
}

\book {
   \bookpart {
     \paper {
       oddHeaderMarkup = \oddMarkup #'arabic
       evenHeaderMarkup = \evenMarkup #'arabic
     }
     \score {
       \musique
     }
   }
   \bookpart {
     \paper {
       oddHeaderMarkup = \oddMarkup #'arabic
       evenHeaderMarkup = \evenMarkup #'arabic
     }
     \score {
       \musique
     }
   }
}

\book {
   \bookpart {
     \paper {
       oddHeaderMarkup = \oddMarkup #'arabic
       evenHeaderMarkup = \evenMarkup #'arabic
     }
     \score {
       \musique
     }
   }
   \bookpart {
     \paper {
       oddHeaderMarkup = \oddMarkup #'arabic
       evenHeaderMarkup = \evenMarkup #'arabic
     }
     \score {
       \musique
     }
   }
}

-- 
Vincent Gay
Envoyé depuis mon saxo-phone :)
https://myrealbook.vintherine.org/  -http://photos.vintherine.org/

---

From: Vincent Gay <[email-masked]>
Date: Tue, 4 Jan 2022 10:12:56 +0100

Le 03/01/2022 à 21:25, Vincent Gay a écrit :
> ../..

La fonction écrite par Thomas Morley a été corrigée sur la liste 
anglophone par Valentin Petzel, tout fonctionne maintenant parfaitement. 
Pour ceux que cela intéresse la voici suivie d'un exemple :

\|version "2.22.1"|

|#(define part-first-pages '(0))|

|#(define (part-first-page? layout props)|

|  (= (chain-assoc-get 'page:page-number props -1)|

|     (ly:output-def-lookup layout 'first-page-number)))|

|#(define (reset-part-first-page layout props arg)|

|"Returns page-number-string, starting every bookpart with page-number 0.|

|Relying on the extern defined `part-first-pages'.|

|"|

|  (set! props (prepend-alist-chain 'part-first-page '(0) props))|

|  (let* ((real-page-number (chain-assoc-get 'page:page-number props -1))|

|         (parts-page-number (- real-page-number (car part-first-pages))))|

|    (if (part-first-page? layout props)|

|        (set! part-first-pages (cons (1- real-page-number) 
part-first-pages)))|

|    (set! props|

|      (cons|

|        (list|

|          (cons 'page:page-number-string (number->string 
parts-page-number))|

|          (cons 'page:page-number parts-page-number))|

|        props))|

|    (interpret-markup layout props arg)))|

|#(define ((print-part-first-page-as-one number-type) layout props arg)|

|  (set! props|

|    (cons|

|      (list|

|        (cons 'page:page-number-string|

|              (let ((page-number|

|                     (chain-assoc-get 'page:page-number props -1)))|

|                ;(if (<= page-number 0) ""|

|                (cond ((and (eq? number-type 'roman-lower) (> 
page-number 0))|

|                       (fancy-format #f "~(~@r~)" page-number))|

|                      ((and (eq? number-type 'roman-upper) (> 
page-number 0))|

|                       (fancy-format #f "~@r" page-number))|

|                          ((eq? number-type 'arabic)|

|                           (number->string page-number))|

|                          (else (number->string page-number)))));)|

|        (cons 'page:page-number|

|              (chain-assoc-get 'page:page-number props -1)))|

|      props))|

|  (interpret-markup layout props arg))|

|\paper {|

|  print-first-page-number = ##t|

|  oddMarkup =|

|  #(define-scheme-function (number-type)(symbol?)|

|    #{|

|      \markup|

|        \column {|

|          \fill-line {|

|            " "|

|            \on-the-fly #not-part-first-page \fromproperty 
#'header:instrument|

|              %% use in this order:|

|              \on-the-fly #reset-part-first-page|

|              \on-the-fly #(print-part-first-page-as-one number-type)|

|              \on-the-fly #print-page-number-check-first|

|              \fromproperty #'page:page-number-string|

|          }|

|        }|

|    #})|

|  evenMarkup =|

|  #(define-scheme-function (number-type)(symbol?)|

|    #{|

|      \markup|

|        \column {|

|          \fill-line {|

|              %% use in this order:|

|              \on-the-fly #reset-part-first-page|

|              \on-the-fly #(print-part-first-page-as-one number-type)|

|              \on-the-fly #print-page-number-check-first|

|              \fromproperty #'page:page-number-string|

|            \on-the-fly #not-part-first-page \fromproperty 
#'header:instrument|

|            " "|

|          }|

|        }|

|    #})|

|}

|

|%%%%%%%%%% exemple %%%%%%%%%%%|

||

|musique = \relative c'' { \repeat unfold 2 { d1 \pageBreak } }|

||

|\book {|

|  \bookpart {|

|    \paper {|

|      oddHeaderMarkup = \oddMarkup #'roman-lower|

|      evenHeaderMarkup = \evenMarkup #'roman-lower|

|    }|

|    \score {|

|      \musique|

|    }|

|  }|

|  \bookpart {|

|    \paper {|

|      print-first-page-number = ##f|

|     oddHeaderMarkup = \oddMarkup #'arabic|

|      evenHeaderMarkup = \evenMarkup #'arabic|

|    }|

|    \score {|

|      \musique|

|    }|

|        \score {|

|      \musique|

|    }|

||

|  }|

|}|

||

---

From: Jean-Charles Malahieude <[email-masked]>
Date: Tue, 4 Jan 2022 19:19:00 +0100

Le 04/01/2022 à 10:12, Vincent Gay a écrit :
> [...]

Problème dès lors qu'on n'affiche pas en HTML : les lignes de code sont 
bornées par des « pipes » qu'il faudra penser à supprimer une fois le 
texte rapatrié.

Cordialement, avec tous mes vœux,
--
Jean-Charles

---

From: Vincent Gay <[email-masked]>
Date: Tue, 4 Jan 2022 19:41:26 +0100

Le 04/01/2022 à 19:19, Jean-Charles Malahieude a écrit :
>
> Problème dès lors qu'on n'affiche pas en HTML : les lignes de code 
> sont bornées par des « pipes » qu'il faudra penser à supprimer une 
> fois le texte rapatrié.

Oups... je ne m'en étais pas rendu compte, désolé et merci à 
Jean-Charles de m'en avertir. L'idée était de faire apparaître les 
tabulations mais le remède est pire que le mal.

Finalement 2 petits fichiers .ly en pièces jointes ça aurait mieux fait 
l'affaire et pas pesé plus lourd.

Vincent Gay
Envoyé depuis mon saxo-phone :)
https://myrealbook.vintherine.org/ - http://photos.vintherine.org/