]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'translation' into staging
authorDavid Kastrup <dak@gnu.org>
Sun, 13 Oct 2013 14:14:03 +0000 (16:14 +0200)
committerDavid Kastrup <dak@gnu.org>
Sun, 13 Oct 2013 14:14:03 +0000 (16:14 +0200)
Conflicts:
Documentation/it/usage/updating.itely

413 files changed:
Documentation/GNUmakefile
Documentation/changes.tely
Documentation/contributor/doc-work.itexi
Documentation/cs/learning/common-notation.itely
Documentation/cs/learning/fundamental.itely
Documentation/cs/usage/external.itely
Documentation/cs/usage/running.itely
Documentation/cs/usage/updating.itely
Documentation/de/extending/scheme-tutorial.itely
Documentation/de/learning/common-notation.itely
Documentation/de/learning/fundamental.itely
Documentation/de/notation.tely
Documentation/de/notation/ancient.itely
Documentation/de/notation/fretted-strings.itely
Documentation/de/notation/notation-appendices.itely
Documentation/de/notation/rhythms.itely
Documentation/de/notation/simultaneous.itely
Documentation/de/notation/spacing.itely
Documentation/de/notation/staff.itely
Documentation/de/notation/vocal.itely
Documentation/de/usage/external.itely
Documentation/de/usage/running.itely
Documentation/de/usage/updating.itely
Documentation/es/learning/common-notation.itely
Documentation/es/learning/fundamental.itely
Documentation/es/notation/fretted-strings.itely
Documentation/es/notation/rhythms.itely
Documentation/es/notation/simultaneous.itely
Documentation/es/notation/spacing.itely
Documentation/es/notation/vocal.itely
Documentation/es/usage/external.itely
Documentation/es/usage/running.itely
Documentation/es/usage/updating.itely
Documentation/essay/computer-notation.bib
Documentation/essay/engravingbib.bib
Documentation/extending/programming-interface.itely
Documentation/fr/learning/common-notation.itely
Documentation/fr/learning/fundamental.itely
Documentation/fr/notation/ancient.itely
Documentation/fr/notation/fretted-strings.itely
Documentation/fr/notation/rhythms.itely
Documentation/fr/notation/simultaneous.itely
Documentation/fr/notation/spacing.itely
Documentation/fr/notation/vocal.itely
Documentation/fr/usage/external.itely
Documentation/fr/usage/running.itely
Documentation/fr/usage/updating.itely
Documentation/hu/learning/common-notation.itely
Documentation/hu/learning/fundamental.itely
Documentation/hu/usage/running.itely
Documentation/hu/usage/updating.itely
Documentation/included/authors.itexi
Documentation/it/learning/common-notation.itely
Documentation/it/learning/fundamental.itely
Documentation/it/notation/rhythms.itely
Documentation/it/notation/simultaneous.itely
Documentation/it/notation/staff.itely
Documentation/it/usage/external.itely
Documentation/it/usage/running.itely
Documentation/it/usage/updating.itely
Documentation/ja/learning/common-notation.itely
Documentation/ja/learning/fundamental.itely
Documentation/ja/notation/fretted-strings.itely
Documentation/ja/notation/rhythms.itely
Documentation/ja/notation/simultaneous.itely
Documentation/ja/notation/spacing.itely
Documentation/ja/notation/staff.itely
Documentation/ja/notation/vocal.itely
Documentation/ja/usage/external.itely
Documentation/ja/usage/running.itely
Documentation/ja/usage/updating.itely
Documentation/learning/common-notation.itely
Documentation/learning/fundamental.itely
Documentation/learning/tutorial.itely
Documentation/learning/tweaks.itely
Documentation/lilypond-texi2html.init
Documentation/ly-examples/GNUmakefile
Documentation/misc/CHANGES-1.3
Documentation/misc/ChangeLog-2.1
Documentation/misc/GNUmakefile
Documentation/music-glossary.tely
Documentation/nl/learning/common-notation.itely
Documentation/nl/learning/fundamental.itely
Documentation/nl/learning/tweaks.itely
Documentation/notation/ancient.itely
Documentation/notation/changing-defaults.itely
Documentation/notation/editorial.itely
Documentation/notation/fretted-strings.itely
Documentation/notation/input.itely
Documentation/notation/keyboards.itely
Documentation/notation/rhythms.itely
Documentation/notation/simultaneous.itely
Documentation/notation/spacing.itely
Documentation/notation/staff.itely
Documentation/notation/vocal.itely
Documentation/snippets/accordion-discant-symbols.ly
Documentation/snippets/adding-ambitus-per-voice.ly
Documentation/snippets/adding-an-extra-staff-at-a-line-break.ly
Documentation/snippets/adding-an-extra-staff.ly
Documentation/snippets/adding-an-ottava-marking-to-a-single-voice.ly
Documentation/snippets/adding-bar-lines-to-chordnames-context.ly
Documentation/snippets/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.ly
Documentation/snippets/adding-drum-parts.ly
Documentation/snippets/adding-extra-fingering-with-scheme.ly
Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly
Documentation/snippets/adding-links-to-objects.ly
Documentation/snippets/adding-parentheses-around-an-expressive-mark-or-chordal-note.ly
Documentation/snippets/adjusting-grace-note-spacing.ly
Documentation/snippets/adjusting-lyrics-vertical-spacing.ly
Documentation/snippets/adjusting-the-shape-of-falls-and-doits.ly
Documentation/snippets/aligning-and-centering-instrument-names.ly
Documentation/snippets/aligning-bar-numbers.ly
Documentation/snippets/aligning-objects-created-with-the--mark-command.ly
Documentation/snippets/allowing-fingerings-to-be-printed-inside-the-staff.ly
Documentation/snippets/altering-the-length-of-beamed-stems.ly
Documentation/snippets/alternative-breve-notes.ly
Documentation/snippets/analysis-brackets-above-the-staff.ly
Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly
Documentation/snippets/ancient-time-signatures.ly
Documentation/snippets/anglican-psalm-template.ly
Documentation/snippets/arabic-improvisation.ly
Documentation/snippets/asymmetric-slurs.ly
Documentation/snippets/automatic-beam-subdivisions.ly
Documentation/snippets/automatically-changing-the-stem-direction-of-the-middle-note-based-on-the-melody.ly [new file with mode: 0644]
Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly
Documentation/snippets/beam-endings-in-score-context.ly
Documentation/snippets/beams-across-line-breaks.ly
Documentation/snippets/blanking-staff-lines-using-the--whiteout-command.ly
Documentation/snippets/breathing-signs.ly
Documentation/snippets/broken-crescendo-hairpin.ly
Documentation/snippets/caesura-railtracks-with-fermata.ly
Documentation/snippets/center-text-below-hairpin-dynamics.ly
Documentation/snippets/changing-a-single-notes-size-in-a-chord.ly
Documentation/snippets/changing-beam-knee-gap.ly
Documentation/snippets/changing-form-of-multi-measure-rests.ly
Documentation/snippets/changing-fret-orientations.ly
Documentation/snippets/changing-midi-output-to-one-channel-per-voice.ly
Documentation/snippets/changing-stanza-fonts.ly
Documentation/snippets/changing-text-and-spanner-styles-for-text-dynamics.ly
Documentation/snippets/changing-the-ambitus-gap.ly
Documentation/snippets/changing-the-breath-mark-symbol.ly
Documentation/snippets/changing-the-number-of-augmentation-dots-per-note.ly
Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly
Documentation/snippets/changing-the-staff-size.ly
Documentation/snippets/coloring-notes-depending-on-their-pitch.ly
Documentation/snippets/combining-two-parts-on-the-same-staff.ly
Documentation/snippets/consistently-left-aligned-bar-numbers.ly
Documentation/snippets/contemporary-glissando.ly
Documentation/snippets/contexts-and-engravers.snippet-list
Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly
Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly
Documentation/snippets/controlling-tuplet-bracket-visibility.ly
Documentation/snippets/creating-a-delayed-turn.ly
Documentation/snippets/creating-simultaneous-rehearsal-marks.ly
Documentation/snippets/creating-text-spanners.ly
Documentation/snippets/cross-staff-chords---beaming-problems-workaround.ly
Documentation/snippets/custodes.ly
Documentation/snippets/customizing-fretboard-fret-diagrams.ly
Documentation/snippets/customizing-markup-fret-diagrams.ly
Documentation/snippets/default-direction-of-stems-on-the-center-line-of-the-staff.ly
Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly
Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly
Documentation/snippets/displaying-a-whole-grandstaff-system-if-only-one-of-its-staves-is-alive.ly
Documentation/snippets/displaying-complex-chords.ly
Documentation/snippets/displaying-grob-ancestry.ly
Documentation/snippets/drawing-boxes-around-grobs.ly
Documentation/snippets/drawing-circles-around-note-heads.ly
Documentation/snippets/drawing-circles-around-various-objects.ly
Documentation/snippets/editorial-headword.ly
Documentation/snippets/engravers-one-by-one.ly
Documentation/snippets/engraving-ties-manually.ly
Documentation/snippets/engraving-tremolos-with-floating-beams.ly
Documentation/snippets/expressive-headword.ly
Documentation/snippets/figured-bass-headword.ly
Documentation/snippets/fine-tuning-pedal-brackets.ly
Documentation/snippets/fingering-symbols-for-wind-instruments.ly
Documentation/snippets/flamenco-notation.ly
Documentation/snippets/flute-slap-notation.ly
Documentation/snippets/forcing-horizontal-shift-of-notes.ly
Documentation/snippets/forcing-hyphens-to-be-shown.ly
Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly
Documentation/snippets/fret-diagrams-explained-and-developed.ly
Documentation/snippets/fretted-string-harmonics-in-tablature.ly
Documentation/snippets/generating-random-notes.ly
Documentation/snippets/generating-whole-scores-also-book-parts-in-scheme-without-using-the-parser.ly
Documentation/snippets/grid-lines--changing-their-appearance.ly
Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly
Documentation/snippets/hairpins-with-different-line-styles.ly
Documentation/snippets/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly
Documentation/snippets/hiding-the-extender-line-for-text-dynamics.ly
Documentation/snippets/how-to-change-fret-diagram-position.ly
Documentation/snippets/how-to-print-two-rehearsal-marks-above-and-below-the-same-barline-method-2.ly
Documentation/snippets/indicating-cross-staff-chords-with-arpeggio-bracket.ly
Documentation/snippets/inserting-a-caesura.ly
Documentation/snippets/keep-change-clefs-full-sized.ly
Documentation/snippets/laissez-vibrer-ties.ly
Documentation/snippets/line-arrows.ly
Documentation/snippets/lyrics-alignment.ly
Documentation/snippets/making-slurs-with-complex-dash-structure.ly
Documentation/snippets/making-some-staff-lines-thicker-than-the-others.ly
Documentation/snippets/manually-controlling-beam-positions.ly
Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly
Documentation/snippets/markup-lines.ly
Documentation/snippets/measure-counter.ly
Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly
Documentation/snippets/modifying-tuplet-bracket-length.ly
Documentation/snippets/moving-dotted-notes-in-polyphony.ly
Documentation/snippets/moving-slur-positions-vertically.ly
Documentation/snippets/new/accordion-discant-symbols.ly
Documentation/snippets/new/adding-extra-fingering-with-scheme.ly [new file with mode: 0644]
Documentation/snippets/new/broken-crescendo-hairpin.ly [new file with mode: 0644]
Documentation/snippets/new/engravers-one-by-one.ly [deleted file]
Documentation/snippets/new/expressive-headword.ly [new file with mode: 0644]
Documentation/snippets/new/pitches-headword.ly [new file with mode: 0644]
Documentation/snippets/new/positioning-multi-measure-rests.ly
Documentation/snippets/new/vertically-aligned-dynamics-and-textscripts.ly [new file with mode: 0644]
Documentation/snippets/non-default-tuplet-numbers.ly
Documentation/snippets/obtaining-2.12-lyrics-spacing-in-newer-versions.ly
Documentation/snippets/outputting-the-version-number.ly
Documentation/snippets/page-label.ly
Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly
Documentation/snippets/pitches-headword.ly
Documentation/snippets/pitches.snippet-list
Documentation/snippets/positioning-arpeggios.ly
Documentation/snippets/positioning-fingering-indications-precisely.ly
Documentation/snippets/positioning-grace-note-beams-at-the-height-of-normal-note-beams.ly
Documentation/snippets/positioning-grace-notes-with-floating-space.ly
Documentation/snippets/positioning-multi-measure-rests.ly
Documentation/snippets/positioning-segno-and-coda-with-line-break.ly
Documentation/snippets/positioning-text-markups-inside-slurs.ly
Documentation/snippets/preventing-final-mark-from-removing-final-tuplet.ly
Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly
Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly
Documentation/snippets/printing-hairpins-using-al-niente-notation.ly
Documentation/snippets/printing-marks-at-the-end-of-a-line.ly
Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly
Documentation/snippets/printing-music-with-different-time-signatures.ly
Documentation/snippets/proportional-strict-notespacing.ly
Documentation/snippets/putting-lyrics-inside-the-staff.ly
Documentation/snippets/quoting-another-voice.ly
Documentation/snippets/recorder-fingering-chart.ly
Documentation/snippets/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.ly
Documentation/snippets/removing-the-first-empty-line.ly
Documentation/snippets/repeats-headword.ly
Documentation/snippets/rest-styles.ly
Documentation/snippets/rhythmic-slashes.ly
Documentation/snippets/rhythms-headword.ly
Documentation/snippets/screech-and-boink.ly
Documentation/snippets/separating-key-cancellations-from-key-signature-changes.ly
Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly
Documentation/snippets/setting-the-double-repeat-default-for-volte.ly
Documentation/snippets/setting-the-minimum-length-of-hairpins.ly
Documentation/snippets/shortening-volta-brackets.ly
Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly
Documentation/snippets/simultaneous-headword.ly
Documentation/snippets/slides-in-tablature.ly
Documentation/snippets/stem-and-beam-behavior-in-tablature.ly
Documentation/snippets/stemlets.ly
Documentation/snippets/subdividing-beams.ly
Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly
Documentation/snippets/table-of-contents.ly
Documentation/snippets/text-headword.ly
Documentation/snippets/time-signature-in-parentheses---method-3.ly
Documentation/snippets/time-signature-in-parentheses.ly
Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly
Documentation/snippets/transcription-of-ancient-music-with-incipit.ly
Documentation/snippets/tweaking-clef-properties.ly
Documentation/snippets/tweaking-grace-layout-within-music.ly
Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly
Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly
Documentation/snippets/using-the--tweak-command-to-tweak-individual-grobs.ly
Documentation/snippets/using-the-whiteout-property.ly
Documentation/snippets/vertical-aligned-staffgroups-without-connecting-systemstartbar.ly
Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly
Documentation/snippets/vertically-aligning-dynamics-across-multiple-notes.ly
Documentation/snippets/vertically-aligning-ossias-and-lyrics.ly
Documentation/snippets/vertically-centered-common-lyrics.ly
Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly
Documentation/snippets/vocal-ensemble-template-with-verse-and-refrain.ly
Documentation/snippets/vocal-ensemble-template.ly
Documentation/snippets/vocal-headword.ly
Documentation/snippets/wind-headword.ly
Documentation/topdocs/GNUmakefile
Documentation/usage/external.itely
Documentation/usage/running.itely
Documentation/usage/updating.itely
Documentation/web/download.itexi
Documentation/web/news-front.itexi
Documentation/web/news.itexi
VERSION
aclocal.m4
configure.ac
input/regression/beam-beamlet-grace.ly
input/regression/beam-collision-grace.ly
input/regression/flags-straight.ly
input/regression/grace-auto-beam-engraver.ly [new file with mode: 0644]
input/regression/grace-bar-line.ly
input/regression/grace-beam.ly
input/regression/grace-end.ly
input/regression/grace-start.ly
input/regression/grace-stem-length.ly
input/regression/grace-volta-repeat.ly
input/regression/grace.ly
input/regression/identifier-quoted.ly [new file with mode: 0644]
input/regression/lyric-extender-includegraces.ly
input/regression/lyrics-includegraces.ly
input/regression/markup-note-styles.ly
input/regression/markup-note.ly
input/regression/music-map.ly
input/regression/slur-broken-trend.ly
input/regression/slur-scoring.ly
input/regression/spacing-grace.ly
input/regression/spacing-non-adjacent-columns3.ly
input/regression/spacing-strict-notespacing.ly
input/regression/tablature-letter.ly
input/regression/tablature-slurs-with-beams.ly [new file with mode: 0644]
input/regression/tie-chord.ly
input/regression/trill-spanner-grace.ly
lily/GNUmakefile
lily/align-interface.cc
lily/auto-beam-engraver.cc
lily/beam-engraver.cc
lily/beam-quanting.cc
lily/beam.cc
lily/completion-note-heads-engraver.cc
lily/completion-rest-engraver.cc
lily/context.cc
lily/dynamic-engraver.cc
lily/include/beam.hh
lily/include/context-def.hh
lily/include/event-chord-iterator.hh
lily/include/note-column.hh
lily/include/performer.hh
lily/item.cc
lily/lexer.ll
lily/new-dynamic-engraver.cc [deleted file]
lily/note-column.cc
lily/paper-column.cc
lily/parser.yy
lily/side-position-interface.cc
lily/staff-spacing.cc
lily/tie-engraver.cc
lily/tuplet-bracket.cc
lily/tuplet-engraver.cc
lily/vaticana-ligature-engraver.cc
ly/engraver-init.ly
ly/init.ly
ly/music-functions-init.ly
ly/performer-init.ly
make/doc-i18n-root-rules.make
make/doc-i18n-root-targets.make
make/doc-i18n-root-vars.make
make/lilypond-vars.make
mf/GNUmakefile
mf/parmesan-noteheads.mf
po/lilypond.pot
python/convertrules.py
scm/backend-library.scm
scm/bar-line.scm
scm/chord-generic-names.scm
scm/chord-ignatzek-names.scm
scm/define-grob-properties.scm
scm/define-grobs.scm
scm/define-markup-commands.scm
scm/define-music-properties.scm
scm/define-music-types.scm
scm/define-note-names.scm
scm/define-stencil-commands.scm
scm/define-woodwind-diagrams.scm
scm/display-woodwind-diagrams.scm
scm/document-backend.scm
scm/document-context-mods.scm
scm/document-functions.scm
scm/document-identifiers.scm
scm/document-markup.scm
scm/document-music.scm
scm/document-translation.scm
scm/document-type-predicates.scm
scm/documentation-generate.scm
scm/documentation-lib.scm
scm/flag-styles.scm
scm/font.scm
scm/framework-ps.scm
scm/guile-debugger.scm
scm/lily-library.scm
scm/lily.scm
scm/ly-syntax-constructors.scm
scm/markup.scm
scm/modal-transforms.scm
scm/music-functions.scm
scm/output-lib.scm
scm/output-svg.scm
scm/page.scm
scm/parser-clef.scm
scm/part-combiner.scm
scm/ps-to-png.scm
scm/safe-lily.scm
scm/song-util.scm
scm/stencil.scm
scm/tablature.scm
scm/time-signature-settings.scm
scm/to-xml.scm
scm/translation-functions.scm
scripts/auxiliar/ref_check.py
scripts/convert-ly.py
scripts/lilymidi.py
stepmake/stepmake/generic-rules.make
stepmake/stepmake/generic-targets.make
stepmake/stepmake/metafont-rules.make
stepmake/stepmake/metafont-vars.make
stepmake/stepmake/texinfo-rules.make
stepmake/stepmake/texinfo-vars.make
stepmake/stepmake/topdocs-vars.make

index 44d4d04b02fe8a374f3a140a9addfe41aa585ac7..c1a194b54b09198fd6531eded970b61753936e80 100644 (file)
@@ -7,8 +7,6 @@ depth = ..
 #############
 ### Variables
 
-OUT_DIST_FILES = $(outdir)/ly-grammar.txt
-
 NAME = documentation
 LANGS = $(shell $(PYTHON) $(top-src-dir)/python/langdefs.py)
 SUBDIRS = logo pictures misc po css topdocs \
@@ -88,6 +86,13 @@ endif
 
 include $(depth)/make/stepmake.make
 
+DOCUMENTATION_INCLUDES += -I $(outdir) \
+  -I $(top-build-dir)/Documentation/snippets/out \
+  -I $(top-src-dir)/Documentation/included \
+  -I $(top-src-dir)/Documentation/pictures \
+  -I $(top-src-dir)/Documentation \
+  -I $(top-src-dir)/input/regression
+
 OUT_TXT_FILES = $(addprefix $(outdir)/, $(addsuffix .txt, $(README_TOP_FILES)))
 
 
@@ -205,24 +210,24 @@ $(OUT_TXT_FILES:%.txt=%.html): $(outdir)/%.html: $(outdir)/%.txt
        $(buildscript-dir)/text2html $<
 
 # Explicitly list the dependencies on generated content
-$(outdir)/web.texi: $(outdir)/we-wrote.itexi $(outdir)/others-did.itexi $(outdir)/weblinks.itexi
+$(outdir)/web.texi: $(outdir)/we-wrote.itexi $(outdir)/others-did.itexi $(outdir)/weblinks.itexi $(outdir)/version.itexi
 
 ifeq ($(out),www)
 ## Extra images dependencies
 $(OUT_TEXINFO_MANUALS): $(outdir)/pictures
 
 $(outdir)/pictures:
-       $(MAKE) -C pictures WWW-1
+       $(MAKE) -C pictures out=www WWW-1
        ln -sf ../pictures/$(outdir) $@
 
 $(outdir)/web.texi: $(outdir)/css $(outdir)/ly-examples
 
 $(outdir)/css:
-       $(MAKE) -C css
+       $(MAKE) -C css out=www WWW-1
        ln -sf ../css/$(outdir) $@
 
 $(outdir)/ly-examples:
-       $(MAKE) -C ly-examples
+       $(MAKE) -C ly-examples out=www WWW-1
        ln -sf ../ly-examples/$(outdir) $@
 endif
 
@@ -275,7 +280,7 @@ $(outdir)/%.php: %.php
 $(top-build-dir)/mf/$(outconfbase)/feta16list.ly:
        $(MAKE) -C $(top-src-dir)/mf
 
-$(outdir)/notation.texi: $(outdir)/ly-grammar.txt
+$(outdir)/contributor.texi: $(outdir)/ly-grammar.txt
 
 ## Rules for the automatically generated documentation
 $(outdir)/ly-grammar.txt: $(top-src-dir)/lily/parser.yy
index f2266666d0c793686afba12d6aec076e92a71fb4..01c5e2d48e2107053e6b93561c6bdea49c55fbf1 100644 (file)
@@ -61,6 +61,76 @@ which scares away people.
 
 @end ignore
 
+@item
+LilyPond no longer automatically infers a @samp{\defaultchild}
+context in a context definition with @samp{\accepts} clauses.  Any
+context definition without an explicit or inherited
+@samp{\defaultchild} definition counts as a @samp{Bottom} context
+and will be eligible for rhythmic events and overrides without
+causing the implicit creation of other contexts.  Be sure to
+specify a @samp{\defaultchild} for non-@samp{Bottom} contexts when
+defining them from scratch.
+
+@item
+There is now extensive support for both discant and bass accordion
+register symbols in the @samp{scm accreg} module, see
+@ruser{Accordion Registers}.
+@lilypond[verbatim,quote]
+#(use-modules (scm accreg))
+\new PianoStaff
+<<
+  \new Staff \relative
+  { \clef "treble"  \discant "10"
+    r8 s32 f'[ bes f] s e[ a e] s d[ g d] s16 e32[ a]
+    \discant "121"
+    << { r16 <f bes> r <e a> r <d g> } \\
+       { d r a r bes r } >> |
+    <cis e a>1
+  }
+  \new Staff \relative
+  { \clef "treble"  \freeBass "1"
+    r8 d'32 s16. c32 s16. bes32 s16. a32[ cis] s16
+    \clef "bass"  \stdBass "Master"
+    << { r16 <f, bes d>^"b" r <e a c>^"am" r <d g bes>^"gm" |
+         <e a cis>1^"a" } \\
+       { d8_"D" c_"C" bes_"B" | a1_"A" }
+    >>
+  }
+>>
+@end lilypond
+
+@item
+New commands @code{markLengthOn} and @code{markLengthOff} control
+the allowance of horizontal space for tempo and rehearsal marks.
+
+@lilypond[quote,relative=2]
+\markLengthOn
+\compressFullBarRests
+\tempo "Molto vivace" c2 c'
+\mark\default
+\tempo "Meno mosso" R1*16
+\mark\default
+g,2 g
+\bar "||"
+\markLengthOff
+\tempo "Molto vivace" c2 c'
+\mark#1
+\tempo "Meno mosso" R1*16
+\mark\default
+g,2 g
+@end lilypond
+
+@item
+Rehearsal marks at the beginning of a line are now placed to the right
+of the clef and key signature by default.  As in previous versions, the
+@code{break-alignable-interface} controls the behavior.
+
+@lilypond[quote,relative=2]
+\set Score.barNumberVisibility = #all-bar-numbers-visible
+\set Timing.currentBarNumber = #72
+\bar"||" \time 3/4 \key e\major \mark#10 \tempo "Adagio" b2.
+@end lilypond
+
 @item
 Decimal numbers can now be written directly in music,
 without a hash sign.  Together with the previous change
index c1dd8adae8a5d63b40191d99c96f142dfdb7b087..680522cbc9a79466fd9a404887e326bc21bace0c 100644 (file)
@@ -276,8 +276,6 @@ Level 3 subsections are created with
 @@subsection Foo
 @end example
 
-@itemize
-@item
 Level 4 headings and menus must be preceded by level 3 headings and
 menus, and so on for level 3 and level 2.  If this is not what is
 wanted, please use:
@@ -286,11 +284,9 @@ wanted, please use:
 @@subsubsubheading Foo
 @end example
 
-@item
 Please leave two blank lines above a @code{@@node}; this makes it
 easier to find sections in texinfo.
 
-@item
 Do not use any @code{@@} commands for a @code{@@node}.  They may be
 used for any @code{@@sub...} sections or headings however.
 
@@ -304,7 +300,6 @@ but instead:
 @@subsection @@code@{Foo@} Bar
 @end example
 
-@item
 No punctuation may be used in the node names.  If the heading text
 uses punctuation (in particular, colons and commas) simply leave
 this out of the node name and menu.
@@ -318,17 +313,34 @@ this out of the node name and menu.
 @@subsection Foo: Bar
 @end example
 
-@item
-With the exception of @code{@@} commands and punctuation, the
-section name should match the node name exactly.
+Backslashes must not be used in node names or section headings.
+If the heading text should include a backslash simply leave this
+out of the node name and menu and replace it with @code{@@bs@{@}}
+in the heading text.
+
+@example
+@@menu
+* The set command
+@@end menu
+
+@@node The set command
+@@subsection The @@code@{@@bs@{@}set@} command
+@end example
+
+References to such a node may use the third argument of the
+@code{@@ref} command to display the texually correct heading.
+
+@example
+@@ref@{The set command,,The @@code@{@@bs@{@}set command@}
+@end example
+
+With the exception of @code{@@} commands, @code{\} commands and
+punctuation, the section name should match the node name exactly.
 
-@item
 Sectioning commands (@code{@@node} and @code{@@section}) must not appear
 inside an @code{@@ignore}.  Separate those commands with a space, ie
 @code{@@n}@tie{}@code{ode}.
 
-@end itemize
-
 Nodes must be included inside a
 
 @example
index b17443a46c9ed72af6f8830a946a974b92be2bd5..258e2ce108a780f17bd5dbc0461e3e775d41135e 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @ignore
 Tutorial guidelines:
@@ -552,7 +552,7 @@ vytvářet uvozením hudebního výrazu příkazem @code{\appoggiatura} (dlouhý
 příraz, prodleva) a @code{\acciaccatura} (příraz, krátká appogiatura).
 
 @lilypond[verbatim,quote,relative=2]
-c2 \grace { a32[ b] } c2 |
+c2 \grace { a32 b } c2 |
 c2 \appoggiatura b16 c2 |
 c2 \acciaccatura b16 c2 |
 @end lilypond
index a0eee4d3a1f300c7274423148e313add47297908..2f8cc035d2ccae84bd89952432019d1f0c74a9f2 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.18"
+@c \version "2.17.29"
 @c Translators: Pavel Fric
 
 @node Základní pojmy
@@ -1735,8 +1735,7 @@ abzuleiten.
   @tab Erstellt Notenschlüssel.
 @item Completion_heads_engraver
   @tab Teilt Noten in kleiner Werte, wenn sie über die Taktlinie reichen.
-@c The old Dynamic_engraver is deprecated. -jm
-@item New_dynamic_engraver
+@item Dynamic_engraver
   @tab Erstellt Dynamik-Klammern und Dynamik-Texte.
 @item Forbid_line_break_engraver
   @tab Verbietet Zeilenumbrüche, solange ein musikalisches Element aktiv ist.
index 073ada5667e59eb725e6cdd28bc4b1ac85c3c0f2..90036373b1fa6e83691c3f7ae0b2004a3cc23d8a 100644 (file)
@@ -285,7 +285,7 @@ Quantisiert Tondauern zu Vielfachen von @var{LÄNGE}.
 @item -e, --explicit-durations
 Gibt alle Tondauern explizit an.
 
-@item -h,--help
+@item -h, --help
 Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen.
 
 @item -k, --key=@var{acc}[:@var{Moll}]
@@ -358,7 +358,7 @@ unterstützt:
 @item -a, --absolute
 Konvertiert in absolute Tonhöhen.
 
-@item -h,--help
+@item -h, --help
 Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen.
 
 @item -l, --language=SPRACHE
@@ -376,13 +376,13 @@ von Artikulations- und Lautstärkebezeichnungen.
 Konvertiert keine Informationen über die Balkensetzung aus der
 MusicXML-Datei. Stattdessen wird dies LilyPond überlassen.
 
-@item -o,--output=@var{Dateiname}
+@item -o, --output=@var{Dateiname}
 Die Ausgabe wird in die Datei @var{Dateiname}@file{.ly} geschrieben. Wird
 als @var{Dateiname} nur @file{-} angegeben, wird das Ergebnis der Konvertierung
 an der Kommandozeile ausgegeben. Wird diese Option nicht angegeben, so
 erfolgt die Ausgabe in die Datei @var{XML-Datei}@file{.ly}.
 
-@item -r,--relative
+@item -r, --relative
 Konvertiert in relative Tonhöhen. (Standardeinstellung)
 
 @item -v, --verbose
@@ -391,7 +391,7 @@ Gibt ausführliche informative Meldungen während der Konvertierung aus.
 @item --version
 Gibt die Versionsnummer aus.
 
-@item  -z,--compressed
+@item -z, --compressed
 Die Eingabedatei wird als komprimierte MusicXML-Datei eingelesen.
 Dies ist die Standardeinstellung für Dateien mit der Erweiterung
 @file{.xml}.
@@ -425,15 +425,15 @@ Die folgenden Kommandozeilenoptionen werden von @command{abc2ly}
 unterstützt:
 
 @table @code
-@item -b,--beams=None
+@item -b, --beams=None
 Die Balkensetzung aus der ABC-Datei erhalten.
-@item -h,--help
+@item -h, --help
 Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen.
-@item -o,--output=@var{Dateiname}
+@item -o, --output=@var{Dateiname}
 Die Ausgabe wird in die Datei @var{Dateiname}@file{.ly} geschrieben.
-@item -s,--strict
+@item -s, --strict
 Strenge Auslegung einer erfolgreichen Konvertierung.
-@item -v,--version
+@item -v, --version
 Gibt die Versionsnummer aus.
 @end table
 
@@ -512,9 +512,9 @@ Die folgenden Kommandozeilenoptionen werden von @command{etf2ly}
 unterstützt:
 
 @table @code
-@item -h,--help
+@item -h, --help
 Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen.
-@item -o,--output=@var{Dateiname}
+@item -o, --output=@var{Dateiname}
 Die Ausgabe wird in die Datei @var{Dateiname}@file{.ly} geschrieben.
 @item --version
 Gibt die Versionsnummer aus.
index 6030539b29c2663858b64fc40d67dfda3804746c..c0ab29321435b374f95396e24822c798447de6cb 100644 (file)
@@ -152,7 +152,7 @@ Die folgenden Kommandozeilenoptionen werden von @command{lilypond} unterstützt:
 
 @table @code
 
-@item -e,--evaluate=@var{expr}
+@item -e, --evaluate=@var{expr}
 Wertet den Scheme-Ausdruck @var{expr} aus, bevor die @file{.ly} Dateien
 gelesen und interpretiert werden.
 Die @code{-e} Option kann auch mehrfach angegeben werden, die Ausdrücke
@@ -174,7 +174,7 @@ Am Beginn der @file{.ly}-Datei muss dann das @code{guile-user} Modul noch gelade
 @end example
 
 
-@item -f,--format=@var{Format}
+@item -f, --format=@var{Format}
 Bestimmt das Ausgabeformat. Mögliche Werte von @var{Format} sind
 @code{svg}, @code{ps}, @code{pdf} und @code{png}.
 
@@ -182,7 +182,7 @@ Beispiel: @code{lilypond -fpng @var{Dateiname}.ly}
 
 
 
-@item -d,--define-default=@var{Variable}=@var{Wert}
+@item -d, --define-default=@var{Variable}=@var{Wert}
 Damit wird die interne Programmoption @var{Variable} auf den Scheme-Wert
 @var{Wert} gesetzt. Wird kein @var{Wert} angegeben, so wird @var{#t} benutzt.
 Um eine Option auszuschalten, kann der Präfix @code{no-} dem Namen
@@ -338,10 +338,10 @@ ist in Verbindung mit @code{-dpreview} nützlich.
 
 
 
-@item -h,--help
+@item -h, --help
 Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen.
 
-@item -H,--header=@var{FELD}
+@item -H, --header=@var{FELD}
 Gibt den Inhalt eines Feldes aus dem @code{\header}-Block in die Datei
 @file{Dateiname.@var{FELD}} aus.
 
@@ -355,14 +355,14 @@ Mehrere -I-Optionen können angegeben werden.  Die Suche beginnt mit dem
 ersten definierten Verzeichnis und setzt in den weiteren Verzeichnissen
 fort, wenn die gesuchte Datei nicht in dem Verzeichnis gefunden wird.
 
-@item -i,--init=@var{Initialisierungsdatei}
+@item -i, --init=@var{Initialisierungsdatei}
 Benutzt @var{Initialisierungsdatei} zur gesamten Programminitialisierung. Der
 Standardwert ist @file{init.ly}.
 
 @cindex Verzeichnis, Ausgabe speichern in
 @cindex Ausgabedateiname
 
-@item -o,--output=@var{DATEI}
+@item -o, --output=@var{DATEI}
 Schreibt das Ergebnis der Verarbeitung mit LilyPond in die Ausgabedatei
 @var{DATEI}.  Wenn ein Verzeichnis mit dem Namen existiert, werden die Ausgabedateien
 in dieses Verzeichnis gespeichert, wobei der Dateiname der Eingabedatei
@@ -391,7 +391,7 @@ werden durch
 @item --pdf
 Erzeugt PDF-Dateien. Dies impliziert @code{--ps}.
 
-@item -j,--jail=@var{Benutzer},@var{Gruppe},@var{Jail-Verzeichnis},@var{Arbeitsverzeichnis}
+@item -j, --jail=@var{Benutzer},@var{Gruppe},@var{Jail-Verzeichnis},@var{Arbeitsverzeichnis}
 Führt @command{lilypond} in einem chroot-Jail aus.
 
 Die @code{--jail} Option ist eine flexiblere Alternative zu @code{--safe}, wenn
@@ -453,14 +453,14 @@ dies unterstützt -- auch den zur Verfügung stehenden Hauptspeicher.
 @end table
 
 
-@item -v,--version
+@item -v, --version
 Gibt die Versionsnummer aus.
 
-@item -V,--verbose
+@item -V, --verbose
 Gibt ausführliche informative Meldungen aus: Zeigt die vollen Dateipfade
 aller gelesenen Dateien sowie Informationen über die Laufzeit.
 
-@item -w,--warranty
+@item -w, --warranty
 Zeigt die Garantiebedingungen an, unter denen GNU LilyPond steht. (Es besteht
 @strong{KEINERLEI GARANTIE}!)
 @end table
index 37575f8f66990bd92c82218589ea07b5b082719c..5f05a503753a46aad660d90703536f3de785f388 100644 (file)
@@ -132,16 +132,16 @@ convert-ly [@var{volba}]@dots{} @var{souborovýnázev}@dots{}
 Mohou se používat následující volby:
 
 @table @code
-@item -e,--edit
+@item -e, --edit
 Použít převod přímo na vstupní soubor, takže je přímo změněn.
 
-@item -f,--from=@var{od-čísloverze}
+@item -f, --from=@var{od-čísloverze}
 Nastavuje číslo verze, od kterého má převod začít.  Když
 tato volba není použita, odhadne @command{convert-ly} číslo verze
 na základě údaje o @code{\version} v souboru.  Například
 @code{--from=2.10.25}
 
-@item -n,--no-version
+@item -n, --no-version
 Obvykle do výstupu @command{convert-ly} přidá záznam @code{\version}
 k převáděnému souboru.  Zadání této volby povede k potlačení tohoto chování.
 
index f5d248033c99f523402c8d4e76592419eb3a20b7..954f1dce5cc164cd26e7c3bc90ef11cf553e572b 100644 (file)
@@ -660,7 +660,8 @@ Scheme-Ausdruck zu benutzen.
 Die Eingabe von LilyPond ist in Zeichen und Ausdrücke gegliedert, so etwa
 wie die menschliche Sprache sich in Wörter und Sätze gliedert.  LilyPond
 hat einen Lexer, der Zeichen erkennt (Zahlen, Zeichenketten, Scheme-Elemente,
-Tonhöhen usw.) und einen Parser, der die Syntax versteht, @ruser{LilyPond grammar}.
+Tonhöhen usw.) und einen Parser, der die Syntax versteht,
+@rcontribnamed{LilyPond grammar, LilyPond-Grammatik}.
 Wenn dann eine bestimmte Syntaxregel als zuständig erkannt wurde, werden die
 damit verknüpften Aktionen ausgeführt.
 
index f07eda95c3501bd510669776361683a6841678b7..e108d0b0c08902561a21f56c943d41a49263b719 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @ignore
 Tutorial guidelines:
@@ -561,7 +561,7 @@ eingegeben, Vorhalte durch den Befehl @code{\appoggiatura}
 und Vorschläge mit @code{\acciaccatura}.
 
 @lilypond[verbatim,quote,relative=2]
-c2 \grace { a32[ b] } c2 |
+c2 \grace { a32 b } c2 |
 c2 \appoggiatura b16 c2 |
 c2 \acciaccatura b16 c2 |
 @end lilypond
index bd96bfc91f58e6edf2f68599e5b1b447cced0bb1..77e3112483a18b7dadcabcd43184808172909c11 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.18"
+@c \version "2.17.29"
 @c Translators: Till Paala, Reinhold Kainhofer
 
 @node Grundbegriffe
@@ -1770,8 +1770,7 @@ abzuleiten.
   @tab Erstellt Notenschlüssel.
 @item Completion_heads_engraver
   @tab Teilt Noten in kleiner Werte, wenn sie über die Taktlinie reichen.
-@c The old Dynamic_engraver is deprecated. -jm
-@item New_dynamic_engraver
+@item Dynamic_engraver
   @tab Erstellt Dynamik-Klammern und Dynamik-Texte.
 @item Forbid_line_break_engraver
   @tab Verbietet Zeilenumbrüche, solange ein musikalisches Element aktiv ist.
index 729c265302a2f5fb7c280314631a470489340255..966c0b6c6b26e949804003578495baa1e3ed0510 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @ignore
-    Translation of GIT committish: ebe492ca408fb0d9abf80b94c56197eef8dc2f09
+    Translation of GIT committish: 00cd4ff0b8dc4978344ba966bec06ddbc445f7e9
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -61,7 +61,6 @@ Anhänge
 @c * Literatur::                Wichtige Literatur über die Notation.
 * Notationsübersicht::         Tabellen und Grafiken.
 * Befehlsübersicht::                    Überblick über die LilyPond-Syntax.
-* LilyPond-Grammatik::               Syntaxdiagramm für LilyPond
 * GNU Free Documentation License:: Die Lizenz dieses Handbuchs.
 * Index der LilyPond-Befehle::
 * LilyPond-Index::
@@ -88,16 +87,6 @@ Anhänge
 @include notation/notation-appendices.itely
 @include notation/cheatsheet.itely
 
-@node LilyPond-Grammatik
-@appendix LilyPond-Grammatik
-@translationof LilyPond grammar
-
-Dieser Anhang enthält eine Beschreibung der LilyPond-Grammatik,
-wie sie der Parser ausgibt.
-
-@verbatiminclude ly-grammar.txt
-
-
 @include fdl.itexi
 
 
index 4110837698de3d45b69e585f8232cd52afb44955..f5f2869cfbe841f106affb66f475b5fc90e5e634 100644 (file)
@@ -259,7 +259,7 @@ erklärt in @ref{Weiße Mensuralligaturen} und
 @seealso
 Glossar:
 @rglos{ligature}.
+
 Notationsreferenz:
 @ref{Weiße Mensuralligaturen},
 @ref{Ligaturen der gregorianischen Quadratnotation}.
@@ -2493,7 +2493,7 @@ augmentum-Punkte hinzuzufügen.
 @seealso
 Glossar:
 @rglos{ligature}.
+
 Notationreferenz:
 @ref{ Ligaturen der gregorianischen Quadratnotation},
 @ref{Weiße Mensuralligaturen},
@@ -2956,7 +2956,7 @@ In Arbeit.
 @c try Till Rettig
 @c Add example of white noteheads:
 @c In the french baroque some composers used white noteheads in slow pieces,
-@c mainly in 3/2-time.  A quarter looks there like a eighth with a white
+@c mainly in 3/2-time.  A quarter looks there like an eighth with a white
 @c notehead.  (Franz-Rudolf Kuhnen)
 
 @c TODO Add example of this:
index 6580c77bc9306d88a692141278695d74c269476c..94334225fb7fd3ba6631e7733e6e4aa772dc207f 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.11"
+@c \version "2.17.27"
 
 @c Translators: Till Paala
 
@@ -673,7 +673,7 @@ benutzen, kann man benutzen:
 \layout @{
   \context @{
     \TabStaff
-    stringTunings = \stringTuning \notemode @{ <c' g' d'' a''> @}
+    stringTunings = \stringTuning <c' g' d'' a''>
   @}
 @}
 @end example
index 39b7fa5d9ddc0caccb3bdc63b2b96f47e868e961..1a14675ecb40bd5fd13486ffe057b9bd8677ab2f 100644 (file)
@@ -1603,7 +1603,8 @@ Wenn dies nicht erreicht werden kann, ist die Datei nicht korrekt und
 ensprechende Fehlermeldungen werden ausgegeben.  Die syntaktischen Gruppierungen
 und die Regeln, nach welchen die Gruppen aus ihren Einzelteilen nach der
 LilyPond-Syntax erstellt werden, finden sich in der Datei @file{lily/parser.yy}
-und werden in der Backus Normal Form (BNF) in @ref{LilyPond-Grammatik}
+und werden in der Backus Normal Form (BNF) in
+@rcontribnamed{LilyPond grammar, LilyPond-Grammatik}
 gezeigt.  Diese Datei wird benutzt, um den Parser während der Programmkompilation
 zu erstellen.  Hierzu wird der Parser-Ersteller Bison verwendet.  Er ist
 Teil des Quellcodes und nicht in die binäre Installation von LilyPond
index 07ae0def72b252f7c9e79bbf6edf0c746f534b7b..d5b60f1a50a7cabf01a9e1248b6ed0add6fd3e28 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @c Translators: Till Paala
 
@@ -2516,7 +2516,7 @@ normalen Balken gesetzt.
 
 @lilypond[quote,verbatim,relative=2]
 c4 d8[
-\grace { e32[ d c d] }
+\grace { e32 d c d }
 e8] e[ e
 \grace { f16 }
 e8 e]
@@ -3298,7 +3298,7 @@ keine logische Zeit im Takt ein.
 
 @lilypond[quote,relative=2,verbatim]
 c4 \grace b16 a4(
-\grace { b16[ c16] } a2)
+\grace { b16 c16 } a2)
 @end lilypond
 
 Es gibt drei Arten von Verzierungen:
@@ -3313,7 +3313,7 @@ zwischen Noten notiert, die selber einen Legatobogen haben.
 @lilypond[quote,relative=2,verbatim]
 \acciaccatura d8 c4
 \appoggiatura e8 d4
-\acciaccatura { g16[ f] } e2
+\acciaccatura { g16 f } e2
 \slashedGrace a,8 g4
 \slashedGrace b16 a4(
 \slashedGrace b8 a2)
@@ -3324,8 +3324,8 @@ synchronisiert.  Im nächsten Beispiel stehen im einen
 System zwei 16-Noten für jede 8-Note des zweiten Systems:
 
 @lilypond[quote,relative=2,verbatim]
-<< \new Staff { e2 \grace { c16[ d e f] } e2 }
-   \new Staff { c2 \grace { g8[ b] } c2 } >>
+<< \new Staff { e2 \grace { c16 d e f } e2 }
+   \new Staff { c2 \grace { g8 b } c2 } >>
 @end lilypond
 
 @funindex \afterGrace
@@ -3374,7 +3374,7 @@ gesetzt.
 @lilypond[quote,verbatim,relative=2]
 \new Voice {
   << { d1^\trill_( }
-     { s2 s4. \grace { c16[ d] } } >>
+     { s2 s4. \grace { c16 d } } >>
   c1)
 }
 @end lilypond
index e938e80e16e352169eddac400475eb04a22e472a..1eb7afce45af6402bbdb8da7e623846f1ef8b846 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @c Translators: Till Paala
 
@@ -96,7 +96,7 @@ komplexere Möglichkeiten, derartige Elemente zu kombinieren, siehe
 @ref{Gleichzeitige Ausdrücke}.
 
 @lilypond[verbatim,quote,relative=2]
-\grace { g8[( a b] }
+\grace { g8( a b }
 <> ) \p \< -. -\markup \italic "sempre staccato"
 \repeat unfold 4 { c4 e }  c1\f
 @end lilypond
index 617f04cc6dc5cfd188bc6557fef19dfbe27a2451..6795f38e889200bcfc4b1b397de819ee4089e99a 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.11"
+@c \version "2.17.28"
 
 @c Translators: Till Paala
 
@@ -59,16 +59,16 @@ Systemgruppen usw.  Siehe @ref{Partiturlayout}.
 Dieser Abschnitt behandelt Seitenlayout-Optionen innerhalb der @code{\paper}-Umgebung.
 
 @menu
-* Die \paper-Umgebung::
+* Die paper-Umgebung::
 * Papierformat und automatische Skalierung::
-* Vertikale \paper-Variablen mit festen Abständen::
-* Vertikale \paper-Variablen mit flexiblen Abständen::
-* \paper-Variablen für horizontale Abstände::
-* Andere \paper-Variablen::
+* Vertikale paper-Variablen mit festen Abständen::
+* Vertikale paper-Variablen mit flexiblen Abständen::
+* paper-Variablen für horizontale Abstände::
+* Andere paper-Variablen::
 @end menu
 
 
-@node Die \paper-Umgebung
+@node Die paper-Umgebung
 @subsection Die @code{\paper}-Umgebung
 @translationof The \paper block
 
@@ -274,11 +274,11 @@ in @ref{Das Papierformat einstellen}.
 
 Die vertikalen Dimensionen, die durch die automatische Skalierung verändert
 werden sind: @code{top-margin} und @code{bottom-margin} (siehe
-@ref{Vertikale \paper-Variablen mit festen Abständen}).  Die horizontalen
+@ref{Vertikale paper-Variablen mit festen Abständen,,Vertikale @code{@bs{}paper}-Variablen mit festen Abständen}).  Die horizontalen
 Dimensionen, die durch die automatische Skalierung verändert werden, sind
 @code{left-margin}, @code{right-margin}, @code{inner-margin}, @code{outer-margin},
 @code{binding-offset}, @code{indent} und @code{short-indent} (siehe
-@ref{\paper-Variablen für horizontale Abstände}).
+@ref{paper-Variablen für horizontale Abstände,,@code{@bs{}paper}-Variablen für horizontale Abstände}).
 
 Die Standardwerte für diese Dimensionen sind in
 @file{ly/paper-defaults-init.ly} definiert, wobei interne Variablen mit den
@@ -289,8 +289,8 @@ benutzt werden.  Das sind die Werte für die Standardpapiergröße
 
 @seealso
 Notationsreferenz:
-@ref{Vertikale \paper-Variablen mit festen Abständen},
-@ref{\paper-Variablen für horizontale Abstände}.
+@ref{Vertikale paper-Variablen mit festen Abständen,,Vertikale @code{@bs{}paper}-Variablen mit festen Abständen},
+@ref{paper-Variablen für horizontale Abstände,,@code{@bs{}paper}-Variablen für horizontale Abstände}.
 
 Installierte Dateien:
 @file{ly/paper-defaults-init.ly},
@@ -298,7 +298,7 @@ Installierte Dateien:
 
 
 
-@node Vertikale \paper-Variablen mit festen Abständen
+@node Vertikale paper-Variablen mit festen Abständen
 @unnumberedsubsubsec Vertikale @code{\paper}-Variablen mit festen Abständen
 @translationof Fixed vertical spacing \paper variables
 
@@ -368,7 +368,7 @@ Explizit definierte Papierformate überschreiben alle vom Benutzer erstellte
 Randeinstellung für die Ränder oben und unten.
 
 
-@node Vertikale \paper-Variablen mit flexiblen Abständen
+@node Vertikale paper-Variablen mit flexiblen Abständen
 @unnumberedsubsubsec Vertikale @code{\paper}-Variablen mit flexiblen Abständen
 @translationof Flexible vertical spacing \paper variables
 
@@ -571,7 +571,7 @@ Schnipsel:
 
 
 
-@node \paper-Variablen für horizontale Abstände
+@node paper-Variablen für horizontale Abstände
 @unnumberedsubsubsec \paper-Variablen für horizontale Abstände
 @translationof Horizontal spacing \paper variables
 
@@ -580,13 +580,13 @@ entsprechend dem Papierformat skaliert und können deshalb ungewollte
 Resultate haben.  Siehe @ref{Automatische Skalierung auf ein Papierformat}.}
 
 @menu
-* \paper-Variablen für Breite und Ränder::
-* \paper-Variablen für zweiseitigen Satz::
-* \paper-Variablen für Verschiebungen und Einrückungen::
+* paper-Variablen für Breite und Ränder::
+* paper-Variablen für zweiseitigen Satz::
+* paper-Variablen für Verschiebungen und Einrückungen::
 @end menu
 
 
-@node \paper-Variablen für Breite und Ränder
+@node paper-Variablen für Breite und Ränder
 @unnumberedsubsubsec \paper-Variablen für Breite und Ränder
 @translationof \paper variables for widths and margins
 
@@ -692,7 +692,7 @@ Explizit definierte Papierformate überschreiben alle vom Benutzer erstellte
 Randeinstellung für die Ränder oben und unten.
 
 
-@node \paper-Variablen für zweiseitigen Satz
+@node paper-Variablen für zweiseitigen Satz
 @unnumberedsubsubsec @code{\paper}-Variablen für zweiseitigen Satz
 @translationof \paper variables for two-sided mode
 
@@ -747,7 +747,7 @@ Installierte Dateien:
 @file{ly/paper-defaults-init.ly}.
 
 
-@node \paper-Variablen für Verschiebungen und Einrückungen
+@node paper-Variablen für Verschiebungen und Einrückungen
 @unnumberedsubsubsec @code{\paper}-Variablen für Verschiebungen und Einrückungen 
 @translationof \paper variables for shifts and indents
 
@@ -793,19 +793,19 @@ Schnipsel:
 @rlsr{Spacing}.
 
 
-@node Andere \paper-Variablen
+@node Andere paper-Variablen
 @subsection Andere @code{\paper}-Variablen
 @translationof Other \paper variables
 
 @menu
-* \paper-Variablen für den Zeilenumbruch::
-* \paper-Variablen für den Seitenumbruch::
-* \paper-Variablen für Seitenzahlen::
-* Verschiedene \paper-Variablen::
+* paper-Variablen für den Zeilenumbruch::
+* paper-Variablen für den Seitenumbruch::
+* paper-Variablen für Seitenzahlen::
+* Verschiedene paper-Variablen::
 @end menu
 
 
-@node \paper-Variablen für den Zeilenumbruch
+@node paper-Variablen für den Zeilenumbruch
 @unnumberedsubsubsec @code{\paper}-Variablen für den Zeilenumbruch
 @translationof \paper variables for line breaking
 @c TODO: Mention that ly:optimal-breaking is on by default? -mp
@@ -848,7 +848,7 @@ Notationsreferenz:
 @ref{Zeilenumbrüche}.
 
 
-@node \paper-Variablen für den Seitenumbruch
+@node paper-Variablen für den Seitenumbruch
 @unnumberedsubsubsec @code{\paper}-Variablen für den Seitenumbruch
 @translationof \paper variables for page breaking
 
@@ -918,7 +918,7 @@ Installierte Dateien:
 @file{ly/paper-defaults-init.ly}.
 
 
-@node \paper-Variablen für Seitenzahlen
+@node paper-Variablen für Seitenzahlen
 @unnumberedsubsubsec @code{\paper}-Variablen für Seitenzahlen
 @translationof \paper variables for page numbering
 
@@ -969,7 +969,7 @@ eine leere Seite nach dem Deckblatt einfügen, damit die Noten
 auf der rechten Seite mit Seite 1 beginnen.
 
 
-@node Verschiedene \paper-Variablen
+@node Verschiedene paper-Variablen
 @unnumberedsubsubsec Verschiedene @code{\paper}-Variablen
 @translationof Miscellaneous \paper variables
 @table @code
@@ -1077,15 +1077,15 @@ die innerhalb der @code{\layout}-Umgebungen erlaubt sind, sind:
 
 @item
 @code{line-width}, @code{ragged-right} und @code{ragged-last}
-(siehe @ref{\paper-Variablen für Breite und Ränder})
+(siehe @ref{paper-Variablen für Breite und Ränder,,@code{@bs{}paper}-Variablen für Breite und Ränder})
 
 @item
 @code{indent} und @code{short-indent}
-(siehe @ref{\paper-Variablen für Verschiebungen und Einrückungen})
+(siehe @ref{paper-Variablen für Verschiebungen und Einrückungen,,@code{@bs{}paper}-Variablen für Verschiebungen und Einrückungen})
 
 @item
 @code{system-count}
-(siehe @ref{\paper-Variablen für den Zeilenumbruch})
+(siehe @ref{paper-Variablen für den Zeilenumbruch,,@code{@bs{}paper}-Variablen für den Zeilenumbruch})
 
 @end itemize
 
@@ -1481,7 +1481,7 @@ kompliziert.  Mehr Einzelheiten finden sich in
 
 @seealso
 Notationsreferenz:
-@ref{\paper-Variablen für den Zeilenumbruch}.
+@ref{paper-Variablen für den Zeilenumbruch,,@code{@bs{}paper}-Variablen für den Zeilenumbruch}.
 
 Schnipsel:
 @rlsr{Spacing}.
@@ -1516,7 +1516,7 @@ Variablen auf @code{#t} (wahr) gesetzt werden, werden im ersten
 Fall die Notensysteme auf allen Seiten eng nach oben orientiert
 gesetzt werden.  Im zweiten Fall bezieht sich dies nur auf die
 letzte Seite.
-Zu Einzelheiten siehe @ref{Vertikale \paper-Variablen mit festen Abständen}.
+Zu Einzelheiten siehe @ref{Vertikale paper-Variablen mit festen Abständen,,Vertikale @code{@bs{}paper}-Variablen mit festen Abständen}.
 
 Seitenumbrüche werden von der @code{page-breaking}-Funktion errechnet.
 LilyPond kennt drei Algorithmen um Seitenumbrüche zu errechnen:
@@ -1576,7 +1576,7 @@ Buchteilen benutzt werden.
 
 @seealso
 Notationsreferenz:
-@ref{\paper-Variablen für den Seitenumbruch}.
+@ref{paper-Variablen für den Seitenumbruch,,@code{@bs{}paper}-Variablen für den Seitenumbruch}.
 
 Schnipsel:
 @rlsr{Spacing}.
@@ -1943,7 +1943,7 @@ Abschnitt behandelt wird, nur die vertikale Platzierung von Systemen und
 nicht-Systemzeilen in einzelnen Systemgruppen behandelt.  Die vertikale
 Platzierung zwischen einzelnen Systemgruppen, Partituren, Beschriftungen
 usw. und den Rändern wird durch @code{\paper}-Variablen kontrolliert, die
-@ref{Vertikale \paper-Variablen mit flexiblen Abständen}.
+@ref{Vertikale paper-Variablen mit flexiblen Abständen,,Vertikale @code{@bs{}paper}-Variablen mit flexiblen Abständen}.
 
 @menu
 * Eigenschaften für Abstände innerhalb von Systemgruppen::
@@ -2095,7 +2095,7 @@ labelContext =
 Jeder der vertikalen Platzierungs-Grobeigenschaften (außer
 @code{staff-affinity}) benutzt die gleiche Alistenstruktur
 wie die @code{\paper}-Variablen, behandelt in
-@ref{Vertikale \paper-Variablen mit flexiblen Abständen}.  Besondere
+@ref{Vertikale paper-Variablen mit flexiblen Abständen,,Vertikale @code{@bs{}paper}-Variablen mit flexiblen Abständen}.  Besondere
 Methoden um Alisten zu verändern finden sich in
 @ref{Alisten verändern}.  Grob-Eigenschaften sollten mit
 dem @code{\override}-Befehle innerhalb einer @code{\score}-
@@ -2260,7 +2260,7 @@ für dieses Notensystem geändert werden.
 
 @seealso
 Notationsreferenz:
-@ref{Vertikale \paper-Variablen mit flexiblen Abständen},
+@ref{Vertikale paper-Variablen mit flexiblen Abständen,,Vertikale @code{@bs{}paper}-Variablen mit flexiblen Abständen},
 @ref{Alisten verändern}.
 
 Installierte Dateien:
@@ -3091,7 +3091,7 @@ zusätzlichen Platz erhalten.
 
 @lilypond[quote,ragged-right,relative=2,fragment,verbatim]
 \override Score.SpacingSpanner.strict-note-spacing = ##t
-\new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c]  c32[ c32] }
+\new Staff { c8[ c \clef alto c \grace { c16 c } c8 c c]  c32[ c32] }
 @end lilypond
 
 
index b562b53f40d232f10d04bc20bddcf72c4038b0bc..df940dc27c69d3441ed959554f29cdca7119f7d3 100644 (file)
@@ -986,7 +986,7 @@ Wenn die Instrumentenbezeichnung zu lang ist, kann es vorkommen,
 dass die Bezeichnungen in einer Gruppe nicht zentriert werden.
 Um dennoch eine Zentrierung zu erhalten, müssen die Werte des
 Einzugs (@code{indent} und @code{short-indent}) vergrößert werden.
-Zu Einzelheiten siehe @ref{\paper-Variablen für Verschiebungen und Einrückungen}.
+Zu Einzelheiten siehe @ref{paper-Variablen für Verschiebungen und Einrückungen,,@code{@bs{}paper}-Variablen für Verschiebungen und Einrückungen}.
 
 @lilypond[verbatim,quote,ragged-right]
 \relative c'' {
@@ -1094,7 +1094,7 @@ wird dann benutzt, um den Wechsel vorzunehmen:
 
 @seealso
 Notationsreferenz:
-@ref{\paper-Variablen für Verschiebungen und Einrückungen},
+@ref{paper-Variablen für Verschiebungen und Einrückungen,,@code{@bs{}paper}-Variablen für Verschiebungen und Einrückungen},
 @ref{Umgebungs-Plugins verändern}.
 
 Schnipsel:
index 858db18da05c3557eb2a1002efa48a6ca3782aa1..86c4f6d8b98d04264e48aab14595fef1cd49cac0 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes.
 @end ignore
 
-@c \version "2.17.19"
+@c \version "2.17.28"
 
 @c Translators: Till Paala
 
@@ -1872,7 +1872,7 @@ geändert werden, wie das folgende Beispiel zeigt.
 <<
   \new Voice = melody \relative c' {
     f4 \appoggiatura a32 b4
-    \grace { f16[ a16] } b2
+    \grace { f16 a16 } b2
     \afterGrace b2 { f16[ a16] }
     \appoggiatura a32 b4
     \acciaccatura a8 b4
@@ -1901,7 +1901,7 @@ die erste des Musikstückes ist, kann ein @code{\with}- oder
 @lilypond[verbatim,ragged-right,quote]
 <<
   \new Voice = melody \relative c' {
-    \grace { c16[( d e f] }
+    \grace { c16( d e f }
     g1) f
   }
   \new Lyrics \with { includeGraceNotes = ##t }
index d13b06c5258d4fa3eee13f59dfad293f4f0f2654..fc31bf40038478cc1883e0732dd4405ba5ef8604 100644 (file)
@@ -373,7 +373,7 @@ Quantisiert Tondauern zu Vielfachen von @var{LÄNGE}.
 @item -e, --explicit-durations
 Gibt alle Tondauern explizit an.
 
-@item -h,--help
+@item -h, --help
 Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen.
 
 @item -k, --key=@var{acc}[:@var{Moll}]
@@ -446,7 +446,7 @@ unterstützt:
 @item -a, --absolute
 Konvertiert in absolute Tonhöhen.
 
-@item -h,--help
+@item -h, --help
 Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen.
 
 @item -l, --language=SPRACHE
@@ -472,13 +472,13 @@ von Artikulations- und Lautstärkebezeichnungen.
 Konvertiert keine Informationen über die Balkensetzung aus der
 MusicXML-Datei. Stattdessen wird dies LilyPond überlassen.
 
-@item -o,--output=@var{Dateiname}
+@item -o, --output=@var{Dateiname}
 Die Ausgabe wird in die Datei @var{Dateiname}@file{.ly} geschrieben. Wird
 als @var{Dateiname} nur @file{-} angegeben, wird das Ergebnis der Konvertierung
 an der Kommandozeile ausgegeben. Wird diese Option nicht angegeben, so
 erfolgt die Ausgabe in die Datei @var{XML-Datei}@file{.ly}.
 
-@item -r,--relative
+@item -r, --relative
 Konvertiert in relative Tonhöhen. (Standardeinstellung)
 
 @item -v, --verbose
@@ -487,7 +487,7 @@ Gibt ausführliche informative Meldungen während der Konvertierung aus.
 @item --version
 Gibt die Versionsnummer aus.
 
-@item  -z,--compressed
+@item -z, --compressed
 Die Eingabedatei wird als komprimierte MusicXML-Datei eingelesen.
 Dies ist die Standardeinstellung für Dateien mit der Erweiterung
 @file{.xml}.
@@ -521,15 +521,15 @@ Die folgenden Kommandozeilenoptionen werden von @command{abc2ly}
 unterstützt:
 
 @table @code
-@item -b,--beams=None
+@item -b, --beams=None
 Die Balkensetzung aus der ABC-Datei erhalten.
-@item -h,--help
+@item -h, --help
 Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen.
-@item -o,--output=@var{Dateiname}
+@item -o, --output=@var{Dateiname}
 Die Ausgabe wird in die Datei @var{Dateiname}@file{.ly} geschrieben.
-@item -s,--strict
+@item -s, --strict
 Strenge Auslegung einer erfolgreichen Konvertierung.
-@item -v,--version
+@item -v, --version
 Gibt die Versionsnummer aus.
 @end table
 
@@ -608,9 +608,9 @@ Die folgenden Kommandozeilenoptionen werden von @command{etf2ly}
 unterstützt:
 
 @table @code
-@item -h,--help
+@item -h, --help
 Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen.
-@item -o,--output=@var{Dateiname}
+@item -o, --output=@var{Dateiname}
 Die Ausgabe wird in die Datei @var{Dateiname}@file{.ly} geschrieben.
 @item --version
 Gibt die Versionsnummer aus.
index 86ed612784f185cf8c442a048e12ca5f079fd3f5..a4a46406a21f7060637815548542d3d46810da0c 100644 (file)
@@ -154,13 +154,13 @@ Die folgenden Kommandozeilenoptionen werden von @command{lilypond} unterstützt:
 
 @table @code
 
-@item -d,--define-default=@var{Variable}=@var{Wert}
+@item -d, --define-default=@var{Variable}=@var{Wert}
 Siehe @ref{Fortgeschrittene Optionen auf der Kommandozeile für LilyPond}.
 
 @cindex Scheme, Auswertung von Ausdrücken
 @cindex Auswertung von Ausdrücken, Scheme
 
-@item -e,--evaluate=@var{expr}
+@item -e, --evaluate=@var{expr}
 Wertet den Scheme-Ausdruck @var{expr} aus, bevor die @file{.ly} Dateien
 gelesen und interpretiert werden.
 Die @code{-e} Option kann auch mehrfach angegeben werden, die Ausdrücke
@@ -186,20 +186,20 @@ Anführungsstriche einsetzen.}
 
 @cindex Ausgabeformat
 
-@item -f,--format=@var{Format}
+@item -f, --format=@var{Format}
 Bestimmt das Ausgabeformat. Mögliche Werte von @var{Format} sind
 @code{svg}, @code{ps}, @code{pdf} und @code{png}.
 
 Beispiel: @code{lilypond -fpng @var{Dateiname}.ly}
 
-@item -h,--help
+@item -h, --help
 Zeigt eine Zusammenfassung der Programmbenutzung und der Optionen.
 
-@item -H,--header=@var{FELD}
+@item -H, --header=@var{FELD}
 Gibt den Inhalt eines Feldes aus dem @code{\header}-Block in die Datei
 @file{Dateiname.@var{FELD}} aus.
 
-@item -i,--init=@var{Initialisierungsdatei}
+@item -i, --init=@var{Initialisierungsdatei}
 Benutzt @var{Initialisierungsdatei} zur gesamten Programminitialisierung. Der
 Standardwert ist @file{init.ly}.
 
@@ -216,7 +216,7 @@ fort, wenn die gesuchte Datei nicht in dem Verzeichnis gefunden wird.
 @cindex Kerker, Programm ausführen
 @cindex Jail, Programm ausführen
 
-@item -j,--jail=@var{Benutzer},@var{Gruppe},@var{Jail-Verzeichnis},@var{Arbeitsverzeichnis}
+@item -j, --jail=@var{Benutzer},@var{Gruppe},@var{Jail-Verzeichnis},@var{Arbeitsverzeichnis}
 Führt @command{lilypond} in einem chroot-Jail aus.
 
 Die @option{--jail} Option ist eine flexiblere Alternative zu @option{-dsafe}, wenn
@@ -283,7 +283,7 @@ auch @ref{LilyPond in chroot-Kerker}
 @cindex Logstufe
 @cindex Ausgabe, Ausführlichkeit
 
-@item -l,--loglevel=@var{Logstufe}
+@item -l, --loglevel=@var{Logstufe}
 Passt die Ausführlichkeit der Ausgabe auf der Kommandozeile entsprechend
 @var{Logstufe} an.  Mögliche Werte sind:
 
@@ -319,7 +319,7 @@ haben können.
 @cindex Ausgabedateiname
 @cindex Dateiname der Ausgabe bestimmen
 
-@item -o,--output=@var{DATEI} oder @var{ORDNER}
+@item -o, --output=@var{DATEI} oder @var{ORDNER}
 Schreibt das Ergebnis der Verarbeitung mit LilyPond in die Ausgabedatei
 @var{DATEI}.  Wenn ein Verzeichnis mit dem Namen existiert, werden die Ausgabedateien
 in dieses Verzeichnis gespeichert, wobei der Dateiname der Eingabedatei
@@ -348,14 +348,14 @@ werden durch
 @item --pdf
 Erzeugt PDF-Dateien. Dies impliziert @code{--ps}.
 
-@item -v,--version
+@item -v, --version
 Gibt die Versionsnummer aus.
 
-@item -V,--verbose
+@item -V, --verbose
 Gibt ausführliche informative Meldungen aus: Zeigt die vollen Dateipfade
 aller gelesenen Dateien sowie Informationen über die Laufzeit.
 
-@item -w,--warranty
+@item -w, --warranty
 Zeigt die Garantiebedingungen an, unter denen GNU LilyPond steht. (Es besteht
 @strong{KEINERLEI GARANTIE}!)
 
index 392844c26a9a9f69dbdb9e9849efd18bc2cf1e1d..bd84a1427ec67b9e9cd987fb212d124200f03b2e 100644 (file)
@@ -131,16 +131,16 @@ convert-ly [@var{Option}]@dots{} @var{Dateiname}@dots{}
 Folgende Optionen können benutzt werden:
 
 @table @code
-@item -e,--edit
+@item -e, --edit
 Die Konvertierung direkt am Original vornehmen, sodass es direkt verändert wird.
 
-@item -f,--from=@var{von-Versionsnummer}
+@item -f, --from=@var{von-Versionsnummer}
 Stellt die Versionsnummer ein, ab welcher die Konvertierung begonnen werden
 soll.  Wenn die Option nicht benutzt wird, rät @command{convert-ly} die Versionsnummer
 anhand des @code{\version}-Eintrags in der Datei.  Beispielsweise
 @option{--from=2.10.25}
 
-@item -n,--no-version
+@item -n, --no-version
 Normalerweise fügt @command{convert-ly} einen @code{\version}-Eintrag
 zu der konvertierten Datei hinzu.  Mit dieser Option wird das unterdrückt.
 
index 142cae556c76bc39be8db261d0e8bdbea38efe39..da1a2d9beadfb7a5d8c2c3595f884283ca9fd146 100644 (file)
@@ -7,7 +7,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @ignore
 Tutorial guidelines:  (different from policy.txt!)
@@ -599,7 +599,7 @@ expresión musical por la palabra clave @code{\appoggiatura} o
 @code{\acciaccatura}
 
 @lilypond[verbatim,quote,relative=2]
-c2 \grace { a32[ b] } c2 |
+c2 \grace { a32 b } c2 |
 c2 \appoggiatura b16 c2 |
 c2 \acciaccatura b16 c2 |
 @end lilypond
index a22a7441a466d5341a6d30e7ca7d7ba4241712b9..2f3bc52e40bfe386168d739b02fe1c6619fc7b38 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.18"
+@c \version "2.17.29"
 
 @node Conceptos fundamentales
 @chapter Conceptos fundamentales
@@ -1682,8 +1682,7 @@ a partir del nombre (en inglés), y viceversa.
   @tab Graba las claves
 @item Completion_heads_engraver
   @tab Divide las notas que atraviesan una línea divisoria
-@c The old Dynamic_engraver is deprecated. -jm
-@item New_dynamic_engraver
+@item Dynamic_engraver
   @tab Crea reguladores e indicaciones dinámicas textuales
 @item Forbid_line_break_engraver
   @tab Evita los saltos de línea si queda algún elemento musical activo
index 747ae2af6793b0b44aa2dd5b90586120ab1993b4..24991c0d308ea3e0473284e09a0cc9f663c39d1b 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.11"
+@c \version "2.17.27"
 
 @node Instrumentos de cuerda con trastes
 @section Instrumentos de cuerda con trastes
@@ -675,7 +675,7 @@ personalizada por omisión, podemos usar
 \layout @{
   \context @{
     \TabStaff
-    stringTunings = \stringTuning \notemode @{ <c' g' d'' a''> @}
+    stringTunings = \stringTuning <c' g' d'' a''>
   @}
 @}
 @end example
index 0cb45144c61a89a8b997865046f3c2871441dca7..285d259960247c766b160cb7d1be4b032c51af50 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @node Duraciones
 @section Duraciones
@@ -2571,7 +2571,7 @@ barras de notas normales.
 
 @lilypond[quote,verbatim,relative=2]
 c4 d8[
-\grace { e32[ d c d] }
+\grace { e32 d c d }
 e8] e[ e
 \grace { f16 }
 e8 e]
@@ -3452,7 +3452,7 @@ tiempo lógico adicional en el compás.
 
 @lilypond[quote,relative=2,verbatim]
 c4 \grace b16 a4(
-\grace { b16[ c16] } a2)
+\grace { b16 c16 } a2)
 @end lilypond
 
 Hay otros tres tipos posibles de notas de adorno; la
@@ -3468,7 +3468,7 @@ colocarla entre notas que están ligadas entre sí, utilizando la función
 @lilypond[quote,relative=2,verbatim]
 \acciaccatura d8 c4
 \appoggiatura e8 d4
-\acciaccatura { g16[ f] } e2
+\acciaccatura { g16 f } e2
 \slashedGrace a,8 g4
 \slashedGrace b16 a4(
 \slashedGrace b8 a2)
@@ -3480,8 +3480,8 @@ por cada corchea de adorno:
 
 @lilypond[quote,relative=2,verbatim]
 <<
-  \new Staff { e2 \grace { c16[ d e f] } e2 }
-  \new Staff { c2 \grace { g8[ b] } c2 }
+  \new Staff { e2 \grace { c16 d e f } e2 }
+  \new Staff { c2 \grace { g8 b } c2 }
 >>
 @end lilypond
 
@@ -3529,7 +3529,7 @@ nota principal.
 \new Voice {
   <<
     { d1^\trill_( }
-    { s2 s4. \grace { c16[ d] } }
+    { s2 s4. \grace { c16 d } }
   >>
   c1)
 }
index f113490eb3d0274ec3050bd6b5a027ecac44ce75..ded8f342fc99d89e58a3e0a48d243a86eb48f084 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @c Translation status: post-GDP
 
@@ -96,7 +96,7 @@ combinaciones de estos elementos, consulte
 @ref{Expresiones simultáneas}):
 
 @lilypond[verbatim,quote,relative=2]
-\grace { g8[( a b] }
+\grace { g8( a b }
 <> ) \p \< -. -\markup \italic "sempre staccato"
 \repeat unfold 4 { c4 e }  c1\f
 @end lilypond
index f48ce5aa06994523f4025ef5fa1b9da19b33adc0..e7d9315dd36d4a3f12d726be56ac8b2b87a9a6b2 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.11"
+@c \version "2.17.28"
 
 @ignore
 GDP TODO list
@@ -3202,7 +3202,7 @@ sin tener en cuenta las claves, líneas divisorias ni notas de adorno:
 
 @lilypond[quote,ragged-right,relative=2,verbatim]
 \override Score.SpacingSpanner.strict-note-spacing = ##t
-\new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c]  c32[ c] }
+\new Staff { c8[ c \clef alto c \grace { c16 c } c8 c c]  c32[ c] }
 @end lilypond
 
 @seealso
index 1d0f0d211caf4900aa7c52a45052e1f1eaad7a64..0ecd4806976aefb061e0bf7332c615bc425a750e 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.19"
+@c \version "2.17.28"
 
 @node Música vocal
 @section Música vocal
@@ -1987,7 +1987,7 @@ se utiliza @code{\lyricsto}, pero este comportamiento puede cambiarse:
 <<
   \new Voice = melody \relative c' {
     f4 \appoggiatura a32 b4
-    \grace { f16[ a16] } b2
+    \grace { f16 a16 } b2
     \afterGrace b2 { f16[ a16] }
     \appoggiatura a32 b4
     \acciaccatura a8 b4
@@ -2016,7 +2016,7 @@ bloque @code{\with} o @code{\context}:
 @lilypond[verbatim,ragged-right,quote]
 <<
   \new Voice = melody \relative c' {
-    \grace { c16[( d e f] }
+    \grace { c16( d e f }
     g1) f
   }
   \new Lyrics \with { includeGraceNotes = ##t }
index 8c5a793f693820dfcfa05f7352c9df7cdfce1d19..b7d1f1d8343e1aedd30002c5159a275ed74077c5 100644 (file)
@@ -501,7 +501,7 @@ Cuantizar las duraciones a @var{DURACIÓN}.
 @item -e, --explicit-durations
 Imprimir valores de figura explícitos.
 
-@item -h,--help
+@item -h, --help
 Mostrar un resumen de las instrucciones de utilización.
 
 @item -k, --key=@var{alteración}[:@var{minor}]
@@ -574,7 +574,7 @@ Si el nombre de archivo proporcionado es @file{-},
 @item -a, --absolute
 convertir las alturas en modo absoluto.
 
-@item -h,--help
+@item -h, --help
 mostrar un resumen de la utilización y las opciones.
 
 @item -l, --language=IDIOMA
@@ -602,21 +602,21 @@ articulaciones, dinámica, etc.
 no convertir la información de las barras, en vez de ello usar el
 barrado automático de LilyPond.
 
-@item -o,--output=@var{archivo}
+@item -o, --output=@var{archivo}
 fijar el nombre del archivo de salida como @var{archivo}. Si
 @var{archivo} es @file{-}, la salida se imprime sobre stdout, la
 salida estándar.  Si no se da, se usa @var{archivo_xml}@file{.ly}.
 
-@item -r,--relative
+@item -r, --relative
 convertir las alturas en modo relativo (predeterminado).
 
-@item -v,--verbose
+@item -v, --verbose
 ser prolijo.
 
-@item -v,--version
+@item -v, --version
 imprimir la información de la versión.
 
-@item -z,--compressed
+@item -z, --compressed
 el archivo de entrada es un archivo MusicXML comprimido en zip.
 @end table
 
@@ -648,13 +648,13 @@ abc2ly [@var{opción}]@dots{} @var{archivo_abc}
 @command{abc2ly} contempla las siguientes opciones:
 
 @table @code
-@item -b,--beams=None
+@item -b, --beams=None
 preservar la noción de ABC de las barras
-@item -h,--help
+@item -h, --help
 esta ayuda
-@item -o,--output=@var{archivo}
+@item -o, --output=@var{archivo}
 fijar el nombre del archivo de salida como @var{archivo}.
-@item -s,--strict
+@item -s, --strict
 ser estricto respecto al éxito
 @item --version
 imprimir la información de la versión.
@@ -721,9 +721,9 @@ formatos}, para obtener más información acerca de esto.
 @command{etf2ly} contempla las siguientes opciones:
 
 @table @code
-@item -h,--help
+@item -h, --help
 esta ayuda
-@item -o,--output=@var{ARCHIVO}
+@item -o, --output=@var{ARCHIVO}
 fijar el nombre del archivo de salida como @var{ARCHIVO}
 @item --version
 información de la versión
index 909659aed2bb3e67e86e53947187dbee77a25410..a7beedf7b4f0f41dc1dc8b25a9dc2697424dfda2 100644 (file)
@@ -142,13 +142,13 @@ Están contempladas las siguientes opciones:
 
 @table @code
 
-@item -d,--define-default=@var{variable}=@var{valor}
+@item -d, --define-default=@var{variable}=@var{valor}
 Véase @ref{Opciones avanzadas de línea de órdenes para LilyPond}.
 
 @cindex Scheme, evaluación de expresiones
 @cindex expresiones de Scheme, evaluación
 
-@item -e,--evaluate=@var{expresión}
+@item -e, --evaluate=@var{expresión}
 Evaluar la @var{expresión} de Scheme antes de analizar los archivos
 @file{.ly}.  Se pueden pasar varias opciones @option{-e}, que se
 evaluarán en secuencia.
@@ -175,19 +175,19 @@ al principio del archivo @file{.ly}.
 @cindex output, format
 @cindex format, output
 
-@item -f,--format=@var{format}
+@item -f, --format=@var{format}
 which formats should be written.  Choices for @code{format} are
 @code{ps}, @code{pdf}, and @code{png}.
 
 Example: @code{lilypond -fpng @var{filename}.ly}
 
-@item -h,--help
+@item -h, --help
 Mostrar un resumen de las formas de utilización.
 
-@item -H,--header=@var{CAMPO}
+@item -H, --header=@var{CAMPO}
 Volcar un campo de cabecera al archivo @file{NOMBREBASE.@var{CAMPO}}
 
-@item -i,--init=@var{archivo}
+@item -i, --init=@var{archivo}
 Establecer el archivo de inicio a @var{archivo} (predeterminado:
 @file{init.ly}).
 
@@ -204,7 +204,7 @@ encuentra, la búsqueda continúa en los directorios siguientes.
 
 @cindex chroot, ejecutar dentro de una jaula
 
-@item -j,--jail=@var{usuario},@var{grupo},@var{jaula},@var{directorio}
+@item -j, --jail=@var{usuario},@var{grupo},@var{jaula},@var{directorio}
 Ejecutar @command{lilypond} en una jaula de chroot.
 
 La opción @option{--jail} (jaula) proporciona una alternativa más
@@ -277,7 +277,7 @@ tamaño de la memoria que se puede reservar.  Véase también
 @cindex registro, nivel de
 @cindex salida prolija, fijar el nivel
 
-@item -l,--loglevel=@var{LEVEL}
+@item -l, --loglevel=@var{LEVEL}
 Fijar el grado en que la salida de consola es prolija al nivel
 @var{LEVEL}. Los valores posibles son:
 
@@ -310,7 +310,7 @@ prolija.
 @cindex carpeta, dirigir la salida hacia
 @cindex salida, establecer el nombre del archivo de
 
-@item -o,--output=@var{ARCHIVO} o @var{CARPETA}
+@item -o, --output=@var{ARCHIVO} o @var{CARPETA}
 Establecer el nombre del archivo de salida predeterminado a
 @var{ARCHIVO} o, si existe una carpeta con ese nombre, dirigir la
 salida hacia @var{CARPETA}, tomando el nombre de archivo del documento
@@ -341,14 +341,14 @@ con
 @item --pdf
 Generar PDF.  Implica @option{--ps}.
 
-@item -v,--version
+@item -v, --version
 Mostrar la información de la versión.
 
-@item -V,--verbose
+@item -V, --verbose
 Ser prolijo: mostrar las rutas completas de todos los archivos que se
 leen, y dar información cronométrica.
 
-@item -w,--warranty
+@item -w, --warranty
 Mostrar la garantía con que viene GNU LilyPond (¡no viene con
 @strong{NINGUNA GARANTÍA}!).
 
index 82e16062464d499e0d7e14ead7985a33768a1dac..07a98c406de45fac0d5c18e34c1a60c8118c4ea7 100644 (file)
@@ -167,18 +167,18 @@ convert-ly [@var{opción}]@dots{} @var{archivo}@dots{}
 Se pueden dar las siguientes opciones:
 
 @table @code
-@item -d,--diff-version-update
+@item -d, --diff-version-update
 incrementar la cadena @code{\version} solamente si el archivo
 efectivamente ha cambiado.  Sin esta opción (o si cualquier
 conversión ha modificado el archivo), la cabecera de versión
 refleja la regla de conversión que se ha tenido en cuenta en
 último lugar.
 
-@item -e,--edit
+@item -e, --edit
 Aplicar las conversiones directamente al archivo de entrada,
 modificándolo in situ.
 
-@item -f,--from=@var{versión_de_origen}
+@item -f, --from=@var{versión_de_origen}
 Establece la versión desde la que convertir.  Si no aparece esta
 opción, @command{convert-ly} tratará de adivinarla, basándose en el
 enunciado @code{\version} del archivo.  Ejemplo: @option{--from=2.10.25}
@@ -192,7 +192,7 @@ valores posibles son @code{NONE} (ninguno), @code{ERROR} (errores),
 @code{WARNING} (advertencias), @code{PROGRESS} (avance;
 predeterminado) y @code{DEBUG} (depuración).
 
-@item -n,--no-version
+@item -n, --no-version
 Normalmente @command{convert-ly} añade un indicador @code{\version} a
 la salida.  La especificación de esta opción lo suprime.
 
index 23b0658066621c0501e64c704a23ae816924c5f4..b4d7e1984e14e2fc340a8a0423c2207135c8a7b1 100644 (file)
@@ -229,7 +229,7 @@ for Adequately Representing Score-level Music},
 }
 
 @Article{blostein91,
-  note = {This paper provides a overview of the algorithm used in LIME
+  note = {This paper provides an overview of the algorithm used in LIME
   for spacing individual lines. HWN},
   year = {1991},
   title = {Justification of Printed Music},
index f419af4e658594a75b9bea75dda27f7f16aabbb9..ecbddcbe35b7565c04d25d10450b92367b0ba803 100644 (file)
@@ -91,7 +91,7 @@ reference work for music notation issues as one is likely to get.},
 @Book{wanske88,
   annote = {I. A very thorough overview of engraving practices of various
 craftsmen. It includes detailed specs of characters, dimensions
-etc. II. a thorough overview of a anonymous (by now antiquated)
+etc. II. a thorough overview of an anonymous (by now antiquated)
 automated system. EDV Means e(lektronischen) D(aten)v(erarbeitung),
 electronic data processing HWN.},
   year = {1988},
index aafb4fc5d31759989784dc26733b4d29042803ec..311a13807362de516cd5670a88a3c37d6f2d4faf 100644 (file)
@@ -804,6 +804,26 @@ you avoid performance pitfalls by just using Scheme arguments for
 the leading arguments of markup functions that take a markup as
 their last argument.
 
+@funindex \markup
+@cindex markup macro
+@funindex interpret-markup
+Markup commands have a rather complex life cycle.  The body of a
+markup command definition is responsible for converting the
+arguments of the markup command into a stencil expression which is
+returned.  Quite often this is accomplished by calling the
+@code{interpret-markup} function on a markup expression, passing
+the @var{layout} and @var{props} arguments on to it.  Those
+arguments are usually only known at a very late stage in
+typesetting.  Markup expressions have their components assembled
+into markup expressions already when @code{\markup} in a LilyPond
+expression or the @code{markup} macro in Scheme is expanded.  The
+evaluation and typechecking of markup command arguments happens at
+the time @code{\markup}/@code{markup} are interpreted.
+
+But the actual conversion of markup expressions into stencil
+expressions by executing the markup function bodies only happens
+when @code{interpret-markup} is called on a markup expression.
+
 @node On properties
 @unnumberedsubsubsec On properties
 
@@ -1047,12 +1067,18 @@ stencils are combined using @code{ly:stencil-add}:
 
 @node New markup list command definition
 @subsection New markup list command definition
+@funindex define-markup-list-command
+@funindex interpret-markup-list
 Markup list commands are defined with the
 @code{define-markup-list-command} Scheme macro, which is similar to the
 @code{define-markup-command} macro described in
 @ref{New markup command definition}, except that where the latter returns
 a single stencil, the former returns a list of stencils.
 
+In a similar vein, @code{interpret-markup-list} is used instead of
+@code{interpret-markup} for converting a markup list into a list
+of stencils.
+
 In the following example, a @code{\paragraph} markup list command is
 defined, which returns a list of justified lines, the first one being
 indented.  The indent width is taken from the @code{props} argument.
@@ -1277,16 +1303,15 @@ my-callback = #(lambda (grob)
 @node Inline Scheme code
 @section Inline Scheme code
 
-TODO: the example for this section is ill-chosen since
-@example
-F = -\tweak font-size #-3 -\flageolet
-@end example
-(note the @samp{-} marking it as a post event) will actually work fine
-for the stated purpose.  Until this section gets a rewrite, let's
-pretend we don't know.
+TODO: after this section had been written, LilyPond has improved
+to the point that finding a @emph{simple} example where one would
+@emph{have} to revert to Scheme has become rather hard.
+
+Until this section gets a rewrite, let's pretend we don't know.
 
 The main disadvantage of @code{\tweak} is its syntactical
-inflexibility.  For example, the following produces a syntax error.
+inflexibility.  For example, the following produces a syntax error
+(or rather, it did so at some point in the past).
 
 @example
 F = \tweak font-size #-3 -\flageolet
index 55fb8ff7ff9f0d3eea5e44f48451d333fc03e23a..e99e0b0371759f104fd0b264b80bbbc02f1af9ea 100644 (file)
@@ -26,7 +26,7 @@ Tutorial guidelines:  (different from policy.txt!)
 
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @c Translators: Nicolas Grandclaude, Ludovic Sardain, Gauvain Pocentek
 @c Translation checkers: Jean-Charles Malahieude, Valentin Villenave, John Mandereau
@@ -616,7 +616,7 @@ Des @notation{notes d'ornement} s'obtiennent en appliquant la commande
 expression musicale :
 
 @lilypond[verbatim,quote,relative=2]
-c2 \grace { a32[ b] } c2 |
+c2 \grace { a32 b } c2 |
 c2 \appoggiatura b16 c2 |
 c2 \acciaccatura b16 c2 |
 @end lilypond
index 4ff0b02a351f25df2d090ead7ffaa7a6adfa933f..523c2a9c50a4e628ce9e5d3debf8b4822745dd86 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.18"
+@c \version "2.17.29"
 
 @c Translators: Valentin Villenave, Jean-Charles Malahieude
 @c Translation checkers: John Mandereau
@@ -1655,7 +1655,7 @@ partir du nom, et vice versa.
   @tab Grave les clefs
 @item Completion_heads_engraver
   @tab Divise les notes qui dépassent de la mesure
-@item New_dynamic_engraver
+@item Dynamic_engraver
   @tab Crée les soufflets et textes de nuance
 @item Forbid_line_break_engraver
   @tab Empêche un saut de ligne si un élément musical est toujours actif
index 4a4b34ebbefdd968aca886625003f2f64c71279e..30e46a85f8ac92f18325435bf3fde532e2277007 100644 (file)
@@ -245,7 +245,7 @@ style de ligature désiré, il faut remplacer, dans le contexte
 @code{Voice} approprié, le graveur @code{Ligature_bracket_engraver} par
 le graveur de ligature qui convient -- voir les rubriques
 @ref{Ligatures mensurales} et @ref{Neumes et ligatures grégoriennes} à
-ce sujet. 
+ce sujet.
 
 @seealso
 Glossaire musicologique :
@@ -428,7 +428,7 @@ clés utilisent le même glyphe, attaché à l'une ou l'autre des lignes
 de la portée.  Le chiffre porté en suffixe permet alors de les
 différencier.  Vous pouvez forcer le positionnement du glyphe sur une
 ligne, comme expliqué à la section @ref{Clefs}.  Dans la colonne
-exemple, la note suivant la clé est un do médium. 
+exemple, la note suivant la clé est un do médium.
 
 Les clés d'ut de Petrucci avaient une hampe gauche différente selon
 leur ligne de rattachement.
@@ -652,7 +652,7 @@ Voici les différences entre les styles :
 @end lilypond
 
 La rubrique @ref{Métrique} expose les principes généraux sur
-l'utilisation des indications de métrique. 
+l'utilisation des indications de métrique.
 
 @seealso
 Glossaire musicologique :
@@ -692,7 +692,7 @@ commande @code{\time}.  Utilisez alors un
 Pour de la musique ancienne, vous disposez de plusieurs styles de tête
 de note, en plus du style par défaut @code{default}.  Vous pouvez
 affecter à la propriété @code{style} de l'objet @code{NoteHead}
-les valeurs @code{baroque}, @code{neomensural}, @code{mensural}, 
+les valeurs @code{baroque}, @code{neomensural}, @code{mensural},
 @code{petrucci}, @code{blackpetrucci} ou @code{semipetrucci}.
 
 Le style @code{baroque} diffère du style @code{default} par
@@ -2674,7 +2674,7 @@ Manuel de notation :
 
 @knownissues
 L'espacement des ligatures n'est pas des meilleurs.
+
 
 @node Réédition de musique ancienne
 @subsection Réédition de musique ancienne
@@ -2950,7 +2950,7 @@ spirLyr = \lyricmode {
 @c try Till Rettig
 @c Add example of white note heads:
 @c In the french baroque some composers used white note heads in slow pieces,
-@c mainly in 3/2-time.  A quarter looks there like a eighth with a white
+@c mainly in 3/2-time.  A quarter looks there like an eighth with a white
 @c note head.  (Franz-Rudolf Kuhnen)
 
 @c TODO Add example of this:
index 0d87192696448b737fdde0449d7a90b66cfbf772..f6a57a8efc7ebef179fb58907d74366b5d61135a 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.11"
+@c \version "2.17.27"
 
 @c Translators: Matthieu Jacquot
 @c Translation checkers: Jean-Charles Malahieude
@@ -665,7 +665,7 @@ accordage personnalisé dès lors que votre fichier comportera une clause
 \layout @{
   \context @{
     \TabStaff
-    stringTunings = \stringTuning \notemode @{ <c' g' d'' a''> @}
+    stringTunings = \stringTuning <c' g' d'' a''>
   @}
 @}
 @end example
index 9890ba6fd987a6c4d7431f267af1ab3095ccb2f9..6272da24a7746fca925594eaf12245b233c05d30 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @c Translators: Frédéric Chiasson, Jean-Charles Malahieude
 @c Translation checkers: Valentin Villenave, François Martin, Xavier Scheuer
@@ -2572,7 +2572,7 @@ qui est en place au niveau de la notation normale.
 
 @lilypond[quote,verbatim,relative=2]
 c4 d8[
-\grace { e32[ d c d] }
+\grace { e32 d c d }
 e8] e[ e
 \grace { f16 }
 e8 e]
@@ -3427,7 +3427,7 @@ pas de temps dans la mesure.
 
 @lilypond[quote,relative=2,verbatim]
 c4 \grace b16 a4(
-\grace { b16[ c16] } a2)
+\grace { b16 c16 } a2)
 @end lilypond
 
 Les plus courantes sont les acciaccatures, qui doivent se jouer très
@@ -3441,7 +3441,7 @@ déjà liées.
 @lilypond[quote,relative=2,verbatim]
 \acciaccatura d8 c4
 \appoggiatura e8 d4
-\acciaccatura { g16[ f] } e2
+\acciaccatura { g16 f } e2
 \slashedGrace a,8 g4
 \slashedGrace b16 a4(
 \slashedGrace b8 a2)
@@ -3453,8 +3453,8 @@ pour chaque petite croche.
 
 @lilypond[quote,relative=2,verbatim]
 <<
-  \new Staff { e2 \grace { c16[ d e f] } e2 }
-  \new Staff { c2 \grace { g8[ b] } c2 }
+  \new Staff { e2 \grace { c16 d e f } e2 }
+  \new Staff { c2 \grace { g8 b } c2 }
 >>
 @end lilypond
 
@@ -3502,7 +3502,7 @@ sept huitièmes de la durée de la note de base :
 \new Voice {
   <<
     { d1^\trill_( }
-    { s2 s4. \grace { c16[ d] } }
+    { s2 s4. \grace { c16 d } }
   >>
   c1)
 }
index abf8a4104ec8ccf8ae876375675d2a521fb51062..4d6b1769058a77ad022b87e84b7b7189bf2d451d 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @c Translators: Frédéric Chiasson, Valentin Villenave, Jean-Charles Malahieude
 @c Translation checkers: Jean-Charles Malahieude, John Mandereau
@@ -98,7 +98,7 @@ sera donc combiné -- pour des combinaisons plus complexes, voir
 @ref{Expressions simultanées}.
 
 @lilypond[verbatim,quote,relative=2]
-\grace { g8[( a b] }
+\grace { g8( a b }
 <> ) \p \< -. -\markup \italic "sempre staccato"
 \repeat unfold 4 { c4 e }  c1\f
 @end lilypond
index bcd11d5cdb0e0aee6c14a9d8034377bd53997c5c..4d394c2375d3591846e35b1ee5379f471ba9382d 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.11"
+@c \version "2.17.28"
 
 @c Translators: Frédéric Chiasson, Jean-Charles Malahieude
 
@@ -3207,7 +3207,7 @@ d'ornement qui pourraient apparaître :
 
 @lilypond[quote,ragged-right,relative=2,verbatim]
 \override Score.SpacingSpanner.strict-note-spacing = ##t
-\new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c]  c32[ c] }
+\new Staff { c8[ c \clef alto c \grace { c16 c } c8 c c]  c32[ c] }
 @end lilypond
 
 @seealso
index d0ca024bd82e20d20cfdfec4d9fa86835b375f0a..aa380079bf2cc93a1ba3f76f2e0e6a70ac3c2700 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.19"
+@c \version "2.17.28"
 
 @c Translators: Valentin Villenave, Jean-Charles Malahieude
 @c Translation checkers: Jean-Jacques Gerbaud
@@ -1970,7 +1970,7 @@ propriété @code{includeGraceNotes} :
 <<
   \new Voice = melody \relative c' {
     f4 \appoggiatura a32 b4
-    \grace { f16[ a16] } b2
+    \grace { f16 a16 } b2
     \afterGrace b2 { f16[ a16] }
     \appoggiatura a32 b4
     \acciaccatura a8 b4
@@ -1999,7 +1999,7 @@ clause @code{\with} ou @code{\context} :
 @lilypond[verbatim,ragged-right,quote]
 <<
   \new Voice = melody \relative c' {
-    \grace { c16[( d e f] }
+    \grace { c16( d e f }
     g1) f
   }
   \new Lyrics \with { includeGraceNotes = ##t }
index cfd93bdea3ad80467d1b95a09dbfe533457951b7..5c4e3479ea261c48817413a45b1d9c9b521f8d8a 100644 (file)
@@ -520,7 +520,7 @@ Quantiser les durées à partir de @var{DUR}.
 @item -e, --explicit-durations
 Rendu explicite des durées.
 
-@item -h,--help
+@item -h, --help
 Afficher un résumé des utilisations.
 
 @item -k, --key=@var{acc}[:@var{minor}]
@@ -588,7 +588,7 @@ directement à partir de la ligne de commande.
 @item -a, --absolute
 Rendu en hauteurs absolues.
 
-@item -h,--help
+@item -h, --help
 Afficher un résumé des utilisations.
 
 @item -l, --language=LANG
@@ -615,21 +615,21 @@ articulations, nuances, etc.
 Ne pas convertir les informations de ligature ; laisser LilyPond
 gérer les ligatures automatiquement.
 
-@item -o,--output=@var{file}
+@item -o, --output=@var{file}
 Générer le résultat dans le fichier @var{fichier}.  S'il n'est pas
 déterminé, ce sera @var{fichier-xml}@file{.ly} ; @file{-}
 produira le résultat sur la sortie standard (@var{stdout}).
 
-@item -r,--relative
+@item -r, --relative
 Rendu en hauteurs relatives (mode par défaut).
 
-@item -v,--verbose
+@item -v, --verbose
 Mode verbeux.
 
 @item --version
 Afficher le numéro de version.
 
-@item -z,--compressed
+@item -z, --compressed
 Le fichier d'entrée est un fichier MusicXML zippé.
 @end table
 
@@ -659,16 +659,16 @@ abc2ly [@var{option}]@dots{} @var{fichier-abc}
 @command{abc2ly} accepte les options suivantes :
 
 @table @code
-@item -b,--beams=None
+@item -b, --beams=None
 Préserver la notion de lien de croches propre à ABC.
 
-@item -h,--help
+@item -h, --help
 Afficher un résumé des utilisations.
 
-@item -o,--output=@var{file}
+@item -o, --output=@var{file}
 Générer le résultat dans le fichier @var{file}.
 
-@item -s,--strict
+@item -s, --strict
 Être strict sur la réussite.
 
 @item --version
@@ -738,7 +738,7 @@ commande du système.  Pour plus de précisions, reportez-vous à
 @command{etf2ly} accepte les options suivantes :
 
 @table @code
-@item -h,--help
+@item -h, --help
 Afficher cette aide.
 
 @item -o, --output=@var{file}
index 19252f6503d545b2ce3778f21a6ac6fedd763594..77b0574273179ce38e6e907cca98f87a3a3f0cff 100644 (file)
@@ -150,12 +150,12 @@ Différentes options sont disponibles en ligne de commande :
 
 @table @code
 
-@item -d,--define-default=@var{variable}=@var{valeur}
+@item -d, --define-default=@var{variable}=@var{valeur}
 Voir @ref{Options avancées de lilypond}.
 
 @cindex Scheme, évaluation d'expression
 @cindex expression Scheme, évaluation
-@item -e,--evaluate=@var{expr}
+@item -e, --evaluate=@var{expr}
 Évalue l'expression Scheme @var{expr} avant d'analyser tout fichier
 @file{.ly}.  Lorsque vous spécifiez l'option @option{-e} à plusieurs
 reprises, l'évaluation sera faite en séquence.
@@ -184,25 +184,25 @@ doubles @code{"} en lieu et place des guillemets simples @code{'}.}
 
 @cindex sortie, format
 @cindex format de sortie
-@item -f,--format=@var{format}
+@item -f, --format=@var{format}
 Détermine le format à produire.  Il peut s'agir de @code{ps}, @code{pdf}
 ou @code{png}.
 
 Exemple : @code{lilypond -fpng @var{monfichier}.ly}
 
-@item -h,--help
+@item -h, --help
 Affiche un résumé des commandes.
 
-@item -H,--header=@var{CHAMP}
+@item -H, --header=@var{CHAMP}
 Recopie le champ d'entête dans le fichier @file{RACINE.@var{CHAMP}}.
 
-@item -i,--init=@var{fichier}
+@item -i, --init=@var{fichier}
 Définit @var{fichier} (par défaut @file{init.ly}) en tant que fichier
 d'initialisation.
 
 @cindex recherche de fichier
 @cindex chemin de recherche
-@item -I,--include=@var{répertoire}
+@item -I, --include=@var{répertoire}
 Ajoute @var{répertoire} au chemin de recherche pour les inclusions.
 
 Vous pouvez mentionner plusieurs fois l'option @option{-I}, auquel cas
@@ -211,7 +211,7 @@ fichier en question ne s'y trouve pas, les répertoires suivants seront
 examinés l'un après l'autre.
 
 @cindex chroot jail, fonctionnement
-@item -j,--jail=@var{user},@var{group},@var{jail},@var{dir}
+@item -j, --jail=@var{user},@var{group},@var{jail},@var{dir}
 Lance @command{lilypond} dans un environnement protégé.
 
 L'option @option{--jail} est une alternative qui offre plus de
@@ -279,7 +279,7 @@ mémoire.  Voir aussi @ref{Exécution de LilyPond en mode protégé}.
 
 @cindex loglevel
 @cindex verbosité, définir le degré de
-@item -l,--loglevel=@var{DEGRÉ}
+@item -l, --loglevel=@var{DEGRÉ}
 Règle le niveau de verbosité des messages console à @var{DEGRÉ}.  Les
 différentes valeurs sont :
 
@@ -314,7 +314,7 @@ Tout ce qui peut être affiché, y compris le verbiage utile au débogage.
 @cindex redirection
 @cindex répertoire de destination
 @cindex fichier de destination
-@item -o,--output=@var{FICHIER} ou @var{RÉPERTOIRE}
+@item -o, --output=@var{FICHIER} ou @var{RÉPERTOIRE}
 Détermine le nom par défaut du fichier résultant à @var{FICHIER} ;
 lorsque l'argument @var{RÉPERTOIRE} correspond à un répertoire déjà
 existant, c'est là que les fichiers résultants seront déposés.  Le
@@ -341,14 +341,14 @@ se régler en ajoutant par exemple
 @item --pdf
 Génère du PDF.  Ceci sous-entend l'utilisation de @option{--ps}.
 
-@item -v,--version
+@item -v, --version
 Affiche le numéro de version.
 
-@item -V,--verbose
+@item -V, --verbose
 Active le mode verbeux : affichage de l'intégralité du chemin
 d'accès de chaque fichier, et information des temps de traitement.
 
-@item -w,--warranty
+@item -w, --warranty
 Affiche les informations de garantie applicables à GNU LilyPond -- il
 est livré @strong{SANS GARANTIE} !
 
index b7c5b2dbb0278a61e0bf304fbad49b02b4c844c1..36881a01f35f985b664f793ad51ac425b9f376b2 100644 (file)
@@ -167,7 +167,7 @@ effectivement modifié.  En l'absence de cette option, ou bien si une
 conversion quelle qu'elle soit a modifié le fichier, la mention de
 version est porté à la valeur de la règle appliquée la plus récente.
 
-@item -e,--edit
+@item -e, --edit
 pour éditer directement le fichier d'origine.
 
 @item -f, --from=@var{from-patchlevel}
index 0e7c28c13845870664a38e1347332ef8515b055b..29fb660a1a5c2175fe40d76da5ba890afc171ada 100644 (file)
@@ -9,7 +9,7 @@
 @end ignore
 
 
-@c \version "2.17.11"
+@c \version "2.17.28"
 
 @node Elemi kottaírás
 @chapter Elemi kottaírás
@@ -479,7 +479,7 @@ az @code{\appoggiatura}, súlytalanok előtt az @code{\acciaccatura} parancs
 áll:
 
 @lilypond[verbatim,quote,relative=2]
-c2 \grace { a32[ b] } c2
+c2 \grace { a32 b } c2
 c2 \appoggiatura b16 c2
 c2 \acciaccatura b16 c2
 @end lilypond
index 39a50e5f6e8b0e306bba0bae8e3e6b039314840d..06ed20b8e0d6d52f787e3aa6952eabe6ea8797fa 100644 (file)
@@ -10,7 +10,7 @@
 
 
 @c -*- coding: utf-8; mode: texinfo; -*-
-@c \version "2.17.18"
+@c \version "2.17.29"
 @node Alapfogalmak
 @chapter Alapfogalmak
 @translationof Fundamental concepts
@@ -1749,8 +1749,7 @@ from the name, or vice versa.
   @tab Engraves clefs
 @item Completion_heads_engraver
   @tab Splits notes which cross bar lines
-@c The old Dynamic_engraver is deprecated. -jm
-@item New_dynamic_engraver
+@item Dynamic_engraver
   @tab Creates hairpins and dynamic texts
 @item Forbid_line_break_engraver
   @tab Prevents line breaks if a musical element is still active
index 95ff637baa2e93e2b309c281a0b276ea7ceb6fc9..f72f60ea9eb156670cb532655a79cdb231afec90 100644 (file)
@@ -105,7 +105,7 @@ A következő parancssori opciók támogatottak:
 
 @table @code
 
-@item -e,--evaluate=@var{kifejezés}
+@item -e, --evaluate=@var{kifejezés}
 A Scheme @var{kifejezés} kiértékelése az @file{.ly} fájlok beolvasása előtt.
 Több @code{-e} opció is megadható, ezek a megadott sorrendben lesznek
 végrehajtva.
@@ -125,12 +125,12 @@ a forrásfájl elejére pedig a következőt kell beszúrni:
 #(use-modules (guile-user))
 @end example
 
-@item -f,--format=@var{formátum}
+@item -f, --format=@var{formátum}
 A kimenet formátuma. Lehetőségek: @code{ps}, @code{pdf} vagy @code{png}.
 
 Példa: @code{lilypond -fpng @var{fájlnév}.ly}
 
-@item -d,--define-default=@var{azonosító}=@var{érték}
+@item -d, --define-default=@var{azonosító}=@var{érték}
 Az @var{azonosító} nevű belső változó beállítása az @var{érték} Scheme
 értékre. Ha az @var{érték} nincs megadva, az alapértelmezett @code{#t}
 lesz a változó értéke. Egy opció kikapcsolásához a @code{no-} prefixumot
@@ -273,21 +273,21 @@ opció a @code{-dpreview} opcióval együtt hasznos.
 @end table
 
 
-@item -h,--help
+@item -h, --help
 Összegzés az alkalmazás használatáról.
 
-@item -H,--header=@var{mező}
+@item -H, --header=@var{mező}
 A megadott fejlécmező kiírása a @file{@var{fájlnév}.@var{mező}} nevű fájlba.
 
 @item --include, -I=@var{könyvtár}
 A @var{könyvtár} hozzáadása a bemeneti fájlok keresési útvonalához.
 @cindex keresési útvonal
 
-@item -i,--init=@var{fájl}
+@item -i, --init=@var{fájl}
 Az inicializáló fájl beállítása a megadott @var{fájl}ra. (Alapértelmezett:
 @file{init.ly}.)
 
-@item -o,--output=@var{fájl}
+@item -o, --output=@var{fájl}
 Kimeneti fájl megadása. A megfelelő kiterjesztés automatikusan hozzáfűzésre
 kerül (pl. @code{.pdf} PDF kimenet esetén).
 
@@ -312,7 +312,7 @@ következőképpen állítható be:
 PDF generálása. A @code{--ps} opció hatását vonja maga után.
 
 
-@item -j,--jail=@var{felhasználó},@var{csoport},@var{börtön},@var{könyvtár}
+@item -j, --jail=@var{felhasználó},@var{csoport},@var{börtön},@var{könyvtár}
 A @command{lilypond} futtatása ún. börtönben.
 
 A @code{--jail} opció egy rugalmasabb alternatíva a @code{-dsafe} módnál abban
@@ -367,14 +367,14 @@ illetve a memóriafoglalásáé is.
 @end table
 
 
-@item -v,--version
+@item -v, --version
 Verzióinformáció kijelzése.
 
-@item -V,--verbose
+@item -V, --verbose
 Bőbeszédűség bekapcsolása: az összes beolvasott fájl elérési útjának,
 futásidőknek és egyéb információknak a kijelzése.
 
-@item -w,--warranty
+@item -w, --warranty
 A GNU LilyPond garanciavállalásának kijelzése. (A LilyPond fejlesztői
 @strong{SEMMIFÉLE GARANCIÁT} nem vállalnak!)
 @end table
index ccf924e16151eff77bd07542b1418315a36315f9..5af9712ccd42300ca55e264a029e8c06f123e053 100644 (file)
@@ -121,15 +121,15 @@ convert-ly [@var{opció}]@dots{} @var{fájlnév}@dots{}
 A következő opciók adhatóak meg:
 
 @table @code
-@item -e,--edit
+@item -e, --edit
 A fájl helyben frissítése.
 
-@item -f,--from=@var{forrásverzió}
+@item -f, --from=@var{forrásverzió}
 A forrásfájl verziójának megadása. Ha nincs megadva, a @command{convert-ly}
 a fájlban található @code{\version} parancs alapján kitalálja.
 Példa: @code{--from=2.10.25}
 
-@item -n,--no-version
+@item -n, --no-version
 Alapesetben a @command{convert-ly} ellátja a kimenetét a megfelelő
 @code{\version} paranccsal. Ez az opció ezt tiltja le.
 
index 45011f35a629e89ba3e4ec2172716a94655d3d8d..28d1a54639f8054e4eb24ae5989c834530851eab 100644 (file)
@@ -178,11 +178,16 @@ Core developer, Schemer extraordinaire
 @c use commas not colons
 
 Aleksandr Andreev,
+Frédéric Bron,
 Marc Hohl,
+James Lowe,
+David Nalesnik,
 Keith OHara,
 Benkő Pál,
 Anders Pilegaard,
-Julien Rioux
+Julien Rioux,
+Johannes Rohrer,
+Adam Spiers
 
 @c no comma for last entry
 
@@ -205,7 +210,10 @@ Julien Rioux
 @c use commas not colons
 
 Frédéric Bron,
+Federico Bruni,
 James Lowe,
+Jean-Charles Malahieude,
+Guy Stalnaker,
 Arnold Theresius,
 Rodolfo Zitellini
 
@@ -248,7 +256,8 @@ Federico Bruni,
 Felipe Castro,
 Pavel Fric,
 Jean-Charles Malahieude,
-Till Rettig
+Till Rettig,
+Luca Rossetto Casel
 
 @c no comma for last entry
 
index e9930f81518957455ab075065cd0eb35756b0143..3a12ad6fa20f5810450802cfcb33c4f696cb5ea2 100644 (file)
@@ -9,7 +9,7 @@
 @end ignore
 
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @ignore
 Tutorial guidelines:  (different from policy.txt!)
@@ -565,7 +565,7 @@ ma possono essere creati anche ponendo davanti a un'espressione
 musicale le parole chiave @code{\appoggiatura} o @code{\acciaccatura}:
 
 @lilypond[verbatim,quote,relative=2]
-c2 \grace { a32[ b] } c2 |
+c2 \grace { a32 b } c2 |
 c2 \appoggiatura b16 c2 |
 c2 \acciaccatura b16 c2 |
 @end lilypond
index 76c34e44037ae1d380c03275bba1c75818c361be..8ae52b0212148c09954706c9f1f78c0e959a200a 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.18"
+@c \version "2.17.29"
 
 @node Concetti fondamentali
 @chapter Concetti fondamentali
@@ -1611,8 +1611,7 @@ partire dal nome, o viceversa.
   @tab Incide le chiavi
 @item Completion_heads_engraver
   @tab Separa le note che attraversano le stanghette
-@c The old Dynamic_engraver is deprecated. -jm
-@item New_dynamic_engraver
+@item Dynamic_engraver
   @tab Crea le forcelle e i testi relativi alla dinamica
 @item Forbid_line_break_engraver
   @tab Impedisce l'a capo se un elemento musicale è ancora attivo
index 7a9ae8239b54678f52f8e3361a0837bb07f71bdf..2c9155bb5d57323b348b524ad4112c3183050770 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @c Translators: Federico Bruni
 @c Translation checkers: Luca Rossetto Casel
@@ -2511,7 +2511,7 @@ nella travatura delle note normali.
 
 @lilypond[quote,verbatim,relative=2]
 c4 d8[
-\grace { e32[ d c d] }
+\grace { e32 d c d }
 e8] e[ e
 \grace { f16 }
 e8 e]
@@ -3359,7 +3359,7 @@ più piccolo e non alterano la durata della misura.
 
 @lilypond[quote,relative=2,verbatim]
 c4 \grace b16 a4(
-\grace { b16[ c16] } a2)
+\grace { b16 c16 } a2)
 @end lilypond
 
 Esistono altri tre tipi di abbellimenti possibili; l'@emph{acciaccatura} -- un
@@ -3373,7 +3373,7 @@ già poste sotto una legatura: si usa il comando @code{\slashedGrace}.
 @lilypond[quote,relative=2,verbatim]
 \acciaccatura d8 c4
 \appoggiatura e8 d4
-\acciaccatura { g16[ f] } e2
+\acciaccatura { g16 f } e2
 \slashedGrace a,8 g4
 \slashedGrace b16 a4(
 \slashedGrace b8 a2)
@@ -3385,8 +3385,8 @@ abbellimento da un ottavo
 
 @lilypond[quote,relative=2,verbatim]
 <<
-  \new Staff { e2 \grace { c16[ d e f] } e2 }
-  \new Staff { c2 \grace { g8[ b] } c2 }
+  \new Staff { e2 \grace { c16 d e f } e2 }
+  \new Staff { c2 \grace { g8 b } c2 }
 >>
 @end lilypond
 
@@ -3433,7 +3433,7 @@ note after a space lasting 7/8 of the main note.
 \new Voice {
   <<
     { d1^\trill_( }
-    { s2 s4. \grace { c16[ d] } }
+    { s2 s4. \grace { c16 d } }
   >>
   c1)
 }
index 7e6e350e3075848a76b1d4c5d4ecdb2bb33a36a0..3b9555190849e3be912bc761b93b7afc782c6a6e 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @c Translators: Federico Bruni
 @c Translation checkers: Luca Rossetto Casel
@@ -97,7 +97,7 @@ questi (possibilità più complesse di combinazione sono spiegate in
 @ref{Simultaneous expressions}):
 
 @lilypond[verbatim,quote,relative=2]
-\grace { g8[( a b] }
+\grace { g8( a b }
 <> ) \p \< -. -\markup \italic "sempre staccato"
 \repeat unfold 4 { c4 e }  c1\f
 @end lilypond
index 894cf0c2ea7b61a7610f787a2c663b70ed0ecfc6..5b25582d09bb7dd5d245831141aa574ce9864312 100644 (file)
@@ -949,7 +949,7 @@ usare @code{\center-column}:
 Tuttavia, se i nomi degli strumenti sono lunghi, potranno essere centrati
 solo aumentando i valori di @code{indent} e @code{short-indent}.
 Ulteriori dettagli su queste impostazioni si trovano in
-@ref{\paper variables for shifts and indents}.
+@ref{paper variables for shifts and indents,,@code{@bs{}paper} variables for shifts and indents}.
 
 @lilypond[verbatim,quote,ragged-right]
 \relative c'' {
@@ -1052,7 +1052,7 @@ dell'espressione musicale, :
 
 @seealso
 Guida alla notazione:
-@ref{\paper variables for shifts and indents},
+@ref{paper variables for shifts and indents,,@code{@bs{}paper} variables for shifts and indents},
 @ref{Modifying context plug-ins}.
 
 Frammenti:
index 6234f9f3de15d0f43aef3ea85f7c05f948178d6c..41be51c6d5223caf8be5b669438b5db46c9090bd 100644 (file)
@@ -476,7 +476,7 @@ Quantizza la durata delle note di @var{DUR}.
 @item -e, --explicit-durations
 Crea durate esplicite.
 
-@item -h,--help
+@item -h, --help
 Mostra una sintesi dell'utilizzo del programma.
 
 @item -k, --key=@var{acc}[:@var{minor}]
@@ -546,7 +546,7 @@ dalla linea di comando.
 @item -a, --absolute
 converte le altezze relative in assolute.
 
-@item -h,--help
+@item -h, --help
 mostra una sintesi dell'utilizzo e delle opzioni.
 
 @item -l, --language=LANG
@@ -572,11 +572,11 @@ articolazioni, dinamiche, etc.
 ignora le informazioni relative alle travature, impiegando la disposizione
 automatica delle travature fornita da LilyPond.
 
-@item -o,--output=@var{file}
+@item -o, --output=@var{file}
 imposta il nome del file di output su @var{file}.  Se @var{file} è @file{-}, l'output
 sarà salvato su stdout.  Se non specificato, verrà usato @var{file-xml}@file{.ly}.
 
-@item -r,--relative
+@item -r, --relative
 converte le altezze in modalità relativa (predefinito).
 
 @item -v, --verbose
@@ -585,7 +585,7 @@ Mostra un output dettagliato.
 @item --version
 Mostra informazioni sulla versione.
 
-@item -z,--compressed
+@item -z, --compressed
 il file di input è un file MusicXML compresso in un archivio ZIP.
 @end table
 
@@ -615,13 +615,13 @@ abc2ly [@var{opzione}]@dots{} @var{file-abc}
 @command{abc2ly} accetta le seguenti opzioni:
 
 @table @code
-@item -b,--beams=None
+@item -b, --beams=None
 preserva le regole di disposizione delle travature di ABC
-@item -h,--help
+@item -h, --help
 mostra questo messaggio di aiuto
-@item -o,--output=@var{file}
+@item -o, --output=@var{file}
 imposta il nome del file di output su @var{file}.
-@item -s,--strict
+@item -s, --strict
 imposta una modalità di interpretazione letterale per effettuare una conversione stretta
 @item --version
 mostra informazioni sulla versione.
@@ -689,9 +689,9 @@ maggiori informazioni su questo argomento.
 @command{etf2ly} accetta le seguenti opzioni:
 
 @table @code
-@item -h,--help
+@item -h, --help
 mostra questo messaggio di aiuto
-@item -o,--output=@var{FILE}
+@item -o, --output=@var{FILE}
 imposta il nome del file di output su @var{FILE}
 @item --version
 mostra informazioni sulla versione
index bbaa2b3847e4c9cf286c6b04e484c4c8b69c4f77..42e907763383b4cce5c606b9f78353ba2353b291 100644 (file)
@@ -138,13 +138,13 @@ Sono contemplate le seguenti opzioni:
 
 @table @code
 
-@item -d,--define-default=@var{variabile}=@var{valore}
+@item -d, --define-default=@var{variabile}=@var{valore}
 Si veda @ref{Advanced command line options for LilyPond}.
 
 @cindex Scheme, valutazione dell'espressione
 @cindex valutazione dell'espressione, Scheme
 
-@item -e,--evaluate=@var{espressione}
+@item -e, --evaluate=@var{espressione}
 Valuta l'@var{espressione} di Scheme prima di analizzare qualsiasi file @file{.ly}.
 Si possono specificare varie opzioni @option{-e}; saranno analizzate in modo
 sequenziale.
@@ -171,19 +171,19 @@ in cima al file @code{.ly}.
 @cindex output, formato
 @cindex formato, output
 
-@item -f,--format=@var{formato}
+@item -f, --format=@var{formato}
 Formati di output.  Come @code{formato} si può scegliere tra
 @code{ps}, @code{pdf} e @code{png}.
 
 Esempio: @code{lilypond -fpng @var{file}.ly}
 
-@item -h,--help
+@item -h, --help
 Mostra una sintesi dell'utilizzo.
 
-@item -H,--header=@var{CAMPO}
+@item -H, --header=@var{CAMPO}
 Estrae un campo dell'intestazione nel file @file{NOME.@var{CAMPO}}.
 
-@item -i,--init=@var{file}
+@item -i, --init=@var{file}
 Imposta il file di inizializzazione su @var{file} (predefinito: @file{init.ly}).
 
 @cindex ricerca dei file
@@ -198,7 +198,7 @@ la ricerca continuerà nelle directory seguenti.
 
 @cindex gabbia chroot, esecuzione all'interno di
 
-@item -j,--jail=@var{utente},@var{gruppo},@var{gabbia},@var{directory}
+@item -j, --jail=@var{utente},@var{gruppo},@var{gabbia},@var{directory}
 Esegue @command{lilypond} in una gabbia chroot.
 
 L'opzione @option{--jail} fornisce un'alternativa più flessibile a
@@ -260,7 +260,7 @@ memoria che può essere allocata.  Si veda anche @ref{LilyPond in chroot jail}.
 @cindex loglevel
 @cindex output dettagliato
 
-@item -l,--loglevel=@var{LIVELLO}
+@item -l, --loglevel=@var{LIVELLO}
 Imposta la verbosità dell'output della console su @var{LIVELLO}. I valori possibili sono:
 @table @code
 
@@ -291,7 +291,7 @@ Tutti i messaggi possibili, incluso l'output verboso di debug.
 @cindex output, impostare il nome del file
 @cindex output, directory
 
-@item -o,--output=@var{FILE} o @var{CARTELLA}
+@item -o, --output=@var{FILE} o @var{CARTELLA}
 Imposta il file di output predefinito @var{FILE} oppure, se una cartella con
 quel nome esiste già, dirige l'output in @var{CARTELLA}, prendendo il nome
 del file dal file di input.  In entrambi i casi verrà aggiunto il suffisso
@@ -320,14 +320,14 @@ Genera immmagini di ogni pagina in formato PNG.  Questo implica
 @item --pdf
 Genera PDF.  Questo implica @option{--ps}.
 
-@item -v,--version
+@item -v, --version
 Mostra informazioni sulla versione.
 
-@item -V,--verbose
+@item -V, --verbose
 Aumenta la prolissità: mostra i percorsi completi di tutti i file letti e dà
 informazioni sui tempi.
 
-@item -w,--warranty
+@item -w, --warranty
 Mostra la garanzia con cui viene distribuito GNU LilyPond.  (Distribuito
 con @strong{NESSUNA GARANZIA}!)
 
index 2127be090693c6e1934c8cf7928391c68f12f917..dfa77e6779613d557a1d3b7ff79d2ca89a1371e5 100644 (file)
@@ -152,17 +152,17 @@ convert-ly [@var{opzione}]@dots{} @var{nomefile}@dots{}
 Esistono le seguenti opzioni:
 
 @table @code
-@item -d,--diff-version-update
+@item -d, --diff-version-update
 aumenta il numero di versione in @code{\version} solo se il file è stato
 modificato da @command{convert-ly}.  Senza questa opzione (o quando una
 conversione ha modificato il file), la dichiarazione di versione riflette
 l'ultime regola di conversione considerata.
 
-@item -e,--edit
+@item -e, --edit
 Applica le conversioni direttamente nel file di input, modificando
 l'originale.
 
-@item -f,--from=@var{from-patchlevel}
+@item -f, --from=@var{from-patchlevel}
 Imposta la versione da cui convertire.  Se non viene impostata, @command{convert-ly}
 la ricaverà dalla stringa @code{\version} presente nel file.
 Esempio: @option{--from=2.10.25}
@@ -175,7 +175,7 @@ Imposta la verbosità dell'output su @var{loglevel}. I valori possibili, in
 caratteri maiuscoli, sono @code{PROGRESS} (predefinito), @code{NONE},
 @code{WARNING}, @code{ERROR} e @code{DEBUG}.
 
-@item -n,--no-version
+@item -n, --no-version
 Normalmente @command{convert-ly} aggiunge un indicatore @code{\version}
 nell'output.  Questa opzione lo impedisce.
 
@@ -302,5 +302,3 @@ converted.
  \score{} must now begin with a music expression.  Anything else
  (particularly \header{}) must come after the music.
 @end verbatim
-
-
index e6b9f50d3aa55495fba5661a5b16c87519355009..989f0443cd808a58efc7a7c2482624e7c9504971 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @ignore
 Tutorial guidelines:  (different from policy.txt!)
@@ -570,7 +570,7 @@ c2 d |
 よっても作成されます:
 
 @lilypond[verbatim,quote,relative=2]
-c2 \grace { a32[ b] } c2 |
+c2 \grace { a32 b } c2 |
 c2 \appoggiatura b16 c2 |
 c2 \acciaccatura b16 c2 |
 @end lilypond
index 8072307308ed08101ca6371c85cb92c17f576d3b..5122a524b8a8888b2ce01acae971114414d17d2a 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.18"
+@c \version "2.17.29"
 
 @c Translators: Yoshiki Sawada
 @c Translation status: post-GDP
@@ -1675,8 +1675,7 @@ LilyPond によって作成された楽譜上にあるすべての記号は
   @tab 音部記号を譜刻します。
 @item Completion_heads_engraver
   @tab 小節線をまたがる音符を分割します。
-@c The old Dynamic_engraver is deprecated. -jm
-@item New_dynamic_engraver
+@item Dynamic_engraver
   @tab 強弱記号 (クレッシェンド、デクレッシェンド) と強弱テキスト (p や f など)
 を作成します。
 @item Forbid_line_break_engraver
index fcaaff565dcf3075a7f5a3261c9391f5f5f39ceb..200016c36effdbab5d707bfe714ca314a8da01df 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.11"
+@c \version "2.17.27"
 
 @c Translators: Yoshiki Sawada
 @c Translation status: post-GDP
@@ -663,7 +663,7 @@ LilyPond は、@code{TabStaff} の行数と自動的に算出される @code{Fre
 \layout @{
   \context @{
     \TabStaff
-    stringTunings = \stringTuning \notemode @{ <c' g' d'' a''> @}
+    stringTunings = \stringTuning <c' g' d'' a''>
   @}
 @}
 @end example
index 2afa1464faafc7bb1ba2573aa1db569e12554ebd..b9b4b0121ef55c40596bea7c87b178ce43369e07 100644 (file)
@@ -6,7 +6,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @c Translators: Yoshiki Sawada
 @c Translation status: post-GDP
@@ -2417,7 +2417,7 @@ c8 c\noBeam c c
 
 @lilypond[quote,verbatim,relative=2]
 c4 d8[
-\grace { e32[ d c d] }
+\grace { e32 d c d }
 e8] e[ e
 \grace { f16 }
 e8 e]
@@ -3172,7 +3172,7 @@ c1
 
 @lilypond[quote,relative=2,verbatim]
 c4 \grace b16 a4(
-\grace { b16[ c16] } a2)
+\grace { b16 c16 } a2)
 @end lilypond
 
 装飾音符には他にも 3 つのタイプがあります。@c
@@ -3194,7 +3194,7 @@ Lilypond はさらに 2 つ特殊なタイプの装飾小音符をサポート
 @lilypond[quote,relative=2,verbatim]
 \acciaccatura d8 c4
 \appoggiatura e8 d4
-\acciaccatura { g16[ f] } e2
+\acciaccatura { g16 f } e2
 \slashedGrace a,8 g4
 \slashedGrace b16 a4(
 \slashedGrace b8 a2)
@@ -3206,8 +3206,8 @@ Lilypond はさらに 2 つ特殊なタイプの装飾小音符をサポート
 
 @lilypond[quote,relative=2,verbatim]
 <<
-  \new Staff { e2 \grace { c16[ d e f] } e2 }
-  \new Staff { c2 \grace { g8[ b] } c2 }
+  \new Staff { e2 \grace { c16 d e f } e2 }
+  \new Staff { c2 \grace { g8 b } c2 }
 >>
 @end lilypond
 
@@ -3257,7 +3257,7 @@ c1 \afterGrace d1 { c16[ d] } c1
 \new Voice {
   <<
     { d1^\trill_( }
-    { s2 s4. \grace { c16[ d] } }
+    { s2 s4. \grace { c16 d } }
   >>
   c1)
 }
index b447af71672cff7b4f492de004d4bef36b5939e8..b88b36a3197404c792a68e8949b75118e7da4729 100644 (file)
@@ -6,7 +6,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 
 @c Translators: Yoshiki Sawada
@@ -96,7 +96,7 @@ LilyPond の中で多声部は同じ譜にある複数のボイスを参照し
 については @ref{Simultaneous expressions} を参照してください):
 
 @lilypond[verbatim,quote,relative=2]
-\grace { g8[( a b] }
+\grace { g8( a b }
 <> ) \p \< -. -\markup \italic "sempre staccato"
 \repeat unfold 4 { c4 e }  c1\f
 @end lilypond
index 478940a1bd224b072ee1fed17acae9f6042734f9..8d8fe71de9adf2ecbe972f9028723e942a87e170 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.11"
+@c \version "2.17.28"
 
 
 @c Translators: Yoshiki Sawada
@@ -107,16 +107,16 @@ http://code.google.com/p/lilypond/issues/detail?id=68
 オプションについて説明します。
 
 @menu
-* \paper ブロック::
+* paper ブロック::
 * 紙面サイズと自動拡縮::
-* 固定された垂直方向の \paper スペース変数::
-* 可変な垂直方向の \paper スペース変数::
-* 水平方向の \paper スペース変数::
-* 他の \paper 変数::
+* 固定された垂直方向の paper スペース変数::
+* 可変な垂直方向の paper スペース変数::
+* 水平方向の paper スペース変数::
+* 他の paper 変数::
 @end menu
 
 
-@node \paper ブロック
+@node paper ブロック
 @subsection @code{\paper} ブロック
 @translationof The \paper block
 
@@ -317,11 +317,11 @@ Scheme 関数
 
 自動拡縮によって影響を受ける垂直方向の長さは
 @code{top-margin} と @code{bottom-margin} です
-(@ref{固定された垂直方向の \paper スペース変数} を参照してください)。@c
+(@ref{固定された垂直方向の paper スペース変数,,固定された垂直方向の @code{@bs{}paper} スペース変数} を参照してください)。@c
 自動拡縮によって影響を受ける水平方向の長さは
 @code{right-margin}, @code{inner-margin}, @code{outer-margin},
 @code{binding-offset}, @code{indent}, それに @code{short-indent} です
-(@ref{水平方向の \paper スペース変数} を参照してください)。
+(@ref{水平方向の paper スペース変数,,水平方向の @code{@bs{}paper} スペース変数} を参照してください)。
 
 これらの長さに対するデフォルト値は
 @code{top-margin-default}, @code{bottom-margin-default} 等の内部変数を@c
@@ -333,15 +333,15 @@ Scheme 関数
 
 @seealso
 記譜法リファレンス:
-@ref{固定された垂直方向の \paper スペース変数},
-@ref{水平方向の \paper スペース変数}
+@ref{固定された垂直方向の paper スペース変数,,固定された垂直方向の @code{@bs{}paper} スペース変数},
+@ref{水平方向の paper スペース変数,,水平方向の @code{@bs{}paper} スペース変数}
 
 インストールされているファイル:
 @file{ly/paper-defaults-init.ly},
 @file{scm/paper.scm}
 
 
-@node 固定された垂直方向の \paper スペース変数
+@node 固定された垂直方向の paper スペース変数
 @subsection 固定された垂直方向の @code{\paper} スペース変数
 @translationof Fixed vertical spacing \paper variables
 
@@ -409,7 +409,7 @@ Scheme 関数
 明示的に定義された紙面サイズは、ユーザ定義の上または下のマージン設定を上書きします。
 
 
-@node 可変な垂直方向の \paper スペース変数
+@node 可変な垂直方向の paper スペース変数
 @subsection 可変な垂直方向の @code{\paper} スペース変数
 @translationof Flexible vertical spacing \paper variables
 
@@ -430,7 +430,7 @@ Scheme 関数
 
 @menu
 * 可変な垂直方向スペース連想リストの構造::
-* 可変な垂直方向の \paper スペース変数のリスト::
+* 可変な垂直方向の paper スペース変数のリスト::
 @end menu
 
 
@@ -517,7 +517,7 @@ largest of:
 @end example
 
 
-@node 可変な垂直方向の \paper スペース変数のリスト
+@node 可変な垂直方向の paper スペース変数のリスト
 @unnumberedsubsubsec 可変な垂直方向の @code{\paper} スペース変数のリスト
 @translationof List of flexible vertical spacing \paper variables
 
@@ -594,7 +594,7 @@ score の最後のシステムと、その後に score の最初のシステム
 @rlsr{Spacing}
 
 
-@node 水平方向の \paper スペース変数
+@node 水平方向の paper スペース変数
 @subsection 水平方向の @code{\paper} スペース変数
 @translationof Horizontal spacing \paper variables
 
@@ -603,13 +603,13 @@ score の最後のシステムと、その後に score の最初のシステム
 @ref{紙面サイズに応じた自動拡縮} を参照してください。}
 
 @menu
-* 幅とマージンの \paper 変数::
-* 両面モードのための \paper 変数::
-* シフトとインデントのための \paper 変数::
+* 幅とマージンの paper 変数::
+* 両面モードのための paper 変数::
+* シフトとインデントのための paper 変数::
 @end menu
 
 
-@node 幅とマージンの \paper 変数
+@node 幅とマージンの paper 変数
 @unnumberedsubsubsec 幅とマージンの @code{\paper} 変数
 @translationof \paper variables for widths and margins
 
@@ -716,7 +716,7 @@ score の最後のシステムと、その後に score の最初のシステム
 明示的に定義された紙面サイズは、ユーザ定義の左または右のマージン設定を上書きします。
 
 
-@node 両面モードのための \paper 変数
+@node 両面モードのための paper 変数
 @unnumberedsubsubsec 両面モードのための @code{\paper} 変数
 @translationof \paper variables for two-sided mode
 
@@ -770,7 +770,7 @@ book の一部であるページすべてが見開きページの外側に持つ
 @file{ly/paper-defaults-init.ly}
 
 
-@node シフトとインデントのための \paper 変数
+@node シフトとインデントのための paper 変数
 @unnumberedsubsubsec シフトとインデントのための @code{\paper} 変数
 @translationof \paper variables for shifts and indents
 
@@ -815,19 +815,19 @@ score の最初のシステムに対するインデントのレベルです。@c
 @rlsr{Spacing}
 
 
-@node 他の \paper 変数
+@node 他の paper 変数
 @subsection 他の @code{\paper} 変数
 @translationof Other \paper variables
 
 @menu
-* 改行のための \paper 変数::
-* 改ページのための \paper 変数::
-* ページ番号のための \paper 変数::
-* その他の \paper 変数::
+* 改行のための paper 変数::
+* 改ページのための paper 変数::
+* ページ番号のための paper 変数::
+* その他の paper 変数::
 @end menu
 
 
-@node 改行のための \paper 変数
+@node 改行のための paper 変数
 @unnumberedsubsubsec 改行のための @code{\paper} 変数
 @translationof \paper variables for line breaking
 
@@ -871,7 +871,7 @@ score で使用すべきシステム数です。@c
 @ref{改行}
 
 
-@node 改ページのための \paper 変数
+@node 改ページのための paper 変数
 @unnumberedsubsubsec 改ページのための @code{\paper} 変数
 @translationof \paper variables for page breaking
 
@@ -936,7 +936,7 @@ score で使用すべきページ数です。@c
 @file{ly/paper-defaults-init.ly}
 
 
-@node ページ番号のための \paper 変数
+@node ページ番号のための paper 変数
 @unnumberedsubsubsec ページ番号のための @code{\paper} 変数
 @translationof \paper variables for page numbering
 
@@ -986,7 +986,7 @@ increased by one.  Default: @code{#f}.
 ページ 1 が右側にくるようにする必要があります。
 
 
-@node その他の \paper 変数
+@node その他の paper 変数
 @unnumberedsubsubsec その他の @code{\paper} 変数
 @translationof Miscellaneous \paper variables
 
@@ -1093,15 +1093,15 @@ increased by one.  Default: @code{#f}.
 
 @item
 @code{line-width}, @code{ragged-right} それに @code{ragged-last}
-(@ref{幅とマージンの \paper 変数} を参照してください)
+(@ref{幅とマージンの paper 変数,,幅とマージンの @code{@bs{}paper} 変数} を参照してください)
 
 @item
 @code{indent} と @code{short-indent}
-(@ref{シフトとインデントのための \paper 変数} を参照してください)
+(@ref{シフトとインデントのための paper 変数,,シフトとインデントのための @code{@bs{}paper} 変数} を参照してください)
 
 @item
 @code{system-count}
-(@ref{改行のための \paper 変数} を参照してください)
+(@ref{改行のための paper 変数,,改行のための @code{@bs{}paper} 変数} を参照してください)
 
 @end itemize
 
@@ -1481,7 +1481,7 @@ c8 c] c2. |
 
 @seealso
 記譜法リファレンス:
-@ref{改行のための \paper 変数}
+@ref{改行のための paper 変数,,改行のための @code{@bs{}paper} 変数}
 
 コード断片集:
 @rlsr{Spacing}
@@ -1513,7 +1513,7 @@ score や最上位レベルのマークアップの間に挿入することが
 これらの設定が @code{#t} にセットされている場合、@c
 すべてのページあるいは最後のページのシステムは@c
 ページの垂直方向全体には広がりません。@c
-@ref{固定された垂直方向の \paper スペース変数} を参照してください。
+@ref{固定された垂直方向の paper スペース変数,,固定された垂直方向の @code{@bs{}paper} スペース変数} を参照してください。
 
 改ページは @code{page-breaking} 関数によって算出されます。@c
 LilyPond は改ページを算出するために 3 つのアルゴリズムを提供します:
@@ -1573,7 +1573,7 @@ LilyPond は改ページを算出するために 3 つのアルゴリズムを
 
 @seealso
 記譜法リファレンス:
-@ref{改行のための \paper 変数}
+@ref{改行のための paper 変数,,改行のための @code{@bs{}paper} 変数}
 
 コード断片集:
 @rlsr{Spacing}
@@ -1939,7 +1939,7 @@ music = \relative c'' { c4 c c c }
 仕組みだけを説明しているということに注意してください。@c
 システム、score、マークアップ、それにマージン間の垂直方向のスペースは、@c
 @code{\paper} 変数によって制御されます
--- @ref{可変な垂直方向の \paper スペース変数} で説明しています。
+-- @ref{可変な垂直方向の paper スペース変数,,可変な垂直方向の @code{@bs{}paper} スペース変数} で説明しています。
 
 @menu
 * システム内部のスペース プロパティ::
@@ -2090,7 +2090,7 @@ labelContext =
 
 垂直方向のスペースのグラフィカル オブジェクト プロパティは
 (@code{staff-affinity} を除いて)、@c
-@ref{可変な垂直方向の \paper スペース変数} で説明した
+@ref{可変な垂直方向の paper スペース変数,,可変な垂直方向の @code{@bs{}paper} スペース変数} で説明した
 @code{\paper} スペース変数と同じ連想配列構造を使用します。
 連想配列を変更する方法は、@ref{Modifying alists} で説明します。@c
 グラフィカル オブジェクト プロパティの調節は、@c
@@ -2241,7 +2241,7 @@ labelContext =
 
 @seealso
 記譜法リファレンス:
-@ref{可変な垂直方向の \paper スペース変数},
+@ref{可変な垂直方向の paper スペース変数,,可変な垂直方向の @code{@bs{}paper} スペース変数},
 @ref{Modifying alists}
 
 インストールされているファイル:
@@ -3050,7 +3050,7 @@ c16[ c c8]
 
 @lilypond[quote,ragged-right,relative=2,verbatim]
 \override Score.SpacingSpanner.strict-note-spacing = ##t
-\new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c]  c32[ c32] }
+\new Staff { c8[ c \clef alto c \grace { c16 c } c8 c c]  c32[ c32] }
 @end lilypond
 
 @seealso
index 4aca01596aff8db50f4fcc90119e8474997076ba..c4333a3a3d94e6c02296391ad8d35570c69420d9 100644 (file)
@@ -947,7 +947,7 @@ d4 e f g
 
 しかしながら、楽器名が長い場合、@code{indent} 設定と @code{short-indent}
 設定の値を増やさない限り、譜グループの中にある楽器名は中央揃えされません。@c
-これらの設定についての詳細は @ref{\paper variables for shifts and indents}
+これらの設定についての詳細は @ref{シフトとインデントのための paper 変数,,シフトとインデントのための @code{@bs{}paper} 変数}
 を参照してください。
 
 @lilypond[verbatim,quote,ragged-right]
@@ -1050,7 +1050,7 @@ d4 e f g
 
 @seealso
 記譜法リファレンス:
-@ref{\paper variables for shifts and indents},
+@ref{シフトとインデントのための paper 変数,,シフトとインデントのための @code{@bs{}paper} 変数},
 @ref{Modifying context plug-ins}
 
 コード断片集:
index dff6c23f670ac84a96904487355dd667a787fb69..1fa04697f6d07994be29b1ec9391895694b9256d 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.19"
+@c \version "2.17.28"
 
 @c Translators: Yoshiki Sawada
 @c Translation status: post-GDP
@@ -1828,7 +1828,7 @@ text = {
 <<
   \new Voice = melody \relative c' {
     f4 \appoggiatura a32 b4
-    \grace { f16[ a16] } b2
+    \grace { f16 a16 } b2
     \afterGrace b2 { f16[ a16] }
     \appoggiatura a32 b4
     \acciaccatura a8 b4
@@ -1857,7 +1857,7 @@ text = {
 @lilypond[verbatim,ragged-right,quote]
 <<
   \new Voice = melody \relative c' {
-    \grace { c16[( d e f] }
+    \grace { c16( d e f }
     g1) f
   }
   \new Lyrics \with { includeGraceNotes = ##t }
index b22411f0552e2b952289271a7c3fd985b7b90433..bb64233371955c21c7b7846998ae5a611ef73be9 100644 (file)
@@ -379,7 +379,7 @@ midi2ly [@var{option}]@dots{} @var{midi-file}
 @item -e, --explicit-durations
 すべての音符の演奏時間を出力します。
 
-@item -h,--help
+@item -h, --help
 使用方法の要約を表示します。
 
 @item -k, --key=@var{acc}[:@var{minor}]
@@ -451,7 +451,7 @@ musicxml2ly [@var{option}]@dots{} @var{xml-file}
 @item -a, --absolute
 絶対ピッチで出力します。
 
-@item -h,--help
+@item -h, --help
 使用方法の要約を表示します。
 
 @item -l, --language=LANG
@@ -477,21 +477,21 @@ MIDI ブロックを有効にします。
 @item --no-beaming
 連桁情報を変換せず、LilyPond の自動連桁機能を使用します。
 
-@item -o,--output=@var{file}
+@item -o, --output=@var{file}
 出力ファイル名を @var{file} とします。@c
 @var{file} に @file{-} を指定すると、出力は stdout に表示されます。@c
 指定が無い場合、出力は @var{xml-file}@file{.ly} となります。
 
-@item -r,--relative
+@item -r, --relative
 ピッチを相対モードに変換します。(デフォルト)
 
-@item -v,--verbose
+@item -v, --verbose
 Verbose モード (ログ等が詳細) で実行します。
 
 @item --version
 バージョン情報を表示します。
 
-@item -z,--compressed
+@item -z, --compressed
 入力ファイルが ZIP で圧縮された MusicXML ファイルであることを示します。
 @end table
 
@@ -522,16 +522,16 @@ abc2ly [@var{option}]@dots{} @var{abc-file}
 @command{abc2ly} には以下のオプションがあります。
 
 @table @code
-@item -b,--beams=None
+@item -b, --beams=None
 ABC の連桁情報を保持します。
 
-@item -h,--help
+@item -h, --help
 このオプション一覧を表示します。
 
-@item -o,--output=@var{file}
+@item -o, --output=@var{file}
 出力ファイル名を @var{file} とします。
 
-@item -s,--strict
+@item -s, --strict
 @c 未訳
 be strict about success
 
@@ -602,9 +602,9 @@ more information about this.
 The following options are supported by @command{etf2ly}:
 
 @table @code
-@item -h,--help
+@item -h, --help
 this help
-@item -o,--output=@var{FILE}
+@item -o, --output=@var{FILE}
 set output filename to @var{FILE}
 @item --version
 version information
index cddb89594a64e879ea38399736433bcff911c2d6..23cf063b6ccea84228e8594db7d4ddff8f434cc4 100644 (file)
@@ -144,13 +144,13 @@ lilypond は出力として @file{filename.ps} と @file{filename.pdf} を作り
 
 @table @code
 
-@item -d,--define-default=@var{var}=@var{val}
+@item -d, --define-default=@var{var}=@var{val}
 @ref{Advanced command line options for LilyPond} を参照してください。
 
 @cindex Scheme, expression evaluation (Scheme 表記の評価)
 @cindex expression evaluation, Scheme (Scheme 表記の評価)
 
-@item -e,--evaluate=@var{expr}
+@item -e, --evaluate=@var{expr}
 @file{.ly} ファイルを解析する前に Scheme @var{expr} を評価します。@c
 複数の @code{-e} オプションが与えられた場合、それらは順番に評価されます。
 
@@ -175,19 +175,19 @@ lilypond -e '(define-public a 42)'
 @cindex output, format (出力のフォーマット)
 @cindex format, output (出力のフォーマット)
 
-@item -f,--format=@var{format}
+@item -f, --format=@var{format}
 フォーマットを指定します。@c
 @code{format} の選択肢は @code{ps}, @code{pdf}, それに @code{png} です。
 
 例: @code{lilypond -fpng @var{filename}.ly}
 
-@item -h,--help
+@item -h, --help
 使用方法の要約を表示します。
 
-@item -H,--header=@var{FIELD}
+@item -H, --header=@var{FIELD}
 ヘッダ フィールドをファイル @file{BASENAME.@var{FIELD}} に吐き出します。
 
-@item -i,--init=@var{file}
+@item -i, --init=@var{file}
 init ファイルとして @var{file} をセットします (デフォルト: @file{init.ly})。
 
 @cindex file searching (ファイル サーチ)
@@ -202,7 +202,7 @@ init ファイルとして @var{file} をセットします (デフォルト: @f
 
 @cindex chroot jail, running inside (chroot jail 内部で実行する)
 
-@item -j,--jail=@var{user},@var{group},@var{jail},@var{dir}
+@item -j, --jail=@var{user},@var{group},@var{jail},@var{dir}
 @command{lilypond} を chroot jail 環境で実行します。@c
 (訳者: chroot jail 環境とはセキュリティのために@c
 カレント プロセスに対してルート ディレクトリの位置を変更すること。)
@@ -278,7 +278,7 @@ LilyPond が使用可能な CPU 時間を数秒に制限する
 @cindex loglevel (ログレベル)
 @cindex output, verbosity (出力の饒舌さ)
 
-@item -l,--loglevel=@var{LEVEL}
+@item -l, --loglevel=@var{LEVEL}
 コンソール出力の饒舌さを @var{LEVEL} にセットします。@c
 取り得る値は以下の通りです:
 
@@ -312,7 +312,7 @@ LilyPond が使用可能な CPU 時間を数秒に制限する
 @cindex output, setting filename (出力のファイル名を設定する)
 @cindex output, directory (出力ディレクトリ)
 
-@item -o,--output=@var{FILE} or @var{FOLDER}
+@item -o, --output=@var{FILE} or @var{FOLDER}
 デフォルトの出力ファイルとして @var{FILE} をセットします。@c
 セットした名前のフォルダが存在する場合、そのフォルダに出力されます。@c
 適切な接尾辞が追加されます
@@ -343,14 +343,14 @@ PostScript を生成します。
 PDF を生成します。@c
 これは内部で @code{--ps} を使用します。
 
-@item -v,--version
+@item -v, --version
 バージョン情報を表示します。
 
-@item -V,--verbose
+@item -V, --verbose
 冗長表示モードにします:
 読み込むすべてのファイルのフル パスを表示して、時間情報を表示します。
 
-@item -w,--warranty
+@item -w, --warranty
 GNU LilyPond の保証責任を表示します。@c
 (GNU LilyPond には@strong{保証責任はありません}!)
 
index a161dee60b4ac891fc5b464cd6ec78d91045e08c..6d9d3e3266b4c003ff6025372c19429c43f92b22 100644 (file)
@@ -137,14 +137,14 @@ convert-ly [@var{option}]@dots{} @var{filename}@dots{}
 以下のオプションを与えることができます:
 
 @table @code
-@item -d,--diff-version-update
+@item -d, --diff-version-update
 @code{\version} を最新に更新します。最新バージョンよりも大きい場合は@c
 何もしません。
 
-@item -e,--edit
+@item -e, --edit
 入力ファイルに直接変換を適用して、それをその場で変更します。
 
-@item -f,--from=@var{from-patchlevel}
+@item -f, --from=@var{from-patchlevel}
 変換元のバージョンをセットします。@c
 これがセットされていない場合、@c
 @command{convert-ly} は入力ファイルの中にある
@@ -159,7 +159,7 @@ convert-ly [@var{option}]@dots{} @var{filename}@dots{}
 取り得る値は、大文字で、@code{PROGRESS} (デフォルト), @code{NONE},
 @code{WARNING}, @code{ERROR}, それに @code{DEBUG} です。
 
-@item -n,--no-version
+@item -n, --no-version
 通常、@command{convert-ly} は @code{\version} インジケータを@c
 出力に付け加えます。@c
 このオプションを指定すると、それを抑制します。
index 5ac272669704462b0d188b59e788b44be016844e..8c833c76f56e81f2d5e91456ba0dc422125dd185 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @ignore
 Tutorial guidelines:  (different from policy.txt!)
@@ -60,11 +60,17 @@ on one staff.
 * Advanced rhythmic commands::
 @end menu
 
-
 @node Bar lines and bar checks
 @subsection Bar lines and bar checks
 
-@subheading Bar lines
+@menu
+* Bar lines::
+* Bar checks::
+@end menu
+
+@node Bar lines
+@unnumberedsubsubsec Bar lines
+
 
 Single bar lines are automatically placed in the music so
 there is no need to add them manually.  Other types of bar
@@ -77,7 +83,9 @@ the @ruser{Bar lines}.
 g1 e1 \bar "||" c2. c'4 \bar "|."
 @end lilypond
 
-@subheading Bar checks
+@node Bar checks
+@unnumberedsubsubsec Bar checks
+
 
 Though not strictly necessary, @emph{bar checks} should be
 used in the input code to show where bar lines are expected
@@ -99,11 +107,19 @@ Notation Reference:
 @node Accidentals and key signatures
 @subsection Accidentals and key signatures
 
+@menu
+* Accidentals::
+* Key signatures::
+* Warning key signatures and pitches::
+@end menu
+
 @warning{New users are often confused by these -- please read the
 warning at the bottom of this page, especially if you are not
 familiar with music theory!}
 
-@subheading Accidentals
+@node Accidentals
+@unnumberedsubsubsec Accidentals
+
 
 @cindex accidentals
 @cindex accidentals and key signatures
@@ -135,7 +151,10 @@ cis4 ees fisis, aeses
 @end lilypond
 
 @cindex key signature, setting
-@subheading Key signatures
+
+@node Key signatures
+@unnumberedsubsubsec Key signatures
+
 
 @cindex key signature
 @cindex major
@@ -166,7 +185,9 @@ a1 |
 
 @smallspace
 
-@subheading Warning: key signatures and pitches
+@node Warning key signatures and pitches
+@unnumberedsubsubsec Warning: key signatures and pitches
+
 
 Music Glossary: @rglos{accidental}, @rglos{key signature},
 @rglos{pitch}, @rglos{flat}, @rglos{natural}, @rglos{sharp},
@@ -243,7 +264,15 @@ Notation Reference:
 @funindex ( ... )
 @funindex \( ... \)
 
-@subheading Ties
+@menu
+* Ties::
+* Slurs::
+* Phrasing slurs::
+* Warnings slurs vs. ties::
+@end menu
+
+@node Ties
+@unnumberedsubsubsec Ties
 
 
 Music Glossary: @rglos{tie}.
@@ -255,7 +284,8 @@ first note being tied.
 g4~ g c2~ | c4~ c8 a~ a2 |
 @end lilypond
 
-@subheading Slurs
+@node Slurs
+@unnumberedsubsubsec Slurs
 
 
 Music Glossary: @rglos{slur}.
@@ -268,7 +298,9 @@ starting note and ending note are marked with @code{(} and
 d4( c16) cis( d e c cis d) e( d4)
 @end lilypond
 
-@subheading Phrasing slurs
+@node Phrasing slurs
+@unnumberedsubsubsec Phrasing slurs
+
 
 Music Glossary: @rglos{slur}, @rglos{phrasing}.
 
@@ -284,7 +316,10 @@ g4\( g8( a) b( c) b4\)
 @smallspace
 
 @cindex slurs versus ties
-@subheading Warnings: slurs vs. ties
+
+@node Warnings slurs vs. ties
+@unnumberedsubsubsec Warnings: slurs vs. ties
+
 
 Music Glossary: @rglos{articulation}, @rglos{slur}, @rglos{tie}.
 
@@ -309,8 +344,15 @@ Notation Reference:
 @node Articulation and dynamics
 @subsection Articulation and dynamics
 
+@menu
+* Articulations::
+* Fingerings::
+* Dynamics::
+@end menu
+
+@node Articulations
+@unnumberedsubsubsec Articulations
 
-@subheading Articulations
 
 @cindex articulation
 @cindex accent
@@ -326,7 +368,9 @@ c4-^ c-+ c-- c-!
 c4-> c-. c2-_
 @end lilypond
 
-@subheading Fingerings
+@node Fingerings
+@unnumberedsubsubsec Fingerings
+
 
 @cindex fingering
 
@@ -352,7 +396,9 @@ to let LilyPond determine the articulation directions.
 c4_-^1 d^. f^4_2-> e^-_+
 @end lilypond
 
-@subheading Dynamics
+@node Dynamics
+@unnumberedsubsubsec Dynamics
+
 
 @cindex dynamics
 @cindex decrescendo
@@ -486,7 +532,15 @@ Notation Reference:
 @node Advanced rhythmic commands
 @subsection Advanced rhythmic commands
 
-@subheading Partial measure
+@menu
+* Partial measure::
+* Tuplets::
+* Grace notes::
+@end menu
+
+@node Partial measure
+@unnumberedsubsubsec Partial measure
+
 
 @cindex pickup
 @cindex anacrusis
@@ -506,7 +560,9 @@ is a quarter note pickup and @code{\partial 8} an eighth note.
 c2 d |
 @end lilypond
 
-@subheading Tuplets
+@node Tuplets
+@unnumberedsubsubsec Tuplets
+
 
 @cindex tuplets
 @cindex triplets
@@ -530,7 +586,9 @@ For triplets, there are three notes instead of two, so
 \tuplet 3/2 { d4 a8 }
 @end lilypond
 
-@subheading Grace notes
+@node Grace notes
+@unnumberedsubsubsec Grace notes
+
 
 @cindex grace notes
 @cindex acciaccatura
@@ -551,7 +609,7 @@ although they can also be created by prefixing a music expression
 with the keyword @code{\appoggiatura} or @code{\acciaccatura}:
 
 @lilypond[verbatim,quote,relative=2]
-c2 \grace { a32[ b] } c2 |
+c2 \grace { a32 b } c2 |
 c2 \appoggiatura b16 c2 |
 c2 \acciaccatura b16 c2 |
 @end lilypond
@@ -592,6 +650,12 @@ than one voice on the same staff.
 @cindex compound music expression
 @cindex music expression, compound
 
+@menu
+* Analogy mathematical expressions::
+* Simultaneous music expressions multiple staves::
+* Simultaneous music expressions single staff::
+@end menu
+
 In LilyPond input files, music is represented by @emph{music
 expressions}.  A single note is a music expression:
 
@@ -615,7 +679,9 @@ one).  The result is another music expression:
 { { a4 g } f4 g }
 @end lilypond
 
-@subheading Analogy: mathematical expressions
+@node Analogy mathematical expressions
+@unnumberedsubsubsec Analogy: mathematical expressions
+
 
 This mechanism is similar to mathematical formulas: a big formula
 is created by composing small formulas.  Such formulas are called
@@ -641,7 +707,9 @@ arbitrarily deep, which is necessary for complex music like
 polyphonic scores.
 
 
-@subheading Simultaneous music expressions: multiple staves
+@node Simultaneous music expressions multiple staves
+@unnumberedsubsubsec Simultaneous music expressions: multiple staves
+
 
 @cindex multiple staves
 @cindex staves, multiple
@@ -689,7 +757,9 @@ only the first is relative to the @code{c''} in the initial
 @code{@bs{}relative} command.}
 
 
-@subheading Simultaneous music expressions: single staff
+@node Simultaneous music expressions single staff
+@unnumberedsubsubsec Simultaneous music expressions: single staff
+
 
 To determine the number of staves in a piece, LilyPond looks at
 the beginning of the first expression.  If there is a single note,
@@ -774,9 +844,6 @@ than polyrhythmic scores.
 }
 @end lilypond
 
-
-
-
 @node Staff groups
 @subsection Staff groups
 
index 380bc500de284a179dd4f6629249d41196335aa7..b8f001b3a282937f642510675e6e19666832f67f 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.18"
+@c \version "2.17.29"
 
 @node Fundamental concepts
 @chapter Fundamental concepts
@@ -1603,8 +1603,7 @@ from the name, or vice versa.
   @tab Engraves clefs
 @item Completion_heads_engraver
   @tab Splits notes which cross bar lines
-@c The old Dynamic_engraver is deprecated. -jm
-@item New_dynamic_engraver
+@item Dynamic_engraver
   @tab Creates hairpins and dynamic texts
 @item Forbid_line_break_engraver
   @tab Prevents line breaks if a musical element is still active
@@ -1895,7 +1894,7 @@ The statement which sets the property value is the same as that in a
 @code{\context} block within a @code{\layout} block.  Each
 @code{\context} block will affect all contexts of the type specified
 throughout the @code{\score} or @code{\book} block in which the
-@code{\layout} block appears.  Here is a example to show the format:
+@code{\layout} block appears.  Here is an example to show the format:
 
 @lilypond[verbatim,quote]
 \score {
index ea6c4e08e6ae9867dae1ae8d8fff0e5ffb764637..dfb60fab0b5a1b8fd315b0d109910efc222f1547 100644 (file)
@@ -45,6 +45,10 @@ LilyPond input files (written by you) to produce output files.
 @cindex example, first
 @cindex case sensitive
 
+@menu
+* Producing output::
+@end menu
+
 @qq{Compiling} is the term used for processing an input file in
 LilyPond format to produce output file(s).  Output files are
 generally PDF (for printing or viewing), MIDI (for playing), and
@@ -83,7 +87,8 @@ produce an error message.
 
 @smallspace
 
-@subheading Producing output
+@node Producing output
+@unnumberedsubsubsec Producing output
 
 @cindex PDF file
 @cindex viewing music
@@ -165,6 +170,16 @@ started writing input files.
 @cindex simple notation
 @cindex notation, simple
 
+@menu
+* Pitches::
+* Durations (rhythms)::
+* Rests::
+* Time signature::
+* Tempo marks::
+* Clef::
+* All together::
+@end menu
+
 LilyPond will add some notation elements automatically.  In the
 next example, we have only specified four pitches, but LilyPond
 has added a clef, time signature, and rhythms.
@@ -180,7 +195,8 @@ This behavior may be altered, but in most cases these automatic
 values are useful.
 
 
-@subheading Pitches
+@node Pitches
+@unnumberedsubsubsec Pitches
 
 @cindex pitches
 @cindex relative mode
@@ -287,7 +303,8 @@ To change a note by two (or more!) octaves, we use multiple
 quotes @code{''} and not one double quote @code{"}@tie{}!
 @c " - keeps quotes in order for context-sensitive editor -td
 
-@subheading Durations (rhythms)
+@node Durations (rhythms)
+@unnumberedsubsubsec Durations (rhythms)
 
 @cindex note durations
 @cindex durations
@@ -330,8 +347,8 @@ explicitly (i.e., with a number).
 }
 @end lilypond
 
-
-@subheading Rests
+@node Rests
+@unnumberedsubsubsec Rests
 
 @cindex rest
 @cindex notating rests
@@ -349,7 +366,8 @@ A @notation{rest} is entered just like a note with the name
 @end lilypond
 
 
-@subheading Time signature
+@node Time signature
+@unnumberedsubsubsec Time signature
 
 @cindex time signature
 
@@ -372,7 +390,8 @@ command:
 }
 @end lilypond
 
-@subheading Tempo marks
+@node Tempo marks
+@unnumberedsubsubsec Tempo marks
 
 @cindex tempo marks
 @cindex metronome marks
@@ -400,7 +419,8 @@ set with the @code{\tempo} command:
 @end lilypond
 
 
-@subheading Clef
+@node Clef
+@unnumberedsubsubsec Clef
 
 @cindex clef
 @cindex treble
@@ -429,7 +449,8 @@ The @notation{clef} can be set using the @code{\clef} command:
 @end lilypond
 
 
-@subheading All together
+@node All together
+@unnumberedsubsubsec All together
 
 Here is a small example showing all these elements together:
 
index 6d9f157895f93e43b9984169a359aba458fd15a0..5ee640a9b98d8b2d15e30b514b79399434136ee7 100644 (file)
@@ -174,15 +174,15 @@ the types of objects and properties from their names.
 @cindex tweaking methods
 
 @menu
-* The \override command::
-* The \revert command::
-* The \once prefix::
-* The \overrideProperty command::
-* The \tweak command::
+* The override command::
+* The revert command::
+* The once prefix::
+* The overrideProperty command::
+* The tweak command::
 @end menu
 
-@node The \override command
-@unnumberedsubsubsec The @code{\override} command
+@node The override command
+@unnumberedsubsubsec The @code{@bs{}override} command
 
 @cindex override command
 @cindex override syntax
@@ -253,8 +253,8 @@ g4 a b c |
 @end lilypond
 
 
-@node The \revert command
-@unnumberedsubsubsec The @code{\revert} command
+@node The revert command
+@unnumberedsubsubsec The @code{@bs{}revert} command
 
 @cindex revert command
 
@@ -291,8 +291,8 @@ b4 c |
 @end lilypond
 
 
-@node The \once prefix
-@unnumberedsubsubsec The @code{\once} prefix
+@node The once prefix
+@unnumberedsubsubsec The @code{@bs{}once} prefix
 
 @funindex \once
 @funindex once
@@ -336,8 +336,8 @@ rather than @code{\override} so prefixing these with @code{\once} has no
 effect.
 
 
-@node The \overrideProperty command
-@unnumberedsubsubsec The @code{\overrideProperty} command
+@node The overrideProperty command
+@unnumberedsubsubsec The @code{@bs{}overrideProperty} command
 
 @cindex overrideProperty command
 
@@ -351,8 +351,8 @@ We mention it here for completeness, but for details see
 @c Maybe explain in a later iteration  -td
 
 
-@node The \tweak command
-@unnumberedsubsubsec The @code{\tweak} command
+@node The tweak command
+@unnumberedsubsubsec The @code{@bs{}tweak} command
 
 @cindex tweak command
 
@@ -1117,7 +1117,7 @@ will cause errors when the dimensions of the object are required for
 correct processing.  For example, errors will be generated if the
 @code{stencil} property of the @code{NoteHead} object is set to
 @code{#f}.  If this is the case, you can instead use the
-@code{point-stencil} function, which sets the stencil to a object
+@code{point-stencil} function, which sets the stencil to an object
 with zero size:
 
 @lilypond[quote,verbatim,relative=2]
@@ -2041,7 +2041,7 @@ positioning is not optimum.
 
 @menu
 * The outside-staff-priority property::
-* The \textLengthOn command::
+* The textLengthOn command::
 * Dynamics placement::
 * Grob sizing::
 @end menu
@@ -2259,8 +2259,8 @@ clearly will need to space the notes out horizontally to make more
 room for the text.  This is done using the @code{textLengthOn}
 command.
 
-@node The \textLengthOn command
-@unnumberedsubsubsec The @code{\textLengthOn} command
+@node The textLengthOn command
+@unnumberedsubsubsec The @code{@bs{}textLengthOn} command
 
 @cindex notes, spreading out with text
 
@@ -2613,7 +2613,7 @@ to remember is that the spacing between objects in a
 of the @code{StaffGrouper}. Spacing from ungrouped staves
 (like @code{Lyrics} and @code{Staff}) is controlled by the
 variables of the @code{VerticalAxisGroup}.  See the
-@ruser{Flexible vertical spacing \paper variables} and
+@ruser{Flexible vertical spacing paper variables} and
 @ruser{Flexible vertical spacing within systems} for more
 details.
 
@@ -2703,9 +2703,9 @@ space between any object which supports the
 @code{side-position-interface} and the nearest other object (generally
 the note or the staff lines); @code{staff-padding} applies only to
 those objects which are always set outside the staff -- it controls
-the minimum amount of space that should be inserted between that
-object and the staff.  Note that @code{staff-padding} has no effect on
-objects which are positioned relative to the note rather than the
+the minimum distance from the staff to the outside-staff object.
+Note that @code{staff-padding} has no effect on
+objects that are positioned relative to the note rather than the
 staff, even though it may be overridden without error for such objects
 -- it is simply ignored.
 
@@ -2970,9 +2970,9 @@ note head by overriding @code{right-padding}.
 @cindex objects, aligning on a baseline
 
 @code{staff-padding} can be used to align objects such as dynamics
-along a baseline at a fixed height above the staff, rather than at a
-height dependent on the position of the note to which they are
-attached.  It is not a property of @code{DynamicText} but of
+along a baseline at a fixed distance from the staff, when no other
+notation forces them further from the staff.
+It is not a property of @code{DynamicText} but of
 @code{DynamicLineSpanner}.  This is because the baseline should apply
 equally to @strong{all} dynamics, including those created as extended
 spanners.  So this is the way to align the dynamic marks in the
@@ -2984,12 +2984,8 @@ example taken from the previous section:
 @cindex staff-padding property, example
 
 @lilypond[quote,fragment,ragged-right,verbatim,relative=2]
-\dynamicUp
-% Extend width by 1 unit
-\override DynamicText.extra-spacing-width = #'(-0.5 . 0.5)
-% Align dynamics to a base line 2 units above staff
-\override DynamicLineSpanner.staff-padding = #2
-a4\f b\mf a\mp b\p
+\override DynamicLineSpanner.staff-padding = #3
+a4\f b\mf a\p b\mp
 @end lilypond
 
 
@@ -4041,10 +4037,10 @@ the parts with all the @code{#()}.  This is explained in
 @ref{Advanced tweaks with Scheme}.
 
 @lilypond[quote,verbatim,ragged-right]
-mpdolce = -\tweak #'self-alignment-X #-0.6 #
-  (make-dynamic-script
-   (markup #:dynamic "mp"
-           #:normal-text #:italic "dolce" ))
+mpdolce =
+  \tweak self-alignment-X #-0.6
+  #(make-dynamic-script
+    #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
 
 inst =
 #(define-music-function
@@ -4071,10 +4067,10 @@ Let's hide them in another file:
 
 @example
 %%% save this to a file called "definitions.ily"
-mpdolce = -\tweak #'self-alignment-X #-0.6 #
-  (make-dynamic-script
-   (markup #:dynamic "mp"
-           #:normal-text #:italic "dolce" ))
+mpdolce =
+  \tweak self-alignment-X #-0.6
+  #(make-dynamic-script
+    #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
 
 inst =
 #(define-music-function
@@ -4106,10 +4102,10 @@ Now let's modify our music (let's save this file as @file{music.ly}).
 @end example
 
 @lilypond[quote,ragged-right]
-mpdolce = -\tweak #'self-alignment-X #-0.6 #
-  (make-dynamic-script
-   (markup #:dynamic "mp"
-           #:normal-text #:italic "dolce" ))
+mpdolce =
+  \tweak self-alignment-X #-0.6
+  #(make-dynamic-script
+    #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
 
 inst =
 #(define-music-function
@@ -4138,10 +4134,10 @@ with this:
 
 @example
 %%%  definitions.ily
-mpdolce = -\tweak #'self-alignment-X #-0.6 #
-  (make-dynamic-script
-   (markup #:dynamic "mp"
-           #:normal-text #:italic "dolce" ))
+mpdolce =
+  \tweak self-alignment-X #-0.6
+  #(make-dynamic-script
+    #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
 
 inst =
 #(define-music-function
@@ -4168,10 +4164,10 @@ inst =
 @end example
 
 @lilypond[quote,ragged-right]
-mpdolce = -\tweak #'self-alignment-X #-0.6 #
-  (make-dynamic-script
-   (markup #:dynamic "mp"
-           #:normal-text #:italic "dolce" ))
+mpdolce =
+  \tweak self-alignment-X #-0.6
+  #(make-dynamic-script
+    #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
 
 inst =
 #(define-music-function
@@ -4216,10 +4212,10 @@ overall size of the output.
 
 @example
 %%%  web-publish.ily
-mpdolce = -\tweak #'self-alignment-X #-0.6 #
-  (make-dynamic-script
-   (markup #:dynamic "mp"
-           #:normal-text #:italic "dolce" ))
+mpdolce =
+  \tweak self-alignment-X #-0.6
+  #(make-dynamic-script
+    #@{ \markup @{ \dynamic mp \normal-text \italic \bold dolce @} #@})
 
 inst =
 #(define-music-function
@@ -4247,10 +4243,10 @@ inst =
 @end example
 
 @lilypond[quote,ragged-right]
-mpdolce = -\tweak #'self-alignment-X #-0.6 #
-  (make-dynamic-script
-   (markup #:dynamic "mp"
-           #:normal-text #:italic "dolce" ))
+mpdolce =
+  \tweak self-alignment-X #-0.6
+  #(make-dynamic-script
+    #{ \markup { \dynamic mp \normal-text \italic \bold dolce } #})
 
 inst =
 #(define-music-function
index 1cc6671c330348829bab3935e7d8a7027debaae2..0f0a94c177d049824188e68f069ef8af172625c4 100644 (file)
@@ -1512,7 +1512,7 @@ sub generate_ly_toc_entries($$$$$)
          'introduction' => [2, 2, 2, 2, 3, 3, 4, 4],
          'download' => [2, 2, 2, 3, 3, 4],
          'manuals' => [1, 1, 1, 2, 2, 2, 3, 3, 3, 3, 3, 4, 4, 4],
-         'community' => [1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4],
+         'community' => [1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 4, 4],
          );
       my $addColor = "colorDefault";
       while (($top_section, $color_indices) = each %color_maps) {
index ad1c84ae49d5a7df0d857c50e3282b99bf5d0b86..c5c800b6e4a205b67ce8fc25164ce00ff4bc03bf 100644 (file)
@@ -10,7 +10,7 @@ OUT_PNG_PAGES = $(PNG_PAGES:%=$(outdir)/%.png)
 OUT_SMALL_PNG_FILES = $(OUT_PNG_FILES:%.png=%-small.png)
 
 ifeq ($(out),www)
-all: $(OUT_PNG_FILES) $(OUT_SMALL_PNG_FILES)
+local-WWW-1: $(OUT_PNG_FILES) $(OUT_SMALL_PNG_FILES)
 endif
 
 $(outdir)/%.png: %.ly
index d6ba0bfc9f3068398f009f6e090ca9c7eee5d402..d8597a9238846d023a7a5bd86bf267568d483dba 100644 (file)
@@ -741,7 +741,7 @@ followVoice.
 
 * Documentation updates
 
-* Added -e,--evaluate=CODE, to evaluate scheme from the command
+* Added -e, --evaluate=CODE, to evaluate scheme from the command
 line. Practical application:
 
         -e "(set-lily-option 'midi-debug #t)'
@@ -3343,7 +3343,7 @@ item for hard constraints.
 handle_broken_smobs (); should conserve a little memory.
 
 * Fixed handling of orphaned score-elements. Any element that does
-not have its Line_of_score as a ancestor in both directions, is silently
+not have its Line_of_score as an ancestor in both directions, is silently
 removed from the output.  This guarantees that programming errors
 don't result in coredumps from Dimension_cache::common_refpoint ():
 element->line_l () is always a common reference point.
index 362c00a21a30f92c61d298d720ef1a41c0339f2d..c890b90f3c05cec336e01c0a5f127a486bbb5df1 100644 (file)
        * input/no-notation/safe-tex.ly: New file.
 
        * scripts/lilypond.py (global_latex_preamble): Add \nofiles for
-       safe mode Add -s,--safe-mode option.  Use -S,--set for setting
+       safe mode Add -s, --safe-mode option.  Use -S, --set for setting
        options now.
        (run_lilypond): When in --safe-mode, pass option to lilypond-bin.
        When in --safe-mode, set environment openout_any=p[aranoid].
index c39d80119301852ab1bf65edc85ab9e1267027e3..a1db6cd710cc01ee9ba6409619c0b92101af1e8e 100644 (file)
@@ -19,9 +19,6 @@ default: local-txt-doc
 OUT_TXT_FILES = $(addprefix $(outdir)/, $(addsuffix .txt, $(TEXTS)))
 ##local-WWW-2: $(OUT_TXT_FILES) $(OUT_HTMLFILES) txt-to-html
 
-copy-for-me:
-       $(foreach a, $(README_TOP_FILES), cp ../$(a) $(outdir)/$(a).txt && ) true
-
 $(outdir)/%.txt: %
        cp $< $@
 
index fba2e58da830eb3c1910c103c4fcaf7924251a87..7d198504b7dc8773ba6a50ab6ccc986b397f76f5 100644 (file)
@@ -2908,7 +2908,7 @@ DK: ?,
 S: ?,
 FI: nousu.
 
-Indicator for a indeterminately rising pitch bend.  Compare with
+Indicator for an indeterminately rising pitch bend.  Compare with
 @emph{glissando}, which has determinate starting and ending pitches.
 
 @seealso
@@ -3527,7 +3527,7 @@ DK: ?,
 S: ?,
 FI: lasku.
 
-Indicator for a indeterminately falling pitch bend.  Compare with
+Indicator for an indeterminately falling pitch bend.  Compare with
 @emph{glissando}, which has determinate starting and ending pitches.
 
 @seealso
index 743b318663f050ff18767237a6e3c3a68d6218e1..ae89bdba9c5a2bcacb14b8a8b710b9c24bb1256a 100644 (file)
@@ -12,7 +12,7 @@
 @c Translation checker:
 @c Translation checker committish:
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @ignore
 Tutorial guidelines:  (different from policy.txt!)
@@ -586,7 +586,7 @@ sleutelwoord @code{\appoggiatura} of @code{\acciaccatura}
 voor een muziekuitdrukking te zetten
 
 @lilypond[verbatim,quote,relative=2]
-c2 \grace { a32[ b] } c2 |
+c2 \grace { a32 b } c2 |
 c2 \appoggiatura b16 c2 |
 c2 \acciaccatura b16 c2 |
 @end lilypond
index 8532ee4dcb0b7da89f4512e12b097567d4c3fbd0..c68c506cf2865542d0f421e70676099f4cda896c 100644 (file)
@@ -12,7 +12,7 @@
 @c Translation checker:
 @c Translation checker committish:
 
-@c \version "2.17.18"
+@c \version "2.17.29"
 
 @node Fundamentele concepten
 @translationof Fundamental concepts
@@ -1628,8 +1628,7 @@ from the name, or vice versa.
   @tab Engraves clefs
 @item Completion_heads_engraver
   @tab Splits notes which cross bar lines
-@c The old Dynamic_engraver is deprecated. -jm
-@item New_dynamic_engraver
+@item Dynamic_engraver
   @tab Creates hairpins and dynamic texts
 @item Forbid_line_break_engraver
   @tab Prevents line breaks if a musical element is still active
@@ -1920,7 +1919,7 @@ The statement which sets the property value is the same as that in a
 @code{\context} block within a @code{\layout} block.  Each
 @code{\context} block will affect all contexts of the type specified
 throughout the @code{\score} or @code{\book} block in which the
-@code{\layout} block appears.  Here is a example to show the format:
+@code{\layout} block appears.  Here is an example to show the format:
 
 @lilypond[verbatim,quote]
 \score {
index 99fa03cce06d1069a1d54137cd0d6ee633fafbf0..80881daf55fa29652e328bdf6dbaee213a2a3803 100644 (file)
@@ -1099,7 +1099,7 @@ will cause errors when the dimensions of the object are required for
 correct processing.  For example, errors will be generated if the
 @code{stencil} property of the @code{NoteHead} object is set to
 @code{#f}.  If this is the case, you can instead use the
-@code{point-stencil} function, which sets the stencil to a object
+@code{point-stencil} function, which sets the stencil to an object
 with zero size:
 
 @lilypond[quote,verbatim,relative=2]
index 2ffb0042fc3b4306a16873ceff081da18b218b70..485346a2f363a680e2327749fc784b47765b95de 100644 (file)
@@ -2879,7 +2879,7 @@ TBC
 @c try Till Rettig
 @c Add example of white note heads:
 @c In the french baroque some composers used white note heads in slow pieces,
-@c mainly in 3/2-time.  A quarter looks there like a eighth with a white
+@c mainly in 3/2-time.  A quarter looks there like an eighth with a white
 @c note head.  (Franz-Rudolf Kuhnen)
 
 @c TODO Add example of this:
index d690681465dd4b06c6ca5e72e0308940c727810a..74782c59c20e01140d8f2574223bc6912c942299 100644 (file)
@@ -1119,7 +1119,7 @@ Notation Reference:
 @ref{Bottom-level contexts - voices},
 @ref{The set command},
 @ref{The override command},
-@ref{The \layout block}.
+@ref{The layout block,,The @code{@bs{}layout} block}.
 
 
 @node Defining new contexts
@@ -3901,13 +3901,13 @@ Each type of object has its own default reference point, to which
 rehearsal marks are aligned:
 
 @lilypond[verbatim,quote,relative=1]
-% The rehearsal mark will be aligned to right edge of the Clef
+% The rehearsal mark will be aligned to the right edge of the Clef
 \override Score.RehearsalMark.break-align-symbols = #'(clef)
 \key a \major
 \clef treble
 \mark "↓"
 e1
-% The rehearsal mark will be centered above the Time Signature
+% The rehearsal mark will be aligned to the left edge of the Time Signature
 \override Score.RehearsalMark.break-align-symbols = #'(time-signature)
 \key a \major
 \clef treble
index 715aa620a74e9f9776c1de10d9621fa59c1ad682..67ee14753c396678bbb0c9db6ccadd451527ad82 100644 (file)
@@ -470,6 +470,9 @@ Stems may be manually placed to point up or down; see
 @lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {default-direction-of-stems-on-the-center-line-of-the-staff.ly}
 
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
+{automatically-changing-the-stem-direction-of-the-middle-note-based-on-the-melody.ly}
+
 @seealso
 Notation Reference:
 @ref{Direction and placement}.
index 1bb80351977b0d311bcfd4fbe9343b53cc553189..731087eb4e29c2cf372a7faf57bbf32608a8d4f1 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.11"
+@c \version "2.17.27"
 
 @node Fretted string instruments
 @section Fretted string instruments
@@ -654,7 +654,7 @@ you can use
 \layout @{
   \context @{
     \TabStaff
-    stringTunings = \stringTuning \notemode @{ <c' g' d'' a''> @}
+    stringTunings = \stringTuning <c' g' d'' a''>
   @}
 @}
 @end example
index 0929c21801df0d3caf744113b534036309fcec74..1617a393950256365c93d7b516620b8c3eb5708f 100644 (file)
@@ -357,7 +357,7 @@ book-wide settings.  If more than one such definition of the same type
 is entered at the top level the definitions are combined, but in
 conflicting situations the later definitions take precedence.  For
 details of how this affects the @code{\layout} block see
-@ref{The \layout block}.
+@ref{The layout block,,The @code{@bs{}layout} block}.
 
 @item
 A direct scheme expression, such as
@@ -515,7 +515,7 @@ Learning Manual:
 
 Notation Reference:
 @ref{Titles explained},
-@ref{The \layout block}.
+@ref{The layout block,,The @code{@bs{}layout} block}.
 
 
 @node Titles and headers
index c0bdb0e4b1a8ecbdc2d2f9ca61a9592932409144..a8405b5274f29b9008be04c9afbaba92c08b5aa4 100644 (file)
@@ -206,7 +206,7 @@ Overlapping notation can result when voices cross staves:
   \new Staff = "up" {
     \voiceOne
     % Make space for fingering in the cross-staff voice
-    \once\override DynamicLineSpanner.staff-padding = #3.4
+    \once\override DynamicLineSpanner.staff-padding = #4
     e''2\p\< d''\>
     c''1\!
   }
@@ -580,7 +580,7 @@ come into use to simplify the performance instructions.
 @snippets
 
 @lilypondfile[verbatim,quote,texidoc,doctitle]
-{accordion-discant-symbols.ly}
+{accordion-registers.ly}
 
 @seealso
 Snippets:
index d4f8964825a0ff785a49602240b3535b7185309e..020a21092c304b81b19327d920f667903c1bf513 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 @node Rhythms
 @section Rhythms
@@ -2488,7 +2488,7 @@ Unbeamed grace notes are not put into normal note beams.
 
 @lilypond[quote,verbatim,relative=2]
 c4 d8[
-\grace { e32[ d c d] }
+\grace { e32 d c d }
 e8] e[ e
 \grace { f16 }
 e8 e]
@@ -3340,7 +3340,7 @@ up no additional logical time in a measure.
 
 @lilypond[quote,relative=2,verbatim]
 c4 \grace b16 a4(
-\grace { b16[ c16] } a2)
+\grace { b16 c16 } a2)
 @end lilypond
 
 There are three other types of grace notes possible; the
@@ -3355,7 +3355,7 @@ between notes that are slurred themselves, using the
 @lilypond[quote,relative=2,verbatim]
 \acciaccatura d8 c4
 \appoggiatura e8 d4
-\acciaccatura { g16[ f] } e2
+\acciaccatura { g16 f } e2
 \slashedGrace a,8 g4
 \slashedGrace b16 a4(
 \slashedGrace b8 a2)
@@ -3367,8 +3367,8 @@ eighth grace note
 
 @lilypond[quote,relative=2,verbatim]
 <<
-  \new Staff { e2 \grace { c16[ d e f] } e2 }
-  \new Staff { c2 \grace { g8[ b] } c2 }
+  \new Staff { e2 \grace { c16 d e f } e2 }
+  \new Staff { c2 \grace { g8 b } c2 }
 >>
 @end lilypond
 
@@ -3415,7 +3415,7 @@ note after a space lasting 7/8 of the main note.
 \new Voice {
   <<
     { d1^\trill_( }
-    { s2 s4. \grace { c16[ d] } }
+    { s2 s4. \grace { c16 d } }
   >>
   c1)
 }
@@ -3481,6 +3481,7 @@ Snippets:
 Internals Reference:
 @rinternals{GraceMusic},
 @rinternals{Grace_beam_engraver},
+@rinternals{Grace_auto_beam_engraver},
 @rinternals{Grace_engraver},
 @rinternals{Grace_spacing_engraver}.
 
index 70a6b50c6a27fd6ffc866e37aaa0d6ecd0f22b0f..4725ecf0dee3c913de583cde1eab149c96dfb2ea 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.25"
+@c \version "2.17.28"
 
 
 @node Simultaneous notes
@@ -91,7 +91,7 @@ be combined with them (for more complex possibilities of combining such
 elements, see @ref{Simultaneous expressions}):
 
 @lilypond[verbatim,quote,relative=2]
-\grace { g8[( a b] }
+\grace { g8( a b }
 <> ) \p \< -. -\markup \italic "sempre staccato"
 \repeat unfold 4 { c4 e }  c1\f
 @end lilypond
index c85be8386969835c5bf0b318926fb03b07ca12db..dfa72dc650c9a597ceda5d06fe241ba2d6131a93 100644 (file)
@@ -8,7 +8,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.11"
+@c \version "2.17.28"
 
 @ignore
 GDP TODO list
@@ -94,17 +94,17 @@ This section discusses page layout options for the @code{\paper}
 block.
 
 @menu
-* The \paper block::
+* The paper block::
 * Paper size and automatic scaling::
-* Fixed vertical spacing \paper variables::
-* Flexible vertical spacing \paper variables::
-* Horizontal spacing \paper variables::
-* Other \paper variables::
+* Fixed vertical spacing paper variables::
+* Flexible vertical spacing paper variables::
+* Horizontal spacing paper variables::
+* Other paper variables::
 @end menu
 
 
-@node The \paper block
-@subsection The @code{\paper} block
+@node The paper block
+@subsection The @code{@bs{}paper} block
 
 @code{\paper} blocks may be placed in three different places to form
 a descending hierarchy of @code{\paper} blocks:
@@ -161,7 +161,7 @@ footers, and titles are discussed in
 
 Most @code{\paper} variables will only work in a @code{\paper}
 block.  The few that will also work in a @code{\layout} block are
-listed in @ref{The \layout block}.
+listed in @ref{The layout block,,The @code{@bs{}layout} block}.
 
 Except when specified otherwise, all @code{\paper} variables that
 correspond to distances on the page are measured in millimeters,
@@ -203,7 +203,7 @@ The Scheme equivalent of the above example is:
 Notation Reference:
 @ref{Paper size and automatic scaling},
 @ref{Custom titles headers and footers},
-@ref{The \layout block}.
+@ref{The layout block,,The @code{@bs{}layout} block}.
 
 Installed Files:
 @file{ly/paper-defaults-init.ly}.
@@ -331,11 +331,12 @@ are described in @ref{Setting the paper size}.
 
 The vertical dimensions affected by automatic scaling are
 @code{top-margin} and @code{bottom-margin} (see
-@ref{Fixed vertical spacing \paper variables}).  The horizontal
+@ref{Fixed vertical spacing paper variables,,Fixed vertical spacing @code{@bs{}paper} variables}).
+The horizontal
 dimensions affected by automatic scaling are @code{left-margin},
 @code{right-margin}, @code{inner-margin}, @code{outer-margin},
 @code{binding-offset}, @code{indent}, and @code{short-indent} (see
-@ref{Horizontal spacing \paper variables}).
+@ref{Horizontal spacing paper variables,,Horizontal spacing @code{@bs{}paper} variables}).
 
 The default values for these dimensions are set in
 @file{ly/paper-defaults-init.ly}, using internal variables named
@@ -347,16 +348,16 @@ These are the values that result at the default paper size
 
 @seealso
 Notation Reference:
-@ref{Fixed vertical spacing \paper variables},
-@ref{Horizontal spacing \paper variables}.
+@ref{Fixed vertical spacing paper variables,,Fixed vertical spacing @code{@bs{}paper} variables},
+@ref{Horizontal spacing paper variables,,Horizontal spacing @code{@bs{}paper} variables}.
 
 Installed Files:
 @file{ly/paper-defaults-init.ly},
 @file{scm/paper.scm}.
 
 
-@node Fixed vertical spacing \paper variables
-@subsection Fixed vertical spacing @code{\paper} variables
+@node Fixed vertical spacing paper variables
+@subsection Fixed vertical spacing @code{@bs{}paper} variables
 
 @warning{Some @code{@bs{}paper} dimensions are automatically
 scaled to the paper size, which may lead to unexpected behavior.
@@ -423,8 +424,8 @@ Explicitly defined paper-sizes will override any user-defined top or
 bottom margin settings.
 
 
-@node Flexible vertical spacing \paper variables
-@subsection Flexible vertical spacing @code{\paper} variables
+@node Flexible vertical spacing paper variables
+@subsection Flexible vertical spacing @code{@bs{}paper} variables
 
 In most cases, it is preferable for the vertical distances between
 certain items (such as margins, titles, systems, and separate
@@ -442,7 +443,7 @@ settings typically entered inside a @code{\score} or
 
 @menu
 * Structure of flexible vertical spacing alists::
-* List of flexible vertical spacing \paper variables::
+* List of flexible vertical spacing paper variables::
 @end menu
 
 
@@ -539,8 +540,8 @@ redefines the variable:
 @end example
 
 
-@node List of flexible vertical spacing \paper variables
-@unnumberedsubsubsec List of flexible vertical spacing @code{\paper} variables
+@node List of flexible vertical spacing paper variables
+@unnumberedsubsubsec List of flexible vertical spacing @code{@bs{}paper} variables
 
 The names of these variables follow the format
 @code{@var{upper}-@var{lower}-spacing}, where @code{@var{upper}}
@@ -620,22 +621,22 @@ Snippets:
 @rlsr{Spacing}.
 
 
-@node Horizontal spacing \paper variables
-@subsection Horizontal spacing @code{\paper} variables
+@node Horizontal spacing paper variables
+@subsection Horizontal spacing @code{@bs{}paper} variables
 
 @warning{Some @code{@bs{}paper} dimensions are automatically
 scaled to the paper size, which may lead to unexpected behavior.
 See @ref{Automatic scaling to paper size}.}
 
 @menu
-* \paper variables for widths and margins::
-* \paper variables for two-sided mode::
-* \paper variables for shifts and indents::
+* paper variables for widths and margins::
+* paper variables for two-sided mode::
+* paper variables for shifts and indents::
 @end menu
 
 
-@node \paper variables for widths and margins
-@unnumberedsubsubsec @code{\paper} variables for widths and margins
+@node paper variables for widths and margins
+@unnumberedsubsubsec @code{@bs{}paper} variables for widths and margins
 
 Default values (before scaling) that are not listed here are
 defined in @file{ly/paper-defaults-init.ly}.
@@ -733,8 +734,8 @@ Explicitly defined paper-sizes will override any user-defined left or
 right margin settings.
 
 
-@node \paper variables for two-sided mode
-@unnumberedsubsubsec @code{\paper} variables for two-sided mode
+@node paper variables for two-sided mode
+@unnumberedsubsubsec @code{@bs{}paper} variables for two-sided mode
 
 Default values (before scaling) are defined in
 @file{ly/paper-defaults-init.ly}.
@@ -786,8 +787,8 @@ Installed Files:
 @file{ly/paper-defaults-init.ly}.
 
 
-@node \paper variables for shifts and indents
-@unnumberedsubsubsec @code{\paper} variables for shifts and indents
+@node paper variables for shifts and indents
+@unnumberedsubsubsec @code{@bs{}paper} variables for shifts and indents
 
 Default values (before scaling) that are not listed here are
 defined in @file{ly/paper-defaults-init.ly}.
@@ -831,19 +832,19 @@ Snippets:
 @rlsr{Spacing}.
 
 
-@node Other \paper variables
-@subsection Other @code{\paper} variables
+@node Other paper variables
+@subsection Other @code{@bs{}paper} variables
 
 @menu
-* \paper variables for line breaking::
-* \paper variables for page breaking::
-* \paper variables for page numbering::
-* Miscellaneous \paper variables::
+* paper variables for line breaking::
+* paper variables for page breaking::
+* paper variables for page numbering::
+* Miscellaneous paper variables::
 @end menu
 
 
-@node \paper variables for line breaking
-@unnumberedsubsubsec @code{\paper} variables for line breaking
+@node paper variables for line breaking
+@unnumberedsubsubsec @code{@bs{}paper} variables for line breaking
 
 @table @code
 
@@ -882,8 +883,8 @@ Notation Reference:
 @ref{Line breaking}.
 
 
-@node \paper variables for page breaking
-@unnumberedsubsubsec @code{\paper} variables for page breaking
+@node paper variables for page breaking
+@unnumberedsubsubsec @code{@bs{}paper} variables for page breaking
 
 Default values not listed here are defined in
 @file{ly/paper-defaults-init.ly}
@@ -977,8 +978,8 @@ Installed Files:
 @file{ly/paper-defaults-init.ly}.
 
 
-@node \paper variables for page numbering
-@unnumberedsubsubsec @code{\paper} variables for page numbering
+@node paper variables for page numbering
+@unnumberedsubsubsec @code{@bs{}paper} variables for page numbering
 
 Default values not listed here are defined in
 @file{ly/paper-defaults-init.ly}
@@ -1024,8 +1025,8 @@ music to start on page 1 there must be a blank page on the back
 of the cover page so that page 1 is on the right hand side.
 
 
-@node Miscellaneous \paper variables
-@unnumberedsubsubsec Miscellaneous @code{\paper} variables
+@node Miscellaneous paper variables
+@unnumberedsubsubsec Miscellaneous @code{@bs{}paper} variables
 
 @table @code
 
@@ -1088,13 +1089,13 @@ This section discusses score layout options for the @code{\layout}
 block.
 
 @menu
-* The \layout block::
+* The layout block::
 * Setting the staff size::
 @end menu
 
 
-@node The \layout block
-@subsection The @code{\layout} block
+@node The layout block
+@subsection The @code{@bs{}layout} block
 
 @funindex \layout
 
@@ -1124,15 +1125,15 @@ variables that can appear in a @code{\layout} block are:
 
 @item
 @code{line-width}, @code{ragged-right} and @code{ragged-last}
-(see @ref{\paper variables for widths and margins})
+(see @ref{paper variables for widths and margins,,@code{@bs{}paper} variables for widths and margins})
 
 @item
 @code{indent} and @code{short-indent}
-(see @ref{\paper variables for shifts and indents})
+(see @ref{paper variables for shifts and indents,,@code{@bs{}paper} variables for shifts and indents})
 
 @item
 @code{system-count}
-(see @ref{\paper variables for line breaking})
+(see @ref{paper variables for line breaking,,@code{@bs{}paper} variables for line breaking})
 
 @end itemize
 
@@ -1493,7 +1494,7 @@ every 4 measures, and only there:
 
 @seealso
 Notation Reference:
-@ref{\paper variables for line breaking}.
+@ref{paper variables for line breaking,,@code{@bs{}paper} variables for line breaking}.
 
 Snippets:
 @rlsr{Spacing}.
@@ -1520,7 +1521,7 @@ There are also analogous settings to @code{ragged-right} and
 @code{ragged-bottom} and @code{ragged-last-bottom}.  If set to
 @code{#t} the systems on all pages or just the last page
 respectively will not be justified vertically.  See
-@ref{Fixed vertical spacing \paper variables}.
+@ref{Fixed vertical spacing paper variables,,Fixed vertical spacing @code{@bs{}paper} variables}.
 
 Page breaks are computed by the @code{page-breaking} function.  LilyPond
 provides three algorithms for computing page breaks,
@@ -1577,7 +1578,7 @@ book parts.
 
 @seealso
 Notation Reference:
-@ref{\paper variables for page breaking}.
+@ref{paper variables for page breaking,,@code{@bs{}paper} variables for page breaking}.
 
 Snippets:
 @rlsr{Spacing}.
@@ -1674,7 +1675,7 @@ top-level markups.
 
 @seealso
 Notation Reference:
-@ref{\paper variables for line breaking}.
+@ref{paper variables for line breaking,,@code{@bs{}paper} variables for line breaking}.
 
 Snippets:
 @rlsr{Spacing}.
@@ -1928,7 +1929,7 @@ control the vertical spacing of staves and non-staff lines within
 individual systems.  The vertical spacing between separate
 systems, scores, markups, and margins is controlled by
 @code{\paper} variables, which are discussed in
-@ref{Flexible vertical spacing \paper variables}.
+@ref{Flexible vertical spacing paper variables,,Flexible vertical spacing @code{@bs{}paper} variables}.
 
 @menu
 * Within-system spacing properties::
@@ -1982,7 +1983,7 @@ given in the following table:
 @item @code{ChordNames}  @tab baseline
 @item @code{NoteNames}   @tab baseline
 @item @code{Lyrics}      @tab baseline
-@item @code{Dynamics}    @tab vertical center
+@item @code{Dynamics}    @tab mid-height of @q{m}
 @item @code{FiguredBass} @tab highest point
 @item @code{FretBoards}  @tab top line
 @end multitable
@@ -2044,10 +2045,10 @@ labelContext =
   \new Lyrics { \lyrics { \skip 1*2 | ghijk1 | } }
 >>
 
-%% The reference point for Dynamics is its vertical center
+%% The reference point for Dynamics is the midline of 'm' in the font
 <<
   \new RhythmicStaff {
-    \set RhythmicStaff.instrumentName = #"vertical center "
+    \set RhythmicStaff.instrumentName = #"mid-height "
     \labelContext "Dynamics" s1*3
   }
   \new Dynamics { s1\mp s\fp }
@@ -2076,7 +2077,8 @@ labelContext =
 Each of the vertical spacing grob properties (except
 @code{staff-affinity}) uses the same alist structure as the
 @code{\paper} spacing variables discussed in
-@ref{Flexible vertical spacing \paper variables}.  Specific methods
+@ref{Flexible vertical spacing paper variables,,Flexible vertical spacing @code{@bs{}paper} variables}.
+Specific methods
 for modifying alists are discussed in @ref{Modifying alists}.
 Grob properties should be adjusted with an @code{\override} inside
 a @code{\score} or @code{\layout} block, and not inside a
@@ -2218,7 +2220,7 @@ spacing settings for that staff.
 
 @seealso
 Notation Reference:
-@ref{Flexible vertical spacing \paper variables},
+@ref{Flexible vertical spacing paper variables,,Flexible vertical spacing @code{@bs{}paper} variables},
 @ref{Modifying alists}.
 
 Installed Files:
@@ -3012,7 +3014,7 @@ regard for clefs, bar lines, and grace notes,
 
 @lilypond[quote,ragged-right,relative=2,verbatim]
 \override Score.SpacingSpanner.strict-note-spacing = ##t
-\new Staff { c8[ c \clef alto c \grace { c16[ c] } c8 c c]  c32[ c] }
+\new Staff { c8[ c \clef alto c \grace { c16 c } c8 c c]  c32[ c] }
 @end lilypond
 
 @seealso
index 55272a61210ea00e13a0f7414f1b8295581b214e..00809e093b27dfc1a422604e2f26597062853b70 100644 (file)
@@ -930,7 +930,7 @@ multi-line instrument names, @code{\center-column} must be used:
 However, if the instrument names are longer, the instrument names in a
 staff group may not be centered unless the @code{indent} and
 @code{short-indent} settings are increased.  For details about these
-settings, see @ref{\paper variables for shifts and indents}.
+settings, see @ref{paper variables for shifts and indents,,@code{@bs{}paper} variables for shifts and indents}.
 
 @lilypond[verbatim,quote,ragged-right]
 \relative c'' {
@@ -1032,7 +1032,7 @@ expression to declare the instrument switch:
 
 @seealso
 Notation Reference:
-@ref{\paper variables for shifts and indents},
+@ref{paper variables for shifts and indents,,@code{@bs{}paper} variables for shifts and indents},
 @ref{Modifying context plug-ins}.
 
 Snippets:
index 046c96e820c53da506aae13883734b2b32a5e234..87d176a5e54deb2c7a2f79e85cb2cf2a2acf6d11 100644 (file)
@@ -7,7 +7,7 @@
     Guide, node Updating translation committishes..
 @end ignore
 
-@c \version "2.17.19"
+@c \version "2.17.28"
 
 @node Vocal music
 @section Vocal music
@@ -1922,7 +1922,7 @@ changed:
 <<
   \new Voice = melody \relative c' {
     f4 \appoggiatura a32 b4
-    \grace { f16[ a16] } b2
+    \grace { f16 a16 } b2
     \afterGrace b2 { f16[ a16] }
     \appoggiatura a32 b4
     \acciaccatura a8 b4
@@ -1951,7 +1951,7 @@ block:
 @lilypond[verbatim,ragged-right,quote]
 <<
   \new Voice = melody \relative c' {
-    \grace { c16[( d e f] }
+    \grace { c16( d e f }
     g1) f
   }
   \new Lyrics \with { includeGraceNotes = ##t }
index ee4a326b2f88d81c3efcf0cf6fb29b98d612de2f..505bda3c57299a86ccac556f802e48f5ffeda9f1 100644 (file)
   lsrtags = "keyboards, specific-notation, symbols-and-glyphs, workaround"
 
   texidoc = "
-Accordion discant-specific symbols are added using @code{\\markup}. The
-placement of the symbols can be tweaked by changing the
+This snippet has been obsoleted by predefined markup commands, see
+@ruser{Accordion Registers}.  It's still useful as a simple
+demonstration of how to combine symbols: the placement of the symbols
+added with @code{\\markup} can be tweaked by changing the
 @code{\\translate-scaled} arguments.  @code{\\translate-scaled} is
 used here rather than @code{\\translate} in order to let the
 positioning of the symbol parts adapt to changes of @code{font-size}.
index 07d61cfc5505350580a8fec955fc12719a927524..6f05ed94eda50c4efc88120bf3960a9ab349a313 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "pitches, staff-notation, vocal-music"
index 62bed47c7ada6a02ea191f3ec2c12d59bf3e1996..2c74e33ce678a85198a00095d116e86c73bef760 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "breaks, contexts-and-engravers, staff-notation, workaround"
index 3ebf0f3189261111b4a84906a1da0b6b6c50fab1..f187bd84e8957a2b7bc9bfb4fbaab6b80d6e4719 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "contexts-and-engravers, really-simple, staff-notation"
index cb2e31800df33c2d5fb57f97b89d87cb450fa0e5..fce68d84b75b46612697c1ce25f9673135da40f8 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "pitches, tweaks-and-overrides"
index f6c7e5df1e85f38a4e5cc89ff404d864bef5f8c3..ee14a8aff5b52dfef57e7abfda0c4549e378ac4a 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "chords, specific-notation"
index d17bf3729d84f1bbc4db2ae8b6e866c0da1bd293..5912d2d8aa1728e60b98c52e22c0fbb2deae650b 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "expressive-marks, rhythms"
index d1723ea62072704b46b8af0417ba186cda9d9156..7f354029fe14650377e8c0d964c58fdd7fc30d64 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "percussion, preparing-parts, really-simple, rhythms, specific-notation"
index 2fe4bcd6c44f0807f890996531197cc2e1066c8f..9e3f6072cb2ecd4d76d3872724b72bd31075a4cf 100644 (file)
@@ -1,53 +1,47 @@
-%% DO NOT EDIT this file manually; it is automatically
-%% generated from LSR http://lsr.dsi.unimi.it
-%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
-%% and then run scripts/auxiliar/makelsr.py
-%%
-%% This file is in the public domain.
+% DO NOT EDIT this file manually; it is automatically
+% generated from Documentation/snippets/new
+% Make any changes in Documentation/snippets/new/
+% and then run scripts/auxiliar/makelsr.py
+%
+% This file is in the public domain.
+%% Note: this file works from version 2.16.0
 \version "2.16.0"
 
 \header {
   lsrtags = "scheme-language"
 
   texidoc = "
-You can add various stuff to notes using @code{make-music}. In this
-example, an extra fingering is attached to a note.
-
-
-In general, first do a @code{display} of the music you want to create,
-then write a function that will structure the music for you.
-
-
+You can add additional elements to notes using @code{map-some-music}. In this
+example, an extra script is attached to a note.
 
+In general, first do a @code{\\displayMusic} of the music you want to
+create, then write a function that will work on the appropriate parts
+of the music for you.
 "
   doctitle = "Adding extra fingering with scheme"
 } % begin verbatim
 
 
-#(define (make-text-script x)
-   (make-music 'TextScriptEvent
-               'direction DOWN
-               'text (make-simple-markup x)))
-
-#(define (add-text-script m x)
-   (if (equal? (ly:music-property m 'name) 'EventChord)
-       (set! (ly:music-property m 'elements)
-             (cons (make-text-script x)
-                  (ly:music-property m 'elements)))
-       (let ((es (ly:music-property m 'elements))
-            (e (ly:music-property m 'element)))
-        (map (lambda (y) (add-text-script y x)) es)
-        (if (ly:music? e)
-            (add-text-script e x))))
-   m)
-
 addScript =
-#(define-music-function (parser location script music )
-                                       ( string? ly:music? )
-               (add-text-script music script))
+#(define-music-function (parser location script music)
+   (ly:event? ly:music?)
+   (map-some-music
+    (lambda (mus)
+      (define (append-script-at! prop)
+        (set! (ly:music-property mus prop)
+              (append (ly:music-property mus prop)
+                      (list (ly:music-deep-copy script))))
+        mus)
+      (case (ly:music-property mus 'name)
+        ((EventChord)
+         (append-script-at! 'elements))
+        ((NoteEvent)
+         (append-script-at! 'articulations))
+        (else #f)))
+    music))
 
 \score {
   {
-    \addScript "6" { c'4-3 }
+    \addScript _6 { c'4-3 <c' e' g'> }
   }
 }
index c698988a4dbea50d6e823f31257397c5f1c4f165..80df7dc6d0539e8beb736e61b6737f1663db7fc4 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "staff-notation, symbols-and-glyphs, vocal-music"
index 1e6e5ee8b9164d260b8aa32e6da4a0802498cb4f..a2d214337d6ae01463cd1fa9ce1f9e4b1abea988 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations, scheme-language, tweaks-and-overrides"
index 3139de212c48d369b87c68403c8fc76b0f329b0a..05b4e9ba0770a68a6ba6af814923cad9e996d9f6 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, workaround"
index 153f5a5792c87e3d7ce75ac2f779789a3baee17e..d442d817ec665bbe71ac326f30e2c3315820b025 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
index f708b125bee1e9cd0cd3a83d7e9fc030518d85bb..e7bcf160f125bdd413839b07dcff7de29486acfb 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "correction-wanted, spacing, text, vocal-music, workaround"
index fedf0f65b2b476abfc66748f5895e1ee6890753c..6b0b03478d7ffb50f8b414d93ae7007a63eb7feb 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks"
index 4a2c129cb619d6bcd86fa233eff73e1a93ca5e68..b67aeac03a360a4c01f1a2ddfa57c0e0b5842de2 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "paper-and-layout, text, titles"
index 035c984dcd97151668c1f1a4041b3e1668bea154..321f4cb3d748742a6cab82106332dcf0bd4c86d3 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "rhythms"
index d19ee20a8a7584846b82f57b17a1182509944018..c25eccd8a16d237457239aace1a6ea3b390118c7 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "text"
index f780b8daf65f4ccdb1da9f1ac510c72cc80d15f1..d4a211ffe549e6a8268615e6989bc4ac25cdadd6 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations, fretted-strings, spacing, specific-notation"
index 1b6dc303bcb312956ab8bb7db35672ebd2f9736f..719aa97ea12a02f12900037138a8beef78d8ef53 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "pitches, tweaks-and-overrides"
index f770343e7791b91aa46ef9dc5258252cba63e32e..d735931c3102ac0d5886da9dbcd3b2964c952a98 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, rhythms"
index cb0a4d0a9231353e2e14f60b04699eb9cb68d586..02a153baf72892b55707de56674247841d2bdac0 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations, really-simple, tweaks-and-overrides"
index d6b9759fbd0d075e8b0597cc681cb5d4e30bc70f..c16659a403488d4252e5572ccc425cadb590dbcc 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "ancient-notation, real-music, really-cool, template"
index d9febf992ba472895fef6b751b6546787ae75817..84e12ce3dc06aa706ede0f64dab6fa9f24342217 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "ancient-notation"
index d6c1a7b1fe6e3ad8b77974659983ae0f4fafbe0d..81f5816c0a56026213f67e6a06fe3c25ce693bbe 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "template, vocal-music"
index d1da8f537004861412da70a2d0993b40176c8705..3d1708e4556223445e1dab4c2f9e7cb87906f467 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "world-music"
index 0257f0eec150e1700452aeaa351b748a1e162f3a..2ff6e85ab8ee11224603cf655ddc810993254c34 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index fb25da83a6847a49b922228d88173f4b4277170d..40e9e04d68ee6d365fea613b03c4af546c002210 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "automatic-notation, connecting-notes, rhythms"
diff --git a/Documentation/snippets/automatically-changing-the-stem-direction-of-the-middle-note-based-on-the-melody.ly b/Documentation/snippets/automatically-changing-the-stem-direction-of-the-middle-note-based-on-the-melody.ly
new file mode 100644 (file)
index 0000000..6ff6b99
--- /dev/null
@@ -0,0 +1,34 @@
+%% DO NOT EDIT this file manually; it is automatically
+%% generated from LSR http://lsr.dsi.unimi.it
+%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
+%% and then run scripts/auxiliar/makelsr.py
+%%
+%% This file is in the public domain.
+\version "2.17.6"
+
+\header {
+  lsrtags = "contexts-and-engravers, pitches"
+
+  texidoc = "
+LilyPond can alter the stem direction of the middle note on a staff so
+that it follows the melody, by adding the @code{Melody_engraver} to the
+Voice context and overriding the @code{neutral-direction} of Stem.
+
+"
+  doctitle = "Automatically changing the stem direction of the middle note based on the melody"
+} % begin verbatim
+
+\relative c'' {
+  \time 3/4
+  \autoBeamOff
+  a8 b g f b g |
+  c b d c b c
+}
+
+\layout {
+  \context {
+    \Voice
+    \consists "Melody_engraver"
+    \override Stem.neutral-direction = #'()
+  }
+}
index ce9b4f02a7a154020aad0c25441eb2b72eed752c..9af5fffa99995a2950d7f2526faf37c281f1e73e 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "chords, editorial-annotations, rhythms, tweaks-and-overrides"
index eacdc2fc0edc463e1ff95f3cb71227e5340fcad5..a09e8853d06277e3d1fbb12e29b229982924f3fb 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "rhythms"
index 4e0e877cdfd0de733cd95bf97b4b1e30b8a221c1..1b60a49d41b2c8c2432be6b20ef69d657f5d38bb 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "rhythms"
index 107b885743c95fda985637f02333b9c475573dae..c9139bafb1f52c1702be5ee2dec65f48fb437744 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations, really-cool, text"
index 0470f11241ffe7a7b83501eda691679bff077856..c1af6d24dae150e249a5c20eeb5200fbf358fb72 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, symbols-and-glyphs"
index 66e83829927af59f32a48b45c3677c84f1a0e579..68960a584034a088585dece16ea64f49fadc32f0 100644 (file)
@@ -1,10 +1,11 @@
-%% DO NOT EDIT this file manually; it is automatically
-%% generated from LSR http://lsr.dsi.unimi.it
-%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
-%% and then run scripts/auxiliar/makelsr.py
-%%
-%% This file is in the public domain.
-\version "2.17.25"
+% DO NOT EDIT this file manually; it is automatically
+% generated from Documentation/snippets/new
+% Make any changes in Documentation/snippets/new/
+% and then run scripts/auxiliar/makelsr.py
+%
+% This file is in the public domain.
+%% Note: this file works from version 2.17.27
+\version "2.17.27"
 
 \header {
   lsrtags = "contemporary-notation, expressive-marks, symbols-and-glyphs"
   texidoc = "
 In order to make parts of a crescendo hairpin invisible, the following
 method is used: A white rectangle is drawn on top of the respective
-part of the crescendo hairpin, making it invisible.  The rectangle is
-defined as postscript code within a text markup.
-
-To fine-tune the position and size of the markup, the number preceding
-@code{setgray} in the postscript definition can be set to a value less
-than one, making it grey.  The two numbers before @code{scale} in the
-postscript code are responsible for the width and height of the
-rectangle, the two numbers before @code{translate} change the x- and
-y-origin of the rectangle.
+part of the crescendo hairpin, making it invisible.
 
+The markup command @code{with-dimensions} tells LilyPond to consider only
+the bottom edge of the rectangle when spacing it against the hairpin.
+The property @code{staff-padding} prevents the rectangle from fitting
+between the hairpin and staff.
 
 Make sure to put the hairpin in a lower layer than the text markup to
 draw the rectangle over the hairpin.
@@ -35,7 +32,6 @@ draw the rectangle over the hairpin.
   <<
     {
       \dynamicUp
-      \override DynamicLineSpanner.staff-padding = #4
       r2 r16 c'8.\pp r4
     }
     \\
@@ -43,18 +39,11 @@ draw the rectangle over the hairpin.
       \override DynamicLineSpanner.layer = #0
       des,2\mf\< ~
       \override TextScript.layer = #2
-      des16_\markup {
-        \postscript #"
-          1.9 -8 translate
-          5 4 scale
-          1 setgray
-          0 0 moveto
-          0 1 lineto
-          1 1 lineto
-          1 0 lineto
-          0 0 lineto
-          fill"
-      }
+      \once\override TextScript.staff-padding = #6
+      \once\override TextScript.vertical-skylines = #'()
+      des16_\markup \with-dimensions #'(2 . 7) #'(0 . 0)
+                    \with-color #white
+                    \filled-box #'(2 . 7) #'(0 . 2) #0
       r8. des4 ~ des16->\sff
     }
   >>
index 4f987b419dc0b9c76356288a3f12e4da689e3d14..c42000b8af319116f9f75fd2a88ca33a8a02e01a 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, symbols-and-glyphs, tweaks-and-overrides"
index 3f7d94a41762967e902a14f4e7b2ce6ca3114d95..67e197227006f1dd368930a9ea1b8545ab881f3c 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, really-cool, scheme-language, text"
index 13333d977b542e84dc0095679dab8d90419f86be..741edb8388c023baa88f9313ca48c7bec6cad62d 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations, really-simple, simultaneous-notes, specific-notation, tweaks-and-overrides"
index 20ea174f56511ce0675b2be4c3012b4de1feed5b..6409e4b15d31b8eca58caa87c205ef6652658641 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "rhythms"
index ed34c30b79e232ae63792f16b92542343aaa5f42..118341b7a8a8acc192c31b6b0b3ec15b28620fe9 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
index 7be4558580db0749f7ae2da8b282f382417d5c68..b174cb5bd84b25e691639f72afe775a87e5888dd 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "fretted-strings"
index 3e2a2efebfe49be433fe2f92ef2d32ade8f7240e..aded2070cb32726066a534e4bed17bde00ecdd19 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.16.0"
 
 \header {
   lsrtags = "contexts-and-engravers, midi, real-music"
index cd560dde747eb94effb0f1a835ce64ff4d4b062c..4ef7475f41f5f34362edda04ca388ed4925d0f70 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "really-simple, vocal-music"
index ed97151104b141c166f966696b18e74b77c728fe..002aaf7216b57a008ba17664034236b9f1808256 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index bdf959aa769ff0cf41a054523900fe597a1dd231..7d13dc3b0669b4327ce271b5c6339edb057077b0 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "pitches"
index 2bfb904170ce2930781b3ac87296b4232a83fd17..33978945b0fe86346959fdded696b52ca2b6c978 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks"
index f668c30448c93aebd4de1c6166d998bc052c0453..38764d36f3f3ed3a4d939cb22275db211c2834fb 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, rhythms"
index 9748a162b7a7cfc75f228c3292a85dba33108f2f..c4c53e5c320b6f2301d7d0f773f4ee832b863c96 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "specific-notation, staff-notation"
index 6461784f3ae21e5cccf79d1ef9e8ec9bca5267d6..ed30920b49eed08d4dd1aa7acc261f48e01bdcc6 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "paper-and-layout, staff-notation, tweaks-and-overrides"
index 2687fb54403f7b42d62944bf6d3971fd5c0d1929..16ed079f6e578e48bedf99278136535810aab641 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations, pitches, really-cool"
index 996a4ca4fb6782841f2f727be9207dfe28c71ec7..0a8477adc57f1565ce54d8db0d7eeb19e9dacf29 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "simultaneous-notes, syntax-and-expressions, text"
index 86b44fe665265e108e2b9dca2ddab24cf080e6df..f2b61e8e8dbd9ef0eb9b1c599b1965c69de8bf9d 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "rhythms"
index 98fc0ca0b97eec5cbba9532d9de97b12af7a7740..7d9d563318bb33526d5cb0b3843727aebc62bf1e 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "contemporary-notation, expressive-marks, specific-notation"
index 87e008eeef3fce6e19238147a244e36e65df13f0..c752cf87ed315ac271086897608fc463529629ba 100644 (file)
@@ -1,6 +1,7 @@
 adding-a-figured-bass-above-or-below-the-notes.ly
 adding-an-extra-staff-at-a-line-break.ly
 adding-an-extra-staff.ly
+automatically-changing-the-stem-direction-of-the-middle-note-based-on-the-melody.ly
 centered-measure-numbers.ly
 centering-markup-on-note-heads-automatically.ly
 changing-midi-output-to-one-channel-per-voice.ly
index 2fc2bdd0061f7a3126462734f0613319661d9e87..4df07c679e00b1d4af621b2058538ecdfb7ff00b 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index d1a116c007786db01fc3d2cbf27fe450e1c26a9b..d4091b033dea85aa784312116cfed89a28efbb0b 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index fa7690bcb43bd0df5330c6eac3cbe0346f8c41ed..9c74de6b453cd25db13f1ef9ac3bfa42f30e5cdf 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
index dbb2fffacbe75e9cc3d0ddfdd2c83edf19c74cfc..dba460587b29c125f96217c651538f640cf64652 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations, expressive-marks, tweaks-and-overrides"
index 831026eabfe995c17bd0ee1f248f542b874d412b..3dbde1f7425a8beab5083490369aa19644202e7c 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, text, tweaks-and-overrides"
index 537e1cb69b5a1bc3c3424833cb1f56a2878d7329..5e18e550e2936019fde484e5acf52538dcf0ff33 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, text, tweaks-and-overrides"
index 770b8b68853403bec28589788823f0454f4a09a6..cb4ec966af60d2cecfad24d90c23f89aad0071df 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "chords, keyboards, tweaks-and-overrides, workaround"
index 3690ef81942beda12c8a8fcde1f12a30c98f3202..b653e146ac31d4649d2b4237277033b16a9b562b 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "ancient-notation, specific-notation, symbols-and-glyphs, tweaks-and-overrides"
index 776737e7139149bde181a1363b6d76ef1d719e81..f9d5816c3716fa9af9d9e956682effbd64e67487 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "fretted-strings, tweaks-and-overrides"
index 8ff4476813411e64878d0affd3813384b1c6bf6a..57032ef0fd226deddea079e835a7f87ea479ce73 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "fretted-strings, tweaks-and-overrides"
index fb5af1b3a32c60407e4f5fb1acd713400076a77e..50ff9bc0cda6324f42da991d69ae65a725c612b1 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations"
index b607ac66a14915940bf26db4a904a60a4c7f3e28..6ba7858ccae789864e508d03831ba242f27aaea6 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "fretted-strings"
index d8f2404957d2c6e0e86ecf4f3641c2702ee5503f..94d61a4be575b90d6d6ca6de8b0343806b2d9497 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "staff-notation, tweaks-and-overrides"
index c2f672a41e13db3ccd4b9d40258d965ccdf9581f..bb20ae2d0e8ac5c147007f9d3392524d7b991303 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.15"
 
 \header {
   lsrtags = "contexts-and-engravers"
index 941fe4c8a2501c33857d4d64164e6081dd9c5d45..902541ce0c8ccefebf086716c56a8d750eb105ee 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "chords, simultaneous-notes, workaround"
index a394c9641fcdb70699a0d9b4973aae46d1eb0df1..d6c8d46a2a2534599c2d762f3ae70d91b76de6ed 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "devel, scheme-language, tweaks-and-overrides"
index 2dcad4ed9c68dc3b3e41129161f57e0511f55d4b..a95c7739b5bebaee032dd021cf4f38c4102c6703 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations, scheme-language, tweaks-and-overrides"
index efa56298fff61494472d04797d019c455c142527..44cfe8c7a1f2f02f64942f28a19ca8df7fb58aa2 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations"
index c97f64f123f4e7670f082a43538f7d61491e1ba1..196a3d8c81a5ccc935cf76a735d99ec12e880586 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations, scheme-language, tweaks-and-overrides"
index ede480936618c5bb937b5b72ae159574a61fbdbb..e6b962a5577363ac5aef7cfb20e4f79279f7bebe 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "headword"
index 3514c0fa70162ceacd89da7e35514414c2610f5a..bae30fb4402be3b6b3d429f0a94ee7a0f3dd603a 100644 (file)
@@ -1,11 +1,10 @@
-% DO NOT EDIT this file manually; it is automatically
-% generated from Documentation/snippets/new
-% Make any changes in Documentation/snippets/new/
-% and then run scripts/auxiliar/makelsr.py
-%
-% This file is in the public domain.
-%% Note: this file works from version 2.16.0
-\version "2.16.0"
+%% DO NOT EDIT this file manually; it is automatically
+%% generated from LSR http://lsr.dsi.unimi.it
+%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
+%% and then run scripts/auxiliar/makelsr.py
+%%
+%% This file is in the public domain.
+\version "2.17.29"
 
 \header {
   lsrtags = "contexts-and-engravers, specific-notation"
@@ -161,6 +160,7 @@ MyVoice = \context {
   %}
   \consists "Text_engraver"
   \consists "Dynamic_engraver"
+  \consists "Dynamic_align_engraver"
   \consists "Fingering_engraver"
 
   \consists "Script_column_engraver"
index 7ff12afc361889ad41ef090d0318f10813c9d6db..76bf91d1ce127dde4f8ca20714f4861876e0e9eb 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "rhythms"
index 51298a8a5fa2847d069ad08f02e6c7ba50af7752..1338e8c1756b0e71bfe21795d0e30096f81070db 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "repeats, rhythms"
index 8183a4e05046d88fabf6fe86875565397c559b71..b7caf83f1e16aa84bda78e725057fd76559506d7 100644 (file)
@@ -1,10 +1,11 @@
-%% DO NOT EDIT this file manually; it is automatically
-%% generated from LSR http://lsr.dsi.unimi.it
-%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
-%% and then run scripts/auxiliar/makelsr.py
-%%
-%% This file is in the public domain.
-\version "2.17.25"
+% DO NOT EDIT this file manually; it is automatically
+% generated from Documentation/snippets/new
+% Make any changes in Documentation/snippets/new/
+% and then run scripts/auxiliar/makelsr.py
+%
+% This file is in the public domain.
+%% Note: this file works from version 2.17.27
+\version "2.17.27"
 
 \header {
   lsrtags = "headword"
@@ -40,7 +41,7 @@ Expressive headword
       \key g \major
       \time 6/8
       \partial 2
-      \once \override TextScript.staff-padding = #2
+      \once \override TextScript.padding = #2
       d'8 \staccato
       ^ \markup { \column {
          RONDO
index 1bcfd1d3cffb983f38b72bd1b98407bff1f2cb08..8b76e0204d938fa0f8990644f6b9a19060c51a7d 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "headword"
index fd61464476d1e7643251724cfdae3dc3c39bc314..b9cdf44f71750fde290969b73b07892672c6ecee 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "keyboards, tweaks-and-overrides"
index 445f343260f4143207ae8642f61f659db30d1f9f..e4ea09092fa0cddc632e2df4394ad8c2067a735a 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "symbols-and-glyphs, winds"
index 419701e43f3ebb4b649112c9645b435f8c1ec27d..0583274b6ca0a074332735602aa3b1f6df81a065 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "fretted-strings, specific-notation, stylesheet, version-specific"
index e30eda728891e6b965a2cf01b67cd79420eb0fb1..fb387f9b69d739bdaede5326c280368a491d9979 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "contemporary-notation, winds"
index 2330491040d335da7a4a9a9b65977eef9f5f335c..e2413c73b20d20d72d420b530673904820e34e88 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "simultaneous-notes, tweaks-and-overrides"
index c23ff305a3eb4f92928db32ac9703fb21070d886..6ab4f3706fd8c802af1ccb10a13c4d51a19e3053 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "vocal-music"
index 7a9f769fc464d272549b9407ba8d6558017522d4..244eefef50812637844cdd2bf70420ef47fd75a4 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "staff-notation, workaround"
index 08576e7d9b039cd1851eaf76b779719be91d009a..7ae4dead641cf49548a3ddc6de5cebed34c8ff6a 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "fretted-strings, tweaks-and-overrides"
index 221c9673ca308cb0a095d3379e514840a954e3a4..a62c85dddd4ee385dbb7fbc438933ea3c52acf4c 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "fretted-strings"
index 9645d1856182c7d6e6e18ecc057166e6389cc4f4..cf2bfb23e93e8b7465c1065c24de01b8c1d2718f 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "pitches, really-cool, scheme-language"
index 8e9b44ad71a66eb4ad2b3e12fc5f8a2e1698733f..cc30a8b2bf262ebb4853e3aa620e6eecf15403fa 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "automatic-notation, really-cool, scheme-language"
index 2fdcd964ff63cc30c388ce49461cb1e3c2881cf5..254a266304f0467cf319f06072150e209cab3341 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "editorial-annotations"
index 1e8d5326c2343b630e76e5a0793448d74fff6d07..f8203c66466ec3976dbd8874a3ffe8bb600a54c7 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "editorial-annotations"
index 61bfa49b4b713ddf5963390b0e9bb9471dc47abe..ebfcda051323494a825a957fc9d52209c452a18a 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index 33aa9c480ab394855aaadc12862066ba790a7d58..1c3c4ea4ea590867214e11a58917e8ad840b1301 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "pitches"
index 2238186542415c9fc87559a66562c18bc09ef080..682e2d5421e3f4db6d64481b1bfaf7bfac35ad81 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks"
index 7da8e8791749e73985dbf513d748c063f68f81ab..cbcd2bc9c724c931b57be795526ef4f3feb74547 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "fretted-strings, specific-notation, tweaks-and-overrides"
index 040a7cdc30b75dc8d752cccad465d657d63533ef..12d760f3ff1e1c2fd50bdb34e9ce9ad665468246 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations, expressive-marks, staff-notation, tweaks-and-overrides"
index baabf39df55e44c662ff906df82759e87fb73596..bbb2f9fbd6b03ca3d9aa619d0d2ecaba3dcce8d5 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "keyboards, real-music"
index e38ea428866bba957c1edefd3a1c722a49b90007..c8378a2f1da094584efeb517d7d55663c64ffbc4 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index 35fad36b307a03b5c8cd8170710bd06797de8be3..150474729739106b2e9346033ece701b7c7db1f0 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "pitches, tweaks-and-overrides"
index 330c510a17a3f9e9e105c1d8024b2112e99c7378..d125dc80386fea60213aa6d6d411ac5db08ba80e 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "connecting-notes, contemporary-notation, expressive-marks, fretted-strings, keyboards, specific-notation"
index 36eca55432a42313cf7aedcab64e3ddfe8274a11..93086da94c1aae14b51da5f788c2c52e00eb0896 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index 18bbb0aa585c531521326e110dff1f1e0602049f..9167330fe64826c539b5c3ff19df484be2f658b2 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "really-simple, text, vocal-music"
index 1eaa4e50aa1a8dafce09e6c41306290addcdca95..b4d11b13d7fdd5c8eb2c6ff1f9df4be7fb6c8b96 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, rhythms"
index ed31fce5273e39fe0a796b1e055441ad7685a784..1cf8befaa02315be7d88b4d23a88acb2baf736b9 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations, really-cool, staff-notation, workaround"
index 1a31971021121759c211edc5b0160c7ac532d3dc..fe444152341330962595b2cb43fd74a9d5b5ba16 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "connecting-notes, rhythms, tweaks-and-overrides"
index 2ef2146db04d9cae77ab5ad483af5e03e55c133b..a836fd38d17f4eccc3637fcd9fcc8ce14b31744a 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "contemporary-notation, editorial-annotations, vocal-music, workaround"
index 71e2ced21006662054f39d2b2427a6b7f20ddb5d..474f13f19de5fc2dd782109b2a151e8864a3f663 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.16.0"
 
 \header {
   lsrtags = "text"
index ab7d5d355d23f6359475ef80c9a9f3bf97475665..42d9ceb5297d55b03d7b2d98210ae3c4351106cd 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations, repeats, staff-notation, workaround"
index bf9ff42c03276c126c5f8bf7f6e93f0599507e0e..537d0a189795a85382f27f2a8c75b2a968006f72 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "ancient-notation, contexts-and-engravers, staff-notation, tweaks-and-overrides"
index ea932f91fe3367072df65c1f78e829c7c0693151..bde66e61680a96f7a3d805cd5941149b5e0f8c71 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "really-simple, rhythms"
index 3544af66ccb827c2460c4579a169710881c91001..8a225d29ff56a627f4b66e4ee93f685e6f1185a9 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "rhythms, simultaneous-notes, tweaks-and-overrides"
index b3523b2fa129a8233f6301dc59479cf92d11f197..d2b93bb89c6d7ef23bce3d14528f8b37800d268b 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index cc0efc192d44125820cebe59ce47e6c42f736363..7ec2129a63705b9af0c7a940560d3e8f06e64985 100644 (file)
@@ -4,8 +4,10 @@
   lsrtags = "keyboards, specific-notation, symbols-and-glyphs, workaround"
 
   texidoc = "
-Accordion discant-specific symbols are added using @code{\\markup}. The
-placement of the symbols can be tweaked by changing the
+This snippet has been obsoleted by predefined markup commands, see
+@ruser{Accordion Registers}.  It's still useful as a simple
+demonstration of how to combine symbols: the placement of the symbols
+added with @code{\\markup} can be tweaked by changing the
 @code{\\translate-scaled} arguments.  @code{\\translate-scaled} is
 used here rather than @code{\\translate} in order to let the
 positioning of the symbol parts adapt to changes of @code{font-size}.
diff --git a/Documentation/snippets/new/adding-extra-fingering-with-scheme.ly b/Documentation/snippets/new/adding-extra-fingering-with-scheme.ly
new file mode 100644 (file)
index 0000000..b4d32ff
--- /dev/null
@@ -0,0 +1,39 @@
+\version "2.16.0"
+
+\header {
+  lsrtags = "scheme-language"
+
+  texidoc = "
+You can add additional elements to notes using @code{map-some-music}. In this
+example, an extra script is attached to a note.
+
+In general, first do a @code{\\displayMusic} of the music you want to
+create, then write a function that will work on the appropriate parts
+of the music for you.
+"
+  doctitle = "Adding extra fingering with scheme"
+}
+
+addScript =
+#(define-music-function (parser location script music)
+   (ly:event? ly:music?)
+   (map-some-music
+    (lambda (mus)
+      (define (append-script-at! prop)
+        (set! (ly:music-property mus prop)
+              (append (ly:music-property mus prop)
+                      (list (ly:music-deep-copy script))))
+        mus)
+      (case (ly:music-property mus 'name)
+        ((EventChord)
+         (append-script-at! 'elements))
+        ((NoteEvent)
+         (append-script-at! 'articulations))
+        (else #f)))
+    music))
+
+\score {
+  {
+    \addScript _6 { c'4-3 <c' e' g'> }
+  }
+}
diff --git a/Documentation/snippets/new/broken-crescendo-hairpin.ly b/Documentation/snippets/new/broken-crescendo-hairpin.ly
new file mode 100644 (file)
index 0000000..27df944
--- /dev/null
@@ -0,0 +1,42 @@
+\version "2.17.27"
+
+\header {
+  lsrtags = "contemporary-notation, expressive-marks, symbols-and-glyphs"
+
+  texidoc = "
+In order to make parts of a crescendo hairpin invisible, the following
+method is used: A white rectangle is drawn on top of the respective
+part of the crescendo hairpin, making it invisible.
+
+The markup command @code{with-dimensions} tells LilyPond to consider only
+the bottom edge of the rectangle when spacing it against the hairpin.
+The property @code{staff-padding} prevents the rectangle from fitting
+between the hairpin and staff.
+
+Make sure to put the hairpin in a lower layer than the text markup to
+draw the rectangle over the hairpin.
+
+"
+  doctitle = "Broken Crescendo Hairpin"
+}
+
+\relative c' {
+  <<
+    {
+      \dynamicUp
+      r2 r16 c'8.\pp r4
+    }
+    \\
+    {
+      \override DynamicLineSpanner.layer = #0
+      des,2\mf\< ~
+      \override TextScript.layer = #2
+      \once\override TextScript.staff-padding = #6
+      \once\override TextScript.vertical-skylines = #'()
+      des16_\markup \with-dimensions #'(2 . 7) #'(0 . 0)
+                    \with-color #white
+                    \filled-box #'(2 . 7) #'(0 . 2) #0
+      r8. des4 ~ des16->\sff
+    }
+  >>
+}
diff --git a/Documentation/snippets/new/engravers-one-by-one.ly b/Documentation/snippets/new/engravers-one-by-one.ly
deleted file mode 100644 (file)
index d03145c..0000000
+++ /dev/null
@@ -1,272 +0,0 @@
-\version "2.16.0"
-
-\header {
-  lsrtags = "contexts-and-engravers, specific-notation"
-
-  texidoc = "
-The notation problem, creating a certain symbol, is handled by plugins.
- Each plugin is called an Engraver. In this example, engravers are
-switched on one by one, in the following order:
-
-- note heads,
-
-
-- staff symbol,
-
-
-- clef,
-
-
-- stem,
-
-
-- beams, slurs, accents,
-
-
-- accidentals, bar lines, time signature and key signature.
-
-
-
-Engravers are grouped. For example, note heads, slurs, beams etc. form
-a @code{Voice} context. Engravers for key signature, accidentals, bar
-line, etc. form a @code{Staff} context.
-
-"
-  doctitle = "Engravers one-by-one"
-}
-
-%% sample music
-topVoice = \relative c' {
-  \key d \major
-  es8([ g] a[ fis])
-  b4
-  b16[-. b-. b-. cis-.]
-  d4->
-}
-
-botVoice = \relative c' {
-  \key d \major
-  c8[( f] b[ a)]
-  es4
-  es16[-. es-. es-. fis-.]
-  b4->
-}
-
-hoom = \relative c {
-  \key d \major
-  \clef bass
-  g8-. r
-  r4
-  fis8-.
-  r8
-  r4
-  b'4->
-}
-
-pah = \relative c' {
-  r8 b-.
-  r4
-  r8 g8-.
-  r16 g-. r8
-  \clef treble
-  fis'4->
-}
-
-%
-% setup for Request->Element conversion. Guru-only
-%
-
-MyStaff = \context {
-  \type "Engraver_group"
-  \name Staff
-
-  \description "Handles clefs, bar lines, keys, accidentals.  It can contain
-@code{Voice} contexts."
-
-  \consists "Output_property_engraver"
-
-  \consists "Font_size_engraver"
-
-  \consists "Volta_engraver"
-  \consists "Separating_line_group_engraver"
-  \consists "Dot_column_engraver"
-
-  \consists "Ottava_spanner_engraver"
-  \consists "Rest_collision_engraver"
-  \consists "Piano_pedal_engraver"
-  \consists "Piano_pedal_align_engraver"
-  \consists "Instrument_name_engraver"
-  \consists "Grob_pq_engraver"
-  \consists "Forbid_line_break_engraver"
-  \consists "Axis_group_engraver"
-
-  \consists "Pitch_squash_engraver"
-
-  localKeySignature = #'()
-
-  % explicitly set instrumentName, so we don't get
-  % weird effects when doing instrument names for
-  % piano staves
-
-  instrumentName = #'()
-  shortInstrumentName = #'()
-
-  \accepts "Voice"
-  \defaultchild "Voice"
-}
-
-
-MyVoice = \context {
-  \type "Engraver_group"
-  \name Voice
-
-  \description "
-    Corresponds to a voice on a staff.  This context handles the
-    conversion of dynamic signs, stems, beams, super- and subscripts,
-    slurs, ties, and rests.
-
-    You have to instantiate this explicitly if you want to have
-    multiple voices on the same staff."
-
-  localKeySignature = #'()
-  \consists "Font_size_engraver"
-
-  % must come before all
-  \consists "Output_property_engraver"
-  \consists "Arpeggio_engraver"
-  \consists "Multi_measure_rest_engraver"
-  \consists "Text_spanner_engraver"
-  \consists "Grob_pq_engraver"
-  \consists "Note_head_line_engraver"
-  \consists "Glissando_engraver"
-  \consists "Ligature_bracket_engraver"
-  \consists "Breathing_sign_engraver"
-  % \consists "Rest_engraver"
-  \consists "Grace_beam_engraver"
-  \consists "New_fingering_engraver"
-  \consists "Chord_tremolo_engraver"
-  \consists "Percent_repeat_engraver"
-  \consists "Slash_repeat_engraver"
-
-  %{
-    Must come before text_engraver, but after note_column engraver.
-  %}
-  \consists "Text_engraver"
-  \consists "Dynamic_engraver"
-  \consists "Fingering_engraver"
-
-  \consists "Script_column_engraver"
-  \consists "Rhythmic_column_engraver"
-  \consists "Cluster_spanner_engraver"
-  \consists "Tie_engraver"
-  \consists "Tie_engraver"
-  \consists "Tuplet_engraver"
-  \consists "Note_heads_engraver"
-  \consists "Rest_engraver"
-}
-
-
-\score {
-  \topVoice
-  \layout {
-    \context { \MyStaff }
-    \context { \MyVoice }
-  }
-}
-
-
-MyStaff = \context {
-  \MyStaff
-  \consists "Staff_symbol_engraver"
-}
-
-\score {
-  \topVoice
-  \layout {
-    \context { \MyStaff }
-    \context { \MyVoice }
-  }
-}
-
-MyStaff = \context {
-  \MyStaff
-  \consists "Clef_engraver"
-  \remove "Pitch_squash_engraver"
-}
-
-\score {
-  \topVoice
-  \layout {
-    \context { \MyStaff }
-    \context { \MyVoice }
-  }
-}
-
-MyVoice = \context {
-  \MyVoice
-  \consists "Stem_engraver"
-}
-
-\score {
-  \topVoice
-  \layout {
-    \context { \MyStaff }
-    \context { \MyVoice }
-  }
-}
-
-MyVoice = \context {
-  \MyVoice
-  \consists "Beam_engraver"
-}
-
-\score {
-  \topVoice
-  \layout {
-    \context { \MyStaff }
-    \context { \MyVoice }
-  }
-}
-
-MyVoice = \context {
-  \MyVoice
-  \consists "Phrasing_slur_engraver"
-  \consists "Slur_engraver"
-  \consists "Script_engraver"
-}
-
-
-\score {
-  \topVoice
-  \layout {
-    \context { \MyStaff }
-    \context { \MyVoice }
-  }
-}
-
-MyStaff = \context {
-  \MyStaff
-  \consists "Bar_engraver"
-  \consists "Time_signature_engraver"
-}
-
-\score {
-  \topVoice
-  \layout {
-    \context { \MyStaff }
-    \context { \MyVoice }
-  }
-}
-
-MyStaff = \context {
-  \MyStaff
-  \consists "Accidental_engraver"
-  \consists "Key_engraver"
-}
-\score {
-  \topVoice
-  \layout {
-    \context { \MyStaff }
-    \context { \MyVoice }
-  }
-}
diff --git a/Documentation/snippets/new/expressive-headword.ly b/Documentation/snippets/new/expressive-headword.ly
new file mode 100644 (file)
index 0000000..1f9cf0f
--- /dev/null
@@ -0,0 +1,268 @@
+\version "2.17.27"
+
+\header {
+  lsrtags = "headword"
+
+  texidoc = "
+Expressive headword
+
+"
+  doctitle = "Expressive headword"
+}
+\include "english.ly"
+
+% NR 1.3 Expressive marks
+
+% L. v. Beethoven, Op. 49 no. 1
+% Piano sonata 19 - "Leichte Sonate"
+% measures 1 - 12
+
+%\layout {
+%   \context {
+%      \Score
+%      \override SpacingSpanner.base-shortest-duration =
+%         #(ly:make-moment 1/20)
+%   }
+%}
+
+\new PianoStaff <<
+
+   % RH Staff
+   \new Staff {
+      \clef treble
+      \key g \major
+      \time 6/8
+      \partial 2
+      \once \override TextScript.padding = #2
+      d'8 \staccato
+      ^ \markup { \column {
+         RONDO
+         \italic Allegro } }
+      d'8 \staccato
+      g'8 \staccato
+      a'8 \staccato
+
+      |
+
+      b'8 [ (
+      g'8 ] )
+      e'8 \staccato
+      e' \staccato
+      a'8 \staccato
+      b'8 \staccato
+
+      |
+
+      c''8 [ (
+      a'8 ] )
+      e''8 \staccato
+      d''8 \staccato
+      c''8 \staccato
+      b'8 \staccato
+
+      |
+
+      a'8 \staccato
+      g'8 \staccato
+      a'8 \staccato
+      \acciaccatura { g'16 [ a'16 ] }
+      bf'8
+      a'8 \staccato
+      g'8 \staccato
+
+      |
+
+      fs'8 [ (
+      d'8 ] )
+      d'8 \staccato
+      d'8 \staccato
+      g'8 \staccato
+      a'8 \staccato
+
+      |
+
+      b'8 [ (
+      g'8 ] )
+      e'8 \staccato
+      e'8 \staccato
+      a'8 \staccato
+      b'8 \staccato
+
+      |
+
+      c''8 [ (
+      a'8 ] )
+      e''8 \staccato
+      d''8 \staccato
+      c''8 \staccato
+      b'8 \staccato
+
+      |
+
+      a'8 \staccato
+      g'8 \staccato
+      a'8 \staccato
+      <<
+         {
+            \voiceOne
+            d'8
+            g'8
+            fs'8
+            \oneVoice
+         }
+         \new Voice {
+            \voiceTwo
+            d'4
+            c'8
+            \oneVoice
+         }
+      >>
+
+      |
+
+      <b g'>4 \tenuto
+      d'8 \staccato
+      g'8 \staccato
+      b'8 \staccato
+      d''8 \staccato
+
+      |
+
+      d''8 (
+      <c'' a'>8 \staccato )
+      <c'' a'>8 \staccato
+      d''8 (
+      <b' g'>8 \staccato )
+      <b' g'>8 \staccato
+
+      |
+
+      d''8 (
+      <c'' a'>8 \staccato )
+      <c'' a'>8 \staccato
+      d''8 (
+      <b' g'>8 \staccato )
+      <b' g'>8 \staccato
+
+      |
+
+      d''8 \staccato
+      <c'' a'>8 \staccato
+      <b' g'>8 \staccato
+      d'' \staccato
+      <c'' a'>8 \staccato
+      <b' g'>8 \staccato
+
+      |
+
+      <d'' c'' a'>4 \fermata
+      r8 r4 r8
+   }
+
+   % LH Staff
+   \new Staff {
+      \clef bass
+      \key g \major
+      \time 6/8
+      \partial 2
+      r8
+      r8
+      <d' b>8 \staccato
+      <c' a>8 \staccato
+
+      |
+
+      <b g>4
+      r8
+      r8
+      <e' c'>8 \staccato
+      <d' b>8 \staccato
+
+      |
+
+      <c' a>4
+      r8
+      r8
+      <a fs>8 \staccato
+      <b g>8 \staccato
+
+      |
+
+      <c' a>8 \staccato
+      <b d'>8 \staccato
+      <e' c'>8 \staccato
+      <e' cs'>4. (
+
+      |
+
+      d'4 )
+      r8
+      r8
+      <d' b!>8 \staccato
+      <c'! a>8 \staccato
+
+      |
+
+      <b g>4
+      r8
+      r8
+      <e' c'>8 \staccato
+      <d' b>8 \staccato
+
+      |
+
+      <c' a>4
+      r8
+      r8
+      <a fs>8 \staccato
+      <b g>8 \staccato
+
+      |
+
+      <c' a>8 \staccato
+      <d' b>8 \staccato
+      <e' c'>8 \staccato
+      <b d>4
+      <a d>8 \staccato
+
+      |
+
+      <g g,>4 \tenuto
+      r8
+      r4
+      r8
+
+      |
+
+      r8
+      <d' fs>8 \staccato
+      <d' fs>8 \staccato
+      r8
+      <d' g>8 \staccato
+      <d' g>8 \staccato
+
+      |
+
+      r8
+      <d' fs>8 \staccato
+      <d' fs>8 \staccato
+      r8
+      <d' g>8 \staccato
+      <d' g>8 \staccato
+
+      |
+
+      r8
+      <d' fs>8 \staccato
+      <d' g>8 \staccato
+      r8
+      <d' fs>8 \staccato
+      <d' g>8 \staccato
+
+      |
+
+      <d' fs>4 \fermata
+      r8 r4 r8
+   }
+
+>>
diff --git a/Documentation/snippets/new/pitches-headword.ly b/Documentation/snippets/new/pitches-headword.ly
new file mode 100644 (file)
index 0000000..70246ce
--- /dev/null
@@ -0,0 +1,137 @@
+\version "2.17.27"
+
+\header {
+  lsrtags = "headword"
+
+  texidoc = "
+Piches headword
+
+"
+  doctitle = "Pitches headword"
+}
+% L. v. Beethoven
+% Piano sonata 21 - Dem Grafen von Waldstein Gewidmet
+% chorale at measures 34 - 40+
+
+\include "english.ly"
+
+\new PianoStaff <<
+
+  % RH Staff
+  \new Staff <<
+
+    % RH Voice 1
+    \new Voice {
+      \set Score.currentBarNumber = #34
+      \voiceOne
+      gs''2 ( ^ \markup \italic { dolce e molto ligato }
+      fs''4
+      e''4
+      |
+      ds''2
+      cs''2 )
+      |
+      ds''2 (
+      e''4
+      fs''4
+      |
+      <gs'' e''>2
+      <fs'' ds''>2 )
+      |
+      \oneVoice
+      \clef bass
+      <gs' e' b>2 (
+      <fs' ds' a>4
+      <e' cs' gs>4
+      |
+      <ds' bs fs>2
+      <cs' a e>2 )
+      |
+      \voiceOne
+      b2 %(
+      cs'4
+      ds'4
+      |
+      \clef treble
+      <e' gs>4 %)
+      r4 r2
+    }
+
+    % RH Voice 2
+    \new Voice {
+      \voiceTwo
+      \override Staff.DynamicLineSpanner.staff-padding = #3
+      <e'' b'>2 \p
+      <ds'' a'>4
+      <cs'' gs'>4
+      |
+      <bs' fs'>2
+      e'2
+      |
+      <b'! a'>2 -\tweak #'style #'none \cresc
+      b'4
+      <e'' cs''>4
+      |
+      b'2. ( \sf \>
+      a'4 )
+      \clef bass
+      | \break
+      s1 \p
+      |
+      s1
+      |
+      <gs e>4 (
+      <a fs>2. )
+      |
+      s4
+      r4 r2
+    }
+
+  >>
+
+  % LH Staff
+  \new Staff {
+    \override Staff.SustainPedalLineSpanner.staff-padding = #6
+    <gs' e'>2 ( \sustainOn
+    <fs' ds' b>4 \sustainOff
+    <e' cs'>4
+    |
+    <ds' bs gs>2
+    <cs' a>2 ) \sustainOn
+    |
+    \clef bass
+    \slurDown
+    <ds' b! a fs>2 ( \sustainOff
+    <e' b gs>4
+    <fs' cs' a>4 \sustainOn
+    |
+    \clef treble
+    \voiceOne
+    <<
+      {
+        <gs' e'>2
+        <fs' ds'>2 )
+      }
+      \new Voice {
+        \voiceTwo
+        b1 \sustainOff
+      }
+    >>
+    \oneVoice
+    |
+    %\break
+    \clef bass
+    <gs e>2 (
+    <fs ds b,>4
+    <e cs>4
+    |
+    <ds bs, gs,>2
+    <cs a,>2 ) \sustainOn
+    |
+    <b,! b,,!>1 ( \sustainOff
+    |
+    <e e,>4 )
+    r4 r2
+  }
+
+>>
index 5999b2d1eb2d2b0a95e9b0bcee85a29bdcf8e3d6..e908ef14cd5a9c6de19907e53d3b05370e88ab39 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.6"
+\version "2.17.18"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
@@ -50,10 +50,10 @@ follows:
   % in all voices to avoid multiple instances being printed
   \compressFullBarRests
   <<
-   \revert MultiMeasureRest.staff-position
+   \revert MultiMeasureRest.direction
     { R1*3 }
     \\
-   \revert MultiMeasureRest.staff-position
+   \revert MultiMeasureRest.direction
     { R1*3 }
   >>
 }
diff --git a/Documentation/snippets/new/vertically-aligned-dynamics-and-textscripts.ly b/Documentation/snippets/new/vertically-aligned-dynamics-and-textscripts.ly
new file mode 100644 (file)
index 0000000..909f09e
--- /dev/null
@@ -0,0 +1,34 @@
+\version "2.17.27"
+
+\header {
+  lsrtags = "spacing, tweaks-and-overrides, workaround"
+
+  texidoc = "
+All @code{DynamicLineSpanner} objects (hairpins and dynamic texts) are
+placed with their reference line at least @code{'staff-padding} from
+the staff, unless other notation forces them to be farther.
+Setting @code{'staff-padding} to a sufficiently large value aligns the
+dynamics.
+
+The same idea, together with @code{\\textLengthOn}, is used to align
+the text scripts along their baseline.
+
+"
+  doctitle = "Vertically aligned dynamics and textscripts"
+}
+\markup \vspace #1 %avoid LSR-bug
+
+music = \relative c' {
+  a'2\p b\f
+  e4\p f\f\> g, b\p
+  c2^\markup { \huge gorgeous } c^\markup { \huge fantastic }
+}
+
+{
+  \music
+  \break
+  \override DynamicLineSpanner.staff-padding = #3
+  \textLengthOn
+  \override TextScript.staff-padding = #1
+  \music
+}
index 94c0733090a117fb080c25a1eb08d7feaf0e398d..65030025a338a43f88da3343f790d1ed7cd74f49 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "rhythms"
index 4e77e9a7be49dd5c050d3aaf00925d03ebbbd2f6..2ec7ebf8d9cd2ed53c42c1db9bf119875dc3e69d 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "vocal-music"
index d20ea499811eec5fb414426bc28cae32f965c8c0..742e687c9300aabe9742f8932d7df54292332023 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "really-simple, scheme-language, text, titles"
index 9d30af69057d7acc7021cf94390a092dba59e844..727f9d4191aa3c18be1fdeaa2e48360011f509b4 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "spacing"
index f6316598dfe9ae4802c1736ff10c84f1d7e7cf98..c67206c3aa3335e753411134078c96aeb119c765 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "rhythms, version-specific"
index 270c696b3f040583607c60af793302086f60c28c..ad09b5755ba21e09989d1516d5e0d04db8791213 100644 (file)
@@ -1,10 +1,11 @@
-%% DO NOT EDIT this file manually; it is automatically
-%% generated from LSR http://lsr.dsi.unimi.it
-%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
-%% and then run scripts/auxiliar/makelsr.py
-%%
-%% This file is in the public domain.
-\version "2.17.25"
+% DO NOT EDIT this file manually; it is automatically
+% generated from Documentation/snippets/new
+% Make any changes in Documentation/snippets/new/
+% and then run scripts/auxiliar/makelsr.py
+%
+% This file is in the public domain.
+%% Note: this file works from version 2.17.27
+\version "2.17.27"
 
 \header {
   lsrtags = "headword"
@@ -67,7 +68,7 @@ Piches headword
     % RH Voice 2
     \new Voice {
       \voiceTwo
-      \override Staff.DynamicLineSpanner.staff-padding = #2.5
+      \override Staff.DynamicLineSpanner.staff-padding = #3
       <e'' b'>2 \p
       <ds'' a'>4
       <cs'' gs'>4
@@ -75,8 +76,7 @@ Piches headword
       <bs' fs'>2
       e'2
       |
-      \once \override TextScript.staff-padding = #2.5
-      <b'! a'>2 _ \markup \italic { cresc. }
+      <b'! a'>2 -\tweak #'style #'none \cresc
       b'4
       <e'' cs''>4
       |
@@ -99,7 +99,7 @@ Piches headword
 
   % LH Staff
   \new Staff {
-    \override Staff.SustainPedalLineSpanner.staff-padding = #5
+    \override Staff.SustainPedalLineSpanner.staff-padding = #6
     <gs' e'>2 ( \sustainOn
     <fs' ds' b>4 \sustainOff
     <e' cs'>4
index cb74d900e177860bf444b06eee1f36d1e00f6bcb..87368cd7cf68dd0417a20704165e84d1b6e2d336 100644 (file)
@@ -4,6 +4,7 @@ altering-the-length-of-beamed-stems.ly
 ambitus-with-multiple-voices.ly
 ambitus.ly
 applying-note-head-styles-depending-on-the-step-of-the-scale.ly
+automatically-changing-the-stem-direction-of-the-middle-note-based-on-the-melody.ly
 changing-the-ambitus-gap.ly
 changing-the-interval-of-lines-on-the-stave.ly
 clefs-can-be-transposed-by-arbitrary-amounts.ly
index 8cf47753dcb4b979ce9438ac5c016c6f089f1996..68861a1dc30f69e376cdc3106967a13835a09844 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index e67296d1d4a866861ab8a678831b6f89186dc247..253b05ec0315cf1a17423e60aa0c9a90158b3213 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations"
index 692c5658c13dac4491cfc7281daea57a4f246cab..d3c6e90dc9672e68ac62002d576ab7ac929fad50 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "rhythms"
index 3dc11affca07ad2fc8f5bff0bf2ef9561162c946..0bbbdf1624d6d015bd1a85d91ea4fa21c48abdb5 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.28"
 
 \header {
   lsrtags = "rhythms"
@@ -25,7 +25,7 @@ the) graces are put left of the musical columns for the main notes.
     \override Score.SpacingSpanner.strict-grace-spacing = ##t
     \new Staff \new Voice {
       \afterGrace c4 { c16[ c8 c16] }
-      c8[ \grace { b16[ d] } c8]
+      c8[ \grace { b16 d } c8]
       c4 r
     }
     \new Staff {
index 34c688c71b388786cf93f20c7e4c0f05b750512c..b32e5b9a51d364d303558b022a3aaa46d9801ecb 100644 (file)
@@ -4,8 +4,8 @@
 % and then run scripts/auxiliar/makelsr.py
 %
 % This file is in the public domain.
-%% Note: this file works from version 2.17.6
-\version "2.17.6"
+%% Note: this file works from version 2.17.18
+\version "2.17.18"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
@@ -58,10 +58,10 @@ follows:
   % in all voices to avoid multiple instances being printed
   \compressFullBarRests
   <<
-   \revert MultiMeasureRest.staff-position
+   \revert MultiMeasureRest.direction
     { R1*3 }
     \\
-   \revert MultiMeasureRest.staff-position
+   \revert MultiMeasureRest.direction
     { R1*3 }
   >>
 }
index 01007415b56ba93b3ebf6baf05bef3ea19a59374..b03aa21b892254452c834758aca73fd22e555fbb 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "breaks, repeats, symbols-and-glyphs, workaround"
index 57cfdeffc221ae211de20e1fcc18ce846ca3ff59..8348981a4e28bd116c24e5c7d178cb286e8741b7 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations, expressive-marks, tweaks-and-overrides"
index 353ef073523d28bc685de6cfbb0083c1668c5a8e..db86ab6d76c4fc308334e93f522bfa312026398e 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "rhythms"
index 07b8f55dd7f2c75f9a3c9105a0d90e58bd8b8d6d..75c335bdeafccb02eb52708dcd13f99ded706346 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "rhythms"
index c4ef60db5ccd83d2bc16507e91417794d60e9746..63b65a8372c0cebfb01dad4faef1bb3cd679cbc0 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
index cc0d2ba5492e38e3e4e40f8507f865ef5ceb0f20..634017285c1e2dab1d88cf3f153603e695e8a2d1 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks"
index bd6cfefb738976fe37a21ec6f35d915f16e06abd..89e2fbf87a829a4013d9c213e5ac3b0b8f41df66 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "text"
index ce7c0ae68801a3e1be76c51fd7b9dc3178e15386..4c563872b41e188604e7d401e58a765ee371e477 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, rhythms, tweaks-and-overrides"
index 905d2d438c29539086037b00859af36cc1ca048c..8d52ffd405e7541ac359a72687713096a16d5a55 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "contemporary-notation, percussion, real-music, really-cool, rhythms"
index 4909122f0dced3a5fa9f9410d5df55f26568cb48..b5d489208de5f016a92e5fb24cff0073dd78b2c1 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.28"
 
 \header {
   lsrtags = "spacing, tweaks-and-overrides"
@@ -24,7 +24,7 @@ the note that occurs at the same time. This may cause collisions.
   \set Score.proportionalNotationDuration = #(ly:make-moment 1/16)
   \new Staff {
     c8[ c \clef alto c c \grace { d16 } c8 c] c4
-    c2 \grace { c16[ c16] } c2
+    c2 \grace { c16 c16 } c2
   }
   \new Staff {
     c2 \tuplet 3/2 { c8 \clef bass cis,, c } c4
index 6be31f68d69b92cb41a8c97d01f3868270027441..4edd6a59e58172bc594738f50c0cd2c85affb19e 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "staff-notation, text, vocal-music"
index 2c6877de5693ccf43774bcd92e4e30a57efd627e..b83496137443d94decf2e74e1b7d96b8abd9715b 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "staff-notation"
index a735a2adef98629d83ad4bf220eb592bc25c26a1..a3323302ab143ffe4d539854f88de7723b90f4ff 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "winds"
index bddac96df17cb256dcd947490f0f977bac1cc6b1..fd0fdce66220359594db3d42c0b52dd51d44c54e 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
index 61c8d537b99a8898106d0878cc922f9ee78dfe8c..6cad882e87f416581562e381d62dd9074dfcc4cd 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "breaks, staff-notation, tweaks-and-overrides"
index 0055a81b41da0fb6f15e1847ce62956fd8209691..fa562f980a808c3124ebf197383683cbe5251a48 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.5"
 
 \header {
   lsrtags = "headword"
index 8f3f179ef7a84916b46fbe93763726da1cf0116e..789f0b6d346682b3c5591e271ca9121955aee9f7 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "ancient-notation, rhythms, symbols-and-glyphs, tweaks-and-overrides"
index 94e1899252e93bd57392272ababb940865c62ce6..6d47071c7979cb17ab9b530e0e9089ca05c5e2d2 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
index 3ba5d3fef82e5d60c1fb6bf2699e699ac63046bb..b0c99b7dc44a2f58ce2a80def71f777893a30d5c 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "headword"
index da9d8ef43bd7fd2025c1934bd7fbc73fb55229bc..86b9fba5e587f59443e9817cc0581687c66e99dd 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "headword"
index 7d1e5f03801121caffb32c327f7b90e0c6d81901..be7a8967d80d9988484487a719c2a8cb31b7af87 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "pitches, tweaks-and-overrides"
index feb11f4f291b97bb620fa900d3bd7c274d0ca497..067fbbfd2c78f72e5c0cf832808e6648fa55e80e 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index 1528e7c3baf5f2d27b779a468470abf5e0cf20b9..c469c52e646b35898387fe5941ebf5d6772f6144 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.5"
 
 \header {
   lsrtags = "repeats"
index 472846280483feebe383421fd06d036120fa04b5..dea361c49cbfdff667664b826d236bf709277c9f 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks"
index 154b5ad3c06b001bed1e9db8ddbe01c124d596eb..611057d4cbdf18d0a78a9eb968202074fca44fe4 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "repeats"
index bbc81405504e9474b6ca50bbf72d82a34c62b888..ec67a11657c1a544fa30016fc2c8411984186ef9 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides, version-specific"
index fa3c0f0efa74bc6be04a546ff2895b1b895e10a3..a08838f8f8ac03b15539a0538e3e89c3380c526c 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "headword"
index 877d2e56a35d8e950e8f7a01a00473e3da2e910f..760135cda9a0180aa34d08e3dbebf7353b8156f8 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "fretted-strings"
index a2ee5cde320eabe730d12b68e1a6bf49ebf70e09..b5960df4974eb6434ea8de750ac3d86a0a36c8b1 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "fretted-strings"
index 4bbd598a68c9776508f990b1a95e8870ce9463ff..ca7ba8362573ca7010f59f43a003c8a0b384936e 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "contemporary-notation, rhythms"
index b60a82de51776693c7cf674007eacd7691274ed3..e7080e65a5898334dc02a278699e15a53336c13d 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "rhythms"
index f77144a033b71cab628e373cce9d7f9c37d3ec42..0ecae8edd5560507be14ac459186822006d4886e 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "simultaneous-notes, tweaks-and-overrides"
index ed7c8f0b999d7e2511e331c4f054a03a26513078..51542ae679fa62282d403480beece1ee80f85efb 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.16.0"
 
 \header {
   lsrtags = "paper-and-layout"
index 3884c48fda3f9ab4b50dc61509569d768ea08881..0bcd3763efa7bbb4885d5a2031b11a1fc70c536d 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.28"
 
 \header {
   lsrtags = "headword"
@@ -96,7 +96,7 @@ Text headword
     c''32
     df''32
     ef''32
-    \acciaccatura { df''[ ef'' ] }
+    \acciaccatura { df'' ef''  }
     f''8
     ef''16
     df''16
index c48fddac8614da98acbd9433b59858d047bcaa1e..5eebaacc095b7eb687dc1da3a415c1d656040409 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "specific-notation, staff-notation, tweaks-and-overrides"
index d1f775f38a00f324956b20eacbe39120d24cc5d5..257034d9599675551e7bd4a5d142a1ecda9c392d 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "specific-notation, staff-notation, tweaks-and-overrides"
index ab1392209eb6030f8841bb816e47f9ccb2a580b0..bee629dc693d0b3daddfaf3ed1190da66668485b 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
index 3f44a42a09124c7e33e771f968c8480a4cdd20a6..0de6d91f4ae6ed8e09808891e2587ed02f205b71 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "ancient-notation, specific-notation, tweaks-and-overrides, workaround"
index 35243fa1d5bc975e335f09d07374dc9b13a00130..a43faaca38bdd9a3d6d57e21e2d41674bdc70033 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.18"
 
 \header {
   lsrtags = "pitches, staff-notation, tweaks-and-overrides"
index 58ef5f98c03d74d8520a90fb015596dac5bd9a99..b038e101b17e3a1bd989036d8a0d116b04d01997 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.28"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
@@ -27,8 +27,8 @@ up, and changes the default note heads to crosses.
     $(add-grace-property 'Voice 'NoteHead 'style 'cross)
     \new Voice {
        \acciaccatura { f16 } g4
-       \grace { d16[ e] } f4
-       \appoggiatura { f,32[ g a] } e2
+       \grace { d16 e } f4
+       \appoggiatura { f,32 g a } e2
     }
   }
 }
index c38ab0113e3ff17ef65c24b5b69bb2b8829f6015..c2e468501521a9c768dd4a8745367e5adfe3dc76 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "devel, scheme-language, tweaks-and-overrides"
index 8be7366032189449f44ae89ce5a4815cc0e56254..976387a0d1c36e334f56bd647e01f1c7c8de355a 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations, really-cool, scheme-language, tweaks-and-overrides"
index 7867561dd480fc9c837361245a1dedf33b77fbf3..f6bb8ed356c507fc2b44814b08ce8f478e7b0374 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "really-simple, tweaks-and-overrides"
index bc92196ae9b32c54c141e0e549eef32aee091569..2e9f1a32431d1c8614ea4cb84e9f71f4229702df 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "editorial-annotations, expressive-marks"
index 6b4a50016bf682d76e81ff4c45761f7450aa97ef..f90376adef84019ef4dd799bd9e065cc33b461fc 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.19"
 
 \header {
   lsrtags = "paper-and-layout, staff-notation, syntax-and-expressions"
index 494a2c9b0ce687be8d2cb2c3b3b2678a9e0c9b27..82a609c12ff66ab2af1f3ff5dab4e56d575198fb 100644 (file)
@@ -1,20 +1,21 @@
-%% DO NOT EDIT this file manually; it is automatically
-%% generated from LSR http://lsr.dsi.unimi.it
-%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
-%% and then run scripts/auxiliar/makelsr.py
-%%
-%% This file is in the public domain.
-\version "2.17.25"
+% DO NOT EDIT this file manually; it is automatically
+% generated from Documentation/snippets/new
+% Make any changes in Documentation/snippets/new/
+% and then run scripts/auxiliar/makelsr.py
+%
+% This file is in the public domain.
+%% Note: this file works from version 2.17.27
+\version "2.17.27"
 
 \header {
   lsrtags = "spacing, tweaks-and-overrides, workaround"
 
   texidoc = "
-By setting the @code{'Y-extent} property to a suitable value, all
-@code{DynamicLineSpanner} objects (hairpins and dynamic texts) can be
-aligned to a common reference point, regardless of their actual extent.
-This way, every element will be vertically aligned, thus producing a
-more pleasing output.
+All @code{DynamicLineSpanner} objects (hairpins and dynamic texts) are
+placed with their reference line at least @code{'staff-padding} from
+the staff, unless other notation forces them to be farther.
+Setting @code{'staff-padding} to a sufficiently large value aligns the
+dynamics.
 
 The same idea, together with @code{\\textLengthOn}, is used to align
 the text scripts along their baseline.
@@ -34,9 +35,8 @@ music = \relative c' {
 {
   \music
   \break
-  \override DynamicLineSpanner.staff-padding = #2.0
-  \override DynamicLineSpanner.Y-extent = #'(-1.5 . 1.5)
+  \override DynamicLineSpanner.staff-padding = #3
   \textLengthOn
-  \override TextScript.Y-extent = #'(-1.5 . 1.5)
+  \override TextScript.staff-padding = #1
   \music
 }
index ce758facf5d604c5d4d97d1b2e59855842ca0e3b..0adb0dec41def52b13ff6e762b25842cf82ed534 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "expressive-marks"
index 24c16dbb434f084e9c66a60d5c26fe0ecdaf7e77..4a85d9d6a4d45f32980e47f88c0b0aa8dab0c6a9 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.11"
 
 \header {
   lsrtags = "spacing, tweaks-and-overrides, vocal-music"
index 4552ab287fa876a7899d680e84b53b4e39abcab7..7c59cd3b1620509a15a17fff8bda7de53fcab57e 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "vocal-music"
index ab77e4acdc2e5bc7fa64cb3da68830e9e98f3141..8e1796fd47d0b11b50aa25464b5ea8765e6d472e 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "automatic-notation, keyboards, template, vocal-music"
index bf02ff8b464b1e0e1bfe99161ec73338e36492a1..51ffe694b2f6b7ee7bcbc4fdf5d186211ddc83cf 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "contexts-and-engravers, template, vocal-music"
index 6ad50aa25bdba756e5fd269c28fdc90ee3d5a30b..100d57e09857f97cee5c6b65ae52256689c94832 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "really-simple, template, vocal-music"
index c33cd4a47d8dee2111993b6d022814df2b1eb856..d09d784396542d4ca302646832e24d999b191deb 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "headword"
index db40cced9e470706fba8759b7dff595f80bd5edc..821403d192245f6ace9d14eea0f57c156d1cd10b 100644 (file)
@@ -4,7 +4,7 @@
 %% and then run scripts/auxiliar/makelsr.py
 %%
 %% This file is in the public domain.
-\version "2.17.25"
+\version "2.17.6"
 
 \header {
   lsrtags = "headword"
index ce3dc1f42beec03241cb71d546e8b2f99dd37385..43a99497c10c8c78af1b8432170123142eae2c4e 100644 (file)
@@ -2,13 +2,16 @@ depth = ../..
 
 STEPMAKE_TEMPLATES=documentation tex texinfo topdocs
 LOCALSTEPMAKE_TEMPLATES=lilypond ly
-OUT_TEXI_FILES = $(TELY_FILES:%.tely=$(outdir)/%.texi)
+OUT_TEXI_FILES = $(TEXI_FILES:%.texi=$(outdir)/%.texi) $(TELY_FILES:%.tely=$(outdir)/%.texi)
 HTML_FILES=$(TEXI_FILES:%.texi=$(outdir)/%.html) $(TELY_FILES:%.tely=$(outdir)/%.html)
 README_TOP_FILES=NEWS AUTHORS INSTALL README
 OUTTXT_FILES= $(outdir)/NEWS.txt
 
 include $(depth)/make/stepmake.make
 
+DOCUMENTATION_INCLUDES += -I $(outdir) \
+  -I $(top-src-dir)/Documentation
+
 # FIXME ad-hoc file copy?
 $(outdir)/NEWS.tely: $(top-src-dir)/Documentation/changes.tely
        cp -f $< $@
index 136b7a2f31970d6d5441fcf7df27ab3afd12927c..912d0b84a32eff212d07883280317ad1aacad4f1 100644 (file)
@@ -461,7 +461,7 @@ Quantize note durations on @var{DUR}.
 @item -e, --explicit-durations
 Print explicit durations.
 
-@item -h,--help
+@item -h, --help
 Show summary of usage.
 
 @item -k, --key=@var{acc}[:@var{minor}]
@@ -530,7 +530,7 @@ The following options are supported by @command{musicxml2ly}:
 @item -a, --absolute
 convert pitches in absolute mode.
 
-@item -h,--help
+@item -h, --help
 print usage and option summary.
 
 @item -l, --language=LANG
@@ -554,21 +554,21 @@ articulations, dynamics, etc.
 do not convert beaming information, use LilyPond's automatic
 beaming instead.
 
-@item -o,--output=@var{file}
+@item -o, --output=@var{file}
 set output filename to @var{file}.  If @var{file} is @file{-}, the output
 will be printed on stdout.  If not given, @var{xml-file}@file{.ly} will
 be used.
 
-@item -r,--relative
+@item -r, --relative
 convert pitches in relative mode (default).
 
-@item -v,--verbose
+@item -v, --verbose
 be verbose.
 
 @item --version
 print version information.
 
-@item -z,--compressed
+@item -z, --compressed
 input file is a zip-compressed MusicXML file.
 @end table
 
@@ -596,13 +596,13 @@ abc2ly [@var{option}]@dots{} @var{abc-file}
 The following options are supported by @command{abc2ly}:
 
 @table @code
-@item -b,--beams=None
+@item -b, --beams=None
 preserve ABC's notion of beams
-@item -h,--help
+@item -h, --help
 this help
-@item -o,--output=@var{file}
+@item -o, --output=@var{file}
 set output filename to @var{file}.
-@item -s,--strict
+@item -s, --strict
 be strict about success
 @item --version
 print version information.
@@ -669,9 +669,9 @@ more information about this.
 The following options are supported by @command{etf2ly}:
 
 @table @code
-@item -h,--help
+@item -h, --help
 this help
-@item -o,--output=@var{FILE}
+@item -o, --output=@var{FILE}
 set output filename to @var{FILE}
 @item --version
 version information
index 46d1f86b63e8dd314a99967e7e05d25951413f31..9e736bda0139d25349a5dda61ac6e6a240dc929e 100644 (file)
@@ -134,13 +134,13 @@ The following options are supported:
 
 @table @code
 
-@item -d,--define-default=@var{var}=@var{val}
+@item -d, --define-default=@var{var}=@var{val}
 See @ref{Advanced command line options for LilyPond}.
 
 @cindex Scheme, expression evaluation
 @cindex expression evaluation, Scheme
 
-@item -e,--evaluate=@var{expr}
+@item -e, --evaluate=@var{expr}
 Evaluate the Scheme @var{expr} before parsing any @file{.ly} files.
 Multiple @option{-e} options may be given, they will be evaluated
 sequentially.
@@ -167,19 +167,19 @@ at the top of the @code{.ly} file.
 @cindex output, format
 @cindex format, output
 
-@item -f,--format=@var{format}
+@item -f, --format=@var{format}
 which formats should be written.  Choices for @code{format} are
 @code{ps}, @code{pdf}, and @code{png}.
 
 Example: @code{lilypond -fpng @var{filename}.ly}
 
-@item -h,--help
+@item -h, --help
 Show a summary of usage.
 
-@item -H,--header=@var{FIELD}
+@item -H, --header=@var{FIELD}
 Dump a header field to file @file{BASENAME.@var{FIELD}}.
 
-@item -i,--init=@var{file}
+@item -i, --init=@var{file}
 Set init file to @var{file} (default: @file{init.ly}).
 
 @cindex file searching
@@ -194,7 +194,7 @@ search will continue in subsequent directories.
 
 @cindex chroot jail, running inside
 
-@item -j,--jail=@var{user},@var{group},@var{jail},@var{dir}
+@item -j, --jail=@var{user},@var{group},@var{jail},@var{dir}
 Run @command{lilypond} in a chroot jail.
 
 The @option{--jail} option provides a more flexible alternative to
@@ -257,7 +257,7 @@ the amount of memory that can be allocated.  Also see
 @cindex loglevel
 @cindex output, verbosity
 
-@item -l,--loglevel=@var{LEVEL}
+@item -l, --loglevel=@var{LEVEL}
 Set the verbosity of the console output to @var{LEVEL}. Possible values
 are:
 
@@ -290,7 +290,7 @@ All possible messages, including verbose debug output.
 @cindex output, setting filename
 @cindex output, directory
 
-@item -o,--output=@var{FILE} or @var{FOLDER}
+@item -o, --output=@var{FILE} or @var{FOLDER}
 Set the default output file to @var{FILE} or, if a folder with that name
 exists, direct the output to @var{FOLDER}, taking the file name from the
 input file.  The appropriate suffix will be added (e.g. @code{.pdf} for
@@ -319,14 +319,14 @@ Generate pictures of each page, in PNG format.  This implies
 @item --pdf
 Generate PDF.  This implies @option{--ps}.
 
-@item -v,--version
+@item -v, --version
 Show version information.
 
-@item -V,--verbose
+@item -V, --verbose
 Be verbose: show full paths of all files read, and give timing
 information.
 
-@item -w,--warranty
+@item -w, --warranty
 Show the warranty with which GNU LilyPond comes.  (It comes with
 @strong{NO WARRANTY}!)
 
@@ -923,7 +923,7 @@ are easily handled.
 * Error message Unbound variable %::
 * Error message FT_Get_Glyph_Name::
 * Warning staff affinities should only decrease::
-* Error message unexpected \new::
+* Error message unexpected new::
 @end menu
 
 @node Music runs off the page
@@ -1046,8 +1046,8 @@ at its start.  For details, see @qq{Spacing of non-staff lines} in
 @ruser{Flexible vertical spacing within systems}.
 
 
-@node Error message unexpected \new
-@unnumberedsubsec Error message unexpected @code{\new}
+@node Error message unexpected new
+@unnumberedsubsec Error message unexpected @code{@bs{}new}
 
 A @code{\score} block must contain a @emph{single} music expression.
 If instead it contains several @code{\new Staff},
index 6d8e73216b7c0e4b7bd9a8403f888622a5d9352b..06a960ac8a866faff27da9fece4208a96d395a78 100644 (file)
@@ -148,17 +148,23 @@ convert-ly [@var{option}]@dots{} @var{filename}@dots{}
 The following options can be given:
 
 @table @code
-@item -d,--diff-version-update
+@item -d, --diff-version-update
 increase the @code{\version} string only if the file has actually
-been changed.  Without this option (or when any conversion has
-changed the file), the version header reflects the last considered
-conversion rule.
+been changed.  In that case, the version header will correspond to
+the version after the last actual change.  Without that option,
+the version will reflect the last @emph{attempted} conversion.
 
-@item -e,--edit
+@item -e, --edit
 Apply the conversions direct to the input file, modifying it
-in-place.
+in-place.  The original file is renamed as @file{myfile.ly~}.  This
+backup file may be a hidden file on some operating systems.
 
-@item -f,--from=@var{from-patchlevel}
+@item -b, --backup-numbered
+When used with the @samp{-e} option, number the backup files so that
+no previous version is overwritten.  The backup files may be hidden
+on some operating systems.
+
+@item -f, --from=@var{from-patchlevel}
 Set the version to convert from.  If this is not set, @command{convert-ly}
 will guess this, on the basis of @code{\version} strings in the file.
 E.g. @option{--from=2.10.25}
@@ -171,7 +177,7 @@ Set the output verbosity to @var{loglevel}. Possible values, in upper
 case, are @code{PROGRESS} (the default), @code{NONE}, @code{WARNING},
 @code{ERROR} and @code{DEBUG}.
 
-@item -n,--no-version
+@item -n, --no-version
 Normally, @command{convert-ly} adds a @code{\version} indicator
 to the output.  Specifying this option suppresses this.
 
index e2b9bae6776a31596f324895ee8d180ce18fed5b..91bd1a334ca98a8b106c7cffdbe0dbcd1d7c0d92 100644 (file)
@@ -220,14 +220,6 @@ sh lilypond-@versionStable{}-OS-TYPE.sh --help
 
 
 @divClass{column-right-top}
-@subheading Compiling a file
-
-@lilypadCommandLine
-
-@divEnd
-
-
-@divClass{column-left-top}
 @subheading Distribution-specific Packages
 
 Please use your distribution's package manager to install or
@@ -265,6 +257,14 @@ openSUSE: LilyPond 2.12.3}
 @divEnd
 
 
+@divClass{column-center-top}
+@subheading Compiling a file
+
+@lilypadCommandLine
+
+@divEnd
+
+
 @divClass{column-center-bottom}
 @subheading Legalese
 
@@ -321,19 +321,12 @@ Delete the LilyPond.app folder.
 
 @divEnd
 
-@divClass{column-right-top}
-@subheading Compiling a file
-
-@lilypadOSX
-
-@divEnd
-
 
-@divClass{column-left-top}
+@divClass{column-right-top}
 @subheading Running on the command-line
 
-@warning{If you are happy with the GUI, then please ignore these
-instructions.}
+@warning{If you are happy with the GUI instructions below, then
+please ignore these instructions.}
 
 @subsubheading MacOS X on the command line
 
@@ -414,6 +407,14 @@ The same is true for all other scripts in that directory, such as
 @divEnd
 
 
+@divClass{column-center-top}
+@subheading Compiling a file
+
+@lilypadOSX
+
+@divEnd
+
+
 @divClass{column-center-bottom}
 @subheading Legalese
 
@@ -484,18 +485,10 @@ button when the uninstaller has completed.
 
 
 @divClass{column-right-top}
-@subheading Compiling a file
-
-@lilypadWindows
-
-@divEnd
-
-
-@divClass{column-left-top}
 @subheading Running on the command-line
 
-@warning{If you are happy with the GUI, then please ignore these
-instructions.}
+@warning{If you are happy with the GUI instructions below, then
+please ignore these instructions.}
 
 @subsubheading Windows on the command line
 
@@ -545,6 +538,14 @@ lilypond test.ly
 @divEnd
 
 
+@divClass{column-center-top}
+@subheading Compiling a file
+
+@lilypadWindows
+
+@divEnd
+
+
 @divClass{column-center-bottom}
 @subheading Legalese
 
index 298cbb6cb524faa248e93e351a3602b8e5d9c63e..0e3e20be8973f181229853e4df39afb194805380 100644 (file)
@@ -9,9 +9,9 @@
 @c used for news about the upcoming release; see CG 10.2
 
 @newsItem
-@subsubheading LilyPond 2.17.26 released!  @emph{September 8, 2013}
+@subsubheading LilyPond 2.17.28 released!  @emph{October 6, 2013}
 
-We are happy to announce the release of LilyPond 2.17.26.  This
+We are happy to announce the release of LilyPond 2.17.28.  This
 release contains the usual number of bugfixes and enhancements, and contains
 some work in progress.  You will have access to the very latest features, but
 some may be incomplete, and you may encounter bugs and crashes.  If you require
@@ -19,22 +19,11 @@ a stable version of Lilypond, we recommend using the 2.16 version.
 
 @newsEnd
 
-@newsItem
-@subsubheading LilyPond blog moved!  @emph{June 29, 2013}
-
-The LilyPond blog, which was previously hosted on
-@uref{http://lilypondblog.wordpress.com/, wordpress.com}, has moved
-to a new domain: you can now find it at
-@uref{http://lilypondblog.org/, lilypondblog.org}!
-
-@newsEnd
-
 @newsItem
 @subsubheading LilyPond blog.  @emph{June 2, 2013}
 
-Janek Warchoł has created a LilyPond blog.  It's currently hosted on
-Wordpress - follow @uref{http://lilypondblog.wordpress.com/, this link} to read
-it and to contribute.
+Janek Warchoł has created a LilyPond blog.  You can find it at
+@uref{http://lilypondblog.org/, lilypondblog.org}!
 
 @newsEnd
 
index d29081cf01593a851dce42a448e1a325814fbf9c..c54ebee468748d8894899c41190ea1160fb5e9f2 100644 (file)
@@ -26,6 +26,28 @@ NOTE:
   * don't duplicate entries from news-front.itexi
 @end ignore
 
+@newsItem
+@subsubheading LilyPond 2.17.27 released!  @emph{September 26, 2013}
+
+We are happy to announce the release of LilyPond 2.17.27.  This
+release contains the usual number of bugfixes and enhancements, and contains
+some work in progress.  You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes.  If you require
+a stable version of Lilypond, we recommend using the 2.16 version.
+
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.17.26 released!  @emph{September 8, 2013}
+
+We are happy to announce the release of LilyPond 2.17.26.  This
+release contains the usual number of bugfixes and enhancements, and contains
+some work in progress.  You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes.  If you require
+a stable version of Lilypond, we recommend using the 2.16 version.
+
+@newsEnd
+
 @newsItem
 @subsubheading LilyPond 2.17.25 released!  @emph{August 25, 2013}
 
diff --git a/VERSION b/VERSION
index 3aa1a38adfdcc7e974b990e26c4fe5e6f15cbbfd..9677f57b03cc64d66478e5287273e98ee915c109 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=17
-PATCH_LEVEL=27
+PATCH_LEVEL=29
 MY_PATCH_LEVEL=
 VERSION_STABLE=2.16.2
-VERSION_DEVEL=2.17.26
+VERSION_DEVEL=2.17.28
index 87d8474316adf7dced50154d180d117ff572ac0a..c9f0093381604ad131867608ef50e772de949f45 100644 (file)
@@ -1167,6 +1167,14 @@ AC_DEFUN(STEPMAKE_TEXMF_DIRS, [
 AC_DEFUN(STEPMAKE_TEXMF, [
     STEPMAKE_PROGS(METAFONT, mf-nowin mf mfw mfont, $1)
     STEPMAKE_PROGS(METAPOST, mpost, $1)
+    if test "$METAPOST" != ""; then
+       ver=`STEPMAKE_GET_VERSION($METAPOST)`
+       num=`STEPMAKE_NUMERIC_VERSION($ver)`
+       # Avoid buggy metapost versions: 1.600 <= x < 1.803
+       if test "$num" -ge "1600000" -a "$num" -lt "1803000"; then
+            STEPMAKE_ADD_ENTRY($1, ["mpost (due to a bug in metapost, versions 1.600 <= x < 1.803 are not supported; installed: $ver)"])
+       fi
+    fi
 
     AC_MSG_CHECKING(for working metafont mode)
     modelist='ljfour lj4 lj3 lj2 ljet laserjet'
index 984ecbce1d0f6389601d34913b5c02412a3002e3..008befe4ec06f01a1f3b9b01945a3f336d92222c 100644 (file)
@@ -120,7 +120,7 @@ STEPMAKE_LIB(REQUIRED)
 STEPMAKE_DLOPEN
 # Do not use bison 1.50 and 1.75.
 # 1.29 is required fr %locations, but I'm not sure it's enough --ns
-STEPMAKE_BISON(OPTIONAL, 1.29)
+STEPMAKE_BISON(REQUIRED, 1.29)
 STEPMAKE_FLEX(REQUIRED)
 STEPMAKE_FLEXLEXER(REQUIRED)
 STEPMAKE_FLEXLEXER_LOCATION
@@ -214,8 +214,8 @@ STEPMAKE_WINDOWS
 # guile executable for some scripts
 STEPMAKE_GUILE(OPTIONAL, 1.8.2, 1.9.0)
 
-# perl for help2man.
-STEPMAKE_PERL(OPTIONAL)
+# perl for help2man and for mf2pt1.pl
+STEPMAKE_PERL(REQUIRED)
 
 ## Optional tools for building documentation, website, extra fonts.
 if test "$DOCUMENTATION" = "yes"; then
index 73de47896c21cedb8a9c0b6e19fd96a60fbfcf37..75de18e03171339158853a742adfe063a87a25d5 100644 (file)
@@ -3,12 +3,12 @@
   texidoc = "Beamlets in grace notes remain readable."
 }
 
-\version "2.16.0"
+\version "2.17.28"
 \layout {
   ragged-right = ##t
 }
 
 \relative c'
 \context Staff {
-  f1 \grace { a'8[ f16] } g1
+  f1 \grace { a'8 f16 } g1
 }
index 441ed498657c77ec01c855064e9ee4d950af3d1e..cdc747be207974ba9ef5f1ddf07b39be9c18c374 100644 (file)
@@ -1,6 +1,6 @@
 
 
-\version "2.16.0"
+\version "2.17.28"
 
 \header { texidoc = "
 The beaming algorithm handles collisions between beams and
@@ -8,7 +8,7 @@ grace notes too.
 " }
 
 \relative c' {
- e'8[ f  e \grace { f,16[ a] } e'8]
+ e'8[ f  e \grace { f,16 a } e'8]
 }
 
 \relative c'{
index 80eb28c7f63de3586aa10e22dc0da8eb295ffd18..7e96536e6adde60dd9c00e9bd945f2d9c6c58299 100644 (file)
@@ -6,7 +6,7 @@
 
 
 % test notes, which will be shown in different styles:
-testnotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64 
+testnotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64
    c''8 d''16 c''32 d''64 \acciaccatura {\stemDown c''8 \stemNeutral} d''64  }
 
 {
@@ -19,9 +19,13 @@ testnotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64
   \mark "old straight (large angles)"
   \override Flag.stencil = #old-straight-flag
   \testnotes
+
+  \mark "flat"
+  \override Flag.stencil = #flat-flag
+  \testnotes
 %
 %   \mark "custom slant"
-% %   Custom straight flag. The parameters are: 
+% %   Custom straight flag. The parameters are:
 % %                flag thickness and spacing
 % %                up-flag angle and length
 % %               down-flag angle and length
diff --git a/input/regression/grace-auto-beam-engraver.ly b/input/regression/grace-auto-beam-engraver.ly
new file mode 100644 (file)
index 0000000..4e7ff31
--- /dev/null
@@ -0,0 +1,40 @@
+\version "2.17.28"
+
+\header
+{
+  texidoc = "A separate @samp{Grace_auto_beam_engraver} initiates
+autobeaming at the start of each @code{\\grace} command."
+}
+
+\layout { short-indent = 1\cm  indent = 2\cm }
+
+music = {
+  \mark "manual"
+  \relative c'' {
+    \grace {a8[ b] } a1 
+    \grace {a8[ b c b gis] } a1 
+    \grace {a8[ b c32 b c16 gis] } a1
+    \grace {a8[ b c16 d] c4 b8[ gis] } a1
+    \grace {a8[ b c16 d] c4 b8 a b\fermata a16[ gis] } a1
+  } \break
+  \mark "automatic"
+  \relative c'' {
+    \grace {a8 b } a1
+    \grace {a8 b c b gis } a1
+    \grace {a8 b c32 b c16 gis } a1
+    \grace {a8 b c16 d c4 b8 gis } a1
+    \grace {a8 b c16 d c4 b8 a b\fermata a16 gis } a1
+  }
+}
+
+\score {
+  <<
+    \new Staff \with { instrumentName = \markup \center-column
+                      { without engraver } }
+    \new Voice \with { \remove "Grace_auto_beam_engraver" }
+               \music
+    \new Staff \with { instrumentName = \markup \center-column
+                      { with engraver } }
+    \new Voice \music
+  >>
+}
index dbd2c32082c14aa30f0e70296d40fab73997009e..badaa1ae74016fb302401ec5dad0722ce6ef1e51 100644 (file)
@@ -1,5 +1,5 @@
 
-\version "2.16.0"
+\version "2.17.28"
 \header {
   texidoc = "Bar line should come before the grace note."
 }
@@ -11,7 +11,7 @@
 
 
 \relative c' \context Staff  { 
-  f1 \grace {  a'16[ f]  } g1 }
+  f1 \grace {  a'16 f  } g1 }
 
 
 
index 0aa75547f8ad4a27f5e8a6793aa6bc4a2b407685..8566a522ea22540fb56be987374f66b5f684832b 100644 (file)
@@ -9,10 +9,10 @@ Unbeamed grace notes are not put into normal beams.
 \layout { ragged-right= ##t }
 
 
-\version "2.16.0"
+\version "2.17.28"
 \relative c'' {
   c4  d8[
-    \grace {  e32[  d c d] } e8]
+    \grace {  e32  d c d } e8]
   e[  e
       \grace { f16 } e8 e]
 }
index 9f9551e6565f290860fca9d519c687e6933851be..bacb821e1fdcf890765808e20cc773f244cc13f5 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.17.28"
 
 #(ly:set-option 'warning-as-error #f)
 
@@ -8,5 +8,5 @@
 }
 
 \context Voice \relative c' {
-  c4 \grace { d16[ d16] }
+  c4 \grace { d16 d16 }
 }
index 5e295964cb509b05e8f916b808b809af5e7daefd..419ee40de8256c97ee31bfe6d806d731c36c8742 100644 (file)
@@ -1,5 +1,5 @@
 
-\version "2.16.0"
+\version "2.17.28"
 \header {
   texidoc = "Pieces may begin with grace notes."
 }
@@ -7,9 +7,9 @@
 \layout { ragged-right = ##t}
 
 \relative c' \context Staff  { 
-  \grace {  a'16[ f]  } g1
+  \grace {  a'16 f  } g1
   \bar "||"  % test if | and || are synced.
-  \grace {  a16[ bes]  }  c1
+  \grace {  a16 bes  }  c1
   \bar "||"  % test if | and || are synced. 
 }
 
index 49b488b6d9d64afe5d6b8062bbd399d377e232dc..6bae7e187c52529f49171bafcc8c174bc7b05009 100644 (file)
@@ -3,7 +3,7 @@
 normal notes, if possible. They should never be longer, even if that
 would lead to beam quanting problems."
 }
-\version "2.17.6"
+\version "2.17.28"
 
 \layout {
     ragged-right = ##t
@@ -14,9 +14,9 @@ would lead to beam quanting problems."
     << {  d8.\noBeam d16 } \\ >>   \grace { d16 } c8.[ b16]
     << {  c16[ b] } \\ >>
     
-    \grace { c16[ b] } d4
+    \grace { c16 b } d4
 %    \override Beam.inspect-quants =#'(2.8 . 2.5)
-%    \grace { c16[ b] } d4
+%    \grace { c16 b } d4
 
            }
 
index b347600cb30518a9f9e0b5f9e04aa92ff7c05d47..b19a9a7c5fc5f9602a7d2b7458f94a33599f1436 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.17.28"
 
 \header {
 
@@ -13,8 +13,8 @@
 
 \relative c''{\key a \minor \time 2/4
              \repeat "volta" 2 {
-               \grace {  a16[ b] }  c4 c4  |
-               \grace {  d16[ b] } c4 c4 |
+               \grace {  a16 b }  c4 c4  |
+               \grace {  d16 b } c4 c4 |
                
              }
            }
index 7cea105e644613f6e802189fd8a6ae6ea5d4f59d..f86551e0899b8c132337879fb0f600cae44c256f 100644 (file)
@@ -1,5 +1,5 @@
 
-\version "2.17.11"
+\version "2.17.28"
 
 \header{
 
@@ -16,10 +16,10 @@ Main note scripts do not end up on the grace note.
 
 \new Voice \relative c'' {
   \grace b8 c4\fermata
-  \grace {  c32[ cis32] } gis4
-  \grace {  cis32[ dis32] } e4
-  \grace {  c32[ d] }\tuplet 3/2 {  c8[ c c] }
-  \grace {  b32[ ( c32] }   c4)
+  \grace {  c32 cis32 } gis4
+  \grace {  cis32 dis32 } e4
+  \grace {  c32 d }\tuplet 3/2 {  c8[ c c] }
+  \grace {  b32 ( c32 }   c4)
   \grace  <c d>16  c8[ c8]
                                %       \grace  c16  c8[ c8]
   %% broken?
diff --git a/input/regression/identifier-quoted.ly b/input/regression/identifier-quoted.ly
new file mode 100644 (file)
index 0000000..fa60533
--- /dev/null
@@ -0,0 +1,26 @@
+\header
+{
+
+texidoc = "Music identifiers containing arbitrary characters may be
+initialized using
+@example
+\"violin1\" = @{ c''4 c'' c'' c'' @}
+@end example
+and used as:
+@example
+\\new Voice @{ \\\"violin1\" @}
+@end example
+"
+
+}
+
+\version "2.17.28"
+
+"violin1" = { c''4 c'' c'' c'' }
+"violin2" = { a'4 a' a' a' }
+
+\layout { ragged-right = ##t }
+
+{
+  << \"violin1" \\ \"violin2" >>
+}
index cb34df9dcb9a4859e6b890668f42327aca4b3057..1100f625e9ed0969dee6b9a220180b824fee993d 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.17.28"
 
 \header {
   texidoc="
@@ -8,7 +8,7 @@ expected also for syllables starting under grace notes.
 }
 
 \relative c' {
-  c2 \grace { c16([ d e f] } g2)
+  c2 \grace { c16( d e f } g2)
   f1
 }
 \addlyrics {
index ab2491d4cad5f6ccfda795751e1f00be1785edea..ec3dfe2fc3c9ea56560d5845ad0e6a7d2bb98741 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.17.28"
 
 \header {
   texidoc="
@@ -9,7 +9,7 @@ assigned to grace notes.
 
 \relative c' {
   f4 \appoggiatura a32 b4
-  \grace { f16[ a16] } b2
+  \grace { f16 a16 } b2
   \afterGrace b2 { f16[ a16] }
   \appoggiatura a32 b4
   \acciaccatura a8 b4
index 224eaf69d0886fbdc3415874fc4227004ecdc690..f5fbc9b60d2671170f61920fbf415b857e78e8b7 100644 (file)
@@ -61,3 +61,12 @@ all note head styles and straight flags."
     \show-note-styles #'(default)
   }
 }
+
+\markup {
+  \column {
+    \combine \null \vspace #1
+    \underline "Flat-flag:"
+    \override #'(flag-style . flat-flag)
+    \show-note-styles #'(default)
+  }
+}
index 307336799b8493a96a3b366b2fb87577db2fd384..c600fab42f9d83e08242ea82fe5d4cecf8b96a56 100644 (file)
@@ -58,6 +58,7 @@ mrkp =
                     \override #'(style . mensural) \mrkp
                     \override #'(flag-style . modern-straight-flag) \mrkp
                     \override #'(flag-style . old-straight-flag) \mrkp
+                    \override #'(flag-style . flat-flag) \mrkp
             }
     }
     \override NoteHead.style = #'triangle
index 43f346deac8ea116688476a06c5dfcf03785daaf..ee6e1eeb1c0dee46323aa68c5bb6646f2fc63cae 100644 (file)
@@ -10,21 +10,14 @@ and dynamics are left over. These are put onto the 2nd measure."
 
 }
 
-\version "2.16.0"
+\version "2.17.27"
 
 #(define (notes-to-skip m)
   "Convert all stuff with duration (notes, lyrics, bass figures, etc.) to skips.
-Scripts and dynamics are maintained.
-"
-  (if (memq 'rhythmic-event (ly:music-property m 'types))
-   (let* ((newmus (make-music 'SkipEvent)))
-    (map
-     (lambda (x) (ly:music-set-property! newmus (car x) (cdr x)))
-     (ly:music-mutable-properties m))
-    newmus
-  )
-   m)
-)
+Scripts and dynamics are maintained."
+  (if (music-is-of-type? m 'rhythmic-event)
+      (make-music 'SkipEvent m)
+      m))
 
 
 \layout { ragged-right= ##t }
index aa1813e05cd1535dc9c244e8851e5b791cde7b56..81f31fc0783afc58ace3ecdc52921bbd907014fb 100644 (file)
@@ -1,5 +1,5 @@
 
-\version "2.16.0"
+\version "2.17.28"
 
 \header{
 texidoc="
@@ -24,7 +24,7 @@ in unbroken state.
     \time 4/4
     << d1_(\trill
        { s2 \grace {
-          c16[ d] 
+          c16 d 
        } }
      >>
     \break 
index ad203049842216e222116707a2ccfb4a80ac25fa..4c2f6ae7f1b9ade1f7d888fb9da733d3a9f6d4bf 100644 (file)
@@ -12,7 +12,7 @@
 
 }
 
-\version "2.17.6"
+\version "2.17.28"
 \layout {
     ragged-right = ##t
 %    #(define debug-slur-scoring #t)
@@ -47,7 +47,7 @@
     | b='2( a4) s4
     | b='4.( c8) s2
     | << c=''1_(
-       { s2 \grace { b16[ c] } } >>
+       { s2 \grace { b16 c } } >>
     \break
     b4)
     e=''4.( c8) s4
index 58548a92a455186a60a4f093f4c6dafa357befab..3d64bb03e8a9a4ed88f00ea9813064aad0633677 100644 (file)
@@ -5,7 +5,7 @@
   run are spaced accordingly. "
 }
 
-\version "2.17.6"
+\version "2.17.28"
 
 \paper {  ragged-right = ##t }
 
@@ -16,9 +16,9 @@
   c
   \grace { c16  }
   d
-  \grace { c16[ d e f] }
+  \grace { c16 d e f }
   c
-  \grace { c8[ c16 d c8]  }
+  \grace { c8 c16 d c8  }
   c
   \override Score.GraceSpacing.spacing-increment = #2.0
 
index ae928cf6831e6a5e5e9586eff46e7bfdcb3e5119..67389f996f7d6e6ba39f52e301e05cfb591597be 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.17.3"
+\version "2.17.28"
 \header {
   texidoc = "The spacing engine avoids collisions between non-adjacent columns."
 }
@@ -15,7 +15,7 @@
     \grace { <d-1-2-3>8[ f a] }
     <fis''-1-2-3-4-5>4 r4
     \set fingeringOrientations = #'(right)
-    <g'-1-2-3-4-5>4 \grace { d''8[ e'' d'']}
+    <g'-1-2-3-4-5>4 \grace { d''8 e'' d''}
     g'4
   }
 >>
index cfe63c8bc8f0624fed98a80ef84467660062738f..6e17724c1f3844a9091f4458bb87a4f96f2d46ba 100644 (file)
@@ -9,7 +9,7 @@ time.  This may cause collisions.  "
 }
 
 
-\version "2.17.11"
+\version "2.17.28"
 
 \paper {
   ragged-right = ##t
@@ -27,7 +27,7 @@ time.  This may cause collisions.  "
   \set Score.proportionalNotationDuration = #(ly:make-moment 1/16)
   \new Staff {
     c8[ c \clef alto c c \grace { d16 }  c8 c]  c4 c2
-    \grace { c16[ c16] }
+    \grace { c16 c16 }
     c2 }
   \new Staff {
     c2  \tuplet 3/2 { c8 \clef bass cis,, c } 
index 2431769f91c409462f95f570f415b1ec3a4e922d..b1e85522a011d5464c0ffec7d7936c4a4e2ff5b6 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.16.0"
+\version "2.17.27"
 
 \header {
   texidoc = "
@@ -29,7 +29,7 @@ notes = \relative c' {
 \score {
   \new TabStaff
   \with {
-    stringTunings = \stringTuning \notemode { <a d' f' a' d'' f''> }
+    stringTunings = \stringTuning <a d' f' a' d'' f''>
     tablatureFormat = #fret-letter-tablature-format
   }
   \new TabVoice {
diff --git a/input/regression/tablature-slurs-with-beams.ly b/input/regression/tablature-slurs-with-beams.ly
new file mode 100644 (file)
index 0000000..1425ed6
--- /dev/null
@@ -0,0 +1,36 @@
+\version "2.17.20"
+
+\header
+{
+  texidoc = "
+Slur placement in complementary tablatures should not be affected by
+either automatic or manual beaming.
+"
+}
+
+guitarSolo = {
+  \time 3/4
+  \set Timing.beamExceptions = #'((end . (((1 . 8) . (4 2)))))
+  <<
+    {bes'2( aes'8-. r)} \\
+    {r8 cis(-\tag #'beam [ b f'-\tag #'beam ]) <d f'>-. r}
+  >>
+  \bar "|."
+}
+
+guitarSolos = {
+  \tempo "Manual beams"
+  \guitarSolo
+  \tempo "Automatic beams"
+  \removeWithTag #'beam \guitarSolo
+}
+
+\score {
+  <<
+    \new StaffGroup <<
+      \new Staff { \clef "treble_8" \guitarSolos }
+      \new TabStaff \guitarSolos
+    >>
+    \new TabStaff \with { \tabFullNotation } \guitarSolos
+  >>
+}
index d830bd01a9d98c4c3a51389ff806e9e264239b22..af3ec740a9c0f26e4216f6fd72f1c9d11b78ab5a 100644 (file)
@@ -55,8 +55,8 @@ translate x y z to x~x y~y z~z
 
       (list ch1 ch2)))
 
-  (make-music 'SequentialMusic 'elements (apply append
-                                               (map chord->tied-chord (ly:music-property  chords 'elements)))))
+  (make-music 'SequentialMusic 'elements (append-map
+                                         chord->tied-chord (ly:music-property  chords 'elements))))
 
 baseChords =
 \applyMusic #(lambda (mus)
index 7e57cdc4312855dfdd43f7c10aced84b0c868e57..6cb82618f8f6e5ab66d714e96cd60e95b1a528c6 100644 (file)
@@ -2,11 +2,11 @@
     texidoc = "Trill spanner can end on a grace note"
 }
 
-\version "2.17.15"
+\version "2.17.28"
 \layout {
     ragged-right = ##T
 }
 \relative c' \new Voice {
     << { c1 \startTrillSpan }
-       { s2. \grace { d16[\stopTrillSpan e] } } >>
+       { s2. \grace { d16\stopTrillSpan e } } >>
     c4 }
index ba19ac9559e90cd2a4f16e668df11a482c7dcb59..6d9afd770c4ed991e520c84e33d6f1d43029042f 100644 (file)
@@ -10,8 +10,6 @@ MODULE_INCLUDES= $(depth)/flower/include
 HELP2MAN_EXECS = lilypond
 STEPMAKE_TEMPLATES=c c++ executable po help2man
 
-OUT_DIST_FILES=$(addprefix $(outdir)/,parser.hh parser.cc)
-
 include $(depth)/make/stepmake.make
 
 ifeq ($(LINK_GXX_STATICALLY),yes)
index aee6dad7058411b187c9b7388cca059e3d92aec1..8a2a8d9b819a4469f2b60c73f75f1d0899963d91 100644 (file)
@@ -61,73 +61,85 @@ Align_interface::align_to_ideal_distances (SCM smob)
   return SCM_BOOL_T;
 }
 
-/* Return upper and lower skylines for VerticalAxisGroup g. If the extent
-   is non-empty but there is no skyline available (or pure is true), just
+/* for each grob, find its upper and lower skylines. If the grob has
+   an empty extent, delete it from the list instead. If the extent is
+   non-empty but there is no skyline available (or pure is true), just
    create a flat skyline from the bounding box */
 // TODO(jneem): the pure and non-pure parts seem to share very little
 // code. Split them into 2 functions, perhaps?
-static Skyline_pair
-get_skylines (Grob *g,
+static void
+get_skylines (Grob *me,
+              vector<Grob *> *const elements,
               Axis a,
-              Grob *other_common,
-              bool pure, int start, int end)
+              bool pure, int start, int end,
+              vector<Skyline_pair> *const ret)
 {
-  Skyline_pair skylines;
+  Grob *other_common = common_refpoint_of_array (*elements, me, other_axis (a));
 
-  if (!pure)
+  for (vsize i = elements->size (); i--;)
     {
-      Skyline_pair *skys = Skyline_pair::unsmob (g->get_property (a == Y_AXIS
-                                                                  ? "vertical-skylines"
-                                                                  : "horizontal-skylines"));
-      if (skys)
-        skylines = *skys;
-
-      /* This skyline was calculated relative to the grob g. In order to compare it to
-         skylines belonging to other grobs, we need to shift it so that it is relative
-         to the common reference. */
-      Real offset = g->relative_coordinate (other_common, other_axis (a));
-      skylines.shift (offset);
-    }
-  else if (Hara_kiri_group_spanner::request_suicide (g, start, end))
-    return skylines;
-  else
-    {
-      assert (a == Y_AXIS);
-      Interval extent = g->pure_height (g, start, end);
-
-      // This is a hack to get better accuracy on the pure-height of VerticalAlignment.
-      // It's quite common for a treble clef to be the highest element of one system
-      // and for a low note (or lyrics) to be the lowest note on another. The two will
-      // never collide, but the pure-height stuff only works with bounding boxes, so it
-      // doesn't know that. The result is a significant over-estimation of the pure-height,
-      // especially on systems with many staves. To correct for this, we build a skyline
-      // in two parts: the part we did above contains most of the grobs (note-heads, etc.)
-      // while the bit we're about to do only contains the breakable grobs at the beginning
-      // of the system. This way, the tall treble clefs are only compared with the treble
-      // clefs of the other staff and they will be ignored if the staff above is, for example,
-      // lyrics.
-      if (Axis_group_interface::has_interface (g))
+      Grob *g = (*elements)[i];
+      Skyline_pair skylines;
+
+      if (!pure)
         {
-          extent = Axis_group_interface::rest_of_line_pure_height (g, start, end);
-          Interval begin_of_line_extent = Axis_group_interface::begin_of_line_pure_height (g, start);
-          if (!begin_of_line_extent.is_empty ())
+          Skyline_pair *skys = Skyline_pair::unsmob (g->get_property (a == Y_AXIS
+                                                                      ? "vertical-skylines"
+                                                                      : "horizontal-skylines"));
+          if (skys)
+            skylines = *skys;
+
+          /* This skyline was calculated relative to the grob g. In order to compare it to
+             skylines belonging to other grobs, we need to shift it so that it is relative
+             to the common reference. */
+          Real offset = g->relative_coordinate (other_common, other_axis (a));
+          skylines.shift (offset);
+        }
+      else
+        {
+          assert (a == Y_AXIS);
+          Interval extent = g->pure_height (g, start, end);
+
+          // This is a hack to get better accuracy on the pure-height of VerticalAlignment.
+          // It's quite common for a treble clef to be the highest element of one system
+          // and for a low note (or lyrics) to be the lowest note on another. The two will
+          // never collide, but the pure-height stuff only works with bounding boxes, so it
+          // doesn't know that. The result is a significant over-estimation of the pure-height,
+          // especially on systems with many staves. To correct for this, we build a skyline
+          // in two parts: the part we did above contains most of the grobs (note-heads, etc.)
+          // while the bit we're about to do only contains the breakable grobs at the beginning
+          // of the system. This way, the tall treble clefs are only compared with the treble
+          // clefs of the other staff and they will be ignored if the staff above is, for example,
+          // lyrics.
+          if (Axis_group_interface::has_interface (g)
+              && !Hara_kiri_group_spanner::request_suicide (g, start, end))
+            {
+              extent = Axis_group_interface::rest_of_line_pure_height (g, start, end);
+              Interval begin_of_line_extent = Axis_group_interface::begin_of_line_pure_height (g, start);
+              if (!begin_of_line_extent.is_empty ())
+                {
+                  Box b;
+                  b[a] = begin_of_line_extent;
+                  b[other_axis (a)] = Interval (-infinity_f, -1);
+                  skylines.insert (b, other_axis (a));
+                }
+            }
+
+          if (!extent.is_empty ())
             {
               Box b;
-              b[a] = begin_of_line_extent;
-              b[other_axis (a)] = Interval (-infinity_f, -1);
+              b[a] = extent;
+              b[other_axis (a)] = Interval (0, infinity_f);
               skylines.insert (b, other_axis (a));
             }
         }
 
-      if (!extent.is_empty ())
-        {
-          Box b;
-          b[a] = extent;
-          b[other_axis (a)] = Interval (0, infinity_f);
-          skylines.insert (b, other_axis (a));
-        }
+      if (skylines.is_empty ())
+        elements->erase (elements->begin () + i);
+      else
+        ret->push_back (skylines);
     }
-  return skylines;
+  reverse (*ret);
 }
 
 vector<Real>
@@ -165,7 +177,7 @@ Align_interface::get_minimum_translations_without_min_dist (Grob *me,
 //   else centered dynamics will break when there is a fixed alignment).
 vector<Real>
 Align_interface::internal_get_minimum_translations (Grob *me,
-                                                    vector<Grob *> const &elems,
+                                                    vector<Grob *> const &all_grobs,
                                                     Axis a,
                                                     bool include_fixed_spacing,
                                                     bool pure, int start, int end)
@@ -192,14 +204,15 @@ Align_interface::internal_get_minimum_translations (Grob *me,
 
   Direction stacking_dir = robust_scm2dir (me->get_property ("stacking-dir"),
                                            DOWN);
+  vector<Grob *> elems (all_grobs); // writable copy
+  vector<Skyline_pair> skylines;
 
-  Grob *other_common = common_refpoint_of_array (elems, me, other_axis (a));
+  get_skylines (me, &elems, a, pure, start, end, &skylines);
 
   Real where = 0;
   Real default_padding = robust_scm2double (me->get_property ("padding"), 0.0);
   vector<Real> translates;
   Skyline down_skyline (stacking_dir);
-  Grob *last_nonempty_element = 0;
   Real last_spaceable_element_pos = 0;
   Grob *last_spaceable_element = 0;
   Skyline last_spaceable_skyline (stacking_dir);
@@ -209,18 +222,14 @@ Align_interface::internal_get_minimum_translations (Grob *me,
       Real dy = 0;
       Real padding = default_padding;
 
-      Skyline_pair skyline = get_skylines (elems[j], a, other_common, pure, start, end);
-
-      if (skyline.is_empty ())
-        dy = 0.0;
-      else if (!last_nonempty_element)
-        dy = skyline[-stacking_dir].max_height () + padding;
+      if (j == 0)
+        dy = skylines[j][-stacking_dir].max_height () + padding;
       else
         {
-          SCM spec = Page_layout_problem::get_spacing_spec (last_nonempty_element, elems[j], pure, start, end);
+          SCM spec = Page_layout_problem::get_spacing_spec (elems[j - 1], elems[j], pure, start, end);
           Page_layout_problem::read_spacing_spec (spec, &padding, ly_symbol2scm ("padding"));
 
-          dy = down_skyline.distance (skyline[-stacking_dir]) + padding;
+          dy = down_skyline.distance (skylines[j][-stacking_dir]) + padding;
 
           Real spec_distance = 0;
           if (Page_layout_problem::read_spacing_spec (spec, &spec_distance, ly_symbol2scm ("minimum-distance")))
@@ -240,7 +249,7 @@ Align_interface::internal_get_minimum_translations (Grob *me,
               Page_layout_problem::read_spacing_spec (spec,
                                                       &spaceable_padding,
                                                       ly_symbol2scm ("padding"));
-              dy = max (dy, (last_spaceable_skyline.distance (skyline[-stacking_dir])
+              dy = max (dy, (last_spaceable_skyline.distance (skylines[j][-stacking_dir])
                              + stacking_dir * (last_spaceable_element_pos - where) + spaceable_padding));
 
               Real spaceable_min_distance = 0;
@@ -254,9 +263,12 @@ Align_interface::internal_get_minimum_translations (Grob *me,
             }
         }
 
+      if (isinf (dy)) /* if the skyline is empty, maybe max_height is infinity_f */
+        dy = 0.0;
+
       dy = max (0.0, dy);
       down_skyline.raise (-stacking_dir * dy);
-      down_skyline.merge (skyline[stacking_dir]);
+      down_skyline.merge (skylines[j][stacking_dir]);
       where += stacking_dir * dy;
       translates.push_back (where);
 
@@ -267,19 +279,32 @@ Align_interface::internal_get_minimum_translations (Grob *me,
           last_spaceable_element_pos = where;
           last_spaceable_skyline = down_skyline;
         }
-      if (!skyline.is_empty ())
-        last_nonempty_element = elems[j];
+    }
+
+  // So far, we've computed the translates for all the non-empty elements.
+  // Here, we set the translates for the empty elements: an empty element
+  // gets the same translation as the last non-empty element before it.
+  vector<Real> all_translates;
+  if (!translates.empty ())
+    {
+      Real w = translates[0];
+      for (vsize i = 0, j = 0; j < all_grobs.size (); j++)
+        {
+          if (i < elems.size () && all_grobs[j] == elems[i])
+            w = translates[i++];
+          all_translates.push_back (w);
+        }
     }
 
   if (pure)
     {
       SCM mta = me->get_property ("minimum-translations-alist");
       mta = scm_cons (scm_cons (scm_cons (scm_from_int (start), scm_from_int (end)),
-                                ly_floatvector2scm (translates)),
+                                ly_floatvector2scm (all_translates)),
                       mta);
       me->set_property ("minimum-translations-alist", mta);
     }
-  return translates;
+  return all_translates;
 }
 
 void
index fe9c94ae542ea1bf502f7272eb25aa06c97c01af..b5c7f88ce6f7ecf782f7d2511ce83f25a3a506a6 100644 (file)
@@ -38,7 +38,9 @@ class Auto_beam_engraver : public Engraver
 
 protected:
   void stop_translation_timestep ();
-  void process_music ();
+  void process_acknowledged ();
+
+  virtual void process_music ();
   virtual void finalize ();
   virtual void derived_mark () const;
 
@@ -49,17 +51,15 @@ protected:
   DECLARE_ACKNOWLEDGER (stem);
   DECLARE_TRANSLATOR_LISTENER (beam_forbid);
 
-  void process_acknowledged ();
-
 private:
-  bool test_moment (Direction, Moment, Moment);
+  virtual bool test_moment (Direction, Moment, Moment);
   void consider_begin (Moment, Moment);
   void consider_end (Moment, Moment);
   Spanner *create_beam ();
   void begin_beam ();
   void end_beam ();
   void junk_beam ();
-  bool is_same_grace_state (Grob *e);
+  virtual bool is_same_grace_state (Moment, Moment);
   void recheck_beam ();
   void typeset_beam ();
   vector<Item *> *remove_end_stems (vsize);
@@ -263,6 +263,13 @@ Auto_beam_engraver::junk_beam ()
   shortest_mom_ = Moment (Rational (1, 4));
 }
 
+bool
+Auto_beam_engraver::is_same_grace_state (Moment start, Moment now)
+{
+  return bool (start.grace_part_) == bool (now.grace_part_);
+}
+
+
 void
 Auto_beam_engraver::end_beam ()
 {
@@ -397,10 +404,10 @@ Auto_beam_engraver::acknowledge_stem (Grob_info info)
     }
 
   /*
-    ignore grace notes.
+    ignore interspersed grace notes.
   */
   Moment now = now_mom ();
-  if (bool (beam_start_location_.grace_part_) != bool (now.grace_part_))
+  if (!is_same_grace_state (beam_start_location_, now))
     return;
 
   Duration *stem_duration = unsmob_duration (ev->get_property ("duration"));
@@ -564,3 +571,91 @@ ADD_TRANSLATOR (Auto_beam_engraver,
                 /* write */
                 ""
                );
+
+class Grace_auto_beam_engraver : public Auto_beam_engraver
+{
+  TRANSLATOR_DECLARATIONS (Grace_auto_beam_engraver);
+  DECLARE_TRANSLATOR_LISTENER (beam_forbid);
+
+private:
+  Moment last_grace_start_; // Full starting time of last grace group
+  Moment last_grace_position_; // Measure position of same
+  virtual void process_music ();
+  virtual bool is_same_grace_state (Moment, Moment);
+  virtual bool test_moment (Direction, Moment, Moment);
+};
+
+Grace_auto_beam_engraver::Grace_auto_beam_engraver ()
+{
+  last_grace_start_.main_part_.set_infinite (-1);
+  // grace_part_ is zero -> test_moment is false, last_grace_position_
+  // not considered.
+}
+
+IMPLEMENT_TRANSLATOR_LISTENER (Grace_auto_beam_engraver, beam_forbid);
+void
+Grace_auto_beam_engraver::listen_beam_forbid (Stream_event *ev)
+{
+  Auto_beam_engraver::listen_beam_forbid (ev);
+}
+
+bool
+Grace_auto_beam_engraver::is_same_grace_state (Moment, Moment)
+{
+  // This is for ignoring interspersed grace notes in main note
+  // beaming.  We never want to ignore something inside of grace note
+  // beaming, so return true.
+  return true;
+}
+
+void
+Grace_auto_beam_engraver::process_music ()
+{
+  Moment now = now_mom ();
+  // Update last_grace_start_ and last_grace_position_ only when the
+  // main time advances.
+  if (now.main_part_ > last_grace_start_.main_part_)
+    {
+      last_grace_start_ = now;
+      last_grace_position_ = measure_position (context ());
+    }
+
+  Auto_beam_engraver::process_music ();
+}
+
+bool
+Grace_auto_beam_engraver::test_moment (Direction dir, Moment test_mom, Moment)
+{
+  // If no grace group started this main moment, we have no business
+  // beaming.  Same if we have left the original main time step.
+  if (!last_grace_start_.grace_part_
+      || last_grace_position_.main_part_ != test_mom.main_part_)
+    return false;
+  // Autobeam start only when at the start of the grace group.
+  if (dir == START)
+      return last_grace_position_ == test_mom;
+  // Autobeam end only when the grace part is finished.
+  return !test_mom.grace_part_;
+}
+
+ADD_ACKNOWLEDGER (Grace_auto_beam_engraver, stem);
+ADD_ACKNOWLEDGER (Grace_auto_beam_engraver, bar_line);
+ADD_ACKNOWLEDGER (Grace_auto_beam_engraver, beam);
+ADD_ACKNOWLEDGER (Grace_auto_beam_engraver, breathing_sign);
+ADD_ACKNOWLEDGER (Grace_auto_beam_engraver, rest);
+ADD_TRANSLATOR (Grace_auto_beam_engraver,
+                /* doc */
+                "Generates one autobeam group across an entire grace phrase. "
+                " As usual, any manual beaming or @code{\\noBeam} will block"
+                " autobeaming, just like setting the context property"
+                " @samp{autoBeaming} to @code{##f}.",
+
+                /* create */
+                "Beam ",
+
+                /* read */
+                "autoBeaming ",
+
+                /* write */
+                ""
+               );
index 00b9081b3e34889ed1d6cf26323b7d6efe3e3e2a..846e4a245c6d772cb7ec5097fbfe80a626bf33a0 100644 (file)
@@ -177,14 +177,18 @@ Beam_engraver::typeset_beam ()
 {
   if (finished_beam_)
     {
-      if (!finished_beam_->get_bound (RIGHT))
-        finished_beam_->set_bound (RIGHT, finished_beam_->get_bound (LEFT));
-      if (forced_direction_)
+      Grob *stem = finished_beam_->get_bound (RIGHT);
+      if (!stem)
         {
-          Grob *stem = finished_beam_->get_bound (RIGHT);
-          set_grob_direction (stem, forced_direction_);
-          forced_direction_ = CENTER;
+          stem = finished_beam_->get_bound (LEFT);
+          if (stem)
+            finished_beam_->set_bound (RIGHT, stem);
         }
+
+      if (stem && forced_direction_)
+        set_grob_direction (stem, forced_direction_);
+
+      forced_direction_ = CENTER;
       finished_beam_info_->beamify (finished_beaming_options_);
 
       Beam::set_beaming (finished_beam_, finished_beam_info_);
@@ -260,6 +264,14 @@ Beam_engraver::acknowledge_stem (Grob_info info)
   if (!valid_start_point ())
     return;
 
+  // It's suboptimal that we don't support callbacks returning ##f,
+  // but this makes beams have no effect on "stems" reliably in
+  // TabStaff when \tabFullNotation is switched off: the real stencil
+  // callback for beams is called quite late in the process, and we
+  // don't want to trigger it early.
+  if (scm_is_false (beam_->get_property_data ("stencil")))
+    return;
+
   Item *stem = dynamic_cast<Item *> (info.grob ());
   if (Stem::get_beam (stem))
     return;
index ac845103ea8f56c75d608da171224756b557314e..c590802675f8ac188a0c8e6e0df03f5e09a0aed4 100644 (file)
@@ -651,7 +651,7 @@ Beam_scoring_problem::calc_concaveness ()
   if (scm_is_number (conc))
     return scm_to_double (conc);
 
-  if (is_knee_)
+  if (is_knee_ || is_xstaff_)
     return 0.0;
 
   Direction beam_dir = CENTER;
index 0932bd37d01f7a2a69069f07afa4bb19c0f7d215..fbd158aeca8a33a442f2ece1f15f3990764bd7e2 100644 (file)
@@ -49,7 +49,6 @@
 #include "lookup.hh"
 #include "main.hh"
 #include "misc.hh"
-#include "note-column.hh"
 #include "note-head.hh"
 #include "output-def.hh"
 #include "pointer-group-interface.hh"
@@ -142,92 +141,6 @@ Beam::get_beam_count (Grob *me)
   return m;
 }
 
-//------ for whole note chord tremolos
-
-bool
-Beam::whole_note_close_chord_tremolo (Grob *me)
-{
-  if (!scm_is_integer (me->get_property ("gap-count")))
-    return false;
-
-  extract_grob_set (me, "stems", stems);
-  for (vsize i = 0; i < stems.size (); i++)
-    if (Stem::duration_log (stems[i]))
-      return false;
-
-  Grob *staff = Staff_symbol_referencer::get_staff_symbol (me);
-  if (staff)
-    {
-      Grob *outside_stems[2] = {Stem::extremal_heads (stems[0])[DOWN],
-                                Stem::extremal_heads (stems.back ())[DOWN]};
-
-      Interval lines = Staff_symbol::line_span (staff);
-      for (int i = 0; i < 2; i++)
-        {
-          Real my_pos = Staff_symbol_referencer::get_position (outside_stems[i]);
-          if (my_pos > lines[UP] + 1)
-            return false;
-          else if (my_pos < lines[DOWN] - 1)
-            return false;
-        }
-    }
-
-  return (Staff_symbol_referencer::get_position (Stem::extremal_heads (stems.back ())[DOWN])
-          - Staff_symbol_referencer::get_position (Stem::extremal_heads (stems[0])[DOWN]))
-         < 2;
-}
-
-MAKE_SCHEME_CALLBACK (Beam, calc_beam_gap, 1);
-SCM
-Beam::calc_beam_gap (SCM smob)
-{
-  Spanner *me = unsmob_spanner (smob);
-  SCM default_value = scm_cons (scm_from_double (0.8), scm_from_double (0.8));
-  if (!whole_note_close_chord_tremolo (me))
-    return default_value;
-
-  Interval left = Note_column::accidental_width
-                    (me->get_bound (RIGHT)->get_parent (X_AXIS));
-
-  if (left.length () > 0.4)
-    return scm_cons (scm_from_double (0.8), scm_from_double (1.3 + left.length ()));
-  else
-    return default_value;
-}
-
-MAKE_SCHEME_CALLBACK (Beam, calc_springs_and_rods, 1);
-SCM
-Beam::calc_springs_and_rods (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-
-  if (!whole_note_close_chord_tremolo (me))
-    return SCM_BOOL_F;
-
-  return scm_call_1 (Spanner::set_spacing_rods_proc, smob);
-}
-
-MAKE_SCHEME_CALLBACK (Beam, calc_minimum_length, 1);
-SCM
-Beam::calc_minimum_length (SCM smob)
-{
-  Spanner *me = unsmob_spanner (smob);
-  SCM default_value = scm_from_double (0.0);
-
-  if (!whole_note_close_chord_tremolo (me))
-    return SCM_BOOL_F;
-
-  Interval left = Note_column::accidental_width
-                    (me->get_bound (RIGHT)->get_parent (X_AXIS));
-
-  if (left.length () > 0.4)
-    return scm_from_double (left.length () + 4.0);
-  else
-    return default_value;
-}
-
-//------ and everything else
-
 MAKE_SCHEME_CALLBACK (Beam, calc_normal_stems, 1);
 SCM
 Beam::calc_normal_stems (SCM smob)
@@ -452,7 +365,7 @@ Beam::calc_beam_segments (SCM smob)
     commonx = me->get_bound (d)->common_refpoint (commonx, X_AXIS);
 
   int gap_count = robust_scm2int (me->get_property ("gap-count"), 0);
-  Interval gap_lengths = robust_scm2interval (me->get_property ("beam-gap"), Interval (0.0, 0.0));
+  Real gap_length = robust_scm2double (me->get_property ("gap"), 0.0);
 
   Position_stem_segments_map stem_segments;
   Real lt = me->layout ()->get_dimension (ly_symbol2scm ("line-thickness"));
@@ -608,7 +521,7 @@ Beam::calc_beam_segments (SCM smob)
                   current.horizontal_[event_dir] += event_dir * seg.width_ / 2;
                   if (seg.gapped_)
                     {
-                      current.horizontal_[event_dir] -= event_dir * gap_lengths[event_dir];
+                      current.horizontal_[event_dir] -= event_dir * gap_length;
 
                       if (Stem::is_invisible (seg.stem_))
                         {
@@ -621,7 +534,7 @@ Beam::calc_beam_segments (SCM smob)
                           for (vsize k = 0; k < heads.size (); k++)
                             current.horizontal_[event_dir]
                               = event_dir * min (event_dir * current.horizontal_[event_dir],
-                                                 - gap_lengths[event_dir] / 2
+                                                 - gap_length / 2
                                                  + event_dir
                                                  * heads[k]->extent (commonx,
                                                                      X_AXIS)[-event_dir]);
@@ -1578,7 +1491,6 @@ ADD_INTERFACE (Beam,
                "auto-knee-gap "
                "beamed-stem-shorten "
                "beaming "
-               "beam-gap "
                "beam-segments "
                "beam-thickness "
                "break-overshoot "
@@ -1590,6 +1502,7 @@ ADD_INTERFACE (Beam,
                "damping "
                "details "
                "direction "
+               "gap "
                "gap-count "
                "grow-direction "
                "inspect-quants "
index b606ab4e2b4ec6019cd504c1b96d58cf6a2462e0..52a7d6c0bd4d0a64db0fb6610a889c313f9c0781 100644 (file)
@@ -59,8 +59,6 @@ class Completion_heads_engraver : public Engraver
   vector<Item *> notes_;
   vector<Item *> prev_notes_;
   // Must remember notes for explicit ties.
-  vector<Item *> tie_note_candidates_;
-  vector<Stream_event *> tie_note_candidate_events_;
   vector<Grob *> ties_;
   vector<Stream_event *> note_events_;
   Spanner *tie_column_;
@@ -271,6 +269,7 @@ Completion_heads_engraver::make_tie (Grob *left, Grob *right)
   Grob *p = make_spanner ("Tie", SCM_EOL);
   Tie::set_head (p, LEFT, left);
   Tie::set_head (p, RIGHT, right);
+  announce_end_grob (p, SCM_EOL);
   ties_.push_back (p);
 }
 
@@ -291,9 +290,6 @@ Completion_heads_engraver::start_translation_timestep ()
   Moment now = now_mom ();
   if (note_end_mom_.main_part_ <= now.main_part_)
     {
-      tie_note_candidate_events_ = note_events_;
-      tie_note_candidates_ = prev_notes_;
-
       note_events_.clear ();
       prev_notes_.clear ();
     }
index 6bd52d6e9a4e259406906d664de05ebad2d1453a..61255226eac4eb53b385f1eadbde873507199bdd 100644 (file)
@@ -58,7 +58,6 @@ using namespace std;
 class Completion_rest_engraver : public Engraver
 {
   vector<Item *> rests_;
-  vector<Item *> prev_rests_;
   vector<Stream_event *> rest_events_;
   Moment rest_end_mom_;
   bool is_first_;
@@ -241,8 +240,6 @@ Completion_rest_engraver::process_music ()
 void
 Completion_rest_engraver::stop_translation_timestep ()
 {
-  if (rests_.size ())
-    prev_rests_ = rests_;
   rests_.clear ();
 }
 
@@ -253,7 +250,6 @@ Completion_rest_engraver::start_translation_timestep ()
   if (rest_end_mom_.main_part_ <= now.main_part_)
     {
       rest_events_.clear ();
-      prev_rests_.clear ();
     }
   context ()->set_property ("restCompletionBusy",
                             ly_bool2scm (rest_events_.size ()));
index 8d44ca8f85c67d43c4ee5ab596839e2cd40e37cf..491ea8f0d864e4ffc0cbe729f5b0e0d4d8f25b12 100644 (file)
@@ -425,9 +425,19 @@ Context::get_default_interpreter (const string &context_id)
           warning (_f ("cannot find or create: `%s'", name.c_str ()));
           t = unsmob_context_def (this->definition_);
         }
-
-      Context *tg = create_context (t, context_id, SCM_EOL);
-      return tg->get_default_interpreter (context_id);
+      if (scm_is_symbol (t->get_default_child (SCM_EOL)))
+        {
+          Context *tg = create_context (t, "\\new", SCM_EOL);
+          return tg->get_default_interpreter (context_id);
+        }
+      return create_context (t, context_id, SCM_EOL);
+    }
+  else if (!context_id.empty () && context_id != id_string ())
+    {
+      if (daddy_context_ && !dynamic_cast<Global_context *> (daddy_context_))
+        return daddy_context_->get_default_interpreter (context_id);
+      warning (_f ("cannot find or create new Bottom = \"%s\"",
+                   context_id.c_str ()));
     }
   return this;
 }
index c492e59c5540809829324fbf50bdcb6ad8f4ba88..a4d4e06f5a68fb6d7ceea97e708d3b0950c1ae48 100644 (file)
@@ -1,7 +1,7 @@
 /*
   This file is part of LilyPond, the GNU music typesetter.
 
-  Copyright (C) 1997--2012 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Copyright (C) 2008--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
 
   LilyPond is free software: you can redistribute it and/or modify
   it under the terms of the GNU General Public License as published by
   along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 */
 
-#include "axis-group-interface.hh"
-#include "context.hh"
-#include "engraver.hh"
-#include "dimensions.hh"
-#include "directional-element-interface.hh"
 #include "engraver.hh"
 #include "hairpin.hh"
 #include "international.hh"
-#include "interval.hh"
+#include "item.hh"
 #include "note-column.hh"
-#include "paper-column.hh"
 #include "pointer-group-interface.hh"
-#include "script-interface.hh"
 #include "self-alignment-interface.hh"
-#include "side-position-interface.hh"
-#include "staff-symbol-referencer.hh"
-#include "stream-event.hh"
-#include "warn.hh"
 #include "spanner.hh"
+#include "stream-event.hh"
 #include "text-interface.hh"
 
 #include "translator.icc"
 
-/*
-  TODO:
-
-  * direction of text-dynamic-event if not equal to direction of
-  line-spanner
-
-  - TODO: this engraver is too complicated. We should split it into
-  the handling of the basic grobs and the linespanner
-
-  - TODO: the line-spanner is not killed after the (de)crescs are
-  finished.
-*/
-
-/**
-   print text & hairpin dynamics.
-*/
 class Dynamic_engraver : public Engraver
 {
-  Item *script_;
-  Spanner *line_spanner_;
-  Spanner *cresc_;
-
-  Spanner *finished_line_spanner_;
-  Spanner *finished_cresc_;
-
-  Stream_event *script_ev_;
-  Stream_event *current_cresc_ev_;
-
-  Drul_array<Stream_event *> accepted_spanevents_drul_;
-
-  vector<Note_column *> pending_columns_;
-  vector<Grob *> pending_elements_;
-
-  void typeset_all ();
-
   TRANSLATOR_DECLARATIONS (Dynamic_engraver);
   DECLARE_ACKNOWLEDGER (note_column);
   DECLARE_TRANSLATOR_LISTENER (absolute_dynamic);
   DECLARE_TRANSLATOR_LISTENER (span_dynamic);
+  DECLARE_TRANSLATOR_LISTENER (break_span);
 
 protected:
+  virtual void process_music ();
+  virtual void stop_translation_timestep ();
   virtual void finalize ();
-  void stop_translation_timestep ();
-  void process_music ();
+
+private:
+  SCM get_property_setting (Stream_event *evt, char const *evprop,
+                            char const *ctxprop);
+  string get_spanner_type (Stream_event *ev);
+
+  Drul_array<Stream_event *> accepted_spanevents_drul_;
+  Spanner *current_spanner_;
+  Spanner *finished_spanner_;
+
+  Item *script_;
+  Stream_event *script_event_;
+  Stream_event *current_span_event_;
+  bool end_new_spanner_;
 };
 
 Dynamic_engraver::Dynamic_engraver ()
 {
+  script_event_ = 0;
+  current_span_event_ = 0;
   script_ = 0;
-  finished_cresc_ = 0;
-  line_spanner_ = 0;
-  finished_line_spanner_ = 0;
-  current_cresc_ev_ = 0;
-  cresc_ = 0;
-
-  script_ev_ = 0;
-  accepted_spanevents_drul_[START] = 0;
-  accepted_spanevents_drul_[STOP] = 0;
+  finished_spanner_ = 0;
+  current_spanner_ = 0;
+  accepted_spanevents_drul_.set (0, 0);
+  end_new_spanner_ = false;
 }
 
 IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_engraver, absolute_dynamic);
 void
 Dynamic_engraver::listen_absolute_dynamic (Stream_event *ev)
 {
-  /*
-    TODO: probably broken.
-  */
-  ASSIGN_EVENT_ONCE (script_ev_, ev);
+  ASSIGN_EVENT_ONCE (script_event_, ev);
 }
 
 IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_engraver, span_dynamic);
@@ -116,337 +82,223 @@ Dynamic_engraver::listen_span_dynamic (Stream_event *ev)
 {
   Direction d = to_dir (ev->get_property ("span-direction"));
 
-  if (d == START)
-    ASSIGN_EVENT_ONCE (accepted_spanevents_drul_[START], ev);
-
-  /* Cancel any ongoing crescendo, either explicitly by \! or
-     implicitly by a new crescendo. Also avoid warning if cresc is
-     canceled both implicitly and explicitly. */
-  if ((d == STOP || current_cresc_ev_) && !accepted_spanevents_drul_[STOP])
-    ASSIGN_EVENT_ONCE (accepted_spanevents_drul_[STOP], ev);
+  ASSIGN_EVENT_ONCE (accepted_spanevents_drul_[d], ev);
 }
 
+IMPLEMENT_TRANSLATOR_LISTENER (Dynamic_engraver, break_span);
 void
-Dynamic_engraver::process_music ()
+Dynamic_engraver::listen_break_span (Stream_event *event)
 {
-  if (accepted_spanevents_drul_[START] || accepted_spanevents_drul_[STOP] || script_ev_)
+  if (event->in_event_class ("break-dynamic-span-event"))
     {
-      if (!line_spanner_)
-        {
-          Stream_event *rq = accepted_spanevents_drul_[START];
-          line_spanner_ = make_spanner ("DynamicLineSpanner", rq ? rq->self_scm () : SCM_EOL);
-          if (script_ev_)
-            rq = script_ev_;
-        }
+      // Case 1: Already have a start dynamic event -> break applies to new
+      //         spanner (created later) -> set a flag
+      // Case 2: no new spanner, but spanner already active -> break it now
+      if (accepted_spanevents_drul_[START])
+        end_new_spanner_ = true;
+      else if (current_spanner_)
+        current_spanner_->set_property ("spanner-broken", SCM_BOOL_T);
     }
+}
 
-  /*
-    During a (de)crescendo, pending event will not be cleared,
-    and a line-spanner will always be created, as \< \! are already
-    two events.
-
-    Note: line-spanner must always have at least same duration
-    as (de)crecsendo, b.o. line-breaking.
-  */
+SCM
+Dynamic_engraver::get_property_setting (Stream_event *evt,
+                                        char const *evprop,
+                                        char const *ctxprop)
+{
+  SCM spanner_type = evt->get_property (evprop);
+  if (spanner_type == SCM_EOL)
+    spanner_type = get_property (ctxprop);
+  return spanner_type;
+}
 
-  /*
-    maybe we should leave dynamic texts to the text-engraver and
-    simply acknowledge them?
-  */
-  if (script_ev_)
+void
+Dynamic_engraver::process_music ()
+{
+  if (current_spanner_
+      && (accepted_spanevents_drul_[STOP]
+          || script_event_
+          || accepted_spanevents_drul_[START]))
     {
-      script_ = make_item ("DynamicText", script_ev_->self_scm ());
-      script_->set_property ("text",
-                             script_ev_->get_property ("text"));
+      Stream_event *ender = accepted_spanevents_drul_[STOP];
+      if (!ender)
+        ender = script_event_;
 
-      if (Direction d = to_dir (script_ev_->get_property ("direction")))
-        set_grob_direction (line_spanner_, d);
-      else if (Direction d = to_dir (line_spanner_->get_property ("direction")))
-        set_grob_direction (script_, d);
+      if (!ender)
+        ender = accepted_spanevents_drul_[START];
 
-      Axis_group_interface::add_element (line_spanner_, script_);
+      finished_spanner_ = current_spanner_;
+      announce_end_grob (finished_spanner_, ender->self_scm ());
+      current_spanner_ = 0;
+      current_span_event_ = 0;
     }
 
-  if (accepted_spanevents_drul_[STOP] || script_ev_)
+  if (accepted_spanevents_drul_[START])
     {
-      /*
-        finish side position alignment if the (de)cresc ends here, and
-        there are no new dynamics.
-      */
+      current_span_event_ = accepted_spanevents_drul_[START];
 
-      if (cresc_)
-        {
-          assert (!finished_cresc_ && cresc_);
-
-          if (script_)
-            {
-              cresc_->set_bound (RIGHT, script_);
-              add_bound_item (line_spanner_, script_);
-            }
-
-          finished_cresc_ = cresc_;
-          announce_end_grob (finished_cresc_, SCM_EOL);
-          cresc_ = 0;
-          current_cresc_ev_ = 0;
-        }
-      else if (accepted_spanevents_drul_[STOP])
-        accepted_spanevents_drul_[STOP]->origin ()->warning (_ ("cannot find start of (de)crescendo"));
-    }
+      string start_type = get_spanner_type (current_span_event_);
+      SCM cresc_type = get_property_setting (current_span_event_, "span-type",
+                                             (start_type + "Spanner").c_str ());
 
-  if (accepted_spanevents_drul_[START])
-    {
-      if (current_cresc_ev_)
+      if (cresc_type == ly_symbol2scm ("text"))
         {
-          string msg = _ ("already have a decrescendo");
-          if (current_cresc_ev_->in_event_class ("crescendo-event"))
-            msg = _ ("already have a crescendo");
-
-          accepted_spanevents_drul_[START]->origin ()->warning (msg);
-          current_cresc_ev_->origin ()->warning (_ ("cresc starts here"));
+          current_spanner_
+            = make_spanner ("DynamicTextSpanner",
+                            accepted_spanevents_drul_[START]->self_scm ());
+
+          SCM text = get_property_setting (current_span_event_, "span-text",
+                                           (start_type + "Text").c_str ());
+          if (Text_interface::is_markup (text))
+            current_spanner_->set_property ("text", text);
+          /*
+            If the line of a text spanner is hidden, end the alignment spanner
+            early: this allows dynamics to be spaced individually instead of
+            being linked together.
+          */
+          if (current_spanner_->get_property ("style") == ly_symbol2scm ("none"))
+            current_spanner_->set_property ("spanner-broken", SCM_BOOL_T);
         }
       else
         {
-          current_cresc_ev_ = accepted_spanevents_drul_[START];
-
-          if (Direction d = to_dir (current_cresc_ev_->get_property ("direction")))
-            set_grob_direction (line_spanner_, d);
-
-          /*
-            TODO: Use symbols.
-          */
-
-          SCM start_sym = scm_car (current_cresc_ev_->get_property ("class"));
-          string start_type;
-
-          if (start_sym == ly_symbol2scm ("decrescendo-event"))
-            start_type = "decrescendo";
-          else if (start_sym == ly_symbol2scm ("crescendo-event"))
-            start_type = "crescendo";
-          else
-            {
-              programming_error ("unknown dynamic spanner type");
-              return;
-            }
-
-          /*
-            UGH. TODO: should read from original event, so appearance
-            may be altered with \tweak.
-           */
-          SCM s = get_property ((start_type + "Spanner").c_str ());
-          if (!scm_is_symbol (s) || s == ly_symbol2scm ("hairpin"))
+          if (cresc_type != ly_symbol2scm ("hairpin"))
             {
-              cresc_ = make_spanner ("Hairpin", accepted_spanevents_drul_[START]->self_scm ());
-              if (finished_cresc_)
-                {
-                  Pointer_group_interface::add_grob (finished_cresc_,
-                                                     ly_symbol2scm ("adjacent-hairpins"),
-                                                     cresc_);
-
-                  Pointer_group_interface::add_grob (cresc_,
-                                                     ly_symbol2scm ("adjacent-hairpins"),
-                                                     finished_cresc_);
-                }
+              string as_string = ly_scm_write_string (cresc_type);
+              current_span_event_
+              ->origin ()->warning (_f ("unknown crescendo style: %s\ndefaulting to hairpin.", as_string.c_str ()));
             }
+          current_spanner_ = make_spanner ("Hairpin",
+                                           current_span_event_->self_scm ());
+        }
+      // if we have a break-dynamic-span event right after the start dynamic, break the new spanner immediately
+      if (end_new_spanner_)
+        {
+          current_spanner_->set_property ("spanner-broken", SCM_BOOL_T);
+          end_new_spanner_ = false;
+        }
+      if (finished_spanner_)
+        {
+          if (Hairpin::has_interface (finished_spanner_))
+            Pointer_group_interface::add_grob (finished_spanner_,
+                                               ly_symbol2scm ("adjacent-spanners"),
+                                               current_spanner_);
+          if (Hairpin::has_interface (current_spanner_))
+            Pointer_group_interface::add_grob (current_spanner_,
+                                               ly_symbol2scm ("adjacent-spanners"),
+                                               finished_spanner_);
+        }
+    }
 
-          /*
-            This is a convenient (and legacy) interface to TextSpanners
-            for use in (de)crescendi.
-            Hmm.
-          */
-          else
-            {
-              cresc_ = make_spanner ("DynamicTextSpanner", accepted_spanevents_drul_[START]->self_scm ());
-              cresc_->set_property ("style", s);
-              context ()->set_property ((start_type
-                                         + "Spanner").c_str (), SCM_EOL);
-              s = get_property ((start_type + "Text").c_str ());
-              if (Text_interface::is_markup (s))
-                {
-                  cresc_->set_property ("text", s);
-                  context ()->set_property ((start_type + "Text").c_str (),
-                                            SCM_EOL);
-                }
-
-              if (script_)
-                {
-                  set_nested_property (cresc_,
-                                       scm_list_3 (ly_symbol2scm ("bound-details"),
-                                                   ly_symbol2scm ("left"),
-                                                   ly_symbol2scm ("attach-dir")
-                                                  ),
-                                       scm_from_int (RIGHT));
-                }
-            }
+  if (script_event_)
+    {
+      script_ = make_item ("DynamicText", script_event_->self_scm ());
+      script_->set_property ("text",
+                             script_event_->get_property ("text"));
 
-          if (script_)
-            {
-              cresc_->set_bound (LEFT, script_);
-              add_bound_item (line_spanner_, cresc_->get_bound (LEFT));
-            }
-          Axis_group_interface::add_element (line_spanner_, cresc_);
-        }
+      if (finished_spanner_)
+        finished_spanner_->set_bound (RIGHT, script_);
+      if (current_spanner_)
+        current_spanner_->set_bound (LEFT, script_);
     }
 }
 
 void
 Dynamic_engraver::stop_translation_timestep ()
 {
-  if (!current_cresc_ev_ && line_spanner_)
-    {
-      assert (!finished_line_spanner_);
-      finished_line_spanner_ = line_spanner_;
-      line_spanner_ = 0;
-    }
-
-  typeset_all ();
-
-  if (cresc_ && !cresc_->get_bound (LEFT))
-    {
-      cresc_->set_bound (LEFT, unsmob_grob (get_property ("currentMusicalColumn")));
-      add_bound_item (line_spanner_, cresc_->get_bound (LEFT));
-    }
-
-  script_ev_ = 0;
-  accepted_spanevents_drul_[START] = 0;
-  accepted_spanevents_drul_[STOP] = 0;
+  if (finished_spanner_ && !finished_spanner_->get_bound (RIGHT))
+    finished_spanner_
+    ->set_bound (RIGHT,
+                 unsmob_grob (get_property ("currentMusicalColumn")));
+
+  if (current_spanner_ && !current_spanner_->get_bound (LEFT))
+    current_spanner_
+    ->set_bound (LEFT,
+                 unsmob_grob (get_property ("currentMusicalColumn")));
+  script_ = 0;
+  script_event_ = 0;
+  accepted_spanevents_drul_.set (0, 0);
+  finished_spanner_ = 0;
+  end_new_spanner_ = false;
 }
 
 void
 Dynamic_engraver::finalize ()
 {
-  typeset_all ();
-
-  if (line_spanner_
-      && !line_spanner_->is_live ())
-    line_spanner_ = 0;
-  if (line_spanner_)
-    {
-      finished_line_spanner_ = line_spanner_;
-      typeset_all ();
-    }
-
-  if (cresc_
-      && !cresc_->is_live ())
-    cresc_ = 0;
-  if (cresc_)
+  if (current_spanner_
+      && !current_spanner_->is_live ())
+    current_spanner_ = 0;
+  if (current_spanner_)
     {
-      current_cresc_ev_->origin ()->warning (_ ("unterminated (de)crescendo"));
-      cresc_->suicide ();
-      cresc_ = 0;
+      current_span_event_
+      ->origin ()->warning (_f ("unterminated %s",
+                                get_spanner_type (current_span_event_)
+                                .c_str ()));
+      current_spanner_->suicide ();
+      current_spanner_ = 0;
     }
 }
 
-void
-Dynamic_engraver::typeset_all ()
+string
+Dynamic_engraver::get_spanner_type (Stream_event *ev)
 {
-  if (finished_cresc_)
-    {
-      if (!finished_cresc_->get_bound (RIGHT))
-        {
+  string type;
+  SCM start_sym = scm_car (ev->get_property ("class"));
 
-          Grob *column_bound = unsmob_grob (get_property ("currentMusicalColumn"));
+  if (start_sym == ly_symbol2scm ("decrescendo-event"))
+    type = "decrescendo";
+  else if (start_sym == ly_symbol2scm ("crescendo-event"))
+    type = "crescendo";
+  else
+    programming_error ("unknown dynamic spanner type");
 
-          finished_cresc_->set_bound (RIGHT, script_
-                                      ? script_
-                                      : column_bound);
-
-          if (finished_line_spanner_)
-            add_bound_item (finished_line_spanner_,
-                            finished_cresc_->get_bound (RIGHT));
-        }
-      finished_cresc_ = 0;
-    }
-
-  script_ = 0;
-  if (finished_line_spanner_)
-    {
-      /*
-        We used to have
-
-        extend-spanner-over-elements (finished_line_spanner_);
-
-        but this is rather kludgy, since finished_line_spanner_
-        typically has a staff-symbol field set , extending it over the
-        entire staff.
-
-      */
-
-      Grob *l = finished_line_spanner_->get_bound (LEFT);
-      Grob *r = finished_line_spanner_->get_bound (RIGHT);
-      if (!r && l)
-        finished_line_spanner_->set_bound (RIGHT, l);
-      else if (!l && r)
-        finished_line_spanner_->set_bound (LEFT, r);
-      else if (!r && !l)
-        {
-          /*
-            This is a isolated dynamic apparently, and does not even have
-            any interesting support item.
-          */
-          Grob *cc = unsmob_grob (get_property ("currentMusicalColumn"));
-          Item *ci = dynamic_cast<Item *> (cc);
-          finished_line_spanner_->set_bound (RIGHT, ci);
-          finished_line_spanner_->set_bound (LEFT, ci);
-        }
-      finished_line_spanner_ = 0;
-    }
+  return type;
 }
 
 void
 Dynamic_engraver::acknowledge_note_column (Grob_info info)
 {
-  if (!line_spanner_)
-    return;
-
-  if (line_spanner_
-      /* Don't refill killed spanner */
-      && line_spanner_->is_live ())
-    {
-      Side_position_interface::add_support (line_spanner_, info.grob ());
-      add_bound_item (line_spanner_, dynamic_cast<Item *> (info.grob ()));
-    }
-
   if (script_ && !script_->get_parent (X_AXIS))
     {
       extract_grob_set (info.grob (), "note-heads", heads);
-      if (heads.size ())
+      Grob *stem = unsmob_grob (info.grob ()->get_object ("stem"));
+      /*
+        Spacing constraints may require dynamics to be aligned on rests,
+        so check for a rest if this note column has no note heads.
+      */
+      Grob *x_parent = (heads.size ()
+                        ? heads[0]
+                        : unsmob_grob (info.grob ()->get_object ("rest")));
+      if (x_parent)
         {
-          Grob *head = heads[0];
-          script_->set_parent (head, X_AXIS);
+          script_->set_parent (x_parent, X_AXIS);
           Self_alignment_interface::set_center_parent (script_, X_AXIS);
         }
+      if (stem)
+        Pointer_group_interface::add_grob (script_, ly_symbol2scm ("potential-X-colliding-grobs"), stem);
     }
 
-  if (cresc_)
-    {
-      if (!cresc_->get_bound (LEFT))
-        {
-          cresc_->set_bound (LEFT, info.grob ());
-          add_bound_item (line_spanner_, cresc_->get_bound (LEFT));
-        }
-    }
-
-  if (finished_cresc_ && !finished_cresc_->get_bound (RIGHT))
-    finished_cresc_->set_bound (RIGHT, info.grob ());
+  if (current_spanner_ && !current_spanner_->get_bound (LEFT))
+    current_spanner_->set_bound (LEFT, info.grob ());
+  if (finished_spanner_ && !finished_spanner_->get_bound (RIGHT))
+    finished_spanner_->set_bound (RIGHT, info.grob ());
 }
 
 ADD_ACKNOWLEDGER (Dynamic_engraver, note_column);
-
 ADD_TRANSLATOR (Dynamic_engraver,
                 /* doc */
-                "Create hairpins, dynamic texts, and their vertical"
-                " alignments.  The symbols are collected onto a"
-                " @code{DynamicLineSpanner} grob which takes care of vertical"
-                " positioning.",
+                "Create hairpins, dynamic texts and dynamic text spanners.",
 
                 /* create */
-                "DynamicLineSpanner "
                 "DynamicTextSpanner "
                 "DynamicText "
                 "Hairpin ",
 
                 /* read */
-                "",
+                "crescendoSpanner "
+                "crescendoText "
+                "currentMusicalColumn "
+                "decrescendoSpanner "
+                "decrescendoText ",
 
                 /* write */
                 ""
index c26d8d213785f770a29cff6a7072fe54d1a500fb..116ae6aa5730a72ad616594c69bc89bb34991672 100644 (file)
@@ -72,9 +72,6 @@ public:
   DECLARE_SCHEME_CALLBACK (rest_collision_callback, (SCM element, SCM prev_off));
   DECLARE_SCHEME_CALLBACK (pure_rest_collision_callback, (SCM element, SCM, SCM, SCM prev_off));
   DECLARE_SCHEME_CALLBACK (print, (SCM));
-  DECLARE_SCHEME_CALLBACK (calc_beam_gap, (SCM));
-  DECLARE_SCHEME_CALLBACK (calc_springs_and_rods, (SCM));
-  DECLARE_SCHEME_CALLBACK (calc_minimum_length, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_beaming, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_stem_shorten, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_direction, (SCM));
@@ -92,7 +89,6 @@ public:
 private:
   friend class Beam_scoring_problem;
 
-  static bool whole_note_close_chord_tremolo (Grob *me);
   static Direction get_default_dir (Grob *);
   static vector<Beam_segment> get_beam_segments (Grob *);
   static void set_stem_directions (Grob *, Direction);
index 2fddd980b7918ab0006011e9643a8c2a212782e4..2776c8110502b678f061f4f2a597e77dae5bb2c9 100644 (file)
@@ -28,7 +28,7 @@
 #include <set>
 
 /*
-  The definition of a interpretation context as given in the
+  The definition of an interpretation context as given in the
   input. The lists are stored in order of definition.
 */
 struct Context_def
index aaecc3d923cd7b73469fa536d16f59dc753875cd..04168f420916b1d36063f1f2dd2a6ac27880a48f 100644 (file)
@@ -23,7 +23,7 @@
 #include "simple-music-iterator.hh"
 
 /**
-   Walk through a Event_chord
+   Walk through an Event_chord
 */
 class Event_chord_iterator : public Simple_music_iterator
 {
index e39edf840f070086be168fade1a6d96d91795af2..c2723f0ba8d570759a5da8c9cf40717c3937499d 100644 (file)
@@ -42,7 +42,6 @@ public:
   static bool has_rests (Grob *me);
   static Grob *dot_column (Grob *me);
   static Interval cross_staff_extent (Grob *me, Grob *refp);
-  static Interval accidental_width (Grob *me);
   DECLARE_GROB_INTERFACE ();
 
   static Item *get_stem (Grob *);
index 0e6729a81f5a34184c77aa48d8ea14f0f838f3a7..16016256903542770862e9c613591374afb46af2 100644 (file)
@@ -25,7 +25,7 @@
 #include "grob-info.hh"
 #include "translator.hh"
 
-/* Convert a music definition into a audio representation.
+/* Convert a music definition into an audio representation.
    A baseclass.  */
 class Performer : public Translator
 {
index 9941bc13c2abf79bc36fd25f952a084633d6e635..9cc808dde4491c11f87e928b001d1be1deedca0c 100644 (file)
@@ -43,7 +43,7 @@ Item::Item (SCM s)
 }
 
 /**
-   Item copy ctor.  Copy nothing: everything should be a elt property
+   Item copy ctor.  Copy nothing: everything should be an elt property
    or a special purpose pointer (such as broken_to_drul_[]) */
 Item::Item (Item const &s)
   : Grob (s)
index 18b999da82f20f2a3045f796b37322ff5fd3d65d..9a859e5a6a9f4852442eb9b98c7f3355017e35aa 100644 (file)
@@ -91,6 +91,15 @@ bool is_valid_version (string s);
                 yylval = SCM_EOL;               \
         } while (0)
 
+/*
+  The inside of \"violin1" is marked by commandquote mode
+*/
+
+#define start_command_quote() do {             \
+                yy_push_state (commandquote);  \
+                yylval = SCM_EOL;               \
+        } while (0)
+
 #define yylval (*lexval_)
 
 #define yylloc (*lexloc_)
@@ -124,6 +133,7 @@ SCM (* scm_parse_error_handler) (void *);
 %x markup
 %x notes
 %x quote
+%x commandquote
 %x sourcefileline
 %x sourcefilename
 %x version
@@ -503,7 +513,9 @@ BOM_UTF8    \357\273\277
        {WORD}  {
                return scan_bare_word (YYText_utf8 ());
        }
-
+       \\\"    {
+               start_command_quote ();
+       }
        {COMMAND}/[-_]  | // backup rule
        {COMMAND}       {
                return scan_escaped_word (YYText_utf8 () + 1); 
@@ -527,7 +539,7 @@ BOM_UTF8    \357\273\277
        }
 }
 
-<quote>{
+<quote,commandquote>{
        \\{ESCAPED}     {
                 char c = escaped_char (YYText ()[1]);
                yylval = scm_cons (scm_from_locale_stringn (&c, 1),
@@ -539,14 +551,19 @@ BOM_UTF8  \357\273\277
        }
        \"      {
 
-               yy_pop_state ();
-
                /* yylval is union. Must remember STRING before setting SCM*/
 
                 yylval = scm_string_concatenate_reverse (yylval,
                                                          SCM_UNDEFINED,
                                                          SCM_UNDEFINED);
 
+               if (get_state () == commandquote) {
+                       yy_pop_state ();
+                       return scan_escaped_word (ly_scm2string (yylval));
+               }
+
+               yy_pop_state ();
+
                return STRING;
        }
        \\      {
@@ -572,6 +589,9 @@ BOM_UTF8    \357\273\277
                yylval = scm_c_read_string (YYText ());
                return UNSIGNED;
        }
+       \\\"    {
+               start_command_quote ();
+       }
        {COMMAND}/[-_]  | // backup rule
        {COMMAND}       {
                return scan_escaped_word (YYText_utf8 () + 1);
@@ -585,7 +605,7 @@ BOM_UTF8    \357\273\277
                 yylval = SCM_UNSPECIFIED;
                return YYText ()[0];
        }
-       [^$#{}\"\\ \t\n\r\f0-9]+ {
+       [^|*.=$#{}\"\\ \t\n\r\f0-9][^$#{}\"\\ \t\n\r\f0-9]* {
                /* ugr. This sux. */
                string s (YYText_utf8 ());
                 yylval = SCM_UNSPECIFIED;
@@ -609,6 +629,9 @@ BOM_UTF8    \357\273\277
        {WORD}  {
                return scan_bare_word (YYText_utf8 ());
        }
+       \\\"    {
+               start_command_quote ();
+       }
        {COMMAND}/[-_]  | // backup rule
        {COMMAND}       {
                return scan_escaped_word (YYText_utf8 () + 1);
@@ -650,6 +673,9 @@ BOM_UTF8    \357\273\277
                 yylval = SCM_UNSPECIFIED;
                return SCORE;
        }
+       \\\"    {
+               start_command_quote ();
+       }
        {COMMAND}/[-_]  | // backup rule
        {COMMAND} {
                string str (YYText_utf8 () + 1);
@@ -718,7 +744,7 @@ BOM_UTF8    \357\273\277
                yy_pop_state ();
        }
 
-<quote><<EOF>> {
+<quote,commandquote><<EOF>> {
        LexerError (_ ("EOF found inside string").c_str ());
        yy_pop_state ();
 }
@@ -736,10 +762,11 @@ BOM_UTF8  \357\273\277
                        {
                                LexerError (_ ("Unfinished main input").c_str ());
                                do {
-                                       pop_state ();
+                                       yy_pop_state ();
                                } while (YYSTATE != maininput);
                        }
-                       pop_state ();
+                       extra_tokens_ = SCM_EOL;
+                       yy_pop_state ();
                }
                if (!close_input () || !is_main_input_)
                /* Returns YY_NULL */
@@ -762,6 +789,9 @@ BOM_UTF8    \357\273\277
        {WORD}  {
                return scan_bare_word (YYText_utf8 ());
        }
+       \\\"    {
+               start_command_quote ();
+       }
        {COMMAND}/[-_]  | // backup rule
        {COMMAND}       {
                return scan_escaped_word (YYText_utf8 () + 1);
@@ -890,7 +920,9 @@ Lily_lexer::pop_state ()
        if (YYSTATE == notes || YYSTATE == chords)
                pitchname_tab_stack_ = scm_cdr (pitchname_tab_stack_);
 
-       yy_pop_state ();
+       // don't cross the maininput threshold
+       if (YYSTATE != maininput)
+               yy_pop_state ();
 
        if (extra) {
                hidden_state_ = YYSTATE;
diff --git a/lily/new-dynamic-engraver.cc b/lily/new-dynamic-engraver.cc
deleted file mode 100644 (file)
index cd7db64..0000000
+++ /dev/null
@@ -1,305 +0,0 @@
-/*
-  This file is part of LilyPond, the GNU music typesetter.
-
-  Copyright (C) 2008--2012 Han-Wen Nienhuys <hanwen@lilypond.org>
-
-  LilyPond is free software: you can redistribute it and/or modify
-  it under the terms of the GNU General Public License as published by
-  the Free Software Foundation, either version 3 of the License, or
-  (at your option) any later version.
-
-  LilyPond is distributed in the hope that it will be useful,
-  but WITHOUT ANY WARRANTY; without even the implied warranty of
-  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
-  GNU General Public License for more details.
-
-  You should have received a copy of the GNU General Public License
-  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
-*/
-
-#include "engraver.hh"
-#include "hairpin.hh"
-#include "international.hh"
-#include "item.hh"
-#include "note-column.hh"
-#include "pointer-group-interface.hh"
-#include "self-alignment-interface.hh"
-#include "spanner.hh"
-#include "stream-event.hh"
-#include "text-interface.hh"
-
-#include "translator.icc"
-
-class New_dynamic_engraver : public Engraver
-{
-  TRANSLATOR_DECLARATIONS (New_dynamic_engraver);
-  DECLARE_ACKNOWLEDGER (note_column);
-  DECLARE_TRANSLATOR_LISTENER (absolute_dynamic);
-  DECLARE_TRANSLATOR_LISTENER (span_dynamic);
-  DECLARE_TRANSLATOR_LISTENER (break_span);
-
-protected:
-  virtual void process_music ();
-  virtual void stop_translation_timestep ();
-  virtual void finalize ();
-
-private:
-  SCM get_property_setting (Stream_event *evt, char const *evprop,
-                            char const *ctxprop);
-  string get_spanner_type (Stream_event *ev);
-
-  Drul_array<Stream_event *> accepted_spanevents_drul_;
-  Spanner *current_spanner_;
-  Spanner *finished_spanner_;
-
-  Item *script_;
-  Stream_event *script_event_;
-  Stream_event *current_span_event_;
-  bool end_new_spanner_;
-};
-
-New_dynamic_engraver::New_dynamic_engraver ()
-{
-  script_event_ = 0;
-  current_span_event_ = 0;
-  script_ = 0;
-  finished_spanner_ = 0;
-  current_spanner_ = 0;
-  accepted_spanevents_drul_.set (0, 0);
-  end_new_spanner_ = false;
-}
-
-IMPLEMENT_TRANSLATOR_LISTENER (New_dynamic_engraver, absolute_dynamic);
-void
-New_dynamic_engraver::listen_absolute_dynamic (Stream_event *ev)
-{
-  ASSIGN_EVENT_ONCE (script_event_, ev);
-}
-
-IMPLEMENT_TRANSLATOR_LISTENER (New_dynamic_engraver, span_dynamic);
-void
-New_dynamic_engraver::listen_span_dynamic (Stream_event *ev)
-{
-  Direction d = to_dir (ev->get_property ("span-direction"));
-
-  ASSIGN_EVENT_ONCE (accepted_spanevents_drul_[d], ev);
-}
-
-IMPLEMENT_TRANSLATOR_LISTENER (New_dynamic_engraver, break_span);
-void
-New_dynamic_engraver::listen_break_span (Stream_event *event)
-{
-  if (event->in_event_class ("break-dynamic-span-event"))
-    {
-      // Case 1: Already have a start dynamic event -> break applies to new
-      //         spanner (created later) -> set a flag
-      // Case 2: no new spanner, but spanner already active -> break it now
-      if (accepted_spanevents_drul_[START])
-        end_new_spanner_ = true;
-      else if (current_spanner_)
-        current_spanner_->set_property ("spanner-broken", SCM_BOOL_T);
-    }
-}
-
-SCM
-New_dynamic_engraver::get_property_setting (Stream_event *evt,
-                                            char const *evprop,
-                                            char const *ctxprop)
-{
-  SCM spanner_type = evt->get_property (evprop);
-  if (spanner_type == SCM_EOL)
-    spanner_type = get_property (ctxprop);
-  return spanner_type;
-}
-
-void
-New_dynamic_engraver::process_music ()
-{
-  if (current_spanner_
-      && (accepted_spanevents_drul_[STOP]
-          || script_event_
-          || accepted_spanevents_drul_[START]))
-    {
-      Stream_event *ender = accepted_spanevents_drul_[STOP];
-      if (!ender)
-        ender = script_event_;
-
-      if (!ender)
-        ender = accepted_spanevents_drul_[START];
-
-      finished_spanner_ = current_spanner_;
-      announce_end_grob (finished_spanner_, ender->self_scm ());
-      current_spanner_ = 0;
-      current_span_event_ = 0;
-    }
-
-  if (accepted_spanevents_drul_[START])
-    {
-      current_span_event_ = accepted_spanevents_drul_[START];
-
-      string start_type = get_spanner_type (current_span_event_);
-      SCM cresc_type = get_property_setting (current_span_event_, "span-type",
-                                             (start_type + "Spanner").c_str ());
-
-      if (cresc_type == ly_symbol2scm ("text"))
-        {
-          current_spanner_
-            = make_spanner ("DynamicTextSpanner",
-                            accepted_spanevents_drul_[START]->self_scm ());
-
-          SCM text = get_property_setting (current_span_event_, "span-text",
-                                           (start_type + "Text").c_str ());
-          if (Text_interface::is_markup (text))
-            current_spanner_->set_property ("text", text);
-          /*
-            If the line of a text spanner is hidden, end the alignment spanner
-            early: this allows dynamics to be spaced individually instead of
-            being linked together.
-          */
-          if (current_spanner_->get_property ("style") == ly_symbol2scm ("none"))
-            current_spanner_->set_property ("spanner-broken", SCM_BOOL_T);
-        }
-      else
-        {
-          if (cresc_type != ly_symbol2scm ("hairpin"))
-            {
-              string as_string = ly_scm_write_string (cresc_type);
-              current_span_event_
-              ->origin ()->warning (_f ("unknown crescendo style: %s\ndefaulting to hairpin.", as_string.c_str ()));
-            }
-          current_spanner_ = make_spanner ("Hairpin",
-                                           current_span_event_->self_scm ());
-        }
-      // if we have a break-dynamic-span event right after the start dynamic, break the new spanner immediately
-      if (end_new_spanner_)
-        {
-          current_spanner_->set_property ("spanner-broken", SCM_BOOL_T);
-          end_new_spanner_ = false;
-        }
-      if (finished_spanner_)
-        {
-          if (Hairpin::has_interface (finished_spanner_))
-            Pointer_group_interface::add_grob (finished_spanner_,
-                                               ly_symbol2scm ("adjacent-spanners"),
-                                               current_spanner_);
-          if (Hairpin::has_interface (current_spanner_))
-            Pointer_group_interface::add_grob (current_spanner_,
-                                               ly_symbol2scm ("adjacent-spanners"),
-                                               finished_spanner_);
-        }
-    }
-
-  if (script_event_)
-    {
-      script_ = make_item ("DynamicText", script_event_->self_scm ());
-      script_->set_property ("text",
-                             script_event_->get_property ("text"));
-
-      if (finished_spanner_)
-        finished_spanner_->set_bound (RIGHT, script_);
-      if (current_spanner_)
-        current_spanner_->set_bound (LEFT, script_);
-    }
-}
-
-void
-New_dynamic_engraver::stop_translation_timestep ()
-{
-  if (finished_spanner_ && !finished_spanner_->get_bound (RIGHT))
-    finished_spanner_
-    ->set_bound (RIGHT,
-                 unsmob_grob (get_property ("currentMusicalColumn")));
-
-  if (current_spanner_ && !current_spanner_->get_bound (LEFT))
-    current_spanner_
-    ->set_bound (LEFT,
-                 unsmob_grob (get_property ("currentMusicalColumn")));
-  script_ = 0;
-  script_event_ = 0;
-  accepted_spanevents_drul_.set (0, 0);
-  finished_spanner_ = 0;
-  end_new_spanner_ = false;
-}
-
-void
-New_dynamic_engraver::finalize ()
-{
-  if (current_spanner_
-      && !current_spanner_->is_live ())
-    current_spanner_ = 0;
-  if (current_spanner_)
-    {
-      current_span_event_
-      ->origin ()->warning (_f ("unterminated %s",
-                                get_spanner_type (current_span_event_)
-                                .c_str ()));
-      current_spanner_->suicide ();
-      current_spanner_ = 0;
-    }
-}
-
-string
-New_dynamic_engraver::get_spanner_type (Stream_event *ev)
-{
-  string type;
-  SCM start_sym = scm_car (ev->get_property ("class"));
-
-  if (start_sym == ly_symbol2scm ("decrescendo-event"))
-    type = "decrescendo";
-  else if (start_sym == ly_symbol2scm ("crescendo-event"))
-    type = "crescendo";
-  else
-    programming_error ("unknown dynamic spanner type");
-
-  return type;
-}
-
-void
-New_dynamic_engraver::acknowledge_note_column (Grob_info info)
-{
-  if (script_ && !script_->get_parent (X_AXIS))
-    {
-      extract_grob_set (info.grob (), "note-heads", heads);
-      Grob *stem = unsmob_grob (info.grob ()->get_object ("stem"));
-      /*
-        Spacing constraints may require dynamics to be aligned on rests,
-        so check for a rest if this note column has no note heads.
-      */
-      Grob *x_parent = (heads.size ()
-                        ? heads[0]
-                        : unsmob_grob (info.grob ()->get_object ("rest")));
-      if (x_parent)
-        {
-          script_->set_parent (x_parent, X_AXIS);
-          Self_alignment_interface::set_center_parent (script_, X_AXIS);
-        }
-      if (stem)
-        Pointer_group_interface::add_grob (script_, ly_symbol2scm ("potential-X-colliding-grobs"), stem);
-    }
-
-  if (current_spanner_ && !current_spanner_->get_bound (LEFT))
-    current_spanner_->set_bound (LEFT, info.grob ());
-  if (finished_spanner_ && !finished_spanner_->get_bound (RIGHT))
-    finished_spanner_->set_bound (RIGHT, info.grob ());
-}
-
-ADD_ACKNOWLEDGER (New_dynamic_engraver, note_column);
-ADD_TRANSLATOR (New_dynamic_engraver,
-                /* doc */
-                "Create hairpins, dynamic texts and dynamic text spanners.",
-
-                /* create */
-                "DynamicTextSpanner "
-                "DynamicText "
-                "Hairpin ",
-
-                /* read */
-                "crescendoSpanner "
-                "crescendoText "
-                "currentMusicalColumn "
-                "decrescendoSpanner "
-                "decrescendoText ",
-
-                /* write */
-                ""
-               );
index b98b4c68f8079ce1178da7c2cc2883afc978eacf..42bd9b484c005270e9b290b8fef74df1cd355bd9 100644 (file)
@@ -40,31 +40,6 @@ using namespace std;
   annoying layer between (rest)collision & (note-head + stem)
 */
 
-Interval
-Note_column::accidental_width (Grob *me)
-{
-  extract_grob_set (me, "note-heads", nhs);
-  vector<Grob *> accs;
-  for (vsize i = 0; i < nhs.size (); i++)
-    if (Grob *acc = unsmob_grob (nhs[i]->get_object ("accidental-grob")))
-      accs.push_back (acc);
-
-  Grob *common = common_refpoint_of_array (accs, me, X_AXIS);
-  common = common_refpoint_of_array (nhs, common, X_AXIS);
-
-  Interval nhs_ex = Axis_group_interface::relative_group_extent (nhs, common, X_AXIS);
-  Interval accs_ex = Axis_group_interface::relative_group_extent (accs, common, X_AXIS);
-
-  if (nhs_ex.is_empty ())
-    return accs_ex;
-
-  // want an empty interval here
-  if (accs_ex.is_empty ())
-    return Interval ();
-
-  return Interval (accs_ex[LEFT], nhs_ex[LEFT]);
-}
-
 bool
 Note_column::has_rests (Grob *me)
 {
index 78f2786ef89b34f41cefcb63cc8d8e4c352a9bbf..cdf3d595ca554ec9ee0c1afcf5deaf9fa7aa493f 100644 (file)
@@ -27,7 +27,6 @@
 #include "lookup.hh"
 #include "lookup.hh"
 #include "moment.hh"
-#include "note-head.hh"
 #include "output-def.hh"
 #include "paper-score.hh"
 #include "pointer-group-interface.hh"
@@ -219,7 +218,6 @@ Paper_column::break_align_width (Grob *me, SCM align_sym)
   return align->extent (p, X_AXIS);
 }
 
-
 /*
   Print a vertical line and  the rank number, to aid debugging.
 */
index 11d8d17125991e7a2eb3510ec3592b49f2335cc3..a99dffcf3889056a2e4e01d128fd67639acc1bf4 100644 (file)
@@ -523,6 +523,10 @@ scm_function_call:
 embedded_lilypond:
        /* empty */
        {
+               // FIXME: @$ does not contain a useful source location
+               // for empty rules, and the only token in the whole
+               // production, EMBEDDED_LILY, is synthetic and also
+               // contains no source location.
                $$ = MAKE_SYNTAX ("void-music", @$);
        }
        | identifier_init
@@ -622,6 +626,7 @@ context_def_spec_block:
        CONTEXT '{' context_def_spec_body '}'
                {
                $$ = $3;
+               unsmob_context_def ($$)->origin ()->set_spot (@$);
        }
        ;
 
@@ -659,11 +664,9 @@ context_mod_embedded:
 context_def_spec_body:
        /**/ {
                $$ = Context_def::make_scm ();
-               unsmob_context_def ($$)->origin ()->set_spot (@$);
        }
        | CONTEXT_DEF_IDENTIFIER {
                $$ = $1;
-               unsmob_context_def ($$)->origin ()->set_spot (@$);
        }
        | context_def_spec_body context_mod {
                if (!SCM_UNBNDP ($2))
@@ -690,6 +693,7 @@ context_def_spec_body:
 book_block:
        BOOK '{' book_body '}'  {
                $$ = $3;
+               unsmob_book ($$)->origin ()->set_spot (@$);
                pop_paper (parser);
                parser->lexer_->set_identifier (ly_symbol2scm ("$current-book"), SCM_BOOL_F);
        }
@@ -702,7 +706,6 @@ book_body:
        {
                Book *book = new Book;
                init_papers (parser);
-               book->origin ()->set_spot (@$);
                book->paper_ = dynamic_cast<Output_def*> (unsmob_output_def (parser->lexer_->lookup_identifier ("$defaultpaper"))->clone ());
                book->paper_->unprotect ();
                push_paper (parser, book->paper_);
@@ -711,7 +714,6 @@ book_body:
                parser->lexer_->set_identifier (ly_symbol2scm ("$current-book"), $$);
        }
        | BOOK_IDENTIFIER {
-               unsmob_book ($1)->origin ()->set_spot (@$);
                parser->lexer_->set_identifier (ly_symbol2scm ("$current-book"), $1);
        }
        | book_body paper_block {
@@ -771,6 +773,7 @@ book_body:
 bookpart_block:
        BOOKPART '{' bookpart_body '}' {
                $$ = $3;
+               unsmob_book ($$)->origin ()->set_spot (@$);
                parser->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), SCM_BOOL_F);
        }
        ;
@@ -778,12 +781,10 @@ bookpart_block:
 bookpart_body:
        {
                Book *book = new Book;
-               book->origin ()->set_spot (@$);
                 $$ = book->unprotect ();
                parser->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), $$);
        }
        | BOOK_IDENTIFIER {
-               unsmob_book ($1)->origin ()->set_spot (@$);
                parser->lexer_->set_identifier (ly_symbol2scm ("$current-bookpart"), $1);
        }
        | bookpart_body paper_block {
@@ -946,16 +947,7 @@ output_def_head_with_mode_switch:
 
 music_or_context_def:
        music_arg
-       {
-               parser->lexer_->pop_state ();
-       }
-       | CONTEXT
-       {
-               parser->lexer_->pop_state ();
-       } '{' context_def_spec_body '}'
-       {
-               $$ = $4;
-       }
+       | context_def_spec_block
        ;
 
 output_def_body:
@@ -982,6 +974,7 @@ output_def_body:
                parser->lexer_->push_note_state (nn);
        } music_or_context_def
        {
+               parser->lexer_->pop_state ();
                if (unsmob_context_def ($3))
                        assign_context_def (unsmob_output_def ($1), $3);
                else {
@@ -1131,7 +1124,11 @@ simple_music:
        ;
 
 context_modification:
-        WITH { parser->lexer_->push_initial_state (); } '{' context_mod_list '}'
+        WITH
+       {
+               SCM nn = parser->lexer_->lookup_identifier ("pitchnames");
+               parser->lexer_->push_note_state (nn);
+       } '{' context_mod_list '}'
         {
                 parser->lexer_->pop_state ();
                 $$ = $4;
@@ -1144,8 +1141,12 @@ context_modification:
         {
                 $$ = $1;
         }
-       | WITH embedded_scm_closed
+       | WITH context_modification_arg
        {
+               if (unsmob_music ($2)) {
+                       SCM proc = parser->lexer_->lookup_identifier ("context-mod-music-handler");
+                       $2 = scm_call_2 (proc, parser->self_scm (), $2);
+               }
                if (unsmob_context_mod ($2))
                        $$ = $2;
                else {
@@ -1155,6 +1156,11 @@ context_modification:
        }
         ;
 
+context_modification_arg:
+       embedded_scm_closed
+       | MUSIC_IDENTIFIER
+       ;
+
 optional_context_mod:
         /**/ {
             $$ = SCM_EOL;
index e3830d3d2f7d5484f8e3291e58385808aa64f491..54b5cb162b5c25739ddd15a7061062e9e75c38f6 100644 (file)
@@ -360,8 +360,8 @@ Side_position_interface::aligned_side (Grob *me, Axis a, bool pure, int start, i
     }
 
   /*
-    Maintain a minimum distance to the staff. This is similar to side
-    position with padding, but it will put adjoining objects on a row if
+    Ensure 'staff-padding' from my refpoint to the staff.  This is similar to
+    side-position with padding, but it will put adjoining objects on a row if
     stuff sticks out of the staff a little.
   */
   Grob *staff = Staff_symbol_referencer::get_staff_symbol (me);
@@ -404,7 +404,7 @@ Side_position_interface::aligned_side (Grob *me, Axis a, bool pure, int start, i
           Real staff_position = staff->maybe_pure_coordinate (common, Y_AXIS, pure, start, end);
           Interval staff_extent = staff->maybe_pure_extent (staff, a, pure, start, end);
           Real diff = (dir * staff_extent[dir] + staff_padding
-                       - dir * (total_off + iv[-dir])
+                       - dir * total_off
                        + dir * (staff_position - parent_position));
           total_off += dir * max (diff, 0.0);
         }
index 49f42ea4a6d3e4caa98f3c8b75a795825bbf5f7d..e8bedd2e70bab0c558525aa0f26a544b0c6b1d58 100644 (file)
@@ -129,7 +129,7 @@ Staff_spacing::get_spacing (Grob *me, Grob *right_col, Real situational_space)
       /*
         TODO:
 
-        Should  insert a adjustable space here? For excercises, you might want to
+        Should insert an adjustable space here? For exercises, you might want to
         use a staff without a clef in the beginning.
       */
 
index 07eb9196c78101a2c58ca5d4b1dabbc77cef9ad8..637a73ef32f3d36348823d34f014af687d5e6306 100644 (file)
@@ -103,7 +103,10 @@ IMPLEMENT_TRANSLATOR_LISTENER (Tie_engraver, tie);
 void
 Tie_engraver::listen_tie (Stream_event *ev)
 {
-  ASSIGN_EVENT_ONCE (event_, ev);
+  if (!to_boolean (get_property ("skipTypesetting")))
+    {
+      ASSIGN_EVENT_ONCE (event_, ev);
+    }
 }
 
 void Tie_engraver::report_unterminated_tie (Head_event_tuple const &tie_start)
@@ -373,6 +376,7 @@ ADD_TRANSLATOR (Tie_engraver,
                 "TieColumn ",
 
                 /* read */
+                "skipTypesetting "
                 "tieWaitForNote ",
 
                 /* write */
index d211dcae38f55b39c91cb9095791816eb07396cc..1eccaabc06ffb663718f2b65fbcf5bfc4f2ce1c9 100644 (file)
@@ -92,8 +92,10 @@ Tuplet_bracket::parallel_beam (Grob *me_grob, vector<Grob *> const &cols,
 {
   Spanner *me = dynamic_cast<Spanner *> (me_grob);
 
-  if (me->get_bound (LEFT)->break_status_dir ()
-      || me->get_bound (RIGHT)->break_status_dir ())
+  Item *left = me->get_bound (LEFT);
+  Item *right = me->get_bound (RIGHT);
+  if (!left || left->break_status_dir ()
+      || !right || right->break_status_dir ())
     return 0;
 
   Drul_array<Grob *> stems (Note_column::get_stem (cols[0]),
index 4348044fbe002c5cc15f6a69802f4839766e536d..1fc30d898a178ef27e464b57fac4b925d1e4836c 100644 (file)
@@ -107,7 +107,7 @@ Tuplet_engraver::listen_tuplet_span (Stream_event *ev)
           tuplets_.pop_back ();
         }
       else if (!to_boolean (get_property ("skipTypesetting")))
-        ev->origin ()->warning (_ ("No tuplet to end"));
+        ev->origin ()->debug_output (_ ("No tuplet to end"));
     }
   else
     ev->origin ()->programming_error ("direction tuplet-span-event_ invalid.");
@@ -155,7 +155,10 @@ Tuplet_engraver::process_music ()
                                      stopped_tuplets_[i].bracket_->get_bound (LEFT));
                 }
               else
-                programming_error ("stopped tuplet bracket has neither left nor right bound");
+                {
+                  warning ("omitting tuplet bracket with neither left nor right bound");
+                  continue;
+                }
             }
           // todo: scrap last_tuplets_, use stopped_tuplets_ only.
           // clear stopped_tuplets_ at start_translation_timestep
index 2372b511f20d306d9152a3daa229c6e4e8a0ba67..9b1485777c962ecbfa0f89a731e036211afb3218 100644 (file)
@@ -166,7 +166,7 @@ Vaticana_ligature_engraver::need_extra_horizontal_space (int prev_prefix_set, in
 {
   if (prev_prefix_set & VIRGA)
     /*
-     * After a virga, make a an additional small space such that the
+     * After a virga, make an additional small space such that the
      * appendix on the right side of the head does not touch the
      * following head.
      */
@@ -181,7 +181,7 @@ Vaticana_ligature_engraver::need_extra_horizontal_space (int prev_prefix_set, in
 
   if ((context_info & FLEXA_LEFT) && ! (context_info & PES_UPPER))
     /*
-     * Before a flexa (but not within a torculus), make a an
+     * Before a flexa (but not within a torculus), make an
      * additional small space such that the appendix on the left side
      * of the flexa does not touch the this head.
      */
index d5c8ffc3af5c067be40695bc61bb44274596507e..9c8547dd7d024f8e6b0f6b07d9683e7ede62dd94 100644 (file)
@@ -16,7 +16,7 @@
 %%%% You should have received a copy of the GNU General Public License
 %%%% along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
-\version "2.17.11"
+\version "2.17.29"
 
 \context {
   \name "Global"
@@ -240,6 +240,7 @@ multiple voices on the same staff."
   \consists "Beam_engraver"
   \consists "Grace_beam_engraver"
   \consists "Auto_beam_engraver"
+  \consists "Grace_auto_beam_engraver"
 
   %% must come before Script_column_engraver.
   \consists "New_fingering_engraver"
@@ -251,9 +252,8 @@ multiple voices on the same staff."
   \consists "Part_combine_engraver"
 
   \consists "Text_engraver"
-  \consists "New_dynamic_engraver"
+  \consists "Dynamic_engraver"
   \consists "Dynamic_align_engraver"
-%  \consists "Dynamic_engraver"
   \consists "Fingering_engraver"
   \consists "Bend_engraver"
 
@@ -397,7 +397,7 @@ a collection of staves, with a bracket in front and spanning bar lines."
   \consists "Bar_engraver"
   \consists "Piano_pedal_engraver"
   \consists "Script_engraver"
-  \consists "New_dynamic_engraver"
+  \consists "Dynamic_engraver"
   \consists "Dynamic_align_engraver"
   \consists "Text_engraver"
   \consists "Text_spanner_engraver"
index 7dbb1042aaea642228b2ec8de27d381078331b5e..acaa2c9899939af19c94e387ff6a9446e773469d 100644 (file)
@@ -55,15 +55,15 @@ $(if (ly:get-option 'include-settings)
                          toplevel-book-handler)))
    (cond ((pair? toplevel-bookparts)
           (let ((book (ly:make-book $defaultpaper $defaultheader)))
-            (map (lambda (part)
-                   (ly:book-add-bookpart! book part))
-                 (reverse! toplevel-bookparts))
+            (for-each (lambda (part)
+                        (ly:book-add-bookpart! book part))
+                      (reverse! toplevel-bookparts))
             (set! toplevel-bookparts (list))
             ;; if scores have been defined after the last explicit \bookpart:
             (if (pair? toplevel-scores)
-                (map (lambda (score)
-                       (ly:book-add-score! book score))
-                     (reverse! toplevel-scores)))
+                (for-each (lambda (score)
+                            (ly:book-add-score! book score))
+                          (reverse! toplevel-scores)))
             (set! toplevel-scores (list))
             (book-handler parser book)))
          ((or (pair? toplevel-scores) output-empty-score-list)
index 3f88b07252704184fd0cdbb991b06f516902eee1..f47cd1d21422fb57f53c671544cc7bc6f9acbcf5 100644 (file)
@@ -728,7 +728,7 @@ ottava =
 overrideTimeSignatureSettings =
 #(define-music-function
    (parser location time-signature base-moment beat-structure beam-exceptions)
-   (pair? pair? cheap-list? cheap-list?)
+   (fraction? fraction? list? list?)
 
    (_i "Override @code{timeSignatureSettings}
 for time signatures of @var{time-signature} to have settings
index 8e3ef0e7ef10ffa3ac1a0538b92bb69bf2fd431a..816bb2f0bf67f55de90b089c2a4e2b9c1972b979 100644 (file)
@@ -16,7 +16,7 @@
 %%%% You should have received a copy of the GNU General Public License
 %%%% along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
-\version "2.17.11"
+\version "2.17.14"
 
 %%
 %% setup for Request->Element conversion.
index d374e5ca7339d97b03dace3d413b210eb5ee2174..e36acd7356921449c5def23dd77eb31e2e3d6631 100644 (file)
@@ -2,7 +2,7 @@
 .SUFFIXES: .html .info .texi .texinfo
 
 # Explicitly list the dependencies on generated content
-$(outdir)/web.texi: $(outdir)/weblinks.itexi
+$(outdir)/web.texi: $(outdir)/we-wrote.itexi $(outdir)/others-did.itexi $(outdir)/weblinks.itexi $(outdir)/version.itexi
 
 $(top-build-dir)/Documentation/$(outdir)/%/index.$(ISOLANG).html: $(outdir)/%/index.html $(TRANSLATION_LILY_IMAGES)
        mkdir -p $(dir $@)
@@ -20,19 +20,13 @@ $(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).pdf: $(outdir)/%.pdf
        mkdir -p $(dir $@)
        cp -f $< $@
 
-$(outdir)/version.%: $(top-src-dir)/VERSION
-       $(PYTHON) $(top-src-dir)/scripts/build/create-version-itexi.py > $@
-
-$(outdir)/weblinks.%: $(top-src-dir)/VERSION
-       $(PYTHON) $(top-src-dir)/scripts/build/create-weblinks-itexi.py > $@
-
 $(outdir)/%.png: $(top-build-dir)/Documentation/$(outdir)/%.png
        ln -f $< $@
 
 $(MASTER_TEXI_FILES): $(ITELY_FILES) $(ITEXI_FILES) $(outdir)/pictures
 
 $(outdir)/pictures:
-       $(MAKE) -C $(top-build-dir)/Documentation/pictures WWW-1
+       $(MAKE) -C $(top-build-dir)/Documentation/pictures out=www WWW-1
        ln -sf $(top-build-dir)/Documentation/pictures/$(outdir) $@
 
 $(TRANSLATION_LILY_IMAGES): $(MASTER_TEXI_FILES)
index cd5001174ae660d762b3b0ee8e05869c75f73c36..875617a5031db393e35db55c588ee500903a8e61 100644 (file)
@@ -2,10 +2,10 @@ default:
 
 ifeq ($(out),www)
 ifneq ($(NO_PDF_FILES),)
-local-WWW-1: $(OUT_TEXINFO_MANUALS) $(MASTER_TEXI_FILES) $(XREF_MAPS_FILES)
+local-WWW-1: $(OUT_TEXINFO_MANUALS) $(MASTER_TEXI_FILES) $(XREF_MAPS_FILES) $(TRANSLATION_LILY_IMAGES)
 endif
 ifeq ($(NO_PDF_FILES),)
-local-WWW-1: $(OUT_TEXINFO_MANUALS) $(MASTER_TEXI_FILES) $(PDF_FILES) $(XREF_MAPS_FILES)
+local-WWW-1: $(OUT_TEXINFO_MANUALS) $(MASTER_TEXI_FILES) $(PDF_FILES) $(XREF_MAPS_FILES) $(TRANSLATION_LILY_IMAGES)
 endif
 
 local-WWW-2: $(DEEP_HTML_FILES) $(BIG_PAGE_HTML_FILES) $(DOCUMENTATION_LOCALE_TARGET)
index e279c6d88d13a562c3d20b58d42cfe91a9dc43ad..48cfcdbb123c9fd43313373e492ca1553cb867ed 100644 (file)
@@ -26,12 +26,14 @@ PDF_FILES := $(TELY_FILES:%.tely=$(top-build-dir)/Documentation/$(outdir)/%.$(IS
 ITELY_FILES := $(call src-wildcard,*.itely)
 ITEXI_FILES := $(call src-wildcard,*.itexi)
 
-DOCUMENTATION_INCLUDES = \
+DOCUMENTATION_INCLUDES += \
+  -I $(top-build-dir)/Documentation/$(outdir) \
+  -I $(top-build-dir)/Documentation/snippets/out \
   -I $(top-src-dir)/Documentation/$(ISOLANG)/included \
+  -I $(top-src-dir)/Documentation/included \
   -I $(top-src-dir)/Documentation \
-  -I $(top-build-dir)/Documentation/$(outdir)
+  -I $(top-src-dir)/input/regression
 
-LILYPOND_BOOK_INCLUDES += $(DOCUMENTATION_INCLUDES)
 MAKEINFO_FLAGS += --enable-encoding $(DOCUMENTATION_INCLUDES)
 MAKEINFO = LANG= $(MAKEINFO_PROGRAM) $(MAKEINFO_FLAGS)
 
index 985197a4db640f6bc91eeb9ac44803bdcdb294dc..e67a570c92706d79e0913034b599577ef3e656ce 100644 (file)
@@ -27,13 +27,7 @@ MUSICXML2LY = $(script-dir)/musicxml2ly.py
 CONVERT_LY = $(script-dir)/convert-ly.py
 LILYPOND_BOOK = $(script-dir)/lilypond-book.py
 
-LILYPOND_BOOK_INCLUDES = -I $(outdir) -I $(src-dir) -I $(input-dir) \
- -I $(top-src-dir)/Documentation -I $(top-build-dir)/Documentation/snippets/out \
- -I $(input-dir)/regression/ -I $(top-src-dir)/Documentation/included/ \
- -I $(top-build-dir)/mf/$(outconfbase)/ \
- -I $(top-build-dir)/mf/out/ \
- -I $(top-src-dir)/Documentation/pictures \
- -I $(top-build-dir)/Documentation/pictures/$(outdir)
+LILYPOND_BOOK_INCLUDES = -I $(src-dir) $(DOCUMENTATION_INCLUDES)
 
 ## override from cmd line to speed up. 
 ANTI_ALIAS_FACTOR=2
index f81b56dabef7f8de1bd4cd73b9bec5c7670b21bd..9da619c823df9cda42b3874466293b928b3ab900 100644 (file)
@@ -7,7 +7,8 @@ STEPMAKE_TEMPLATES = metafont \
                     install-out
 LOCALSTEPMAKE_TEMPLATES = lilypond
 
-# We don't use $(MF_FILES), because there's more .mf cruft here
+# These are the main .mf files.  We don't use $(MF_FILES) here,
+# because there are more .mf files, input'ed into the main files.
 FETA_MF_FILES = $(call src-wildcard,feta[0-9]*.mf) \
                $(call src-wildcard,feta-braces-[a-z].mf) \
                $(call src-wildcard,feta-alphabet*[0-9].mf) \
@@ -35,15 +36,10 @@ OTF_TABLES = $(STAFF_SIZES:%=$(outdir)/feta%.otf-table) \
 SVG_FILES = $(OTF_FILES:%.otf=%.svg)
 WOFF_FILES = $(OTF_FILES:%.otf=%.woff)
 
-FC_FIND = $(shell $(FCLIST) --verbose 'Century Schoolbook L:style=$(1)' \
-                 | grep 'file:' \
-                 | sed 's/.*"\([^"]*\)".*/\1/g')
-
 NCSB_OTFS = $(addprefix $(outdir)/,CenturySchL-Ital.otf \
                                   CenturySchL-BoldItal.otf \
                                   CenturySchL-Roma.otf \
                                   CenturySchL-Bold.otf)
-NCSB_INSTALL_DIR = $(local_lilypond_datadir)/fonts/otf
 
 LOG_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%.log)
 LISP_FILES = $(FETA_MF_FILES:%.mf=$(outdir)/%.lisp)
@@ -99,9 +95,10 @@ $(PE_SCRIPTS): $(buildscript-dir)/gen-emmentaler-scripts
        $< --dir=$(outdir)
 
 
-# Make tfm files first, log files last,
-# so that normally log files aren't made twice
-ALL_GEN_FILES = $(LOG_FILES) \
+# Generate emmentaler-*.pe scripts first, and *.otf, *.svg, *.woff files last,
+# so that normally these files aren't regenerated on a subsequent call to make.
+ALL_GEN_FILES = $(PE_SCRIPTS) \
+               $(LOG_FILES) \
                $(ENC_FILES) \
                $(LISP_FILES) \
                $(OTF_TABLES) \
index dbeb87530d11880a501cf03f46059bb4b00439f7..cf1bfae111f97d683063ec938276762e038ed450 100644 (file)
@@ -166,7 +166,7 @@ def draw_neomensural_longa (expr wid, holeheight, direction) =
 enddef;
 
 
-def draw_neomensural_black_head (expr width, height) =
+def draw_neomensural_black_head (expr width, height, concaveness) =
        save head_width, head_height, stem_width;
        save ne, nw, ne_dist, nw_dist;
        pair ne, nw, ne_dist, nw_dist;
@@ -197,25 +197,25 @@ def draw_neomensural_black_head (expr width, height) =
        ne_dist := (nw rotated -90) * blot_diameter / 2;
 
        fill lft z1
-            .. (z1 + nw_dist)
-            -- (z2 + nw_dist)
+            .. (z1 + nw_dist){ ne rotated -concaveness }
+            .. { ne rotated concaveness }(z2 + nw_dist)
             .. top z2
-            .. (z2 + ne_dist)
-            -- (z3 + ne_dist)
+            .. (z2 + ne_dist){ nw rotated (180 - concaveness) }
+            .. { nw rotated (180 + concaveness) }(z3 + ne_dist)
             .. rt z3
-            .. (z3 - nw_dist)
-            -- (z4 - nw_dist)
+            .. (z3 - nw_dist){ ne rotated (180 - concaveness) }
+            .. { ne rotated (180 + concaveness) }(z4 - nw_dist)
             .. bot z4
-            .. (z4 - ne_dist)
-            -- (z1 - ne_dist)
+            .. (z4 - ne_dist){ nw  rotated -concaveness }
+            .. { nw  rotated concaveness }(z1 - ne_dist)
             .. cycle;
 
        labels (1, 2, 3, 4);
 enddef;
 
 
-def draw_neomensural_open_head (expr width, height)=
-       draw_neomensural_black_head (width, height);
+def draw_neomensural_open_head (expr width, height, concaveness)=
+       draw_neomensural_black_head (width, height, concaveness);
 
        save headNW, headSW, stem_width;
 
@@ -317,15 +317,15 @@ save nm_height, nm_width;
 nm_height := noteheight#;
 nm_width := staff_space#;
 fet_beginchar ("Neo-mensural semibrevis head", "s0neomensural");
-       draw_neomensural_open_head (nm_width, nm_height);
+       draw_neomensural_open_head (nm_width, nm_height, 0);
 fet_endchar;
 
 fet_beginchar ("Neo-mensural minima head", "s1neomensural");
-       draw_neomensural_open_head (nm_width, nm_height);
+       draw_neomensural_open_head (nm_width, nm_height, 0);
 fet_endchar;
 
 fet_beginchar ("Neo-mensural semiminima head", "s2neomensural");
-       draw_neomensural_black_head (nm_width, nm_height);
+       draw_neomensural_black_head (nm_width, nm_height, 0);
 fet_endchar;
 
 %%%%%%%%
@@ -342,13 +342,13 @@ fet_endchar;
 %
 
 fet_beginchar ("Harmonic notehead (Neo-mensural open)", "s0harmonic");
-       draw_neomensural_open_head (1.3 staff_space#, 1.3 noteheight#);
+       draw_neomensural_open_head (1.3 staff_space#, 1.3 noteheight#, 5);
        charwx := head_width#;
        charwy := 0;
 fet_endchar;
 
 fet_beginchar ("Harmonic notehead (Neo-mensural black)", "s2harmonic");
-       draw_neomensural_black_head (1.3 staff_space#, 1.3 noteheight#);
+       draw_neomensural_black_head (1.3 staff_space#, 1.3 noteheight#, 5);
        charwx := head_width#;
        charwy := 0;
 fet_endchar;
@@ -737,15 +737,15 @@ petrucci_height := 1.4 noteheight#;
 petrucci_width := .72 petrucci_height;
 
 fet_beginchar ("Petrucci semibrevis head", "s0petrucci");
-       draw_neomensural_open_head (petrucci_width, petrucci_height);
+       draw_neomensural_open_head (petrucci_width, petrucci_height, 0);
 fet_endchar;
 
 fet_beginchar ("Petrucci minima head", "s1petrucci");
-       draw_neomensural_open_head (petrucci_width, petrucci_height);
+       draw_neomensural_open_head (petrucci_width, petrucci_height, 0);
 fet_endchar;
 
 fet_beginchar ("Petrucci semiminima head", "s2petrucci");
-       draw_neomensural_black_head (petrucci_width, petrucci_height);
+       draw_neomensural_black_head (petrucci_width, petrucci_height, 0);
 fet_endchar;
 
 
@@ -754,15 +754,15 @@ fet_endchar;
 %
 
 fet_beginchar ("Petrucci colored semibrevis head", "s0blackpetrucci");
-       draw_neomensural_black_head (petrucci_width, petrucci_height);
+       draw_neomensural_black_head (petrucci_width, petrucci_height, 0);
 fet_endchar;
 
 fet_beginchar ("Petrucci colored minima head", "s1blackpetrucci");
-       draw_neomensural_black_head (petrucci_width, petrucci_height);
+       draw_neomensural_black_head (petrucci_width, petrucci_height, 0);
 fet_endchar;
 
 fet_beginchar ("Petrucci colored semiminima head", "s2blackpetrucci");
-       draw_neomensural_black_head (petrucci_width, petrucci_height);
+       draw_neomensural_black_head (petrucci_width, petrucci_height, 0);
 fet_endchar;
 
 
index 5ac534a79387aeff51de06c939de7e8361a0b810..403721d55f161b266b38f8defa04d0236416cd8b 100644 (file)
@@ -6,10 +6,10 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.17.26\n"
+"Project-Id-Version: lilypond 2.17.28\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu."
 "lilypond.bugs\n"
-"POT-Creation-Date: 2013-09-08 15:34+0100\n"
+"POT-Creation-Date: 2013-10-06 16:14+0100\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -775,10 +775,16 @@ msgstr ""
 msgid "beamExceptions controls whole-measure beaming."
 msgstr ""
 
-#: convertrules.py:3584
+#: convertrules.py:3606
 msgid "Flag.transparent and Flag.color inherit from Stem"
 msgstr ""
 
+#: convertrules.py:3672
+msgid ""
+"Staff-padding now controls the distance to the baseline, not the nearest "
+"point."
+msgstr ""
+
 #: fontextract.py:25
 #, python-format
 msgid "Scanning %s"
@@ -1009,34 +1015,34 @@ msgstr ""
 msgid "show warranty and copyright"
 msgstr ""
 
-#: convert-ly.py:189
+#: convert-ly.py:190
 msgid "Applying conversion: "
 msgstr ""
 
-#: convert-ly.py:204
+#: convert-ly.py:209
 msgid "Error while converting"
 msgstr ""
 
-#: convert-ly.py:206
+#: convert-ly.py:211
 msgid "Stopping at last successful rule"
 msgstr ""
 
-#: convert-ly.py:234
+#: convert-ly.py:239
 #, python-format
 msgid "Processing `%s'... "
 msgstr ""
 
-#: convert-ly.py:344
+#: convert-ly.py:354
 #, python-format
 msgid "%s: Unable to open file"
 msgstr ""
 
-#: convert-ly.py:350
+#: convert-ly.py:360
 #, python-format
 msgid "%s: Unable to determine version.  Skipping"
 msgstr ""
 
-#: convert-ly.py:356
+#: convert-ly.py:366
 #, python-format
 msgid ""
 "%s: Invalid version string `%s' \n"
@@ -1044,7 +1050,7 @@ msgid ""
 "`2.8.12'"
 msgstr ""
 
-#: convert-ly.py:362
+#: convert-ly.py:372
 #, python-format
 msgid "There was %d error."
 msgid_plural "There were %d errors."
@@ -1720,19 +1726,19 @@ msgstr ""
 msgid "already have a beam"
 msgstr ""
 
-#: beam-engraver.cc:231
+#: beam-engraver.cc:235
 msgid "unterminated beam"
 msgstr ""
 
-#: beam-engraver.cc:270 chord-tremolo-engraver.cc:149
+#: beam-engraver.cc:282 chord-tremolo-engraver.cc:149
 msgid "stem must have Rhythmic structure"
 msgstr ""
 
-#: beam-engraver.cc:281
+#: beam-engraver.cc:293
 msgid "stem does not fit in beam"
 msgstr ""
 
-#: beam-engraver.cc:282
+#: beam-engraver.cc:294
 msgid "beam was started here"
 msgstr ""
 
@@ -1820,6 +1826,11 @@ msgstr ""
 msgid "cannot find or create: `%s'"
 msgstr ""
 
+#: context.cc:439
+#, c-format
+msgid "cannot find or create new Bottom = \"%s\""
+msgstr ""
+
 #: custos.cc:87
 #, c-format
 msgid "custos `%s' not found"
@@ -3002,11 +3013,11 @@ msgstr ""
 msgid "unterminated text spanner"
 msgstr ""
 
-#: tie-engraver.cc:116
+#: tie-engraver.cc:119
 msgid "unterminated tie"
 msgstr ""
 
-#: tie-engraver.cc:350
+#: tie-engraver.cc:353
 msgid "lonely tie"
 msgstr ""
 
@@ -3118,194 +3129,194 @@ msgstr ""
 msgid "Too much lookahead"
 msgstr ""
 
-#: parser.yy:458 parser.yy:756 parser.yy:823
+#: parser.yy:458 parser.yy:759 parser.yy:825
 msgid "bad expression type"
 msgstr ""
 
-#: parser.yy:652 parser.yy:1151
+#: parser.yy:657 parser.yy:1153
 msgid "not a context mod"
 msgstr ""
 
-#: parser.yy:858
+#: parser.yy:860
 msgid "score expected"
 msgstr ""
 
-#: parser.yy:874
+#: parser.yy:876
 msgid "\\paper cannot be used in \\score, use \\layout instead"
 msgstr ""
 
-#: parser.yy:898
+#: parser.yy:900
 msgid "need \\paper for paper block"
 msgstr ""
 
-#: parser.yy:1046 parser.yy:1068
+#: parser.yy:1040 parser.yy:1062
 msgid "unexpected post-event"
 msgstr ""
 
-#: parser.yy:1076
+#: parser.yy:1070
 msgid "Ignoring non-music expression"
 msgstr ""
 
-#: parser.yy:1087 parser.yy:2373
+#: parser.yy:1081 parser.yy:2380
 msgid "music expected"
 msgstr ""
 
-#: parser.yy:1355
+#: parser.yy:1362
 msgid "not a symbol"
 msgstr ""
 
-#: parser.yy:2044 parser.yy:2158 parser.yy:2171 parser.yy:2180
+#: parser.yy:2051 parser.yy:2165 parser.yy:2178 parser.yy:2187
 msgid "bad grob property path"
 msgstr ""
 
-#: parser.yy:2138
+#: parser.yy:2145
 msgid "only \\consists and \\remove take non-string argument."
 msgstr ""
 
-#: parser.yy:2199
+#: parser.yy:2206
 msgid "bad context property path"
 msgstr ""
 
-#: parser.yy:2300
+#: parser.yy:2307
 msgid "simple string expected"
 msgstr ""
 
-#: parser.yy:2318
+#: parser.yy:2325
 msgid "symbol expected"
 msgstr ""
 
-#: parser.yy:2482
+#: parser.yy:2489
 msgid "not a rhythmic event"
 msgstr ""
 
-#: parser.yy:2556
+#: parser.yy:2563
 msgid "post-event expected"
 msgstr ""
 
-#: parser.yy:2565 parser.yy:2570
+#: parser.yy:2572 parser.yy:2577
 msgid "have to be in Lyric mode for lyrics"
 msgstr ""
 
-#: parser.yy:2638
+#: parser.yy:2645
 msgid "expecting string as script definition"
 msgstr ""
 
-#: parser.yy:2733
+#: parser.yy:2740
 msgid "not an articulation"
 msgstr ""
 
-#: parser.yy:2805 parser.yy:2851
+#: parser.yy:2812 parser.yy:2858
 #, c-format
 msgid "not a duration: %d"
 msgstr ""
 
-#: parser.yy:2868
+#: parser.yy:2875
 msgid "bass number expected"
 msgstr ""
 
-#: parser.yy:2967
+#: parser.yy:2974
 msgid "have to be in Note mode for notes"
 msgstr ""
 
-#: parser.yy:3026
+#: parser.yy:3033
 msgid "have to be in Chord mode for chords"
 msgstr ""
 
-#: parser.yy:3041
+#: parser.yy:3048
 msgid "markup outside of text script or \\lyricmode"
 msgstr ""
 
-#: parser.yy:3046
+#: parser.yy:3053
 msgid "unrecognized string, not in text script or \\lyricmode"
 msgstr ""
 
-#: parser.yy:3254
+#: parser.yy:3261
 msgid "not a markup"
 msgstr ""
 
-#: lexer.ll:214
+#: lexer.ll:224
 msgid "stray UTF-8 BOM encountered"
 msgstr ""
 
-#: lexer.ll:217
+#: lexer.ll:227
 msgid "Skipping UTF-8 BOM"
 msgstr ""
 
-#: lexer.ll:269
+#: lexer.ll:279
 #, c-format
 msgid "Renaming input to: `%s'"
 msgstr ""
 
-#: lexer.ll:286
+#: lexer.ll:296
 msgid "quoted string expected after \\version"
 msgstr ""
 
-#: lexer.ll:290
+#: lexer.ll:300
 msgid "quoted string expected after \\sourcefilename"
 msgstr ""
 
-#: lexer.ll:294
+#: lexer.ll:304
 msgid "integer expected after \\sourcefileline"
 msgstr ""
 
-#: lexer.ll:321
+#: lexer.ll:331
 msgid "\\maininput not allowed outside init files"
 msgstr ""
 
-#: lexer.ll:345
+#: lexer.ll:355
 #, c-format
 msgid "wrong or undefined identifier: `%s'"
 msgstr ""
 
-#: lexer.ll:371
+#: lexer.ll:381
 msgid "string expected after \\include"
 msgstr ""
 
-#: lexer.ll:381
+#: lexer.ll:391
 msgid "end quote missing"
 msgstr ""
 
-#: lexer.ll:717
+#: lexer.ll:743
 msgid "EOF found inside a comment"
 msgstr ""
 
-#: lexer.ll:722
+#: lexer.ll:748
 msgid "EOF found inside string"
 msgstr ""
 
-#: lexer.ll:737
+#: lexer.ll:763
 msgid "Unfinished main input"
 msgstr ""
 
-#: lexer.ll:804
+#: lexer.ll:834
 #, c-format
 msgid "invalid character: `%s'"
 msgstr ""
 
-#: lexer.ll:931
+#: lexer.ll:963
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr ""
 
-#: lexer.ll:951
+#: lexer.ll:983
 #, c-format
 msgid "undefined character or shorthand: %s"
 msgstr ""
 
-#: lexer.ll:1247
+#: lexer.ll:1279
 msgid "non-UTF-8 input"
 msgstr ""
 
-#: lexer.ll:1291
+#: lexer.ll:1323
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
 msgstr ""
 
-#: lexer.ll:1292
+#: lexer.ll:1324
 msgid "consider updating the input with the convert-ly script"
 msgstr ""
 
-#: lexer.ll:1298
+#: lexer.ll:1330
 #, c-format
 msgid "program too old: %s (file requires: %s)"
 msgstr ""
@@ -3337,7 +3348,7 @@ msgstr ""
 msgid "Writing header field `~a' to `~a'..."
 msgstr ""
 
-#: backend-library.scm:190
+#: backend-library.scm:189
 #, scheme-format
 msgid "missing stencil expression `~S'"
 msgstr ""
@@ -3402,60 +3413,65 @@ msgstr ""
 msgid "no systems found in \\score markup, does it have a \\layout block?"
 msgstr ""
 
-#: define-markup-commands.scm:2832
+#: define-markup-commands.scm:2856
 #, scheme-format
 msgid "Cannot find glyph ~a"
 msgstr ""
 
-#: define-markup-commands.scm:3258
+#: define-markup-commands.scm:3282
 #, scheme-format
 msgid "no brace found for point size ~S "
 msgstr ""
 
-#: define-markup-commands.scm:3259
+#: define-markup-commands.scm:3283
 #, scheme-format
 msgid "defaulting to ~S pt"
 msgstr ""
 
-#: define-markup-commands.scm:3503
+#: define-markup-commands.scm:3527
 #, scheme-format
 msgid "not a valid duration string: ~a"
 msgstr ""
 
-#: define-markup-commands.scm:3714
+#: define-markup-commands.scm:3738
 #, scheme-format
 msgid "not a valid duration string: ~a - ignoring"
 msgstr ""
 
-#: define-music-types.scm:783
+#: define-music-types.scm:792
 #, scheme-format
 msgid "symbol expected: ~S"
 msgstr ""
 
-#: define-music-types.scm:786
+#: define-music-types.scm:795
 #, scheme-format
 msgid "cannot find music object: ~S"
 msgstr ""
 
-#: define-music-types.scm:805
+#: define-music-types.scm:815
+#, scheme-format
+msgid "bad make-music argument: ~S"
+msgstr ""
+
+#: define-music-types.scm:827
 #, scheme-format
 msgid "unknown repeat type `~S'"
 msgstr ""
 
-#: define-music-types.scm:806
+#: define-music-types.scm:828
 msgid "See define-music-types.scm for supported repeats"
 msgstr ""
 
-#: define-note-names.scm:971
+#: define-note-names.scm:972
 msgid "Select note names language."
 msgstr ""
 
-#: define-note-names.scm:977
+#: define-note-names.scm:978
 #, scheme-format
 msgid "Using `~a' note names..."
 msgstr ""
 
-#: define-note-names.scm:980
+#: define-note-names.scm:981
 #, scheme-format
 msgid "Could not find language `~a'.  Ignoring."
 msgstr ""
@@ -3574,19 +3590,19 @@ msgstr ""
 msgid "Music unsuitable for output-def"
 msgstr ""
 
-#: lily-library.scm:887
+#: lily-library.scm:884
 msgid ""
 "Find the index between @var{start} and @var{end} (an integer)\n"
 "which produces the closest match to @var{target-val} if\n"
 "applied to function @var{getter}."
 msgstr ""
 
-#: lily-library.scm:958
+#: lily-library.scm:955
 #, scheme-format
 msgid "unknown unit: ~S"
 msgstr ""
 
-#: lily-library.scm:983
+#: lily-library.scm:980
 #, scheme-format
 msgid "no \\version statement found, please add~afor future compatibility"
 msgstr ""
@@ -3612,37 +3628,37 @@ msgstr ""
 msgid "cannot find: ~A"
 msgstr ""
 
-#: lily.scm:878
+#: lily.scm:877
 msgid "Success: compilation successfully completed"
 msgstr ""
 
-#: lily.scm:879
+#: lily.scm:878
 msgid "Compilation completed with warnings or errors"
 msgstr ""
 
-#: lily.scm:941
+#: lily.scm:939
 #, scheme-format
 msgid "job ~a terminated with signal: ~a"
 msgstr ""
 
-#: lily.scm:944
+#: lily.scm:942
 #, scheme-format
 msgid ""
 "logfile ~a (exit ~a):\n"
 "~a"
 msgstr ""
 
-#: lily.scm:966 lily.scm:1055
+#: lily.scm:964 lily.scm:1053
 #, scheme-format
 msgid "failed files: ~S"
 msgstr ""
 
-#: lily.scm:1046
+#: lily.scm:1044
 #, scheme-format
 msgid "Redirecting output to ~a..."
 msgstr ""
 
-#: lily.scm:1065 ps-to-png.scm:66
+#: lily.scm:1063 ps-to-png.scm:66
 #, scheme-format
 msgid "Invoking `~a'...\n"
 msgstr ""
@@ -3657,7 +3673,7 @@ msgstr ""
 msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
 msgstr ""
 
-#: ly-syntax-constructors.scm:200
+#: ly-syntax-constructors.scm:199
 #, scheme-format
 msgid "Invalid property operation ~a"
 msgstr ""
@@ -3715,34 +3731,34 @@ msgstr ""
 msgid "bad grob property path ~a"
 msgstr ""
 
-#: music-functions.scm:755
+#: music-functions.scm:753
 msgid "Bad chord repetition"
 msgstr ""
 
-#: music-functions.scm:790
+#: music-functions.scm:788
 #, scheme-format
 msgid "music expected: ~S"
 msgstr ""
 
-#: music-functions.scm:1133
+#: music-functions.scm:1144
 #, scheme-format
 msgid "cannot find quoted music: `~S'"
 msgstr ""
 
-#: music-functions.scm:1271
+#: music-functions.scm:1282
 msgid "Add @var{octave-shift} to the octave of @var{pitch}."
 msgstr ""
 
-#: music-functions.scm:1331
+#: music-functions.scm:1342
 #, scheme-format
 msgid "Unknown octaveness type: ~S "
 msgstr ""
 
-#: music-functions.scm:1332
+#: music-functions.scm:1343
 msgid "Defaulting to 'any-octave."
 msgstr ""
 
-#: music-functions.scm:1677
+#: music-functions.scm:1688
 #, scheme-format
 msgid "unknown accidental style: ~S"
 msgstr ""
@@ -3815,7 +3831,7 @@ msgstr ""
 msgid "~a exited with status: ~S"
 msgstr ""
 
-#: to-xml.scm:191
+#: to-xml.scm:190
 #, scheme-format
 msgid "assertion failed: ~S"
 msgstr ""
index ba65d9683d3fcdb13c9fc5d40f09ce264afb0a2b..91619737678fc3c130dcce4b8d6afa5266e0010d 100644 (file)
@@ -3521,6 +3521,28 @@ def conv(str):
                   r"\1/\2", str)
     return str
 
+@rule((2, 17, 14), r"\accepts ... -> \accepts ... \defaultchild ...")
+def conv(str):
+    def matchaccepts(m):
+        # First weed out definitions starting from an existing
+        # definition: we assume that the inherited \defaultchild is
+        # good enough for our purposes.  Heuristic: starts with a
+        # backslash and an uppercase letter.
+        if re.match (r"\s*\\[A-Z]", m.group (1)):
+            return m.group (0)
+        # existing defaultchild obviously trumps all
+        if re.search (r"\\defaultchild[^-_a-zA-Z]", m.group (1)):
+            return m.group (0)
+        # take the first \\accepts if any and replicate it
+        return re.sub ("(\r?\n[ \t]*|[ \t]+)"
+                       + r"""\\accepts(\s+(?:#?".*?"|[-_a-zA-Z]+))""",
+                       r"\g<0>\1\\defaultchild\2",
+                       m.group (0), 1)
+
+    str = re.sub (r"\\context\s*@?\{(" + brace_matcher (20) + ")\}",
+                  matchaccepts, str)
+    return str
+
 @rule((2, 17, 15), r"""#(ly:set-option 'old-relative)
 \relative -> \relative c'""")
 def conv(str):
@@ -3641,6 +3663,26 @@ def conv(str):
     str = re.sub (words + "|" + matchstring, wordreplace, str)
     return str
 
+@rule((2, 17, 27), r'''\stringTuning \notemode -> \stringTuning''')
+def conv(str):
+    str = re.sub (r"\\stringTuning\s*\\notemode(\s*)@?\{\s*(.*?)\s*@?}",
+                  r"\\stringTuning\1\2", str)
+    if re.search (r'\bstaff-padding\b', str):
+        stderr_write (NOT_SMART % "staff-padding")
+        stderr_write (_ ("Staff-padding now controls the distance to the baseline, not the nearest point."))
+    return str
+
+@rule((2, 17, 29), r'''Dynamic_engraver -> New_dynamic_engraver+Dynamic_align_engraver
+New_dynamic_engraver -> Dynamic_engraver''')
+def conv(str):
+    str = re.sub ("(\r?\n?[ \t]*\\\\(?:consists|remove)\\s*)(\"?)Dynamic_engraver\\2",
+                  r"\1\2New_dynamic_engraver\2\1\2Dynamic_align_engraver\2",
+                  str)
+# Should we warn about any remaining Dynamic_engraver?  Possibly it
+# will do the job just fine.
+    str = re.sub ("New_dynamic_engraver", "Dynamic_engraver", str)
+    return str
+
 # Guidelines to write rules (please keep this at the end of this file)
 #
 # - keep at most one rule per version; if several conversions should be done,
index 7f357376a37a88dfbb18f57c2716b2f16ab23685..a16771818722a57e24cabbba1bc25ea5ef452357 100644 (file)
 
 (define-public (output-scopes scopes fields basename)
   (define (output-scope scope)
-    (apply
-     string-append
+    (string-concatenate
      (module-map
       (lambda (sym var)
         (let ((val (if (variable-bound? var) (variable-ref var) "")))
               (header-to-file basename sym val))
           ""))
       scope)))
-  (apply string-append (map output-scope scopes)))
+  (string-concatenate (map output-scope scopes)))
 
 (define-public (relevant-book-systems book)
   (let ((systems (ly:paper-book-systems book)))
       (ly:warning (_ "missing stencil expression `~S'") name)
       ""))
 
-  (map (lambda (x)
-         (if (not (module-defined? output-module x))
-             (begin
-               (module-define! output-module x
-                               (lambda* (#:optional y . z)
-                                        (missing-stencil-expression x)))
-               (set! missing-stencil-list (append (list x)
-                                                  missing-stencil-list)))))
-       (ly:all-stencil-commands)))
+  (for-each (lambda (x)
+              (if (not (module-defined? output-module x))
+                  (begin
+                    (module-define! output-module x
+                                    (lambda* (#:optional y . z)
+                                             (missing-stencil-expression x)))
+                    (set! missing-stencil-list (cons x missing-stencil-list)))))
+            (ly:all-stencil-commands)))
 
 (define-public (remove-stencil-warnings output-module)
   (for-each
@@ -269,5 +267,5 @@ definition."
         (define-pango-pf pango-pf font-name scaling)))
 
     (string-append
-     (apply string-append (map font-load-command other-fonts))
-     (apply string-append (map pango-font-load-command pango-only-fonts)))))
+     (string-concatenate (map font-load-command other-fonts))
+     (string-concatenate (map pango-font-load-command pango-only-fonts)))))
index b432386372589e78b246014ff56be8064d3752a5..03c6f808156f88816b7fa6da999670b4b2891316 100644 (file)
@@ -88,10 +88,10 @@ Pad the string with @code{annotation-char}s to the length of the
     (if (pair? line-pos)
         (begin
           (set! iv (cons (car line-pos) (car line-pos)))
-          (map (lambda (x)
-                 (set! iv (cons (min (car iv) x)
-                                (max (cdr iv) x))))
-               (cdr line-pos)))
+          (for-each (lambda (x)
+                      (set! iv (cons (min (car iv) x)
+                                     (max (cdr iv) x))))
+                    (cdr line-pos)))
 
         (let ((line-count (ly:grob-property grob 'line-count 0)))
 
@@ -179,18 +179,18 @@ annotation char from string @var{str}."
          (last-pos (1- (length sorted-elts)))
          (idx 0))
 
-    (map (lambda (g)
-           (ly:grob-set-property!
-            g
-            'has-span-bar
-            (cons (if (eq? idx last-pos)
-                      #f
-                      grob)
-                  (if (zero? idx)
-                      #f
-                      grob)))
-           (set! idx (1+ idx)))
-         sorted-elts)))
+    (for-each (lambda (g)
+                (ly:grob-set-property!
+                 g
+                 'has-span-bar
+                 (cons (if (eq? idx last-pos)
+                           #f
+                           grob)
+                       (if (zero? idx)
+                           #f
+                           grob)))
+                (set! idx (1+ idx)))
+              sorted-elts)))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Line break decisions.
@@ -400,21 +400,21 @@ is not used within the routine."
               (half-thick (/ line-thickness 2.0))
               (stencil empty-stencil))
 
-          (map (lambda (i)
-                 (let ((top-y (min (* (+ i dash-size) half-space)
-                                   (+ (* (1- line-count) half-space)
-                                      half-thick)))
-                       (bot-y (max (* (- i dash-size) half-space)
-                                   (- 0 (* (1- line-count) half-space)
-                                      half-thick))))
-
-                   (set! stencil
-                         (ly:stencil-add
-                          stencil
-                          (ly:round-filled-box (cons 0 thickness)
-                                               (cons bot-y top-y)
-                                               blot)))))
-               (iota line-count (1- line-count) (- 2)))
+          (for-each (lambda (i)
+                      (let ((top-y (min (* (+ i dash-size) half-space)
+                                        (+ (* (1- line-count) half-space)
+                                           half-thick)))
+                            (bot-y (max (* (- i dash-size) half-space)
+                                        (- 0 (* (1- line-count) half-space)
+                                           half-thick))))
+
+                        (set! stencil
+                              (ly:stencil-add
+                               stencil
+                               (ly:round-filled-box (cons 0 thickness)
+                                                    (cons bot-y top-y)
+                                                    blot)))))
+                    (iota line-count (1- line-count) (- 2)))
           stencil)
         (let* ((dashes (/ height staff-space))
                (total-dash-size (/ height dashes))
@@ -801,7 +801,7 @@ no elements."
 ;; the size of the staff lines is evaluated as 0, which results in a
 ;; solid span bar line with faulty y coordinate.
 ;;
-;; This routine was originally by Juergen Reuter, but it was on the
+;; This routine was originally by Juergen Reuter, but it was on the
 ;; bulky side. Rewritten by Han-Wen. Ported from c++ to Scheme by Marc Hohl.
 (define-public (ly:span-bar::print grob)
   "The print routine for span bars."
@@ -823,26 +823,26 @@ no elements."
           ;; we compute the extents of each system and store them
           ;; in a list; dito for the 'allow-span-bar property.
           ;; model-bar takes the bar grob, if given.
-          (map (lambda (bar)
-                 (let ((ext (bar-line::bar-y-extent bar refp))
-                       (staff-symbol (ly:grob-object bar 'staff-symbol)))
-
-                   (if (ly:grob? staff-symbol)
-                       (let ((refp-extent (ly:grob-extent staff-symbol refp Y)))
-
-                         (set! ext (interval-union ext refp-extent))
-
-                         (if (> (interval-length ext) 0)
-                             (begin
-                               (set! extents (append extents (list ext)))
-                               (set! model-bar bar)
-                               (set! make-span-bars
-                                     (append make-span-bars
-                                             (list (ly:grob-property
-                                                    bar
-                                                    'allow-span-bar
-                                                    #t))))))))))
-               elts)
+          (for-each (lambda (bar)
+                      (let ((ext (bar-line::bar-y-extent bar refp))
+                            (staff-symbol (ly:grob-object bar 'staff-symbol)))
+
+                        (if (ly:grob? staff-symbol)
+                            (let ((refp-extent (ly:grob-extent staff-symbol refp Y)))
+
+                              (set! ext (interval-union ext refp-extent))
+
+                              (if (> (interval-length ext) 0)
+                                  (begin
+                                    (set! extents (append extents (list ext)))
+                                    (set! model-bar bar)
+                                    (set! make-span-bars
+                                          (append make-span-bars
+                                                  (list (ly:grob-property
+                                                         bar
+                                                         'allow-span-bar
+                                                         #t))))))))))
+                    elts)
           ;; if there is no bar grob, we use the callback argument
           (if (not model-bar)
               (set! model-bar grob))
index c366a70b544925abd1543ae43e763383f942822f..f7ba6b4edf220fb931428d0c967a7493ffd3c178 100644 (file)
@@ -226,15 +226,15 @@ See @file{double-plus-new-chord-name.scm} for the signature of @var{style}.
             partial-markup-prefix
             (make-normal-size-super-markup
              (markup-join
-              (apply append
-                     (map step->markup
-                          (append altered
-                                  (if (and (> (step-nr highest) 5)
-                                           (not
-                                            (step-even-or-altered? highest)))
-                                      (list highest) '())))
-                     (list partial-markup-suffix)
-                     (list (map sub->markup missing)))
+              (append
+               (map step->markup
+                    (append altered
+                            (if (and (> (step-nr highest) 5)
+                                     (not
+                                      (step-even-or-altered? highest)))
+                                (list highest) '())))
+               (list partial-markup-suffix)
+               (map sub->markup missing))
               sep)))))))
 
 
index b90d7c4ed5a95da6091ea81b551a2e8c0779043e..fc32e6ba759dce9d447b3193a2121b06fc64dad1 100644 (file)
@@ -242,7 +242,7 @@ work than classifying the pitches."
           ;; no exception.
           ;; handle sus4 and sus2 suffix: if there is a 3 together with
           ;; sus2 or sus4, then we explicitly say add3.
-          (map
+          (for-each
            (lambda (j)
              (if (get-step j pitches)
                  (begin
index e4e0f9dd999d9ad867850f474a9a6b22158e388e..00cbaeb55c67c33cce65e628a8a07050c10f02d9 100644 (file)
@@ -108,7 +108,6 @@ default length of the beamlet to the right.  The actual length of a
 beamlet is determined by taking either the default length or the
 length specified by @code{beamlet-max-length-proportion}, whichever is
 smaller.")
-     (beam-gap ,number-pair? "Size of a gap in a @code{Beam}.")
      (beamlet-max-length-proportion ,pair? "The maximum length of a
 beamlet, as a proportion of the distance between two adjacent stems.")
      (before-line-breaking ,boolean? "Dummy property, used to trigger
index 040f3fc2dd54d6adbe899c9f643a1df50c07c9ed..08aa3b9bfe5e67b86702cf3939120dd0e483c628 100644 (file)
         ;; only for debugging.
         (font-family . roman)
 
-        (beam-gap . ,ly:beam::calc-beam-gap)
-        (minimum-length . ,ly:beam::calc-minimum-length)
+        (gap . 0.8)
         (neutral-direction . ,DOWN)
         (positions . ,beam::place-broken-parts-individually)
-        (springs-and-rods . ,ly:beam::calc-springs-and-rods)
         (X-positions . ,ly:beam::calc-x-positions)
         (transparent . ,(grob::inherit-parent-property
                          X 'transparent))
         (color . ,(grob::inherit-parent-property
                    X 'color))
         (self-alignment-X . ,CENTER)
-        (staff-padding . 0.2)
+        (staff-padding . 0.7)
         (stencil . ,ly:text-interface::print)
         (X-offset . ,(ly:make-simple-closure
                       `(,+
         (positioning-done . ,ly:script-interface::calc-positioning-done)
         (right-padding . 0.5)
         (self-alignment-X . ,CENTER)
-        (self-alignment-Y . ,CENTER)
         (stencil . ,ly:text-interface::print)
         (vertical-skylines . ,grob::always-vertical-skylines-from-stencil)
         (Y-extent . ,grob::always-Y-extent-from-stencil)
         (X-offset . ,ly:self-alignment-interface::x-aligned-on-self)
-        (Y-offset . ,self-alignment-interface::y-aligned-on-self)
+        (Y-offset . ,(scale-by-font-size -0.6)) ; center on an 'm'
         (meta . ((class . Item)
                  (interfaces . (dynamic-interface
                                 dynamic-text-interface
         (outside-staff-priority . 400)
         (padding . 0.5)
         (shorten-pair . (0.0 . -0.6))
-        (staff-padding . 1.0)
+        (staff-padding . 2.0)
         (stencil . ,ly:ottava-bracket::print)
         (style . dashed-line)
         (vertical-skylines . ,grob::unpure-vertical-skylines-from-stencil)
 
     (SustainPedal
      . (
-        (direction . ,RIGHT)
         (extra-spacing-width . (+inf.0 . -inf.0))
         (padding . 0.0)  ;; padding relative to SustainPedalLineSpanner
         (self-alignment-X . ,CENTER)
 
 ;; make sure that \property Foo.Bar =\turnOff doesn't complain
 
-(map (lambda (x)
-       ;; (display (car x)) (newline)
+(for-each (lambda (x)
+            ;; (display (car x)) (newline)
 
-       (set-object-property! (car x) 'translation-type? list?)
-       (set-object-property! (car x) 'is-grob? #t))
-     all-grob-descriptions)
+            (set-object-property! (car x) 'translation-type? list?)
+            (set-object-property! (car x) 'is-grob? #t))
+          all-grob-descriptions)
 
 (set! all-grob-descriptions (sort all-grob-descriptions alist<?))
index 88d33ecda9ea4e886630e41100b9daab75985b0e..9e5528f5bb2a7eafa0d7eb1d6de990463245f650 100644 (file)
@@ -418,7 +418,7 @@ line thickness and padding around the markup.
   "
 @cindex drawing oval around text
 
-Draw a oval around @var{arg}.  Use @code{thickness},
+Draw an oval around @var{arg}.  Use @code{thickness},
 @code{x-padding}, @code{x-padding} and @code{font-size} properties to determine
 line thickness and padding around the markup.
 
@@ -1369,69 +1369,93 @@ equivalent to @code{\"fi\"}.
   "Perform simple wordwrap, return stencil of each line."
   (define space (if justify
                     ;; justify only stretches lines.
-                    (* 0.7 base-space)
-                    base-space))
-  (define (stencil-space stencil line-start)
-    (if (ly:stencil-empty? stencil X)
-        0
-        (cdr (ly:stencil-extent
-              (ly:stencil-stack (if line-start
-                                    empty-stencil
-                                    point-stencil)
-                                X RIGHT stencil)
-              X))))
-  (define (take-list width space stencils
-                     accumulator accumulated-width)
-    "Return (head-list . tail) pair, with head-list fitting into width"
-    (if (null? stencils)
-        (cons accumulator stencils)
-        (let* ((first (car stencils))
-               (first-wid (stencil-space first (null? accumulator)))
-               (newwid (+ (if (or (ly:stencil-empty? first Y)
-                                  (ly:stencil-empty? first X))
-                              0 space)
-                          first-wid accumulated-width)))
-          (if (or (null? accumulator)
-                  (< newwid width))
-              (take-list width space
-                         (cdr stencils)
-                         (cons first accumulator)
-                         newwid)
-              (cons accumulator stencils)))))
-  (let loop ((lines '())
-             (todo stencils))
-    (let* ((line-break (take-list line-width space todo
-                                  '() 0.0))
-           (line-stencils (car line-break))
-           (space-left (- line-width
-                          (stencil-space
-                           (stack-stencil-line 0 line-stencils)
-                           #t)))
-           (line-words (count (lambda (s) (not (or (ly:stencil-empty? s Y)
-                                                   (ly:stencil-empty? s X))))
-                              line-stencils))
-           (line-word-space (cond ((not justify) space)
-                                  ;; don't stretch last line of paragraph.
-                                  ;; hmmm . bug - will overstretch the last line in some case.
-                                  ((null? (cdr line-break))
-                                   base-space)
-                                  ((< line-words 2) space)
-                                  (else (/ space-left (1- line-words)))))
-           (line (stack-stencil-line line-word-space
-                                     (if (= text-dir RIGHT)
-                                         (reverse line-stencils)
-                                         line-stencils))))
-      (if (pair? (cdr line-break))
-          (loop (cons line lines)
-                (cdr line-break))
-          (begin
-            (if (= text-dir LEFT)
-                (set! line
-                      (ly:stencil-translate-axis
-                       line
-                       (- line-width (interval-end (ly:stencil-extent line X)))
-                       X)))
-            (reverse (cons line lines)))))))
+                   (* 0.7 base-space)
+                   base-space))
+  (define (stencil-len s)
+    (interval-end (ly:stencil-extent s X)))
+  (define (maybe-shift line)
+    (if (= text-dir LEFT)
+        (ly:stencil-translate-axis
+         line
+         (- line-width (stencil-len line))
+         X)
+        line))
+  (if (null? stencils)
+      '()
+      (let loop ((lines '())
+                 (todo stencils))
+        (let word-loop
+            ((line (first todo))
+             (todo (cdr todo))
+             (word-list (list (first todo))))
+          (cond
+           ((pair? todo)
+            (let ((new (if (= text-dir LEFT)
+                           (ly:stencil-stack (car todo) X RIGHT line space)
+                           (ly:stencil-stack line X RIGHT (car todo) space))))
+              (cond
+               ((<= (stencil-len new) line-width)
+                (word-loop new (cdr todo)
+                           (cons (car todo) word-list)))
+               (justify
+                (let* ((word-list
+                        ;; This depends on stencil stacking being
+                        ;; associative so that stacking
+                        ;; left-to-right and right-to-left leads to
+                        ;; the same result
+                        (if (= text-dir LEFT)
+                            word-list
+                            (reverse! word-list)))
+                       (len (stencil-len line))
+                       (stretch (- line-width len))
+                       (spaces
+                        (- (stencil-len
+                            (stack-stencils X RIGHT (1+ space) word-list))
+                           len)))
+                  (if (zero? spaces)
+                      ;; Uh oh, nothing to fill.
+                      (loop (cons (maybe-shift line) lines) todo)
+                      (loop (cons
+                             (stack-stencils X RIGHT
+                                             (+ space (/ stretch spaces))
+                                             word-list)
+                             lines)
+                            todo))))
+               (else ;; not justify
+                (loop (cons (maybe-shift line) lines) todo)))))
+           ;; todo is null
+           (justify
+            ;; Now we have the last line assembled with space
+            ;; which is compressed.  We want to use the
+            ;; uncompressed version instead if it fits, and the
+            ;; justified version if it doesn't.
+            (let* ((word-list
+                    ;; This depends on stencil stacking being
+                    ;; associative so that stacking
+                    ;; left-to-right and right-to-left leads to
+                    ;; the same result
+                    (if (= text-dir LEFT)
+                        word-list
+                        (reverse! word-list)))
+                   (big-line (stack-stencils X RIGHT base-space word-list))
+                   (big-len (stencil-len big-line))
+                   (len (stencil-len line)))
+              (reverse! lines
+                        (list
+                         (if (> big-len line-width)
+                             (stack-stencils X RIGHT
+                                             (/
+                                              (+
+                                               (* (- big-len line-width)
+                                                  space)
+                                               (* (- line-width len)
+                                                  base-space))
+                                              (- big-len len))
+                                             word-list)
+                             (maybe-shift big-line))))))
+           (else ;; not justify
+            (reverse! lines (list (maybe-shift line)))))))))
+
 
 (define-markup-list-command (wordwrap-internal layout props justify args)
   (boolean? markup-list?)
@@ -1516,7 +1540,7 @@ the line width, where @var{X} is the number of staff spaces.
                                                  justify word-space
                                                  line-width text-direction)))
                           list-para-words)))
-    (apply append para-lines)))
+    (concatenate para-lines)))
 
 (define-markup-command (wordwrap-string layout props arg)
   (string?)
@@ -3295,8 +3319,8 @@ A feta brace in point size @var{size}, rotated 180 degrees.
 Construct a note symbol, with stem and flag.  By using fractional values for
 @var{dir}, longer or shorter stems can be obtained.
 Supports all note-head-styles.
-Supported flag-styles are @code{default}, @code{old-straight-flag} and
-@code{modern-straight-flag}.
+Supported flag-styles are @code{default}, @code{old-straight-flag},
+@code{modern-straight-flag} and @code{flat-flag}.
 
 @lilypond[verbatim,quote]
 \\markup {
@@ -3357,7 +3381,9 @@ Supported flag-styles are @code{default}, @code{old-straight-flag} and
            (raw-length (if stem-up upflag-length downflag-length))
            (angle (if stem-up upflag-angle downflag-angle))
            (flag-length (+ (* raw-length factor) half-stem-thickness))
-           (flag-end (polar->rectangular flag-length angle))
+           (flag-end (if (= angle 0)
+                         (cons flag-length (* half-stem-thickness dir))
+                         (polar->rectangular flag-length angle)))
            (thickness (* flag-thickness factor))
            (thickness-offset (cons 0 (* -1 thickness dir)))
            (spacing (* -1 flag-spacing factor dir))
@@ -3365,9 +3391,11 @@ Supported flag-styles are @code{default}, @code{old-straight-flag} and
            ;; The points of a round-filled-polygon need to be given in
            ;; clockwise order, otherwise the polygon will be enlarged by
            ;; blot-size*2!
-           (points (if stem-up (list start flag-end
-                                     (offset-add flag-end thickness-offset)
-                                     (offset-add start thickness-offset))
+           (points (if stem-up
+                       (list start
+                             flag-end
+                             (offset-add flag-end thickness-offset)
+                             (offset-add start thickness-offset))
                        (list start
                              (offset-add start thickness-offset)
                              (offset-add flag-end thickness-offset)
@@ -3432,10 +3460,12 @@ Supported flag-styles are @code{default}, @code{old-straight-flag} and
          ;; Straight-flags. Values taken from /scm/flag-style.scm
          (modern-straight-flag (straight-flag-mrkp 0.55 1 -18 1.1 22 1.2 dir))
          (old-straight-flag (straight-flag-mrkp 0.55 1 -45 1.2 45 1.4 dir))
+         (flat-flag (straight-flag-mrkp 0.55 1.0 0 1.0 0 1.0 dir))
          ;; Calculate a corrective to avoid a gap between
          ;; straight-flags and the stem.
          (flag-style-Y-corr (if (or (eq? flag-style 'modern-straight-flag)
-                                    (eq? flag-style 'old-straight-flag))
+                                    (eq? flag-style 'old-straight-flag)
+                                    (eq? flag-style 'flat-flag))
                                 (/ blot 10 (* -1 dir))
                                 0))
          (flaggl (and (> log 2)
@@ -3444,6 +3474,8 @@ Supported flag-styles are @code{default}, @code{old-straight-flag} and
                               modern-straight-flag)
                              ((eq? flag-style 'old-straight-flag)
                               old-straight-flag)
+                             ((eq? flag-style 'flat-flag)
+                              flat-flag)
                              (else
                               (ly:font-get-glyph font
                                                  (format #f (if ancient-flags?
index 4082cc49029666cf0b54c26ee84ef5ea4f2608de..5c9c12538e03b761798e17122d5ac807ac84ce4b 100644 (file)
@@ -28,7 +28,7 @@
    (lambda (x) (apply music-property-description x))
    `(
      (absolute-octave ,integer?
-                      "The absolute octave for a octave check note.")
+                      "The absolute octave for an octave check note.")
      (alteration ,number? "Alteration for figured bass.")
      (alternative-dir ,ly:dir? "Indicates if an AlternativeMusic is the
 First (-1), Middle (0), or Last (1) of group of alternate endings.")
@@ -148,7 +148,7 @@ Options are @code{solo1}, @code{solo2} and @code{unisono}.")
      (pitch ,ly:pitch? "The pitch of this note.")
      (pitch-alist ,list? "A list of pitches jointly forming the scale
 of a key signature.")
-     (pop-first ,boolean? "Do a revert before we try to do a override
+     (pop-first ,boolean? "Do a revert before we try to do an override
 on some grob property.")
      (prob-property ,symbol? "The symbol of the prob property to set.")
      (procedure ,procedure? "The function to run with @code{\\applycontext}.
index 0a796a1981b66b7f147e637ad972dfa1dac09a15..184b4e54850ad3eb911120d05a40fc71c60ffd5a 100644 (file)
@@ -33,7 +33,7 @@ Syntax: @var{note}@code{\\x}, where @code{\\x} is a dynamic mark like
         ))
 
     (AlternativeEvent
-     . ((description . "Create a alternative event.")
+     . ((description . "Create an alternative event.")
         (types . (general-music event alternative-event))
         ))
 
@@ -712,8 +712,8 @@ brackets start and stop.")
         ))
 
     (UnfoldedRepeatedMusic
-     . ((description . "Repeated music which is fully written
-(and played) out.")
+     . ((description . "Repeated music which is fully written (and
+played) out.")
         (iterator-ctor . ,ly:unfolded-repeat-iterator::constructor)
         (start-callback .  ,ly:repeated-music::first-start)
         (types . (general-music repeated-music unfolded-repeated-music))
@@ -775,22 +775,44 @@ Syntax: @code{\\\\}")
   "Create a music object of given name, and set its properties
 according to @code{music-properties}, a list of alternating property symbols
 and values. E.g:
+@example
   (make-music 'OverrideProperty
               'symbol 'Stem
               'grob-property 'thickness
-              'grob-value (* 2 1.5))"
+              'grob-value (* 2 1.5))
+@end example
+Instead of a successive symbol and value, an entry in the list may
+also be an alist or a music object in which case its elements,
+respectively its @emph{mutable} property list (properties not inherent
+to the type of the music object) will get taken.
+
+The argument list will be interpreted left-to-right, so later entries
+override earlier ones."
   (if (not (symbol? name))
       (ly:error (_ "symbol expected: ~S") name))
   (let ((props (hashq-ref music-name-to-property-table name '())))
     (if (not (pair? props))
         (ly:error (_ "cannot find music object: ~S") name))
     (let ((m (ly:make-music props)))
+      (define (alist-set-props lst)
+        (for-each (lambda (e)
+                    (set! (ly:music-property m (car e)) (cdr e)))
+                  (reverse lst)))
       (define (set-props mus-props)
-        (if (and (not (null? mus-props))
-                 (not (null? (cdr mus-props))))
-            (begin
-              (set! (ly:music-property m (car mus-props)) (cadr mus-props))
-              (set-props (cddr mus-props)))))
+        (if (pair? mus-props)
+            (let ((e (car mus-props))
+                  (mus-props (cdr mus-props)))
+              (cond ((symbol? e)
+                     (set! (ly:music-property m e) (car mus-props))
+                     (set-props (cdr mus-props)))
+                    ((ly:music? e)
+                     (alist-set-props (ly:music-mutable-properties e))
+                     (set-props mus-props))
+                    ((cheap-list? e)
+                     (alist-set-props e)
+                     (set-props mus-props))
+                    (else
+                     (ly:error (_ "bad make-music argument: ~S") e))))))
       (set-props music-properties)
       m)))
 
index 6136af0c511605d48bc928b9c81dbc84414f85ea..62ef21a72c2b4b9e183bdb6ac67214acae3dd138 100644 (file)
     ))
 
 ;; add two native utf-8 aliases. Pairs obey cp-like order: '(old new)
-(map (lambda (pair)
-       (set! language-pitch-names
-             (append language-pitch-names
-                     (list (cons (cadr pair)
-                                 (cdr (assoc (car pair) language-pitch-names)))))))
-     '((espanol español)
-       (italiano français)))
+(for-each
+ (lambda (pair)
+   (set! language-pitch-names
+         (append language-pitch-names
+                 (list (cons (cadr pair)
+                             (cdr (assoc (car pair) language-pitch-names)))))))
+ '((espanol español)
+   (italiano français)))
 
 (define-public (note-names-language parser str)
   (_ "Select note names language.")
index a0a18603c2d3244356aec8b0464bd797180c7742..4c834591a392bc90d2b7fdaa49515b7518c677a0 100644 (file)
@@ -70,6 +70,6 @@ are used internally in @file{lily/@/stencil-interpret.cc}."
     transparent-stencil
     ))
 
-(map ly:register-stencil-expression
-     (append (ly:all-stencil-commands)
-             (ly:all-output-backend-commands)))
+(for-each ly:register-stencil-expression
+          (append (ly:all-stencil-commands)
+                  (ly:all-output-backend-commands)))
index 16a4474b7e966d8736a8790af1b4f0def4e30e00..0847d4c93f84ac32eea90f067c63f55a1660169d 100644 (file)
@@ -1021,7 +1021,7 @@ returns @samp{1/3}."
         (*
          (car slope-offset1)
          (+ keylen (list-ref first-bezier 6))) (cdr slope-offset1))))
-   ((if bezier? (lambda (x) `(,(apply append x))) identity)
+   ((if bezier? (lambda (x) `(,(concatenate x))) identity)
     `((,(+ (+ keylen 1.75) (list-ref first-bezier 6))
        ,(+
          (*
index f1190f13c69fe34fd72cc7f47849821392380f0d..5b34ac94fcda7212551236f542c52d85996f74e6 100644 (file)
         possibility-list))))
 
 (define (translate-draw-instructions input-alist key-name-alist)
-  (apply append
-         (map (lambda (short long)
+  (append-map (lambda (short long)
                 (let*
                     ((key-instructions
                       (map (lambda (instr)
                            (assoc-get long key-name-alist))))
                   (key-crawler (assoc-get short input-alist) key-instructions)))
               '(hd cc lh rh)
-              '(hidden central-column left-hand right-hand))))
+              '(hidden central-column left-hand right-hand)))
 
 (define (uniform-draw-instructions key-name-alist)
-  (apply append
-         (map (lambda (long)
+  (append-map (lambda (long)
                 (map (lambda (key-instructions)
                        `((,long . ,(car key-instructions)) . 1))
                      (assoc-get long key-name-alist)))
-              '(hidden central-column left-hand right-hand))))
+              '(hidden central-column left-hand right-hand)))
 
 (define (list-all-possible-keys key-name-alist)
   (map (lambda (short long)
index a4c25cfe3cbcda60717f0c4fa1e311f89f8d9d9f..c1288deff52bc03e8bfad40e62de628bdd8d23c1 100644 (file)
@@ -24,7 +24,7 @@
 
 ;; properly sort all grobs, properties, and interfaces
 ;; within the all-grob-descriptions alist
-(map
+(for-each
  (lambda (x)
    (let* ((props      (assoc-ref all-grob-descriptions (car x)))
           (meta       (assoc-ref props 'meta))
 
 (define iface->grob-table (make-hash-table 61))
 ;; extract ifaces, and put grob into the hash table.
-(map
+(for-each
  (lambda (x)
    (let* ((meta (assoc-get 'meta (cdr x)))
           (ifaces (assoc-get 'interfaces meta)))
 
-     (map (lambda (iface)
-            (hashq-set!
-             iface->grob-table iface
-             (cons (car x)
-                   (hashq-ref iface->grob-table iface '()))))
-          ifaces)))
+     (for-each (lambda (iface)
+                 (hashq-set!
+                  iface->grob-table iface
+                  (cons (car x)
+                        (hashq-ref iface->grob-table iface '()))))
+               ifaces)))
  all-grob-descriptions)
 
 ;; First level Interface description
@@ -178,17 +178,17 @@ node."
 
 ;;;;;;;;;; check for dangling backend properties.
 (define (mark-interface-properties entry)
-  (map (lambda (x) (set-object-property! x 'iface-marked #t))
-       (caddr (cdr entry))))
+  (for-each (lambda (x) (set-object-property! x 'iface-marked #t))
+            (caddr (cdr entry))))
 
-(map mark-interface-properties interface-description-alist)
+(for-each mark-interface-properties interface-description-alist)
 
 (define (check-dangling-properties prop)
   (if (not (object-property prop 'iface-marked))
       (ly:error (string-append "define-grob-properties.scm: "
                                (_ "cannot find interface for property: ~S")) prop)))
 
-(map check-dangling-properties all-backend-properties)
+(for-each check-dangling-properties all-backend-properties)
 
 ;;;;;;;;;;;;;;;;
 
index fc3c4ad28a7101ba4748280a2908d8156943bb09..f5034d2ecc10129e8603ea52eeaf94157234bc41 100644 (file)
      (map document-mod-list mod-list))))
 
 (define (document-mod obj-pair)
-  (cond
-   ((ly:context-mod? (cdr obj-pair))
-    (document-context-mod obj-pair))
-   (else
-    #f)))
+  (and (ly:context-mod? (cdr obj-pair))
+       (document-context-mod obj-pair)))
 
 (define context-mods-doc-string
   (format
 @end table
 "
    (string-join
-    (filter
-     identity
-     (map
-      document-mod
-      (sort
-       (ly:module->alist (current-module))
-       identifier<?)))
-    "")))
+    (filter-map
+     document-mod
+     (sort
+      (ly:module->alist (current-module))
+      identifier<?)))
+   ""))
index 282bf240443c58ebaa6b0ea1ebb1f421466da5c3..2102f640e0f80ad6255be2c5a0e5fffd1c7ada86 100644 (file)
@@ -50,6 +50,6 @@
       #:name "Scheme functions"
       #:desc "Primitive functions exported by LilyPond."
       #:text
-      (apply string-append sfdocs))))
+      (string-concatenate sfdocs))))
 
 ;; (dump-node (all-scheme-functions-doc)  (current-output-port) 0 )
index e17f7d308c086100ecdc2fc7979b6402d6604aa4..22088605d70f7fbaa1df1d9c27ccc4fb21d51b58 100644 (file)
@@ -42,7 +42,7 @@
 ~a
 "
             name-sym (car type-names)
-            (if (equal? "" signature-str) "" " - ") signature-str
+            (if (string-null? signature-str) "" " - ") signature-str
             name-sym
             (if doc
                 doc
 
 
 (define (document-object obj-pair)
-  (cond
-   ((ly:music-function? (cdr obj-pair))
-    (document-music-function obj-pair))
-   (else
-    #f)))
+  (and (ly:music-function? (cdr obj-pair))
+       (document-music-function obj-pair)))
 
 (define-public (identifiers-doc-string)
   (format #f
 @end table
 "
           (string-join
-           (filter
-            identity
-            (map
-             document-object
-             (sort
-              (ly:module->alist (current-module))
-              identifier<?)))
-           "")))
+           (filter-map
+            document-object
+            (sort
+             (ly:module->alist (current-module))
+             identifier<?)))
+          ""))
index 7096a09ec52c4993b6a181b70072740c3f867682..54c987b9bbdb6aa0c8b4fc89890c24647468c591 100644 (file)
@@ -69,7 +69,7 @@
        (if (null? prop-strings)
            "\n"
            (string-append "\n\n\nUsed properties:\n@itemize\n"
-                          (apply string-append prop-strings)
+                          (string-concatenate prop-strings)
                           "@end itemize\n"))))))
 
 (define (markup-function<? a b)
@@ -91,9 +91,9 @@
       #:desc ""
       #:text (string-append
               "@table @asis"
-              (apply string-append
-                     (map doc-markup-function
-                          (sort markup-functions markup-function<?)))
+              (string-concatenate
+               (map doc-markup-function
+                    (sort markup-functions markup-function<?)))
               "\n@end table"))))
 
 (define (markup-doc-node)
 (define (markup-list-doc-string)
   (string-append
    "@table @asis"
-   (apply string-append
-          (map doc-markup-function
-               (sort (hash-fold (lambda (markup-list-function dummy functions)
-                                  (cons markup-list-function functions))
-                                '()
-                                markup-list-functions)
-                     markup-function<?)))
+   (string-concatenate
+    (map doc-markup-function
+         (sort (hash-fold (lambda (markup-list-function dummy functions)
+                            (cons markup-list-function functions))
+                          '()
+                          markup-list-functions)
+               markup-function<?)))
    "\n@end table"))
index ef31ec1f6aa3c809deaf8515dbf0271b7b30966c..0badbf899e14880b59b93ae85be57dc1ea6b060a 100644 (file)
       texi)))
 
 (define music-types->names (make-hash-table 61))
-(filter-map (lambda (entry)
-              (let* ((class (ly:camel-case->lisp-identifier (car entry)))
-                     (classes (ly:make-event-class class)))
-                (if classes
-                    (map
-                     (lambda (cl)
-                       (hashq-set! music-types->names cl
-                                   (cons (car entry)
-                                         (hashq-ref music-types->names cl '()))))
-                     classes)
-                    #f)))
 
-            music-descriptions)
+(for-each (lambda (entry)
+            (let* ((class (ly:camel-case->lisp-identifier (car entry)))
+                   (classes (ly:make-event-class class)))
+              (if classes
+                  (for-each
+                   (lambda (cl)
+                     (hashq-set! music-types->names cl
+                                 (cons (car entry)
+                                       (hashq-ref music-types->names cl '()))))
+                   classes))))
+          music-descriptions)
 
 (define (strip-description x)
   (cons (symbol->string (car x))
index 8237260c4555b3897712b25f561d92ca7ecde9ff..5e867bb4c24bfc84193a90a41ca300522043d689 100644 (file)
          (let* ((layout-alist (ly:output-description $defaultlayout))
                 (context-description-alist (map cdr layout-alist))
                 (contexts
-                 (apply append
-                        (map
-                         (lambda (x)
-                           (let* ((context (assoc-get 'context-name x))
-                                  (group (assq-ref x 'group-type))
-                                  (consists (append
-                                             (if group
-                                                 (list group)
-                                                 '())
-                                             (assoc-get 'consists x))))
-                             (if (member name-sym consists)
-                                 (list context)
-                                 '())))
-                         context-description-alist)))
+                 (append-map
+                  (lambda (x)
+                    (let* ((context (assoc-get 'context-name x))
+                           (group (assq-ref x 'group-type))
+                           (consists (append
+                                      (if group
+                                          (list group)
+                                          '())
+                                      (assoc-get 'consists x))))
+                      (if (member name-sym consists)
+                          (list context)
+                          '())))
+                  context-description-alist))
                 (context-list (human-listify (map ref-ify
                                                   (sort
                                                    (map symbol->string contexts)
 
 ;; Second level, part of Context description
 (define name->engraver-table (make-hash-table 61))
-(map
+(for-each
  (lambda (x)
    (hash-set! name->engraver-table (ly:translator-name x) x))
  (ly:get-all-translators))
        "."
 
        (if (and (pair? props) (not (null? props)))
-           (let ((str (apply string-append
-                             (sort (map document-property-operation props)
-                                   ly:string-ci<?))))
+           (let ((str (string-concatenate
+                       (sort (map document-property-operation props)
+                             ly:string-ci<?))))
              (if (string-null? str)
                  ""
                  (string-append
                         (list group)
                         '())
                     (assoc-get 'consists context-desc)))
-         (grobs  (apply append
-                        (map engraver-grobs consists))))
+         (grobs (append-map engraver-grobs consists)))
     grobs))
 
 (define (all-contexts-doc)
index e6cff904c3ab95890ff54010d4acbddc369227c4..2e94f2c3f869ed35f13bc53ea102306999fcf6e5 100644 (file)
@@ -40,9 +40,9 @@
    "\n"
    "@multitable @columnfractions .33 .66\n"
    "@headitem Type predicate @tab Description\n"
-   (apply string-append
-          (sort (map document-type-predicate alist)
-                ly:string-ci<?))
+   (string-concatenate
+    (sort (map document-type-predicate alist)
+          ly:string-ci<?))
    "@end multitable\n"
    "\n"))
 
@@ -56,8 +56,7 @@
    "* LilyPond exported predicates::\n"
    "@end menu\n"
    "\n"
-   (apply
-    string-append
+   (string-concatenate
     (map
      (lambda (alist-nodename-list)
        (apply document-type-predicate-category
index cc4db2fb2d2ccf30c4739ea92225ef4d0308db14..d65d0edab7ad7fc969aa99b477c1a0dd9427c763 100644 (file)
 
 (use-modules (scm accreg))
 
-(map ly:load '("documentation-lib.scm"
-               "lily-sort.scm"
-               "document-functions.scm"
-               "document-translation.scm"
-               "document-music.scm"
-               "document-type-predicates.scm"
-               "document-identifiers.scm"
-               "document-context-mods.scm"
-               "document-backend.scm"
-               "document-markup.scm"))
+(for-each ly:load '("documentation-lib.scm"
+                    "lily-sort.scm"
+                    "document-functions.scm"
+                    "document-translation.scm"
+                    "document-music.scm"
+                    "document-type-predicates.scm"
+                    "document-identifiers.scm"
+                    "document-context-mods.scm"
+                    "document-backend.scm"
+                    "document-markup.scm"))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
index 49a251720d4f78c7df5cb6125372e930110871ed..a0981945869823034d5c09434231923cde62d3db 100644 (file)
@@ -52,8 +52,8 @@
               (node-children node)))
         ""))
    port)
-  (map (lambda (x) (dump-node x port (+ 1 level)))
-       (node-children node)))
+  (for-each (lambda (x) (dump-node x port (+ 1 level)))
+            (node-children node)))
 
 (define (processing name)
   (ly:basic-progress (_ "Processing ~S...") name))
@@ -101,7 +101,7 @@ string-to-use).  If QUOTE? is #t, embed table in a @quotation environment."
    "\n"
    (if quote? "@quotation\n" "")
    "@table @asis\n"
-   (apply string-append (map one-item->texi items-alist))
+   (string-concatenate (map one-item->texi items-alist))
    "\n"
    "@end table\n"
    (if quote? "@end quotation\n" "")))
@@ -113,14 +113,14 @@ string-to-use).  If QUOTE? is #t, embed table in a @quotation environment."
 
     (string-append
      "\n@menu"
-     (apply string-append
-            (map (lambda (x)
-                   (string-append
-                    (string-pad-right
-                     (string-append "\n* " (car x) ":: ")
-                     (+ maxwid 8))
-                    (cdr x)))
-                 items-alist))
+     (string-concatenate
+      (map (lambda (x)
+             (string-append
+              (string-pad-right
+               (string-append "\n* " (car x) ":: ")
+               (+ maxwid 8))
+              (cdr x)))
+           items-alist))
      "\n@end menu\n"
      ;; Menus don't appear in html, so we make a list ourselves
      "\n@ignore\n"
index c8fea1ae5d8e655ee5d61701f61b7b577072dc47..59495ba40b884f33968a7f526f592a42bb590dc9 100644 (file)
@@ -16,7 +16,8 @@
 ;;;; along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
 ;;;;  This file implements different flag styles in Scheme / GUILE, most
-;;;;  notably the old-straight-flag and the modern-straight-flag styles.
+;;;;  notably the old-straight-flag, the modern-straight-flag and the flat-flag
+;;;;  styles.
 
 
 (define-public (no-flag grob)
@@ -80,16 +81,22 @@ All lengths are scaled according to the font size of the note."
            (raw-length (if stem-up upflag-length downflag-length))
            (angle (if stem-up upflag-angle downflag-angle))
            (flag-length (+ (* raw-length factor) half-stem-thickness))
-           (flag-end (polar->rectangular flag-length angle))
+           ;; For flat flags the points to create the stencil using
+           ;; ly:round-filled-polygon need to be different concerning flag-end
+           (flag-end (if (= angle 0)
+                         (cons flag-length (* half-stem-thickness dir))
+                         (polar->rectangular flag-length angle)))
            (thickness (* flag-thickness factor))
            (thickness-offset (cons 0 (* -1 thickness dir)))
            (spacing (* -1 flag-spacing factor dir ))
            (start (cons (- half-stem-thickness) (* half-stem-thickness dir)))
            ;; The points of a round-filled-polygon need to be given in clockwise
            ;; order, otherwise the polygon will be enlarged by blot-size*2!
-           (points (if stem-up (list start flag-end
-                                     (offset-add flag-end thickness-offset)
-                                     (offset-add start thickness-offset))
+           (points (if stem-up
+                       (list start
+                             flag-end
+                             (offset-add flag-end thickness-offset)
+                             (offset-add start thickness-offset))
                        (list start
                              (offset-add start thickness-offset)
                              (offset-add flag-end thickness-offset)
@@ -118,6 +125,10 @@ of Bach, etc."
 flags are both 45 degrees."
   ((straight-flag 0.55 1 -45 1.2 45 1.4) grob))
 
+(define-public (flat-flag grob)
+  "Flat flag style.  The angles of the flags are both 0 degrees"
+  ((straight-flag 0.55 1.0 0 1.0 0 1.0) grob))
+
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;;;  Flags created from feta glyphs (normal and mensural flags)
index 8753019fa79d0d3bb452125bae4efa222c3dc216..45a54b5f8d6ec9a5e202c23381d76ca9697eee6a 100644 (file)
     #:children (make-hash-table 11)))
 
 (define-method (display (leaf <Font-tree-leaf>) port)
-  (map (lambda (x) (display x port))
-       (list
-        "#<Font-size-family:\n"
-        (slot-ref leaf 'default-size)
-        (slot-ref leaf 'size-vector)
-        "#>"
-        )))
+  (for-each (lambda (x) (display x port))
+            (list
+             "#<Font-size-family:\n"
+             (slot-ref leaf 'default-size)
+             (slot-ref leaf 'size-vector)
+             "#>"
+             )))
 
 (define-method (display (node <Font-tree-node>) port)
-  (map
+  (for-each
    (lambda (x)
      (display x port))
    (list
index 3517f90ebbf01ce2dbc93c260d3cd528efac2030..d92affb11ccad4c45953c36a81ab8128af576335 100644 (file)
         (list (ly:font-name font))))
 
   (let* ((fonts (ly:paper-fonts paper))
-         (names (apply append (map extract-names fonts))))
-    (apply string-append
-           (map (lambda (f)
-                  (format #f
-                          (if load-fonts?
-                              "%%DocumentSuppliedResources: font ~a\n"
-                              "%%DocumentNeededResources: font ~a\n")
-                          f))
-                (uniq-list (sort names string<?))))))
+         (names (append-map extract-names fonts)))
+    (string-concatenate
+     (map (lambda (f)
+            (format #f
+                    (if load-fonts?
+                        "%%DocumentSuppliedResources: font ~a\n"
+                        "%%DocumentNeededResources: font ~a\n")
+                    f))
+          (uniq-list (sort names string<?))))))
 
 (define (eps-header paper bbox load-fonts?)
   (string-append "%!PS-Adobe-2.0 EPSF-2.0\n"
                       (ly:font-sub-fonts font))))
              fonts))
            (font-names (uniq-list
-                        (sort (apply append all-font-names)
+                        (sort (concatenate all-font-names)
                               (lambda (x y) (string<? (cadr x) (cadr y))))))
 
            ;; slightly spaghetti-ish: deciding what to load where
index be77f2a48fcc86f93df99474ce55985550878ee9..defd663317d7da243e7a8f30f9ed7179a631f49f 100644 (file)
@@ -18,7 +18,7 @@
 ;;; Commentary:
 
 ;;; This file provides the support routines for a guile debugger called
-;;; from a environment controlled by LilyPond.  It works in conjunction
+;;; from an environment controlled by LilyPond.  It works in conjunction
 ;;; with file guile-debugger.ly.
 
 ;;; Code:
index 22e5b6730210663a3ee59a6f3e7ba8b2ef807456..43b05e57c20d8fa6b5b9e784d434cb5c564d1c58 100644 (file)
@@ -535,10 +535,7 @@ For example:
          (list elem)))
    '() lst))
 
-(define-public (filtered-map proc lst)
-  (filter
-   (lambda (x) x)
-   (map proc lst)))
+(define-public filtered-map filter-map)
 
 (define-public (flatten-list x)
   "Unnest list."
index 0f711ed19331df8fdc185e87d4bf1f605199c570..4a63be9908d92cd791746f7435e4030bee19fb45 100644 (file)
@@ -841,11 +841,10 @@ messages into errors.")
 
   (let* ((stat (gulp-file "/proc/self/status"))
          (lines (string-split stat #\newline))
-         (interesting (filter identity
-                              (map
-                               (lambda (l)
-                                 (string-match "^VmData:[ \t]*([0-9]*) kB" l))
-                               lines)))
+         (interesting (filter-map
+                       (lambda (l)
+                         (string-match "^VmData:[ \t]*([0-9]*) kB" l))
+                       lines))
          (mem (string->number (match:substring (car interesting) 1))))
     (format #t "VMDATA: ~a\n" mem)
     (display (gc-stats))
@@ -898,12 +897,11 @@ PIDs or the number of the process."
              (ly:exit 2 #t)))
   (if (ly:get-option 'read-file-list)
       (set! files
-            (filter (lambda (s)
-                      (> (string-length s) 0))
-                    (apply append
-                           (map (lambda (f)
-                                  (string-split (string-delete (ly:gulp-file f) #\cr) #\nl))
-                                files)))))
+            (remove string-null?
+                    (append-map
+                     (lambda (f)
+                       (string-split (string-delete (ly:gulp-file f) #\cr) #\nl))
+                     files))))
   (if (and (number? (ly:get-option 'job-count))
            (>= (length files) (ly:get-option 'job-count)))
       (let* ((count (ly:get-option 'job-count))
index 8b6f4ffefbf01c2ff05fdedce13467e679872e1e..b3d7f3f0f01cf942ef71f7db0caa19fd47db742f 100644 (file)
   "Extract @code{'direction} and @code{'text} from @var{music}, and transform
 into a @code{MultiMeasureTextEvent}."
 
-  (if (memq 'script-event (ly:music-property music 'types))
-      (apply make-music 'MultiMeasureTextEvent
-             (flatten-alist (ly:music-mutable-properties music)))
+  (if (music-is-of-type? music 'script-event)
+      (make-music 'MultiMeasureTextEvent music)
       music))
 
 (define-ly-syntax (multi-measure-rest parser location duration articulations)
index 69a6ad13ffaf886912531f7704772e34a9fc7025..64a113973880e2f11e4b157aba24b6b368b5469b 100644 (file)
@@ -48,16 +48,13 @@ Example:
 (define-public interpret-markup ly:text-interface::interpret-markup)
 
 (define-public (interpret-markup-list layout props markup-list)
-  ;; This relies on the markup list returned by a markup list command
-  ;; to be modifiable
-  (reverse!
-   (fold
-    (lambda (m prev)
-      (if (markup-command-list? m)
-          (reverse! (apply (car m) layout props (cdr m)) prev)
-          (cons (interpret-markup layout props m) prev)))
-    '()
-    markup-list)))
+  (fold-right
+   (lambda (m prev)
+     (if (markup-command-list? m)
+         (append (apply (car m) layout props (cdr m)) prev)
+         (cons (interpret-markup layout props m) prev)))
+   '()
+   markup-list))
 
 (define-public (prepend-alist-chain key val chain)
   (cons (acons key val (car chain)) (cdr chain)))
index 3db3904726437ec0f1e218d7b5ffc7e86b74e412..71892bde65e5d1a0eab09f7f1db2d3813d2e3e59 100644 (file)
@@ -120,7 +120,7 @@ LilyPond scheme pitches, e.g. @code{(ly:make-pitch 0 2 0)}
       (ly:music-set-property! music 'pitch (converter pitch)))
 
      ((pair? elements)
-      (map (lambda (x) (change-pitches x converter)) elements))
+      (for-each (lambda (x) (change-pitches x converter)) elements))
 
      ((ly:music? element)
       (change-pitches element converter)))))
@@ -206,7 +206,7 @@ Typically used to construct a scale for input to transposer-factory
     (if (ly:dir? span-dir)
         (ly:music-set-property! music 'span-direction (- span-dir)))
 
-    (map retrograde-music reversed)
+    (for-each retrograde-music reversed)
 
     music))
 
index 092cf84e4b46a5e2c2f19d7fdc6617dd4da2f543..afcdb843e72545e3f20a1922a737a58a08044577 100644 (file)
@@ -137,7 +137,7 @@ For instance,
                                                                   (string-length "-markup")))))))
   (define (transform-arg arg)
     (cond ((and (pair? arg) (markup? (car arg))) ;; a markup list
-           (apply append (map inner-markup->make-markup arg)))
+           (append-map inner-markup->make-markup arg))
           ((and (not (string? arg)) (markup? arg)) ;; a markup
            (inner-markup->make-markup arg))
           (else                                  ;; scheme arg
@@ -164,12 +164,12 @@ equivalent to @var{obj}, that is, for a music expression, a
          (ly:music? obj)
          `(make-music
            ',(ly:music-property obj 'name)
-           ,@(apply append (map (lambda (prop)
-                                  `(',(car prop)
-                                    ,(music->make-music (cdr prop))))
-                                (remove (lambda (prop)
-                                          (eqv? (car prop) 'origin))
-                                        (ly:music-mutable-properties obj))))))
+           ,@(append-map (lambda (prop)
+                           `(',(car prop)
+                             ,(music->make-music (cdr prop))))
+                         (remove (lambda (prop)
+                                   (eqv? (car prop) 'origin))
+                                 (ly:music-mutable-properties obj)))))
         (;; moment
          (ly:moment? obj)
          `(ly:make-moment ,(ly:moment-main-numerator obj)
@@ -973,24 +973,37 @@ predicates require the parameter to be entered as Scheme expression.
 predicates, to be used in case of a type error in arguments or
 result."
 
+  (define (currying-lambda args doc-string? body)
+    (if (and (pair? args)
+             (pair? (car args)))
+        (currying-lambda (car args) doc-string?
+                         `((lambda ,(cdr args) ,@body)))
+        (if doc-string?
+            `(lambda ,args ,doc-string? ,@body)
+            `(lambda ,args ,@body))))
+
   (set! signature (map (lambda (pred)
                          (if (pair? pred)
                              `(cons ,(car pred)
                                     ,(and (pair? (cdr pred)) (cadr pred)))
                              pred))
                        (cons type signature)))
-  (if (and (pair? body) (pair? (car body)) (eqv? '_i (caar body)))
-      ;; When the music function definition contains a i10n doc string,
-      ;; (_i "doc string"), keep the literal string only
-      (let ((docstring (cadar body))
-            (body (cdr body)))
-        `(ly:make-music-function (list ,@signature)
-                                 (lambda ,args
-                                   ,docstring
-                                   ,@body)))
-      `(ly:make-music-function (list ,@signature)
-                               (lambda ,args
-                                 ,@body))))
+
+  (let ((docstring
+         (and (pair? body) (pair? (cdr body))
+              (if (string? (car body))
+                  (car body)
+                  (and (pair? (car body))
+                       (eq? '_i (caar body))
+                       (pair? (cdar body))
+                       (string? (cadar body))
+                       (null? (cddar body))
+                       (cadar body))))))
+    ;; When the music function definition contains an i10n doc string,
+    ;; (_i "doc string"), keep the literal string only
+    `(ly:make-music-function
+      (list ,@signature)
+      ,(currying-lambda args docstring (if docstring (cdr body) body)))))
 
 (defmacro-public define-music-function rest
   "Defining macro returning music functions.
@@ -1940,9 +1953,9 @@ base onto the following musical context."
                (layout (ly:grob-layout root))
                (blot (ly:output-def-lookup layout 'blot-diameter)))
           ;; Hide spanned stems
-          (map (lambda (st)
-                 (set! (ly:grob-property st 'stencil) #f))
-               stems)
+          (for-each (lambda (st)
+                      (set! (ly:grob-property st 'stencil) #f))
+                    stems)
           ;; Draw a nice looking stem with rounded corners
           (ly:round-filled-box (ly:grob-extent root root X) yextent blot))
         ;; Nothing to connect, don't draw the span
@@ -1974,7 +1987,7 @@ other stems just because of that."
   ;; two stems at this musical moment
   (if (<= 2 (length stems))
       (let ((roots (filter stem-is-root? stems)))
-        (map (make-stem-span! stems trans) roots))))
+        (for-each (make-stem-span! stems trans) roots))))
 
 (define-public (Span_stem_engraver ctx)
   "Connect cross-staff stems to the stems above in the system"
index e04b298975cde419bfc931c2fbdd34e4d84d574e..dc88b4387a8f00e87031a233c656642b3b533736 100644 (file)
@@ -620,8 +620,8 @@ and duration-log @var{log}."
 (define-public (color? x)
   (and (list? x)
        (= 3 (length x))
-       (apply eq? #t (map number? x))
-       (apply eq? #t (map (lambda (y) (<= 0 y 1)) x))))
+       (every number? x)
+       (every (lambda (y) (<= 0 y 1)) x)))
 
 (define-public (rgb-color r g b) (list r g b))
 
@@ -854,6 +854,11 @@ and duration-log @var{log}."
    the previous calculated offset value."
   prev-offset)
 
+(define-public (scale-by-font-size x)
+  (ly:make-unpure-pure-container
+    (lambda (grob)
+      (* x (magstep (ly:grob-property grob 'font-size 0))))))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
 
index 1df5a53d703bec054ba29eb566de86ab4c6b2511..cb9f598d3f0b71cc7ca261a77f17abd2c63df87e 100644 (file)
 
 ;; Helper functions
 (define-public (attributes attributes-alist)
-  (apply string-append
-         (map (lambda (x)
-                (let ((attr (car x))
-                      (value (cdr x)))
-                  (if (number? value)
-                      (set! value (ly:format "~4f" value)))
-                  (format #f " ~s=\"~a\"" attr value)))
-              attributes-alist)))
+  (string-concatenate
+   (map (lambda (x)
+          (let ((attr (car x))
+                (value (cdr x)))
+            (if (number? value)
+                (set! value (ly:format "~4f" value)))
+            (format #f " ~s=\"~a\"" attr value)))
+        attributes-alist)))
 
 (define-public (eo entity . attributes-alist)
   "o = open"
   (integer->entity (char->integer char)))
 
 (define (string->entities string)
-  (apply string-append
-         (map (lambda (x) (char->entity x)) (string->list string))))
+  (string-concatenate
+   (map char->entity (string->list string))))
 
 (define svg-element-regexp
   (make-regexp "^(<[a-z]+) ?(.*>)"))
             `(stroke-linecap . ,(symbol->string cap-style))
             '(stroke . "currentColor")
             `(fill . ,(if fill? "currentColor" "none"))
-            `(d . ,(apply string-append (convert-path-exps commands))))))
+            `(d . ,(string-concatenate (convert-path-exps commands))))))
 
 (define (placebox x y expr)
   (if (string-null? expr)
index 428b95c87b5da8a022412f5f5ccc4e9847658ea7..f6bb29d701be0c331fadf51fe6b4410a570de06d 100644 (file)
                     (append (cdr lines) (list #f)))
           (paper-system-annotate-last (car (last-pair lines)) layout)))
 
-    (map add-system lines)
+    (for-each add-system lines)
 
 
     (ly:prob-set-property! page 'bottom-system-edge
index 719cc4ce503c48af362e276883ac623d2b572711..6ba1261ca726846bf4093a9f11fc748d21e66766 100644 (file)
   "Generate the clef setting commands for a clef with name @var{clef-name}."
   (define (make-prop-set props)
     (let ((m (make-music 'PropertySet)))
-      (map (lambda (x) (set! (ly:music-property m (car x)) (cdr x))) props)
+      (for-each (lambda (x) (set! (ly:music-property m (car x)) (cdr x))) props)
       m))
   (let ((e '())
         (c0 0)
index dadce948634ccae8db3a4eef0d17e4fd7828bbf3..4e3e4b66031c178316ecb7a340fe0f32600842b6 100644 (file)
@@ -275,9 +275,9 @@ LilyPond version 2.8 and earlier."
     (define (analyse-forced-combine result-idx prev-res)
 
       (define (get-forced-event x)
-        (if (ly:in-event-class? x 'part-combine-force-event)
-            (cons (ly:event-property x 'forced-type) (ly:event-property x 'once))
-            #f))
+        (and (ly:in-event-class? x 'part-combine-force-event)
+             (cons (ly:event-property x 'forced-type)
+                   (ly:event-property x 'once))))
       (define (part-combine-events vs)
         (if (not vs)
             '()
@@ -338,7 +338,7 @@ Only set if not set previously.
                  (prev (configuration prev-ss)))
             (if (symbol? prev)
                 (put prev))))
-        (map copy-one-state (span-state vs)))
+        (for-each copy-one-state (span-state vs)))
 
       (define (analyse-notes now-state)
         (let* ((vs1 (car (voice-states now-state)))
index 34887b0aec0bb1755223ad2838a823d44c604d88..948e56e145a5a4ea7a12f5e988c49cc2ef848afd 100644 (file)
 
      (if (not (= 0 status))
          (begin
-           (map delete-file files)
+           (for-each delete-file files)
            (exit 1)))
 
      (if (and rename-page-1 multi-page?)
index cfc088c8b37dd6cd9d069452d66745e9c066094c..25209e5a0b698e412ac53220851b0f12d7a6adb0 100644 (file)
@@ -15,7 +15,7 @@
 ;;;; You should have received a copy of the GNU General Public License
 ;;;; along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
-(map
+(for-each
  (lambda (sym)
    (set! safe-objects (cons (cons sym (primitive-eval sym))
                             safe-objects)))
index c0c226d7c2268cdc907e523aa0b212accb537a06..31cb1e8d48c2d35565127a0117d9d77e4ae0f0d7 100644 (file)
                         ((record-constructor ,record) ,@(map car slots*))))
          (set! ,$copy-record
                (lambda (record)
-                 (,$make-record ,@(apply
-                                   append
-                                   (map (lambda (slot)
-                                          (list (symbol->keyword slot)
-                                                (list (make-symbol reader-format slot) 'record)))
-                                        (map car slots*))))))
+                 (,$make-record ,@(append-map
+                                   (lambda (slot)
+                                     (list (symbol->keyword slot)
+                                           (list (make-symbol reader-format slot) 'record)))
+                                   (map car slots*)))))
          ,@(map (lambda (s)
                   `(set! ,(make-symbol reader-format (car s))
                          (record-accessor ,record (quote ,(car s)))))
index 65852fc305a0ba9469784a69372886d6e0a14251..0833382b6132c9a675572e4c0c8179a6829e4061 100644 (file)
@@ -246,16 +246,16 @@ the partial ellipse until 7*PI/2.  For example, in pseudo-code:
 \n((0.0 . 2) (PI/2 . 3) (PI . -2) (3*PI/2 . -3)\
 \n(2*PI . 2) (5*PI/2 . 3) (3*PI . -2) (7*PI/2 . -3))
 "
-    (apply append
-           (map (lambda (adder)
-                  (map (lambda (quadrant)
-                         (cons (+ adder (car quadrant))
-                               (cdr quadrant)))
-                       `((0.0 . (,x-radius . 0.0))
-                         (,PI-OVER-TWO . (0.0 . ,y-radius))
-                         (,PI . (,(- x-radius) . 0.0))
-                         (,THREE-PI-OVER-TWO . (0.0 . ,(- y-radius))))))
-                `(0.0 ,TWO-PI))))
+    (append-map
+     (lambda (adder)
+       (map (lambda (quadrant)
+              (cons (+ adder (car quadrant))
+                    (cdr quadrant)))
+            `((0.0 . (,x-radius . 0.0))
+              (,PI-OVER-TWO . (0.0 . ,y-radius))
+              (,PI . (,(- x-radius) . 0.0))
+              (,THREE-PI-OVER-TWO . (0.0 . ,(- y-radius))))))
+     `(0.0 ,TWO-PI)))
 
   (define
     (insert-in-ordered-list ordering-function value inlist cutl? cutr?)
@@ -304,7 +304,7 @@ then reduce using @var{min-max}:
 "
     (reduce min-max
             (if (eq? min-max min) 100000 -100000)
-            (map (lambda (x) (side x)) l)))
+            (map side l)))
 
   (let*
       (;; the outside limit of the x-radius
@@ -647,12 +647,12 @@ with optional arrows of @code{max-size} on start and end controlled by
          (null (cons 0 0))
          (arrow-1
           (ly:make-stencil
-           `(polygon (quote ,(concatenate (map complex-to-offset p1s)))
+           `(polygon (quote ,(append-map complex-to-offset p1s))
                      0.0
                      #t) null null))
          (arrow-2
           (ly:make-stencil
-           `(polygon (quote ,(concatenate (map complex-to-offset p2s)))
+           `(polygon (quote ,(append-map complex-to-offset p2s))
                      0.0
                      #t) null null ) )
          (thickness (min (/ distance 12) 0.1))
index d62f0aa0178211e5d4e58b3216aefedc233c6319..e32d712e19ae97986b84422a2e99b2fa8dd5fe22 100644 (file)
         (elt (ly:music-property mus 'element)))
     (cond
      ((pair? elts)
-      (map make-harmonic elts))
+      (for-each make-harmonic elts))
      ((ly:music? elt)
       (make-harmonic elt))
      ((music-is-of-type? mus 'note-event)
index e2102e759ef0705cf26b51ac3e28a91cb188e9fb..82e22fe59197e97ae601849beccbcafa7e495626 100644 (file)
@@ -381,8 +381,8 @@ a fresh copy of the list-head is made."
   ;; Normalize to given beat, extract the beats and join them to one list
   (let* ((beat (calculate-compound-base-beat-full time-sig))
          (normalized (map (lambda (f) (normalize-fraction f beat)) time-sig))
-         (beats (map (lambda (f) (reverse (cdr (reverse f)))) normalized)))
-    (apply append beats)))
+         (beats (map (lambda (f) (drop-right f 1)) normalized)))
+    (concatenate beats)))
 
 (define-public (calculate-compound-beat-grouping time-sig)
   (cond
index 8b33cbaccc26ed5baf9d9c154efaea7f00e03938..2407fe3766239939a0c33d162eae75c7900a472e 100644 (file)
@@ -70,7 +70,7 @@ is then separated.
      (if (equal? (node-value node) "")
          (string-append
           (if xml-name "\n" "")
-          (apply string-append (map musicxml-node->string (node-children node))))
+          (string-concatenate (map musicxml-node->string (node-children node))))
          (node-value node))
      (if xml-name (close-tag xml-name) "")
      (if xml-name "\n" ""))))
@@ -80,8 +80,7 @@ is then separated.
    "\n"
    (open-tag (node-name node) (node-attributes node) '())
    (if (equal? (node-value node) "")
-       (string-append
-        (apply string-append (map xml-node->string (node-children node))))
+       (string-concatenate (map xml-node->string (node-children node)))
        (node-value node))
    "\n"
    (close-tag (node-name node))))
@@ -224,7 +223,7 @@ is then separated.
 
   (string-append
    "<" (symbol->string tag)
-   (apply string-append (map dump-attr (filter candidate? attrs)))
+   (string-concatenate (map dump-attr (filter candidate? attrs)))
    ">"))
 
 (define (close-tag name)
index 5d40da8cfaaabfeafd3efc7e9368e1497669e4e8..9bc12cc53c170745b4c5011cfb3b72b059a4d6e9 100644 (file)
@@ -321,14 +321,14 @@ along with @var{minimum-fret}, @var{maximum-stretch}, and
 if no fingering is present."
       (let* ((articulations (ly:event-property ev 'articulations))
              (finger-found #f))
-        (map (lambda (art)
-               (let* ((num (ly:event-property art 'digit)))
-
-                 (if (and (ly:in-event-class? art 'fingering-event)
-                          (number? num)
-                          (> num 0))
-                     (set! finger-found num))))
-             articulations)
+        (for-each (lambda (art)
+                    (let* ((num (ly:event-property art 'digit)))
+
+                      (if (and (ly:in-event-class? art 'fingering-event)
+                               (number? num)
+                               (> num 0))
+                          (set! finger-found num))))
+                  articulations)
         finger-found))
 
     (define (delete-free-string string)
@@ -582,7 +582,7 @@ only ~a fret labels provided")
   (make-vcenter-markup
    (format #f "~a" fret-number)))
 
-;; The 5-string banjo has got a extra string, the fifth (duh), which
+;; The 5-string banjo has got an extra string, the fifth (duh), which
 ;; starts at the fifth fret on the neck.  Frets on the fifth string
 ;; are referred to relative to the other frets:
 ;;   the "first fret" on the fifth string is really the sixth fret
index 09c344959976b172fa9d502f43d59187199b8207..33a610d9c0bb5873f5faf0bdb4f9d759a5721889 100755 (executable)
@@ -46,6 +46,9 @@ class CrossRefs:
   def addNode(self, nodeName, manualName, fileName):
     global returnCode
 #    print "Node: ", nodeName, " in ", manualName, " found in ", fileName
+    if "\\" in nodeName:
+      returnCode = 1
+      print "nodeName: ", nodeName, " in ", fileName, " contains backslash"
     if manualName+"/"+nodeName in self.Nodes.keys():
       print "Error: Duplicate nodename ",nodeName, " in ", fileName, " and ", self.Nodes[manualName+"/"+nodeName][1]
       returnCode=1
@@ -53,6 +56,10 @@ class CrossRefs:
     self.nodeNames[nodeName] = fileName
 
   def addRef(self, toManualName, toHeading, inFileName):
+    global returnCode
+    if "\\" in toHeading:
+      returnCode = 1
+      print "ref to: ", toHeading, " in ", inFileName, " contains backslash"
 #    if inFileName == "notation/vocal.itely":
 #      print "Ref to ", toManualName, "/",toHeading, " found in ", inFileName
     self.Refs.append([toManualName + "/" + toHeading, inFileName])
index 7acd2e29dac7ee1f908a9bc0f5ec50131d798041..641d763713c979c06dfe0621e19959303765403d 100644 (file)
@@ -24,6 +24,7 @@
 import os
 import sys
 import re
+import shutil
 
 """
 @relocate-preamble@
@@ -129,18 +130,25 @@ def get_option_parser ():
               action='store_true',
               dest='diff_version_update',
               default=False)
-    
+
     p.add_option ("-s", '--show-rules',
               help=_ ("show rules [default: -f 0, -t %s]") % program_version,
               dest='show_rules',
               action='store_true', default=False)
-    
+
     p.add_option ('-t', '--to',
               help=_ ("convert to VERSION [default: %s]") % program_version,
               metavar=_ ('VERSION'),
               action='store',
               dest="to_version",
               default='')
+
+    p.add_option ('-b', '--backup-numbered',
+              help=_ ("make a numbered backup [default: filename.ext~]"),
+              action='store_true',
+              dest="backup_numbered",
+              default='')
+
     p.add_option ('-w', '--warranty', help=_ ("show warranty and copyright"),
            action='store_true',
            ),
@@ -152,8 +160,6 @@ def get_option_parser ():
     
     return p
 
-
-
 def str_to_tuple (s):
     return tuple ([int(n) for n in s.split ('.')])
 
@@ -182,13 +188,15 @@ def show_rules (file, from_version, to_version):
 
 def do_conversion (str, from_version, to_version):
     """Apply conversions from FROM_VERSION to TO_VERSION.  Return
-tuple (LAST,STR), with the last successful conversion and the resulting
-string."""
+tuple (LAST,LASTCHANGED,STR,ERRORS), with the last applied conversion,
+the last conversion resulting in a change, the resulting
+string and the number of errors."""
     conv_list = get_conversions (from_version, to_version)
 
     ly.progress (_ ("Applying conversion: "), newline = False)
 
     last_conversion = None
+    last_change = None
     errors = 0
     try:
         for x in conv_list:
@@ -197,8 +205,11 @@ string."""
                 ly.progress (', ', newline = False)
             else:
                 ly.progress (tup_to_str (x[0]))
-            str = x[1] (str)
+            newstr = x[1] (str)
             last_conversion = x[0]
+            if (newstr != str):
+                last_change = last_conversion
+            str = newstr
 
     except convertrules.FatalConversionError:
         ly.error (_ ("Error while converting")
@@ -206,9 +217,7 @@ string."""
                   + _ ("Stopping at last successful rule"))
         errors += 1
 
-    return (last_conversion, str, errors)
-
-
+    return (last_conversion, last_change, str, errors)
 
 def guess_lilypond_version (input):
     m = lilypond_version_strict_re.search (input)
@@ -230,6 +239,19 @@ class InvalidVersion (Exception):
     def __init__ (self, version):
       self.version = version
 
+def back_up (file, numbered):
+    if numbered:
+      n = 0
+      while True:
+        n = n + 1
+        back_up = file + '.~' + str(n) + '~'
+        if not os.path.exists (back_up):
+            break
+    else:
+      back_up = file + '~'
+    shutil.copy2 (file, back_up)
+    return back_up
+
 def do_one_file (infile_name):
     ly.progress (_ (u"Processing `%s\'... ") % infile_name, True)
 
@@ -259,13 +281,16 @@ def do_one_file (infile_name):
         raise InvalidVersion (".".join ([str(n) for n in from_version]))
 
 
-    (last, result, errors) = do_conversion (input, from_version, to_version)
+    (last, last_change, result, errors) = \
+        do_conversion (input, from_version, to_version)
 
     if global_options.force_current_version and \
             (last is None or last == to_version):
         last = str_to_tuple (program_version)
     if last:
         if global_options.diff_version_update:
+            # Note that last_change can be set even if the result is
+            # the same if two conversion rules cancelled out
             if result == input:
                 # check the y in x.y.z  (minor version number)
                 previous_stable = (last[0], 2*(last[1]/2), 0)
@@ -276,6 +301,8 @@ def do_one_file (infile_name):
                 else:
                     # make no (actual) change to the version number
                     last = from_version
+            else:
+                last = last_change
 
         newversion = r'\version "%s"' % tup_to_str (last)
         if lilypond_version_re.search (result):
@@ -287,11 +314,7 @@ def do_one_file (infile_name):
     ly.progress ('\n')
 
     if global_options.edit:
-        try:
-            os.remove (infile_name + '~')
-        except:
-            pass
-        os.rename (infile_name, infile_name + '~')
+        backup = back_up (infile_name, global_options.backup_numbered)
         outfile = open (infile_name, 'w')
     else:
         outfile = sys.stdout
@@ -363,5 +386,4 @@ def main ():
             "There were %d errors.", errors) % errors)
         sys.exit (1)
 
-
 main ()
index 20d13aa5082d754708d1168f89f749c7b7220d57..498682ef26bad2902abc22f1e4e4090e200567cd 100644 (file)
@@ -80,11 +80,21 @@ class meta_formatter (formatter):
      return str (val2);
 class tempo_formatter (formatter):
    def format_vals (self, val1, val2):
-     return str (val2) + " msec/quarter"
+    return str (ord (val2[0])*65536 + ord (val2[1])*256 + ord (val2[2])) \
+        + " msec/quarter"
 
 class time_signature_formatter (formatter):
    def format_vals (self, val1, val2 = ""):
-     return str (val2)   # TODO
+       from fractions import Fraction
+       # if there are more notated 32nd notes per midi quarter than 8,
+       # we display a fraction smaller than 1 as scale factor.
+       r = Fraction(8, ord (val2[3]))
+       if r == 1:
+           ratio =""
+       else:
+           ratio = " *" + str (r)
+       return str (ord (val2[0])) + "/" + str(1 << ord (val2[1])) + ratio \
+           + ", metronome "  + str (Fraction (ord (val2[2]), 96))
 class key_signature_formatter (formatter):
    def format_vals (self, val1, val2):
        key_names = ['F', 'C', 'G', 'D', 'A', 'E', 'B']
index 0b04186db4b8bde4c9293a4ef0f2e2281e127390..3e527e2eb79bcb6abadc416ba70e52558b4b474b 100644 (file)
@@ -3,6 +3,3 @@ $(outdir)/%: %.m4
 
 %.gz: %
        gzip -c9 $< > $@
-
-$(outdir)/%.css: $(CSS_DIRECTORY)/%.css
-       ln -f $< $@
index 1b998b938dfc3eb6b2c0bbb13dc0aa1c06be10e3..7e29760e42bfe15ef58c9b2ac62f58bf934ae820 100644 (file)
@@ -1,10 +1,12 @@
-.PHONY : all clean bin-clean default dist exe help html lib TAGS\
+.PHONY : all clean bin-clean default dist exe help html lib man TAGS\
         po doc doc-stage-1 WWW-1 WWW-2 WWW-post local-WWW-1 local-WWW-2\
-        log-clean
+        local-all local-clean local-bin-clean local-doc log-clean
 
-all:    default
+all: default
        $(LOOP)
 
+local-all: default
+
 man:
        $(LOOP)
 
@@ -37,8 +39,9 @@ generic-help:
        @echo "Targets specific to current directory:"
 
 help: generic-help local-help
-       @echo "Generic targets that recurse into subdirectories*:"
+       @echo "Generic targets that recurse into subdirectories:"
        @echo "  all          update everything except documentation with images"
+       @echo "               (same as the empty target)"
        @echo "  clean        remove all generated stuff in $(outdir)"
        @echo "  bin-clean    same as clean, except that mf/out is preserved"
        @echo "  doc          update documentation with images in directory \`out-www'"
@@ -52,7 +55,7 @@ help: generic-help local-help
        @echo "         any of the above commands to the current directory."
        @echo
        @echo "Other generic targets:"
-       @echo "  default      same as the empty target"
+       @echo "  default      same as \`make all', but restricted to the current directory"
        @echo "  exe          update all executables"
        @echo "  help         this help"
        @echo "  lib          update all libraries"
index 5b6ad17d91a0a204a1470509e61ea3cdac5e19e7..5be005a1985dc7e998a0d85df79b40c48f4784fe 100644 (file)
@@ -2,13 +2,13 @@
 
 # we want to see botched results as well.
 $(outdir)/%.dvi: %.mf
-       -MFINPUTS=$(src-dir) $(METAFONT) "\scrollmode; input $<;"
+       -$(DO_MF_DEP) MFINPUTS=$(src-dir) $(METAFONT) "\scrollmode; input $<;"
        gftodvi $(basename $<)
        mv $(basename $<).dvi $(outdir)
        rm $(basename $<).*gf
 
 $(outdir)/%.tfm $(outdir)/%.log: %.mf
-       MFINPUTS=$(src-dir) $(METAFONT) "\mode:=$(MFMODE); nonstopmode; input $<;" $(METAFONT_QUIET)
+       $(DO_MF_DEP) MFINPUTS=$(src-dir) $(METAFONT) "\mode:=$(MFMODE); nonstopmode; input $<;" $(METAFONT_QUIET)
 # Let's keep this log output, it saves another mf run.
        mv $(basename $(@F)).log $(basename $(@F)).tfm $(outdir)
        rm -f $(basename $(@F)).*gf  $(basename $(@F)).*pk
@@ -19,7 +19,7 @@ $(outdir)/%.tfm $(outdir)/%.log: %.mf
 # the soft link for mf2pt1.mp is for recent mpost versions
 # which no longer dump a .mem file
 $(outdir)/%.pfb: %.mf $(outdir)/mf2pt1.mem $(outdir)/%.log
-       TMP=`mktemp -d $(outdir)/pfbtemp.$*.XXXXXXXXX` \
+       $(DO_MF_DEP) TMP=`mktemp -d $(outdir)/pfbtemp.$*.XXXXXXXXX` \
        && ( cd $$TMP \
                && ln -s ../mf2pt1.mem . \
                && ln -s ../../mf2pt1.mp . \
index aeb75c5f004cf1ab1da0e78b985dfdd93dab11be..73f35a53ed68cd0490ccaa367b5f58fe83739492 100644 (file)
@@ -15,3 +15,24 @@ METAFONT_QUIET = >/dev/null
 else
 METAFONT_QUIET =
 endif
+
+# Find the metafont file $(1) within the source dirs and return its path.
+# If not found, return $(outdir)/$(1) assuming that it is a generated file.
+find-mf = \
+$(firstword \
+       $(wildcard $(src-dir)/$(1)) \
+       $(wildcard $(top-src-dir)/mf/$(1)) \
+       $(outdir)/$(1) \
+)
+
+# Recursively scan the metafont .mf file $(1) for "input X;"
+# and return all dependencies.
+scan-mf = \
+$(foreach f, $(shell test -f $(1) && sed -ne "/^[[:space:]]*input[[:space:]]/s/^[[:space:]]*input\([^.;]*\)\(.mf;\|;\)/\1.mf/p" $(1)), \
+       $(call find-mf,$(f)) \
+       $(call scan-mf,$(call find-mf,$(f))) \
+)
+
+# Find dependencies for the target $@, based on the metafont source file $<,
+# and write the dependencies to a .dep file.
+DO_MF_DEP = ( echo ./$@: $(call scan-mf,$<) > $(basename $@).dep ) &&
index 838219a673baaf5fc3c74874c35300f08296eea4..063a346091e4c7860fcf815dac54342382009f7a 100644 (file)
@@ -24,7 +24,7 @@ endif
        touch $@
 
 # Copy files while tracking their dependencies.
-$(outdir)/%.texi: %.texi
+$(outdir)/%.texi: %.texi $(outdir)/version.itexi
        mkdir -p $(dir $@)
        $(DO_TEXI_DEP) cp -f $< $@
 
@@ -82,8 +82,8 @@ $(outdir)/%.html.omf: %.texi
 $(outdir)/%.pdf.omf: %.texi
        $(call GENERATE_OMF,pdf)
 
-$(outdir)/version.%: $(top-src-dir)/VERSION
+$(outdir)/version.itexi: $(top-src-dir)/VERSION
        $(PYTHON) $(top-src-dir)/scripts/build/create-version-itexi.py > $@
 
-$(outdir)/weblinks.%: $(top-src-dir)/VERSION
+$(outdir)/weblinks.itexi: $(top-src-dir)/VERSION
        $(PYTHON) $(top-src-dir)/scripts/build/create-weblinks-itexi.py > $@
index d164356555ded29e50d405e3364a554d27f99f4c..20170d33b3e149451822e0af17d2a6fba0d2c887 100644 (file)
@@ -17,10 +17,10 @@ $(firstword \
        $(outdir)/$(1) \
 )
 
-# Recursively scan the file $(1) for @include, search for included files
-# within the texinfo include dirs, and return all dependencies.
+# Recursively scan the file $(1) for @include and @verbatiminclude, search for
+# included files within the texinfo include dirs, and return all dependencies.
 scan-texi = \
-$(foreach f, $(shell sed -ne "/^@include[[:space:]]/s/@include//p" $(1)), \
+$(foreach f, $(shell test -f $(1) && sed -ne "/^@\(verbatim\)\?include[[:space:]]/s/@\(verbatim\)\?include//p" $(1)), \
        $(call find-texi,$(f)) \
        $(call scan-texi,$(call find-texi,$(f))) \
 )
@@ -31,8 +31,6 @@ DO_TEXI_DEP = ( echo ./$@: $(call scan-texi,$<) > $(basename $@).dep ) &&
 
 TEXINFO_PAPERSIZE_OPTION= $(if $(findstring $(PAPERSIZE),a4),,-t @afourpaper)
 
-DOCUMENTATION_INCLUDES += -I $(top-src-dir)/Documentation
-
 MAKEINFO_FLAGS += --enable-encoding --error-limit=0 $(DOCUMENTATION_INCLUDES)
 MAKEINFO = LANG= $(MAKEINFO_PROGRAM) $(MAKEINFO_FLAGS)
 
index f2fc5610ed65d60dd327593b34a07bc2bce5da4b..ca9a782aa17e5212df8abe2d6ee718f8e997c595 100644 (file)
@@ -1,7 +1,3 @@
 TO_TOP_FILES=$(addprefix $(outdir)/, $(addsuffix .txt, $(README_TOP_FILES)))
 
-DOCUMENTATION_INCLUDES +=\
- -I $(top-src-dir)/Documentation/usage\
- -I $(top-src-dir)/Documentation/contributor\
-
 #