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

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

Re: Fonction conditionnelle pour insérer une page blanche


From: Eulogia
Subject: Re: Fonction conditionnelle pour insérer une page blanche
Date: Thu, 8 Dec 2022 17:01:32 +0100

Bonjour, 

Merci beaucoup pour tous ces liens, j'étudierai tout cela en détail calmement. 


Merci aussi pour la routine, le code donné tel quel fonctionne bien, mais pas 
du tout si je l'intègre dans ma solution: 

Avec l'option odd, il ne m'affiche qu'une seule page blanche, peu importe où je 
place \emptypage

Avec l'option even, il m'affiche la partition normalement, mais sans page 
blanche, peu importe où je place \emptypage


A moins que cela ne vous inspire droit une idée, je vais essayer de voir si 
j'arrive à reproduire le problème sur un exemple simplifié. 


Au plaisir, 

ben




> Le 8 déc. 2022 à 14:00, Jean Abou Samra <jean@abou-samra.fr> a écrit :
> 
> Bonjour,
> 
> 
> Le 08/12/2022 à 12:18, Eulogia a écrit :
>> [...]
>> 
>> Mais ce n'est pas franchement très élégant, et j'aimerais savoir s'il serait 
>> possible de compléter la doc avec:
>> 
>> 1. Le traditionnel "Hello World" qui montre comment fonctionne l'intégration 
>> entre lilypond et scheme
> 
> 
> 
> C'est vrai que la documentation officielle n'est pas absolument
> brillante sur ce sujet, mais il y a quand même des exemples
> simples sur
> 
> https://lilypond.org/doc/v2.23/Documentation/extending/lilypond-variables
> 
> et
> 
> https://lilypond.org/doc/v2.23/Documentation/extending/lilypond-code-blocks
> 
> Il y a aussi ce tutoriel Scheme (écrit par moi) :
> 
> https://tutoriel-scheme.readthedocs.io/
> 
> avec une introduction normalement progressive.
> 
> 
>> 2. Où peut-on trouver la définition de fonctions comme 
>> ly:parser-include-string?
> 
> 
> ly:parser-include-string est une fonction définie en C++ et exportée en
> Scheme, comme la plupart des fonctions dont le nom commence par « ly: ».
> Vous la trouverez dans le fichier lily/lily-parser-scheme.cc :
> 
> https://gitlab.com/lilypond/lilypond/-/blob/master/lily/lily-parser-scheme.cc#L276
> 
> Bien sûr, cela ne vous sera utile que si vous comprenez le C++ et la façon
> dont Scheme est intégré au C++ de LilyPond.
> 
> Maintenant, si tout ce que vous cherchez est sa documentation, elle peut
> se trouver dans la référence des propriétés internes, comme pour toutes
> les fonctions Scheme :
> 
> https://lilypond.org/doc/v2.23/Documentation/internals/scheme-functions
> 
> 
>> 3. Est-ce qu'il existe en scheme le moyen de récupérer directement le numéro 
>> de page courant, sans passer par un label et si oui, où peut-on trouver les 
>> spécificités de lilypond accessible via le scheme?
> 
> 
> En fait, le \page-ref est une fausse piste, car cette commande
> n'accède pas directement au numéro de page lorsqu'elle est
> exécutée. Elle ne fait que créer une référence au numéro de
> page, qui est remplacée par le numéro bien plus tard, à un
> moment où il est trop tard pour rajouter une page.
> 
> Voilà une fonction qui fonctionne :
> 
> 
> \version "2.23.82"
> 
> emptyPage =
> \bookpart {
>   \paper {
>     oddHeaderMarkup = ""
>     oddFooterMarkup = ""
>     #(use-modules (ice-9 match))
>     page-breaking =
>       #(lambda (paper-book)
>          (match-let* (((page) (ly:optimal-breaking paper-book))
>                       (num (ly:prob-property page 'page-number)))
>            (if (even? num)
>                (list page)
>                '())))
>   }
>   \markup ""
> }
> 
> \book {
>   { c' }
>   \bookpart { \emptyPage }
>   { c' }
>   \pageBreak
>   { c' }
>   \bookpart { \emptyPage }
>   { d' }
> }
> 
> 
> 
> L'idée est de modifier l'algorithme de calcul des sauts
> de page pour ce \bookpart afin qu'il supprime l'unique
> page générée si elle est paire. Vous pouvez remplacer even?
> par odd?.
> 
> Pour en apprendre plus sur les interfaces Scheme de LilyPond,
> il y a essentiellement deux ressources : le manuel d'extension,
> que vous avez déjà trouvé, et puis un document que j'ai écrit,
> 
> https://extending-lilypond.readthedocs.io
> 
> qui se veut plus complet.
> 
> Il est vrai que ni l'un ni l'autre ne mentionnent les modifications
> de page-breaking, qui est plutôt documenté ici du point de vue
> des valeurs prédéfinies par LilyPond :
> 
> https://lilypond.org/doc/v2.23/Documentation/notation/page-breaking
> 
> En fait, je n'y ai pas pensé du tout en écrivant « Extending LilyPond ».
> C'est un coin de LilyPond dans lequel on a très rarement besoin d'aller
> mettre son nez, ça m'était peut-être arrivé deux fois mais pas bien
> plus ...
> 
> Cordialement,
> Jean
> 




reply via email to

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