[Top][All Lists]
[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
- override line-width dans une fonction, Loïc Chahine, 2012/09/22
- Re: override line-width dans une fonction,
address@hidden <=
- Re: override line-width dans une fonction, address@hidden, 2012/09/22
- Re: override line-width dans une fonction, Loïc Chahine, 2012/09/22
- Re: override line-width dans une fonction, address@hidden, 2012/09/22
- Re: override line-width dans une fonction, address@hidden, 2012/09/22
- Re: override line-width dans une fonction, address@hidden, 2012/09/22
- Re: override line-width dans une fonction, Loïc Chahine, 2012/09/22
- Re: override line-width dans une fonction, address@hidden, 2012/09/22
- Re: override line-width dans une fonction, Loïc Chahine, 2012/09/22
- Re: override line-width dans une fonction, Loïc Chahine, 2012/09/22
- Re: override line-width dans une fonction, Loïc Chahine, 2012/09/23