Je souhaite définir une fonction scheme qui mette entre crochet un markup donné (indication d’interprétation par exemple). Je suis partie d'une fonction qui fait la même chose pour les indications de nuances (brack) et j'essaye d'en dériver une pour les markup (brackM).
Dans l'exemple ci-dessous je souhaite que la deuxième occurence du dolce apparaisse comme [dolce] (en italique si possible).
Merci pour votre aide.
\version "2.24.3"
dolce = \markup {\italic {dolce}}
brack = #(define-event-function
(dyn) (ly:event?)
(make-dynamic-script
#{
\markup {
\bracket \with-true-dimensions #(ly:music-property dyn 'text)
}
#}
)
)
% ne fonctionne pas
brackM = #(define-event-function
(markup) (ly:markup?)
(make-music
#{
\markup {
\bracket #(ly:music-property markup 'text)
}
#}
)
)
music = \relative c {
\clef bass e4\mp e e\ff e->
e\brack\mp e e\brack\ff e\parenthesize->
c_\dolce c c\brackM_\dolce c
}
\score {
\music
}
Bonjour Pierre et merci pour ton aide.
Je suis passé sur le lien que tu me donnes mais je ne m'en suis pas dépatouillé...
Et d'ailleurs je ne suis pas arrivé à faire marcher le code que tu me donnes. J'ai copié collé le code pour avoir ça :
Bon je viens de trouver il faut enlever le "_" avant le \dolce situé dans music :
c\brackM_\dolce => ne fonctionne pas.
c\brackM\dolce => fonctionne.
Par contre ça veut dire que je ne peux pas positionner le markup en haut si besoin. A moins de rentrer dans le layout ou le props si j'ai bien compris le lien.
J'abuse peut-être mais il y a pas moyen de garder la possibilité de bouger le markup si besoin ?
Il existe déjà une command markup \bracket prédéfinie, donc pas besoin de \bra, il suffit de faire c_\markup \bracket \dolce, ou bien si vous tenez au raccourci,
Merci Jean. C'est plus simple. Par contre je n'arrive pas à le mettre en italic. Avec la fonction de Pierre en rajoutant des \italic avant les crochets ouvrant et fermant je suis arrivé a les passer en italic. Sur le plan esthétique je trouve que c'est préférable : c'est plus homogène.