Guide, node Updating translation committishes..
@end ignore
-@c \version "2.17.6"
+@c \version "2.17.20"
@node Tweaking output
@chapter Tweaking output
* The Internals Reference manual::
* Appearance of objects::
* Placement of objects::
+* Vertical spacing::
* Collisions of objects::
* Further tweaking::
@end menu
@cindex tweaking methods
@menu
-* The \override command::
-* The \revert command::
-* The \once prefix::
-* The \overrideProperty command::
-* The \tweak command::
+* The override command::
+* The revert command::
+* The once prefix::
+* The overrideProperty command::
+* The tweak command::
@end menu
-@node The \override command
-@unnumberedsubsubsec The @code{\override} command
+@node The override command
+@unnumberedsubsubsec The @code{@bs{}override} command
@cindex override command
@cindex override syntax
@end lilypond
-@node The \revert command
-@unnumberedsubsubsec The @code{\revert} command
+@node The revert command
+@unnumberedsubsubsec The @code{@bs{}revert} command
@cindex revert command
@end lilypond
-@node The \once prefix
-@unnumberedsubsubsec The @code{\once} prefix
+@node The once prefix
+@unnumberedsubsubsec The @code{@bs{}once} prefix
@funindex \once
@funindex once
@cindex color property, example
@cindex NoteHead, example of overriding
-@lilypond[quote,fragment,ragged-right,verbatim,relative=1]
+@lilypond[quote,verbatim,relative=1]
c4 d
\override NoteHead.color = #red
e4 f |
b c |
@end lilypond
+The @code{\once} prefix may also be used in front of many
+predefined commands to limit their effect to one musical moment:
+
+@lilypond[quote,verbatim,relative=1]
+c4 d
+\once \stemDown
+e4 f |
+g4 a
+\once \hideNotes
+b c |
+@end lilypond
-@node The \overrideProperty command
-@unnumberedsubsubsec The @code{\overrideProperty} command
+However, predefined commands of the form @code{\@dots{}Neutral},
+@code{\@dots{}Off} and @code{\un@dots{}} use @code{\revert} internally
+rather than @code{\override} so prefixing these with @code{\once} has no
+effect.
+
+
+@node The overrideProperty command
+@unnumberedsubsubsec The @code{@bs{}overrideProperty} command
@cindex overrideProperty command
@c Maybe explain in a later iteration -td
-@node The \tweak command
-@unnumberedsubsubsec The @code{\tweak} command
+@node The tweak command
+@unnumberedsubsubsec The @code{@bs{}tweak} command
@cindex tweak command
@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
\tweak direction #up
-\times 4/3 {
+\tuplet 3/4 {
\tweak color #red
- \times 2/3 { c8[ c c] }
- \times 2/3 { c8[ c c] }
- \times 2/3 { c8[ c c] }
+ \tuplet 3/2 { c8[ c c] }
+ \tuplet 3/2 { c8[ c c] }
+ \tuplet 3/2 { c8[ c c] }
}
@end lilypond
@cindex TupletNumber, example of overriding
@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
-\times 2/3 { c8[ c c] }
+\tuplet 3/2 { c8[ c c] }
\once \override TupletNumber.text = #tuplet-number::calc-fraction-text
-\times 2/3 {
+\tuplet 3/2 {
c8[ c]
c8[ c]
\once \override TupletNumber.transparent = ##t
- \times 2/3 { c8[ c c] }
- \times 2/3 { c8[ c c] }
+ \tuplet 3/2 { c8[ c c] }
+ \tuplet 3/2 { c8[ c c] }
}
@end lilypond
need, together with the rules for that type, and some examples.
You must always add a hash symbol, @code{#}, of course,
to the front of these values when they are entered in the
-@code{\override} command.
+@code{\override} command, even if the value itself already
+starts with@tie{}@code{#}. We only give examples for constants
+here: if you want to compute a value using Scheme, see
+@rextend{Calculations in Scheme}.
@multitable @columnfractions .2 .45 .35
@headitem Property type
@tab Either True or False, represented by #t or #f
@tab @code{#t}, @code{#f}
@item Dimension (in staff space)
- @tab A positive decimal number (in units of staff space)
+ @tab A decimal number (in units of staff space)
@tab @code{2.5}, @code{0.34}
@item Direction
- @tab A valid direction constant or its numerical equivalent (decimal
-values between -1 and 1 are allowed)
+ @tab A valid direction constant or its numerical equivalent
+ (@code{0} or @code{CENTER} indicate a neutral direction)
@tab @code{LEFT}, @code{CENTER}, @code{UP},
@code{1}, @w{@code{-1}}
@item Integer
- @tab A positive whole number
- @tab @code{3}, @code{1}
+ @tab A whole number
+ @tab @code{3}, @code{-1}
@item List
- @tab A set of values separated by spaces, enclosed in parentheses
-and preceded by an apostrophe
- @tab @code{'(left-edge staff-bar)}, @code{'(1)},
+ @tab A sequence of constants or symbols separated by spaces, enclosed
+ in parentheses
+and preceded by an apostrophe (quote mark)
+ @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'()},
@code{'(1.0 0.25 0.5)}
@item Markup
@tab Any valid markup
- @tab @code{\markup @{ \italic "cresc." @}}
+ @tab @code{\markup @{ \italic "cresc." @}}, @code{"bagpipe"}
@item Moment
@tab A fraction of a whole note constructed with the
make-moment function
- @tab @code{(ly:make-moment 1 4)},
- @code{(ly:make-moment 3 8)}
+ @tab @code{(ly:make-moment 1/4)},
+ @code{(ly:make-moment 3/8)}
@item Number
- @tab Any positive or negative decimal value
- @tab @code{3.5}, @w{@code{-2.45}}
+ @tab Any positive or negative, possibly decimal, value
+ @tab @code{3}, @w{@code{-2.45}}
@item Pair (of numbers)
@tab Two numbers separated by a @q{space . space} and enclosed
in brackets preceded by an apostrophe
@tab @code{bend::print}, @code{ly:text-interface::print},
@code{#f}
@item Vector
- @tab A list of three items enclosed in parentheses and preceded
-by apostrophe-hash, @code{'#}.
- @tab @code{'#(#t #t #f)}
+ @tab Constants
+ enclosed in @code{#(}@dots{}@code{)}.
+ @tab @code{#(#t #t #f)}
@end multitable
correct processing. For example, errors will be generated if the
@code{stencil} property of the @code{NoteHead} object is set to
@code{#f}. If this is the case, you can instead use the
-@code{point-stencil} function, which sets the stencil to a object
+@code{point-stencil} function, which sets the stencil to an object
with zero size:
@lilypond[quote,verbatim,relative=2]
@menu
* The outside-staff-priority property::
-* The \textLengthOn command::
+* The textLengthOn command::
* Dynamics placement::
* Grob sizing::
@end menu
room for the text. This is done using the @code{textLengthOn}
command.
-@node The \textLengthOn command
-@unnumberedsubsubsec The @code{\textLengthOn} command
+@node The textLengthOn command
+@unnumberedsubsubsec The @code{@bs{}textLengthOn} command
@cindex notes, spreading out with text
@end lilypond
The command to revert to the default behavior is
-@code{\textLengthOff}. Remember @code{\once} only works with
-@code{\override}, @code{\set}, @code{\revert} or @code{\unset},
-so cannot be used with @code{\textLengthOn}.
+@code{\textLengthOff}. Alternatively, @code{\once} may be used
+with @code{\textLengthOn} if the effect is to be limited to just a
+single musical moment.
+The corresponding spacing behavior for rehearsal marks and tempo
+indications is independently controlled with the commands
+@code{\markLengthOn} and @code{\markLengthOff}.
@cindex markup text, allowing collisions
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\dynamicUp
-a4\f b\mf c\mp b\p
+a4\f b\mf a\mp b\p
@end lilypond
@noindent
By default, outside-staff objects are given a width of zero so
that they may overlap in the horizontal direction. This is done
-by the trick of adding infinity to the leftmost extent and
-minus infinity to the rightmost extent by setting the
-@code{extra-spacing-width} to @code{'(+inf.0 . -inf.0)}. So
-to ensure they do not overlap in the horizontal direction we
-must override this value of @code{extra-spacing-width} to
-@code{'(0 . 0)} so the true width shines through. This is
-the command to do this for dynamic text:
+by the trick of making the leftmost extent infinity and
+the rightmost extent minus infinity by setting the
+@code{extra-spacing-width} to @code{'(+inf.0 . -inf.0)}. To
+ensure they do not overlap in the horizontal direction we
+must override this value of @code{extra-spacing-width} to give them
+a little extra spacing. The units are the space between two staff
+lines, so moving the left edge half a unit to the left and the
+right edge half a unit to the right should do it:
@example
-\override DynamicText.extra-spacing-width = #'(0 . 0)
+\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
@end example
@noindent
@cindex DynamicText, example of overriding
@cindex extra-spacing-width property, example
-@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
-\dynamicUp
-\override DynamicText.extra-spacing-width = #'(0 . 0)
-a4\f b\mf c\mp b\p |
-@end lilypond
-
-@noindent
-Well, it has certainly stopped the dynamic marks being
-displaced, but two problems remain. The marks should be
-spaced a little further apart and it would be better
-if they were all the same distance from the staff.
-We can solve the first problem easily. Instead of making
-the @code{extra-spacing-width} zero we could add a little
-more to it. The units are the space between two staff
-lines, so moving the left edge half a unit to the left and the
-right edge half a unit to the right should do it:
-
-@cindex DynamicText, example of overriding
-@cindex extra-spacing-width property, example
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
\dynamicUp
% Extend width by 1 staff space
\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
-a4\f b\mf c\mp b\p
+a4\f b\mf a\mp b\p
@end lilypond
@noindent
This looks better, but maybe we would prefer the dynamic marks
to be aligned along the same baseline rather than going up and
down with the notes. The property to do this is
-@code{staff-padding} which is covered in the following section.
+@code{staff-padding} which is covered in the section on collisions
+(see @ref{Collisions of objects}).
+
+
+@node Vertical spacing
+@section Vertical spacing
+
+As a rule, LilyPond's vertical spacing of musical objects is pretty
+good. Let's see how it does with a simple song, with 2 voices and
+piano accompaniment:
+
+@lilypond[quote,fragment,ragged-right]
+<<
+ \new ChoirStaff
+ <<
+ \new Staff {
+ \new Voice = "music" {
+ b'2 c' c' c'
+ }
+ }
+ \new Lyrics
+ \lyricsto "music" {
+ Here are some lyrics
+ }
+ \new Staff {
+ \clef bass e'2 f e c
+ }
+ >>
+ \new PianoStaff
+ <<
+ \new Staff {
+ g''2 c'' c'' a''
+ }
+ \new Staff {
+ \clef bass e2 f c e
+ }
+ >>
+>>
+@end lilypond
+
+There's nothing wrong with the default vertical spacing. However, let's
+assume that you're working with a publisher with some specific
+requirements for vertical spacing of staves and lyrics: they want
+the lyrics spaced away from any notes, they want the piano
+accompaniment spaced away from the vocal line and they want the two
+piano staves pushed together tightly. Let's start with the lyrics.
+
+Lyrics sit within a system, and therefore the commands to space them
+are found in @ruser{Flexible vertical spacing within systems}. It
+tells us that lyrics are @code{non-staff lines} and therefore the
+command to change their spacing will refer to the @code{nonstaff}
+property. Spacing them away from the staff to which they relate
+(the top line) will use the @code{relatedstaff} property. Spacing
+them from the lower line will use the @code{unrelatedstaff} property.
+The vocal parts are part of a @code{VerticalAxisGroup}, so we need to
+adjust its properties. Let's try it and see if it works.
+
+@lilypond[quote,fragment,ragged-right,verbatim]
+<<
+ \new ChoirStaff
+ <<
+ \new Staff {
+ \new Voice = "music" {
+ b'2 c' c' c'
+ }
+ }
+ \new Lyrics \with {
+ \override VerticalAxisGroup.
+ nonstaff-relatedstaff-spacing.padding = #5
+ \override VerticalAxisGroup.
+ nonstaff-unrelatedstaff-spacing.padding = #5
+ }
+ \lyricsto "music" {
+ Here are some lyrics
+ }
+ \new Staff {
+ \clef bass e'2 f e c
+ }
+ >>
+ \new PianoStaff
+ <<
+ \new Staff {
+ g''2 c'' c'' a''
+ }
+ \new Staff {
+ \clef bass e2 f c e
+ }
+ >>
+>>
+@end lilypond
+
+Well - yes it does, but perhaps too well. When we set the
+@code{padding} to 5, LilyPond adds 5 staff spaces to the distance
+between objects, which is too much for us here. We'll use 2.
+
+Next, let's move the piano music away from the vocal parts. The
+vocal music is a @code{ChoirStaff}, so we need to increase the
+spacing between that group of staves and the piano staff below.
+We'll do this by changing the @code{basic-distance} of the
+@code{StaffGrouper}'s @code{staffgroup-staff-spacing}.
+
+@lilypond[quote,fragment,ragged-right,verbatim]
+<<
+ \new ChoirStaff \with {
+ \override StaffGrouper.
+ staffgroup-staff-spacing.basic-distance = #15
+ }
+ <<
+ \new Staff {
+ \new Voice = "music" {
+ b'2 c' c' c'
+ }
+ }
+ \new Lyrics \with {
+ \override VerticalAxisGroup.
+ nonstaff-relatedstaff-spacing.padding = #2
+ \override VerticalAxisGroup.
+ nonstaff-unrelatedstaff-spacing.padding = #2
+ }
+ \lyricsto "music" {
+ Here are some lyrics
+ }
+ \new Staff {
+ \clef bass e'2 f e c
+ }
+ >>
+ \new PianoStaff
+ <<
+ \new Staff {
+ g''2 c'' c'' a''
+ }
+ \new Staff {
+ \clef bass e2 f c e
+ }
+ >>
+>>
+@end lilypond
+
+Excellent. Now just for the last requirement to make the piano staves
+closer together. To do this, we again alter the properties of the
+@code{StaffGrouper}, but this time we're going to reduce both
+the @code{basic-distance} and the @code{padding}. We can do this
+as shown below.
+
+@lilypond[quote,fragment,ragged-right,verbatim]
+<<
+ \new ChoirStaff \with {
+ \override StaffGrouper.
+ staffgroup-staff-spacing.basic-distance = #15
+ }
+ <<
+ \new Staff {
+ \new Voice = "music" {
+ b'2 c' c' c'
+ }
+ }
+ \new Lyrics \with {
+ \override VerticalAxisGroup.
+ nonstaff-relatedstaff-spacing.padding = #2
+ \override VerticalAxisGroup.
+ nonstaff-unrelatedstaff-spacing.padding = #2
+ }
+ \lyricsto "music" {
+ Here are some lyrics
+ }
+ \new Staff {
+ \clef bass e'2 f e c
+ }
+ >>
+ \new PianoStaff \with {
+ \override StaffGrouper.staff-staff-spacing = #'(
+ (basic-distance . 0)
+ (padding . 0))
+ }
+ <<
+ \new Staff {
+ g''2 c'' c'' a''
+ }
+ \new Staff {
+ \clef bass e2 f c e
+ }
+ >>
+>>
+@end lilypond
+That's put them really close together -- but it's what
+the publisher wanted. They could be moved further
+apart by altering the @code{padding} or @code{basic-distance}
+if wanted.
+
+There are many ways of altering vertical spacing. A key point
+to remember is that the spacing between objects in a
+@code{StaffGroup} (like @code{GrandStaff} or
+@code{PianoStaff} groups) is controlled by the spacing variables
+of the @code{StaffGrouper}. Spacing from ungrouped staves
+(like @code{Lyrics} and @code{Staff}) is controlled by the
+variables of the @code{VerticalAxisGroup}. See the
+@ruser{Flexible vertical spacing paper variables} and
+@ruser{Flexible vertical spacing within systems} for more
+details.
@node Collisions of objects
@section Collisions of objects
@code{side-position-interface} and the nearest other object (generally
the note or the staff lines); @code{staff-padding} applies only to
those objects which are always set outside the staff -- it controls
-the minimum amount of space that should be inserted between that
-object and the staff. Note that @code{staff-padding} has no effect on
-objects which are positioned relative to the note rather than the
+the minimum distance from the staff to the outside-staff object.
+Note that @code{staff-padding} has no effect on
+objects that are positioned relative to the note rather than the
staff, even though it may be overridden without error for such objects
-- it is simply ignored.
@cindex objects, aligning on a baseline
@code{staff-padding} can be used to align objects such as dynamics
-along a baseline at a fixed height above the staff, rather than at a
-height dependent on the position of the note to which they are
-attached. It is not a property of @code{DynamicText} but of
+along a baseline at a fixed distance from the staff, when no other
+notation forces them further from the staff.
+It is not a property of @code{DynamicText} but of
@code{DynamicLineSpanner}. This is because the baseline should apply
equally to @strong{all} dynamics, including those created as extended
spanners. So this is the way to align the dynamic marks in the
@cindex staff-padding property, example
@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
-\dynamicUp
-% Extend width by 1 unit
-\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
-% Align dynamics to a base line 2 units above staff
-\override DynamicLineSpanner.staff-padding = #2
-a4\f b\mf c\mp b\p
+\override DynamicLineSpanner.staff-padding = #3
+a4\f b\mf a\p b\mp
@end lilypond
@node The self-alignment-X property
@unnumberedsubsubsec The @code{self-alignment-X} property
-The following example shows how this can resolve the collision
-of a string fingering object with a note's stem by aligning the
+The following example shows how to adjust the position
+of a string fingering object relative to a note's stem by aligning the
right edge with the reference point of the parent note:
@cindex StringNumber, example of overriding
<< { c4 c c c } \\ { R1 } >>
@end lilypond
-The best solution here is to move the multimeasure rest down, since
-the rest is in voice two. The default in @code{\voiceTwo} (i.e. in
-the second voice of a @code{<<@{...@} \\ @{...@}>>} construct) is that
-@code{staff-position} is set to -4 for MultiMeasureRest, so we need to
-move it, say, four half-staff spaces down to @w{@code{-8}}.
+The best solution here is to move the multimeasure rest down, since the
+rest is in voice two. The default in @code{\voiceTwo} (i.e. in the
+second voice of a @code{<<@{@dots{}@} \\ @{@dots{}@}>>} construct) is
+that @code{staff-position} is set to -4 for MultiMeasureRest, so we need
+to move it, say, four half-staff spaces down to @w{@code{-8}}.
@cindex MultiMeasureRest, example of overriding
@cindex staff-position property, example
@cindex phrasing slurs, controlling manually
@cindex beams, controlling manually
-The @code{positions} property allows the position and slope of
-tuplets, slurs, phrasing slurs and beams to be controlled manually.
-Here's an example which has an ugly phrasing slur due to its trying to
-avoid the slur on the acciaccatura.
-
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4 \acciaccatura e8\( d8 c~ c d c d\)
-@end lilypond
+The @code{positions} property allows the vertical position and hence
+the slope of tuplets, slurs, phrasing slurs and beams to be controlled
+manually.
-@noindent
-We could simply move the phrasing slur above the notes, and this
-would be the preferred solution:
+Here's an example in which the phrasing slur and slur collide:
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4
-\phrasingSlurUp
-\acciaccatura e8\( d8 c~ c d c d\)
+@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+a8 \( ( a'16 ) a \)
@end lilypond
-@noindent
-But if there were some reason why this could not be done the
-other alternative would be to move the left end of the phrasing
-slur down a little using the @code{positions} property. This
-also resolves the rather nasty shape.
-
@cindex PhrasingSlur, example of overriding
@cindex positions property, example
-@lilypond[quote,verbatim,fragment,ragged-right,relative=1]
-r4
-\once \override PhrasingSlur.positions = #'(-4 . -3)
-\acciaccatura e8\( d8 c~ c d c d\)
+@noindent
+One possibility would be to move the two ends of the phrasing slur
+higher. We can try setting the left end to 2.5 staff-spaces above the
+centre line and the right end to 4.5 above, and LilyPond will
+select the phrasing slur from the candidates it has found with its
+end points closest to these:
+
+@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
+\once \override PhrasingSlur.positions = #'(2.5 . 4.5)
+a8 \( ( a'16 ) a \)
@end lilypond
+This is an improvement, but why not lower the right end of the slur
+a little? If you try it you'll find it can't be done in this way.
+That's because there are no candidate slurs lower than the one
+already selected, and in this case the @code{positions} property has
+no effect. However, ties, slurs and phrasing slurs @emph{can} be
+positioned and shaped very precisely when necessary. To learn how to
+do this, see @ruser{Modifying ties and slurs}.
+
Here's a further example. We see that the beams
collide with the ties:
second voice.
@node The force-hshift property
-@unnumberedsubsubsec The @code{force-hshift property}
+@unnumberedsubsubsec The @code{force-hshift} property
We can now see how to apply the final corrections to the Chopin
example introduced at the end of @ref{I'm hearing Voices}, which
\stemDown
% Stem on the d2 should be invisible
\tweak Stem.transparent ##t
- \tweak Flag.transparent ##t
d2
}
\new Voice {
\stemDown
% Stem on the d2 should be invisible
\tweak Stem.transparent ##t
- \tweak Flag.transparent ##t
d2
}
\new Voice {
@menu
* Other uses for tweaks::
-* Using variables for tweaks::
+* Using variables for layout adjustments::
* Style sheets::
* Other sources of information::
* Advanced tweaks with Scheme::
<<
{
\tweak Stem.transparent ##t
- \tweak Flag.transparent ##t
b8~ b\noBeam
}
\\
<<
{
\tweak Stem.transparent ##t
- \tweak Flag.transparent ##t
\tweak Stem.length #8
b8~ b\noBeam
}
Music Glossary:
@rglos{system}.
-@node Using variables for tweaks
-@subsection Using variables for tweaks
+@node Using variables for layout adjustments
+@subsection Using variables for layout adjustments
-@cindex variables, using for tweaks
-@cindex using variables for tweaks
-@cindex tweaks, using variables for
+@cindex variables, using for overrides
+@cindex overrides, using variables for
+@cindex adjustments, using variables for
+@cindex layout adjustments, using variables for
Override commands are often long and tedious to type, and they
have to be absolutely correct. If the same overrides are to be
@lilypond[quote,verbatim,ragged-right]
mpdolce =
-#(make-dynamic-script
- #{ \markup { \hspace #0
- \translate #'(5 . 0)
- \line { \dynamic "mp"
- \text \italic "dolce" } }
- #})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
inst =
#(define-music-function
(parser location string)
(string?)
- #{ ^\markup \bold \box #string #})
+ #{ <>^\markup \bold \box #string #})
\relative c'' {
\tempo 4=50
@example
%%% save this to a file called "definitions.ily"
mpdolce =
-#(make-dynamic-script
- #@{ \markup @{ \hspace #0
- \translate #'(5 . 0)
- \line @{ \dynamic "mp"
- \text \italic "dolce" @} @}
- #@})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
inst =
#(define-music-function
(parser location string)
(string?)
- #@{ ^\markup \bold \box #string #@})
+ #@{ <>^\markup \bold \box #string #@})
@end example
We will refer to this file using the @code{\include} command near
@lilypond[quote,ragged-right]
mpdolce =
-#(make-dynamic-script
- #{ \markup { \hspace #0
- \translate #'(5 . 0)
- \line { \dynamic "mp"
- \text \italic "dolce" } }
- #})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
inst =
#(define-music-function
(parser location string)
(string?)
- #{ ^\markup \bold \box #string #})
+ #{ <>^\markup \bold \box #string #})
\relative c'' {
\tempo 4=50
@example
%%% definitions.ily
mpdolce =
-#(make-dynamic-script
- #@{ \markup @{ \hspace #0
- \translate #'(5 . 0)
- \line @{ \dynamic "mp"
- \text \italic "dolce" @} @}
- #@})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
inst =
#(define-music-function
(parser location string)
(string?)
- #@{ ^\markup \bold \box #string #@})
+ #@{ <>^\markup \bold \box #string #@})
\layout@{
\context @{
\Score
- \override MetronomeMark.extra-offset = #'(-9 . 0)
+ \override MetronomeMark.extra-offset = #'(-5 . 0)
\override MetronomeMark.padding = #'3
@}
\context @{
@lilypond[quote,ragged-right]
mpdolce =
-#(make-dynamic-script
- #{ \markup { \hspace #0
- \translate #'(5 . 0)
- \line { \dynamic "mp"
- \text \italic "dolce" } }
- #})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
inst =
#(define-music-function
(parser location string)
(string?)
- #{ ^\markup \bold \box #string #})
+ #{ <>^\markup \bold \box #string #})
\layout{
\context {
\Score
- \override MetronomeMark.extra-offset = #'(-9 . 0)
+ \override MetronomeMark.extra-offset = #'(-5 . 0)
\override MetronomeMark.padding = #'3
}
\context {
@example
%%% web-publish.ily
mpdolce =
-#(make-dynamic-script
- #@{ \markup @{ \hspace #0
- \translate #'(5 . 0)
- \line @{ \dynamic "mp"
- \text \italic "dolce" @} @}
- #@})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
inst =
#(define-music-function
(parser location string)
(string?)
- #@{ ^\markup \bold \box #string #@})
+ #@{ <>^\markup \bold \box #string #@})
#(set-global-staff-size 23)
\layout@{
\context @{
\Score
- \override MetronomeMark.extra-offset = #'(-9 . 0)
+ \override MetronomeMark.extra-offset = #'(-5 . 0)
\override MetronomeMark.padding = #'3
@}
\context @{
@lilypond[quote,ragged-right]
mpdolce =
-#(make-dynamic-script
- #{ \markup { \hspace #0
- \translate #'(5 . 0)
- \line { \dynamic "mp"
- \text \italic "dolce" } }
- #})
+ \tweak self-alignment-X #-0.6
+ #(make-dynamic-script
+ #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
inst =
#(define-music-function
(parser location string)
(string?)
- #{ ^\markup \bold \box #string #})
+ #{ <>^\markup \bold \box #string #})
#(set-global-staff-size 23)
\layout{
\context { \Score
- \override MetronomeMark.extra-offset = #'(-9 . 0)
+ \override MetronomeMark.extra-offset = #'(-5 . 0)
\override MetronomeMark.padding = #'3
}
\context { \Voice