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

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

Re: instrumentName sur plusieurs lignes dans une fonction


From: Remy CLAVERIE
Subject: Re: instrumentName sur plusieurs lignes dans une fonction
Date: Tue, 8 Jul 2014 17:39:27 +0200 (CEST)

 

Bonjour Pierre,

 

Merci de ta réponse. Ton code fonctionne bien mais il ne répond pas que partiellement à mon problème que je n'ai sans doute pas bien décrit.

Mon soucis se situe sur le passage à une fonction.

La photo Incipit1.jpg montre le résultat que je veux et la photo Incipit.png, celui que j'obtiens avec ma fonction.

 

Ma question est : Dans la fonction shortIncipit ci-desssous, comment traiter une chaîne de caractères en prenant en compte les césures ?

 

La photo Incipit1.jpg jointe montre le résultat de l'appel de la fonction : \shortIncipit "cantus primi chori".

 

Et la fonction shortIncipit est ci-dessous :

 

#(define (general-column align-dir baseline mols)

(let* ((aligned-mols (map (lambda (x) (ly:stencil-aligned-to x X align-dir)) mols)))

(stack-lines -1 0.0 baseline aligned-mols)))

 

#(define-markup-command (textCenter layout props args)(markup-list?)

#:properties ((baseline-skip))

(general-column CENTER baseline-skip (wordwrap-internal-markup-list layout props #f args)))

 

shortIncipit =

#(define-music-function (parser location InstrName ) (markup?)

#{

\override Staff.InstrumentName #'self-alignment-X = #CENTER

\set Staff.instrumentName = \markup {

\center-column {

 \override #'(line-width . 15)

 {

\textCenter { #InstrName }

 }

}

}

#})

 

Il n'y a donc pas le retour à la ligne que je souhaite après 'primi'. Or, si je modifie la ligne

\textCenter { #InstrtName } pour : \textCenter { Cantus primi chori } cela donne le résultat que je souhaite (photo Incipit.jpg).

 

Il y a certainement une subtilité dans le type de la variable pour InstrName que je n'ai pas compris.

 

Pour être complet, il me semble avoir vu la solution sur cette liste, mais je ne l'ai pas retrouvée...

 

Encore merci pour ton aide,

 

Rémy

PS : ce n'est pas la grande forme actuellement. J'espère tout de même avoir été plus clair.

 

 






> Message du 08/07/14 13:51
> De : "Pierre Perol-Schneider"
> A : "Remy CLAVERIE"
> Copie à : "lilypond-user-fr"
> Objet : Re: instrumentName sur plusieurs lignes dans une fonction
>
>
Bonjour Remy,
>

>
Le 7 juillet 2014 11:15, Remy CLAVERIE <address@hidden> a écrit :
>
 

Pourtant, lorsque je remplace la variable $InstrName par une chaîne du genre : 'Cantus primi chori', ça marche mais pas "Cantus primi chori"

 
>
Avant de reprendre ton code j'aimerai comprendre ce que tu souhaites.
>
Si je reprend ton markup ça ne "marche" pas :
>
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> \version "2.18.2"
>
> \new Staff
>   \with {
>     instrumentName = \markup {
>       \center-align {
>           \override #'(line-width . 10)
>           \fontsize #2 { Cantus primi chori }
>         }
>       }
>   }
>   {
>     \override Staff.InstrumentName.self-alignment-X = #CENTER
>     c'
>   }  

> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>
>
J'ai essayé de trouver un markup qui ressemble à ton descriptif :
>
> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
> \version "2.18.2"
>
> #(define (general-column align-dir baseline mols)
>   (let* ((aligned-mols (map (lambda (x) (ly:stencil-aligned-to x X align-dir)) mols)))
>     (stack-lines -1 0.0 baseline aligned-mols)))
>
> #(define-markup-command (textCenter layout props args)(markup-list?)
>   #:properties ((baseline-skip))
>   (general-column CENTER baseline-skip (wordwrap-internal-markup-list layout props #f args)))
>
> \markup\italic "Ce que tu souhaites ?"
> \new Staff
>   \with {
>     instrumentName = \markup {
>       \override #'(baseline-skip . 3)
>       \override #'(line-width . 15)
>       \textCenter
>       \fontsize #2 { Cantus primi chori }
>     }
>   }
>   { c' }

> %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
>
>
Cordialement,
>
Pierre
>

Attachment: Incipit.jpg
Description: JPEG image

Attachment: Incipit1.jpg
Description: JPEG image


reply via email to

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