]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' into lilypond/translation
authorFrancisco Vila <francisco.vila@hispalinux.es>
Tue, 21 Oct 2008 09:05:52 +0000 (11:05 +0200)
committerFrancisco Vila <francisco.vila@hispalinux.es>
Tue, 21 Oct 2008 09:05:52 +0000 (11:05 +0200)
22 files changed:
Documentation/de/user/lilypond-learning.tely
Documentation/de/user/lilypond-program.tely
Documentation/de/user/lilypond.tely
Documentation/es/user/lilypond-learning.tely
Documentation/es/user/lilypond-program.tely
Documentation/es/user/lilypond.tely
Documentation/fr/user/lilypond-learning.tely
Documentation/fr/user/lilypond-program.tely
Documentation/fr/user/lilypond.tely
Documentation/topdocs/AUTHORS.texi
Documentation/topdocs/INSTALL.texi
Documentation/topdocs/NEWS.tely
Documentation/topdocs/README.texi
Documentation/user/input.itely
Documentation/user/percussion.itely
Documentation/user/tweaks.itely
Documentation/user/working.itely
input/manual/unfretted-headword.ly
input/regression/skiptypesetting-show-first-and-last.ly [new file with mode: 0644]
input/regression/skiptypesetting-show-first.ly [new file with mode: 0644]
input/regression/skiptypesetting-show-last.ly
scm/music-functions.scm

index 00e363983b2afa32dc2c645b3187d67bb63c6a93..fa1af7090666a3f688d1eab96cbc210fbf51fb94 100644 (file)
@@ -5,10 +5,10 @@
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
 @end ignore
-@setfilename lilypond-learning.info
-@settitle GNU LilyPond Handbuch zum Lernen
 @documentencoding UTF-8
 @documentlanguage de
+@setfilename lilypond-learning.info
+@settitle GNU LilyPond Handbuch zum Lernen
 
 @include macros.itexi
 
index 96e0448f44680467adf8853bad6ecf8a59bcab42..c886f89b372880e8acc39a7c9ed91d2803e954f4 100644 (file)
@@ -5,10 +5,10 @@
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
 @end ignore
-@setfilename lilypond-program.info
-@settitle GNU LilyPond Programmbenutzung
 @documentencoding UTF-8
 @documentlanguage de
+@setfilename lilypond-program.info
+@settitle GNU LilyPond Programmbenutzung
 
 @include macros.itexi
 
index 303a6279fe4c57aebc2854dea1658df76b22ec01..da49d9b94dbce4f17af2d005b68aade7b91f0e69 100644 (file)
@@ -5,10 +5,10 @@
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
 @end ignore
-@setfilename lilypond.info
-@settitle GNU LilyPond Benutzerhandbuch
 @documentencoding UTF-8
 @documentlanguage de
+@setfilename lilypond.info
+@settitle GNU LilyPond Benutzerhandbuch
 
 @include macros.itexi
 
index dc91212f878a14f04641dea385e79f15436ab14e..9ea81c3c9c633a9dfe25cde96023bbdcff989dcc 100644 (file)
@@ -5,10 +5,10 @@
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
 @end ignore
-@setfilename lilypond-learning.info
-@settitle Manual de aprendizaje de GNU LilyPond
 @documentencoding UTF-8
 @documentlanguage es
+@setfilename lilypond-learning.info
+@settitle Manual de aprendizaje de GNU LilyPond
 
 @include macros.itexi
 
index 4ea54139a0565f42c745a779307eca5914261c8d..74887165042ad8d8c0aa758fbfa1fc3ae8bdba69 100644 (file)
@@ -5,10 +5,10 @@
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
 @end ignore
-@setfilename lilypond-program.info
-@settitle GNU LilyPond: manual de utilización del programa
 @documentencoding UTF-8
 @documentlanguage es
+@setfilename lilypond-program.info
+@settitle GNU LilyPond: manual de utilización del programa
 
 @include macros.itexi
 
index 336794b0e9d5f50916f6e6aebadcec35bd4b723e..686f36cbcd27a5520cc21930ad44f2d7704ec011 100644 (file)
@@ -5,10 +5,10 @@
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
 @end ignore
-@setfilename lilypond.info
-@settitle Referencia de la notación de GNU LilyPond
 @documentencoding UTF-8
 @documentlanguage es
+@setfilename lilypond.info
+@settitle Referencia de la notación de GNU LilyPond
 
 @include macros.itexi
 
index 98ea2c54d29513f2a85ca811e526964c8ee6ece0..241fe9df81a203f78a70f60ed727389dc171ecba 100644 (file)
@@ -5,9 +5,9 @@
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
 @end ignore
+@documentencoding UTF-8
 @setfilename lilypond-learning.info
 @settitle GNU LilyPond -- manuel d'initiation
-@documentencoding UTF-8
 
 
 @include macros.itexi
index 8b53e30c3ce67fe35f3099ff603103a687c5796f..2a9c92dd09b922e9c67e8b8233f56472eacc3502 100644 (file)
@@ -6,9 +6,9 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@documentencoding UTF-8
 @setfilename lilypond-program.info
 @settitle GNU LilyPond -- utilisation des programmes
-@documentencoding UTF-8
 
 @include macros.itexi
 
index ae12c170f8907bb8fd9ad666784adf6e0fe2fb65..3f907cd5c8b6152865254cefd9dd7f002e37829a 100644 (file)
@@ -6,9 +6,9 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
+@documentencoding UTF-8
 @setfilename lilypond.info
 @settitle GNU LilyPond -- manuel de notation
-@documentencoding UTF-8
 
 @include macros.itexi
 
index b77d180be4e93752f4a9d7b0b2f8b773331906fc..305d2c951e977c4d53d504625566387bcd4bd22e 100644 (file)
@@ -1,9 +1,9 @@
 \input texinfo @c -*-texinfo-*-
+@documentencoding utf-8
+@documentlanguage en
 @setfilename AUTHORS.info
 @settitle AUTHORS - who did what on GNU LilyPond-
 
