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

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

Re: alignement opus et piece


From: Gilles
Subject: Re: alignement opus et piece
Date: Mon, 24 Sep 2012 18:51:27 +0200
User-agent: Opera Mail/12.02 (Win64)

Le Mon, 24 Sep 2012 12:54:28 +0200, Frère Raphaël <address@hidden> a écrit:

Comme le propose Eluze, j'aimerais pouvoir incorporer cette (ou une autre) fonction dans la définition du scoreTitleMarkup permettant d'utiliser ensemble opus = et piece = .

Je ne comprend pas exactement ce que veut dire "utiliser ensemble opus = et piece = " ?.
On peut se définir ses propres variables \header.
Par exemple, si on veut une variable hymn, dans le header, on peut mettre :
  \header {
          hymn = \markup \my-hymn #'a "hymn-1" "Te Deum"
   }
et dans le scoreTitleMarkup, il suffit d'appeler hymn avec \fromproperty, mais en rajoutant le préfixe header: , comme suit :
  \fromproperty #'header:hymn
Ce qui laisse libre opus et piece pour d'autres usages.
Mais je pressens que ce n'est pas de ça ce dont il s'agit.

Avec le but que l'opus soit toujours mis à l'extérieur de la page et que la piece soit placée à un endroit fixe, mais pas nécessairement au milieu, plutôt un peu sur la gauche. Est-ce qu'une variable ne peut pas être introduite dans la définition du scoreTitleMarkup ? Ceci est en vue de faciliter la mise en page d'un livret de petits chants. Voici ci-dessous le résultat que j'aimerais mais il faudrait simplifier l'écriture (surtout la recherche de la valeur du \halign qui prend du temps pour chaque piece).

Bon, en tout cas voici une version qui permettra une édition très rapide.
J'ai isolé 2 variables : stencil-even et stencil-odd dont on pourra très facilement éditer les markup ( l'édition est très proche d'un \markup traditionnel ). Eluze et raphaël vous n'avez apparemment pas tout à fait les mêmes souhaits ; j'ai plutôt fait le markup demandé par Raphaël, en mettant une variable hymn-hspace dans \page pour pouvoir décaler vers la gauche tout les titres des hymnes.


%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\version "2.16.0"
\paper {
      hymn-hspace = #10         % pour décaler les titres
      scoreTitleMarkup = \markup { \column {
        \on-the-fly #print-all-headers { \bookTitleMarkup \hspace #1 }
        \fromproperty #'header:hymn
        }
      }
}

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

#(define-markup-command (my-hymn layout props label arg1 arg2)
      (symbol? markup? markup?)
(let* ((space (+ (ly:output-def-lookup layout 'hymn-hspace 0)
                 (ly:output-def-lookup layout 'indent 0)))
       (stencil-even (interpret-markup layout props
           (markup #:line (arg1 #:hspace space arg2))))
           ; on peut utiliser general-align pour aligner les arg1 et arg2
       (stencil-odd (interpret-markup layout props
           (markup #:fill-line (#:line (#:hspace space arg2) arg1)))))
  (ly:make-stencil
    `(delay-stencil-evaluation
       ,(delay (ly:stencil-expr
          (let* ((table (ly:output-def-lookup layout 'label-page-table))
                 (page-number (if (list? table)
                   (assoc-get label table)
                   #f)))
            (if (even? page-number) stencil-even stencil-odd)))))
    '(0 . 0) '(0 . 0))))

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\book {
      \score {
        \new Staff { \label #'a \repeat unfold 100 c'1 }
        \header {
          hymn = \markup \my-hymn #'a "hymn-1" "Te Deum"
        }
      }

      \score {
        \new Staff { \label #'b \repeat unfold 100 c'1 }
        \header {
          hymn = \markup \my-hymn #'b "hymn-2" "Aria"
        }
      }

      \score {
        \new Staff { \label #'c \repeat unfold 100 c'1 }
        \header {
          hymn = \markup \my-hymn #'c "hymn-3" "Messe"
        }
      }

      \score {
        \new Staff { \label #'d c'1 }
        \header {
          hymn = \markup \my-hymn #'d "hymn-4" "Solo"
        }
      }

      \score {
        \new Staff { \label #'e \repeat unfold 100 c'1 }
        \header {
          hymn = \markup \my-hymn #'e "hymn-5" "Magnificat"
        }
      }

      \score {
        \new Staff { \label #'f c'1 }
        \header {
          hymn = \markup \my-hymn #'f "hymn-6" "Agnus"
        }
      }
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%


--
Gilles



reply via email to

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