Subject: Placement des indications de repères en début de ligne : solution

From: Xavier Scheuer <[email-masked]>
Date: Sun, 7 Aug 2011 15:52:17 +0200

Bonjour à tous,

J'aimerais partager avec vous la solution à un problème sur lequel
j'ai buté encore et encore… jusqu'à ce que que Neil me fournisse la
solution idéale (qui fait exactement ce que je veux) !
J'ai nommé "le placement des indications de repères en début de ligne".

Pour le moment LilyPond place ces indications (\mark) de début de ligne
au dessus de la clé, ce qui n'est pas joli (je trouve) et qui ne
correspond pas aux pratiques usuelles des graveurs (même s'il n'y a pas
de "standard", comme montré par Reinhold, cf. commentaire #5
http://code.google.com/p/lilypond/issues/detail?id=1150 ).

Si vous ajoutez ce bout de code fourni par Neil (merci à lui !), ces
indications seront placées après l'armure.  Ce qui est cohérent avec
le même placement lorsqu'il y a une barre de reprise en début de ligne.

%% Snippet

\layout {
 \context {
   \Score
   \override RehearsalMark #'after-line-breaking =
   #(lambda (grob)
      (let* ((parent (ly:grob-parent grob X))
             (elts (ly:grob-array->list (ly:grob-object parent 'elements)))
             (symbols (filter identity (map (lambda (elt)
                                              (ly:grob-property elt
'break-align-symbol #f))
                                            elts))))
        (and (= (ly:item-break-dir grob) RIGHT)
             (not (memq 'staff-bar symbols))
             (ly:grob-translate-axis! grob (interval-length
(ly:grob-extent parent parent X)) X))
        (ly:side-position-interface::move-to-extremal-staff grob)))
 }
}

\score {
 \relative c' {
   \key des \major
   \repeat unfold 8 c1 \break
   \mark \default
   \repeat unfold 8 c1 \break
   \repeat volta 2 {
     \mark \default
     \repeat unfold 8 c1
   }
 }
}

%%%% End of snippet

Cordialement,
Xavier

-- 
Xavier Scheuer <[email-masked]>