Subject: [LilyPond] [Général] #if markup en fonction

From: MartialR via LilyPond <[email-masked]>
Date: Tue, 16 Jan 2024 16:29:17 +0000

Bonjours,
je suis toujours aussi pas bon en scheme 
cette commande/fonction : 

Marche 
```
bon = ##t
test= #(if bon
           #{ \markup "bon"#}
           #{ \markup "mauvais"#}
           )

{  c'-\test }
```

Et là en fonction marche pas mais pourquoiiiiii ?
```

#(define-markup-command (Test layout props arg)(boolean?)
   #(if  arg
         #{ \markup "bon" #}
         #{ \markup "mauvais" #}
         ))

{  c'-\Test ##t }
```
Merci de vos lumières

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/if-markup-en-fonction/5609/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: Jean Abou Samra via LilyPond <[email-masked]>
Date: Tue, 16 Jan 2024 16:43:13 +0000

D'abord, une commande markup doit s'utiliser dans un markup. Ensuite, il y a un `#` en trop devant le `(if`. On est déjà en mode Scheme ici, vu que le `#(define-markup-command` introduit une expression Scheme, donc le `#(` est interprété par Scheme, ce qui donne une vecteur littéral, qui n'est pas du tout ce que tu voulais. De plus, une fonction pour markup ne renvoie pas un markup mais un stencil.

```
\version "2.24.2"

#(define-markup-command (Test layout props arg) (boolean?)
   (interpret-markup
    layout
    props
    (if arg
        #{ \markup "bon" #}
        #{ \markup "mauvais" #})))

{  c'-\markup \Test ##t }
```

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/if-markup-en-fonction/5609/2).

---

From: MartialR via LilyPond <[email-masked]>
Date: Tue, 16 Jan 2024 16:55:02 +0000

ha merci beaucoup

j'avais bien testé ça sans   layout pfff  !!!
```
 (interpret-markup
      props
```

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/if-markup-en-fonction/5609/3).

---

From: MartialR via LilyPond <[email-masked]>
Date: Wed, 17 Jan 2024 15:17:09 +0000

Bonjour
je me suis compliqué la vie alors que c'était bien simple pour faire un barré ou demi barré

```
% full-Barred ##f or half-Barred ##t  
startBb = #(define-event-function (txt1 arg)(markup? boolean?)
             #{
               \tweak bound-details.left.text \markup\normal-text\concat{
                 #(if arg
                      #{ \markup\combine "B" \translate #'(0.18 . 0.20) "|"  #}
                      #{ \markup "B" #}
                      )
                 \tiny $txt1
               }
               \tweak dash-period 0.8
               \tweak style #'line %comment for dashed-line
               \tweak bound-details.left.stencil-align-dir-y #0
               \tweak bound-details.left-broken.text ##f
               \tweak bound-details.left-broken.attach-dir -1
               \tweak bound-details.left-broken.padding 1.5
               \tweak bound-details.right.padding -1.5 %pos x vertical line
               \tweak bound-details.right.attach-dir 2
               \tweak bound-details.right-broken.text ##f
               \tweak bound-details.right.text
               \markup
               \with-dimensions #'(0 . 0) #'(-.3 . 0)
               \draw-line #'(0 . -1)
               \startTextSpan
             #})

\relative c' {
  g8\startBb "III" ##f c g' bes \stopTextSpan a4 g4
  c8\startBb "V" ##t e8 a fis \stopTextSpan e4 d4
}
```
Bon lilypond

---
Pour poster dans ce sujet, visitez la [page du sujet](https://lilypond.community/t/if-markup-en-fonction/5609/4).