lilypond-user
[Top][All Lists]
Advanced

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

Re: title page for \book


From: Nicolas Sceaux
Subject: Re: title page for \book
Date: Sat, 30 Jul 2005 11:53:44 +0200
User-agent: Gnus/5.11 (Gnus v5.11) Emacs/22.0.50 (darwin)

Graham Percival <address@hidden> writes:

> I'm working on a \book that contains distinct pieces; as such, I've
> created
> a separate title page.
>
> 1)  If you're interested in using it, here's the code.
> 2)  If you're really interested in using it, I could investigate
>     making this
> part of LilyPond.  And clean it up, of course.  :)
> 3)  Currently the bottom part of the title page is really bare; I'm
>     thinking of
> making an .eps that could go there.  I know that we talked about logos
> for lilypond a few months ago; if anything else has happened along those
> lines, I'd be interested to hear about it.

I've also built custom titles, this thread may be a good place to share
them.

#(def-markup-command (when-property layout props symbol markp) (symbol? markup?)
  (if (chain-assoc-get symbol props)
      (interpret-markup layout props markp)
      (ly:make-stencil '()  '(1 . -1) '(1 . -1))))

\paper {
  
operaBookTitleMarkup = \markup \override #'(baseline-skip . 6) \column {
  \fill-line { \when-property #'header:composer
               \column { " " " " " " " " " "
                         \fill-line { \fontsize #10 \italic \fromproperty 
#'header:composer }
                         " " " " " " } }
  \fill-line { \when-property #'header:title
               \column { " " " " " "
                         \fill-line { \fontsize #12 \fromproperty 
#'header:title }
                         " " " "
                         \fill-line { \fontsize #8 \fromproperty 
#'header:subtitle }
                         " " } }
  \fill-line { \when-property #'header:opus
               \column { " "
                         \fill-line { \fontsize #5 \fromproperty #'header:opus }
                         \fill-line { \fontsize #5 \fromproperty #'header:date }
                         " " " " } }
  \fill-line { \when-property #'header:title
               \column { " " " "
                         \fill-line { " " \postscript #"-20 0 moveto 40 0 
rlineto stroke" " " }
                         " " " " } }
  \fill-line { \when-property #'header:edition
               \column { " "
                         \fill-line { \fontsize #5 \fromproperty 
#'header:edition }}}
}

operaScoreTitleMarkup = \markup \override #'(baseline-skip . 3) \column {
  \fill-line { \when-property #'header:act
               \column { 
                 " " " " " " " " " " " "
                 \fill-line { \fontsize #6 \fromproperty #'header:act }
                 " " " " " " 
               } 
             }
  \fill-line { \when-property #'header:scene
               \column { 
                 \fill-line { \fontsize #3 \fromproperty #'header:scene }
                 " " " "
                 \fill-line { \fontsize #1 \fromproperty #'header:scenedescr }
               }
             }
  \fill-line { \when-property #'header:piece
               \column { 
                 " " " " " "  " " " " " " 
                 \fill-line { \fontsize #4 \fromproperty #'header:piece }
               }
             }
}

operaOddHeaderMarkup = \markup \fill-line {
  " "
  \on-the-fly #(lambda (layout props arg)
                (if (< 1 (chain-assoc-get 'page:page-number props -1))
                    (interpret-markup layout props arg)
                    empty-stencil))
  \fromproperty #'page:page-number-string
}

operaEvenHeaderMarkup = \markup \fill-line {
  \fromproperty #'page:page-number-string
  " "
}

operaOddFooterMarkup = \markup {
  \column {
    \fill-line {

      % put copyright only on pagenr. 1 
      \on-the-fly #(lambda (layout props arg)
                    (if (= 1 (chain-assoc-get 'page:page-number props   -1))
                     (interpret-markup layout props arg)
                     empty-stencil))
      \fromproperty #'header:copyright
    }
    \fill-line {
      % put tagline only on last page
      \on-the-fly #(lambda (layout props arg)
                    (if (chain-assoc-get 'page:last?  props #f)
                     (interpret-markup layout props arg)
                     empty-stencil))
      \fromproperty #'header:tagline
    }
  }
}

operaEvenFooterMarkup = \markup {
  \column {
    \fill-line {
      % put tagline only on last page
      \on-the-fly #(lambda (layout props arg)
                    (if (chain-assoc-get 'page:last?  props #f)
                     (interpret-markup layout props arg)
                     empty-stencil))
      \fromproperty #'header:tagline
    }
  }
}

  #(define-public book-title (marked-up-title 'operaBookTitleMarkup))
  #(define-public score-title (marked-up-title 'operaScoreTitleMarkup))
  
  #(define make-header (marked-up-headfoot 'operaOddHeaderMarkup 
'operaEvenHeaderMarkup))
  #(define make-footer (marked-up-headfoot 'operaOddFooterMarkup 
'operaEvenFooterMarkup))
}



Then you can do:


\header {
  title = "GIULIO CESARE"
  subtitle = "IN EGITTO"
  composer = "George Frideric Haendel"
  opus = "HWV 17"
  date = "1724"
  edition = \markup \center-align {
    "From the Deutsche Händelgesellschaft Edition"
    "Edited by"
    "Frideric Chrysander" }
  copyright = "blabla"
  tagline = \markup \center-align { blablabla }
}

\score {
  { ...Music... }
  \header {
    act = "OUVERTURE."
    breakbefore = ##t
  }
}

\score {
  { ...Music... }
  \header {
    act="ATTO PRIMO"
    scene="SCENA I."
    scenedescr=\markup \center-align { 
      \line { Campagna d'Egitto con antico ponte sopra un ramo del Nilo. }
      \line { \caps {Giulio Cesare} e \caps Curio che passano il ponte con 
seguito. } }
    piece = "CORO."
    breakbefore = ##t
  }
}

nicolas




reply via email to

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