lilypond-user-fr
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

override line-width dans une fonction


From: Loïc Chahine
Subject: override line-width dans une fonction
Date: Sat, 22 Sep 2012 16:25:12 +0200
User-agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.8; rv:15.0) Gecko/20120824 Thunderbird/15.0

Bonjour à tous !
J’ai fait plusieurs expériences avec mon petit problème, sans obtenir le résultat souhaité. Je vous les livre donc ici en détail, en espérant que quelqu’un pourra m’aider à trouver la solution.

Si j’écris :
\score {
\new Staff {
\relative d' {
\textLengthOn

\tempo "Largo"
\key es \major
<bes es g>4 <bes es g>8. <bes es g>16 <bes es g>2-\fermata \bar "||"

% \textA

\tempo "Adagio"
r8 bes( ces a) << { bes f'~ f16 d es ges, ges8 f16. ges32 d8 } \\
{ s8 as'~ as16 f ges es es8 d16. es32 bes8 } >> r8 r2 |

\stopStaff \once \override TextScript #'extra-offset = #'( 0 . 5 )
s1-\markup { \textB }
\startStaff

s8 f''(-\p ges e) << { f es~ es16 c des bes' | bes8 a16. bes32 a8 } \\
{ s8 c,~ c16 a bes des | des8 c16. des32 c8 } >> r8 r2 |

}}}

où :
textB =
\markup {
\override #'(font-name . "Didot")
\column {
\override #'(line-width . 18 )
\justify {
Tout mon feu s’est éteint…
mon imagination s’est glacée,
le marbre sort froid de mes mains…
}
}
}

Pas de problème, toutes les indications sont respectées. Si maintenant j’essaie de faire une fonction pour me simplifier la tâche, et donc de faire :

meloText =
#(define-music-function
(parser location Largeur Texte)
(number? string?)
#{\stopStaff \once \override TextScript #'extra-offset = #'( 0 . 4 )
s1-\markup {
\override #'(font-name . "Didot")
\column {
\override #'(line-width . 30)
\justify {
$Texte
}
}
}
\startStaff
#}
)

textA = \meloText #30 #"Il n'y a point là d'âme ni de vie… Ce n'est que de la pierre"

et de décommenter la ligne \textA dans mon \score { … }, hé bien la ligne \override #'(line-width . 30) n’est pas prise en compte et le texte prend ses aises et se place sur une seule ligne.
Si enfin je mets \override #'(line-width . $Largeur), la compilation plante.

J’ai donc fait quelques petites recherches, et j’ai essayé de remplacer la ligne \override #'(line-width . $Largeur) par \override #'(cons line-width . $Largeur). Ça ne plante plus, mais l’indication n’est toujours pas respectée. Idem avec \override #'(cons line-width . 30). J’ai aussi essayé, purement expérimental parce que je l’ai aperçu dans des résultats Google, \override #'(cons 'line-width . $Largeur) ; ça plante pas mais ça fait toujours rien. J’ai aussi essayé sans le dollar. J’ai aussi essayé de remettre \textLengthOn dans la fonction.

Je suis d’autant plus surpris que l’autre \override, celui pour le choix de la fonte, est, lui, parfaitement respecté.

Du coup je me retrouve bloqué. Est-ce que c’est un bug ? Je ne pense pas, et je crois plutôt qu’il faut écrire cette ligne d’une autre manière quand on veut la mettre dans une fonction, mais mes recherches à la fois dans le manuel Extending et sur Google ont été infructeuses. Je suis du coup bloqué pour travailler sur ma partition, parce que si je dois changer ma syntaxe, je vais écrire des lignes et des lignes pour rien !

Merci d’avance pour votre aide !
L.C.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]