@c **** Links and references ****
-@c TO BE DEPRECATED
-@c usage: @lsrdir{ancient,Ancient-notation}
-@macro lsrdir{SECTION,DIR}
-@ifhtml
-@uref{source/input/lsr/lilypond-snippets/\DIR\.html,\SECTION\}
-@end ifhtml
-@ifnothtml
-\DIR\
-@end ifnothtml
-@end macro
-
-
@c Definitions for references:
@c @rglos
@c @rlearning
@ifset bigpage
-@c TO BE DEPRECATED
-@macro internalsref{TEXT}
-@vindex \TEXT\
-@ref{\TEXT\,,,lilypond-internals-big-page,Internals Reference}
-@end macro
-
-
@macro rglos{TEXT}
@vindex \TEXT\
@ref{\TEXT\,,,music-glossary-big-page,Music Glossary}
@ifclear bigpage
-@c DEPRECATED
-@macro internalsref{TEXT}
-@vindex \TEXT\
-@ref{\TEXT\,,,lilypond-internals,Internals Reference}
-@end macro
-
-
@macro rglos{TEXT}
@vindex \TEXT\
@ref{\TEXT\,,,music-glossary,Music Glossary}
@ifdocbook
@c ***** DOCBOOK-XML *****
-@c DEPRECATED
-@macro internalsref{TEXT}
-@vindex \TEXT\
-@ref{\TEXT\,,,lilypond-internals,Internals Reference}
-@end macro
-
-
-
@macro rglos{TEXT}
@vindex \TEXT\
@ref{\TEXT\,,,music-glossary,Music Glossary}
@ifinfo
@c **** INFO ****
-@c DEPRECATED
-@macro internalsref{TEXT}
-@vindex \TEXT\
-@inforef{\TEXT\,,lilypond-internals,Internals Reference}
-@end macro
-
-
-
@macro rglos{TEXT}
@vindex \TEXT\
@inforef{\TEXT\,,music-glossary,Music Glossary}
@c **** TEX ****
@iftex
-@c DEPRECATED
-@macro internalsref{TEXT}
-@vindex \TEXT\
-@code{\TEXT\}
-@end macro
-
-
-
@macro rglos{TEXT}
@vindex \TEXT\
@ref{\TEXT\,,,music-glossary,Music Glossary}
recommended to use enharmonic transcription, or to use special
cluster notation (see @ref{Clusters}).
-
@node Automatic part combining
@subsubsection Automatic part combining
+
@cindex automatic part combining
@cindex part combiner
@cindex combining parts
+@funindex \partcombine
-Automatic part combining is used to merge two parts of music onto
-a staff. It is aimed at typesetting orchestral scores. When the
-two parts are identical for a period of time, only one is shown.
-In places where the two parts differ, they are typeset as separate
+Automatic part combining is used to merge two parts of music onto a
+staff. It is aimed at typesetting orchestral scores. When the two
+parts are identical for a period of time, only one is shown. In
+places where the two parts differ, they are typeset as separate
voices, and stem directions are set automatically. Also, solo and
-@emph{a due} parts are identified and can be marked.
+@notation{a due} parts are identified and marked by default.
-The syntax for part combining is
+The syntax for part combining is:
@example
\partcombine @var{musicexpr1} @var{musicexpr2}
@end example
+The following example demonstrates the basic functionality of the part
+combiner: putting parts on one staff and setting stem directions and
+polyphony. The same variables are used for the independent
+parts and the combined staff.
+
+@lilypond[quote,verbatim,ragged-right]
+instrumentOne = \relative c' {
+ c4 d e f
+ R1
+ d'4 c b a
+ b4 g2 f4
+ e1
+}
-The following example demonstrates the basic functionality of the
-part combiner: putting parts on one staff, and setting stem
-directions and polyphony.
+instrumentTwo = \relative g' {
+ R1
+ g4 a b c
+ d c b a
+ g f( e) d
+ e1
+}
-@lilypond[quote,verbatim,ragged-right,fragment]
-\new Staff \partcombine
- \relative g' { g g a( b) c c r r }
- \relative g' { g g r4 r e e g g }
+<<
+ \new Staff \instrumentOne
+ \new Staff \instrumentTwo
+ \new Staff \partcombine \instrumentOne \instrumentTwo
+>>
@end lilypond
-The first @code{g} appears only once, although it was specified
-twice (once in each part). Stem, slur, and tie directions are set
-automatically, depending whether there is a solo or unisono. The
-first part (with context called @code{one}) always gets up stems,
-and @q{Solo}, while the second (called @code{two}) always gets
-down stems and @q{Solo II}.
+The notes in the third measure appear only once, although they were
+specified in both parts. Stem, slur, and tie directions are set
+automatically, depending whether there is a solo or unison. When
+needed in polyphony situations, the first part (with context called
+@code{one}) always gets up stems, while the second (called @code{two})
+always gets down stems. In solo situations, the parts get marked with
+@q{Solo} and @q{Solo II}, respectively. The unisono (@notation{a due})
+parts are marked by default with the text @qq{a2}.
+
+Both arguments to @code{\partcombine} will be interpreted as
+@code{Voice} contexts. If using relative octaves,
+@code{\relative} should be specified for both music expressions,
+i.e.,
+
+@example
+\partcombine
+ \relative @dots{} @var{musicexpr1}
+ \relative @dots{} @var{musicexpr2}
+@end example
-If you just want the merging parts, and not the textual markings,
-you may set the property @code{printPartCombineTexts} to false.
+@noindent
+A @code{\relative} section that is outside of @code{\partcombine}
+has no effect on the pitches of @var{musicexpr1} and
+@var{musicexpr2}.
+
+@snippets
+
+Parts may be merged without printing text:
@lilypond[quote,verbatim,ragged-right]
\new Staff <<
>>
@end lilypond
-To change the text that is printed for solos or merging, you may
-set the @code{soloText}, @code{soloIIText}, and @code{aDueText}
-properties.
+The printed text may be changed:
@lilypond[quote,verbatim,ragged-right]
\new Staff <<
- \set Score.soloText = #"ichi"
- \set Score.soloIIText = #"ni"
- \set Score.aDueText = #"tachi"
+ \set Score.soloText = #"girl"
+ \set Score.soloIIText = #"boy"
+ \set Score.aDueText = #"together"
\partcombine
- \relative g' { g4 g a( b) r }
- \relative g' { g4 g r r f }
+ \relative g' { g4 g r r a2 g }
+ \relative g' { r4 r a( b) a2 g }
>>
@end lilypond
-Both arguments to @code{\partcombine} will be interpreted as
-@rinternals{Voice} contexts. If using relative octaves,
-@code{\relative} should be specified for both music expressions,
-i.e.,
-
-@example
-\partcombine
- \relative @dots{} @var{musicexpr1}
- \relative @dots{} @var{musicexpr2}
-@end example
-
-@noindent
-A @code{\relative} section that is outside of @code{\partcombine}
-has no effect on the pitches of @var{musicexpr1} and
-@var{musicexpr2}.
@seealso
Music Glossary:
-@rglos{a due}.
+@rglos{a due},
+@rglos{part}.
+
+Notation Reference:
+@ref{Writing parts}.
Snippets:
@rlsr{Simultaneous notes}.
+
Internals Reference:
@rinternals{PartCombineMusic},
@rinternals{Voice}.
switch to differently named @rinternals{Voice} contexts, the
events in those will be ignored.
+@c IIRC in users list someone pointed out more issues. FV
@node Writing music in parallel
@subsubsection Writing music in parallel
@cindex Writing music in parallel
@cindex Interleaved music
+@funindex parallelMusic
-Music for multiple parts can be interleaved:
+Music for multiple parts can be interleaved in input code. The
+function @code{\parallelMusic} accepts a list with the names of a
+number of variables to be created, and a musical expression. The
+content of alternate measures from the expression become the value of
+the respective variables, so you can use them afterwards to print the
+music.
@lilypond[quote,fragment,verbatim]
\parallelMusic #'(voiceA voiceB) {
c'2 c'2 |
}
\new StaffGroup <<
- \new Staff \new Voice \voiceA
- \new Staff \new Voice \voiceB
+ \new Staff \voiceA
+ \new Staff \voiceB
>>
@end lilypond
-This works quite well for piano music.
+This works quite well for piano music. This example maps four
+consecutive measures to four variables:
@lilypond[quote,verbatim]
global = { \key g \major \time 2/4 }
% Bar 1
a'8 b' c'' d'' |
d'4 e' |
- c16 d e f d e f g |
+ c16 d e fis d e fis g |
a,4 a,4 |
% Bar 2
- e''8 f'' g'' a'' |
- f'4 g' |
- e16 f g a f g a b |
+ e''8 fis'' g'' a'' |
+ fis'4 g' |
+ e16 fis g a fis g a b |
a,4 a,4 |
% Bar 3 ...
@seealso
+Learning Manual:
+@rlearning{Organizing pieces with variables}
+
Snippets:
@rlsr{Simultaneous notes}.
@ref{Mensural contexts}.
Snippets:
-@lsrdir{Staff,Staff-notation}.
+@rlsr{Staff notation}.
-Internals Reference: @internalsref{Staff}, @internalsref{DrumStaff},
-@internalsref{GregorianTranscriptionStaff}, @internalsref{RhythmicStaff},
-@internalsref{TabStaff}, @internalsref{MensuralStaff},
-@internalsref{VaticanaStaff}, @internalsref{StaffSymbol}.
+Internals Reference: @rinternals{Staff}, @rinternals{DrumStaff},
+@rinternals{GregorianTranscriptionStaff}, @rinternals{RhythmicStaff},
+@rinternals{TabStaff}, @rinternals{MensuralStaff},
+@rinternals{VaticanaStaff}, @rinternals{StaffSymbol}.
@rglos{bracket}, @rglos{grand staff}.
Snippets:
-@lsrdir{Staff,Staff-notation}.
+@rlsr{Staff notation}.
-Internals Reference: @internalsref{Staff}, @internalsref{ChoirStaff},
-@internalsref{GrandStaff}, @internalsref{PianoStaff},
-@internalsref{StaffGroup}, @internalsref{systemStartDelimiter},
-@internalsref{SystemStartBar}, @internalsref{SystemStartBrace},
-@internalsref{SystemStartBracket}, @internalsref{systemStartSquare}.
+Internals Reference: @rinternals{Staff}, @rinternals{ChoirStaff},
+@rinternals{GrandStaff}, @rinternals{PianoStaff},
+@rinternals{StaffGroup}, @rinternals{systemStartDelimiter},
+@rinternals{SystemStartBar}, @rinternals{SystemStartBrace},
+@rinternals{SystemStartBracket}, @rinternals{systemStartSquare}.
@node Deeper nested staff groups
@seealso
Snippets:
-@lsrdir{Staff,Staff-notation}.
+@rlsr{Staff notation}.
-Internals Reference: @internalsref{InnerChoirStaffGroup},
-@internalsref{InnerStaffGroup}, @internalsref{SystemStartBar},
-@internalsref{SystemStartBrace}, @internalsref{SystemStartBracket},
-@internalsref{systemStartDelimiterHierarchy}.
+Internals Reference: @rinternals{InnerChoirStaffGroup},
+@rinternals{InnerStaffGroup}, @rinternals{SystemStartBar},
+@rinternals{SystemStartBrace}, @rinternals{SystemStartBracket},
+@rinternals{systemStartDelimiterHierarchy}.
Glossary: @rglos{line}, @rglos{ledger line}, @rglos{staff}.
-Internals Reference: @internalsref{StaffSymbol}.
+Internals Reference: @rinternals{StaffSymbol}.
@knownissues
Music Glossary: @rglos{ossia}, @rglos{staff}, @rglos{Frenched staff}.
Snippets:
-@lsrdir{Staff,Staff-notation}.
+@rlsr{Staff notation}.
-Internals Reference: @internalsref{StaffSymbol}.
+Internals Reference: @rinternals{StaffSymbol}.
@node Hiding staves
Notation Reference: @ref{Staff symbol}.
Snippets:
-@lsrdir{Staff,Staff-notation}.
+@rlsr{Staff notation}.
-Internals Reference: @internalsref{ChordNames},
-@internalsref{FiguredBass}, @internalsref{Lyrics},
-@internalsref{Staff}, @internalsref{VerticalAxisGroup}.
+Internals Reference: @rinternals{ChordNames},
+@rinternals{FiguredBass}, @rinternals{Lyrics},
+@rinternals{Staff}, @rinternals{VerticalAxisGroup}.
@node Writing parts
@subsection Writing parts
Notation Reference: @ref{Formatting text}.
Snippets:
-@lsrdir{Staff,Staff-notation}.
+@rlsr{Staff notation}.
-Internals Reference: @internalsref{MetronomeMark}, @ref{MIDI
+Internals Reference: @rinternals{MetronomeMark}, @ref{MIDI
output}.
Notation Reference: @ref{Modifying context plug-ins}.
Snippets:
-@lsrdir{Staff,Staff-notation}.
+@rlsr{Staff notation}.
-Internals Reference: @internalsref{InstrumentName},
-@internalsref{PianoStaff}, @internalsref{Staff}.
+Internals Reference: @rinternals{InstrumentName},
+@rinternals{PianoStaff}, @rinternals{Staff}.
@node Quoting other voices
Notation Reference: @ref{Instrument transpositions}.
Snippets:
-@lsrdir{Staff,Staff-notation}.
+@rlsr{Staff notation}.
-Internals Reference: @internalsref{QuoteMusic}, @internalsref{Voice}.
+Internals Reference: @rinternals{QuoteMusic}, @rinternals{Voice}.
@node Formatting cue notes
@seealso
Snippets:
-@lsrdir{Staff,Staff-notation}.
+@rlsr{Staff notation}.
-Internals Reference: @internalsref{Voice}.
+Internals Reference: @rinternals{Voice}.
+++ /dev/null
-\version "2.11.45"
-\header {
- lsrtags = "expressive-marks,tweaks-and-overrides"
- texidoc = "
-Using Scheme code to override the stencil for @code{MetronomeMark}
-objects, this example allows the creation of metronome marks which include
-text directions. The function @code{\movement} is called with three
-arguments: the text label, note duration, and beats per minute.
-"
- doctitle = "Adding text indications to metronome marks"
-}
-
-#(define-markup-command (mvt layout props arg) (markup?)
- (interpret-markup layout props
- (markup #:huge #:bold arg)))
-
-#(define (string->duration duration-string)
- "Parse the `duration-string', e.g. ''4..'' or ''breve.'', and return a duration object."
- (let* ((length (string-length duration-string))
- (dot-index (or (string-index duration-string #\.) length))
- (len (substring duration-string 0 dot-index))
- (dots (- length dot-index)))
- (ly:make-duration (cond ((string=? len "breve") -1)
- ((string=? len "longa") -2)
- ((string=? len "maxima") -3)
- (else (log2 (string->number len))))
- dots 1 1)))
-
-movement = #(define-music-function (parser location text duration count music)
- (string? string? integer? ly:music?)
- (define (format-movement-markup dur count context)
- (markup #:mvt text #:hspace 1
- #:concat ("(" #:general-align Y DOWN #:smaller #:note duration 1)
- "="
- #:concat ((number->string count) ")")))
- #{
- \set Score.metronomeMarkFormatter = #$format-movement-markup
- \set Score.tempoWholesPerMinute = #$(ly:moment-mul (ly:make-moment count 1)
- (ly:duration-length
- (string->duration duration)))
- \set Score.tempoUnitDuration = #$(string->duration duration)
- \set Score.tempoUnitCount = $count
- $music
- \set Score.metronomeMarkFormatter = #format-metronome-markup
- #})
-
-\layout { ragged-right = ##f }
-
-\relative c' {
- \time 3/4
- \movement "Allegro" "2." #92
- c2 e4
- g2.
- \movement "Moderato" "4" #104
- f4 e d
- \tempo 4 = 92
- c2.
-}
texidoc = "
In order to make parts of a crescendo hairpin invisible, the following
method is used: A white rectangle is drawn on top of the respective
-part of the crescendo hairpin, making it invisible. The rectangle is
+part of the crescendo hairpin, making it invisible. The rectangle is
defined as postscript code within a text markup.
To fine-tune the position and size of the markup, the number
preceding @code{setgray} in the postscript definition can be set to a
-value <1 making it grey. The two numbers before @code{scale} in the
-postscript code are responsible for the width and height of the
+value less than one, making it grey. The two numbers before @code{scale}
+in the postscript code are responsible for the width and height of the
rectangle, the two numbers before @code{translate} change the x- and
-y-origin of the rectangle.
+y-origin of the rectangle.
Make sure to put the hairpin in a lower layer than the text markup to
-actually draw the rectangle above the hairpin.
+draw the rectangle over the hairpin.
"
doctitle = "Broken crescendo hairpin"
}
-\score {
- \relative c' {
- << {
- \dynamicUp
- \override DynamicLineSpanner #'staff-padding = #4
- r2 r16 c'8.\pp r4
- } \\ {
- \override DynamicLineSpanner #'layer = #0
- des,2\mf\< ~
- \override TextScript #'layer = #2
- des16_\markup {
- \postscript #"1.9 -8 translate 5 4 scale 1 setgray 0 0 moveto 0 1
+\relative c' {
+ << {
+ \dynamicUp
+ \override DynamicLineSpanner #'staff-padding = #4
+ r2 r16 c'8.\pp r4
+ } \\ {
+ \override DynamicLineSpanner #'layer = #0
+ des,2\mf\< ~
+ \override TextScript #'layer = #2
+ des16_\markup {
+ \postscript #"1.9 -8 translate 5 4 scale 1 setgray 0 0 moveto 0 1
lineto 1 1 lineto 1 0 lineto 0 0 lineto fill"
- }
- r8. des4 ~ des16->\sff
- } >>
- }
- \layout { ragged-right = ##t }
+ }
+ r8. des4 ~ des16->\sff
+ } >>
}
The result will be files named
@file{@var{base}-from-@var{start}-to-@var{end}[-@var{count}].eps}.
-@itemize @bullet
-@item If system starts and ends are included, they include extents of the System grob, e.g., instrument names.
-@item Grace notes at the end point of the region are not included.
-@item Regions can span multiple systems. In this case, multiple EPS files are generated.
+@itemize
+@item
+If system starts and ends are included, they include extents of the
+System grob, e.g., instrument names.
+
+@item
+Grace notes at the end point of the region are not included.
+
+@item
+Regions can span multiple systems. In this case, multiple EPS files
+are generated.
+
@end itemize
"
doctitle = "Clip systems"
\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)) }
+ \markup {
+ \epsfile #X #30.0 #(format #f "~a-1-from-2.0.1-to-4.0.1-clip.eps"
+ (ly:parser-output-name parser)) }
}
}
}
% Thanks to Risto Vääräniemi for this snippet
-\paper { ragged-right = ##t }
-
{
\key a \major
\set Score.markFormatter = #format-mark-box-letters
\mark \markup { \box \bold "Intro" }
d'1
\mark \default
- d'
+ d'1
}
--- /dev/null
+\version "2.11.38"
+\header {
+ lsrtags = "staff-notation,tweaks-and-overrides"
+ texidoc = "If there is only one staff in one of the staff types
+@code{ChoirStaff}, @code{InnerChoirStaff}, @code{InnerStaffGroup}
+or @code{StaffGroup}, the bracket and the starting bar line will not
+be displayed as standard behavior. This can be changed by overriding
+the relevant properties, as demonstrated in this example.
+
+Note that in contexts such as @code{PianoStaff} and @code{GrandStaff}
+where the systems begin with a brace instead of a bracket, another
+property has to be set, as shown on the second system in the example.
+"
+ doctitle = "Display bracket with only one staff in a system"
+}
+
+\markup \column {
+ \score {
+ \new StaffGroup <<
+ % Must be lower than the actual number of staff lines
+ \override StaffGroup.SystemStartBracket #'collapse-height = #1
+ \override Score.SystemStartBar #'collapse-height = #1
+ \new Staff {
+ c'1
+ }
+ >>
+ \layout {}
+ }
+ \score {
+ \new PianoStaff <<
+ \override PianoStaff.SystemStartBrace #'collapse-height = #1
+ \override Score.SystemStartBar #'collapse-height = #1
+ \new Staff {
+ c'1
+ }
+ >>
+ \layout {}
+ }
+}
\version "2.11.23"
-\layout { ragged-right= ##t }
\header {
lsrtags = "tweaks-and-overrides"
texidoc = "
The @code{print-function} can be overridden to draw a box around an
-arbitrary grob.
+arbitrary grob.
"
doctitle = "Drawing boxes around grobs"
}
\relative c'' {
- \override TextScript #'stencil =
- #(make-stencil-boxer 0.1 0.3 ly:text-interface::print)
+ \override TextScript #'stencil =
+ #(make-stencil-boxer 0.1 0.3 ly:text-interface::print)
c'4^"foo"
- \override Stem #'stencil =
- #(make-stencil-boxer 0.05 0.25 ly:stem::print)
+ \override Stem #'stencil =
+ #(make-stencil-boxer 0.05 0.25 ly:stem::print)
\override Score.RehearsalMark #'stencil =
- #(make-stencil-boxer 0.15 0.3 ly:text-interface::print)
+ #(make-stencil-boxer 0.15 0.3 ly:text-interface::print)
b8
\revert Stem #'stencil
\version "2.11.23"
-\layout { ragged-right= ##t }
\header {
lsrtags = "tweaks-and-overrides"
texidoc = "
doctitle = "Drawing circles around various objects"
}
-\relative c'{
-c1
-\set Score.markFormatter
- = #(lambda (mark context)
+\relative c' {
+ c1
+ \set Score.markFormatter =
+ #(lambda (mark context)
(make-circle-markup (format-mark-numbers mark context)))
-\mark \default
-c2 d^\markup{\circle \finger "2"}
-\override Score.BarNumber #'break-visibility = #all-visible
-\override Score.BarNumber #'stencil
- = #(make-stencil-circler 0.1 0.25 ly:text-interface::print)
+ \mark \default
+ c2 d^\markup { \circle \finger 2 }
+ \override Score.BarNumber #'break-visibility = #all-visible
+ \override Score.BarNumber #'stencil =
+ #(make-stencil-circler 0.1 0.25 ly:text-interface::print)
}
%make the staff lines invisible on staves
\override Staff.BarLine #'transparent = ##t
- \skip 1*8 % the actual music
+ % the actual music
+ \skip 1*8
% let finis bar go through all staves
\override Staff.BarLine #'transparent = ##f
\clef "neomensural-c1"
\key f \major
\time 2/2
- c''1.
+ c''1.
}
>>
\new Lyrics \lyricsto discantusIncipit { IV- }
c'4 e'4.( d'8 c' b |
a4) b a2 |
b4.( c'8 d'4) c'4 |
- \once \override NoteHead #'transparent = ##t c'1 |
+ \once \override NoteHead #'transparent = ##t
+ c'1 |
b\breve |
}
}
\clef "neomensural-c3"
\key f \major
\time 2/2
- r1 f'1.
+ r1 f'1.
}
>>
\new Lyrics \lyricsto altusIncipit { IV- }
altusNotes = {
\transpose c' c'' {
\clef "treble"
- r2 g2. e4 fis g | % two bars
+ % two measures
+ r2 g2. e4 fis g |
a2 g4 e |
fis g4.( fis16 e fis4) |
g1 |
- \once \override NoteHead #'transparent = ##t g1 |
+ \once \override NoteHead #'transparent = ##t
+ g1 |
g\breve |
}
}
altusLyrics = \lyricmode {
- Ju -- bi -- la -- te | % two bars
+ % two measures
+ Ju -- bi -- la -- te |
De -- o, om -- |
nis ter -- ra, |
"..." |
R1 |
R1 |
R1 |
- r2 d'2. d'4 b e' | % two bars
- \once \override NoteHead #'transparent = ##t e'1 |
+ % two measures
+ r2 d'2. d'4 b e' |
+ \once \override NoteHead #'transparent = ##t
+ e'1 |
d'\breve |
}
}
tenorLyrics = \lyricmode {
- Ju -- bi -- la -- te | % two bars
+ % two measures
+ Ju -- bi -- la -- te |
"..." |
-us.
}
R1 |
R1 |
g2. e4 |
- \once \override NoteHead #'transparent = ##t e1 |
+ \once \override NoteHead #'transparent = ##t
+ e1 |
g\breve |
}
}
bassusLyrics = \lyricmode {
Ju -- bi- |
"..." |
- -us.
+ -us.
}
\score {
<<
\new StaffGroup = choirStaff <<
\new Voice = "discantusNotes" <<
- \global
+ \global
\set Staff.instrumentName = "Discantus"
\incipit \discantusIncipit
\discantusNotes
>>
\new Lyrics = "discantusLyrics" \lyricsto discantusNotes { \discantusLyrics }
\new Voice = "altusNotes" <<
- \global
+ \global
\set Staff.instrumentName = "Altus"
\incipit \altusIncipit
\altusNotes
>>
\new Lyrics = "altusLyrics" \lyricsto altusNotes { \altusLyrics }
\new Voice = "tenorNotes" <<
- \global
+ \global
\set Staff.instrumentName = "Tenor"
\incipit \tenorIncipit
\tenorNotes
\bassusNotes
>>
>>
- \new Lyrics = "bassusLyrics" \lyricsto bassusNotes { \bassusLyrics }
+ \new Lyrics = "bassusLyrics" \lyricsto bassusNotes { \bassusLyrics }
%% Keep the bass lyrics outside of the staff group to avoid bar lines
%% between the lyrics.
>>
\layout {
\context {
\Score
- %% no bars in staves
+ %% no bar lines in staves
\override BarLine #'transparent = ##t
}
- %% the next three instructions keep the lyrics between the barlines
+ %% the next three instructions keep the lyrics between the bar lines
\context {
- \Lyrics
+ \Lyrics
\consists "Bar_engraver"
\override BarLine #'transparent = ##t
}
- \context { \StaffGroup \consists "Separating_line_group_engraver" }
+ \context {
+ \StaffGroup
+ \consists "Separating_line_group_engraver"
+ }
\context {
\Voice
%% no slurs
\override Slur #'transparent = ##t
%% Comment in the below "\remove" command to allow line
- %% breaking also at those barlines where a note overlaps
- %% into the next bar. The command is commented out in this
+ %% breaking also at those bar lines where a note overlaps
+ %% into the next measure. The command is commented out in this
%% short example score, but especially for large scores, you
%% will typically yield better line breaking and thus improve
%% overall spacing if you comment in the following command.
+++ /dev/null
-\version "2.11.35"
-
-\header {
- lsrtags = "fretted-strings"
- texidoc = "
-You can format a tablature with letters instead of numbers - so that
-0->a, 1->b, 2->c, etc.
-
-BROKEN IN 2.11, COMMENTED OUT."
- doctitle = "Letter tablature formatting"
-}
-{ c'4 }
\version "2.10.0"
-\layout { ragged-right= ##t }
\header {
lsrtags = "expressive-marks"
- texidoc = "Arrows can be applied to text-spanners and line-spanners (such as the Glissando)"
+ texidoc = "Arrows can be applied to text-spanners and line-spanners
+(such as the Glissando)"
doctitle = "Line arrows"
}
\override Glissando #'arrow-length = #0.5
\override Glissando #'arrow-width = #0.25
- a8\startTextSpan gis8 a4 b4\glissando
- b,4 | g' c\stopTextSpan c
+ a8\startTextSpan gis a4 b\glissando b,
+ g'4 c\stopTextSpan c2
}
\header {
lsrtags = "pitches"
texidoc = "Makam is a type of melody from Turkey using 1/9th-tone
- microtonal alterations. Consult the initialization file
- @code{makam-init.ly} (in @code{/usr/share/lilypond/current/ly})
- for details of pitch names and alterations.
- "
+microtonal alterations. Consult the initialization file
+@code{makam-init.ly} (in @code{/usr/share/lilypond/current/ly})
+for details of pitch names and alterations.
+"
doctitle = "Makam"
}
\include "makam-init.ly"
\relative c' {
- \set Staff.keySignature = #`((3 . ,BAKIYE) (6 . ,(- KOMA)))
- c cc db fk
- gbm gfc gfb efk
- fk db cc c
+ \set Staff.keySignature = #`((3 . ,BAKIYE) (6 . ,(- KOMA)))
+ c4 cc db fk
+ gbm4 gfc gfb efk
+ fk4 db cc c
}
\version "2.11.23"
-\layout { ragged-right = ##t }
\header {
lsrtags = "rhythms,tweaks-and-overrides"
texidoc = "
other behavior is retained. The object still takes up space, it takes
part in collisions, and slurs, ties and beams can be attached to it.
-
-The snippet demonstrates how to connect different voices using ties.
+This snippet demonstrates how to connect different voices using ties.
Normally, ties only connect two notes in the same voice. By
introducing a tie in a different voice, and blanking the first up-stem
in that voice, the tie appears to cross voices. To prevent the blanked stem's
b8 ~ b\noBeam
\once \override Stem #'transparent = ##t
\once \override Stem #'length = #8
- g ~ g\noBeam
+ g8 ~ g\noBeam
} \\ {
- b g g e
+ b8 g g e
} >>
}
#(set-default-paper-size "a6")
#(define-markup-list-command (paragraph layout props args) (markup-list?)
- (interpret-markup-list layout props
+ (interpret-markup-list layout props
(make-justified-lines-markup-list (cons (make-hspace-markup 2) args))))
-%% Candide, Voltaire
+% Candide, Voltaire
\markuplines \override-lines #'(baseline-skip . 2.5) {
\paragraph {
Il y avait en Westphalie, dans le château de M. le baron de
doctitle = "Outputting the version number"
}
-\score { \context Lyrics {
- \override Score.RehearsalMark #'self-alignment-X = #LEFT
- \mark #(ly:export (string-append "Processed with LilyPond version " (lilypond-version)))
+\score {
+ \context Lyrics {
+ \override Score.RehearsalMark #'self-alignment-X = #LEFT
+ \mark #(ly:export (string-append "Processed with LilyPond version "
+ (lilypond-version)))
s2
}
}
\version "2.11.26"
-\layout { ragged-right= ##t }
\header {
lsrtags = "spacing"
texidoc = "Page labels may be placed inside music or at top-level,
-and refered to in markups."
+and referred to in markups."
doctitle = "Page label"
}
(markup #:fill-line (text #:page-ref label "8" "?"))))
\book {
- \markup \huge \fill-line { \null "Title Page" \null }
+ \markup \huge \fill-line { \null Title Page \null }
\pageBreak
\label #'toc
\markup \column {
- \large \fill-line { \null "Table of contents" \null }
+ \large \fill-line { \null Table of contents \null }
\toc-line #'toc "Table of contents"
\toc-line #'firstScore "First Score"
\toc-line #'markA "Mark A"
\label #'firstScore
\score {
- { c'2 c'
- \mark \markup { A (page \concat { \page-ref #'markA "0" "?" ) }} \label #'markA
- c' c'
+ {
+ c'2 c'
+ \mark \markup { A (page \concat { \page-ref #'markA "0" "?" ) } } \label #'markA
+ c'2 c'
\pageBreak
\mark "B" \label #'markB
- d' d'
- d' d'
- \once \override Score . RehearsalMark #'break-visibility = #begin-of-line-invisible
+ d'2 d'
+ d'2 d'
+ \once \override Score.RehearsalMark #'break-visibility = #begin-of-line-invisible
\mark "C" \label #'markC
}
\header { piece = "First score" }
\key c \major
\time 4/4
- a b c d
+ a4 b c d
}
lower = \relative c {
}
dynamics = {
- s2\fff\> s4
- s\!\pp
+ s2\fff\> s4 s\!\pp
}
pedal = {
- s2\sustainDown s2\sustainUp
+ s2\sustainDown s\sustainUp
}
\score {
\context {
\type "Engraver_group"
\name Dynamics
- \alias Voice % So that \cresc works, for example.
+ % So that \cresc works, for example.
+ \alias Voice
\consists "Output_property_engraver"
\override VerticalAxisGroup #'minimum-Y-extent = #'(-1 . 1)
}
\score {
\new PianoStaff <<
- \new Staff = "upper" << \upper \dynamics >>
- \new Staff = "lower" << \lower \dynamics >>
- \new Dynamics = "pedal" \pedal
+ \new Staff = "upper" << \upper \dynamics \pedal >>
+ \new Staff = "lower" << \lower \dynamics \pedal >>
>>
- \midi {
- \context {
- \type "Performer_group"
- \name Dynamics
- \consists "Piano_pedal_performer"
- }
- \context {
- \PianoStaff
- \accepts Dynamics
- }
- }
+ \midi {}
}
\version "2.11.42"
-\layout { ragged-right = ##t }
\header {
lsrtags = "rhythms,tweaks-and-overrides"
texidoc = "
\header {
lsrtags = "pitches,staff-notation"
texidoc = "Quotations take into account the transposition of both
-source and target. In this example, all instruments play sounding
-middle C; the target is an instrument in F. The target part may be
-transposed using @code{\\transpose}. In this case, all the pitches (including the
-quoted ones) are transposed."
+source and target. In this example, all instruments play sounding
+middle C; the target is an instrument in F. The target part may be
+transposed using @code{\\transpose}. In this case, all the pitches
+(including the quoted ones) are transposed.
+"
doctitle = "Quoting another voice with transposition"
}
}
{
- \set Staff.instrumentName = \markup \center-align { "Horn" "in F" }
+ \set Staff.instrumentName = \markup \center-align { Horn \line { in F } }
\quoteTest
\transpose c' d' << \quoteTest s4_"up a tone" >>
}
\version "2.11.10"
-\layout { ragged-right= ##t }
\header {
lsrtags = "staff-notation"
texidoc = "With @code{\\quote}, fragments of previously entered
-music may be quoted. @code{quotedEventTypes} will determines what
-things are quoted. In this example, a 16th rest is not quoted, since
+music may be quoted. @code{quotedEventTypes} will determines which
+items are quoted. In this example, a 16th rest is not quoted, since
@code{rest-event} is not in @code{quotedEventTypes}."
doctitle = "Quoting another voice"
}
quoteMe = \relative c' { fis4 r16 a8.-> b4-\ff c }
-\addQuote quoteMe \quoteMe
-original = \relative c'' { c8 d s2 es8 gis8 }
+\addQuote quoteMe \quoteMe
+original = \relative c'' {
+ c8 d s2
+ \once \override NoteColumn #'ignore-collision = ##t
+ es8 gis8
+}
<<
- \new Staff {
- \set Staff.instrumentName = "quoteMe"
- \quoteMe
- }
- \new Staff {
- \set Staff.instrumentName = "orig"
- \original
- }
- \new Staff \relative c'' <<
- \set Staff.instrumentName = "orig+quote"
- \set Staff.quotedEventTypes = #'(note-event articulation-event)
- \original
- \new Voice {
- s4
+ \new Staff {
+ \set Staff.instrumentName = "quoteMe"
+ \quoteMe
+ }
+ \new Staff {
+ \set Staff.instrumentName = "orig"
+ \original
+ }
+ \new Staff \relative c'' <<
+ \set Staff.instrumentName = "orig+quote"
+ \set Staff.quotedEventTypes = #'(note-event articulation-event)
+ \original
+ \new Voice {
+ s4
\set fontSize = #-4
\override Stem #'length-fraction = #(magstep -4)
\quoteDuring #"quoteMe" { \skip 2. }
- }
- >>
+ }
+ >>
>>
lsrtags = "expressive-marks"
texidoc = "If the note which ends a hairpin falls on a downbeat,
the hairpin stops at the bar line immediately preceding. This behavior
-can be controlled by overriding the @code{'to-barline} property.
+can be controlled by overriding the @code{to-barline} property.
"
doctitle = "Setting hairpin behavior at bar lines"
}
\version "2.11.26"
-\layout { ragged-right= ##t }
\header {
lsrtags = "paper-and-layout"
texidoc = "A table of contents is included using
-@code{\\markuplines \\table-of-contents}. The TOC items are added with
+@code{\\markuplines \\table-of-contents}. The TOC items are added with
the @code{\\tocItem} command."
doctitle = "Table of contents"
}
\book {
\markuplines \table-of-contents
\pageBreak
-
- \tocItem \markup "The first score"
+ \tocItem \markup { The first score }
\score {
- {
+ {
c'1 \pageBreak
- \mark "A" \tocItem \markup "Mark A"
- d'
+ \mark "A" \tocItem \markup { Mark A }
+ d'1
}
}
\pageBreak
- \tocItem \markup "The second score"
+ \tocItem \markup { The second score }
\score {
- { e' }
+ { e'1 }
\header { piece = "Second score" }
}
}
\version "2.11.33"
\header {
lsrtags = "pitches"
- texidoc = "This example uses some Scheme code to enforce enharmonic modifications for
-notes in order to have the minimum number of accidentals. In this
-case, the following rules apply:
+ texidoc = "This example uses some Scheme code to enforce enharmonic
+modifications for notes in order to have the minimum number of
+accidentals. In this case, the following rules apply:
@itemize
@item
#(define (naturalize-pitch p)
(let* ((o (ly:pitch-octave p))
- (a (* 4 (ly:pitch-alteration p)))
+ (a (* 4 (ly:pitch-alteration p)))
; alteration, a, in quarter tone steps, for historical reasons
(n (ly:pitch-notename p)))
(cond
(cond
((> a 2) (set! a (- a 4)) (set! n (+ n 1)))
((< a -2) (set! a (+ a 4)) (set! n (- n 1))))
- (if (< n 0) (begin (set! o (- o 1)) (set! n (+ n 7))))
- (if (> n 6) (begin (set! o (+ o 1)) (set! n (- n 7))))
+ (if (< n 0) (begin (set! o (- o 1)) (set! n (+ n 7))))
+ (if (> n 6) (begin (set! o (+ o 1)) (set! n (- n 7))))
(ly:make-pitch o n (/ a 4))))
#(define (naturalize music)
\transpose c deses \music
\naturalizeMusic \transpose c deses \music
}
- \layout { ragged-right = ##t }
+ \layout {}
}
\header {
lsrtags = "tweaks-and-overrides"
texidoc = "
-With the @code{\tweak} command, you can tune every grob directly. Here
+With the @code{\\tweak} command, every grob can be tuned directly. Here
are some examples of available tweaks.
"
doctitle = "Using the @code{\tweak} command to tweak individual grobs"
}
-{
+\relative c' {
+ \time 2/4
\set fingeringOrientations = #'(right)
<
- \tweak #'font-size #3 c
+ \tweak #'font-size #3 c
\tweak #'color #red d-\tweak #'font-size #8 -4
- \tweak #'style #'cross g
- \tweak #'duration-log #1 a
- >4
+ \tweak #'style #'cross g
+ \tweak #'duration-log #2 a
+ >2
}
Red Hat Fedora
taipeifonts fonts-xorg-truetype ttfonts-ja fonts-arabic \
- ttfonts-zh_CN fonts-ja fonts-hebrew
+ ttfonts-zh_CN fonts-ja fonts-hebrew
Debian GNU/Linux
apt-get install emacs-intl-fonts xfonts-intl-.* \
- ttf-kochi-gothic ttf-kochi-mincho \
- xfonts-bolkhov-75dpi xfonts-cronyx-100dpi xfonts-cronyx-75dpi
+ ttf-kochi-gothic ttf-kochi-mincho \
+ xfonts-bolkhov-75dpi xfonts-cronyx-100dpi xfonts-cronyx-75dpi
%}
\header {
lsrtags = "text"
texidoc = "Various scripts may be used for texts (like titles and
-lyrics) introduced by entering them in UTF-8 encoding, and using a
-Pango based backend. Depending on the fonts installed, this fragment
-will render Bulgarian (Cyrillic), Hebrew, Japanese and Portuguese.
+lyrics) by entering them in UTF-8 encoding, and using a Pango based
+backend. Depending on the fonts installed, this fragment will
+render Bulgarian (Cyrillic), Hebrew, Japanese and Portuguese.
"
doctitle = "UTF-8"
}
Жълтата дюля беше щастлива, че пухът, който цъфна, замръзна като гьон.
}
-hebrew = \lyricmode {
+hebrew = \lyricmode {
זה כיף סתם לשמוע איך תנצח קרפד עץ טוב בגן.
}
-japanese = \lyricmode {
+japanese = \lyricmode {
いろはにほへど ちりぬるを
わがよたれぞ つねならむ
うゐのおくや まけふこえて
- あさきゆめみじ ゑひもせず
+ あさきゆめみじ ゑひもせず
}
% "a legal song to you"
-portuguese = \lyricmode {
+portuguese = \lyricmode {
à vo -- cê uma can -- ção legal
}
-\paper {
- ragged-right = ##t
-}
-
-\relative {
- c2 d e f g f e
+\relative {
+ c2 d
+ e2 f
+ g2 f
+ e1
}
\addlyrics { \bulgarian }
\addlyrics { \hebrew }
\layout { ragged-right= ##t }
\header {
lsrtags = "repeats,staff-notation"
- texidoc = "By adding @code{Volta_engraver}, repeat brackets
-can be put over staves other than the topmost one in a score."
+ texidoc = "By adding the @code{Volta_engraver} to the relevant
+staff, volte can be put over staves other than the topmost
+one in a score."
doctitle = "Volta multi-staff"
}
-vmus = \relative c'' {
- \repeat volta 2 c1 \alternative { d e }
+% LSR: this is a test which should get automatically
+% LSR: removed from input/lsr/ -gp
+voltaMusic = \relative c'' {
+ \repeat volta 2
+ c1
+ \alternative {
+ d e
+ }
}
<<
\new StaffGroup <<
- \context Staff \vmus
- \new Staff \vmus
+ \context Staff \voltaMusic
+ \new Staff \voltaMusic
>>
\new StaffGroup <<
- \new Staff \with { \consists Volta_engraver }
- \vmus
- \new Staff \vmus
+ \new Staff \with { \consists "Volta_engraver" }
+ \voltaMusic
+ \new Staff \voltaMusic
>>
>>
bool pure, int start, int end,
vector<Skyline_pair> *const ret)
{
- /* each child's skyline was calculated according to the common refpoint of its
- elements. Here we need all the skylines to be positioned with respect to
- a single refpoint, so we need the common refpoint of the common refpoints
- of the elements of the children */
- vector<Grob*> child_refpoints;
- for (vsize i = 0; i < elements->size (); i++)
- {
- Grob *elt = (*elements)[i];
- Grob *child_common = unsmob_grob ((a == Y_AXIS)
- ? elt->get_object ("X-common")
- : elt->get_object ("Y-common"));
-
- if (!child_common)
- {
- extract_grob_set (elt, "elements", child_elts);
- child_common = common_refpoint_of_array (child_elts, elt, other_axis (a));
- }
-
- child_refpoints.push_back (child_common);
- }
-
- Grob *other_common = common_refpoint_of_array (child_refpoints, me, other_axis (a));
+ Grob *other_common = common_refpoint_of_array (*elements, me, other_axis (a));
for (vsize i = elements->size (); i--;)
{
Grob *g = (*elements)[i];
Skyline_pair skylines;
- /* each skyline is calculated relative to (potentially) a different other_axis
- coordinate. In order to compare the skylines effectively, we need to shift them
- to some absolute reference point */
if (!pure)
{
Skyline_pair *skys = Skyline_pair::unsmob (g->get_property (a == Y_AXIS
skylines.insert (b, 0, other_axis (a));
}
- Real offset = child_refpoints[i]->relative_coordinate (other_common, other_axis (a));
+ /* This skyline was calculated relative to the grob g. In order to compare it to
+ skylines belonging to other grobs, we need to shift it so that it is relative
+ to the common reference. */
+ Real offset = g->relative_coordinate (other_common, other_axis (a));
skylines.shift (offset);
}
else
"Order grobs from top to bottom, left to right, right to left"
" or bottom to top. For vertical alignments of staves, the"
" @code{break-system-details} of the left"
- " @internalsref{NonMusicalPaperColumn} may be set to tune"
+ " @rinternals{NonMusicalPaperColumn} may be set to tune"
" vertical spacing. Set @code{alignment-extra-space} to add"
" extra space for staves. Set"
" @code{fixed-alignment-extra-space} to force staves in"
}
if (arpeggio_)
- {
- Pointer_group_interface::add_grob (note_column_, ly_symbol2scm ("elements"), arpeggio_);
- note_column_->set_object ("arpeggio", arpeggio_->self_scm ());
- }
+ note_column_->set_object ("arpeggio", arpeggio_->self_scm ());
}
}
#include "accidental-placement.hh"
#include "axis-group-interface.hh"
#include "lookup.hh"
+#include "note-column.hh"
#include "note-head.hh"
#include "paper-column.hh"
#include "pointer-group-interface.hh"
if (left)
elts = Accidental_placement::get_relevant_accidentals (read_only_elts, left);
else
- elts = read_only_elts;
+ {
+ elts = read_only_elts;
+
+ /* This is a special-case for NoteColumn: we want to include arpeggio in its
+ skyline (so spacing takes it into account) but we don't want to include it
+ in the NoteColumn's extent because some spanners (eg. Hairpin) bound themselves
+ on the NoteColumn and we don't want them to include arpeggios in their bounds.
+ */
+ if (Grob *a = Note_column::arpeggio (me)) {
+ elts.push_back (a);
+ }
+ }
Grob *ycommon = common_refpoint_of_array (elts, me, Y_AXIS);
@item context
In which context is the rule applied. For example, if @var{context}
-is @internalsref{Score} then all staves share accidentals, and if
-@var{context} is @internalsref{Staff} then all voices in the same staff
+is @rinternals{Score} then all staves share accidentals, and if
+@var{context} is @rinternals{Staff} then all voices in the same staff
share accidentals, but staves do not.
@item octavation
(defaultBarType ,string? "Set the default type of bar line. See
@code{whichBar} for information on available bar types.
-This variable is read by @internalsref{Timing_translator} at
-@internalsref{Score} level.")
+This variable is read by @rinternals{Timing_translator} at
+@rinternals{Score} level.")
(doubleSlurs ,boolean? "If set, two slurs are created for every
slurred note, one above and one below the chord.")
(drumPitchTable ,hash-table? "A table mapping percussion
(ignoreBarChecks ,boolean? "Ignore bar checks.")
(ignoreFiguredBassRest ,boolean? "Don't swallow rest events.")
(ignoreMelismata ,boolean? "Ignore melismata for this
-@internalsref{Lyrics} line.")
+@rinternals{Lyrics} line.")
(implicitBassFigures ,list? "A list of bass figures that are not
printed as numbers, but only as extender lines.")
(implicitTimeSignatureVisibility ,vector? "break visibility for
(soloText ,string? "The text for the start of a solo when
part-combining.")
(squashedPosition ,integer? "Vertical position of squashing for
-@internalsref{Pitch_squash_engraver}.")
+@rinternals{Pitch_squash_engraver}.")
(staffLineLayoutFunction ,procedure? "Layout of staff lines,
@code{traditional}, or @code{semitone}.")
(stanza ,markup? "Stanza @q{number} to print before the start of a
@noindent
This will create a start-repeat bar in this staff only. Valid values
-are described in @internalsref{bar-line-interface}.")
+are described in @rinternals{bar-line-interface}.")
)))
(ly:add-interface
'vertically-spaceable-interface
"Objects that should be kept at constant vertical distances. Typically:
-@internalsref{VerticalAxisGroup} objects of @internalsref{Staff} contexts."
+@rinternals{VerticalAxisGroup} objects of @rinternals{Staff} contexts."
'())
Fractional values are allowed.")
(force-hshift ,number? "This specifies a manual shift for notes
in collisions. The unit is the note head width of the first voice
-note. This is used by @internalsref{note-collision-interface}.")
+note. This is used by @rinternals{note-collision-interface}.")
(forced ,boolean? "Manually forced accidental.")
(fraction ,number-pair? "Numerator and denominator of a time
signature object.")
slur, the closer it is to this height.")
(horizontal-shift ,integer? "An integer that identifies ranking
of @code{NoteColumn}s for horizontal shifting. This is used by
-@internalsref{note-collision-interface}.")
+@rinternals{note-collision-interface}.")
(horizontal-skylines ,ly:skyline-pair? "Two skylines, one to the
left and one to the right of this grob.")
collisions, even if they have different note heads. The
smaller of the two heads is rendered invisible. This is used in
polyphonic guitar notation. The value of this setting is used by
-@internalsref{note-collision-interface}.
+@rinternals{note-collision-interface}.
@code{merge-differently-headed} only applies to opposing stem
directions (i.e., voice 1 &@tie{}2).")
(shortest-duration-space ,ly:dimension? "Start with this much
space for the shortest duration. This is expressed in
@code{spacing-increment} as unit. See also
-@internalsref{spacing-spanner-interface}.")
+@rinternals{spacing-spanner-interface}.")
(shortest-playing-duration ,ly:moment? "The duration of the
shortest playing here.")
(shortest-starter-duration ,ly:moment? "The duration of the
try to space the non-musical column as though the clef is not there.")
(spacing-increment ,number? "Add this much space for a doubled
duration. Typically, the width of a note head. See also
-@internalsref{spacing-spanner-interface}.")
+@rinternals{spacing-spanner-interface}.")
(springs-and-rods ,boolean? "Dummy variable for triggering
spacing routines.")
(stacking-dir ,ly:dir? "Stack objects in which direction?")
@cindex overriding properties within text markup
Add the first argument in to the property list. Properties may be
-any sort of property supported by @internalsref{font-interface} and
-@internalsref{text-interface}, for example
+any sort of property supported by @rinternals{font-interface} and
+@rinternals{text-interface}, for example
@example
\\override #'(font-family . married) \"bla\"
@end iftex
-@macro internalsref{NAME}
+@macro rinternals{NAME}
@ref{\\NAME\\}
@end macro
'(-0.1 . 0.1) '(0.1 . 1)))
0.7 X))))""",
"eyeglasses": """eyeglassesps = #"0.15 setlinewidth
-% 255 0 0 setrgbcolor
--0.9 0 translate
-1.1 1.1 scale
-1.2 0.7 moveto
-0.7 0.7 0.5 0 361 arc
-stroke
-2.20 0.70 0.50 0 361 arc
-stroke
-1.45 0.85 0.30 0 180 arc
-stroke
-0.20 0.70 moveto
-0.80 2.00 lineto
-0.92 2.26 1.30 2.40 1.15 1.70 curveto
-stroke
-2.70 0.70 moveto
-3.30 2.00 lineto
-3.42 2.26 3.80 2.40 3.65 1.70 curveto
-stroke"
+ -0.9 0 translate
+ 1.1 1.1 scale
+ 1.2 0.7 moveto
+ 0.7 0.7 0.5 0 361 arc
+ stroke
+ 2.20 0.70 0.50 0 361 arc
+ stroke
+ 1.45 0.85 0.30 0 180 arc
+ stroke
+ 0.20 0.70 moveto
+ 0.80 2.00 lineto
+ 0.92 2.26 1.30 2.40 1.15 1.70 curveto
+ stroke
+ 2.70 0.70 moveto
+ 3.30 2.00 lineto
+ 3.42 2.26 3.80 2.40 3.65 1.70 curveto
+ stroke"
eyeglasses = \markup { \with-dimensions #'(0 . 4.4) #'(0 . 2.5) \postscript #eyeglassesps }"""
}