-@documentencoding utf-8
-@documentlanguage en
 
 @node Top
 @top
index e60fee26104dfd247abf8acf30335e9830664dae..de50b2f66edd26c4acb76c8a5f59aea5bf43a176 100644 (file)
@@ -1,9 +1,9 @@
 \input texinfo @c -*-texinfo-*-
+@documentencoding utf-8
+@documentlanguage en
 @setfilename INSTALL.info
 @settitle INSTALL - compiling and installing GNU LilyPond
 
-@documentencoding utf-8
-@documentlanguage en
 
 @set INSTALL 1
 
index c60fc9b5f6d667e8744647e9468997af3fc64c34..e6b2866b5d12500893c406c50242425dfa1a4c08 100644 (file)
@@ -62,6 +62,16 @@ which scares away people.
 
 @end ignore
 
+@item
+In addition to the already existing @code{showLastLength} property,
+@code{showFirstLength} can now be set as well, rendering only the first
+measures of a piece.  Both properties may be set at the same time:
+@lilypond[]
+showFirstLength = R1*2
+showLastLength = R1*3
+\relative c' { c1 d e f g a b c }
+@end lilypond
+
 @item
 The file extension for MIDI can be set using the command-line
 program default @code{midi-extension}.  For Windows, the default
index e0e7a16503bb6fcad54a7bda00e0cddbdd33a0e8..932734328ab4e99e05441a362fc9e8e8630c30a1 100644 (file)
@@ -1,9 +1,9 @@
 \input texinfo @c -*-texinfo-*-
+@documentencoding utf-8
+@documentlanguage en
 @setfilename README.info
 @settitle Toplevel README
 
-@documentencoding utf-8
-@documentlanguage en
 
 @node Top
 @top
index 392fbb3ea00f7094959440fdf70b8cefaefbffdb..867370d88d9d56965b9e9a1d1068a2e0236e8b01 100644 (file)
@@ -1284,6 +1284,7 @@ For more information on output formats, see @rprogram{Invoking lilypond}.
 
 
 @funindex skipTypesetting
