Mettre un markup entre crochet

Bonjour

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 Sébastien,

La doc ref. : Extending LilyPond: 2.5.3 New markup command definition

Ex. :

#(define-markup-command (bra layout props text) (markup?)
  (interpret-markup layout props
    #{\markup\concat { "[" #text "]" } #}))

brackM = -\markup\bra\etc

Cordialement,
Pierre

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 :

\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)
		}
	#}
	)
)

#(define-markup-command (bra layout props text) (markup?)
  (interpret-markup layout props
    #{\markup\concat { "[" #text "]" } #}))

brackM = -\markup\bra\etc

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
}

Mais j'obtiens une erreur :

GNU LilyPond 2.24.3 (exécution de Guile 2.2)
Traitement de « test.ly »
Analyse...
test.ly:25:29: Erreur : type d'argument erroné pour 1.
  Attendait markup, (make-music (quote TextScriptEvent) (quote direction) -1 (quote text) (markup #:line (#:italic "dolce"))) trouvé.
	c_\dolce c  c\brackM
                            _\dolce c 

Ca marche chez toi ?
Merci encore.

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 ?

En tout cas je progresse, merci.

C'est un markup, il doit être précédé d'un tiret. Essaie :

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 
}

yes ! c'est parfait ! merci.

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,

brackM = \markup \bracket \etc

puis c_\brackM \dolce.

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.

Encore merci à tous les deux.