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

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

Re: override line-width dans une fonction


From: address@hidden
Subject: Re: override line-width dans une fonction
Date: Sat, 22 Sep 2012 16:52:53 +0200

On 22 sept. 2012, at 16:25, Loïc Chahine <address@hidden> wrote:

> 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.
> 
%{
C'est un problème d'espace de noms (namespace en anglais). Il faut que tu 
mettes une commande de markup dans la fonction de musique:
%}

\version "2.17.0"

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


#(define-markup-command (melo-text layout props linewidth text)
  (number? string?)
  (interpret-markup layout props
    (markup #:override '(font-name . "Didot")
            #:override `(line-width . ,linewidth)
            (make-column-markup (list (make-justify-markup (string-split text 
#\space)))))))

meloText =
#(define-music-function
(parser location Largeur Texte)
(number? string?)
#{\stopStaff \once \override TextScript #'extra-offset = #'( 0 . 4 )
s1-\markup \melo-text #Largeur #Texte
\startStaff
#}
)

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

\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 |

}}}

%Cordialement,
%~Mike


reply via email to

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