Subject: [LilyPond] Mettre un markup entre crochet

From: Sébastien MANEN via LilyPond <[email-masked]>
Date: Thu, 22 Aug 2024 14:59:34 +0000

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
}
```

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/mettre-un-markup-entre-crochet/5737/1).

Pour créer un nouveau sujet, écrivez à [[email-masked]](mailto:[email-masked]) ou visitez la [page d'accueil de lilypond.community](https://lilypond.community).

---

From: Pierre Perol-Schneider via LilyPond <[email-masked]>
Date: Thu, 22 Aug 2024 17:24:11 +0000

Bonjour Sébastien,

La doc ref. : https://lilypond.org/doc/v2.24/Documentation/extending/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

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/mettre-un-markup-entre-crochet/5737/2).

---

From: Sébastien MANEN via LilyPond <[email-masked]>
Date: Thu, 22 Aug 2024 18:48:03 +0000

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"

music = \relative 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.

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/mettre-un-markup-entre-crochet/5737/3).

---

From: Sébastien MANEN via LilyPond <[email-masked]>
Date: Thu, 22 Aug 2024 19:03:51 +0000

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.

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/mettre-un-markup-entre-crochet/5737/4).

---

From: Pierre Perol-Schneider via LilyPond <[email-masked]>
Date: Thu, 22 Aug 2024 19:05:48 +0000

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 
}
```

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/mettre-un-markup-entre-crochet/5737/5).

---

From: Sébastien MANEN via LilyPond <[email-masked]>
Date: Thu, 22 Aug 2024 19:07:14 +0000

yes ! c'est parfait ! merci.

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/mettre-un-markup-entre-crochet/5737/6).

---

From: Jean Abou Samra via LilyPond <[email-masked]>
Date: Thu, 22 Aug 2024 20:10:12 +0000

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`.

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/mettre-un-markup-entre-crochet/5737/7).

---

From: Sébastien MANEN via LilyPond <[email-masked]>
Date: Thu, 22 Aug 2024 22:04:48 +0000

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.

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/mettre-un-markup-entre-crochet/5737/8).