]> git.donarmstrong.com Git - lilypond.git/blobdiff - scm/define-grob-properties.scm
Add full-length-to-extent property for bug #573.
[lilypond.git] / scm / define-grob-properties.scm
index c4dc73d095125861e600f140a470681898f5c0da..b48cbc25fc95444db3acdeede64daa92b55f6c8e 100644 (file)
@@ -2,7 +2,7 @@
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
 ;;;; 
-;;;; (c) 1998--2006  Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;; (c) 1998--2007  Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 
 (define (define-grob-property symbol type? description)
@@ -25,7 +25,7 @@
      (X-extent ,number-pair? "Hard coded extent in X@tie{}direction.")
      (X-offset ,number? "The horizontal amount that this object is
 moved relative to its X-parent.")
-     (Y-extent ,number-pair? "See @code{X-extent}.")
+     (Y-extent ,number-pair? "Hard coded extent in Y@tie{}direction.")
      (Y-offset ,number? "The vertical amount that this object is moved
 relative to its Y-parent.")
 
@@ -37,9 +37,12 @@ callback for @code{after-line-breaking}.")
 @code{0}: around center of width, @code{1}: right side.")
      (allow-loose-spacing ,boolean? "If set, column can be detached
 from main spacing.")
+     (allow-span-bar ,boolean? "If false, no inter-staff bar line will
+be created below this bar line.")
      (alteration ,number? "Alteration numbers for accidental.")
      (alteration-alist ,list? "List of @code{(@var{pitch}
 . @var{accidental})} pairs for key signature.")
+     (annotation ,string? "Annotate a grob for debug purposes.")
      (arpeggio-direction ,ly:dir? "If set, put an arrow on the
 arpeggio squiggly line.")
      (arrow-length ,number? "Arrow length.")
@@ -60,8 +63,6 @@ script.")
 grobs, this should contain only one number.")
 
      (bar-size ,ly:dimension? "The size of a bar line.")
-     (barre-type ,symbol? "Type of barre indication used in a fret
-diagram.  Choices include @code{curved} and @code{straight}.")
      (base-shortest-duration ,ly:moment? "Spacing is based on the
 shortest notes in a piece.  Normally, pieces are spaced as if notes
 at least as short as this are present.")
@@ -94,16 +95,16 @@ printing of the bracket.  Setting the property to @code{if-no-beam}
 makes it print only if there is no beam associated with this tuplet
 bracket.")
      (break-align-anchor ,number? "Grobs aligned to this break-align
-grob will have their X-offsets shifted by this number. In barlines,
+grob will have their X-offsets shifted by this number.  In bar lines,
 for example, this is used to position grobs relative to the (visual)
-center of the barline.")
+center of the bar line.")
      (break-align-anchor-alignment ,number? "Read by
-ly:break-aligned-interface::calc-extent-aligned-anchor for aligning
-an anchor to a grobs extent")
+@code{ly:break-aligned-interface::calc-extent-aligned-anchor} for aligning
+an anchor to a grob's extent")
      (break-align-symbol ,symbol? "This key is used for aligning and
 spacing breakable items.")
      (break-align-symbols ,list? "A list of symbols that determine
-which break-aligned grobs to align this to. If the grob selected by
+which break-aligned grobs to align this to.  If the grob selected by
 the first symbol in the list is invisible due to break-visibility,
 we will align to the next grob (and so on).")
      (break-align-orders ,vector? "Defines the order in which
@@ -135,7 +136,7 @@ middle@tie{}C.")
      (clip-edges ,boolean? "Allow outward pointing beamlets at the
 edges of beams?")
      (collapse-height ,ly:dimension? "Minimum height of system start
-delimiter.  If equal or smaller, the bracket is removed.")
+delimiter.  If equal or smaller, the bracket/brace/line is removed.")
      (color ,color? "The color of this grob.")
      (common-shortest-duration ,ly:moment? "The most common shortest
 note length.  This is used in spacing.  Enlarging this sets the score
@@ -159,20 +160,16 @@ whitespace.  If negative, no line is drawn at all.")
      (default-direction ,ly:dir? "Direction determined by note head
 positions.")
      (digit-names ,vector "Names for string finger digits.")
-     (direction ,ly:dir? "If @code{side-axis} is @code{1} (or
+     (direction ,ly:dir? "If @code{side-axis} is @code{0} (or
 @code{#X}), then this property determines whether the object is placed
 @code{#LEFT}, @code{#CENTER} or @code{#RIGHT} with respect to the
 other object.  Otherwise, it determines whether the object is placed
-@code{#UP}, @code{#CENTER} or #DOWN.  Numerical values may also be
-used: @code{#UP}=@code{1}, @code{#DOWN}=@code{-1},
-@code{#LEFT}=@code{-1}, @code{#RIGHT}=@code{1}, @code{CENTER}=@code{0}
-but also other numerical values are permitted.")
-     (dot-color ,symbol? "Color of dots.  Options include 
-@code{black} and @code{white}.")
+@code{#UP}, @code{#CENTER} or @code{#DOWN}.  Numerical values may also
+be used: @code{#UP}=@code{1}, @code{#DOWN}=@code{-1},
+@code{#LEFT}=@code{-1}, @code{#RIGHT}=@code{1}, @code{#CENTER}=@code{0}.")
      (dot-count ,integer? "The number of dots.")
-     (dot-radius ,number? "Radius of dots.")
      (duration-log ,integer? "The 2-log of the note head duration,
-i.e. @code{0} = whole note, @code{1} = half note, etc.")
+i.e., @code{0} = whole note, @code{1} = half note, etc.")
 
      (eccentricity ,number? "How asymmetrical to make a slur.
 Positive means move the center to the right.")
@@ -184,21 +181,25 @@ edges: @code{(@var{left-text} . @var{right-text})}.")
 church rests.")
      (extra-X-extent ,number-pair? "A grob is enlarged in
 X@tie{}dimension by this much.")
-     (extra-Y-extent ,number-pair? "See @code{extra-X-extent}.")
+     (extra-Y-extent ,number-pair? "A grob is enlarged in
+Y@tie{}dimension by this much.")
      ;; remove me?
      (extra-dy ,number? "Slope glissandi this much extra.")
      (extra-offset ,number-pair? "A pair representing an offset.  This
 offset is added just before outputting the symbol, so the typesetting
-engine is completely oblivious to it.")
+engine is completely oblivious to it.  The values are measured in
+@code{staff-space} units of the staff's @code{StaffSymbol}.")
+     (extra-spacing-height ,number-pair? "In the horizontal spacing
+problem, we increase the height of each item by this amount (by adding
+the @q{car} to the bottom of the item and adding the @q{cdr} to the top
+of the item. In order to make a grob infinitely high (to prevent the
+horizontal spacing problem from placing any other grobs above or below
+this grob), set this to @code{(-inf.0 . +inf.0)}.")
      (extra-spacing-width ,number-pair? "In the horizontal spacing
 problem, we pad each item by this amount (by adding the @q{car} on the
 left side of the item and adding the @q{cdr} on the right side of the
 item).  In order to make a grob take up no horizontal space at all,
 set this to @code{(+inf.0 . -inf.0)}.")
-
-     (finger-code ,symbol? "Code for the type of fingering indication
-in a fret diagram.  Options include @code{none}, @code{in-dot}, and
-@code{below-string}.")
      (flag-count ,number? "The number of tremolo beams.")
      (flag-style ,symbol? "A string determining what style of flag
 glyph is typeset on a @code{Stem}.  Valid options include @code{()}
@@ -218,21 +219,84 @@ of the font to load.  This setting overrides selection using
 include @code{medium}, @code{bold}, @code{bold-narrow}, etc.")
      (font-shape ,symbol? "Select the shape of a font.  Choices
 include @code{upright}, @code{italic}, @code{caps}.")
-     (font-size ,number? "The font size, compared to the @q{normal}
-size.  @code{0}@tie{}is style-sheet's normal size, @code{-1} is
-smaller, @code{+1} is bigger. Each step of@tie{}1 is approximately
-12% larger, 6@tie{}steps are exactly a factor@tie{}2 larger.
+     (font-size ,number? "The font size, compared to the
+@q{normal}@tie{}size.  @code{0}@tie{}is style-sheet's normal size,
+@code{-1} is smaller, @code{+1} is bigger.  Each step of@tie{}1 is
+approximately 12% larger; 6@tie{}steps are exactly a factor@tie{}2 larger.
 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.")
      (french-beaming ,boolean? "Use French beaming style for this
 stem.  The stem stops at the innermost beams.")
-     (fret-count ,integer? "The number of frets in a fret diagram.")
-     ;; ugh: double, change.
+
+     (fret-diagram-details ,list? "An alist of detailed grob properties
+for fret diagrams.  Each alist entry consists of a
+(@code{property} . @code{value}) pair.
+The properties which can be included in fret-diagram-details
+include the following:
+@itemize @bullet
+@item
+@code{barre-type} -- Type of barre indication used.
+Choices include @code{curved} and @code{straight}.
+@item
+@code{dot-color} -- Color of dots.  Options include
+@code{black} and @code{white}.
+@item
+@code{dot-label-font-mag} -- Magnification for font used to
+label fret dots.  Default value 1.
+@item
+@code{dot-radius} -- Radius of dots.
+@item
+@code{finger-code} -- Code for the type of fingering indication used.
+Options include @code{none}, @code{in-dot}, and
+@code{below-string}.
+@item
+@code{fret-count} -- The number of frets.
+@item
+@code{fret-label-font-mag} -- The magnification of the font used to label
+the lowest fret number.  Default 0.5
+@item
+@code{fret-label-vertical-offset} -- The vertical offset of the fret label
+from the fret.  Default -0.2
+@item
+@code{label-dir} -- Side to which the fret label is attached.
+@code{-1}, @code{#LEFT}, or @code{#DOWN} for left or down;
+@code{1}, @code{#RIGHT}, or @code{#UP} for right or up.
+@item
+@code{mute-string} -- Character string to be used to indicate muted string.
+@item
+@code{number-type} -- Type of numbers to use in fret label.  Choices
+include @code{roman-lower}, @code{roman-upper}, and @code{arabic}.
+@item
+@code{open-string} -- Character string to be used to indicate open string.
+@item
+@code{orientation} -- Orientation of fret-diagram.  Options include
+@code{normal} and @code{landscape}
+@item
+@code{string-count} -- The number of strings.
+@item
+@code{string-label-font-mag} -- The magnification of the font used to label fingerings
+at the string, rather than in the dot.  Default value 0.6.
+@item
+@code{top-fret-thickness} -- The thickness of the top fret line, as a multiple
+of the standard thickness.   Default value 3.
+@item
+@code{xo-font-magnification} -- Magnification used for mute and
+open string indicators.  Default value 0.5.
+@item
+@code{xo-padding} -- Padding for open and mute indicators from top fret.  Default
+value 0.25.
+@end itemize")      ;"
+
+
+    ;; ugh: double, change.
+     (full-length-padding ,number? "How much padding to use at the right side of a full-length tuplet bracket.")
+     (full-length-to-extent ,boolean? "Run to the extent of the column for a full-length tuplet bracket.")
+     
      (full-size-change ,boolean? "Don't make a change clef smaller.")
 
      (gap ,ly:dimension? "Size of a gap in a variable symbol.")
@@ -253,17 +317,13 @@ semitie?")
 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.")
 
      (ignore-collision ,boolean? "If set, don't do note collision
 resolution on this @code{NoteColumn}.")
      (implicit ,boolean? "Is this an implicit bass figure?")
-     (infinite-spacing-height ,boolean? "If true, then for the
-purposes of horizontal spacing, treat this item as though it were
-infinitely tall.  That is, no object from another column is allowed to
-stick above or below this item.")
      (inspect-index ,integer? "If debugging is set, set beam and slur
 configuration to this index, and print the respective scores.")
      (inspect-quants ,number-pair? "If debugging is set,
@@ -274,7 +334,7 @@ scores.")
 set to true is fixed relative to the staff above it when systems are
 stretched.")
      (keep-inside-line ,boolean? "If set, this column cannot have
-things sticking into the margin.")
+objects sticking into the margin.")
      (kern ,ly:dimension? "Amount of extra white space to add.  For
 bar lines, this is the amount of space after a thick line.")
      (knee ,boolean? "Is this beam kneed?")
@@ -283,8 +343,6 @@ correction amount for kneed beams.  Set between @code{0} for no
 correction and @code{1} for full correction.")
 
      (labels ,list? "List of labels (symbols) placed on a column")
-     (label-dir ,ly:dir? "Side to which a label is attached.
-@code{-1} for left, @code{1}@tie{}for right.")
      (layer ,number? "The output layer (a value between 0 and@tie{}2:
 Layers define the order of printing objects.  Objects in lower layers
 are overprinted by objects in higher layers.")
@@ -302,7 +360,7 @@ unbeamed stems.")
 determining ledger lines and stem lengths.")
      (line-break-penalty ,number? "Penalty for a line break at this
 column.  This affects the choices of the line breaker; it avoids a
-line break at a column with a positive penalty and prefer a line break
+line break at a column with a positive penalty and prefers a line break
 at a column with a negative penalty.")
      (line-break-permission ,symbol? "Instructs the line breaker on
 whether to put a line break at this column.  Can be @code{force} or
@@ -313,8 +371,8 @@ if this column is the start of a system.")
      (line-positions ,list? "Vertical positions of staff lines.")
      (line-thickness ,number? "The thickness of the tie or slur
 contour.")
-     (long-text ,markup? "Text markup.  See @usermanref{Text
-markup}.")
+     (long-text ,markup? "Text markup.  See @ruser{Formatting
+text}.")
 
      (max-beam-connect ,integer? "Maximum number of beams to connect
 to beams from this stem.  Further beams are typeset as beamlets.")
@@ -330,18 +388,19 @@ collisions, even if they have a different number of dots.  This is
 normal notation for some types of polyphonic music.
 
 @code{merge-differently-dotted} only applies to opposing stem
-directions (i.e. voice 1 &@tie{}2).")
+directions (i.e., voice 1 &@tie{}2).")
      (merge-differently-headed ,boolean? "Merge note heads in
 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).")
+directions (i.e., voice 1 &@tie{}2).")
      (minimum-X-extent ,number-pair? "Minimum size of an object in
 X@tie{}dimension, measured in @code{staff-space} units.")
-     (minimum-Y-extent ,number-pair? "See @code{minimum-X-extent}.")
+     (minimum-Y-extent ,number-pair? "Minimum size of an object in
+Y@tie{}dimension, measured in @code{staff-space} units.")
      (minimum-distance ,ly:dimension? "Minimum distance between rest
 and notes or beam.")
      (minimum-length ,ly:dimension? "Try to make a spanner at least
@@ -360,6 +419,9 @@ center of the staff.")
 to flip the direction of custos stem.")
      (next ,ly:grob? "Object that is next relation (e.g., the lyric
 syllable following an extender.")
+     (no-alignment ,boolean? "If set, don't place this grob in a
+@code{VerticalAlignment}; rather, place it using its own @code{Y-offset}
+callback.")
      (no-ledgers ,boolean? "If set, don't draw ledger lines on this
 object.")
      (no-stem-extend ,boolean? "If set, notes with ledger lines do not
@@ -369,13 +431,11 @@ get stems extending to the middle staff line.")
 @code{NonMusicalPaperColumn}.")
      (note-names ,vector? "Vector of strings containing names for
 easy-notation note heads.")
-     (number-type ,symbol? "Type of numbers to use in label.  Choices
-include @code{roman-lower}, @code{roman-upper}, and @code{arabic}.")
 
      (outside-staff-horizontal-padding ,number? "By default, an
 outside-staff-object can be placed so that is it very close to another
 grob horizontally.  If this property is set, the outside-staff-object
-is raised so that it is not so close to its neighbour.")
+is raised so that it is not so close to its neighbor.")
      (outside-staff-padding ,number? "The padding to place between
 this grob and the staff when spacing according to
 @code{outside-staff-priority}.")
@@ -390,24 +450,27 @@ tightly as possible.")
 objects that are next to each other.")
      (page-break-penalty ,number? "Penalty for page break at this
 column.  This affects the choices of the page breaker; it avoids a
-page break at a column with a positive penalty and prefer a page break
+page break at a column with a positive penalty and prefers a page break
 at a column with a negative penalty.")
      (page-break-permission ,symbol? "Instructs the page breaker on
 whether to put a page break at this column.  Can be @code{force} or
 @code{allow}.")
      (page-turn-penalty ,number? "Penalty for a page turn at this
 column.  This affects the choices of the page breaker; it avoids a
-page turn at a column with a positive penalty and prefer a page turn
+page turn at a column with a positive penalty and prefers a page turn
 at a column with a negative penalty.")
      (page-turn-permission ,symbol? "Instructs the page breaker on
 whether to put a page turn at this column.  Can be @code{force} or
 @code{allow}.")
      (parenthesized ,boolean? "Parenthesize this grob.")
-     (positions ,pair? "Pair of staff coordinates @code{(@var{left}
-. @var{right})}, where both @var{left} and @var{right} are in
-@code{staff-space} units of the current staff.  LilyPond uses these
-values to select which slur candidate positions to use; if extreme
-positions are requested, LilyPond selects the closest positions.")
+     (positions ,number-pair? "Pair of staff coordinates
+@code{(@var{left} . @var{right})}, where both @var{left} and
+@var{right} are in @code{staff-space} units of the current staff.
+For slurs, this value selects which slur candidate to use; if
+extreme positions are requested, the closest one is taken.")
+     (prefer-dotted-right ,boolean? "For note collisions, prefer to
+shift dotted up-note to the right, rather than shifting just the
+dot.")
 
      (ratio ,number? "Parameter for slur shape.  The higher this
 number, the quicker the slur attains its @code{height-limit}.")
@@ -429,14 +492,14 @@ by 45 degrees around the center of this object.")
 
      (same-direction-correction ,number? "Optical correction amount
 for stems that are placed in tight configurations.  This amount is
-used for stems with the same direction to compensate for note-head to
+used for stems with the same direction to compensate for note head to
 stem distance.")
      (script-priority ,number? "A sorting key that determines in what
 order a script is within a stack of scripts.")
      (self-alignment-X ,number? "Specify alignment of an object.  The
 value @code{-1} means left aligned, @code{0}@tie{}centered, and
-@code{1}@tie{}right-aligned in X@tie{}direction.  Values in-between
-may also be specified.")
+@code{1}@tie{}right-aligned in X@tie{}direction.  Other numerical
+values may also be specified.")
      (self-alignment-Y ,number? "Like @code{self-alignment-X} but for
 the Y@tie{}axis.")
      (shorten-pair ,number-pair? "The lengths to shorten a
@@ -445,14 +508,14 @@ values shorten the text-spanner, while negative values lengthen it.")
      (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 note playing here.")
      (shortest-starter-duration ,ly:moment? "The duration of the
 shortest note that starts here.")
      (side-axis ,number? "If the value is @code{#X} (or
-equivalently@tie{}@code{1}), the object is placed horizontally next
-to the other object.  If the value is @code{#Y} or@tie{}@code{0}, it
+equivalently@tie{}@code{0}), the object is placed horizontally next
+to the other object.  If the value is @code{#Y} or@tie{}@code{1}, it
 is placed vertically.")
      (side-relative-direction ,ly:dir? "Multiply direction of
 @code{direction-source} with this to get the direction of this
@@ -465,21 +528,26 @@ prefatory items, like clef and time-signature.  The format is an alist
 of spacing tuples: @code{(@var{break-align-symbol} @var{type}
 . @var{distance})}, where @var{type} can be the symbols
 @code{minimum-space} or @code{extra-space}.")
+     (space-to-barline ,boolean? "If set, the distance between a note
+and the following non-musical column will be measured to the bar line
+instead of to the beginning of the non-musical column.  If there is a
+clef change followed by a bar line, for example, this means that we will
+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}.")
+duration.  Typically, the width of a note head.  See also
+@rinternals{spacing-spanner-interface}.")
      (springs-and-rods ,boolean? "Dummy variable for triggering
 spacing routines.")
      (stacking-dir ,ly:dir? "Stack objects in which direction?")
      (staff-padding ,ly:dimension? "Maintain this much space between
 reference points and the staff.  Its effect is to align objects of
-differing sizes (like the dynamic @b{p} and @b{f}) on their
+differing sizes (like the dynamics @b{p} and @b{f}) on their
 baselines.")
      (staff-position ,number? "Vertical position, measured in half
 staff spaces, counted from the middle line.")
      (staff-space ,ly:dimension? "Amount of space between staff lines,
 expressed in global @code{staff-space}.")
-     (stem-attachment ,number-pair? "A @code{(@var{x} . @var{y})} pair
+     (stem-attachment ,number-pair? "An @code{(@var{x} . @var{y})} pair
 where the stem attaches to the notehead.")
      (stem-end-position ,number? "Where does the stem end (the end is
 opposite to the support-head)?")
@@ -493,13 +561,11 @@ be?")
      (stencil ,ly:stencil? "The symbol to print.")
      (stencils ,list? "Multiple stencils, used as intermediate
 value.")
-     (strict-grace-spacing ,boolean? "If set, grace notes 
+     (strict-grace-spacing ,boolean? "If set, grace notes
 are not spaced separately, but put before musical columns.")
      (strict-note-spacing ,boolean? "If set, unbroken columns
-with non-musical material (clefs, barlines, etc.) are not spaced
+with non-musical material (clefs, bar lines, etc.) are not spaced
 separately, but put before musical columns.")
-     (string-count ,integer? "The number of strings in a fret
-diagram.")
      (string-fret-finger-combinations ,list? "List consisting of
 @code{(@var{string-number} @var{fret-number} @var{finger-number})}
 entries.")
@@ -509,7 +575,7 @@ through flag on.")
 typeset.  Valid choices depend on the @code{stencil} callback reading
 this property.")
 
-     (text ,markup? "Text markup.  See @usermanref{Text markup}.")
+     (text ,markup? "Text markup.  See @ruser{Formatting text}.")
 ;;FIXME -- Should both be the same?
      (text-direction ,ly:dir? "This controls the ordering of the
 words.  The default @code{RIGHT} is for roman text.  Arabic or Hebrew
@@ -521,6 +587,8 @@ should use @code{LEFT}.")
      (thin-kern ,number? "The space after a hair-line in a bar line.")
      (threshold ,number-pair? "@code{(@var{min} . @var{max})}, where
 @var{min} and @var{max} are dimensions in staff space.")
+     (to-barline ,boolean? "If true, the spanner will stop at the bar line
+just before it would otherwise stop.")
      (tie-configuration ,list? "List of @code{(@var{position} .
 @var{dir})} pairs, indicating the desired tie configuration, where
 @var{position} is the offset from the center of the staff in staff
@@ -534,7 +602,7 @@ automatically.")
 proportionally to their durations.  This looks better in complex
 polyphonic patterns.")
      (used ,boolean? "If set, this spacing column is kept in the
-spacing problem")
+spacing problem.")
 
      (vertical-skylines ,ly:skyline-pair? "Two skylines, one above and
 one below this grob.")
@@ -570,186 +638,237 @@ be constructed from a whole number of squiggles.")
   (map
    (lambda (x)
      (apply define-internal-grob-property x))
-   
+
    `(
      ;;;;;;;;;;;;;;;;
      ;; grobs & grob arrays. (alphabetical)
-     (X-common ,ly:grob? "Common refpoint for axis group.")
+     (X-common ,ly:grob? "Common reference point for axis group.")
+
      (Y-common ,ly:grob? "See @code{X-common}.")
-     (adjacent-pure-heights ,vector? "Used by a VerticalAxisGroup to cache the Y-extents of different column ranges.")
-     (axis-group-parent-X ,ly:grob? "Containing X axis group")
-     (axis-group-parent-Y ,ly:grob? "Containing Y axis group")
-     (accidental-grobs ,list? "Alist with (NOTENAME . GROBLIST) entries")
-     (adjacent-hairpins ,ly:grob-array? "List of directly neighboring hairpins")
-     (all-elements ,ly:grob-array? "list of all grobs in this line. Its
+
+     (accidental-grob ,ly:grob? "The accidental for this note.")
+     (accidental-grobs ,list? "An alist with @code{(@var{notename} .
+@var{groblist})} entries.")
+     (adjacent-pure-heights ,vector? "Used by a @code{VerticalAxisGroup} to
+cache the @code{Y-extent}s of different column ranges.")
+     (adjacent-hairpins ,ly:grob-array? "A list of directly neighboring
+hairpins.")
+     (all-elements ,ly:grob-array? "A list of all grobs in this line.  Its
 function is to protect objects from being garbage collected.")
-     (arpeggio ,ly:grob? "pointer to arpeggio object.")
-     (beam ,ly:grob? "pointer to the beam, if applicable.")
-     (bracket ,ly:grob? "the bracket for a  number.")
-     (cross-staff ,boolean? "for a beam or a stem, true if we depend on inter-staff spacing")
-     (direction-source ,ly:grob? "in case side-relative-direction is
-set, which grob to get the direction from .")
-     (dot ,ly:grob? "reference to Dots object.")
-     (dots ,ly:grob-array? "multiple Dots objects.")
-     (figures ,ly:grob-array? "Figured bass objects for continuation line.")
-     (important-column-ranks ,vector? "Cache of columns that contain items-worth-living.")
-     (items-worth-living ,ly:grob-array? "A list of interesting items. If
-empty in a particular staff, then that staff is erased.")
+     (arpeggio ,ly:grob? "A pointer to an @code{Arpeggio} object.")
+     (axis-group-parent-X ,ly:grob? "Containing X@tie{}axis group.")
+     (axis-group-parent-Y ,ly:grob? "Containing Y@tie{}axis group.")
+
+     (bar-extent ,number-pair? "The Y-extent of the actual bar line.
+This may differ from @code{Y-extent} because it does not include the dots in
+a repeat bar line.")
+     (bars ,ly:grob-array? "A list of bar line pointers.")
+     (beam ,ly:grob? "A pointer to the beam, if applicable.")
+     (bounded-by-me ,ly:grob-array? "A list of spanners that have this
+column as start/begin point.  Only columns that have grobs or act as
+bounds are spaced.")
+     (bracket ,ly:grob? "The bracket for a number.")
 
-     (glyph-name ,string? "a name of character within font.")
-     (left-neighbors ,ly:grob-array? " List of
-spacing-wish grobs that are close to the current column.
+     (columns ,ly:grob-array? "A list of grobs, typically containing
+@code{PaperColumn} or @code{NoteColumn} objects.")
+     (conditional-elements ,ly:grob-array? "Internal use only.")
+     (cross-staff ,boolean? "For a beam or a stem, this is true if we
+depend on inter-staff spacing.")
 
-The closest spacing-wishes determine the actual distances between the
-columns.
-")
-     (left-items ,ly:grob-array? "")
-     (pedal-text ,ly:grob? "Pointer to the text of a mixed-style piano pedal.")
-     
-     (pure-Y-common ,ly:grob? "Caches the common_refpoint_of_array of the elements grob-set")
-     (pure-relevant-items ,ly:grob-array? "A subset of elements that are relevant for finding the pure-Y-extent.")
-     (pure-relevant-spanners ,ly:grob-array? "A subset of elements that are relevant for finding the pure-Y-extent.")
-     (stem ,ly:grob? "pointer to Stem object.")
-     (tremolo-flag ,ly:grob? "The tremolo object on a stem.")
-     (tie ,ly:grob? "")
-     (staff-symbol ,ly:grob? "the staff symbol grob that we're in.")
-     (rest ,ly:grob? "the staff symbol grob that we're in.")
-     (rests ,ly:grob-array? "A list of rest objects.")
-     (rest-collision ,ly:grob? "rest collision that a rest is in.")
-     (accidental-grob ,ly:grob? "Accidental for this note.")
-     (bars ,ly:grob-array? "list of bar line pointers.")
-     (bounded-by-me ,ly:grob-array? "list of spanners that have this
-column as start/begin point. Only columns that have grobs or act as
-bounds are spaced.")
-     
-     (columns ,ly:grob-array? "list of grobs, typically containing
-paper-columns or note-column objects.")
-     (conditional-elements ,ly:grob-array? "Internal use only")
+     (direction-source ,ly:grob? "In case @code{side-relative-direction} is
+set, which grob to get the direction from.")
+     (dot ,ly:grob? "A reference to a @code{Dots} object.")
+     (dots ,ly:grob-array? "Multiple @code{Dots} objects.")
+
+     (elements ,ly:grob-array? "A list of grobs; the type is depending on
+the grob where this is set in.")
      (encompass-objects ,ly:grob-array? "Objects that a slur should avoid
 in addition to notes and stems.")
-     (elements ,ly:grob-array? "list of grobs, type depending on the Grob
-where this is set in.")
-     (grace-spacing ,ly:grob? "a run of grace notes.")
-     (heads ,ly:grob-array? "List of note heads.")
-
-     (note-columns ,pair? "list of NoteColumn grobs.")
-
-     (normal-stems ,ly:grob-array? "Array of visible stems.") 
-     (note-heads ,ly:grob-array? "List of note head grobs")
-     (note-head ,ly:grob? "A single note head")
-     (right-items ,ly:grob-array? "")
-     (right-neighbors ,ly:grob-array? "see left-neighbors")
+
+     (figures ,ly:grob-array? "Figured bass objects for continuation line.")
+
+     (glyph-name ,string? "The glyph name within the font.")
+     (grace-spacing ,ly:grob? "A run of grace notes.")
+
+     (heads ,ly:grob-array? "A list of note heads.")
+
+     (important-column-ranks ,vector? "A cache of columns that contain
+@code{items-worth-living} data.")
+     (items-worth-living ,ly:grob-array? "A list of interesting items.  If
+empty in a particular staff, then that staff is erased.")
+
+     (left-items ,ly:grob-array? "DOCME")
+     (left-neighbors ,ly:grob-array? "A list of @code{spacing-wishes} grobs
+that are close to the current column.
+
+The closest @code{spacing-wishes} determine the actual distances between the
+columns.")
+
+     (normal-stems ,ly:grob-array? "An array of visible stems.")
+     (note-columns ,pair? "A list of @code{NoteColumn} grobs.")
+     (note-head ,ly:grob? "A single note head.")
+     (note-heads ,ly:grob-array? "A list of note head grobs.")
+
+     (padding-pairs ,list? "An alist mapping @code{(@var{name} . @var{name})}
+to distances.")
+     (pedal-text ,ly:grob? "A pointer to the text of a mixed-style piano
+pedal.")
+     (pure-Y-common ,ly:grob? "A cache of the
+@code{common_refpoint_of_array} of the @code{elements} grob set.")
+     (pure-Y-offset-in-progress ,boolean? "A debugging aid for catching
+cyclic dependencies.")
+     (pure-relevant-items ,ly:grob-array? "A subset of elements that are
+relevant for finding the @code{pure-Y-extent}.")
+     (pure-relevant-spanners ,ly:grob-array? "A subset of elements that are
+relevant for finding the @code{pure-Y-extent}.")
+
+     (rest ,ly:grob? "A pointer to a @code{Rest} object.")
+     (rest-collision ,ly:grob? "A rest collision that a rest is in.")
+     (rests ,ly:grob-array? "A list of rest objects.")
+     (right-items ,ly:grob-array? "DOCME")
+     (right-neighbors ,ly:grob-array? "See @code{left-neighbors}.")
+
      (separation-item ,ly:grob? "A separation item.")
-     (slur ,ly:grob? "A pointer to a slur object")
-     (spacing ,ly:grob? "the spacing spanner governing this section.")
-     (spaceable-staves ,ly:grob-array? "Objects to be spaced during page layout.")
-     (side-support-elements ,ly:grob-array? "the support, a list of grobs.")
-     (spacing-wishes ,ly:grob-array? "List of note spacing or staff spacing objects.")
-     (stems ,ly:grob-array? "list of stem objects, corresponding to the notes that the arpeggio has to be before.")
-     (tuplets ,ly:grob-array? "list of smaller tuplet brackets")
-     (tuplet-number ,ly:grob? "the number for a bracket.")
+     (side-support-elements ,ly:grob-array? "The side support, a list of
+grobs.")
+     (slur ,ly:grob? "A pointer to a @code{Slur} object.")
+     (spaceable-staves ,ly:grob-array? "Objects to be spaced during page
+layout.")
+     (spacing ,ly:grob? "The spacing spanner governing this section.")
+     (spacing-wishes ,ly:grob-array? "List of note spacing or staff spacing
+objects.")
+     (staff-symbol ,ly:grob? "The staff symbol grob that we are in.")
+     (stem ,ly:grob? "A pointer to a @code{Stem} object.")
+     (stems ,ly:grob-array? "A list of stem objects, corresponding to the
+notes that the arpeggio has to be before.")
+
+     (tie ,ly:grob? "A pointer to a @code{Tie} object.")
+     (tremolo-flag ,ly:grob? "The tremolo object on a stem.")
+     (tuplet-number ,ly:grob? "The number for a bracket.")
+     (tuplets ,ly:grob-array? "A list of smaller tuplet brackets.")
 
-     
-     
      ;;;;;;;;;;;;;;;;
      ;; other
-     (begin-of-line-visible ,boolean? "Used for marking ChordNames that should only show changes.")
-     (cause ,scheme? "Any kind of causation objects (i.e. music, or perhaps translator) that was the cause for this grob.  ")
-     (circled-tip ,boolean? "Put a circle at start/end of hairpins (al/del niente)")
-     (delta-position ,number? "vertical position difference")
-     (details ,list? "alist of parameters for detailed grob behavior.
-
-more information on the allowed parameters can be found by inspecting
-lily/slur-scoring.cc, lily/beam-quanting.cc, and
-lily/tie-formatting-problem.cc.  Setting @code{debug-tie-scoring},
+     (begin-of-line-visible ,boolean? "Used for marking @code{ChordNames}
+that should only show changes.")
+
+     (cause ,scheme? "Any kind of causation objects (i.e., music, or perhaps
+translator) that was the cause for this grob.")
+     (circled-tip ,boolean? "Put a circle at start/end of hairpins (al/del
+niente).")
+
+     (delta-position ,number? "The vertical position difference.")
+     (details ,list? "Alist of parameters for detailed grob behavior.
+
+More information on the allowed parameters can be found by inspecting
+@file{lily/slur-scoring.cc}, @file{lily/beam-quanting.cc}, and
+@file{lily/tie-formatting-problem.cc}.  Setting @code{debug-tie-scoring},
 @code{debug-beam-scoring} or @code{debug-slur-scoring} also provides
-useful clues.
+useful clues.")
 
-")
+     (font ,ly:font-metric? "A cached font metric object.")
 
-     (font ,ly:font-metric? "Cached font metric object")
-     (head-width ,ly:dimension? "width of this ligature head")
+     (head-width ,ly:dimension? "The width of this ligature head.")
      
-     (ideal-distances ,list? "(@var{obj} . (@var{dist} . @var{strength})) pairs.")
-     (interfaces ,list? "list of symbols indicating the interfaces supported by this object. Is initialized from the @code{meta} field.")
-     (least-squares-dy ,number? 
-                      "ideal beam slope, without damping.")
+     (ideal-distances ,list? "@code{(@var{obj} . (@var{dist} .
+@var{strength}))} pairs.")
+     (interfaces ,list? "A list of symbols indicating the interfaces
+supported by this object.  It is initialized from the @code{meta} field.")
+
+     (least-squares-dy ,number? "The ideal beam slope, without damping.")
 
-     (meta ,list? "Contains meta information. It is an alist with the
+     (meta ,list? "Provide meta information.  It is an alist with the
 entries @code{name} and @code{interfaces}.")
-     (minimum-distances ,list? "list of rods, that have the format (@var{obj} . @var{dist}).")
+     (minimum-distances ,list? "A list of rods that have the format
+@code{(@var{obj} . @var{dist})}.")
      
-     (positioning-done ,boolean?
-                      "Used to signal that a positioning element
-did its job. This ensures that a positioning is only done once.")
-     (pure-Y-extent ,number-pair? "The estimated height of a system")
-
-     (quantized-positions ,number-pair? "Beam positions after quanting.")
-     (quantize-position ,boolean? "If set, a vertical alignment is aligned to be within staff spaces.")
-     (quant-score ,string? "Beam quanting score -- can be stored for
-debugging")
+     (positioning-done ,boolean? "Used to signal that a positioning element
+did its job.  This ensures that a positioning is only done once.")
+     (pure-Y-extent ,number-pair? "The estimated height of a system.")
+
+     (quant-score ,string? "The beam quanting score; stored for
+debugging.")
+     (quantize-position ,boolean? "If set, a vertical alignment is aligned
+to be within staff spaces.")
+     (quantized-positions ,number-pair? "The beam positions after
+quanting.")
      
-     (script-stencil ,pair? "Pair (@code{type} . @code{arg}), which
-acts as an index for looking up a Stencil object.")
-
-     (stem-info ,pair? "caching of stem parameters")
-     (shorten ,ly:dimension? "The amount of space that a
-stem. Internally used to distribute beam shortening over stems. ")
-     (skyline-distance ,number? "The distance between this staff and the next one, as determined by a skyline algorithm.")
-     (skyline-horizontal-padding ,number? "For determining the vertical distance between 2 staves, it is possible to have a configuration which would result in a tight interleaving of grobs from the top staff and the bottom staff. The larger this parameter is, the farther apart the staves are placed in such a configuration.")
+     (script-stencil ,pair? "A pair @code{(@var{type} . @var{arg})} which
+acts as an index for looking up a @code{Stencil} object.")
+     (shorten ,ly:dimension? "The amount of space that a stem is shortened.
+Internally used to distribute beam shortening over stems.")
+     (skyline-distance ,number? "The distance between this staff and the
+next one, as determined by a skyline algorithm.")
+     (skyline-horizontal-padding ,number? "For determining the vertical
+distance between two staves, it is possible to have a configuration which
+would result in a tight interleaving of grobs from the top staff and the
+bottom staff.  The larger this parameter is, the farther apart the staves
+are placed in such a configuration.")
+     (stem-info ,pair? "A cache of stem parameters.")
+
      (use-breve-rest ,boolean? "Use breve rests for measures longer
 than a whole rest.")
-     
 
-     
+     ;;;;;;;;;;;;;;;;
      ;; ancient notation
-     (join-right-amount ,number? "")
-     (primitive ,integer? "Pointer to a ligature primitive, i.e. an item similar to a note head that is part of a ligature. ")
 
-     
      ;;;;;;; TODO:
-     ;; there are too many properties for ancient notation
+     ;; There are too many properties for ancient notation;
      ;; probably neume-types (a list of symbols) would also work.
 
-     ;; However, such this list would consist of a couple of dozens of
+     ;; However, such a list would consist of a couple of dozens of
      ;; entries, since head prefixes may be combined in many ways.  If
-     ;; the macros in gregorian-init.ly would directly set prefix-set,
+     ;; the macros in `gregorian-init.ly' would directly set prefix-set,
      ;; all the head prefixes could be junked; however, such macros
      ;; would be quite numerous, I guess.  --jr
 
-     (auctum ,boolean? "is this neume liquescentically augmented?")
-     (ascendens ,boolean? "is this neume of an ascending type?")
-     (add-cauda ,boolean? "does this flexa require an additional cauda on the left side?")
-     (add-join ,boolean? "is this ligature head joined with the next one by a vertical line?")
-     (cavum ,boolean? "is this neume outlined?")
-     (descendens ,boolean? "is this neume of a descendent type?")
-     (deminutum ,boolean? "is this neume deminished?")
-     (flexa-height ,ly:dimension? "height of a flexa shape in a ligature grob in staff_space.")
-     (flexa-width ,ly:dimension? "width of a flexa shape in a ligature grob in staff_space.")
-     (join-heads ,boolean? "Whether to join the note heads of an ambitus grob with a vertical line.")
-     (linea ,boolean? "attach vertical lines to this neume?")
-     (add-stem ,boolean? "is this ligature head a virga and therefore needs an additional stem on the right side?")
-     (context-info ,integer? "Within a ligature, the final glyph or shape of a head may be affected by the left and/or right neighbour head.  context-info holds for each head such information about the left and right neighbour, encoded as a bit mask.")
-     (inclinatum ,boolean? "is this neume an inclinatum?")
-     (oriscus ,boolean? "is this neume an oriscus?")
-     (quilisma ,boolean? "is this neume a quilisma?")
-     (pes-or-flexa ,boolean? "shall this neume be joined with the previous head?")
-     (prefix-set ,number? "a bit mask that holds all Gregorian head prefixes, such as @code{\\virga} or @code{\\quilisma}")
+     (add-cauda ,boolean? "Does this flexa require an additional cauda on
+the left side?")
+     (add-join ,boolean? "Is this ligature head-joined with the next one
+by a vertical line?")
+     (add-stem ,boolean? "Is this ligature head a virga and therefore needs
+an additional stem on the right side?")
+     (ascendens ,boolean? "Is this neume of ascending type?")
+     (auctum ,boolean? "Is this neume liquescentically augmented?")
+
+     (cavum ,boolean? "Is this neume outlined?")
+     (context-info ,integer? "Within a ligature, the final glyph or shape of
+a head may be affected by the left and/or right neighbour head.
+@code{context-info} holds for each head such information about the left and
+right neighbour, encoded as a bit mask.")
+
+     (descendens ,boolean? "Is this neume of descendent type?")
+     (deminutum ,boolean? "Is this neume deminished?")
+
+     (flexa-height ,ly:dimension? "The height of a flexa shape in a ligature
+grob (in @code{staff-space} units).")
+     (flexa-width ,ly:dimension? "The width of a flexa shape in a
+ligature grob in (in @code{staff-space} units).")
+
+     (inclinatum ,boolean? "Is this neume an inclinatum?")
+
+     (join-heads ,boolean? "Whether to join the note heads of an ambitus
+grob with a vertical line.")
+     (join-right-amount ,number? "DOCME")
+
+     (linea ,boolean? "Attach vertical lines to this neume?")
+
+     (oriscus ,boolean? "Is this neume an oriscus?")
+
+     (pes-or-flexa ,boolean? "Shall this neume be joined with the previous
+head?")
+     (prefix-set ,number? "A bit mask that holds all Gregorian head
+prefixes, such as @code{\\virga} or @code{\\quilisma}.")
+     (primitive ,integer? "A pointer to a ligature primitive, i.e., an item
+similar to a note head that is part of a ligature.")
+
+     (quilisma ,boolean? "Is this neume a quilisma?")
+
      (stropha ,boolean? "Is this neume a stropha?")
-     (virga ,boolean? "Is this neume a virga?")
-     (x-offset ,ly:dimension? "Extra horizontal offset for ligature heads.")
 
-     ;; end ancient notation
+     (virga ,boolean? "Is this neume a virga?")
 
-     ;; fret-diagrams extra properties
-     (xo-font-magnification ,number? "Magnification used for mute and
-         open string indicators in fret diagrams")
-     (mute-string ,string? "String to be used to indicate muted string in
-         fret diagrams")
-     (open-string ,string? "String to be used to indicate open string in
-         fret diagrams")
-     (orientation ,symbol? "Orientation of fret-diagram.  Options include @code{normal} and @code{landscape}")
+     (x-offset ,ly:dimension? "Extra horizontal offset for ligature heads.")
 
      )))