+@funindex showFirstLength
 @funindex showLastLength
 
 When entering or copying music, usually only the music near the end (where
@@ -1301,7 +1302,9 @@ showLastLength = R1*5
 in your source file.  This will render only the last 5 measures
 (assuming 4/4 time signature) of every @code{\score} in the input
 file.  For longer pieces, rendering only a small part is often an order
-of magnitude quicker than rendering it completely
+of magnitude quicker than rendering it completely.  When working on the
+beginning of a score you have already typeset (e.g. to add a new part),
+the @code{showFirstLength} property may be useful as well.
 
 Skipping parts of a score can be controlled in a more fine-grained
 fashion with the property @code{Score.skipTypesetting}.  When it is
index ce45bd7f5e12fbe6a4400ad8fc6ee23fffff6168..45e9f62a9391a8168159dd5d12c47f46cc535aaa 100644 (file)
@@ -393,7 +393,7 @@ woodstaff = {
   % It also defines the positions of the two lines.
   \override Staff.StaffSymbol #'line-positions = #'(-2 3)
 
-  % This is neccessary; if not entered, the barline wuld be too short!
+  % This is neccessary; if not entered, the barline would be too short!
   \override Staff.BarLine #'bar-size = #3
 }
 
@@ -420,6 +420,8 @@ delicate things have a look at @ref{Staff symbol}.
 A tambourine, entered with @q{tamb}:
 
 @lilypond[quote,verbatim]
+#(define mydrums '((tambourine default #t 0)))
+
 tambustaff = {
   \override Staff.StaffSymbol #'line-positions = #'( 0 )
   \override Staff.BarLine #'bar-size = #3
@@ -428,8 +430,7 @@ tambustaff = {
 
 \new DrumStaff {
   \tambustaff
-  % broken
-  % \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
+  \set DrumStaff.drumStyleTable = #(alist->hash-table mydrums)
 
   \drummode {
     \time 6/8
index 7ded056e0c9de45af6d159478e33ead98c31b81b..5210b2332ada154512e9d3b8bdc94107229fc53b 100644 (file)
@@ -60,10 +60,15 @@ and constructing Tweaks.
 @node Objects and interfaces
 @subsection Objects and interfaces
 
-@cindex objects
-@cindex grobs
-@cindex spanners
-@cindex interfaces
+@cindex object
+@cindex grob
+@cindex spanner
+@cindex interface
+@cindex properties, object
+@cindex object properties
+@cindex layout object
+@cindex object, layout
+@cindex interface
 
 Tweaking involves modifying the internal operation and structures
 of the LilyPond program, so we must first introduce some terms
@@ -85,13 +90,13 @@ notational elements such as bar lines,
 note heads, ties, dynamics, etc.  Every object has its own set of
 property values.
 
-Some types of object are given special names.  Objects which
-represent items of notation on the printed output such as
- note heads, stems, slurs, ties, fingering, clefs, etc are called
-@q{Layout objects}, often known as @q{Graphical Objects}, or
-@q{Grobs} for short.  These are still objects in the generic sense
-above, and so they too all have properties associated with them,
-such as their position, size, color, etc.
+Some types of object are given special names.  Objects which represent
+items of notation on the printed output such as note heads, stems,
+slurs, ties, fingering, clefs, etc are called @q{Layout objects},
+often known as @q{Graphical Objects}, or @q{Grobs} for short.  These
+are still objects in the generic sense above, and so they too all have
+properties associated with them, such as their position, size, color,
+etc.
 
 Some layout objects are still more specialized.  Phrasing slurs,
 crescendo hairpins, ottava marks, and many other grobs are not
@@ -100,19 +105,17 @@ ending point, and maybe other properties concerned with their
 shape.  Objects with an extended shape like these are called
 @q{Spanners}.
 
-It remains to explain what @q{Interfaces} are.  Many objects,
-even though they are quite different, share common features 
-which need to be processed in the same way.
-For example, all grobs have a color, a size, a position, etc,
-and all these properties are processed in the same way during
-LilyPond's
-interpretation of the input file.  To simplify these internal
-operations these common actions and properties are grouped 
-together in an object called a @code{grob-interface}.  There
-are many other groupings of common properties like this, each 
-one given a name ending in @code{interface}.  In total there
-are over 100 such interfaces.  We shall see later why this is
-of interest and use to the user.
+It remains to explain what @q{Interfaces} are.  Many objects, even
+though they are quite different, share common features which need to
+be processed in the same way.  For example, all grobs have a color, a
+size, a position, etc, and all these properties are processed in the
+same way during LilyPond's interpretation of the input file.  To
+simplify these internal operations these common actions and properties
+are grouped together in an object called a @code{grob-interface}.
+There are many other groupings of common properties like this, each
+one given a name ending in @code{interface}.  In total there are over
+100 such interfaces.  We shall see later why this is of interest and
+use to the user.
 
 These, then, are the main terms relating to objects which we 
 shall use in this chapter.
@@ -120,6 +123,11 @@ shall use in this chapter.
 @node Naming conventions of objects and properties
 @subsection Naming conventions of objects and properties
 
+@cindex naming conventions for objects
+@cindex naming conventions for properties
+@cindex objects, naming conventions
+@cindex properties, naming conventions
+
 We met some object naming conventions previously, in 
 @ref{Contexts and engravers}.  Here for reference is a list
 of the most common object and property types together with 
@@ -162,17 +170,21 @@ properties.
 @node Tweaking methods
 @subsection Tweaking methods
 
+@cindex tweaking methods
+
 @strong{\override command}
 
 @cindex override command
+@cindex override syntax
+
 @funindex \override
+@funindex override
 
-We have already met the commands @code{\set} and @code{\with},
-used to change the properties of @strong{contexts} and to remove
-and add @strong{engravers}, in
-@ref{Modifying context properties}, and @ref{Adding
-and removing engravers}.  We now must meet some more important
-commands.
+We have already met the commands @code{\set} and @code{\with}, used to
+change the properties of @strong{contexts} and to remove and add
+@strong{engravers}, in @ref{Modifying context properties}, and
+@ref{Adding and removing engravers}.  We now must meet some more
+important commands.
 
 The command to change the properties of @strong{layout objects} is
 @code{\override}.  Because this command has to modify
@@ -185,14 +197,14 @@ how this is done.
 The general syntax of this command is:
 
 @example
-\override @var{Context}.@var{LayoutObject} #'@var{layout-property} = #@var{value}
+\override @var{Context}.@var{LayoutObject} #'@var{layout-property} =
+#@var{value}
 @end example
 
 @noindent
-This will set the property with the name @var{layout-property}
-of the layout object with the name
-@var{LayoutObject}, which is a member of the @var{Context}
-context, to the value @var{value}.
+This will set the property with the name @var{layout-property} of the
+layout object with the name @var{LayoutObject}, which is a member of
+the @var{Context} context, to the value @var{value}.
 
 The @var{Context} can be omitted (and usually is) when the
 required context is unambiguously implied and is one of lowest
@@ -224,7 +236,9 @@ a b c
 @strong{\revert command}
 
 @cindex revert command
+
 @funindex \revert
+@funindex revert
 
 Once overridden, the property retains its new value until it is
 overridden again or a @code{\revert} command is encountered.
@@ -254,6 +268,9 @@ b c
 
 @strong{\once prefix}
 
+@funindex \once
+@funindex once
+
 Both the @code{\override} and the @code{\set} commands may be
 prefixed by @code{\once}.  This causes the following
 @code{\override} or @code{\set} command to be effective only
@@ -272,7 +289,9 @@ a b c
 @strong{\overrideProperty command}
 
 @cindex overrideProperty command
+
 @funindex \overrideProperty
+@funindex overrideProperty
 
 There is another form of the override command,
 @code{\overrideProperty}, which is occasionally required.
@@ -283,7 +302,9 @@ We mention it here for completeness, but for details see
 @strong{\tweak command}
 
 @cindex tweak command
+
 @funindex \tweak
+@funindex tweak
 
 The final tweaking command which is available is @code{\tweak}.
 This should be used to change the properties of objects which
@@ -358,6 +379,7 @@ articulation mark as if it were an articulation itself.
 @cindex bracket, tuplet
 @cindex tuplet bracket
 @cindex triplet bracket
+
 @funindex TupletBracket
 
 The @code{\tweak} command must also be used to change the 
@@ -424,6 +446,7 @@ Notation Reference:
 @cindex properties of grobs
 @cindex grobs, properties of
 @cindex layout objects, properties of
+@cindex Internals Reference manual
 
 Suppose you have a slur in a score which, to your mind,
 appears too thin and you'd like to draw it a little heavier.
@@ -561,7 +584,9 @@ still need some practice.  This is provided in the examples
 which follow.
 
 @subheading Finding the context
+
 @cindex context, finding
+@cindex context, identifying correct
 
 But first, what if we had needed to specify the Context?  
 What should it be?  We could guess that slurs are in
@@ -583,19 +608,18 @@ location.
 
 @cindex overriding once only
 @cindex once override
-@funindex \once
 
-As you can see, @emph{all} the slurs are thicker in the
-final example above.  But what if we
-wanted just the first slur to be thicker?  This is achieved
-with the @code{\once} command.  Placed immediately before
-the @code{\override} command it causes it to change only the
-slur which begins on the @strong{immediately following} note.
-If the
-immediately following note does not begin a slur the command
-has no effect at all -- it is not remembered until a slur
-is encountered, it is simply discarded.  So the command with
-@code{\once} must be
+@funindex \once
+@funindex once
+
+As you can see, @emph{all} the slurs are thicker in the final example
+above.  But what if we wanted just the first slur to be thicker?  This
+is achieved with the @code{\once} command.  Placed immediately before
+the @code{\override} command it causes it to change only the slur
+which begins on the @strong{immediately following} note.  If the
+immediately following note does not begin a slur the command has no
+effect at all -- it is not remembered until a slur is encountered, it
+is simply discarded.  So the command with @code{\once} must be
 repositioned as follows:
 
 @lilypond[quote,verbatim,relative=2]
@@ -624,8 +648,10 @@ command.
 @subheading Reverting
 
 @cindex revert
-@cindex default properties, reverting
+@cindex default properties, reverting to
+
 @funindex \revert
+@funindex revert
 
 Finally, what if we wanted just the first two slurs to be
 heavier?  Well, we could use two commands, each preceded by
@@ -652,9 +678,8 @@ the slurs begin:
 @end lilypond 
 
 @noindent
-or we could omit the @code{\once} command and use the
-@code{\revert} command
-to return the @code{thickness} property to its default value
+or we could omit the @code{\once} command and use the @code{\revert}
+command to return the @code{thickness} property to its default value
 after the second slur:
 
 @lilypond[quote,verbatim,relative=2]
@@ -693,21 +718,20 @@ contain progressively fewer words of guidance and explanation.
 @node Properties found in interfaces
 @subsection Properties found in interfaces
 
+@cindex interface
 @cindex interface properties
 @cindex properties in interfaces
 
-Suppose now that we wish to print the lyrics in italics.  What
-form of @code{\override} command do we need to do this?
-We first look in the IR page listing @q{All layout objects}, as
-before, and look for an object that might control lyrics.  We
-find @code{LyricText}, which looks right.  Clicking on this shows
-the settable properties for lyric text.  These include the 
-@code{font-series} and @code{font-size}, but nothing that might
-give an italic shape.   
-This is because the shape property is one that is common to all
-font objects, so, rather than including it in every layout
-object, it is grouped together with other similar common
-properties and placed in an @strong{Interface}, the
+Suppose now that we wish to print the lyrics in italics.  What form of
+@code{\override} command do we need to do this?  We first look in the
+IR page listing @q{All layout objects}, as before, and look for an
+object that might control lyrics.  We find @code{LyricText}, which
+looks right.  Clicking on this shows the settable properties for lyric
+text.  These include the @code{font-series} and @code{font-size}, but
+nothing that might give an italic shape.  This is because the shape
+property is one that is common to all font objects, so, rather than
+including it in every layout object, it is grouped together with other
+similar common properties and placed in an @strong{Interface}, the
 @code{font-interface}.
 
 So now we need to learn how to find the properties of interfaces,
@@ -724,19 +748,17 @@ Now we see all the user-settable properties which control fonts,
 including @code{font-shape(symbol)}, where @code{symbol} can be
 set to @code{upright}, @code{italics} or @code{caps}.
 
-You will notice that @code{font-series} and @code{font-size}
-are also listed there.
-This immediately raises the question: Why are the common font
-properties @code{font-series} and @code{font-size} listed under
-@code{LyricText} as well as under the interface
-@code{font-interface} but @code{font-shape} is not?  The answer
-is that @code{font-series} and @code{font-size} are changed
-from their global default values when a @code{LyricText} object
-is created, but @code{font-shape} is not.  The entries in
-@code{LyricText} then tell you the values for those two
-properties which apply to @code{LyricText}.  Other objects
-which support @code{font-interface} will set these
-properties differently when they are created.
+You will notice that @code{font-series} and @code{font-size} are also
+listed there.  This immediately raises the question: Why are the
+common font properties @code{font-series} and @code{font-size} listed
+under @code{LyricText} as well as under the interface
+@code{font-interface} but @code{font-shape} is not?  The answer is
+that @code{font-series} and @code{font-size} are changed from their
+global default values when a @code{LyricText} object is created, but
+@code{font-shape} is not.  The entries in @code{LyricText} then tell
+you the values for those two properties which apply to
+@code{LyricText}.  Other objects which support @code{font-interface}
+will set these properties differently when they are created.
 
 Let's see if we can now construct the @code{\override} command
 to change the lyrics to italics.  The object is @code{LyricText},
@@ -785,7 +807,9 @@ lyrics which it should affect, like this:
 and the lyrics are all printed in italics.
 
 @subheading Specifying the context in lyric mode
+
 @cindex context, specifying in lyric mode
+@cindex lyric mode, specifying context
 
 In the case of lyrics, if you try specifying the context in the 
 format given earlier the command will fail.  A syllable
@@ -817,7 +841,7 @@ Learning Manual: @ref{Scheme tutorial}.
 @node Types of properties
 @subsection Types of properties
 
-@cindex Property types
+@cindex property types
 
 So far we have seen two types of property: @code{number} and
 @code{symbol}.  To be valid, the value given to a property
@@ -920,21 +944,20 @@ particular grob are listed in the IR at the bottom of the page
 describing that grob, and those properties may be viewed by looking at
 those interfaces.
 
-We explained how to find information about grobs in 
-@ref{Properties of layout objects}.  Using the same approach,
-we go to the IR to find the layout object which prints
-bar lines.  Going via @emph{Backend} and @emph{All layout objects}
-we find there
-is a layout object called @code{BarLine}.  Its properties include
-two that control its visibility: @code{break-visibility} and
-@code{stencil}.  Barline also supports a number of interfaces,
-including the @code{grob-interface}, where we find the
-@code{transparent} and the @code{color} properties.  All
-of these can affect the visibility of bar lines (and, of course,
-by extension, many other layout objects too.)  Let's consider
-each of these in turn.
+We explained how to find information about grobs in @ref{Properties of
+layout objects}.  Using the same approach, we go to the IR to find the
+layout object which prints bar lines.  Going via @emph{Backend} and
+@emph{All layout objects} we find there is a layout object called
+@code{BarLine}.  Its properties include two that control its
+visibility: @code{break-visibility} and @code{stencil}.  Barline also
+supports a number of interfaces, including the @code{grob-interface},
+where we find the @code{transparent} and the @code{color} properties.
+All of these can affect the visibility of bar lines (and, of course,
+by extension, many other layout objects too.)  Let's consider each of
+these in turn.
 
 @subheading stencil
+
 @cindex stencil property
 
 This property controls the appearance of the bar lines by specifying
@@ -953,19 +976,17 @@ the implied Context, @code{Voice}:
 }
 @end lilypond
 
-The bar lines are still printed.  What is wrong?  Go back to the
-IR and look again at the page giving the properties of BarLine.
-At the top of the page it says @qq{Barline objects are created
-by: Bar_engraver}.  Go to the @code{Bar_engraver} page.
-At the bottom
-it gives a list of Contexts in which the bar engraver operates.
-All of them are of the type @code{Staff}, so the reason the
-@code{\override} command failed to work as expected is because
-@code{Barline} is not in the default @code{Voice} context.
-If the context
-is specified wrongly, the command simply does not work.  No
-error message is produced, and nothing is logged in the log
-file.  Let's try correcting it by adding the correct context:
+The bar lines are still printed.  What is wrong?  Go back to the IR
+and look again at the page giving the properties of BarLine.  At the
+top of the page it says @qq{Barline objects are created by:
+Bar_engraver}.  Go to the @code{Bar_engraver} page.  At the bottom it
+gives a list of Contexts in which the bar engraver operates.  All of
+them are of the type @code{Staff}, so the reason the @code{\override}
+command failed to work as expected is because @code{Barline} is not in
+the default @code{Voice} context.  If the context is specified
+wrongly, the command simply does not work.  No error message is
+produced, and nothing is logged in the log file.  Let's try correcting
+it by adding the correct context:
 
 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
 {
@@ -984,18 +1005,16 @@ Now the bar lines have vanished.
 @cindex break-visibility property
 
 We see from the @code{BarLine} properties in the IR that the
-@code{break-visibility} property requires a vector of three
-booleans.
-These control respectively whether bar lines are printed at
-the end of a line, in the middle of lines, and at the beginning
-of lines.  For our example we want all bar lines to be suppressed,
-so the value we need is @code{'#(#f #f #f)}.
-Let's try that, remembering
-to include the @code{Staff} context.  Note also that in writing
-this value we have @code{#'#} before the opening bracket.
-The @code{'#} is required as part of the value to introduce a
-vector, and the first @code{#} is required, as always, to precede
-the value itself in the @code{\override} command.
+@code{break-visibility} property requires a vector of three booleans.
+These control respectively whether bar lines are printed at the end of
+a line, in the middle of lines, and at the beginning of lines.  For
+our example we want all bar lines to be suppressed, so the value we
+need is @code{'#(#f #f #f)}.  Let's try that, remembering to include
+the @code{Staff} context.  Note also that in writing this value we
+have @code{#'#} before the opening bracket.  The @code{'#} is required
+as part of the value to introduce a vector, and the first @code{#} is
+required, as always, to precede the value itself in the
+@code{\override} command.
 
 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
 {
@@ -1010,20 +1029,19 @@ the value itself in the @code{\override} command.
 And we see this too removes all the bar lines.
 
 @subheading transparent
-@cindex transparent property
 
-We see from the properties specified in the @code{grob-interface}
-page in the IR that the @code{transparent} property is a boolean.
-This
-should be set to @code{#t} to make the grob transparent.
-In this next example let us make the time signature invisible
-rather than the bar lines.
-To do this we need to find the grob name for the time signature.
-Back to
-the @q{All layout objects} page in the IR to find the properties
-of the @code{TimeSignature} layout object.  This is produced by
-the @code{Time_signature_engraver} which you can check also lives
-in the @code{Staff} context and also supports the
+@cindex transparent property
+@cindex transparency
+
+We see from the properties specified in the @code{grob-interface} page
+in the IR that the @code{transparent} property is a boolean.  This
+should be set to @code{#t} to make the grob transparent.  In this next
+example let us make the time signature invisible rather than the bar
+lines.  To do this we need to find the grob name for the time
+signature.  Back to the @q{All layout objects} page in the IR to find
+the properties of the @code{TimeSignature} layout object.  This is
+produced by the @code{Time_signature_engraver} which you can check
+also lives in the @code{Staff} context and also supports the
 @code{grob-interface}.  So the command to make the time signature
 transparent is:
 
@@ -1061,6 +1079,7 @@ removes the object entirely; making the object @code{transparent}
 leaves it where it is, but makes it invisible.
 
 @subheading color
+
 @cindex color property
 
 Finally let us try making the bar lines invisible by coloring
@@ -1105,6 +1124,8 @@ list.
 @cindex color, X11
 @cindex X11 colors
 
+@funindex x22-color
+
 The second way of changing the color is to use the list of
 X11 color names in the second list in @ruser{List of colors}.
 However, these must be preceded by another function, which
@@ -1129,6 +1150,8 @@ an apostrophe and the two enclosed in brackets.
 @cindex rgb colors
 @cindex color, rgb
 
+@funindex rgb-color
+
 There is yet a third function, one which converts RGB values into
 internal colors -- the @code{rgb-color} function.  This takes
 three arguments giving the intensities of the red, green and
@@ -1181,6 +1204,11 @@ found.
 @node Size of objects
 @subsection Size of objects
 
+@cindex changing size of objects
+@cindex size of objects
+@cindex objects, size of
+@cindex objects, changing size of
+
 Let us begin by looking again at the earlier example 
 see @ref{Nesting music expressions}) which showed
 how to introduce a new temporary staff, as in an @rglos{ossia}.
@@ -1246,13 +1274,12 @@ their default values, which will be the ones set in the
 @code{\with} clause, or if none have been set there, the normal
 default values.
 
-Some context properties
-can be modified only in @code{\with} clauses.  These are those
-properties which cannot sensibly be changed after the context 
-has been created.  @code{alignAboveContext} and its partner,
-@code{alignBelowContext}, are two such properties -- once the
-staff has been created its alignment is decided and it would
-make no sense to try to change it later.
+Some context properties can be modified only in @code{\with} clauses.
+These are those properties which cannot sensibly be changed after the
+context has been created.  @code{alignAboveContext} and its partner,
+@code{alignBelowContext}, are two such properties -- once the staff
+has been created its alignment is decided and it would make no sense
+to try to change it later.
 
 The default values of layout object properties can also be set
 in @code{\with} clauses.  Simply use the normal @code{\override}
@@ -1286,20 +1313,17 @@ So we could replace the example above with
 
 Finally we come to changing the size of layout objects.
 
-Some layout objects are created as glyphs selected from
-a typeface font.  These include note heads, accidentals, markup, 
-clefs, time signatures, dynamics and lyrics.  
-Their size is changed by modifying the
-@code{font-size} property, as we shall shortly see.  Other
-layout objects such as slurs and ties -- in general, spanner
-objects -- are drawn individually, so there is no 
-@code{font-size}
-associated with them.  These objects generally derive their
-size from the objects to which they are attached, so usually
-there is no need to change their size manually.  Still other 
-properties such as the length of stems and bar lines, thickness 
-of beams and other lines, and the separation of staff lines all 
-need to be modified in special ways. 
+Some layout objects are created as glyphs selected from a typeface
+font.  These include note heads, accidentals, markup, clefs, time
+signatures, dynamics and lyrics.  Their size is changed by modifying
+the @code{font-size} property, as we shall shortly see.  Other layout
+objects such as slurs and ties -- in general, spanner objects -- are
+drawn individually, so there is no @code{font-size} associated with
+them.  These objects generally derive their size from the objects to
+which they are attached, so usually there is no need to change their
+size manually.  Still other properties such as the length of stems and
+bar lines, thickness of beams and other lines, and the separation of
+staff lines all need to be modified in special ways.
 
 Returning to the ossia example, let us first change the font-size.
 We can do this in two ways.  We can either change the size of the
@@ -1354,9 +1378,9 @@ sub-section discusses how this is done.
 @node Length and thickness of objects
 @subsection Length and thickness of objects
 
-@cindex Distances
-@cindex Thickness
-@cindex Length
+@cindex distances
+@cindex thickness
+@cindex length
 @cindex magstep
 @cindex size, changing
 @cindex stem length, changing
@@ -1402,15 +1426,14 @@ objects in proportion.  It is used like this:
 @end lilypond
 
 @noindent
-Since the length of stems and many other length-related properties
-are always calculated relative to the
-value of the @code{staff-space} property these are automatically
-scaled down in length too.  Note that this affects only the
-vertical scale of the ossia -- the horizontal scale is determined
-by the layout of the main music in order to remain synchronized 
-with it, so it is not affected by any of these changes in size.
-Of course, if the scale of all the main music were changed in this
-way then the horizontal spacing would be affected.  This is 
+Since the length of stems and many other length-related properties are
+always calculated relative to the value of the @code{staff-space}
+property these are automatically scaled down in length too.  Note that
+this affects only the vertical scale of the ossia -- the horizontal
+scale is determined by the layout of the main music in order to remain
+synchronized with it, so it is not affected by any of these changes in
+size.  Of course, if the scale of all the main music were changed in
+this way then the horizontal spacing would be affected.  This is
 discussed later in the layout section.
 
 This, then, completes the creation of an ossia.  The sizes and
@@ -1433,13 +1456,18 @@ from a font) may be changed in the same way.
 @menu
 * Automatic behavior::          
 * Within-staff objects::        
-* Outside staff objects::       
+* Outside-staff objects::       
 @end menu
 
 
 @node Automatic behavior
 @subsection Automatic behavior
 
+@cindex within-staff objects
+@cindex outside-staff objects
+@cindex objects, within-staff
+@cindex objects, outside-staff
+
 There are some objects in musical notation that belong to
 the staff and there are other objects that should be 
 placed outside the staff.  These are called within-staff
@@ -1527,12 +1555,16 @@ either up or down; others like stems and flags also move to
 right or left when they point up or down.  This is controlled
 automatically when @code{direction} is set.
 
-The following example shows in bar 1 the default behavior of 
-stems, 
-with those on high notes pointing down and those on low notes
-pointing up, followed by four notes with all stems forced down, 
-four notes with all stems forced up, and finally four notes
-reverted back to the default behavior.
+@cindex down
+@cindex up
+@cindex center
+@cindex neutral
+
+The following example shows in bar 1 the default behavior of stems,
+with those on high notes pointing down and those on low notes pointing
+up, followed by four notes with all stems forced down, four notes with
+all stems forced up, and finally four notes reverted back to the
+default behavior.
 
 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
 a4 g c a
@@ -1551,10 +1583,9 @@ may also be used in some cases.  It is simply treated as meaning
 @code{UP} for stems, but for some objects it means @q{center}.
 There is a constant, @code{CENTER} which has the value @code{0}.
 
-However, these explicit overrides are not usually used, as there
-are simpler equivalent predefined commands available.  
-Here is a table of the commonest.  The meaning of each is stated
-where it is not obvious.
+However, these explicit overrides are not usually used, as there are
+simpler equivalent predefined commands available.  Here is a table of
+the commonest.  The meaning of each is stated where it is not obvious.
 
 @multitable @columnfractions .2 .2 .25 .35
 @headitem Down/Left
@@ -1607,21 +1638,21 @@ followed after the affected note by the corresponding
 @code{\xxxNeutral} command.
 
 @subheading Fingering
+
 @cindex fingering, placement
+@cindex fingering, chords
 
-The placement of fingering on single notes can also be controlled
-by the @code{direction} property, but changing @code{direction}
-has no effect on chords.  As we shall see, there are special
+The placement of fingering is also affected by the value
+of its @code{direction} property, but there are special
 commands which allow the fingering of individual notes
 of chords to be controlled, with the fingering being placed
 above, below, to the left or to the right of each note.
 
-First, here's the effect of @code{direction} on the fingering
-attached to single notes.  The first bar shows the default
-behaviour, and the following two bars shows the effect of
-specifying @code{DOWN} and @code{UP}:
+First, here's the effect of @code{direction} on fingering,
+the first bar shows the default, then the effect of specifying
+@code{DOWN} and @code{UP}:
 
-@lilypond[quote,verbatim,relative=2]
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
 c-5 a-3 f-1 c'-5
 \override Fingering #'direction = #DOWN
 c-5 a-3 f-1 c'-5
@@ -1629,43 +1660,21 @@ c-5 a-3 f-1 c'-5
 c-5 a-3 f-1 c'-5
 @end lilypond
 
-However, overriding the @code{direction} property is not the
-easiest way of manually setting the fingering above or below
-the notes; using @code{_} or @code{^} instead of @code{-} before
-the fingering number is usually preferable.  Here is the previous
-example using this method:
+This is how to control fingering on single notes, but the
+@code{direction} property is ignored for chords.  Instead, by default,
+the fingering is automatically placed both above and below the notes
+of a chord, as shown:
 
-@lilypond[quote,verbatim,relative=2]
-c-5 a-3 f-1 c'-5
-c_5 a_3 f_1 c'_5
-c^5 a^3 f^1 c'^5
-@end lilypond
-
-The @code{direction} property is ignored for chords, but the
-directional prefixes, @code{_} and @code{^} do work.  By default,
-the fingering is automatically placed both above and below the
-notes of a chord, as shown:
-
-@lilypond[quote,verbatim,relative=2]
+@lilypond[quote,fragment,ragged-right,verbatim,relative=2]
 <c-5 g-3>
 <c-5 g-3 e-2>
 <c-5 g-3 e-2 c-1>
 @end lilypond
 
-@noindent
-but this may be overriden to manually force all or any of the
-individual fingering numbers above or below:
-
-@lilypond[quote,verbatim,relative=2]
-<c-5 g-3 e-2 c-1>
-<c^5 g_3 e_2 c_1>
-<c^5 g^3 e^2 c_1>
-@end lilypond
-
-Even greater control over the placement of fingering of the
-individual notes in a chord is possible by using the
-@code{\set fingeringOrientations} command.  The format of this
-command is:
+Greater control over the placement of fingering of the 
+individual notes in a chord is possible by using
+the @code{\set fingeringOrientations} command.  The format of
+this command is
 
 @example
 @code{\set fingeringOrientations = #'([up] [left/right] [down])}
@@ -1677,20 +1686,20 @@ property of the @code{Voice} context, created and used by the
 @code{New_fingering_engraver}.
 
 The property may be set to a list of one to three values.
-It controls whether fingerings may be placed above (if
+It controls whether fingerings may be placed above (if 
 @code{up} appears in the list), below (if @code{down} appears),
 to the left (if @code{left} appears, or to the right
 (if @code{right} appears).  Conversely, if a location is not
-listed, no fingering is placed there.  LilyPond takes these
+listed, no fingering is placed there.  LilyPond takes these 
 constraints and works out the best placement for the fingering
 of the notes of the following chords.  Note that @code{left} and
 @code{right} are mutually exclusive -- fingering may be placed
 only on one side or the other, not both.
 
-@warning{To control the placement of the fingering of a single
-note using this command it is necessary to write it as a single
-note chord by placing angle brackets round it.}
-
+To control the placement of the fingering of a single note 
+using this command it is necessary to write it as a single 
+note chord by placing angle brackets round it.
+  
 Here are a few examples:
 
 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
@@ -1709,7 +1718,7 @@ Here are a few examples:
 \set fingeringOrientations = #'(right)
 <f-2>
 < c-1  e-2 g-3 b-5 > 4
-@end lilypond
+@end lilypond 
 
 @noindent
 If the fingering seems a little crowded the @code{font-size}
@@ -1735,7 +1744,7 @@ try @code{-7}:
 <f-2>
 < c-1  e-2 g-3 b-5 > 4
 @end lilypond
-
+@c START HERE
 @node Outside staff objects
 @subsection Outside staff objects
 
index c6007c7ee77e5a59e9232dd9d12280367f204828..c912e5999c85bcff1972978254ad6ce797814986 100644 (file)
@@ -129,8 +129,8 @@ piece of existing sheet music),
 @item Enter one manuscript (the physical copy) system at a time (but still
 only one bar per line of text), and
 check each system when you finish it.  You may use the
-@code{showLastLength} command to speed up processing -- see
-@ruser{Skipping corrected music}.
+@code{showLastLength} or @code{showFirstLength} properties to speed up
+processing -- see @ruser{Skipping corrected music}.
 
 @item Define @code{mBreak = @{ \break @}} and insert @code{\mBreak}
 in the input file whenever the manuscript has a line break.  This
index 326bed2c442c2eee7aaf7190e2bb8d83b23616c7..184ffd05bce328b79f1a7887760ba46464398dc5 100644 (file)
@@ -128,7 +128,7 @@ ViolinSolo = \relative c' {
 
   %% Measure 2
   \time 7/4
-  \set Score.repeatCommands = #'((volta "¹) n.      ²) s.p."))
+  \set Score.repeatCommands = #'((volta "1) n.      2) s.p."))
   <<
     { \shift d2 \glissando ^\markup \colmark { \quatre \udbetc } \shifta e1 } \\
     { d2 \open \mf \< ~ d1 \! \> ~ d4 ^\markup \colmark { " " \fermaTa } \! }
@@ -214,6 +214,9 @@ ViolinSolo = \relative c' {
     \context {
       \Staff
       \remove "Time_signature_engraver"
+    }
+    \context {
+      \Score
       \remove "Bar_number_engraver"
     }
   }
diff --git a/input/regression/skiptypesetting-show-first-and-last.ly b/input/regression/skiptypesetting-show-first-and-last.ly
new file mode 100644 (file)
index 0000000..4dda5fa
--- /dev/null
@@ -0,0 +1,18 @@
+\header {
+
+  texidoc = "@code{showFirstLength} and @code{showLastLength} may be set at the
+  same time; both the beginning and the end of the score will be printed."
+
+  }
+
+\version "2.11.63"
+
+showFirstLength = R1*1
+showLastLength = R1*2
+\paper {
+  ragged-right = ##T
+}
+
+{
+  c1 d e f g a
+}
diff --git a/input/regression/skiptypesetting-show-first.ly b/input/regression/skiptypesetting-show-first.ly
new file mode 100644 (file)
index 0000000..b8d2f6b
--- /dev/null
@@ -0,0 +1,16 @@
+\header {
+
+  texidoc = "@code{showFirstLength} will only show the first bit of a score"
+
+  }
+
+\version "2.11.63"
+
+showFirstLength = R1*3
+\paper {
+  ragged-right = ##T
+}
+
+{
+  c1 d e f g a
+}
index def23fc0b071cc98f8b0a285c9fabc48b3a40dcf..cd280cde0868a903964f87c1e58aeadde847e9df 100644 (file)
@@ -12,7 +12,5 @@ showLastLength = R1*3
 }
 
 {
-  c1 c1
-  c1 c1
-  c1 c1
+  c1 d e f g a
 }
index 490cafe92c40c9cc3f3de7ed20b29541353061ea..be24b74579aed713f720e6ff13ab4e63d9d24dd2 100644 (file)
@@ -823,41 +823,94 @@ Syntax:
        (ly:music-length music))
   music)
 
-(define (skip-to-last music parser)
-
-  "Replace MUSIC by
+(define-public (make-duration-of-length moment)
+ "Make duration of the given MOMENT length."
+ (ly:make-duration 0 0
+  (ly:moment-main-numerator moment)
+  (ly:moment-main-denominator moment)))
+
+(define (skip-this moment)
+ "set skipTypesetting, make SkipMusic of the given MOMENT length,
+ and then unset skipTypesetting."
+ (make-sequential-music
+  (list
+   (context-spec-music (make-property-set 'skipTypesetting #t)
+    'Score)
+   (make-music 'SkipMusic 'duration
+    (make-duration-of-length moment))
+   (context-spec-music (make-property-set 'skipTypesetting #f)
+    'Score))))
+
+(define (unskip-this moment)
+ "unset skipTypesetting, make SkipMusic of the given MOMENT length,
+ and then set skipTypesetting."
+ (make-sequential-music
+  (list
+   (context-spec-music (make-property-set 'skipTypesetting #f)
+    'Score)
+   (make-music 'SkipMusic 'duration
+    (make-duration-of-length moment))
+   (context-spec-music (make-property-set 'skipTypesetting #t)
+    'Score))))
+
+(define (skip-as-needed music parser)
+ "Replace MUSIC by
+ << {  \\set skipTypesetting = ##f
+ LENGTHOF(\\showFirstLength)
+ \\set skipTypesetting = ##t
+ LENGTHOF(\\showLastLength) }
+ MUSIC >>
+ if appropriate.
+
+ When only showFirstLength is set,
+ the 'length property of the music is
+ overridden to speed up compiling."
+ (let*
+  ((show-last (ly:parser-lookup parser 'showLastLength))
+   (show-first (ly:parser-lookup parser 'showFirstLength)))
+  (cond
+
+   ;; both properties may be set.
+   ((and (ly:music? show-first) (ly:music? show-last))
+    (let*
+     ((orig-length (ly:music-length music))
+      (skip-length (ly:moment-sub orig-length (ly:music-length show-last)))
+      (begin-length (ly:music-length show-first)))
+     (make-simultaneous-music
+      (list
+       (make-sequential-music
+        (list
+         (skip-this skip-length)
+         ;; let's draw a separator between the beginning and the end
+         (context-spec-music (make-property-set 'whichBar "||")
+          'Timing)))
+       (unskip-this begin-length)
+       music))))
+
+   ;; we may only want to print the last length
+   ((ly:music? show-last)
+    (let*
+     ((orig-length (ly:music-length music))
+      (skip-length (ly:moment-sub orig-length (ly:music-length show-last))))
+     (make-simultaneous-music
+      (list
+       (skip-this skip-length)
+       music))))
+
+   ;; we may only want to print the beginning; in this case
+   ;; only the first length will be processed (much faster).
+   ((ly:music? show-first)
+    (let*
+     ((orig-length (ly:music-length music))
+      (begin-length (ly:music-length show-first)))
+     ;; the first length must not exceed the original length.
+     (if (ly:moment<? begin-length orig-length)
+      (set! (ly:music-property music 'length)
+       (ly:music-length show-first)))
+     music))
 
-<< { \\set skipTypesetting = ##t
-     LENGTHOF(\\showLastLength)
-     \\set skipTypesetting = ##t  }
-    MUSIC >>
+   (else music))))
 
-if appropriate.
- "
-  (let*
-      ((show-last  (ly:parser-lookup parser 'showLastLength)))
-    
-    (if (ly:music? show-last)
-       (let*
-           ((orig-length (ly:music-length music))
-            (skip-length (ly:moment-sub orig-length (ly:music-length show-last))))
-
-         (make-simultaneous-music
-          (list
-           (make-sequential-music
-            (list
-             (context-spec-music (make-property-set 'skipTypesetting #t)
-                                 'Score)
-             (make-music 'SkipMusic 'duration
-                         (ly:make-duration
-                          0 0
-                          (ly:moment-main-numerator skip-length)
-                          (ly:moment-main-denominator skip-length)))
-             (context-spec-music (make-property-set 'skipTypesetting #f)
-                                 'Score)))
-           music)))
-       music)))
-    
 
 (define-public toplevel-music-functions
   (list
@@ -872,7 +925,7 @@ if appropriate.
    (lambda (x parser) (music-map cue-substitute x))
  
    (lambda (x parser)
-     (skip-to-last x parser)
+     (skip-as-needed x parser)
    )))