"Souligner" des syllabes avec un point

Bonjour

D'abord un grand merci à tous les contributeurs pour les conseils fournis
sur cette liste et pour tout le travail effectué autour de ce formidable
outil qu'est Lilypond.
Jusqu'à maintenant j'ai toujours trouvé ce que je cherchais à faire mais ce
coup-ci la fonction n'existe pas. Je cherche à souligner du texte avec un
point (texte = caractère, syllabe, mot) à la manière de \underline. Je
souhaite que le point soit centré sous le texte rentré en argument et
pouvoir intervenir sur l'espacement vertical entre le texte et le point.
N'y arrivant pas directement avec les markups j'ai décidé de faire le pas en
essayant de mettre les mains dans le cambouis de Scheme. Je suis arrivé (à
force de lecture et de temps !) à l'exemple ci-dessous qui ne marche pas
vraiment... Le point de référence pour l'alignement est pris à gauche au
lieu qu'il soit pris au centre de l'emplacement normal du texte. Dans l'état
actuel le mot disparaît et il y a deux points, si je supprime l'avant
dernière commande le point n'est pas décalé et il y a un problème de place
pour le texte. Je reconnais être un peu perdu dans la syntaxe et les
différentes fonctions internes.
Voici un exemple :

#(define-markup-command (dot layout props text)
  (string?)
  #:properties ((offset -1))
  (let* (
      (font (ly:paper-get-font layout (cons '((font-encoding . fetaMusic))
props)))
      (dot (ly:font-get-glyph font "dots.dot"))
      (syl (interpret-markup layout props text))
      )
    (set! syl (ly:stencil-aligned-to syl X CENTER))
    (set! dot (ly:stencil-aligned-to dot X CENTER))
    (set! syl (ly:stencil-translate-axis dot offset Y))
    (ly:stencil-add syl dot)
   )
  )
      
\markup { Ceci \dot #"est" un essai }

Merci pour tout conseil.
Cordialement

Gildas

/(Config : Lilypond 2.14.2, Ubuntu 11.04)/

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Souligner-des-syllabes-avec-un-point-tp6864007p6864007.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Bonsoir,

Voilà comment ce peut être fait avec des markups :

\markup \override #'(baseline-skip . 0.75) \center-column { est \musicglyph #"dots.dot" }

Une version automatisée donne :

#(define-markup-command (dot layout props str)
(string?)
#:properties ((offset 0.75))
(interpret-markup
layout
props
(markup
#:override `(baseline-skip . ,offset)
#:center-column (str #:musicglyph "dots.dot"))))

\markup { Ceci \dot #"est" un essai }

Cordialement,
Bertrand

Bonsoir

Merci beaucoup pour la réactivité. C'est presque parfait mais il reste le
problème de la collision des mots : "ceci et "est" sont en collision? Je ne
sais pas comment on peut rétablir cela.

Cordialement
Gildas

···

--
View this message in context: http://lilypond-french-users.1298960.n2.nabble.com/Souligner-des-syllabes-avec-un-point-tp6864007p6864117.html
Sent from the LilyPond French Users mailing list archive at Nabble.com.

Bonjour

Merci beaucoup, ça marche impeccable. J'ai rajouté la fonction \concat pour pouvoir l'appliquer à des caractères uniques. J'ai également retouché la fonction \underline avec le concat ; ces deux fonctions retouchées vont m'être très utiles pour la saisie de texte psalmodié.
Voici ce que ça donne :
\version "2.14.2"

#(define-markup-command (u layout props syl1 syl2 syl3) (string? string? string?)
(interpret-markup layout props
(markup #:concat (
syl1
#:override '(offset . 6) #:override '(thickness . 3)
#:underline syl2
syl3))))

#(define-markup-command (dot layout props str1 str2 str3)
(string? string? string?)
#:properties ((offset 0.75))
(let ((x-extent (ly:stencil-extent (interpret-markup layout props str2) X)))
(interpret-markup
layout
props
(markup #:concat (
str1
#:override `(baseline-skip . ,offset)
#:concat
(#:hspace (/ (interval-length x-extent) 2)
#:center-column (str2 #:musicglyph "dots.dot"))
str3 )))))

\markup { \u #"C" #"e" #"ci" \u #"" #"e" #"st" un \dot #"ess" #"a" #"i" }

···

Le 6 octobre 2011 00:56, Bertrand Bordage <****@****> a écrit :

Effectivement, sous 2.14 il y a ce problème. Il a été réglé depuis dans les versions de développement.
Pour résoudre le problème sans passer à 2.15, il faut décaler le "est" de la moitié de sa largeur. Cela donne ceci :

\version "2.14"

#(define-markup-command (dot layout props str)
(string?)
#:properties ((offset 0.75))

(let ((x-extent (ly:stencil-extent (interpret-markup layout props str) X)))

(interpret-markup
layout
props
(markup
#:override `(baseline-skip . ,offset)

#:concat
(#:hspace (/ (interval-length x-extent) 2)
#:center-column (str #:musicglyph "dots.dot"))))))

\markup { Ceci \dot #"est" un essai }

À plus et bonne nuit à tous,
Bertrand

--
Latour Basse
31570 LANTA

06 31 84 85 03