| [ << Tweaks and overrides ] | [Top][Contents][Index][ ? ] | [ Titles >> ] | ||
| [ < ] | [ Up : Top ] | [ > ] | ||
Paper and layout
These snippets illustrate the Notation Reference, section Spacing issues.
| [ << Paper and layout ] | [Top][Contents][Index][ ? ] | [ Titles >> ] | ||
| [ < Paper and layout ] | [ Up : Paper and layout ] | [ > ] | ||
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-bottom-last.
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 { #(define page-breaking optimal-page-breaks) }
\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' }
}
}
| [ << Paper and layout ] | [Top][Contents][Index][ ? ] | [ Titles >> ] | ||
| [ < ] | [ Up : Paper and layout ] | [ > ] | ||
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)
#(set! output-count 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))
)
}
}
}
#(set! output-count 0)
#(ly:set-option 'clip-systems #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 >> ] | ||
| [ < ] | [ 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 ] | [ 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 > ] | ||