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

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

Re: override line-width dans une fonction


From: address@hidden
Subject: Re: override line-width dans une fonction
Date: Sat, 22 Sep 2012 18:59:44 +0200


On 22 sept. 2012, at 17:42, address@hidden wrote:


On 22 sept. 2012, at 17:06, Loïc Chahine <address@hidden> wrote:

Le 22/09/12 16:52, address@hidden a écrit :
%{
C'est un problème d'espace de noms (namespace en anglais). Il faut que tu mettes une commande de markup dans la fonction de musique:
%}

Merci, Mike !
Mais j’ai pas tellement compris en fait… surtout ça :

#(define-markup-command (melo-text layout props linewidth text)
 (number? string?)
 (interpret-markup layout props
   (markup #:override '(font-name . "Didot")
           #:override `(line-width . ,linewidth)
           (make-column-markup (list (make-justify-markup (string-split text #\space)))))))

Pourquoi est-ce qu’à l’avant-dernière ligne on met un accent grave au lieu de l’apostrophe et une virgule ?

C'est une convention de Scheme qui s'appelle quasiquote. Tu peux également faire (cons 'line-width linewidth) sans accent et sans virgule - ça revient au même.

Bon la dernière ligne j’imagine que c’est des propriétés spéciales pour que ça aille à la ligne etc.

C'est une copie du markup tel que tu l'avais écrit mais en Scheme. Les commandes make-X-markup n'acceptent que des listes. Le column est facultatif dans les exemples que tu as fournis - tu peux le supprimer et le résultat visuel ne changerait pas. J'évoque string-split pour éclater le string en une liste de plusieurs strings (et donc plusieurs markups) en utilisant l'espace comme séparateur.



Pour ton autre mail :

Petit commentaire supplémentaire - au lieu d'utiliser extra-offset, tu peux changer la valeur de Y-offset en fonction de la hauteur du stencil pour que le texte soit centré dans la portée.

J’ai pas trop compris non plus.


Je ne me suis pas bien exprimé. En gros tu voudras chopper la valeur de la hauteur du stencil et la manipuler. Je ne l'ai pas bien utilisé ci-dessous mais tu pourras l'adapter. Essaie :

Problème repéré - il faut faire :

meloText =
#(define-music-function
(parser location Largeur Texte)
(number? string?)
#{\stopStaff
\once \override TextScript #'outside-staff-priority = ##f
\once \override TextScript #'Y-offset =
#(lambda (grob)
  (- (interval-center (ly:stencil-extent (ly:grob-property grob 'stencil) Y))))
s1-\markup \melo-text #Largeur #Texte
\startStaff
#})

pour que le texte soit centré sur la portée.

Cordialement,
~Mike


reply via email to

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