| [ << Tweaks and overrides ] | [Top][Contents][Index][ ? ] | [ Titles >> ] | ||
| [ < ] | [ Up : Top ] | [ > ] | ||
Paper and layout
| [ << Paper and layout ] | [Top][Contents][Index][ ? ] | [ Titles >> ] | ||
| [ < Paper and layout ] | [ Up : Paper and layout ] | [ Book parts > ] | ||
Aligning and centering instrument names
The horizontal alignment of instrument names is tweaked by changing the
Staff.InstrumentName #'self-alignment-X property. The
\layout variables indent and short-indent define
the space in which the instrument names are aligned before the first
and the following systems, respectively.
\paper {
left-margin = 3\cm
}
\score {
\new StaffGroup <<
\new Staff {
\override Staff.InstrumentName #'self-alignment-X = #LEFT
\set Staff.instrumentName = \markup \left-column {
"Left aligned"
"instrument name"
}
\set Staff.shortInstrumentName = #"Left"
c''1
\break
c''1
}
\new Staff {
\override Staff.InstrumentName #'self-alignment-X = #CENTER
\set Staff.instrumentName = \markup \center-column {
Centered
"instrument name"
}
\set Staff.shortInstrumentName = #"Centered"
g'1
g'1
}
\new Staff {
\override Staff.InstrumentName #'self-alignment-X = #RIGHT
\set Staff.instrumentName = \markup \right-column {
"Right aligned"
"instrument name"
}
\set Staff.shortInstrumentName = #"Right"
e'1
e'1
}
>>
\layout {
ragged-right = ##t
indent = 4\cm
short-indent = 2\cm
}
}
| [ << Paper and layout ] | [Top][Contents][Index][ ? ] | [ Titles >> ] | ||
| [ < ] | [ Up : Paper and layout ] | [ > ] | ||
Book parts
\bookpart can be used to split a book into several parts. Each
part last page can be affected by ragged-last-bottom. Header and
footer markups can detect a part last page, and make the difference
with the book last page.
#(set-default-paper-size "a6")
\book {
%% book paper, which is inherited by all children bookparts
\paper {
ragged-last-bottom = ##t
%% Page footer: add a different part-tagline at part last page
oddFooterMarkup = \markup {
\column {
\fill-line {
%% Copyright header field only on book first page.
\on-the-fly #first-page \fromproperty #'header:copyright
}
\fill-line {
%% Part tagline header field only on each part last page.
\on-the-fly #part-last-page \fromproperty #'header:parttagline
}
\fill-line {
%% Tagline header field only on book last page.
\on-the-fly #last-page \fromproperty #'header:tagline
}
}
}
}
%% book header, which is inherited by the first bookpart
\header {
title = "Book title"
copyright = "Copyright line on book first page"
parttagline = "Part tagline"
tagline = "Book tagline"
}
\bookpart {
%% a different page breaking function may be used on each part
\paper { page-breaking = #ly:minimal-breaking }
\header { subtitle = "First part" }
\markup { The first book part }
\markup { a page break }
\pageBreak
\markup { first part last page }
\markup \wordwrap { with ragged-last-bottom (see the space below this text) }
}
\bookpart {
\header { subtitle = "Second part" }
{ c'4 }
}
}
| [ << Paper and layout ] | [Top][Contents][Index][ ? ] | [ Titles >> ] | ||
| [ < Book parts ] | [ Up : Paper and layout ] | [ Clip systems > ] | ||
Changing the staff size
Though the simplest way to resize staves is to use
#(set-global-staff-size xx), an individual staff’s size can be
changed by scaling the properties 'staff-space and
fontSize.
<<
\new Staff {
\relative c'' {
\dynamicDown
c8\ff c c c c c c c
}
}
\new Staff \with {
fontSize = #-3
\override StaffSymbol #'staff-space = #(magstep -3)
} {
\clef bass
c8 c c c c\f c c c
}
>>
| [ << Paper and layout ] | [Top][Contents][Index][ ? ] | [ Titles >> ] | ||
| [ < ] | [ Up : Paper and layout ] | [ > ] | ||
Clip systems
This code shows how to clip (extract) snippets from a full score.
This file needs to be run separately with -dclip-systems; the
snippets page may not adequately show the results.
The result will be files named ‘base-from-start-to-end[-count].eps’.
If system starts and ends are included, they include extents of the System grob, e.g., instrument names.
Grace notes at the end point of the region are not included.
Regions can span multiple systems. In this case, multiple EPS files are generated.
#(ly:set-option 'clip-systems)
#(define output-suffix "1")
origScore = \score {
\relative c' {
\set Staff.instrumentName = #"bla"
c1
d1
\grace c16 e1
\key d \major
f1 \break
\clef bass
g,1
fis1
}
}
\book {
\score {
\origScore
\layout {
% Each clip-region is a (START . END) pair
% where both are rhythmic-locations.
% (make-rhythmic-locations BAR-NUMBER NUM DEN)
% means NUM/DEN whole-notes into bar numbered BAR-NUMBER
clip-regions = #(list
(cons
(make-rhythmic-location 2 0 1)
(make-rhythmic-location 4 0 1))
(cons
(make-rhythmic-location 0 0 1)
(make-rhythmic-location 4 0 1))
(cons
(make-rhythmic-location 0 0 1)
(make-rhythmic-location 6 0 1))
)
}
}
}
#(ly:set-option 'clip-systems #f)
#(define output-suffix #f)
\book {
\score { \origScore }
\markup { \bold \fontsize #6 clips }
\score {
\lyrics {
\markup { from-2.0.1-to-4.0.1-clip.eps }
\markup {
\epsfile #X #30.0 #(format #f "~a-1-from-2.0.1-to-4.0.1-clip.eps"
(ly:parser-output-name parser)) }
}
}
}
| [ << Paper and layout ] | [Top][Contents][Index][ ? ] | [ Titles >> ] | ||
| [ < Clip systems ] | [ Up : Paper and layout ] | [ > ] | ||
Creating blank staves
To create blank staves, generate empty measures then remove the
Bar_number_engraver from the Score context, and the
Time_signature_engraver, Clef_engraver and
Bar_engraver from the Staff context.
#(set-global-staff-size 20)
\score {
{
\repeat unfold 12 { s1 \break }
}
\layout {
indent = 0\in
\context {
\Staff
\remove "Time_signature_engraver"
\remove "Clef_engraver"
\remove "Bar_engraver"
}
\context {
\Score
\remove "Bar_number_engraver"
}
}
}
\paper {
#(set-paper-size "letter")
ragged-last-bottom = ##f
line-width = 7.5\in
left-margin = 0.5\in
bottom-margin = 0.25\in
top-margin = 0.25\in
}
| [ << Paper and layout ] | [Top][Contents][Index][ ? ] | [ Titles >> ] | ||
| [ < ] | [ Up : Paper and layout ] | [ > ] | ||
Demonstrating all headers
All header fields with special meanings.
\header {
copyright = "copyright"
title = "title"
subtitle = "subtitle"
composer = "composer"
arranger = "arranger"
instrument = "instrument"
metre = "metre"
opus = "opus"
piece = "piece"
poet = "poet"
texidoc = "All header fields with special meanings."
copyright = "public domain"
enteredby = "jcn"
source = "urtext"
}
\layout {
ragged-right = ##f
}
\score {
\relative c'' { c1 | c | c | c }
}
\score {
\relative c'' { c1 | c | c | c }
\header {
title = "localtitle"
subtitle = "localsubtitle"
composer = "localcomposer"
arranger = "localarranger"
instrument = "localinstrument"
metre = "localmetre"
opus = "localopus"
piece = "localpiece"
poet = "localpoet"
copyright = "localcopyright"
}
}
| [ << Paper and layout ] | [Top][Contents][Index][ ? ] | [ Titles >> ] | ||
| [ < ] | [ Up : Paper and layout ] | [ Table of contents > ] | ||
Setting system separators
System separators can be inserted between systems. Any markup can be
used, but \slashSeparator has been provided as a sensible
default.
\paper {
system-separator-markup = \slashSeparator
}
notes = \relative c' {
c1 | c \break
c1 | c \break
c1 | c
}
\book {
\score {
\new GrandStaff <<
\new Staff \notes
\new Staff \notes
>>
}
}
| [ << Paper and layout ] | [Top][Contents][Index][ ? ] | [ Titles >> ] | ||
| [ < ] | [ Up : Paper and layout ] | [ Titles > ] | ||
Table of contents
A table of contents is included using \markuplines
\table-of-contents. The TOC items are added with the
\tocItem command.
#(set-default-paper-size "a6")
\book {
\markuplines \table-of-contents
\pageBreak
\tocItem \markup { The first score }
\score {
{
c'1 \pageBreak
\mark "A" \tocItem \markup { Mark A }
d'1
}
}
\pageBreak
\tocItem \markup { The second score }
\score {
{ e'1 }
\header { piece = "Second score" }
}
}
| [ << Paper and layout ] | [Top][Contents][Index][ ? ] | [ Titles >> ] | ||
| [ < ] | [ Up : Paper and layout ] | [ Titles > ] | ||