]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'lilypond/translation' of ssh://git.sv.gnu.org/srv/git/lilypond into...
authorTill Paala <till.rettig@gmx.de>
Sat, 10 Sep 2011 18:45:58 +0000 (21:45 +0300)
committerTill Paala <till.rettig@gmx.de>
Sat, 10 Sep 2011 18:45:58 +0000 (21:45 +0300)
437 files changed:
Documentation/changes.tely
Documentation/contributor/administration.itexi
Documentation/contributor/build-notes.itexi
Documentation/contributor/doc-translation-list.itexi
Documentation/contributor/doc-work.itexi
Documentation/contributor/lsr-work.itexi
Documentation/contributor/programming-work.itexi
Documentation/contributor/source-code.itexi
Documentation/contributor/website-work.itexi
Documentation/cs/learning/templates.itely
Documentation/cs/macros.itexi
Documentation/cs/translations.itexi
Documentation/cs/usage/lilypond-book.itely
Documentation/css/lilypond-manuals.css
Documentation/de/learning/templates.itely
Documentation/de/macros.itexi
Documentation/de/notation/ancient.itely
Documentation/de/notation/chords.itely
Documentation/de/notation/editorial.itely
Documentation/de/notation/expressive.itely
Documentation/de/notation/fretted-strings.itely
Documentation/de/notation/input.itely
Documentation/de/notation/keyboards.itely
Documentation/de/notation/pitches.itely
Documentation/de/notation/repeats.itely
Documentation/de/notation/rhythms.itely
Documentation/de/notation/simultaneous.itely
Documentation/de/notation/staff.itely
Documentation/de/notation/text.itely
Documentation/de/notation/vocal.itely
Documentation/de/notation/wind.itely
Documentation/de/notation/world.itely
Documentation/de/translations.itexi
Documentation/de/usage/lilypond-book.itely
Documentation/es/learning/templates.itely
Documentation/es/macros.itexi
Documentation/es/notation/ancient.itely
Documentation/es/notation/chords.itely
Documentation/es/notation/editorial.itely
Documentation/es/notation/expressive.itely
Documentation/es/notation/fretted-strings.itely
Documentation/es/notation/input.itely
Documentation/es/notation/keyboards.itely
Documentation/es/notation/pitches.itely
Documentation/es/notation/repeats.itely
Documentation/es/notation/rhythms.itely
Documentation/es/notation/simultaneous.itely
Documentation/es/notation/staff.itely
Documentation/es/notation/text.itely
Documentation/es/notation/vocal.itely
Documentation/es/notation/wind.itely
Documentation/es/notation/world.itely
Documentation/es/translations.itexi
Documentation/es/usage/lilypond-book.itely
Documentation/extending/programming-interface.itely
Documentation/extending/scheme-tutorial.itely
Documentation/fr/learning/templates.itely
Documentation/fr/learning/tweaks.itely
Documentation/fr/macros.itexi
Documentation/fr/notation/ancient.itely
Documentation/fr/notation/chords.itely
Documentation/fr/notation/editorial.itely
Documentation/fr/notation/expressive.itely
Documentation/fr/notation/fretted-strings.itely
Documentation/fr/notation/input.itely
Documentation/fr/notation/keyboards.itely
Documentation/fr/notation/notation-appendices.itely
Documentation/fr/notation/pitches.itely
Documentation/fr/notation/repeats.itely
Documentation/fr/notation/rhythms.itely
Documentation/fr/notation/simultaneous.itely
Documentation/fr/notation/staff.itely
Documentation/fr/notation/text.itely
Documentation/fr/notation/vocal.itely
Documentation/fr/notation/wind.itely
Documentation/fr/notation/world.itely
Documentation/fr/translations.itexi
Documentation/fr/usage/lilypond-book.itely
Documentation/hu/macros.itexi
Documentation/hu/translations.itexi
Documentation/hu/usage/lilypond-book.itely
Documentation/included/authors.itexi
Documentation/included/compile.itexi
Documentation/included/font-table.ly
Documentation/included/note-head-style.ly
Documentation/included/percussion-chart.ly
Documentation/included/simple.ly
Documentation/it/GNUmakefile
Documentation/it/included/GNUmakefile [new file with mode: 0644]
Documentation/it/included/generating-output.itexi [new file with mode: 0644]
Documentation/it/included/helpus.itexi [new file with mode: 0644]
Documentation/it/learning/templates.itely
Documentation/it/macros.itexi
Documentation/it/translations.itexi
Documentation/it/usage/lilypond-book.itely
Documentation/it/web.texi
Documentation/it/web/community.itexi
Documentation/it/web/download.itexi
Documentation/it/web/introduction.itexi
Documentation/it/web/manuals.itexi
Documentation/it/web/news-front.itexi [deleted file]
Documentation/ja/learning/templates.itely
Documentation/ja/macros.itexi
Documentation/ja/notation.tely
Documentation/ja/notation/changing-defaults.itely [new file with mode: 0644]
Documentation/ja/notation/editorial.itely
Documentation/ja/notation/expressive.itely
Documentation/ja/notation/input.itely
Documentation/ja/notation/pitches.itely
Documentation/ja/notation/repeats.itely
Documentation/ja/notation/rhythms.itely
Documentation/ja/notation/simultaneous.itely
Documentation/ja/notation/staff.itely
Documentation/ja/notation/text.itely
Documentation/ja/translations.itexi
Documentation/ja/usage/lilypond-book.itely
Documentation/learning/common-notation.itely
Documentation/learning/templates.itely
Documentation/learning/tweaks.itely
Documentation/lilypond-texi2html.init
Documentation/macros.itexi
Documentation/nl/macros.itexi
Documentation/nl/translations.itexi
Documentation/notation/ancient.itely
Documentation/notation/changing-defaults.itely
Documentation/notation/chords.itely
Documentation/notation/editorial.itely
Documentation/notation/expressive.itely
Documentation/notation/fretted-strings.itely
Documentation/notation/input.itely
Documentation/notation/keyboards.itely
Documentation/notation/notation-appendices.itely
Documentation/notation/pitches.itely
Documentation/notation/repeats.itely
Documentation/notation/rhythms.itely
Documentation/notation/simultaneous.itely
Documentation/notation/spacing.itely
Documentation/notation/staff.itely
Documentation/notation/text.itely
Documentation/notation/vocal.itely
Documentation/notation/wind.itely
Documentation/notation/world.itely
Documentation/pictures/architecture-diagram.png
Documentation/po/fr.po
Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly
Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly
Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly
Documentation/snippets/ancient-fonts.ly
Documentation/snippets/changing-a-single-notes-size-in-a-chord.ly
Documentation/snippets/changing-the-staff-size.ly
Documentation/snippets/clip-systems.ly
Documentation/snippets/controlling-tuplet-bracket-visibility.ly
Documentation/snippets/displaying-complex-chords.ly
Documentation/snippets/guitar-slides.ly
Documentation/snippets/lyrics-alignment.ly
Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly
Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly
Documentation/snippets/new/ancient-fonts.ly [new file with mode: 0644]
Documentation/snippets/new/clip-systems.ly
Documentation/snippets/new/displaying-complex-chords.ly
Documentation/snippets/new/guitar-slides.ly
Documentation/snippets/new/unfretted-headword.ly
Documentation/snippets/preventing-extra-naturals-from-being-automatically-added.ly
Documentation/snippets/unfretted-headword.ly
Documentation/snippets/volta-text-markup-using-repeatcommands.ly
Documentation/translations.itexi
Documentation/usage/external.itely
Documentation/usage/lilypond-book.itely
Documentation/usage/running.itely
Documentation/usage/updating.itely
Documentation/web/community.itexi
Documentation/web/introduction.itexi
Documentation/web/ly-examples/granados.ly
Documentation/web/news-front.itexi
Documentation/web/news.itexi
Documentation/zh/macros.itexi
Documentation/zh/translations.itexi
VERSION
flower/file-name.cc
flower/include/polynomial.hh
flower/include/warn.hh
flower/polynomial.cc
flower/warn.cc
input/regression/accidental-forced-tie-barline.ly [deleted file]
input/regression/accidental-forced-tie.ly
input/regression/accidental-tie-overridden.ly [deleted file]
input/regression/accidental-tie.ly
input/regression/backend-svg.ly
input/regression/bar-line-dashed.ly [deleted file]
input/regression/bar-line-dotted.ly [deleted file]
input/regression/bar-line-thick.ly [deleted file]
input/regression/bar-line-tick.ly [deleted file]
input/regression/bar-lines.ly [new file with mode: 0644]
input/regression/beam-knee-symmetry.ly
input/regression/beam-multiple-cross-staff.ly
input/regression/beam-quant-standard.ly
input/regression/beam-rest-extreme.ly [new file with mode: 0644]
input/regression/bom-mark.ly [new file with mode: 0644]
input/regression/break-alignment-anchor-alignment.ly
input/regression/breathing-sign-ancient.ly
input/regression/chord-capo.ly [new file with mode: 0644]
input/regression/clip-systems.ly
input/regression/color.ly
input/regression/completion-heads-factor.ly
input/regression/completion-rest.ly
input/regression/context-string-tuning.ly [new file with mode: 0644]
input/regression/cue-clef-begin-of-score.ly
input/regression/cue-clef-new-line.ly
input/regression/display-lily-tests.ly
input/regression/figured-bass-ignore-rest.ly
input/regression/finger-chords-order.ly
input/regression/flags-default.ly
input/regression/flags-in-scheme.ly
input/regression/flags-straight-stockhausen-boulez.ly
input/regression/flags-straight.ly
input/regression/font-bogus-ligature.ly
input/regression/footnote-auto-numbering-page-reset.ly
input/regression/footnote-auto-numbering.ly
input/regression/footnote-break-visibility.ly
input/regression/footnote-footer-padding.ly
input/regression/footnote-spanner.ly
input/regression/footnote.ly
input/regression/fret-diagrams-size.ly
input/regression/glissando-accidental.ly [new file with mode: 0644]
input/regression/grace-sync.ly
input/regression/graphviz.ly
input/regression/grid-lines.ly
input/regression/incompatible-stem-warning.ly
input/regression/les-nereides.ly
input/regression/lilypond-book/GNUmakefile
input/regression/lilypond-book/html-musicxml-file-compressed.htmly [new file with mode: 0644]
input/regression/lilypond-book/html-musicxml-file-options.htmly [new file with mode: 0644]
input/regression/lilypond-book/html-musicxml-file.htmly [new file with mode: 0644]
input/regression/lilypond-book/include.mxl [new file with mode: 0644]
input/regression/lilypond-book/include.xml [new file with mode: 0644]
input/regression/lilypond-book/tex-musicxml-file-options.lytex [new file with mode: 0644]
input/regression/lilypond-book/tex-musicxml-file.lytex [new file with mode: 0644]
input/regression/lilypond-book/texinfo-musicxml-file-options.tely [new file with mode: 0644]
input/regression/lilypond-book/texinfo-musicxml-file.tely [new file with mode: 0644]
input/regression/loglevels.ly [new file with mode: 0644]
input/regression/lyric-combine.ly
input/regression/metronome-text.ly
input/regression/midi/key-option.ly
input/regression/midi/quantize-duration-2.ly
input/regression/midi/quantize-duration.ly
input/regression/midi/quantize-start.ly
input/regression/mozart-hrn3-defs.ily
input/regression/musicxml/GNUmakefile
input/regression/musicxml/book-musicxml-testsuite.py [new file with mode: 0644]
input/regression/optimal-page-breaking-hstretch.ly
input/regression/page-breaking-end-of-score.ly [new file with mode: 0644]
input/regression/part-combine.ly
input/regression/quote-during.ly
input/regression/quote-overrides.ly
input/regression/quote.ly
input/regression/repeat-unfold.ly
input/regression/repeat-volta.ly
input/regression/rest-collision-beam-note.ly
input/regression/rest-pitch.ly
input/regression/skiptypesetting-bar-check.ly
input/regression/skyline-debug.ly
input/regression/slur-avoid.ly [new file with mode: 0644]
input/regression/slur-scoring.ly
input/regression/spacing-bar-accidental.ly
input/regression/spacing-loose-grace-error.ly
input/regression/span-bar-partial.ly
input/regression/spanner-alignment.ly [new file with mode: 0755]
input/regression/stem-length-estimation.ly
input/regression/stem-length.ly [new file with mode: 0644]
input/regression/stem-pure-height-beamed.ly [new file with mode: 0644]
input/regression/stem-tremolo.ly
input/regression/string-number-around-slur.ly
input/regression/tablature-full-notation.ly
input/regression/tablature-negative-fret.ly
input/regression/tablature-zero-finger.ly
input/regression/tie-arpeggio.ly
input/regression/tie-chord.ly
input/regression/tie-semi-single.ly
input/regression/tie-single-manual.ly
input/regression/tuplet-bracket-visibility.ly
input/regression/unpure-pure-container.ly [new file with mode: 0644]
input/regression/warn-conflicting-key-signatures.ly
lily/all-font-metrics.cc
lily/axis-group-interface.cc
lily/beam-quanting.cc
lily/beam.cc
lily/bezier.cc
lily/break-alignment-interface.cc
lily/breathing-sign.cc
lily/chord-name-engraver.cc
lily/chord-tremolo-iterator.cc
lily/constrained-breaking.cc
lily/context-def.cc
lily/context-property.cc
lily/dispatcher.cc
lily/dot-column.cc
lily/dynamic-engraver.cc
lily/figured-bass-engraver.cc
lily/flag.cc [new file with mode: 0644]
lily/font-config-scheme.cc
lily/font-config.cc
lily/font-select.cc
lily/function-documentation.cc
lily/general-scheme.cc
lily/glissando-engraver.cc
lily/global-context-scheme.cc
lily/grob-property.cc
lily/grob-scheme.cc
lily/grob.cc
lily/guile-init.cc
lily/hairpin.cc
lily/includable-lexer.cc
lily/include/axis-group-interface.hh
lily/include/beam.hh
lily/include/bezier.hh
lily/include/input.hh
lily/include/item.hh
lily/include/lily-lexer.hh
lily/include/lily-parser.hh
lily/include/main.hh
lily/include/paper-column-engraver.hh
lily/include/staff-spacing.hh
lily/include/stem-tremolo.hh
lily/include/stem.hh
lily/include/unpure-pure-container.hh [new file with mode: 0644]
lily/input-scheme.cc
lily/input.cc
lily/item-scheme.cc
lily/item.cc
lily/key-engraver.cc
lily/lexer.ll
lily/lily-guile.cc
lily/lily-lexer.cc
lily/lily-parser-scheme.cc
lily/lily-parser.cc
lily/line-spanner.cc
lily/lyric-combine-music-iterator.cc
lily/main.cc
lily/multi-measure-rest.cc
lily/new-fingering-engraver.cc
lily/note-collision.cc
lily/note-spacing.cc
lily/page-breaking.cc
lily/page-layout-problem.cc
lily/pango-font.cc
lily/paper-column-engraver.cc
lily/paper-score.cc
lily/parser.yy
lily/part-combine-iterator.cc
lily/pdf-scheme.cc
lily/performance.cc
lily/pfb-scheme.cc
lily/phrasing-slur-engraver.cc
lily/program-option-scheme.cc
lily/relocate.cc
lily/rest.cc
lily/rhythmic-column-engraver.cc
lily/separation-item.cc
lily/sequential-iterator.cc
lily/skyline.cc
lily/slur-engraver.cc
lily/slur.cc
lily/source-file.cc
lily/spacing-determine-loose-columns.cc
lily/spacing-engraver.cc
lily/spacing-spanner.cc
lily/spanner-scheme.cc
lily/staff-spacing.cc
lily/stem-engraver.cc
lily/stem-tremolo.cc
lily/stem.cc
lily/stencil-scheme.cc
lily/system.cc
lily/tie-formatting-problem.cc
lily/tie-performer.cc
lily/tie.cc
lily/ttf.cc
lily/tuplet-bracket.cc
lily/unpure-pure-container.cc [new file with mode: 0644]
lily/warn-scheme.cc [new file with mode: 0644]
ly/arabic.ly
ly/engraver-init.ly
ly/grace-init.ly
ly/gregorian.ly
ly/music-functions-init.ly
ly/paper-defaults-init.ly
ly/predefined-fretboards-init.ly
ly/property-init.ly
ly/string-tunings-init.ly
make/lysdoc-rules.make
mf/feta-clefs.mf
mf/feta-generic.mf
mf/feta-scripts.mf
mf/feta-test-generic.mf
mf/feta-ties.mf [new file with mode: 0644]
python/book_base.py
python/book_docbook.py
python/book_html.py
python/book_latex.py
python/book_snippets.py
python/book_texinfo.py
python/convertrules.py
scm/backend-library.scm
scm/chord-generic-names.scm
scm/chord-name.scm
scm/define-context-properties.scm
scm/define-grob-interfaces.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/display-woodwind-diagrams.scm
scm/documentation-lib.scm
scm/flag-styles.scm
scm/font.scm
scm/fret-diagrams.scm
scm/lily-library.scm
scm/lily.scm
scm/markup-macros.scm [new file with mode: 0644]
scm/markup.scm
scm/music-functions.scm
scm/output-lib.scm
scm/parser-ly-from-scheme.scm
scm/part-combiner.scm
scm/ps-to-png.scm
scm/script.scm
scripts/abc2ly.py
scripts/build/extract_texi_filenames.py
scripts/build/lys-to-tely.py
scripts/build/output-distance.py
scripts/convert-ly.py
scripts/lilypond-book.py
scripts/midi2ly.py
tex/texinfo.tex

index fcfd6ed68b71fd8d060ae99f6436d203196de41e..2d8a66eb2363653f5439210f689f603b87e3b6da 100644 (file)
@@ -61,6 +61,20 @@ which scares away people.
 
 @end ignore
 
+@item
+The construct @code{#@{ @dots{} #@}} can now be used not just for
+constructing sequential music lists, but also for single music events,
+void music expressions, post events, markups (mostly freeing users from
+having to use the @code{markup} macro), markup lists, number
+expressions, context definitions and modifications, and a few other
+things.  If it encloses nothing or only a single music event, it no
+longer returns a sequential music list but rather a void music
+expression or just the music event itself, respectively.
+
+@item
+New command-line option @option{--loglevel=@var{level}} to control how much output
+LilyPond creates. Possible values are ERROR, WARN, BASIC_PROGRESS, PROGRESS, DEBUG.
+
 @item
 @code{\set \once} now correctly resets the property value to the previous value.
 @lilypond[fragment,quote,relative=2]
index 5c1abe6c80c5869304766cf8aed7a5896e4fc4df..fca8f01deaba015f9acc80f3edf184c47cc151e3 100644 (file)
@@ -20,7 +20,7 @@ don't fit anywhere else.
 The Contributor's Guide as a whole is still a work in progress,
 but some chapters are much more complete than others.  Chapters
 which are @qq{almost finished} should not have major changes
-without a discussion on @code{-devel}; in other chapters, a
+without a discussion on @w{@code{-devel}}; in other chapters, a
 disorganized @qq{wiki-style dump} of information is encouraged.
 
 Do not change (other than spelling mistakes) without discussion:
@@ -110,9 +110,9 @@ Currently: Francisco
 @item
 Frog Meister: is responsible for code patches from (relatively)
 inexperienced contributors.  Keeps track of patches, does initial
-reviewing of those patches, sends them to @code{-devel} when
+reviewing of those patches, sends them to @w{@code{-devel}} when
 they've had some initial review on the Frog list, pesters the
-@code{-devel} community into actually reviewing said patches, and
+@w{@code{-devel}} community into actually reviewing said patches, and
 finally pushes the patches once they're accepted.  This person is
 @emph{not} responsible for training new programmers, because that
 would be far too much work -- he job is @qq{only} to guide
@@ -528,7 +528,23 @@ can probably wrap it up with some other code-related questions.
 @node Policy decisions (finished)
 @subsection Policy decisions (finished)
 
-@subheading GOP-PROP 1: python formatting
+Here is a record the final decisions, along with links to the
+discussions.
+
+@menu
+* GOP-PROP 1 - python formatting::
+* GOP-PROP 2 - mentors and frogs::
+* GOP-PROP 3 - C++ formatting::
+* GOP-PROP 4 - lessons from 2.14::
+* GOP-PROP 5 - build system output (not accepted)::
+* GOP-PROP 6 - private mailing lists::
+* GOP-PROP 7 - developers as resources::
+* GOP-PROP 8 - issue priorities::
+* GOP-PROP 9 - behavior of make doc::
+@end menu
+
+@node GOP-PROP 1 - python formatting
+@subsubsection GOP-PROP 1 - python formatting
 
 We will follow the indentation described in PEP-8.
 @uref{http://www.python.org/dev/peps/pep-0008/}
@@ -553,8 +569,18 @@ There should be absolutely no tab characters for indentation in
 any @code{.py} file in lilypond git.  All such files should be
 converted to use spaces only.
 
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00060.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00084.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00310.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00574.html}
+@end smallexample
 
-@subheading GOP-PROP 2: mentors and frogs
+
+@node GOP-PROP 2 - mentors and frogs
+@subsubsection GOP-PROP 2 - mentors and frogs
 
 Nothing much was decided.  The list of responsibilities was
 slightly altered; see the new one in @ref{Mentors}.  We should
@@ -567,6 +593,545 @@ contributor-mentor pairs in:
 
 That's pretty much it.
 
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00311.html}
+@uref{}
+@uref{}
+@end smallexample
+
+
+@node GOP-PROP 3 - C++ formatting
+@subsubsection GOP-PROP 3 - C++ formatting
+
+Speaking academically, C++ code style is a "solved problem". Let's
+pick one of the existing solutions, and let a computer deal with
+this.  Humans should not waste their time, energy, and creativity
+manually adding tabs or spaces to source code.
+
+We have modified @code{fixcc.py} to use astyle, along with extra
+regex tweaks.
+
+@itemize
+@item
+the final script will be run @strong{blindly} on the lilypond
+source code.  We will accept whatever formatting the final version
+of this script produces, with no manual tweaking.
+
+@item
+patches which have been run through this tool will not be rejected
+for style reasons.  Any code formatting @qq{desires} which are not
+enforced by @code{fixcc.py} will not be considered grounds for
+rejecting a patch.
+
+@item
+for now, this style will not be enforced.  It is not cause for
+concern if patches which do not follow the formatting done by
+@code{fixcc.py} are pushed.  From time to time, Graham will run
+the formatter on the entire code base, and commit the resulting
+changes.
+
+In a few months, we will tighten up this policy item (with some
+sort of automatic processing), but that is outside the scope of
+this policy item and is a matter for later discussion.
+
+@item
+after the proposal is accepted, we will leave some time for
+existing patches to be accepted and pushed.  The script was
+run on the source code on @strong{2011 August 01}.
+
+@end itemize
+
+@subheading GNU code
+
+LilyPond is a GNU project, so it makes sense to follow the GNU
+coding standards.  These standards state:
+
+@quotation
+We don’t think of these recommendations as requirements, because
+it causes no problems for users if two different programs have
+different formatting styles.
+
+But whatever style you use, please use it consistently, since a
+mixture of styles within one program tends to look ugly. If you
+are contributing changes to an existing program, please follow the
+style of that program. 
+@end quotation
+
+(@uref{http://www.gnu.org/prep/standards/html_node/Formatting.html})
+
+With that in mind, we do not think that we must blindly follow the
+formatting given by the currrent version of Emacs.
+
+@subheading Implementation notes
+
+We can avoid some of the style change pollution in git history by
+ignoring whitespaces changes:
+
+@example
+git diff -w
+@end example
+
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00526.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00796.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00200.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00525.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00751.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00751.html}
+@end smallexample
+
+
+@node GOP-PROP 4 - lessons from 2.14
+@subsubsection GOP-PROP 4 - lessons from 2.14
+
+@subheading History
+
+A brief history of releases:
+
+@multitable @columnfractions .2 .2 .3
+@headitem date (YYYY-MM-DD) @tab version @tab comment
+@item 2008-10-28 @tab 2.11.63 @tab nobody checking regtests
+@item 2008-11-17 @tab 2.11.64
+@item 2008-11-29 @tab 2.11.65
+@item 2008-12-23 @tab 2.12.0
+@item 2009-01-01 @tab @tab somewhere around here, Graham becomes
+officially release manager, but Han-Wen still builds the actual
+releases
+@item 2009-01-01 @tab 2.12.1
+@item 2009-01-25 @tab 2.12.2
+@item 2009-02-28 @tab 2.13.0
+@item 2009-06-01 @tab 2.13.1 @tab note jump in time!
+@item 2009-06-27 @tab 2.13.2 @tab first Graham release?
+@item 2009-07-03 @tab 2.13.3
+@item 2009-09-09 @tab @tab Graham arrives in Glasgow, gets a
+powerful desktop computer, and begins serious work on GUB (sending
+bug reports to Jan).  It takes approximately 100 hours until GUB
+is stable enough to make regular releases.
+@item 2009-09-24 @tab 2.13.4
+@item 2009-10-02 @tab 2.13.5
+@item 2009-10-22 @tab 2.13.6
+@item 2009-11-05 @tab 2.13.7
+@item ...
+@item 2010-01-13 @tab 2.12.3
+@item ...
+@item 2010-03-19 @tab 2.13.16 @tab Bug squad starts doing a few
+regtest comparisons, but IIRC the effort dies out after a few
+weeks (BLUE)
+@item ...
+@item 2010-08-04 @tab 2.13.29 @tab Phil starts checking regtests (BLUE)
+@item ...
+@item 2011-01-12 @tab 2.13.46 @tab release candidate 1 (GREEN)
+@item ...
+@item 2011-05-30 @tab 2.13.63 @tab release candidate 7 (GREEN)
+@item 2011-06-06 @tab 2.14.0
+@end multitable
+
+@c A graphical display of bugs:
+@c 
+@c @image{bugs-2.13-visualization,png}
+@c @image{zoom-2.13-visualization,png}
+
+@subheading Carl's analysis of the bugs
+
+A @file{csv} spreadsheet is available.
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00852.html}
+@end smallexample
+
+@example
+@uref{lilypond-issues-analysis.csv}
+@uref{lilypond-issues-analysis-trim-duplicates.csv}
+@end example
+
+There 148 issues marked with Priority=Critical in the tracker.
+
+I've done an analysis, and it looks to me like there was initially
+a backlog of critical issues that weren't fixed, and little work
+was being done to eliminate critical issues.
+
+Somewhere about 2010-08-01, critical issues started to disappear,
+but occasional new ones appeared.
+
+There were a couple of major changes that introduced unanticipated
+regressions (new spacing code, beam collision avoidance).  These
+produced more than the expected number of regressions.
+
+It appears to me that we didn't really get serious about
+eliminating critical bugs until about 2010-06-15 or so.  After
+that point, the number of critical bugs more-or-less steadily
+decreased until we got to a release candidate.
+
+Of particular interest, the first release candidate of 2.14 was
+released on 2011-01-12.  Over the next 10 days, about a dozen bugs
+were reported and fixed.  Release candidate 2 came out on
+2011-02-09.   No surge of bugs occurred with this release.
+Candidate 3 came out on 2011-03-13; we got 2 bugs per week.
+Candidate 4 came out on 2011-03-29; 2 new bugs.  Candidate 6 came
+out on 2011-04-07.  We got a couple of bugs per week.
+
+@subheading Notes, commentary, and opinions
+
+@example
+Han-Wen: Overall, I think this cycle took too long
+Mike: I agree
+Graham: +1
+@end example
+
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-06/msg00797.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00364.html}
+@uref{}
+@end smallexample
+
+
+@node GOP-PROP 5 - build system output (not accepted)
+@subsubsection GOP-PROP 5 - build system output (not accepted)
+
+This proposal was too broad; after a month of discussion, Graham
+withdrew the proposal.  Portions of it will be introduced in later
+proposals.
+
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00320.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00527.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00753.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg01042.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00116.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00310.html}
+@end smallexample
+
+
+@node GOP-PROP 6 - private mailing lists
+@subsubsection GOP-PROP 6 - private mailing list
+
+Potentially sensitive or private matters will be referred to
+Graham.  He will then decide who should discuss the matter on an
+ad-hoc basis, and forward or CC them on future emails.
+
+For emphasis, the project administrators are Han-Wen, Jan, and
+Graham; those three will always be CC'd on any important
+discussions.
+
+The lilypond-hackers mailing list will be removed.
+
+@subheading History
+
+There is some unhappy history about this idea in our development
+community:
+
+@example
+@uref{http://lists.gnu.org/archive/html/lilypond-devel/2010-09/msg00178.html}
+@uref{http://news.lilynet.net/spip.php?article121}
+@uref{http://lists.gnu.org/archive/html/lilypond-devel/2010-11/msg00076.html}
+@end example
+
+@subheading Other projects
+
+The idea of private mailing lists is hardly uncommon in
+open-source software.  For example,
+
+@example
+@uref{http://lwn.net/Articles/394660/}   about debian-private
+@uref{http://subversion.apache.org/mailing-lists.html}  private@@
+@uref{http://www.freebsd.org/administration.html#t-core}
+@uref{http://foundation.gnome.org/legal/}   board members pledge
+to keep certain matters confidential
+
+every security team of every linux distribution and OS
+@end example
+
+In fact, Karl Fogel's @qq{Producing Open Source Software}
+explicitly suggests a private mailing list for some circumstances:
+
+@example
+[on granting commit/push access to a contributor]
+
+But here is one of the rare instances where secrecy is
+appropriate. You can't have votes about potential committers
+posted to a public mailing list, because the candidate's feelings
+(and reputation) could be hurt.
+
+@uref{http://producingoss.com/en/consensus-democracy.html#electorate}
+@end example
+
+@subheading Board of governers, voting, etc?
+
+Many projects have an official board of directors, or a list of
+@qq{core developers}, with set term limits and elections and
+stuff.
+
+I don't think that we're that big.  I think we're still small
+enough, and there's enough trust and consensus decisions, that we
+can avoid that.  I would rather that we kept on going with
+trust+consensus for at least the next 2-3 years, and spent more
+time+energy on bug fixes and new features instead of
+administrative stuff.
+
+Project administrators are Han-Wen, Jan, and Graham.
+
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg00783.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg01004.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00117.html}
+@end smallexample
+
+
+@node GOP-PROP 7 - developers as resources
+@subsubsection GOP-PROP 7 - developers as resources
+
+We shall treat developers (and contributors) as
+@strong{Independent volunteers}: each person does whatever they
+want, whenever they want.  We have busy careers and lives; we make
+no expectations of action from anybody (with the exception of the
+6 people in @qq{Meister} positions).
+
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-07/msg01092.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00087.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00497.html}
+@end smallexample
+
+
+@node GOP-PROP 8 - issue priorities
+@subsubsection GOP-PROP 8 - issue priorities
+
+We will delete the @qq{priority} field of the issue tracker
+altogether.  The @qq{type} system will be tweaked.
+
+Type-critical:
+
+@itemize
+
+@item
+a reproducible failure to build either @code{make} or @code{make
+doc}, from an empty build tree, in a first run, if
+@code{configure} does not report any errors.
+
+@item
+any program behaviour which is @strong{unintentionally} worse than
+the previous stable version or the current development version.
+Developers may always use the @qq{this is intentional}, or even
+the @qq{this is an unavoidable effect of an improvement in another
+area}, reason to move this to a different type.
+
+@item
+anything which stops contributors from helping out (e.g.
+lily-git.tcl not working, source tree(s) not being available,
+lilydev being unable to compile git master, inaccurate
+instructions in the Contributor's Guide 2 Quick start).
+
+To limit this scope of this point, we will assume that the
+contributor is using the latest lilydev and has read the relevant
+part(s) of the Contributor's Guide.  Problems in other chapters of
+the CG are not sufficient to qualify as Type-Critical.
+
+@end itemize
+
+@subsubheading More new/changed types and labels
+
+Unless otherwise specified, the current types and labels will
+continue to be used.  The new types introduced by this proposal
+are:
+
+@itemize
+
+@item
+Type-crash: any segfault, regardless of what the input file looks
+like or which options are given.  Disclaimer: this might not be
+possible in some cases, for example certain guile programs (we
+certainly can't predict if a piece of scheme will ever stop
+running, i.e. the halting problem), or if we rely on other
+programs (i.e. ghostscript).  If there are any such cases that
+make segfault-prevention impossible, we will document those
+exceptions (and the issue will remain as a "crash" instead of
+"documentation" until the warning has been pushed).
+
+@item
+Type-maintainability: anything which makes it difficult for
+serious contributors to help out (e.g. difficult to find the
+relevant source tree(s), confusing policies, problems with
+automatic indentation tools, etc).
+
+@item
+Type-ugly: replaces Type-collision, and it will include things
+like bad slurs in addition to actual collision.
+
+@end itemize
+
+A new label will be added:
+
+@itemize
+@item
+(label) Needs_evidence: it is not clear what the correct output
+should look like.  We need scans, references, examples, etc.
+
+@end itemize
+
+@subheading Reminding users about stars
+
+We can remind users that they can @qq{star} an issue to indicate
+that they care about it.  Since we resolved to treat developers as
+independent volunteers, there is no expectation that anybody will
+look at those stars, but if any developer want to organize their
+work schedule according to the stars, they are welcome to do so.
+
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00019.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00277.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00413.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00624.html}
+@uref{}
+@end smallexample
+
+
+@node GOP-PROP 9 - behavior of make doc
+@subsubsection GOP-PROP 9 - behavior of make doc
+
+If there are build problems, then it should be easier to find out
+why it's failing.  This will be achieved with log files, as well
+as possibly including scripts which automatically display portions
+of those log files for a failing build.
+
+We will also add targets for building a specific manual (for
+quick+easy checking of doc work), as well as for building all
+documentation in a specific language (either English or a
+translated language).
+
+When you run @code{make doc},
+
+@itemize
+
+@item
+All output will be saved to various log files, with the exception
+of output directly from @code{make(1)}.
+
+Note that @code{make(1)} refers to a specific executable file on
+unix computers, and is not a general term for the build system.
+
+@item
+By default, no other output will be displayed on the console, with
+one exception: if a build fails, we might display some portion(s)
+of log file(s) which give useful clues about the reason for the
+failure.
+
+The user may optionally request additional output to be printed;
+this is controlled with the @code{VERBOSE=x} flag.  In such cases,
+all output will still be written to log files; the console output
+is strictly additional to the log files.
+
+@item
+Logfiles from calling lilypond (as part of lilypond-book) will go
+in the relevant @file{build/out/lybook-db/12/lily-123456.log}
+file.  All other logfiles will go in the @file{build/logfiles/}
+directory.
+
+A single @code{make doc} will therefore result in hundreds of log
+files.  Log files produced from individual lilypond runs are not
+under our control; apart from that, I anticipate having one or two
+dozen log files.  As long as it is clear which log file is
+associated with which operation(s), I think this is entirely
+appropriate.  The precise implementation will be discussed for
+specific patches as they appear.
+
+@item
+Both stderr and stdout will be saved in @code{*.log}.  The order
+of lines from these streams should be preserved.
+
+@item
+There will be no additional @qq{progress messages} during the
+build process.  If you run @code{make --silent}, a non-failing
+build should print absolutely nothing to the screen.
+
+@item
+Assuming that the loglevels patch is accepted, lilypond (inside
+lilypond-book) will be run with --loglevel=WARN.
+@uref{http://codereview.appspot.com/4822055/}
+
+@item
+Ideally, a failing build should provide hints about the reason why
+it failed, or at least hints about which log file(s) to examine.
+
+@end itemize
+
+If this proposal is accepted, none of these policies will be
+assumed to apply to any other aspect of the build system.
+Policies for any other aspect of the build system will be
+discussed in separate proposals.
+
+@subheading Don't cause more build problems
+
+However, there is a danger in this approach, that vital error
+messages can also be lost, thus preventing the cause of the
+failure of a make being found.  We therefore need to be
+exceptionally careful to move cautiously, include plenty of tests,
+and give time for people to experiment/find problems in each stage
+before proceeding to the next stage.
+
+This will be done by starting from individual lilypond calls
+within lilypond-book, and slowly moving to @qq{larger} targets of
+the build system -- after the individual lilypond calls are are
+producing the appropriate amount of output and this is saved in
+the right place and we can automatically isolate parts of a
+failing build, we will work on lilypond-book in general, and only
+then will we look at the build system itself.
+
+@subheading Implementation notes
+
+There is an existing make variable QUIET_BUILD, which
+alter the amount of output being displayed
+(@uref{
+http://lilypond.org/doc/v2.15/Documentation/contributor/useful-make-variables}
+).  We are not planning on keeping this make variable.
+
+The standard way for GNU packages to give more output is with a
+@code{V=x} option.  Presumably this is done by increasing
+@code{x}?  If we support this option, we should still write log
+files; we would simply print more of the info in those log files
+to screen.
+
+The command @code{tee} may be useful to write to a file and
+display to stdout (in the case of VERBOSE).
+
+
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00378.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00703.html}
+@end smallexample
+
+
+@ignore
+@n ode GOP-PROP 10 - scheme indentation
+@s ubsubsection GOP-PROP 10 - scheme indentation
+
+still under discussion
+
+@subsubheading Discussions
+
+@smallexample
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg00625.html}
+@uref{https://lists.gnu.org/archive/html/lilypond-devel/2011-08/msg01026.html}
+@c @uref{}
+@end smallexample
+@end ignore
+
+
 
 @node Grand LilyPond Input Syntax Standardization (GLISS)
 @section Grand LilyPond Input Syntax Standardization (GLISS)
index 16726b1bc22ba128bd9844bd811f1d63bc713dba..b84bdbef6067dbae72fd48c29e0ba2ab54a88c99 100644 (file)
@@ -347,7 +347,7 @@ install-WWW:
 @end smallexample
 
 I don't currently understand the @code{ifeq}, since @code{$(out)}
-is empty at this point, but the line starting @code{-$(INSTALL)}
+is empty at this point, but the line starting @w{@code{-$(INSTALL)}}
 translates to:
 
 @example
index 3bb958d13426fd1b9b0d2d10249543eef38a04e2..30b101da9583701e74466aa3b7ff174671c757d2 100644 (file)
@@ -35,19 +35,19 @@ procedures}.
 7492  total
 
 -2- Tutorial
-1203  web/manuals.itexi
+1214  web/manuals.itexi
 124   learning.tely
 2535  learning/tutorial.itely
-4184  learning/common-notation.itely
-8046  total
+4187  learning/common-notation.itely
+8060  total
 
 -3- Fundamental Concepts, starting of Usage and Community
 11139 learning/fundamental.itely -- Fundamental concepts
 135   usage.tely
-3622  usage/running.itely
+3681  usage/running.itely
 1189  usage/updating.itely
-1755  web/community.itexi
-17840 total
+1888  web/community.itexi
+18032 total
 
 -4- Rest of Learning manual and Suggestions on writing LilyPond files
 15393 learning/tweaks.itely -- Tweaking output
@@ -61,9 +61,9 @@ procedures}.
 4502  notation/pitches.itely
 6048  notation/rhythms.itely
 1726  notation/expressive.itely
-945   notation/repeats.itely
+944   notation/repeats.itely
 2216  notation/simultaneous.itely
-2345  notation/staff.itely
+2341  notation/staff.itely
 931   notation/editorial.itely
 2716  notation/text.itely
 81    notation/specialist.itely -- Specialist notation
@@ -75,19 +75,19 @@ procedures}.
 66    notation/strings.itely
 242   notation/bagpipes.itely
 4752  notation/ancient.itely
-7671  notation/input.itely -- Input syntax
+7686  notation/input.itely -- Input syntax
 2164  notation/non-music.itely -- Non-musical notation
 11087 notation/spacing.itely -- Spacing issues
-12248 notation/changing-defaults.itely -- Changing defaults
+12258 notation/changing-defaults.itely -- Changing defaults
 5187  notation/programming-interface.itely -- Interfaces for programmers
-1989  notation/notation-appendices.itely -- Notation manual tables
+2017  notation/notation-appendices.itely -- Notation manual tables
 252   notation/cheatsheet.itely -- Cheat sheet
-76610 total
+76658 total
 
 -6- Rest of Application Usage
-3952  usage/lilypond-book.itely -- LilyPond-book
+3978  usage/lilypond-book.itely -- LilyPond-book
 1122  usage/converters.itely -- Converting from other formats
-5074  total
+5100  total
 
 -7- Appendices whose translation is optional
 326   essay/literature.itely
index 5d90b8430fa9f4574401f64b462bc2429070cc55..9f42e451db05ad2c14300f6abb1c9f40d1019493 100644 (file)
@@ -255,6 +255,13 @@ but instead:
 @@subsection @@code@{Foo@} Bar
 @end example
 
+@item
+With the exception of @code{@@} commands, the section name must
+match the node name exactly.
+
+@item
+No commas may be used in the node names.
+
 @item
 If a heading is desired without creating a @code{@@node}, please use
 the following:
@@ -369,7 +376,7 @@ Inspirational headwords are produced with:
 LSR snippets are linked with:
 
 @example
-@@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 @{filename.ly@}
 @end example
 
@@ -496,8 +503,6 @@ easier/faster processing), use this header:
 \paper @{
   indent = 0\mm
   line-width = 160\mm - 2.0 * 0.4\in
-  ragged-right = ##t
-  force-assignment = #""
   line-width = #(- line-width (* mm  3.000000))
 @}
 
index 647c8afc0a73cef13c2e612f8377f15bddfa05ec..1ba87306404609fcaec18eddf593403bda913a99 100644 (file)
@@ -260,7 +260,7 @@ To update LSR, perform the following steps:
 @item
 Download the latest snippet tarball, extract it, and run
 @code{convert-ly} on all files using the command-line option
-@code{--to=VERSION} to ensure snippets are updated to the
+@option{--to=@var{version}} to ensure snippets are updated to the
 correct stable version.
 
 @item
index e64fa1673ae6b6242671746e8f4a1d9d0518ab87..8fa3d6ed9cc08e33d756a5f441b778def8078053 100644 (file)
@@ -8,6 +8,7 @@
 * Programming without compiling::
 * Finding functions::
 * Code style::
+* Warnings Errors Progress and Debug Output::
 * Debugging LilyPond::
 * Tracing object relationships::
 * Adding or modifying features::
@@ -218,7 +219,7 @@ grep -i functionName subdirectory/*
 
 This command will search all the contents of the directory subdirectory/
 and display every line in any of the files that contains
-functionName.  The @code{-i} option makes @command{grep} ignore
+functionName.  The @option{-i} option makes @command{grep} ignore
 case -- this can be very useful if you are not yet familiar with
 our capitalization conventions.
 
@@ -712,6 +713,167 @@ Do not run make po/po-update with GNU gettext < 0.10.35
 @end itemize
 
 
+@node Warnings Errors Progress and Debug Output
+@section Warnings, Errors, Progress and Debug Output
+
+@unnumberedsubsec Available log levels
+
+LilyPond has several loglevels, which specify how verbose the output on
+the console should be:
+@itemize
+@item NONE: No output at all, even on failure
+@item ERROR: Only error messages
+@item WARN: Only error messages and warnings
+@item BASIC_PROGRESS: Warnings, errors and basic progress (success, etc.)
+@item PROGRESS: Warnings, errors and full progress messages
+@item INFO: Warnings, errors, progress and more detailed information (default)
+@item DEBUG: All messages, including vull debug messages (very verbose!)
+@end itemize
+
+The loglevel can either be set with the environment variable
+@code{LILYPOND_LOGLEVEL} or on the command line with the @option{--loglevel=...}
+option.
+
+@unnumberedsubsec Functions for debug and log output
+
+LilyPond has two different types of error and log functions:
+@itemize 
+
+@item
+If a warning or error is caused by an identified position in the input file,
+e.g. by a grob or by a music expression, the functions of the @code{Input}
+class provide logging functionality that prints the position of the message
+in addition to the message.
+
+@item
+If a message can not be associated with a particular position in an input file,
+e.g. the output file cannot be written, then the functions in the 
+@code{flower/include/warn.hh} file will provide logging functionality that 
+only prints out the message, but no location.
+
+@end itemize
+
+There are also Scheme functions to access all of these logging functions from
+scheme.  In addition, the Grob class contains some convenience wrappers for
+even easier access to these functions.
+
+The message and debug functions in @code{warn.hh} also have an optional 
+argument @code{newline}, which specifies whether the message should always
+start on a new line or continue a previous message.
+By default, @code{progress_indication} does NOT start on a new line, but rather
+continue the previous output.  They also do not have a particular input
+position associated, so there are no progress functions in the Input class.
+All other functions by default start their output on a new line.
+
+The error functions come in three different flavors: fatal error messages,
+programming error messages and normal error messages.  Errors written
+by the @code{error ()} function will cause LilyPond to exit immediately,
+errors by @code{Input::error ()} will continue the compilation, but
+return a non-zero return value of the lilypond call (i.e. indicate an 
+unsuccessful program execution).  All other errors will be printed on the 
+console, but not exit LilyPond or indicate an unsuccessful return code.
+Their only differences to a warnings are the displayed text and that
+they will be shown with loglevel @code{ERROR}.
+
+If the Scheme option @code{warning-as-error} is set, any warning will be
+treated as if @code{Input::error} was called.
+
+
+@unnumberedsubsec All logging functions at a glance
+
+@multitable @columnfractions 0.16 0.42 0.42
+@headitem
+@tab C++, no location
+@tab C++ from input location
+
+@item ERROR
+@tab @code{error ()}, @code{programming_error (msg)}, @code{non_fatal_error (msg)}
+@tab @code{Input::error (msg)}, @code{Input::programming_error (msg)}
+
+@item WARN
+@tab @code{warning (msg)}
+@tab @code{Input::warning (msg)}
+
+@item BASIC
+@tab @code{basic_progress (msg)}
+@tab -
+
+@item PROGRESS
+@tab @code{progress_indication (msg)}
+@tab -
+
+@item INFO
+@tab @code{message (msg)}
+@tab @code{Input::message (msg)}
+
+@item DEBUG
+@tab @code{debug_output (msg)}
+@tab @code{Input::debug_output (msg)}
+
+@item @tab @tab
+
+@headitem
+@tab C++ from a Grob
+@tab Scheme, music expression
+
+@item ERROR
+@tab @code{Grob::programming_error (msg)}
+@tab -
+
+@item WARN
+@tab @code{Grob::warning (msg)}
+@tab @code{(ly:music-warning music msg)}
+
+@item BASIC
+@tab -
+@tab -
+
+@item PROGRESS
+@tab -
+@tab -
+
+@item INFO
+@tab -
+@tab @code{(ly:music-message music msg)}
+
+@item DEBUG
+@tab -
+@tab -
+
+@item @tab @tab
+
+@headitem
+@tab Scheme, no location
+@tab Scheme, input location
+
+@item ERROR
+@tab -
+@tab @code{(ly:error msg args)}, @code{(ly:programming-error msg args)}
+
+@item WARN
+@tab @code{(ly:warning msg args)}
+@tab @code{(ly:input-warning input msg args)}
+
+@item BASIC
+@tab @code{(ly:basic-progress msg args)}
+@tab -
+
+@item PROGRESS
+@tab @code{(ly:progress msg args)}
+@tab -
+
+@item INFO
+@tab @code{(ly:message msg args)}
+@tab @code{(ly:input-message input msg args)}
+
+@item DEBUG
+@tab @code{(ly:debug msg args)}
+@tab -
+
+@end multitable
+
+
+
 
 @node Debugging LilyPond
 @section Debugging LilyPond
@@ -1041,7 +1203,7 @@ number of different platforms:
 In order for the Graphviz tool to work, config.make must be modified.
 It is probably a good idea to first save a copy of config.make under
 a different name.  Then, edit config.make by removing every occurrence
-of @code{-DNDEBUG}.
+of @option{-DNDEBUG}.
 
 @item Rebuilding LilyPond
 
@@ -1089,7 +1251,7 @@ dot -Tpdf graphviz.log > graphviz.pdf
 
 The pdf file can then be viewed with any pdf viewer.
 
-When compiled without @code{-DNDEBUG}, lilypond may run slower
+When compiled without @option{-DNDEBUG}, lilypond may run slower
 than normal.  The original configuration can be restored by either
 renaming the saved copy of @code{config.make} or rerunning
 @code{configure}.  Then rebuild lilypond with
index fee5e367174e235ebe08e5c1b3e2406bb3e773fc..d0136b56e544ac47575db4b8d93e94bdf9d5fbe2 100644 (file)
@@ -196,7 +196,7 @@ should configure some basic settings with the
 global and repository-specific options.
 
 To configure settings that affect all repositories, use the
-@command{--global} command line option.  For example, the first
+@option{--global} command line option.  For example, the first
 two options that you should always set are your @var{name} and
 @var{email}, since Git needs these to keep track of commit
 authors:
@@ -247,7 +247,7 @@ by the above commands would look like this:
 @end example
 
 Using the @command{git@tie{}config} command @emph{without} the
-@command{--global} option configures repository-specific settings,
+@option{--global} option configures repository-specific settings,
 which are stored in the file @file{.git/config}.  This file is
 created when a repository is initialized (using
 @command{git@tie{}init}), and by default contains these lines:
@@ -522,7 +522,7 @@ git pull    # recommended for translators
 @end example
 
 If you're tracking the remote @code{master} branch, you should add
-the @code{-r} option (short for @code{--rebase}) to keep commits
+the @option{-r} option (short for @option{--rebase}) to keep commits
 on your local branch current:
 
 @example
@@ -530,7 +530,7 @@ git pull -r # use with caution when translating
 @end example
 
 If you don't edit translated documentation and don't want to type
-@code{-r} every time, configure the master branch to rebase by
+@option{-r} every time, configure the master branch to rebase by
 default with this command:
 
 @example
@@ -629,7 +629,7 @@ git branch -d @var{name}
 @end example
 
 Git will ask you for confirmation if it sees that data would be
-lost by deleting the branch.  Use @code{-D} instead of @code{-d}
+lost by deleting the branch.  Use @option{-D} instead of @option{-d}
 to bypass this.  Note that you cannot delete a branch if it is
 currently checked out.
 
@@ -801,7 +801,7 @@ git commit -a
 @end example
 
 @noindent
-The @code{-a} is short for @code{--all} which includes modified
+The @option{-a} is short for @option{--all} which includes modified
 and deleted files, but only those newly created files that have
 previously been added.
 
@@ -873,7 +873,7 @@ We prefer it if you follow the instructions in
 alternate method here.
 
 You should always run @command{git@tie{}pull@tie{}-r} (translators
-should leave off the @code{-r}) before doing this to ensure that
+should leave off the @option{-r}) before doing this to ensure that
 your patches are as current as possible.
 
 Once you have made one or more commits in your local repository,
@@ -1422,15 +1422,15 @@ Contributor of} on your @qq{My Group Membership} page.
 
 
 @item
-Generate an SSH @q{dsa} key pair.  Enter the following at the
+Generate an SSH @q{rsa} key pair.  Enter the following at the
 command prompt:
 
 @example
-ssh-keygen -t dsa
+ssh-keygen -t rsa
 @end example
 
 When prompted for a location to save the key, press <ENTER> to
-accept the default location (@file{~/.ssh/id_dsa}).
+accept the default location (@file{~/.ssh/id_rsa}).
 
 Next you are asked to enter an optional passphrase.  On most
 systems, if you use a passphrase, you will likely be prompted for
@@ -1442,7 +1442,7 @@ though you may find it tedious to keep re-entering it.
 You can change/enable/disable your passphrase at any time with:
 
 @example
-ssh-keygen -f ~/.ssh/id_dsa -p
+ssh-keygen -f ~/.ssh/id_rsa -p
 @end example
 
 Note that the GNOME desktop has a feature which stores your
@@ -1457,14 +1457,14 @@ gconftool-2 --set -t bool \
 @end example
 
 After setting up your passphrase, your private key is saved as
-@file{~/.ssh/id_dsa} and your public key is saved as
-@file{~/.ssh/id_dsa.pub}.
+@file{~/.ssh/id_rsa} and your public key is saved as
+@file{~/.ssh/id_rsa.pub}.
 
 
 @item
-Register your public SSH @q{dsa} key with Savannah.  From the
+Register your public SSH @q{rsa} key with Savannah.  From the
 @qq{My Account Configuration} page, click on @qq{Edit SSH Keys},
-then paste the contents of your @file{~/.ssh/id_dsa.pub} file into
+then paste the contents of your @file{~/.ssh/id_rsa.pub} file into
 one of the @qq{Authorized keys} text fields, and click
 @qq{Update}.
 
@@ -1485,7 +1485,7 @@ git config remote.origin.url \
 @end example
 
 @noindent
-where @var{user} is your username on Savannah.
+replacing @var{user} with your Savannah username.
 
 
 @item
@@ -1566,9 +1566,17 @@ git config push.default matching
 @noindent
 Then @code{git@tie{}push} should work as before.  For more
 details, consult the @code{git@tie{}push} man page.
-@end enumerate
 
 
+@item
+Repeat the steps from generating an RSA key through to testing
+your commit access, for each machine from which you will be
+making commits, or you may simply copy the files from your
+local @file{~/.ssh} folder to the same folder on the other
+machine.
+
+@end enumerate
+
 @subsubheading Technical details
 
 @itemize
index c356e1146bd5be4aa5918507cdcae1ffc83ee5b2..53a223b373f46c3e7dd907b21e967220ec90a70e 100644 (file)
@@ -58,6 +58,87 @@ existing website texinfo files.
 @node Uploading and security
 @section Uploading and security
 
+@subheading Building the website from scratch for local checking
+
+Initial setup:
+
+Create directories:
+
+@example
+$HOME/lilypond/
+$HOME/lilypond/media/
+$HOME/lilypond/trusted-scripts/
+@end example
+
+To reduce the CPU burden on the shared host (as well as some
+security concerns), the 'Documentation/pictures/' and
+'Documentation/web/ly-examples/' directories are **not** compiled.
+We will do this ourselves right now.
+
+Go to your lilypond build directory.  make doc.
+
+Set up some variables (you'll only do this once:)
+
+@example
+BUILD_DIR=$HOME/lilypond-git
+PICS=$BUILD_DIR/Documentation/pictures/
+EXAMPLES=$BUILD_DIR/Documentation/web/ly-examples/
+@end example
+
+Copy files over:
+
+@example
+cp -r $PICS $HOME/lilypond/media/pictures
+cp -r $EXAMPLES $HOME/lilypond/media/ly-examples
+@end example
+
+Get the scripts you need.  First define these variables:
+
+@example
+GIT=$HOME/lilypond-git
+DEST=$HOME/lilypond/trusted-scripts
+@end example
+
+Then do the copying:
+
+@smallexample
+cp $GIT/make/website.make $DEST/website.make
+cp $GIT/Documentation/lilypond-texi2html.init $DEST/lilypond-texi2html.init
+cp $GIT/scripts/build/extract_texi_filenames.py  $DEST/extract_texi_filenames.py
+cp $GIT/scripts/build/create-version-itexi.py $DEST/create-version-itexi.py
+cp $GIT/scripts/build/create-weblinks-itexi.py $DEST/create-weblinks-itexi.py
+cp $GIT/scripts/build/mass-link.py $DEST/mass-link.py
+cp $GIT/scripts/build/website_post.py $DEST/website_post.py
+cp $GIT/scripts/build/bib2texi.py $DEST/bib2texi.py
+cp $GIT/Documentation/web/server/lilypond.org.htaccess $DEST/lilypond.org.htaccess
+cp $GIT/Documentation/web/server/website-dir.htaccess $DEST/website-dir.htaccess
+@end smallexample
+
+Delete your build directory (or maybe just rename your build
+directory to build-old).
+
+@example
+cd $HOME/lilypond
+@end example
+
+Run
+
+@example
+make -f ../lilypond-git/make/website.make WEBSITE_ONLY_BUILD=1 \
+  TOP_SRC_DIR=$HOME/lilypond-git/ \
+  PYTHONPATH=$HOME/lilypond-git/python \
+  TEXI2HTML_PROGRAM=texi2html \
+  website
+@end example
+
+The website should be at:
+
+@example
+$HOME/lilypond/out-website/website/index.html
+@end example
+
+@subheading Building the online website
+
 The website is generated hourly by user @code{graham} the host
 @code{lilypond.org}.  For security reasons, we do not use the
 makefiles and scripts directly from git; copies of the relevant
index c8b6940b3a85a05697a7b55358142f58d7a59445..dcebe66dff2ef785f835844f6e5c9b3cfd70f012 100644 (file)
@@ -39,25 +39,25 @@ not!
 
 @appendixsubsec Pouze noty
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion]
 {single-staff-template-with-only-notes.ly}
 
 
 @appendixsubsec Noty a text
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion]
 {single-staff-template-with-notes-and-lyrics.ly}
 
 
 @appendixsubsec Noty a názvy akordů
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {single-staff-template-with-notes-and-chords.ly}
 
 
 @appendixsubsec Noty, text a názvy akordů
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {single-staff-template-with-notes,-lyrics,-and-chords.ly}
 
 
@@ -67,25 +67,25 @@ not!
 
 @appendixsubsec Klavírní sólo
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-simple.ly}
 
 
 @appendixsubsec Klavír a hlas zpěvu
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-melody-and-lyrics.ly}
 
 
 @appendixsubsec Klavír s vystředěným textem
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-centered-lyrics.ly}
 
 
 @appendixsubsec Klavír s vystředěným označením hlasitosti
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-centered-dynamics.ly}
 
 
@@ -95,13 +95,13 @@ not!
 
 @appendixsubsec Smyčcový kvartet
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {string-quartet-template-simple.ly}
 
 
 @appendixsubsec Hlasy smyčcového kvartetu
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {string-quartet-template-with-separate-parts.ly}
 
 
@@ -111,24 +111,24 @@ not!
 
 @appendixsubsec Notový zápis SATB
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template.ly}
 
 
 @appendixsubsec Notový zápis SATB a automatický klavírní výtah
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-automatic-piano-reduction.ly}
 
 
 @appendixsubsec SATB s příslušnými prostředími
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly}
 
 @appendixsubsec Sólový zpěv a dvojhlasný refrén
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-verse-and-refrain.ly}
 
 
@@ -137,7 +137,7 @@ not!
 @translationof Orchestral templates
 
 @appendixsubsec Orchestr, sbor a klavír
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {orchestra,-choir-and-piano-template.ly}
 
 
@@ -148,13 +148,13 @@ not!
 
 @appendixsubsec Přepis menzurální hudby
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {ancient-notation-template----modern-transcription-of-mensural-music.ly}
 
 
 @appendixsubsec Předlohy pro přepis gregorianik
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {ancient-notation-template----modern-transcription-of-gregorian-music.ly}
 
 @node Jiné předlohy
@@ -165,7 +165,7 @@ not!
 @appendixsubsec Džezová skupina
 @translationof Jazz combo
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {jazz-combo-template.ly}
 
 
index 38d2dac9755639ab3b81a51142b9ceb9bee779f4..1b9654b7e48c4bd4d1f86117998907c1c95e276f 100755 (executable)
@@ -717,7 +717,7 @@ Pro LilyPond ve verzi @version{}
 </div>
 @end html
 @iftex
-@image{ly-examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png}
+@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png}
 @end iftex
 @ifinfo
 @image{lilypond/ly-examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png}
index 572897f373d8110694fb382c3b3b492a0350985a..9f16579f88c98d008af27b7f36dc70f34b4f2876 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{Naposledy obnoveno Wed Jul 13 10:59:12 UTC 2011
+@emph{Naposledy obnoveno Sat Aug 13 14:15:49 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -111,7 +111,7 @@ ano
 @item
 2 Běžný notový zápis
 @*
-4184
+4187
 @tab Pavel Fric
 @tab 
 @tab 
@@ -339,7 +339,7 @@ ano
 @item
 Příručky
 @*
-1203
+1214
 @tab Pavel Fric
 @tab 
 @tab 
@@ -366,7 +366,7 @@ ano
 @item
 Společenství
 @*
-1755
+1888
 @tab  Pavel Fric
 @tab 
 @tab 
@@ -383,7 +383,7 @@ ano
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">částečně</span>
+<span style="background-color: #4efe25">částečně</span>
 @end html
 @end ifhtml
 @ifnothtml
index 57be64e8a8dc05bc839667b9fccc35df5d5d1d58..979a1ad5faad3800a16055c1567284cc006c0fbb 100644 (file)
@@ -778,13 +778,6 @@ die Übersetzung im Feld @code{texidoc@var{LANG}} enthalten. Wird nun
 aufgerufen, so wird der Inhalt der Datei @file{foo.texidoc@var{LANG}}
 anstelle von @file{foo.texidoc} eingefügt.
 
-@item lilyquote
-(Nur innerhalb von Texinfo-Dateien.) Diese Option wirkt wie die
-@code{quote} Option, außer dass nur das Musikfragment (und natürlich optional der
-gesamte LilyPond-Code bei Benutzung von @code{verbatim}) in den Zitatblock
-eingefügt wird. Dies ist nützlich, wenn Sie ein Musikfragment zitieren möchten,
-nicht aber dessen @code{texidoc} Dokumentationsblock.
-
 @item doctitle
 (Nur innerhalb von Texinfo-Dateien.) Diese Option wirkt ähnlich wie die
 @code{texidoc} Option: Wenn @command{lilypond} mit der Option
index b5e7a0cf9312e0bf2532ee44e4531dcd46909b68..995c2173c6e586d111e6318fc79df08bf15363b2 100644 (file)
@@ -408,9 +408,10 @@ table.menu {
 /***********************************************************/
 
 @media print {
-  /* Hide the sidebar: */
-  body { padding-left: 0; }
-  #tocframe { display: none; }
+  /* Hide the sidebar and make the main contents take up the full width */
+  div#main { position: static; overflow: visible; left: 0; }
+  div#tocframe { display: none; }
+  /* Also don't show the navigation toolbars between all sections */
   .nav_table { display: none; }
 }
 
index c09b31d07cb89de3467a9bf861225c61f1ccf766..0ca20f4963f17afcbce656aca016aeac0460a67b 100644 (file)
@@ -39,25 +39,25 @@ schönen Notenbild erfreuen!
 
 @appendixsubsec Nur Noten
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion]
 {single-staff-template-with-only-notes.ly}
 
 
 @appendixsubsec Noten und Text
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion]
 {single-staff-template-with-notes-and-lyrics.ly}
 
 
 @appendixsubsec Noten und Akkordbezeichnungen
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {single-staff-template-with-notes-and-chords.ly}
 
 
 @appendixsubsec Noten, Text und Akkordbezeichnungen
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {single-staff-template-with-notes,-lyrics,-and-chords.ly}
 
 
@@ -67,25 +67,25 @@ schönen Notenbild erfreuen!
 
 @appendixsubsec Piano Solo
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-simple.ly}
 
 
 @appendixsubsec Klavier und Gesangstimme
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-melody-and-lyrics.ly}
 
 
 @appendixsubsec Klavier mit zentriertem Text
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-centered-lyrics.ly}
 
 
 @appendixsubsec Klavier mit zentrierten Lautstärkebezeichnungen
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-centered-dynamics.ly}
 
 
@@ -95,13 +95,13 @@ schönen Notenbild erfreuen!
 
 @appendixsubsec Streichquartett
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {string-quartet-template-simple.ly}
 
 
 @appendixsubsec Streichquartettstimmen
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {string-quartet-template-with-separate-parts.ly}
 
 
@@ -111,43 +111,43 @@ schönen Notenbild erfreuen!
 
 @appendixsubsec SATB-Partitur
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template.ly}
 
 
 @appendixsubsec SATB-Partitur und automatischer Klavierauszug
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-automatic-piano-reduction.ly}
 
 
 @appendixsubsec SATB mit zugehörigen Kontexten
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly}
 
 
 @appendixsubsec SATB auf vier Systemen
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {satb-choir-template---four-staves.ly}
 
 
 @appendixsubsec Sologesang und zweistimmiger Refrain
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-verse-and-refrain.ly}
 
 
 @appendixsubsec Hymnen
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {hymn-template.ly}
 
 
 @appendixsubsec Psalmengesang
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {anglican-psalm-template.ly}
 
 
@@ -156,7 +156,7 @@ schönen Notenbild erfreuen!
 @translationof Orchestral templates
 
 @appendixsubsec Orchester, Chor und Klavier
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {orchestra,-choir-and-piano-template.ly}
 
 
@@ -167,13 +167,13 @@ schönen Notenbild erfreuen!
 
 @appendixsubsec Transkription mensuraler Musik
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {ancient-notation-template----modern-transcription-of-mensural-music.ly}
 
 
 @appendixsubsec Vorlage zur Transkription von Gregorianik
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {ancient-notation-template----modern-transcription-of-gregorian-music.ly}
 
 @node Andere Vorlagen
@@ -184,7 +184,7 @@ schönen Notenbild erfreuen!
 @appendixsubsec Jazz-Combo
 @translationof Jazz combo
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {jazz-combo-template.ly}
 
 
index 446e8e9b3df7eec96afa930b52a83a98d20e6015..6f97997c1806e8aa2d7c24dbdbbe5a21a2d5bdd3 100644 (file)
@@ -749,7 +749,7 @@ Für LilyPond Version @version{}
 </div>
 @end html
 @iftex
-@image{ly-examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png}
+@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png}
 @end iftex
 @ifinfo
 @image{lilypond/ly-examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png}
index d8a3a0fff8a0f9a71a6e00f2da6dacc9da38f652..d6d3c0aa5a413af1d05ebb4e3656ba6a63ad2760 100644 (file)
@@ -762,7 +762,7 @@ werden.  Neben dem Standardstil (@code{default}) ist
 nur (@code{mensural}) unterstützt.
 
 @lilypond[quote,fragment,ragged-right,verbatim]
-\override Stem #'flag-style = #'mensural
+\override Flag #'style = #'mensural
 \override Stem #'thickness = #1.0
 \override NoteHead #'style = #'mensural
 \autoBeamOff
@@ -1306,7 +1306,7 @@ unterstützt. Wenn versucht wird, ein Versetzungszeichen zu notieren,
 das von einem bestimmten Stil nicht unterstützt wird, wechselt LilyPond zu einem
 anderen Stil.
 
-@c @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@c @lilypondfile[verbatim,quote,texidoc,doctitle]
 @c {ancient-accidentals.ly}
 
 Der Stil für Versetzungs- und Vorzeichen wird von der
@@ -2563,7 +2563,7 @@ und etwa Synkopen nicht über Taktlinien hinweg aufgeteilt
 werden müssen, während man sich dennoch an den Taktlinien
 rhythmisch orientieren kann.
 
-@lilypondfile[verbatim,lilyquote,texidoc]
+@lilypondfile[verbatim,quote,texidoc]
 {mensurstriche-layout-bar-lines-between-the-staves.ly}
 
 @c This simple setup will take care of the
index 2a293342be1f98130a737a16155bafba2bfde9ea..e06419f46aeedc924f24f5eca1d1ae918003db82 100644 (file)
@@ -547,13 +547,13 @@ mit der @code{noChordSymbol}-Beschriftung darstellt.
 @cindex Akkorde, Unterdrückung wiederholt
 @funindex chordChanges
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {showing-chords-at-changes.ly}
 
-@c @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@c @lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 @c {adding-bar-lines-to-chordnames-context.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {simple-lead-sheet.ly}
 
 
@@ -716,20 +716,20 @@ Grundton erhöht oder erniedrigt ist.
 @snippets
 
 @cindex Ausnahmen, Akkordsymbole
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {chord-name-exceptions.ly}
 
 @c TODO - tweak snippet to use \blackTriangleMarkup as well
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {chord-name-major7.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adding-bar-lines-to-chordnames-context.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {volta-below-chords.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-chord-separator.ly}
 
 
@@ -1011,7 +1011,7 @@ End of continuation line
 
 
 @snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-positions-of-figured-bass-alterations.ly}
 
 
index 994a8372f57caeb718b3413fcfd76f1d6ac623d2..f3b64561cdf268eac20476171d294cd7fd032d0c 100644 (file)
@@ -196,13 +196,13 @@ Fingersatzanweisungen können manuell oberhalb des Systems gesetzt werden, siehe
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {controlling-the-placement-of-chord-fingerings.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {allowing-fingerings-to-be-printed-inside-the-staff.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {avoiding-collisions-with-chord-fingerings.ly}
 
 @seealso
@@ -482,7 +482,7 @@ zeigen, siehe @ref{Direction and placement}.
 @cindex Hals nach unten
 @cindex Hals neutral
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {default-direction-of-stems-on-the-center-line-of-the-staff.ly}
 
 @seealso
@@ -641,7 +641,7 @@ den Linien festgesetzt.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {grid-lines--changing-their-appearance.ly}
 
 
index 72f940356e8ba40417564e30fb68ea7af0065683..b899957cadf63aa3057d0f2d0d4ec339d4cb771c 100644 (file)
@@ -187,13 +187,13 @@ TextScripten, die an Noten angehängt werden, siehe
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {modifying-default-values-for-articulation-shorthand-notation.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {controlling-the-vertical-ordering-of-scripts.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-a-delayed-turn.ly}
 
 
@@ -460,25 +460,25 @@ aufzunehmen.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {setting-hairpin-behavior-at-bar-lines.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {setting-the-minimum-length-of-hairpins.ly}
 
 @cindex al niente
 @cindex niente, al
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {printing-hairpins-using-al-niente-notation.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {vertically-aligned-dynamics-and-textscripts.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {hiding-the-extender-line-for-text-dynamics.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-text-and-spanner-styles-for-text-dynamics.ly}
 
 
@@ -773,13 +773,13 @@ g4( e c2)
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {using-double-slurs-for-legato-chords.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {positioning-text-markups-inside-slurs.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {making-slurs-with-complex-dash-structure.ly}
 
 
@@ -969,13 +969,13 @@ Divisiones genannt, sind unterstützt.  Für Einzelheiten siehe
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-breath-mark-symbol.ly}
 
 @cindex caesura
 @cindex railroad tracks
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {inserting-a-caesura.ly}
 
 
@@ -1029,7 +1029,7 @@ ist @emph{notwendig} um unbestimmte Glissandos zu notieren.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adjusting-the-shape-of-falls-and-doits.ly}
 
 
@@ -1077,7 +1077,7 @@ Verschiedene Glissando-Stile sind möglich.  Für Einzelheiten siehe
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {contemporary-glissando.ly}
 
 
@@ -1191,13 +1191,13 @@ Ein Arpeggio kann auch explizit ausgeschrieben werden, indem
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-cross-staff-arpeggios-in-a-piano-staff.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-cross-staff-arpeggios-in-other-contexts.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-arpeggios-across-notes-in-different-voices.ly}
 
 
index 1715c3058e7a37ff5690cbd7b449bbd63ec6a327..5fcc0694a25e6745c73554324f3a90a4527b8069 100644 (file)
@@ -126,10 +126,10 @@ Code auftauchen:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {controlling-the-placement-of-chord-fingerings.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {allowing-fingerings-to-be-printed-inside-the-staff.ly}
 
 
@@ -434,22 +434,22 @@ ratioHarmonics = {
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {stem-and-beam-behavior-in-tablature.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {polyphony-in-tablature.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {open-string-harmonics-in-tablature.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {fretted-string-harmonics-in-tablature.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {slides-in-tablature.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {chord-glissando-in-tablature.ly}
 
 
@@ -1107,10 +1107,10 @@ Schnittstelle gehören dem @code{Voice.TextScript}-Kontext an.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-fret-orientations.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {customizing-markup-fret-diagrams.ly}
 
 @seealso
@@ -1397,16 +1397,16 @@ gehören dem @code{FretBoards.FretBoard}-Kontext an.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {customizing-fretboard-fret-diagrams.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {defining-predefined-fretboards-for-other-instruments.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {chordchanges-for-fretboards.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {fretboards-alternate-tables.ly}
 
 
@@ -1636,10 +1636,10 @@ Buchstaben abgekürzt werden, etwa @code{RH}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {placement-of-right-hand-fingerings.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {fingerings,-string-indications,-and-right-hand-fingerings.ly}
 
 @seealso
index fbe3fa6f5723b855c065620d707508a9f18abbc0..7ab810733c1aa11950e4f3e728df3c25b8ce62c1 100644 (file)
@@ -1946,7 +1946,7 @@ der Liste entspricht, wird ein Piano-Klang benutzt (@code{"acoustic grand"}).
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-midi-output-to-one-channel-per-voice.ly}
 
 @knownissues
index ba7f8924e7f3704c07a963a6a8e697b3e55c1fc1..7ff3e921b26a7af62ad988671dda74ed0893111a 100644 (file)
@@ -128,7 +128,7 @@ können, sind demonstriert in
 
 
 @c @snippets
-@c @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@c @lilypondfile[verbatim,quote,texidoc,doctitle]
 @c {forcing-visibility-of-systems-with-multi-bar-rests-when-using-\Staff \RemoveEmptyStaves.ly}
 @c http://lsr.dsi.unimi.it/LSR/Item?u=1&id=312
 
@@ -462,7 +462,7 @@ Hälsen, die nach unten zeigen.
         % extend the stems to reach the other staff
         \override Stem #'length = #12
         % do not print extra flags
-        \override Stem #'flag-style = #'no-flag
+        \override Flag #'style = #'no-flag
         % prevent beaming as needed
         a8 g4 f8 f bes\noBeam g4
       }
@@ -476,7 +476,7 @@ Hälsen, die nach unten zeigen.
 @end lilypond
 
 @snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {indicating-cross-staff-chords-with-arpeggio-bracket.ly}
 
 @seealso
@@ -622,7 +622,7 @@ Anzahl an Symbolen wird benutzt um die Wechsel anzuzeigen.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {accordion-discant-symbols.ly}
 
 @seealso
index 5f9511cf567cf6aee31849ac096425d605897b6c..1f9d87dc6958b7343d177380696acd055c52069d 100644 (file)
@@ -422,10 +422,10 @@ cis
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {preventing-extra-naturals-from-being-automatically-added.ly}
 
 @seealso
@@ -823,7 +823,7 @@ siehe auch @ref{Transposition von Instrumenten}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {transposing-pitches-with-minimum-accidentals-smart-transpose.ly}
 
 @seealso
@@ -1197,7 +1197,7 @@ Weitere unterstützte Schlüssel sind beschrieben in @ref{Mensurale Schlüssel},
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {tweaking-clef-properties.ly}
 
 
@@ -1300,10 +1300,10 @@ fis
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {non-traditional-key-signatures.ly}
 
 
@@ -1361,7 +1361,7 @@ a2 b
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {ottava-text.ly}
 
 
@@ -2698,13 +2698,13 @@ Tonart definiert werden.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adding-ambitus-per-voice.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {ambitus-with-multiple-voices.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-ambitus-gap.ly}
 
 
@@ -2887,7 +2887,7 @@ sich in @ref{Die Notensystemgröße einstellen}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {numbers-as-easy-note-heads.ly}
 
 @seealso
@@ -3004,7 +3004,7 @@ a2 b c d \break
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {applying-note-head-styles-depending-on-the-step-of-the-scale.ly}
 
 
index c3515bdf9cb824c9de4350345c0ff157fd9bfc70..254b3b79d61aee9d1e0c3aa7faed91091d24e849 100644 (file)
@@ -262,13 +262,13 @@ c1
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {shortening-volta-brackets.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adding-volta-brackets-to-additional-staves.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {setting-the-double-repeat-default-for-volte.ly}
 
 @seealso
@@ -436,7 +436,7 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } }
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {printing-a-repeat-sign-at-the-beginning-of-a-piece.ly}
 
 
@@ -628,13 +628,13 @@ benützten ein doppeltes Prozent-Symbol.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {percent-repeat-counter.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {percent-repeat-count-visibility.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {isolated-percent-repeats.ly}
 
 @seealso
@@ -726,7 +726,7 @@ c: c:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {cross-staff-tremolos.ly}
 
 @seealso
index df3ed39b8c97d377fc0d9e4332bf9bcc98bc76b1..131dbf8adf6547dd6cd00ab9daca9d1ea13ad000 100644 (file)
@@ -153,10 +153,10 @@ siehe @ref{Richtung und Platzierung}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {alternative-breve-note.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-the-number-of-augmentation-dots-per-note.ly}
 
 @seealso
@@ -267,23 +267,23 @@ zu setzen, siehe @ref{Tondauern skalieren}.
 @funindex tupletNumberFormatFunction
 @funindex tupletSpannerDuration
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {entering-several-tuplets-using-only-one--times-command.ly}
 
 @cindex Triolennummer, Änderung
 
 @funindex TupletNumber
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-the-tuplet-number.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {non-default-tuplet-numbers.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {controlling-tuplet-bracket-visibility.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {permitting-line-breaks-within-beamed-tuplets.ly}
 
 @seealso
@@ -577,10 +577,10 @@ die Schnipsel im Abschnitt @ref{Legatobögen}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {using-ties-with-arpeggios.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {engraving-ties-manually.ly}
 
 @seealso
@@ -690,7 +690,7 @@ a4\rest d4\rest
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {rest-styles.ly}
 
 @seealso
@@ -959,16 +959,16 @@ Taktprüfungswarnungen nicht angezeigt.
 @cindex Pausen, Kirchenstil
 @cindex Balkenpausen, mehrtaktig
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-form-of-multi-measure-rests.ly}
 
 @cindex Mehrtaktpausen, Positionierung
 @cindex Position von Mehrtaktpausen
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {positioning-multi-measure-rests.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {multi-measure-rest-markup.ly}
 
 @seealso
@@ -1253,16 +1253,16 @@ Notensysteme können eingerichtet werden, indem man den
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-the-time-signature-without-affecting-the-beaming.ly}
 
 @cindex compound time signatures
 @cindex time signature, compound
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {compound-time-signatures.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly}
 
 
@@ -1345,15 +1345,15 @@ d4 g e c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {printing-metronome-and-rehearsal-marks-below-the-staff.ly}
 
 @c perhaps also an example of how to move it horizontally?
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-tempo-without-a-metronome-mark.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-metronome-marks-in-markup-mode.ly}
 
 Zu Einzelheiten siehe @ref{Text formatieren}.
@@ -1695,7 +1695,7 @@ verschoben werden.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {compound-time-signatures.ly}
 
 
@@ -1872,7 +1872,7 @@ eingeschaltet wird mit @code{\improvisationOn}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {guitar-strum-rhythms.ly}
 
 @seealso
@@ -1966,16 +1966,16 @@ können erstellt werden, siehe @ref{Einstellung von automatischen Balken}.
 @cindex auto-knee-gap
 
 @snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {beams-across-line-breaks.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-beam-knee-gap.ly}
 
 @cindex Balken, \partcombine und \autoBeamOff
 @cindex Stimmen, \autoBeamOff und \partcombine
 
-@lilypondfile [verbatim, lilyquote, ragged-right, texidoc, doctitle]
+@lilypondfile [verbatim, quote, ragged-right, texidoc, doctitle]
 {partcombine-and-autobeamoff.ly}
 
 @seealso
@@ -2245,7 +2245,7 @@ Die Standardbebalkungsregeln finden sich in der Datei
 
 @funindex subdivideBeams
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {subdividing-beams.ly}
 
 @cindex Taktgruppen
@@ -2256,13 +2256,13 @@ Die Standardbebalkungsregeln finden sich in der Datei
 
 @funindex autoBeamSettings
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {conducting-signs,-measure-grouping-signs.ly}
 
 @cindex Balken, letzter in Partitur
 @cindex Balken, letzter in polyphoner Stimme
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {beam-endings-in-score-context.ly}
 
 @seealso
@@ -2415,7 +2415,7 @@ g16 a]
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {flat-flags-and-beam-nibs.ly}
 
 @seealso
@@ -2838,22 +2838,22 @@ c1 | c | c | c
 @cindex Taktnummer, Form
 @cindex Aussehen von Taktnummern
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-the-bar-number-for-the-first-measure.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-bar-numbers-at-regular-intervals.ly}
 
 @cindex Ausrichtung von Taktlinien
 @cindex Taktlinien, Ausrichtung
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-bar-numbers-inside-boxes-or-circles.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {aligning-bar-numbers.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {removing-bar-numbers-from-a-score.ly}
 
 
@@ -3262,16 +3262,16 @@ Standard eingestellt:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {using-grace-note-slashes-with-normal-heads.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {tweaking-grace-layout-within-music.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {redefining-grace-note-global-defaults.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {positioning-grace-notes-with-floating-space.ly}
 
 
index 188f52f26995727fbb28e67977e27b4345d0fe98..63173b95fc31e0ca5ffab788eb8bcf55064f44ca 100644 (file)
@@ -753,10 +753,10 @@ Richtungen gedreht sind).
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {additional-voices-to-avoid-collisions.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {forcing-horizontal-shift-of-notes.ly}
 
 @seealso
@@ -933,10 +933,10 @@ instrumentTwo = \relative c' {
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {combining-two-parts-on-the-same-staff.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-partcombine-texts.ly}
 
 @seealso
index ac9914185e55f217f544977737b88aa92d76483a..f06d2c3878c6a217a84f7d4090ac0244abda0b4a 100644 (file)
@@ -250,10 +250,10 @@ Neue Systemgruppen können definiert werden.  Zu Einzelheiten siehe
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {use-square-bracket-at-the-start-of-a-staff-group.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {display-bracket-with-only-one-staff-in-a-system.ly}
 
 @cindex Mensurstriche
@@ -261,7 +261,7 @@ Neue Systemgruppen können definiert werden.  Zu Einzelheiten siehe
 @cindex Transkription von Mensuralmusik
 @cindex Mensuralmusik, Transkription
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {mensurstriche-layout-bar-lines-between-the-staves.ly}
 
 
@@ -334,7 +334,7 @@ Neue geschachtelte Systemgruppen können definiert werden.  Zu Einzelheiten sieh
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {nesting-staves.ly}
 
 
@@ -555,7 +555,7 @@ e4 d c2
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {making-some-staff-lines-thicker-than-the-others.ly}
 
 
@@ -722,7 +722,7 @@ Mehr Information zu @code{\Staff \RemoveEmptyStaves} findet sich in
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {vertically-aligning-ossias-and-lyrics.ly}
 
 
@@ -838,7 +838,7 @@ leere Takte in einem
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {removing-the-first-empty-line.ly}
 
 
@@ -1194,7 +1194,7 @@ clarinet = \relative c'' {
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {quoting-another-voice-with-transposition.ly}
 
 @cindex note-event
@@ -1205,7 +1205,7 @@ clarinet = \relative c'' {
 @funindex quotedEventTypes
 @funindex quotedCueEventTypes
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {quoting-another-voice.ly}
 
 
index fa93bdb9be5058633e38d596c36a5a7dc3406089..27bda767749935521dd3ac891963aeb40f49f7d2 100644 (file)
@@ -206,10 +206,10 @@ Textstrecker sind Teil des @code{Dynamic}-Kontextes, siehe
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {dynamics-text-spanner-postfix.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {dynamics-custom-text-spanner-postfix.ly}
 
 
@@ -301,13 +301,13 @@ c  c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-marks-at-the-end-of-a-line.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {aligning-marks-with-various-notation-objects.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-marks-on-every-staff.ly}
 
 @seealso
@@ -393,7 +393,7 @@ sich in @ref{Textbeschriftung über mehrere Seiten}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {stand-alone-two-column-markup.ly}
 
 @seealso
index cdeb3d5b499637e9aeff1440bab8b18db5c4ef29..1e46e3cf716544787a144d119033de35d3c7affb 100644 (file)
@@ -210,7 +210,7 @@ beeinflussen, wenn man dafür Textbeschriftungsbefehle einsetzt.  Siehe
 hierzu @ref{Text formatieren}.
 
 @snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {formatting-lyrics-syllables.ly}
 
 
@@ -625,19 +625,15 @@ Um mehr als eine Silbe zu einer Note zuzuordnen, können die Silben
 mit geraden Anführungszeichen (@code{"}) umgeben werden oder ein
 Unterstrich (@code{_}) benutzt werden, um ein Leerzeichen zwischen
 Silben zu setzen.  Mit der Tilde (@code{~}) kann ein Bindebogen
-gesetzt werden.  Dies erfordert, dass eine Schriftart vorhanden ist,
-die das entsprechende Symbol (U+203F) beinhaltet.  Frei erhältliche
-Schriftarten, die den Bindebogen enthalten, sind @qq{FreeSerif} (ein
-Times-Klon), @qq{DejaVuSans} (aber nicht DejaVuSerif) oder
-TeXGyreSchole (ein Century Schoolbook-Klon).
+gesetzt werden.
 
 @lilypond[quote,ragged-right,verbatim]
 {
   \time 3/4
   \relative c' { c2 e4 g2 e4 }
-  \addlyrics { gran- de_a- mi- go }
-  \addlyrics { pu- "ro y ho-" nes- to }
-  \addlyrics { pu- ro~y~ho- nes- to }
+  \addlyrics { gran -- de_a -- mi -- go }
+  \addlyrics { pu -- "ro y ho" -- nes -- to }
+  \addlyrics { pu -- ro~y~ho -- nes -- to }
 }
 @end lilypond
 
@@ -1113,7 +1109,7 @@ indem man die gegebenen Beispiele modifiziert oder auch die
 @rlearning{Vokalensemble}-Vorlagen im Handbuch zum Lernen heranzieht.
 
 @snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {lyrics-old-spacing-settings.ly}
 
 @seealso
@@ -1174,7 +1170,7 @@ wirkt, muss sie im @code{layout}-Block vorgenommen werden.
 @end lilypond
 
 @snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {lyrics-alignment.ly}
 
 @c TODO: move to LSR -vv
@@ -2151,7 +2147,7 @@ Akkorden im Akkord-Modus kombiniert; die Syntax ist erklärt in
 @ref{Notation von Akkorden}.
 
 @snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {simple-lead-sheet.ly}
 
 @seealso
@@ -2347,7 +2343,7 @@ Referenz der Interna:
 @cindex Stimmen, geteilt
 @cindex geteilte Stimmen
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {using-arpeggiobracket-to-make-divisi-more-visible.ly}
 
 @seealso
@@ -2666,7 +2662,7 @@ Schnipsel wird jedoch gezeigt, wie man eine Musikfunktion definiert,
 die Tipparbeit erspart und die Klaviernoten klarer macht.
 
 @snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {adding-orchestral-cues-to-a-vocal-score.ly}
 
 @seealso
@@ -3100,7 +3096,7 @@ im ersten der folgenden Schnipsel.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {chant-or-psalms-notation.ly}
 
 Cantica und andere liturgische Texte können freier gesetzt werdne,
@@ -3109,7 +3105,7 @@ Oft weren die Worte unter den Noten und an ihnen ausgerichtet
 gesetzt.  In diesem Fall werden die Noten entsprechend der
 Ausdehnung des Textes und nicht der Notenlänge gesetzt.
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {ancient-notation-template----modern-transcription-of-gregorian-music.ly}
 
 @seealso
@@ -3299,7 +3295,7 @@ unvollständigen Takt, sodass jede Notenzeile exakt mit eine Textzeile
 Beginn der Musik ein und @code{\bar "|"} oder @code{\bar "||"},
 um die schließende Taktlinie am Ende der Zeile zu setzen.
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {hymn-template.ly}
 
 
index 5e966e7709c622ad1d11faa383eadb0530960a8e..2f2f00243bf43ca1410a64a29e25c1b50b3217dd 100644 (file)
@@ -109,7 +109,7 @@ notiert. Siehe
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing--flageolet-mark-size.ly}
 
 
@@ -143,10 +143,10 @@ Diagramme für Holzbläser können erstellt werden nach den Anweisungen in
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {fingering-symbols-for-wind-instruments.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {recorder-fingering-chart.ly}
 
 @seealso
@@ -450,16 +450,16 @@ Scheme-Fähigkeit und ist nicht für alle Benutzer verständlich.
 
 
 @snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {woodwind-diagrams-listing.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {graphical-and-text-woodwind-diagrams.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-size-of-woodwind-diagrams.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {woodwind-diagrams-key-lists.ly}
 
 @seealso
index bc898dad78afc992430d5e761f9952d36311ff0f..336710e2f88d9749b9aeef3fbf98e3b00258adf4 100644 (file)
@@ -79,7 +79,7 @@ Um Dateien wie @file{arabic.ly} oder @file{makam.ly} zu finden, siehe
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {makam-example.ly}
 
 @seealso
@@ -329,7 +329,7 @@ häufigsten Maqams bestimmten Vorzeichen zugeordnet werden:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {non-traditional-key-signatures.ly}
 
 @seealso
@@ -380,10 +380,10 @@ zu benutzen.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {compound-time-signatures.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {arabic-improvisation.ly}
 
 
index 949346eb6dfba3b83e7745d9a0ad928b9322d494..d19c478201d539f4fc32910aac2068f2c5dd76fe 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{Zuletzt aktualisiert am Wed Jul 13 10:59:12 UTC 2011
+@emph{Zuletzt aktualisiert am Sat Aug 13 14:15:49 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -231,28 +231,28 @@ ja
 @item
 2 Schnittstellen für Programmierer
 @*
-3568
+3899
 @tab Till Paala
 @tab 
 @tab 
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">ja</span>
+<span style="background-color: #dfef77">teilweise (98 %)</span>
 @end html
 @end ifhtml
 @ifnothtml
-ja
+teilweise (98 %)
 @end ifnothtml
 @tab 
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">ja</span>
+<span style="background-color: #39ff22">teilweise</span>
 @end html
 @end ifhtml
 @ifnothtml
-ja
+teilweise
 @end ifnothtml
 @tab vor-GDP
 @end multitable
@@ -353,7 +353,7 @@ ja
 @item
 2 Übliche Notation
 @*
-4184
+4187
 @tab Till Paala
 @tab 
 @tab 
@@ -637,7 +637,7 @@ ja
 @item
 1.4 Wiederholungszeichen
 @*
-945
+944
 @tab Till Paala
 @tab 
 @tab 
@@ -654,11 +654,11 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">ja</span>
+<span style="background-color: #25fe1f">teilweise</span>
 @end html
 @end ifhtml
 @ifnothtml
-ja
+teilweise
 @end ifnothtml
 @tab vor-GDP
 @item
@@ -691,7 +691,7 @@ teilweise
 @item
 1.6 Notation auf Systemen
 @*
-2345
+2341
 @tab Till Paala
 @tab 
 @tab 
@@ -708,7 +708,7 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #9eff30">teilweise</span>
+<span style="background-color: #a5ff31">teilweise</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -826,7 +826,7 @@ ja
 @item
 2.2 Tasteninstrumente und andere Instrumente mit mehreren Systemen
 @*
-864
+862
 @tab  Till Paala
 @tab 
 @tab 
@@ -1069,7 +1069,7 @@ ja
 @item
 3 Allgemeine Eingabe und Ausgabe
 @*
-7671
+7686
 @tab Till Paala
 @tab 
 @tab 
@@ -1086,7 +1086,7 @@ teilweise (90 %)
 @ifhtml
 
 @html
-<span style="background-color: #83fe2c">teilweise</span>
+<span style="background-color: #8aff2d">teilweise</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -1123,7 +1123,7 @@ ja
 @item
 5 Standardeinstellungen verändern
 @*
-12248
+12258
 @tab Till Paala
 @tab 
 @tab 
@@ -1150,7 +1150,7 @@ ja
 @item
 A Notationsübersicht
 @*
-1989
+2017
 @tab Till Paala
 @tab 
 @tab 
@@ -1270,7 +1270,7 @@ ja
 @item
 1 @command{lilypond} starten
 @*
-3622
+3681
 @tab Reinhold Kainhofer
 @*
 Till Paala
@@ -1326,7 +1326,7 @@ ja
 @item
 3 @command{lilypond-book} aufrufen
 @*
-3952
+3978
 @tab Reinhold Kainhofer
 @tab Till Paala
 @tab 
@@ -1353,7 +1353,7 @@ ja
 @item
 4 Externe Programme
 @*
-2170
+2180
 @tab Till Paala
 @*
 Reinhold Kainhofer
@@ -1372,11 +1372,11 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">ja</span>
+<span style="background-color: #25fe1f">teilweise</span>
 @end html
 @end ifhtml
 @ifnothtml
-ja
+teilweise
 @end ifnothtml
 @tab vor-GDP
 @item
@@ -1529,7 +1529,7 @@ teilweise
 @item
 Handbücher
 @*
-1203
+1214
 @tab Till Paala
 @tab 
 @tab 
@@ -1556,7 +1556,7 @@ ja
 @item
 Gemeinschaft
 @*
-1755
+1888
 @tab  Till Paala
 @tab 
 @tab 
@@ -1573,11 +1573,11 @@ ja
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">ja</span>
+<span style="background-color: #40fe23">teilweise</span>
 @end html
 @end ifhtml
 @ifnothtml
-ja
+teilweise
 @end ifnothtml
 @tab vor-GDP
 @end multitable
index 8f3eb32756751e1939f0592f8a63394e5802e18b..aa64257e5bfef571c5f6f677693a6d296c7566d3 100644 (file)
@@ -802,13 +802,6 @@ die Übersetzung im Feld @code{texidoc@var{LANG}} enthalten. Wird nun
 aufgerufen, so wird der Inhalt der Datei @file{foo.texidoc@var{LANG}}
 anstelle von @file{foo.texidoc} eingefügt.
 
-@item lilyquote
-(Nur innerhalb von Texinfo-Dateien.) Diese Option wirkt wie die
-@code{quote} Option, außer dass nur das Musikfragment (und natürlich optional der
-gesamte LilyPond-Code bei Benutzung von @code{verbatim}) in den Zitatblock
-eingefügt wird. Dies ist nützlich, wenn Sie ein Musikfragment zitieren möchten,
-nicht aber dessen @code{texidoc} Dokumentationsblock.
-
 @item doctitle
 (Nur innerhalb von Texinfo-Dateien.) Diese Option wirkt ähnlich wie die
 @code{texidoc} Option: Wenn @command{lilypond} mit der Option
index 2986e4e9f2cb51d0e2c5c6ca8e1049f839ab2b93..5711d6aff51b89d261c79a8048e377537c464d55 100644 (file)
@@ -36,23 +36,23 @@ unas hermosas partituras impresas!
 
 @appendixsubsec Sólo notas
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion]
 {single-staff-template-with-only-notes.ly}
 
 
 @appendixsubsec Notas y letra
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion]
 {single-staff-template-with-notes-and-lyrics.ly}
 
 @appendixsubsec Notas y acordes
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {single-staff-template-with-notes-and-chords.ly}
 
 @appendixsubsec Notas, letra y acordes.
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {single-staff-template-with-notes,-lyrics,-and-chords.ly}
 
 
@@ -62,22 +62,22 @@ unas hermosas partituras impresas!
 
 @appendixsubsec Piano solo
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-simple.ly}
 
 @appendixsubsec Piano y melodía con letra
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-melody-and-lyrics.ly}
 
 @appendixsubsec Piano con letra centrada
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-centered-lyrics.ly}
 
 @appendixsubsec Piano con dinámicas centradas
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-centered-dynamics.ly}
 
 
@@ -87,12 +87,12 @@ unas hermosas partituras impresas!
 
 @appendixsubsec Cuarteto de cuerda
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {string-quartet-template-simple.ly}
 
 @appendixsubsec Particellas de cuarteto de cuerda
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {string-quartet-template-with-separate-parts.ly}
 
 
@@ -102,37 +102,37 @@ unas hermosas partituras impresas!
 
 @appendixsubsec Partitura vocal SATB
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template.ly}
 
 @appendixsubsec Partitura vocal SATB y reducción para piano automática
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-automatic-piano-reduction.ly}
 
 @appendixsubsec SATB con contextos alineados
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly}
 
 @appendixsubsec SATB sobre cuatro pentagramas
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {satb-choir-template---four-staves.ly}
 
 @appendixsubsec Estrofas a solo y estribillo a dos voces
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-verse-and-refrain.ly}
 
 @appendixsubsec Melodías de himnos
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {hymn-template.ly}
 
 @appendixsubsec Salmos
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {anglican-psalm-template.ly}
 
 
@@ -141,7 +141,7 @@ unas hermosas partituras impresas!
 @translationof Orchestral templates
 
 @appendixsubsec Orquesta, coro y piano
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {orchestra,-choir-and-piano-template.ly}
 
 
@@ -152,12 +152,12 @@ unas hermosas partituras impresas!
 
 @appendixsubsec Transcripción de música mensural
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {ancient-notation-template----modern-transcription-of-mensural-music.ly}
 
 @appendixsubsec Plantilla para transcripción de canto gregoriano
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {ancient-notation-template----modern-transcription-of-gregorian-music.ly}
 
 
@@ -168,7 +168,7 @@ unas hermosas partituras impresas!
 @appendixsubsec Combo de jazz
 @translationof Jazz combo
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {jazz-combo-template.ly}
 
 
index 1cb27ebb9d6335e104b289e2db752011aa8481ae..163f64d0a45643e2184e038ca544711c13af0139 100644 (file)
@@ -756,7 +756,7 @@ Para la versión de LilyPond @version{}
 </div>
 @end html
 @iftex
-@image{ly-examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png}
+@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png}
 @end iftex
 @ifinfo
 @image{lilypond/ly-examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png}
index 822f1ae16b8d48bb4c8aa80331bdee60ef4f5e96..076b670eb3d697b2c161eb46cf575c4b42402381 100644 (file)
@@ -759,7 +759,7 @@ Aparte del estilo de corchete por defecto @code{default}, sólo está
 contemplado el estilo @code{mensural}
 
 @lilypond[quote,fragment,ragged-right,verbatim]
-\override Stem #'flag-style = #'mensural
+\override Flag #'style = #'mensural
 \override Stem #'thickness = #1.0
 \override NoteHead #'style = #'mensural
 \autoBeamOff
@@ -2512,7 +2512,7 @@ compás, y al mismo tiempo ofrecer la ayuda orientativa que
 proporcionan las barras de compás.
 
 
-@lilypondfile[verbatim,lilyquote,texidoc]
+@lilypondfile[verbatim,quote,texidoc]
 {mensurstriche-layout-bar-lines-between-the-staves.ly}
 
 
index a1c401f67a9f8ec0c5343d42bab27421791f16d3..8ce0c46a681f3de63976e58b9facad725c68ca3e 100644 (file)
@@ -530,13 +530,13 @@ Sin Acorde).
 @cindex acordes, eliminar repetidos
 @funindex chordChanges
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {showing-chords-at-changes.ly}
 
-@c @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@c @lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 @c {adding-bar-lines-to-chordnames-context.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {simple-lead-sheet.ly}
 
 
@@ -700,20 +700,20 @@ acorde está alterado.
 @snippets
 
 @cindex excepciones, nombres de acorde
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {chord-name-exceptions.ly}
 
 @c TODO - tweak snippet to use \blackTriangleMarkup as well
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {chord-name-major7.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adding-bar-lines-to-chordnames-context.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {volta-below-chords.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-chord-separator.ly}
 
 
@@ -1008,7 +1008,7 @@ Fin de línea de continuación
 
 
 @snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-positions-of-figured-bass-alterations.ly}
 
 
index f691ffb3be34881ba8c7a5395ee34cf4d1b83f6c..306d04d06cf2480e69642ff30c456e817b210653 100644 (file)
@@ -197,13 +197,13 @@ debajo del pentagrama, véase @ref{Dirección y posición}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {controlling-the-placement-of-chord-fingerings.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {allowing-fingerings-to-be-printed-inside-the-staff.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {avoiding-collisions-with-chord-fingerings.ly}
 
 
@@ -491,7 +491,7 @@ abajo; véase @ref{Dirección y posición}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {default-direction-of-stems-on-the-center-line-of-the-staff.ly}
 
 
@@ -651,7 +651,7 @@ especificar la duración entre las líneas de rejilla.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {grid-lines--changing-their-appearance.ly}
 
 
index 4e36ff1a656a4cef34a8acba1f7b85946a0a5b8d..b2b7f118bcd62e9b1e38a20c59b2fb4905665233 100644 (file)
@@ -191,13 +191,13 @@ Script y TextScript que se adjuntan a las notas, consulte
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {modifying-default-values-for-articulation-shorthand-notation.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {controlling-the-vertical-ordering-of-scripts.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-a-delayed-turn.ly}
 
 @seealso
@@ -478,25 +478,25 @@ texto e indicaciones de pedal de piano.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {setting-hairpin-behavior-at-bar-lines.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {setting-the-minimum-length-of-hairpins.ly}
 
 @cindex al niente
 @cindex niente, al
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {printing-hairpins-using-al-niente-notation.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {vertically-aligned-dynamics-and-textscripts.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {hiding-the-extender-line-for-text-dynamics.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-text-and-spanner-styles-for-text-dynamics.ly}
 
 
@@ -789,13 +789,13 @@ g4( e c2)
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {using-double-slurs-for-legato-chords.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {positioning-text-markups-inside-slurs.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {making-slurs-with-complex-dash-structure.ly}
 
 
@@ -990,12 +990,12 @@ detalles, consulte @ref{Divisiones}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-breath-mark-symbol.ly}
 
 @cindex caesura
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {inserting-a-caesura.ly}
 
 
@@ -1046,7 +1046,7 @@ al escribir caídas y elevaciones.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adjusting-the-shape-of-falls-and-doits.ly}
 
 
@@ -1093,7 +1093,7 @@ consulte @ref{Estilos de línea}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {contemporary-glissando.ly}
 
 
@@ -1206,13 +1206,13 @@ Los acordes arpegiados se pueden desarrollar explícitamente utilizando
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-cross-staff-arpeggios-in-a-piano-staff.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-cross-staff-arpeggios-in-other-contexts.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-arpeggios-across-notes-in-different-voices.ly}
 
 
index 129b0be8d74c0e07a17821813a6e23598221a96a..1d3a88d78072a78e127708c903b7928eb06a7466 100644 (file)
@@ -131,10 +131,10 @@ estos elementos en el código:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {controlling-the-placement-of-chord-fingerings.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {allowing-fingerings-to-be-printed-inside-the-staff.ly}
 
 
@@ -445,22 +445,22 @@ ratioHarmonics = {
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {stem-and-beam-behavior-in-tablature.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {polyphony-in-tablature.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {open-string-harmonics-in-tablature.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {fretted-string-harmonics-in-tablature.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {slides-in-tablature.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {chord-glissando-in-tablature.ly}
 
 
@@ -1119,10 +1119,10 @@ trastes, las propiedades del interface pertenecen a
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-fret-orientations.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {customizing-markup-fret-diagrams.ly}
 
 @seealso
@@ -1431,16 +1431,16 @@ predefinido, las propiedades de interface pertenecen a
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {customizing-fretboard-fret-diagrams.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {defining-predefined-fretboards-for-other-instruments.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {chordchanges-for-fretboards.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {fretboards-alternate-tables.ly}
 
 
@@ -1670,10 +1670,10 @@ corto, como por ejemplo @code{RH}:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {placement-of-right-hand-fingerings.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {fingerings,-string-indications,-and-right-hand-fingerings.ly}
 
 
index e1b05d81035737696654c4b8d22f23aed677edd0..8d7787824be40c9d1099b629941fd884df26a50c 100644 (file)
@@ -2077,7 +2077,7 @@ Piano de Cola (@code{"acoustic grand"}).
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-midi-output-to-one-channel-per-voice.ly}
 
 @knownissues
index dda15e148ed53bb39ada1913820f132ec814b5db..9a04d1e5eff9166f8765ec6d89e454f427ba6369 100644 (file)
@@ -115,7 +115,7 @@ se cruzan entre voces, como se explica en @rlearning{Otras aplicaciones de los t
 @end itemize
 
 @c @snippets
-@c @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@c @lilypondfile[verbatim,quote,texidoc,doctitle]
 @c {forcing-visibility-of-systems-with-multi-bar-rests-when-using-\RemoveEmptyStaffContext.ly}
 @c http://lsr.dsi.unimi.it/LSR/Item?u=1&id=312
 
@@ -460,7 +460,7 @@ Se pueden hacer acordes que cruzan los pentagramas:
         % extend the stems to reach the other staff
         \override Stem #'length = #12
         % do not print extra flags
-        \override Stem #'flag-style = #'no-flag
+        \override Flag #'style = #'no-flag
         % prevent beaming as needed
         a8 g4 f8 f bes\noBeam g4
       }
@@ -474,7 +474,7 @@ Se pueden hacer acordes que cruzan los pentagramas:
 @end lilypond
 
 @snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {indicating-cross-staff-chords-with-arpeggio-bracket.ly}
 
 
@@ -633,7 +633,7 @@ ejecución.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {accordion-discant-symbols.ly}
 
 
index d41427e20346cb1225d900a6474dfb39d5001e25..c41b8018178658fb39695415d1a7b2ccb3078751 100644 (file)
@@ -395,10 +395,10 @@ cis
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle,ragged-right]
+@lilypondfile[verbatim,quote,texidoc,doctitle,ragged-right]
 {hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {preventing-extra-naturals-from-being-automatically-added.ly}
 
 @seealso
@@ -795,7 +795,7 @@ Para ver más información sobre instrumentos transpositores, consulte
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {transposing-pitches-with-minimum-accidentals-smart-transpose.ly}
 
 
@@ -1184,7 +1184,7 @@ en la sección @ref{Formateo de las notas guía}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {tweaking-clef-properties.ly}
 
 @seealso
@@ -1282,10 +1282,10 @@ fis
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {non-traditional-key-signatures.ly}
 
 
@@ -1343,7 +1343,7 @@ a2 b
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {ottava-text.ly}
 
 
@@ -2663,13 +2663,13 @@ tonalidad.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adding-ambitus-per-voice.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {ambitus-with-multiple-voices.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-ambitus-gap.ly}
 
 
@@ -2855,7 +2855,7 @@ fuente más grande, véase @ref{Establecer el tamaño del pentagrama}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {numbers-as-easy-note-heads.ly}
 
 
@@ -2980,7 +2980,7 @@ a2 b c d \break
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {applying-note-head-styles-depending-on-the-step-of-the-scale.ly}
 
 Para ver todos los estilos de formas de cabeza de nota, consulte
index 95da6782f28292e8aa2a3d9f6b6f2733f1be635b..5a8d11cb67905291438672e8e35315eed9e6e54d 100644 (file)
@@ -270,13 +270,13 @@ c1
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {shortening-volta-brackets.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adding-volta-brackets-to-additional-staves.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {setting-the-double-repeat-default-for-volte.ly}
 
 @seealso
@@ -445,7 +445,7 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } }
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {printing-a-repeat-sign-at-the-beginning-of-a-piece.ly}
 
 
@@ -641,13 +641,13 @@ duraciones mezcladas utilizan un símbolo de porcentaje doble.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {percent-repeat-counter.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {percent-repeat-count-visibility.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {isolated-percent-repeats.ly}
 
 @seealso
@@ -738,7 +738,7 @@ c: c:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {cross-staff-tremolos.ly}
 
 
index ff84945958cf6c3f7c37299478a748468609ae0e..83416309fb002a2833e692f7a631299c9a0d263b 100644 (file)
@@ -153,10 +153,10 @@ pauta; véase @ref{Dirección y posición}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {alternative-breve-note.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-the-number-of-augmentation-dots-per-note.ly}
 
 
@@ -265,23 +265,23 @@ grupo especial, véase @ref{Escalar las duraciones}.
 @funindex tupletNumberFormatFunction
 @funindex tupletSpannerDuration
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {entering-several-tuplets-using-only-one--times-command.ly}
 
 @cindex grupos de valoración especial, modificación del número
 
 @funindex TupletNumber
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-the-tuplet-number.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {non-default-tuplet-numbers.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {controlling-tuplet-bracket-visibility.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {permitting-line-breaks-within-beamed-tuplets.ly}
 
 
@@ -567,10 +567,10 @@ consulte los fragmentos de código bajo @ref{Ligaduras de expresión}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {using-ties-with-arpeggios.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {engraving-ties-manually.ly}
 
 
@@ -678,7 +678,7 @@ a4\rest d4\rest
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {rest-styles.ly}
 
 
@@ -954,16 +954,16 @@ las advertencias correspondientes de comprobación de compás.
 @cindex silencios eclesiásticos
 @cindex kirchenpausen
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-form-of-multi-measure-rests.ly}
 
 @cindex multicompás, posicionamiento de los silencios
 @cindex colocación de los silencios multicompás
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {positioning-multi-measure-rests.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {multi-measure-rest-markup.ly}
 
 
@@ -1243,16 +1243,16 @@ moviendo el @code{Timing_translator} y el
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-the-time-signature-without-affecting-the-beaming.ly}
 
 @cindex compuesto, indicaciones de compás
 @cindex compás compuesto, indicaciones de
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {compound-time-signatures.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly}
 
 
@@ -1337,15 +1337,15 @@ d4 g e c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {printing-metronome-and-rehearsal-marks-below-the-staff.ly}
 
 @c perhaps also an example of how to move it horizontally?
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-tempo-without-a-metronome-mark.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-metronome-marks-in-markup-mode.ly}
 
 Para ver más detalles, consulte @ref{Formatear el texto}.
@@ -1690,7 +1690,7 @@ independiente trasladando los grabadores @code{Timing_translator} y
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {compound-time-signatures.ly}
 
 
@@ -1866,7 +1866,7 @@ rasgueado.  Esto se puede hacer con el grabador
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {guitar-strum-rhythms.ly}
 
 
@@ -1953,16 +1953,16 @@ automáticos predeterminados; véase @ref{Establecer el comportamiento de las ba
 @funindex breakable
 
 @snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {beams-across-line-breaks.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-beam-knee-gap.ly}
 
 @cindex barras, \partcombine con \autoBeamOff
 @cindex voces, \partcombine con \autoBeamOff
 
-@lilypondfile [verbatim, lilyquote, ragged-right, texidoc, doctitle]
+@lilypondfile [verbatim, quote, ragged-right, texidoc, doctitle]
 {partcombine-and-autobeamoff.ly}
 
 @seealso
@@ -2228,7 +2228,7 @@ en el archivo @file{scm/time-signature-settings.scm}.
 
 @cindex barras, subdivisión
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {subdividing-beams.ly}
 
 @cindex compás, agrupación
@@ -2236,13 +2236,13 @@ en el archivo @file{scm/time-signature-settings.scm}.
 @cindex agrupar pulsos
 @cindex compases, sub-agrupar
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {conducting-signs,-measure-grouping-signs.ly}
 
 @cindex barra, finales en la partitura
 @cindex barra, finales con varias voces
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {beam-endings-in-score-context.ly}
 
 
@@ -2401,7 +2401,7 @@ g16 a]
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {flat-flags-and-beam-nibs.ly}
 
 
@@ -2813,24 +2813,24 @@ c1 | c | c | c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-the-bar-number-for-the-first-measure.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-bar-numbers-at-regular-intervals.ly}
 
 @cindex compás, número de, formato
 @cindex número de compases, formato de
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-bar-numbers-inside-boxes-or-circles.ly}
 
 @cindex compás, número, alineación
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {aligning-bar-numbers.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {removing-bar-numbers-from-a-score.ly}
 
 
@@ -3244,16 +3244,16 @@ adorno se sobreescribe y luego se revierte.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {using-grace-note-slashes-with-normal-heads.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {tweaking-grace-layout-within-music.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {redefining-grace-note-global-defaults.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {positioning-grace-notes-with-floating-space.ly}
 
 
index 8e0f370d9994f4da5dcc942d10bdba0dac98fd44..4682b60f626da0a13cc6216af29e7304d05df6e9 100644 (file)
@@ -748,10 +748,10 @@ direcciones opuestas).
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {additional-voices-to-avoid-collisions.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {forcing-horizontal-shift-of-notes.ly}
 
 
@@ -947,10 +947,10 @@ instrumentTwo = \relative c' {
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {combining-two-parts-on-the-same-staff.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-partcombine-texts.ly}
 
 
index 12b55720457ce591acef2458aa27b0f6c80789c4..f5ac4dd12c0587a5930ad111c76ab046d13b2ca4 100644 (file)
@@ -241,10 +241,10 @@ más detalles, consulte @ref{Definir contextos nuevos}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {use-square-bracket-at-the-start-of-a-staff-group.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {display-bracket-with-only-one-staff-in-a-system.ly}
 
 @cindex diseño «mensurstriche»
@@ -253,7 +253,7 @@ más detalles, consulte @ref{Definir contextos nuevos}.
 @cindex transcripción de música mensural
 @cindex mensural, música, transcripción de
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {mensurstriche-layout-bar-lines-between-the-staves.ly}
 
 @seealso
@@ -320,7 +320,7 @@ Para ver más detalles, consulte @ref{Definir contextos nuevos}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {nesting-staves.ly}
 
 
@@ -527,7 +527,7 @@ e4 d c2
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {making-some-staff-lines-thicker-than-the-others.ly}
 
 
@@ -688,7 +688,7 @@ sobre @code{\RemoveEmptyStaves}, consulte @ref{Ocultar pentagramas}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {vertically-aligning-ossias-and-lyrics.ly}
 
 
@@ -803,7 +803,7 @@ los pentagramas vacíos en contextos de música antigua como
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {removing-the-first-empty-line.ly}
 
 
index c1aecb08fc9357498d5c3b47cf9528b978128b45..7e254f8bf7930853affb1e74c21d6dddf6d806f0 100644 (file)
@@ -202,10 +202,10 @@ voz.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {dynamics-text-spanner-postfix.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {dynamics-custom-text-spanner-postfix.ly}
 
 @seealso
@@ -292,13 +292,13 @@ c  c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-marks-at-the-end-of-a-line.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {aligning-marks-with-various-notation-objects.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-marks-on-every-staff.ly}
 
 
@@ -378,7 +378,7 @@ requiere se describen en @ref{Elementos de marcado de varias páginas}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {stand-alone-two-column-markup.ly}
 
 
index ce3416cae37d8e3fd71b5e763367075cd146388f..f3af14dcb00efc374d1f1c38790858ebddc2e183 100644 (file)
@@ -224,7 +224,7 @@ ver una explicación de muchas de las opciones, consulte
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {formatting-lyrics-syllables.ly}
 
 
@@ -640,20 +640,15 @@ Para asignar más de una sílaba a una única nota con espacios entre las
 sílabas, podemos encerrar la frase entre comillas o utilizar un
 carácter de guión bajo @code{_}.  De forma alternativa, podemos usar
 el símbolo de tilde curva (@code{~}) para obtener una ligadura de
-texto.  La ligadura de texto está implementada con el carácter Unicode
-U+203F, por tanto debemos asegurarnos de usar una fuente tipográfica
-para este glifo que realmente lo contenga.  Algunas de las fuentes
-tipográficas disponibles libremente con una ligadura de letra son, por
-ejemplo, `FreeSerif' (un clon de Times), `DejaVuSans' (pero no
-`DejaVuSerif') o `TeXGyreSchola' (un clon de Century Schoolbook).
+texto.
 
 @lilypond[quote,ragged-right,verbatim]
 {
   \time 3/4
   \relative c' { c2 e4 g2 e4 }
-  \addlyrics { gran- de_a- mi- go }
-  \addlyrics { pu- "ro y ho-" nes- to }
-  \addlyrics { pu- ro~y~ho- nes- to }
+  \addlyrics { gran -- de_a -- mi -- go }
+  \addlyrics { pu -- "ro y ho" -- nes -- to }
+  \addlyrics { pu -- ro~y~ho -- nes -- to }
 }
 @end lilypond
 
@@ -1136,7 +1131,7 @@ elaboración de los ejemplos anteriores, o examinando las plantillas de
 @rlearning{Conjuntos vocales} del manual de aprendizaje.
 
 @snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {lyrics-old-spacing-settings.ly}
 
 @seealso
@@ -1193,7 +1188,7 @@ la propiedad dentro del bloque @code{\layout}.
 @end lilypond
 
 @snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {lyrics-alignment.ly}
 
 @c TODO: move to LSR -vv
@@ -2176,7 +2171,7 @@ el @q{modo de acordes}; esta sintaxis se explica en
 @ref{Notación de acordes}.
 
 @snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {simple-lead-sheet.ly}
 
 @seealso
@@ -2377,7 +2372,7 @@ Referencia de funcionamiento interno:
 
 @cindex voces divididas
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {using-arpeggiobracket-to-make-divisi-more-visible.ly}
 
 @seealso
@@ -2706,7 +2701,7 @@ función musical para reducir la cantidad de texto que se teclea y para
 hacer que las notas del piano estén más claras.
 
 @snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {adding-orchestral-cues-to-a-vocal-score.ly}
 
 @seealso
@@ -3143,7 +3138,7 @@ primero de los siguientes fragmentos de código.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {chant-or-psalms-notation.ly}
 
 Los cánticos y otros textos litúrgicos pueden disponerse de una forma
@@ -3153,7 +3148,7 @@ alineada con las notas.  En este caso, las notas se disponen
 espaciadas de acuerdo con las sílabas en vez de hacerlo con las
 duraciones de las notas.
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {ancient-notation-template----modern-transcription-of-gregorian-music.ly}
 
 @seealso
@@ -3343,7 +3338,7 @@ corresponde exactamente con una línea de texto.  Esto requiere una
 instrucción @code{\partial} al principio de la música e instrucciones
 @code{\bar "|"} ó @code{\bar "||"} al final de cada línea.
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {hymn-template.ly}
 
 
index 697abec3734fe1624e50819fe071d0bf85048e79..8bc10dc98ce4b3540276adc69ad581a8d2526ff0 100644 (file)
@@ -69,7 +69,7 @@ aplicación a los instrumentos de viento:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing--flageolet-mark-size.ly}
 
 
@@ -105,10 +105,10 @@ de viento madera,como se describe en
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {fingering-symbols-for-wind-instruments.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {recorder-fingering-chart.ly}
 
 @seealso
@@ -417,16 +417,16 @@ usuarios.
 @endpredefined
 
 @snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {woodwind-diagrams-listing.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {graphical-and-text-woodwind-diagrams.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-size-of-woodwind-diagrams.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {woodwind-diagrams-key-lists.ly}
 
 @seealso
index 6ec67ab70556b01afc3a01ec49c63bd9b11256f0..c9117b1883a1442952db776a10681afa0f03af29 100644 (file)
@@ -82,7 +82,7 @@ información}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {makam-example.ly}
 
 @seealso
@@ -338,7 +338,7 @@ los maqams más comunes a armaduras de tonalidad:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {non-traditional-key-signatures.ly}
 
 
@@ -386,10 +386,10 @@ barrado automático y/o utilizar indicaciones de compás compuestas.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {compound-time-signatures.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {arabic-improvisation.ly}
 
 
index 7aaf073be070d6fb74eafa3793a820cb85952d4a..5145e7ed69458e042d8f1f3506a3d04d284c9acf 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{Actualizado en Wed Jul 13 10:59:12 UTC 2011
+@emph{Actualizado en Sat Aug 13 14:15:49 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -30,7 +30,7 @@ Registro de cambios de LilyPond
 @item
 Títulos de sección
 @*
-1779
+193
 @tab Francisco Vila
 @tab 
 @tab 
@@ -47,11 +47,11 @@ sí
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">sí</span>
+<span style="background-color: #ff7855">parcialmente</span>
 @end html
 @end ifhtml
 @ifnothtml
-sí
+parcialmente
 @end ifnothtml
 @tab pre-GDP
 @item
@@ -297,28 +297,28 @@ sí
 @item
 1 Interfaces para programadores
 @*
-3568
+3899
 @tab Francisco Vila
 @tab 
 @tab 
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">sí</span>
+<span style="background-color: #dfef77">parcialmente (98 %)</span>
 @end html
 @end ifhtml
 @ifnothtml
-sí
+parcialmente (98 %)
 @end ifnothtml
 @tab 
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">sí</span>
+<span style="background-color: #39ff22">parcialmente</span>
 @end html
 @end ifhtml
 @ifnothtml
-sí
+parcialmente
 @end ifnothtml
 @tab pre-GDP
 @end multitable
@@ -417,7 +417,7 @@ sí
 @item
 2 Notación corriente
 @*
-4184
+4187
 @tab Francisco Vila
 @tab 
 @tab 
@@ -699,7 +699,7 @@ sí
 @item
 1.4 Repeticiones
 @*
-945
+944
 @tab Francisco Vila
 @tab 
 @tab 
@@ -753,7 +753,7 @@ sí
 @item
 1.6 Notación de los pentagramas
 @*
-2345
+2341
 @tab Francisco Vila
 @tab 
 @tab 
@@ -888,7 +888,7 @@ sí
 @item
 2.2 Teclados y otros instrumentos de varios pentagramas
 @*
-864
+862
 @tab Francisco Vila
 @tab 
 @tab 
@@ -1131,7 +1131,7 @@ sí
 @item
 3 Entrada y salida generales
 @*
-7671
+7686
 @tab Francisco Vila
 @tab 
 @tab 
@@ -1165,11 +1165,11 @@ sí
 @ifhtml
 
 @html
-<span style="background-color: #dfef77">parcialmente (96 %)</span>
+<span style="background-color: #1fff1f">sí</span>
 @end html
 @end ifhtml
 @ifnothtml
-parcialmente (96 %)
+sí
 @end ifnothtml
 @tab 
 @ifhtml
@@ -1185,7 +1185,7 @@ sí
 @item
 5 Cambiar los valores por omisión
 @*
-12248
+12258
 @tab Francisco Vila
 @tab 
 @tab 
@@ -1212,7 +1212,7 @@ sí
 @item
 A Tablas del manual sobre notación
 @*
-1989
+2017
 @tab Francisco Vila
 @tab 
 @tab 
@@ -1332,7 +1332,7 @@ sí
 @item
 1 Ejecutar LilyPond
 @*
-3622
+3681
 @tab Francisco Vila
 @tab 
 @tab 
@@ -1386,7 +1386,7 @@ sí
 @item
 3 Ejecución de @command{lilypond-book}
 @*
-3952
+3978
 @tab Francisco Vila
 @tab 
 @tab 
@@ -1413,7 +1413,7 @@ sí
 @item
 4 Programas externos
 @*
-2170
+2180
 @tab Francisco Vila
 @tab 
 @tab 
@@ -1430,11 +1430,11 @@ sí
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">sí</span>
+<span style="background-color: #25fe1f">parcialmente</span>
 @end html
 @end ifhtml
 @ifnothtml
-sí
+parcialmente
 @end ifnothtml
 @tab pre-GDP
 @item
@@ -1587,7 +1587,7 @@ sí
 @item
 Manuales
 @*
-1203
+1214
 @tab Francisco Vila
 @tab 
 @tab 
@@ -1614,7 +1614,7 @@ sí
 @item
 Comunidad
 @*
-1755
+1888
 @tab Francisco Vila
 @tab 
 @tab 
@@ -1631,11 +1631,11 @@ sí
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">sí</span>
+<span style="background-color: #40fe23">parcialmente</span>
 @end html
 @end ifhtml
 @ifnothtml
-sí
+parcialmente
 @end ifnothtml
 @tab pre-GDP
 @end multitable
index 0b3d270bdce4499e2ffceddbf1dc529920568519..a97aba25c1c062789ef0d8ca4d8db5b2e6c072dd 100644 (file)
@@ -810,14 +810,6 @@ contiene @code{@@documentlanguage @var{LANG}} y la cabecera de
 @file{loquesea.texidoc@var{LANG}} en lugar de
 @file{loquesea.texidoc}.
 
-@item lilyquote
-(Sólo para la salida de Texinfo.)  Esta opción es similar a quote,
-pero se pone dentro del bloque de cita solamente el fragmento de
-música (y el bloque preformateado que se da en la opción
-@code{verbatim}).  Esta opción es útil si queremos citar
-(@code{quote}) el fragmento musical pero no el bloque de documentación
-@code{texidoc}.
-
 @item doctitle
 (Sólo para la salida de Texinfo.) Esta opción funciona de forma
 parecida a la opción @code{texidoc}: si @command{lilypond} se llama
index 71865e7788d009dbe7bfe55f25f539128fb3cf39..130ea01ab7acb6b70177d06730449aeebea121f4 100644 (file)
@@ -76,7 +76,11 @@ LilyPond code enclosed in hashed braces
 (@tie{}@w{@code{#@{@dots{}#@}}}@tie{}).  Within LilyPond code
 blocks, use @code{$} to reference function arguments (eg.,
 @samp{$arg1}) or to start an inline scheme expression containing
-function arguments (eg., @w{@samp{$(cons arg1 arg2)}}).
+function arguments (eg., @w{@samp{$(cons arg1 arg2)}}).  A LilyPond code
+block may contain anything that you can use on the right side of an
+assignment.  In addition, an empty LilyPond block corresponds to a void
+music expression, and a LilyPond block containing multiple music events
+gets turned into a sequential music expression.
 
 @end multitable
 
@@ -117,9 +121,7 @@ compatible with the context in which it is called.
 @itemize
 @item
 At top level in a music expression.  There are no special restrictions
-on the argument list.  Using the @code{#@{}@dots{}@code{#@}} construct
-produces a sequential music expression and consequently can only applied
-in this context.
+on the argument list.
 
 @item
 As a post-event.  All trailing arguments of the music function with the
@@ -295,12 +297,9 @@ may want to have a function that does not involve music (such as
 turning off Point and Click).  To do this, we return a @code{void}
 music expression.
 
-That is why the form that is returned is the
-@w{@code{(make-music @dots{})}}.  With the @code{'void} property
-set to @code{#t}, the parser is told to actually disregard this
-returned music expression.  Thus the important part of the void
-music function is the processing done by the function, not the
-music expression that is returned.
+Using the form @code{#@{ #@}} will actually achieve that.  If you for
+some reason really need an empty sequential music expression, you would
+have to write @code{#@{ @{ @} #@}} instead.
 
 @example
 noPointAndClick =
@@ -308,7 +307,7 @@ noPointAndClick =
      (parser location)
      ()
    (ly:set-option 'point-and-click #f)
-   (make-music 'SequentialMusic 'void #t))
+   #@{ #@})
 ...
 \noPointAndClick   % disable point and click
 @end example
@@ -343,13 +342,16 @@ providing a LilyPond-like syntax.  For example,
 @noindent
 is equivalent to:
 @example
-\markup \column @{ \line @{ \bold \italic "hello" \raise #0.4 "world" @}
-                  \larger \line @{ foo bar baz @} @}
+#@{ \markup \column @{ \line @{ \bold \italic "hello" \raise #0.4 "world" @}
+                  \larger \line @{ foo bar baz @} @} #@}
 @end example
 
 @noindent
 This example demonstrates the main translation rules between regular
-LilyPond markup syntax and Scheme markup syntax.
+LilyPond markup syntax and Scheme markup syntax.  Using @code{#@{
+@dots{} #@}} for entering in Lilypond syntax will often be most
+convenient, but we explain how to use the @code{markup} macro to get a
+Scheme-only solution.
 
 @quotation
 @multitable @columnfractions .3 .3
@@ -560,6 +562,16 @@ command is needed.  Thus, we write a @code{double-box} markup command,
 taking one argument (the text).  This draws the two boxes, with some
 padding.
 
+@lisp
+#(define-markup-command (double-box layout props text) (markup?)
+  "Draw a double box around text."
+  (interpret-markup layout props
+    #@{\markup \override #'(box-padding . 0.4) \box
+            \override #'(box-padding . 0.6) \box @{ $text @}#@}))
+@end lisp
+
+or, equivalently 
+
 @lisp
 #(define-markup-command (double-box layout props text) (markup?)
   "Draw a double box around text."
@@ -571,10 +583,10 @@ padding.
 @code{text} is the name of the command argument, and @code{markup?} its
 type: it identifies it as a markup.  The @code{interpret-markup}
 function is used in most of markup commands: it builds a stencil, using
-@code{layout}, @code{props}, and a markup.  Here, this markup is built
-using the @code{markup} scheme macro, see @ref{Markup construction in Scheme}.
-The transformation from @code{\markup} expression to scheme
-markup expression is straight-forward.
+@code{layout}, @code{props}, and a markup.  In the second case, this
+markup is built using the @code{markup} scheme macro, see @ref{Markup
+construction in Scheme}.  The transformation from @code{\markup}
+expression to scheme markup expression is straight-forward.
 
 The new command can be used as follow:
 
@@ -591,6 +603,19 @@ and the text.  So we will introduce a new property,
 @code{box-padding} will be used for the inner padding.  The new code is
 now as follows:
 
+@lisp
+#(define-markup-command (double-box layout props text) (markup?)
+  #:properties ((inter-box-padding 0.4)
+                (box-padding 0.6))
+  "Draw a double box around text."
+  (interpret-markup layout props
+    #@{\markup \override #`(box-padding . ,$inter-box-padding) \box
+               \override #`(box-padding . ,$box-padding) \box
+               @{ $text @} #@}))
+@end lisp
+
+Again, the equivalent version using the markup macro would be:
+
 @lisp
 #(define-markup-command (double-box layout props text) (markup?)
   #:properties ((inter-box-padding 0.4)
@@ -620,8 +645,9 @@ customized:
                 (box-padding 0.6))
   "Draw a double box around text."
   (interpret-markup layout props
-    (markup #:override `(box-padding . ,inter-box-padding) #:box
-            #:override `(box-padding . ,box-padding) #:box text)))
+    #{\markup \override #`(box-padding . ,$inter-box-padding) \box
+              \override #`(box-padding . ,$box-padding) \box
+              { $text } #}))
 
 \markup \double-box A
 \markup \override #'(inter-box-padding . 0.8) \double-box A
@@ -722,6 +748,16 @@ a single stencil, the former returns 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.
+
+@example
+#(define-markup-list-command (paragraph layout props args) (markup-list?)
+   #:properties ((par-indent 2))
+   (interpret-markup-list layout props
+     #@{\markuplines \justified-lines @{ \hspace #$par-indent $args @} #@}))
+@end example
+
+
+The version using just Scheme is more complex:
 @example
 #(define-markup-list-command (paragraph layout props args) (markup-list?)
    #:properties ((par-indent 2))
@@ -737,11 +773,11 @@ Besides the usual @code{layout} and @code{props} arguments, the
 First, the function gets the indent width, a property here named
 @code{par-indent}, from the property list @code{props}.  If the
 property is not found, the default value is @code{2}.  Then, a
-list of justified lines is made using the
-@code{make-justified-lines-markup-list} function, which is related
-to the @code{\justified-lines} built-in markup list command.  A
-horizontal space is added at the beginning using the
-@code{make-hspace-markup} function.  Finally, the markup list is
+list of justified lines is made using the built-in markup list command
+@code{\justified-lines}, which is related to the
+@code{make-justified-lines-markup-list} function.  A
+horizontal space is added at the beginning using @code{\hspace} (or the
+@code{make-hspace-markup} function).  Finally, the markup list is
 interpreted using the @code{interpret-markup-list} function.
 
 This new markup list command can be used as follows:
index 7b38a76ef9634833ce2230e349d56444610ffc1d..0e608682159d2302f5bfa39ce3b23e51b772cd3d 100644 (file)
@@ -148,7 +148,7 @@ and False is @code{#f}.
 
 @item Numbers
 Numbers are entered in the standard fashion,
-@code{1} is the (integer) number one, while @code{-1.5} is a
+@code{1} is the (integer) number one, while @w{@code{-1.5}} is a
 floating point number (a non-integer number).
 
 @item Strings
@@ -609,7 +609,7 @@ guile> (cond ((< a b) "a is less than b")
 @subsection LilyPond Scheme syntax
 
 The Guile interpreter is part of LilyPond, which means that
-Scheme can be included in LilyPond input files.  The hash mark @code{#}
+Scheme can be included in LilyPond input files.  The hash mark@tie{}@code{#}
 is used to tell the LilyPond parser that the next value is a Scheme
 value.
 
@@ -640,7 +640,7 @@ as follows:
 @end example
 
 For the rest of this section, we will assume that the data is entered
-in a music file, so we add @code{#}s at the beginning of each Scheme
+in a music file, so we add@tie{}@code{#}s at the beginning of each Scheme
 expression.
 
 All of the top-level Scheme expressions in a LilyPond input file can
@@ -780,7 +780,7 @@ define some Scheme code in a macro (to be called later), use
 @knownissues
 
 Mixing Scheme and LilyPond variables is not possible with the
-@code{--safe} option.
+@option{--safe} option.
 
 
 @node Object properties
index cb4e030f278678ea1e7e868ea7d670de814b925e..011abc2815ca271b75853e29573351a27c25b51f 100644 (file)
@@ -37,22 +37,22 @@ de lancer LilyPond, et d'aprécier le résultat.
 
 @appendixsubsec Notes seules
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion]
 {single-staff-template-with-only-notes.ly}
 
 @appendixsubsec Notes et paroles
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion]
 {single-staff-template-with-notes-and-lyrics.ly}
 
 @appendixsubsec Notes et accords
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {single-staff-template-with-notes-and-chords.ly}
 
 @appendixsubsec Notes, paroles et accords
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {single-staff-template-with-notes,-lyrics,-and-chords.ly}
 
 
@@ -62,22 +62,22 @@ de lancer LilyPond, et d'aprécier le résultat.
 
 @appendixsubsec Piano seul
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-simple.ly}
 
 @appendixsubsec Chant et accompagnement
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-melody-and-lyrics.ly}
 
 @appendixsubsec Piano et paroles entre les portées
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-centered-lyrics.ly}
 
 @appendixsubsec Piano et nuances entre les portées
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-centered-dynamics.ly}
 
 
@@ -87,12 +87,12 @@ de lancer LilyPond, et d'aprécier le résultat.
 
 @appendixsubsec Quatuor à cordes
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {string-quartet-template-simple.ly}
 
 @appendixsubsec Parties pour quatuor à cordes
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {string-quartet-template-with-separate-parts.ly}
 
 
@@ -102,37 +102,37 @@ de lancer LilyPond, et d'aprécier le résultat.
 
 @appendixsubsec Partition pour chœur à quatre voix mixtes
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template.ly}
 
 @appendixsubsec Partition pour chœur SATB avec réduction pour piano
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-automatic-piano-reduction.ly}
 
 @appendixsubsec Partition pour chœur SATB avec alignement des contextes
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly}
 
 @appendixsubsec Partition pour chœur SATB, sur quatre portées
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {satb-choir-template---four-staves.ly}
 
 @appendixsubsec Couplet pour solo et refrain à deux voix
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-verse-and-refrain.ly}
 
 @appendixsubsec Hymnes et cantiques
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {hymn-template.ly}
 
 @appendixsubsec Psalmodie
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {anglican-psalm-template.ly}
 
 
@@ -142,7 +142,7 @@ de lancer LilyPond, et d'aprécier le résultat.
 
 @appendixsubsec Orchestre, chœur et piano
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {orchestra,-choir-and-piano-template.ly}
 
 
@@ -153,12 +153,12 @@ de lancer LilyPond, et d'aprécier le résultat.
 
 @appendixsubsec Transcription de musique mensurale
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {ancient-notation-template----modern-transcription-of-mensural-music.ly}
 
 @appendixsubsec Transcription du grégorien
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {ancient-notation-template----modern-transcription-of-gregorian-music.ly}
 
 
@@ -169,6 +169,6 @@ de lancer LilyPond, et d'aprécier le résultat.
 @appendixsubsec Symboles de jazz
 @translationof Jazz combo
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {jazz-combo-template.ly}
 
index 8060e7c69f87e8f91639301c9165581407cfa4b1..22b73e3f8443533d78b1cca5ba544009aa12e4f8 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-       Translation of GIT committish: a6cd9e45dcb86a249936f174403c9f8bc8afebc0
+       Translation of GIT committish: b38fd63a19190741c0c19faf6a904af82c3f434c
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -30,6 +30,7 @@ théoriquement de modifier chaque élément de votre partition.
 * Autres retouches::
 @end menu
 
+
 @node Retouches élémentaires
 @section Retouches élémentaires
 @translationof Tweaking basics
@@ -41,6 +42,7 @@ théoriquement de modifier chaque élément de votre partition.
 * Méthodes de retouche::
 @end menu
 
+
 @node Introduction aux retouches
 @subsection Introduction aux retouches
 @translationof Introduction to tweaks
@@ -66,6 +68,7 @@ section @ref{Contextes et graveurs}, dans la mesure où les contextes,
 graveurs et autres propriétés qui y sont décrits, sont indispensables
 pour comprendre et construire les retouches.
 
+
 @node Objets et interfaces
 @subsection Objets et interfaces
 @translationof Objects and interfaces
@@ -106,7 +109,7 @@ les notes, les hampes, les liaisons de phrasé ou de prolongation, les
 doigtés, les clefs, etc. sont appelés @qq{Objets de rendu}@tie{}; ils
 sont aussi connus sous le nom d'@qq{Objets graphiques} (en
 anglais@tie{}: @emph{Graphical objects} ou @emph{Grobs} pour faire
-court).  Ce sont bien des objets au sens générique ci-dessus, et, en
+court).  Ce sont bien des objets au sens générique ci-dessus et, en
 tant que tels, ils reçoivent des propriétés qui leur sont associées,
 comme leur position, leur taille, leur couleur, etc.
 
@@ -131,9 +134,10 @@ portant un nom qui se termine par @code{interface}.  En tout, on en
 compte plus d'une centaine.  Nous verrons plus loin en quoi c'est
 intéressant et utile pour l'utilisateur.
 
-Ainsi s'achève le tour des principaux termes relatifs aux objets et
+Ainsi s'achève le tour des principaux termes relatifs aux objets
 que nous serons amenés à utiliser dans ce chapitre.
 
+
 @node Conventions de nommage des objets et propriétés
 @subsection Conventions de nommage des objets et propriétés
 @translationof Naming conventions of objects and properties
@@ -154,26 +158,26 @@ Les autres caractères sont à prendre tels qu'ils se présentent.
 
 @multitable @columnfractions .33 .33 .33
 @headitem Type d'objet/propriété
-       @tab Convention de nommage
-       @tab Exemples
+  @tab Convention de nommage
+  @tab Exemples
 @item Contextes
-       @tab Aaaa ou AaaaAaaaAaaa
-       @tab Staff, GrandStaff
+  @tab Aaaa ou AaaaAaaaAaaa
+  @tab Staff, GrandStaff
 @item Objets de rendu
-       @tab Aaaa ou AaaaAaaaAaaa
-       @tab Slur, NoteHead
+  @tab Aaaa ou AaaaAaaaAaaa
+  @tab Slur, NoteHead
 @item Graveurs
-       @tab Aaaa_aaa_engraver
-       @tab Clef_engraver, Note_heads_engraver
+  @tab Aaaa_aaa_engraver
+  @tab Clef_engraver, Note_heads_engraver
 @item Interfaces
-       @tab aaa-aaa-interface
-       @tab grob-interface, break-aligned-interface
+  @tab aaa-aaa-interface
+  @tab grob-interface, break-aligned-interface
 @item Propriétés de contexte
-       @tab aaa ou aaaAaaaAaaa
-       @tab alignAboveContext, skipBars
+  @tab aaa ou aaaAaaaAaaa
+  @tab alignAboveContext, skipBars
 @item Propriétés d'objet de rendu
-       @tab aaa ou aaa-aaa-aaa
-       @tab direction, beam-thickness
+  @tab aaa ou aaa-aaa-aaa
+  @tab direction, beam-thickness
 @end multitable
 
 Comme nous le verrons bientôt, les propriétés des différents
@@ -181,6 +185,7 @@ types d'objet sont modifiées par des commandes différentes, si bien
 qu'il est bon de savoir reconnaître le type d'un objet en fonction du
 nom de ses propriétés.
 
+
 @node Méthodes de retouche
 @subsection Méthodes de retouche
 @translationof Tweaking methods
@@ -470,6 +475,7 @@ avec la commande @code{\override}@tie{}:
 }
 @end lilypond
 
+
 @seealso
 Manuel de notation :
 @ruser{La commande d'affinage (@emph{tweak})}.
@@ -487,6 +493,7 @@ Manuel de notation :
 * Types de propriétés::
 @end menu
 
+
 @node Propriétés des objets de rendu
 @subsection Propriétés des objets de rendu
 @translationof Properties of layout objects
@@ -502,8 +509,8 @@ goût et que vous vouliez la rendre plus épaisse.  Comment vous y
 prendre@tie{}?  Vous êtes convaincu, avec tout ce qui a été dit sur la
 souplesse de LilyPond, qu'une telle retouche est réalisable et
 vous vous dites qu'elle fera sans doute intervenir la commande
-@code{\override}.  Mais existe-t-il une propriété lourde qui s'applique
-à une liaison et, dans l'affirmative, comment faire pour la
+@code{\override}.  Mais existe-t-il une propriété épaisseur qui
+s'applique à une liaison et, dans l'affirmative, comment faire pour la
 modifier@tie{}?  C'est là qu'intervient la Référence des propriétés
 internes.  Elle contient toutes les informations dont vous avez besoin
 pour construire n'importe quelle commande @code{\override}.
@@ -644,6 +651,7 @@ l'immédiat, nous en savons assez pour construire nos propres
 commandes -- mais il faut encore s'exercer.  Les exemples
 suivants sont là dans cette intention.
 
+
 @subheading Détermination du contexte adéquat
 
 @cindex contexte, détermination du
@@ -666,6 +674,7 @@ Et parce que @code{Voice} est un contexte de très bas
 niveau, qu'il est activé sans ambiguïté par le fait que l'on est
 en train de saisir des notes, on peut ici ne pas le mentionner.
 
+
 @subheading Redéfinition pour une seule occurence
 
 @cindex dérogation pour une seule fois
@@ -800,6 +809,7 @@ vous entraîner un peu plus à y chercher les informations.  Ces
 exemples seront progressivement accompagnés d'explications et
 introduiront des termes nouveaux.
 
+
 @node Propriétés listées par interface
 @subsection Propriétés listées par interface
 @translationof Properties found in interfaces
@@ -843,7 +853,7 @@ aussi dans la liste.  La question qui ne manque pas de se poser
 est@tie{}: @qq{Comment se fait-il que les propriétés @code{font-series}
 et @code{font-size} se retrouvent à la fois dans @code{LyricText} et
 dans l'interface @code{font-interface} alors que ce n'est pas le cas
-pour @code{font-shape} ?}  La réponse est que lorsqu'un objet
+pour @code{font-shape}@tie{}?}  La réponse est que lorsqu'un objet
 @code{LyricText} est créé, les valeurs globales par défaut de
 @code{font-series} et @code{font-size} sont modifiées, mais pas celles
 de @code{font-shape}.  Les possibilités de modification dans
@@ -906,6 +916,7 @@ comme ceci@tie{}:
 @noindent
 et voilà les paroles en italiques.
 
+
 @subheading Spécification du contexte en mode lyrique
 
 @cindex contexte, spécification en mode lyrique
@@ -918,9 +929,9 @@ obligatoirement par une espace, un saut de ligne ou un nombre.  Tout
 autre caractère compte comme un élément de la syllabe.  C'est pourquoi
 il faut une espace ou un saut de ligne avant le @code{@}} final, pour
 éviter qu'il ne soit assimilé à la dernière syllabe.  De même, il faut
-insérer des espaces avant et après le point, @qq{.}, qui sépare le nom
-de contexte du nom de l'objet, faute de quoi les deux noms seront joints
-et l'interpréteur ne pourra pas les reconnaître.  La formulation
+insérer des espaces de part et d'autre du point, @qq{.}, qui sépare le
+nom de contexte du nom de l'objet, faute de quoi les deux noms seront
+joints et l'interpréteur ne pourra pas les reconnaître.  La formulation
 correcte est donc@tie{}:
 
 @example
@@ -942,7 +953,6 @@ Manuel d'extension :
 @subsection Types de propriétés
 @translationof Types of properties
 
-
 @cindex propriété, types de
 
 Nous avons vu jusqu'à maintenant deux types de propriétés@tie{}:
@@ -963,7 +973,7 @@ la commande @code{\override}.
   @tab Vrai (@emph{true} en anglais) ou Faux (@emph{false} en anglais),
        sous la forme @code{#t} ou @code{#f}
   @tab @code{#t}, @code{#f}
-@item Dimension (en lignes de portée)
+@item Dimension (en espaces de portée)
   @tab Un nombre positif décimal (en unités de lignes de portée)
   @tab @code{2.5}, @code{0.34}
 @item Direction
@@ -976,7 +986,8 @@ la commande @code{\override}.
 @item Liste
   @tab Plusieurs valeurs séparées par une espace, encadrées par des
 parenthèses et prédédées par une apostrophe
-  @tab @code{'(left-edge staff-bar)}, @code{'(1)}, @code{'(1.0 0.25 0.5)}
+  @tab @code{'(left-edge staff-bar)}, @code{'(1)},
+       @code{'(1.0 0.25 0.5)}
 @item Markup (ou étiquette)
   @tab Toute commande @code{\markup} valide
   @tab @code{\markup @{ \italic "cresc." @}}
@@ -1060,6 +1071,7 @@ L'objet @code{BarLine} est également lié à plusieurs interfaces, dont la
 mesure -- et de beaucoup d'autres objets, bien sûr.  Examinons chacune
 d'elles tour à tour.
 
+
 @subheading stencil
 
 @cindex stencil, propriété
@@ -1115,7 +1127,7 @@ Vous remarquerez que l'affectation de la valeur @code{#f} à la propriété
 @code{stencil} déclechera une erreur dès lors que l'objet en question se
 doit d'avoir des dimensions pour les nécessités du traitement.  Ce sera
 le cas, par exemple, si vous effacez le @code{stencil} d'un objet
-@code{NoteHead}.  Il vaut mieux, en pareil caas, utiliser la fonction
+@code{NoteHead}.  Il vaut mieux, en pareil cas, utiliser la fonction
 @code{point-stencil} qui, quant à elle, attribue à l'objet une taille à
 zero@tie{}:
 
@@ -1127,6 +1139,7 @@ zero@tie{}:
 }
 @end lilypond
 
+
 @subheading visibilité des barres (break-visibility)
 
 @cindex break-visibility, propriété
@@ -1160,6 +1173,7 @@ la commande @code{\override}, pour introduire la valeur elle-même.
 Comme on peut le constater, cette solution-là aussi supprime les barres
 de mesure.
 
+
 @subheading transparence
 
 @cindex transparent, propriété
@@ -1216,6 +1230,7 @@ La différence est flagrante@tie{}: le fait d'attribuer au stencil la
 valeur @code{#f} supprime totalement l'objet, tandis que le fait de le
 rendre @code{transparent} le laisse en place, mais de façon invisible.
 
+
 @subheading couleur
 
 @cindex color, propriété
@@ -1553,6 +1568,7 @@ les lignes de la portée trop espacées.  Il faut donc les réduire dans
 les mêmes proportions que les polices de caractères.  La prochaine
 sous-section montrera comment faire.
 
+
 @node Longueur et épaisseur des objets
 @subsection Longueur et épaisseur des objets
 @translationof Length and thickness of objects
@@ -1636,14 +1652,15 @@ tous les objets peuvent être modifiées de manière analogue.
 Pour de petits changements d'échelle, comme dans l'exemple ci-dessus, il
 n'est généralement pas utile d'ajuster l'épaisseur des différentes
 lignes telles que les barres de mesure, les ligatures, les soufflets de
-crescendo/decrescendo, les liaisons, etc.  Si l'épaisseur d'un objet en
-particulier doit être ajustée, le mieux est de modifier sa propriété
+crescendo ou decrescendo, les liaisons, etc.  Si l'épaisseur d'un objet
+en particulier doit être ajustée, le mieux est de modifier sa propriété
 @code{thickness}.  Nous avons vu plus haut, dans
 @ref{Propriétés des objets de rendu}, un exemple de modification de
 l'épaisseur des liaisons.  L'épaisseur de tous les objets tracés
 (c'est-à-dire ceux qui ne proviennent pas d'une police de caractère)
 peut être changée de la même manière.
 
+
 @node Positionnement des objets
 @section Positionnement des objets
 @translationof Placement of objects
@@ -1654,6 +1671,7 @@ peut être changée de la même manière.
 * Objets hors de la portée::
 @end menu
 
+
 @node Comportement automatique
 @subsection Comportement automatique
 @translationof Automatic behavior
@@ -1680,7 +1698,7 @@ il existe des commandes et des possibilités de retouche qui permettent
 de modifier ce comportement automatique.
 
 Parmi les objets extérieurs à la portée, on compte des éléments comme
-les marques de reprise, les indications de texte ou de nuances.  Dans
+les marques de reprise, les indications de texte ou de nuance.  Dans
 LilyPond, la règle est de placer verticalement ces objets extérieurs à
 la portée le plus près possible de la portée, tout en évitant la
 collision avec d'autres objets.  LilyPond utilise la propriété
@@ -1696,7 +1714,7 @@ objets déjà placés.  Cela signifie que, si deux @emph{grobs} extérieurs
 à la portée doivent occuper la même place, c'est celui qui a la
 @code{outside-staff-priority} la plus basse qui est placé le plus près
 de la portée.  Et si deux objets ont la même
-@code{outside-staff-priority}, le premier rencontré sera placé le plus
+@code{outside-staff-priority}, le premier rencontré sera placé au plus
 près de la portée.
 
 Dans l'exemple suivant, tous les @emph{markup} ont la même priorité,
@@ -1841,6 +1859,7 @@ faut soit utiliser la commande équivalente @code{\once \override}, soit
 utiliser la commande prédéfinie, suivie, après la note à modifier, de la
 commande @code{\xxxNeutral} correspondante.
 
+
 @subheading Doigtés
 
 @cindex doigtés, positionnement
@@ -2147,6 +2166,10 @@ c4\ff c \stopTextSpan |
 c,4 c c c |
 @end lilypond
 
+N'oublions pas que certains objets, tels les numéros de mesure,
+indications métronomiques et marques-repères, sont par défaut attachés
+au contexte @code{Score}.
+
 @cindex liaisons et outside-staff-priority
 @cindex liaisons et articulations
 @cindex articulations et liaisons
@@ -2204,6 +2227,7 @@ portée.  Pour cela, nous avons besoin d'espacer horizontalement les
 notes pour laisser plus de place au texte.  C'est possible grâce à la
 commande @code{textLengthOn}.
 
+
 @subheading \textLengthOn
 
 @cindex notes, répartition selon le texte
@@ -2270,10 +2294,10 @@ c''2 |
 
 @subheading Nuances
 
-@cindex modifier le positionnement des nuances
-@cindex nuances, modifier le positionnement
+@cindex modification du positionnement des nuances
+@cindex nuances, modification du positionnement
 
-Les indications de nuance se placent normalement sous la portée mais on
+Les indications de nuance se placent normalement sous la portée, mais on
 peut les placer au-dessus avec la commande @code{dynamicUp}.  Elles se
 positionnent verticalement par rapport à la note à laquelle elles sont
 liées et se décalent vers le bas (ou le haut) en fonction des objets de
@@ -2304,11 +2328,12 @@ a4\f b\mf c\mp b\p
 Si une telle situation devait survenir dans de la musique @qq{réelle},
 il serait préférable d'espacer un peu plus les notes, de façon que les
 indications de nuance puissent toutes se situer à la même distance de la
-portée.  Il était possible de faire cela pour les textes de
-@emph{markup} grâce à la commande @code{\textLengthOn} mais il n'existe
+portée.  S'il est possible de faire cela pour les textes de
+@emph{markup} grâce à la commande @code{\textLengthOn}, il n'existe
 pas d'équivalent pour les indications de nuance.  Il nous faut donc
 chercher à faire cela avec la commande @code{\override}.
 
+
 @subheading Dimensionnement des objets graphiques
 
 @cindex grob, dimensionnement
@@ -2336,7 +2361,7 @@ attribuant à @code{extra-spacing-width} la valeur
 @code{'(+inf.0@tie{}.@tie{}-inf.0)}. Pour être sûr que les objets ne se
 chevaucheront pas horizontalement, nous devons donc corriger cette
 valeur de @code{extra-spacing-width} en @w{@code{'(0 . 0)}}, afin que
-leur vraie largeur se manifeste. La commande pour y parvenir avec des
+leur vraie largeur se manifeste.  La commande pour y parvenir avec des
 indications de nuances est@tie{}:
 
 @example
@@ -2393,6 +2418,7 @@ descendre avec les notes.  La propriété qui gère cela est
 * Exemple concret::
 @end menu
 
+
 @node Déplacement d'objets
 @subsection Déplacement d'objets
 @translationof Moving objects
@@ -2440,6 +2466,7 @@ du même type d'objet.  Ces propriétés sont@tie{}:
 Ce point a déjà été traité en détails -- voir
 @ref{Objets inclus dans la portée}.
 
+
 @item
 @code{padding}, @code{right-padding}, @code{staff-padding}
 
@@ -2486,7 +2513,7 @@ l'objet dans la RPI.  Prenez garde que les propriétés @code{padding} ne
 sont pas forcément traitées dans l'objet en question@tie{}; il faut
 alors regarder les objets qui semblent s'en rapprocher.
 
-Toutes les valeurs @code{padding} sont exprimées en espaces de portée.
+Toutes les valeurs @code{padding} sont exprimées en espace de portée.
 Pour la plupart des objets, la valeur par défaut est aux alentours de
 1,0 et parfois moins (cela dépend de chaque objet).  Il est possible de
 la modifier lorsqu'on a besoin d'un espace vide plus grand (ou plus
@@ -2515,6 +2542,7 @@ plus loin vers la droite.  Un écart de @code{1} en valeur
 correspond à un déplacement de la moitié de la longueur du
 texte.
 
+
 @item
 @code{extra-spacing-width}
 
@@ -2537,12 +2565,13 @@ objets n'acceptent pas forcément les deux nombres.  Par exemple, l'objet
 
 @code{staff-position} est une propriété de la
 @code{staff-symbol-referencer-interface}, qui s'applique aux objets
-positionnés par rapport à la portée.  Elle indique, en demi-espaces de
+positionnés par rapport à la portée.  Elle indique, en demi-espace de
 portée, la position verticale des objets par rapport à la ligne médiane
 de la portée.  C'est bien pratique pour résoudre des problèmes de
 collision entre des objets comme les silences valant mesure entière,
 les liaisons et les notes de différentes voix.
 
+
 @item
 @code{force-hshift}
 
@@ -2563,19 +2592,20 @@ les commandes habituelles @code{\shiftOn}
 (voir @ref{Instanciation explicite des voix}) ne suffisent plus à
 résoudre les conflits.  Elle est alors préférable à l'utilisation de la
 propriété @code{extra-offset}, dans la mesure où on n'a pas besoin
-d'exprimer la distance en espaces de portée et où le fait de déplacer
+d'exprimer la distance en espace de portée et où le fait de déplacer
 les notes à l'intérieur ou à l'extérieur d'une @code{NoteColumn} affecte
 d'autres actions comme les fusions de notes.
 
 @end itemize
 
+
 @item
 Pour terminer, quand toutes les autres méthodes ont échoué, il est
 possible de repositionner verticalement les objets à la main par rapport
 à la ligne médiane de la portée, ou en les déplaçant à une distance
 donnée vers une nouvelle position.  Les inconvénients sont qu'il faut
 individuellement, pour chaque objet, trouver les valeurs correctes de
-repositionnement souvent par tâtonnement, et que, puisque le
+repositionnement souvent par tâtonnement et que, puisque le
 mouvement est opéré après que LilyPond a placé tous les autres
 objets, c'est à l'utilisateur de résoudre tous les problèmes de
 collision qui pourraient survenir.  Et le pire avec cette méthode est
@@ -2590,8 +2620,8 @@ de repositionnement manuel sont@tie{}:
 @cindex extra-offset, propriété
 
 Cette propriété s'applique à tout objet acceptant la
-@code{grob-interface}.  Elle reçoit une paire de nombre qui indiquent le
-déplacement supplémentaire dans le sens horizontal et vertical.  Des
+@code{grob-interface}.  Elle reçoit une paire de nombres qui indiquent
+le déplacement supplémentaire dans le sens horizontal et vertical.  Des
 nombres négatifs déplacent l'objet vers la gauche ou vers la droite.
 L'unité utilisée est l'espace de portée.  Le déplacement supplémentaire
 intervient une fois que la composition des objets est achevée, si bien
@@ -2604,9 +2634,9 @@ perturber quoi que ce soit.
 
 Cette propriété est très utile pour ajuster manuellement l'inclinaison
 et la hauteur des barres de ligature, des liaisons et des nolets.  Elle
-est suivie de deux nombres qui donnent la position des bords gauche et
-droit des barres, liaisons, etc. par rapport à la ligne médiane de la
-portée.  L'unité de référence est l'intervalle de lignes de portée.
+est suivie de deux nombres qui donnent la position des extrémités gauche
+et droite des barres, liaisons, etc. par rapport à la ligne médiane de
+la portée.  L'unité de référence est l'intervalle de lignes de portée.
 Attention toutefois au fait que les liaisons et phrasés ne peuvent pas
 être repositionnés n'importe où.  LilyPond commence par dresser la liste
 des emplacements possibles pour les liaisons et choisit par défaut la
@@ -2648,6 +2678,7 @@ trouver les propriétés à retoucher pour obtenir un déplacement.
 Voyons maintenant comment les propriétés décrites dans la section
 précédente peuvent nous aider à résoudre les collisions.
 
+
 @subheading la propriété padding
 
 @cindex décalage (padding)
@@ -2692,6 +2723,7 @@ fait partie d'un ensemble d'objets positionnés en fonction de leur
 @code{outside-staff-priority}, cet objet sera déplacé, ainsi que tous
 les autres objets du groupe.
 
+
 @subheading right-padding
 
 @cindex right-padding, propriété
@@ -2738,6 +2770,7 @@ note par la retouche de @code{right-padding}.
 
 @noindent
 
+
 @subheading la propriété staff-padding
 
 @cindex alignement d'objets sur une ligne de base
@@ -2785,6 +2818,7 @@ de référence de la note parente@tie{}:
 <a\2>
 @end lilypond
 
+
 @subheading la propriété staff-position
 
 @cindex collision d'objets à l'intérieur d'une portée
@@ -2809,7 +2843,6 @@ propriété @code{staff-position} est réglée sur @code{-4} pour les
 @code{MultiMeasureRest}@tie{}; nous avons donc besoin de la déplacer,
 disons, de quatre demi-intervalles vers le bas, ce qui donne @code{-8}.
 
-
 @cindex MultiMeasureRest, exemple de dérogation
 @cindex staff-position, exemple d'utilisation de la propriété
 
@@ -2826,6 +2859,7 @@ C'est mieux que d'utiliser, par exemple, @code{extra-offset},
 car la ligne supplémentaire au-dessus du silence est insérée
 automatiquement.
 
+
 @subheading la propriété extra-offset
 
 @cindex positionnement des objets
@@ -2948,6 +2982,7 @@ Vous remarquerez que la retouche continue de s'appliquer au
 second bloc de croches de la première voix mais qu'il ne s'applique
 à aucune mesure de la deuxième voix.
 
+
 @subheading la propriété force-hshift
 
 Maintenant, nous sommes prêts à appliquer les dernières corrections  à
@@ -3100,12 +3135,16 @@ droite compte quatre voix.  Ce sont les cinq croches avec une barre,
 le do avec liaison, le ré blanche qui se fond avec le ré croche, et le
 fa dièse noire pointée qui se fond lui aussi avec la croche de même
 hauteur.  Tout le reste se réduit à une seule voix.  Le plus simple est
-donc de créer temporairement ces quatre voix au moment opportun.
-Si vous avez oublié comment faire, reportez-vous à
-@ref{J'entends des Voix}.  Commençons par saisir les notes comme
-appartenant à deux variables, mettons en place l'ossature des
-portées dans un bloc @code{\Score} et voyons ce que LilyPond propose par
-défaut@tie{}:
+donc de créer temporairement ces trois voix supplémentaires au moment
+opportun.  Si vous avez oublié comment faire, reportez-vous à
+@ref{J'entends des Voix} et @ref{Instanciation explicite des voix}.
+Nous opterons ici pour une déclaration explicite des voix du passage
+polyphonique, puisque LilyPond est alors plus performant en matière
+d'évitement des collisions. 
+
+Commençons par saisir les notes comme appartenant à deux variables,
+mettons en place l'ossature des portées dans un bloc @code{\Score} et
+voyons ce que LilyPond propose par défaut@tie{}:
 
 @c line-width ensures no break
 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
@@ -3558,6 +3597,7 @@ lhMusic = \relative c' {
 @cindex objets, invisibles
 @cindex liaison de tenue avec changement de voix
 
+
 @subheading Liaison entre plusieurs voix
 
 Voici un exemple qui montre comment créer une liaison de
@@ -3604,6 +3644,7 @@ réglant la longueur (@code{length}) sur @code{8},
 >>
 @end lilypond
 
+
 @subheading Rendu MIDI d'un point d'orgue
 
 @cindex stencil, utilisation de la propriété
@@ -4239,13 +4280,12 @@ sont@tie{}:
   @tab Réglages affectant l'apparence des frets, couleurs, altérations,
        barres de mesure, etc.
 @item @file{scm/parser-clef.scm}
-       @tab Définition des clefs prises en charge
+  @tab Définition des clefs prises en charge
 @item @file{scm/script.scm}
-       @tab Réglages par défaut des articulations
+  @tab Réglages par défaut des articulations
 @end multitable
 
 
-
 @node Retouches avancées avec Scheme
 @subsection Retouches avancées avec Scheme
 @translationof Advanced tweaks with Scheme
index cf72b0e0fdc5d4677e06acec954675f55bb5c806..e7408d1e6d8d330e32e0ae12a0604b0b82160258 100644 (file)
@@ -780,7 +780,7 @@ Pour LilyPond version @version{}
 </div>
 @end html
 @iftex
-@image{examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png}
+@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png}
 @end iftex
 @ifinfo
 @image{lilypond/examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png}
index f62408459bef060331385baaeccf1457a783d5ec..c149225e9b4e0f1a7198def8eeee4004fa677365 100644 (file)
@@ -551,7 +551,7 @@ seuls styles actuellement pris en charge sont @code{default} et
 @code{mensural}.
 
 @lilypond[quote,fragment,ragged-right,verbatim]
-\override Stem #'flag-style = #'mensural
+\override Flag #'style = #'mensural
 \override Stem #'thickness = #1.0
 \override NoteHead #'style = #'mensural
 \autoBeamOff
index 1a135516111fb2eb7633aa5734df2f59728ccf47..ddfd8e5f9dacc8de23ffc1fea3f76dd85ea5c513 100644 (file)
@@ -327,7 +327,7 @@ par défaut définies dans @file{ly/chord-modifier-init.ly}@tie{}:
 @cindex exceptions, chiffrage d'accords
 @cindex chiffrage d'accords, exceptions
 @cindex accords chiffrés, exceptions
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {chord-name-exceptions.ly}
 
 @funindex majorSevenSymbol
index e94a8278deafb99b6f78321dbf4c4bdaf689b534..f124c3bcd1c61d6d7569a728a071805cb85d6f7b 100644 (file)
@@ -201,13 +201,13 @@ la portée -- voir @ref{Direction et positionnement} à ce sujet.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {controlling-the-placement-of-chord-fingerings.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {allowing-fingerings-to-be-printed-inside-the-staff.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {avoiding-collisions-with-chord-fingerings.ly}
 
 
@@ -502,7 +502,7 @@ L'orientation des hampes peut être définie manuellement -- voir
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {default-direction-of-stems-on-the-center-line-of-the-staff.ly}
 
 
@@ -664,7 +664,7 @@ spécifie quant à elle l'espace de temps entre chaque ligne.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {grid-lines--changing-their-appearance.ly}
 
 
index 5f1a6cb44f8a91a8540ee7364d1f56bbc1f801da..4c25bb590e86b65ea94968ec3c5a3771c12649db 100644 (file)
@@ -187,13 +187,13 @@ Pour plus d'information sur la manière d'ordonner @code{Scripts} et
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {modifying-default-values-for-articulation-shorthand-notation.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {controlling-the-vertical-ordering-of-scripts.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-a-delayed-turn.ly}
 
 @seealso
@@ -464,25 +464,25 @@ avec ou sans extenseur, ainsi que les indications de pédale.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {setting-hairpin-behavior-at-bar-lines.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {setting-the-minimum-length-of-hairpins.ly}
 
 @cindex al niente
 @cindex niente, al
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {printing-hairpins-using-al-niente-notation.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {vertically-aligned-dynamics-and-textscripts.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {hiding-the-extender-line-for-text-dynamics.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-text-and-spanner-styles-for-text-dynamics.ly}
 
 
@@ -783,13 +783,13 @@ g4( e c2)
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {using-double-slurs-for-legato-chords.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {positioning-text-markups-inside-slurs.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {making-slurs-with-complex-dash-structure.ly}
 
 
@@ -984,12 +984,12 @@ voir @ref{Divisions}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-breath-mark-symbol.ly}
 
 @cindex césure
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {inserting-a-caesura.ly}
 
 
@@ -1039,7 +1039,7 @@ le tiret (@code{-}) qui précède la commande @code{\bendAfter}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adjusting-the-shape-of-falls-and-doits.ly}
 
 
@@ -1091,7 +1091,7 @@ vaguelettes -- voir @ref{Styles de ligne}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {contemporary-glissando.ly}
 
 
@@ -1204,13 +1204,13 @@ liaisons de tenue.  Pour plus d'information, voir
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-cross-staff-arpeggios-in-a-piano-staff.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-cross-staff-arpeggios-in-other-contexts.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-arpeggios-across-notes-in-different-voices.ly}
 
 
index 07f36ff58741cd01176c293c86db7e6d78853e5a..2a62835e739f771483c74b306ecc557fd1d725c8 100644 (file)
@@ -131,10 +131,10 @@ lequel ils apparaissent dans le code@tie{}:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {controlling-the-placement-of-chord-fingerings.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {allowing-fingerings-to-be-printed-inside-the-staff.ly}
 
 
@@ -425,10 +425,10 @@ ratioHarmonics = {
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {stem-and-beam-behavior-in-tablature.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {polyphony-in-tablature.ly}
 
 @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
@@ -1059,10 +1059,10 @@ un diagramme d'accord, les propriétés de l'interface dépendent de
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-fret-orientations.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {customizing-markup-fret-diagrams.ly}
 
 
@@ -1357,10 +1357,10 @@ d'accord donné, les propriétés de l'interface dépendent de
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {customizing-fretboard-fret-diagrams.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {defining-predefined-fretboards-for-other-instruments.ly}
 
 @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
@@ -1591,10 +1591,10 @@ même @code{\MD}@tie{}:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {placement-of-right-hand-fingerings.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {fingerings,-string-indications,-and-right-hand-fingerings.ly}
 
 
index 9cf94f6a23ff49522ef51a700b9720fc950f9b77..fa6b6fd95cc086a411ede61c32f0367f088c7aa5 100644 (file)
@@ -2119,7 +2119,7 @@ dénominations consacrées, LilyPond le replacera par un piano de concert
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-midi-output-to-one-channel-per-voice.ly}
 
 @knownissues
index 9a0ed9e98794fd8bc8e4ed543407a964a7593255..45a389ed77fbac4048ec38bddf655f5b4d89a51e 100644 (file)
@@ -457,7 +457,7 @@ celle de l'autre portée.
         % extend the stems to reach the other staff
         \override Stem #'length = #12
         % do not print extra flags
-        \override Stem #'flag-style = #'no-flag
+        \override Flag #'style = #'no-flag
         % prevent beaming as needed
         a8 g4 f8 f bes\noBeam g4
       }
@@ -471,7 +471,7 @@ celle de l'autre portée.
 @end lilypond
 
 @snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {indicating-cross-staff-chords-with-arpeggio-bracket.ly}
 
 
@@ -625,7 +625,7 @@ pour exécuter un morceau.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {accordion-discant-symbols.ly}
 
 
index e8ee427fa5df0f9f4ae723344b63ca93cb686a0c..7fa677c7434d230ba76d9e4231614b1263cf39f6 100644 (file)
@@ -622,6 +622,7 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}.
 * Glyphes d'extrémité d'accolade::
 * Glyphes de pédale::
 * Glyphes d'accordéon::
+* Glyphes de liaison::
 * Glyphes de style vaticana::
 * Glyphes de style medicaea::
 * Glyphes de style Hufnagel::
@@ -808,6 +809,16 @@ informations, reportez-vous au chapitre @ref{Mise en forme du texte}.
 @end lilypond
 
 
+@node Glyphes de liaison
+@unnumberedsubsec Tie glyphs
+
+@lilypond[quote]
+\include "font-table.ly"
+\markuplines \override-lines #'(word-space . 4)
+             \doc-chars #ties
+@end lilypond
+
+
 @node Glyphes de style vaticana
 @unnumberedsubsec Glyphes de style vaticana
 @translationof Vaticana glyphs
index 1f76c53db49b1f1672fa90600bf9341043e638f8..55f7598182c76fdf6989db016abbac17f4a97a75 100644 (file)
@@ -385,10 +385,10 @@ cis
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle,ragged-right]
+@lilypondfile[verbatim,quote,texidoc,doctitle,ragged-right]
 {hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc, doctitle]
+@lilypondfile[verbatim,quote,texidoc, doctitle]
 {preventing-extra-naturals-from-being-automatically-added.ly}
 
 
@@ -779,7 +779,7 @@ Pour plus d'information à ce sujet, consultez
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {transposing-pitches-with-minimum-accidentals-smart-transpose.ly}
 
 
@@ -918,7 +918,7 @@ sujet @ref{Notations anciennes}
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {tweaking-clef-properties.ly}
 
 
@@ -1017,10 +1017,10 @@ fis
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {non-traditional-key-signatures.ly}
 
 
@@ -1079,7 +1079,7 @@ a2 b
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {ottava-text.ly}
 
 
@@ -2389,13 +2389,13 @@ deux notes représentant la hauteur la plus basse et la plus haute.  Les
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adding-ambitus-per-voice.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {ambitus-with-multiple-voices.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-ambitus-gap.ly}
 
 
@@ -2569,7 +2569,7 @@ Voir à ce propos @ref{Définition de la taille de portée}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {numbers-as-easy-note-heads.ly}
 
 
@@ -2685,7 +2685,7 @@ a2 b c d \break
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {applying-note-head-styles-depending-on-the-step-of-the-scale.ly}
 
 Pour une liste exhaustive des styles de tête de note, consultez
index 236f6d70fdb030f6133583230453c3c53d866829..6fc13469daaba59cf19efdaf8f298b83339ca481 100644 (file)
@@ -256,13 +256,13 @@ c1
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {shortening-volta-brackets.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adding-volta-brackets-to-additional-staves.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {setting-the-double-repeat-default-for-volte.ly}
 
 
@@ -417,7 +417,7 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } }
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {printing-a-repeat-sign-at-the-beginning-of-a-piece.ly}
 
 
@@ -593,13 +593,13 @@ symbole qui ressemble au symbole de pourcentage.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {percent-repeat-counter.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {percent-repeat-count-visibility.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {isolated-percent-repeats.ly}
 
 
@@ -695,7 +695,7 @@ c: c:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {cross-staff-tremolos.ly}
 
 
index 1d2cdda3867b6315c0000d7daba7c54ef7c74803..3ddf15c2dd434b9e9ca5be68349d40f940f19cc4 100644 (file)
@@ -156,7 +156,7 @@ chapitre @ref{Direction et positionnement}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-the-number-of-augmentation-dots-per-note.ly}
 
 
@@ -266,23 +266,23 @@ comme indiqué au chapitre @ref{Changement d'échelle des durées}.
 @funindex tupletNumberFormatFunction
 @funindex tupletSpannerDuration
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {entering-several-tuplets-using-only-one--times-command.ly}
 
 @cindex nolet, modification du chiffre
 
 @funindex TupletNumber
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-the-tuplet-number.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {non-default-tuplet-numbers.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {controlling-tuplet-bracket-visibility.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {permitting-line-breaks-within-beamed-tuplets.ly}
 
 
@@ -566,10 +566,10 @@ plus amples détails à ce sujet, reportez vous au chapitre
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {using-ties-with-arpeggios.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {engraving-ties-manually.ly}
 
 
@@ -677,7 +677,7 @@ a4\rest d4\rest
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {rest-styles.ly}
 
 
@@ -951,16 +951,16 @@ numéros de mesure.
 @cindex silence d'église
 @cindex kirchenpausen
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-form-of-multi-measure-rests.ly}
 
 @cindex silence multimesure, positionnement
 @cindex positionnement des silences multimesure
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {positioning-multi-measure-rests.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {multi-measure-rest-markup.ly}
 
 
@@ -1244,16 +1244,16 @@ particuliers pour les différentes portées d'un regroupement@tie{}:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-the-time-signature-without-affecting-the-beaming.ly}
 
 @cindex métriques composites
 @cindex métriques décomposées
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {compound-time-signatures.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly}
 
 
@@ -1337,15 +1337,15 @@ d4 g e c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {printing-metronome-and-rehearsal-marks-below-the-staff.ly}
 
 @c perhaps also an example of how to move it horizontally?
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-tempo-without-a-metronome-mark.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-metronome-marks-in-markup-mode.ly}
 
 Pour de plus amples détails, veuillez consulter
@@ -1690,7 +1690,7 @@ parviendrez en déplaçant le @code{Timing_translator} et le
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {compound-time-signatures.ly}
 
 
@@ -1852,7 +1852,7 @@ grille d'accords@tie{}:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {guitar-strum-rhythms.ly}
 
 
@@ -1945,16 +1945,16 @@ possibles@tie{}; voir
 
 @funindex breakable
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {beams-across-line-breaks.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-beam-knee-gap.ly}
 
 @cindex \partcombine et \autoBeamOff
 @cindex \autoBeamOff et \partcombine
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {partcombine-and-autobeamoff.ly}
 
 
@@ -2239,7 +2239,7 @@ dans le fichier @file{scm/time-signature-settings.scm}.
 @cindex ligatures, subdivision
 @cindex subdivision de ligature
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {subdividing-beams.ly}
 
 @cindex groupement de mesures
@@ -2247,13 +2247,13 @@ dans le fichier @file{scm/time-signature-settings.scm}.
 @cindex pulsation, regroupement
 @cindex mesure, subdivision
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {conducting-signs,-measure-grouping-signs.ly}
 
 @cindex ligature en fin de partition
 @cindex ligature en fin de voix polyphonique
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {beam-endings-in-score-context.ly}
 
 
@@ -2411,7 +2411,7 @@ g16 a]
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {flat-flags-and-beam-nibs.ly}
 
 
@@ -2810,25 +2810,25 @@ c1 | c | c | c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-the-bar-number-for-the-first-measure.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-bar-numbers-at-regular-intervals.ly}
 
 @cindex numéro de mesure, formatage
 @cindex formatage du numéro de mesure
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-bar-numbers-inside-boxes-or-circles.ly}
 
 @cindex alignement du numéro de mesure
 @cindex numéro de mesure, alignement
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {aligning-bar-numbers.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {removing-bar-numbers-from-a-score.ly}
 
 
@@ -3219,16 +3219,16 @@ désactivés dans cette même expression.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {using-grace-note-slashes-with-normal-heads.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {tweaking-grace-layout-within-music.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {redefining-grace-note-global-defaults.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {positioning-grace-notes-with-floating-space.ly}
 
 
index f52a2480f889df77895c89fc1df21f0abe1bdc0b..8a3e4ff01b6c9597f3611685a767bb31f1dfdc46 100644 (file)
@@ -681,10 +681,10 @@ bien explicitement.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {additional-voices-to-avoid-collisions.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {forcing-horizontal-shift-of-notes.ly}
 
 
@@ -799,10 +799,10 @@ restera sans effet sur les hauteurs de
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {combining-two-parts-on-the-same-staff.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-partcombine-texts.ly}
 
 
index 56f381440df41a275aa884a115bf59937d3fbd9e..03ec247c8d5e18a1f7515463a276140a00bdadc4 100644 (file)
@@ -249,10 +249,10 @@ l'explique @ref{Définition de nouveaux contextes}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {use-square-bracket-at-the-start-of-a-staff-group.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {display-bracket-with-only-one-staff-in-a-system.ly}
 
 @cindex présentation mensurale
@@ -260,7 +260,7 @@ l'explique @ref{Définition de nouveaux contextes}.
 @cindex transcription de musique ancienne
 @cindex musique ancienne, transcription
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {mensurstriche-layout-bar-lines-between-the-staves.ly}
 
 
@@ -327,7 +327,7 @@ l'explique @ref{Définition de nouveaux contextes}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {nesting-staves.ly}
 
 
@@ -537,7 +537,7 @@ e4 d c2
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {making-some-staff-lines-thicker-than-the-others.ly}
 
 
@@ -701,7 +701,7 @@ début de ligne.  Pour plus d'information au sujet de la commande
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {vertically-aligning-ossias-and-lyrics.ly}
 
 
@@ -812,7 +812,7 @@ contextes @code{RhythmicStaff}, il faudra utiliser
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {removing-the-first-empty-line.ly}
 
 
@@ -1159,7 +1159,7 @@ clarinet = \relative c'' {
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {quoting-another-voice-with-transposition.ly}
 
 @cindex note-event
@@ -1170,7 +1170,7 @@ clarinet = \relative c'' {
 @funindex quotedEventTypes
 @funindex quotedCueEventTypes
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {quoting-another-voice.ly}
 
 
index 7d487ab2ab77c2318ff25dbdcff302be968989fc..c18d491c325b2ffe2faa24747858976377ce33dd 100644 (file)
@@ -204,10 +204,10 @@ LilyPond ne peut traiter qu'un seul extenseur à la fois par voix.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {dynamics-text-spanner-postfix.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {dynamics-custom-text-spanner-postfix.ly}
 
 @seealso
@@ -296,13 +296,13 @@ c  c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-marks-at-the-end-of-a-line.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {aligning-marks-with-various-notation-objects.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-marks-on-every-staff.ly}
 
 
@@ -383,7 +383,7 @@ détail au chapitre @ref{Texte avec sauts de page}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {stand-alone-two-column-markup.ly}
 
 
index d6f08b51ea43b6707a2be2261d106b3e5ce4102c..4aa8fab2783e8ea023a4f7671ff528cea5742d80 100644 (file)
@@ -611,21 +611,15 @@ Référence des propriétés internes :
 Pour attribuer plus d'une syllabe à une même note, vous pouvez soit les
 mettre entre guillemets, soit utiliser le caractère souligné
 (@code{_}) pour obtenir une espace, ou bien encore utiliser un tilde
-(@code{~}) pour obtenir une liaison entre les syllabes. Cette
-liaison adaptée aux paroles correspond au caractère Unicode
-@code{U+203F}, et n'apparaîtra dans la partition que si le système
-dispose d'une police installée qui contient ce symbole.  Un certain
-nombre de fontes librement disponibles en disposent, comme FreeSerif
-(un clone de Times), `DejaVuSans' (mais pas DejaVuSerif) ou
-TeXGyreSchola (un clone de Century Schoolbook).
+(@code{~}) pour obtenir une liaison entre les syllabes.
 
 @lilypond[quote,ragged-right,verbatim]
 {
   \time 3/4
   \relative c' { c2 e4 g2 e4 }
-  \addlyrics { gran- de_a- mi- go }
-  \addlyrics { pu- "ro y ho-" nes- to }
-  \addlyrics { pu- ro~y~ho- nes- to }
+  \addlyrics { gran -- de_a -- mi -- go }
+  \addlyrics { pu -- "ro y ho" -- nes -- to }
+  \addlyrics { pu -- ro~y~ho -- nes -- to }
 }
 @end lilypond
 
@@ -1114,7 +1108,7 @@ de ces exemples, ou en examinant les
 d'initiation.
 
 @snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {lyrics-old-spacing-settings.ly}
 
 
@@ -1173,7 +1167,7 @@ dans le bloc @code{\layout}.
 @end lilypond
 
 @snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {lyrics-alignment.ly}
 
 @c TODO: move to LSR -vv
@@ -2164,7 +2158,7 @@ son harmonisation.  La syntaxe appropriée est expliquée en détails au
 chapitre @ref{Notation des accords}.
 
 @snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {simple-lead-sheet.ly}
 
 
@@ -2367,7 +2361,7 @@ Référence des propriétés internes :
 
 @cindex voix, division
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {using-arpeggiobracket-to-make-divisi-more-visible.ly}
 
 @seealso
@@ -2698,7 +2692,7 @@ musicale dans le but de vous épargner de la saisie tout en améliorant
 la lisibilité des notes du piano.
 
 @snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {adding-orchestral-cues-to-a-vocal-score.ly}
 
 @seealso
@@ -3141,7 +3135,7 @@ exemples qui suivent.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {chant-or-psalms-notation.ly}
 
 Cantiques et autres textes liturgiques peuvent être mis en forme avec
@@ -3150,7 +3144,7 @@ ancienne.  Le texte apparaît souvent sous la mélodie, les mots alors
 alignés sur les notes.  En pareil cas, les notes sont espacées selon les
 syllabes et non leur durée.
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {ancient-notation-template----modern-transcription-of-gregorian-music.ly}
 
 @seealso
@@ -3341,7 +3335,7 @@ l'utilisation de la commande @code{\partial} en début de partition et
 d'une commande @code{\bar@tie{}"|"} ou @code{\bar@tie{}"||"} à la fin de
 chaque ligne.
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {hymn-template.ly}
 
 
index 3ac73a8e7cd8d3f29518039fc9156f631a7e7468..3ec72869c40c4b2252a2a0edafc85d91990ff047 100644 (file)
@@ -106,7 +106,7 @@ Voir le chapitre @ref{Articulations et ornements}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing--flageolet-mark-size.ly}
 
 
@@ -140,10 +140,10 @@ plus en profondeur au chapitre @ref{Diagrammes pour bois}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {fingering-symbols-for-wind-instruments.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {recorder-fingering-chart.ly}
 
 @seealso
@@ -451,16 +451,16 @@ maîtrise du langage Scheme.
 
 
 @snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {woodwind-diagrams-listing.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {graphical-and-text-woodwind-diagrams.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-size-of-woodwind-diagrams.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {woodwind-diagrams-key-lists.ly}
 
 @seealso
index bba365b3085e8b127d808289c788addb73144950..d2f45e01c354a4ee114ccbd9c8ec7215980d967c 100644 (file)
@@ -85,7 +85,7 @@ makamlar, reportez-vous au chapitre @ref{Musique classique turque}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {makam-example.ly}
 
 
@@ -322,7 +322,7 @@ courants à leur armure@tie{}:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {non-traditional-key-signatures.ly}
 
 
@@ -362,10 +362,10 @@ chiffres de mesure composés.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {compound-time-signatures.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {arabic-improvisation.ly}
 
 
index cf4c5559440fb65eb950ce549f6c9955f05ce479..f96e419bb425c107467d452061d77671dcc39713 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{Dernière mise à jour Wed Jul 13 10:59:12 UTC 2011
+@emph{Dernière mise à jour Sat Aug 13 14:15:49 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -249,7 +249,7 @@ oui
 @item
 2 Bases de notation musicale
 @*
-4184
+4187
 @tab Nicolas Grandclaude
 @*
 Ludovic Sardain
@@ -565,7 +565,7 @@ oui
 @item
 1.4 Répétitions et reprises
 @*
-945
+944
 @tab Valentin Villenave
 @*
 Jean-Charles Malahieude
@@ -586,7 +586,7 @@ oui
 @ifhtml
 
 @html
-<span style="background-color: #39ff22">partiellement</span>
+<span style="background-color: #40fe23">partiellement</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -629,7 +629,7 @@ partiellement
 @item
 1.6 Notation sur la portée
 @*
-2345
+2341
 @tab Valentin Villenave
 @*
 Jean-Charles Malahieude
@@ -648,7 +648,7 @@ oui
 @ifhtml
 
 @html
-<span style="background-color: #9eff30">partiellement</span>
+<span style="background-color: #a5ff31">partiellement</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -774,7 +774,7 @@ oui
 @item
 2.2 Instruments utilisant des portées multiples
 @*
-864
+862
 @tab Valentin Villenave
 @*
 Jean-Charles Malahieude
@@ -1008,7 +1008,7 @@ partiellement
 @item
 3 Généralités en matière d'entrée et sortie
 @*
-7671
+7686
 @tab Jean-Charles Malahieude
 @*
 Valentin Villenave
@@ -1027,7 +1027,7 @@ partiellement (83 %)
 @ifhtml
 
 @html
-<span style="background-color: #91ff2e">partiellement</span>
+<span style="background-color: #97ff2f">partiellement</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -1066,7 +1066,7 @@ oui
 @item
 5 Modification des réglages prédéfinis
 @*
-12248
+12258
 @tab Valentin Villenave
 @*
 Jean-Charles Malahieude
@@ -1095,7 +1095,7 @@ oui
 @item
 A Tables du manuel de notation
 @*
-1989
+2017
 @tab Frédéric Chiasson
 @*
 Jean-Charles Malahieude
@@ -1104,11 +1104,11 @@ Jean-Charles Malahieude
 @ifhtml
 
 @html
-<span style="background-color: #dfef77">partiellement (85 %)</span>
+<span style="background-color: #dfef77">partiellement (84 %)</span>
 @end html
 @end ifhtml
 @ifnothtml
-partiellement (85 %)
+partiellement (84 %)
 @end ifnothtml
 @tab 
 @ifhtml
@@ -1221,7 +1221,7 @@ oui
 @item
 1 Exécution de @command{lilypond}
 @*
-3622
+3681
 @tab Jean-Charles Malahieude
 @tab 
 @tab 
@@ -1238,11 +1238,11 @@ oui
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">oui</span>
+<span style="background-color: #25fe1f">partiellement</span>
 @end html
 @end ifhtml
 @ifnothtml
-oui
+partiellement
 @end ifnothtml
 @tab pré-GDP
 @item
@@ -1275,7 +1275,7 @@ oui
 @item
 3 Association musique-texte avec @command{lilypond-book}
 @*
-3952
+3978
 @tab Jean-Charles Malahieude
 @tab 
 @tab 
@@ -1302,7 +1302,7 @@ N/A
 @item
 4 Programmes externes
 @*
-2170
+2180
 @tab Jean-Charles Malahieude
 @tab 
 @tab 
@@ -1319,11 +1319,11 @@ oui
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">oui</span>
+<span style="background-color: #25fe1f">partiellement</span>
 @end html
 @end ifhtml
 @ifnothtml
-oui
+partiellement
 @end ifnothtml
 @tab pré-GDP
 @item
@@ -1490,7 +1490,7 @@ partiellement
 @item
 Manuels
 @*
-1203
+1214
 @tab John Mandereau
 @tab Jean-Charles Malahieude
 @tab 
@@ -1517,7 +1517,7 @@ partiellement
 @item
 Communauté
 @*
-1755
+1888
 @tab Jean-Charles Malahieude
 @*
 John Mandereau
@@ -1536,11 +1536,11 @@ oui
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">oui</span>
+<span style="background-color: #40fe23">partiellement</span>
 @end html
 @end ifhtml
 @ifnothtml
-oui
+partiellement
 @end ifnothtml
 @tab pré-GDP
 @end multitable
index 16e625b84debbfd8c2c547a503c0f966889c3535..7cc496bbae656eb728c363605ff9cf3adc6a95b6 100644 (file)
@@ -801,15 +801,6 @@ variable @code{texidoc@var{LANGUE}} dans l'entête du fichier
 contenu de @file{toto.texidoc@var{LANGUE}} en lieu et place de celui de
 @file{toto.texidoc}.
 
-@item lilyquote
-Option disponible uniquement pour Texinfo.@*
-Cette option est équivalente à l'option @code{quote} à ceci près que
-seule l'image de la partition -- ainsi que les éventuels blocs
-@emph{verbatim} si vous la couplez à l'option @code{verbatim} -- fera
-l'objet d'une citation.  Cette option permet l'inclusion de la partition
-en omettant les commentaires contenus dans le bloc @code{texidoc} du
-fichier source.
-
 @item doctitle
 Option disponible uniquement pour Texinfo.@*
 Cette option fonctionne selon le même principe que l'option
index 7c747c4a31eddb9bf574e13ca59e48229e25ed78..f57c34f67e126c2ce5e5d5b7c60c208156682f2a 100644 (file)
@@ -707,7 +707,7 @@ A LilyPond @version{} verziójához
 </div>
 @end html
 @iftex
-@image{examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png}
+@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png}
 @end iftex
 @ifinfo
 @image{lilypond/examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png}
index cd7184c110fe8585814d67ef33c98713f0b7fbd8..6a3b4251334b25bf1a5e1f6ed978337f715b2966 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{Last updated Wed Jul 13 10:59:12 UTC 2011
+@emph{Last updated Sat Aug 13 14:15:49 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -111,7 +111,7 @@ partially
 @item
 2 Elemi kottaírás
 @*
-4184
+4187
 @tab Harmath Dénes
 @tab 
 @tab 
@@ -285,7 +285,7 @@ partially
 @item
 1 A @command{lilypond} használata
 @*
-3622
+3681
 @tab Team-hu
 @tab 
 @tab 
@@ -339,7 +339,7 @@ partially
 @item
 3 A @command{lilypond-book} használata
 @*
-3952
+3978
 @tab Team-hu
 @tab 
 @tab 
@@ -356,11 +356,11 @@ yes
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">yes</span>
+<span style="background-color: #25fe1f">partially</span>
 @end html
 @end ifhtml
 @ifnothtml
-yes
+partially
 @end ifnothtml
 @tab pre-GDP
 @end multitable
@@ -486,7 +486,7 @@ partially
 @item
 Dokumentáció
 @*
-1203
+1214
 @tab Harmath Dénes
 @tab 
 @tab 
@@ -513,7 +513,7 @@ partially
 @item
 Közösség
 @*
-1755
+1888
 @tab Harmath Dénes
 @tab 
 @tab 
@@ -530,11 +530,11 @@ yes
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">yes</span>
+<span style="background-color: #40fe23">partially</span>
 @end html
 @end ifhtml
 @ifnothtml
-yes
+partially
 @end ifnothtml
 @tab pre-GDP
 @end multitable
index b331b8a85fd011576d042f18dba3a4785b95a649..72219945bf33682f8dc0fdd804fce6533e010552 100644 (file)
@@ -737,13 +737,6 @@ is called with @option{--header=@/texidoc@var{LANG}}, then
 @file{foo.texidoc@var{LANG}} will be included instead of
 @file{foo.texidoc}.
 
-@item lilyquote
-(Only for Texinfo output.)  This option is similar to quote, but only
-the music snippet (and the optional verbatim block implied by
-@code{verbatim} option) is put into a quotation block.  This option is
-useful if you want to @code{quote} the music snippet but not the
-@code{texidoc} documentation block.
-
 @item doctitle
 (Only for Texinfo output.) This option works similarly to
 @code{texidoc} option: if @command{lilypond} is called with the
index 540ecb3bd3f0fa5c3054b12de9e766a13ae5b4ad..e1dc730d6d46603d864e41101bf0e167c5c2682e 100644 (file)
@@ -43,6 +43,11 @@ Core developer, font designer
 @email{t.daniels@@treda.co.uk},
 Assistant documentation editor
 
+@item Phil Holmes:
+@email{mail@@philholmes.net}
+@uref{http://www.philholmes.net}
+Build unentangler, Bug squad member
+
 @item Reinhold Kainhofer:
 @email{reinhold@@kainhofer.com},
 @uref{http://reinhold.kainhofer.com},
@@ -104,6 +109,9 @@ Translation Meister
 @item Valentin Villenave:
 LSR editor and Bug squad member
 
+@item Jan Warchoł:
+happy nitpicker
+
 @end itemize
 @end macro
 
@@ -152,8 +160,7 @@ Core developer, Schemer extraordinaire
 
 @c use commas not colons
 
-Karin Hoethker,
-Jan Warchoł
+Karin Hoethker
 
 @c no comma for last entry
 
index 8f9a237608a34cc4ce69cdf9ac747adcc875e55e..b7d6acdc79fa5c1577cf6d38a39d672df66dfbaf 100644 (file)
@@ -396,7 +396,7 @@ directory.  Here are the relevant lines taken from the output of
 By default, `@command{make@tie{}install}' will install all the
 files in @file{/usr/local/bin}, @file{/usr/local/lib} etc.  You
 can specify an installation prefix other than @file{/usr/local}
-using `@code{--prefix}', for instance `@code{--prefix=$HOME}'.
+using `@option{--prefix}', for instance `@option{--prefix=$HOME}'.
 @end quotation
 
 A typical installation prefix is @file{$HOME/usr}:
@@ -483,9 +483,9 @@ that case, running @samp{make} without the @option{-j} is advised.
 
 If you want to build multiple versions of LilyPond with different
 configuration settings, you can use the
-@code{--enable-config=@var{CONF}} option of @command{configure}.
-You should use @code{make@tie{}conf=@var{CONF}} to generate the
-output in @file{out-@var{CONF}}.  For example, suppose you want to
+@option{--enable-config=@var{conf}} option of @command{configure}.
+You should use @code{make@tie{}conf=@var{conf}} to generate the
+output in @file{out-@var{conf}}.  For example, suppose you want to
 build with and without profiling, then use the following for the
 normal build
 
@@ -576,6 +576,7 @@ re-install.  See @ref{Configuring target directories}.
 @menu
 * Documentation editor's edit/compile cycle::
 * Building documentation::
+* Building a single document::
 * Saving time with CPU_COUNT::
 * AJAX search::
 * Installing documentation::
@@ -696,6 +697,21 @@ However, this will rebuild all of the manuals
 indiscriminately---it is more efficient to @command{touch} only
 the affected files.
 
+@node Building a single document
+@unnumberedsubsubsec Building a single document
+It's possible to build a single document.  For example, to rebuild
+only @file{contributor.pdf}, do the following:
+
+@example
+cd build/
+cd Documentation/
+touch ../../Documentation/contributor.texi
+make out=www out-www/contributor.pdf
+@end example
+
+If you are only working on a single document, test-building it in
+this way can give substantial time savings - recreating
+@file{contributor.pdf}, for example, takes a matter of seconds.
 
 @node Saving time with CPU_COUNT
 @unnumberedsubsubsec Saving time with @code{CPU_COUNT}
index 35b835cdd90f834f9f67ac7a86d4436cb23d74cb..398286ac4ec2af3242f61c07a7b27c2262d1ec37 100644 (file)
@@ -76,6 +76,7 @@
   (define brackettips (get-group glyph-list "^brackettips\\."))
   (define pedal       (get-group glyph-list "^pedal\\."))
   (define accordion   (get-group glyph-list "^accordion\\."))
+  (define ties   (get-group glyph-list "^ties\\."))
 
   ;; remove all remaining groups from the glyph-list
   (for-each
@@ -95,7 +96,8 @@
             arrowheads
             brackettips
             pedal
-            accordion))
+            accordion
+            ties))
 
   ;;;;;;;;;
 
index 471b79d9ee20d144c445e7a24a1f47c33bc7e616..c649068ec6044d1baa9adbb73b5ca04135cc9b81 100644 (file)
@@ -1,29 +1,35 @@
 \version "2.14.0"
-\header{
+
+\header {
   texidoc="
-Note head shapes may be set from several choices.  
-The stem endings should be adjusted according to the note head.  
+Note head shapes may be set from several choices.
+The stem endings should be adjusted according to the note head.
 If you want different note head styles on one stem,
 you must create a special context.
 
 Harmonic notes have a different shape and different
-dimensions. 
+dimensions.
 "
 }
 
 \layout {
   indent = 0.0
   ragged-right = ##t
+
+  \context {
+    \Score
+    \remove "Bar_number_engraver"
+  }
 }
 
 pattern = <<
   \new Voice {
-    \override Stem  #'direction = #UP
-    e'4 e'2. e'1 e'\breve*1/2 e'\longa*1/4
+    \override Stem #'direction = #UP
+    e'4 e'2. e'1 e'\breve*1/2 e'\longa*1/4 \bar "||"
   }
   \new Voice {
-    \override Stem  #'direction = #DOWN
-    a4 a2. a1 a\breve*1/2 a\longa*1/4
+    \override Stem #'direction = #DOWN
+    a4 a2. a1 a\breve*1/2 a\longa*1/4 \bar "||"
   }
 >>
 
@@ -99,6 +105,3 @@ pattern = <<
   s1*0^\markup { "slash" }
   \pattern
 }
-
-
-
index 666ccd1a265076563b1b2b0f1d699055e83c5c29..1bdea5dba4d407611b3d9b868bec5564e347ba79 100644 (file)
@@ -1,12 +1,9 @@
 \version "2.14.0"
 
-% yes, I know this is a mess.  But I'm not going to fuss with
-% it one day before I leave.  -gp
-
 % this chart is used in the manual too.
 
 \header {
-    texidoc ="@cindex Percussion notes
+  texidoc ="@cindex Percussion notes
 
 This chart shows all percussion and drum notes."
 }
@@ -14,56 +11,126 @@ This chart shows all percussion and drum notes."
 myBreak = { \bar " " \break }
 
 \score {
- \new DrumStaff \with {
-  \remove "Time_signature_engraver"
-} \context DrumVoice {
 \new DrumStaff \with {
+    \remove "Time_signature_engraver"
+  } \context DrumVoice {
 
 %% this stuff set up nice || bar lines to divide percussion notes
 %% into related fields, but it should be placed in the actual
 %% music, not as a separate voice.  -gp
 %{
-barlines = {  
-\repeat "unfold" 4 {s 1 \bar" " } s 1 \bar "||" 
-\repeat "unfold" 2 { s 1 \bar" "  s 1 \bar" " s 1 \bar "||" }
-\repeat "unfold" 4 {s 1 \bar" " } s 1 \bar "||" 
-\repeat "unfold" 7  {s 1 \bar" " }  s 1 \bar "||" 
-s 1 \bar" "  s 1 \bar "||" 
-\repeat "unfold" 2 { \repeat "unfold" 5 {s 1 \bar" " } s 1 \bar "||" }         
-\repeat "unfold" 2 { s 1 \bar" "  s 1 \bar "||" }
-\repeat "unfold" 2 {s 1 \bar" " } s 1 \bar "||" 
-\repeat "unfold" 4 {s 1 \bar" " } s 1 \bar "||" 
-s 1 \bar" "  s 1 \bar "||" 
-\repeat "unfold" 3 {s 1 \bar" " } s 1 \bar "||" 
-\repeat "unfold" 2 {s 1 \bar" " } s 1 \bar "||" 
-\repeat "unfold" 3 {\repeat "unfold" 4 {s 1 \bar" " } s 1 \bar "||"  }
-}
+    barlines = {
+      \repeat "unfold" 4 {s 1 \bar" " } s 1 \bar "||"
+      \repeat "unfold" 2 { s 1 \bar" "  s 1 \bar" " s 1 \bar "||" }
+      \repeat "unfold" 4 {s 1 \bar" " } s 1 \bar "||"
+      \repeat "unfold" 7  {s 1 \bar" " }  s 1 \bar "||"
+      s 1 \bar" "  s 1 \bar "||"
+      \repeat "unfold" 2 { \repeat "unfold" 5 {s 1 \bar" " } s 1 \bar "||" }
+      \repeat "unfold" 2 { s 1 \bar" "  s 1 \bar "||" }
+      \repeat "unfold" 2 {s 1 \bar" " } s 1 \bar "||"
+      \repeat "unfold" 4 {s 1 \bar" " } s 1 \bar "||"
+      s 1 \bar" "  s 1 \bar "||"
+      \repeat "unfold" 3 {s 1 \bar" " } s 1 \bar "||"
+      \repeat "unfold" 2 {s 1 \bar" " } s 1 \bar "||"
+      \repeat "unfold" 3 {\repeat "unfold" 4 {s 1 \bar" " } s 1 \bar "||"  }
+    }
 %}
 
-\drummode { 
-\textLengthOn
-\cadenzaOn
-bda1 ^"acousticbassdrum: bda" bd   ^"bassdrum: bd" sn  ^"snare: sn" sne  ^"electricsnare: sne" sna  ^"acousticsnare: sna" \myBreak
-tomfl  ^"lowfloortom: tomfl" tomfh  ^"highfloortom: tomfh" toml  ^"lowtom: toml"  tomh  ^"hightom: tomh" 
-tomml  ^"lowmidtom: tomml" tommh  ^"himidtom: tommh" \myBreak
-hhc  ^"closedhihat: hhc"  hh  ^"hihat: hh" hhp  ^"pedalhihat: hhp" hho  ^"openhihat: hho" hhho  ^"halfopenhihat: hhho" \myBreak
-cymca  ^"crashcymbala: cymca" cymc  ^"crashcymbal: cymc" cymra  ^"ridecymbala: cymra" cymr  ^"ridecymbal: cymr"  \myBreak cymch  ^"chinesecymbal: cymch" cyms  ^"splashcymbal: cyms"
-cymcb  ^"crashcymbalb: cymcb"  cymrb  ^"ridecymbalb: cymrb" 
-rb  ^"ridebell: rb" cb  ^"cowbell: cb" \myBreak
-bohm  ^"mutehibongo: bohm" boh  ^"hibongo: boh" boho  ^"openhibongo: boho" bolm  ^"mutelobongo: bolm" bol  ^"lobongo: bol" bolo  ^"openlobongo: bolo"\myBreak
-cghm  ^"mutehiconga: cghm" cglm  ^"muteloconga: cglm" cgho  ^"openhiconga: cgho" cgh  ^"hiconga: cgh" cglo  ^"openloconga: cglo" cgl  ^"loconga: cgl" \myBreak
-timh  ^"hitimbale: timh" timl  ^"lotimbale: timl"  
-agh  ^"hiagogo: agh" agl  ^"loagogo: agl" \myBreak
-ssh ^"hisidestick: ssh" ss  ^"sidestick: ss" ssl  ^"losidestick: ssl" \myBreak
-guis  ^"shortguiro: guis" guil  ^"longguiro: guil" gui  ^"guiro: gui" cab  ^"cabasa: cab" mar  ^"maracas: mar" \myBreak
-whs  ^"shortwhistle: whs" whl  ^"longwhistle: whl"  \myBreak
-hc  ^"handclap: hc" tamb  ^"tambourine: tamb" vibs  ^"vibraslap: vibs" tt ^"tamtam: tt"  \myBreak
-cl  ^"claves: cl" wbh  ^"hiwoodblock: wbh" wbl  ^"lowoodblock: wbl"  \myBreak
-cuim  ^"mutecuica: cuim" cuio  ^"opencuica: cuio"
-trim  ^"mutetriangle: trim" tri  ^"triangle: tri" trio  ^"opentriangle: trio"  \myBreak
-ua  ^"oneup: ua" ub  ^"twoup: ub" uc  ^"threeup: uc" ud  ^"fourup: ud" ue  ^"fiveup: ue"  \myBreak
-da  ^"onedown: da" db  ^"twodown: db" dc  ^"threedown: dc" dd  ^"fourdown: dd" de ^"fivedown: de"  \myBreak
-}
-}
+    \drummode {
+      \cadenzaOn
+
+      bda1^\markup { \center-align "acousticbassdrum: bda" }
+      bd  _\markup { \center-align "bassdrum: bd" }
+      sn  ^\markup { \center-align "snare: sn" }
+      sne _\markup { \center-align "electricsnare: sne" }
+      sna ^\markup { \center-align "acousticsnare: sna" } \myBreak
+
+      tomfl^\markup { \center-align "lowfloortom: tomfl" }
+      tomfh_\markup { \center-align "highfloortom: tomfh" }
+      toml ^\markup { \center-align "lowtom: toml" }
+      tomh _\markup { \center-align "hightom: tomh" }
+      tomml^\markup { \center-align "lowmidtom: tomml" }
+      tommh_\markup { \center-align "himidtom: tommh" } \myBreak
+
+      hhc ^\markup { \center-align "closedhihat: hhc" }
+      hh  _\markup { \center-align "hihat: hh" }
+      hhp ^\markup { \center-align "pedalhihat: hhp" }
+      hho _\markup { \center-align "openhihat: hho" }
+      hhho^\markup { \center-align "halfopenhihat: hhho" } \myBreak
+
+      cymca^\markup { \center-align "crashcymbala: cymca" }
+      cymc _\markup { \center-align "crashcymbal: cymc" }
+      cymra^\markup { \center-align "ridecymbala: cymra" }
+      cymr _\markup { \center-align "ridecymbal: cymr" } \myBreak
+
+      cymch^\markup { \center-align "chinesecymbal: cymch" }
+      cyms _\markup { \center-align "splashcymbal: cyms" }
+      cymcb^\markup { \center-align "crashcymbalb: cymcb" }
+      cymrb_\markup { \center-align "ridecymbalb: cymrb" }
+      rb   ^\markup { \center-align "ridebell: rb" }
+      cb   _\markup { \center-align "cowbell: cb" } \myBreak
+
+      bohm^\markup { \center-align "mutehibongo: bohm" }
+      boh _\markup { \center-align "hibongo: boh" }
+      boho^\markup { \center-align "openhibongo: boho" }
+      bolm_\markup { \center-align "mutelobongo: bolm" }
+      bol ^\markup { \center-align "lobongo: bol" }
+      bolo_\markup { \center-align "openlobongo: bolo" } \myBreak
+
+      cghm^\markup { \center-align "mutehiconga: cghm" }
+      cglm_\markup { \center-align "muteloconga: cglm" }
+      cgho^\markup { \center-align "openhiconga: cgho" }
+      cgh _\markup { \center-align "hiconga: cgh" }
+      cglo^\markup { \center-align "openloconga: cglo" }
+      cgl _\markup { \center-align "loconga: cgl" } \myBreak
+
+      timh^\markup { \center-align "hitimbale: timh" }
+      timl_\markup { \center-align "lotimbale: timl" }
+      agh ^\markup { \center-align "hiagogo: agh" }
+      agl _\markup { \center-align "loagogo: agl" } \myBreak
+
+      ssh^\markup { \center-align "hisidestick: ssh" }
+      ss _\markup { \center-align "sidestick: ss" }
+      ssl^\markup { \center-align "losidestick: ssl" } \myBreak
+
+      guis^\markup { \center-align "shortguiro: guis" }
+      guil_\markup { \center-align "longguiro: guil" }
+      gui ^\markup { \center-align "guiro: gui" }
+      cab _\markup { \center-align "cabasa: cab" }
+      mar ^\markup { \center-align "maracas: mar" } \myBreak
+
+      whs^\markup { \center-align "shortwhistle: whs" }
+      whl_\markup { \center-align "longwhistle: whl" } \myBreak
+
+      hc  ^\markup { \center-align "handclap: hc" }
+      tamb_\markup { \center-align "tambourine: tamb" }
+      vibs^\markup { \center-align "vibraslap: vibs" }
+      tt  _\markup { \center-align "tamtam: tt"  } \myBreak
+
+      cl ^\markup { \center-align "claves: cl" }
+      wbh_\markup { \center-align "hiwoodblock: wbh" }
+      wbl^\markup { \center-align "lowoodblock: wbl" } \myBreak
+
+      cuim^\markup { \center-align "mutecuica: cuim" }
+      cuio_\markup { \center-align "opencuica: cuio" }
+      trim^\markup { \center-align "mutetriangle: trim" }
+      tri _\markup { \center-align "triangle: tri" }
+      trio^\markup { \center-align "opentriangle: trio" } \myBreak
+
+      ua^\markup { \center-align "oneup: ua" }
+      ub_\markup { \center-align "twoup: ub" }
+      uc^\markup { \center-align "threeup: uc" }
+      ud_\markup { \center-align "fourup: ud" }
+      ue^\markup { \center-align "fiveup: ue" } \myBreak
+
+      da^\markup { \center-align "onedown: da" }
+      db_\markup { \center-align "twodown: db" }
+      dc^\markup { \center-align "threedown: dc" }
+      dd_\markup { \center-align "fourdown: dd" }
+      de^\markup { \center-align "fivedown: de" } \myBreak
+    }
+  }
+
   \layout {
     \context {
       \Score
@@ -71,4 +138,3 @@ da  ^"onedown: da" db  ^"twodown: db" dc  ^"threedown: dc" dd  ^"fourdown: dd" d
     }
   }
 }
-
index a2390859ccd9f98109ff862d8ac3d55bef8e67a1..790559a8f0d76d8cdbfb63b71087d8280a22042e 100644 (file)
@@ -3,5 +3,6 @@
   c d e f g a b c
 }
 
-%% Optional helper for automatic updating by convert-ly.  May be omitted.
+%% Optional helper for automatic updating by convert-ly.
+%% May be omitted.
 \version "2.14.0"
index df35c4cf1beef83a9bbf4116198a4c98be9a1478..db64d84904f814b5c3e7044661b18e5e713ff9bd 100644 (file)
@@ -1,6 +1,6 @@
 ISOLANG = it
 depth = ../..
-SUBDIRS = learning texidocs web usage
+SUBDIRS = learning texidocs web usage included
 STEPMAKE_TEMPLATES = documentation
 LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root
 
diff --git a/Documentation/it/included/GNUmakefile b/Documentation/it/included/GNUmakefile
new file mode 100644 (file)
index 0000000..425cc1d
--- /dev/null
@@ -0,0 +1,5 @@
+depth = ../../..
+
+LOCALSTEPMAKE_TEMPLATES = ly
+
+include $(depth)/make/stepmake.make
diff --git a/Documentation/it/included/generating-output.itexi b/Documentation/it/included/generating-output.itexi
new file mode 100644 (file)
index 0000000..45d34ee
--- /dev/null
@@ -0,0 +1,226 @@
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
+@c This file is part of web/download.itexi and
+@c learning/tutorial.itely
+@ignore
+    Translation of GIT committish: 8f02aa6516b3cfe16b2c145142ea652cbc3b8970
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  For details, see the Contributors'
+    Guide, node Updating translation committishes..
+@end ignore
+
+@c This is about "compiling" a lilypond file
+@c (Learning 1 Tutorial), **not** compiling the
+@c source code.
+
+@macro lilypadOSX
+@warning{Queste istruzioni presumono che tu stia usando il programma
+LilyPond.  Se stai usando uno dei programmi descritti in
+@rweb{Editing facilitato}, in caso di problemi consulta la documentazione
+di quei programmi.}
+
+
+@subsubheading Passo 1. Crea il tuo file @file{.ly}
+
+Clicca due volte su @command{LilyPond.app}, si aprirà un file di esempio.
+
+@sourceimage{Learning_Macos_welcome,,,}
+
+Dai menu in cima a sinistra dello schermo seleziona
+@w{@code{File > Save}}.
+
+@sourceimage{Learning_Macos_Save_menu,,,}
+
+Scegli un nome per il tuo file, ad esempio @file{test.ly}.
+
+@sourceimage{Learning_Macos_Save_file_with_name,,,}
+
+
+@subsubheading Passo 2. Compila (con LilyPad)
+
+Dagli stessi menu seleziona
+@w{@code{Compile > Typeset}}.
+
+@sourceimage{Learning_Macos_Typeset_menu,,,}
+
+Si aprirà una nuova finestra che mostra i messaggi di log della compilazione
+del file che hai appena salvato.
+
+@sourceimage{Learning_Macos_Compiling_log,,,}
+
+
+@subsubheading Passo 3. Visualizza l'output
+
+Quando la compilazione è finita, un file PDF con lo stesso nome del file
+originale viene creato e automaticamente aperto nel visualizzatore
+PDF predefinito, che lo mostrerà sullo schermo.
+
+@sourceimage{Learning_Macos_pdf_output,,,}
+
+
+@subsubheading Altri comandi
+
+Per creare nuovi file per LilyPond, comincia col selezionare
+@w{@code{File > New}}
+
+@sourceimage{Learning_Macos_New_menu,,,}
+
+oppure @w{@code{File > Open}} per aprire e modificare file esistenti che
+hai salvato precedentemente.
+
+@sourceimage{Learning_Macos_Open_menu,,,}
+
+Devi salvare qualsiasi nuova modifica fatta al file prima di cliccare
+@w{@code{Compile > Typeset}} e se il file PDF non compare controlla se
+ci sono degli errori nella finestra dei messaggi di log.
+
+Se non stai usando il visualizzatore d'anteprima PDF incluso nel sistema
+operativo del Mac e un file PDF generato da una compilazione precedente
+è aperto, qualsiasi compilazione successiva potrebbe non riuscire a
+generare un PDF aggiornato finché non chiudi l'originale.
+
+
+
+@end macro
+
+
+@macro lilypadWindows
+@warning{Queste istruzioni presumono che tu stia usando l'editor LilyPad
+incluso nel programma.  Se stai usando uno dei programmi descritti in
+@rweb{Editing facilitato}, in caso di problemi nel compilare un file consulta
+la documentazione di quei programmi.}
+
+
+@subsubheading Passo 1. Crea il tuo file @file{.ly}
+
+Clicca due volte sull'icona di LilyPond sulla scrivania, si aprirà un file di esempio.
+
+@sourceimage{Learning_Win7_Welcome_File_Whole,,,}
+
+Dai menu che appaiono in cima al file di esempio seleziona
+@w{@code{File > Save as}}.  Non usare @w{@code{File > Save}}
+per il file di esempio perché non funzionerà finché non gli darai
+un nome di file valido per LilyPond.
+
+@sourceimage{Learning_Win7_Save_Menu,,,}
+
+Scegli un nome per il tuo file, ad esempio @file{test.ly}.
+
+@sourceimage{Learning_Win7_Save_File_With_Name,,,}
+
+
+@subsubheading Passo 2a. Compila (con drag-and-drop)
+
+A seconda di quel che preferisci, per compilare il file puoi:
+
+Trascinare e rilasciare (drag-and-drop) il file direttamente sull'icona di LilyPond.
+
+@sourceimage{Learning_Win7_Open_Dragndrop,,,}
+
+Cliccare col tasto destro sul file e dal menu contestuale a comparsa scegliere
+@w{@code{Open with > LilyPond}}.
+
+@sourceimage{Learning_Win7_Open_Context_Menu,,,}
+
+
+@subsubheading Passo 2b. Compilare (con doppio clic)
+
+O semplicemente clicca due volte su @file{test.ly}.
+
+
+@subsubheading Passo 3. Visualizza l'output
+
+Durante la compilazione del file @file{test.ly}, una finestra dei comandi
+si aprirà per breve tempo e poi si chiuderà.  Nel corso di questo processo
+verranno creati tre ulteriori file.
+
+@sourceimage{Learning_Win7_All_Files_Created,,,}
+
+Il file PDF contiene il file @file{test.ly} compilato.
+
+@sourceimage{Learning_Win7_Pdf_Output,,,}
+
+
+@subsubheading Altri comandi
+
+Per creare un nuovo file, per prima cosa seleziona @w{@code{File > New}} se
+hai aperto un file creato in precedenza.
+
+@sourceimage{Learning_Win7_New_Menu,,,}
+
+@noindent
+oppure @w{@code{File > Open}} per aprire e modificare i file che hai
+salvato prima.
+
+@sourceimage{Learning_Win7_Open_Menu,,,}
+
+Devi salvare qualsiasi nuovo modifica prima di compilare.  Se il file
+PDF non viene creato, controlla se ci sono degli errori nel file di log che
+sarà stato creato durante il tentativo di compilazione.
+
+@sourceimage{Learning_Win7_Log_File,,,}
+
+Questo file di log viene sovrascritto ogni volta che compili il file LilyPond.
+
+Il file PS viene usato da LilyPond per creare il file PDF e può essere
+ignorato.  Anch'esso viene sovrascritto ogni volta che compili il file.
+
+Se visualizzi il file in un lettore PDF, devi chiudere il PDF se desideri
+fare una nuova compilazione, perché potrebbe non riuscire a creare il
+nuovo file PDF mentre è ancora aperto per la visualizzazione.
+
+
+@end macro
+
+
+@c not lilypad at all, but I ran out of names.  :(
+@macro lilypadCommandLine
+@warning{Queste istruzioni presumono che tu abbia familiarità con i
+programmi a linea di comando.  Se stai usando uno dei programmi descritti in
+@rweb{Editing facilitato}, in caso di problemi nel compilare un file consulta
+la documentazione di quei programmi.}
+
+
+@subsubheading Passo 1. Crea il tuo file @file{.ly}
+
+Crea un file di testo chiamato @file{test.ly} e scrivi:
+
+@c double \\ required because this is inside a macro!
+@example
+\\version "@w{@versionStable{}}"
+@{
+  c' e' g' e'
+@}
+@end example
+
+
+@subsubheading Passo 2. Compila (da linea di comando)
+
+Per elaborare @file{test.ly}, scrivi il seguente comando nel terminale:
+
+@example
+lilypond test.ly
+@end example
+
+@noindent
+Vedrai qualcosa di simile a questo:
+
+@example
+GNU LilyPond @w{@versionStable{}}
+Processing `test.ly'
+Parsing...
+Interpreting music...
+Preprocessing graphical objects...
+Solving 1 page-breaking chunks...[1: 1 pages]
+Drawing systems...
+Layout output to `test.ps'...
+Converting to `./test.pdf'...
+@end example
+
+@subsubheading Passo 3. Visualizza l'output
+
+Puoi visualizzare o stampare il file @file{test.pdf}.
+
+@end macro
+
+
diff --git a/Documentation/it/included/helpus.itexi b/Documentation/it/included/helpus.itexi
new file mode 100644 (file)
index 0000000..a077b8d
--- /dev/null
@@ -0,0 +1,145 @@
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
+@c This file is part of web/community.itexi and
+@c contributor/introduction.itely
+
+@ignore
+    Translation of GIT committish: 66e5185e494d29c40ec25d5f71326836204cd680
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  For details, see the Contributors'
+    Guide, node Updating translation committishes..
+@end ignore
+
+@macro helpusNeed
+@subheading Abbiamo bisogno di te!
+
+Il team di sviluppo di LilyPond è piuttosto piccolo; desideriamo davvero
+coinvolgere nuove persone.  Prendi in considerazione l'idea di aiutare i
+tuoi compagni utenti di LilyPond diventando un collaboratore!
+
+Anche lavorare su piccoli compiti può avre un grande impatto: occuparsi di
+questi compiti permette agli sviluppatori esperti di lavorare sui compiti
+complessi, invece di impiegare il tempo in quelli semplici.
+
+@end macro
+
+
+@macro helpusTasks
+@subheading Compiti semplici
+
+Non è richiesto compilare o lavorare sul codice sorgente!
+
+@itemize
+@item
+Supporto nelle mailing list: rispondi alle domande degli utenti.
+
+@item
+Segnalazione bug: aiuta gli utenti a creare una @rweb{Segnalazione bug}
+corretta e/o entra nel Bug Squad per l'organizzazione dei @rcontribnamed{Issues, Problemi}.
+
+@item
+Documentazione: puoi proporre piccole modifiche seguendo le linee
+guida per i @rcontribnamed{Documentation suggestions,Consigli per la documentazione}.
+
+@item
+LilyPond Snippet Repository (LSR): crea e correggi i frammenti di codice
+seguendo le linee guida in
+@rcontribnamed{Adding and editing snippets, Aggiungere e modificare i frammenti di codice}.
+
+@item
+Discussioni, revisioni e prove: gli sviluppatori chiedono spesso
+delle opinioni sulla documentazione, possibili cambiamenti di sintassi
+e il test di nuove funzionalità.  Contribuisci a queste discussioni!
+
+@end itemize
+
+@subheading Compiti avanzati
+
+Questi compiti di solito richiedono il codice sorgente e la capacità di
+compilare LilyPond.
+
+@warning{Consigliamo ai collaboratori che usano Windows o MacOS X di
+@strong{non} cercare di configurare il proprio ambiente di sviluppo;
+si consiglia invece di usare Lilydev come spiegato in @rcontribnamed{Quick start,Avvio rapido}.}
+
+Anche i collaboratori che usano Linux o FreeBSD possono usare Lilydev, ma se
+preferiscono il proprio ambiente di sviluppo, devono leggere
+@rcontribnamed{Working with source code,Lavorare col codice sorgente} e
+@rcontribnamed{Compiling,Compilare}.
+
+@itemize
+@item
+Documentazione: per ampie modifiche si veda
+@rcontribnamed{Documentation work,Lavorare sulla documentazione}.
+
+@item
+Sito web: il sito web viene creato dai sorgenti della
+documentazione.  Si vedano le informazioni relative alla documentazione e anche
+@rcontribnamed{Website work,Lavorare sul sito web}.
+
+@item
+Traduzioni: si veda @rcontribnamed{Translating the documentation,Tradurre la documentazione}
+e @rcontribnamed{Translating the website,Tradurre il sito web}.
+
+@item
+Correzioni di bug o nuove funzionalità: il miglior modo per iniziare è unirsi
+ai Frogs e leggere @rcontribnamed{Programming work,Lavori di programmazione}.
+
+@end itemize
+
+@end macro
+
+
+@macro helpusProjects
+@subheading Progetti
+
+@subsubheading Frogs
+
+Sito web e mailing list:
+
+@example
+@uref{http://frogs.lilynet.net}
+@end example
+
+I Frogs sono comuni utenti LilyPond che hanno scelto di impegnarsi
+nello sviluppo del loro software preferito.  Correggere i bug,
+implementare nuove funzionalità, documentare il codice sorgente: c'è
+molto da fare.  Ma soprattutto si tratta di un'occasione per tutti
+per acquisire maggiori conoscenze su LilyPond, il Software Libero e
+la programmazione... e per divertirsi.  Se uno di questi punti
+ti incuriosisce, allora il monito è: @emph{Join the Frogs!}
+
+
+
+@subsubheading Grand LilyPond Input Syntax Standardization
+
+Sito web:
+@rcontrib{Grand LilyPond Input Syntax Standardization (GLISS)}.
+
+GLISS renderà stabile la sintassi di input (esclusi i tweak) per il futuro
+LilyPond 3.0.  Dopo l'aggiornamento alla versione 3.0, la sintassi di input per
+la musica senza tweak rimarrà stabile nell'immediato futuro.
+
+Ci sarà un ampio periodo di discussione per determinare la specifica finale
+per l'input.
+
+@warning{GLISS inizierà poco dopo il rilascio della versione 2.16.}
+
+@subsubheading Grand Organizing Project
+
+Sito web: @rcontrib{Grand Organization Project (GOP)}.
+
+GOP sarà la nostra grande iniziativa di reclutamento di nuovi collaboratori.  Abbiamo
+un disperato bisogno di distribuire tra più persone i compiti di sviluppo (inclusi
+i @qq{compiti semplici} che non richiedono di dover programmare o avere a che
+fare col codice sorgente!).  Abbiamo anche bisogno di documentare la conoscenza
+degli attuali sviluppatori in modo che non vada persa.
+
+Diversamente dalla maggior parte dei @qq{Grand Projects}, GOP non aggiungerà
+nuove funzionalità né riprogetterà completamente le cose.  Il suo scopo è darci
+delle fondamenta più stabili in modo da poter andare avanti con compiti più
+grandi in futuro.
+
+@end macro
+
+
index dc1bf82286be55d9c3db9911da5efa1b178259b3..7f3cfcea67e74f2afcbe4c0b0ee22e630e2b9694 100644 (file)
@@ -36,23 +36,23 @@ LilyPond e goderti dei belli spartiti!
 
 @appendixsubsec Solo note
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion]
 {single-staff-template-with-only-notes.ly}
 
 
 @appendixsubsec Note e testo
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion]
 {single-staff-template-with-notes-and-lyrics.ly}
 
 @appendixsubsec Note e accordi
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {single-staff-template-with-notes-and-chords.ly}
 
 @appendixsubsec Note, testo e accordi.
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {single-staff-template-with-notes,-lyrics,-and-chords.ly}
 
 
@@ -62,22 +62,22 @@ LilyPond e goderti dei belli spartiti!
 
 @appendixsubsec Solo pianoforte
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-simple.ly}
 
 @appendixsubsec Pianoforte e melodia con testo
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-melody-and-lyrics.ly}
 
 @appendixsubsec Pianoforte con testo al centro
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-centered-lyrics.ly}
 
 @appendixsubsec Pianoforte con dinamiche al centro
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-centered-dynamics.ly}
 
 
@@ -87,12 +87,12 @@ LilyPond e goderti dei belli spartiti!
 
 @appendixsubsec Quartetto d'archi
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {string-quartet-template-simple.ly}
 
 @appendixsubsec Parti di un quartetto d'archi
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {string-quartet-template-with-separate-parts.ly}
 
 
@@ -102,37 +102,37 @@ LilyPond e goderti dei belli spartiti!
 
 @appendixsubsec Partitura vocale SATB
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template.ly}
 
 @appendixsubsec Partitura vocale SATB e automatica riduzione per pianoforte
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-automatic-piano-reduction.ly}
 
 @appendixsubsec SATB con contesti allineati
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly}
 
 @appendixsubsec SATB su quattro righi
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {satb-choir-template---four-staves.ly}
 
 @appendixsubsec Strofa sola e ritornello a due parti
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-verse-and-refrain.ly}
 
 @appendixsubsec Inni
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {hymn-template.ly}
 
 @appendixsubsec Salmi
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {anglican-psalm-template.ly}
 
 
@@ -141,7 +141,7 @@ LilyPond e goderti dei belli spartiti!
 @translationof Orchestral templates
 
 @appendixsubsec Orchestra, coro e pianoforte
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {orchestra,-choir-and-piano-template.ly}
 
 
@@ -152,12 +152,12 @@ LilyPond e goderti dei belli spartiti!
 
 @appendixsubsec Transcrizione di musica mensurale
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {ancient-notation-template----modern-transcription-of-mensural-music.ly}
 
 @appendixsubsec Trascrizione di musica Gregoriana
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {ancient-notation-template----modern-transcription-of-gregorian-music.ly}
 
 
@@ -167,7 +167,7 @@ LilyPond e goderti dei belli spartiti!
 
 @appendixsubsec Combo jazz
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {jazz-combo-template.ly}
 
 
index f37afbcafd4fa9236c01011ffb54db34f9ad3f39..d7f08a64509460b97876d10b1a542fa659f0d967 100644 (file)
@@ -757,7 +757,7 @@ Per la versione di LilyPond @version{}
 </div>
 @end html
 @iftex
-@image{ly-examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png}
+@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png}
 @end iftex
 @ifinfo
 @image{lilypond/ly-examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png}
index fb605fd226b1411d12b42b462758d3590fc4d9f1..e02977e754f84ccde4ebec122fea8fb3c5e6b44a 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{Last updated Wed Jul 13 10:59:12 UTC 2011
+@emph{Last updated Sat Aug 13 14:15:49 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -111,7 +111,7 @@ yes
 @item
 2 Notazione comunemente utilizzata
 @*
-4184
+4187
 @tab Federico Bruni
 @tab Luca Rossetto Casel
 @tab 
@@ -258,7 +258,7 @@ yes
 @item
 1 Eseguire @command{lilypond}
 @*
-3622
+3681
 @tab Federico Bruni
 @tab Luca Rossetto Casel
 @tab 
@@ -312,7 +312,7 @@ yes
 @item
 3 Eseguire @command{lilypond-book}
 @*
-3952
+3978
 @tab Federico Bruni
 @tab Luca Rossetto Casel
 @tab 
@@ -339,7 +339,7 @@ yes
 @item
 4 Programmi esterni
 @*
-2170
+2180
 @tab Federico Bruni
 @tab Luca Rossetto Casel
 @tab 
@@ -356,11 +356,11 @@ yes
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">yes</span>
+<span style="background-color: #25fe1f">partially</span>
 @end html
 @end ifhtml
 @ifnothtml
-yes
+partially
 @end ifnothtml
 @tab pre-GDP
 @item
@@ -513,7 +513,7 @@ partially
 @item
 Manuali
 @*
-1203
+1214
 @tab Federico Bruni
 @tab Luca Rossetto Casel
 @tab 
@@ -540,7 +540,7 @@ partially
 @item
 Comunità
 @*
-1755
+1888
 @tab Federico Bruni
 @tab Luca Rossetto Casel
 @tab 
@@ -557,7 +557,7 @@ yes
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">partially</span>
+<span style="background-color: #4efe25">partially</span>
 @end html
 @end ifhtml
 @ifnothtml
index 81f0d77717b898fa019c1b0ef95864c145da8878..e02ac68098446e0bdcf9ff08b0232f69089906ef 100644 (file)
@@ -773,13 +773,6 @@ contiene un campo @code{texidoc@var{LANG}}, quando si lancia @command{lilypond}
 con l'opzione @option{--header=@/texidoc@var{LANG}} verrà incluso
 @file{foo.texidoc@var{LANG}} invece di @file{foo.texidoc}.
 
-@item lilyquote
-(Solo per l'output Texinfo.)  Questa opzione è simile alla citazione, ma solo
-il frammento musicale (e l'opzionale blocco di testo sottinteso dall'opzione
-@code{verbatim}) vengono inseriti in un blocco di citazione.  Questa opzione è
-utile se si vuole citare (@code{quote}) il frammento musicale ma non il
-blocco della documentazione @code{texidoc}.
-
 @item doctitle
 (Solo per l'output Texinfo.) Questa opzione funziona in modo simile
 all'opzione @code{texidoc}: se @command{lilypond} viene lanciato con
index 2e9719de71fff089968d1eca3627549f0aa7cf95..73b0187be82bb297f6be47430daf811bc36f29d3 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: 4d852ef65fc654e4ed02413926fc0cb78a1da1be
+    Translation of GIT committish: 18e1018ce7446f2cb86990c31f112f6cf05ca371
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -23,7 +23,6 @@
 @include macros.itexi
 @include weblinks.itexi
 
-@afourpaper
 
 @c don't remove this comment.
 @ignore
@@ -217,7 +216,7 @@ Distributions will want to install lilypond.info in postinstall, doing:
 
 @macro docLinkSplit{name,base,webLink}
 @ifclear web_version
-  @uref{../\base\/index.html, \name\ (split HTML)}
+  @uref{../\base\/index.html, \name\ (HTML multipagina)}
 @end ifclear
 @ifset web_version
   \webLink\
@@ -226,7 +225,7 @@ Distributions will want to install lilypond.info in postinstall, doing:
 
 @macro docLinkBig{name,base,webLink}
 @ifclear web_version
-  @uref{../\base\-big-page.html, \name\ (big HTML)}
+  @uref{../\base\-big-page.html, \name\ (HTML pagina unica)}
 @end ifclear
 @ifset web_version
   \webLink\
@@ -250,15 +249,15 @@ Distributions will want to install lilypond.info in postinstall, doing:
 
 @item @docLinkSplit{\name\,\base\,\split\} @minus{}
   il manuale è diviso in tante pagine HTML.
-  @*@ @ @emph{(small download for each page)}
+  @*@ @ @emph{(piccolo download per ogni pagina)}
 
 @item @docLinkBig{\name\,\base\,\big\} @minus{}
   leggi questo manuale in un'unica grande pagina HTML.
-  @*@ @ @emph{(large single download, \bigsize\)}
+  @*@ @ @emph{(un solo grande download, \bigsize\)}
 
 @item @docLinkPdf{\name\,\base\,\pdf\} @minus{}
   scarica come file PDF.
-  @*@ @ @emph{(large single download, \pdfsize\)}
+  @*@ @ @emph{(un solo grande download, \pdfsize\)}
 
 @end itemize
 
index 476c897f12b1ca9f18d089031687ef2258e14321..db76efd04f0c9e72d850d02456046d8218d5c6e4 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: ee3a89f9f7289bcd90c5f27fd8f86400159088b2
+    Translation of GIT committish: 402e3b1ac8d0c65b63a992dfd1247ed058e69ff8
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -268,7 +268,7 @@ linee guida per la @ref{Segnalazione bug}.}
 @divClass{column-center-top}
 @subheading Cosa sono gli @qq{Esempi minimi}?
 
-Un esempio minimo è un esempio dal quale niente può essere tolto.
+Un esempio minimo è un esempio dal quale @strong{niente} può essere tolto.
 @divEnd
 
 @divClass{column-left-bottom}
@@ -282,12 +282,12 @@ Più l'esempio è semplice, più rapidamente potenziali solutori
 possono comprenderlo e aiutarti.
 
 @item
-Un esempio semplice dimostra che hai tentato di risolvere il problema
+Un esempio minimo dimostra che hai tentato di risolvere il problema
 da solo.  Quando le persone inviano grandi porzioni di input, sembra
 che non si preoccupino che noi li possiamo aiutare o no.
 
 @item
-Creare un esempio minimo ti spinge a capire cosa sta
+Creare un esempio minimo ti aiuta a capire cosa sta
 succedendo.  Molte segnalazioni di un falso problema possono essere
 evitate se si prova a creare un esempio minimo; se non riesci a ricreare
 un @qq{bug} in un esempio minimo, allora probabilmente il problema è
@@ -300,19 +300,18 @@ una comprensione di LilyPond insufficiente, non un vero bug!
 
 
 @divClass{column-right-bottom}
-@subheading Come li creo?
+@subheading Come crearli?
 
 @divClass{keep-bullets}
 @itemize
 
 @item
-Includi il numero di versione nel comando \version.
+Includi il numero di versione nel comando @code{\version}.
 
 @item
 Crea un esempio piccolo!  Gli esempi che riguardano la spaziatura o la
 formattazione di pagina potrebbero richiedere molte battute, ma la maggior
-parte dei problemi può essere ricreata in una singola
-battuta.
+parte dei problemi può essere ricreata in meno di una sola battuta.
 
 @item
 Durante la preparazione di un esempio, cerca di commentare @w{(@code{%}
@@ -321,19 +320,58 @@ commentare una porzione di codice riuscendo a mantenere chiara l'idea principale
 allora elimina il materiale commentato!
 
 @item
-Evita di usare note, tonalità, o segni di tempo complicati a meno che
+Evita di usare note, tonalità o segni di tempo complicati a meno che
 il malfunzionamento non riguardi proprio il comportamento di questi elementi.
 
 @item
 Non usare i comandi @code{\override} o @code{\set} a meno che il malfunzionamento
 non riguardi questi comandi in particolare.
 
+@item
+Eventualmente, allega un'immagine che mostri il risultato grafico desiderato.
+
 @end itemize
 @divEnd
 
 @divEnd
 
+@divClass{column-center-bottom}
+@subheading Quanto piccoli devono essere?
+
+Il codice seguente è un esempio minimo?
+
+@example
+\version "2.14.1"
+\include "english.ly"
+
+\score @{
+  \new Staff @{
+    \key d \major
+    \numericTimeSignature
+    \time 2/4
+    <cs' d'' b''>16 <cs' d'' b''>8.
+    %% Here: the tie on the D's looks funny
+    %% Too tall? Left-hand endpoint is not aligned with the B tie?
+    ~
+    <cs' d'' b''>8 [ <b d'' a''> ]
+  @}
+@}
+@end example
+
+Non è così grande, ma un vero esempio minimo è il seguente:
+
+@example
+\version "2.14.1"
+@{
+  % middle tie looks funny here:
+  <c' d'' b''>8. ~ <c' d'' b''>8
+@}
+@end example
+
+Sono pochi gli esempi minimi che superano 10 righe di codice -
+spesso 4 righe sono sufficienti per spiegare il problema!
 
+@divEnd
 
 
 @node Segnalazione bug
@@ -372,15 +410,14 @@ ogni bug può essere dimostrato con quattro note o meno!}
 Ecco un esempio di una valida segnalazione bug:
 
 @example
-%% il comando di ottavazione
-%% non modifica l'output!
-
-\version "2.10.0"
-\paper@{ ragged-right=##t @}
-\relative c''' @{
-  c1
-  #(set-octavation 1)
-  c1
+% Le alterazioni dovrebbero comparire solo nella
+% prima nota di una legatura di valore, ma questa
+% versione mostra il bemolle accanto a entrambe le note.
+\version "2.10.1"
+
+\relative c'' @{
+ bes1 ~
+ bes1
 @}
 @end example
 
@@ -418,6 +455,10 @@ Per evitarlo, aggiungi
 
 @end itemize
 @divEnd
+@divEnd
+
+@divClass{column-center-bottom}
+@subheading Passo 4: Attendi una risposta
 
 Una volta che il bug è stato inviato alla lista, la nostra Squadra Bug esaminerà
 la segnalazione.  Una risposta può richiedere fino a 24 ore, perché abbiamo
@@ -430,6 +471,17 @@ ogni volta capiti un'attività relativa al bug.  Per fare questo occorre
 avere un account google.
 @divEnd
 
+@divClass{column-center-bottom}
+@subheading Aiuto facoltativo: mostra il comportamento desiderato
+
+Dopo che il problema è stato aggiunto al tracker, può essere molto
+utile poter vedere l'output desiderato.  Aggiungi pure del codice di
+input e/o delle immagini (se possibile, create con altri strumenti) che
+mostrino come dovrebbe apparire secondo te!
+
+@divEnd
+
+
 
 @node Aiutaci
 @unnumberedsec Aiutaci
index 98d056084f6dbe86fae430e00631ac14ba18cd0a..4310b9e2cf121e1ec585306c57bc618310bdc6ac 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: ee3a89f9f7289bcd90c5f27fd8f86400159088b2
+    Translation of GIT committish: 12503a0c383617cd11fa0bba2836af6c0518ecf7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -201,12 +201,20 @@ sh lilypond-@versionStable{}-SISTEMA-OPERATIVO.sh
 
 @subsubheading Disinstallazione
 
-Digita in un terminale:
+Digita nel terminale:
 
 @example
 uninstall-lilypond
 @end example
 
+@subsubheading Aiuto
+
+Digita nel terminale:
+
+@example
+sh lilypond-@versionStable{}-OS-TYPE.sh --help
+@end example
+
 @divEnd
 
 
@@ -230,22 +238,22 @@ aggiornare a queste versioni.
 @item
 @sourceimage{logo-fedora,,,}
 @uref{http://koji.fedoraproject.org/koji/packageinfo?packageID=2447,
-Fedora: LilyPond 2.12.3}
+Fedora: LilyPond 2.14.1}
 
 @item
 @sourceimage{logo-ubuntu,,,}
 @uref{http://packages.ubuntu.com/search?keywords=lilypond,
-Ubuntu: LilyPond 2.12.2}
+Ubuntu: LilyPond 2.12.3}
 
 @item
 @sourceimage{logo-slackware,,,}
 @uref{http://www.johannes-schoepfer.de/lilypond/,
-Slackware: LilyPond 2.12.3}
+Slackware: LilyPond 2.14.1}
 
 @item
 @sourceimage{logo-debian,,,}
 @uref{http://packages.debian.org/search?keywords=lilypond,
-Debian: LilyPond 2.12.2}
+Debian: LilyPond 2.12.3}
 
 @item
 @sourceimage{logo-suse,,,}
@@ -509,7 +517,7 @@ che contiene i file eseguibili di LilyPond, in questo modo:
 [@var{pre-set paths}];@var{DIR}\LilyPond\usr\bin
 @end example
 
-@warning{@var{DIR} generalmente è @code{C:\Program Files}.}
+@warning{@var{DIR} generalmente è @code{C:@bs{}Program Files}.}
 
 @noindent
 e clicca il bottone @qq{OK} per chiudere la finestra.
index d0fe234fa23a5a84538dc568faf83ae6cadeb707..81c1bfa05e1ef848ffb869193486725d4217cd88 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: cd0fa693cd2297298aabfdc2d2d9d8b0d7746a5c
+    Translation of GIT committish: d282588015bad1ed86833848a5bcbdc43cfdc9e5
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -576,7 +576,19 @@ nostro @ref{Input testuale}.
 @itemize
 
 @item
-May 2010
+Aprile 2011
+
+@uref{http://www.linux-magazine.com,Linux Magazine} pubblica un
+articolo intitolato
+@uref{http://www.linux-magazine.com/w3/issue/126/088-090_projects.pdf,
+Projects on the Move}.  È un articolo introduttivo a MuseScore,
+LilyPond e Chordii.  L'autrice Carla Schroder afferma @qq{LilyPond è un
+programma a linea di comando, ma non lasciatevi spaventare dalla mancanza
+dell'interfaccia grafica; LilyPond è facile da usare e da imparare}, e fornisce
+anche un esempio pratico.
+
+@item
+Maggio 2010
 
 Peter Kirn, sul sito Create Digital Music, pubblica una
 @uref{http://createdigitalmusic.com/2010/05/14/lilypond-free-beautiful-music-notation-engraving-for-anyone/,recensione
@@ -591,7 +603,7 @@ La rivista tedesca LinuxUser ha scritto un
 articolo su LilyPond}.
 
 @item
-August 2009
+Agosto 2009
 
 Ann Drinan, sul sito
 @uref{http://www.polyphonic.org/article.php?id=188, Polyphonic.org}, presenta
@@ -599,7 +611,7 @@ i commenti di due bibliotecari di un'orchestra che parlano dell'uso del
 software per gestire le loro biblioteche.
 
 @item
-June 2009
+Giugno 2009
 
 In un @uref{http://news.lilynet.net/Free-Music-Now, articolo}
 pubblicato nella rivista annuale francese @emph{National Conservatory Parent
@@ -639,7 +651,7 @@ Kris Shaffer commenta @qq{GNU Lilypond genera una grafica splendida
 che fa sembrare le alternative commerciali di second'ordine.}
 
 @item
-August 20, 2005
+20 Agosto 2005
 
 La rivista belga De Standaard fa un'indagine sulle motivazioni degli
 autori di Software Libero in un articolo intitolato
@@ -1044,17 +1056,17 @@ e attualmente gira su tutte le distro Linux e altri sistemi operativi UNIX.
 
 @uref{http://denemo.org}
 
-Denemo è un editor grafico che genera codice sorgente LilyPond,
-nella versione 2.8.7, e permette anche la riproduzione audio.  Consente
-agli utenti di vedere il codice sorgente LilyPond in parallelo alla
-visualizzazione grafica. Modifiche manuali del codice possono essere attaccate a note,
-accordi etc. e vengono salvate nel file di Denemo, così che gli utenti possano
-continuare a modificare il documento tramite l'interfaccia grafica.
+Denemo è un editor grafico che genera codice sorgente LilyPond
+e permette anche la riproduzione audio.  Consente agli utenti di vedere
+il codice sorgente LilyPond in parallelo alla visualizzazione grafica.  Modifiche
+manuali del codice possono essere attaccate a note, accordi etc. e vengono
+salvate nel file di Denemo, così che gli utenti possano continuare a
+modificare il documento tramite l'interfaccia grafica.
 
 Se si muove il cursore nel codice LilyPond si muove anche il cursore
 nella visualizzazione grafica, e qualsiasi errore di sintassi nelle tue modifiche
 manuali al codice LilyPond viene evidenziato nella visualizzazione testuale
-quando stampi da lì.
+quando elaborato da lì.
 
 
 @divEnd
@@ -1088,7 +1100,7 @@ Vim, allora probabilmente vorrai usare un editor diverso per scrivere
 i file di input di LilyPond.
 
 Puoi trovare maggiori informazioni sulla configurazione di Emacs e Vim in
-@rprogram{Text editor support}.
+@rprogram{LilyPond e gli editor di testo}.
 
 @sourceimage{logo-macosx,,,}
 
@@ -1189,8 +1201,8 @@ ambiente costruito sul linguaggio di programmazione a vincoli
 @itemize
 
 @item
-@uref{http://lilykde.googlecode.com/,LilyKDE} è stato sosituito da
-@uref{http://www.frescobaldi.org/,Frescobaldi}, e esiste soltanto come
+@uref{http://lilykde.googlecode.com/,LilyKDE} è stato sostituito da
+@uref{http://www.frescobaldi.org/,Frescobaldi}; esiste soltanto come
 LilyKDE3 per KDE 3.5 e lilypond-KDE4 per KDE 4.1.
 
 @item
index cae713fd7f53575f9c8923e4d7dbb01e736d7bc2..3852d1d0036014a29ecc64c42c2ae6edbf6cb66e 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: ee3a89f9f7289bcd90c5f27fd8f86400159088b2
+    Translation of GIT committish: c7175b7e8387655964d9c9a975e9789fe581043c
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -41,21 +41,21 @@ LilyPond è un compositore tipografico musicale @strong{basato su testo}.  Leggi
 prima questo!
 
 @item
-@ifWebLinks{@manualStableLearningSplitNoName,@rlearningnamed{Top,Learning}}
+@ifWebLinks{@manualStableLearningSplitNoName-it,@rlearningnamed{Top,Apprendimento}}
 un'introduzione a LilyPond leggera e @qq{imprescindibile}.
-@details{Learning}
+@details{Apprendimento}
 
 @item
-@ifWebLinks{@manualStableGlossarySplitNoName,@rglosnamed{Top,Glossary}}
+@ifWebLinks{@manualStableGlossarySplitNoName,@rglosnamed{Top,Glossario}}
 @emph{(lettura opzionale)}
 termini musicali e traduzioni.
-@details{Glossary}
+@details{Glossario}
 
 @item
-@ifWebLinks{@manualStableEssaySplitNoName,@ressaynamed{Top,Essay}}
+@ifWebLinks{@manualStableEssaySplitNoName,@ressaynamed{Top,Saggio}}
 @emph{(lettura opzionale)}
 informazioni sull'incisione realizzata dal computer.
-@details{Essay}
+@details{Saggio}
 
 
 @end itemize
@@ -67,17 +67,17 @@ informazioni sull'incisione realizzata dal computer.
 
 @itemize
 
-@item @ifWebLinks{@manualStableNotationSplitNoName,@rusernamed{Top,Notation}}
+@item @ifWebLinks{@manualStableNotationSplitNoName,@rusernamed{Top,Notazione}}
 guida alla sintassi.
-@details{Notation}
+@details{Notazione}
 
-@item @ifWebLinks{@manualStableUsageSplitNoName,@rprogramnamed{Top,Usage}}
+@item @ifWebLinks{@manualStableUsageSplitNoName-it,@rprogramnamed{Top,Uso}}
 eseguire i programmi.
-@details{Usage}
+@details{Uso}
 
-@item @ifWebLinks{@manualStableSnippetsSplitNoName,@rlsrnamed{Top,Snippets}}
+@item @ifWebLinks{@manualStableSnippetsSplitNoName,@rlsrnamed{Top,Frammenti}}
 brevi trucchi e consigli.
-@details{Snippets}
+@details{Frammenti}
 
 @end itemize
 
@@ -96,17 +96,17 @@ Domande frequenti (Frequently Asked Questions).
 questo documento.
 @details{Web}
 
-@item @ifWebLinks{@manualStableChangesSplitNoName,@rchangesnamed{Top,Changes}}
+@item @ifWebLinks{@manualStableChangesSplitNoName,@rchangesnamed{Top,Cambiamenti}}
 cosa c'è di nuovo?
-@details{Changes}
+@details{Cambiamenti}
 
-@item @ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Top,Extending}}
+@item @ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Top,Estendere}}
 tweak interessanti.
-@details{Extending}
+@details{Estendere}
 
-@item @ifWebLinks{@manualStableInternalsSplitNoName,@rinternalsnamed{Top,Internals}}
+@item @ifWebLinks{@manualStableInternalsSplitNoName,@rinternalsnamed{Top,Funzionamento interno}}
 guida ai tweak.
-@details{Internals}
+@details{Funzionamento interno}
 
 @end itemize
 
@@ -118,11 +118,16 @@ guida ai tweak.
 
 @itemize
 
+@item
+@ref{Tutti}:
+versioni stabili precedenti e quella attuale in un archivio compresso.
+
 @item @ref{Tradotti}:
 stato delle traduzioni per i lettori di lingua non inglese.
 
-@item @ref{Tutti}:
-manuali vecchi e scaricabili.
+@item
+@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}:
+esempi, consigli e trucchi creati dagli utenti.
 
 @item @ref{Sviluppo}:
 manuali per la versione non stabile.
@@ -145,11 +150,11 @@ License.
 * Saggio::                    Saggio.
 * Notazione::                 Riferimento.
 * Uso::                       Utilizzo.
-* Frammenti di codice::       Frammenti di codice.
+* Frammenti::                 Frammenti di codice.
 * FAQ::                       FAQ.
 * Web::                       Web.
 * Cambiamenti::               Novità.
-* Estensioni::                Programmazione.
+* Estendere::                 Programmazione.
 * Funzionamento interno::     Funzionamento interno.
 * Tradotti::                  Traduzione.
 * Tutti::                     Tutti i manuali.
@@ -183,8 +188,8 @@ e seguire questi riferimenti incrociati per maggiori informazioni.
 
 @divClass{column-right-bottom}
 
-@docLinks{Learning, learning,
-  @rlearningnamed{Top,Learning},
+@docLinks{Apprendimento, learning,
+  @rlearningnamed{Top,Apprendimento},
   @manualStableLearningSplit,
   @manualStableLearningBig, 1.5 MB,
   @manualStableLearningPdf, 3 MB}
@@ -208,8 +213,8 @@ si raccomanda vivamente di consultare il glossario.
 
 @divClass{column-right-bottom}
 
-@docLinks{Music glossary, music-glossary,
-  @rglosnamed{Top,Music glossary},
+@docLinks{Glossario musicale, music-glossary,
+  @rglosnamed{Top,Glossario musicale},
   @manualStableGlossarySplit,
   @manualStableGlossaryBig, 1 MB,
   @manualStableGlossaryPdf, 1.5 MB}
@@ -235,8 +240,8 @@ nella versione PDF a causa della sua maggiore risoluzione.}
 
 @divClass{column-right-bottom}
 
-@docLinks{Essay, essay,
-  @ressaynamed{Top,Essay},
+@docLinks{Saggio, essay,
+  @ressaynamed{Top,Saggio},
   @manualStableEssaySplit,
   @manualStableEssayBig, 2 MB,
   @manualStableEssayPdf, 2.5 MB}
@@ -262,8 +267,8 @@ musicali inglesi presentati nel Glossario.}
 
 @divClass{column-right-bottom}
 
-@docLinks{Notation, notation,
-  @rusernamed{Top,Notation},
+@docLinks{Notazione, notation,
+  @rusernamed{Top,Notazione},
   @manualStableNotationSplit,
   @manualStableNotationBig, 7 MB,
   @manualStableNotationPdf, 18 MB}
@@ -276,7 +281,7 @@ musicali inglesi presentati nel Glossario.}
 @translationof Usage
 
 @divClass{column-left-top}
-@subheading Usage manual
+@subheading Manuale d'uso
 
 Questo libro spiega come eseguire i programmi, come integrare la
 notazione di LilyPond in altri programmi, e suggerisce le @qq{migliori
@@ -287,21 +292,21 @@ intraprendere un progetto impegnativo.
 
 @divClass{column-right-bottom}
 
-@docLinks{Usage, usage,
-  @rprogramnamed{Top,Usage},
+@docLinks{Uso, usage,
+  @rprogramnamed{Top,Uso},
   @manualStableUsageSplit,
-  @manualStableUsageBig, 300 KB,
-  @manualStableUsagePdf, 400 KB}
+  @manualStableUsageBig, 400 KB,
+  @manualStableUsagePdf, 600 KB}
 
 @divEnd
 
 
-@node Frammenti di codice
-@unnumberedsec Frammenti di codice
+@node Frammenti
+@unnumberedsec Frammenti
 @translationof Snippets
 
 @divClass{column-left-top}
-@subheading Frammenti di codice
+@subheading Frammenti
 
 Questo manuale presenta una selezione di frammenti di codice LilyPond tratti dal
 @uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}
@@ -319,8 +324,8 @@ ha un collegamento alla lista dei relativi frammenti di codice.
 
 @divClass{column-right-bottom}
 
-@docLinks{Snippets, snippets,
-  @rlsrnamed{Top,Snippets},
+@docLinks{Frammenti, snippets,
+  @rlsrnamed{Top,Frammenti},
   @manualStableSnippetsSplit,
   @manualStableSnippetsBig, 2.5 MB,
   @manualStableSnippetsPdf, 8 MB}
@@ -343,7 +348,7 @@ Per usare LilyPond devi scrivere musica in formato testo.  Leggi cosa
 
 @subsubheading C'è un sacco di documentazione!  Devo leggerla?
 
-Devi leggere @ref{Learning, il Manuale di Apprendimento}.  Per quanto
+Devi leggere il @ref{Learning, Manuale di Apprendimento}.  Per quanto
 riguarda il resto della documentazione, puoi leggere solo le sezioni
 sul tipo di notazione che vuoi creare.
 
@@ -351,7 +356,7 @@ sul tipo di notazione che vuoi creare.
 @subsubheading C'è ancora molto da leggere!  Ne vale la pena?
 
 Tocca a te decidere; le ragioni per cui potresti voler usare
-LilyPond sono esposte nell' @ref{Introduzione}.
+LilyPond sono esposte nell'@ref{Introduzione}.
 
 @divEnd
 
@@ -360,12 +365,12 @@ LilyPond sono esposte nell' @ref{Introduzione}.
 
 @subsubheading Qualcosa non funziona!  Come posso risolvere?
 
-Questo viene spiegato in @rprogram{Troubleshooting}.
+Questo viene spiegato in @rprogram{Risoluzione dei problemi}.
 
 
 @subsubheading Perché cambiate la sintassi?
 
-Questo viene spiegato in @rprogram{Why does the syntax change?}.
+Questo viene spiegato in @rprogram{Perché la sintassi cambia?}.
 
 @divEnd
 
@@ -419,8 +424,8 @@ funzionalità di LilyPond rispetto alla versione stabile precedente.
 
 @divClass{column-right-bottom}
 
-@docLinks{Changes, changes,
-  @rchangesnamed{Top,Changes},
+@docLinks{Cambiamenti, changes,
+  @rchangesnamed{Top,Cambiamenti},
   @manualStableChangesSplit,
   @manualStableChangesBig, 6 KB,
   @manualStableChangesPdf, 200 KB}
@@ -428,8 +433,8 @@ funzionalità di LilyPond rispetto alla versione stabile precedente.
 @divEnd
 
 
-@node Estensioni
-@unnumberedsec Estensioni
+@node Estendere
+@unnumberedsec Estendere
 @translationof Extending
 
 @divClass{column-left-top}
@@ -442,8 +447,8 @@ funzionalità di LilyPond.
 
 @divClass{column-right-bottom}
 
-@docLinks{Extending, extending,
-  @rextendnamed{Top,Extending},
+@docLinks{Estendere, extending,
+  @rextendnamed{Top,Estendere},
   @manualStableExtendingSplit,
   @manualStableExtendingBig, 200 KB,
   @manualStableExtendingPdf, 400 KB}
@@ -475,8 +480,8 @@ che si riferisce alla documentazione generata.
 
 @divClass{column-right-bottom}
 
-@docLinks{Internals, internals,
-  @rinternalsnamed{Top,Internals},
+@docLinks{Funzionamento interno, internals,
+  @rinternalsnamed{Top,Funzionamento interno},
   @manualStableInternalsSplit,
   @manualStableInternalsBig, 2.5 MB,
   @manualStableInternalsPdf, 2.8 MB}
diff --git a/Documentation/it/web/news-front.itexi b/Documentation/it/web/news-front.itexi
deleted file mode 100644 (file)
index 4f31bd8..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
-@ignore
-    Translation of GIT committish: 61fed596442d47e96c10ac3c9c0c696e5dfd22cf
-
-    When revising a translation, copy the HEAD committish of the
-    version that you are working on.  For details, see the Contributors'
-    Guide, node Updating translation committishes..
-@end ignore
-
-@c This file is part of lilypond-web.texi and community.itexi
-
-@c when you add a new item, consider moving the lowest item(s)
-@c into news-old.itexi.
-
-@c keep two blank lines between news entries
-
-@c used for news about the upcoming release; see CG 10.2
-
-
-@newsItem
-@subsubheading Rilasciato LilyPond 2.13.40!  @emph{21 Novembre 2010}
-
-Siamo felici di annunciare il rilascio di LilyPond 2.13.40.  Questo
-rilascio contiene come sempre un certo numero di correzioni.  Tuttavia rimangono
-ancora alcuni problemi critici: questo rilascio è dunque destinato solo
-agli sviluppatori.
-
-Si noti che questa @strong{non} è la seconda versione beta test.  A causa di
-varie modifiche non verificate al processo di compilazione, non possiamo essere
-del tutto sicuri della qualità di questo rilascio.
-
-@newsEnd
-
-
-@newsItem
-@subsubheading Prima versione beta test della 2.14 -- Rilasciato LilyPond 2.13.39! @emph{15 Novembre 2010}
-
-LilyPond 2.13.39 è disponibile; questa è la prima beta test della prossima
-versione stabile, la 2.14.  Si invitano gli utenti a provare questa
-versione.  Le nuove funzionalità introdotte rispetto alla versione 2.12.3 sono
-elencate nel manuale @qq{Changes} della sezione del sito sullo
-@ref{Sviluppo}.
-
-Ci sono ancora alcuni problemi critici in questo rilascio: la
-spaziatura verticale è sospetta in due casi, e lilypond può
-bloccarsi se l'input è strano.  Se decidi di provare la 2.13.39, non
-stupirti se incontrerai dei problemi, ma inviaci una cortese
-@ref{Segnalazione bug}.
-
-@newsEnd
-
-
-@newsItem
-@subsubheading LilyPond Report #22. @emph{3 Novembre 2010}
-
-Il @emph{LilyPond Report} è tornato, con alcune sorprese ed esaltanti
-notizie per tutta la comunità di LilyPond!  In questo numero troverete
-una lista completa e aggiornata di tutte le mailing list e i forum su
-LilyPond in tutto il mondo.  Inoltre, per la prima volta il nostro ospite
-speciale è il co-fondatore e sviluppatore principale di LilyPond,
-@strong{Jan Nieuwenhuizen}, che è stato impegnato negli ultimi tre mesi --
-continua a leggere per scoprire in cosa!
-
-@uref{http://news.lilynet.net/The-LilyPond-Report-22, Leggi il
-LilyPond Report 22} ora; commenti e contributi sono ben accetti!
-
-@newsEnd
-
-
-
index 0a86faecc98f117d6382ea62502ef4129069b2ad..4350979406e0d6e432cce2bbdbff4bee4b7ce3be 100644 (file)
 
 @appendixsubsec 音符のみ
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion]
 {single-staff-template-with-only-notes.ly}
 
 @appendixsubsec 音符と歌詞
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion]
 {single-staff-template-with-notes-and-lyrics.ly}
 
 @appendixsubsec 音符とコード
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {single-staff-template-with-notes-and-chords.ly}
 
 @appendixsubsec 音符、歌詞それにコード
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {single-staff-template-with-notes,-lyrics,-and-chords.ly}
 
 
 
 @appendixsubsec ソロ ピアノ
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-simple.ly}
 
 @appendixsubsec ピアノと歌詞を持つ旋律
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-melody-and-lyrics.ly}
 
 @appendixsubsec 歌詞が中央に配置されたピアノ譜
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-centered-lyrics.ly}
 
 @appendixsubsec 強弱記号が中央に配置されたピアノ譜
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-centered-dynamics.ly}
 
 
 @appendixsubsec 弦楽四重奏
 @translationof String quartet
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {string-quartet-template-simple.ly}
 
 @appendixsubsec 弦楽四重奏パート
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {string-quartet-template-with-separate-parts.ly}
 
 
 
 @appendixsubsec SATB ボーカル譜
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template.ly}
 
 @appendixsubsec SATB ボーカル譜と自動ピアノ譜
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-automatic-piano-reduction.ly}
 
 @appendixsubsec 整列されたコンテキストを持つ SATB
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly}
 
 @appendixsubsec 4 つの譜に配置された SATB
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {satb-choir-template---four-staves.ly}
 
 @appendixsubsec ソロと 2 パートのリフレイン
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-verse-and-refrain.ly}
 
 @appendixsubsec Hymn tunes
 @c Hymn tunes
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {hymn-template.ly}
 
 @appendixsubsec 賛美歌
 @c Psalms
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {anglican-psalm-template.ly}
 
 
 @translationof Orchestral templates
 
 @appendixsubsec オーケストラ、合唱それにピアノ
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {orchestra,-choir-and-piano-template.ly}
 
 
 
 @appendixsubsec Transcription of mensural music
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {ancient-notation-template----modern-transcription-of-mensural-music.ly}
 
 @appendixsubsec Gregorian transcription template
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {ancient-notation-template----modern-transcription-of-gregorian-music.ly}
 
 
 
 @appendixsubsec Jazz コンボ
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {jazz-combo-template.ly}
 
 
index ca205399f797b2c4de1bd537cb91491f7912fcb2..0b7b0fe09bce92e94fb32e40507d55c481c5ec65 100644 (file)
@@ -737,7 +737,7 @@ LilyPond バージョン @version{} 用
 </div>
 @end html
 @iftex
-@image{ly-examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png}
+@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png}
 @end iftex
 @ifinfo
 @image{lilypond/ly-examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png}
index 4424aa0d41ba0377c03851b5d329b14d95992855..583a54d2a8cf5b3bcd9ca9be5569f7ea1bcb0218 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
 @ignore
-    Translation of GIT committish: 2c3bd5e85d39155e3e6804f9818722bef483056d
+    Translation of GIT committish: 10fbcf1752dc0bec6ad1101c6948a94529128586
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -50,12 +50,12 @@ Copyright @copyright{} 1999--2009 by 著作者一同
 * Specialist notation::          特別な目的でのみ使用される記譜法
 * 入出力全般::              LilyPond 入力についての一般的な情報
 * スペースの問題::          出力の表示
-* Changing defaults::    出力の調整
+* デフォルトを変更する::    出力の調整
 
 付録
 
 * Notation manual tables::      表と図
-* Cheat sheet::     LilyPond 構文についての要約
+* カンニング ペーパー::     LilyPond 構文についての要約
 * LilyPond 文法::          LilyPond 構文解析プログラムのための構文ダイアグラム
 * GNU Free Documentation License:: このドキュメントの使用許諾書
 * LilyPond コマンド インデックス::
@@ -65,7 +65,6 @@ Copyright @copyright{} 1999--2009 by 著作者一同
 @ignore
 @menu
 * 専門的な記譜法::          特別な目的でのみ使用される記譜法
-* デフォルトを変更する::    出力の調整
 
 付録
 
diff --git a/Documentation/ja/notation/changing-defaults.itely b/Documentation/ja/notation/changing-defaults.itely
new file mode 100644 (file)
index 0000000..7bafda8
--- /dev/null
@@ -0,0 +1,4145 @@
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: ja -*-
+
+@ignore
+    Translation of GIT committish: 10fbcf1752dc0bec6ad1101c6948a94529128586
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  For details, see the Contributors'
+    Guide, node Updating translation committishes..
+@end ignore
+
+@c \version "2.14.0"
+
+@c Translators: Yoshiki Sawada
+@c Translation status: post-GDP
+
+@node デフォルトを変更する
+@chapter デフォルトを変更する
+@translationof Changing defaults
+
+LilyPond はデフォルトで最高品質の出力を提供できるよう設計されています。@c
+それにもかかわらず、@c
+デフォルトのレイアウトを変更する必要が発生する場合もあります。@c
+レイアウトは、@q{プロパティ} と呼ばれる多数の @q{つまみとスイッチ} によって@c
+制御されています。@c
+これらのプロパティにアクセスし、変更するための手引は学習マニュアルの中にあります
+-- @rlearning{出力を調整する} を参照してください。@c
+まずはこれを読むべきです。@c
+本章は同様の内容をカバーしていますが、@c
+よりリファレンス マニュアルに適したスタイルで提供します。
+
+@cindex Internals Reference (内部リファレンス)
+
+調整のために利用できる制御の定義についての説明は、@c
+別のドキュメントの中にあります: @rinternalsnamed{Top,内部リファレンス} です。@c
+このマニュアルは利用可能なすべての変数、関数、それにオプションを@c
+リストアップしています。@c
+これは HTML ドキュメントとして記述されていて、@c
+@uref{http://@/lilypond@/.org/@/doc/@/stable/@/Documentation/@/user/@/lilypond@/-internals/,オンライン}
+で入手可能であり、@c
+LilyPond ドキュメント パッケージにも含まれています。
+
+内部的には、LilyPond は Scheme (LISP 派生語) を用いて機能を提供しています。@c
+レイアウトについての決定をオーバライドすることは、@c
+プログラムの内部にアクセスすることであり、@c
+Scheme 入力が必要になります。@c
+Scheme の要素は、@code{.ly} の中で、@c
+ハッシュ記号 @code{#} を付けて記述します。@footnote{@rextend{Scheme tutorial}
+の中に、Scheme 形式で数、リスト、文字列、それに記号を入力するための@c
+簡単な手引きがあります。}
+
+
+@menu
+* コンテキストを理解する::
+* 内部リファレンスの説明::
+* プロパティを変更する::
+* 役に立つコンセプトとプロパティ::
+* 高度な調整::
+* 音楽関数を使用する::
+@end menu
+
+
+@node コンテキストを理解する
+@section コンテキストを理解する
+@translationof Interpretation contexts
+
+このセクションでは、コンテキストとは何なのか、@c
+それをどのように変更するのかについて説明します。
+
+@menu
+* コンテキストの説明::
+* コンテキストを作成する::
+* コンテキストを残しておく::
+* コンテキストのプラグインを変更する::
+* コンテキストのデフォルト設定を変更する::
+* 新しいコンテキストを定義する::
+* コンテキストを揃える::
+@end menu
+
+
+@seealso
+学習マニュアル:
+@rlearning{コンテキストとエングラーバ}
+
+インストール済みファイル:
+@file{ly/@/engraver@/-init@/.ly},
+@file{ly/@/performer@/-init@/.ly}
+
+コード断片集:
+@rlsr{Contexts and engravers}
+
+内部リファレンス:
+@rinternals{Contexts},
+@rinternals{Engravers and Performers}
+
+
+@node コンテキストの説明
+@subsection コンテキストの説明
+@translationof Contexts explained
+
+@ignore
+@c TODO Rethink and rewrite
+
+>> > > - list of contexts: my *danger unmaintainable*
+>> > > alarm just went off.  I'm
+
+I knew it would... And leaving out some of them is perfectly fine
+with me.
+I do think that a list like this, with the main contexts and a
+brief
+description of  what they do (perhaps also with a note about what
+default
+behavior is associated with each of them, but this may be
+unmanageable),
+should be there, and then we could simply list the remaining ones
+without
+further explanation and with links to the IR.
+@end ignore
+
+@c TODO Improve layout, order and consistency of wording -td
+
+@c TODO Add introduction which explains contexts in generality  -td
+
+@c TODO Describe propagation of property values -td
+
+コンテキストは階層的に配置されます:
+
+@menu
+* Score - すべてのコンテキストのマスタ::
+* 上位コンテキスト - 譜コンテナ::
+* 中位コンテキスト - 譜::
+* 下位コンテキスト - ボイス::
+@end menu
+
+@node Score - すべてのコンテキストのマスタ
+@unnumberedsubsubsec Score - すべてのコンテキストのマスタ
+@translationof Score - the master of all contexts
+
+これは最上位の記譜コンテキストです。@c
+他のコンテキストが Score コンテキストを保持することはできません。@c
+デフォルトでは、Score コンテキストが拍子記号の管理を扱い、@c
+音部記号、拍子記号、調号などのアイテムが譜間で揃っていることを保証します。
+
+Score コンテキストは、@code{\score @{@dots{}@}} や @code{\layout @{@dots{}@}}
+ブロックが処理されたときに暗黙的にインスタンス化されます。@c
+@c また、@code{\new Score} コマンドが実行されたときに@c
+@c 明示的にインスタンス化されます。
+
+
+@node 上位コンテキスト - 譜コンテナ
+@unnumberedsubsubsec 上位コンテキスト - 譜コンテナ
+@translationof Top-level contexts - staff containers
+
+@strong{@emph{StaffGroup}}
+
+譜をグループ化して、左端に角括弧を付けます。@c
+このコンテキストに保持されている譜の小節線は垂直につながります。@c
+@code{StaffGroup} は譜のコレクション、@c
+それに左端の角括弧と延長された小節線だけを保持します。
+
+@strong{@emph{ChoirStaff}}
+
+保持されている譜の小節線が垂直につながらないことを除けば、@c
+@code{StaffGroup} と同じです。
+
+@strong{@emph{GrandStaff}}
+
+譜をグループ化して、左端に波括弧を付けます。@c
+このコンテキストに保持されている譜の小節線は垂直につながります。@c
+
+@strong{@emph{PianoStaff}}
+
+@code{GrandStaff} と似ていますが、@c
+各システムの左端に楽器名を付けることができます。
+
+
+@node 中位コンテキスト - 譜
+@unnumberedsubsubsec 中位コンテキスト - 譜
+@translationof Intermediate-level contexts - staves
+
+@strong{@emph{Staff}}
+
+音部記号、小節線、調、臨時記号を扱います。@c
+このコンテキストは @code{Voice} コンテキストを保持することができます。
+
+@strong{@emph{RhythmicStaff}}
+
+@code{Staff} と似ていますが、リズムを表示するためのものです。@c
+ピッチは無視され、音符は線として表示されます。
+
+@strong{@emph{TabStaff}}
+
+タブ譜を生成するためのコンテキストです。@c
+デフォルトでは、音楽表記を 6 線のギター タブ譜として配置します。
+
+@strong{@emph{DrumStaff}}
+
+打楽器の譜刻を扱います。@c
+@code{DrumVoice} を保持することができます。
+
+@strong{@emph{VaticanaStaff}}
+
+@code{Staff} と同じですが、@c
+グレゴリア形式の楽曲を譜刻するためにデザインされている点が異なります。
+
+@strong{@emph{MensuralStaff}}
+
+@code{Staff} と同じでが、@c
+定量形式の楽曲を譜刻するためにデザインされている点が異なります。
+
+@node 下位コンテキスト - ボイス
+@unnumberedsubsubsec 下位コンテキスト - ボイス
+@translationof Bottom-level contexts - voices
+
+Voice レベルのコンテキストはある特定のプロパティを初期化し、@c
+適切なエングラーバを開始させます。@c
+下位コンテキストであるため、他のコンテキストを保持することはできません。
+
+@strong{@emph{Voice}}
+
+譜の上にあるボイスに相当します。@c
+このコンテキストは、強弱記号、符幹、連桁、上付き/下付き文字、タイ、@c
+それに休符の変換を扱います。@c
+1 つの譜に複数のボイスを配置する必要がある場合、@c
+ボイスを明示的にインスタンス化する必要があります。
+
+@strong{@emph{VaticanaVoice}}
+
+@code{Voice} と同じですが、@c
+グレゴリア形式の楽曲を譜刻するためにデザインされている点が異なります。
+
+@strong{@emph{MensuralVoice}}
+
+@code{Voice} と同じですが、@c
+定量形式の楽曲を譜刻するためにデザインされている点が異なります。
+
+@strong{@emph{Lyrics}}
+
+歌詞を保持するボイスに相当します。単一行の歌詞の表示を扱います。
+
+@strong{@emph{DrumVoice}}
+
+打楽器譜で使用されるボイス コンテキストです。
+
+@strong{@emph{FiguredBass}}
+
+このコンテキストの中で、@c
+@code{\figuremode} モードで記述された入力から
+@code{BassFigure} オブジェクトが作成されます。
+
+@strong{@emph{TabVoice}}
+
+@code{TabStaff} コンテキスト内部で使用されるボイス コンテキストです。@c
+通常、暗黙的に作成されます。
+
+@strong{@emph{CueVoice}}
+
+小さなサイズの音符を描画するために使用されるボイス コンテキストです。@c
+主に合図音符を譜に付け加えることを目的としています。@c
+@ref{合図音符をフォーマットする} を参照してください。@c
+通常、暗黙的に作成されます。
+
+@strong{@emph{ChordNames}}
+
+コード ネームを譜刻します。
+
+@ignore
+TODO
+
+Then the following, which I don't know what to do with:
+
+    * GregorianTranscriptionVoice
+    * GregorianTranscriptionStaff
+
+    * FretBoards
+        Engraves fretboards from chords. Not easy... Not
+documented.
+        There is now some documentation on FretBoards in the NR, under
+         instrument-specific notation -- cds.
+
+    * NoteNames
+
+    * Global
+        Hard coded entry point for LilyPond. Cannot be tuned.
+    * Devnull
+        Silently discards all musical information given to this
+context.
+
+@end ignore
+
+@node コンテキストを作成する
+@subsection コンテキストを作成する
+@translationof Creating contexts
+
+@c TODO more complete descriptions rather than learning style
+
+ボイスと譜が 1 つだけの楽譜では、コンテキストは自動的に作成されます。@c
+もっと複雑な楽譜では、手動でコンテキストを作成する必要があります。@c
+コンテキスを作成するために 3 つのコマンドがあります。
+
+@itemize
+
+@item
+もっとも簡単なコマンドは @code{\new} であり、@c
+もっとも素早く入力できるコマンドでもあります。@c
+このコマンドは音楽表記の前に置きます。例えば、以下のように:
+
+@funindex \new
+@cindex new contexts (新しいコンテキスト)
+@cindex Context, creating (コンテキストを作成する)
+
+@example
+\new @var{type} @var{music expression}
+@end example
+
+@noindent
+ここで、@var{type} はコンテキスト名 (@code{Staff} や @code{Voice} など) です。@c
+このコマンドは新しいコンテキストを作成し、@c
+そのコンテキストに付属する @var{音楽表記} の解釈を開始します。
+
+@code{\new} の実際的な使用例には、多くの譜を持つ楽譜があります。@c
+それぞれの譜に配置される各パートの前に @code{\new Staff} を記述します。
+
+@lilypond[quote,verbatim,relative=2,ragged-right,fragment]
+<<
+  \new Staff { c4 c }
+  \new Staff { d4 d }
+>>
+@end lilypond
+
+@code{\new} コマンドは、コンテキストに名前を与えることもできます:
+
+@example
+\new @var{type} = @var{id} @var{music}
+@end example
+
+しかしながら、ユーザが指定したコンテキスト名は、
+そのコンテキスト以前に同じ名前を与えられたコンテキストが無い場合にのみ、@c
+使用できます。
+
+
+@funindex \context
+
+@item
+@code{\new} と同様に、@c
+@code{\context} コマンドも音楽表記をコンテキスト オブジェクトに代入します。@c
+しかしながら、このコマンドはコンテキストに明示的に名前を与えます。@c
+構文は以下の通りです:
+
+@example
+\context @var{type} = @var{id} @var{music}
+@end example
+
+この構文は @var{id} という名前の @var{type} タイプのコンテキストが@c
+すで存在していないか検索します。@c
+コンテキストがまだ存在していなければ、@c
+指定された名前を持つコンテキストが新たに作成されます。@c
+これは、コンテキストを後で参照する場合に有用です。@c
+例えば、以下のように名前を付けられたメロディ:
+
+@example
+\context Voice = "@b{tenor}" @var{music}
+@end example
+
+@noindent
+に、以下のように歌詞を設定すると、テキストは適切に音符に揃えられます:
+
+@example
+\new Lyrics \lyricsto "@b{tenor}" @var{lyrics}
+@end example
+
+@noindent
+
+名前付きコンテキストの他の使用例として、2 つの音楽表記をつなげて
+1 つのコンテキストにすることができます。@c
+以下の例では、アーティキュレーションと音符は別々に入力されています:
+
+@example
+music = @{ c4 c4 @}
+arts = @{ s4-. s4-> @}
+@end example
+
+これらを同じ @code{Voice} コンテキストに送ることによって@c
+組み合わせることができます:
+
+@example
+<<
+  \new Staff \context Voice = "A" \music
+  \context Voice = "A" \arts
+>>
+@end example
+@lilypond[quote,ragged-right]
+music = { c4 c4 }
+arts = { s4-. s4-> }
+\relative c'' <<
+  \new Staff \context Voice = "A" \music
+  \context Voice = "A" \arts
+>>
+@end lilypond
+
+このメカニズムを用いることで、原典版 (オリジナル版) を定義し、@c
+オプションとしてそれに異なるアーティキュレーションを付けることができます。
+
+@cindex creating contexts (コンテキストを作成する)
+
+@item
+コンテキストを作成する 3 つ目のコマンドは以下の通りです:
+
+@example
+\context @var{type} @var{music}
+@end example
+
+@noindent
+これは @code{= @var{id}} を持つ @code{\context} に似ていますが、@c
+タイプ @var{type} のすべてのコンテキストに適用されます
+-- そのコンテキストに与えられた名前とは関係なく適用されます。@c
+
+この構文の変形版は、@c
+異なる階層で解釈される可能性がある音楽表記に対して使用されます。@c
+例えば、@code{\applyOutput} コマンド
+(@rextend{Running a function on all layout objects} を参照してください)
+です。@c
+明示的に @code{\context} を指定しなければ、通常は @code{Voice} に適用されます。
+
+@example
+\applyOutput #'@var{context} #@var{function}   % Voice に適用されます
+@end example
+
+@code{Score} レベルや @code{Staff} レベルで解釈させるには、以下のようにします:
+
+@example
+\applyOutput #'Score #@var{function}
+\applyOutput #'Staff #@var{function}
+@end example
+
+@end itemize
+
+
+@node コンテキストを残しておく
+@subsection コンテキストを残しておく
+@translationof Keeping contexts alive
+
+@cindex contexts, keeping alive (コンテキストを残しておく)
+@cindex contexts, lifetime (コンテキストのライフタイム)
+
+通常、コンテキストは何もすることが無くなった最初の音楽的タイミングで@c
+消滅させられます。@c
+そのため、@code{Voice} コンテキストはすべてのイベントを終えるとすぐに消滅し、@c
+@code{Staff} コンテキストは保持しているすべての @code{Voice} コンテキストの@c
+イベントが終了するとすぐに消滅する、などとなっています。@c
+このことは、早い段階のすでに消滅したコンテキスを参照する必要がある場合に、@c
+障害となります。@c
+例えば、@code{\change} コマンドで譜を変更する場合、@c
+@code{\lyricsto} コマンドで歌詞をボイスに結び付ける場合、@c
+あるいは、早い段階で登場したコンテキストに音楽イベントを追加する場合に@c
+障害となります。
+
+この規則には 1 つ例外があります:
+@code{Staff} コンテキストや @code{<<...>>} 構造の中にある @code{Voice}
+コンテキストのうち 1 つだけは、例え途中ですることが無くなったとしても、@c
+@code{Staff} コンテキストあるいは
+@code{<<...>>} 構造の終わりまで維持されます。@c
+このように維持されるコンテキストは、最初の @code{@{...@}} 構造の中にある@c
+最初のコンテキストであり、@code{<<...>>} 構造の中にあるものは無視されます。
+
+各音楽タイミングで何かすることを持たせることにより、@c
+任意のコンテキストを残しておくことができます。@c
+@code{Staff} コンテキストを残しておくには、それに含まれるボイスの 1 つが@c
+維持されることを保証する必要があります。@c
+ボイスを残しておく方法の 1 つに、ボイスに含まれる実際の音楽と並列に、@c
+空白休符をそのボイスに付け加えるという方法があります。@c
+残しておく必要があるすべての @code{Voice} コンテキストに対して、@c
+空白休符を付け加える必要があります。@c
+ところどころで使用されるボイスがある場合、@c
+前述の例外によって必要なボイスを残そうとするよりは、@c
+それらのボイスすべてを残しておく方が安全です。
+
+以下の例では、空白休符の追加を用いる方法で、@c
+ボイス A とボイス B の両方が楽曲全体を通して維持されます:
+
+@c KEEP LY
+@lilypond[quote,verbatim]
+musicA = \relative c'' { d4 d d d }
+musicB = \relative c'' { g4 g g g }
+keepVoicesAlive = {
+  <<
+    \new Voice = "A" { s1*5 }  % Voice "A" を 5 小節の間、維持する
+    \new Voice = "B" { s1*5 }  % Voice "B" を 5 小節の間、維持する
+  >>
+}
+
+music = {
+  \context Voice = "A" {
+    \voiceOneStyle
+    \musicA
+  }
+  \context Voice = "B" {
+    \voiceTwoStyle
+    \musicB
+  }
+  \context Voice = "A" { \musicA }
+  \context Voice = "B" { \musicB }
+  \context Voice = "A" { \musicA }
+}
+
+\score {
+  \new Staff <<
+    \keepVoicesAlive
+    \music
+  >>
+}
+@end lilypond
+
+@cindex lyrics, aligning with sporadic melody (途切れ途切れのメロディに歌詞を揃える)
+
+以下の例は、空白休符を用いる方法で、@c
+途切れ途切れのメロディに歌詞を持たせる方法を示しています。@c
+もちろん、実際に楽譜を書く場合は、@c
+メロディや伴奏は複数のセクションによって構成されることになります。
+
+@c KEEP LY
+@lilypond[quote,verbatim]
+melody = \relative c'' { a4 a a a }
+accompaniment = \relative c' { d4 d d d }
+words = \lyricmode { These words fol -- low the mel -- o -- dy }
+\score {
+  <<
+    \new Staff = "music" {
+      <<
+        \new Voice = "melody" {
+          \voiceOne
+          s1*4  % Voice "melody" を 4 小節の間、残します
+        }
+        {
+          \new Voice = "accompaniment" {
+            \voiceTwo
+            \accompaniment
+          }
+          <<
+            \context Voice = "melody" { \melody }
+            \context Voice = "accompaniment" { \accompaniment }
+          >>
+          \context Voice = "accompaniment" { \accompaniment }
+          <<
+            \context Voice = "melody" { \melody }
+            \context Voice = "accompaniment" { \accompaniment }
+          >>
+        }
+      >>
+    }
+    \new Lyrics \with { alignAboveContext = #"music" }
+    \lyricsto "melody" { \words }
+  >>
+}
+@end lilypond
+
+これに代わる方法として、メロディに直接空白休符を付け加えて、@c
+メロディが伴奏と揃うようにする方法があります
+-- 多くの場合、こちらの方法の方が良いかもしれません:
+
+@c KEEP LY
+@lilypond[quote,verbatim]
+melody = \relative c'' {
+  s1  % 1 小節スキップします
+  a4 a a a
+  s1  % 1 小節スキップします
+  a4 a a a
+}
+accompaniment = \relative c' {
+  d4 d d d
+  d4 d d d
+  d4 d d d
+  d4 d d d
+}
+words = \lyricmode { These words fol -- low the mel -- o -- dy }
+
+\score {
+  <<
+    \new Staff = "music" {
+      <<
+        \new Voice = "melody" {
+          \voiceOne
+          \melody
+        }
+        \new Voice = "accompaniment" {
+          \voiceTwo
+          \accompaniment
+        }
+      >>
+    }
+    \new Lyrics \with { alignAboveContext = #"music" }
+    \lyricsto "melody" { \words }
+  >>
+}
+@end lilypond
+
+
+@node コンテキストのプラグインを変更する
+@subsection コンテキストのプラグインを変更する
+@translationof Modifying context plug-ins
+
+@c TODO Should this be Modifying engravers or Modifying contexts?
+
+記譜コンテキスト (@code{Score} や @code{Staff} のような) は@c
+プロパティを保存するだけなく、@c
+@q{エングラーバ} と呼ばれる記譜要素を作成するプラグインを保持します。@c
+例えば、@code{Voice} コンテキストは @code{Note_head_engraver} を保持し、@c
+@code{Staff} コンテキストは @code{Key_signature_engraver} を保持します。
+
+各プラグインについての説明は、
+@ifhtml
+@rinternals{Engravers and Performers}.
+@end ifhtml
+@ifnothtml
+Internals Reference @expansion{} Translation @expansion{} Engravers.
+@end ifnothtml
+を参照してください。@c
+@ifhtml
+@rinternals{Contexts}
+@end ifhtml
+@ifnothtml
+Internals Reference @expansion{} Translation @expansion{} Context.
+@end ifnothtml
+の中にある各コンテキストについての説明では、@c
+そのコンテキストで使用されるエングラーバがリストアップされています。
+
+これらのプラグインを入れ換えると有用な場合があります。@c
+プラグインを入れ換えるには、新たに作成するコンテキストを
+@code{\new} あるいは @code{\context} で開始し、@c
+そのコンテキストを以下のように変更します:
+
+@funindex \with
+
+@example
+\new @var{context} \with @{
+  \consists @dots{}
+  \consists @dots{}
+  \remove @dots{}
+  \remove @dots{}
+  @emph{etc.}
+@}
+@{
+  @emph{..music..}
+@}
+@end example
+
+@noindent
+ここで、@dots{} はエングラーバの名前になります。@c
+ここで、@code{Staff} コンテキストから @code{Time_signature_engraver} と
+@code{Clef_engraver} を削除する簡単な例を示します:
+
+@lilypond[quote,relative=1,verbatim,fragment]
+<<
+  \new Staff {
+    f2 g
+  }
+  \new Staff \with {
+     \remove "Time_signature_engraver"
+     \remove "Clef_engraver"
+  } {
+    f2 g2
+  }
+>>
+@end lilypond
+
+2 番目の譜には、拍子記号と音部記号がありません。@c
+この方法は、オブジェクトを不可視にするよりも乱暴な方法です。@c
+なぜなら、譜全体に影響を与えるからです。@c
+さらに、望む望まないに係わらず、この方法はスペースにも影響を与えます。@c
+オブジェクトを消すもっと洗練された方法については、@c
+@rlearning{オブジェクトの可視性と色} を参照してください。
+
+次の例は、ある実用的な応用です。@c
+通常、小節線と拍子記号は楽譜全体で同期されます。@c
+これは @code{Timing_translator} と @code{Default_bar_line_engraver}
+によって行われます。@c
+このプラグインは拍子記号の管理や、小節内の配置の管理などを行います。@c
+これらのエングラーバを @code{Score} コンテキストから
+@code{Staff} コンテキストへ異動させることにより、@c
+楽譜の各譜に独自の拍子記号を持たせることが可能になります。
+
+@cindex polymetric scores (複合拍子楽譜)
+@cindex Time signatures, multiple (複数の拍子記号)
+
+@lilypond[quote,relative=1,ragged-right,verbatim,fragment]
+\new Score \with {
+  \remove "Timing_translator"
+  \remove "Default_bar_line_engraver"
+} <<
+  \new Staff \with {
+    \consists "Timing_translator"
+    \consists "Default_bar_line_engraver"
+  } {
+      \time 3/4
+      c4 c c c c c
+  }
+  \new Staff \with {
+    \consists "Timing_translator"
+    \consists "Default_bar_line_engraver"
+  } {
+       \time 2/4
+       c4 c c c c c
+  }
+>>
+@end lilypond
+
+@knownissues
+
+通常、エングラーバが指定される順序は問題にはなりません。@c
+しかしながら、いくつかの特殊なケースでは、この順序が重要になります。@c
+例えば、あるエングラーバがプロパティを記述して、@c
+それを他のエングラーバが読む場合、あるいは、@c
+あるエングラーバがグラフィカル オブジェクトを作成し、@c
+それを他のエングラーバが処理しなければならない場合です。@c
+エングラーバは指定された順序に従って呼び出され、処理を実行します。
+
+以下の順序は重要です:
+通常、@code{Bar_engraver} を最初に指定し、@c
+@code{New_fingering_engraver} を @code{Script_column_engraver} の前で@c
+指定する必要があります。@c
+他にも指定順序が問題になるケースがあるかもしれません。
+
+
+@node コンテキストのデフォルト設定を変更する
+@subsection コンテキストのデフォルト設定を変更する
+@translationof Changing context default settings
+
+@code{Score}, @code{Staff} それに @code{Voice} コンテキストにおいて@c
+デフォルトで使用されるコンテキスト設定は、以下の例で示すように、@c
+@code{\layout} ブロックの中で指定することができます。@c
+@code{\layout} ブロックは、それを適用する @code{\score} ブロックの中で、かつ、@c
+音楽表記の外側に配置する必要があります。
+
+以下のような方法でコンテキストのデフォルト値を指定する場合、@c
+@code{\set} コマンドとコンテキストを@c
+省略する必要があるということに注意してください:
+
+@lilypond[quote,verbatim]
+\score {
+  \relative c'' {
+    a4^"Really small, thicker stems, no time signature" a a a
+    a a a a
+  }
+  \layout {
+    \context {
+      \Staff
+      fontSize = #-4
+      \override Stem #'thickness = #4.0
+      \remove "Time_signature_engraver"
+    }
+  }
+}
+@end lilypond
+
+上記の例の中で、@code{\Staff} コマンドは、@c
+後に続く記述をその score ブロックの中にあるすべての譜に適用するということを@c
+指定しています。
+
+同様の方法で、@c
+@code{Score} コンテキストや @code{Voice} コンテキストに@c
+変更を適用することができます。
+
+@knownissues
+
+変数に加えられたコンテキストの変更を収集すること、それに、@c
+その変数を参照することでそれらの変更を @code{\context} 定義に@c
+適用することはできません。
+
+@code{\RemoveEmptyStaffContext} はカレントの
+@code{\Staff} 設定を上書きします。@c
+@code{\RemoveEmptyStaffContext} を使用する staff
+のデフォルト設定を変更したいのならば、@c
+@code{\RemoveEmptyStaffContext} を呼び出した後に@c
+変更を加える必要があります。@c
+つまり、以下のようにします:
+
+@example
+\layout @{
+  \context @{
+    \RemoveEmptyStaffContext
+
+    \override Stem #'thickness = #4.0
+  @}
+@}
+@end example
+
+@c TODO: add \with in here.
+
+
+@node 新しいコンテキストを定義する
+@subsection 新しいコンテキストを定義する
+@translationof Defining new contexts
+
+@cindex contexts, defining new (新しいコンテキストを定義する)
+@cindex engravers, including in contexts (エングラーバをコンテキストに含める)
+
+@funindex \alias
+@funindex alias
+@funindex \name
+@funindex name
+@funindex \type
+@funindex type
+@funindex \consists
+@funindex consists
+@funindex \accepts
+@funindex accepts
+@funindex \denies
+@funindex denies
+
+@code{Staff} や @code{Voice} のようなコンテキストは、@c
+簡単なブロックの組み合わせで構成されています。
+エングラーバ プラグインの組み合わせを変えることで、@c
+新しいタイプのコンテキスを作成することができます。
+
+次の例は、ゼロからタイプの異なる @code{Voice} コンテキストを作り上げる方法を@c
+示しています。@c
+このコンテキストは @code{Voice} コンテキストに似ていますが、@c
+音符の代わりにスラッシュを譜の中央に譜刻します。@c
+これはジャズで即興を表すのに使うことができます。
+
+@lilypond[quote,ragged-right]
+\layout { \context {
+  \name ImproVoice
+  \type "Engraver_group"
+  \consists "Note_heads_engraver"
+  \consists "Rhythmic_column_engraver"
+  \consists "Text_engraver"
+  \consists Pitch_squash_engraver
+  squashedPosition = #0
+  \override NoteHead #'style = #'slash
+  \override Stem #'transparent = ##t
+  \alias Voice
+}
+\context { \Staff
+  \accepts "ImproVoice"
+}}
+
+\relative c'' {
+  a4 d8 bes8 \new ImproVoice { c4^"ad lib" c
+   c4 c^"undress" c_"while playing :)" c }
+  a1
+}
+@end lilypond
+
+
+これらの設定は @code{\layout} ブロック内部の @code{\context} ブロック@c
+の中で定義します:
+
+@example
+\layout @{
+  \context @{
+    @dots{}
+  @}
+@}
+@end example
+
+以下では、上記の例の @dots{} に入るべき入力について議論します。
+
+最初に、新しいコンテキストの名前を定義する必要があります:
+
+@example
+\name ImproVoice
+@end example
+
+このコンテキストは @code{Voice} に似せる必要があるため、@c
+(既存の) @code{Voice} と同じ機能を実現するコマンドが必要です。@c
+これは、新しいコンテキストにエイリアス @code{Voice} を与えることで実現できます。
+
+@example
+\alias Voice
+@end example
+
+このコンテキストは音符と指示テキストを譜刻しますので、@c
+それらの機能を提供するエングラーバを付け加える必要があります:
+
+@example
+\consists Note_heads_engraver
+\consists Text_engraver
+@end example
+
+しかしながら、音符の代わりにスラッシュを譜の中央線上に配置します:
+
+@example
+\consists Pitch_squash_engraver
+squashedPosition = #0
+@end example
+
+@rinternals{Pitch_squash_engraver} は
+(@rinternals{Note_heads_engraver} によって作成される) 符頭を変更し、@c
+符頭の垂直位置を @code{squashedPosition} にセットします
+-- 今回は @code{0}、つまり中央線上です。
+
+音符はスラッシュで、符幹を持ちません:
+
+@example
+\override NoteHead #'style = #'slash
+\override Stem #'transparent = ##t
+\override Flag #'transparent = ##t
+@end example
+
+これらのプラグインすべてが共同する必要があり、@c
+それには特殊なプラグインが必要です。@c
+このプラグインは常に @code{Engraver_group} であり、@c
+キーワード @code{\type} を付ける必要があります。
+
+@example
+\type "Engraver_group"
+@end example
+
+まとめると、以下のようになります:
+
+@example
+\context @{
+  \name ImproVoice
+  \type "Engraver_group"
+  \consists "Note_heads_engraver"
+  \consists "Text_engraver"
+  \consists Pitch_squash_engraver
+  squashedPosition = #0
+  \override NoteHead #'style = #'slash
+  \override Stem #'transparent = ##t
+  \override Flag #'transparent = ##t
+  \alias Voice
+@}
+@end example
+
+@funindex \accepts
+コンテキストは階層を構成します。c
+通常の @code{Voice} と同様に、@c
+@code{ImproVoice} を @code{Staff} の下に置く必要があります。@c
+それゆえ、@code{Staff} 定義を @code{\accepts} コマンドで変更します:
+
+@example
+\context @{
+  \Staff
+  \accepts ImproVoice
+@}
+@end example
+
+@funindex \denies
+@code{\accepts} の反対は @code{\denies} です。@c
+これは既存のコンテキスト定義を再利用する場合に必要となります。
+
+以下のように、両方を @code{\layout} ブロックの中に置きます:
+
+@example
+\layout @{
+  \context @{
+    \name ImproVoice
+    @dots{}
+  @}
+  \context @{
+    \Staff
+    \accepts "ImproVoice"
+  @}
+@}
+@end example
+
+それから、このサブセクションの最初にあった出力を入力します:
+
+@example
+\relative c'' @{
+  a4 d8 bes8
+  \new ImproVoice @{
+    c4^"ad lib" c
+    c4 c^"undress"
+    c c_"while playing :)"
+  @}
+  a1
+@}
+@end example
+
+
+@node コンテキストを揃える
+@subsection コンテキストを揃える
+@translationof Aligning contexts
+
+新しいコンテキストを既存のコンテキストの上または下に揃えることができます。@c
+これはボーカル譜 (@rlearning{合唱}) を組む場合やオッシアで役に立ちます。
+
+@c TODO Better example needed.  Ref LM, and expand on it.
+
+@cindex ossia (オッシア)
+@funindex alignAboveContext
+@funindex alignBelowContext
+
+@lilypond[quote,ragged-right]
+ossia = { f4 f f f }
+\score{
+  \relative c' \new Staff = "main" {
+    c4 c c c
+    <<
+      \new Staff \with { alignAboveContext = #"main" } \ossia
+      { d8 f d f d f d f }
+    >>
+  }
+}
+@end lilypond
+
+@cindex nested contexts (ネストされたコンテキスト)
+@cindex contexts, nested (ネストされたコンテキスト)
+
+@funindex \accepts
+@funindex \denies
+
+@code{PianoStaff} のようなコンテキストは、@c
+ネスト (入れ子) 構造をとって、@c
+他のコンテキストを内部に保持することができます。@c
+ネスト構造をとることができるコンテキストは、@c
+コンテキストの @qq{accepts} リストによって定義されています。@c
+このリストには存在しないコンテキストは、楽譜が譜刻されるとき、@c
+(@code{PianoStaff} などの) 親コンテキストの下に配置されます。@c
+例えば、@code{PianoStaff} コンテキストは、デフォルトで、@c
+@code{Staff} と @code{FiguredBass} コンテキストを内部に受け入れるよう@c
+定義されていますが、(例えば) @code{Lyrics} コンテキストは受け入れません。@c
+そのため、以下の例では、歌詞は 2 つの譜の間ではなく、@c
+ピアノ譜の下に配置されています:
+
+@lilypond[verbatim,quote,relative=1]
+\new PianoStaff
+<<
+  \new Staff { e4 d c2 }
+  \addlyrics { Three blind mice }
+  \new Staff {
+    \clef "bass"
+    { c,1 }
+  }
+>>
+@end lilypond
+
+コンテキストの @qq{accepts} リストを変更することで、
+ネストされるコンテキストを追加するができます。@c
+ですから、歌詞を 2 つの譜の間に表示させたいのなら、以下のようにします:
+
+@lilypond[verbatim,quote,relative=1]
+\new PianoStaff \with { \accepts Lyrics }
+<<
+  \new Staff { e4 d c2 }
+  \addlyrics { Three blind mice }
+  \new Staff {
+    \clef "bass"
+    { c,1 }
+  }
+>>
+@end lilypond
+
+@code{\accepts} の反対は @code{\denies} です。@c
+これはコンテキストを @qq{accepts} リストから削除します。
+
+
+@node 内部リファレンスの説明
+@section 内部リファレンスの説明
+@translationof Explaining the Internals Reference
+
+
+@menu
+* 内部リファレンスを使いこなす::
+* レイアウト インターフェイス::
+* グラフィカル オブジェクトを決定する::
+* 命名規約::
+@end menu
+
+@node 内部リファレンスを使いこなす
+@subsection 内部リファレンスを使いこなす
+@translationof Navigating the program reference
+
+@c TODO remove this (it's in the LM)
+@c Replace with more factual directions
+
+以下の譜面の運指記号を移動させたいとします:
+
+@lilypond[quote,relative=2,verbatim]
+c-2
+\stemUp
+f
+@end lilypond
+
+運指指示のドキュメント (@ref{運指の指示}) を見ると、@c
+以下のようなセクションがあることに気付くはずです:
+
+@quotation
+@strong{参照}
+
+内部リファレンス: @rinternals{Fingering}
+
+@end quotation
+
+
+@c  outdated info; probably will delete.
+@ignore
+This fragment points to two parts of the program reference: a page
+on @code{FingeringEvent} and one on @code{Fingering}.
+
+The page on @code{FingeringEvent} describes the properties of the music
+expression for the input @code{-2}.  The page contains many links
+forward.  For example, it says
+
+@quotation
+Accepted by: @rinternals{Fingering_engraver},
+@end quotation
+
+@noindent
+That link brings us to the documentation for the Engraver, the
+plug-in, which says
+
+@quotation
+This engraver creates the following layout objects: @rinternals{Fingering}.
+@end quotation
+
+In other words, once the @code{FingeringEvent}s are interpreted, the
+@code{Fingering_engraver} plug-in will process them.
+@end ignore
+
+@ignore
+@c  I can't figure out what this is supposed to mean.  -gp
+
+The @code{Fingering_engraver} is also listed to create
+@rinternals{Fingering} objects,
+
+@c  old info?  it doesn't make any sense to me with our current docs.
+This is also the
+second bit of information listed under @b{See also} in the Notation
+manual.
+@end ignore
+
+@ifnothtml
+内部リファレンスは HTML ドキュメント形式で入手可能です。@c
+内部リファレンスは、オンラインか HTML ドキュメントをダウンロードするかして、@c
+HTML 形式で読むことを強く推奨します。@c
+PDF マニュアルを使用していると、@c
+このセクションを理解するのはずっと困難になります。@c
+(訳者: 日本語では PDF 形式での提供はありません。)
+@end ifnothtml
+
+@rinternals{Fingering} へのリンクを辿ってください。@c
+ページの先頭に、以下のような記述があります:
+
+@quotation
+Fingering objects are created by: @rinternals{Fingering_engraver} and
+@rinternals{New_fingering_engraver}.
+@end quotation
+
+内部リファレンスの中にある関連リンクを辿っていくことで、@c
+プログラム内部の情報フローを追っていくことができます:
+
+@itemize
+
+@item @rinternals{Fingering}:
+@rinternals{Fingering} objects are created by:
+@rinternals{Fingering_engraver}
+
+(@rinternals{Fingering}:
+@rinternals{Fingering} オブジェクトを作成するのは:
+@rinternals{Fingering_engraver})
+
+
+@item @rinternals{Fingering_engraver}:
+Music types accepted:
+@rinternals{fingering-event}
+
+(@rinternals{Fingering_engraver}:
+受け取る音楽タイプは: @rinternals{fingering-event})
+
+@item @rinternals{fingering-event}:
+Music event type @code{fingering-event} is in
+Music expressions named @rinternals{FingeringEvent}
+
+(@rinternals{fingering-event}:
+音楽イベント タイプ @code{fingering-event} は
+@rinternals{FingeringEvent} という名前の音楽表記の中にあります)
+
+@end itemize
+
+このパスは、プログラム内部での情報フローとは逆向きです:
+出力からスタートして、入力イベントで終わっています。@c
+入力イベントからスタートして、情報フローを読み進め、@c
+最後は出力オブジェクトに辿り着くこともできます。
+
+内部リファレンスを通常のドキュメントのように読むこともできます。@c
+内部リファレンスに含まれる章は、
+@ifhtml
+@rinternals{Music definitions},
+@end ifhtml
+@ifnothtml
+@code{Music definitions},
+@end ifnothtml
+@rinternals{Translation}, それに @rinternals{Backend} です。
+各章は、使用されているすべての定義と調整可能なすべてのプロパティを@c
+リストアップしています。
+
+
+@node レイアウト インターフェイス
+@subsection レイアウト インターフェイス
+@translationof Layout interfaces
+
+@cindex interface, layout (レイアウト インターフェイス)
+@cindex layout interface (レイアウト インターフェイス)
+@cindex grob (グラフィカル オブジェクト)
+
+前のセクションで見た HTML ページには、@c
+@rinternals{Fingering} と呼ばれるレイアウト オブジェクトについての@c
+記述がありました。@c
+そのようなオブジェクトは楽譜で記号となります。@c
+レイアウト オブジェクトは (太さや向きのような) 数値を保持する@c
+プロパティを持っていますが、@c
+関連オブジェクトへのポインタも持っています。@c
+レイアウト オブジェクトは @emph{Grob}
+-- これはグラフィカル オブジェクトを縮めたものです --
+とも呼ばれます。@c
+Grob についての詳細は、@rinternals{grob-interface} を参照してください。
+
+@code{Fingering} のページは、@c
+@code{Fingering} オブジェクトの定義をリストアップしています。@c
+例えば、このページには以下のような記述があります:
+
+@quotation
+@code{padding} (dimension, in staff space):
+
+@code{0.5}
+@end quotation
+
+@noindent
+これは、この数値は少なくとも符頭の 0.5 倍の距離を保つということを意味します。
+
+
+各レイアウト オブジェクトは、記譜要素あるいは写植要素としての機能を@c
+いくつか持つ場合があります。@c
+例えば、@code{Fingering} オブジェクトは以下の側面を持っています:
+
+@itemize
+@item
+Its size is independent of the horizontal spacing, unlike slurs or beams.
+
+(このオブジェクトのサイズは、スラーや連桁と異なり、@c
+水平方向のスペースとは無関係です)
+
+@item
+It is a piece of text.  Granted, it is usually a very short text.
+
+(このオブジェクトはテキストです。通常、これは非常に短いテキストです。)
+
+@item
+That piece of text is typeset with a font, unlike slurs or beams.
+
+(このテキストは、スラーや連桁と異なり、フォントで写植されます。)
+
+@item
+Horizontally, the center of the symbol should be aligned to the
+center of the note head.
+
+(水平方向では、この記号の中心は符頭の中心に揃えられます。)
+
+@item
+Vertically, the symbol is placed next to the note and the staff.
+
+(垂直方向では、この記号は音符や譜の近く配置されます。)
+
+@item
+The vertical position is also coordinated with other superscript
+and subscript symbols.
+
+(また、垂直方向の位置は、他の上付き記号や下付き記号との調整によって決まります。)
+@end itemize
+
+これらの側面はそれぞれ、いわゆる @emph{インターフェイス}
+として捉ええられます。@c
+それらは、@rinternals{Fingering} ページの最下部でリストアップされています。
+
+@quotation
+This object supports the following interfaces:
+
+(このオブジェクトは以下のインターフェイスをサポートします:)
+
+@rinternals{item-interface},
+@rinternals{self-alignment-interface},
+@rinternals{side-position-interface}, @rinternals{text-interface},
+@rinternals{text-script-interface}, @rinternals{font-interface},
+@rinternals{finger-interface}, and @rinternals{grob-interface}.
+@end quotation
+
+リンクのいずれかをクリックすると、@c
+それぞれのオブジェクト インターフェイスのページに行くことができます。@c
+各インターフェイスはいくつかのプロパティを持ちます。@c
+それらプロパティの中には、ユーザにとって役に立たないもの
+(@q{内部プロパティ}) もありますが、それ以外は変更可能です。
+
+これまで @code{Fingering} オブジェクトについて話してきましたが、@c
+これは実際にはそれほど多くのことをしているわけではありません。@c
+初期化ファイル (@rlearning{その他の情報源} を参照してください)
+@file{scm/define-grobs.scm} がこの @q{オブジェクト} の本質を示しています:
+
+@example
+(Fingering
+  . ((padding . 0.5)
+     (avoid-slur . around)
+     (slur-padding . 0.2)
+     (staff-padding . 0.5)
+     (self-alignment-X . 0)
+     (self-alignment-Y . 0)
+     (script-priority . 100)
+     (stencil . ,ly:text-interface::print)
+     (direction . ,ly:script-interface::calc-direction)
+     (font-encoding . fetaText)
+     (font-size . -5)          ; don't overlap when next to heads.
+     (meta . ((class . Item)
+     (interfaces . (finger-interface
+                    font-interface
+                    text-script-interface
+                    text-interface
+                    side-position-interface
+                    self-alignment-interface
+                    item-interface))))))
+@end example
+
+@noindent
+見て取ることができるように、@c
+@code{Fingering} オブジェクトは変数設定の塊に過ぎず、@c
+内部リファレンスの中にある Web ページは、@c
+この定義から直接生成されたに過ぎません。
+
+
+@node グラフィカル オブジェクトを決定する
+@subsection グラフィカル オブジェクトを決定する
+@translationof Determining the grob property
+
+@c TODO remove this (it's in the LM)
+@c Replace with more factual directions
+
+以下の @b{2} の位置を変更しようとしていたことを思い出してください:
+
+@lilypond[quote,fragment,relative=2,verbatim]
+c-2
+\stemUp
+f
+@end lilypond
+
+垂直方向で見て、@b{2} は元の音符の隣に配置されるのですから、@c
+この配置に関連するインターフェイスに干渉する必要があります。@c
+これは @code{side-position-interface} を用いて行います。@c
+このインターフェイスについてのページには、以下のように記述されています:
+
+@quotation
+@code{side-position-interface}
+
+Position a victim object (this one) next to other objects (the
+support).  The property @code{direction} signifies where to put the
+victim object relative to the support (left or right, up or down?)
+
+(対象オブジェクトを他のオブジェクト (サポート オブジェクト)
+の隣に配置します。@c
+このプロパティ @code{direction} は、@c
+対象オブジェクトをどこに配置するかを@c
+サポート オブジェクトからの相対位置で示します
+(左あるいは右、上あるいは下?))
+@end quotation
+
+@cindex padding
+@noindent
+この記述の下に、以下のような変数 @code{padding} についての記述があります:
+
+@quotation
+@table @code
+@item padding
+(dimension, in staff space)
+(譜スペースを単位とする距離)
+
+Add this much extra space between objects that are next to each other.
+(隣り合うオブジェクトの間にスペースを付け加えます)
+@end table
+@end quotation
+
+@code{padding} の値を増やすことで、@c
+運指記号を符頭から離すことができます。@c
+以下のコマンドは、音符と運指記号の間に 3 譜スペースを挿入します:
+
+@example
+\once \override Voice.Fingering #'padding = #3
+@end example
+
+このコマンドを @code{Fingering} オブジェクトが作成される前に挿入する
+-- つまり @code{c2} の前に挿入する -- と、以下のような結果が得られます:
+
+@lilypond[quote,relative=2,fragment,verbatim]
+\once \override Voice.Fingering #'padding = #3
+c-2
+\stemUp
+f
+@end lilypond
+
+
+このケースでは、調整されるコンテキストは @code{Voice} です。@c
+このことは、内部リファレンスの @rinternals{Fingering_engraver}
+プラグインについてのページからわかります。@c
+このページには、以下のような記述があります:
+
+@quotation
+Fingering_engraver is part of contexts: @dots{} @rinternals{Voice}
+(Fingering_engraver は次のコンテキストの一部です: @dots{} @rinternals{Voice})
+@end quotation
+
+
+@node 命名規約
+@subsection 命名規約
+@translationof Naming conventions
+
+内部リファレンスについて他に説明しておくべき事柄として、@c
+さまざまな命名規約についての概要があります:
+
+@itemize
+@item Scheme スタイル: 小文字の単語をハイフンでつなぎます
+(1 単語の名前を含みます) -- 例: lowercase-with-hyphens
+@item Scheme 関数: Scheme スタイルの先頭に @code{ly:} を付けます
+-- 例: ly:plus-scheme-style
+@item 音楽イベント、音楽クラス、それに音楽プロパティ: Scheme スタイルです
+-- 例: as-scheme-functions
+@item グラフィカル オブジェクト インターフェイス: Scheme スタイルです
+-- 例: scheme-style
+@c 未訳
+@item バックエンド プロパティ: Scheme スタイルです (が、X と Y があります!)
+@item コンテキスト (それに、音楽表記とグラフィカル オブジェクト):
+大文字で始まる単語、あるいはそれらをつなげます
+-- 例: Capitalized, CamelCase
+@item コンテキスト プロパティ:
+小文字で始まる単語に、大文字で始まる単語をつなげます
+-- 例: lowercaseFollowedByCamelCase
+@item エングラーバ:
+大文字で始まる単語に、小文字で始まる単語をアンダスコアでつなげます
+-- 例: Capitalized_followed_by_lowercase_and_with_underscores
+@end itemize
+
+疑問:
+@itemize
+@item 命名規約のうち、慣習なのはどれで、規則なのはどれか?
+@item 命名規約のうち、どれが基本言語の規則で、@c
+どれが LP (訳者: LilyPond?) 特有の規則なのか?
+@end itemize
+
+
+@node プロパティを変更する
+@section プロパティを変更する
+@translationof Modifying properties
+
+@c TODO change the menu and subsection node names to use
+@c backslash once the new macro to handle the refs
+@c is available.  Need to find and change all refs at
+@c the same time. -td
+
+@menu
+* プロパティ変更の概要::
+* set コマンド::
+* override コマンド::
+* tweak コマンド::
+* set 対 override::
+* 連想配列を変更する::
+@end menu
+
+
+@node プロパティ変更の概要
+@subsection プロパティ変更の概要
+@translationof Overview of modifying properties
+
+各コンテキストは、ある特定のタイプのグラフィカル オブジェクトを作成することに@c
+ついて責任を持ちます。@c
+それらのオブジェクトを表示するために使用される設定も、@c
+コンテキストによって保存されます。@c
+それらの設定を変更することにより、オブジェクトの見た目を変えることができます。
+
+コンテキストに保存されるプロパティには 2 種類あります:
+コンテキスト プロパティとグラフィカル オブジェクト プロパティです。@c
+コンテキスト プロパティは、コンテキスト全体に適用され、@c
+コンテキスト自体をどのように表示するかを制御します。@c
+対照的に、グラフィカル オブジェクト プロパティは、コンテキストの中に表示される@c
+ある特定のタイプのグラフィカル オブジェクトに適用されます。
+
+@code{\set} コマンドと @code{\unset} コマンドは、@c
+コンテキスト プロパティの値を変更するために使用されます。@c
+@code{\override} コマンドと @code{\revert} コマンドは、@c
+グラフィカル オブジェクト プロパティの値を変更するために使用されます。
+
+@ignore
+The syntax for this is
+
+@example
+\override @var{context}.@var{name} #'@var{property} = #@var{value}
+@end example
+
+Here @var{name} is the name of a graphical object, like
+@code{Stem} or @code{NoteHead}, and @var{property} is an internal
+variable of the formatting system (@q{grob property} or @q{layout
+property}).  The latter is a symbol, so it must be quoted.  The
+subsection @ref{Modifying properties}, explains what to fill in
+for @var{name}, @var{property}, and @var{value}.  Here we only
+discuss the functionality of this command.
+
+The command
+
+@verbatim
+\override Staff.Stem #'thickness = #4.0
+@end verbatim
+
+@noindent
+makes stems thicker (the default is 1.3, with staff line thickness as a
+unit).  Since the command specifies @code{Staff} as context, it only
+applies to the current staff.  Other staves will keep their normal
+appearance.  Here we see the command in action:
+
+@lilypond[quote,verbatim,relative=2,fragment]
+c4
+\override Staff.Stem #'thickness = #4.0
+c4
+c4
+c4
+@end lilypond
+
+The @code{\override} command changes the definition of the @code{Stem}
+within the current @code{Staff}.  After the command is interpreted
+all stems are thickened.
+
+Analogous to @code{\set}, the @var{context} argument may be left out,
+causing the default context @code{Voice} to be used.  Adding
+@code{\once} applies the change during one timestep only.
+
+@lilypond[quote,fragment,verbatim,relative=2]
+c4
+\once \override Stem #'thickness = #4.0
+c4
+c4
+@end lilypond
+
+The @code{\override} must be done before the object is
+started.  Therefore, when altering @emph{Spanner} objects such as slurs
+or beams, the @code{\override} command must be executed at the moment
+when the object is created.  In this example,
+
+@lilypond[quote,fragment,verbatim,relative=2]
+\override Slur #'thickness = #3.0
+c8[( c
+\override Beam #'thickness = #0.6
+c8 c])
+@end lilypond
+
+@noindent
+the slur is fatter but the beam is not.  This is because the command for
+@code{Beam} comes after the Beam is started, so it has no effect.
+
+Analogous to @code{\unset}, the @code{\revert} command for a context
+undoes an @code{\override} command; like with @code{\unset}, it only
+affects settings that were made in the same context.  In other words, the
+@code{\revert} in the next example does not do anything.
+
+@example
+\override Voice.Stem #'thickness = #4.0
+\revert Staff.Stem #'thickness
+@end example
+
+Some tweakable options are called @q{subproperties} and reside inside
+properties.  To tweak those, use commands of the form
+
+@c leave this as a long long
+@example
+\override @var{context}.@var{name} #'@var{property} #'@var{subproperty} = #@var{value}
+@end example
+
+@noindent
+such as
+
+@example
+\override Stem #'(details beamed-lengths) = #'(4 4 3)
+@end example
+
+@end ignore
+
+@seealso
+内部リファレンス:
+@rinternals{Backend},
+@rinternals{All layout objects},
+@rinternals{OverrideProperty},
+@rinternals{RevertProperty},
+@rinternals{PropertySet}
+
+
+@knownissues
+
+バックエンドはオブジェクト プロパティのタイプ チェックを@c
+それほど厳密には行いません。@c
+Scheme 値の循環参照は、ハング アップまたはクラッシュ、@c
+あるいは両方を引き起こす可能性があります。
+
+
+
+@node set コマンド
+@subsection @code{\set} コマンド
+@translationof The set command
+
+@cindex properties (プロパティ)
+@funindex \set
+@cindex changing properties (プロパティを変更する)
+
+各コンテキストは @emph{プロパティ} の集合を持ちます。@c
+プロパティとは、コンテキストの中に保持されている変数です。@c
+コンテキスト プロパティは、@code{\set} コマンドによって変更されます。@c
+@code{\set} コマンドは以下のような構文を持ちます:
+
+@example
+\set @var{context}.@var{property} = #@var{value}
+@end example
+
+@var{value} は Scheme オブジェクトですので、@c
+@code{#} 文字を前に置く必要があります。
+
+通常、コンテキスト プロパティの名前は、@c
+小文字で始まる単語に大文字で始まる単語をつなげたものです。@c
+これらはたいてい音楽から記譜への翻訳を制御します
+-- 例えば、@code{localKeySignature} (臨時記号を表示するかどうかを決定します)
+や、@code{measurePosition} (小節線を表示するタイミングを決定します) です。@c
+コンテキスト プロパティは、楽曲の解釈をしている間、@c
+ずっと値を変更しておくことができます。@c
+@code{measurePosition} がその良い例です。@c
+コンテキスト プロパティは @code{\set} で変更されます。
+
+例えば、コンテキスト プロパティ @code{skipBars} が
+@code{#t} にセットされていれば、@c
+複小節休符は 1 つの小節に統合されます:
+
+@lilypond[quote,verbatim,relative=2,fragment]
+R1*2
+\set Score.skipBars = ##t
+R1*2
+@end lilypond
+
+@var{context} 引数が省略されている場合、@c
+プロパティはカレントの最下位のコンテキストにセットされます
+(一般に、@code{ChordNames}, @code{Voice}, @code{TabVoice},
+あるいは @code{Lyrics} です)。
+
+@lilypond[quote,verbatim,relative=2]
+\set Score.autoBeaming = ##f
+<<
+  {
+    e8 e e e
+    \set autoBeaming = ##t
+    e8 e e e
+  } \\ {
+    c8 c c c c8 c c c
+  }
+>>
+@end lilypond
+
+変更は @q{オンザフライ} (その場、その時々) で適用されるため、@c
+設定 @code{\set autoBeaming = ##t} は 2 番目の 8 分音符グループだけに@c
+効果を持ちます。
+
+最下位コンテキストが常に変更しようとしているプロパティを持っているとは@c
+限らないということに注意してください
+-- 例えば、@code{skipBars} プロパティをデフォルトの最下位コンテキスト
+(この場合は、@code{Voice} です) にセットしようと試みても、効果はありません。@c
+なぜなら、@code{skipBars} は @code{Score} コンテキストのプロパティだからです。
+
+@lilypond[quote,verbatim,relative=2]
+R1*2
+\set skipBars = ##t
+R1*2
+@end lilypond
+
+コンテキストは階層構造をとるため、音楽表記を囲っているコンテキスト
+-- 例えば、@code{Staff} -- が指定された場合、@c
+変更はカレントの @code{Staff} の中にあるすべての @code{Voice} に適用されます。
+
+@funindex \unset
+
+@code{\unset} コマンド:
+
+@example
+\unset @var{context}.@var{property}
+@end example
+
+@noindent
+は、@var{context} から @var{property} の定義を削除するために使用されます。@c
+このコマンドは、@var{context} の中にセットされた場合にのみ、定義を削除します。@c
+音楽表記を囲っているコンテキストにセットされたプロパティは、@c
+囲まれているコンテキストの中にある @code{\unset} では変更されません:
+
+@lilypond[quote,verbatim,relative=2]
+\set Score.autoBeaming = ##t
+<<
+  {
+    \unset autoBeaming
+    e8 e e e
+    \unset Score.autoBeaming
+    e8 e e e
+  } \\ {
+    c8 c c c c8 c c c
+  }
+>>
+@end lilypond
+
+@code{\set} と同様に、
+最下位コンテキストに対しては @var{context} 引数を指定する必要はありません。@c
+ですから、以下の 2 つの記述:
+
+@example
+\set Voice.autoBeaming = ##t
+\set autoBeaming = ##t
+@end example
+
+@noindent
+は、カレントの最下位コンテキストが @code{Voice} であれば、等価です。
+
+
+@cindex \once
+@code{\set} の前に @code{\once} を置くと、@c
+その設定は単一の時間ステップにだけ適用されます:
+
+@lilypond[quote,verbatim,relative=2]
+c4
+\once \set fontSize = #4.7
+c4
+c4
+@end lilypond
+
+利用可能なすべてのコンテキスト プロパティについての完全な記述は、@c
+内部リファレンスにあります。@c
+以下を参照してください:
+@ifhtml
+@rinternals{Tunable context properties}.
+@end ifhtml
+@ifnothtml
+Translation @expansion{} Tunable context properties.
+@end ifnothtml
+
+@seealso
+
+内部リファレンス:
+
+@rinternals{Tunable context properties}
+
+
+@cindex grob properties (グラフィカル オブジェクト プロパティ)
+@cindex properties, grob (グラフィカル オブジェクト プロパティ)
+@funindex \override
+
+
+@node override コマンド
+@subsection @code{\override} コマンド
+@translationof The override command
+
+特殊なタイプのコンテキスト プロパティがあります:
+グラフィカル オブジェクト記述です。@c
+グラフィカル オブジェクト記述には @code{StudlyCaps} という名前
+(大文字で始まります) が付けられています。@c
+これらは、関連リストとして、ある特定の種類のグラフィカル オブジェクト用の
+@q{デフォルト設定} を保持します。@c
+各グラフィカル オブジェクト記述の設定を調べるには、@c
+@file{scm/define-grobs.scm} を参照してください。@c
+各グラフィカル オブジェクト記述は @code{\override} を用いて変更します。
+
+@code{\override} は、実際のところ、簡略化した記述です。
+
+@example
+\override @var{context}.@var{GrobName} #'@var{property} = #@var{value}
+@end example
+
+@noindent
+これは、以下と等価です:
+
+@c  leave this long line -gp
+@example
+\set @var{context}.@var{GrobName}  =
+  #(cons (cons '@var{property} @var{value})
+         <previous value of @var{context}.@var{GrobName}>)
+@end example
+
+@code{context}.@code{GrobName} (alist) の値は、@c
+個々のグラフィカル オブジェクトのプロパティを初期化するために使用されます。@c
+グラフィカル オブジェクトは、Scheme スタイルの名前
+(小文字の単語を @code{-} でつないだもの) のプロパティを持ちます。@c
+グラフィカル オブジェクト プロパティの値は、@c
+フォーマット処理の間ずっと変更されています:
+基本的に、フォーマット処理は、@c
+コールバック関数を用いてプロパティを計算することに他なりません。@c
+
+例えば、@code{Stem} オブジェクトの @code{thickness} プロパティを@c
+オーバライドすることによって、符幹の太さを太くすることができます:
+
+@lilypond[quote,verbatim,relative=2]
+c4 c
+\override Voice.Stem #'thickness = #3.0
+c4 c
+@end lilypond
+
+If no context is specified in an @code{\override}, the bottom
+context is used:
+
+@lilypond[quote,verbatim,relative=2]
+{ \override Staff.Stem #'thickness = #3.0
+  <<
+    {
+      e4 e
+      \override Stem #'thickness = #0.5
+      e4 e
+    } \\ {
+      c4 c c c
+    }
+  >>
+}
+@end lilypond
+
+@funindex \revert
+@cindex reverting overrides (オーバライドを元に戻す)
+@cindex overrides, reverting (オーバライドを元に戻す)
+
+@code{\override} の効果は、@code{\revert} によって元に戻すことができます:
+
+@lilypond[quote,verbatim,relative=2]
+c4
+\override Voice.Stem #'thickness = #3.0
+c4 c
+\revert Voice.Stem #'thickness
+c4
+@end lilypond
+
+@code{\override} と @code{\revert} の効果は、@c
+その時点から影響を受けるコンテキストの中にある@c
+すべてのグラフィカル オブジェクトに適用されます:
+
+@lilypond[quote,verbatim,relative=2]
+{
+  <<
+    {
+      e4
+      \override Staff.Stem #'thickness = #3.0
+      e4 e e
+    } \\ {
+      c4 c c
+      \revert Staff.Stem #'thickness
+      c4
+    }
+  >>
+}
+@end lilypond
+
+@funindex \once
+@cindex overriding for only one moment (一時的にオーバライドする)
+
+@code{\once} を @code{\override} と共に用いることで、@c
+カレントの時間ステップだけに効果を与えることができます:
+
+@lilypond[quote,verbatim,relative=2]
+{
+  <<
+    {
+      \override Stem #'thickness = #3.0
+      e4 e e e
+    } \\ {
+      c4
+      \once \override Stem #'thickness = #3.0
+      c4 c c
+    }
+  >>
+}
+@end lilypond
+
+
+@ignore
+Commands which change output generally look like
+
+@example
+\override Voice.Stem #'thickness = #3.0
+@end example
+
+@noindent
+To construct this tweak we must determine these bits of information:
+
+@itemize
+@item the context: here @code{Voice}.
+@item the layout object: here @code{Stem}.
+@item the layout property: here @code{thickness}.
+@item a sensible value: here @code{3.0}.
+@end itemize
+
+Some tweakable options are called @q{subproperties} and reside inside
+properties.  To tweak those, use commands in the form
+
+@example
+\override Stem #'(details beamed-lengths) = #'(4 4 3)
+@end example
+
+@cindex internal documentation
+@cindex finding graphical objects
+@cindex graphical object descriptions
+@cindex tweaking
+@funindex \override
+@cindex internal documentation
+
+For many properties, regardless of the data type of the property, setting the
+property to false ( @code{##f} ) will result in turning it off, causing
+LilyPond to ignore that property entirely.  This is particularly useful for
+turning off grob properties which may otherwise be causing problems.
+
+We demonstrate how to glean this information from the notation manual
+and the program reference.
+@end ignore
+
+@seealso
+
+内部リファレンス:
+@rinternals{Backend}
+
+
+@node tweak コマンド
+@subsection @code{\tweak} コマンド
+@translationof The tweak command
+
+@funindex \tweak
+@cindex tweaking (調整)
+
+@code{\tweak} を用いたグラフィカル オブジェクト プロパティの変更は、@c
+コンテキストの中にあるすべてのグラフィカル オブジェクトに適用されます。@c
+しかしながら、@c
+影響を受けるコンテキストの中にあるすべてのグラフィカル オブジェクトではなく、@c
+1 つのグラフィカル オブジェクトだけに変更を適用したい場合もあります。@c
+そうするには、@code{\tweak} コマンドを用います。@c
+@code{\tweak} コマンドは以下のような構文を持ちます:
+
+@example
+\tweak #'@code{grob-property} #@code{value}
+@end example
+
+@code{\tweak} コマンドは、音楽の流れの中で
+@code{value} のすぐ後に現れるオブジェクトに変更を適用します。
+
+@ignore
+In some cases, it is possible to take a short-cut for tuning
+graphical objects.  For objects that are created directly from
+an item in the input file, you can use the @code{\tweak} command.
+For example:
+
+@lilypond[relative=2,verbatim,quote]
+< c
+  \tweak #'color #red
+  d
+  g
+  \tweak #'duration-log #1
+  a
+> 4
+-\tweak #'padding #8
+-^
+@end lilypond
+
+
+
+But the main use of the @code{\tweak} command is to modify just
+one of a number of notation elements which start at the same musical
+moment, like the notes of a chord, or tuplet brackets which start
+at the same time.
+
+The @code{\tweak} command sets a property in the following object
+directly, without requiring the grob name or context to be
+specified.  For this to work, it is necessary for the @code{\tweak}
+command to remain immediately adjacent to the object to which it is
+to apply after the input file has been converted to a music stream.
+This is often not the case, as many additional elements are inserted
+into the music stream implicitly.  For example, when a note which is
+not part of a chord is processed, LilyPond implicitly inserts a
+@code{ChordEvent} event before the note, so separating the tweak
+from the note.  However, if chord symbols are placed round the
+tweak and the note, the @code{\tweak} command comes after the
+@code{ChordEvent} in the music stream, so remaining adjacent to the
+note, and able to modify it.
+
+So, this works:
+
+@lilypond[relative=2,verbatim,quote]
+<\tweak #'color #red c>4
+@end lilypond
+
+@noindent
+but this does not:
+
+@lilypond[relative=2,verbatim,quote]
+\tweak #'color #red c4
+@end lilypond
+
+@end ignore
+
+調整コマンドの構文と使用方法についての紹介は、@c
+@rlearning{調整手段} を参照してください。
+
+同じようなオブジェクトがいくつか、同じ音楽タイミングで配置されている場合、@c
+@code{\override} コマンドでそれらの 1 つだけを変更することはできません
+-- @code{\tweak} コマンドを用いる必要があります。@c
+同じ音楽タイミングで複数出現する可能性があるオブジェクトには、@c
+以下のようなものがあります:
+
+@c TODO expand to include any further uses of \tweak
+@itemize
+@item 和音の中にある音符の符頭
+@item 1 つの音符に付けられるアーティキュレーション記号
+@item 和音の中にある音符の間に付けられるタイ
+@item 同時に始まる連符の囲み
+@end itemize
+
+@c TODO add examples of these
+
+@cindex chord, modifying one note in (和音の中にある音符の 1 つを変更する)
+
+以下の例では、和音の中にある符頭の 1 つの色を変更し、@c
+さらに他の符頭のタイプを変更しています:
+
+@lilypond[relative=2,verbatim,quote]
+< c
+  \tweak #'color #red
+  d
+  g
+  \tweak #'duration-log #1
+  a
+> 4
+@end lilypond
+
+@code{\tweak} を用いて、スラーを変更することができます:
+
+@lilypond[verbatim,quote,relative=1]
+c-\tweak #'thickness #5 ( d e f)
+@end lilypond
+
+
+@code{\tweak} コマンドが機能するためには、@c
+入力ファイルが音楽の流れに変換されたときに、@c
+@code{\tweak} コマンドのすぐ後に@c
+変更が適用されるオブジェクトが配置されている必要があります。
+LilyPond は、構文解釈処理時に、@c
+追加のオブジェクトを音楽の流れの中に挿入する場合があります。@c
+例えば、明示的には和音の一部になっていない音符を、@c
+LilyPond が音符の中に配置する場合があります。@c
+そのため、@code{\tweak} で変更される音符は、@c
+和音構造の中に配置されている必要があります:
+
+@lilypond[relative=2,verbatim,quote]
+\tweak #'color #red c4
+<\tweak #'color #red c>4
+@end lilypond
+
+@code{\tweak} コマンドは、@c
+入力ファイルの中で明示的に記述されていないオブジェクトを@c
+変更するために用いることはできません。@c
+特に、符幹、連桁、あるいは臨時記号を直接変更することはできません。@c
+なぜなら、それらは入力の中にある音楽要素の後ではなく、@c
+符頭の後に生成されるからです。@c
+さらに、音部記号や拍子記号を変更することもできません。@c
+なぜなら、コンテキストを指定するために必要とされる追加要素の自動挿入により、@c
+それらは前に配置された @code{\tweak} コマンドとは分離されるからです。@c
+
+記譜要素の前に複数の @code{\tweak} コマンドを配置することができます
+-- それらはすべて効果を持ちます:
+
+@lilypond[verbatim,quote,relative=1]
+c
+-\tweak #'style #'dashed-line
+-\tweak #'dash-fraction #0.2
+-\tweak #'thickness #3
+-\tweak #'color #red
+ \glissando
+f'
+@end lilypond
+
+入力ファイルのあるセクションから生成される音楽の流れ
+-- 自動的に挿入される要素も含めて --
+が、検証されます。@c
+@rextend{Displaying music expressions} を参照してください。@c
+これは、@code{\tweak} コマンドによって変更されるオブジェクトを決定するとき、@c
+あるいは、@c
+@code{\tweak} の適用で入力を調整する方法を決定するときに役に立つかもしれません。
+
+
+@seealso
+学習マニュアル:
+@rlearning{調整手段}
+
+拡張:
+@rextend{Displaying music expressions}
+
+
+@knownissues
+
+@cindex tweaks in a variable (変数の中での調整)
+@code{\tweak} コマンドを変数の中で用いることはできません。
+
+@cindex tweaks in lyrics (歌詞の中での調整)
+@code{\tweak} コマンドを @code{\lyricmode} の中で用いることはできません。
+
+@cindex tweaking control points (制御ポイントを調整する)
+@cindex control points, tweaking (制御ポイントを調整する)
+
+@code{\tweak} コマンドは、和音の中で生成される複数のタイのうち、@c
+最初のタイだけに適用されます。
+
+
+@node set 対 override
+@subsection @code{\set} 対 @code{\override}
+@translationof set versus override
+
+TODO -- This section is probably unnecessary now.
+
+@ignore
+We have seen two methods of changing properties: @code{\set} and
+@code{\override}.  There are actually two different kinds of
+properties.
+
+@code{fontSize} is a special property: it is equivalent to
+entering @code{\override ... #'font-size} for all pertinent
+objects.  Since this is a common change, the special
+property (modified with @code{\set}) was created.
+
+@end ignore
+
+
+@node 連想配列を変更する
+@subsection 連想配列を変更する
+@translationof Modifying alists
+
+ユーザが変更可能なプロパティの中には、@c
+内部的には @emph{連想配列} として存在しているものがあります
+-- 連想配列は @emph{キー} と @emph{値} のペアの配列を保持します。@c
+連想配列の構造は下記のとおりです:
+
+@example
+'((@var{キー1} . @var{値1})
+  (@var{キー2} . @var{値2})
+  (@var{キー3} . @var{値3})
+  @dots{})
+@end example
+
+ある連想配列がグラフィカル オブジェクト プロパティまたは
+@code{\paper} 変数である場合、@c
+その連想配列の個々のキーを、他のキーに影響を与えることなく、@c
+変更することができます。
+
+例えば、譜グループの中にある隣り合う譜間のスペースを減らすには、@c
+@code{StaffGrouper} グラフィカル オブジェクトの
+@code{staff-staff-spacing} プロパティを使用します。@c
+このプロパティは 4 つのキー
+-- @code{basic-distance}, @code{minimum-distance},
+@code{padding}, それに @code{stretchability} --
+を持つ連想配列です。@c
+このプロパティの標準設定は、@c
+内部リファレンスの @qq{Backend} セクションでリストアップされています
+(@rinternals{StaffGrouper} を参照してください):
+
+@example
+'((basic-distance . 9)
+  (minimum-distance . 7)
+  (padding . 1)
+  (stretchability . 5))
+@end example
+
+譜間のスペースを小さくする方法の 1 つは、@c
+@code{basic-distance} キーの値 (@code{9}) を
+@code{minimum-distance} キーの値 (@code{7}) 近くまで減らすことです。@c
+個々のキーを変更するには、@emph{ネストされた宣言} を使います:
+
+@c KEEP LY
+@lilypond[quote,verbatim]
+% デフォルトの譜間スペース
+\new PianoStaff <<
+  \new Staff { \clef treble c''1 }
+  \new Staff { \clef bass   c1   }
+>>
+
+% 譜間スペースを減らします
+\new PianoStaff \with {
+  % this is the nested declaration
+  \override StaffGrouper #'staff-staff-spacing #'basic-distance = #7
+} <<
+  \new Staff { \clef treble c''1 }
+  \new Staff { \clef bass   c1   }
+>>
+@end lilypond
+
+ネストされた宣言は、プロパティの他のキーに変更を加えることなく、@c
+指定されたキー (上の例では @code{basic-distance}) を更新します。
+
+今度は、譜を重ならない範囲でできる限り近づけたいとします。@c
+最も簡単な方法は、連想配列の 4 つのキーすべてを 0 にセットすることです。@c
+しかしながら、4 つのネストされた宣言を記述する必要はありません。@c
+1 つの宣言でプロパティを丸ごと再定義することができます:
+
+@lilypond[quote,verbatim]
+\new PianoStaff \with {
+  \override StaffGrouper #'staff-staff-spacing =
+    #'((basic-distance . 0)
+       (minimum-distance . 0)
+       (padding . 0)
+       (stretchability . 0))
+} <<
+  \new Staff { \clef treble c''1 }
+  \new Staff { \clef bass   c1   }
+>>
+@end lilypond
+
+連想配列の再定義でリストアップされなかったキーは、@c
+@emph{セットされなかった場合のデフォルト値} にリセットされます。@c
+@code{staff-staff-spacing} の場合、@c
+セットされなかったキーは 0 にリセットされます
+(@code{stretchability} は例外で、セットされなかった場合、@c
+@code{basic-distance} にリセットされます)。@c
+このため、以下の 2 つの宣言は等価です:
+
+@example
+\override StaffGrouper #'staff-staff-spacing =
+  #'((basic-distance . 7))
+
+\override StaffGrouper #'staff-staff-spacing =
+  #'((basic-distance . 7)
+     (minimum-distance . 0)
+     (padding . 0)
+     (stretchability . 7))
+@end example
+
+連想配列の再定義でリストアップされなかったキーがあることにより、@c
+初期化ファイルでセットされたり、@c
+入力ファイルがコンパイルされるときに読み込まれた@c
+標準設定が (意図せずに) 削除される可能性があります。@c
+上の例では、@code{padding} と @code{minimum-distance} の標準設定
+(@file{scm/define-grobs.scm} で定義されます) は、@c
+@emph{セットされなかった場合のデフォルト値} (両方とも 0) にリセットされます。@c
+プロパティや (任意のサイズ) 連想配列を定義した場合、@c
+セットされなかったキー値はすべて @emph{セットされなかった場合のデフォルト値}
+にリセットされます。@c
+そうすることを意図しているのでない限り、@c
+ネストされた宣言を用いてキー値を個々に更新する方が安全です。
+
+@warning{ネストされた宣言は、コンテキスト プロパティ連想配列
+(@code{beamExceptions}, @code{keySignature}, @code{timeSignatureSettings} 等)
+に対しては機能しません。@c
+これらのプロパティを変更するには、@c
+連想配列として丸ごと再定義するしかありません。}
+
+
+@node 役に立つコンセプトとプロパティ
+@section 役に立つコンセプトとプロパティ
+@translationof Useful concepts and properties
+
+@menu
+* 入力モード::
+* 向きと配置::
+* コンテキスト レイアウトの順序::
+* 距離と距離の単位::
+* 譜記号プロパティ::
+* スパナ::
+* オブジェクトの可視性::
+* ライン スタイル::
+* オブジェクトを回転させる::
+@end menu
+
+
+@node 入力モード
+@subsection 入力モード
+@translationof Input modes
+
+入力ファイルの中に保持されている記譜を解釈する方法は、@c
+カレントの入力モードによって決定されます。
+
+@strong{コード モード}
+
+このモードは @code{\chordmode} コマンドで有効になり、@c
+入力はコード記譜法の構文で解釈されるようになります。@c
+@ref{Chord notation} を参照してください。@c
+コードは、譜面上に音符として描画されます。
+
+コード モードは @code{\chords} コマンドでも有効になります。@c
+このコマンドは新たに @code{ChordNames} コンテキストも作成します。@c
+入力はコード記譜法の構文で解釈され、@c
+さらに @code{ChordNames} コンテキストの中にコード ネームとして描画されます。@c
+@ref{Printing chord names} を参照してください。
+
+@strong{ドラム モード}
+
+このモードは @code{\drummode} コマンドで有効になり、@c
+入力はドラム記譜法の構文で解釈されるようになります。@c
+@ref{Basic percussion notation} を参照してください。
+
+また、ドラム モードは @code{\drums} コマンドでも有効になります。@c
+このモードも新たに @code{DrumStaff} コンテキストを作成し、@c
+コマンドの後に続く入力をドラム記譜法の構文で解釈して、@c
+ドラム譜上にドラム記号として描画します。@c
+@ref{Basic percussion notation} を参照してください。
+
+@strong{音型モード}
+
+このモードは @code{\figuremode} コマンドで有効になり、@c
+入力は通奏低音の構文で解釈されるようになります。@c
+@ref{Entering figured bass} を参照してください。
+
+また、音型モードは @code{\figures} コマンドでも有効になります。@c
+このモードも新たに @code{FiguredBass} コンテキストを作成し、@c
+コマンドの後に続く入力を通奏低音の構文で解釈して、@c
+@code{FiguredBass} コンテキストの中に通奏低音記号として描画します。@c
+@ref{Introduction to figured bass} を参照してください。
+
+@strong{フレットとタブ モード}
+
+フレット記号とタブ記号を入力するための特別な入力モードはありません。
+
+タブ図を作成するには、音符モードで音符や和音を入力して、@c
+それらを @code{TabStaff} コンテキストの中に描画します。@c
+@ref{Default tablatures} を参照してください。
+
+譜の上にフレット図を作成するには、2 つの方法があります。@c
+@code{FretBoards} コンテキスト
+(@ref{Automatic fret diagrams} を参照してください) を用いるか、@c
+あるいは、音符の上に @code{\fret-diagram} コマンド
+(@ref{Fret diagram markups}) を用いてフレット図をマークアップとして@c
+入力するかのどちらかになります。
+
+@strong{歌詞モード}
+
+このモードは @code{\lyricmode} コマンドで有効になり、@c
+入力はオプションで演奏時間を持つ歌詞音節として解釈され、@c
+歌詞識別子に関連付けされます。@c
+通奏低音の構文で解釈されるようになります。@c
+@ref{Vocal music} を参照してください。
+
+また、歌詞モードは @code{\addlyrics} コマンドでも有効になります。@c
+このモードも新たに @code{Lyrics} コンテキストを作成し、@c
+暗黙的に @code{lyricsto} コマンドを作成します。@c
+@code{lyricsto} は、後に続く歌詞を、前にある音楽に関連付けします。
+
+@strong{マークアップ モード}
+
+このモードは @code{\markup} コマンドで有効になり、@c
+入力はマークアップの構文で解釈されるようになります。@c
+@ref{Text markup commands} を参照してください。
+
+@c silly work-around for texinfo broken-ness
+@c (@strong{Note...} causes a spurious cross-reference in Info)
+@strong{音符モード}
+
+このモードはデフォルトのモードであり、@c
+@code{\notemode} コマンドで有効にすることもできます。@c
+入力はピッチ、演奏時間、マークアップなどとして解釈され、@c
+譜面上に音楽記譜として写植されます。
+
+通常、音符モードを明示的に指定する必要はありません。@c
+しかしながら、ある特定の状況
+-- 例えば、歌詞モード、和音モード、あるいは他のモードを使っていて、@c
+音符モードの構文でしか入力できないものを入力しようとしている場合 --
+では、音符モードを明示的に指定することが有用な場合があります。
+
+例えば、合唱曲で節ごとに強弱記号を指定するには、@c
+音符モードで入力して記号を解釈させる必要があります:
+
+@lilypond[verbatim,relative=2,quote]
+{ c4 c4 c4 c4 }
+\addlyrics {
+  \notemode{\set stanza = \markup{ \dynamic f 1. } }
+  To be sung loudly
+}
+\addlyrics {
+  \notemode{\set stanza = \markup{ \dynamic p 2. } }
+  To be sung quietly
+}
+@end lilypond
+
+
+@node 向きと配置
+@subsection 向きと配置
+@translationof Direction and placement
+
+楽譜を写植しているとき、多くの要素の向きと配置には選択の余地があります。@c
+例えば、音符の符幹は上向きあるいは下向きにすることができ、@c
+歌詞、強弱記号、他の表現記号は譜の上あるいは下に配置することができ、@c
+テキストは左揃え、右揃え、あるいは中央揃えにすることができる、などです。@c
+これらの選択のほとんどは LilyPond によって自動的に決定されますが、@c
+強制的に向きや配置を指定することが望ましい場合もあります。
+
+@strong{アーティキュレーションの方向指示子}
+
+デフォルトでは、アーティキュレーションのいくつかの向きは常に上または下に@c
+なっています (例えば、強弱記号やフェルマータ)。@c
+一方、他のアーティキュレーションは、符幹の向きによって、@c
+向きが上下します (スラーやアクセントなど)。
+
+@c TODO Add table showing these
+
+アーティキュレーションの前に @emph{方向指示子} を置くことで、@c
+デフォルトの向きをオーバライドすることができます。@c
+3 つの方向指示子があります: @code{^} (@qq{上向き} を意味します)、@c
+@code{_} (@qq{下向き} を意味します)、@c
+それに @code{-} (@qq{デフォルトの向き} を意味します) です。@c
+通常、方向指示子は省略することができ、その場合は @code{-} と見なされます。@c
+しかしながら、以下のものの前には @strong{常に} 方向指示子を置く必要があります:
+
+@itemize
+@item @code{\tweak} コマンド
+@item @code{\markup} コマンド
+@item @code{\tag} コマンド
+@item 文字列マークアップ。例えば、-"string"
+@item 運指指示。例えば、@code{-1}
+@item アーティキュレーションの短縮記法。例えば、@code{-.}, @code{->}, @code{--}
+@end itemize
+
+方向指示子は、その後にくる音符だけに効果を持ちます:
+
+@lilypond[verbatim,quote,relative=2]
+c2( c)
+c2_( c)
+c2( c)
+c2^( c)
+@end lilypond
+
+@strong{方向プロパティ}
+
+多くのレイアウト オブジェクトの位置や向きは、@c
+@code{direction} プロパティによって制御されます。
+
+@code{direction} プロパティの値は、@c
+@code{1} (@qq{上向き} あるいは @qq{上} を意味します)、@c
+@code{-1} (@qq{下向き} あるいは @qq{下} を意味します)
+にセットすることができます。@c
+記号 @code{UP} と @code{DOWN} は、@c
+それぞれ @code{1} と @code{-1} の代わりに用いることができます。@c
+デフォルトの向きを指定するには、@c
+@code{direction} を @code{0} あるいは @code{CENTER} にセットします。@c
+このような方法を用いる代わりに、@c
+多くの場合で、向きを指定するための前置コマンドが存在しています。@c
+それらはすべて以下のような形式をとります:
+
+@noindent
+@code{\xxxUp}, @code{xxxDown}, @code{xxxNeutral}
+
+@noindent
+ここで、@code{xxxNeutral} は @qq{デフォルトの向きを使用する}
+ことを意味します。@c
+@rlearning{譜表内部オブジェクト} を参照してください。
+
+いくつかのケースでは
+-- 一般的な例としてはアルペジオしかありません --
+@code{direction} プロパティの値は、@c
+オブジェクトが親オブジェクトの左右どちらに配置されるかを指定します。
+この場合、@code{-1} あるいは @code{LEFT} は @qq{左側} を意味し、@c
+@code{1} あるいは @code{RIGHT} は @qq{右側} を意味します。@c
+@code{0} あるいは @code{CENTER} は、前のケースと同様に、@c
+@qq{デフォルトの向きを使用する} ことを意味します。
+
+@ignore
+These all have side-axis set to #X
+AmbitusAccidental - direction has no effect
+Arpeggio - works
+StanzaNumber - not tried
+TrillPitchAccidental - not tried
+TrillPitchGroup - not tried
+@end ignore
+
+これらの指示子は、キャンセルされるまで効果を持ちます。
+
+@lilypond[verbatim,quote,relative=2]
+c2( c)
+\slurDown
+c2( c)
+c2( c)
+\slurNeutral
+c2( c)
+@end lilypond
+
+
+@node コンテキスト レイアウトの順序
+@subsection コンテキスト レイアウトの順序
+@translationof Context layout order
+
+@cindex contexts, layout order (コンテキスト レイアウトの順序)
+
+通常、コンテキストは、入力ファイルの中で出現した順番に、@c
+システムの上から下へと配置されます。@c
+コンテキストがネストされている場合、@c
+入力ファイルの中で内側にネストされたコンテキストが@c
+外側のコンテキストの @q{accepts} リストの中に含まれているのなら、@c
+外側のコンテキストの内部に配置されます。@c
+外側のコンテキストの @qq{accepts} リストに含まれていない場合、@c
+外側のコンテキストの内部ではなく、下に再配置されます。
+
+入力ファイルの中で、@c
+出現したコマンドを保持する適当なコンテキストが存在しない場合、@c
+コンテキストが暗黙的に作成されます。@c
+これは、予期しない譜やスコアを生み出す可能性があります。
+
+コンテキストが配置される順序や @qq{accepts} リストは変更することができます。@c
+@ref{コンテキストを揃える} を参照してください。
+
+@seealso
+アプリケーション使用方法:
+@rprogram{余計な譜が表示される}
+
+
+@node 距離と距離の単位
+@subsection 距離と距離の単位
+@translationof Distances and measurements
+
+@cindex distances, absolute (絶対距離)
+@cindex distances, scaled (相対距離)
+
+@funindex \mm
+@funindex \cm
+@funindex \in
+@funindex \pt
+
+LilyPond における距離には 2 つのタイプがあります: 絶対距離と相対距離です。
+
+絶対距離は、マージン、インデント、それにその他の詳細なページ レイアウトを@c
+指定するために使用され、デフォルトではミリメートルで指定されます。
+距離は以下の単位で指定することもできます: @code{\mm}, @code{\cm},
+@code{\inch} (インチ), それに @code{\pt} (ポイント。1/73.27 インチ) です。@c
+また、ページ レイアウトにおける距離は、@c
+値の後ろに @code{\staff-space} を付けることにより、
+比率で指定することもできます (次の段落を参照してください)。@c
+ページ レイアウトについての詳細は、@c
+@ref{ページ レイアウト} に記述されています。
+
+相対距離は常に譜スペースを単位として指定されます
+ -- 稀に、半譜スペースが使用されます。@c
+譜スペースは隣り合う 2 本の譜線間の距離です。@c
+グローバル譜サイズを設定することにより、@c
+デフォルト値をグローバルに変更することができます。@c
+また、@code{StaffSymbol} の @code{staff-space} プロパティを@c
+変更することにより、譜スペースをローカルにオーバライドすることもできます。@c
+相対距離は、グローバル譜サイズや @code{StaffSymbol} の @code{staff-space}
+プロパティのいずれかが変更されると、自動的に変更されます。@c
+しかしながら、フォントの比率はグローバル譜サイズが変更された場合にのみ、@c
+自動的に変更されます。@c
+そのため、グローバル譜サイズは@c
+容易に描画される楽譜全体のサイズを変更することができます。@c
+グローバル譜サイズを設定するための手段については、@c
+@ref{譜サイズを設定する} を参照してください。
+
+@funindex magstep
+
+楽譜のある部分だけの比率を変更したいのなら
+-- 例えば、オッシア セクションや脚注で --
+単純にグローバル譜サイズを変更するわけにはいきません。@c
+なぜなら、グローバル譜サイズを変更すると、楽譜全体が影響を受けるからです。@c
+そのような場合、@code{StaffSymbol} の @code{staff-space} プロパティと@c
+フォントのサイズをオーバライドすることにより、サイズを変更します。@c
+フォント サイズの変更を @code{staff-space} 単位の変更に変換するには、@c
+Scheme 関数 @code{magstep} を使用することができます。@c
+この関数の説明と使用例については、@c
+@rlearning{オブジェクトの長さと太さ} を参照してください。
+
+
+@seealso
+学習マニュアル:
+@rlearning{オブジェクトの長さと太さ}
+
+記譜法リファレンス:
+@ref{ページ レイアウト},
+@ref{譜サイズを設定する}
+
+
+@node 譜記号プロパティ
+@subsection 譜記号プロパティ
+@translationof Staff symbol properties
+
+@cindex adjusting staff symbol (譜記号を調節する)
+@cindex drawing staff symbol (譜記号を描画する)
+@cindex staff symbol, setting of (譜記号の設定)
+
+@c TODO Extend or remove this section.  See also NR 1.6.2 Staff symbol
+@c      Need to think of uses for these properties.  Eg 'line-positions
+@c      is used in a snippet to thicken centre line.
+@c      If retained, add @ref to here in 1.6.2  -td
+
+譜線の垂直位置と譜線の本数を同時に定義することができます。@c
+以下の例が示すように、音符の位置は譜線の位置には影響されません。
+
+@warning{@code{'line-positions} プロパティは @code{'line-count} を@c
+オーバライドします。@c
+譜線の本数は、@code{'line-positions} の値リストの中にある要素数によって、@c
+暗黙的に定義されます。}
+
+@lilypond[verbatim,quote,relative=1]
+\new Staff \with {
+  \override StaffSymbol #'line-positions = #'(7 3 0 -4 -6 -7)
+}
+{ a4 e' f b | d1 }
+@end lilypond
+
+譜の幅を変更することができます。@c
+単位は譜スペースです。@c
+譜内部のオブジェクトのスペースは、この設定によって影響を受けません。
+
+@lilypond[verbatim,quote,relative=1]
+\new Staff \with {
+  \override StaffSymbol #'width = #23
+}
+{ a4 e' f b | d1 }
+@end lilypond
+
+
+@node スパナ
+@subsection スパナ
+@translationof Spanners
+
+多くの音楽記譜オブジェクトは、複数の音符あるいは複数の小節にまたがって、@c
+広がりを持ちます。@c
+例としては、スラー、連桁、連譜の囲み、volta 繰り返しの囲み、クレッシェンド、@c
+トリル、それにグリッサンドがあります。@c
+そのようなオブジェクトは総称して @qq{スパナ} と呼ばれ、@c
+それらの見た目と振る舞いを制御するための特殊なプロパティを持ちます。@c
+これらのプロパティのいくつかは、すべてのスパナに共通しています。@c
+他のプロパティはスパナの部分集合に限定されています。
+
+すべてのスパナは @code{spanner-interface} をサポートします。@c
+いくつかのスパナ -- 2 つのオブジェクトの間に直線を描くもの -- は、さらに、@c
+@code{line-spanner-interface} をサポートします。
+
+
+@unnumberedsubsubsec @code{spanner-interface} を使用する
+
+このインターフェイスは、@c
+いくつかのスパナに適用される 2 つのプロパティを提供します。
+
+@strong{@i{@code{minimum-length} プロパティ}}
+
+スパナの最短の長さは、@code{minimum-length} プロパティによって指定されます。@c
+通常、このプロパティを増加させると、@c
+スパナの両端の間にある音符の間隔は増加します。@c
+しかしながら、このオーバライドは多くのスパナで効果を持ちません。@c
+なぜなら、それらの長さは他の要素によって決定されるからです。@c
+以下に効果を持つ例を 2, 3 示します。
+
+@ignore
+Works for:
+  Tie
+  MultiMeasureRest
+  Hairpin
+  Slur
+  PhrasingSlur
+
+Works as long as callback is made:
+  Glissando
+  Beam
+
+Works not at all for:
+  LyricSpace
+  LyricHyphen
+  LyricExtender
+  TextSpanner
+  System
+
+@end ignore
+
+@c KEEP LY
+@lilypond[verbatim,quote,relative=2]
+a~a
+a
+% タイの長さを増加させます
+-\tweak #'minimum-length #5
+~a
+@end lilypond
+
+@c KEEP LY
+@lilypond[verbatim,quote,relative=2]
+a1
+\compressFullBarRests
+R1*23
+% 休符バーの長さを増加させます
+\once \override MultiMeasureRest #'minimum-length = #20
+R1*23
+a1
+@end lilypond
+
+@c KEEP LY
+@lilypond[verbatim,quote,relative=2]
+a \< a a a \!
+% ヘアピンの長さを増加させます
+\override Hairpin #'minimum-length = #20
+a \< a a a \!
+@end lilypond
+
+さらに、このオーバライドはスラーとフレージング スラーの長さを@c
+増加させるためにも使用されます:
+
+@lilypond[verbatim,quote,relative=2]
+a( a)
+a
+-\tweak #'minimum-length #5
+( a)
+
+a\( a\)
+a
+-\tweak #'minimum-length #5
+\( a\)
+@end lilypond
+
+いくつかのレイアウト オブジェクトでは、@c
+@code{minimum-length} プロパティは、@c
+@code{set-spacing-rods} プロシージャが明示的に呼び出された場合にのみ@c
+効果を持ちます。@c
+このプロシージャを呼び出すには、@code{springs-and-rods} プロパティに@c
+@code{ly:spanner::set-spacing-rods} をセットしておく必要があります。@c
+例えば、グリッサンドの最短長は、@c
+@code{springs-and-rods} プロパティが設定されていない限り、@c
+効果を持ちません:
+
+@c KEEP LY
+@lilypond[verbatim,quote,relative=1]
+% デフォルト
+e \glissando c'
+
+% 単独では効果を持ちません
+\once \override Glissando #'minimum-length = #20
+e, \glissando c'
+
+% 以下の両方のオーバライドが存在する場合にのみ、効果を持ちます
+\once \override Glissando #'minimum-length = #20
+\once \override Glissando #'springs-and-rods = #ly:spanner::set-spacing-rods
+e, \glissando c'
+@end lilypond
+
+@code{Beam} オブジェクトでも同じことが言えます:
+
+@c KEEP LY
+@lilypond[verbatim,quote,relative=1]
+% 単独では効果を持ちません
+\once \override Beam #'minimum-length = #20
+e8 e e e
+
+% 以下の両方のオーバライドが存在する場合にのみ、効果を持ちます
+\once \override Beam #'minimum-length = #20
+\once \override Beam #'springs-and-rods = #ly:spanner::set-spacing-rods
+e8 e e e
+@end lilypond
+
+
+@strong{@i{@code{to-barline} プロパティ}}
+
+@code{spanner-interface} の 2 番目に有用なプロパティは
+@code{to-barline} です。@c
+デフォルトではこのプロパティは真であり、@c
+小節の最初の音符のところで終了するヘアピンや他のスパナは@c
+直前の小節線のところで終了させられます。@c
+偽に設定すると、スパナは小節線を越えて、音符のところで終了します:
+
+@lilypond[verbatim,quote,relative=2]
+a \< a a a a \! a a a \break
+\override Hairpin #'to-barline = ##f
+a \< a a a a \! a a a
+@end lilypond
+
+このプロパティはすべてのスパナに対して効果を持つわけではありません。@c
+例えば、スラーやフレージング スラー、@c
+あるいは小節線で終了させることに意味が無い他のスパナに対して、@c
+このプロパティを @code{#t} に設定しても効果がありません。
+
+
+@unnumberedsubsubsec @code{line-spanner-interface} を使用する
+
+@code{line-spanner-interface} をサポートするオブジェクトには@c
+以下のものがあります:
+
+@itemize
+@item @code{DynamicTextSpanner}
+@item @code{Glissando}
+@item @code{TextSpanner}
+@item @code{TrillSpanner}
+@item @code{VoiceFollower}
+@end itemize
+
+これらのスパナのステンシルを描画する責任を持つルーチンは
+@code{ly:line-interface::print} です。@c
+このルーチンはスパナの両端の位置を綿密に決定し、@c
+求めに応じたスタイルでそれらの間に線を描きます@c
+スパナの両端の位置はオンザフライ (その場、その時々) で算出されますが、@c
+それらの Y 座標をオーバライドすることができます。@c
+指定する必要のあるプロパティは、@c
+プロパティ階層内で 2 階層下にネストされていますが、@c
+この @code{\override} コマンドは非常にシンプルです:
+
+@lilypond[relative=2,quote,verbatim]
+e2 \glissando b
+\once \override Glissando #'(bound-details left Y) = #3
+\once \override Glissando #'(bound-details right Y) = #-2
+e2 \glissando b
+@end lilypond
+
+@code{Y} プロパティの単位は @code{staff-space} であり、@c
+譜の中央線が 0 位置です。@c
+グリッサンドでは、スパナの両端は各符頭の中心であり、@c
+@code{Y} はそれらの点を上下させます。
+
+@code{Y} が設定されていない場合、@c
+値はスパナの両端の垂直位置から算出されます。
+
+改行の場合、終点の @code{Y} の値は @code{bound-details} の@c
+部分リスト @code{left-broken} や @code{right-broken} のによって指定されます。@c
+例を示します:
+
+@lilypond[relative=2,ragged-right,verbatim,fragment]
+\override Glissando #'breakable = ##t
+\override Glissando #'(bound-details right-broken Y) = #-3
+c1 \glissando \break
+f1
+@end lilypond
+
+
+@code{bound-details} プロパティの部分リスト @code{left} や @code{right} の@c
+下位プロパティのいくつかは、@code{Y} と同じ方法で変更することができます:
+
+@table @code
+@item Y
+終点の Y 座標を、@c
+譜の中央線からの @code{staff-space} オフセットで、設定します。@c
+デフォルトでは、終点オブジェクトの中心です。@c
+ですから、グリッサンドは符頭の中心に向かって進みます。
+
+水平方向に広がるスパナ -- テキスト スパナやトリル スパナなど --
+では、この値は 0 に固定されています。
+
+@item attach-dir
+スパナのラインがオブジェクトの左右どちらから始まり、終わるのかを決定します。@c
+@code{-1} (あるいは @code{LEFT}) であれば、@c
+ラインは符頭の左側から開始あるいは終了します。
+
+@item X
+終点の絶対 X 座標です。@c
+通常、オンザフライ (その場、その時々) で算出され、@c
+これをオーバライドしてもあまり意味がありません。
+
+@item stencil
+ライン スパナは開始点や終了点で記号を持つ場合があり、@c
+その記号はこのサブ プロパティに保持されています。@c
+このサブ プロパティは内部で使用するためのものです。@c
+このサブ プロパティの代わりに @code{text} を使用することを推奨します。
+
+@item text
+ステンシルを作成するために評価されるマークアップです。@c
+水平スパナに @i{cresc.}, @i{tr} それに他のテキストを配置するために使用されます。
+
+@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
+\override TextSpanner #'(bound-details left text)
+   = \markup { \small \bold Slower }
+c2\startTextSpan b c a\stopTextSpan
+@end lilypond
+
+@item stencil-align-dir-y
+@item stencil-offset
+これらの 1 つを設定しなければ、@c
+ステンシルは、@code{X} と @code{Y} サブ プロパティで定義されたとおりに、@c
+ラインに中央揃えで、終点に配置されます。@c
+@code{stencil-align-dir-y} あるいは @code{stencil-offset} の@c
+どちらかを設定すると、@c
+記号が上下します:
+
+@lilypond[relative=1,fragment,verbatim]
+\override TextSpanner
+  #'(bound-details left stencil-align-dir-y) = #-2
+\override TextSpanner
+  #'(bound-details right stencil-align-dir-y) = #UP
+
+\override TextSpanner
+  #'(bound-details left text) = #"ggg"
+\override TextSpanner
+  #'(bound-details right text) = #"hhh"
+c4^\startTextSpan c c c \stopTextSpan
+@end lilypond
+
+予期される結果とは逆に、@c
+負の値はテキストを @emph{上げる} ということに注意してください。@c
+なぜなら、@code{-1} あるいは @code{DOWN} は@c
+テキストの @emph{下端} をスパナ ラインに揃え、
+@code{1} あるいは @code{UP} は@c
+テキストの @emph{上端} をスパナ ラインに揃えるからです。
+
+@item arrow
+このサブ プロパティに @code{#t} をセットするとラインの終点に矢印が描かれます。
+
+@item padding
+このサブ プロパティはラインの終点と実際の終点の間のスペースを制御します。@c
+パディングがなければ、グリッサンドは両端の符頭の中心から描かれます。
+
+@end table
+
+音楽関数 @code{\endSpanners} は@c
+直後の音符から始まるスパナをすぐに終了させます。@c
+ちょうど 1 音符分でスパナを終了させますが、@c
+@code{to-barline} が真で、かつ、次の音符の前に小節線がある場合は@c
+その小節線のところでスパナを終了させます。
+
+@lilypond[verbatim,quote,ragged-right,relative=2,fragment]
+\endSpanners
+c2 \startTextSpan c2 c2
+\endSpanners
+c2 \< c2 c2
+@end lilypond
+
+@code{\endSpanners} を使用している場合、@c
+@code{\startTextSpan} を @code{\endTextSpan} で閉じる必要はなく、@c
+ヘアピンを @code{\!} で閉じる必要もありません。
+
+
+@seealso
+内部リファレンス:
+@rinternals{TextSpanner},
+@rinternals{Glissando},
+@rinternals{VoiceFollower},
+@rinternals{TrillSpanner},
+@rinternals{line-spanner-interface}
+
+
+@node オブジェクトの可視性
+@subsection オブジェクトの可視性
+@translationof Visibility of objects
+
+@cindex objects, visibility of (オブジェクトの可視性)
+@cindex grobs, visibility of (グラフィカル オブジェクトの可視性)
+@cindex visibility of objects (オブジェクトの可視性)
+
+レイアウト オブジェクトの可視性を制御する主な方法は 4 つあります:
+オブジェクトのステンシルを削除する方法、オブジェクトを透明にする方法、@c
+オブジェクトの色を白にする方法、あるいは、@c
+オブジェクトの @code{break-visibility} プロパティをオーバライドする方法です。
+最初の 3 つの方法はすべてのレイアウト オブジェクトに適用されますが、@c
+最後の方法はいくつかの -- @emph{改行可能な} オブジェクト --
+だけに適用されます。@c
+学習マニュアルでは、これら 4 つのテクニックについて紹介しています。@c
+@rlearning{オブジェクトの可視性と色} を参照してください。
+
+さらに、特定のレイアウト オブジェクト特有のテクニックがいくつかあります。@c
+それらについては、特別な考慮でカバーされています。
+
+@menu
+* ステンシルを削除する::
+* オブジェクトを透明にする::
+* オブジェクトを白で描く::
+* break-visibility を用いる::
+* 特別な考慮を必要とするもの::
+@end menu
+
+
+@node ステンシルを削除する
+@unnumberedsubsubsec ステンシルを削除する
+@translationof Removing the stencil
+
+@cindex stencil, removing (ステンシルを削除する)
+
+レウアウト オブジェクトはそれぞれステンシル プロパティを持ちます。@c
+デフォルトでは、@c
+このプロパティはそのオブジェクトを描画する特殊な関数にセットされています。@c
+このプロパティが @code{#f} にオーバライドされた場合、@c
+関数は呼び出されず、そのオブジェクトは描画されません。@c
+@code{\rever} でデフォルトの動作に戻すことができます。
+
+@lilypond[quote,verbatim,relative=1]
+a1 a
+\override Score.BarLine #'stencil = ##f
+a a
+\revert Score.BarLine #'stencil
+a a a
+@end lilypond
+
+@node オブジェクトを透明にする
+@unnumberedsubsubsec オブジェクトを透明にする
+@translationof Making objects transparent
+
+@cindex transparent, making objects (オブジェクトを透明にする)
+
+レイアウト オブジェクトはそれぞれ @code{transparent} プロパティを持っていて、@c
+デフォルトでは @code{#f} にセットされています。@c
+@code{#t} にセットされると、そのオブジェクトはスペースを占めたままですが、@c
+不可視になります。
+
+@lilypond[quote,verbatim,relative=2]
+a4 a
+\once \override NoteHead #'transparent = ##t
+a a
+@end lilypond
+
+@node オブジェクトを白で描く
+@unnumberedsubsubsec オブジェクトを白で描く
+@translationof Painting objects white
+
+@cindex objects, coloring (オブジェクトに色を付ける)
+@cindex coloring objects (オブジェクトに色を付ける)
+@cindex layers (レイヤ)
+@cindex printing order (描画の順番)
+@cindex overwriting objects (オブジェクトを上書きする)
+@cindex objects, overwriting (オブジェクトを上書きする)
+@cindex grobs, overwriting (グラフィカル オブジェクトを上書きする)
+
+レイアウト オブジェクトはそれぞれ @code{color} プロパティを持っていて、@c
+デフォルトでは @code{black} にセットされています。@c
+このプロパティが @code{white} にセットされてると、@c
+そのオブジェクトは白い背景と区別が付かなくなります。@c
+しかしながら、そのオブジェクトが他のオブジェクトと交差している場合、@c
+交差している場所の色はオブジェクトの描画順序によって決定されます。@c
+これにより、以下に示すように、@c
+白いオブジェクトの画像が幽霊のように浮かび上がることがあります:
+
+@lilypond[quote,verbatim,relative=2]
+\override Staff.Clef #'color = #white
+a1
+@end lilypond
+
+オブジェクトの描画順序を変更することにより、これを回避することができます。@c
+すべてのレイアウト オブジェクトは @code{layer} プロパティを持っており、@c
+このプロパティには整数がセットされています。@c
+より小さな値の @code{layer} を持つオブジェクトが最初に描画され、@c
+より大きな値の @code{layer} を持つオブジェクトが後になってから描画されます。@c
+このため、@c
+より大きな値を持つオブジェクトがより小さな値を持つオブジェクトを上書きします。@c
+デフォルトでは、@c
+たいていのオブジェクトの @code{layer} には @code{1} が代入されています。@c
+しかしながら、いくつかのオブジェクト
+-- @code{StaffSymbol} や @code{BarLine} など --
+には @code{0} が代入されています。@c
+同じ値の @code{layer} を持つオブジェクトを描画する順番は不確定です。
+
+上記の例において、白い音部記号
+(この @code{layer} のデフォルト値は @code{1} です)
+は譜線 @c
+(この @code{layer} のデフォルト値は @code{0} です)
+の後に描画されます。@c
+そのため、音部記号は譜線を上書きしています。@c
+これを変更するには、@code{Clef} オブジェクトの @code{layer} に@c
+より小さな値 -- 例えば、@code{-1} -- を与えて、@c
+音部記号を先に描画させる必要があります:
+
+@lilypond[quote,verbatim,relative=2]
+\override Staff.Clef #'color = #white
+\override Staff.Clef #'layer = #-1
+a1
+@end lilypond
+
+@node break-visibility を用いる
+@unnumberedsubsubsec break-visibility を用いる
+@translationof Using break-visibility
+
+@c TODO Add making other objects breakable
+
+@cindex break-visibility
+
+たいていのレイアウト オブジェクトは 1 回だけ描画されます。@c
+しかしながら、小節線、音部記号、拍子記号、それに調号などのオブジェクトは、@c
+改行が起こると 2 回描画する必要があります
+-- 行の最後で 1 回、次の行の最初でもう 1 回。@c
+そのようなオブジェクトは @emph{改行可能} と呼ばれ、@c
+それらのオブジェクトが描画される可能性がある 3 つの場所
+-- 行の先頭、行の途中 (それらが変更された場合)、@c
+それに、行の最後 (そこで変更が行われた場合) --
+における可視性を制御する @code{break-visibility} プロパティを持ちます。
+
+例えば、デフォルトでは拍子記号は最初の行の先頭で描画されますが、@c
+変更されない限り他の場所には描画されません。@c
+変更された場合、拍子記号は変更が行われた場所に描画されます。@c
+この変更が行の最後で行われた場合、新しい拍子記号は次の行の先頭に描画され、@c
+その前の行の最後にも忠告の拍子記号が描画されます。
+
+この振る舞いは @code{break-visibility} プロパティによって制御されます。@c
+このプロパティについての説明は
+@c Leave this ref on a newline - formats incorrectly otherwise -td
+@rlearning{オブジェクトの可視性と色}
+を参照してください。@c
+このプロパティは 3 つのブール値からなるベクトルをとり、@c
+順に、そのオブジェクトが行の最後で描画されるかどうか、@c
+行の途中で描画されるかどうか、@c
+そして、行の先頭で描画されるかどうかを決定します。@c
+より正確には、改行の前、改行がない場合、改行の後です。
+
+@code{break-visibility} プロパティによって制御する代わりに、@c
+これら 8 通りの組み合わせを @file{scm/output-lib.scm} で定義されている@c
+定義済み関数によって指定することもできます。@c
+このファイルの中で、最後の 3 列がその列のヘッダで示される場所での@c
+可視性を表しています:
+
+@multitable {@code{begin-of-line-invisible}} {@code{'#(#t #t #t)}} {yes} {yes} {yes}
+@headitem 関数                       @tab ベクトル                @tab 改行前 @tab 改行なし @tab 改行後
+
+@item @code{all-visible}             @tab @code{'#(#t #t #t)}     @tab yes    @tab yes      @tab yes
+@item @code{begin-of-line-visible}   @tab @code{'#(#f #f #t)}     @tab no     @tab no       @tab yes
+@item @code{center-visible}          @tab @code{'#(#f #t #f)}     @tab no     @tab yes      @tab no
+@item @code{end-of-line-visible}     @tab @code{'#(#t #f #f)}     @tab yes    @tab no       @tab no
+@item @code{begin-of-line-invisible} @tab @code{'#(#t #t #f)}     @tab yes    @tab yes      @tab no
+@item @code{center-invisible}        @tab @code{'#(#t #f #t)}     @tab yes    @tab no       @tab yes
+@item @code{end-of-line-invisible}   @tab @code{'#(#f #t #t)}     @tab no     @tab yes      @tab yes
+@item @code{all-invisible}           @tab @code{'#(#f #f #f)}     @tab no     @tab no       @tab no
+@end multitable
+
+@code{break-visibility} のデフォルト設定は@c
+レイアウト オブジェクトによって異なります。@c
+以下の表は、@code{break-visibility} によって影響をうける@c
+すべてのレイアウト オブジェクトと、そのプロパティのデフォルト設定を示しています:
+
+@multitable @columnfractions .3 .3 .4
+
+@headitem レイアウト オブジェクト   @tab 通常のコンテキスト  @tab デフォルト設定
+
+@c omit Ambitus as it appears not to be affected by break-visibility -td
+@c @item @code{Ambitus}          @tab as specified   @tab @code{begin-of-line-visible}
+@item @code{BarLine}             @tab @code{Score}          @tab calculated
+@item @code{BarNumber}           @tab @code{Score}          @tab @code{begin-of-line-visible}
+@c omit the following item until it can be explained -td
+@c @item @code{BreakAlignGroup}  @tab @code{Score}          @tab calculated
+@item @code{BreathingSign}       @tab @code{Voice}          @tab @code{begin-of-line-invisible}
+@item @code{Clef}                @tab @code{Staff}          @tab @code{begin-of-line-visible}
+@item @code{Custos}              @tab @code{Staff}          @tab @code{end-of-line-visible}
+@item @code{DoublePercentRepeat} @tab @code{Voice}          @tab @code{begin-of-line-invisible}
+@c omit KeyCancellation until it can be explained -td
+@c @item @code{KeyCancellation}  @tab ??             @tab @code{begin-of-line-invisible}
+@item @code{KeySignature}        @tab @code{Staff}          @tab @code{begin-of-line-visible}
+@c omit LeftEdge until it can be explained -td
+@c @item @code{LeftEdge}         @tab @code{Score}          @tab @code{center-invisible}
+@item @code{OctavateEight}       @tab @code{Staff}          @tab @code{begin-of-line-visible}
+@item @code{RehearsalMark}       @tab @code{Score}          @tab @code{end-of-line-invisible}
+@item @code{TimeSignature}       @tab @code{Staff}          @tab @code{all-visible}
+
+@end multitable
+
+以下の例は、小節線の可視性を制御するベクトルの使用方法を示しています:
+
+@c KEEP LY
+@lilypond[quote,verbatim,relative=1,ragged-right]
+f4 g a b
+f4 g a b
+% カレント行の最後で小節線を削除します
+\once \override Score.BarLine #'break-visibility = #'#(#f #t #t)
+\break
+f4 g a b
+f4 g a b
+@end lilypond
+
+@code{break-visibility} をオーバライドするために使用される@c
+ベクトルの要素 3 つをすべて記述する必要がありますが、@c
+それらすべてが各レイアウト オブジェクトに対して効果を持つわけではなく、@c
+組み合わせによってはエラーになる場合もあります。@c
+
+even give errors.  The following limitations apply:
+
+@itemize @bullet
+@item 小節線を行の先頭に描画することはできません。
+@item 小節番号は 1 から始まるのでなければ、@c
+最初の行の先頭に描画することはできません。
+@item 音部記号 -- 以下を参照してください
+@item 2 重線のパーセント繰り返しはすべて描画するか、@c
+すべて描画しないかのどちらかです。@c
+描画するには @code{begin-of-line-invisible} を用い、@c
+描画しないのなら @code{all-invisible} を用います。
+@item Key signature -- 以下を参照してください
+@item OctavateEight -- 以下を参照してください
+@end itemize
+
+@node 特別な考慮を必要とするもの
+@unnumberedsubsubsec 特別な考慮を必要とするもの
+@translationof Special considerations
+
+@strong{@emph{明示的な変更の後の可視性}}
+
+@cindex key signature, visibility following explicit change (明示的な変更の後の調号の可視性)
+@cindex explicitKeySignatureVisibility
+@cindex clef, visibility following explicit change (明示的な変更の後の音部記号の可視性)
+@cindex explicitClefVisibility
+
+@code{break-visibility} プロパティが調号の可視性と音部記号の変更を@c
+制御するのは、行の先頭 -- つまり、改行の後 -- においてだけです。@c
+行の途中や終わりでの明示的な調の変更や音部記号の変更の後に出現する@c
+調合や音部記号の可視性には効果を持ちません。@c
+以下の例では、@code{all-invisible} がセットされていますが、@c
+B フラット メジャーへの明示的な変更の後に出現する調号は可視のままです。
+
+@c KEEP LY
+@lilypond[quote,verbatim,relative=1,ragged-right]
+\key g \major
+f4 g a b
+% すべての調号を削除しようと試みます
+\override Staff.KeySignature #'break-visibility = #all-invisible
+\key bes \major
+f4 g a b
+\break
+f4 g a b
+f4 g a b
+@end lilypond
+
+そのような明示的な調号や音部記号の変更の可視性は
+@code{explicitKeySignatureVisibility} プロパティや
+@code{explicitClefVisibility} プロパティによって制御されます。@c
+これらは @code{break-visibility} プロパティと等価であり、@c
+どちらも @code{break-visibility} と同様に 3 つのブール値からなるベクトルか@c
+上でリストアップした定義済み関数をとります。@c
+どちらも @code{Staff} コンテキストのプロパティであり、@c
+レイアウト オブジェクト自体のプロパティではありません。@c
+ですから、これらは @code{\set} コマンドでセットします。@c
+どちらもデフォルトでは @code{all-visible} がセットされています。@c
+これらのプロパティは明示的な変更の結果として生じる@c
+調号と音部記号の可視性だけを制御し、@c
+行の先頭での調号や音部記号には効果を持ちませんので、@c
+オブジェクトを削除するには適切な @code{break-visibility}
+をオーバライドする必要があります。
+
+@lilypond[quote,verbatim,relative=1,ragged-right]
+\key g \major
+f4 g a b
+\set Staff.explicitKeySignatureVisibility = #all-invisible
+\override Staff.KeySignature #'break-visibility = #all-invisible
+\key bes \major
+f4 g a b \break
+f4 g a b
+f4 g a b
+@end lilypond
+
+@strong{@emph{忠告の臨時記号の可視性}}
+
+明示的な調の変更で描画される忠告の臨時記号を削除するには、@c
+@code{Staff} コンテキスト プロパティ @code{printKeyCancellation} に
+@code{#f} をセットします:
+
+@lilypond[quote,verbatim,relative=1,ragged-right]
+\key g \major
+f4 g a b
+\set Staff.explicitKeySignatureVisibility = #all-invisible
+\set Staff.printKeyCancellation = ##f
+\override Staff.KeySignature #'break-visibility = #all-invisible
+\key bes \major
+f4 g a b \break
+f4 g a b
+f4 g a b
+@end lilypond
+
+このオーバライドによって、調の変更を示す臨時記号だけが残ります。
+
+@c TODO Add visibility of cautionary accidentals before notes
+
+@strong{@emph{自動小節線}}
+
+@cindex automaticBars
+@cindex bar lines, suppressing (小節線を消す)
+
+特殊なケースとして、@c
+@code{Score} コンテキストの @code{automaticBars} プロパティを@c
+設定することにより、小節線の描画を Off にすることもできます。@c
+@code{#f} をセットされた場合、小節線は自動的には描画されなくなり、@c
+@code{\bar} コマンドで明示的に作成しなければならなくなります。@c
+定義済みコマンド @code{\cadenzaOn} とは異なり、小節数はカウントされ続けます。@c
+後になってこのプロパティに @code{#t} がセットされると、@c
+このカウントに従って小節線の生成が再開されます。@c
+@code{#f} がセットされている場合、@c
+改行が起こりえるのは明示的な @code{\bar} コマンドがある場所でだけになります。
+
+@c TODO Add example
+
+@strong{@emph{オクターブ移調付きの音部記号}}
+
+@cindex octavated clefs, visibility of (オクターブ移調付きの音部記号の可視性)
+@cindex visibility of octavated clefs (オクターブ移調付きの音部記号の可視性)
+@cindex clefs, visibility of octavation (オクターブ移調付きの音部記号の可視性)
+
+オクターブ移調付きの音部記号上の小さなオクターブ記号は
+@code{OctavateEight} レイアウト オブジェクトによって作り出されます。@c
+このオブジェクトの可視性は
+@code{Clef} オブジェクトの可視性とは独立して制御されます。@c
+そのため、各行の先頭においてそのような音部記号を完全に消そうとするなら、@c
+@code{Clef} オブジェクトと @code{OctavateEight} オブジェクトの両方に対して@c
+必要な @code{break-visibility} のオーバライドを行う必要があります。
+
+明示的な音部記号の変更では、@c
+@code{explicitClefVisibility} プロパティが@c
+音部記号とそれに関連するオクターブ記号の両方を制御します。
+
+
+@seealso
+学習マニュアル:
+@rlearning{オブジェクトの可視性と色}
+
+
+@node ライン スタイル
+@subsection ライン スタイル
+@translationof Line styles
+
+いくつかの演奏指示子
+-- 例えば、@i{rallentando}, @i{accelerando} それに @i{trills} など --
+はテキストとして記述され、@c
+線で (点線や波線の場合もあります) でいくつもの小節にわたって広がります。
+
+これらはすべてグリッサンドと同じルーチンを用いてテキストと線を描きます。@c
+そのため、それらの振る舞いの調整も同じように行います。@c
+これらはスパナによって実現され、スパナを描くルーチンは
+@code{ly:line-interface::print} です。@c
+このルーチンは 2 つの @i{スパン ポイント} の位置を決定し、@c
+要求されたスタイルに応じてそれら 2 点の間に線を描きます。
+
+利用可能なライン スタイルと、それらをどのように調整するかを示す例を挙げます。
+
+@lilypond[relative=2,ragged-right,verbatim,fragment]
+d2 \glissando d'2
+\once \override Glissando #'style = #'dashed-line
+d,2 \glissando d'2
+\override Glissando #'style = #'dotted-line
+d,2 \glissando d'2
+\override Glissando #'style = #'zigzag
+d,2 \glissando d'2
+\override Glissando #'style = #'trill
+d,2 \glissando d'2
+@end lilypond
+
+スパナの終点の位置は各グラフィック オブジェクトごとに@c
+オンザフライ (その場、その時々) で計算されますが、@c
+それらをオーバライドすることもできます:
+
+@c TODO Complete
+@lilypond[relative=2,ragged-right,verbatim,quote]
+e2 \glissando f
+\once \override Glissando #'(bound-details right Y) = #-2
+e2 \glissando f
+@end lilypond
+
+グリッサンドの終点の @code{Y} には @code{-2} がセットされています。@c
+@code{right} の代わりに @code{left} を指定することにより、@c
+始点も同じように調整することができます。
+
+@code{Y} がセットされていない場合、@c
+その値はスパナが取り付けられるポイントの垂直位置から算出されます。
+
+スパナに他の調整を行うことも可能です。@c
+詳細は @ref{スパナ} を参照してください。
+
+
+@node オブジェクトを回転させる
+@subsection オブジェクトを回転させる
+@translationof Rotating objects
+
+レイアウト オブジェクトとマークアップ テキストの要素はどちらも@c
+任意のポイントを中心にして任意の角度で回転させることができます。@c
+しかしながら、回転させる方法はまったく異なります。
+
+@menu
+* レイアウト オブジェクトを回転させる::
+* マークアップを回転させる::
+@end menu
+
+@node レイアウト オブジェクトを回転させる
+@unnumberedsubsubsec レイアウト オブジェクトを回転させる
+@translationof Rotating layout objects
+
+@cindex rotating objects (オブジェクトを回転させる)
+@cindex objects, rotating (オブジェクトを回転させる)
+
+@code{grob-interface} をサポートするすべてのレイアウト オブジェクトは、@c
+それらのオブジェクトの @code{rotation} プロパティを設定することにより、@c
+回転させることができます。@c
+これは 3 要素のリストをとります: 反時計回りの回転の角度、@c
+オブジェクトの参照ポイントからの相対座標 x と y
+(この座標が回転の中心になります) です。@c
+回転の角度は @q{°}で指定し、座標は譜スペースで指定します。
+
+回転の角度と回転の中心座標は、トライ&エラーで決定する必要があります。
+
+@cindex hairpins, angled (回転させられたヘアピン)
+@cindex angled hairpins (回転させられたヘアピン)
+
+レイアウト オブジェクトを回転させることが有用な状況はあまりありません。@c
+以下の例は、有用であるかもしれないシチュエーションの 1 つを示しています:
+
+@lilypond[quote,verbatim,relative=1]
+g4\< e' d' f\!
+\override Hairpin #'rotation = #'(20 -1 0)
+g,,4\< e' d' f\!
+@end lilypond
+
+@node マークアップを回転させる
+@unnumberedsubsubsec マークアップを回転させる
+@translationof Rotating markup
+
+すべてのマークアップ テキストは、@code{\rotate} コマンドを前に置くことにより、@c
+任意の角度に回転させることができます。@c
+このコマンドは 2 つの引数をとります: 反時計回りの回転の角度 @q{°} と、@c
+回転させられるテキストです。@c
+テキストの領域は回転しません:
+テキストの領域は回転させられるテキストの四隅になります。@c
+以下の例では、自動衝突回避を不可にするために@c
+テキストの @code{outside-staff-priority} プロパティに @code{#f} を@c
+セットしています。@c
+そうしなければテキストのいくつかは高く押し上げられてしまいます。
+
+@lilypond[quote,verbatim,relative=1]
+\override TextScript #'outside-staff-priority = ##f
+g4^\markup { \rotate #30 "a G" }
+b^\markup { \rotate #30 "a B" }
+des^\markup { \rotate #30 "a D-Flat" }
+fis^\markup { \rotate #30 "an F-Sharp" }
+@end lilypond
+
+
+@node 高度な調整
+@section 高度な調整
+@translationof Advanced tweaks
+
+このセクションでは、@c
+楽譜の見た目を細かく調節するためのさまざまなアプローチについて議論します。
+
+@menu
+* オブジェクトを揃える::
+* グラフィカル オブジェクトを垂直方向にグループ化する::
+* ステンシルを変更する::
+* 形状を変更する::
+@end menu
+
+
+@seealso
+学習マニュアル:
+@rlearning{出力を調整する},
+@rlearning{その他の情報源}
+
+記譜法リファレンス:
+@ref{内部リファレンスの説明},
+@ref{プロパティを変更する}
+
+インストール済みファイル:
+@file{scm/define-grobs.scm}
+
+コード断片集:
+@rlsr{Tweaks and overrides}
+
+拡張:
+@rextend{Interfaces for programmers}
+
+内部リファレンス:
+@rinternals{All layout objects}
+
+
+@node オブジェクトを揃える
+@subsection オブジェクトを揃える
+@translationof Aligning objects
+
+@code{self-alignment-interface} と/あるいは @code{side-position-interface} を@c
+サポートするグラフィカル オブジェクトは、@c
+さまざまな形式で配置済みのオブジェクトに揃えることができます。@c
+そのようなオブジェクトのリストは、@rinternals{self-alignment-interface} と
+@rinternals{side-position-interface} を参照してください。@c
+
+すべてのグラフィカル オブジェクトは参照ポイント、水平方向の広がり、@c
+それに垂直方向の広がりを持ちます。@c
+水平方向の広がりは、@c
+参照ポイントから左端と右端までの距離を意味する数値のペアであり、@c
+左端は負値です。@c
+垂直方向の広がりは、@c
+参照ポイントから下端と上端までの距離を意味する数値のペアであり、@c
+下端は負値です。@c
+
+あるオブジェクトの譜面上の位置は、@code{X-offset} プロパティと
+@code{Y-offset} プロパティの値によって与えられます。@c
+@code{X-offset} の値は、親オブジェクトの参照ポイントの X 座標からの@c
+距離を意味します。@c
+@code{Y-offset} の値は、譜の中央線からの距離を意味します。@c
+@code{X-offset} と @code{Y-offset} の値は直接設定されることもありますし、@c
+いくつかの形式で親オブジェクトと揃えるために@c
+プロシージャによって算出されることもあります。
+
+@c positioning considerations: 配置のための考慮 -> 配置規則
+@warning{多くのオブジェクトは特殊な配置規則を持っています。@c
+そのため、そのオブジェクトが @code{self-alignment-interface} を@c
+サポートしていたとしても、@c
+@code{X-offset} あるいは @code{Y-offset} の設定は無視されたり、@c
+変更されることがあります。}
+
+例えば、臨時記号は @code{Y-offset} を設定することにより@c
+垂直方向の位置を変更することができますが、@code{X-offset} は効果を持ちません。
+
+リハーサル記号は、小節線、音部記号、拍子記号それに調号などの@c
+改行可能なオブジェクトに揃えることができます。@c
+リハーサル記号をそのようなオブジェクトに合わせて配置するために、@c
+@code{break-aligned-interface} の中に特別なプロパティがあります。
+
+@seealso
+@ref{break-alignable-interface を使用する},
+@rextend{Callback functions}
+
+@menu
+* X-offset と Y-offset を直接設定する::
+* side-position-interface を使用する::
+* self-alignment-interface を使用する::
+* break-alignable-interface を使用する::
+@end menu
+
+@node X-offset と Y-offset を直接設定する
+@unnumberedsubsubsec @code{X-offset} と @code{Y-offset} を直接設定する
+@translationof Setting X-offset and Y-offset directly
+
+多くのオブジェクトの @code{X-offset} プロパティと @code{Y-offset} プロパティに@c
+数値を与えることができます。@c
+以下の例は、3 つの音符を示していて、1 つはデフォルト配置の運指記号を持ち、@c
+他の 2 つの運指記号は @code{X-offset} と @code{Y-offset} が変更されています。
+
+@lilypond[verbatim,quote,relative=2]
+a-3
+a
+-\tweak #'X-offset #0
+-\tweak #'Y-offset #0
+-3
+a
+-\tweak #'X-offset #-1
+-\tweak #'Y-offset #1
+-3
+@end lilypond
+
+@c TODO write more
+
+@node side-position-interface を使用する
+@unnumberedsubsubsec @code{side-position-interface} を使用する
+@translationof Using the @code{side-position-interface}
+
+@code{side-position-interface} をサポートするオブジェクトは、@c
+その親オブジェクトの隣に配置することができ、@c
+それにより、@c
+それら 2 つのオブジェクトの指定された端をくっつけることができます。@c
+オブジェクトを親オブジェクトの上、下、右、あるいは左に配置することができます。@c
+親オブジェクトを指定することはできません:
+親オブジェクトは入力ストリームの中での要素の順序によって決定されます。@c
+たいていのオブジェクトの親オブジェクトは、@c
+そのオブジェクトに関連する符頭となります。
+
+@code{side-axis} プロパティと @code{direction} プロパティの値は、@c
+以下のように、オブジェクトが配置される場所を決定します:
+
+@c TODO add an example of each to the table
+
+@multitable @columnfractions .3 .3 .3
+@headitem @code{side-axis}  @tab @code{direction}  @tab
+@headitem property          @tab property          @tab Placement
+
+@item     @code{0}          @tab @code{-1}         @tab 左
+@item     @code{0}          @tab @code{1}          @tab 右
+@item     @code{1}          @tab @code{-1}         @tab 下
+@item     @code{1}          @tab @code{1}          @tab 上
+
+@end multitable
+
+@code{side-axis} が @code{0} である場合、@code{X-offset} には@c
+プロシージャ @code{ly:side-position-interface::x-aligned-side} を@c
+セットする必要があります。@c
+このプロシージャは、@code{direction} の値に基づいて@c
+親オブジェクトの左あるいは右にオブジェクトを配置するための適切な値を
+@code{X-offset} に返します。
+
+@code{side-axis} が @code{1} である場合、@code{Y-offset} には@c
+プロシージャ @code{ly:side-position-interface::y-aligned-side} を@c
+セットする必要があります。@c
+このプロシージャは、@code{direction} の値に基づいて@c
+親オブジェクトの上あるいは下にオブジェクトを配置するための適切な値を
+@code{Y-offset} に返します。
+
+@c TODO Add examples
+
+@node self-alignment-interface を使用する
+@unnumberedsubsubsec @code{self-alignment-interface} を使用する
+@translationof Using the @code{self-alignment-interface}
+
+@emph{オブジェクトを自動的に水平方向に揃える}
+
+@code{self-alignment-interface} をサポートするオブジェクトの水平方向の揃えは、@c
+@code{self-alignment-X} プロパティの値によって制御され、@c
+そのオブジェクトの @code{X-offset} プロパティには@c
+任意の実数値を与えることができる
+@code{ly:self-alignment-interface::x-aligned-on-self}.
+@code{self-alignment-X} がセットされます。@c
+与える実数値は、そのオブジェクトの X 方向の広がりの半分を単位とします。@c
+負値はオブジェクトを右に移動させ、正値はオブジェクトを左に移動させます。@c
+値が @code{0} であればそのオブジェクトは親オブジェクトの参照ポイントに@c
+中央揃えされ、@c
+値が @code{-1} であればそのオブジェクトの左端が親オブジェクトの参照ポイントに@c
+揃えられ、@c
+値が @code{1} であればそのオブジェクトの右端が親オブジェクトの参照ポイントに@c
+揃えられます。@c
+記号 @code{LEFT}, @code{CENTER}, それに @code{RIGHT} は@c
+それぞれ @w{@code{-1}, @code{0}, それに @code{1}} に対応します。
+
+通常、@code{\override} コマンドを用いて @code{self-alignment-X} の値を@c
+変更しますが、@c
+@code{\tweak} コマンドを用いることで@c
+単一の音符に付けられている複数の注釈を個別に揃えることができます:
+
+@lilypond[quote,verbatim,relative=1]
+a'
+-\tweak #'self-alignment-X #-1
+^"left-aligned"
+-\tweak #'self-alignment-X #0
+^"center-aligned"
+-\tweak #'self-alignment-X #RIGHT
+^"right-aligned"
+-\tweak #'self-alignment-X #-2.5
+^"aligned further to the right"
+@end lilypond
+
+@emph{オブジェクトを自動的に垂直方向に揃える}
+
+オブジェクトの @code{Y-offset} プロパティに
+@code{ly:self-alignment-interface::y-aligned-on-self} がセットされていれば、@c
+水平方向の揃えと同じように、垂直方向に揃えることができます。@c
+しかしながら、垂直方向の揃えには他のメカニズムも関与します:
+@code{Y-offset} の値は、垂直方向の揃えに関与する変数の 1 つに過ぎません。@c
+このことにより、いくつかのオブジェクトの @code{Y-offset} 値の調整は@c
+ややこしくなります。@c
+単位はそのオブジェクトの垂直方向の広がりの半分です。@c
+通常これは非常に小さいため、非常に大きな数値が必要になる可能性があります。@c
+値が @code{-1} であればそのオブジェクトの下端が親オブジェクトの参照ポイントに@c
+揃えられ、@c
+値が @code{0} であればそのオブジェクトの中央が親オブジェクトの参照ポイントに@c
+揃えられ、@c
+値が @code{1} であればそのオブジェクトの上端が親オブジェクトの参照ポイントに@c
+揃えられます。@c
+記号 @code{DOWN}, @code{CENTER}, それに @code{UP} は@c
+それぞれ @w{@code{-1}, @code{0}, それに @code{1}} に対応します。
+
+@emph{オブジェクトを自動的に両方向に揃える}
+
+@code{X-offset} と @code{Y-offset} の両方の設定を行うことで、@c
+オブジェクトの水平方向と垂直方向の揃えを同時に行うことができます。
+
+以下の例は、運指記号を符頭に近づけるための調整方法を示しています。
+
+@c KEEP LY
+@lilypond[quote,verbatim,relative=2]
+a
+-\tweak #'self-alignment-X #0.5  % 左方向に移動させます
+-\tweak #'Y-offset #ly:self-alignment-interface::y-aligned-on-self
+-\tweak #'self-alignment-Y #-1  % 上方向に移動させます
+-3  % 3 の指
+@end lilypond
+
+@ignore
+@unnumberedsubsubsec Using the @code{aligned-on-parent} procedures
+
+@c Cannot document as they do not seem to operate consistently on all objects -td
+@c TODO investigate further
+
+The @code{aligned-on-parent} procedures are used in the same way
+as the @code{aligned-on-self} procedures, they difference being
+that they permit an object to be aligned with the @emph{edges} of
+the parent rather than the parent's reference point.  The following
+example shows the difference:
+
+@c TODO Add example
+
+@lilypond[verbatim,quote]
+@end lilypond
+
+@end ignore
+
+@ignore
+@unnumberedsubsubsec Using the @code{centered-on-parent} procedures
+
+@c Cannot document as they do not seem to operate consistently on all objects -td
+@c TODO investigate further
+
+@end ignore
+
+@c TODO The align-interface, BassFigureAlignment and VerticalAlignment
+
+@node break-alignable-interface を使用する
+@unnumberedsubsubsec @code{break-alignable-interface} を使用する
+@translationof Using the @code{break-alignable-interface}
+
+@cindex align to objects (オブジェクトに揃える)
+@cindex break-align-symbols
+
+リハーサル記号と小節番号を小節線ではなく、@c
+記譜オブジェクトに揃えることができます。@c
+対象となる記譜オブジェクトには、@code{ambitus},
+@code{breathing-sign}, @code{clef}, @code{custos}, @code{staff-bar},
+@code{left-edge}, @code{key-cancellation}, @code{key-signature}, それに
+@code{time-signature} があります。
+
+デフォルトでは、@c
+リハーサル記号と小節番号はオブジェクトの上で水平方向に中央揃えされます:
+
+@c KEEP LY
+@lilypond[verbatim,quote,relative=1]
+% リハーサル記号は音部記号の上に中央揃えされます
+\override Score.RehearsalMark #'break-align-symbols = #'(clef)
+\key a \major
+\clef treble
+\mark "↓"
+e1
+% リハーサル記号は拍子記号の上に中央揃えされます
+\override Score.RehearsalMark #'break-align-symbols = #'(time-signature)
+\key a \major
+\clef treble
+\time 3/4
+\mark "↓"
+e2.
+% リハーサル記号はブレス記号の上に中央揃えされます
+\override Score.RehearsalMark #'break-align-symbols = #'(breathing-sign)
+\key a \major
+\clef treble
+\time 4/4
+e1
+\breathe
+\mark "↓"
+@end lilypond
+
+揃えの対象となり得るオブジェクトのリストを指定することができます。@c
+揃えを行う時点で対象リストの中にあるオブジェクトのいくつかが不可視である
+-- @code{break-visibility} の設定や、@c
+調号と音部に対する明示的な可視性の設定により --
+場合、リハーサル記号あるいは小節番号はリストの中にある@c
+最初の可視のオブジェクトに揃えられます。@c
+リストの中にあるオブジェクトがすべて不可視である場合、小節線に揃えられます。@c
+小節線が不可視である場合、小節線があるはずの場所に揃えられます。
+
+@c KEEP LY
+@lilypond[verbatim,quote,relative=1]
+% リハーサル記号は調号の上に中央揃えされます
+\override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
+\key a \major
+\clef treble
+\mark "↓"
+e1
+% リハーサル記号は音部記号の上に中央揃えされます
+\set Staff.explicitKeySignatureVisibility = #all-invisible
+\override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
+\key a \minor
+\clef bass
+\mark "↓"
+gis,,1
+% リハーサル記号は小節線の上に中央揃えされます
+\set Staff.explicitKeySignatureVisibility = #all-invisible
+\set Staff.explicitClefVisibility = #all-invisible
+\override Score.RehearsalMark #'break-align-symbols = #'(key-signature clef)
+\key a \major
+\clef treble
+\mark "↓"
+e''1
+@end lilypond
+
+以下の例で示すように、@c
+記譜オブジェクトに対するリハーサル記号の揃えを変更することができます。@c
+複数の譜を持つ楽譜では、この設定はすべての譜に適用されます。
+
+@c KEEP LY
+@lilypond[verbatim,quote,relative=1]
+% RehearsalMark は KeySignature の上に中央揃えされます
+\override Score.RehearsalMark #'break-align-symbols = #'(key-signature)
+\key a \major
+\clef treble
+\time 4/4
+\mark "↓"
+e1
+% RehearsalMark は KeySignature の左端に揃えられます
+\once \override Score.KeySignature #'break-align-anchor-alignment = #LEFT
+\mark "↓"
+\key a \major
+e
+% RehearsalMark は KeySignature の右端に揃えられます
+\once \override Score.KeySignature #'break-align-anchor-alignment = #RIGHT
+\key a \major
+\mark "↓"
+e
+@end lilypond
+
+また、リハーサル記号を左端に揃えて、@c
+さらに任意の量だけ右あるいは左にずらすことができます。@c
+単位は譜スペースです:
+
+@c KEEP LY
+@lilypond[verbatim,quote,relative=1]
+% リハーサル記号は調号の左端に揃えられて
+% さらに 3.5 譜スペース右にずらされます
+\override Score.RehearsalMark #'break-align-symbols = #'(key-signature)
+\once \override Score.KeySignature #'break-align-anchor = #3.5
+\key a \major
+\mark "↓"
+e1
+% リハーサル記号は調号の左端に揃えられて
+% さらに 2 譜スペース左にずらされます
+\once \override Score.KeySignature #'break-align-anchor = #-2
+\key a \major
+\mark "↓"
+e1
+@end lilypond
+
+
+@node グラフィカル オブジェクトを垂直方向にグループ化する
+@subsection グラフィカル オブジェクトを垂直方向にグループ化する
+@translationof Vertical grouping of grobs
+
+@c FIXME Expand this section
+
+VerticalAlignment グラフィカル オブジェクトと
+VerticalAxisGroup グラフィカル オブジェクトは対で機能します。@c
+VerticalAxisGroup は Staff, Lyrics, 等のような@c
+異なるグラフィカル オブジェクトをグループにまとめます。@c
+それから、VerticalAlignment が
+VerticalAxisGroup によってグループ化されたグラフィカル オブジェクトを@c
+垂直方向に揃えます。@c
+通常、楽譜には VerticalAlignment は 1 つしかありませんが、@c
+Staff, Lyrics 等はそれ自体でそれぞれに VerticalAxisGroup を持ちます。
+
+
+@node ステンシルを変更する
+@subsection ステンシルを変更する
+@translationof Modifying stencils
+
+すべてのレイアウト オブジェクトは、@c
+@code{grob-interface} の一部である @code{stencil} プロパティを持ちます。@c
+通常、デフォルトでこのプロパティには、@c
+出力でそのオブジェクトを具現化する記号を描画するための@c
+特有の関数がセットされています。@c
+例えば、@code{MultiMeasureRest} オブジェクトの @code{stencil} プロパティに@c
+対する標準設定は、@code{ly:multi-measure-rest::print} です。
+
+@code{stencil} プロパティを変更して異なる描画関数を参照させることにより、@c
+オブジェクトの標準記号を置き換えることができます。@c
+これには LilyPond 内部機能についての高い知識が求められます。@c
+しかしながら、多くの場合にまずまずの結果を生み出すもっと簡単な方法があります。
+
+簡単な方法では、@code{stencil} プロパティにテキストを描画する関数
+-- @code{ly:text-interface::print} -- をセットし、@c
+必要な記号を生み出すマークアップ テキストを保持するよう設定された
+ @code{text} プロパティ与えます。@c
+マークアップの自由度の高さにより、多くのことを達成できます。@c
+詳細は、@ref{マークアップ内部でのグラフィック記譜法} を参照してください。
+
+以下の例では、この方法を用いて符頭記号を内部に×を持つ円に変更しています。
+
+@lilypond[verbatim,quote]
+XinO = {
+  \once \override NoteHead  #'stencil = #ly:text-interface::print
+  \once \override NoteHead #'text = \markup {
+    \combine
+      \halign #-0.7 \draw-circle #0.85 #0.2 ##f
+      \musicglyph #"noteheads.s2cross"
+  }
+}
+\relative c'' {
+  a a \XinO a a
+}
+@end lilypond
+
+@code{\musicglyph} マークアップ コマンドには、@c
+Feta フォントに含まれる任意の図柄を提供することができます。@c
+@ref{The Feta font} を参照してください。
+
+@c TODO Add inserting eps files or ref to later
+
+@c TODO Add inserting Postscript or ref to later
+
+
+@seealso
+記譜法リファレンス:
+@ref{マークアップ内部でのグラフィック記譜法},
+@ref{テキストをフォーマットする},
+@ref{Text markup commands},
+@ref{The Feta font}
+
+
+@node 形状を変更する
+@subsection 形状を変更する
+@translationof Modifying shapes
+
+@menu
+* タイとスラーの形状を変更する::
+@end menu
+
+@node タイとスラーの形状を変更する
+@unnumberedsubsubsec タイとスラーの形状を変更する
+@translationof Modifying ties and slurs
+
+@cindex slurs, modifying (スラーの形状を変更する)
+@cindex ties, modifying (タイの形状を変更する)
+@cindex Bézier curves (ベジエ曲線)
+@cindex Bézier control points (ベジエ曲線の制御ポイント)
+
+タイ、スラー、それにフレージング スラーは 3 次のベジエ曲線として描かれます。@c
+自動的に算出されるタイあるいはスラーの形状が最適ではない場合、@c
+3 次ベジエ曲線を定義するのに必要な 4 つの制御ポイントを@c
+明示的に指定することによって、形状を変更することができます。
+
+3 次あるいは 3 乗のベジエ曲線は、4 つの制御ポイントによって定義されます。@c
+1 番目と 4 番目の制御ポイントは曲線の始点と終点になります。@c
+間にある 2 つの制御ポイントは曲線の形状を定義します。@c
+Web でベジエ曲線が描かれる様子を示すアニメーションを@c
+見つけることができるでしょう。@c
+しかしながら、以下の記述も役に立つかもしれません。@c
+ベジエ曲線は最初の制御ポイントから 2 番目の制御ポイントに進み、@c
+徐々に 3 番目の制御ポイントの方へ向きを変えながら
+4 番目の制御ポイントの方へ向かい続け、@c
+3 番目の制御ポイントから 4 番目の制御ポイントに到達します。@c
+ベジエ曲線は 4 つの制御ポイントからなる四角形の中に納まります。
+
+ここで、@c
+タイが最適化されず、@code{\tieDown} が役に立たないケースを例として挙げます。
+
+@lilypond[verbatim,quote,relative=1]
+<<
+  { e1 ~ e }
+\\
+  { r4 <g c,> <g c,> <g c,> }
+>>
+@end lilypond
+
+以下のようにタイの制御ポイントを手動で変更することにより、@c
+このタイの形状を改善することができます。
+
+ベジエ制御ポイントの座標は譜スペースを単位として指定されます。@c
+X@tie{}座標はそのタイあるいはスラーを取り付けられる音符の参照ポイントからの@c
+相対座標であり、Y@tie{}座標は譜の中央線からの相対座標です。@c
+制御ポイント座標は 10 進数 (実数) のペアを 4 つ持つリストとして設定されます。@c
+最適な制御ポイントを決定するための手順は、
+2 つの終点の座標を見積もり、それから 2 つの中間ポイントを推測することで、@c
+制御ポイントの座標を決定します。@c
+最適値はトライ&エラーで見つけ出します。
+
+左右対称の曲線にするには制御ポイントを左右対称に配置する必要があるということを@c
+覚えておくと役に立ちます。@c
+また、ベジエ曲線の制御ポイントに平行移動、回転、それに拡大縮小などの変換を@c
+適用することにより、@c
+その曲線を変換できるという特性があるとも覚えておいてください。
+
+上記の実例として、以下の例のオーバライドで満足のいくタイが得られています。@c
+オーバライドを配置する場所
+-- タイ (あるいはスラー) が開始する音符の直前に配置する必要があります --
+に注意してください。
+
+@lilypond[verbatim,quote,relative=1]
+<<
+  {
+    \once \override Tie
+      #'control-points = #'((1 . -1) (3 . 0.6) (12.5 . 0.6) (14.5 . -1))
+     e1 ~ e
+  }
+\\
+  { r4 <g c,> <g c,> <g c,> }
+>>
+@end lilypond
+
+@knownissues
+
+同じ音楽タイミングに複数のタイあるいはスラーが存在する場合、@c
+@code{control-points} プロパティを変更しても@c
+それらの形状を変更することはできません。@c
+@code{\tweak} コマンドを用いたとしても変更できません。@c
+しかしながら、@code{TieColumn} の @code{tie-configuration} プロパティを@c
+オーバライドすることで、タイの垂直方向の位置と領域を変更することができます。
+
+@seealso
+内部リファレンス:
+@rinternals{TieColumn}
+
+
+@node 音楽関数を使用する
+@section 音楽関数を使用する
+@translationof Using music functions
+
+@c TODO -- add @seealso, etc. to these subsections
+
+調整を異なる音楽表記に再利用する必要がある場合、@c
+その調整を音楽関数にしておくと便利です。@c
+このセクションでは、@emph{置換} 関数についてだけ議論します。@c
+置換関数は変数を LilyPond 入力コードに置き換えます。@c
+他のもっと複雑な関数については、@rextend{Music functions} で記述されています。
+
+@menu
+* 置換関数の構文::
+* 置換関数の例::
+@end menu
+
+@node 置換関数の構文
+@subsection 置換関数の構文
+@translationof Substitution function syntax
+
+変数を LilyPond コードに置換する関数を作成することは簡単にできます。@c
+置換関数の一般的な形式は以下のようなものです:
+
+@example
+function =
+#(define-music-function
+     (parser location @var{arg1} @var{arg2} @dots{})
+     (@var{type1?} @var{type2?} @dots{})
+   #@{
+     @var{@dots{}music@dots{}}
+   #@})
+@end example
+
+@noindent
+ここで
+
+@multitable @columnfractions .33 .66
+@item @code{@var{argN}}
+@tab @var{n} 番目の引数
+
+@item @code{@var{typeN?}}
+@tab @code{@var{argN}} が @code{#t} を返す Scheme の @emph{型述語} (type predicate)。
+
+@item @code{@var{@dots{}music@dots{}}}
+@tab 通常の LilyPond 入力。@code{$} を用いて引数を参照します
+(例: @samp{$arg1})。
+@end multitable
+
+です。
+
+@ignore
+共通の変数タイプについては @ref{共通の引数タイプ} で記述されています。@c
+変数タイプについてのもっと完全な記述は
+@rextend{Music function syntax} にあります。
+@end ignore
+
+引数 @code{parser} と @code{location} を省略することはできず、@c
+@rextend{Music function syntax} で記述されている高度な状況で@c
+使用されることがあります。
+置換関数において、必ずこれらの引数を記述してください。
+
+引数として、型述語のリストも必須です。@c
+音楽関数で用いられる一般的な型述語には下記のものがあります:
+
+@example
+boolean?
+cheap-list?  @emph{(}@q{list?}@emph{ の代わりに用いることで、処理を高速にします)}
+ly:music?
+markup?
+number?
+pair?
+string?
+symbol?
+@end example
+
+@noindent
+利用可能な型述語のリストは、@c
+@ref{Predefined type predicates} を参照してください。@c
+ユーザが型述語を定義することもできます。
+
+
+@seealso
+
+記譜法リファレンス:
+@ref{Predefined type predicates}
+
+拡張:
+@rextend{Music function syntax}
+
+インストールされているファイル:
+@file{lily/music-scheme.cc},
+@file{scm/c++.scm},
+@file{scm/lily.scm}
+
+
+@ignore
+@node 共通の引数タイプ
+@subsection 共通の引数タイプ
+@translationof Common argument types
+
+エラー チェックを考慮して、@c
+音楽関数に渡される各引数タイプを定義しておく必要があります。@c
+共通の引数タイプのいくつかを以下の表で示します。@c
+
+以下の入力タイプを音楽関数で変数として使用することができます。@c
+このリストは完全なものではありません。@c
+取り得る変数タイプについての更なる情報は、
+@rextend{Music function syntax} にあります。
+
+@multitable @columnfractions .33 .66
+@headitem 入力タイプ          @tab @var{vari-type?} での記述方法
+@item 整数                    @tab @code{integer?}
+@item 浮動小数点数 (10 進数)  @tab @code{number?}
+@item テキスト文字列          @tab @code{string?}
+@item マークアップ            @tab @code{markup?}
+@item 音楽表記                @tab @code{ly:music?}
+@item Scheme ペア             @tab @code{pair?}
+@end multitable
+
+@seealso
+
+LilyPond の拡張:
+@rextend {Music function syntax}
+
+インストール済みファイル:
+@file{lily/music-scheme.cc},
+@file{scm/c++.scm}
+@end ignore
+
+
+@c ここから L3796
+@node 置換関数の例
+@subsection 置換関数の例
+@translationof Substitution function examples
+
+このセクションでは、置換関数の例をいくつか紹介します。@c
+高度なことはしていませんが、シンプルな置換関数を実現する方法を示しています。
+
+最初の例では、@c
+@code{TextScript} のパディング設定を容易にするための関数が定義されています:
+
+@lilypond[quote,verbatim,ragged-right]
+padText =
+#(define-music-function
+     (parser location padding)
+     (number?)
+   #{
+     \once \override TextScript #'padding = $padding
+   #})
+
+\relative c''' {
+  c4^"piu mosso" b a b
+  \padText #1.8
+  c4^"piu mosso" d e f
+  \padText #2.6
+  c4^"piu mosso" fis a g
+}
+@end lilypond
+
+数値のほかに、音符などの音楽表記を音楽関数への引数にすることができます:
+
+@c TODO: use a better example (the music argument is redundant).
+
+@lilypond[quote,verbatim,ragged-right]
+custosNote =
+#(define-music-function
+     (parser location note)
+     (ly:music?)
+   #{
+     \once \override Voice.NoteHead #'stencil =
+       #ly:text-interface::print
+     \once \override Voice.NoteHead #'text =
+       \markup \musicglyph #"custodes.mensural.u0"
+     \once \override Voice.Stem #'stencil = ##f
+     $note
+   #})
+
+\relative c' { c4 d e f \custosNote g }
+@end lilypond
+
+複数の引数をとる置換関数を定義することもできます:
+
+@lilypond[quote,verbatim,ragged-right]
+tempoPadded =
+#(define-music-function
+     (parser location padding tempotext)
+     (number? string?)
+   #{
+     \once \override Score.MetronomeMark #'padding = $padding
+     \tempo \markup { \bold $tempotext }
+   #})
+
+\relative c'' {
+  \tempo \markup { "Low tempo" }
+  c4 d e f g1
+  \tempoPadded #4.0 #"High tempo"
+  g4 f e d c1
+}
+@end lilypond
+
+@c TODO: add appropriate @@ref's here.
index f9aeb39776caa247b793aa1ba52425816fff6882..c1c5644cd3837d2dd956095f11688835b427c8e5 100644 (file)
@@ -206,13 +206,13 @@ c4-1 d-2 f-4 c^\markup { \finger "2 - 3" }
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {controlling-the-placement-of-chord-fingerings.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {allowing-fingerings-to-be-printed-inside-the-staff.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {avoiding-collisions-with-chord-fingerings.ly}
 
 
@@ -506,7 +506,7 @@ c2 \parenthesize r
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {default-direction-of-stems-on-the-center-line-of-the-staff.ly}
 
 
@@ -665,7 +665,7 @@ altered:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {grid-lines--changing-their-appearance.ly}
 
 
index 5f8bdce6bcbbf691abf6c4a9520567c6526bd092..9e0230f6d578c9c62a2a2db8694d7ea9d8ff14dc 100644 (file)
@@ -194,13 +194,13 @@ R1\fermataMarkup
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {modifying-default-values-for-articulation-shorthand-notation.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {controlling-the-vertical-ordering-of-scripts.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-a-delayed-turn.ly}
 
 @seealso
@@ -473,26 +473,26 @@ c4\< d\! e\> d\! |
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {setting-hairpin-behavior-at-bar-lines.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {setting-the-minimum-length-of-hairpins.ly}
 
 @c 未訳
 @cindex al niente (アル ニエンテ)
 @cindex niente, al (アル ニエンテ)
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {printing-hairpins-using-al-niente-notation.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {vertically-aligned-dynamics-and-textscripts.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {hiding-the-extender-line-for-text-dynamics.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-text-and-spanner-styles-for-text-dynamics.ly}
 
 
@@ -778,13 +778,13 @@ g4( e c2)
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {using-double-slurs-for-legato-chords.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {positioning-text-markups-inside-slurs.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {making-slurs-with-complex-dash-structure.ly}
 
 @seealso
@@ -973,7 +973,7 @@ divisiones (ディビジョン: 区切り) がサポートされています。@
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-breath-mark-symbol.ly}
 
 @c 未訳
@@ -981,7 +981,7 @@ divisiones (ディビジョン: 区切り) がサポートされています。@
 @cindex railroad tracks
 
 @c 未訳
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {inserting-a-caesura.ly}
 
 
@@ -1027,7 +1027,7 @@ Fall と Doit を記述する際、@c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adjusting-the-shape-of-falls-and-doits.ly}
 
 
@@ -1074,7 +1074,7 @@ c2\glissando c,
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {contemporary-glissando.ly}
 
 
@@ -1188,13 +1188,13 @@ c2\glissando c,
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-cross-staff-arpeggios-in-a-piano-staff.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-cross-staff-arpeggios-in-other-contexts.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-arpeggios-across-notes-in-different-voices.ly}
 
 
index 280b93b7de1071d58f03641dafa4baa42e1bcad5..b530ab8cfa8b65413d697b22277a0807aab3cc9d 100644 (file)
@@ -2149,7 +2149,7 @@ lilypond … -dmidi-extension=midi lilyFile.ly
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-midi-output-to-one-channel-per-voice.ly}
 
 @knownissues
index 85073fc983eb698b8ecf1b4331a2b51b22e2172d..44969233aa0918a9d6395c38d8e10f3828e48e3b 100644 (file)
@@ -397,10 +397,10 @@ cis
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle,ragged-right]
+@lilypondfile[verbatim,quote,texidoc,doctitle,ragged-right]
 {hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {preventing-extra-naturals-from-being-automatically-added.ly}
 
 @seealso
@@ -799,7 +799,7 @@ musicInBflat = @{ e4 @dots{} @}
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {transposing-pitches-with-minimum-accidentals-smart-transpose.ly}
 
 
@@ -1217,7 +1217,7 @@ tablatures} で説明します。
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {tweaking-clef-properties.ly}
 
 
@@ -1315,10 +1315,10 @@ fis
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {non-traditional-key-signatures.ly}
 
 
@@ -1375,12 +1375,12 @@ a2 b
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {ottava-text.ly}
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {ottava-text.ly}
 
 
@@ -2607,7 +2607,7 @@ musicB = {
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {dodecaphonic-style-accidentals-for-each-note-including-naturals.ly}
 
 
@@ -2723,13 +2723,13 @@ forget = #(define-music-function (parser location music) (ly:music?) #{
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adding-ambitus-per-voice.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {ambitus-with-multiple-voices.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-ambitus-gap.ly}
 
 
@@ -2910,7 +2910,7 @@ c b < g \xNote c f > b
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {numbers-as-easy-note-heads.ly}
 
 
@@ -3032,7 +3032,7 @@ a2 b c d \break
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {applying-note-head-styles-depending-on-the-step-of-the-scale.ly}
 
 すべての符頭スタイルを調べるには、@ref{Note head styles} を参照してください。
index b41cb45f0bb20db17c15b243f7c8075f40e7f57a..ed9364e8d78e88dae8b8af7d7869cccb3ea6ca72 100644 (file)
@@ -267,13 +267,13 @@ c1
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {shortening-volta-brackets.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adding-volta-brackets-to-additional-staves.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {setting-the-double-repeat-default-for-volte.ly}
 
 @seealso
@@ -436,7 +436,7 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } }
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {printing-a-repeat-sign-at-the-beginning-of-a-piece.ly}
 
 
@@ -609,13 +609,13 @@ c1
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {percent-repeat-counter.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {percent-repeat-count-visibility.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {isolated-percent-repeats.ly}
 
 
@@ -713,7 +713,7 @@ c: c:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {cross-staff-tremolos.ly}
 
 
index 1ab0753ef29726a8f94125ac5c2cc2e73ac16c2a..a78d3d3935deb7174bfac2fcf1e3391f0d046a2f 100644 (file)
@@ -149,7 +149,7 @@ a4 b c4. b8 a4. b4.. c8.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-the-number-of-augmentation-dots-per-note.ly}
 
 
@@ -256,23 +256,23 @@ c4 \times 4/5 { f8 e f \times 2/3 { e[ f g] } } f4
 @funindex tupletNumberFormatFunction
 @funindex tupletSpannerDuration
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {entering-several-tuplets-using-only-one--times-command.ly}
 
 @cindex Tuplet number changes (連符の数の変更)
 
 @funindex TupletNumber
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-the-tuplet-number.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {non-default-tuplet-numbers.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {controlling-tuplet-bracket-visibility.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {permitting-line-breaks-within-beamed-tuplets.ly}
 
 
@@ -550,10 +550,10 @@ c2 ~ c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {using-ties-with-arpeggios.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {engraving-ties-manually.ly}
 
 
@@ -661,7 +661,7 @@ a4\rest d4\rest
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {rest-styles.ly}
 
 
@@ -937,16 +937,16 @@ R1^"right"
 @cindex rest, church
 @cindex kirchenpausen
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-form-of-multi-measure-rests.ly}
 
 @cindex multi-measure rests, positioning
 @cindex positioning multi-measure rests
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {positioning-multi-measure-rests.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {multi-measure-rest-markup.ly}
 
 
@@ -1224,16 +1224,16 @@ c c c c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-the-time-signature-without-affecting-the-beaming.ly}
 
 @cindex compound time signatures
 @cindex time signature, compound
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {compound-time-signatures.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly}
 
 
@@ -1316,15 +1316,15 @@ d4 g e c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {printing-metronome-and-rehearsal-marks-below-the-staff.ly}
 
 @c perhaps also an example of how to move it horizontally?
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-tempo-without-a-metronome-mark.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-metronome-marks-in-markup-mode.ly}
 
 詳細は @ref{Formatting text} を参照してください。
@@ -1678,7 +1678,7 @@ LilyPond は改行と改ページを小節線の箇所にのみ挿入します
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {compound-time-signatures.ly}
 
 
@@ -1841,7 +1841,7 @@ LilyPond は改行と改ページを小節線の箇所にのみ挿入します
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {guitar-strum-rhythms.ly}
 
 
@@ -1933,17 +1933,17 @@ c16 c8
 
 @funindex breakable
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {beams-across-line-breaks.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-beam-knee-gap.ly}
 
 @cindex \partcombine and \autoBeamOff (\partcombine と \autoBeamOff)
 @cindex \autoBeamOff and \partcombine (\autoBeamOff と \partcombine)
 
 
-@lilypondfile [verbatim, lilyquote, ragged-right, texidoc, doctitle]
+@lilypondfile [verbatim, quote, ragged-right, texidoc, doctitle]
 {partcombine-and-autobeamoff.ly}
 
 
@@ -2214,7 +2214,7 @@ c16 c c |
 
 @cindex beams, subdividing (連桁をサブ グループ化する)
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {subdividing-beams.ly}
 
 @cindex measure groupings (小節をグループ化する)
@@ -2222,13 +2222,13 @@ c16 c c |
 @cindex grouping beats (拍をグループ化する)
 @cindex measure sub-grouping (小節をサブ グループ化する)
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {conducting-signs,-measure-grouping-signs.ly}
 
 @cindex beam, last in score (楽譜の最後の連桁)
 @cindex beam, last in polyphonic voice (多声ボイスの最後の連桁)
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {beam-endings-in-score-context.ly}
 
 
@@ -2336,7 +2336,7 @@ g16 a]
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {flat-flags-and-beam-nibs.ly}
 
 
@@ -2748,24 +2748,24 @@ c1 | c | c | c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-the-bar-number-for-the-first-measure.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-bar-numbers-at-regular-intervals.ly}
 
 @cindex measure number, format
 @cindex bar number, format
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-bar-numbers-inside-boxes-or-circles.ly}
 
 @cindex bar number alignment
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {aligning-bar-numbers.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {removing-bar-numbers-from-a-score.ly}
 
 
@@ -3166,16 +3166,16 @@ c1 \afterGrace d1 { c16[ d] } c1
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {using-grace-note-slashes-with-normal-heads.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {tweaking-grace-layout-within-music.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {redefining-grace-note-global-defaults.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {positioning-grace-notes-with-floating-space.ly}
 
 
index 62f598329b351b46faaa5f020a51976805fb5c30..ac67558dfcdeb54a766a8443ea4aa8100b76841c 100644 (file)
@@ -735,10 +735,10 @@ etc.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {additional-voices-to-avoid-collisions.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {forcing-horizontal-shift-of-notes.ly}
 
 
@@ -933,10 +933,10 @@ instrumentTwo = \relative c' {
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {combining-two-parts-on-the-same-staff.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-partcombine-texts.ly}
 
 
index e18079f337d531beea8de87743a2e37e0d966574..ccbd474b2f7a9570eaffbdfda07e8262f0b42ad3 100644 (file)
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {use-square-bracket-at-the-start-of-a-staff-group.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {display-bracket-with-only-one-staff-in-a-system.ly}
 
 @c 未訳
 @cindex transcription of mensural music
 @cindex mensural music, transcription of
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {mensurstriche-layout-bar-lines-between-the-staves.ly}
 
 
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {nesting-staves.ly}
 
 
@@ -526,7 +526,7 @@ e4 d c2
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {making-some-staff-lines-thicker-than-the-others.ly}
 
 
@@ -691,7 +691,7 @@ e4 d c2
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {vertically-aligning-ossias-and-lyrics.ly}
 
 
@@ -806,7 +806,7 @@ e4 d c2
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {removing-the-first-empty-line.ly}
 
 
@@ -925,15 +925,15 @@ d4 g e c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {printing-metronome-and-rehearsal-marks-below-the-staff.ly}
 
 @c perhaps also an example of how to move it horizontally?
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-tempo-without-a-metronome-mark.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-metronome-marks-in-markup-mode.ly}
 
 更なる詳細は、@ref{テキストをフォーマットする} を参照してください。
@@ -1235,7 +1235,7 @@ clarinet = \relative c'' {
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {quoting-another-voice-with-transposition.ly}
 
 @cindex note-event
@@ -1246,7 +1246,7 @@ clarinet = \relative c'' {
 @funindex quotedEventTypes
 @funindex quotedCueEventTypes
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {quoting-another-voice.ly}
 
 @seealso
index 7a11517b44541acb2f6e07079b2f9aad84aa2a93..aa1d7e54c2d3c36b56cc663d6c1d32b2819ea814 100644 (file)
@@ -199,10 +199,10 @@ LilyPond が処理できるテキスト スパナは 1 ボイスにつき、1 
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {dynamics-text-spanner-postfix.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {dynamics-custom-text-spanner-postfix.ly}
 
 
@@ -291,13 +291,13 @@ c  c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-marks-at-the-end-of-a-line.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {aligning-marks-with-various-notation-objects.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-marks-on-every-staff.ly}
 
 
@@ -380,7 +380,7 @@ c  c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {stand-alone-two-column-markup.ly}
 
 @seealso
index 1b3486611f966a5f7843a473f3b8419545c4c60d..ff9088f5ff698a9ec191183d2a260e97816f5e11 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{最終更新日 Wed Jul 13 10:59:12 UTC 2011
+@emph{最終更新日 Sat Aug 13 14:15:49 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -111,7 +111,7 @@ LilyPond --- \TITLE\
 @item
 2 一般的な記譜法
 @*
-4184
+4187
 @tab Yoshiki Sawada
 @tab 
 @tab 
@@ -393,7 +393,7 @@ partially
 @item
 1.4 繰り返し
 @*
-945
+944
 @tab Yoshiki Sawada
 @tab 
 @tab 
@@ -410,7 +410,7 @@ partially
 @ifhtml
 
 @html
-<span style="background-color: #39ff22">partially</span>
+<span style="background-color: #40fe23">partially</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -447,7 +447,7 @@ partially
 @item
 1.6 譜の記譜法
 @*
-2345
+2341
 @tab Yoshiki Sawada
 @tab 
 @tab 
@@ -464,7 +464,7 @@ partially
 @ifhtml
 
 @html
-<span style="background-color: #9eff30">partially</span>
+<span style="background-color: #a5ff31">partially</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -517,6 +517,60 @@ partially
 @tab 
 @ifhtml
 
+@html
+<span style="background-color: #1fff1f">はい</span>
+@end html
+@end ifhtml
+@ifnothtml
+はい
+@end ifnothtml
+@tab post-GDP
+@item
+2 入出力全般
+@*
+7686
+@tab Yoshiki Sawada
+@tab 
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">はい</span>
+@end html
+@end ifhtml
+@ifnothtml
+はい
+@end ifnothtml
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">はい</span>
+@end html
+@end ifhtml
+@ifnothtml
+はい
+@end ifnothtml
+@tab post-GDP
+@item
+3 スペースの問題
+@*
+11087
+@tab Yoshiki Sawada
+@tab 
+@tab 
+@ifhtml
+
+@html
+<span style="background-color: #1fff1f">はい</span>
+@end html
+@end ifhtml
+@ifnothtml
+はい
+@end ifnothtml
+@tab 
+@ifhtml
+
 @html
 <span style="background-color: #1fff1f">はい</span>
 @end html
@@ -594,7 +648,7 @@ LilyPond --- \TITLE\
 @item
 1 @command{lilypond} を実行する
 @*
-3622
+3681
 @tab Yoshiki Sawada
 @tab 
 @tab 
@@ -611,11 +665,11 @@ LilyPond --- \TITLE\
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">はい</span>
+<span style="background-color: #25fe1f">partially</span>
 @end html
 @end ifhtml
 @ifnothtml
-はい
+partially
 @end ifnothtml
 @tab post-GDP
 @item
@@ -648,7 +702,7 @@ LilyPond --- \TITLE\
 @item
 3 @command{lilypond-book}: Integrating text and music
 @*
-3952
+3978
 @tab Yoshiki Sawada
 @tab 
 @tab 
@@ -675,7 +729,7 @@ partially
 @item
 4 外部プログラム
 @*
-2170
+2180
 @tab Yoshiki Sawada
 @tab 
 @tab 
@@ -692,11 +746,11 @@ partially
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">はい</span>
+<span style="background-color: #25fe1f">partially</span>
 @end html
 @end ifhtml
 @ifnothtml
-はい
+partially
 @end ifnothtml
 @tab post-GDP
 @item
@@ -855,7 +909,7 @@ partially
 @item
 マニュアル
 @*
-1203
+1214
 @tab Yoshiki Sawada
 @tab 
 @tab 
@@ -882,7 +936,7 @@ partially
 @item
 コミュニティ
 @*
-1755
+1888
 @tab Yoshiki Sawada
 @tab 
 @tab 
@@ -899,11 +953,11 @@ partially
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">はい</span>
+<span style="background-color: #40fe23">partially</span>
 @end html
 @end ifhtml
 @ifnothtml
-はい
+partially
 @end ifnothtml
 @tab pre-GDP
 @end multitable
index 0d9e18923e895387fd022f7b961ff7d01fc1ab20..fff9ab67e7b7351e003138147fe8dcf5e07349e3 100644 (file)
@@ -754,13 +754,6 @@ is called with @option{--header=@/texidoc@var{LANG}}, then
 @file{foo.texidoc@var{LANG}} will be included instead of
 @file{foo.texidoc}.
 
-@item lilyquote
-(Only for Texinfo output.)  This option is similar to quote, but only
-the music snippet (and the optional verbatim block implied by
-@code{verbatim} option) is put into a quotation block.  This option is
-useful if you want to @code{quote} the music snippet but not the
-@code{texidoc} documentation block.
-
 @item doctitle
 (Only for Texinfo output.) This option works similarly to
 @code{texidoc} option: if @command{lilypond} is called with the
index 55b6d984bcae059d6fda2d0585cee67a8dcb2c50..74044452154439af5c9ddee55eba908aca3474be 100644 (file)
@@ -197,7 +197,7 @@ aes4 c b c
 
 If the above seems confusing, consider this: if you were playing a
 piano, which key would you hit?  If you would press a black key,
-then you @emph{must} add @code{-is} or @code{-es} to the note
+then you @emph{must} add @w{@code{-is}} or @w{@code{-es}} to the note
 name!
 
 Adding all alterations explicitly might require a little more
index e9fc0f21e6e584e5fb8af20251511b94fa1dde2b..5aa53c6c4ee8806b1ae1fc86b71ba09777654efc 100644 (file)
@@ -34,23 +34,23 @@ beautiful printed scores!
 
 @appendixsubsec Notes only
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion]
 {single-staff-template-with-only-notes.ly}
 
 
 @appendixsubsec Notes and lyrics
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,addversion]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion]
 {single-staff-template-with-notes-and-lyrics.ly}
 
 @appendixsubsec Notes and chords
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {single-staff-template-with-notes-and-chords.ly}
 
 @appendixsubsec Notes, lyrics, and chords.
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {single-staff-template-with-notes,-lyrics,-and-chords.ly}
 
 
@@ -59,22 +59,22 @@ beautiful printed scores!
 
 @appendixsubsec Solo piano
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-simple.ly}
 
 @appendixsubsec Piano and melody with lyrics
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-melody-and-lyrics.ly}
 
 @appendixsubsec Piano centered lyrics
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-centered-lyrics.ly}
 
 @appendixsubsec Piano centered dynamics
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {piano-template-with-centered-dynamics.ly}
 
 
@@ -83,12 +83,12 @@ beautiful printed scores!
 
 @appendixsubsec String quartet
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {string-quartet-template-simple.ly}
 
 @appendixsubsec String quartet parts
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {string-quartet-template-with-separate-parts.ly}
 
 
@@ -97,37 +97,37 @@ beautiful printed scores!
 
 @appendixsubsec SATB vocal score
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template.ly}
 
 @appendixsubsec SATB vocal score and automatic piano reduction
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-automatic-piano-reduction.ly}
 
 @appendixsubsec SATB with aligned contexts
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly}
 
 @appendixsubsec SATB on four staves
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {satb-choir-template---four-staves.ly}
 
 @appendixsubsec Solo verse and two-part refrain
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {vocal-ensemble-template-with-verse-and-refrain.ly}
 
 @appendixsubsec Hymn tunes
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {hymn-template.ly}
 
 @appendixsubsec Psalms
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {anglican-psalm-template.ly}
 
 
@@ -135,7 +135,7 @@ beautiful printed scores!
 @appendixsec Orchestral templates
 
 @appendixsubsec Orchestra, choir and piano
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {orchestra,-choir-and-piano-template.ly}
 
 
@@ -145,12 +145,12 @@ beautiful printed scores!
 
 @appendixsubsec Transcription of mensural music
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {ancient-notation-template----modern-transcription-of-mensural-music.ly}
 
 @appendixsubsec Gregorian transcription template
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {ancient-notation-template----modern-transcription-of-gregorian-music.ly}
 
 
@@ -159,7 +159,7 @@ beautiful printed scores!
 
 @appendixsubsec Jazz combo
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {jazz-combo-template.ly}
 
 
index 40f46cf6759762ad27da16ba89e1b801480b44e8..a13fff3fe00d44c8d13b86d672f8a860502d1ba1 100644 (file)
@@ -219,7 +219,7 @@ we shall use just a few simple properties and values which are
 easily understood.
 
 For now, don't worry about the @code{#'}, which must precede the
-layout property, and the @code{#}, which must precede the value.
+layout property, and the@tie{}@code{#}, which must precede the value.
 These must always be present in exactly this form.  This is the
 most common command used in tweaking, and most of the rest of
 this chapter will be directed to presenting examples of how it is
@@ -584,7 +584,7 @@ at first, so we can be sure the command is working.  We get:
 @end example
 
 Don't forget the @code{#'} preceding the
-property name and a @code{#} preceding the new value!
+property name and a@tie{}@code{#} preceding the new value!
 
 The final question is, @q{Where should this command be
 placed?}  While you are unsure and learning, the best
@@ -923,7 +923,7 @@ to the front of these values when they are entered in the
   @tab A valid direction constant or its numerical equivalent (decimal
 values between -1 and 1 are allowed)
   @tab @code{LEFT}, @code{CENTER}, @code{UP},
-       @code{1}, @code{-1}
+       @code{1}, @w{@code{-1}}
 @item Integer
   @tab A positive whole number
   @tab @code{3}, @code{1}
@@ -942,7 +942,7 @@ make-moment function
        @code{(ly:make-moment 3 8)}
 @item Number
   @tab Any positive or negative decimal value
-  @tab @code{3.5}, @code{-2.45}
+  @tab @code{3.5}, @w{@code{-2.45}}
 @item Pair (of numbers)
   @tab Two numbers separated by a @q{space . space} and enclosed
 in brackets preceded by an apostrophe
@@ -1090,7 +1090,7 @@ our example we want all bar lines to be suppressed, so the value we
 need is @code{'#(#f #f #f)}.  Let's try that, remembering to include
 the @code{Staff} context.  Note also that in writing this value we
 have @code{#'#} before the opening bracket.  The @code{'#} is required
-as part of the value to introduce a vector, and the first @code{#} is
+as part of the value to introduce a vector, and the first@tie{}@code{#} is
 required, as always, to precede the value itself in the
 @code{\override} command.
 
@@ -1718,7 +1718,7 @@ a4 g c a |
 @end lilypond
 
 Here we use the constants @code{DOWN} and @code{UP}.
-These have the values @code{-1} and @code{+1} respectively, and
+These have the values @w{@code{-1}} and @code{+1} respectively, and
 these numerical values may be used instead.  The value @code{0}
 may also be used in some cases.  It is simply treated as meaning
 @code{UP} for stems, but for some objects it means @q{center}.
@@ -1901,8 +1901,8 @@ Here are a few examples:
 @noindent
 If the fingering seems a little crowded the @code{font-size}
 could be reduced.  The default value can be seen from the
-@code{Fingering} object in the IR to be @code{-5}, so let's
-try @code{-7}:
+@code{Fingering} object in the IR to be @w{@code{-5}}, so let's
+try @w{@code{-7}}:
 
 @lilypond[quote,fragment,ragged-right,verbatim,relative=1]
 \override Fingering #'font-size = #-7
@@ -2422,11 +2422,11 @@ reference point.  It may be used with all objects which support
 the @code{self-alignment-interface}.  In general these are objects
 that contain text.  The values are @code{LEFT}, @code{RIGHT}
 or @code{CENTER}.  Alternatively, a numerical value between
-@code{-1} and @code{+1} may be specified, where @code{-1} is
+@w{@code{-1}} and @code{+1} may be specified, where @w{@code{-1}} is
 left-aligned, @code{+1} is right-aligned, and numbers in between
 move the text progressively from left-aligned to right-aligned.
 Numerical values greater than @code{1} may be specified to move
-the text even further to the left, or less than @code{-1} to
+the text even further to the left, or less than @w{@code{-1}} to
 move the text even further to the right.  A change of @code{1}
 in the value corresponds to a movement of half the text's length.
 
@@ -2709,7 +2709,7 @@ The best solution here is to move the multimeasure rest down, since
 the rest is in voice two.  The default in @code{\voiceTwo} (i.e. in
 the second voice of a @code{<<@{...@} \\ @{...@}>>} construct) is that
 @code{staff-position} is set to -4 for MultiMeasureRest, so we need to
-move it, say, four half-staff spaces down to @code{-8}.
+move it, say, four half-staff spaces down to @w{@code{-8}}.
 
 @cindex MultiMeasureRest, example of overriding
 @cindex staff-position property, example
@@ -3466,6 +3466,7 @@ cross voices:
 <<
   {
     \once \override Stem #'transparent = ##t
+    \once \override Flag #'transparent = ##t
     b8~ b\noBeam
   }
 \\
@@ -3481,6 +3482,7 @@ too much, we can lengthen the stem by setting the
 <<
   {
     \once \override Stem #'transparent = ##t
+    \once \override Flag #'transparent = ##t
     \once \override Stem #'length = #8
     b8~ b\noBeam
   }
index 6814aafed73b77435468900be865f84cf339a508..3585a9e8ede21472bd4c36d9ad08b2f6ad2105d6 100644 (file)
@@ -55,6 +55,8 @@
 ###           makeinfo_like_foot_line_and_ref
 ###           makeinfo_like_foot_lines
 ###           makeinfo_like_paragraph
+### -) In tables, don't wrap <p> around the contents. Implemented in
+###           makeinfo_like_paragraph
 ###
 ###
 ### Useful helper functions:
@@ -2070,6 +2072,13 @@ sub makeinfo_like_paragraph ($$$$$$$$$$$$$)
          return $text  if (($format eq 'itemize' or $format eq 'enumerate') and
             ($$paragraph_number == 1));
     }
+    # The cells of a table should not be wrapped in a <p> tag, so just return the text
+    if (defined($command_stack_at_begin->[0]) and $command_stack_at_begin->[0] eq 'multitable')
+    {
+        return $text;
+    }
+
+    # Adjust all footnotes so that they look like good old makeinfo
     my $open = '<p';
     if ($align)
     {
index ea63eb63d506ff3b23d877da07e6562aa1eee4d8..6e567a56d555a52f71e94cfac997ba50c2dd07fb 100644 (file)
@@ -739,7 +739,7 @@ For LilyPond version @version{}
 </div>
 @end html
 @iftex
-@image{ly-examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png}
+@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png}
 @end iftex
 @ifinfo
 @image{lilypond/ly-examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png}
index 75288f4cd6dc4f017ea041fe03b54ba673647670..da7ef9c80126862c0b2600aabdae5c62a7fed789 100644 (file)
@@ -764,7 +764,7 @@ Voor LilyPond versie @version{}
 </div>
 @end html
 @iftex
-@image{ly-examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png}
+@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png}
 @end iftex
 @ifinfo
 @image{lilypond/ly-examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png}
index 8665e73f7f2f1b606a973b2364777e4674233c1c..04789de9cf78a725b2e3a1c74f93e1131acf7677 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{Meest recente update Wed Jul 13 10:59:12 UTC 2011
+@emph{Meest recente update Sat Aug 13 14:15:49 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -111,7 +111,7 @@ ja
 @item
 2 Algemene muzieknotatie
 @*
-4184
+4187
 @tab Jan Nieuwenhuizen
 @tab 
 @tab 
@@ -285,7 +285,7 @@ ja
 @item
 Handleidingen
 @*
-1203
+1214
 @tab Jan Nieuwenhuizen
 @tab Tineke de Munnik
 @tab 
index bb7404d32708129a787f556ff9a2951478b79e95..b9ff936dfee01cc7f609fae57a4377c5c1c0898b 100644 (file)
@@ -732,7 +732,7 @@ select ancient flags.  Besides the @code{default} flag style,
 only the @code{mensural} style is supported.
 
 @lilypond[quote,fragment,ragged-right,verbatim]
-\override Stem #'flag-style = #'mensural
+\override Flag #'style = #'mensural
 \override Stem #'thickness = #1.0
 \override NoteHead #'style = #'mensural
 \autoBeamOff
@@ -1116,6 +1116,7 @@ Editio Vaticana style do clef
   \override Staff.StaffSymbol #'color = #red
   \override Staff.LedgerLineSpanner #'color = #red
   \override Voice.Stem #'transparent = ##t
+  \override Voice.Flag #'transparent = ##t
   \override NoteHead #'style = #'vaticana.punctum
   \clef "vaticana-do2"
   c
@@ -1131,6 +1132,7 @@ Editio Vaticana style fa clef
   \override Staff.StaffSymbol #'color = #red
   \override Staff.LedgerLineSpanner #'color = #red
   \override Voice.Stem #'transparent = ##t
+  \override Voice.Flag #'transparent = ##t
   \override NoteHead #'style = #'vaticana.punctum
   \clef "vaticana-fa2"
   c
@@ -1147,6 +1149,7 @@ Editio Medicaea style do clef
   \override Staff.StaffSymbol #'color = #red
   \override Staff.LedgerLineSpanner #'color = #red
   \override Voice.Stem #'transparent = ##t
+  \override Voice.Flag #'transparent = ##t
   \override NoteHead #'style = #'medicaea.punctum
   \clef "medicaea-do2"
   c
@@ -1162,6 +1165,7 @@ Editio Medicaea style fa clef
   \override Staff.StaffSymbol #'color = #red
   \override Staff.LedgerLineSpanner #'color = #red
   \override Voice.Stem #'transparent = ##t
+  \override Voice.Flag #'transparent = ##t
   \override NoteHead #'style = #'medicaea.punctum
   \clef "medicaea-fa2"
   c
@@ -1178,6 +1182,7 @@ hufnagel style do clef
   \override Staff.StaffSymbol #'color = #red
   \override Staff.LedgerLineSpanner #'color = #red
   \override Voice.Stem #'transparent = ##t
+  \override Voice.Flag #'transparent = ##t
   \override NoteHead #'style = #'hufnagel.punctum
   \clef "hufnagel-do2"
   c
@@ -1193,6 +1198,7 @@ hufnagel style fa clef
   \override Staff.StaffSymbol #'color = #red
   \override Staff.LedgerLineSpanner #'color = #red
   \override Voice.Stem #'transparent = ##t
+  \override Voice.Flag #'transparent = ##t
   \override NoteHead #'style = #'hufnagel.punctum
   \clef "hufnagel-fa2"
   c
@@ -1207,6 +1213,7 @@ hufnagel style combined do/fa clef
   \override Staff.StaffSymbol #'color = #red
   \override Staff.LedgerLineSpanner #'color = #red
   \override Voice.Stem #'transparent = ##t
+  \override Voice.Flag #'transparent = ##t
   \override NoteHead #'style = #'hufnagel.punctum
   \clef "hufnagel-do-fa"
   c
@@ -1252,7 +1259,7 @@ As shown, not all accidentals are supported by each style.  When
 trying to access an unsupported accidental, LilyPond will switch to a
 different style.
 
-@c @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@c @lilypondfile[verbatim,quote,texidoc,doctitle]
 @c {ancient-accidentals.ly}
 
 The style for accidentals and key signatures is controlled by the
@@ -2462,7 +2469,7 @@ syncopated notes at bar lines, while still providing the
 orientation aids that bar lines give.
 
 
-@lilypondfile[verbatim,lilyquote,texidoc]
+@lilypondfile[verbatim,quote,texidoc]
 {mensurstriche-layout-bar-lines-between-the-staves.ly}
 
 @c This simple setup will take care of the
@@ -2501,7 +2508,9 @@ single-tone recitative to a fixed melodic gesture.  In these cases,
 one can use either @code{\override Stem #'transparent = ##t} or
 @code{\override Stem #'length = #0} instead, and restore the stem
 when needed with the corresponding @code{\once \override Stem
-#'transparent = ##f} (see example below).
+#'transparent = ##f} (see example below).  When using stems that
+carry flags, make sure to set @code{\override Flag #'transparent
+= ##t} as well.
 
 @b{Timing.} For unmetered chant, there are several alternatives.
 
@@ -2607,7 +2616,7 @@ notation of the original.
 
 To avoid that syllables of different width (such as @qq{-ri} and
 @qq{-rum}) spread the syllable note groups unevenly apart, the
-@code{#'X-extent} property of the @code{LyricText} object may be
+@code{'X-extent} property of the @code{LyricText} object may be
 set to a fixed value.  Another, more cumbersome way would be to
 add the syllables as @code{\markup} elements.  If further
 adjustments are necessary, this can be easily done with
@@ -2638,6 +2647,7 @@ spirLyr = \lyricmode {
       \remove "Time_signature_engraver"
       \override BarLine #'X-extent = #'(-1 . 1)
       \override Stem #'transparent = ##t
+      \override Flag #'transparent = ##t
       \override Beam #'transparent = ##t
       \override BarLine #'transparent = ##t
       \override TupletNumber #'transparent = ##t
index 756e32680b36b4bc79007123a160c3a45e72ba28..e10986e7cffeeed7861b6f56846269834d8872f4 100644 (file)
@@ -36,9 +36,10 @@ and is also included with the LilyPond documentation package.
 Internally, LilyPond uses Scheme (a LISP dialect) to provide
 infrastructure.  Overriding layout decisions in effect accesses the
 program internals, which requires Scheme input.  Scheme elements are
-introduced in a @file{.ly} file with the hash mark
-@code{#}.@footnote{@rextend{Scheme tutorial}, contains a short tutorial
-on entering numbers, lists, strings, and symbols in Scheme.}
+introduced in a @file{.ly} file with the hash
+mark@tie{}@code{#}.@footnote{@rextend{Scheme tutorial}, contains a
+short tutorial on entering numbers, lists, strings, and symbols in
+Scheme.}
 
 
 @menu
@@ -853,6 +854,7 @@ The notes look like a slash, and have no stem,
 @example
 \override NoteHead #'style = #'slash
 \override Stem #'transparent = ##t
+\override Flag #'transparent = ##t
 @end example
 
 All these plug-ins have to cooperate, and this is achieved with a
@@ -875,6 +877,7 @@ Put together, we get
   squashedPosition = #0
   \override NoteHead #'style = #'slash
   \override Stem #'transparent = ##t
+  \override Flag #'transparent = ##t
   \alias Voice
 @}
 @end example
@@ -1043,7 +1046,7 @@ This fragment points to two parts of the program reference: a page
 on @code{FingeringEvent} and one on @code{Fingering}.
 
 The page on @code{FingeringEvent} describes the properties of the music
-expression for the input @code{-2}.  The page contains many links
+expression for the input @w{@code{-2}}.  The page contains many links
 forward.  For example, it says
 
 @quotation
@@ -1488,7 +1491,7 @@ command, which has the following syntax:
 @end example
 
 @var{value} is a Scheme object, which is why it must be preceded by
-the @code{#} character.
+the @code{#}@tie{}character.
 
 Contexts properties are usually named in
 @code{studlyCaps}.  They mostly control the translation from
@@ -1765,7 +1768,7 @@ properties.  To tweak those, use commands in the form
 @cindex internal documentation
 
 For many properties, regardless of the data type of the property, setting the
-property to false ( @code{##f} ) will result in turning it off, causing
+property to false (@code{#f}) will result in turning it off, causing
 LilyPond to ignore that property entirely.  This is particularly useful for
 turning off grob properties which may otherwise be causing problems.
 
@@ -2242,8 +2245,8 @@ but a direction indicator is @strong{always} required before
 @item @code{\markup} commands
 @item @code{\tag} commands
 @item string markups, e.g. -"string"
-@item fingering instructions, e.g. @code{-1}
-@item articulation shortcuts, e.g. @code{-.}, @code{->}, @code{--}
+@item fingering instructions, e.g. @w{@code{-1}}
+@item articulation shortcuts, e.g. @w{@code{-.}}, @w{@code{->}}, @w{@code{--}}
 @end itemize
 
 Direction indicators affect only the next note:
@@ -2261,9 +2264,9 @@ The position or direction of many layout objects is controlled
 by the @code{direction} property.
 
 The value of the @code{direction} property may be
-set to @code{1}, meaning @qq{up} or @qq{above}, or to @code{-1},
+set to @code{1}, meaning @qq{up} or @qq{above}, or to @w{@code{-1}},
 meaning @qq{down} or @qq{below}.  The symbols @code{UP} and
-@code{DOWN} may be used instead of @code{1} and @code{-1}
+@code{DOWN} may be used instead of @code{1} and @w{@code{-1}}
 respectively.  The default direction may be specified by setting
 @code{direction} to @code{0} or @code{CENTER}.  Alternatively,
 in many cases predefined commands
@@ -2279,7 +2282,7 @@ See @rlearning{Within-staff objects}.
 In a few cases, arpeggio being the only common example, the value
 of the @code{direction} property specifies whether the object
 is to be placed to the right or left of the parent object.  In
-this case @code{-1} or @code{LEFT} means @qq{to the left} and
+this case @w{@code{-1}} or @code{LEFT} means @qq{to the left} and
 @code{1} or @code{RIGHT} means @qq{to the right}.  @code{0}
 or @code{CENTER} means @qq{use the default} direction, as before.
 
@@ -2636,7 +2639,7 @@ it is hardcoded to 0.
 
 @item attach-dir
 This determines where the line starts and ends in the X-direction,
-relative to the bound object.  So, a value of @code{-1} (or
+relative to the bound object.  So, a value of @w{@code{-1}} (or
 @code{LEFT}) makes the line start/end at the left side of the note
 head it is attached to.
 
@@ -2681,7 +2684,7 @@ c4^\startTextSpan c c c \stopTextSpan
 @end lilypond
 
 Note that negative values move the text @emph{up}, contrary to the
-effect that might be expected, as a value of @code{-1} or
+effect that might be expected, as a value of @w{@code{-1}} or
 @code{DOWN} means align the @emph{bottom} edge of the text with
 the spanner line.  A value of @code{1} or @code{UP} aligns
 the top edge of the text with the spanner line.
@@ -2824,7 +2827,7 @@ In the example above the white clef, with a default @code{layer}
 value of @code{1}, is drawn after the staff lines (default
 @code{layer} value @code{0}), so overwriting them.  To change this,
 the @code{Clef} object must be given in a lower value of
-@code{layer}, say @code{-1}, so that it is drawn earlier:
+@code{layer}, say @w{@code{-1}}, so that it is drawn earlier:
 
 @lilypond[quote,verbatim,relative=2]
 \override Staff.Clef #'color = #white
@@ -3103,7 +3106,7 @@ e2 \glissando f
 e2 \glissando f
 @end lilypond
 
-The value for @code{Y} is set to @code{-2} for the right end
+The value for @code{Y} is set to @w{@code{-2}} for the right end
 point.  The left side may be similarly adjusted by specifying
 @code{left} instead of @code{right}.
 
@@ -3338,12 +3341,12 @@ the @code{self-alignment-X} property, provided the object's
 real value, in units of half the total X extent of the
 object.  Negative values move the object to the right, positive
 to the left.  A value of @code{0} centers the object on the
-reference point of its parent, a value of @code{-1} aligns the
+reference point of its parent, a value of @w{@code{-1}} aligns the
 left edge of the object on the reference point of its parent,
 and a value of @code{1} aligns the right edge of the object on the
 reference point of its parent.  The symbols @code{LEFT},
-@code{CENTER} and @code{RIGHT} may be used instead of the values
-@code{-1, 0, 1} respectively.
+@code{CENTER}, and @code{RIGHT} may be used instead of the values
+@w{@code{-1}}, @code{0}, and @code{1}, respectively.
 
 Normally the @code{\override} command would be used to modify the
 value of @code{self-alignment-X}, but the @code{\tweak} command
@@ -3372,13 +3375,13 @@ value of @code{Y-offset} is just one variable taken into account.
 This may make adjusting the value of some objects tricky.
 The units are just half the vertical extent of the object, which
 is usually quite small, so quite large numbers may be required.
-A value of @code{-1} aligns the lower edge of the object with
+A value of @w{@code{-1}} aligns the lower edge of the object with
 the reference point of the parent object, a value of @code{0}
 aligns the center of the object with the reference point of the
 parent, and a value of @code{1} aligns the top edge of the object
 with the reference point of the parent.  The symbols @code{DOWN},
-@code{CENTER}, @code{UP} may be substituted for @code{-1, 0, 1}
-respectively.
+@code{CENTER}, and @code{UP} may be substituted for @w{@code{-1}},
+@code{0}, and @code{1}, respectively.
 
 @emph{Self-aligning objects in both directions}
 
index 1109075d66eb9dfb0283e5b0e39c90db5b004817..baa216b0052d85b0d8557850acabeac00f1860c0 100644 (file)
@@ -506,19 +506,69 @@ Rests passed to a @code{ChordNames} context will cause the
 }
 @end lilypond
 
+@cindex Transposing guitar chords for capo
+
+If the @code{capoPitch} property is set, then the chords will additionally be printed
+transposed for a guitar with the capo set appropriately. By default the chords are
+printed on one line, but if the @code{capoVertical} property is set, the chords will be
+printed one above the other.
+
+In make-pitch, leave the first argument at 0, the second argument is the
+interval (-2 is a third), and the third argument adjusts it up or down a
+semitone.
+
+@lilypond[verbatim,quote,ragged-right]
+<<
+  \new ChordNames \chordmode {
+    c1
+    r1
+    g1
+    c1
+    \break
+    c1
+    r1
+    g1
+    c1
+    \break
+    c1
+    r1
+    g1
+    c1
+  }
+  \chordmode {
+    c1
+    r1
+    g1
+    c1
+    \break
+    \set ChordNames.capoPitch = #(ly:make-pitch 0 -2 -1/2)
+    c1
+    r1
+    g1
+    c1
+    \break
+    \set ChordNames.capoVertical = ##t
+    c1
+    r1
+    g1
+    c1
+  }
+>>
+@end lilypond
+
 @snippets
 
 @c Keep index entries with following snippet
 @cindex chords, suppressing repeated
 @funindex chordChanges
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {showing-chords-at-changes.ly}
 
-@c @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@c @lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 @c {adding-bar-lines-to-chordnames-context.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {simple-lead-sheet.ly}
 
 
@@ -673,20 +723,20 @@ The spacer is not used when the root is altered.
 @snippets
 
 @cindex exceptions, chord names.
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {chord-name-exceptions.ly}
 
 @c TODO - tweak snippet to use \blackTriangleMarkup as well
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {chord-name-major7.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adding-bar-lines-to-chordnames-context.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {volta-below-chords.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-chord-separator.ly}
 
 
@@ -975,7 +1025,7 @@ End of continuation line
 
 
 @snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-positions-of-figured-bass-alterations.ly}
 
 
index a003f946f14a1f6f6f6a1270bd2680db92fb301d..56c05e8335c1a701f4d785435107fe78382b0b7d 100644 (file)
@@ -189,13 +189,13 @@ staff, see @ref{Direction and placement}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {controlling-the-placement-of-chord-fingerings.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {allowing-fingerings-to-be-printed-inside-the-staff.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {avoiding-collisions-with-chord-fingerings.ly}
 
 
@@ -387,9 +387,9 @@ An X11 color is not necessarily exactly the same shade as a
 similarly named normal color.
 
 Not all X11 colors are distinguishable in a web browser, i.e.,
-a web browser might not display a difference between @code{'LimeGreen}
-and @code{'ForestGreen}.  For web use normal colors are recommended
-(i.e., @code{#blue}, @code{#green}, @code{#red}).
+a web browser might not display a difference between @code{LimeGreen}
+and @code{ForestGreen}.  For web use normal colors are recommended
+(i.e., @code{blue}, @code{green}, @code{red}).
 
 
 Notes in a chord cannot be colored with @code{\override}; use
@@ -478,7 +478,7 @@ Stems may be manually placed to point up or down; see
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {default-direction-of-stems-on-the-center-line-of-the-staff.ly}
 
 
@@ -633,7 +633,7 @@ lines.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {grid-lines--changing-their-appearance.ly}
 
 
index 87a1c7ef9f884b5599f3cd185b56793aaa40e2aa..908d9f993efa7c829651164034bfb5073134220d 100644 (file)
@@ -181,13 +181,13 @@ are attached to the notes, see @rlearning{Placement of objects}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {modifying-default-values-for-articulation-shorthand-notation.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {controlling-the-vertical-ordering-of-scripts.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-a-delayed-turn.ly}
 
 @seealso
@@ -460,25 +460,25 @@ items such as text scripts, text spanners, and piano pedal marks.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {setting-hairpin-behavior-at-bar-lines.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {setting-the-minimum-length-of-hairpins.ly}
 
 @cindex al niente
 @cindex niente, al
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {printing-hairpins-using-al-niente-notation.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {vertically-aligned-dynamics-and-textscripts.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {hiding-the-extender-line-for-text-dynamics.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-text-and-spanner-styles-for-text-dynamics.ly}
 
 
@@ -761,13 +761,13 @@ g4( e c2)
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {using-double-slurs-for-legato-chords.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {positioning-text-markups-inside-slurs.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {making-slurs-with-complex-dash-structure.ly}
 
 
@@ -954,13 +954,13 @@ divisiones, are supported.  For details, see @ref{Divisiones}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-breath-mark-symbol.ly}
 
 @cindex caesura
 @cindex railroad tracks
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {inserting-a-caesura.ly}
 
 
@@ -1009,7 +1009,7 @@ command is @emph{required} when writing falls and doits.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adjusting-the-shape-of-falls-and-doits.ly}
 
 
@@ -1054,7 +1054,7 @@ Different styles of glissandi can be created.  For details, see
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {contemporary-glissando.ly}
 
 
@@ -1165,13 +1165,13 @@ information, see @ref{Ties}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-cross-staff-arpeggios-in-a-piano-staff.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-cross-staff-arpeggios-in-other-contexts.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-arpeggios-across-notes-in-different-voices.ly}
 
 
index 5b4feef54573b2e918b51957e4d09d72713617a2..709820b747b8699f0f965bb68bf9c85f7413ce55 100644 (file)
@@ -122,10 +122,10 @@ in the code:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {controlling-the-placement-of-chord-fingerings.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {allowing-fingerings-to-be-printed-inside-the-staff.ly}
 
 
@@ -426,22 +426,22 @@ ratioHarmonics = {
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {stem-and-beam-behavior-in-tablature.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {polyphony-in-tablature.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {open-string-harmonics-in-tablature.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {fretted-string-harmonics-in-tablature.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {slides-in-tablature.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {chord-glissando-in-tablature.ly}
 
 
@@ -1087,10 +1087,10 @@ markup, the interface properties belong to @code{Voice.TextScript}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-fret-orientations.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {customizing-markup-fret-diagrams.ly}
 
 @seealso
@@ -1389,16 +1389,16 @@ the interface properties belong to @code{FretBoards.FretBoard}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {customizing-fretboard-fret-diagrams.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {defining-predefined-fretboards-for-other-instruments.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {chordchanges-for-fretboards.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {fretboards-alternate-tables.ly}
 
 
@@ -1622,10 +1622,10 @@ short, for example @code{RH},
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {placement-of-right-hand-fingerings.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {fingerings,-string-indications,-and-right-hand-fingerings.ly}
 
 
index 169ac357c7ba83807695095eecfdae20f482bb75..dc7045fe70c7482af2d30a6cf043772a9c041826 100644 (file)
@@ -493,7 +493,7 @@ circumstances to avoid errors:
 @item After every command or variable, i.e. every item that
 begins with a @code{\} sign.
 @item After every item that is to be interpreted as a Scheme
-expression, i.e. every item that begins with a @code{#} sign.
+expression, i.e. every item that begins with a @code{#}@tie{}sign.
 @item To separate all elements of a Scheme expression.
 @item In @code{lyricmode} to separate all the terms in both
 @code{\override} and @code{\set} commands.  In particular, spaces
@@ -1258,7 +1258,7 @@ been brought into the main file, so the file names they specify
 must all be relative to the directory containing the main file,
 not the directory containing the included file.  However,
 this behavior can be changed by passing the option
-@code{-drelative-includes} option at the command line
+@option{-drelative-includes} option at the command line
 (or by adding @code{#(ly:set-option 'relative-includes #t)}
 at the top of the main input file).  With @code{relative-includes}
 set, the path for each @code{\include} command will be taken
@@ -1742,7 +1742,7 @@ More clip regions can be defined by adding more pairs of
 rhythmic-locations to the list.
 
 In order to use this feature, LilyPond must be invoked with
-@code{-dclip-systems}.  The clips are output as EPS files, and are
+@option{-dclip-systems}.  The clips are output as EPS files, and are
 converted to PDF and PNG if these formats are switched on as well.
 
 For more information on output formats, see @rprogram{Invoking lilypond}.
@@ -1975,7 +1975,7 @@ instrument is used.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-midi-output-to-one-channel-per-voice.ly}
 
 @knownissues
index ef294318fbc5201e8a2b02329e12f4511d555d15..bcd955b28e20a5df6e9375e61aaed82195d4cb5c 100644 (file)
@@ -110,7 +110,7 @@ as shown in @rlearning{Other uses for tweaks}.
 @end itemize
 
 @c @snippets
-@c @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@c @lilypondfile[verbatim,quote,texidoc,doctitle]
 @c {forcing-visibility-of-systems-with-multi-bar-rests-when-using-\RemoveEmptyStaffContext.ly}
 @c http://lsr.dsi.unimi.it/LSR/Item?u=1&id=312
 
@@ -437,7 +437,7 @@ Chords that cross staves may be produced:
         % extend the stems to reach the other staff
         \override Stem #'length = #12
         % do not print extra flags
-        \override Stem #'flag-style = #'no-flag
+        \override Flag #'style = #'no-flag
         % prevent beaming as needed
         a8 g4 f8 f bes\noBeam g4
       }
@@ -451,7 +451,7 @@ Chords that cross staves may be produced:
 @end lilypond
 
 @snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {indicating-cross-staff-chords-with-arpeggio-bracket.ly}
 
 
@@ -597,7 +597,7 @@ come into use to simplify the performance instructions.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {accordion-discant-symbols.ly}
 
 
index ded7f6e624c2e67ed63968731f8666e6b0e4e30a..53c75c035164c5ff42e65954a38f8d7c6c004365 100644 (file)
@@ -627,6 +627,7 @@ see @ref{Formatting text}.
 * Bracket-tip glyphs::
 * Pedal glyphs::
 * Accordion glyphs::
+* Tie glyphs::
 * Vaticana glyphs::
 * Medicaea glyphs::
 * Hufnagel glyphs::
@@ -797,6 +798,16 @@ see @ref{Formatting text}.
 @end lilypond
 
 
+@node Tie glyphs
+@unnumberedsubsec Tie glyphs
+
+@lilypond[quote]
+\include "font-table.ly"
+\markuplines \override-lines #'(word-space . 4)
+             \doc-chars #ties
+@end lilypond
+
+
 @node Vaticana glyphs
 @unnumberedsubsec Vaticana glyphs
 
index 312b1a6eebe986c793c28700500e88546d49b809..d9d2fb2faaca63f9e7e3d9dcce460c1c044945cd 100644 (file)
@@ -389,10 +389,10 @@ cis
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle,ragged-right]
+@lilypondfile[verbatim,quote,texidoc,doctitle,ragged-right]
 {hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {preventing-extra-naturals-from-being-automatically-added.ly}
 
 @seealso
@@ -784,7 +784,7 @@ see @ref{Instrument transpositions}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {transposing-pitches-with-minimum-accidentals-smart-transpose.ly}
 
 
@@ -1163,7 +1163,7 @@ in @ref{Formatting cue notes}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {tweaking-clef-properties.ly}
 
 @seealso
@@ -1257,10 +1257,10 @@ fis
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {non-traditional-key-signatures.ly}
 
 
@@ -1317,7 +1317,7 @@ a2 b
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {ottava-text.ly}
 
 
@@ -2637,13 +2637,13 @@ printed if they are not part of the key signature.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adding-ambitus-per-voice.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {ambitus-with-multiple-voices.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-ambitus-gap.ly}
 
 
@@ -2821,7 +2821,7 @@ font, see @ref{Setting the staff size}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {numbers-as-easy-note-heads.ly}
 
 
@@ -2941,7 +2941,7 @@ a2 b c d \break
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {applying-note-head-styles-depending-on-the-step-of-the-scale.ly}
 
 To see all note head styles, see @ref{Note head styles}.
index 124bdefe78989a24a3d7cca879ac44476cf2e441..d3f473fa820d545969a63cec3163d648aa3cf7a7 100644 (file)
@@ -258,13 +258,13 @@ c1
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {shortening-volta-brackets.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {adding-volta-brackets-to-additional-staves.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {setting-the-double-repeat-default-for-volte.ly}
 
 @seealso
@@ -422,7 +422,7 @@ voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } }
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {printing-a-repeat-sign-at-the-beginning-of-a-piece.ly}
 
 
@@ -609,13 +609,13 @@ use a double-percent symbol.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {percent-repeat-counter.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {percent-repeat-count-visibility.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {isolated-percent-repeats.ly}
 
 @seealso
@@ -702,7 +702,7 @@ c: c:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {cross-staff-tremolos.ly}
 
 
index 697c08a626bd87f758fefb1c454c7cba68cdced1..c81adae6dbc6d3a54698dcbec394d9566f42f79b 100644 (file)
@@ -142,10 +142,10 @@ the staff; see @ref{Direction and placement}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {alternative-breve-note.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-the-number-of-augmentation-dots-per-note.ly}
 
 
@@ -252,23 +252,23 @@ see @ref{Scaling durations}.
 @funindex tupletNumberFormatFunction
 @funindex tupletSpannerDuration
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {entering-several-tuplets-using-only-one--times-command.ly}
 
 @cindex Tuplet number changes
 
 @funindex TupletNumber
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-the-tuplet-number.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {non-default-tuplet-numbers.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {controlling-tuplet-bracket-visibility.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {permitting-line-breaks-within-beamed-tuplets.ly}
 
 
@@ -543,10 +543,10 @@ see the snippets under @ref{Slurs}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {using-ties-with-arpeggios.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {engraving-ties-manually.ly}
 
 
@@ -651,7 +651,7 @@ a4\rest d4\rest
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {rest-styles.ly}
 
 
@@ -919,16 +919,16 @@ setting, resulting bar-check warnings may not be displayed.
 @cindex rest, church
 @cindex kirchenpausen
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-form-of-multi-measure-rests.ly}
 
 @cindex multi-measure rests, positioning
 @cindex positioning multi-measure rests
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {positioning-multi-measure-rests.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {multi-measure-rest-markup.ly}
 
 
@@ -1202,16 +1202,16 @@ for different staves by moving the @code{Timing_translator} and the
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-the-time-signature-without-affecting-the-beaming.ly}
 
 @cindex compound time signatures
 @cindex time signature, compound
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {compound-time-signatures.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly}
 
 
@@ -1292,15 +1292,15 @@ d4 g e c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {printing-metronome-and-rehearsal-marks-below-the-staff.ly}
 
 @c perhaps also an example of how to move it horizontally?
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-tempo-without-a-metronome-mark.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {creating-metronome-marks-in-markup-mode.ly}
 
 For more details, see @ref{Formatting text}.
@@ -1377,7 +1377,7 @@ For example, @code{\partial 8*3} becomes:
 The property @code{measurePosition} contains a rational number
 indicating how much of the measure has passed at this point.  Note
 that this is set to a negative number by the @code{\partial} command:
-i.e., @code{\partial 4} is internally translated to @code{-4}, meaning
+i.e., @code{\partial 4} is internally translated to @w{@code{-4}}, meaning
 @qq{there is a quarter note left in the measure.}
 
 @seealso
@@ -1637,7 +1637,7 @@ moving the @code{Timing_translator} and the
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {compound-time-signatures.ly}
 
 
@@ -1808,7 +1808,7 @@ be done with the @code{Pitch_squash_engraver} and
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {guitar-strum-rhythms.ly}
 
 
@@ -1890,16 +1890,16 @@ created; see @ref{Setting automatic beam behavior}.
 @funindex breakable
 
 @snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {beams-across-line-breaks.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {changing-beam-knee-gap.ly}
 
 @cindex beams, \partcombine with \autoBeamOff
 @cindex voices, \partcombine with \autoBeamOff
 
-@lilypondfile [verbatim, lilyquote, ragged-right, texidoc, doctitle]
+@lilypondfile [verbatim, quote, ragged-right, texidoc, doctitle]
 {partcombine-and-autobeamoff.ly}
 
 @seealso
@@ -2039,7 +2039,7 @@ c16 c c |
 of beaming-rules.
 
 At this time the only available value of rule-type is
-@code{#'end} for beam ending.
+@code{'end} for beam ending.
 
 Beaming-rules is a scheme alist (or list of pairs) that indicates the
 beam type and the grouping to be applied to beams containing notes with
@@ -2157,7 +2157,7 @@ The default beaming rules can be found in
 
 @cindex beams, subdividing
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {subdividing-beams.ly}
 
 @cindex measure groupings
@@ -2165,13 +2165,13 @@ The default beaming rules can be found in
 @cindex grouping beats
 @cindex measure sub-grouping
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {conducting-signs,-measure-grouping-signs.ly}
 
 @cindex beam, endings in a score
 @cindex beam, endings with multiple voices
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {beam-endings-in-score-context.ly}
 
 
@@ -2324,7 +2324,7 @@ g16 a]
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {flat-flags-and-beam-nibs.ly}
 
 
@@ -2721,24 +2721,24 @@ c1 | c | c | c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-the-bar-number-for-the-first-measure.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-bar-numbers-at-regular-intervals.ly}
 
 @cindex measure number, format
 @cindex bar number, format
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-bar-numbers-inside-boxes-or-circles.ly}
 
 @cindex bar number alignment
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {aligning-bar-numbers.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {removing-bar-numbers-from-a-score.ly}
 
 
@@ -3137,16 +3137,16 @@ direction is overridden and then reverted.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {using-grace-note-slashes-with-normal-heads.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {tweaking-grace-layout-within-music.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {redefining-grace-note-global-defaults.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {positioning-grace-notes-with-floating-space.ly}
 
 
index b59bdbb8e204f55afb11a08934e4c7a31fdb73f2..e287bde6ac3e81c507e038b8b0dc30c842506651 100644 (file)
@@ -725,10 +725,10 @@ the stems are explicitly set in opposite directions).
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {additional-voices-to-avoid-collisions.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {forcing-horizontal-shift-of-notes.ly}
 
 
@@ -917,10 +917,10 @@ instrumentTwo = \relative c' {
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {combining-two-parts-on-the-same-staff.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-partcombine-texts.ly}
 
 
index b07668b4f69d841d5e83a5be9a6c60bbbcc6b4a4..37557fcb2de4e7bcda6514ba7079be49d69f3b68 100644 (file)
@@ -944,7 +944,7 @@ of the cover page so that page 1 is on the right hand side.
 
 The relative importance of page (vertical) spacing and line
 (horizontal) spacing.  High values will make page spacing more
-important.  Default: @code{#10}.
+important.  Default: @code{10}.
 
 @item print-all-headers
 @funindex print-all-headers
@@ -1345,7 +1345,7 @@ inserted at top-level, between scores and top-level markups.
 There are also analogous settings to @code{ragged-right} and
 @code{ragged-last} which have the same effect on vertical spacing:
 @code{ragged-bottom} and @code{ragged-last-bottom}.  If set to
-@code{##t} the systems on all pages or just the last page
+@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}.
 
@@ -1463,7 +1463,7 @@ the section.
 The @code{Page_turn_engraver} reads the context property
 @code{minimumPageTurnLength} to determine how long a note-free section must
 be before a page turn is considered.  The default value for
-@code{minimumPageTurnLength} is @code{#(ly:make-moment 1 1)}.  If you want
+@code{minimumPageTurnLength} is @code{(ly:make-moment 1 1)}.  If you want
 to disable page turns, you can set it to something very large.
 
 @example
@@ -1776,7 +1776,7 @@ follow the format @code{@var{item1}-@var{item2}-spacing}, where
 spaced.  Note that @code{@var{item2}} is not necessarily below
 @code{@var{item1}}; for example,
 @code{nonstaff-relatedstaff-spacing} will measure upwards from the
-non-staff line if @code{staff-affinity} is @code{#UP}.
+non-staff line if @code{staff-affinity} is @code{UP}.
 
 Each distance is measured between the @emph{reference points} of
 the two items.  The reference point for a staff is the vertical
@@ -2633,7 +2633,7 @@ measure, the shortest duration is determined.  The most common shortest
 duration is taken as the basis for the spacing, with the stipulation
 that this shortest duration should always be equal to or shorter than
 an 8th note.  The shortest duration is printed when you run
-@code{lilypond} with the @code{--verbose} option.
+@code{lilypond} with the @option{--verbose} option.
 
 These durations may also be customized.  If you set the
 @code{common-shortest-duration} in @rinternals{SpacingSpanner}, then
@@ -2975,10 +2975,10 @@ The @code{proportionalNotationDuration} setting takes a single argument,
 which is the reference duration against that all music will be spaced.
 The LilyPond Scheme function @code{make-moment} takes two arguments
 -- a numerator and denominator which together express some fraction of
-a whole note.  The call @code{#(ly:make-moment 1 20)} therefore produces
+a whole note.  The call @code{(ly:make-moment 1 20)} therefore produces
 a reference duration of a twentieth note.  Values such as
-@code{#(ly:make-moment 1 16)}, @code{#(ly:make-moment 1 8)}, and
-@code{#(ly:make-moment 3 97)} are all possible as well.
+@code{(ly:make-moment 1 16)}, @code{(ly:make-moment 1 8)}, and
+@code{(ly:make-moment 3 97)} are all possible as well.
 
 How do we select the right reference duration to pass to
 @code{proportionalNotationDuration}?  Usually by a process of trial
index 2ac12942588040d1c86c482b8be26963a7f7ef95..052254ed50643a7d228ff3b51dd41509b8b26639 100644 (file)
@@ -235,10 +235,10 @@ New staff group contexts may be defined.  For details, see
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {use-square-bracket-at-the-start-of-a-staff-group.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {display-bracket-with-only-one-staff-in-a-system.ly}
 
 @cindex mensurstriche layout
@@ -246,7 +246,7 @@ New staff group contexts may be defined.  For details, see
 @cindex transcription of mensural music
 @cindex mensural music, transcription of
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {mensurstriche-layout-bar-lines-between-the-staves.ly}
 
 
@@ -315,7 +315,7 @@ New nested staff group contexts can be defined.  For details, see
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {nesting-staves.ly}
 
 
@@ -519,7 +519,7 @@ e4 d c2
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {making-some-staff-lines-thicker-than-the-others.ly}
 
 
@@ -680,7 +680,7 @@ break.  For more information about
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {vertically-aligning-ossias-and-lyrics.ly}
 
 
@@ -790,7 +790,7 @@ hide empty staves in ancient music contexts.  Similarly,
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {removing-the-first-empty-line.ly}
 
 
@@ -1296,14 +1296,15 @@ oboeNotes = \relative c'' {
 
 It is possible to adjust which aspects of the music are quoted with
 @code{\cueDuring} by setting the @code{quotedCueEventTypes}
-property.  Its default value is @code{#'(note-event rest-event
+property.  Its default value is @code{'(note-event rest-event
 tie-event beam-event tuplet-span-event)}, which means that only
 notes, rests, ties, beams and tuplets are quoted, but not
 articulations, dynamic marks, markup etc.
 
-In this example, the @code{Voice} context must be
-explicitly declared, or else the entire music expression would
-belong to the @code{CueVoice} context.
+@warning{When a @code{Voice} starts with @code{\cueDuring}, as in the
+following example, the @code{Voice} context must be explicitly declared,
+or else the entire music expression would belong to the @code{CueVoice}
+context.}
 
 @lilypond[verbatim,quote]
 oboeNotes = \relative c'' {
index d9ee4c52e56a0f7593cc1f19095502dc503841cb..d56fa1348f084cda6979893b481dc4c71e500f80 100644 (file)
@@ -186,10 +186,10 @@ LilyPond is only able to handle one text spanner per voice.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {dynamics-text-spanner-postfix.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {dynamics-custom-text-spanner-postfix.ly}
 
 @seealso
@@ -274,13 +274,13 @@ c  c
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-marks-at-the-end-of-a-line.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {aligning-marks-with-various-notation-objects.ly}
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {printing-marks-on-every-staff.ly}
 
 
@@ -359,7 +359,7 @@ requires, are described in @ref{Multi-page markup}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {stand-alone-two-column-markup.ly}
 
 
@@ -441,7 +441,7 @@ c
 
 A @code{\markup} block may also contain quoted text strings.  Such
 strings are treated as minimal text expressions, and therefore any
-markup command or special character (such as @code{\} and @code{#})
+markup command or special character (such as @code{\} and@tie{}@code{#})
 will be printed verbatim without affecting the formatting of the text.
 Double quotation marks themselves may be printed by preceding them
 with backslashes.
index b8f13106e30ed0650294da924781e735aa9dfdfd..a04a8e6ede18177ca332210d899341beda7e2f80 100644 (file)
@@ -204,7 +204,7 @@ options, see @ref{Formatting text}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {formatting-lyrics-syllables.ly}
 
 
@@ -609,21 +609,15 @@ Internals Reference:
 In order to assign more than one syllable to a single note with
 spaces between the syllables, you can surround the phrase with
 quotes or use a @code{_} character.  Alternatively, you can use
-code the tilde symbol (@code{~}) to get a lyric tie.  The lyric
-tie is implemented with the Unicode character U+203F, so be
-sure to use a font for this glyph which actually contains it.
-Freely available fonts with a lyric tie are, for example,
-`FreeSerif' (a Times clone), `DejaVuSans' (but not
-`DejaVuSerif'), or `TeXGyreSchola' (a Century Schoolbook
-clone).
+the tilde symbol (@code{~}) to get a lyric tie.
 
 @lilypond[quote,ragged-right,verbatim]
 {
   \time 3/4
   \relative c' { c2 e4 g2 e4 }
-  \addlyrics { gran- de_a- mi- go }
-  \addlyrics { pu- "ro y ho-" nes- to }
-  \addlyrics { pu- ro~y~ho- nes- to }
+  \addlyrics { gran -- de_a -- mi -- go }
+  \addlyrics { pu -- "ro y ho" -- nes -- to }
+  \addlyrics { pu -- ro~y~ho -- nes -- to }
 }
 @end lilypond
 
@@ -650,7 +644,7 @@ left-aligned with the first note of the melisma.
 When a melisma occurs on a syllable other that the last one in a
 word, that syllable is usually joined to the following one with a
 hyphenated line.  This is indicated by placing a double hyphen,
-@code{--}, immediately after the syllable.
+@w{@code{--}}, immediately after the syllable.
 
 Alternatively, when a melisma occurs on the last or only syllable in
 a word an extender line is usually drawn from the end of the syllable
@@ -1097,7 +1091,7 @@ elaborating these examples, or by examining the
 @rlearning{Vocal ensembles} templates in the Learning Manual.
 
 @snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {lyrics-old-spacing-settings.ly}
 
 @seealso
@@ -1153,7 +1147,7 @@ To make this change for all lyrics in the score, set the property in the
 @end lilypond
 
 @snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {lyrics-alignment.ly}
 
 @c TODO: move to LSR -vv
@@ -2100,7 +2094,7 @@ Lead sheets may be printed by combining vocal parts and
 @q{chord mode}; this syntax is explained in @ref{Chord notation}.
 
 @snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {simple-lead-sheet.ly}
 
 @seealso
@@ -2289,7 +2283,7 @@ Internals Reference:
 
 @cindex voices, divided
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {using-arpeggiobracket-to-make-divisi-more-visible.ly}
 
 @seealso
@@ -2557,7 +2551,7 @@ If a transposing instrument is being quoted the instrument part should
 specify its key so the conversion of its cue notes will be done
 automatically.  The example below shows this transposition for a
 B-flat clarinet.  The notes in this example are low on the staff so
-@code{#DOWN} is specified in @code{\cueDuring} (so the stems are
+@code{DOWN} is specified in @code{\cueDuring} (so the stems are
 down) and the instrument name is positioned below the staff.  Note
 also that the piano right-hand voice is explicitly declared.  This
 is because the cue notes in this example begin at the start of the
@@ -2604,7 +2598,7 @@ possible to define a music function to reduce the amount of typing
 and to make the piano notes clearer.
 
 @snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {adding-orchestral-cues-to-a-vocal-score.ly}
 
 @seealso
@@ -3025,7 +3019,7 @@ of the following snippets.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {chant-or-psalms-notation.ly}
 
 Canticles and other liturgical texts may be set more freely, and
@@ -3034,7 +3028,7 @@ are shown underneath and aligned with the notes.  If so, the notes
 are spaced in accordance with the syllables rather than the notes'
 durations.
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {ancient-notation-template----modern-transcription-of-gregorian-music.ly}
 
 @seealso
@@ -3219,7 +3213,7 @@ with a line of text.  This requires a @code{\partial} command at
 the start of the music and @code{\bar "|"} or @code{\bar "||"}
 commands at the end of each line.
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,quote,ragged-right,texidoc,doctitle]
 {hymn-template.ly}
 
 
index 9a86ca6d670ed6f5650e02c842bb5b3297153dad..a9725fd7172391e37d629c06f0927ae5471701cf 100644 (file)
@@ -80,7 +80,7 @@ See @ref{Articulations and ornamentations}.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing--flageolet-mark-size.ly}
 
 
@@ -113,10 +113,10 @@ Woodwind diagrams can be produced and are described in
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {fingering-symbols-for-wind-instruments.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {recorder-fingering-chart.ly}
 
 @seealso
@@ -411,16 +411,16 @@ require Scheme ability and may not be accessible to all users.
 @endpredefined
 
 @snippets
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {woodwind-diagrams-listing.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {graphical-and-text-woodwind-diagrams.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {changing-the-size-of-woodwind-diagrams.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {woodwind-diagrams-key-lists.ly}
 
 @seealso
index d8bbbd406bdabc90fa3dd09859765bb3456f6a7f..428c35f201c44d359e88fd67d6407552e1ea6d2a 100644 (file)
@@ -79,7 +79,7 @@ To locate init files such as @file{arabic.ly} or
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {makam-example.ly}
 
 @seealso
@@ -325,7 +325,7 @@ key signatures:
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {non-traditional-key-signatures.ly}
 
 
@@ -371,10 +371,10 @@ the automatic beaming behaviour and/or use compound time signatures.
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {compound-time-signatures.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+@lilypondfile[verbatim,quote,texidoc,doctitle]
 {arabic-improvisation.ly}
 
 
index aea43157f4cd4ffb137341d5f89b509c782b6444..f46f2db8c44f52c93cd7328adbb8447b4bc73cca 100644 (file)
Binary files a/Documentation/pictures/architecture-diagram.png and b/Documentation/pictures/architecture-diagram.png differ
index 917528951e0e082c54fa81025e62ffc1797ef117..162af1f555dd90901c7a178a3091cc67ed72a773 100644 (file)
@@ -5388,6 +5388,11 @@ msgstr "Glyphes de pédale"
 msgid "Accordion glyphs"
 msgstr "Glyphes d'accordéon"
 
+#. @node in Documentation/notation/notation-appendices.itely
+#. @unnumberedsubsec in Documentation/notation/notation-appendices.itely
+msgid "Tie glyphs"
+msgstr "Glyphes de liaison"
+
 #. @node in Documentation/notation/notation-appendices.itely
 #. @unnumberedsubsec in Documentation/notation/notation-appendices.itely
 msgid "Vaticana glyphs"
index c814dec1d43948b6c7ba145b4a09d42b48b08855..209ffa228d03b7f6eaeac0122050443a1fe29205 100644 (file)
@@ -33,9 +33,9 @@ a toda la partitura.
   texidoc = "
 When writing a figured bass, you can place the figures above or below
 the bass notes, by defining the @code{BassFigureAlignmentPositioning
-#'direction} property (exclusively in a @code{Staff} context). Choices
-are @code{#UP} (or @code{#1}), @code{#CENTER} (or @code{#0}) and
-@code{#DOWN} (or @code{#-1}).
+#'direction} property (exclusively in a @code{Staff} context).  Choices
+are @code{UP} (or @code{1}), @code{CENTER} (or @code{0}) and
+@code{DOWN} (or @w{@code{-1}}).
 
 This property can be changed as many times as you wish. Use
 @code{\\once \\override} if you don't want the override to apply to the
index 8557a8a611550ca45e37d030641e6da06f9723d3..8267f547c38c87222c5255ace19b2c38705bfa87 100644 (file)
@@ -49,7 +49,7 @@ splitStaffBarLine = {
         (ly:bar-line::print grob)
         X RIGHT
         (grob-interpret-markup grob splitStaffBarLineMarkup)
-        0 0))
+        0))
   \break
 }
 
index e1c2d865f4d69fea3147da747de5db791bde7d88..9168972a8e47c22bb12cd78a52d87c642305b9d2 100644 (file)
@@ -77,7 +77,7 @@ This shows one approach to simplify adding many orchestral cues to the
 piano reduction in a vocal score.  The music function @code{\\cueWhile}
 takes four arguments: the music from which the cue is to be taken, as
 defined by @code{\\addQuote}, the name to be inserted before the cue
-notes, then either @code{#UP} or @code{#DOWN} to specify either
+notes, then either @code{UP} or @code{DOWN} to specify either
 @code{\\voiceOne} with the name above the staff or @code{\\voiceTwo}
 with the name below the staff, and finally the piano music in parallel
 with which the cue notes are to appear.  The name of the cued
index 6e84c4050af681dfac664800cd6c4fc00db57532..9dd34ccd176aa15ce4ed89b6d4db33665ef4524b 100644 (file)
@@ -1,14 +1,14 @@
-%% 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
-%%
+% 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.15.9
 %% This file is in the public domain.
-\version "2.15.7"
+\version "2.15.9"
 
 \header {
-  lsrtags = "ancient-notation"
-
 %% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Aquí se muestran muchos de (¿o quizá todos?) los símbolos que
@@ -27,12 +27,11 @@ LilyPond prend en charge en matière de musique ancienne.
 "
   doctitlefr = "Gravure de musique ancienne"
 
+  lsrtags = "ancient-notation"
+
   texidoc = "
 Shown here are many (all?) of the symbols that are included in
 LilyPond's support for ancient notation.
-
-
-
 "
   doctitle = "Ancient fonts"
 } % begin verbatim
@@ -130,7 +129,8 @@ upperStaff = \new VaticanaStaff = "upperStaff" <<
 
       s32*1
       % \break % 12 (32*1)
-    }
+    } % begin verbatim
+
   >>
 >>
 
@@ -230,7 +230,7 @@ lowerStaff = \new MensuralStaff = "lowerStaff" <<
       \MensuralVoice
       \override NoteHead #'style = #'neomensural
       \override Rest #'style = #'neomensural
-      \override Stem #'flag-style = #'mensural
+      \override Flag #'style = #'mensural
       \override Stem #'thickness = #1.0
     }
     \context {
index ccda4003e3b92217c935e24b4aa2dd3fe0a1ba18..c16f3478f944bcebb03556d76d30d1cd5bf751bb 100644 (file)
@@ -30,7 +30,7 @@ property.
 
 Inside the chord (within the brackets @code{< >}), before the note to
 be altered, place the @code{\\tweak} command, followed by
-@code{#'font-size} and define the proper size like @code{#-2} (a tiny
+@code{'font-size} and define the proper size like @w{@code{-2}} (a tiny
 note head).
 
 
@@ -40,6 +40,7 @@ note head).
 } % begin verbatim
 
 \relative c' {
-  <\tweak #'font-size #+2 c e g c \tweak #'font-size #-2 e>1^\markup { A tiny e }_\markup { A big c }
+  <\tweak #'font-size #+2 c e g c \tweak #'font-size #-2 e>1
+    ^\markup { A tiny e }_\markup { A big c }
 }
 
index 4ec923b18bcb8d3908996deb7b3dfb8c6e6fab2c..f7c4d3dd78259c01e4510df336998c9f345d7999 100644 (file)
@@ -11,7 +11,7 @@
 
   texidoc = "
 Though the simplest way to resize staves is to use
-@code{#(set-global-staff-size xx)}, an individual staff's size can be
+@code{#(set-global-staff-size @var{xx})}, an individual staff's size can be
 changed by scaling the properties @code{'staff-space} and
 @code{fontSize}.
 
index 35134c6dc5ba63e9da7402365bbaf1eb1de72777..88037d14067c37b22fd50b3a39c89cfcb74f360d 100644 (file)
@@ -40,7 +40,7 @@ varios archivos EPS.
   texidoc = "
 This code shows how to clip (extract) snippets from a full score.
 
-This file needs to be run separately with @code{-dclip-systems}; the
+This file needs to be run separately with @option{-dclip-systems}; the
 snippets page may not adequately show the results.
 
 The result will be files named
index d8a0ff2418530088bbe6be97c30d611903c48292..ced08599f210cb5a746e1d5c23768ce36596c967 100644 (file)
@@ -44,7 +44,7 @@ The default behavior of tuplet-bracket visibility is to print a bracket
 unless there is a beam of the same length as the tuplet. To control the
 visibility of tuplet brackets, set the property
 @code{'bracket-visibility} to either @code{#t} (always print a
-bracket), @code{#f} (never print a bracket) or @code{#'if-no-beam}
+bracket), @code{#f} (never print a bracket) or @code{'if-no-beam}
 (only print a bracket if there is no beam).
 
 "
index f3cae3839df8f6453a51cba6cb1dc0b870dc951f..c0c9819cede1e228a656c3a3efba168a0f535963 100644 (file)
@@ -33,7 +33,7 @@ fixB = {
   \once \override NoteHead #'X-offset = #1.7
   \once \override Stem #'rotation = #'(45 0 0)
   \once \override Stem #'extra-offset = #'(-0.2 . -0.2)
-  \once \override Stem #'flag-style = #'no-flag
+  \once \override Flag #'style = #'no-flag
   \once \override Accidental #'extra-offset = #'(4 . 0)
 }
 
index a8946c23755c1ea30a9f1ba86ee44c93d5f07325..c24104630358478fce2c6c83600211ba03690906 100644 (file)
@@ -39,6 +39,7 @@ hideFretNumber = {
   \once \override TabNoteHead #'transparent = ##t
   \once \override NoteHead #'transparent = ##t
   \once \override Stem #'transparent = ##t
+  \once \override Flag #'transparent = ##t
   \once \override NoteHead #'no-ledgers = ##t
   \once \override Glissando #'(bound-details left padding) = #0.3
 }
index bc2e4fb3a9b652191841a24a9f1d3e66438471be..0eac0a745bdfb312f2aa8bb613d914f038be3c03 100644 (file)
@@ -48,8 +48,8 @@ les valeurs @code{#1} ou @code{#RIGHT} un alignement par la droite.
   texidoc = "
 Horizontal alignment for lyrics cam be set by overriding the
 @code{self-alignment-X} property of the @code{LyricText} object.
-@code{#-1} is left, @code{#0} is center and @code{#1} is right;
-however, you can use @code{#LEFT}, @code{#CENTER} and @code{#RIGHT} as
+@w{@code{-1}} is left, @code{0} is center and @code{1} is right;
+however, you can use @code{LEFT}, @code{CENTER} and @code{RIGHT} as
 well.
 
 "
index 18b52b36a6e13c582eb85d9ba7a431a4b1904766..de62cfc023cddb4d4dee4c7309b2618407064182 100644 (file)
@@ -32,7 +32,7 @@ speakOn = {
               (grob-interpret-markup grob
                                     (markup #:center-align #:fontsize -4
                                             #:musicglyph "noteheads.s2cross"))
-              -2.3 0))))
+              -2.3))))
 }
 
 speakOff = {
index c7bffb1d2f56313d5b739cee2a4bbcab434d7197..552259dff9d16ff61860a4186f0cd7f1a1659875 100644 (file)
@@ -61,7 +61,7 @@ variables @code{dashHat}, @code{dashPlus}, @code{dashDash},
 @code{dashBar}, @code{dashLarger}, @code{dashDot}, and
 @code{dashUnderscore} are assigned default values.  The default values
 for the shorthands can be modified. For example, to associate the
-@code{-+} (@code{dashPlus}) shorthand with the trill symbol instead of
+@w{@code{-+}} (@code{dashPlus}) shorthand with the trill symbol instead of
 the default + symbol, assign the value @code{trill} to the variable
 @code{dashPlus}:
 
diff --git a/Documentation/snippets/new/ancient-fonts.ly b/Documentation/snippets/new/ancient-fonts.ly
new file mode 100644 (file)
index 0000000..c48cef3
--- /dev/null
@@ -0,0 +1,225 @@
+%% This file is in the public domain.
+\version "2.15.9"
+
+\header {
+  lsrtags = "ancient-notation"
+
+  texidoc = "
+Shown here are many (all?) of the symbols that are included in
+LilyPond's support for ancient notation.
+"
+  doctitle = "Ancient fonts"
+} % begin verbatim
+
+upperStaff = \new VaticanaStaff = "upperStaff" <<
+  \context VaticanaVoice <<
+    \transpose c c {
+
+      \override NoteHead #'style = #'vaticana.punctum
+      \key es \major
+      \clef "vaticana-fa2"
+      c1 des e f ges
+
+      \override NoteHead #'style = #'vaticana.inclinatum
+      a! b ces'
+      \bar "|"
+      % \break % 1 (8*1)
+
+      \override NoteHead #'style = #'vaticana.quilisma
+      b! des'! ges! fes!
+      \breathe
+      \clef "vaticana-fa1"
+      \override NoteHead #'style = #'vaticana.plica
+      es d
+      \override NoteHead #'style = #'vaticana.reverse.plica
+      c d
+      \bar "|"
+      % \break %2 (8*1)
+
+      \override NoteHead #'style = #'vaticana.punctum.cavum
+      es f
+      \override NoteHead #'style = #'vaticana.lpes
+      g as
+      \override NoteHead #'style = #'vaticana.upes
+      bes as
+      \override NoteHead #'style = #'vaticana.vupes
+      g f
+      \override NoteHead #'style = #'vaticana.linea.punctum
+      \once \override Staff.BarLine #'bar-extent = #'(-1 . 1) \bar "|"
+      % \break % 3 (8*1)
+
+      es d
+      \override NoteHead #'style = #'vaticana.epiphonus
+      c d
+      \override NoteHead #'style = #'vaticana.cephalicus
+      es f
+
+      \override Staff.KeySignature #'glyph-name-alist = #alteration-medicaea-glyph-name-alist
+      \override Staff.Accidental #'glyph-name-alist = #alteration-medicaea-glyph-name-alist
+      \override Staff.Custos #'style = #'medicaea
+      \override NoteHead #'style = #'medicaea.punctum
+      \clef "medicaea-fa2"
+      ces des
+      \bar "|"
+      % \break % 4 (8*1)
+
+      e! f! ges
+      \clef "medicaea-do2"
+      \override NoteHead #'style = #'medicaea.inclinatum
+      a! b! ces'
+      \override NoteHead #'style = #'medicaea.virga
+      b! a!
+      \bar "|"
+      % \break % 5 (8*1)
+
+      ges fes
+      \clef "medicaea-fa1"
+      \override NoteHead #'style = #'medicaea.rvirga
+      e des ces
+
+      \override Staff.KeySignature #'glyph-name-alist = #alteration-hufnagel-glyph-name-alist
+      \override Staff.Accidental #'glyph-name-alist = #alteration-hufnagel-glyph-name-alist
+      \override Staff.Custos #'style = #'hufnagel
+      \override NoteHead #'style = #'hufnagel.punctum
+      \clef "hufnagel-fa2"
+      ces des es
+      \bar "|"
+      % \break % 6 (8*1)
+
+      fes ges
+      \clef "hufnagel-do2"
+      \override NoteHead #'style = #'hufnagel.lpes
+      as! bes! ces'
+      \override NoteHead #'style = #'hufnagel.virga
+      bes! as!
+      \bar "|"
+      % \break % 7 (8*1)
+
+      ges! fes!
+      \clef "hufnagel-do-fa"
+      \override NoteHead #'style = #'hufnagel.punctum
+      es! des ces des! es! fes!
+      \bar "||"
+      % \break % 8 (8*1)
+
+      s32*1
+      % \break % 12 (32*1)
+    }
+  >>
+>>
+
+lowerStaff = \new MensuralStaff = "lowerStaff" <<
+  \context MensuralVoice <<
+    \transpose c c {
+
+      \key a \major
+      cis'1 d'\breve gis'\breve e'\breve \[ e'\longa fis'\longa \]
+      \set Staff.forceClef = ##t
+      \clef "neomensural-c2"
+      cis1
+      \bar "|"
+      % \break % 2 (16*1)
+
+      \[ g\breve dis''\longa \]
+      b\breve \[ a\longa d\longa \]
+      \clef "petrucci-c2"
+      % \break % 4 (16*1)
+
+      fis1 ces1
+      \clef "petrucci-c2"
+      r\longa
+      \set Staff.forceClef = ##t
+      \clef "mensural-c2"
+      r\breve
+      \bar "|"
+      % \break % 5 (8*1)
+
+      r2
+      \clef "mensural-g"
+      r4 r8 r16 r16
+      \override NoteHead #'style = #'mensural
+      \override Rest #'style = #'mensural
+      \clef "petrucci-f"
+      c8 b, c16 b, c32 b, c64 b, c64 b,
+      d8 e d16 e d32 e d64 e d64 e
+      r\longa
+      \set Staff.forceClef = ##t
+      \clef "petrucci-f"
+      r\breve
+      \bar "|"
+      % \break % 6 (8*1)
+
+      r\breve
+      \clef "mensural-f"
+      r2 r4 r8 r16 r16
+
+      \set Staff.forceClef = ##t
+      \clef "mensural-f"
+      e\breve f g a1
+      \clef "mensural-g"
+      % \break % 7 (8*1)
+
+      \[ bes'!\longa a'!\longa c''!\longa \]
+      e'1 d' c' d' \bar "|"
+      \bar "|"
+      % \break % 9 (16*1)
+
+      bes'!\longa fis'!1 as'!1 ges'!\longa % lig
+      \set Staff.forceClef = ##t
+      \clef "mensural-g"
+      e'2 d' c' \bar "|"
+      % \break % 11 (16*1)
+
+      \set Staff.forceClef = ##t
+      \clef "petrucci-g"
+      c'2 d' e' f'
+      \clef "petrucci-g"
+      g' as'! bes'! cis''!
+      bes'! as'! gis'! fis'!
+      \set Staff.forceClef = ##t
+      \clef "mensural-g"
+      es'! des'! cis'!1 \bar "||"
+      % \break % 12 (8*1)
+    }
+  >>
+>>
+
+\paper {
+  line-thickness = #(/ staff-space 5.0)
+}
+
+\score {
+  <<
+    \upperStaff
+    \lowerStaff
+  >>
+  \layout {
+    indent = 0.0
+    line-width = 17.25\cm
+    \context {
+      \Score
+      timing = ##f
+    }
+    \context {
+      \MensuralVoice
+      \override NoteHead #'style = #'neomensural
+      \override Rest #'style = #'neomensural
+      \override Flag #'style = #'mensural
+      \override Stem #'thickness = #1.0
+    }
+    \context {
+      \MensuralStaff
+      \revert  BarLine #'transparent
+      \override KeySignature #'glyph-name-alist = #alteration-mensural-glyph-name-alist
+      clefGlyph = #"clefs.petrucci.c2"
+    }
+    \context {
+      \VaticanaStaff
+      \revert  BarLine #'transparent
+      \override StaffSymbol #'thickness = #2.0
+      \override KeySignature #'glyph-name-alist = #alteration-vaticana-glyph-name-alist
+      \override Custos #'neutral-position = #4
+    }
+  }
+}
+
index ebf8cdea9b4b6a5508e64da4b48fb7484c5bacb4..3f412325dd7844524ae0b6bf36a0c1930510af94 100644 (file)
@@ -6,7 +6,7 @@
   texidoc = "
 This code shows how to clip (extract) snippets from a full score.
 
-This file needs to be run separately with @code{-dclip-systems}; the
+This file needs to be run separately with @option{-dclip-systems}; the
 snippets page may not adequately show the results.
 
 The result will be files named
index f2426dcc4ce01a55047eb07af60b851946706d38..f3efe63b7c2d6f9a109eb1ca5b0ebed2c6b5416a 100644 (file)
@@ -16,7 +16,7 @@ fixB = {
   \once \override NoteHead #'X-offset = #1.7
   \once \override Stem #'rotation = #'(45 0 0)
   \once \override Stem #'extra-offset = #'(-0.2 . -0.2)
-  \once \override Stem #'flag-style = #'no-flag
+  \once \override Flag #'style = #'no-flag
   \once \override Accidental #'extra-offset = #'(4 . 0)
 }
 
index 4657d94b858b75b9c9e9c677cbccd0e2eb68744f..bf431fa9facab9c31fa4dfb6e54c082f8fd610ea 100644 (file)
@@ -18,6 +18,7 @@ hideFretNumber = {
   \once \override TabNoteHead #'transparent = ##t
   \once \override NoteHead #'transparent = ##t
   \once \override Stem #'transparent = ##t
+  \once \override Flag #'transparent = ##t
   \once \override NoteHead #'no-ledgers = ##t
   \once \override Glissando #'(bound-details left padding) = #0.3
 }
index 72ea357e5379016893d98533b969f658df80d5bf..b4d2729c1d7f63f98c70d675224edf67307459ba 100644 (file)
@@ -92,7 +92,7 @@ tupletbp       = \once \override Staff.TupletBracket #'padding = #2.25
 %% Flag [Note Head - Stem]
 %%
 
-noflag         = \once \override Stem #'flag-style = #'no-flag
+noflag         = \once \override Flag #'style = #'no-flag
 
 %%%
 %%% Functions
index 7d4fae9f67bcd0652deeb75f30b599a4b6511019..be7c22d585dbd8eb4d7b984b21d33623fda7b176 100644 (file)
@@ -48,7 +48,7 @@ altération précédente.  Pour modifier ce comportement, assignez la propriét
 In accordance with standard typesetting rules, a natural sign is
 printed before a sharp or flat if a previous accidental on the same
 note needs to be canceled.  To change this behavior, set the
-@code{extraNatural} property to @code{f} in the @code{Staff} context.
+@code{extraNatural} property to @code{#f} in the @code{Staff} context.
 
 
 
index 025767c8b0622adef9a6dccaad599487b8c1e1e5..709a3997c68dd916ae9ede517c791b84c0bcd0d1 100644 (file)
@@ -100,7 +100,7 @@ tupletbp       = \once \override Staff.TupletBracket #'padding = #2.25
 %% Flag [Note Head - Stem]
 %%
 
-noflag         = \once \override Stem #'flag-style = #'no-flag
+noflag         = \once \override Flag #'style = #'no-flag
 
 %%%
 %%% Functions
index b739b7b4c0680cb75eefe3282aaedd2ff56521a3..71363b15b95b0d8f04d3447e0c2ca84069b04fa6 100644 (file)
@@ -17,7 +17,7 @@ volta text needs more advanced formatting with @code{\\markup}.
 
 Since @code{repeatCommands} takes a list, the simplest method of
 including markup is to use an identifier for the text and embed it in
-the command list using the Scheme syntax @code{#(list (list 'volta
+the command list using the Scheme syntax @code{(list (list 'volta
 textIdentifier))}. Start- and end-repeat commands can be added as
 separate list elements:
 
index c75c55580e861e9931b41a94f33b1db525f927c7..368607b51a872e324b7b7cd65b22f11b230fc55d 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{Last updated Wed Jul 13 10:59:12 UTC 2011
+@emph{Last updated Sat Aug 13 14:15:49 UTC 2011
 }
 @multitable @columnfractions  0.5 0.5
 
@@ -26,7 +26,7 @@ LilyPond Changes
 @item
 Section titles
 @*
-(1779)
+(193)
 @tab Francisco Vila
 @*
 
@@ -44,11 +44,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #ff7855">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @item
 LilyPond --- \TITLE\
@@ -720,29 +720,29 @@ up to date
 @item
 2 Interfaces for programmers
 @*
-(3568)
+(3899)
 @tab Till Paala
 @*
 
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">translated</span>
+<span style="background-color: #dfef77">partially translated (98 %)</span>
 @end html
 @end ifhtml
 @ifnothtml
-translated
+partially translated (98 %)
 @end ifnothtml
 @*
 
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #39ff22">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Francisco Vila
 @*
@@ -750,22 +750,22 @@ up to date
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">translated</span>
+<span style="background-color: #dfef77">partially translated (98 %)</span>
 @end html
 @end ifhtml
 @ifnothtml
-translated
+partially translated (98 %)
 @end ifnothtml
 @*
 
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #39ff22">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @item
 A GNU Free Documentation License
@@ -1591,7 +1591,7 @@ up to date
 @item
 2 Common notation
 @*
-(4184)
+(4187)
 @tab Pavel Fric
 @*
 
@@ -3539,7 +3539,7 @@ up to date
 @item
 1.4 Repeats
 @*
-(945)
+(944)
 @tab Till Paala
 @*
 
@@ -3557,11 +3557,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Francisco Vila
 @*
@@ -3636,7 +3636,7 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #39ff22">partially up to date</span>
+<span style="background-color: #40fe23">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -3659,7 +3659,7 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #39ff22">partially up to date</span>
+<span style="background-color: #40fe23">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -3799,7 +3799,7 @@ partially up to date
 @item
 1.6 Staff notation
 @*
-(2345)
+(2341)
 @tab Till Paala
 @*
 
@@ -3817,7 +3817,7 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #9eff30">partially up to date</span>
+<span style="background-color: #a5ff31">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -3885,7 +3885,7 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #9eff30">partially up to date</span>
+<span style="background-color: #a5ff31">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -3908,7 +3908,7 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #9eff30">partially up to date</span>
+<span style="background-color: #a5ff31">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -4367,7 +4367,7 @@ up to date
 @item
 2.2 Keyboard and other multi-staff instruments
 @*
-(864)
+(862)
 @tab  Till Paala
 @*
 
@@ -5436,7 +5436,7 @@ up to date
 @item
 3 General input and output
 @*
-(7671)
+(7686)
 @tab Till Paala
 @*
 
@@ -5454,7 +5454,7 @@ partially translated (90 %)
 @ifhtml
 
 @html
-<span style="background-color: #83fe2c">partially up to date</span>
+<span style="background-color: #8aff2d">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -5502,7 +5502,7 @@ partially translated (83 %)
 @ifhtml
 
 @html
-<span style="background-color: #91ff2e">partially up to date</span>
+<span style="background-color: #97ff2f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -5514,11 +5514,11 @@ partially up to date
 @ifhtml
 
 @html
-<span style="background-color: #d0f0f8">not translated</span>
+<span style="background-color: #1fff1f">translated</span>
 @end html
 @end ifhtml
 @ifnothtml
-not translated
+translated
 @end ifnothtml
 @*
 
@@ -5564,11 +5564,11 @@ up to date
 @ifhtml
 
 @html
-<span style="background-color: #dfef77">partially translated (96 %)</span>
+<span style="background-color: #1fff1f">translated</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially translated (96 %)
+translated
 @end ifnothtml
 @*
 
@@ -5612,11 +5612,11 @@ up to date
 @ifhtml
 
 @html
-<span style="background-color: #d0f0f8">not translated</span>
+<span style="background-color: #1fff1f">translated</span>
 @end html
 @end ifhtml
 @ifnothtml
-not translated
+translated
 @end ifnothtml
 @*
 
@@ -5632,7 +5632,7 @@ up to date
 @item
 5 Changing defaults
 @*
-(12248)
+(12258)
 @tab Till Paala
 @*
 
@@ -5750,7 +5750,7 @@ up to date
 @item
 A Notation manual tables
 @*
-(1989)
+(2017)
 @tab Till Paala
 @*
 
@@ -5805,11 +5805,11 @@ Jean-Charles Malahieude
 @ifhtml
 
 @html
-<span style="background-color: #dfef77">partially translated (85 %)</span>
+<span style="background-color: #dfef77">partially translated (84 %)</span>
 @end html
 @end ifhtml
 @ifnothtml
-partially translated (85 %)
+partially translated (84 %)
 @end ifnothtml
 @*
 
@@ -6403,7 +6403,7 @@ up to date
 @item
 1 Running @command{lilypond}
 @*
-(3622)
+(3681)
 @tab Reinhold Kainhofer
 @*
 Till Paala
@@ -6509,11 +6509,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Team-hu
 @*
@@ -6598,11 +6598,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @item
 2 Updating files with @command{convert-ly}
@@ -6789,7 +6789,7 @@ up to date
 @item
 3 Running @command{lilypond-book}
 @*
-(3952)
+(3978)
 @tab Reinhold Kainhofer
 @*
 
@@ -6916,11 +6916,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Federico Bruni
 @*
@@ -6991,7 +6991,7 @@ partially up to date
 @item
 4 External programs
 @*
-(2170)
+(2180)
 @tab Till Paala
 @*
 Reinhold Kainhofer
@@ -7011,11 +7011,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Francisco Vila
 @*
@@ -7034,11 +7034,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Jean-Charles Malahieude
 @*
@@ -7057,11 +7057,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Team-hu
 @*
@@ -7123,11 +7123,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Yoshiki Sawada
 @*
@@ -7146,11 +7146,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #25fe1f">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @item
 5 Suggestions for writing files
@@ -8597,7 +8597,7 @@ partially up to date
 @item
 Manuals
 @*
-(1203)
+(1214)
 @tab Pavel Fric
 @*
 
@@ -9139,7 +9139,7 @@ up to date
 @item
 Community
 @*
-(1755)
+(1888)
 @tab  Pavel Fric
 @*
 
@@ -9157,7 +9157,7 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">partially up to date</span>
+<span style="background-color: #4efe25">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -9180,11 +9180,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #40fe23">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Francisco Vila
 @*
@@ -9203,11 +9203,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #40fe23">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Jean-Charles Malahieude
 @*
@@ -9248,11 +9248,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #40fe23">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Harmath Dénes
 @*
@@ -9271,11 +9271,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #40fe23">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Federico Bruni
 @*
@@ -9314,7 +9314,7 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #25fe1f">partially up to date</span>
+<span style="background-color: #4efe25">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
@@ -9337,11 +9337,11 @@ translated
 @ifhtml
 
 @html
-<span style="background-color: #1fff1f">up to date</span>
+<span style="background-color: #40fe23">partially up to date</span>
 @end html
 @end ifhtml
 @ifnothtml
-up to date
+partially up to date
 @end ifnothtml
 @tab Jan Nieuwenhuizen
 @*
index 375031c98f18cca75ef08a27d85eb7a00fb4b990..f3a3b0948193cc3fdc4d4b944b708789d3d53636 100644 (file)
@@ -239,7 +239,7 @@ for pitches, durations are only written when necessary.
 It is possible to record a MIDI file using a digital keyboard, and
 then convert it to @file{.ly}.  However, human players are not
 rhythmically exact enough to make a MIDI to LY conversion trivial.
-When invoked with quantizing (@code{-s} and @code{-d} options)
+When invoked with quantizing (@option{-s} and @option{-d} options)
 @command{midi2ly} tries to compensate for these timing errors, but is not
 very good at this.  It is therefore not recommended to use @command{midi2ly}
 for human-generated midi files.
index d1018be507685bbcd4dad5dc0c3988cf90bbe8c9..1cc7daf52f4052fc3234e45e4f4caeccf7059502 100644 (file)
@@ -128,7 +128,7 @@ xpdf lilybook
 
 Running @command{lilypond-book} and @command{latex} creates a lot of
 temporary files, which would clutter up the working directory.  To
-remedy this, use the @code{--output=@var{dir}} option.  It will create
+remedy this, use the @option{--output=@var{dir}} option.  It will create
 the files in a separate subdirectory @file{dir}.
 
 Finally the result of the @LaTeX{} example shown above.@footnote{This
@@ -200,27 +200,44 @@ See
 @emph{The Not So Short Introduction to @LaTeX{}}} for an overview on how
 to use @LaTeX{}.
 
-Music is entered using
+@code{lilypond-book} provides the following commands and environments to include
+music in @LaTeX{} files:
+
+@itemize
+
+@item
+the @code{\lilypond@{...@}} command, where you can directly enter short
+lilypond code
+
+@item
+the @code{\begin@{lilypond@}...\end@{lilypond@}} environment, where you
+can directly enter longer lilypond code
+
+@item
+the @code{\lilypondfile@{...@}} command to insert a lilypond file
+
+@item
+the @code{\musicxmlfile@{...@}} command to insert a MusicXML file, which
+will be processed by @code{musicxml2ly} and @code{lilypond}.
+
+@end itemize
+
+In the input file, music is specified with any of the following commands:
 
 @example
 \begin@{lilypond@}[options,go,here]
   YOUR LILYPOND CODE
 \end@{lilypond@}
-@end example
 
-@noindent
-or
+\lilypond[options,go,here]@{ YOUR LILYPOND CODE @}
 
-@example
 \lilypondfile[options,go,here]@{@var{filename}@}
+
+\musicxmlfile[options,go,here]@{@var{filename}@}
 @end example
 
-@noindent
-or
 
-@example
-\lilypond[options,go,here]@{ YOUR LILYPOND CODE @}
-@end example
+@noindent
 
 Additionally, @code{\lilypondversion} displays the current version
 of lilypond.
@@ -397,26 +414,40 @@ Texinfo is the standard format for documentation of the GNU project.  An
 example of a Texinfo document is this manual.  The HTML, PDF, and Info
 versions of the manual are made from the Texinfo document.
 
-In the input file, music is specified with
+@code{lilypond-book} provides the following commands and environments to include
+music into Texinfo files:
+
+@itemize
+
+@item
+the @code{@@lilypond@{...@}} command, where you can directly enter short
+lilypond code
+
+@item
+the @code{@@lilypond...@@end lilypond} environment, where you can directly
+enter longer lilypond code
+
+@item
+the @code{@@lilypondfile@{...@}} command to insert a lilypond file
+
+@item
+the @code{@@musicxmlfile@{...@}} command to insert a MusicXML file, which
+will be processed by @code{musicxml2ly} and @code{lilypond}.
+
+@end itemize
+
+In the input file, music is specified with any of the following commands
 
 @example
 @@lilypond[options,go,here]
   YOUR LILYPOND CODE
 @@end lilypond
-@end example
-
-@noindent
-or
 
-@example
 @@lilypond[options,go,here]@{ YOUR LILYPOND CODE @}
-@end example
 
-@noindent
-or
-
-@example
 @@lilypondfile[options,go,here]@{@var{filename}@}
+
+@@musicxmlfile[options,go,here]@{@var{filename}@}
 @end example
 
 Additionally, @code{@@lilypondversion} displays the current version
@@ -461,8 +492,51 @@ in-line image.  It always gets a paragraph of its own.
 @node HTML
 @subsection HTML
 
-Music is entered using
+@code{lilypond-book} provides the following commands and environments to include
+music in HTML files:
+
+@itemize
+
+@item
+the @code{<lilypond .... />} command, where you can directly enter short lilypond code
+
+@item
+the @code{<lilyond>...</lilypond>} environment, where you can directly enter longer
+lilypond code
+
+@item
+the @code{<lilypondfile>...</lilypondfile>} command to insert a lilypond file
+
+@item
+the @code{<musicxmlfile>...</musicxmlfile>} command to insert a MusicXML file, which
+will be processed by @code{musicxml2ly} and @code{lilypond}.
+
+@end itemize
+
+In the input file, music is specified with any of the following commands:
 
+\begin@{lilypond@}[options,go,here]
+  YOUR LILYPOND CODE
+\end@{lilypond@}
+
+\lilypond[options,go,here]@{ YOUR LILYPOND CODE @}
+
+\lilypondfile[options,go,here]@{@var{filename}@}
+
+\musicxmlfile[options,go,here]@{@var{filename}@}
+@example
+<lilypond options go here>
+  YOUR LILYPOND CODE
+</lilypond>
+
+<lilypond options go here: YOUR LILYPOND CODE />
+
+<lilypondfile options go here>@var{filename}</lilypondfile>
+
+<musicxmlfile options go here>@var{filename}</musicxmlfile>
+@end example
+
+For example, you can write
 @example
 <lilypond fragment relative=2>
 \key c \minor c4 es g2
@@ -490,6 +564,9 @@ To include separate files, say
 <lilypondfile @var{option1} @var{option2} ...>@var{filename}</lilypondfile>
 @end example
 
+@code{<musicxmlfile>} uses the same syntax as @code{<lilypondfile>}, but simply
+references a MusicXML file rather than a LilyPond file.
+
 For a list of options to use with the @code{lilypond} or
 @code{lilypondfile} tags, see @ref{Music fragment options}.
 
@@ -590,11 +667,9 @@ Set staff size to @var{ht}, which is measured in points.
 
 @item ragged-right
 Produce ragged-right lines with natural spacing, i.e.,
-@code{ragged-right = ##t} is added to the LilyPond snippet.  This is the
-default for the @code{\lilypond@{@}} command if no @code{line-width}
-option is present.  It is also the default for the @code{lilypond}
-environment if the @code{fragment} option is set, and no line width is
-explicitly specified.
+@code{ragged-right = ##t} is added to the LilyPond snippet.  Single-line
+snippets will always be typeset by default as ragged-right, unless
+@code{noragged-right} is explicitly given.
 
 @item noragged-right
 For single-line snippets, allow the staff length to be stretched to
@@ -726,7 +801,9 @@ as a domain.
 called @file{foo.ly}, it creates a file @file{foo.texidoc} if there
 is a @code{texidoc} field in the @code{\header}.  The @code{texidoc}
 option makes @command{lilypond-book} include such files, adding its
-contents as a documentation block right before the music snippet.
+contents as a documentation block right before the music snippet (but
+outside the @code{example} environment generated by a @code{quote}
+option).
 
 Assuming the file @file{foo.ly} contains
 
@@ -762,13 +839,6 @@ is called with @option{--header=@/texidoc@var{LANG}}, then
 @file{foo.texidoc@var{LANG}} will be included instead of
 @file{foo.texidoc}.
 
-@item lilyquote
-(Only for Texinfo output.)  This option is similar to quote, but only
-the music snippet (and the optional verbatim block implied by
-@code{verbatim} option) is put into a quotation block.  This option is
-useful if you want to @code{quote} the music snippet but not the
-@code{texidoc} documentation block.
-
 @item doctitle
 (Only for Texinfo output.) This option works similarly to
 @code{texidoc} option: if @command{lilypond} is called with the
@@ -845,7 +915,7 @@ will be included in the @file{.ps} and @file{.pdf} files.
 
 Running @command{dvips} may produce some warnings about fonts; these
 are harmless and may be ignored.  If you are running @command{latex} in
-twocolumn mode, remember to add @code{-t landscape} to the
+twocolumn mode, remember to add @option{-t landscape} to the
 @command{dvips} options.
 
 @subsubheading Texinfo
@@ -902,7 +972,7 @@ Add @var{dir} to the include path.  @command{lilypond-book} also looks
 for already compiled snippets in the include path, and does not write
 them back to the output directory, so in some cases it is necessary to
 invoke further processing commands such as @command{makeinfo} or
-@command{latex} with the same @code{-I @var{dir}} options.
+@command{latex} with the same @option{-I @var{dir}} options.
 
 @item -o @var{dir}
 @itemx --output=@var{dir}
@@ -927,7 +997,7 @@ Do not fail if no PNG images are found for EPS files.  It is used for
 LilyPond Info documentation without images.
 
 @itemx --lily-output-dir=@var{dir}
-Write lily-XXX files to directory @var{dir}, link into @code{--output}
+Write lily-XXX files to directory @var{dir}, link into @option{--output}
 directory.  Use this option to save building time for documents in
 different directories which share a lot of identical snippets.
 
@@ -953,8 +1023,8 @@ line to the right by the same amount.
 @item -P @var{command}
 @itemx --process=@var{command}
 Process LilyPond snippets using @var{command}.  The default command is
-@code{lilypond}.  @code{lilypond-book} will not @code{--filter} and
-@code{--process} at the same time.
+@code{lilypond}.  @code{lilypond-book} will not @option{--filter} and
+@option{--process} at the same time.
 
 @item --pdf
 Create PDF files for use with PDF@LaTeX{}.
@@ -966,8 +1036,8 @@ all output to log files in the same directory as the source files.
 @itemx --use-source-file-names
 Write snippet output files with the same base name as their source file.
 This option works only for snippets included with @code{lilypondfile}
-and only if directories implied by @code{--output-dir} and
-@code{--lily-output-dir} options are different.
+and only if directories implied by @option{--output-dir} and
+@option{--lily-output-dir} options are different.
 
 @item -V
 @itemx --verbose
@@ -1017,7 +1087,7 @@ selects the output format based on the input filename's extension.
 If you use the same filename extension for the input file than the
 extension @command{lilypond-book} uses for the output file, and if the
 input file is in the same directory as @command{lilypond-book} working
-directory, you must use @code{--output} option to make
+directory, you must use @option{--output} option to make
 @command{lilypond-book} running, otherwise it will exit with an error
 message like @qq{Output would overwrite input file}.
 
index f37985396305b4e121422219e400e9fe42d2922b..147bc84c6720737698a69ed46e9f079af004c0dc 100644 (file)
@@ -135,7 +135,7 @@ The following options are supported:
 
 @item -e,--evaluate=@var{expr}
 Evaluate the Scheme @var{expr} before parsing any @file{.ly} files.
-Multiple @code{-e} options may be given, they will be evaluated
+Multiple @option{-e} options may be given, they will be evaluated
 sequentially.
 
 The expression will be evaluated in the @code{guile-user} module, so
@@ -186,7 +186,7 @@ Here are a few interesting options.
 
 @table @samp
 @item help
-Running @code{lilypond -dhelp} will print all of the @code{-d} options
+Running @code{lilypond -dhelp} will print all of the @option{-d} options
 available.
 
 @cindex paper-size, command line
@@ -207,8 +207,8 @@ Note that the string must be enclosed in escaped quotes ( @code{\"} ).
 Do not trust the @code{.ly} input.
 
 When LilyPond formatting is available through a web server, either the
-@code{--safe} or the @code{--jail} option @b{MUST} be passed.  The
-@code{--safe} option will prevent inline Scheme code from wreaking
+@option{--safe} or the @option{--jail} option @b{MUST} be passed.  The
+@option{--safe} option will prevent inline Scheme code from wreaking
 havoc, for example
 
 @quotation
@@ -220,7 +220,7 @@ havoc, for example
 @end verbatim
 @end quotation
 
-The @code{-dsafe} option works by evaluating in-line Scheme
+The @option{-dsafe} option works by evaluating in-line Scheme
 expressions in a special safe module.  This safe module is derived from
 GUILE @file{safe-r5rs} module, but adds a number of functions of the
 LilyPond API.  These functions are listed in @file{scm/safe-lily.scm}.
@@ -231,14 +231,14 @@ disables the use of backslashes in @TeX{} strings.
 In safe mode, it is not possible to import LilyPond variables
 into Scheme.
 
-@code{-dsafe} does @emph{not} detect resource overuse.  It is still possible to
+@option{-dsafe} does @emph{not} detect resource overuse.  It is still possible to
 make the program hang indefinitely, for example by feeding cyclic data
 structures into the backend.  Therefore, if using LilyPond on a
 publicly accessible webserver, the process should be limited in both
 CPU and memory usage.
 
 The safe mode will prevent many useful LilyPond snippets from being
-compiled.  The @code{--jail} is a more secure alternative, but
+compiled.  The @option{--jail} is a more secure alternative, but
 requires more work to set up.
 
 @cindex output format, setting
@@ -286,7 +286,7 @@ This mode is used by default by @command{lilypond-book}.
  for a dump of the raw, internal Scheme-based drawing commands.
 
 @item null
- do not output a printed score; has the same effect as @code{-dno-print-pages}.
+ do not output a printed score; has the same effect as @option{-dno-print-pages}.
 @end table
 
 Example: @code{lilypond -dbackend=svg @var{filename}.ly}
@@ -305,13 +305,13 @@ Runs silently and redirect all output to a log file.
 Note to Windows users: By default @code{lilypond.exe} outputs all
 progress information to the command window, @code{lilypond-windows.exe}
 does not and returns a prompt, with no progress information, immediately
-at the command line.  The @code{-dgui} option can be used in this case
+at the command line.  The @option{-dgui} option can be used in this case
 to redirect output to a log file.
 
 
 @item print-pages
-Generate the full pages, the default.  @code{-dno-print-pages} is
-useful in combination with @code{-dpreview}.
+Generate the full pages, the default.  @option{-dno-print-pages} is
+useful in combination with @option{-dpreview}.
 
 @end table
 
@@ -335,6 +335,35 @@ found the search will continue in subsequent directories.
 @item -i,--init=@var{file}
 Set init file to @var{file} (default: @file{init.ly}).
 
+@cindex loglevel
+@cindex output verbosity, setting
+
+@item -l,--loglevel=@var{LEVEL}
+Set the verbosity of the console output to @var{LEVEL}. Possible values are:
+@table @code
+@item NONE
+No output at all, not even error messages.
+
+@item ERROR
+Only error messages, no warnings or progress messages.
+
+@item WARN
+Warnings and error messages, no progress.
+
+@item BASIC_PROGRESS
+Basic progress messages (success), warnings and errors.
+
+@item PROGRESS
+All progress messages, warnings and errors.
+
+@item INFO (default)
+Progress messages, warnings, errors and further execution information.
+
+@item DEBUG
+All possible messages, including verbose debug output.
+@end table
+
+
 @cindex folder, directing output to
 @cindex output filename, setting
 
@@ -354,7 +383,7 @@ Generate PostScript.
 
 @item --png
 Generate pictures of each page, in PNG format.  This implies
-@code{--ps}.  The resolution in DPI of the image may be set with
+@option{--ps}.  The resolution in DPI of the image may be set with
 @example
 -dresolution=110
 @end example
@@ -362,24 +391,24 @@ Generate pictures of each page, in PNG format.  This implies
 @cindex Portable Document Format (PDF) output
 
 @item --pdf
-Generate PDF.  This implies @code{--ps}.
+Generate PDF.  This implies @option{--ps}.
 
 
 
 @item -j,--jail=@var{user},@var{group},@var{jail},@var{dir}
 Run @command{lilypond} in a chroot jail.
 
-The @code{--jail} option provides a more flexible alternative to
-@code{--safe} when LilyPond formatting is available through a web
+The @option{--jail} option provides a more flexible alternative to
+@option{--safe} when LilyPond formatting is available through a web
 server or whenever LilyPond executes externally provided
 sources.
 
-The @code{--jail} option works by changing the root of @command{lilypond} to
+The @option{--jail} option works by changing the root of @command{lilypond} to
 @var{jail} just before starting the actual compilation process.  The user
 and group are then changed to match those provided, and the current
 directory is changed to @var{dir}.  This setup guarantees that it is not
 possible (at least in theory) to escape from the jail.  Note that for
-@code{--jail} to work @command{lilypond} must be run as root, which is usually
+@option{--jail} to work @command{lilypond} must be run as root, which is usually
 accomplished in a safe way using @command{sudo}.
 
 Setting up a jail is a slightly delicate matter, as we must be sure that
@@ -455,6 +484,10 @@ subdirectories called @file{ly/}, @file{ps/}, @file{tex/}, etc.
 @item LANG
 This selects the language for the warning messages.
 
+@item LILYPOND_LOGLEVEL
+The default loglevel. If LilyPond is called without an explicit loglevel (i.e.
+no @option{--loglevel} command line option), this value is used.
+
 @item LILYPOND_GC_YIELD
 A variable, as a percentage, that tunes memory management
 behavior.  A higher values means the program uses more memory, a
@@ -612,8 +645,8 @@ happens rarely.  The most usual cause is misinstalled fonts.
 @cindex call trace
 @cindex Scheme error
 Errors that occur while executing Scheme code are caught by the Scheme
-interpreter.  If running with the verbose option (@code{-V} or
-@code{--verbose}) then a call trace of the offending
+interpreter.  If running with the verbose option (@option{-V} or
+@option{--verbose}) then a call trace of the offending
 function call is printed.
 
 @item Programming error
index 755c530632e8b108c748eddf8c1e4a2133dd9106..8bb8cef9260a059ecbdd2b83a14ecf9e3593293e 100644 (file)
@@ -132,7 +132,7 @@ in-place.
 @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. @code{--from=2.10.25}
+E.g. @option{--from=2.10.25}
 
 @item -n,--no-version
 Normally, @command{convert-ly} adds a @code{\version} indicator
@@ -143,7 +143,7 @@ Show all known conversions and exit.
 
 @item --to=@var{to-patchlevel}
 Set the goal version of the conversion.  It defaults to the latest
-available version.  E.g. @code{--to=2.12.2}
+available version.  E.g. @option{--to=2.12.2}
 
 @item -h, --help
 Print usage help.
index a5d4784df23f639b317456e0d589ee0d0b7a1f5d..7c938ea74f4df8fa4fff1b3c7d958e0484fa7268 100644 (file)
@@ -262,6 +262,13 @@ guidelines for @ref{Bug reports}.}
 
 @divEnd
 
+@divClass{column-right-bottom}
+@subheading Sensitive emails
+
+Private matters should be sent to Graham Percival (project
+manager), who will discuss it with those concerned.
+
+@divEnd
 
 
 @node Tiny examples
index 63c3c61aa1ae319b10a40ba4f07b571d21bc3e5a..2f14efa1e1d5a5c55bbc347c3f8479038300cea8 100644 (file)
@@ -920,8 +920,8 @@ entered with backslashes.
 @imageFloat{text-input-1-annotate,png,center}
 @imageFloat{text-input-1-output,png,center}
 
-Alterations are made with different names: add @code{-is} for
-sharp, and @code{-es} for flat (these are Dutch note names, other
+Alterations are made with different names: add @w{@code{-is}} for
+sharp, and @w{@code{-es}} for flat (these are Dutch note names, other
 languages are available).  LilyPond figures out where to put
 accidentals.
 
index 607732e3598f35e32e05a3509bf28c787d776027..4521e658d070b89168afe54b2cc9f1a3560a7fbf 100644 (file)
@@ -57,14 +57,14 @@ upperVoiceTwo = \relative c'' {
   s32 s32_\appassmolto s8. \voiceOne r8 <bes'' es bes'>-> s4
   \override Stem #'cross-staff = ##t
   \override Stem #'length = #28
-  \override Stem #'flag-style = #'no-flag
+  \override Flag #'style = #'no-flag
   s8 \voiceTwo g,8 aes4 s4
 }
 
 middleVoiceOne = \relative c' {
   \override Stem #'cross-staff = ##t
   \override Stem #'length = #32
-  \override Stem #'flag-style = #'no-flag
+  \override Flag #'style = #'no-flag
   d!8\noBeam s8 s8 s8_\crmolto s4  % 1
   s4 <g bes\arpeggio>8[ <es' g>] \voiceOne e,8( dis16 e) | % 2
   \revert Stem #'length
@@ -78,7 +78,7 @@ middleVoiceTwo = \relative c' {
   s2. | % 1
   \override Stem #'cross-staff = ##t
   \override Stem #'length = #24
-  \override Stem #'flag-style = #'no-flag
+  \override Flag #'style = #'no-flag
   s2 \voiceTwo e!4 | % 2
   s4 \voiceTwo <bes c es f>8 <f' aes es'>16 d' <bes, f' aes c>8 <bes' fis'> | % 3
 }
index 2a74757d0cbda76a6fe50e5f04e0fb4f45f72732..1d958a3aa8d8e19676dd6dcd5708388c659efd15 100644 (file)
@@ -8,6 +8,21 @@
 
 @c used for news about the upcoming release; see CG 10.2
 
+@newsItem
+@subsubheading LilyPond 2.15.9 released!  @emph{August 30, 2011}
+
+We are happy to announce the release of LilyPond 2.15.9.  This
+release contains the usual number of bugfixes, and also adds
+support for MacOS X 10.7.
+
+It is strongly recommended that normal users do @strong{not} use
+this release, and instead use the stable 2.14 version.  Please
+note that due to a few outstanding Critical bugs, this is not the
+next release candidate.
+
+@newsEnd
+
+
 @newsItem
 @subsubheading Release candidate 1 of 2.16 - LilyPond 2.15.8 released!  @emph{Aug 01, 2011}
 
index 0dfa491ff5028470b75ac1e1e0413e54b48ca923..0f0f5568e18dbe7d9e28eae6b11719c799539271 100644 (file)
@@ -4075,7 +4075,7 @@ in the
 @subsubheading February 2, 2004
 LilyPond 2.1.17 is out. It adds texts
 (solo, a due) for the part combiner. It also reinstates the
-@code{--safe} option which prevents havoc by Scheme exploits.  More
+@option{--safe} option which prevents havoc by Scheme exploits.  More
 information in the
 @ref{Changes}.
 @newsEnd
index 02b3bf4316defe47bbbdf7e9868c6646f4855bd0..78f4191933d34588bc1b083e5413901bebdcdaf0 100644 (file)
@@ -742,7 +742,7 @@ LilyPond 版本 @version{}
 </div>
 @end html
 @iftex
-@image{ly-examples/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png}
+@image{ly-examples/\IMAGE-FILE\,6in,,\IMAGE-FILE\,png}
 @end iftex
 @ifinfo
 @image{lilypond/ly-examples/\IMAGE-FILE\,,,\IMAGE-FILE\,png}
index c6cfac725ebc74e49e560c40bf780a24b215508c..d12b17786673f8c2b1a86053aec84cc8b8de3f2e 100644 (file)
@@ -16,7 +16,7 @@ td { border: 1px solid black; text-align: center; }
 
 @end html
 @end ifhtml
-@emph{最近更新 Wed Jul 13 10:59:12 UTC 2011
+@emph{最近更新 Sat Aug 13 14:15:49 UTC 2011
 }
 @multitable @columnfractions  0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667 0.166666666667
 
@@ -129,7 +129,7 @@ LilyPond --- \TITLE\
 @item
 手册
 @*
-1203
+1214
 @tab Ben Luo
 @tab 
 @tab 
@@ -156,7 +156,7 @@ LilyPond --- \TITLE\
 @item
 社区
 @*
-1755
+1888
 @tab 
 @tab 
 @tab 
diff --git a/VERSION b/VERSION
index cc895541aca245c50ac9f30c2188527a49227cef..e51def66395f2209d643dc5fd322a94ed728b738 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=15
-PATCH_LEVEL=9
+PATCH_LEVEL=10
 MY_PATCH_LEVEL=
 VERSION_STABLE=2.14.2
-VERSION_DEVEL=2.15.8
+VERSION_DEVEL=2.15.9
index 14812a034c39b87363c64d08372b0838750f6e8a..27ce6df6f8ef799193866636c6fceed86607fb54 100644 (file)
@@ -97,9 +97,8 @@ string
 get_working_directory ()
 {
   char cwd[PATH_MAX];
-  getcwd (cwd, PATH_MAX);
-
-  return string (cwd);
+  // getcwd returns NULL upon a failure, contents of cwd would be undefined!
+  return string (getcwd (cwd, PATH_MAX));
 }
 
 /* Join components to full file_name. */
index f575be35fd5a4ec5a0b17d2cfc2f0232360429f3..c58cb935004e2d324381f4b8229d949e63ce7960 100644 (file)
@@ -44,6 +44,7 @@ struct Polynomial
   Real lc () const;
   void print () const;
   Real eval (Real) const;
+  Real minmax (Real, Real, bool) const;
   void print_sols (vector<Real>) const;
   void check_sols (vector<Real>) const;
   void check_sol (Real x) const;
index 3c2a6dc0a9ad1b754cc9d349b96b262715422043..3b66f65b7bf48bbeb149a1c3dfed35265ec7ad66 100644 (file)
 
 #include "std-string.hh"
 
-void error (string s);
-void message (string s);
-void non_fatal_error (string);
-void programming_error (string s);
-void progress_indication (string s);
-void warning (string s);
-void successful (string s);
+/* Log-level bitmasks */
+#define LOG_NONE 0
+#define LOG_ERROR 1<<0
+#define LOG_WARN 1<<1
+#define LOG_BASIC 1<<2  // undocumented basic_progress, i.e. input file name and success
+#define LOG_PROGRESS 1<<3
+#define LOG_INFO 1<<4
+#define LOG_DEBUG 1<<8
+
+/* Log-level definitions (or'ed bitmasks) */
+#define LOGLEVEL_NONE (LOG_NONE)
+#define LOGLEVEL_ERROR (LOG_ERROR)
+#define LOGLEVEL_WARN (LOGLEVEL_ERROR | LOG_WARN)
+#define LOGLEVEL_BASIC (LOGLEVEL_WARN | LOG_BASIC)
+#define LOGLEVEL_PROGRESS (LOGLEVEL_BASIC | LOG_PROGRESS)
+#define LOGLEVEL_INFO (LOGLEVEL_PROGRESS | LOG_INFO)
+#define LOGLEVEL_DEBUG (LOGLEVEL_INFO | LOG_DEBUG)
+
+extern int loglevel;
+
+/* output messages, in decreasing order of importance */
+void error (string s, string location = ""); // Fatal error, exits lilypond!
+void programming_error (string s, string location = "");
+void non_fatal_error (string, string location = "");
+void warning (string s, string location = "");
+void basic_progress (string s, string location = "");
+/* progress_indication does by default *NOT* start on a new line */
+void progress_indication (string s, bool newline = false, string location = "");
+void message (string s, bool newline = true, string location = "");
+void debug_output (string s, bool newline = true, string location = "");
+
+/* Helper functions that always print out the message. Callers should ensure
+   that the loglevel is obeyed */
+void print_message (int level, string location, string s, bool newline = true);
+
+bool is_loglevel (int level);
+void set_loglevel (int level);
+void set_loglevel (string level);
 
 #endif /* WARN_HH */
index 2cd0eaf2e07912f566c837413091b56f02c7114f..05faf4209738a164f170ae86485a6e3059e51e24 100644 (file)
@@ -61,6 +61,32 @@ Polynomial::multiply (const Polynomial &p1, const Polynomial &p2)
   return dest;
 }
 
+Real
+Polynomial::minmax (Real l, Real r, bool ret_max) const
+{
+  vector<Real> sols;
+  if (l > r)
+    {
+      programming_error ("left bound greater than right bound for polynomial minmax.  flipping bounds.");
+      l = l + r;
+      r = l - r;
+      l = l - r;
+    }
+
+  sols.push_back (eval (l));
+  sols.push_back (eval (r));
+
+  Polynomial deriv (*this);
+  deriv.differentiate ();
+  vector<Real> maxmins = deriv.solve ();
+  for (vsize i = 0; i < maxmins.size (); i++)
+    if (maxmins[i] >= l && maxmins[i] <= r)
+      sols.push_back (eval (maxmins[i]));
+  vector_sort (sols, less<Real> ());
+
+  return ret_max ? sols.back () : sols[0];
+}
+
 void
 Polynomial::differentiate ()
 {
index 1c2f4ed134724bfb04c36fde2f380e7ce710cbf2..a6e1fa5f90b27c1c3416877e78eb80a8ad4ebc49 100644 (file)
 
 using namespace std;
 
-/* Is progress indication at NEWLINE?  */
-static bool progress_newline = true;
+/** We have several different loglevels, each with its own message function(s):
+      ERROR: error, non_fatal_error, programming_error
+      WARN: warning
+      BASIC_PROGRESS: success/...
+      PROGRESS: progress_indication
+      INFO: message
+      DEBUG: debug
+  All these functions check whether the corresponding loglevel bit is set
+  and print the message only if that's the case
+*/
+
+/* Define the loglevel (default is INFO) */
+int loglevel = LOGLEVEL_INFO;
+
+bool
+is_loglevel (int level)
+{
+  // Check the bitmask containing the loglevel
+  return (loglevel & level);
+}
+
+void
+set_loglevel (int level)
+{
+  loglevel = level;
+  debug_output (_f ("Log level set to %d\n", loglevel));
+}
+
+void
+set_loglevel (string level)
+{
+  /* Convert the loglevel string to lower-case, so we allow
+     both upper- and lower-case loglevels */
+  std::transform (level.begin (), level.end (), level.begin (), ::tolower);
+
+  /* Compare just the first few characters, so the loglevels
+     can be abbreviated */
+  if (level.compare (0, 5, "debug") == 0) // debug
+    set_loglevel (LOGLEVEL_DEBUG);
+  else if (level.compare (0, 4, "info") == 0) // info
+    set_loglevel (LOGLEVEL_INFO);
+  else if (level.compare (0, 4, "prog") == 0) // progress
+    set_loglevel (LOGLEVEL_PROGRESS);
+  else if (level.compare (0, 5, "basic") == 0) // basic progress
+    set_loglevel (LOGLEVEL_BASIC);
+  else if (level.compare (0, 4, "warn") == 0) // warning
+    set_loglevel (LOGLEVEL_WARN);
+  else if (level.compare (0, 3, "err") == 0) // error
+    set_loglevel (LOGLEVEL_ERROR);
+  else if (level.compare (0, 4, "none") == 0) // none
+    set_loglevel (LOGLEVEL_NONE);
+  else
+    {
+      int l;
+      if (sscanf (level.c_str (), "%d", &l))
+        set_loglevel (l);
+      else
+        {
+          non_fatal_error (_f ("unknown log level `%s', using default (INFO)", 
+                               level));
+          set_loglevel (LOGLEVEL_INFO);
+        }
+    }
+}
+
+
+/**
+ * Helper functions: print_message_part (no newline prepended)
+ *                   print_message (always starts on a new line)
+ */
+
+/* Is output message at NEWLINE?  */
+static bool message_newline = true;
 
-/* Display user information that is not a full message.  */
+/* Display user information as a full message.
+   if newline is true, start the message on a new line.
+*/
 void
-progress_indication (string s)
+print_message (int level, string location, string s, bool newline)
 {
+  /* Only print the message if the current loglevel allows it: */
+  if (!is_loglevel (level))
+    return;
+  if (newline && !message_newline)
+    fputc ('\n', stderr);
+
   /* Test if all silly progress_indication ("\n") can be dropped now.  */
   if (s == "\n")
     return;
 
+  if (!location.empty ())
+    s = location + ": " + s;
   fputs (s.c_str (), stderr);
   fflush (stderr);
   if (s.length ())
-    progress_newline = s[s.length () - 1] == '\n';
+    message_newline = s[s.length () - 1] == '\n';
 }
 
-/* Display a single user message.  Always starts on a new line.  */
+
+/** The actual output functions to be called in lilypond code.
+ *  Sorted in descending order of importance (errors, warnings, progress, info,
+ *  debug). Each prints a message on a separate line.
+ */
+
+/* Display a fatal error message.  Also exits lilypond.  */
 void
-message (string s)
+error (string s, string location)
 {
-  if (!progress_newline)
-    fputc ('\n', stderr);
-  progress_indication (s);
+  print_message (LOG_ERROR, location, _f ("fatal error: %s", s) + "\n");
+  exit (1);
 }
 
-/* Display a success message.  Always starts on a new line.  */
+/* Display a severe programming error message, but don't exit.  */
 void
-successful (string s)
+programming_error (string s, string location)
 {
-  message (_f ("success: %s", s.c_str ()) + "\n");
+  print_message (LOG_ERROR, location, _f ("programming error: %s", s) + "\n");
+  print_message (LOG_ERROR, location, _ ("continuing, cross fingers") + "\n");
 }
 
-/* Display a warning message.  Always starts on a new line.  */
+/* Display a non-fatal error message, don't exit.  */
 void
-warning (string s)
+non_fatal_error (string s, string location)
 {
-  message (_f ("warning: %s", s.c_str ()) + "\n");
+  print_message (LOG_ERROR, location, _f ("error: %s", s) + "\n");
 }
 
+/* Display a warning message. */
 void
-non_fatal_error (string s)
+warning (string s, string location)
 {
-  message (_f ("error: %s", s.c_str ()) + "\n");
+  print_message (LOG_WARN, location, _f ("warning: %s", s) + "\n");
 }
 
-/* Display an error message.  Always starts on a new line.  */
+/* Display a success message.  */
 void
-error (string s)
+basic_progress (string s, string location)
 {
-  non_fatal_error (s);
-  exit (1);
+  print_message (LOG_BASIC, location, s + "\n", true);
+}
+
+/* Display information about the progress.  */
+void
+progress_indication (string s, bool newline, string location)
+{
+  print_message (LOG_PROGRESS, location, s, newline);
 }
 
+/* Display a single info message.  */
 void
-programming_error (string s)
+message (string s, bool newline, string location)
 {
-  message (_f ("programming error: %s", s) + "\n");
-  message (_ ("continuing, cross fingers") + "\n");
+  // Use the progress loglevel for all normal messages (including progress msg)
+  print_message (LOG_INFO, location, s, newline);
 }
 
+/* Display a debug information, not necessarily on a new line.  */
+void
+debug_output (string s, bool newline, string location)
+{
+  print_message (LOG_DEBUG, location, s, newline);
+}
diff --git a/input/regression/accidental-forced-tie-barline.ly b/input/regression/accidental-forced-tie-barline.ly
deleted file mode 100644 (file)
index b62d22a..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-\version "2.14.0"
-
-\header {
-  texidoc = "Cautionary accidentals applied to tied notes after a
-bar line are valid for the whole measure."
-}
-
-notes = \relative c' {
-  fis1 ~
-  fis!2 fis ~
-  fis?2 fis
-}
-
-<<
-  \new NoteNames \notes
-  \new Staff \notes
->>
index c875dc81e04f9c9255f9610a9cf62be78e89bc28..1b33cc9a873db6b65e983abc9a79a066ecd97b7e 100644 (file)
@@ -1,7 +1,10 @@
 \version "2.14.0"
 
 \header {
-  texidoc = "Accidentals can be forced with ! and ? even if the notes are tied."
+  texidoc = "Accidentals can be forced with ! and ? even if the
+notes are tied.  Cautionary accidentals applied to tied notes
+after a bar line are valid for the whole measure.
+"
 }
 
 \layout {
@@ -9,5 +12,9 @@
 }
 
 \relative c'' {
-  gis4 ~ gis!~ gis?
+  gis4 ~ gis!~ gis? r4
+  fis1 ~
+  fis!2 fis ~
+  fis?2 fis
 }
+
diff --git a/input/regression/accidental-tie-overridden.ly b/input/regression/accidental-tie-overridden.ly
deleted file mode 100644 (file)
index bdc67a5..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-\version "2.14.0"
-
-\header {
-  texidoc = "The presence of an accidental after a broken tie can be
-overridden."
-}
-\layout {
-  ragged-right = ##t
-}
-
-mus =          \relative c' {
-  \override Accidental #'hide-tied-accidental-after-break = ##t
-  f1~
-  f2~f4 % ~ f8
-  fis8  gis8 ~
-  \break
-  gis1
-}
-
-<<
-  \new NoteNames \mus
-  \new Voice { \key g \major \mus }
->>
index 739d919e4c9159585e155fb8ccc247a3acf5a386..d187f24a4cbd3b42675f85fbeadc0a51724cab38 100644 (file)
@@ -4,8 +4,11 @@
   texidoc = "The second and third notes should not get accidentals,
     because they are tied to a note.  However, an accidental is
     present if the line is broken at the tie, which happens for the G
-    sharp."
+    sharp.
 
+    The presence of an accidental after a broken tie can be
+    overridden.
+"
 }
 \layout {
   ragged-right = ##t
@@ -17,6 +20,12 @@ mus =        \relative c' {
   fis8  gis8 ~
   \break
   gis1
+  \override Accidental #'hide-tied-accidental-after-break = ##t
+  f1~
+  f2~f4 % ~ f8
+  fis8  gis8 ~
+  \break
+  gis1
 }
 
 <<
index 18e83a2eb3d75873d9751b963aa9ed55449705bc..edb1212ed05c7577a21017d41cd2a487977bf367 100644 (file)
@@ -1,3 +1,4 @@
+\version "2.14.0"
 %{
 #(ly:set-option 'backend 'svg)
 #(set! output-count 1)
@@ -5,7 +6,6 @@
 
 \include "typography-demo.ly"
 
-\version "2.14.0"
 
 #(define outname (ly:parser-output-name parser))
 
diff --git a/input/regression/bar-line-dashed.ly b/input/regression/bar-line-dashed.ly
deleted file mode 100644 (file)
index cf6ebd0..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-
-\header { texidoc = "The dashes in a dashed bar line covers staff
-  lines exactly. Dashed barlines between staves start and end on a
-  half dash precisely." }
-
-\version "2.14.0"
-
-\paper {  ragged-right = ##t }
-
-\relative \new StaffGroup <<
-  \new Staff {
-    c4 \bar "dashed" c }
-  \new Staff {
-    c c
-  }
->>
-
diff --git a/input/regression/bar-line-dotted.ly b/input/regression/bar-line-dotted.ly
deleted file mode 100644 (file)
index eb7a63c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-
-\header {
-  texidoc = "The dots in a dotted bar line are in spaces."
-
-}
-
-\version "2.14.0"
-
-\paper {  ragged-right = ##t }
-
-\relative \new StaffGroup <<
-  \new Staff {
-    c4 \bar ":" c }
-  \new Staff {
-    c c
-  }
->>
-
diff --git a/input/regression/bar-line-thick.ly b/input/regression/bar-line-thick.ly
deleted file mode 100644 (file)
index 68fde67..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-
-\header { texidoc = "A thick bar line is created by \bar \".\", which is consistent with e.g. \bar \"|.\"" }
-
-\version "2.14.0"
-
-\paper {  ragged-right = ##t }
-
-\relative \new StaffGroup <<
-  \new Staff {
-    c4 \bar "." c }
-  \new Staff {
-     c c
-  }
->>
-
diff --git a/input/regression/bar-line-tick.ly b/input/regression/bar-line-tick.ly
deleted file mode 100644 (file)
index be2d6ff..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-
-\header { texidoc = "A ticked bar line is a short line of the same length as a
-  staff space, centered on the top-most barline." }
-
-\version "2.14.0"
-
-\paper {  ragged-right = ##t }
-
-\relative \new StaffGroup <<
-  \new Staff {
-    c4 \bar "'" c }
-  \new Staff {
-     c c
-  }
->>
-
diff --git a/input/regression/bar-lines.ly b/input/regression/bar-lines.ly
new file mode 100644 (file)
index 0000000..8c91060
--- /dev/null
@@ -0,0 +1,38 @@
+\version "2.14.0"
+
+\header { texidoc = "Various types of bar lines can be drawn.
+
+The dashes in a dashed bar line covers staff lines exactly. Dashed
+barlines between staves start and end on a half dash precisely.
+
+The dots in a dotted bar line are in spaces.
+
+A thick bar line is created by \bar \".\", which is consistent
+with e.g. \bar \"|.\"
+
+A ticked bar line is a short line of the same length as a staff
+space, centered on the top-most barline.
+
+" }
+
+\relative \new StaffGroup <<
+  \new Staff = "1" {
+    c2 \bar "dashed" c
+    s1
+    c2 \bar ":" c
+    s1
+    c2 \bar "." c
+    s1
+    c2 \bar "'" c
+  }
+  \new Staff = "2" {
+    c2 c
+    s1
+    c2 c
+    s1
+    c2 c
+    s1
+    c2 c
+  }
+>>
+
index 737f64ac8490be74bbe00c5c63cfbc9182cf3ccf..646c5a6e856272d05a868a2b93f017f555767481 100644 (file)
@@ -3,7 +3,7 @@
 \header {
 
     texidoc = "Point-symmetric beams should receive the same
-    quanting. There is no up/down bias in the quanting code."
+quanting.  There is no up/@/down bias in the quanting code."
 
 }
 \layout{
index 879e0037bed0953a861dad576546fd1cbff79d83..a3e43bc24e53205e9a7f0d1c89ae7faba8ab92be 100644 (file)
@@ -25,7 +25,7 @@ to the last beam.
 
     g'4\rest
     b,8[ b16 \stemDown b''16 b ]
-  }         
+  }
   
 >>
 
index 465325b7a18d0bf39d4f4a3bfe0c1e55387ef4df..d562aa6bd2ad2821553f29db28b2635a3e32ceda 100644 (file)
@@ -5,6 +5,8 @@
     is printed over the beam."
 
 }
+%% FIXME: This file should actually NOT produce any warnings!
+#(ly:set-option 'warning-as-error #f)
 
 \version "2.14.0"
 
@@ -17,7 +19,7 @@ filler = \new Voice \relative c' {
   \hideNotes
   e4 e
 }
-                               %
+%
 
 %%
 %% Ross p108--112
@@ -106,7 +108,7 @@ filler = \new Voice \relative c' {
   e4 e4.
 }
 
-                               % Ross, p122
+% Ross, p122
 primeSixteenths = \relative c' {
   \stemUp
   \assertBeamQuant #'(0 . -1)  #'(0 . -1)
diff --git a/input/regression/beam-rest-extreme.ly b/input/regression/beam-rest-extreme.ly
new file mode 100644 (file)
index 0000000..770bd78
--- /dev/null
@@ -0,0 +1,14 @@
+\version "2.15.9"
+
+\header {
+  texidoc = "Beamed rests are given a pure height approximation
+that gets their spacing correct in the majority of circumstances.
+"
+}
+
+\relative c'' {
+  <f b c f>16[ r <f bes c f> <f b c f>]
+  <f b c f>16[ r <f'' bes c f> <f b c f>]
+  <f b c f>16[ r <f,, bes c f> <f b c f>]
+  <f'' b c f>16[ r <f bes c f> <f b c f>]
+}
diff --git a/input/regression/bom-mark.ly b/input/regression/bom-mark.ly
new file mode 100644 (file)
index 0000000..854754b
--- /dev/null
@@ -0,0 +1,11 @@
+#(ly:set-option 'warning-as-error #f)
+ \version "2.15.9"
+
+
+\header {
+  texidoc = "This input file contains a UTF-8 BOM not at the very beginning,
+  but on the first line after the first byte. LilyPond should gracefully
+  ignore this BOM as specified in RFC 3629, but print a warning."
+}
+
+{ c }
index 27ef71291de6f5d179085724c31391371204712f..d5dad0f0d0f07802750f2b73dbd9a54e66809fa9 100644 (file)
@@ -1,8 +1,8 @@
 \version "2.14.0"
 
 \header {
-  texidoc = "The default callback for break-align-anchor in clefs and time/key
-signatures reads the break-align-anchor-aligment property to align
+  texidoc = "The default callback for break-align-anchor in clefs and time/@/key
+signatures reads the @code{break-align-anchor-aligment} property to align
 the anchor to the extent of the break-aligned grob."
 }
 
index af5f207b4f07abf9cd7b6d58a728b14f49ae9c74..3ec2c79cc063d34a144b26a4eaeef292dab99377 100644 (file)
@@ -3,10 +3,9 @@
 \header{
   texidoc="
 Gregorian chant notation sometimes also uses commas and ticks, but in
-smaller font size (we call it 'virgula' and 'caesura').  However, the
-most common breathing signs are divisio minima/maior/maxima and
+smaller font size (we call it `virgula' and `caesura').  However, the
+most common breathing signs are divisio minima/@/maior/@/maxima and
 finalis, the latter three looking similar to bar glyphs.
-
 " }
 
 \include "gregorian.ly"
diff --git a/input/regression/chord-capo.ly b/input/regression/chord-capo.ly
new file mode 100644 (file)
index 0000000..48bb6de
--- /dev/null
@@ -0,0 +1,28 @@
+\version "2.14.0"
+
+\header{
+  texidoc="Properties capoPitch, capoVertical: display chordnames, suitably
+transposed for a guitar capo, either in a line or one above the other.
+"
+}
+
+<<
+  \new ChordNames \chordmode {
+    c1
+    g1
+    c1
+    g1
+    c1
+    g1
+  }
+  \chordmode {
+    c1
+    g1
+    \set ChordNames.capoPitch = #(ly:make-pitch 0 -2 -1/2)
+    c1
+    g1
+    \set ChordNames.capoVertical = ##t
+    c1
+    g1
+  }
+>>
index 35335149724980e2cf163a8b6001985ac972fdc3..f38f163886f573ec68c0dbbc477235d412659b29 100644 (file)
@@ -9,7 +9,7 @@ Notes:
 @item Regions can span multiple systems. In this case, multiple EPS files are generated.
 @end itemize
 
-This file needs to be run separately with @code{-dclip-systems}; the
+This file needs to be run separately with @option{-dclip-systems}; the
 collated-files.html of the regression test does not adequately show
 the results.
 
index 8403fddfe131ebb443737e770cd54b21321b23f7..20cbd145d8c1d16fc139c6e5519661df3f683227 100644 (file)
@@ -21,5 +21,6 @@ Use the @code{\\override} and @code{\\revert} expressions to set the
   b
   \override NoteHead #'color = #green
   \override Stem #'color = #blue
+  \override Flag #'color = #magenta
   e8 es d dis e4 r
 }
index a36da3accdb9b276c4c312d3b47c0e5ee9fe5856..2f10a44c9182f9c889e3b37ac7f261987c4f10a5 100644 (file)
@@ -9,8 +9,6 @@ notes with a duration factor still keep their requested appearance.
 "
 }
 
-#(set-paper-size "a6")
-
 \layout { ragged-right= ##t }
 
 
index 63aa5b37e08c359590158f05eb9d50b209df3733..034c3053c2725f8998318a5c58dbc0ba01922297 100644 (file)
@@ -9,8 +9,6 @@ rests with a duration factor still keep their requested appearance.
 "
 }
 
-#(set-paper-size "a6")
-
 \layout { ragged-right= ##t }
 
 
diff --git a/input/regression/context-string-tuning.ly b/input/regression/context-string-tuning.ly
new file mode 100644 (file)
index 0000000..2281bb9
--- /dev/null
@@ -0,0 +1,24 @@
+\version "2.14.0"
+
+\header {
+  texidoc="
+Using \contextStringTuning does not break compiling.
+"
+}
+
+mynotes = {
+  c'4 e' g' c'' |
+  e''4 g'' b'' c'''
+}
+
+<<
+  \new Staff {
+    \clef treble
+    \mynotes
+  }
+  \new TabStaff {
+    \contextStringTuning #'custom-tuning <c' g' d'' a''>
+    \mynotes
+  }
+>>
+
index 012130c2b09a460dde9d0339815a7a1cd574f4c4..b0e18781bd8d24f261e306ec819f7fdecf19b904 100644 (file)
@@ -2,7 +2,7 @@
 
 \header {
   texidoc = "Clefs for cue notes at the start of a score should print the
-standard clef plus a small cue clef after the time/key signature."
+standard clef plus a small cue clef after the time/@/key signature."
 }
 
 vI = \relative c'' { \clef "treble" \repeat unfold 40 g4 }
index bfe5e504d203ebd6d4f64d70527476976c865b45..2f64b74159d8758495beea2acd975661840a423a 100644 (file)
@@ -7,7 +7,7 @@ Similarly, an end clef for cue notes ending at a line break should only be
 printed at the end of the line.
 
 Cue notes going over a line break should print the standard clef on the new
-line plus an additional cue clef after the time/key signature."
+line plus an additional cue clef after the time/@/key signature."
 }
 
 vI = \relative c'' { \clef "treble" \repeat unfold 40 g4 }
index a62cc103d31b6732c6d17d58e0a731f2e5e05e6d..848ff190d86b147cdbbc12fc207d40e6522dc59d 100644 (file)
@@ -17,9 +17,7 @@
                           (display c out))))))
     `(let* ((parser-clone (ly:parser-clone parser))
             (input-str (string-trim-both ,lily-string))
-            (music (car (ly:music-property (parse-string-result input-str
-                                                                parser-clone)
-                                           'elements)))
+            (music (ly:parse-string-expression parser-clone input-str))
             (result-str (string-trim-both (music->lily-string music parser-clone))))
        (cons input-str result-str))))
 
index 7ee4d4c8f0506a1339d3dad4802abd2f31053b77..a43f610565af1033d0e364aeecaa4a34394bc954 100644 (file)
@@ -4,7 +4,7 @@
 
   texidoc = "When figures appear inside a voice, @code{ignoreFiguredBassRest} 
   causes all figures on rests to be discarded and all spanners ended.
-  If set to @code{##f}, figures on rests are printed.
+  If set to @code{#f}, figures on rests are printed.
 "
 
 }
index 8d54a8a9cf36d1e5f44a79f25f040f0c663804c5..16b6120b24b9d660e8cdbfa5f53c14f97396939e 100644 (file)
@@ -3,7 +3,7 @@
 \header {
 
 texidoc = "Ordering of the fingerings depends on vertical ordering of the notes, and  
-is independent of up/down direction."
+is independent of up/@/down direction."
 
 }
 
index c74e64e767b75457a3c5fcbafcff55b665bd2479..674ad78ed9fd1ee97bb33172b44da12e92112a9c 100644 (file)
@@ -3,8 +3,8 @@
 
 \header {
   texidoc = "Default flag styles: '(), 'mensural and 'no-flag.
-  Compare all three methods to print them: (1) C++ default implementation, 
-  (2) Scheme implementation using the 'flag-style grob property and 
+  Compare all three methods to print them: (1) C++ default implementation,
+  (2) Scheme implementation using the 'style grob property and
   (3) setting the 'flag property explicitly to the desired Scheme function.
   All three systems should be absolutely identical."
 }
@@ -19,7 +19,7 @@ testnotes = { \autoBeamOff
   c''8 d''16 c''32 d''64 \acciaccatura {c''8} d''64
 }
 
-% Old settings: flag-style set to default, 'mensural, 'no-flag; using the
+% Old settings: style set to default, 'mensural, 'no-flag; using the
 % default C++ function ly:stem::calc-stem
 {
   \override Score.RehearsalMark #'self-alignment-X = #LEFT
@@ -29,11 +29,11 @@ testnotes = { \autoBeamOff
   \testnotes
 
   \mark "Symbol: 'mensural (C++)"
-  \override Stem #'flag-style = #'mensural
+  \override Flag #'style = #'mensural
   \testnotes
 
   \mark "Symbol: 'no-flag (C++)"
-  \override Stem #'flag-style = #'no-flag
+  \override Flag #'style = #'no-flag
   \testnotes
 }
 
@@ -42,17 +42,17 @@ testnotes = { \autoBeamOff
   \override Score.RehearsalMark #'self-alignment-X = #LEFT
   \time 2/4
 
-  \override Stem #'flag = #default-flag
-  \revert Stem #'flag-style
+  \override Flag #'stencil = #default-flag
+  \revert Flag #'style
   \mark "Default flags (Scheme)"
   \testnotes
 
   \mark "Symbol: 'mensural (Scheme)"
-  \override Stem #'flag-style = #'mensural
+  \override Flag #'style = #'mensural
   \testnotes
 
   \mark "Symbol: 'no-flag (Scheme)"
-  \override Stem #'flag-style = #'no-flag
+  \override Flag #'style = #'no-flag
   \testnotes
 }
 
@@ -62,14 +62,14 @@ testnotes = { \autoBeamOff
   \time 2/4
 
   \mark "Function: normal-flag"
-  \override Stem #'flag = #normal-flag
+  \override Flag #'stencil = #normal-flag
   \testnotes
 
   \mark "Function: mensural-flag"
-  \override Stem #'flag = #mensural-flag
+  \override Flag #'stencil = #mensural-flag
   \testnotes
 
   \mark "Function: no-flag"
-  \override Stem #'flag = #no-flag
+  \override Flag #'stencil = #no-flag
   \testnotes
 }
index b26f9b71d66d2087fb710fcaae749a8bb89e440a..75248fbcb90b882e129b2fdf1b263b8ac084ef3d 100644 (file)
@@ -1,7 +1,7 @@
 \version "2.14.0"
 
 \header {
-  texidoc = "The 'flag property of the Stem grob can be set to a custom
+  texidoc = "The 'stencil property of the Flag grob can be set to a custom
 scheme function to generate the glyph for the flag."
 }
 
@@ -9,26 +9,28 @@ scheme function to generate the glyph for the flag."
 % test notes, which will be shown in different style:
 testnotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64 c''8 d''16 c''32 d''64 \acciaccatura {c''8} d''64  }
 
-#(define-public (weight-flag stem-grob)
-  (let* ((log (- (ly:grob-property stem-grob 'duration-log) 2))
+#(define-public (weight-flag grob)
+  (let* ((stem-grob (ly:grob-parent grob X))
+         (log (- (ly:grob-property stem-grob 'duration-log) 2))
          (is-up (eqv? (ly:grob-property stem-grob 'direction) UP))
          (yext (if is-up (cons (* log -0.8) 0) (cons 0 (* log 0.8))))
          (flag-stencil (make-filled-box-stencil '(-0.4 . 0.4) yext))
-         (stroke-style (ly:grob-property stem-grob 'stroke-style))
+         (stroke-style (ly:grob-property grob 'stroke-style))
          (stroke-stencil (if (equal? stroke-style "grace") (make-line-stencil 0.2 -0.9 -0.4 0.9 -0.4) empty-stencil)))
     (ly:stencil-add flag-stencil stroke-stencil)))
 
 
 % Create a flag stencil by looking up the glyph from the font
-#(define (inverted-flag stem-grob)
-  (let* ((dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "d" "u"))
-         (flag (retrieve-glyph-flag "" dir "" stem-grob))
-         (line-thickness (ly:staff-symbol-line-thickness stem-grob))
+#(define (inverted-flag grob)
+  (let* ((stem-grob (ly:grob-parent grob X))
+         (dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "d" "u"))
+         (flag (retrieve-glyph-flag "" dir "" grob))
+         (line-thickness (ly:staff-symbol-line-thickness grob))
          (stem-thickness (ly:grob-property stem-grob 'thickness))
          (stem-width (* line-thickness stem-thickness))
-         (stroke-style (ly:grob-property stem-grob 'stroke-style))
+         (stroke-style (ly:grob-property grob 'stroke-style))
          (stencil (if (null? stroke-style) flag
-                         (add-stroke-glyph flag stem-grob dir stroke-style "")))
+                         (add-stroke-glyph flag grob dir stroke-style "")))
          (rotated-flag (ly:stencil-rotate-absolute stencil 180 0 0)))
     (ly:stencil-translate rotated-flag (cons (- (/ stem-width 2))  0))))
 
@@ -36,11 +38,11 @@ testnotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64 c''8 d''1
   \override Score.RehearsalMark #'self-alignment-X = #LEFT
   \time 2/4
   \mark "Function: weight-flag (custom)"
-  \override Stem #'flag = #weight-flag
+  \override Flag #'stencil = #weight-flag
   \testnotes
 
   \mark "Function: inverted-flag (custom)"
-  \override Stem #'flag = #inverted-flag
+  \override Flag #'stencil = #inverted-flag
   \testnotes
 
 }
index 7a13d64bae81ad7304dfadf755ae035736fbcc5f..3190abd2fd69e14f2002d56c6ed99d9d72d4f9bb 100644 (file)
@@ -17,7 +17,7 @@ stemLength = #(define-music-function (parser location length) (number?)
 {
     \autoBeamOff
     \time 3/8
-    \override Stem #'flag = #modern-straight-flag
+    \override Flag #'stencil = #modern-straight-flag
     \override Stem #'length-fraction = #'1.5
     r8
     \acciaccatura {
index 918985e6ef9d12ba071964ab58edaf27d3b0951c..f4b7a51dac0a5427560b9324f53346eee6e9c486 100644 (file)
@@ -13,11 +13,11 @@ testnotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64
   \override Score.RehearsalMark #'self-alignment-X = #LEFT
   \time 2/4
   \mark "modern straight"
-  \override Stem #'flag = #modern-straight-flag
+  \override Flag #'stencil = #modern-straight-flag
   \testnotes
 
   \mark "old straight (large angles)"
-  \override Stem #'flag = #old-straight-flag
+  \override Flag #'stencil = #old-straight-flag
   \testnotes
 %
 %   \mark "custom slant"
@@ -25,6 +25,6 @@ testnotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64
 % %                flag thickness and spacing
 % %                up-flag angle and length
 % %               down-flag angle and length
-%   \override Stem #'flag = #(straight-flag 0.35 0.8 -5 0.5 60 2.0)
+%   \override Flag #'stencil = #(straight-flag 0.35 0.8 -5 0.5 60 2.0)
 %   \testnotes
 }
index 37e83eb2d88ed47581b175d07aaf57967f5fa506..7d3053875aca2d750cad2a5ada40769b72270205 100644 (file)
@@ -1,6 +1,6 @@
 \header
 {
-  texidoc = "TM and No should not be changed into trademark/number symbols.
+  texidoc = "TM and No should not be changed into trademark/@/number symbols.
 This may happen with incorrect font versions.
 "
 }
index dc3fa468b5c10de78b3391929d478e847ae9f8e2..0663f5e80a5e1b0b2ed5256d3273d78b45788da5 100644 (file)
@@ -16,9 +16,9 @@ have been reached.
 \book {
 
 \markup {
-  a \footnote b c
-  \footnote d e
-  \footnote f g
+  a \auto-footnote b c
+  \auto-footnote d e
+  \auto-footnote f g
 }
 
 \markup { h i }
@@ -29,7 +29,7 @@ a b c d }
 
 \pageBreak
 
-\markup { k \footnote l m }
+\markup { k \auto-footnote l m }
 
 \relative c' { a1 }
 
index 3c0b410956082d0ec5d38d124c942d6e14c37123..790278288b3f21a99f2b167aca8b55caa12648e2 100644 (file)
@@ -15,9 +15,9 @@ footnotes.
 \book {
 
 \markup {
-  a \footnote b c
-  \footnote d e
-  \footnote f g
+  a \auto-footnote b c
+  \auto-footnote d e
+  \auto-footnote f g
 }
 
 \markup { h i }
@@ -28,7 +28,7 @@ a b c d }
 
 \pageBreak
 
-\markup { k \footnote l m }
+\markup { k \auto-footnote l m }
 
 \relative c' { a1 }
 
index 6159b5dc5f35cf3ad6caaebd26ebc297dec71570..23e9035a7128688ffb8ab050ab39291fb6ed843c 100644 (file)
@@ -7,10 +7,6 @@ can be overrided."
 
 #(set-default-paper-size "a6")
 
-\paper {
-  footnote-auto-numbering = ##f
-}
-
 \book {
 
 \new Staff \with { \consists "Footnote_engraver" }
index ce37e71426ad0e6d053bbc25e3e47fdf04894bde..b0fd84a30987283e44df50226ff84a4d2252daf6 100644 (file)
@@ -5,10 +5,6 @@
 
 #(set-default-paper-size "a6")
 
-\paper {
-  footnote-footer-padding = 1\in
-}
-
 \book {
 
   \relative c' {
index 8129d6fd4b982e369d8c7aa83dcb0d96666cb8a3..ec27ba7f360f0e7d52a83b5c8e0d23ec9a6f43af 100644 (file)
@@ -8,7 +8,6 @@ annotation goes to the correct page."
 
 \paper {
   ragged-last-bottom = ##f
-  footnote-auto-numbering = ##f
 }
 
 \book {
index a2b1c658034654c93efb5a85e77b2e2bdd00595d..f13347d31aeb3f73ef988fa96ae59732bfe27357 100644 (file)
@@ -3,10 +3,6 @@
   texidoc = "Lilypond does footnotes."
 }
 
-\paper {
-  footnote-auto-numbering = ##f
-}
-
 #(set-default-paper-size "a6")
 \book {
 
index e492b5d85a0eded98ae072dd31883f1e70d2e0e3..cb33f552e3abc076e6522cb620b91652bd8a8ac7 100644 (file)
@@ -3,7 +3,7 @@
 \header {
   texidoc="
 Fret diagrams can be scaled using the @code{size} property.
-The position and size of first fret label, mute/open signs, fingers,
+The position and size of first fret label, mute/@/open signs, fingers,
 relative to the diagram grid, shall be the same in all cases.
 
 "
diff --git a/input/regression/glissando-accidental.ly b/input/regression/glissando-accidental.ly
new file mode 100644 (file)
index 0000000..1e15196
--- /dev/null
@@ -0,0 +1,9 @@
+\header {
+  texidoc = "Glissandi stop before hitting accidentals."
+
+}
+\version "2.15.9"
+
+\relative c'' {
+  a1\glissando cis
+}
index 99cfc7e5ea2dfe3029a132032de871d755cc02f1..a88d9ee017616e50aec4ce5422d0e2bc739a7ead 100644 (file)
@@ -1,6 +1,6 @@
 \version "2.14.0"
 \header  {
-  texidoc = "Grace notes in different voices/staves are synchronized."
+  texidoc = "Grace notes in different voices/@/staves are synchronized."
 }
 
 \layout { ragged-right = ##t}
index 42fab60ad331a0c058926c36bbcf85b657e1f547..d302a7d9910aae0eeb387ca9feed487ca0c74bd4 100644 (file)
@@ -8,8 +8,10 @@
 
 #(whitelist-grob 'NoteHead)
 #(whitelist-grob 'Stem)
+#(whitelist-grob 'Flag)
 #(whitelist-grob "NoteHead")
 #(whitelist-grob "Stem")
+#(whitelist-grob "Flag")
 
 #(map whitelist-symbol '(stencil style duration-log
                         stem-attachment end-position staff-position
index 57d1eaf372c3a78ac677fbf7baa9ec41c2771c35..c58d56ef6012752e2eeb1a0b3e01ce7c65d33e71 100644 (file)
@@ -74,6 +74,7 @@ skips =
     \override NoteHead #'transparent = ##t
     \override NoteHead #'no-ledgers = ##t
     \override Stem #'transparent = ##t
+    \override Flag #'transparent = ##t
     \override Beam #'transparent = ##t
     << \skips
 
index 287c67403d2994fcae337d1d6d286b503e80cef9..29631053fe76151f90d570321b4dec561aa4a98d 100644 (file)
@@ -1,4 +1,5 @@
 \version "2.14.0"
+#(ly:set-option 'warning-as-error #f)
 
 \header {
 
index fad2500f5be59590e126c1804ad2d4356dd67e3e..6dc79306c8a3a1cbe28b7401325c929e864d570d 100644 (file)
@@ -154,7 +154,7 @@ bass = \new Voice \relative c{
     >>
 
     \grace {
-       \override Stem  #'stroke-style = #"grace"
+       \override Flag  #'stroke-style = #"grace"
 
         s8
         s16 s s
@@ -163,7 +163,7 @@ bass = \new Voice \relative c{
        \clef bass
        <e,,, e,>32(\sustainOff\sustainOn
 
-       \revert Stem #'stroke-style
+       \revert Flag #'stroke-style
     }
     <gis' e>2)
 
index a1e5bdc3b7598d568fccf7662a82737e29b89a1e..6081f7fe36d84daf75f222b41d94ae2b7841b816 100644 (file)
@@ -8,3 +8,11 @@ COLLATED_FILES = $(OUT_FILES)
 include $(depth)/make/stepmake.make
 
 TITLE=lilypond-book Test Suite
+
+EXTRA_DIST_FILES = include.mxl
+EXTRA_DIST_FILES += $(call src-wildcard,*.ly)
+EXTRA_DIST_FILES += $(call src-wildcard,*.ily)
+EXTRA_DIST_FILES += $(call src-wildcard,*.tely)
+EXTRA_DIST_FILES += $(call src-wildcard,*.itely)
+
+
diff --git a/input/regression/lilypond-book/html-musicxml-file-compressed.htmly b/input/regression/lilypond-book/html-musicxml-file-compressed.htmly
new file mode 100644 (file)
index 0000000..a839edd
--- /dev/null
@@ -0,0 +1,6 @@
+<html>
+<body>
+Including a compressed MusicXML file:
+<musicxmlfile language="deutsch" absolute no-beaming printfilename>include.mxl</musicxmlfile>
+</body>
+</html>
diff --git a/input/regression/lilypond-book/html-musicxml-file-options.htmly b/input/regression/lilypond-book/html-musicxml-file-options.htmly
new file mode 100644 (file)
index 0000000..6e05bbe
--- /dev/null
@@ -0,0 +1,6 @@
+<html>
+<body>
+Including a MusicXML file:
+<musicxmlfile language="deutsch" absolute no-beaming printfilename>include.xml</musicxmlfile>
+</body>
+</html>
diff --git a/input/regression/lilypond-book/html-musicxml-file.htmly b/input/regression/lilypond-book/html-musicxml-file.htmly
new file mode 100644 (file)
index 0000000..6f8d7e3
--- /dev/null
@@ -0,0 +1,6 @@
+<html>
+<body>
+Including a MusicXML file:
+<musicxmlfile>include.xml</musicxmlfile>
+</body>
+</html>
diff --git a/input/regression/lilypond-book/include.mxl b/input/regression/lilypond-book/include.mxl
new file mode 100644 (file)
index 0000000..d709094
Binary files /dev/null and b/input/regression/lilypond-book/include.mxl differ
diff --git a/input/regression/lilypond-book/include.xml b/input/regression/lilypond-book/include.xml
new file mode 100644 (file)
index 0000000..839e145
--- /dev/null
@@ -0,0 +1,55 @@
+<?xml version="1.0"?>
+<!DOCTYPE score-partwise PUBLIC "-//Recordare//DTD MusicXML 0.6 Partwise//EN" "http://www.musicxml.org/dtds/partwise.dtd">
+<score-partwise>
+       <identification>
+               <miscellaneous>
+                       <miscellaneous-field name="description">One simple chord
+                            consisting of two notes.</miscellaneous-field>
+               </miscellaneous>
+       </identification>
+       <part-list>
+               <score-part id="P0">
+                       <part-name>MusicXML Part</part-name>
+               </score-part>
+       </part-list>
+       <part id="P0">
+               <measure number="1">
+                       <attributes>
+                               <divisions>960</divisions>
+                               <time>
+                               <beats>4</beats>
+                               <beat-type>4</beat-type>
+                               </time>
+                               <clef>
+                               <sign>G</sign>
+                               <line>2</line>
+                               </clef>
+                       </attributes>
+                       <note>
+                               <pitch>
+                                       <step>B</step>
+                                       <octave>4</octave>
+                               </pitch>
+                               <duration>960</duration>
+                               <voice>1</voice>
+                               <type>quarter</type>
+                       </note>
+                       <note>
+                               <chord/>
+                               <pitch>
+                                       <step>G</step>
+                                       <octave>4</octave>
+                               </pitch>
+                               <duration>960</duration>
+                               <voice>1</voice>
+                               <type>quarter</type>
+                       </note>
+                       <note>
+                               <rest/>
+                               <duration>960</duration>
+                               <voice>1</voice>
+                               <type>quarter</type>
+                       </note>
+               </measure>
+       </part>
+</score-partwise>
diff --git a/input/regression/lilypond-book/tex-musicxml-file-options.lytex b/input/regression/lilypond-book/tex-musicxml-file-options.lytex
new file mode 100644 (file)
index 0000000..154ed66
--- /dev/null
@@ -0,0 +1,5 @@
+\documentclass{article}
+\begin{document}
+Including MusicMXL file:
+\musicxmlfile[language=deutsch,absolute,no-beaming]{include.xml}
+\end{document}
diff --git a/input/regression/lilypond-book/tex-musicxml-file.lytex b/input/regression/lilypond-book/tex-musicxml-file.lytex
new file mode 100644 (file)
index 0000000..2995b35
--- /dev/null
@@ -0,0 +1,5 @@
+\documentclass{article}
+\begin{document}
+Including MusicMXL file:
+\musicxmlfile{include.xml}
+\end{document}
diff --git a/input/regression/lilypond-book/texinfo-musicxml-file-options.tely b/input/regression/lilypond-book/texinfo-musicxml-file-options.tely
new file mode 100644 (file)
index 0000000..8545453
--- /dev/null
@@ -0,0 +1,12 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
+@setfilename texinfo-musicxml-file.info
+@settitle MusicXML inside texinfo
+
+@node Top
+@top MusicMXL in texinfo
+
+MusicXML included in texinfo
+@musicxmlfile[language=deutsch,absolute,no-beaming]{include.xml}
+
+
+@bye
diff --git a/input/regression/lilypond-book/texinfo-musicxml-file.tely b/input/regression/lilypond-book/texinfo-musicxml-file.tely
new file mode 100644 (file)
index 0000000..8ff2384
--- /dev/null
@@ -0,0 +1,12 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
+@setfilename texinfo-musicxml-file.info
+@settitle MusicXML inside texinfo
+
+@node Top
+@top MusicMXL in texinfo
+
+MusicXML included in texinfo
+@musicxmlfile{include.xml}
+
+
+@bye
diff --git a/input/regression/loglevels.ly b/input/regression/loglevels.ly
new file mode 100644 (file)
index 0000000..880c637
--- /dev/null
@@ -0,0 +1,41 @@
+\version "2.15.9"
+
+#(ly:set-option 'warning-as-error #f)
+
+\header{
+  texidoc="
+Test the different loglevels of lilypond. Run this file with --loglevel=NONE,
+ERROR, WARNING, PROGRESS, DEBUG to see the different loglevels. The errors
+are commented out. Comment them in to check the output manually.
+"
+}
+
+%%%% message functions of the Input class:
+#(display "\nMessage functions of the Input class:\n")
+
+messageTest = #(define-music-function (parser location) ()
+   (ly:input-message location "Test ly:input-message" )
+   (make-music 'Music))
+
+{
+%   #(display "-) Testing message\n")
+  \messageTest % message
+%   #(display "-) Testing warning\n")
+  c4( c( c) % warning
+%   #(display "-) Testing error\n")
+%   sr  % error
+}
+
+%%%% message functions in the warn.hh file:
+#(display "Message functions in the warn.hh file:\n")
+
+% #(display "-) Testing debug\n")
+#(ly:debug "Test debug\n")
+% #(display "-) Testing progress\n")
+#(ly:progress "Test progress\n")
+% #(display "-) Testing message\n")
+#(ly:message "Test message\n")
+% #(display "-) Testing warning\n")
+#(ly:warning "Test warning\n")
+% #(display "-) Testing error\n")
+% #(ly:error "Test error\n")
index 0b5bf4db9cdc541c05ea93176834c1a585bb7fae..1c213476f1d3a57f5a7c1841f959797c59be223c 100644 (file)
@@ -8,7 +8,7 @@ lyrics will be discarded.  Lyrics will not be set over rests.  You can
 have melismata either by setting a property melismaBusy, or by setting
 automaticMelismas (which will set melismas during slurs and ties).  If
 you want a different order than first Music, then Lyrics, you must
-precook a chord of staves/lyrics and label those.  Of course, the
+precook a chord of staves/@/lyrics and label those.  Of course, the
 lyrics ignore any other rhythms in the piece."
 
 }
index f5f826a673a1f387df3190c90f16976ef33cd213..37c321213b4c7900f80b9e674313ccc47d536899 100644 (file)
@@ -2,8 +2,8 @@
 
 \header{
   texidoc="
-The tempo command supports text markup and/or duration=count.  Using
-@code{Score.tempoHideNote}, one can hide the duration=count in the tempo mark.
+The tempo command supports text markup and/@/or `duration=count'.  Using
+@code{Score.tempoHideNote}, one can hide the `duration=count' in the tempo mark.
 "
 }
 
index 47b96b4cc7c14b621b23d67f577d1d1d6f7a8616..27fa7f193b5d81b585fffff62deb5897420c419c 100644 (file)
@@ -19,7 +19,7 @@
 
 % included from ./out-www/option-key.header
 \header {
-texidoc="midi2ly @code{--key} works, this is F major"
+texidoc="@code{midi2ly}'s option @option{--key} works, this is F major."
 options="--key=-1"
 }
 % end
index 26f7d65a7c1cb8bab3fb1c237654d88e99eacd91..868ca44c18dc0fff924dd78195fc071a59c06b79 100644 (file)
@@ -18,7 +18,7 @@
 }
 
 \header {
-texidoc="midi2ly @code{--duration-quant} preserves first note length (16)"
+texidoc="@code{midi2ly}'s option @option{--duration-quant} preserves first note length (16)."
 options="--duration-quant=16"
 }
 
index f0d6bed9aeec7fbc3423008241cacd3d843c7219..6c9570f4a8b41e0708143b4b936925b164151b9b 100644 (file)
@@ -19,7 +19,7 @@
 
 % included from ./out-www/voice-2.header
 \header {
-texidoc="midi2ly @code{--duration-quant} quantizes durations of notes"
+texidoc="@code{midi2ly}'s option @option{--duration-quant} quantizes durations of notes."
 options="--duration-quant=4"
 }
 % end
index 2e5497f11e35a0f6ad8b94ca0487dd56d76c7b72..ffa1176946a3e05ed125c9627cd8e65ce710fbc5 100644 (file)
@@ -19,7 +19,7 @@
 
 % included from ./out-www/voice-2.header
 \header {
-texidoc="midi2ly @code{--start-quant} quantizes start of notes"
+texidoc="@code{midi2ly}'s option @option{--start-quant} quantizes start of notes."
 options="--start-quant=4"
 }
 % end
index 78ef6ab122c9878b4fa1578af34f0a5c4d32b59f..fb87ca910758b1c0e8aa4f47d32f20c7515cd790 100644 (file)
@@ -1,7 +1,7 @@
 % 
 
-longgrace = \override Stem  #'stroke-style = #'()
-endlonggrace = \revert Stem #'stroke-style
+longgrace = \override Flag  #'stroke-style = #'()
+endlonggrace = \revert Flag #'stroke-style
 ritenuto = \markup { \italic  "rit." }
 
 \version "2.14.0"
index b343d88b6fb1372f7bdea8a056b5149ce8927751..65e73ea8670b8e35a69acb88e28293279055af16 100644 (file)
@@ -3,21 +3,22 @@ depth = ../../..
 STEPMAKE_TEMPLATES=documentation texinfo tex
 LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc musicxml
 
-EXTRA_DIST_FILES = LICENSE
+EXTRA_DIST_FILES = LICENSE book-musicxml-testsuite.py
 
 TEXI2HTML_FLAGS += --nomenu
 
-# Urgh, how can I do two replacements at once without messing up the order of the list?
-TMP = $(sort $(MUSICXML_FILES) $(MUSICMXL_FILES) $(TEXINFO_SOURCES) )
-TMP1 = ${TMP:%.xml=$(outdir)/%.ly}
-COLLATED_FILES = ${TMP1:%.mxl=$(outdir)/%.ly}
+COLLATED_FILES = $(sort $(MUSICXML_FILES) $(MUSICMXL_FILES) $(TEXINFO_SOURCES) )
 
 
 include $(depth)/make/stepmake.make
 
 
 TITLE=Unofficial MusicXML test suite
+AUTHOR=Reinhold Kainhofer
 TEST_SUITE_VERSION=0.1
+LILYPOND_BOOK_FLAGS += --load-custom-package=$(src-dir)/book-musicxml-testsuite.py
+# This breaks since *.tex and *.texi still contains ac/lily-xxxxxx references!
+#LILYPOND_BOOK_FLAGS += --use-source-file-names
 
 ifeq ($(out),www)
 local-WWW-2: zip
diff --git a/input/regression/musicxml/book-musicxml-testsuite.py b/input/regression/musicxml/book-musicxml-testsuite.py
new file mode 100644 (file)
index 0000000..a292db5
--- /dev/null
@@ -0,0 +1,64 @@
+# -*- coding: utf-8 -*-
+
+import book_base as BookBase
+import book_texinfo as BookTexinfo
+import book_snippets as BookSnippet
+import lilylib as ly
+
+MusicXMLOutputImage = r'''@noindent
+@ifinfo
+@image{%(info_image_path)s,,,%(alt)s,%(ext)s}
+@end ifinfo
+@html
+<p>
+ <a href="%(base)s%(ext)s">
+  <img align="middle" border="0" src="%(image)s" alt="%(alt)s">
+ </a>
+</p>
+@end html
+'''
+
+MusicXMLOutput = r'''
+@iftex
+@include %(base)s-systems.texi
+@end iftex
+'''
+
+MusicXMLPrintFilename = r'''
+@html
+<a href="%(base)s%(ext)s">
+@end html
+@file{%(filename)s}
+@html
+</a>
+@end html
+'''
+
+
+
+
+class BookMusicXML (BookTexinfo.BookTexinfoOutputFormat):
+    def __init__ (self):
+        BookTexinfo.BookTexinfoOutputFormat.__init__ (self)
+        self.format = "MusicXMLTest"
+        self.output[BookBase.OUTPUTIMAGE] = MusicXMLOutputImage
+        self.output[BookBase.OUTPUT] = MusicXMLOutput
+        self.output[BookBase.PRINTFILENAME] = MusicXMLPrintFilename
+    def snippet_class (self, type):
+      if type == "musicxml_file":
+          return MusicXMLTestSuiteSnippet
+      else:
+          return BookSnippet.snippet_type_to_class.get (type, BookSnippet.Snippet)
+    def snippet_output (self, basename, snippet):
+        return BookTexinfo.BookTexinfoOutputFormat.snippet_output (self, basename, snippet)
+
+
+class MusicXMLTestSuiteSnippet (BookSnippet.MusicXMLFileSnippet):
+    def __init__ (self, type, match, formatter, line_number, global_options):
+        BookSnippet.MusicXMLFileSnippet.__init__ (self, type, match, formatter, line_number, global_options)
+
+## TODO: Customize output with renderings from other MusicXML-supporting
+#        applications. Also add some link to the intermediate .ly file
+
+
+BookBase.register_format (BookMusicXML ());
index b96107c0985630db585d10061862d62285b96acb..2623a6d3ec5e87c8f359352bb2d5cd6c9f693fa8 100644 (file)
@@ -7,9 +7,9 @@
 \header{
     texidoc="The optimal page breaker will make trade-offs between
 horizontal and vertical stretching so that the overall spacing
-will be more acceptable.  The page-spacing-weight parameter
-controls the relative importance of vertical/horizontal spacing.
-Because ragged-last-bottom is on, there is no penalty for odd
+will be more acceptable.  The @code{page-spacing-weight} parameter
+controls the relative importance of vertical/@/horizontal spacing.
+Because @code{ragged-last-bottom} is on, there is no penalty for odd
 vertical spacing on the final page.  As a result, only the first
 page should be horizontally stretched.
 "
diff --git a/input/regression/page-breaking-end-of-score.ly b/input/regression/page-breaking-end-of-score.ly
new file mode 100644 (file)
index 0000000..b949b02
--- /dev/null
@@ -0,0 +1,19 @@
+\version "2.14.1"
+
+\header {
+  texidoc = "Page breaks are allowed by default at the end of the score,
+but the user can override them.  There should be one line on the first
+page and two (colliding) lines on the second page."
+}
+
+\paper {
+  paper-height = 4\cm
+}
+
+\book {
+{ c'4 }
+
+{ c'4 } \noPageBreak
+
+{ c'4 }
+}
index bdb26970018e60f938d026430a6544dc929ca46b..5647b774f4c0df0c7103f1364aabc807f91c0be1 100644 (file)
@@ -3,7 +3,7 @@
   texidoc ="The new part combiner stays apart from:
 @itemize @bullet
 @item different durations,
-@item different articulations (taking into account only slur/beam/tie), and
+@item different articulations (taking into account only slur/@/beam/@/tie), and
 @item wide pitch ranges.
 @end itemize
 "
index 3abc0eb6338a989b33136cde65e3b9fc56356106..aa14aef30cac9d70ff11833b7512ff22e4436150 100644 (file)
@@ -32,9 +32,9 @@ original = \relative c'' { c8 d s2 es8 gis8 }
        
        \set Staff.instrumentName = "orig+quote"        
        \set Staff.quotedEventTypes = #'(note-event articulation-event)
-       \new Voice {
+       \new Voice {\voiceOne
            \override Voice . Beam #'collision-voice-only = ##t
            \original }
-       { s4 \quoteDuring #"quoteMe" { s2. } }
+       \new Voice {\voiceTwo s4 \quoteDuring #"quoteMe" { s2. } }
     >>
 >>
index 043864ed30b1c75d7e8e0f21033abc1258b3f4d6..be3dc3caf660292bcf1d157964def9ebe5eb14d2 100644 (file)
@@ -12,7 +12,7 @@
 }
 
 mus = \relative c' {
-  % Acciaccaturas contain a slur and  \override Stem #'stroke-style
+  % Acciaccaturas contain a slur and  \override Flag #'stroke-style
   % Thus, we're checking \override here
   c4 \acciaccatura d8 c4
   % Checking \set and \unset
@@ -23,12 +23,12 @@ mus = \relative c' {
   % Checking \once \override
   \once \override Stem #'thickness = #8.0 d8
   % Checking two overrides
-  \override Stem #'thickness = #8.0 \override Stem #'stroke-style = "grace"
+  \override Stem #'thickness = #8.0 \override Flag #'stroke-style = "grace"
   d8
   % reverting one of them
   \revert Stem #'thickness d8
   % and the other
-  \revert Stem #'stroke-style c8
+  \revert Flag #'stroke-style c8
 
   % checking tweaks
   c2-\tweak #'color #red ->
index 97e158ed90f86993246eb53bf4d5058a434859b2..ee26fc453f24bd9d9c03e1d43ac69708096841b7 100644 (file)
@@ -30,10 +30,9 @@ original = \relative c'' { c8 d s2 es8 gis8 }
     \new Staff \relative c'' <<
        \set Staff.instrumentName = "orig+quote"        
        \set Staff.quotedEventTypes = #'(note-event articulation-event)
-       \new Voice {
-           \override Voice . Beam #'collision-voice-only = ##t
+       \new Voice {\voiceOne
            \original }
-       \new Voice {
+         \new Voice {\voiceTwo
            s4
            \set fontSize = #-4
            \override Stem #'length-fraction = #(magstep -4)
index c48bb909cb25539cdc58580773548a8859eaa318..9b1578266db459c2b1ce005dd21efaf4ac539427 100644 (file)
@@ -11,6 +11,8 @@ get to the number of repeats.
 Unfolded behavior:"
 }
 
+#(ly:set-option 'warning-as-error #f)
+
 \context Voice \relative c'' {
   \repeat unfold 3 { c^"3x 0a" d }
   %% less alts than body
index 2614b237e8401819cee32c3efca80b3305c4f711..d1c26e76c34fb2a04aafe61a6b157bb7fe6cb088 100644 (file)
@@ -1,4 +1,5 @@
 \version "2.14.0"
+#(ly:set-option 'warning-as-error #f)
 
 \header{
   texidoc="
index 433510d78cfab5f100493a9734dd1387d392c812..646bd6fd176f53e229c5805d27233a37df906e7c 100644 (file)
@@ -1,7 +1,7 @@
 
 \header {
 
-  texidoc = "Beam/rest collision resolution and normal rest/note
+  texidoc = "Beam/rest collision resolution and normal rest/@/note
 collisions can be combined."
 
 }
index 93a9531558a0be579bde069fd2f0823f4d37cc63..e1abe1c24af9034b037f0c84059f25e3c92f6af4 100644 (file)
@@ -1,9 +1,9 @@
 \version "2.14.0"
 \header {
 
-  texidoc = "Rests can have pitches--these will be affected by
-transposition and relativization. If a rest has a pitch, rest/rest and
-beam/rest collision resolving will leave it alone."
+  texidoc = "Rests can have pitches -- these will be affected by
+transposition and relativization.  If a rest has a pitch, rest/@/rest and
+beam/@/rest collision resolving will leave it alone."
 
 }
 
index 5658d5ef37c5a2ef421f961320354106f223a4be..ce0daec988f7630176f83bd5baa299861d3d12a9 100644 (file)
@@ -1,4 +1,5 @@
 \version "2.14.0"
+#(ly:set-option 'warning-as-error #f)
 
 \header {
 
index 6746e2ae0528864dcbdb6a1ccc8a8d08e24d00a7..59e8b7a2c9e64b75eeeb1e0b1fb5ddc9bbdff0e1 100644 (file)
@@ -1,5 +1,5 @@
 \header {
-  texidoc = "@code{-ddebug-skyline} draws the outline of the skyline used."
+  texidoc = "@option{-ddebug-skyline} draws the outline of the skyline used."
   }
 \version "2.14.0"
 
diff --git a/input/regression/slur-avoid.ly b/input/regression/slur-avoid.ly
new file mode 100644 (file)
index 0000000..372b8c8
--- /dev/null
@@ -0,0 +1,11 @@
+
+\version "2.15.9"
+
+\header {
+  texidoc = "Slurs handle avoid objects better.
+"
+}
+
+{
+ a'8 (  b''4 \fermata )
+}
index e2810eea9b6c58f3ff31188a11a012bc480e6b7a..2f78cf06c680eca093dc15214e92f3ddd5999fb3 100644 (file)
@@ -7,7 +7,7 @@
     one big file, since changing one score parameter for one situation
     may affect several other situations.
 
-    Tunable parameters are in @file{scm/slur.scm}.
+    Tunable parameters are in @file{scm/@/slur.scm}.
 "
 
 }
index b3087d4ddda5aac3acecdeb7a1546dd295b7cf82..75db12af2618a815bf4c1b816a0b97b4167f8267 100644 (file)
@@ -1,7 +1,7 @@
 
 \header {
   texidoc = "An accidental following a bar gets space so
- the left edge of the acc is at 0.3 - 0.6 staff space of the bar line"
+ the left edge of the acc is at 0.3 staff space from the bar line"
 }
 
 
index 8a4752c26929b838cf7acc9cc848304763174dfe..cd647bcd82f9226b454ab654cc845a4aa9eaf8f3 100644 (file)
@@ -1,19 +1,27 @@
 \header
 {
-  
+
 texidoc = "Even in case of incorrect contexts (eg. shortlived
   contexts) that break linking of columns through spacing wishes,
-  @code{strict-note-spacing} defaults to a robust solution."
+  @code{strict-note-spacing} defaults to a robust solution.
+  This test passes if it does not seg fault; instead it should
+  produce three programming error messages.  Note that, in tight
+  music with strict note spacing, grace notes will collide with
+  normal notes.  This is expected."
 
 }
 
 \version "2.14.0"
 
-
 %% \new Staff cause shortlived, disconnected Voice contexts
 %% breaking spacing-wishes links.
-\new Staff {
-  \override Score.SpacingSpanner #'strict-note-spacing = ##t
-  \afterGrace c'4 {c'32 c'32 }
-  c'4
+\score {
+  \new Staff {
+    \override Score.SpacingSpanner #'strict-note-spacing = ##t
+    \afterGrace c'4 {c'32 c'32 }
+    c'4
+  }
+  \layout {
+    ragged-right = ##f
+  }
 }
index 4d206bfa768925d00691b301a13127d0d2be9df7..20f85ac9f8fe9c86932d353c96f43feaa5371501 100644 (file)
@@ -1,6 +1,6 @@
 \version "2.14.0"
 \header {
-  texidoc = "Span bars can be turned on/off on a staff-by-staff basis."
+  texidoc = "Span bars can be turned on/@/off on a staff-by-staff basis."
 }
 
 \layout {
diff --git a/input/regression/spanner-alignment.ly b/input/regression/spanner-alignment.ly
new file mode 100755 (executable)
index 0000000..6d5e22e
--- /dev/null
@@ -0,0 +1,33 @@
+\version "2.15.8"
+
+\header {
+  texidoc = "Spanners align to musical grobs in paper columns,
+ignoring things like pedal marks.
+
+"
+}
+
+\score {
+  <<
+    \new PianoStaff <<
+      \new Staff = "up" {
+        \clef treble
+        \repeat unfold 32 c'4
+      }
+      \new Dynamics = "dynamics" {
+        \repeat unfold 2 {
+          s1\cresc s1\f s1\dim s1\p
+        }
+      }
+      \new Staff = "down" {
+        \clef bass
+        \repeat unfold 32 c4
+      }
+      \new Dynamics= "pedal" {
+        \repeat unfold 2 {
+          s1\sustainOn s1\sustainOff
+        }
+      }
+    >>
+  >>
+}
index fd3c194d7ca4f6cd43420433ad2ad0dfc2b8fafb..797fe160dd7baa5d11eb2e58f4be8cccaac02aee 100644 (file)
@@ -1,8 +1,9 @@
 \version "2.14.0"
 
 \header {
-  texidoc = "Stems with overridden 'length should not confuse height estimation.
-This example should fit snugly on one page.
+  texidoc = "Stems with overridden 'Y-extent should
+not confuse height estimation.  This example should fit snugly
+on one page.
 "
 }
 
@@ -25,7 +26,7 @@ This example should fit snugly on one page.
   \score {
     \new Voice {
       \voiceTwo
-      \override Stem #'length = #0
+      \override Stem #'Y-extent = #'(0.0 . 0.0)
       \repeat unfold 144 a4
     }
     \layout {
diff --git a/input/regression/stem-length.ly b/input/regression/stem-length.ly
new file mode 100644 (file)
index 0000000..1b98289
--- /dev/null
@@ -0,0 +1,20 @@
+
+\version "2.15.9"
+
+\header {
+  texidoc = "Stem length and stem-begin-position can be set manually.
+"
+}
+
+\relative c' {
+  \autoBeamOff
+  \stemUp
+  a8 aes''8
+  \override Stem #'length = #20
+  a,,8
+  \revert Stem #'length
+  aes''!8
+  \stemNeutral
+  \override Stem #'stem-begin-position = #-2
+  c,8
+}
diff --git a/input/regression/stem-pure-height-beamed.ly b/input/regression/stem-pure-height-beamed.ly
new file mode 100644 (file)
index 0000000..28cdc6d
--- /dev/null
@@ -0,0 +1,13 @@
+\version "2.15.9"
+
+\header {
+  texidoc = "Lilypond gets beamed stem pure heights correct
+to avoid outside staff collisions.
+"
+}
+
+{
+  \stemUp
+  gis''8 a bes'' a
+  bes''! a bes''! a
+}
index 166ebbceb610a99ca95b533ed9f0908814fca35c..8c0ef57d7924cd8d227939317f0a3934e6f20360 100644 (file)
@@ -15,7 +15,7 @@ a fixed distance from the note head.
 "
 }
 
-
+#(ly:set-option 'warning-as-error #f)
 
 \context Voice \relative c''{
   \textSpannerUp
index 0e48e0f878a60aa7696ac20496cc533c17323f8b..62ca07e9c4ddd28bdb49e98ef65e32c5f77233be 100644 (file)
@@ -7,6 +7,6 @@ is a collision."
 
 \relative c'' {
   \textLengthOn
-  <c\3>4-"inside"( d' <e,\2>-"inside" g
+  <c\3>4-"outside"( d' <e,\2>-"inside" g
   <c\1>1-"outside")
 }
index 8e31540b88e0544b14969860bfe8bd8785217cbf..0b7e0646fdaea5fae057376310fbdefdcb474449 100644 (file)
@@ -13,9 +13,8 @@ tabstuff = {
   f4\f g a^\fermata |
   R2.*3 |
   c8\<\( c16 c ~ c2\! |
-  c'2.\) |
   \mark \default
-  R2. |
+  c'2.\) |
   \ottava #1
   r4 d'4 r8 e |
   \ottava #0
index fd7b7cea2ee50bcfbad493773b6c13c9ec1e3943..0010438d2620417650e9a62e405ad2f26b659790 100644 (file)
@@ -1,4 +1,5 @@
 \version "2.14.0"
+#(ly:set-option 'warning-as-error #f)
 
 \header {
 
index 89db7ab1aacf4c51de0eeb966638714ef85eb56d..60c0113dc653915efa3abf3aaa3e820b95a44870 100644 (file)
@@ -1,4 +1,5 @@
 \version "2.14.0"
+#(ly:set-option 'warning-as-error #f)
 
 \header {
   texidoc="
index 6c313623636965f02fd6dde2e79c1879b87c6fed..99ff64c71427d551ec3b9770a4701493e1a2072a 100644 (file)
@@ -1,16 +1,16 @@
+\version "2.14.0"
+#(ly:set-option 'warning-as-error #f)
+
 \header
 {
 
   texidoc =
-
   "when @code{tieWaitForNote} is set, the right-tied note does not
  have to follow the lef-tied note directly. When @code{tieWaitForNote}
  is set to false, any tie will erase all pending ties."
   
 }
 
-\version "2.14.0"
-
 \paper { ragged-right =  ##t }
 \relative c' {
   c~ e~ g~ <c, e g>
index f4e973dc6941451aa3075e9f650f9007c5a27808..1bea075b306962ecc9abf0e4852f9a1f7678e63c 100644 (file)
@@ -1,15 +1,13 @@
 \header {
 
-
   texidoc = "In chords, ties keep closer to the note head vertically,
-but never collide with heads or stems. Seconds are formatted up/down;
+but never collide with heads or stems.  Seconds are formatted up/@/down;
 the rest of the ties are positioned according to their vertical
 position.
 
-The code does not handle all cases. Sometimes ties will printed on top
-of or very close to each other. This happens in the last chords of
-each system.  "
-  
+The code does not handle all cases.  Sometimes ties will printed on top
+of or very close to each other.  This happens in the last chords of
+each system."
 
 }
 
index f666db35e841ae368c8779d826929ebc5819c0d7..178fef6a6ea5ad8daa874ebfbfeebdf724b94125 100644 (file)
@@ -4,7 +4,7 @@
 
   texidoc = "Like normal ties, single semities (LaissezVibrerTie or
 RepeatTie) get their direction from the stem direction, and may be
-tweaked with @code{#'direction}."
+tweaked with @code{'direction}."
 
 
 }
index 5859b488a66d4be2be9bcf48263a589624dc2448..1d9357655dbb103d5ddb15c18acfdd0de6bd03b7 100644 (file)
@@ -1,7 +1,7 @@
 
 \header {
   texidoc = "Individual ties may be formatted manually by
-specifying their @code{direction} and/or @code{staff-position}."
+specifying their @code{direction} and/@/or @code{staff-position}."
   
 }
 
index 94827649b6c18571903cd95098573459e9b61722..ec6e6bdb12ca2c3b7e198d538a4cb97fcc2fe2c0 100644 (file)
@@ -14,7 +14,7 @@ unless there is a beam of the same length as the tuplet.  Overriding
 @code{#f} (never print a bracket)
 
 @item
-@code{#'if-no-beam} (only print a bracket if there is no beam)
+@code{'if-no-beam} (only print a bracket if there is no beam)
 
 @end itemize
 "
diff --git a/input/regression/unpure-pure-container.ly b/input/regression/unpure-pure-container.ly
new file mode 100644 (file)
index 0000000..0e95a43
--- /dev/null
@@ -0,0 +1,25 @@
+
+\version "2.15.10"
+
+\header {
+  texidoc = "unpure-pure containers take two arguments: an unpure property and
+a pure property.  The pure property is evaluated (and cached) for all
+pure calculations, and the unpure is evaluated for all unpure calculations.
+In this regtest, there are three groups of two eighth notes.  In the first
+group, the second note should move to accommodate the flag, whereas it should
+not in the second group because it registers the flag as being higher. The
+flag, however, remains at the Y-offset dictated by ly:flag::calc-y-offset.
+In the third set of two 8th notes, the flag should be pushed up to a Y-offset
+of 8.
+"
+}
+
+\relative c'' {
+  \stemUp \autoBeamOff
+  d,8 eis'
+  \once \override Flag #'Y-offset =
+    #(ly:make-unpure-pure-container ly:flag::calc-y-offset 8)
+  d,8 eis'!
+  \once \override Flag #'Y-offset = #8
+  d,8 eis'!
+}
index 75d6cfc63abef971a4e6daddddec77d4ac13a1c3..0845cc5f60bcabbaf7a7911711aaca8c4e3bfeb3 100644 (file)
@@ -1,4 +1,5 @@
 \version "2.14.0"
+#(ly:set-option 'warning-as-error #f)
 
 \header {
   texidoc = "If you specify two different key signatures at one point, a
index d42811c0a7c096adfa1d9609fe8f9f77efa81e6a..25064f61b47e964d693423053e834a527488d4b6 100644 (file)
@@ -86,8 +86,7 @@ All_font_metrics::find_pango_font (PangoFontDescription const *description,
   SCM val;
   if (!pango_dict_->try_retrieve (key, &val))
     {
-      if (be_verbose_global)
-        progress_indication ("\n[" + string (pango_fn));
+      debug_output ("[" + string (pango_fn), true); // start on a new line
 
       Pango_font *pf = new Pango_font (pango_ft2_fontmap_,
                                        description,
@@ -98,8 +97,7 @@ All_font_metrics::find_pango_font (PangoFontDescription const *description,
       pango_dict_->set (key, val);
       pf->unprotect ();
 
-      if (be_verbose_global)
-        progress_indication ("]");
+      debug_output ("]", false);
 
       pf->description_ = scm_cons (SCM_BOOL_F,
                                    scm_from_double (1.0));
@@ -124,13 +122,11 @@ All_font_metrics::find_otf (string name)
       if (file_name.empty ())
         return 0;
 
-      if (be_verbose_global)
-        progress_indication ("\n[" + file_name);
+      debug_output ("[" + file_name, true); // start on a new line
 
       val = Open_type_font::make_otf (file_name);
 
-      if (be_verbose_global)
-        progress_indication ("]");
+      debug_output ("]", false);
 
       unsmob_metrics (val)->file_name_ = file_name;
       SCM name_string = ly_string2scm (name);
index 143534edabe2874b4c73d2e314ed3fa5756dbea9..f3a099b5df5dfb238fccf7a09768155c0fa8dedf 100644 (file)
@@ -34,6 +34,7 @@
 #include "stencil.hh"
 #include "system.hh"
 #include "warn.hh"
+#include "unpure-pure-container.hh"
 
 static bool
 pure_staff_priority_less (Grob *const &g1, Grob *const &g2);
@@ -74,6 +75,13 @@ Axis_group_interface::has_axis (Grob *me, Axis a)
 Interval
 Axis_group_interface::relative_group_extent (vector<Grob *> const &elts,
                                              Grob *common, Axis a)
+{
+  return relative_maybe_bound_group_extent (elts, common, a, false);
+}
+
+Interval
+Axis_group_interface::relative_maybe_bound_group_extent (vector<Grob *> const &elts,
+                                                        Grob *common, Axis a, bool bound)
 {
   Interval r;
   for (vsize i = 0; i < elts.size (); i++)
@@ -81,7 +89,9 @@ Axis_group_interface::relative_group_extent (vector<Grob *> const &elts,
       Grob *se = elts[i];
       if (!to_boolean (se->get_property ("cross-staff")))
         {
-          Interval dims = se->extent (common, a);
+          Interval dims = (bound && has_interface (se)
+                           ? generic_bound_extent (se, common, a)
+                           : se->extent (common, a));
           if (!dims.is_empty ())
             r.unite (dims);
         }
@@ -89,6 +99,32 @@ Axis_group_interface::relative_group_extent (vector<Grob *> const &elts,
   return r;
 }
 
+Interval
+Axis_group_interface::generic_bound_extent (Grob *me, Grob *common, Axis a)
+{
+  /* trigger the callback to do skyline-spacing on the children */
+  if (a == Y_AXIS)
+    (void) me->get_property ("vertical-skylines");
+
+  extract_grob_set (me, "elements", elts);
+  vector<Grob *> new_elts;
+
+  SCM interfaces = me->get_property ("bound-alignment-interfaces");
+
+  for (vsize i = 0; i < elts.size (); i++)
+    for (SCM l = interfaces; scm_is_pair (l); l = scm_cdr (l))
+      if (elts[i]->internal_has_interface (scm_car (l)))
+        new_elts.push_back (elts[i]);
+
+  if (!new_elts.size ())
+    return robust_relative_extent (me, common, a);
+
+  if (!common)
+    common = common_refpoint_of_array (new_elts, me, a);
+
+  return relative_maybe_bound_group_extent (new_elts, common, a, true);
+}
+
 Interval
 Axis_group_interface::sum_partial_pure_heights (Grob *me, int start, int end)
 {
@@ -719,7 +755,7 @@ Axis_group_interface::skyline_spacing (Grob *me, vector<Grob *> elements)
       vector<Grob *> current_elts;
       current_elts.push_back (elements[i]);
       while (i + 1 < elements.size ()
-             && scm_eq_p (elements[i + 1]->get_property ("outside-staff-priority"), priority))
+             && scm_is_eq (elements[i + 1]->get_property ("outside-staff-priority"), priority))
         {
           if (!to_boolean (elements[i + 1]->get_property ("cross-staff")))
             current_elts.push_back (elements[i + 1]);
@@ -808,6 +844,7 @@ ADD_INTERFACE (Axis_group_interface,
                /* properties */
                "adjacent-pure-heights "
                "axes "
+               "bound-alignment-interfaces "
                "default-staff-staff-spacing "
                "elements "
                "max-stretch "
index 8b0c9f2abc1facdfa332f4507102df9c0a31316c..106fffc74134713cbd74fc181ec48b7e44dd2857 100644 (file)
@@ -232,8 +232,7 @@ void Beam_scoring_problem::init_collisions (vector<Grob *> grobs)
                      - beam->relative_coordinate (common[Y_AXIS], Y_AXIS);
 
       Real factor = parameters.STEM_COLLISION_FACTOR;
-      if (!unsmob_grob (s->get_object ("beam"))
-          && !Stem::flag (s).is_empty ())
+      if (!unsmob_grob (s->get_object ("beam")))
         factor = 1.0;
       add_collision (x, y, factor);
     }
index 2d973246cf0ebf75a6c5147b09e7e32d261b6f25..1ecd71a88ff5a87027c7aa987c67292a5954196d 100644 (file)
@@ -54,6 +54,7 @@
 #include "pointer-group-interface.hh"
 #include "rhythmic-head.hh"
 #include "spanner.hh"
+#include "staff-symbol.hh"
 #include "staff-symbol-referencer.hh"
 #include "stem.hh"
 #include "warn.hh"
@@ -1548,10 +1549,10 @@ Beam::set_stem_lengths (SCM smob)
         stem_y += thick * 0.5 * get_grob_direction (s);
 
       /*
-        Do set_stemend for invisible stems too, so tuplet brackets
+        Do set_stem_positions for invisible stems too, so tuplet brackets
         have a reference point for sloping
        */
-      Stem::set_stemend (s, 2 * stem_y / staff_space);
+      Stem::set_stem_positions (s, 2 * stem_y / staff_space);
     }
 
   return posns;
@@ -1731,6 +1732,77 @@ Beam::rest_collision_callback (SCM smob, SCM prev_offset)
   return scm_from_double (offset + staff_space * shift);
 }
 
+MAKE_SCHEME_CALLBACK_WITH_OPTARGS (Beam, pure_rest_collision_callback, 4, 1, "");
+SCM
+Beam::pure_rest_collision_callback (SCM smob,
+                                    SCM, /* prev_offset */
+                                    SCM, /* start */
+                                    SCM /* end */)
+{
+  Real amount = 0.0;
+
+  Grob *me = unsmob_grob (smob);
+  Grob *stem = unsmob_grob (me->get_object ("stem"));
+  if (!stem)
+    return scm_from_double (amount);
+  Grob *beam = unsmob_grob (stem->get_object ("beam"));
+  if (!beam
+      || !Beam::normal_stem_count (beam))
+    return scm_from_double (amount);
+
+  Real ss = Staff_symbol_referencer::staff_space (me);
+
+  /*
+    This gives the extrema of rest positions.
+    In general, beams are never typeset more than one staff space away
+    from the staff in either direction.
+  */
+  Grob *staff = Staff_symbol_referencer::get_staff_symbol (me);
+  Interval rest_max_pos = staff ? Staff_symbol::line_span (staff) : Interval (0.0, 0.0);
+  rest_max_pos.widen (1);
+  rest_max_pos *= ss / 2;
+
+  extract_grob_set (beam, "stems", stems);
+  vector<Grob *> my_stems;
+
+  for (vsize i = 0; i < stems.size (); i++)
+    if (Stem::head_count (stems[i]) || stems[i] == stem)
+      my_stems.push_back (stems[i]);
+
+  vsize idx = -1;
+
+  for (vsize i = 0; i < my_stems.size (); i++)
+    if (my_stems[i] == stem)
+      {
+        idx = i;
+        break;
+      }
+  Grob *left;
+  Grob *right;
+
+  if (idx == (vsize)-1 || my_stems.size () == 1)
+    return scm_from_double (amount);
+  else if (idx == 0)
+    left = right = my_stems[1];
+  else if (idx == my_stems.size () - 1)
+    left = right = my_stems[idx - 1];
+  else
+    {
+      left = my_stems[idx - 1];
+      right = my_stems[idx + 1];
+    }
+  Direction beamdir = get_grob_direction (beam);
+  /*
+    Take the position between the two bounding head_positions,
+    then bound it by the minimum and maximum positions outside the staff.
+    4.0 = 2.0 to get out of staff space * 2.0 for the average
+  */
+  amount = min (max ((Stem::head_positions (left)[beamdir] + Stem::head_positions (right)[beamdir]) / 4.0, rest_max_pos[DOWN]), rest_max_pos[UP]);
+
+  return scm_from_double (amount);
+}
+
+
 bool
 Beam::is_knee (Grob *me)
 {
index f230d1057d49b0ddb608f87af9d65b9eedbadc70..ce84ce8da89c7623c68548539c49112c67b4c481 100644 (file)
@@ -81,6 +81,17 @@ Bezier::get_other_coordinate (Axis a, Real x) const
   return curve_coordinate (ts[0], other);
 }
 
+vector<Real>
+Bezier::get_other_coordinates (Axis a, Real x) const
+{
+  Axis other = other_axis (a);
+  vector<Real> ts = solve_point (a, x);
+  vector<Real> sols;
+  for (vsize i = 0; i < ts.size (); i++)
+    sols.push_back (curve_coordinate (ts[i], other));
+  return sols;
+}
+
 Real
 Bezier::curve_coordinate (Real t, Axis a) const
 {
@@ -202,6 +213,51 @@ Bezier::solve_point (Axis ax, Real coordinate) const
   return filter_solutions (sol);
 }
 
+Real
+Bezier::minmax (Axis ax, Real l, Real r, Direction d) const
+{
+  return minmax (ax, l, r, d, 0, 0);
+}
+
+Real
+Bezier::minmax (Axis axis, Real l, Real r, Direction d, vsize left_index, vsize right_index) const
+{
+  Axis other = other_axis (axis);
+  Interval lr (l, r);
+  Drul_array<vector<Real> > sol;
+  Direction dir = LEFT;
+  do
+    {
+      Polynomial p (polynomial (axis));
+      p.coefs_[0] -= lr[dir];
+
+      sol[dir] = filter_solutions (p.solve ());
+    }
+  while (flip (&dir) != LEFT);
+
+  if (!sol[LEFT].size () || !sol[RIGHT].size ())
+    {
+      programming_error ("no solution found for Bezier intersection");
+      return 0.0;
+    }
+
+  Polynomial p (polynomial (other));
+
+  Drul_array<vsize> indices(left_index, right_index);
+  do
+    {
+      vector_sort (sol[dir], less<Real> ());
+      if (!Interval (0, sol[LEFT].size () - 1).contains (indices[dir]))
+        {
+          programming_error ("requested bezier solution outside range of solutions.  defaulting to lowest solution.");
+          indices[dir] = 0;
+        }
+    }
+  while (flip (&dir) != LEFT);
+
+  return p.minmax (sol[LEFT][indices[LEFT]], sol[RIGHT][indices[RIGHT]], d != LEFT);
+}
+
 /**
    Compute the bounding box dimensions in direction of A.
 */
index a471a7ba9fab543184b0108fe5e05abd23b0a03c..619d8eaab2893afa7063fcac2909063f8d04ed7a 100644 (file)
@@ -103,13 +103,10 @@ Break_alignment_interface::calc_positioning_done (SCM smob)
   vector<Grob *> elems = ordered_elements (me);
   vector<Interval> extents;
 
-  int last_nonempty = -1;
   for (vsize i = 0; i < elems.size (); i++)
     {
       Interval y = elems[i]->extent (elems[i], X_AXIS);
       extents.push_back (y);
-      if (!y.is_empty ())
-        last_nonempty = i;
     }
 
   vsize idx = 0;
index 85da75c961e1612e779b40d109506091c3b3739c..f1f89093ead25306798631ea41d34c398398b5fb 100644 (file)
@@ -70,16 +70,9 @@ SCM
 Breathing_sign::divisio_maior (SCM smob)
 {
   Grob *me = unsmob_grob (smob);
-  Real staff_space = Staff_symbol_referencer::staff_space (me);
-  Real staff_size;
   Real thickness = Staff_symbol_referencer::line_thickness (me);
   thickness *= robust_scm2double (me->get_property ("thickness"), 1.0);
 
-  if (Staff_symbol_referencer::get_staff_symbol (me))
-    staff_size = (Staff_symbol_referencer::line_count (me) - 1) * staff_space;
-  else
-    staff_size = 0.0;
-
   Real blotdiameter = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter"));
 
   /*
index e2281400d01007ac9f14173a51dad0f9c9515b4b..b55668bec8e7d6fadb466d7bc950779b2df1a476 100644 (file)
@@ -124,8 +124,8 @@ Chord_name_engraver::process_music ()
 
       pitches = scm_sort_list (pitches, Pitch::less_p_proc);
 
-      SCM name_proc = get_property ("chordNameFunction");
-      markup = scm_call_4 (name_proc, pitches, bass, inversion,
+      SCM capo_proc = ly_lily_module_constant ("capo-handler");
+      markup = scm_call_4 (capo_proc, pitches, bass, inversion,
                            context ()->self_scm ());
     }
   /*
index 1658e55782a9fdfe01eb0c69b8ea919604148a34..effa751425b7f71cb403783ed986001eb89a71eb 100644 (file)
@@ -34,7 +34,6 @@ Chord_tremolo_iterator::get_music_list () const
 {
   Music *mus = get_music ();
   Input *origin = mus->origin ();
-  Moment l = mus->get_length ();
   Music *body = Repeated_music::body (mus);
   bool body_is_sequential = body->is_mus_type ("sequential-music");
 
index bff8e79df9dfee4e8e459da2fbe8876ea6f9d267..d269cff48571d91fcfda5bd25a8ade3a0863d86b 100644 (file)
@@ -554,7 +554,7 @@ Line_details::Line_details (Prob *pb, Output_def *paper)
 
   if (scm_is_pair (footnotes))
     for (SCM s = footnotes; scm_is_pair (s); s = scm_cdr (s))
-      footnotes_.push_back (unsmob_stencil (scm_cadar (s)));
+      footnotes_.push_back (unsmob_stencil (scm_caddar (s)));
 
   last_column_ = 0;
   force_ = 0;
index 5dd1684a8375a50c494812e8b123084d5b98e787..e5f33c75c7ee309f8d4ad99d4e239689c8a41e6b 100644 (file)
@@ -174,8 +174,7 @@ Context_def::get_accepted (SCM user_mod) const
   SCM def = get_default_child (user_mod);
   if (scm_is_symbol (def))
     {
-      if (scm_memq (def, acc))
-        acc = scm_delete_x (def, acc);
+      acc = scm_delete_x (def, acc);
       acc = scm_cons (def, acc);
     }
 
index 7ee4b904d9a7edaf34aa4f0247cd704208ddf097..f4f5f07b5cba92e5a2cde81a637c3f9ea0e0513c 100644 (file)
@@ -24,6 +24,7 @@
 #include "main.hh"
 #include "simple-closure.hh"
 #include "spanner.hh"
+#include "unpure-pure-container.hh"
 #include "warn.hh"
 
 /*
@@ -113,10 +114,15 @@ execute_override_property (Context *context,
   target_alist = scm_acons (symbol, new_value, target_alist);
 
   bool ok = true;
-  if (!ly_is_procedure (new_value)
-      && !is_simple_closure (new_value))
-    ok = type_check_assignment (symbol, new_value,
-                                ly_symbol2scm ("backend-type?"));
+  bool pc = is_unpure_pure_container (new_value);
+  SCM vals[] = {pc ? unpure_pure_container_unpure_part (new_value) : new_value,
+                pc ? unpure_pure_container_pure_part (new_value) : SCM_BOOL_F};
+
+  for (int i = 0; i < 2; i++)
+    if (!ly_is_procedure (vals[i])
+        && !is_simple_closure (vals[i]))
+      ok = ok && type_check_assignment (symbol, vals[i],
+                                    ly_symbol2scm ("backend-type?"));
 
   /*
     tack onto alist.  We can use set_car, since
index a6cee709ce0649497a7b5a500aa8b8351e1200db..6a11654e233465ea6a59de9947b8c28aba33f3f4 100644 (file)
@@ -77,7 +77,7 @@ Dispatcher::dispatch (SCM sev)
 {
   Stream_event *ev = unsmob_stream_event (sev);
   SCM class_symbol = ev->get_property ("class");
-  if (!scm_symbol_p (class_symbol))
+  if (!scm_is_symbol (class_symbol))
     {
       warning (_ ("Event class should be a symbol"));
       return;
@@ -89,7 +89,9 @@ Dispatcher::dispatch (SCM sev)
       ev->origin ()->warning (_f ("Unknown event class %s", ly_symbol2string (class_symbol).c_str ()));
       return;
     }
+#if 0
   bool sent = false;
+#endif
   int num_classes = scm_ilength (class_list);
 
   /*
@@ -148,7 +150,9 @@ Dispatcher::dispatch (SCM sev)
 
           Listener *l = unsmob_listener (scm_cdar (lists[0].list));
           l->listen (ev->self_scm ());
+#if 0
           sent = true;
+#endif
         }
       // go to the next listener; bubble-sort the class list.
       SCM next = scm_cdr (lists[0].list);
@@ -161,10 +165,11 @@ Dispatcher::dispatch (SCM sev)
       lists[i].list = next;
     }
 
-  /* TODO: Uncomment.
+#if 0
+  /* TODO: Uncomment. */
     if (!sent)
       warning (_f ("Junking event: %s", ly_symbol2string (class_symbol).c_str ()));
-  */
+#endif
 }
 
 void
index fff2359cc0376f774e46ab531798213e0dd62e40..46b13811be3c9c20c70826c9b13b195ee60064e0 100644 (file)
@@ -132,15 +132,12 @@ Dot_column::calc_positioning_done (SCM smob)
        i != stems.end (); i++)
     {
       Grob *stem = (*i);
-      Stencil flag = Stem::flag (stem);
-      if (!flag.is_empty ())
+      Grob *flag = Stem::flag (stem);
+      if (flag)
         {
-          Interval y = flag.extent (Y_AXIS)
-                       * (2 / ss)
-                       + Stem::stem_end_position (stem);
-
-          Interval x = stem->relative_coordinate (commonx, X_AXIS)
-                       + flag.extent (X_AXIS);
+          Grob *commony = stem->common_refpoint (flag, Y_AXIS);
+          Interval y = flag->extent (commony, Y_AXIS) * (2 / ss);
+          Interval x = flag->extent (commonx, X_AXIS);
 
           boxes.push_back (Box (x, y));
         }
index 0107e7f436c6a9baefd7368615666d9e970684cf..06f16cf8a83bd52a80cebf22017650f138c3be62 100644 (file)
@@ -167,9 +167,6 @@ Dynamic_engraver::process_music ()
       Axis_group_interface::add_element (line_spanner_, script_);
     }
 
-  Stream_event *stop_ev = accepted_spanevents_drul_ [STOP]
-                          ? accepted_spanevents_drul_[STOP] : script_ev_;
-
   if (accepted_spanevents_drul_[STOP] || script_ev_)
     {
       /*
@@ -193,10 +190,7 @@ Dynamic_engraver::process_music ()
           current_cresc_ev_ = 0;
         }
       else if (accepted_spanevents_drul_[STOP])
-        {
-          accepted_spanevents_drul_[STOP]->origin ()->warning (_ ("cannot find start of (de)crescendo"));
-          stop_ev = 0;
-        }
+        accepted_spanevents_drul_[STOP]->origin ()->warning (_ ("cannot find start of (de)crescendo"));
     }
 
   if (accepted_spanevents_drul_[START])
index 18b895660fa079c07523a31a1d4ea45802f3f0b3..24bf68db363eb88ae7ccd37a430f7759ddfbe5cf 100644 (file)
@@ -217,19 +217,16 @@ Figured_bass_engraver::listen_bass_figure (Stream_event *ev)
 void
 Figured_bass_engraver::center_continuations (vector<Spanner *> const &consecutive_lines)
 {
-  if (consecutive_lines.size () == 2)
-    {
-      vector<Grob *> left_figs;
-      for (vsize j = consecutive_lines.size (); j--;)
-        left_figs.push_back (consecutive_lines[j]->get_bound (LEFT));
+  vector<Grob *> left_figs;
+  for (vsize j = consecutive_lines.size (); j--;)
+    left_figs.push_back (consecutive_lines[j]->get_bound (LEFT));
 
-      SCM ga = Grob_array::make_array ();
-      unsmob_grob_array (ga)->set_array (left_figs);
+  SCM ga = Grob_array::make_array ();
+  unsmob_grob_array (ga)->set_array (left_figs);
 
-      for (vsize j = consecutive_lines.size (); j--;)
-        consecutive_lines[j]->set_object ("figures",
-                                          unsmob_grob_array (ga)->smobbed_copy ());
-    }
+  for (vsize j = consecutive_lines.size (); j--;)
+    consecutive_lines[j]->set_object ("figures",
+                                      unsmob_grob_array (ga)->smobbed_copy ());
 }
 
 void
diff --git a/lily/flag.cc b/lily/flag.cc
new file mode 100644 (file)
index 0000000..5aee4d9
--- /dev/null
@@ -0,0 +1,177 @@
+/*
+  This file is part of LilyPond, the GNU music typesetter.
+
+  Copyright (C) 1996--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Jan Nieuwenhuizen <janneke@gnu.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 "stem.hh"
+
+#include "directional-element-interface.hh"
+#include "font-interface.hh"
+#include "grob.hh"
+#include "international.hh"
+#include "output-def.hh"
+#include "staff-symbol-referencer.hh"
+#include "stencil.hh"
+#include "warn.hh"
+
+class Flag
+{
+public:
+  DECLARE_SCHEME_CALLBACK (print, (SCM));
+  DECLARE_SCHEME_CALLBACK (width, (SCM));
+  DECLARE_SCHEME_CALLBACK (calc_y_offset, (SCM));
+  DECLARE_SCHEME_CALLBACK (calc_x_offset, (SCM));
+  DECLARE_GROB_INTERFACE ();
+};
+
+
+
+MAKE_SCHEME_CALLBACK (Flag, width, 1);
+SCM
+Flag::width (SCM smob)
+{
+  Grob *me = unsmob_grob (smob);
+  Stencil *sten = unsmob_stencil (me->get_property ("stencil"));
+  if (!sten)
+    return ly_interval2scm (Interval (0.0, 0.0));
+
+  Grob *stem = me->get_parent (X_AXIS);
+
+  /*
+    TODO:
+    This reproduces a bad hard-coding that has been in the code for quite some time:
+    the bounding boxes for the flags are slightly off and need to be fixed.
+  */
+
+  return ly_interval2scm (sten->extent (X_AXIS) - stem->extent (stem, X_AXIS)[RIGHT]);
+}
+MAKE_SCHEME_CALLBACK (Flag, print, 1);
+SCM
+Flag::print (SCM smob)
+{
+  Grob *me = unsmob_grob (smob);
+  Grob *stem = me->get_parent (X_AXIS);
+
+  Direction d = get_grob_direction (stem);
+  int log = Stem::duration_log (stem);
+  string flag_style;
+
+  SCM flag_style_scm = me->get_property ("style");
+  if (scm_is_symbol (flag_style_scm))
+    flag_style = ly_symbol2string (flag_style_scm);
+
+  if (flag_style == "no-flag")
+    return Stencil ().smobbed_copy ();
+
+  bool adjust = true;
+
+  string staffline_offs;
+  if (flag_style == "mensural")
+    /* Mensural notation: For notes on staff lines, use different
+       flags than for notes between staff lines.  The idea is that
+       flags are always vertically aligned with the staff lines,
+       regardless if the note head is on a staff line or between two
+       staff lines.  In other words, the inner end of a flag always
+       touches a staff line.
+    */
+    {
+      if (adjust)
+        {
+          Real ss = Staff_symbol_referencer::staff_space (me);
+          int p = (int) (rint (stem->extent (stem, Y_AXIS)[d] * 2 / ss));
+          staffline_offs
+            = Staff_symbol_referencer::on_line (stem, p) ? "0" : "1";
+        }
+      else
+        staffline_offs = "2";
+    }
+  else
+    staffline_offs = "";
+
+  char dir = (d == UP) ? 'u' : 'd';
+  string font_char = flag_style
+                     + to_string (dir) + staffline_offs + to_string (log);
+  Font_metric *fm = Font_interface::get_default_font (me);
+  Stencil flag = fm->find_by_name ("flags." + font_char);
+  if (flag.is_empty ())
+    me->warning (_f ("flag `%s' not found", font_char));
+
+  /*
+    TODO: maybe property stroke-style should take different values,
+    e.g. "" (i.e. no stroke), "single" and "double" (currently, it's
+    '() or "grace").  */
+  SCM stroke_style_scm = me->get_property ("stroke-style");
+  if (scm_is_string (stroke_style_scm))
+    {
+      string stroke_style = ly_scm2string (stroke_style_scm);
+      if (!stroke_style.empty ())
+        {
+          string font_char = flag_style + to_string (dir) + stroke_style;
+          Stencil stroke = fm->find_by_name ("flags." + font_char);
+          if (stroke.is_empty ())
+            {
+              font_char = to_string (dir) + stroke_style;
+              stroke = fm->find_by_name ("flags." + font_char);
+            }
+          if (stroke.is_empty ())
+            me->warning (_f ("flag stroke `%s' not found", font_char));
+          else
+            flag.add_stencil (stroke);
+        }
+    }
+
+  return flag.smobbed_copy ();
+}
+
+MAKE_SCHEME_CALLBACK (Flag, calc_y_offset, 1);
+SCM
+Flag::calc_y_offset (SCM smob)
+{
+  Grob *me = unsmob_grob (smob);
+  Grob *stem = me->get_parent (X_AXIS);
+  Direction d = get_grob_direction (stem);
+
+  Real blot
+    = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter"));
+
+  Real y2 = stem->extent (stem, Y_AXIS)[d];
+
+  return scm_from_double (y2 - d * blot / 2);
+}
+
+MAKE_SCHEME_CALLBACK (Flag, calc_x_offset, 1);
+SCM
+Flag::calc_x_offset (SCM smob)
+{
+  Grob *me = unsmob_grob (smob);
+  Grob *stem = me->get_parent (X_AXIS);
+  return scm_from_double (stem->extent (stem, X_AXIS)[RIGHT]);
+}
+
+ADD_INTERFACE (Flag,
+               "A flag that gets attached to a stem."
+               "The style property is  symbol determining"
+               " what style of flag glyph is typeset on a"
+               " @code{Stem}.  Valid options include @code{'()}"
+               " for standard flags, @code{'mensural} and"
+               " @code{'no-flag}, which switches off the flag.",
+
+               /* properties */
+               "style "
+               "stroke-style "
+              );
\ No newline at end of file
index 993e52568eb1ce6a631b7364355ebfbe7fec22e8..d5ecb4b39ac2da85f7bfee536175b6cedb52b776 100644 (file)
@@ -149,8 +149,8 @@ LY_DEFINE (ly_font_config_add_directory, "ly:font-config-add-directory", 1, 0, 0
 
   if (!FcConfigAppFontAddDir (0, (const FcChar8 *)d.c_str ()))
     error (_f ("failed adding font directory: %s", d.c_str ()));
-  else if (be_verbose_global)
-    message (_f ("adding font directory: %s", d.c_str ()));
+  else
+    debug_output (_f ("Adding font directory: %s", d.c_str ()));
 
   return SCM_UNSPECIFIED;
 }
@@ -165,8 +165,8 @@ LY_DEFINE (ly_font_config_add_font, "ly:font-config-add-font", 1, 0, 0,
 
   if (!FcConfigAppFontAddFile (0, (const FcChar8 *)f.c_str ()))
     error (_f ("failed adding font file: %s", f.c_str ()));
-  else if (be_verbose_global)
-    message (_f ("adding font file: %s", f.c_str ()));
+  else
+    debug_output (_f ("Adding font file: %s", f.c_str ()));
 
   return SCM_UNSPECIFIED;
 }
index 63cb66fc3519967e5e4b238bb9f85a8758e1b5e8..8ad36fbbabadb8edfa9a0a3db2d0b0bce3d1a143 100644 (file)
@@ -35,8 +35,7 @@ FcConfig *font_config_global = 0;
 void
 init_fontconfig ()
 {
-  if (be_verbose_global)
-    message (_ ("Initializing FontConfig..."));
+  debug_output (_ ("Initializing FontConfig..."));
 
   /* TODO: Find a way for Fontconfig to update its cache, if needed. */
   font_config_global = FcInitLoadConfig ();
@@ -52,18 +51,16 @@ init_fontconfig ()
       string dir = dirs[i];
       if (!FcConfigAppFontAddDir (font_config_global, (FcChar8 *)dir.c_str ()))
         error (_f ("failed adding font directory: %s", dir.c_str ()));
-      else if (be_verbose_global)
-        message (_f ("adding font directory: %s", dir.c_str ()));
+      else
+        debug_output (_f ("Adding font directory: %s", dir.c_str ()));
     }
 
-  if (be_verbose_global)
-    message (_ ("Building font database..."));
+  debug_output (_ ("Building font database..."));
 
   FcConfigBuildFonts (font_config_global);
   FcConfigSetCurrent (font_config_global);
 
-  if (be_verbose_global)
-    message ("\n");
+  debug_output ("\n");
 
 }
 
index 3de5a2a454bb2c79b5af365eed7d8bae87d33cdc..217ce6195915614cd9b93392d6914c484c4ab82b 100644 (file)
@@ -123,7 +123,7 @@ select_encoded_font (Output_def *layout, SCM chain)
     return select_pango_font (layout, chain);
   else
 #endif
-    if (scm_instance_p (name))
+    if (scm_is_true (scm_instance_p (name)))
       {
         SCM base_size = scm_slot_ref (name, ly_symbol2scm ("default-size"));
         SCM vec = scm_slot_ref (name, ly_symbol2scm ("size-vector"));
index 480ea6b0892bdebbc80526812ce87e41cdc44c63..df73ddcefe478875c0fe3dc3aa01fdb5cc9612ef 100644 (file)
@@ -97,6 +97,7 @@ predicate_to_typename (void *ptr)
 #include "performance.hh"
 #include "spanner.hh"
 #include "stream-event.hh"
+#include "unpure-pure-container.hh"
 
 void
 init_func_doc ()
@@ -110,6 +111,7 @@ init_func_doc ()
   ly_add_type_predicate ((void *) &unsmob_moment, "Moment");
   ly_add_type_predicate ((void *) &unsmob_paper_score, "Paper_score");
   ly_add_type_predicate ((void *) &unsmob_performance, "Performance");
+  ly_add_type_predicate ((void *) &is_unpure_pure_container, "unpure pure container");
 
   ly_add_type_predicate ((void *) &is_axis, "axis");
   ly_add_type_predicate ((void *) &is_number_pair, "number pair");
index fa838e3189c0a2bc7badd68987f7ef94e8a982da..af2bcd73b4337e06689c74615a2310b0cf60996f 100644 (file)
@@ -40,6 +40,9 @@ using namespace std;
 #include "version.hh"
 #include "warn.hh"
 
+/* Declaration of log function(s) */
+SCM ly_progress (SCM, SCM);
+
 LY_DEFINE (ly_start_environment, "ly:start-environment",
            0, 0, 0, (),
            "Return the environment (a list of strings) that was in"
@@ -96,87 +99,11 @@ LY_DEFINE (ly_gulp_file, "ly:gulp-file",
   return scm_from_locale_stringn (contents.c_str (), contents.length ());
 }
 
-LY_DEFINE (ly_error, "ly:error",
-           1, 0, 1, (SCM str, SCM rest),
-           "A Scheme callable function to issue the error @var{str}."
-           "  The error is formatted with @code{format} and @var{rest}.")
-{
-  LY_ASSERT_TYPE (scm_is_string, str, 1);
-  str = scm_simple_format (SCM_BOOL_F, str, rest);
-  error (ly_scm2string (str));
-  return SCM_UNSPECIFIED;
-}
-
-LY_DEFINE (ly_message, "ly:message",
-           1, 0, 1, (SCM str, SCM rest),
-           "A Scheme callable function to issue the message @var{str}."
-           "  The message is formatted with @code{format} and @var{rest}.")
-{
-  LY_ASSERT_TYPE (scm_is_string, str, 1);
-  str = scm_simple_format (SCM_BOOL_F, str, rest);
-  message (ly_scm2string (str));
-  return SCM_UNSPECIFIED;
-}
-
-LY_DEFINE (ly_progress, "ly:progress",
-           1, 0, 1, (SCM str, SCM rest),
-           "A Scheme callable function to print progress @var{str}."
-           "  The message is formatted with @code{format} and @var{rest}.")
-{
-  LY_ASSERT_TYPE (scm_is_string, str, 1);
-  str = scm_simple_format (SCM_BOOL_F, str, rest);
-  progress_indication (ly_scm2string (str));
-  return SCM_UNSPECIFIED;
-}
-
-LY_DEFINE (ly_programming_error, "ly:programming-error",
-           1, 0, 1, (SCM str, SCM rest),
-           "A Scheme callable function to issue the internal warning"
-           "  @var{str}.  The message is formatted with @code{format}"
-           " and @var{rest}.")
-{
-  LY_ASSERT_TYPE (scm_is_string, str, 1);
-  str = scm_simple_format (SCM_BOOL_F, str, rest);
-
-  if (get_program_option ("warning-as-error"))
-    error (ly_scm2string (str));
-  else
-    programming_error (ly_scm2string (str));
-
-  return SCM_UNSPECIFIED;
-}
-
-LY_DEFINE (ly_success, "ly:success",
-           1, 0, 1, (SCM str, SCM rest),
-           "A Scheme callable function to issue a success message @var{str}."
-           "  The message is formatted with @code{format} and @var{rest}.")
-{
-  LY_ASSERT_TYPE (scm_is_string, str, 1);
-  str = scm_simple_format (SCM_BOOL_F, str, rest);
-  successful (ly_scm2string (str));
-  return SCM_UNSPECIFIED;
-
-}
-LY_DEFINE (ly_warning, "ly:warning",
-           1, 0, 1, (SCM str, SCM rest),
-           "A Scheme callable function to issue the warning @var{str}."
-           "  The message is formatted with @code{format} and @var{rest}.")
-{
-  LY_ASSERT_TYPE (scm_is_string, str, 1);
-  str = scm_simple_format (SCM_BOOL_F, str, rest);
-
-  if (get_program_option ("warning-as-error"))
-    error (ly_scm2string (str));
-  else
-    warning (ly_scm2string (str));
-
-  return SCM_UNSPECIFIED;
-}
 
 LY_DEFINE (ly_dir_p, "ly:dir?",
            1, 0, 0, (SCM s),
-           "Is @var{s} a direction?  Valid directions are @code{-1},"
-           " @code{0}, or@tie{}@code{1}, where @code{-1} represents"
+           "Is @var{s} a direction?  Valid directions are @w{@code{-1}},"
+           " @code{0}, or@tie{}@code{1}, where @w{@code{-1}} represents"
            " left or down, @code{1}@tie{}represents right or up, and @code{0}"
            " represents a neutral direction.")
 {
@@ -260,7 +187,7 @@ LY_DEFINE (ly_string_percent_encode, "ly:string-percent-encode",
            1, 0, 0, (SCM str),
            "Encode all characters in string @var{str} with hexadecimal"
            " percent escape sequences, with the following exceptions:"
-           " characters @code{-}, @code{.}, @code{/}, and @code{_}; and"
+           " characters @w{@code{-},} @code{.}, @code{/}, and @code{_}; and"
            " characters in ranges @code{0-9}, @code{A-Z}, and @code{a-z}.")
 {
   LY_ASSERT_TYPE (scm_is_string, str, 1);
@@ -452,13 +379,16 @@ LY_DEFINE (ly_stderr_redirect, "ly:stderr-redirect",
   LY_ASSERT_TYPE (scm_is_string, file_name, 1);
 
   string m = "w";
+  string f = ly_scm2string (file_name);
   FILE *stderrfile;
-  if (mode != SCM_UNDEFINED && scm_string_p (mode))
+  if (scm_is_string (mode))
     m = ly_scm2string (mode);
   /* dup2 and (fileno (current-error-port)) do not work with mingw'c
      gcc -mwindows.  */
   fflush (stderr);
-  stderrfile = freopen (ly_scm2string (file_name).c_str (), m.c_str (), stderr);
+  stderrfile = freopen (f.c_str (), m.c_str (), stderr);
+  if (!stderrfile)
+    error (_f ("failed redirecting stderr to `%s'", f.c_str ()));
   return SCM_UNSPECIFIED;
 }
 
@@ -714,15 +644,11 @@ LY_DEFINE (ly_spawn, "ly:spawn",
 
   char *standard_output = 0;
   char *standard_error = 0;
-  int exit_status = be_verbose_global
-                    ? ly_run_command (argv, &standard_output, &standard_error)
-                    : ly_run_command (argv, 0, 0);
+  // Always get the pointer to the stdout/stderr messages
+  int exit_status = ly_run_command (argv, &standard_output, &standard_error);
 
-  if (be_verbose_global)
-    {
-      fprintf (stderr, "\n%s", standard_output);
-      fprintf (stderr, "%s", standard_error);
-    }
+  // Print out stdout and stderr only in debug mode
+  debug_output (string ("\n") + standard_output + standard_error, true);
 
   for (int i = 0; i < n; i++)
     free (argv[i]);
index 38270f446f79f0571021b11ff99683185f1e6ba6..0248c8fe789ff326f7a474869099bdb45be721c5 100644 (file)
@@ -121,7 +121,7 @@ Glissando_engraver::acknowledge_note_column (Grob_info info)
               continue;
             int n1 = robust_scm2int (scm_car (candidate), -1);
             int n2 = robust_scm2int (scm_cdr (candidate), -1);
-            if (n1 < 0 || n2 < 0 || n1 >= note_heads.size ())
+            if ((n1 < 0) || (n2 < 0) || (size_t(n1) >= note_heads.size ()))
               continue;
             note_column_1.push_back (vsize (n1));
             note_column_2.push_back (vsize (n2));
index 2b02da2b2a59603bc73c0438e929e3f8e00d76bd..eeda64521001681855dfa9ee04df5a7aa54a89f4 100644 (file)
@@ -123,8 +123,7 @@ LY_DEFINE (ly_interpret_music_expression, "ly:interpret-music-expression",
 
   send_stream_event (g, "Finish", 0, 0);
 
-  if (be_verbose_global)
-    message (_f ("elapsed time: %.2f seconds", timer.read ()));
+  debug_output (_f ("elapsed time: %.2f seconds", timer.read ()));
 
   return ctx;
 }
index 2a4368f9ab7ffa5b25c9f5fe01278c0e1f83abfa..de1e01b396b4e63dd2f9099c35b52ea318ae7576 100644 (file)
@@ -18,6 +18,7 @@
 #include "program-option.hh"
 #include "profile.hh"
 #include "simple-closure.hh"
+#include "unpure-pure-container.hh"
 #include "warn.hh"
 #include "protected-scm.hh"
 
@@ -123,6 +124,7 @@ Grob::internal_set_value_on_alist (SCM *alist, SCM sym, SCM v)
     {
       if (!ly_is_procedure (v)
           && !is_simple_closure (v)
+          && !is_unpure_pure_container (v)
           && v != ly_symbol2scm ("calculation-in-progress"))
         type_check_assignment (sym, v, ly_symbol2scm ("backend-type?"));
 
@@ -149,7 +151,7 @@ Grob::internal_get_property_data (SCM sym) const
   if (do_internal_type_checking_global && scm_is_pair (handle))
     {
       SCM val = scm_cdr (handle);
-      if (!ly_is_procedure (val) && !is_simple_closure (val))
+      if (!ly_is_procedure (val) && !is_simple_closure (val) && !is_unpure_pure_container (val))
         type_check_assignment (sym, val, ly_symbol2scm ("backend-type?"));
 
       check_interfaces_for_property (this, sym);
@@ -177,6 +179,8 @@ Grob::internal_get_property (SCM sym) const
     }
 #endif
 
+  if (is_unpure_pure_container (val))
+    val = unpure_pure_container_unpure_part (val);
   if (ly_is_procedure (val)
       || is_simple_closure (val))
     {
@@ -192,7 +196,7 @@ SCM
 Grob::internal_get_pure_property (SCM sym, int start, int end) const
 {
   SCM val = internal_get_property_data (sym);
-  if (ly_is_procedure (val))
+  if (ly_is_procedure (val) || is_unpure_pure_container (val))
     return call_pure_function (val, scm_list_1 (self_scm ()), start, end);
   if (is_simple_closure (val))
     return evaluate_with_simple_closure (self_scm (),
@@ -294,7 +298,8 @@ Grob::internal_get_object (SCM sym) const
     {
       SCM val = scm_cdr (s);
       if (ly_is_procedure (val)
-          || is_simple_closure (val))
+          || is_simple_closure (val)
+          || is_unpure_pure_container (val))
         {
           Grob *me = ((Grob *)this);
           val = me->try_callback_on_alist (&me->object_alist_, sym, val);
index 1709cb7e926c215d59100acb695897fe1d8454ea..92f755d7a77e3eb098d84f1c3fa031c13a558d0a 100644 (file)
@@ -78,6 +78,28 @@ LY_DEFINE (ly_grob_set_nested_property_x, "ly:grob-set-nested-property!",
   return SCM_UNSPECIFIED;
 }
 
+LY_DEFINE (ly_grob_pure_property, "ly:grob-pure-property",
+           4, 1, 0, (SCM grob, SCM sym, SCM beg, SCM end, SCM val),
+           "Return the pure value for property @var{sym} of @var{grob}."
+           "  If no value is found, return @var{val} or @code{'()}"
+           " if @var{val} is not specified.")
+{
+  Grob *sc = unsmob_grob (grob);
+
+  LY_ASSERT_SMOB (Grob, grob, 1);
+  LY_ASSERT_TYPE (ly_is_symbol, sym, 2);
+  LY_ASSERT_TYPE (scm_is_integer, beg, 3);
+  LY_ASSERT_TYPE (scm_is_integer, end, 4);
+  if (val == SCM_UNDEFINED)
+    val = SCM_EOL;
+
+  SCM retval = sc->internal_get_pure_property (sym, scm_to_int (beg), scm_to_int (end));
+  if (retval == SCM_EOL)
+    retval = val;
+
+  return retval;
+}
+
 LY_DEFINE (ly_grob_property, "ly:grob-property",
            2, 1, 0, (SCM grob, SCM sym, SCM val),
            "Return the value for property @var{sym} of @var{grob}."
index 993b18a31b5648e1c47a4039c386b11e4cf3fa1b..d8aeedd5ad2d3f53fff33bfd5761e5ff7e91953a 100644 (file)
@@ -88,13 +88,16 @@ Grob::Grob (Grob const &s)
   self_scm_ = SCM_EOL;
 
   immutable_property_alist_ = s.immutable_property_alist_;
-  mutable_property_alist_ = ly_deep_copy (s.mutable_property_alist_);
+  mutable_property_alist_ = SCM_EOL;
   interfaces_ = s.interfaces_;
   object_alist_ = SCM_EOL;
 
   layout_ = 0;
 
   smobify_self ();
+
+  mutable_property_alist_ = ly_deep_copy (s.mutable_property_alist_);
+
 }
 
 Grob::~Grob ()
@@ -573,11 +576,24 @@ Grob::fixup_refpoint ()
   MESSAGES
 ****************************************************************/
 void
-Grob::warning (string s) const
+Grob::programming_error (string s) const
 {
-  if (get_program_option ("warning-as-error"))
-    error (s);
+  SCM cause = self_scm ();
+  while (Grob *g = unsmob_grob (cause))
+    cause = g->get_property ("cause");
+
+  /* ES TODO: cause can't be Music*/
+  if (Music *m = unsmob_music (cause))
+    m->origin ()->programming_error (s);
+  else if (Stream_event *ev = unsmob_stream_event (cause))
+    ev->origin ()->programming_error (s);
+  else
+    ::programming_error (s);
+}
 
+void
+Grob::warning (string s) const
+{
   SCM cause = self_scm ();
   while (Grob *g = unsmob_grob (cause))
     cause = g->get_property ("cause");
@@ -600,27 +616,6 @@ Grob::name () const
   return scm_is_symbol (nm) ? ly_symbol2string (nm) : this->class_name ();
 }
 
-void
-Grob::programming_error (string s) const
-{
-  if (get_program_option ("warning-as-error"))
-    error (s);
-
-  SCM cause = self_scm ();
-  while (Grob *g = unsmob_grob (cause))
-    cause = g->get_property ("cause");
-
-  s = _f ("programming error: %s", s);
-
-  /* ES TODO: cause can't be Music*/
-  if (Music *m = unsmob_music (cause))
-    m->origin ()->message (s);
-  else if (Stream_event *ev = unsmob_stream_event (cause))
-    ev->origin ()->message (s);
-  else
-    ::message (s);
-}
-
 ADD_INTERFACE (Grob,
                "A grob represents a piece of music notation.\n"
                "\n"
index df2f192538a648ca283ee96eef85ff6fee9cc279..e737dcf706f8877a8854f3cdb312d25a236dd99d 100644 (file)
@@ -43,12 +43,12 @@ ly_init_ly_module (void *)
   for (vsize i = scm_init_funcs_->size (); i--;)
     (scm_init_funcs_->at (i)) ();
 
-  if (be_verbose_global)
+  if (is_loglevel (LOG_DEBUG))
     {
-      progress_indication ("[");
+      debug_output ("[", true);
       scm_display (scm_c_eval_string ("(%search-load-path \"lily.scm\")"),
                    scm_current_error_port ());
-      progress_indication ("]\n");
+      debug_output ("]\n", false);
     }
 
   scm_primitive_load_path (scm_from_locale_string ("lily.scm"));
index 3962b5e14d1e394ab3a140127b961defa11381ae..9f5bb1a7e42edc2b620494b7d052d04a69746cd0 100644 (file)
@@ -19,6 +19,7 @@
 
 #include "hairpin.hh"
 
+#include "axis-group-interface.hh"
 #include "dimensions.hh"
 #include "international.hh"
 #include "line-interface.hh"
@@ -121,7 +122,7 @@ Hairpin::print (SCM smob)
           else
             {
               bool neighbor_found = false;
-              Spanner *adjacent;
+              Spanner *adjacent = NULL;
               extract_grob_set (me, "adjacent-spanners", neighbors);
               for (vsize i = 0; i < neighbors.size (); i++)
                 {
@@ -140,7 +141,9 @@ Hairpin::print (SCM smob)
                     }
                 }
 
-              Interval e = robust_relative_extent (b, common, X_AXIS);
+              Interval e = (Axis_group_interface::has_interface (b)
+                            ? Axis_group_interface::generic_bound_extent (b, common, X_AXIS)
+                            : robust_relative_extent (b, common, X_AXIS));
               if (neighbor_found)
                 {
                   if (Hairpin::has_interface (adjacent))
index 6fb6e2054cb70a3cef64205fd5197c245531b68f..15d52a3ae9b50368536bf60a38fc967053d23bad 100644 (file)
@@ -81,13 +81,8 @@ Includable_lexer::new_input (string name, Sources *sources)
   if (yy_current_buffer)
     state_stack_.push_back (yy_current_buffer);
 
-  if (be_verbose_global)
-    {
-      string spaces = "";
-      for (size_t i = 0; i < state_stack_.size (); i++)
-        spaces += " ";
-      progress_indication (string ("\n") + spaces + string ("[") + file->name_string ());
-    }
+  debug_output (string (state_stack_.size (), ' ') // indentation!
+                + string ("[") + file->name_string ());
 
   include_stack_.push_back (file);
 
@@ -109,13 +104,8 @@ Includable_lexer::new_input (string name, string data, Sources *sources)
   if (yy_current_buffer)
     state_stack_.push_back (yy_current_buffer);
 
-  if (be_verbose_global)
-    {
-      string spaces = "";
-      for (size_t i = 0; i < state_stack_.size (); i++)
-        spaces += " ";
-      progress_indication (string ("\n") + spaces + string ("[") + name);
-    }
+  debug_output (string (state_stack_.size (), ' ') // indentation!
+                + string ("[") + name);
   include_stack_.push_back (file);
 
   yy_switch_to_buffer (yy_create_buffer (file->get_istream (), YY_BUF_SIZE));
@@ -135,8 +125,7 @@ Includable_lexer::close_input ()
 {
   include_stack_.pop_back ();
   char_count_stack_.pop_back ();
-  if (be_verbose_global)
-    progress_indication ("]");
+  debug_output ("]", false);
   yy_delete_buffer (yy_current_buffer);
 #if HAVE_FLEXLEXER_YY_CURRENT_BUFFER
   yy_current_buffer = 0;
index 6eb52c4df2b909c99a8ba4eed2483bd8ca23dfe3..93d70ee54c54f7f7bd2cdc42dac7e8361ba3482b 100644 (file)
@@ -28,6 +28,7 @@
 struct Axis_group_interface
 {
   static SCM generic_group_extent (Grob *me, Axis a);
+  static Interval generic_bound_extent (Grob *me, Grob *common, Axis a);
   static Interval pure_group_height (Grob *me, int start, int end);
   DECLARE_SCHEME_CALLBACK (width, (SCM smob));
   DECLARE_SCHEME_CALLBACK (calc_x_common, (SCM smob));
@@ -46,6 +47,8 @@ struct Axis_group_interface
   DECLARE_SCHEME_CALLBACK (calc_pure_y_common, (SCM));
   static Interval relative_group_extent (vector<Grob *> const &list,
                                          Grob *common, Axis);
+  static Interval relative_maybe_bound_group_extent (vector<Grob *> const &list,
+                                                     Grob *common, Axis, bool);
   static Interval relative_pure_height (Grob *me, int start, int end);
   static Interval combine_pure_heights (Grob *me, SCM, int, int);
   static Interval sum_partial_pure_heights (Grob *me, int, int);
index d89c35d6b2c98241dc884374f8b6fc222943e838..f99fbf8028e2ac3cb0f428dbb3394a9156a927c3 100644 (file)
@@ -71,6 +71,7 @@ public:
   static Interval no_visible_stem_positions (Grob *me, Interval default_value);
 
   DECLARE_SCHEME_CALLBACK (rest_collision_callback, (SCM element, SCM prev_off));
+  DECLARE_SCHEME_CALLBACK (pure_rest_collision_callback, (SCM element, SCM prev_off, SCM, SCM));
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_beaming, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_stem_shorten, (SCM));
index a144e4a7553447babe424fcd25b087ac1a553815..839c8ddc8f8299ab7f96fc32deff91eb96fef630 100644 (file)
@@ -39,7 +39,10 @@ public:
   Bezier extract (Real, Real) const;
 
   Real get_other_coordinate (Axis a, Real x) const;
+  vector<Real> get_other_coordinates (Axis a, Real x) const;
   vector<Real> solve_point (Axis, Real coordinate) const;
+  Real minmax (Axis, Real, Real, Direction) const;
+  Real minmax (Axis, Real, Real, Direction, vsize, vsize) const;
   vector<Real> solve_derivative (Offset) const;
   Interval extent (Axis) const;
   Interval control_point_extent (Axis) const;
index af9dcff3e6b56280ba1c300a4dc80914c4ceb8c1..91c15df3299dba369b234c1e2de9d84ff0ffb1f0 100644 (file)
@@ -36,11 +36,12 @@ public:
   char const *end () const;
 
   void set (Source_file *, char const *, char const *);
-  void warning (string) const;
+  void error (string) const;
   void programming_error (string) const;
   void non_fatal_error (string) const;
-  void error (string) const;
+  void warning (string) const;
   void message (string) const;
+  void debug_output (string) const;
   void set_spot (Input const &);
   void step_forward ();
   void set_location (Input const &, Input const &);
@@ -60,6 +61,8 @@ public:
 
   Input (Input const &i);
   Input ();
+protected:
+  void print_message (int level, string s) const;
 };
 
 #include "smobs.hh"
index 3fa1fcddc2324502317e95e313915af755e8b2a7..945866632e190866d86f3ef0d76ba5d9b62f1c2c 100644 (file)
@@ -52,6 +52,7 @@ public:
   virtual void handle_prebroken_dependencies ();
   virtual Interval_t<int> spanned_rank_interval () const;
   virtual Interval pure_height (Grob *ref, int start, int end);
+  virtual void cache_pure_height (Interval height);
   DECLARE_GROB_INTERFACE ();
 protected:
   virtual void discretionary_processing ();
index 72391a087748cdd676739a8ed2b3646547f077c7..f4f6e14d3e020a14b21df5bc4b46f6e39170e636 100644 (file)
@@ -102,6 +102,7 @@ public:
   SCM lookup_identifier (string s);
   SCM lookup_identifier_symbol (SCM s);
   void push_extra_token (int token_type);
+  void push_embedded_token ();
   void push_chord_state (SCM tab);
   void push_figuredbass_state ();
   void push_lyric_state ();
@@ -110,6 +111,7 @@ public:
   void push_note_state (SCM tab);
   void pop_state ();
   void LexerError (char const *);
+  void LexerWarning (char const *);
   void set_identifier (SCM path, SCM val);
   int get_state () const;
   bool is_note_state () const;
index 0387e2efd71cfdec019c5c844072e7c0d2ba1ecd..9839d38f4d04e4e2d859172ba44f999a178bba87 100644 (file)
@@ -66,6 +66,7 @@ public:
   void include_string (string ly_code);
   void parse_file (string init, string name, string out_name);
   void parse_string (string ly_code);
+  SCM parse_string_expression (string ly_code);
   void parser_error (string);
   void parser_error (Input const &, string);
   void set_yydebug (bool);
index 8644a3ee17738f0bc488a2516a019bacb6d41b9a..7c21437b809581b791ecde72541ed4f34d7b15d4 100644 (file)
@@ -42,7 +42,6 @@ extern vector<string> start_environment_global;
 extern string output_backend_global;
 extern string output_name_global;
 extern bool be_safe_global;
-extern bool be_verbose_global;
 extern bool do_internal_type_checking_global;
 extern bool point_and_click_global;
 extern string lilypond_datadir;
index edb6ad8d59bbaab5cae97000772a2b3b370b1900..7b6690db8b74a650d8978eda4514f420ca3ddb05 100644 (file)
@@ -38,6 +38,7 @@ protected:
   void stop_translation_timestep ();
   void start_translation_timestep ();
   void process_music ();
+  void handle_manual_breaks (bool);
   virtual void initialize ();
   virtual void finalize ();
 
index 935bcf5b8326f75e0e826bba7ba19b089f19db76..b404e35d5e240b134affbf9925fbc5ac6c9ce43a 100644 (file)
@@ -31,7 +31,7 @@ class Staff_spacing
 
 public:
   DECLARE_GROB_INTERFACE ();
-  static Spring get_spacing (Grob *, Grob *right_col);
+  static Spring get_spacing (Grob *, Grob *, Real);
   static Interval bar_y_positions (Grob *);
 };
 
index a7e026a5704d04c0ea67ebfc9dede498466918bd..388dc01388f9a0ce60f5640861b3aba276f9d68b 100644 (file)
@@ -30,12 +30,14 @@ public:
   DECLARE_GROB_INTERFACE ();
   DECLARE_SCHEME_CALLBACK (calc_slope, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_width, (SCM));
+  DECLARE_SCHEME_CALLBACK (calc_y_offset, (SCM));
+  DECLARE_SCHEME_CALLBACK (pure_calc_y_offset, (SCM, SCM, SCM));
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (width, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_style, (SCM));
   DECLARE_SCHEME_CALLBACK (pure_height, (SCM, SCM, SCM));
   static Stencil raw_stencil (Grob *, Real slope, Direction stemdir);
-  static Stencil translated_stencil (Grob *, Real slope);
+  static Real y_offset (Grob *, bool pure);
   static Stencil untranslated_stencil (Grob *, Real slope);
   static Real get_beam_translation (Grob *me);
   static Real vertical_length (Grob *me);
index b18b39e53a0035769da90726590c3a631363d1b6..c8e0f6939c80a65c997ba4eea098fd82ef1d7591 100644 (file)
@@ -40,35 +40,42 @@ public:
   static void add_head (Grob *me, Grob *n);
   static Stem_info get_stem_info (Grob *);
   static Real chord_start_y (Grob *);
-  static void set_stemend (Grob *, Real);
+  static void set_stem_positions (Grob *, Real);
+  static void cache_pure_height (Grob *, Interval, Interval);
   static Slice beam_multiplicity (Grob *);
   static Direction get_default_dir (Grob *);
   static Real thickness (Grob *);
+  static Real beam_end_corrective (Grob *);
   static int head_count (Grob *);
   static bool is_invisible (Grob *);
   static bool is_normal_stem (Grob *);
   static bool is_cross_staff (Grob *);
   static Interval head_positions (Grob *);
-  static Real stem_end_position (Grob *);
-  static Stencil flag (Grob *);
-  static Stencil get_translated_flag (Grob *);
+  static Interval internal_pure_height (Grob *, bool);
+  static Interval internal_height (Grob *, bool);
+  static bool is_valid_stem (Grob *);
+  static Grob *get_reference_head (Grob *);
+  static Real internal_calc_stem_end_position (Grob *, bool);
+  static Real internal_calc_stem_begin_position (Grob *, bool);
+
   DECLARE_GROB_INTERFACE ();
   static void set_spacing_hints (Grob *);
+  static Grob *flag (Grob *);
 
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_default_direction, (SCM));
   DECLARE_SCHEME_CALLBACK (offset_callback, (SCM element));
   DECLARE_SCHEME_CALLBACK (calc_direction, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_beaming, (SCM));
-  DECLARE_SCHEME_CALLBACK (calc_length, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_stem_begin_position, (SCM));
+  DECLARE_SCHEME_CALLBACK (pure_calc_stem_begin_position, (SCM, SCM, SCM));
   DECLARE_SCHEME_CALLBACK (calc_stem_end_position, (SCM));
+  DECLARE_SCHEME_CALLBACK (pure_calc_stem_end_position, (SCM, SCM, SCM));
   DECLARE_SCHEME_CALLBACK (calc_stem_info, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM));
   DECLARE_SCHEME_CALLBACK (width, (SCM smob));
   DECLARE_SCHEME_CALLBACK (pure_height, (SCM, SCM, SCM));
   DECLARE_SCHEME_CALLBACK (height, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM));
-  DECLARE_SCHEME_CALLBACK (calc_flag, (SCM));
 };
 #endif
diff --git a/lily/include/unpure-pure-container.hh b/lily/include/unpure-pure-container.hh
new file mode 100644 (file)
index 0000000..a34afed
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+  This file is part of LilyPond, the GNU music typesetter.
+
+  Copyright (C) 2005--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+  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/>.
+*/
+
+#ifndef UNPURE_PURE_CONTAINER_HH
+#define UNPURE_PURE_CONTAINER_HH
+
+#include "lily-guile.hh"
+
+bool is_unpure_pure_container (SCM s);
+SCM unpure_pure_container_unpure_part (SCM smob);
+SCM unpure_pure_container_pure_part (SCM smob);
+SCM ly_make_unpure_pure_container (SCM, SCM);
+
+#endif /* UNPURE_PURE_CONTAINER_HH */
index 1325c8e1514e2fa76852d7eb45fe181b314e04f2..19131271d3f38a9ab78dcca04b0a6855a2142f94 100644 (file)
@@ -29,6 +29,24 @@ LY_DEFINE (ly_input_location_p, "ly:input-location?", 1, 0, 0,
   return unsmob_input (x) ? SCM_BOOL_T : SCM_BOOL_F;
 }
 
+LY_DEFINE (ly_input_warning, "ly:input-warning", 2, 0, 1, (SCM sip, SCM msg, SCM rest),
+           "Print @var{msg} as a GNU compliant warning message, pointing"
+           " to the location in @var{sip}.  @var{msg} is interpreted"
+           " similar to @code{format}'s argument, using @var{rest}.")
+{
+  Input *ip = unsmob_input (sip);
+
+  LY_ASSERT_TYPE (unsmob_input, sip, 1);
+  LY_ASSERT_TYPE (scm_is_string, msg, 2);
+
+  msg = scm_simple_format (SCM_BOOL_F, msg, rest);
+
+  string m = ly_scm2string (msg);
+  ip->warning (m);
+
+  return SCM_UNSPECIFIED;
+}
+
 LY_DEFINE (ly_input_message, "ly:input-message", 2, 0, 1, (SCM sip, SCM msg, SCM rest),
            "Print @var{msg} as a GNU compliant error message, pointing"
            " to the location in @var{sip}.  @var{msg} is interpreted"
index 6cc8a182a540bdc29ecfe96d763af0dcf70f42b3..292e06a44950fc623eab74d985faacd6f9534a39 100644 (file)
@@ -79,47 +79,61 @@ Input::set_location (Input const &i_start, Input const &i_end)
   [file:line:column:][warning:]message
 */
 void
-Input::message (string s) const
+Input::print_message (int level, string s) const
 {
+  string location;
   if (source_file_)
-    s = location_string () + ": " + s + "\n"
-        + source_file_->quote_input (start_) + "\n";
-  ::message (s);
+    ::print_message (level, location_string (),
+                     s + "\n" + source_file_->quote_input (start_) + "\n");
+  else
+    ::print_message (level, "", s);
+}
+
+void
+Input::error (string s) const
+{
+  print_message (LOG_ERROR, _f ("error: %s", s));
+  // UGH, fix naming or usage (use non_fatal_error in most places, instead)
+  // exit (1);
 }
 
 void
 Input::programming_error (string s) const
 {
   if (get_program_option ("warning-as-error"))
-    ::error (s);
+    error (s);
   else
     {
-      message (_f ("programming error: %s", s.c_str ()));
-      message (_ ("continuing, cross fingers") + "\n");
+      print_message (LOG_ERROR, _f ("programming error: %s", s));
+      print_message (LOG_ERROR, _ ("continuing, cross fingers") + "\n");
     }
 }
 
+void
+Input::non_fatal_error (string s) const
+{
+  print_message (LOG_ERROR, _f ("error: %s", s));
+}
+
 void
 Input::warning (string s) const
 {
   if (get_program_option ("warning-as-error"))
-    ::error (s);
+    error (s);
   else
-    message (_f ("warning: %s", s));
+    print_message (LOG_WARN, _f ("warning: %s", s));
 }
 
 void
-Input::error (string s) const
+Input::message (string s) const
 {
-  message (_f ("error: %s", s));
-  // UGH, fix naming or usage
-  // exit (1);
+  print_message (LOG_INFO, s);
 }
 
 void
-Input::non_fatal_error (string s) const
+Input::debug_output (string s) const
 {
-  message (_f ("error: %s", s));
+  print_message (LOG_DEBUG, s);
 }
 
 string
index bd612efdee551e47bd0073b77962c4b5da0e7592..11604bb33aa8b16fb89dfc8fd4fc007e0d5d2d5e 100644 (file)
@@ -31,7 +31,7 @@ LY_DEFINE (ly_item_p, "ly:item?",
 
 LY_DEFINE (ly_item_break_dir, "ly:item-break-dir",
            1, 0, 0, (SCM it),
-           "The break status direction of item @var{it}.  @code{-1} means"
+           "The break status direction of item @var{it}.  @w{@code{-1}} means"
            " end of line, @code{0}@tie{}unbroken, and"
            " @code{1}@tie{}beginning of line.")
 {
index 4e9818192aad73b851129f72d5a70194d67a8797..6a468a6830607f6522f786c7dc15cfefdebdd5b8 100644 (file)
@@ -245,11 +245,17 @@ Item::pure_height (Grob *g, int start, int end)
   if (cached_pure_height_valid_)
     return cached_pure_height_ + pure_relative_y_coordinate (g, start, end);
 
-  cached_pure_height_ = Grob::pure_height (this, start, end);
-  cached_pure_height_valid_ = true;
+  cache_pure_height (Grob::pure_height (this, start, end));
   return cached_pure_height_ + pure_relative_y_coordinate (g, start, end);
 }
 
+void
+Item::cache_pure_height (Interval height)
+{
+  cached_pure_height_ = height;
+  cached_pure_height_valid_ = true;
+}
+
 ADD_INTERFACE (Item,
                "Grobs can be distinguished in their role in the horizontal"
                " spacing.  Many grobs define constraints on the spacing by"
@@ -270,7 +276,7 @@ ADD_INTERFACE (Item,
                "Whether these versions are visible and take up space is"
                " determined by the outcome of the @code{break-visibility}"
                " grob property, which is a function taking a direction"
-               " (@code{-1}, @code{0} or@tie{}@code{1}) as an argument.  It"
+               " (@w{@code{-1}}, @code{0} or@tie{}@code{1}) as an argument.  It"
                " returns a cons of booleans, signifying whether this grob"
                " should be transparent and have no extent.\n"
                "\n"
index 4dec628213d720ca93981e3854ef7badbe9338dc..804467fcf6aefc21026bac39c794289f02268b5d 100644 (file)
@@ -86,7 +86,6 @@ Key_engraver::create_key (bool is_default)
           && !scm_is_eq (last, key))
         {
           SCM restore = SCM_EOL;
-          SCM *tail = &restore;
           for (SCM s = last; scm_is_pair (s); s = scm_cdr (s))
             {
               SCM new_alter_pair = scm_assoc (scm_caar (s), key);
@@ -95,8 +94,7 @@ Key_engraver::create_key (bool is_default)
                   || ((ly_scm2rational (scm_cdr (new_alter_pair)) - old_alter) * old_alter
                       < Rational (0)))
                 {
-                  *tail = scm_cons (scm_car (s), *tail);
-                  tail = SCM_CDRLOC (*tail);
+                  restore = scm_cons (scm_car (s), restore);
                 }
             }
 
@@ -106,7 +104,7 @@ Key_engraver::create_key (bool is_default)
                                          key_event_
                                          ? key_event_->self_scm () : SCM_EOL);
 
-              cancellation_->set_property ("alteration-alist", scm_reverse (restore));
+              cancellation_->set_property ("alteration-alist", restore);
               cancellation_->set_property ("c0-position",
                                            get_property ("middleCPosition"));
             }
index 83a7940b6938dc634083fe9936ee389635713412..708825279384502b81c47e8b56f092a820762692 100644 (file)
@@ -135,7 +135,6 @@ PUNCT               [?!:'`]
 ACCENT         \\[`'"^]
 NATIONAL       [\001-\006\021-\027\031\036]
 TEX            {AA}|-|{PUNCT}|{ACCENT}|{NATIONAL}
-WORD           {A}{AN}*
 DASHED_WORD            {A}({AN}|-)*
 DASHED_KEY_WORD                \\{DASHED_WORD}
 
@@ -148,7 +147,6 @@ E_UNSIGNED  \\{N}+
 FRACTION       {N}+\/{N}+
 INT            -?{UNSIGNED}
 REAL           ({INT}\.{N}*)|(-?\.{N}+)
-KEYWORD                \\{WORD}
 WHITE          [ \n\t\f\r]
 HORIZONTALWHITE                [ \t]
 BLACK          [^ \n\t\f\r]
@@ -165,7 +163,7 @@ BOM_UTF8    \357\273\277
 
 
 <*>\r          {
-       // windows-suck-suck-suck
+       // swallow and ignore carriage returns
 }
 
 <extratoken>{ANY_CHAR} {
@@ -184,16 +182,27 @@ BOM_UTF8  \357\273\277
   return type;
 }
 
+<extratoken><<EOF>>    {
+  /* Generate a token without swallowing anything */
+
+  /* produce requested token */
+  int type = extra_token_types_.back ();
+  extra_token_types_.pop_back ();
+  if (extra_token_types_.empty ())
+    yy_pop_state ();
+
+  return type;
+}
+
    /* Use the trailing context feature. Otherwise, the BOM will not be
       found if the file starts with an identifier definition. */
 <INITIAL,chords,lyrics,figures,notes>{BOM_UTF8}/.* {
   if (this->lexloc_->line_number () != 1 || this->lexloc_->column_number () != 0)
     {
-      LexerError (_ ("stray UTF-8 BOM encountered").c_str ());
-      exit (1);
+      LexerWarning (_ ("stray UTF-8 BOM encountered").c_str ());
+      // exit (1);
     }
-  if (be_verbose_global)
-     message (_ ("Skipping UTF-8 BOM"));
+  debug_output (_ ("Skipping UTF-8 BOM"));
 }
 
 <INITIAL,chords,figures,incl,lyrics,markup,notes>{
@@ -264,15 +273,15 @@ BOM_UTF8  \357\273\277
        this->here_input ().get_source_file ()->set_line (here_input ().start (), i);
 }
 
-<version>    {
+<version>{ANY_CHAR}    {
        LexerError (_ ("quoted string expected after \\version").c_str ());
        yy_pop_state ();
 }
-<sourcefilename>     {
+<sourcefilename>{ANY_CHAR}     {
        LexerError (_ ("quoted string expected after \\sourcefilename").c_str ());
        yy_pop_state ();
 }
-<sourcefileline>     {
+<sourcefileline>{ANY_CHAR}     {
        LexerError (_ ("integer expected after \\sourcefileline").c_str ());
        yy_pop_state ();
 }
@@ -285,12 +294,6 @@ BOM_UTF8   \357\273\277
        "%"+"}"         {
                yy_pop_state ();
        }
-       <<EOF>>         {
-               LexerError (_ ("EOF found inside a comment").c_str ());
-               is_main_input_ = false; // should be safe , can't have \include in --safe.
-               if (! close_input ()) 
-                 yyterminate (); // can't move this, since it actually rets a YY_NULL
-       }
 }
 
 
@@ -314,7 +317,7 @@ BOM_UTF8    \357\273\277
        new_input (s, sources_);
        yy_pop_state ();
 }
-<incl>\\{BLACK}*{WHITE} { /* got the include identifier */
+<incl>\\{BLACK}*{WHITE}? { /* got the include identifier */
        string s = YYText () + 1;
        strip_trailing_white (s);
        if (s.length () && (s[s.length () - 1] == ';'))
@@ -333,7 +336,7 @@ BOM_UTF8    \357\273\277
            scm_display (sid, err);
          }
 }
-<incl>\"[^"]*   { // backup rule
+<incl,version,sourcefilename>\"[^"]*   { // backup rule
        error (_ ("end quote missing"));
        exit (1);
 }
@@ -420,11 +423,15 @@ BOM_UTF8  \357\273\277
                yylval.scm =  scan_fraction (YYText ());
                return FRACTION;
        }
-
        {DIGIT}         {
                yylval.i = String_convert::dec2int (string (YYText ()));
                return DIGIT;
        }
+       {UNSIGNED}/\/[^0-9] { // backup rule
+               yylval.i = String_convert::dec2int (string (YYText ()));
+               return UNSIGNED;
+       }
+       {UNSIGNED}/\/   | // backup rule
        {UNSIGNED}              {
                yylval.i = String_convert::dec2int (string (YYText ()));
                return UNSIGNED;
@@ -465,6 +472,11 @@ BOM_UTF8   \357\273\277
                yylval.scm =  scan_fraction (YYText ());
                return FRACTION;
        }
+       {UNSIGNED}/\/[^0-9] { // backup rule
+               yylval.i = String_convert::dec2int (string (YYText ()));
+               return UNSIGNED;
+       }
+       {UNSIGNED}/\/   | // backup rule
        {UNSIGNED}              {
                yylval.i = String_convert::dec2int (string (YYText ()));
                return UNSIGNED;
@@ -505,6 +517,11 @@ BOM_UTF8   \357\273\277
                yylval.scm =  scan_fraction (YYText ());
                return FRACTION;
        }
+       {UNSIGNED}/\/[^0-9] { // backup rule
+               yylval.i = String_convert::dec2int (string (YYText ()));
+               return UNSIGNED;
+       }
+       {UNSIGNED}/\/   | // backup rule
        {UNSIGNED}              {
                yylval.i = String_convert::dec2int (string (YYText ()));
                return UNSIGNED;
@@ -605,8 +622,14 @@ BOM_UTF8   \357\273\277
        }
 }
 
-<*><<EOF>> {
-       if (is_main_input_)
+<longcomment><<EOF>> {
+               LexerError (_ ("EOF found inside a comment").c_str ());
+               is_main_input_ = false; // should be safe , can't have \include in --safe.
+               if (!close_input ())
+                 yyterminate (); // can't move this, since it actually rets a YY_NULL
+       }
+
+<<EOF>> { if (is_main_input_)
        {
                /* 2 = init.ly + current file.
                   > because we're before closing, but is_main_input_ should
@@ -631,12 +654,7 @@ BOM_UTF8   \357\273\277
        }
 }
 
-{WORD} {
-       return scan_bare_word (YYText ());
-}
-{KEYWORD}      {
-       return scan_escaped_word (YYText () + 1);
-}
+-{UNSIGNED}    | // backup rule
 {REAL}         {
        Real r;
        int cnv = sscanf (YYText (), "%lf", &r);
@@ -646,6 +664,10 @@ BOM_UTF8   \357\273\277
        yylval.scm = scm_from_double (r);
        return REAL;
 }
+-\.    { // backup rule
+       yylval.scm = scm_from_double (0.0);
+       return REAL;
+}
 
 {UNSIGNED}     {
        yylval.i = String_convert::dec2int (string (YYText ()));
@@ -719,6 +741,12 @@ Lily_lexer::push_extra_token (int token_type)
        extra_token_types_.push_back (token_type);
 }
 
+void
+Lily_lexer::push_embedded_token ()
+{
+       push_extra_token (EMBEDDED_LILY);
+}
+
 void
 Lily_lexer::push_chord_state (SCM tab)
 {
index 4d6f6a79c6440c331d54f090853cda0439243500..ff3f7064bf62d4666d8cc4c8193ea6b2cc8b33af 100644 (file)
@@ -92,14 +92,12 @@ gulp_file_to_string (string fn, bool must_exist, int size)
       return s;
     }
 
-  if (be_verbose_global)
-    progress_indication ("[" + s);
+  debug_output ("[" + s, true);
 
   vector<char> chars = gulp_file (s, size);
   string result (&chars[0], chars.size ());
 
-  if (be_verbose_global)
-    progress_indication ("]\n");
+  debug_output ("]\n", false);
 
   return result;
 }
index 5d87c83872d25052496f800de539760a71264c69..ba6429c3ea2798344702178363f200071c0f73cc 100644 (file)
@@ -310,7 +310,7 @@ void
 Lily_lexer::LexerError (char const *s)
 {
   if (include_stack_.empty ())
-    message (_f ("error at EOF: %s", s) + "\n");
+    non_fatal_error (s, _f ("%s:EOF", s));
   else
     {
       error_level_ |= 1;
@@ -319,6 +319,18 @@ Lily_lexer::LexerError (char const *s)
     }
 }
 
+void
+Lily_lexer::LexerWarning (char const *s)
+{
+  if (include_stack_.empty ())
+    warning (s, _f ("%s:EOF", s));
+  else
+    {
+      Input spot (*lexloc_);
+      spot.warning (s);
+    }
+}
+
 char
 Lily_lexer::escaped_char (char c) const
 {
index ceefa6b0387626e2395fe190673ce714af237675..0848ec70f6114018ceaf3ebabbdf2f70f313491c 100644 (file)
@@ -70,19 +70,18 @@ LY_DEFINE (ly_parse_file, "ly:parse-file",
       else
         {
           File_name out (output_name);
-          if (is_dir (out.dir_part ()))
-            {
-              dir = out.dir_part ();
-              out_file_name = out.file_part ();
-            }
+          dir = out.dir_part ();
+          out_file_name = out.file_part ();
         }
 
       if (dir != "" && dir != "." && dir != get_working_directory ())
         {
           global_path.prepend (get_working_directory ());
-          message (_f ("Changing working directory to: `%s'",
-                       dir.c_str ()));
-          chdir (dir.c_str ());
+          message (_f ("Changing working directory to: `%s'", dir));
+          // If we can't change to the output dir (not existing, wrong
+          // permissions), exit lilypond
+          if (chdir (dir.c_str ()) != 0)
+            error (_f ("unable to change directory to: `%s'", dir));
         }
       else
         out_file_name = File_name (output_name);
@@ -115,8 +114,7 @@ LY_DEFINE (ly_parse_file, "ly:parse-file",
       sources.set_path (&global_path);
 
       string mapped_fn = map_file_name (file_name);
-      message (_f ("Processing `%s'", mapped_fn.c_str ()));
-      progress_indication ("\n");
+      basic_progress (_f ("Processing `%s'", mapped_fn.c_str ()));
 
       Lily_parser *parser = new Lily_parser (&sources);
 
@@ -208,6 +206,25 @@ LY_DEFINE (ly_parser_parse_string, "ly:parser-parse-string",
   return SCM_UNSPECIFIED;
 }
 
+LY_DEFINE (ly_parse_string_expression, "ly:parse-string-expression",
+           2, 0, 0, (SCM parser_smob, SCM ly_code),
+           "Parse the string @var{ly-code} with @var{parser-smob}."
+" Return the contained music expression.")
+{
+  LY_ASSERT_SMOB (Lily_parser, parser_smob, 1);
+  Lily_parser *parser = unsmob_lily_parser (parser_smob);
+  LY_ASSERT_TYPE (scm_is_string, ly_code, 2);
+
+  if (!parser->lexer_->is_clean ())
+    {
+      parser->parser_error (_ ("ly:parse-string-expression is only valid with a new parser."
+                              "  Use ly:parser-include-string instead."));
+      return SCM_UNSPECIFIED;
+    }
+
+  return parser->parse_string_expression (ly_scm2string (ly_code));
+}
+
 LY_DEFINE (ly_parser_include_string, "ly:parser-include-string",
            2, 0, 0, (SCM parser_smob, SCM ly_code),
            "Include the string @var{ly-code} into the input stream"
index ba3bd0f99be8c0f5a503d5dffe50d7cb007f047a..5c1a3d358d61f390212f14915fa60e1d5c3536ce 100644 (file)
@@ -163,6 +163,36 @@ Lily_parser::parse_string (string ly_code)
   error_level_ = error_level_ | lexer_->error_level_;
 }
 
+SCM
+Lily_parser::parse_string_expression (string ly_code)
+{
+  // TODO: use $parser
+  lexer_->set_identifier (ly_symbol2scm ("parser"),
+                          self_scm ());
+
+  lexer_->main_input_name_ = "<string>";
+  lexer_->is_main_input_ = true;
+  lexer_->new_input (lexer_->main_input_name_, ly_code, sources_);
+
+  SCM mod = lexer_->set_current_scope ();
+  lexer_->push_embedded_token ();
+  do_yyparse ();
+  SCM result = lexer_->lookup_identifier_symbol (ly_symbol2scm ("$parseStringResult"));
+  // $parseStringResult is set in the grammar rule for embedded_lilypond
+  
+  scm_set_current_module (mod);
+
+  if (!define_spots_.empty ())
+    {
+      if (define_spots_.empty ()
+          && !error_level_)
+        programming_error ("define_spots_ don't match, but error_level_ not set.");
+    }
+
+  error_level_ = error_level_ | lexer_->error_level_;
+  return result;
+}
+
 void
 Lily_parser::include_string (string ly_code)
 {
index b2877211f17d31eac7fb87ead457feadaf892777..8cdc16b94ffcf75aab36686c86bf203e4e242b61 100644 (file)
@@ -24,7 +24,9 @@
 #include "item.hh"
 #include "lily-proto.hh"
 #include "line-interface.hh"
+#include "note-column.hh"
 #include "output-def.hh"
+#include "paper-column.hh"
 #include "pointer-group-interface.hh"
 #include "spanner.hh"
 #include "staff-symbol-referencer.hh"
@@ -108,9 +110,16 @@ Line_spanner::calc_bound_info (SCM smob, Direction dir)
                          ? columns[0] : columns.back ();
         }
 
+      Real x_coord = (Paper_column::has_interface (bound_grob)
+                      ? Axis_group_interface::generic_bound_extent (bound_grob, commonx, X_AXIS)
+                      : robust_relative_extent (bound_grob, commonx, X_AXIS)).linear_combination (attach);
+
+      Grob *acc = Note_column::accidentals (bound_grob->get_parent (X_AXIS));
+      if (acc && to_boolean (ly_assoc_get (ly_symbol2scm ("end-on-accidental"), details, SCM_BOOL_F)))
+        x_coord = robust_relative_extent (acc, commonx, X_AXIS).linear_combination (attach);
+
       details = scm_acons (ly_symbol2scm ("X"),
-                           scm_from_double (robust_relative_extent (bound_grob, commonx, X_AXIS)
-                                            .linear_combination (attach)),
+                           scm_from_double (x_coord),
                            details);
     }
 
index a6de96f5d3b8020981bf869962d6a6414e2865ea..3b2ee8548d972d6c6f307015ec1d0baf89947fb1 100644 (file)
@@ -221,7 +221,7 @@ Lyric_combine_music_iterator::construct_children ()
 
 IMPLEMENT_LISTENER (Lyric_combine_music_iterator, check_new_context)
 void
-Lyric_combine_music_iterator::check_new_context (SCM sev)
+Lyric_combine_music_iterator::check_new_context (SCM /*sev*/)
 {
   if (!ok ())
     return;
index d0d21601ec500bb94d5e8a7f7a733f1accc39e94..5b5ea18d08e2c127db537aa041c0600e9914750e 100644 (file)
@@ -77,9 +77,6 @@ bool be_safe_global = false;
 /* Provide URI links to the original file */
 bool point_and_click_global = true;
 
-/* Verbose progress indication? */
-bool be_verbose_global = false;
-
 /* Scheme code to execute before parsing, after .scm init.
    This is where -e arguments are appended to.  */
 string init_scheme_code_global;
@@ -169,10 +166,16 @@ static Long_option_init options_static[]
     "and cd into DIR")
   },
 #endif
+  {
+    _i ("LOGLEVEL"), "loglevel", 'l', _i ("print log messages according to"
+    " LOGLEVEL.  Possible values are:\n"
+    "NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG.")
+  },
   {_i ("FILE"), "output", 'o', _i ("write output to FILE (suffix will be added)")},
   {0, "relocate", 0, _i ("relocate using directory of lilypond program")},
+  {0, "silent", 's', _i ("no progress, only error messages (equivalent to loglevel=ERROR)")},
   {0, "version", 'v', _i ("show version number and exit")},
-  {0, "verbose", 'V', _i ("be verbose")},
+  {0, "verbose", 'V', _i ("be verbose (equivalent to loglevel=DEBUG)")},
   {0, "warranty", 'w', _i ("show warranty and copyright")},
   {0, 0, 0, 0}
 };
@@ -404,7 +407,7 @@ main_with_guile (void *, int, char **)
   prepend_load_path (lilypond_datadir);
   prepend_load_path (lilypond_datadir + "/scm");
 
-  if (be_verbose_global)
+  if (is_loglevel (LOG_DEBUG))
     dir_info (stderr);
 
   init_scheme_variables_global = "(list " + init_scheme_variables_global + ")";
@@ -556,7 +559,13 @@ parse_argv (int argc, char **argv)
           show_help = true;
           break;
         case 'V':
-          be_verbose_global = true;
+          set_loglevel (LOGLEVEL_DEBUG);
+          break;
+        case 's':
+          set_loglevel (LOGLEVEL_ERROR);
+          break;
+        case 'l':
+          set_loglevel (option_parser->optional_argument_str0_);
           break;
         default:
           programming_error (to_string ("unhandled short option: %c",
@@ -572,7 +581,7 @@ parse_argv (int argc, char **argv)
   if (show_help)
     {
       ly_usage ();
-      if (be_verbose_global)
+      if (is_loglevel (LOG_DEBUG))
         dir_info (stdout);
       exit (0);
     }
@@ -610,11 +619,13 @@ main (int argc, char **argv, char **envp)
     start_environment_global.push_back (*p);
 
   if (getenv ("LILYPOND_VERBOSE"))
-    be_verbose_global = true;
+    set_loglevel (LOGLEVEL_DEBUG);
+  if (getenv ("LILYPOND_LOGLEVEL"))
+    set_loglevel (getenv ("LILYPOND_LOGLEVEL"));
 
   setup_localisation ();
   parse_argv (argc, argv);
-  if (isatty (STDIN_FILENO))
+  if (isatty (STDIN_FILENO) && (is_loglevel (LOG_BASIC)))
     identify (stderr);
 
   setup_paths (argv[0]);
index 72a509cffaf989bf245684c975b8604c71c2b17b..d6142b1890b257a97fb42e1f284fcec1a19581bd 100644 (file)
@@ -111,11 +111,6 @@ Multi_measure_rest::print (SCM smob)
   Stencil mol;
   mol.add_stencil (symbol_stencil (me, space));
 
-  int measure_count = 0;
-  SCM m (me->get_property ("measure-count"));
-  if (scm_is_number (m))
-    measure_count = scm_to_int (m);
-
   mol.translate_axis (x_off, X_AXIS);
   return mol.smobbed_copy ();
 }
index 6444a06bff056609c20e93652587c85604c86957..efb898bd54f864cfcbea00780c778c5b4a1dfbaa 100644 (file)
@@ -259,7 +259,7 @@ New_fingering_engraver::position_scripts (SCM orientations,
       Grob *f = ft.script_;
       f->set_parent (ft.head_, X_AXIS);
       f->set_parent (ft.head_, Y_AXIS);
-      f->set_property ("avoid-slur", SCM_BOOL_F);
+      f->set_property ("avoid-slur", ly_symbol2scm ("inside"));
       if (hordir == LEFT
           && unsmob_grob (ft.head_->get_object ("accidental-grob")))
         Side_position_interface::add_support (f,
index 24c9ce92a47f4393680006651d336226a45d2876..a9b8cbe4410a466efad38433aeafa3c2c107098c 100644 (file)
@@ -186,7 +186,7 @@ check_meshing_chords (Grob *me,
       && Rhythmic_head::dot_count (head_up) < Rhythmic_head::dot_count (head_down))
     {
       shift_amount = -1;
-      if (!touch || full_collide)
+      if (!touch)
         // remember to leave clearance between stems
         stem_to_stem = true;
     }
@@ -213,7 +213,6 @@ check_meshing_chords (Grob *me,
       && (up_style == ly_symbol2scm ("fa") || up_style == ly_symbol2scm ("faThin"))
       && (down_style == ly_symbol2scm ("fa") || down_style == ly_symbol2scm ("faThin")))
     {
-      Interval uphead_size = head_up->extent (head_up, Y_AXIS);
       Offset att = Offset (0.0, -1.0);
       head_up->set_property ("stem-attachment", ly_offset2scm (att));
       head_up->set_property ("transparent", SCM_BOOL_T);
index 8153af96358c37f99438cfb31fa31eb2d5a21fd2..5cffd5d2053333df09d6782217b10fff2eeb929a 100644 (file)
@@ -31,6 +31,7 @@
 #include "separation-item.hh"
 #include "spacing-interface.hh"
 #include "staff-spacing.hh"
+#include "staff-symbol-referencer.hh"
 #include "stem.hh"
 #include "warn.hh"
 
@@ -273,17 +274,8 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn,
           Interval hp = Stem::head_positions (stem);
           if (!hp.is_empty ())
             {
-              Real chord_start = hp[stem_dir];
-
-              /*
-                can't look at stem-end-position, since that triggers
-                beam slope computations.
-              */
-              Real stem_end = hp[stem_dir]
-                              + stem_dir * robust_scm2double (stem->get_property ("length"), 7);
-
-              stem_posns[d] = Interval (min (chord_start, stem_end),
-                                        max (chord_start, stem_end));
+              Real ss = Staff_symbol_referencer::staff_space (stem);
+              stem_posns[d] = stem->pure_height (stem, 0, INT_MAX) * (2 / ss);
               head_posns[d].unite (hp);
             }
         }
@@ -304,7 +296,6 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn,
       if (beams_drul[LEFT] && beams_drul[LEFT] == beams_drul[RIGHT])
         {
           correction = knee_correction (me, stems_drul[RIGHT], increment);
-          *fixed += correction;
         }
       else
         {
@@ -322,6 +313,7 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn,
            && !acc_right)
     correction = same_direction_correction (me, head_posns);
 
+  *fixed += correction;
   *space += correction;
 
   /* there used to be a correction for bar_xextent () here, but
index f81683a2573277f2de404409219cba8d31aef005..c46a04efa5c363b596da1fbf0ee83b91732cfa25 100644 (file)
@@ -265,9 +265,7 @@ Page_breaking::Page_breaking (Paper_book *pb, Break_predicate is_break, Prob_bre
   footnote_padding_ = robust_scm2double (pb->paper_->c_variable ("footnote-padding"), 0.0);
   footnote_footer_padding_ = robust_scm2double (pb->paper_->c_variable ("footnote-footer-padding"), 0.0);
 
-  footnote_number_raise_ = (to_boolean (pb->paper_->c_variable ("footnote-auto-numbering"))
-                            ? robust_scm2double (pb->paper_->c_variable ("footnote-number-raise"), 0.0)
-                            : 0.0);
+  footnote_number_raise_ = robust_scm2double (pb->paper_->c_variable ("footnote-number-raise"), 0.0);
 
   if (systems_per_page_ && (max_systems_per_page_ || min_systems_per_page_))
     {
index 2988a091b69436f377c54f4e618584703c9dbaff..82c0dc7181fd92893b4c73006d73f4344ed9dc51 100644 (file)
@@ -106,8 +106,6 @@ Page_layout_problem::get_footnotes_from_lines (SCM lines, int counter, Paper_boo
   // now, make the footnote stencils with the numbering function
   SCM numbers = SCM_EOL;
   SCM in_text_numbers = SCM_EOL;
-  bool do_numbering = to_boolean (paper->c_variable ("footnote-auto-numbering"));
-  // if there's no numbering, skip all this
   /*
     TODO: This recalculates numbering every time this function is called, including once
     after the balloon prints are called.  Although it is not a huge computational drain,
@@ -118,45 +116,42 @@ Page_layout_problem::get_footnotes_from_lines (SCM lines, int counter, Paper_boo
     in duplicated work, either by making this process less complicated or (preferably)
     by passing its results downstream.
   */
-  if (do_numbering)
+  vector<SCM> footnote_number_markups; // Holds the numbering markups.
+  vector<Stencil *> footnote_number_stencils; // Holds translated versions of the stencilized numbering markups.
+  for (vsize i = 0; i < fn_count; i++)
     {
-      vector<SCM> footnote_number_markups; // Holds the numbering markups.
-      vector<Stencil *> footnote_number_stencils; // Holds translated versions of the stencilized numbering markups.
-      for (vsize i = 0; i < fn_count; i++)
+      SCM markup = scm_call_1 (numbering_function, scm_from_int (counter));
+      Stencil *s = unsmob_stencil (Text_interface::interpret_markup (layout, props, markup));
+      if (!s)
         {
-          SCM markup = scm_call_1 (numbering_function, scm_from_int (counter));
-          Stencil *s = unsmob_stencil (Text_interface::interpret_markup (layout, props, markup));
-          if (!s)
-            {
-              programming_error ("Your numbering function needs to return a stencil.");
-              markup = SCM_EOL;
-              s = new Stencil (Box (Interval (0, 0), Interval (0, 0)), SCM_EOL);
-            }
-          footnote_number_markups.push_back (markup);
-          footnote_number_stencils.push_back (s);
-          counter++;
+          programming_error ("Your numbering function needs to return a stencil.");
+          markup = SCM_EOL;
+          s = new Stencil (Box (Interval (0, 0), Interval (0, 0)), SCM_EOL);
         }
+      footnote_number_markups.push_back (markup);
+      footnote_number_stencils.push_back (s);
+      counter++;
+    }
 
-      // find the maximum X_AXIS length
-      Real max_length = -infinity_f;
-      for (vsize i = 0; i < fn_count; i++)
-        max_length = max (max_length, footnote_number_stencils[i]->extent (X_AXIS).length ());
+  // find the maximum X_AXIS length
+  Real max_length = -infinity_f;
+  for (vsize i = 0; i < fn_count; i++)
+    max_length = max (max_length, footnote_number_stencils[i]->extent (X_AXIS).length ());
 
-      /*
-        translate each stencil such that it attains the correct maximum length and bundle the
-        footnotes into a scheme object.
-      */
-      SCM *tail = &numbers;
-      SCM *in_text_tail = &in_text_numbers;
+  /*
+    translate each stencil such that it attains the correct maximum length and bundle the
+    footnotes into a scheme object.
+  */
+  SCM *tail = &numbers;
+  SCM *in_text_tail = &in_text_numbers;
 
-      for (vsize i = 0; i < fn_count; i++)
-        {
-          *in_text_tail = scm_cons (footnote_number_markups[i], SCM_EOL);
-          in_text_tail = SCM_CDRLOC (*in_text_tail);
-          footnote_number_stencils[i]->translate_axis (max_length - footnote_number_stencils[i]->extent (X_AXIS).length (), X_AXIS);
-          *tail = scm_cons (footnote_number_stencils[i]->smobbed_copy (), SCM_EOL);
-          tail = SCM_CDRLOC (*tail);
-        }
+  for (vsize i = 0; i < fn_count; i++)
+    {
+      *in_text_tail = scm_cons (footnote_number_markups[i], SCM_EOL);
+      in_text_tail = SCM_CDRLOC (*in_text_tail);
+      footnote_number_stencils[i]->translate_axis (max_length - footnote_number_stencils[i]->extent (X_AXIS).length (), X_AXIS);
+      *tail = scm_cons (footnote_number_stencils[i]->smobbed_copy (), SCM_EOL);
+      tail = SCM_CDRLOC (*tail);
     }
   // build the footnotes
 
@@ -193,6 +188,13 @@ Page_layout_problem::get_footnotes_from_lines (SCM lines, int counter, Paper_boo
                                                                    props, footnote_markup);
 
               Stencil *footnote_stencil = unsmob_stencil (footnote_stl);
+              bool do_numbering = to_boolean (footnote->get_property ("automatically-numbered"));
+              if (Spanner *orig = dynamic_cast<Spanner *>(footnote))
+                {
+                  if (orig->is_broken ())
+                    for (vsize i = 0; i < orig->broken_intos_.size (); i++)
+                      do_numbering = do_numbering || to_boolean (orig->broken_intos_[i]->get_property ("automatically-numbered"));
+                }
               if (do_numbering)
                 {
                   SCM annotation_scm = scm_car (in_text_numbers);
@@ -226,21 +228,23 @@ Page_layout_problem::get_footnotes_from_lines (SCM lines, int counter, Paper_boo
           for (SCM st = stencils; scm_is_pair (st); st = scm_cdr (st))
             {
               Stencil mol;
-              Stencil *footnote = unsmob_stencil (scm_cadar (st));
+              Stencil *footnote = unsmob_stencil (scm_caddar (st));
               mol.add_stencil (*footnote);
+              bool do_numbering = to_boolean (scm_cadar (st));
+              SCM in_text_stencil = Stencil ().smobbed_copy ();
               if (do_numbering)
                 {
                   Stencil *annotation = unsmob_stencil (scm_car (numbers));
                   SCM in_text_annotation = scm_car (in_text_numbers);
-                  SCM in_text_stencil = Text_interface::interpret_markup (layout, props, in_text_annotation);
+                  in_text_stencil = Text_interface::interpret_markup (layout, props, in_text_annotation);
                   if (!unsmob_stencil (in_text_stencil))
                     in_text_stencil = SCM_EOL;
-                  number_footnote_table = scm_cons (scm_cons (scm_caar (st), in_text_stencil), number_footnote_table);
                   annotation->translate_axis (mol.extent (Y_AXIS)[UP] + number_raise - annotation->extent (Y_AXIS)[UP], Y_AXIS);
                   mol.add_at_edge (X_AXIS, LEFT, *annotation, 0.0);
                   numbers = scm_cdr (numbers);
                   in_text_numbers = scm_cdr (in_text_numbers);
                 }
+              number_footnote_table = scm_cons (scm_cons (scm_caar (st), in_text_stencil), number_footnote_table);
               footnote_stencil.add_at_edge (Y_AXIS, DOWN, mol, padding);
             }
           footnotes = scm_cons (footnote_stencil.smobbed_copy (), footnotes);
index 1be0656f75dc360e1a8ddbf8fec32cc6f2efe718..291895eb3325873f8ad2fe49d2ad436ae2cd2d13 100644 (file)
@@ -231,7 +231,7 @@ Pango_font::pango_item_string_stencil (PangoGlyphItem const *glyph_item) const
                         SCM_EOL);
       tail = SCM_CDRLOC (*tail);
     }
-
+  pango_fc_font_unlock_face (fcfont);
   pango_glyph_string_free (pgs);
   pgs = 0;
   PangoFontDescription *descr = pango_font_describe (pa->font);
index 31b8023bef734caac6f4c4bfb3ee8281091b922a..3d4ee9fd95c8c59ed68f9893d38b2a8214a70cae 100644 (file)
@@ -61,8 +61,18 @@ Paper_column_engraver::finalize ()
 
   if (command_column_)
     {
+      // At the end of the score, allow page breaks and turns by default, but...
+      command_column_->set_property ("page-break-permission", ly_symbol2scm ("allow"));
+      command_column_->set_property ("page-turn-permission", ly_symbol2scm ("allow"));
+
+      // ...allow the user to override them.
+      handle_manual_breaks (true);
+
+      // On the other hand, line breaks are always allowed at the end of a score,
+      // even if they try to stop us.
       if (!scm_is_symbol (command_column_->get_property ("line-break-permission")))
         command_column_->set_property ("line-break-permission", ly_symbol2scm ("allow"));
+
       system_->set_bound (RIGHT, command_column_);
     }
 }
@@ -147,7 +157,7 @@ Paper_column_engraver::listen_label (Stream_event *ev)
 }
 
 void
-Paper_column_engraver::process_music ()
+Paper_column_engraver::handle_manual_breaks (bool only_do_permissions)
 {
   for (vsize i = 0; i < break_events_.size (); i++)
     {
@@ -170,7 +180,7 @@ Paper_column_engraver::process_music ()
       SCM pen = break_events_[i]->get_property ("break-penalty");
       SCM perm = break_events_[i]->get_property ("break-permission");
 
-      if (scm_is_number (pen))
+      if (!only_do_permissions && scm_is_number (pen))
         {
           Real new_pen = robust_scm2double (cur_pen, 0.0) + scm_to_double (pen);
           command_column_->set_property (pen_str.c_str (), scm_from_double (new_pen));
@@ -179,6 +189,12 @@ Paper_column_engraver::process_music ()
       else
         command_column_->set_property (perm_str.c_str (), perm);
     }
+}
+
+void
+Paper_column_engraver::process_music ()
+{
+  handle_manual_breaks (false);
 
   for (vsize i = 0; i < label_events_.size (); i++)
     {
index c9c316026093054e88f4b9249ccbcda246135da3..7041ea61ae3b1af803350f6e653758f539ebac3a 100644 (file)
@@ -131,10 +131,9 @@ Paper_score::calc_breaking ()
 void
 Paper_score::process ()
 {
-  if (be_verbose_global)
-    message (_f ("Element count %d (spanners %d) ",
-                 system_->element_count (),
-                 system_->spanner_count ()));
+  debug_output (_f ("Element count %d (spanners %d) ",
+                    system_->element_count (),
+                    system_->spanner_count ()));
 
   message (_ ("Preprocessing graphical objects..."));
 
index 201f04f1d036da86de78c491f81333c8a8dd99a0..a744ed71926b6bd43175d55457c0f6ad336a7ba2 100644 (file)
@@ -268,15 +268,18 @@ If we give names, Bison complains.
 %token <i> UNSIGNED
 
 /* Artificial tokens, for more generic function syntax */
-%token <i> EXPECT_MARKUP;
-%token <i> EXPECT_MUSIC;
-%token <i> EXPECT_PITCH;
-%token <i> EXPECT_DURATION;
-%token <i> EXPECT_SCM;
-%token <i> EXPECT_MARKUP_LIST
+%token <i> EXPECT_MARKUP "markup?"
+%token <i> EXPECT_MUSIC "ly:music?"
+%token <i> EXPECT_PITCH "ly:pitch?"
+%token <i> EXPECT_DURATION "ly:duration?"
+%token <i> EXPECT_SCM "scheme?"
+%token <i> EXPECT_MARKUP_LIST "markup-list?"
 /* After the last argument. */
 %token <i> EXPECT_NO_MORE_ARGS;
 
+/* An artificial token for parsing embedded Lilypond */
+%token <i> EMBEDDED_LILY "#{"
+
 %token <scm> BOOK_IDENTIFIER
 %token <scm> CHORDMODIFIER_PITCH
 %token <scm> CHORD_MODIFIER
@@ -343,6 +346,7 @@ If we give names, Bison complains.
 %type <scm> context_change
 %type <scm> direction_less_event
 %type <scm> direction_reqd_event
+%type <scm> embedded_lilypond
 %type <scm> event_chord
 %type <scm> gen_text_def
 %type <scm> music_property_def
@@ -352,6 +356,7 @@ If we give names, Bison complains.
 %type <scm> relative_music
 %type <scm> simple_element
 %type <scm> simple_music_property_def
+%type <scm> start_symbol
 %type <scm> string_number_event
 %type <scm> tempo_event
 
@@ -396,6 +401,7 @@ If we give names, Bison complains.
 %type <scm> closed_function_arglist
 %type <scm> open_function_arglist
 %type <scm> identifier_init
+%type <scm> lilypond
 %type <scm> lilypond_header
 %type <scm> lilypond_header_body
 %type <scm> lyric_element
@@ -458,7 +464,18 @@ prec levels in different prods */
 
 %%
 
-lilypond:      /* empty */
+start_symbol:
+       lilypond
+       | EMBEDDED_LILY {
+               SCM nn = PARSER->lexer_->lookup_identifier ("pitchnames");
+               PARSER->lexer_->push_note_state (alist_to_hashq (nn));
+       } embedded_lilypond {
+               PARSER->lexer_->pop_state ();
+               PARSER->lexer_->set_identifier (ly_symbol2scm ("$parseStringResult"), $3);
+       }
+       ;
+
+lilypond:      /* empty */ { }
        | lilypond toplevel_expression {
        }
        | lilypond assignment {
@@ -529,6 +546,21 @@ embedded_scm:
        | SCM_IDENTIFIER
        ;
 
+embedded_lilypond:
+       { $$ = MAKE_SYNTAX ("void-music", @$, SCM_UNDEFINED); }
+       | identifier_init
+       | music music music_list {
+               $$ = MAKE_SYNTAX ("sequential-music", @$,       
+                                 scm_cons2 ($1, $2, scm_reverse_x ($3, SCM_EOL)));
+       }
+       | error {
+               PARSER->error_level_ = 1;
+       }
+       | embedded_lilypond INVALID     {
+               PARSER->error_level_ = 1;
+       }
+       ;
+
 
 lilypond_header_body:
        {
index 4521abc15e24889b8004e0f4afad5643f5a61c95..4583d221f646ef9bcdc801dd46c4674366795fb3 100644 (file)
@@ -89,7 +89,7 @@ private:
   Status last_playing_;
 
   /*
-    TODO: this is getting of hand...
+    TODO: this is getting off hand...
   */
   Context_handle handles_[NUM_OUTLETS];
 
@@ -135,6 +135,7 @@ Part_combine_iterator::Part_combine_iterator ()
   split_list_ = SCM_EOL;
   state_ = APART;
   playing_state_ = APART;
+  last_playing_ = APART;
 
   busy_ = false;
   notice_busy_ = false;
@@ -241,8 +242,7 @@ Part_combine_iterator::unisono (bool silent)
       Outlet_type c1 = (last_playing_ == SOLO2) ? CONTEXT_NULL : CONTEXT_SHARED;
       Outlet_type c2 = (last_playing_ == SOLO2) ? CONTEXT_SHARED : CONTEXT_NULL;
       substitute_both (c1, c2);
-      kill_mmrest ((last_playing_ == SOLO2)
-                   ? CONTEXT_ONE : CONTEXT_TWO);
+      kill_mmrest ((last_playing_ == SOLO2) ? CONTEXT_ONE : CONTEXT_TWO);
       kill_mmrest (CONTEXT_SHARED);
 
       if (playing_state_ != UNISONO
index ecfe5c4f01d2e973cfedf9648a9274031957ebb9..13e8389ecec7b42a1831c4001090b25ff54e9474 100644 (file)
@@ -58,11 +58,11 @@ LY_DEFINE (ly_encode_string_for_pdf, "ly:encode-string-for-pdf",
        * though), we have to prepend it manually. */
       if (g_without_BOM) // conversion to UTF-16be might have failed (shouldn't!)
         {
-          g = new char[bytes_written + 3];
+          g = (char*)malloc ( sizeof(char) * (bytes_written + 3));
           char const *BOM = "\xFE\xFF";
           strcpy (g, BOM);
           memcpy (&g[2], g_without_BOM, bytes_written + 1); // Copy string + \0
-          free (g_without_BOM);
+          g_free (g_without_BOM);
           bytes_written += 2;
         }
     }
index 1bc547a5a8b9e987464fa6c5a70b7b76051f2d15..017b75619cb4b5424b040101e6fab6acc054f0d0 100644 (file)
@@ -51,17 +51,14 @@ Performance::output (Midi_stream &midi_stream) const
   int tracks_ = audio_staffs_.size ();
 
   midi_stream.write (Midi_header (1, tracks_, 384));
-  if (be_verbose_global)
-    progress_indication (_ ("Track...") + " ");
+  debug_output (_ ("Track...") + " ", false);
 
   for (vsize i = 0; i < audio_staffs_.size (); i++)
     {
       Audio_staff *s = audio_staffs_[i];
-      if (be_verbose_global)
-        progress_indication ("[" + to_string (i));
+      debug_output ("[" + to_string (i), true);
       s->output (midi_stream, i, ports_);
-      if (be_verbose_global)
-        progress_indication ("]");
+      debug_output ("]", false);
     }
 }
 
index 34d159cf044cc55dab725c2cc9418827822c0205..f8a6c1278f38ab7a530ef0d36533c1739401f889 100644 (file)
@@ -15,8 +15,7 @@ LY_DEFINE (ly_pfb_2_pfa, "ly:pfb->pfa",
 
   string file_name = ly_scm2string (pfb_file_name);
 
-  if (be_verbose_global)
-    progress_indication ("\n[" + file_name);
+  debug_output ("[" + file_name); // start message on a new line
 
   vector<char> pfb_string = gulp_file (file_name, 0);
   char *pfa = pfb2pfa ((Byte *) &pfb_string[0], pfb_string.size ());
@@ -24,8 +23,7 @@ LY_DEFINE (ly_pfb_2_pfa, "ly:pfb->pfa",
   SCM pfa_scm = scm_from_locale_string (pfa);
   free (pfa);
 
-  if (be_verbose_global)
-    progress_indication ("]");
+  debug_output ("]", false);
 
   return pfa_scm;
 }
@@ -38,8 +36,7 @@ LY_DEFINE (ly_otf_2_cff, "ly:otf->cff",
   LY_ASSERT_TYPE (scm_is_string, otf_file_name, 1);
 
   string file_name = ly_scm2string (otf_file_name);
-  if (be_verbose_global)
-    progress_indication ("\n[" + file_name);
+  debug_output ("[" + file_name); // start message on a new line
 
   FT_Face face = open_ft_face (file_name, 0 /* index */);
   string table = get_otf_table (face, "CFF ");
@@ -47,8 +44,7 @@ LY_DEFINE (ly_otf_2_cff, "ly:otf->cff",
   SCM asscm = scm_from_locale_stringn ((char *) table.data (),
                                        table.length ());
 
-  if (be_verbose_global)
-    progress_indication ("]");
+  debug_output ("]", false);
 
   return asscm;
 }
index 4805960042b8317e1f45ba9ed86ab8598a5cba3b..8882a64285253be9380eeed6dd1961ddaeab1f44 100644 (file)
@@ -51,6 +51,7 @@ class Phrasing_slur_engraver : public Engraver
   vector<Stream_event *> stop_events_;
   vector<Grob *> slurs_;
   vector<Grob *> end_slurs_;
+  vector<Grob_info> objects_to_acknowledge_;
 
 protected:
   DECLARE_TRANSLATOR_LISTENER (phrasing_slur);
@@ -103,7 +104,7 @@ Phrasing_slur_engraver::acknowledge_note_column (Grob_info info)
 void
 Phrasing_slur_engraver::acknowledge_extra_object (Grob_info info)
 {
-  Slur::auxiliary_acknowledge_extra_object (info, slurs_, end_slurs_);
+  objects_to_acknowledge_.push_back (info);
 }
 
 void
@@ -209,9 +210,13 @@ Phrasing_slur_engraver::process_music ()
 void
 Phrasing_slur_engraver::stop_translation_timestep ()
 {
+  for (vsize i = 0; i < objects_to_acknowledge_.size (); i++)
+    Slur::auxiliary_acknowledge_extra_object (objects_to_acknowledge_[i], slurs_, end_slurs_);
+
   end_slurs_.clear ();
   start_events_.clear ();
   stop_events_.clear ();
+  objects_to_acknowledge_.clear ();
 }
 
 ADD_ACKNOWLEDGER (Phrasing_slur_engraver, accidental);
index 976d51062c2169eb872b307f363cd195edc2398b..1071d14d7d7f43497a23f0e666df906406b12326 100644 (file)
@@ -247,10 +247,10 @@ LY_DEFINE (ly_command_line_code, "ly:command-line-code", 0, 0, 0, (),
   return ly_string2scm (init_scheme_code_global);
 }
 
-LY_DEFINE (ly_command_line_verbose_p, "ly:command-line-verbose?", 0, 0, 0, (),
-           "Was @code{be_verbose_global} set?")
+LY_DEFINE (ly_verbose_output_p, "ly:verbose-output?", 0, 0, 0, (),
+           "Was verbose output requested, i.e. loglevel at least @code{DEBUG}?")
 {
-  return scm_from_bool (be_verbose_global);
+  return scm_from_bool (is_loglevel (LOG_DEBUG));
 }
 
 LY_DEFINE (ly_all_options, "ly:all-options",
index 964e02941db88d54fb7e1771fa8a2578395f8113..a4e75d2ae5e67da2954c984920a84ccb837b59cd 100644 (file)
@@ -49,9 +49,8 @@ sane_putenv (char const *key, string value, bool overwrite)
       string combine = string (key) + "=" + value;
       char *s = strdup (combine.c_str ());
 
-      if (be_verbose_global)
-        progress_indication (_f ("Setting %s to %s", key, value.c_str ())
-                             + "\n");
+      debug_output (_f ("Setting %s to %s", key, value.c_str ())
+                    + "\n");
 
       int retval = putenv (s);
       /*
@@ -69,7 +68,8 @@ set_env_file (char const *key, string value, bool overwrite = false)
 {
   if (is_file (value))
     return sane_putenv (key, value, overwrite);
-  else if (be_verbose_global)
+  else if (is_loglevel (LOG_DEBUG))
+    // this warning should only be printed in debug mode!
     warning (_f ("no such file: %s for %s", value, key));
   return -1;
 }
@@ -79,7 +79,8 @@ set_env_dir (char const *key, string value)
 {
   if (is_dir (value))
     return sane_putenv (key, value, false);
-  else if (be_verbose_global)
+  else if (is_loglevel (LOG_DEBUG))
+    // this warning should only be printed in debug mode!
     warning (_f ("no such directory: %s for %s", value, key));
   return -1;
 }
@@ -89,15 +90,15 @@ prepend_env_path (char const *key, string value)
 {
   if (is_dir (value))
     {
-      if (be_verbose_global)
-        progress_indication (_f ("%s=%s (prepend)\n", key, value.c_str ()));
+      debug_output (_f ("%s=%s (prepend)\n", key, value.c_str ()), false);
 
       if (char const *cur = getenv (key))
         value += to_string (PATHSEP) + cur;
 
       return sane_putenv (key, value.c_str (), true);
     }
-  else if (be_verbose_global)
+  else if (is_loglevel (LOG_DEBUG))
+    // this warning should only be printed in debug mode
     warning (_f ("no such directory: %s for %s", value, key));
   return -1;
 }
@@ -130,10 +131,9 @@ prefix_relocation (string prefix)
 
   prepend_env_path ("PATH", bindir);
 
-  if (be_verbose_global)
-    warning (_f ("Relocation: compile datadir=%s, new datadir=%s",
-                 old_lilypond_datadir.c_str (),
-                 lilypond_datadir.c_str ()));
+  debug_output (_f ("Relocation: compile datadir=%s, new datadir=%s",
+                    old_lilypond_datadir.c_str (),
+                    lilypond_datadir.c_str ()));
 }
 
 /*
@@ -143,8 +143,7 @@ prefix_relocation (string prefix)
 static void
 framework_relocation (string prefix)
 {
-  if (be_verbose_global)
-    warning (_f ("Relocation: framework_prefix=%s", prefix));
+  debug_output (_f ("Relocation: framework_prefix=%s", prefix));
 
   sane_putenv ("INSTALLER_PREFIX", prefix, true);
 
@@ -184,15 +183,13 @@ setup_paths (char const *argv0_ptr)
           if (argv0_filename.is_absolute ())
             {
               argv0_abs = argv0_filename.to_string ();
-              if (be_verbose_global)
-                warning (_f ("Relocation: is absolute: argv0=%s", argv0_ptr));
+              debug_output (_f ("Relocation: is absolute: argv0=%s\n", argv0_ptr));
             }
           else if (argv0_filename.dir_.length ())
             {
               argv0_abs = get_working_directory ()
                           + "/" + string (argv0_filename.to_string ());
-              if (be_verbose_global)
-                warning (_f ("Relocation: from cwd: argv0=%s", argv0_ptr));
+              debug_output (_f ("Relocation: from cwd: argv0=%s\n", argv0_ptr));
             }
           else
             {
@@ -208,9 +205,8 @@ setup_paths (char const *argv0_ptr)
               argv0_abs = path.find (argv0_filename.to_string (), ext);
 #endif /* __MINGW32__ */
 
-              if (be_verbose_global)
-                warning (_f ("Relocation: from PATH=%s\nargv0=%s",
-                             path.to_string ().c_str (), argv0_ptr));
+              debug_output (_f ("Relocation: from PATH=%s\nargv0=%s",
+                                path.to_string ().c_str (), argv0_ptr), true);
 
               if (argv0_abs.empty ())
                 programming_error ("cannot find absolute argv0");
@@ -361,10 +357,7 @@ read_line (FILE *f)
 void
 read_relocation_file (string filename)
 {
-  if (be_verbose_global)
-    progress_indication (_f ("Relocation file: %s", filename.c_str ())
-                         + "\n");
-
+  debug_output (_f ("Relocation file: %s", filename.c_str ()) + "\n");
   char const *cname = filename.c_str ();
   FILE *f = fopen (cname, "r");
   if (!f)
index 97deba3f8fc93b41cce9767f0a17b851bcafe301..0115e5176fbbf56921767051b0389b85ab84eee2 100644 (file)
@@ -52,7 +52,8 @@ Rest::y_offset_callback (SCM smob)
     amount += ss / 2;
 
   if (!position_override)
-    amount += 2 * ss * get_grob_direction (me);;
+    amount += 2 * ss * get_grob_direction (me);
+
 
   return scm_from_double (amount);
 }
index d02a985cf23b88b72f0d0929ba9e6013ad4b4910..ca767cc7af5bbfd68468dc7adb41d6eb73b9b423 100644 (file)
@@ -55,14 +55,15 @@ class Rhythmic_column_engraver : public Engraver
 {
   vector<Grob *> rheads_;
   Grob *stem_;
+  Grob *flag_;
   Grob *note_column_;
-  Grob *dotcol_;
   Grob *arpeggio_;
 
   TRANSLATOR_DECLARATIONS (Rhythmic_column_engraver);
 protected:
 
   DECLARE_ACKNOWLEDGER (stem);
+  DECLARE_ACKNOWLEDGER (flag);
   DECLARE_ACKNOWLEDGER (rhythmic_head);
   DECLARE_ACKNOWLEDGER (arpeggio);
   void process_acknowledged ();
@@ -73,6 +74,7 @@ Rhythmic_column_engraver::Rhythmic_column_engraver ()
 {
 
   stem_ = 0;
+  flag_ = 0;
   note_column_ = 0;
   arpeggio_ = 0;
 }
@@ -102,7 +104,12 @@ Rhythmic_column_engraver::process_acknowledged ()
         }
 
       if (arpeggio_)
-        note_column_->set_object ("arpeggio", arpeggio_->self_scm ());
+        {
+          Pointer_group_interface::add_grob (note_column_, ly_symbol2scm ("elements"), arpeggio_);
+          note_column_->set_object ("arpeggio", arpeggio_->self_scm ());
+        }
+      if (flag_)
+        Pointer_group_interface::add_grob (note_column_, ly_symbol2scm ("elements"), flag_);
     }
 }
 
@@ -112,6 +119,12 @@ Rhythmic_column_engraver::acknowledge_stem (Grob_info i)
   stem_ = i.grob ();
 }
 
+void
+Rhythmic_column_engraver::acknowledge_flag (Grob_info i)
+{
+  flag_ = i.grob ();
+}
+
 void
 Rhythmic_column_engraver::acknowledge_rhythmic_head (Grob_info i)
 {
@@ -130,9 +143,11 @@ Rhythmic_column_engraver::stop_translation_timestep ()
   note_column_ = 0;
   stem_ = 0;
   arpeggio_ = 0;
+  flag_ = 0;
 }
 
 ADD_ACKNOWLEDGER (Rhythmic_column_engraver, stem);
+ADD_ACKNOWLEDGER (Rhythmic_column_engraver, flag);
 ADD_ACKNOWLEDGER (Rhythmic_column_engraver, rhythmic_head);
 ADD_ACKNOWLEDGER (Rhythmic_column_engraver, arpeggio);
 
index fc22dd50f2fd2fe2c8b9132262c6dd67fc2c8597..ac14f7cf85a6d83ef133d4407787590c0e7d7936 100644 (file)
@@ -113,19 +113,7 @@ Separation_item::boxes (Grob *me, Grob *left)
   if (left)
     elts = Accidental_placement::get_relevant_accidentals (read_only_elts, left);
   else
-    {
-      elts = read_only_elts;
-
-      /* This is a special-case for NoteColumn: we want to include arpeggio in its
-         skyline (so spacing takes it into account) but we don't want to include it
-         in the NoteColumn's extent because some spanners (eg. Hairpin) bound themselves
-         on the NoteColumn and we don't want them to include arpeggios in their bounds.
-      */
-      if (Grob *a = Note_column::arpeggio (me))
-        {
-          elts.push_back (a);
-        }
-    }
+    elts = read_only_elts;
 
   Grob *ycommon = common_refpoint_of_array (elts, me, Y_AXIS);
 
index 2f0dd5187607254d8aa527aa595e60912229352b..5ba7a59ddf3c6d0b85c4a82eb2cc108439c5fafe 100644 (file)
@@ -55,7 +55,7 @@ Sequential_iterator::get_music_list () const
 {
   Music *m = get_music ();
   SCM proc = m->get_property ("elements-callback");
-  if (scm_procedure_p (proc))
+  if (ly_is_procedure (proc))
     return scm_call_1 (proc, m->self_scm ());
   else
     return SCM_EOL;
index b5288e2526816ac5a002f37f4426aff6b3b0c5f2..8f62710b0947fa8e48ffcbc7e181cba4709c96de 100644 (file)
@@ -392,7 +392,7 @@ Skyline::Skyline (Direction sky)
   added to it.
 */
 
-Skyline::Skyline (Skyline const &src, Real horizon_padding, Axis a)
+Skyline::Skyline (Skyline const &src, Real horizon_padding, Axis /*a*/)
 {
   /*
      We extract boxes from the skyline, then build a new skyline from
@@ -406,6 +406,7 @@ Skyline::Skyline (Skyline const &src, Real horizon_padding, Axis a)
   list<Box> boxes;
 
   // establish a baseline box
+  // FIXME: This has hardcoded logic, assuming a == X_AXIS!
   boxes.push_back (Box (Interval (-infinity_f, infinity_f),
                         Interval (0, 0)));
   list<Building>::const_iterator end = src.buildings_.end ();
@@ -513,6 +514,7 @@ Skyline::distance (Skyline const &other, Real horizon_padding) const
 
   Skyline const *padded_this = this;
   Skyline const *padded_other = &other;
+  bool created_tmp_skylines = false;
 
   /*
     For systems, padding is not added at creation time.  Padding is
@@ -524,6 +526,7 @@ Skyline::distance (Skyline const &other, Real horizon_padding) const
     {
       padded_this = new Skyline (*padded_this, horizon_padding, X_AXIS);
       padded_other = new Skyline (*padded_other, horizon_padding, X_AXIS);
+      created_tmp_skylines = true;
     }
 
   list<Building>::const_iterator i = padded_this->buildings_.begin ();
@@ -543,6 +546,13 @@ Skyline::distance (Skyline const &other, Real horizon_padding) const
         j++;
       start = end;
     }
+
+  if (created_tmp_skylines)
+    {
+      delete padded_this;
+      delete padded_other;
+    }
+
   return dist;
 }
 
index 98f0bbf336fcf779559b49a1c9c9e018b32d2d9c..bd1a90a07b2494507e77505fabcc10f8dceb1898 100644 (file)
@@ -51,6 +51,7 @@ class Slur_engraver : public Engraver
   vector<Stream_event *> stop_events_;
   vector<Grob *> slurs_;
   vector<Grob *> end_slurs_;
+  vector<Grob_info> objects_to_acknowledge_;
 
   void set_melisma (bool);
 
@@ -110,7 +111,7 @@ Slur_engraver::acknowledge_note_column (Grob_info info)
 void
 Slur_engraver::acknowledge_extra_object (Grob_info info)
 {
-  Slur::auxiliary_acknowledge_extra_object (info, slurs_, end_slurs_);
+  objects_to_acknowledge_.push_back (info);
 }
 
 void
@@ -242,6 +243,11 @@ Slur_engraver::stop_translation_timestep ()
         s->set_bound (RIGHT, unsmob_grob (get_property ("currentMusicalColumn")));
       announce_end_grob (s, SCM_EOL);
     }
+
+  for (vsize i = 0; i < objects_to_acknowledge_.size (); i++)
+    Slur::auxiliary_acknowledge_extra_object (objects_to_acknowledge_[i], slurs_, end_slurs_);
+
+  objects_to_acknowledge_.clear ();
   end_slurs_.clear ();
   start_events_.clear ();
   stop_events_.clear ();
index 32149e8412c8be7f71c43f9168b8379fd4eb342e..964a4d091b210e0ab78f4bb8c980291679a317e1 100644 (file)
@@ -279,42 +279,47 @@ Slur::outside_slur_callback (SCM grob, SCM offset_scm)
                                          0.0);
   yext.widen (slur_padding);
 
-  const Real EPS = 1e-3;
-  Interval bezext (curve.control_[0][X_AXIS], curve.control_[3][X_AXIS]);
-  bool consider[] = {false, false, false};
-  Real ys[] = {0, 0, 0};
+  Interval exts[] = {xext, yext};
   bool do_shift = false;
-
-  for (int d = LEFT, k = 0; d <= RIGHT; d++, k++)
+  Real EPS = 1.0e-5;
+  if (avoid == ly_symbol2scm ("outside"))
     {
-      Real x = xext.linear_combination ((Direction) d);
-      consider[k] = bezext.contains (x);
-
-      if (consider[k])
+      Direction d = LEFT;
+      do
         {
-          ys[k]
-            = (fabs (bezext[LEFT] - x) < EPS)
-              ? curve.control_[0][Y_AXIS]
-              : ((fabs (bezext[RIGHT] - x) < EPS)
-                 ? curve.control_[3][Y_AXIS]
-                 : curve.get_other_coordinate (X_AXIS, x));
-
-          /* Request shift if slur is contained script's Y, or if
-             script is inside slur and avoid == outside.  */
-          if (yext.contains (ys[k])
-              || (dir * ys[k] > dir * yext[-dir] && avoid == ly_symbol2scm ("outside")))
-            do_shift = true;
+          Real x = minmax (-d, xext[d], curve.control_[d == LEFT ? 0 : 3][X_AXIS] + -d * EPS);
+          Real y = curve.get_other_coordinate (X_AXIS, x);
+          do_shift = y == minmax (dir, yext[-dir], y);
+          if (do_shift)
+            break;
         }
+      while (flip (&d) != LEFT);
     }
-
-  Real avoidance_offset = 0.0;
-  if (do_shift)
+  else
     {
-      for (int d = LEFT, k = 0; d <= RIGHT; d++, k++)
-        if (consider[k])
-          avoidance_offset = dir * (max (dir * avoidance_offset,
-                                         dir * (ys[k] - yext[-dir] + dir * slur_padding)));
+      for (int a = X_AXIS; a < NO_AXES; a++)
+        {
+          Direction d = LEFT;
+          do
+            {
+              vector<Real> coords = curve.get_other_coordinates (Axis (a), exts[a][d]);
+              for (vsize i = 0; i < coords.size (); i++)
+                {
+                  do_shift = exts[(a + 1) % NO_AXES].contains (coords[i]);
+                  if (do_shift)
+                    break;
+                }
+              if (do_shift)
+                break;
+            }
+          while (flip (&d) != LEFT);
+          if (do_shift)
+            break;
+        }
     }
+
+  Real avoidance_offset = do_shift ? curve.minmax (X_AXIS, max (xext[LEFT], curve.control_[0][X_AXIS] + EPS), min (xext[RIGHT], curve.control_[3][X_AXIS] - EPS), dir) - yext[-dir] : 0.0;
+
   return scm_from_double (offset + avoidance_offset);
 }
 
index b42fb7a5b37a508f69ce8d31925ae9478e7972c4..041c046d2bfc2fa4761df56005f2e76692f962f7 100644 (file)
@@ -261,7 +261,11 @@ Source_file::get_counts (char const *pos_str0,
                          int *column,
                          int *byte_offset) const
 {
+  // Initialize arguments to defaults, needed if pos_str0 is not in source
   *line_number = 0;
+  *line_char = 0;
+  *column = 0;
+  *byte_offset = 0;
 
   if (!contains (pos_str0))
     return;
@@ -276,10 +280,6 @@ Source_file::get_counts (char const *pos_str0,
   string line_begin (line_start, left);
   char const *line_chars = line_begin.c_str ();
 
-  *line_char = 0;
-  *column = 0;
-  *byte_offset = 0;
-
   while (left > 0)
     {
       size_t thislen = utf8_char_len (*line_chars);
index 79551ecac37d5d06aaed4ea40175c413179a1ae2..99d9e596af48f0a6a8136c685dd0eded457292b8 100644 (file)
@@ -163,7 +163,7 @@ Spacing_spanner::set_distances_for_loose_col (Grob *me, Grob *c,
             }
           else if (Staff_spacing::has_interface (sp))
             {
-              Spring spring = Staff_spacing::get_spacing (sp, rc);
+              Spring spring = Staff_spacing::get_spacing (sp, rc, 0.0);
 
               dists[d] = max (dists[d], spring.min_distance ());
             }
index c9049f3398e9498cc4e28495637c26def8dfa34f..b2d25f0713df75d4cff1a112c7776c75d601aba7 100644 (file)
@@ -219,7 +219,6 @@ Spacing_engraver::stop_translation_timestep ()
       Stream_event *ev = playing_durations_[i].info_.event_cause ();
       if (ev)
         {
-          Moment now = now_mom ();
           Moment m = get_event_length (ev);
           shortest_playing = min (shortest_playing, m);
         }
index 75dc166925eb5a2e6ab1d9057688eb277548c4d8..b09384f7df1f03d11744e097909cb4f471a48805 100644 (file)
@@ -495,6 +495,12 @@ Spacing_spanner::breakable_column_spacing (Grob *me, Item *l, Item *r,
   vector<Spring> springs;
   Spring spring;
 
+  Real full_measure_space = 0.0;
+  if (Paper_column::is_musical (r)
+      && l->break_status_dir () == CENTER
+      && fills_measure (me, l, r))
+    full_measure_space = robust_scm2double (l->get_property ("full-measure-extra-space"), 1.0);
+
   Moment dt = Paper_column::when_mom (r) - Paper_column::when_mom (l);
 
   if (dt == Moment (0, 0))
@@ -514,7 +520,8 @@ Spacing_spanner::breakable_column_spacing (Grob *me, Item *l, Item *r,
           */
           assert (spacing_grob->get_column () == l);
 
-          springs.push_back (Staff_spacing::get_spacing (spacing_grob, r));
+          springs.push_back (Staff_spacing::get_spacing (spacing_grob, r,
+                                                         full_measure_space));
         }
     }
 
@@ -533,15 +540,6 @@ Spacing_spanner::breakable_column_spacing (Grob *me, Item *l, Item *r,
       spring *= 0.8;
     }
 
-  if (Paper_column::is_musical (r)
-      && l->break_status_dir () == CENTER
-      && fills_measure (me, l, r))
-    {
-      Real full_measure_extra_space = robust_scm2double (l->get_property ("full-measure-extra-space"), 1.0);
-      spring.set_distance (spring.distance () + full_measure_extra_space);
-      spring.set_default_compress_strength ();
-    }
-
   if (options->stretch_uniformly_ && l->break_status_dir () != RIGHT)
     {
       spring.set_min_distance (0.0);
index 65c1c261cdc80a34f7e1e4153806113da9c5b344..f1a206b69a1debb182adc406e61f5679285f0d19 100644 (file)
@@ -23,7 +23,7 @@
 
 LY_DEFINE (ly_spanner_bound, "ly:spanner-bound",
            2, 0, 0, (SCM spanner, SCM dir),
-           "Get one of the bounds of @var{spanner}.  @var{dir} is @code{-1}"
+           "Get one of the bounds of @var{spanner}.  @var{dir} is @w{@code{-1}}"
            " for left, and @code{1} for right.")
 {
   LY_ASSERT_TYPE (unsmob_spanner, spanner, 1);
index 2a216bdc6e0875651c75491238df1041364732a0..6a509d391e2961d1f452588f1bc1c35eef1dee69 100644 (file)
@@ -56,17 +56,7 @@ Staff_spacing::optical_correction (Grob *me, Grob *g, Interval bar_height)
       Direction d = get_grob_direction (stem);
       if (Stem::is_normal_stem (stem) && d == DOWN)
         {
-
-          /*
-            can't look at stem-end-position, since that triggers
-            beam slope computations.
-          */
-          Real stem_start = Stem::head_positions (stem) [d];
-          Real stem_end = stem_start
-                          + d * robust_scm2double (stem->get_property ("length"), 7);
-
-          Interval stem_posns (min (stem_start, stem_end),
-                               max (stem_end, stem_start));
+          Interval stem_posns = stem->pure_height (stem, 0, INT_MAX);
 
           stem_posns.intersect (bar_height);
 
@@ -124,7 +114,7 @@ Staff_spacing::next_notes_correction (Grob *me,
    We arrange things so that the fixed distance will be attained when the
    line is compressed with a force of 1.0 */
 Spring
-Staff_spacing::get_spacing (Grob *me, Grob *right_col)
+Staff_spacing::get_spacing (Grob *me, Grob *right_col, Real situational_space)
 {
   Item *me_item = dynamic_cast<Item *> (me);
   Grob *left_col = me_item->get_column ();
@@ -151,7 +141,7 @@ Staff_spacing::get_spacing (Grob *me, Grob *right_col)
     }
 
   SCM alist = last_grob->get_property ("space-alist");
-  if (!scm_list_p (alist))
+  if (!ly_is_list (alist))
     return Spring ();
 
   SCM space_def = scm_sloppy_assq (ly_symbol2scm ("first-note"), alist);
@@ -195,18 +185,26 @@ Staff_spacing::get_spacing (Grob *me, Grob *right_col)
       ideal = fixed;
     }
 
+  Real stretchability = ideal - fixed;
+
+  /* 'situational_space' passed by the caller
+      could include full-measure-extra-space */
+  ideal += situational_space;
+
   Real optical_correction = next_notes_correction (me, last_grob);
+  fixed += optical_correction;
+  ideal += optical_correction;
+
   Real min_dist = Paper_column::minimum_distance (left_col, right_col);
 
   /* ensure that the "fixed" distance will leave a gap of at least 0.3 ss. */
   Real min_dist_correction = max (0.0, 0.3 + min_dist - fixed);
-  Real correction = max (optical_correction, min_dist_correction);
-
-  fixed += correction;
-  ideal += correction;
+  fixed += min_dist_correction;
+  ideal = max (ideal, fixed);
 
   Spring ret (ideal, min_dist);
-  ret.set_inverse_stretch_strength (max (0.0, ideal - fixed));
+  ret.set_inverse_stretch_strength (max (0.0, stretchability));
+  ret.set_inverse_compress_strength (max (0.0, ideal - fixed));
   return ret;
 }
 
index 6890b5b041c410f56186d1c8733eb4613e313179..04184a90203891e73fd53086ce50c34b8938b981 100644 (file)
@@ -38,6 +38,7 @@ class Stem_engraver : public Engraver
 {
   Grob *stem_;
   Grob *tremolo_;
+  vector <Grob *> maybe_flags_;
   Stream_event *rhythmic_ev_;
   Stream_event *tremolo_ev_;
 
@@ -49,6 +50,8 @@ protected:
   DECLARE_TRANSLATOR_LISTENER (tremolo);
   DECLARE_ACKNOWLEDGER (rhythmic_head);
   void stop_translation_timestep ();
+  void finalize ();
+  void kill_unused_flags ();
 };
 
 Stem_engraver::Stem_engraver ()
@@ -65,7 +68,6 @@ Stem_engraver::make_stem (Grob_info gi)
   /* Announce the cause of the head as cause of the stem.  The
      stem needs a rhythmic structure to fit it into a beam.  */
   stem_ = make_item ("Stem", gi.grob ()->self_scm ());
-
   if (tremolo_ev_)
     {
       /* Stem tremolo is never applied to a note by default,
@@ -158,11 +160,37 @@ Stem_engraver::acknowledge_rhythmic_head (Grob_info gi)
     }
 
   Stem::add_head (stem_, gi.grob ());
+
+  if (Stem::is_normal_stem (stem_)
+      && Stem::duration_log (stem_) > 2)
+    {
+      Item *flag = make_item ("Flag", stem_->self_scm ());
+      flag->set_parent (stem_, X_AXIS);
+      stem_->set_object ("flag", flag->self_scm ());
+      maybe_flags_.push_back (flag);
+    }
+}
+
+void
+Stem_engraver::kill_unused_flags ()
+{
+  for (vsize i = 0; i < maybe_flags_.size (); i++)
+    if (unsmob_grob (maybe_flags_[i]->get_parent (X_AXIS)->get_object ("beam")))
+      maybe_flags_[i]->suicide ();
+}
+
+void
+Stem_engraver::finalize ()
+{
+  kill_unused_flags ();
 }
 
 void
 Stem_engraver::stop_translation_timestep ()
 {
+  if (scm_is_string (get_property ("whichBar")))
+    kill_unused_flags ();
+
   tremolo_ = 0;
   if (stem_)
     {
@@ -205,7 +233,8 @@ ADD_TRANSLATOR (Stem_engraver,
                 /* read */
                 "tremoloFlags "
                 "stemLeftBeamCount "
-                "stemRightBeamCount ",
+                "stemRightBeamCount "
+                "whichBar ",
 
                 /* write */
                 ""
index 2036d9a89072e2ef8019761674ebabd45b8d8c23..a45ae1182abee4b71c609842cc2c362a1e3f35ee 100644 (file)
@@ -147,14 +147,35 @@ MAKE_SCHEME_CALLBACK (Stem_tremolo, pure_height, 3);
 SCM
 Stem_tremolo::pure_height (SCM smob, SCM, SCM)
 {
-  Grob *me = unsmob_grob (smob);
+  Item *me = unsmob_item (smob);
 
   /*
     Cannot use the real slope, since it looks at the Beam.
    */
   Stencil s1 (untranslated_stencil (me, 0.35));
+  Item *stem = unsmob_item (me->get_object ("stem"));
+  if (!stem)
+    return ly_interval2scm (s1.extent (Y_AXIS));
+
+  Direction stemdir = get_grob_direction (stem);
+  if (stemdir == 0)
+    stemdir = UP;
+
+  Spanner *beam = Stem::get_beam (stem);
 
-  return ly_interval2scm (s1.extent (Y_AXIS));
+  if (!beam)
+    return ly_interval2scm (s1.extent (Y_AXIS));
+
+  Interval ph = stem->pure_height (stem, 0, INT_MAX);
+  Stem_info si = Stem::get_stem_info (stem);
+  ph[-stemdir] = si.shortest_y_;
+  int beam_count = Stem::beam_multiplicity (stem).length () + 1;
+  Real beam_translation = get_beam_translation (me);
+
+  ph = ph - stemdir * max (beam_count, 1) * beam_translation;
+  ph = ph - ph.center ();
+
+  return ly_interval2scm (ph);
 }
 
 MAKE_SCHEME_CALLBACK (Stem_tremolo, width, 1);
@@ -199,14 +220,30 @@ Stem_tremolo::untranslated_stencil (Grob *me, Real slope)
   return raw_stencil (me, slope, stencil_dir);
 }
 
-Stencil
-Stem_tremolo::translated_stencil (Grob *me, Real slope)
+MAKE_SCHEME_CALLBACK (Stem_tremolo, calc_y_offset, 1);
+SCM
+Stem_tremolo::calc_y_offset (SCM smob)
+{
+  Grob *me = unsmob_grob (smob);
+  return scm_from_double (y_offset (me, false));
+}
+
+MAKE_SCHEME_CALLBACK (Stem_tremolo, pure_calc_y_offset, 3);
+SCM
+Stem_tremolo::pure_calc_y_offset (SCM smob,
+                                  SCM, /* start */
+                                  SCM /* end */)
 {
-  Stencil mol = untranslated_stencil (me, slope);
+  Grob *me = unsmob_grob (smob);
+  return scm_from_double (y_offset (me, true));
+}
 
-  Grob *stem = unsmob_grob (me->get_object ("stem"));
+Real
+Stem_tremolo::y_offset (Grob *me, bool pure)
+{
+  Item *stem = unsmob_item (me->get_object ("stem"));
   if (!stem)
-    return Stencil ();
+    return 0.0;
 
   Direction stemdir = get_grob_direction (stem);
   if (stemdir == 0)
@@ -216,10 +253,18 @@ Stem_tremolo::translated_stencil (Grob *me, Real slope)
   Real beam_translation = get_beam_translation (me);
 
   int beam_count = beam ? (Stem::beam_multiplicity (stem).length () + 1) : 0;
-  Real ss = Staff_symbol_referencer::staff_space (me);
+
+  if (pure && beam)
+    {
+      Interval ph = stem->pure_height (stem, 0, INT_MAX);
+      Stem_info si = Stem::get_stem_info (stem);
+      ph[-stemdir] = si.shortest_y_;
+
+      return (ph - stemdir * max (beam_count, 1) * beam_translation)[stemdir] - stemdir * 0.5 * me->pure_height (me, 0, INT_MAX).length ();
+    }
 
   Real end_y
-    = Stem::stem_end_position (stem) * ss / 2
+    = stem->extent (stem, Y_AXIS)[stemdir]
       - stemdir * max (beam_count, 1) * beam_translation;
 
   if (!beam && Stem::duration_log (stem) >= 3)
@@ -234,13 +279,13 @@ Stem_tremolo::translated_stencil (Grob *me, Real slope)
     {
       /* we shouldn't position relative to the end of the stem since the stem
          is invisible */
+      Real ss = Staff_symbol_referencer::staff_space (me);
       vector<int> nhp = Stem::note_head_positions (stem);
       Real note_head = (stemdir == UP ? nhp.back () : nhp[0]) * ss / 2;
       end_y = note_head + stemdir * 1.5;
     }
-  mol.translate_axis (end_y, Y_AXIS);
 
-  return mol;
+  return end_y;
 }
 
 MAKE_SCHEME_CALLBACK (Stem_tremolo, print, 1);
@@ -249,7 +294,7 @@ Stem_tremolo::print (SCM grob)
 {
   Grob *me = unsmob_grob (grob);
 
-  Stencil s = translated_stencil (me, robust_scm2double (me->get_property ("slope"), 0.25));
+  Stencil s = untranslated_stencil (me, robust_scm2double (me->get_property ("slope"), 0.25));
   return s.smobbed_copy ();
 }
 
index e83ffd9893226a95672f70ebf284d7cd8d926733..8a755afaa5aec63946003a19017be335f0c39b80 100644 (file)
   along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+/*
+  Note that several internal functions have a calc_beam bool argument.
+  This argument means: "If set, acknowledge the fact that there is a beam
+  and deal with it.  If not, give me the measurements as if there is no beam."
+  Most pure functions are called WITHOUT calc_beam, whereas non-pure functions
+  are called WITH calc_beam.
+
+  The only exception to this is ::pure_height, which calls internal_pure_height
+  with "true" for calc_beam in order to trigger the calculations of other
+  pure heights in case there is a beam.  It passes false, however, to
+  internal_height and internal_pure_height for all subsequent iterations.
+*/
+
 #include "stem.hh"
 #include "spanner.hh"
 
@@ -105,15 +118,49 @@ Stem::chord_start_y (Grob *me)
 }
 
 void
-Stem::set_stemend (Grob *me, Real se)
+Stem::set_stem_positions (Grob *me, Real se)
 {
   // todo: margins
   Direction d = get_grob_direction (me);
 
+  Grob *beam = unsmob_grob (me->get_object ("beam"));
   if (d && d * head_positions (me)[get_grob_direction (me)] >= se * d)
     me->warning (_ ("weird stem size, check for narrow beams"));
 
-  me->set_property ("stem-end-position", scm_from_double (se));
+  Interval height = me->pure_height (me, 0, INT_MAX);
+  Real staff_space = Staff_symbol_referencer::staff_space (me);
+  Real half_space =  staff_space * 0.5;
+
+  height[d] = se * half_space + beam_end_corrective (me);
+
+  Real stemlet_length = robust_scm2double (me->get_property ("stemlet-length"),
+                                           0.0);
+  bool stemlet = stemlet_length > 0.0;
+
+  Grob *lh = get_reference_head (me);
+
+  if (!lh)
+    {
+      if (stemlet && beam)
+        {
+          Real beam_translation = Beam::get_beam_translation (beam);
+          Real beam_thickness = Beam::get_beam_thickness (beam);
+          int beam_count = beam_multiplicity (me).length () + 1;
+
+          height[-d] = (height[d] - d
+                        * (0.5 * beam_thickness
+                        + beam_translation * max (0, (beam_count - 1))
+                        + stemlet_length));
+        }
+      else if (!stemlet && beam)
+        height[-d] = height[d];
+      else if (stemlet && !beam)
+        me->programming_error ("Can't have a stemlet without a beam.");
+    }
+
+  me->set_property ("stem-begin-position", scm_from_double (height[-d] * 2 / staff_space));
+  me->set_property ("length", scm_from_double (height.length () * 2 / staff_space));
+  (void) me->extent (me, Y_AXIS);
 }
 
 /* Note head that determines hshift for upstems
@@ -241,47 +288,60 @@ Stem::pure_height (SCM smob,
                    SCM /* end */)
 {
   Grob *me = unsmob_grob (smob);
-  Interval iv;
+  return ly_interval2scm (internal_pure_height (me, true));
+}
 
+Interval
+Stem::internal_pure_height (Grob *me, bool calc_beam)
+{
   if (!is_normal_stem (me))
-    return ly_interval2scm (iv);
+    return Interval (0.0, 0.0);
 
-  Real ss = Staff_symbol_referencer::staff_space (me);
-  Real rad = Staff_symbol_referencer::staff_radius (me);
+  Grob *beam = unsmob_grob (me->get_object ("beam"));
+
+  Interval iv = internal_height (me, false);
 
-  if (!to_boolean (me->get_property ("cross-staff")))
+  if (!beam)
+    return iv;
+  if (!to_boolean (me->get_property ("cross-staff")) && calc_beam)
     {
-      Real len_in_halfspaces;
-      SCM user_set_len_scm = me->get_property_data ("length");
-      if (scm_is_number (user_set_len_scm))
-        len_in_halfspaces = scm_to_double (user_set_len_scm);
-      else
-        len_in_halfspaces = scm_to_double (calc_length (smob));
-      Real len = len_in_halfspaces * ss / 2;
+      Interval overshoot;
       Direction dir = get_grob_direction (me);
+      Direction d = DOWN;
+      do
+        overshoot[d] = d == dir ? dir * infinity_f : iv[d];
+      while (flip (&d) != DOWN);
 
-      Interval hp = head_positions (me);
-      if (dir == UP)
-        iv = Interval (0, len);
-      else
-        iv = Interval (-len, 0);
+      vector<Interval> heights;
+      vector<Grob *> my_stems;
+      extract_grob_set (beam, "normal-stems", normal_stems);
+      for (vsize i = 0; i < normal_stems.size (); i++)
+        if (normal_stems[i] != me && get_grob_direction (normal_stems[i]) == dir)
+          {
+            heights.push_back (Stem::internal_pure_height (normal_stems[i], false));
+            my_stems.push_back (normal_stems[i]);
+            iv.unite (heights.back ());
+          }
+      for (vsize i = 0; i < my_stems.size (); i++)
+        cache_pure_height (my_stems[i], iv, heights[i]);
+      iv.intersect (overshoot);
+    }
 
-      if (!hp.is_empty ())
-        {
-          iv.translate (hp[dir] * ss / 2);
-          iv.add_point (hp[-dir] * ss / 2);
-        }
+  return iv;
+}
 
-      /* extend the stem (away from the head) to cover the staff */
-      if (dir == UP)
-        iv[UP] = max (iv[UP], rad * ss);
-      else
-        iv[DOWN] = min (iv[DOWN], -rad * ss);
-    }
-  else
-    iv = Interval (-rad * ss, rad * ss);
+void
+Stem::cache_pure_height (Grob *me, Interval iv, Interval my_iv)
+{
+  Interval overshoot;
+  Direction dir = get_grob_direction (me);
+  Direction d = DOWN;
+  do
+    overshoot[d] = d == dir ? dir * infinity_f : my_iv[d];
+  while (flip (&d) != DOWN);
 
-  return ly_interval2scm (iv);
+  iv.intersect (overshoot);
+  dynamic_cast<Item *> (me)->cache_pure_height (iv);
 }
 
 MAKE_SCHEME_CALLBACK (Stem, calc_stem_end_position, 1)
@@ -289,51 +349,48 @@ SCM
 Stem::calc_stem_end_position (SCM smob)
 {
   Grob *me = unsmob_grob (smob);
+  return scm_from_double (internal_calc_stem_end_position (me, true));
+}
+
+MAKE_SCHEME_CALLBACK (Stem, pure_calc_stem_end_position, 3)
+SCM
+Stem::pure_calc_stem_end_position (SCM smob,
+                                   SCM, /* start */
+                                   SCM /* end */)
+{
+  Grob *me = unsmob_grob (smob);
+  return scm_from_double (internal_calc_stem_end_position (me, false));
+}
 
+Real
+Stem::internal_calc_stem_end_position (Grob *me, bool calc_beam)
+{
   if (!head_count (me))
-    return scm_from_double (0.0);
+    return 0.0;
+
+  Grob *beam = get_beam (me);
+  Real ss = Staff_symbol_referencer::staff_space (me);
+  Direction dir = get_grob_direction (me);
 
-  if (Grob *beam = get_beam (me))
+  if (beam && calc_beam)
     {
       (void) beam->get_property ("quantized-positions");
-      return me->get_property ("stem-end-position");
+      return robust_scm2double (me->get_property ("length"), 0.0)
+             + dir * robust_scm2double (me->get_property ("stem-begin-position"), 0.0);
     }
 
   vector<Real> a;
 
   /* WARNING: IN HALF SPACES */
-  Real length = robust_scm2double (me->get_property ("length"), 7);
-
-  Direction dir = get_grob_direction (me);
-  Interval hp = head_positions (me);
-  Real stem_end = dir ? hp[dir] + dir * length : 0;
-
-  /* TODO: change name  to extend-stems to staff/center/'()  */
-  bool no_extend = to_boolean (me->get_property ("no-stem-extend"));
-  if (!no_extend && dir * stem_end < 0)
-    stem_end = 0.0;
-
-  return scm_from_double (stem_end);
-}
-
-/* Length is in half-spaces (or: positions) here. */
-MAKE_SCHEME_CALLBACK (Stem, calc_length, 1)
-SCM
-Stem::calc_length (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-
   SCM details = me->get_property ("details");
   int durlog = duration_log (me);
 
-  Real ss = Staff_symbol_referencer::staff_space (me);
   Real staff_rad = Staff_symbol_referencer::staff_radius (me);
   Real length = 7;
   SCM s = ly_assoc_get (ly_symbol2scm ("lengths"), details, SCM_EOL);
   if (scm_is_pair (s))
     length = 2 * scm_to_double (robust_list_ref (durlog - 2, s));
 
-  Direction dir = get_grob_direction (me);
 
   /* Stems in unnatural (forced) direction should be shortened,
      according to [Roush & Gourlay] */
@@ -370,7 +427,7 @@ Stem::calc_length (SCM smob)
 
   /* Tremolo stuff.  */
   Grob *t_flag = unsmob_grob (me->get_object ("tremolo-flag"));
-  if (t_flag && !unsmob_grob (me->get_object ("beam")))
+  if (t_flag && (!unsmob_grob (me->get_object ("beam")) || !calc_beam))
     {
       /* Crude hack: add extra space if tremolo flag is there.
 
@@ -398,8 +455,16 @@ Stem::calc_length (SCM smob)
       length = max (length, minlen + 1.0);
     }
 
-  return scm_from_double (length);
+  Real stem_end = dir ? hp[dir] + dir * length : 0;
+
+  /* TODO: change name  to extend-stems to staff/center/'()  */
+  bool no_extend = to_boolean (me->get_property ("no-stem-extend"));
+  if (!no_extend && dir * stem_end < 0)
+    stem_end = 0.0;
+
+  return stem_end;
 }
+
 /* The log of the duration (Number of hooks on the flag minus two)  */
 int
 Stem::duration_log (Grob *me)
@@ -557,29 +622,29 @@ Stem::calc_default_direction (SCM smob)
   return scm_from_int (dir);
 }
 
+// note - height property necessary to trigger quantized beam positions
+// otherwise, we could just use Grob::stencil_height_proc
 MAKE_SCHEME_CALLBACK (Stem, height, 1);
 SCM
 Stem::height (SCM smob)
 {
   Grob *me = unsmob_grob (smob);
-  if (!is_normal_stem (me))
-    return ly_interval2scm (Interval ());
-
-  Direction dir = get_grob_direction (me);
+  return ly_interval2scm (internal_height (me, true));
+}
 
-  Grob *beam = get_beam (me);
-  if (beam)
-    {
-      /* trigger set-stem-lengths. */
-      beam->get_property ("quantized-positions");
-    }
+Grob*
+Stem::get_reference_head (Grob *me)
+{
+  return to_boolean (me->get_property ("avoid-note-head"))
+         ? last_head (me)
+         : first_head (me);
+}
 
-  /*
-    Can't get_stencil (), since that would cache stencils too early.
-    This causes problems with beams.
-   */
-  Stencil *stencil = unsmob_stencil (print (smob));
-  Interval iv = stencil ? stencil->extent (Y_AXIS) : Interval ();
+Real
+Stem::beam_end_corrective (Grob *me)
+{
+  Grob *beam = unsmob_grob (me->get_object ("beam"));
+  Direction dir = get_grob_direction (me);
   if (beam)
     {
       if (dir == CENTER)
@@ -587,116 +652,42 @@ Stem::height (SCM smob)
           programming_error ("no stem direction");
           dir = UP;
         }
-      iv[dir] += dir * Beam::get_beam_thickness (beam) * 0.5;
+      return dir * Beam::get_beam_thickness (beam) * 0.5;
     }
-
-  return ly_interval2scm (iv);
+  return 0.0;
 }
 
-Real
-Stem::stem_end_position (Grob *me)
+Interval
+Stem::internal_height (Grob *me, bool calc_beam)
 {
-  return robust_scm2double (me->get_property ("stem-end-position"), 0);
-}
+  Grob *beam = get_beam (me);
+  if (!is_valid_stem (me) && ! beam)
+    return Interval ();
 
-MAKE_SCHEME_CALLBACK (Stem, calc_flag, 1);
-SCM
-Stem::calc_flag (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
+  Direction dir = get_grob_direction (me);
 
-  int log = duration_log (me);
-  /*
-    TODO: maybe property stroke-style should take different values,
-    e.g. "" (i.e. no stroke), "single" and "double" (currently, it's
-    '() or "grace").  */
-  string flag_style;
-
-  SCM flag_style_scm = me->get_property ("flag-style");
-  if (scm_is_symbol (flag_style_scm))
-    flag_style = ly_symbol2string (flag_style_scm);
-
-  if (flag_style == "no-flag")
-    return Stencil ().smobbed_copy ();
-
-  bool adjust = true;
-
-  string staffline_offs;
-  if (flag_style == "mensural")
-    /* Mensural notation: For notes on staff lines, use different
-       flags than for notes between staff lines.  The idea is that
-       flags are always vertically aligned with the staff lines,
-       regardless if the note head is on a staff line or between two
-       staff lines.  In other words, the inner end of a flag always
-       touches a staff line.
-    */
-    {
-      if (adjust)
-        {
-          int p = (int) (rint (stem_end_position (me)));
-          staffline_offs
-            = Staff_symbol_referencer::on_line (me, p) ? "0" : "1";
-        }
-      else
-        staffline_offs = "2";
-    }
-  else
-    staffline_offs = "";
-
-  char dir = (get_grob_direction (me) == UP) ? 'u' : 'd';
-  string font_char = flag_style
-                     + to_string (dir) + staffline_offs + to_string (log);
-  Font_metric *fm = Font_interface::get_default_font (me);
-  Stencil flag = fm->find_by_name ("flags." + font_char);
-  if (flag.is_empty ())
-    me->warning (_f ("flag `%s' not found", font_char));
-
-  SCM stroke_style_scm = me->get_property ("stroke-style");
-  if (scm_is_string (stroke_style_scm))
+  if (beam && calc_beam)
     {
-      string stroke_style = ly_scm2string (stroke_style_scm);
-      if (!stroke_style.empty ())
-        {
-          string font_char = flag_style + to_string (dir) + stroke_style;
-          Stencil stroke = fm->find_by_name ("flags." + font_char);
-          if (stroke.is_empty ())
-            {
-              font_char = to_string (dir) + stroke_style;
-              stroke = fm->find_by_name ("flags." + font_char);
-            }
-          if (stroke.is_empty ())
-            me->warning (_f ("flag stroke `%s' not found", font_char));
-          else
-            flag.add_stencil (stroke);
-        }
+      /* trigger set-stem-lengths. */
+      (void) beam->get_property ("quantized-positions");
     }
 
-  return flag.smobbed_copy ();
-}
+  Real y1 = robust_scm2double ((calc_beam
+                                ? me->get_property ("stem-begin-position")
+                                : me->get_pure_property ("stem-begin-position", 0, INT_MAX)),
+                               0.0);
 
-Stencil
-Stem::flag (Grob *me)
-{
-  int log = duration_log (me);
-  if (log < 3
-      || unsmob_grob (me->get_object ("beam")))
-    return Stencil ();
+  Real y2 = dir * robust_scm2double ((calc_beam
+                                     ? me->get_property ("length")
+                                     : me->get_pure_property ("length", 0, INT_MAX)),
+                                      0.0)
+                + y1;
 
-  if (!is_normal_stem (me))
-    return Stencil ();
+  Real half_space = Staff_symbol_referencer::staff_space (me) * 0.5;
 
-  // This get_property call already evaluates the scheme function with
-  // the grob passed as argument! Thus, we only have to check if a valid
-  // stencil is returned.
-  SCM flag_style_scm = me->get_property ("flag");
-  if (Stencil *flag = unsmob_stencil (flag_style_scm))
-    {
-      return *flag;
-    }
-  else
-    {
-      return Stencil ();
-    }
+  Interval stem_y  = Interval (min (y1, y2), max (y2, y1)) * half_space;
+
+  return stem_y;
 }
 
 MAKE_SCHEME_CALLBACK (Stem, width, 1);
@@ -709,17 +700,12 @@ Stem::width (SCM e)
 
   if (is_invisible (me))
     r.set_empty ();
-  else if (unsmob_grob (me->get_object ("beam"))
-           || abs (duration_log (me)) <= 2)
+  else
     {
       r = Interval (-1, 1);
       r *= thickness (me) / 2;
     }
-  else
-    {
-      r = Interval (-1, 1) * thickness (me) * 0.5;
-      r.unite (flag (me).extent (X_AXIS));
-    }
+
   return ly_interval2scm (r);
 }
 
@@ -735,12 +721,35 @@ SCM
 Stem::calc_stem_begin_position (SCM smob)
 {
   Grob *me = unsmob_grob (smob);
+  return scm_from_double (internal_calc_stem_begin_position (me, true));
+}
+
+MAKE_SCHEME_CALLBACK (Stem, pure_calc_stem_begin_position, 3);
+SCM
+Stem::pure_calc_stem_begin_position (SCM smob,
+                                     SCM, /* start */
+                                     SCM /* end */)
+{
+  Grob *me = unsmob_grob (smob);
+  return scm_from_double (internal_calc_stem_begin_position (me, false));
+}
+
+Real
+Stem::internal_calc_stem_begin_position (Grob *me, bool calc_beam)
+{
+  Grob *beam = get_beam (me);
+  Real ss = Staff_symbol_referencer::staff_space (me);
+  if (beam && calc_beam)
+    {
+      (void) beam->get_property ("quantized-positions");
+      return robust_scm2double (me->get_property ("stem-begin-position"), 0.0);
+    }
+
   Direction d = get_grob_direction (me);
-  Real half_space = Staff_symbol_referencer::staff_space (me) * 0.5;
-  Grob *lh
-    = to_boolean (me->get_property ("avoid-note-head"))
-      ? last_head (me)
-      : first_head (me);
+  Grob *lh = get_reference_head (me);
+
+  if (!lh)
+    return 0.0;
 
   Real pos = Staff_symbol_referencer::get_position (lh);
 
@@ -750,64 +759,49 @@ Stem::calc_stem_begin_position (SCM smob)
       Real y_attach = Note_head::stem_attachment_coordinate (head, Y_AXIS);
 
       y_attach = head_height.linear_combination (y_attach);
-      pos += d * y_attach / half_space;
+      pos += d * y_attach * 2 / ss;
     }
 
-  return scm_from_double (pos);
+  return pos;
 }
 
-MAKE_SCHEME_CALLBACK (Stem, print, 1);
-SCM
-Stem::print (SCM smob)
+bool
+Stem::is_valid_stem (Grob *me)
 {
-  Grob *me = unsmob_grob (smob);
-  Grob *beam = get_beam (me);
-
-  Stencil mol;
-  Direction d = get_grob_direction (me);
-
-  Real stemlet_length = robust_scm2double (me->get_property ("stemlet-length"),
-                                           0.0);
-  bool stemlet = stemlet_length > 0.0;
-
   /* TODO: make the stem start a direction ?
      This is required to avoid stems passing in tablature chords.  */
-  Grob *lh
-    = to_boolean (me->get_property ("avoid-note-head"))
-      ? last_head (me)
-      : first_head (me);
+  Grob *lh = get_reference_head (me);
+  Grob *beam = unsmob_grob (me->get_object ("beam"));
 
-  if (!lh && !stemlet)
-    return SCM_EOL;
-
-  if (!lh && stemlet && !beam)
-    return SCM_EOL;
+  if (!lh && !beam)
+    return false;
 
   if (lh && robust_scm2int (lh->get_property ("duration-log"), 0) < 1)
-    return SCM_EOL;
+    return false;
 
   if (is_invisible (me))
+    return false;
+
+  return true;
+}
+
+MAKE_SCHEME_CALLBACK (Stem, print, 1);
+SCM
+Stem::print (SCM smob)
+{
+  Grob *me = unsmob_grob (smob);
+  if (!is_valid_stem (me))
     return SCM_EOL;
 
-  Real y2 = robust_scm2double (me->get_property ("stem-end-position"), 0.0);
-  Real y1 = y2;
+  Direction dir = get_grob_direction (me);
+  Real y1 = robust_scm2double (me->get_property ("stem-begin-position"), 0.0);
+  Real y2 = dir * robust_scm2double (me->get_property ("length"), 0.0) + y1;
+
   Real half_space = Staff_symbol_referencer::staff_space (me) * 0.5;
 
-  if (lh)
-    y2 = robust_scm2double (me->get_property ("stem-begin-position"), 0.0);
-  else if (stemlet)
-    {
-      Real beam_translation = Beam::get_beam_translation (beam);
-      Real beam_thickness = Beam::get_beam_thickness (beam);
-      int beam_count = beam_multiplicity (me).length () + 1;
-
-      y2 -= d
-            * (0.5 * beam_thickness
-               + beam_translation * max (0, (beam_count - 1))
-               + stemlet_length) / half_space;
-    }
+  Interval stem_y  = Interval (min (y1, y2), max (y2, y1)) * half_space;
 
-  Interval stem_y (min (y1, y2), max (y2, y1));
+  stem_y[dir] -= beam_end_corrective (me);
 
   // URG
   Real stem_width = thickness (me);
@@ -815,34 +809,15 @@ Stem::print (SCM smob)
     = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter"));
 
   Box b = Box (Interval (-stem_width / 2, stem_width / 2),
-               Interval (stem_y[DOWN] * half_space, stem_y[UP] * half_space));
+               stem_y);
 
+  Stencil mol;
   Stencil ss = Lookup::round_filled_box (b, blot);
   mol.add_stencil (ss);
 
-  mol.add_stencil (get_translated_flag (me));
-
   return mol.smobbed_copy ();
 }
 
-Stencil
-Stem::get_translated_flag (Grob *me)
-{
-  Stencil fl = flag (me);
-  if (!fl.is_empty ())
-    {
-      Direction d = get_grob_direction (me);
-      Real blot
-        = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter"));
-      Real stem_width = thickness (me);
-      Real half_space = Staff_symbol_referencer::staff_space (me) * 0.5;
-      Real y2 = robust_scm2double (me->get_property ("stem-end-position"), 0.0);
-      fl.translate_axis (y2 * half_space - d * blot / 2, Y_AXIS);
-      fl.translate_axis (stem_width / 2, X_AXIS);
-    }
-  return fl;
-}
-
 /*
   move the stem to right of the notehead if it is up.
 */
@@ -1070,6 +1045,12 @@ Stem::calc_cross_staff (SCM smob)
   return scm_from_bool (is_cross_staff (unsmob_grob (smob)));
 }
 
+Grob*
+Stem::flag (Grob *me)
+{
+  return unsmob_grob (me->get_object ("flag"));
+}
+
 /* FIXME:  Too many properties  */
 ADD_INTERFACE (Stem,
                "The stem represents the graphical stem.  In addition, it"
@@ -1108,7 +1089,6 @@ ADD_INTERFACE (Stem,
                "direction "
                "duration-log "
                "flag "
-               "flag-style "
                "french-beaming "
                "length "
                "length-fraction "
@@ -1119,10 +1099,8 @@ ADD_INTERFACE (Stem,
                "positioning-done "
                "rests "
                "stem-begin-position "
-               "stem-end-position "
                "stem-info "
                "stemlet-length "
-               "stroke-style "
                "thickness "
                "tremolo-flag "
               );
index 958bcc44c811472b4d3b34a93be2213e02488303..629c76c98b9be84457764b8eb260fc70a82afe96 100644 (file)
@@ -92,17 +92,14 @@ LY_DEFINE (ly_stencil_empty_p, "ly:stencil-empty?",
 }
 
 LY_DEFINE (ly_stencil_combine_at_edge, "ly:stencil-combine-at-edge",
-           4, 2, 0, (SCM first, SCM axis, SCM direction,
+           4, 1, 0, (SCM first, SCM axis, SCM direction,
                      SCM second,
-                     SCM padding,
-                     SCM minimum),
+                     SCM padding),
            "Construct a stencil by putting @var{second} next to @var{first}."
            "  @var{axis} can be 0 (x-axis) or@tie{}1 (y-axis)."
            "  @var{direction} can be -1 (left or down) or@tie{}1 (right or"
-           "  up).  The stencils are juxtaposed with @var{padding} as extra"
-           " space.  If this puts the reference points closer than"
-           " @var{minimum}, they are moved by the latter amount."
-           "  @var{first} and @var{second} may also be @code{'()} or"
+           " up).  The stencils are juxtaposed with @var{padding} as extra"
+           " space.  @var{first} and @var{second} may also be @code{'()} or"
            " @code{#f}.")
 {
   Stencil *s1 = unsmob_stencil (first);
@@ -122,12 +119,6 @@ LY_DEFINE (ly_stencil_combine_at_edge, "ly:stencil-combine-at-edge",
       LY_ASSERT_TYPE (scm_is_number, padding, 5);
       p = scm_to_double (padding);
     }
-  Real m = 0.0;
-  if (minimum != SCM_UNDEFINED)
-    {
-      LY_ASSERT_TYPE (scm_is_number, minimum, 6);
-      m = scm_to_double (minimum);
-    }
 
   if (s1)
     result = *s1;
@@ -210,7 +201,7 @@ LY_DEFINE (ly_make_stencil, "ly:make-stencil",
 LY_DEFINE (ly_stencil_aligned_to, "ly:stencil-aligned-to",
            3, 0, 0, (SCM stil, SCM axis, SCM dir),
            "Align @var{stil} using its own extents.  @var{dir} is a number."
-           "  @code{-1} and @code{1} are left and right, respectively."
+           "  @w{@code{-1}} and @code{1} are left and right, respectively."
            "  Other values are interpolated (so @code{0} means the center).")
 {
   LY_ASSERT_SMOB (Stencil, stil, 1);
index 8a071cce90c9d89e6f88816eba4cfc43867ed0f1..c20f244890244432b9cdc7dad45e30072e454154 100644 (file)
@@ -38,6 +38,7 @@
 #include "staff-symbol-referencer.hh"
 #include "text-interface.hh"
 #include "warn.hh"
+#include "unpure-pure-container.hh"
 
 System::System (System const &src)
   : Spanner (src)
@@ -197,8 +198,7 @@ System::do_break_substitution_and_fixup_refpoints ()
         }
     }
 
-  if (be_verbose_global)
-    message (_f ("Element count %d", count + element_count ()) + "\n");
+  debug_output (_f ("Element count %d", count + element_count ()) + "\n");
 }
 
 SCM
@@ -216,16 +216,14 @@ System::get_paper_systems ()
   SCM lines = scm_c_make_vector (broken_intos_.size (), SCM_EOL);
   for (vsize i = 0; i < broken_intos_.size (); i++)
     {
-      if (be_verbose_global)
-        progress_indication ("[");
+      debug_output ("[", false);
 
       System *system = dynamic_cast<System *> (broken_intos_[i]);
 
       scm_vector_set_x (lines, scm_from_int (i),
                         system->get_paper_system ());
 
-      if (be_verbose_global)
-        progress_indication (to_string (i) + "]");
+      debug_output (to_string (i) + "]", false);
     }
   return lines;
 }
@@ -398,8 +396,7 @@ System::pre_processing ()
   for (vsize i = 0; i < all_elements_->size (); i++)
     all_elements_->grob (i)->discretionary_processing ();
 
-  if (be_verbose_global)
-    message (_f ("Grob count %d", element_count ()));
+  debug_output (_f ("Grob count %d", element_count ()));
 
   /*
     order is significant: broken grobs are added to the end of the
index 3e76c120b1a0468cc15df15637202c80e098b5d9..098bf00a11bfd40f81651f845dbcc1e62a27fb3c 100644 (file)
@@ -149,8 +149,9 @@ Tie_formatting_problem::set_column_chord_outline (vector<Item *> bounds,
           else
             {
               if (use_horizontal_spacing_ || !Stem::get_beam (stem))
-                stem_end_position = Stem::stem_end_position (stem) * staff_space * .5;
+                stem_end_position = stem->extent (stem, Y_AXIS)[get_grob_direction (stem)];
               else
+                // May want to change this to the stem's pure height...
                 stem_end_position = Stem::note_head_positions (stem)[get_grob_direction (stem)]
                                     * staff_space * .5;
             }
@@ -170,9 +171,13 @@ Tie_formatting_problem::set_column_chord_outline (vector<Item *> bounds,
 
           if (dir == LEFT)
             {
-              Box flag_box = Stem::get_translated_flag (stem).extent_box ();
-              flag_box.translate ( Offset (x[RIGHT], X_AXIS));
-              boxes.push_back (flag_box);
+              Grob *flag = Stem::flag (stem);
+              if (flag)
+                {
+                  Grob* commony = stem->common_refpoint (flag, Y_AXIS);
+                  boxes.push_back (Box (flag->extent (x_refpoint_, X_AXIS),
+                                        flag->extent (commony, Y_AXIS)));
+                }
             }
         }
       else
index c53ddeac7b359a24e26656f150c5237f3e3c3410..85a0b07d747467cb3e1e76b6184b0adb9b9963a4 100644 (file)
@@ -110,8 +110,7 @@ Tie_performer::acknowledge_audio_element (Audio_element_info inf)
               // (*it).moment_ already stores the end of the tied note!
               Moment skip = now_mom () - (*it).end_moment_;
               an->tie_to (th, skip);
-              // this invalidates the iterator, we are leaving the loop anyway
-              heads_to_tie_.erase (it);
+              it = heads_to_tie_.erase (it);
             }
         }
     }
index b52f84db0f7b391a7aaf1f4524b7010f2f3305db..078d4fc5dd2f09423f3a23ae50a7305e093bf089 100644 (file)
@@ -189,7 +189,6 @@ Tie::get_default_control_points (Grob *me_grob)
   Tie_formatting_problem problem;
   problem.from_tie (me);
 
-  Tie_specification spec = problem.get_tie_specification (0);
   if (!me->is_live ())
     return SCM_EOL;
 
index 932f7a6c95050b42d375a5ef9171ddba184d52b8..18f1dcd0b663b4de2d0d89f547eb3171281b1ab8 100644 (file)
@@ -515,8 +515,7 @@ LY_DEFINE (ly_ttf_ps_name, "ly:ttf-ps-name",
     }
 
   string file_name = ly_scm2string (ttf_file_name);
-  if (be_verbose_global)
-    progress_indication ("\n[" + file_name);
+  debug_output ("\n[" + file_name, false);
 
   FT_Face face;
 
@@ -538,8 +537,7 @@ LY_DEFINE (ly_ttf_ps_name, "ly:ttf-ps-name",
   SCM ps_name = scm_from_locale_string (ps_name_str0 ? ps_name_str0 : "");
   FT_Done_Face (face);
 
-  if (be_verbose_global)
-    progress_indication ("]");
+  debug_output ("]", false);
 
   return ps_name;
 }
@@ -567,8 +565,7 @@ LY_DEFINE (ly_ttf_2_pfa, "ly:ttf->pfa",
     }
 
   string file_name = ly_scm2string (ttf_file_name);
-  if (be_verbose_global)
-    progress_indication ("\n[" + file_name);
+  debug_output ("[" + file_name); // Debug message should start on a new line
 
   Memory_out_stream stream;
 
@@ -576,8 +573,7 @@ LY_DEFINE (ly_ttf_2_pfa, "ly:ttf->pfa",
   SCM asscm = scm_from_locale_stringn (stream.get_string (),
                                        stream.get_length ());
 
-  if (be_verbose_global)
-    progress_indication ("]");
+  debug_output ("]", false);
 
   return asscm;
 }
index c6dfa799924a5c4b169406cf26854c1b865d0f24..627d6fcfb04a961e531e7ee9aabd6bc3ae2afc34 100644 (file)
@@ -553,23 +553,24 @@ Tuplet_bracket::calc_position_and_height (Grob *me_grob, Real *offset, Real *dy)
       && Note_column::get_stem (columns[0])
       && Note_column::get_stem (columns.back ()))
     {
-      /*
-        trigger set_stem_ends
-      */
-      (void) par_beam->get_property ("quantized-positions");
-
       Drul_array<Grob *> stems (Note_column::get_stem (columns[0]),
                                 Note_column::get_stem (columns.back ()));
 
-      Real ss = 0.5 * Staff_symbol_referencer::staff_space (me);
-      Real lp = ss * robust_scm2double (stems[LEFT]->get_property ("stem-end-position"), 0.0)
-                + stems[LEFT]->get_parent (Y_AXIS)->relative_coordinate (commony, Y_AXIS);
-      Real rp = ss * robust_scm2double (stems[RIGHT]->get_property ("stem-end-position"), 0.0)
-                + stems[RIGHT]->get_parent (Y_AXIS)->relative_coordinate (commony, Y_AXIS);
+      Interval poss;
+      Direction side = LEFT;
+      do
+        {
+          // Trigger setting of stem lengths if necessary.
+          if (Grob *beam = Stem::get_beam (stems[side]))
+            (void) beam->get_property ("quantized-positions");
+          poss[side] = stems[side]->extent (stems[side], Y_AXIS)[get_grob_direction (stems[side])]
+                       + stems[side]->get_parent (Y_AXIS)->relative_coordinate (commony, Y_AXIS);
+        }
+      while (flip (&side) != LEFT);
 
-      *dy = rp - lp;
-      points.push_back (Offset (stems[LEFT]->relative_coordinate (commonx, X_AXIS) - x0, lp));
-      points.push_back (Offset (stems[RIGHT]->relative_coordinate (commonx, X_AXIS) - x0, rp));
+      *dy = poss[RIGHT] - poss[LEFT];
+      points.push_back (Offset (stems[LEFT]->relative_coordinate (commonx, X_AXIS) - x0, poss[LEFT]));
+      points.push_back (Offset (stems[RIGHT]->relative_coordinate (commonx, X_AXIS) - x0, poss[RIGHT]));
     }
   else
     {
diff --git a/lily/unpure-pure-container.cc b/lily/unpure-pure-container.cc
new file mode 100644 (file)
index 0000000..9a8639d
--- /dev/null
@@ -0,0 +1,110 @@
+/*
+  This file is part of LilyPond, the GNU music typesetter.
+
+  Copyright (C) 2011 Mike Solomon <mike@apollinemike.com>
+
+
+  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 "unpure-pure-container.hh"
+
+#include "grob.hh"
+
+static scm_t_bits unpure_pure_container_tag;
+
+bool
+is_unpure_pure_container (SCM s)
+{
+  return (SCM_NIMP (s) && SCM_CELL_TYPE (s) == unpure_pure_container_tag);
+}
+
+SCM
+unpure_pure_container_unpure_part (SCM smob)
+{
+  LY_ASSERT_TYPE (is_unpure_pure_container, smob, 1);
+  return (SCM) SCM_CELL_WORD_1 (smob);
+}
+
+SCM
+unpure_pure_container_pure_part (SCM smob)
+{
+  LY_ASSERT_TYPE (is_unpure_pure_container, smob, 1);
+  return (SCM) SCM_CELL_WORD_2 (smob);
+}
+
+LY_DEFINE (ly_unpure_pure_container_p, "ly:unpure-pure-container?",
+           1, 0, 0, (SCM clos),
+           "Is @var{clos} an unpure pure container?")
+{
+  return scm_from_bool (is_unpure_pure_container (clos));
+}
+
+LY_DEFINE (ly_make_unpure_pure_container, "ly:make-unpure-pure-container",
+           1, 1, 0, (SCM unpure, SCM pure),
+           "Make an unpure-pure container.  @var{unpure} should be an unpure"
+           " expression, and @var{pure} should be a pure expression. If @var{pure}"
+           " is ommitted, the value of @var{unpure} will be used twice.")
+{
+  SCM z;
+
+  if (pure == SCM_UNDEFINED)
+    pure = unpure;
+
+  SCM_NEWSMOB2 (z, unpure_pure_container_tag, SCM_UNPACK (unpure), SCM_UNPACK (pure));
+  return z;
+}
+
+LY_DEFINE (ly_unpure_pure_container_unpure_part, "ly:unpure-pure-container-unpure-part",
+           1, 0, 0, (SCM pc),
+           "Return the unpure part of @var{pc}.")
+{
+  LY_ASSERT_TYPE (is_unpure_pure_container, pc, 1);
+  return unpure_pure_container_unpure_part (pc);
+}
+
+LY_DEFINE (ly_unpure_pure_container_pure_part, "ly:unpure-pure-container-pure-part",
+           1, 0, 0, (SCM pc),
+           "Return the pure part of @var{pc}.")
+{
+  LY_ASSERT_TYPE (is_unpure_pure_container, pc, 1);
+  return unpure_pure_container_pure_part (pc);
+}
+
+int
+print_unpure_pure_container (SCM s, SCM port, scm_print_state *)
+{
+  scm_puts ("#<unpure-pure-container ", port);
+  scm_display (unpure_pure_container_unpure_part (s), port);
+  scm_puts (" ", port);
+  scm_display (unpure_pure_container_pure_part (s), port);
+  scm_puts (" >", port);
+  return 1;
+}
+
+SCM
+pure_mark (SCM pure)
+{
+  scm_gc_mark (unpure_pure_container_unpure_part (pure));
+  scm_gc_mark (unpure_pure_container_pure_part (pure));
+  return pure;
+}
+
+void init_unpure_pure_container ()
+{
+  unpure_pure_container_tag = scm_make_smob_type ("unpure-pure-container", 0);
+  scm_set_smob_mark (unpure_pure_container_tag, pure_mark);
+  scm_set_smob_print (unpure_pure_container_tag, print_unpure_pure_container);
+};
+
+ADD_SCM_INIT_FUNC (unpure_pure_container, init_unpure_pure_container);
diff --git a/lily/warn-scheme.cc b/lily/warn-scheme.cc
new file mode 100644 (file)
index 0000000..69fba1b
--- /dev/null
@@ -0,0 +1,138 @@
+/*
+  This file is part of LilyPond, the GNU music typesetter.
+
+  Copyright (C) 1998--2011 Jan Nieuwenhuizen <janneke@gnu.org>
+  Han-Wen Nienhuys <hanwen@xs4all.nl>
+
+  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 "config.hh"
+
+#include "lily-guile.hh"
+#include "program-option.hh"
+#include "version.hh"
+#include "warn.hh"
+
+/*
+  Error / warning / progress / debug message output functions
+*/
+
+LY_DEFINE (ly_error, "ly:error",
+           1, 0, 1, (SCM str, SCM rest),
+           "A Scheme callable function to issue the error @var{str}."
+           "  The error is formatted with @code{format} and @var{rest}.")
+{
+  LY_ASSERT_TYPE (scm_is_string, str, 1);
+  str = scm_simple_format (SCM_BOOL_F, str, rest);
+  error (ly_scm2string (str));
+  return SCM_UNSPECIFIED;
+}
+
+LY_DEFINE (ly_programming_error, "ly:programming-error",
+           1, 0, 1, (SCM str, SCM rest),
+           "A Scheme callable function to issue the internal warning"
+           "  @var{str}.  The message is formatted with @code{format}"
+           " and @var{rest}.")
+{
+  LY_ASSERT_TYPE (scm_is_string, str, 1);
+  str = scm_simple_format (SCM_BOOL_F, str, rest);
+
+  if (get_program_option ("warning-as-error"))
+    error (ly_scm2string (str));
+  else
+    programming_error (ly_scm2string (str));
+
+  return SCM_UNSPECIFIED;
+}
+
+LY_DEFINE (ly_warning, "ly:warning",
+           1, 0, 1, (SCM str, SCM rest),
+           "A Scheme callable function to issue the warning @var{str}."
+           "  The message is formatted with @code{format} and @var{rest}.")
+{
+  LY_ASSERT_TYPE (scm_is_string, str, 1);
+  str = scm_simple_format (SCM_BOOL_F, str, rest);
+
+  if (get_program_option ("warning-as-error"))
+    error (ly_scm2string (str));
+  else
+    warning (ly_scm2string (str));
+
+  return SCM_UNSPECIFIED;
+}
+
+LY_DEFINE (ly_progress, "ly:progress",
+           1, 0, 1, (SCM str, SCM rest),
+           "A Scheme callable function to print progress @var{str}."
+           "  The message is formatted with @code{format} and @var{rest}.")
+{
+  LY_ASSERT_TYPE (scm_is_string, str, 1);
+  str = scm_simple_format (SCM_BOOL_F, str, rest);
+  // Calls to ly:progress should in general not start a new line
+  progress_indication (ly_scm2string (str), false);
+  return SCM_UNSPECIFIED;
+}
+
+LY_DEFINE (ly_basic_progress, "ly:basic-progress",
+           1, 0, 1, (SCM str, SCM rest),
+           "A Scheme callable function to issue a basic progress message @var{str}."
+           "  The message is formatted with @code{format} and @var{rest}.")
+{
+  LY_ASSERT_TYPE (scm_is_string, str, 1);
+  str = scm_simple_format (SCM_BOOL_F, str, rest);
+  basic_progress (ly_scm2string (str));
+  return SCM_UNSPECIFIED;
+}
+
+LY_DEFINE (ly_message, "ly:message",
+           1, 0, 1, (SCM str, SCM rest),
+           "A Scheme callable function to issue the message @var{str}."
+           "  The message is formatted with @code{format} and @var{rest}.")
+{
+  LY_ASSERT_TYPE (scm_is_string, str, 1);
+  str = scm_simple_format (SCM_BOOL_F, str, rest);
+  message (ly_scm2string (str));
+  return SCM_UNSPECIFIED;
+}
+
+LY_DEFINE (ly_debug, "ly:debug",
+           1, 0, 1, (SCM str, SCM rest),
+           "A Scheme callable function to issue a debug message @var{str}."
+           "  The message is formatted with @code{format} and @var{rest}.")
+{
+  // TODO: Add the newline flag!
+  LY_ASSERT_TYPE (scm_is_string, str, 1);
+  str = scm_simple_format (SCM_BOOL_F, str, rest);
+  debug_output (ly_scm2string (str));
+  return SCM_UNSPECIFIED;
+}
+
+LY_DEFINE (ly_warning_located, "ly:warning-located",
+           2, 0, 1, (SCM location, SCM str, SCM rest),
+           "A Scheme callable function to issue the warning @var{str} at"
+           " the specified location in an input file."
+           "  The message is formatted with @code{format} and @var{rest}.")
+{
+  LY_ASSERT_TYPE (scm_is_string, location, 1);
+  LY_ASSERT_TYPE (scm_is_string, str, 2);
+  str = scm_simple_format (SCM_BOOL_F, str, rest);
+
+  if (get_program_option ("warning-as-error"))
+    error (ly_scm2string (str), ly_scm2string (location));
+  else
+    warning (ly_scm2string (str), ly_scm2string (location));
+
+  return SCM_UNSPECIFIED;
+}
index 3ff4029fd6ebb019c40a3146c5d27f0c03b4c56a..1f6792c9ce775cbac48cd2836f49e80e6d48ccd1 100644 (file)
@@ -25,7 +25,7 @@ dwn = {
   (ly:stencil-combine-at-edge
     (ly:accidental-interface::print grob) Y UP
     (grob-interpret-markup grob (markup #:line
-          (#:fontsize -1 (#:musicglyph "flags.ugrace")))) -1.3 0))
+          (#:fontsize -1 (#:musicglyph "flags.ugrace")))) -1.3))
 }
 
 %
index badb701e08579e8aa7bb4f70ec8b027eaaae0380..a2ba6551f678d11061d13afae9d6bcc90a6946a1 100644 (file)
@@ -675,6 +675,7 @@ automatically when an output definition (a @code{\score} or
   graceSettings = #`(
     (Voice Stem direction ,UP)
     (Voice Stem font-size -3)
+    (Voice Flag font-size -3)
     (Voice NoteHead font-size -3)
     (Voice TabNoteHead font-size -4)
     (Voice Dots font-size -3)
@@ -781,9 +782,8 @@ context."
   \remove "Accidental_engraver"
   %% make the Stems as short as possible to minimize their influence
   %% on the slur::calc-control-points routine
-  \override Stem #'length = #0
   \override Stem #'no-stem-extend = ##t
-  \override Stem #'flag-style = #'no-flag
+  \override Flag #'style = #'no-flag
   \override Stem #'details = #'((lengths 0 0 0 0 0 0)
                                 (beamed-lengths 0 0 0)
                                 (beamed-minimum-free-lengths 0 0 0)
index 6850541afaeb1c8bb209c42208f0a68b1955ffdd..4ee3be0179e3a6c155d035eb557d19bc5f78bf8f 100644 (file)
@@ -21,18 +21,18 @@ stopAppoggiaturaMusic =  {
 
 startAcciaccaturaMusic =  {
     s1*0\startGraceSlur
-    \override Stem  #'stroke-style = #"grace"
+    \override Flag  #'stroke-style = #"grace"
 }
 
 stopAcciaccaturaMusic =  {
-    \revert Stem #'stroke-style
+    \revert Flag #'stroke-style
     s1*0\stopGraceSlur
 }
 
 startSlashedGraceMusic =  {
-  \override Stem  #'stroke-style = #"grace"
+  \override Flag #'stroke-style = #"grace"
 }
 
 stopSlashedGraceMusic =  {
-  \revert Stem #'stroke-style
+  \revert Flag #'stroke-style
 }
index 0b8e0680beb76ecb72f1d005b37b1c4921ba54f6..6475a719c1b1de20a6ed03fede4fffd224deb9dd 100644 (file)
@@ -301,6 +301,7 @@ neumeDemoLayout = \layout {
        \consists Vaticana_ligature_engraver
        \override NoteHead #'style = #'vaticana.punctum
        \override Stem #'transparent = ##t
+       \override Flag #'transparent = ##t
     }
 }
 
index 2278f85a266387dbedef8a3d3192917b2193d126..b3a009860753c54d7ab7549617ab4ba6f32d3ae5 100644 (file)
@@ -172,7 +172,7 @@ barNumberCheck =
               (lambda (c)
                 (let ((cbn (ly:context-property c 'currentBarNumber)))
                   (if (and  (number? cbn) (not (= cbn n)))
-                      (ly:input-message location
+                      (ly:input-warning location
                                         "Barcheck failed got ~a expect ~a"
                                         cbn n))))))
 
@@ -346,6 +346,7 @@ footnoteGrob =
    (_i "Attach @var{text} to @var{grob-name} at offset @var{offset},
 with @var{text} referring to @var{footnote} (use like @code{\\once})")
    (make-music 'FootnoteEvent
+               'automatically-numbered #f
               'symbol grob-name
               'X-offset (car offset)
               'Y-offset (cdr offset)
@@ -360,9 +361,14 @@ allowing for the footnote to be automatically numbered such that
 the number appears at @var{offset}.  Note that, for this to take effect,
 auto-numbering must be turned on in the paper block.  Otherwise, no
 number will appear.  Use like @code{\\once})")
-   #{
-     \footnoteGrob $grob-name $offset \markup { \null } $footnote
-   #})
+   (make-music 'FootnoteEvent
+               'automatically-numbered #t
+              'symbol grob-name
+              'X-offset (car offset)
+              'Y-offset (cdr offset)
+               'text (make-null-markup)
+              'footnote-text footnote))
+
 
 footnote =
 #(define-music-function (parser location offset text footnote)
@@ -370,14 +376,12 @@ footnote =
    (_i "Attach @var{text} at @var{offset} with @var{text} referring
 to @var{footnote} (use like @code{\\tweak})")
    (make-music 'FootnoteEvent
+               'automatically-numbered #f
               'X-offset (car offset)
               'Y-offset (cdr offset)
               'text text
               'footnote-text footnote))
 
-% this function can't be a simple copy and past of the above because
-% it needs to be encapsulated in a Sequential Music.
-% so, there's a code dup of above :-(
 autoFootnote =
 #(define-music-function (parser location offset footnote)
    (number-pair? markup?)
@@ -387,6 +391,7 @@ such that the number appears at @var{offset}.  Note that, for this to
 take effect, auto-numbering must be turned on in the paper block.
 Otherwise, no number will appear.  Use like @code{\\tweak})")
    (make-music 'FootnoteEvent
+               'automatically-numbered #t
               'X-offset (car offset)
               'Y-offset (cdr offset)
               'text (make-null-markup)
@@ -433,7 +438,7 @@ instrumentSwitch =
          (instrument-def (if handle (cdr handle) '())))
 
      (if (not handle)
-        (ly:input-message location "No such instrument: ~a" name))
+        (ly:input-warning location "No such instrument: ~a" name))
      (context-spec-music
       (make-music 'SimultaneousMusic
                  'elements
@@ -501,7 +506,7 @@ languageRestore =
        (begin
         (set! pitchnames previous-pitchnames)
         (ly:parser-set-note-names parser pitchnames))
-      (ly:warning (_ "No other language was defined previously. Ignoring.")))
+      (ly:input-warning location (_ "No other language was defined previously. Ignoring.")))
    (make-music 'Music 'void #t))
 
 
@@ -725,7 +730,7 @@ Example:
                              (let ((moment-reference (ly:music-length (car seqs))))
                                (for-each (lambda (seq moment)
                                            (if (not (equal? moment moment-reference))
-                                               (ly:music-message seq
+                                               (ly:music-warning seq
                                                                  "Bars in parallel music don't have the same length")))
                                          seqs (map-in-order ly:music-length seqs))))
            voices)
@@ -808,7 +813,7 @@ print @var{secondary-note} as a stemless note head in parentheses.")
                  (for-each (lambda (m)
                              (ly:music-set-property! m 'pitch trill-pitch)) trill-events)
                  (begin
-                   (ly:warning (_ "Second argument of \\pitchedTrill should be single note: "))
+                   (ly:input-warning location (_ "Second argument of \\pitchedTrill should be single note: "))
                    (display sec-note-events)))
 
              (if (eq? forced #t)
@@ -891,7 +896,7 @@ scaleDurations =
 shiftDurations =
 #(define-music-function (parser location dur dots arg)
    (integer? integer? ly:music?)
-   (_i "Scale @var{arg} up by a factor of @var{2^dur*(2-(1/2)^dots)}.")
+   (_i "Scale @var{arg} up by a factor of 2^@var{dur}*(2-(1/2)^@var{dots}).")
 
    (music-map
     (lambda (x)
@@ -973,7 +978,7 @@ tweak =
 
    (if (equal? (object-property sym 'backend-type?) #f)
        (begin
-        (ly:warning (_ "cannot find property type-check for ~a") sym)
+        (ly:input-warning location (_ "cannot find property type-check for ~a") sym)
         (ly:warning (_ "doing assignment anyway"))))
    (set!
     (ly:music-property arg 'tweaks)
index c68652d8a403778c1c490e4a13672dd90de60190..d08c665f570767712e02f2dad6a836d0a8e82fea 100644 (file)
   footnote-padding = 0.5\mm
   footnote-footer-padding = 0.5\mm
   footnote-number-raise = 0.5\mm
-  footnote-auto-numbering = ##t
   footnote-numbering-function = #numbered-footnotes
   reset-footnotes-on-new-page = ##t
 
index 996470a1611b78a2f99186938a593948946b33ca..247440561760941a11f7368a49d24b5cddd9d112 100644 (file)
@@ -33,7 +33,7 @@ addChordShape =
 #(define-music-function (parser location key-symbol tuning shape-definition)
    (symbol? pair? string-or-pair?)
    (_i "Add chord shape @var{shape-definition} to the @var{chord-shape-table}
-hash with the key @var{(cons key-symbol tuning)}.")
+hash with the key @code{(cons @var{key-symbol} @var{tuning})}.")
    (hash-set! chord-shape-table
                (cons key-symbol tuning)
                shape-definition)
index 0175bb798fe405134afd05236f81f182001af729..02acc1b4e6c50f263e44496f6ba14b6a864265ac 100644 (file)
@@ -233,6 +233,7 @@ hideNotes = {
   \override NoteHead #'transparent = ##t
   \override NoteHead #'no-ledgers = ##t
   \override Stem #'transparent = ##t
+  \override Flag #'transparent = ##t
   \override Beam #'transparent = ##t
   \override Accidental #'transparent = ##t
 }
@@ -240,6 +241,7 @@ unHideNotes = {
   \revert Accidental #'transparent
   \revert Beam #'transparent
   \revert Stem #'transparent
+  \revert Flag #'transparent
   \revert NoteHead #'transparent
   \revert NoteHead #'no-ledgers
   \revert Dots #'transparent
@@ -424,7 +426,7 @@ tabFullNotation = {
   % stems (the half note gets a double stem)
   \revert TabVoice.Stem #'length
   \revert TabVoice.Stem #'no-stem-extend
-  \revert TabVoice.Stem #'flag-style
+  \revert TabVoice.Flag #'style
   \revert TabVoice.Stem #'details
   \revert TabVoice.Stem #'transparent
   \override TabVoice.Stem #'stencil = #tabvoice::draw-double-stem-for-half-notes
@@ -544,30 +546,35 @@ voiceOneStyle = {
   \override NoteHead #'style = #'diamond
   \override NoteHead #'color = #red
   \override Stem #'color = #red
+  \override Flag #'color = #red
   \override Beam #'color = #red
 }
 voiceTwoStyle = {
   \override NoteHead #'style = #'triangle
   \override NoteHead #'color = #blue
   \override Stem #'color = #blue
+  \override Flag #'color = #blue
   \override Beam #'color = #blue
 }
 voiceThreeStyle = {
   \override NoteHead #'style = #'xcircle
   \override NoteHead #'color = #green
   \override Stem #'color = #green
+  \override Flag #'color = #green
   \override Beam #'color = #green
 }
 voiceFourStyle = {
   \override NoteHead #'style = #'cross
   \override NoteHead #'color = #magenta
   \override Stem #'color = #magenta
+  \override Flag #'color = #magenta
   \override Beam #'color = #magenta
 }
 voiceNeutralStyle = {
   \revert NoteHead #'style
   \revert NoteHead #'color
   \revert Stem #'color
+  \revert Flag #'color
   \revert Beam #'color
 }
 
index 0edc1cb4248045ee675f8d4872586fbe5eeca0d2..fade5dad3209066fd1ccea41d8a18b46cbbd3aab 100644 (file)
@@ -57,12 +57,9 @@ newly-defined tuning.
 @{chord} must be in absolute pitches and should have the highest
 string number (generally the lowest pitch) first.  @code{tuning}
 should be a string that will be converted to a symbol.")
-   (begin
-     (chord->tuning parser tuning chord)
-     #{
-        \set TabStaff.stringTunings = $(ly:parser-lookup parser tuning)
-        \set FretBoards.stringTunings = $(ly:parser-lookup parser tuning)
-     #}))
+  (chord->tuning parser tuning chord)
+  #{ \set stringTunings = #(ly:parser-lookup $parser $tuning)
+  #})
 
 %% A music function for converting an alist to string-tunings
 makeDefaultStringTunings =
index 5c38f7d4ab33e3bf6db41eb100b61f9804877da4..e8fe8a182eda44a271fab1c496cb151a2140a6da 100644 (file)
@@ -1,2 +1,19 @@
-$(outdir)/collated-files.tely: $(COLLATED_FILES)
-       $(LYS_TO_TELY) --name=$(outdir)/collated-files.tely --title="$(TITLE)" --author="$(AUTHOR)" $^
+$(outdir)/collated-files.list: $(COLLATED_FILES)
+       echo "(Re-)Generating $@"
+       # We can't print the list in one go, as it might be longer than a
+       # shell command is allowed (as of linux 2.6.3x >131000 chars)
+       @echo $(wordlist    1, 299,$^)>$@
+       @echo $(wordlist  300, 599,$^)>>$@
+       @echo $(wordlist  600, 899,$^)>>$@
+       @echo $(wordlist  900,1199,$^)>>$@
+       @echo $(wordlist 1200,1499,$^)>>$@
+       @echo $(wordlist 1500,1799,$^)>>$@
+       @echo $(wordlist 1800,2099,$^)>>$@
+       @echo $(wordlist 2100,2399,$^)>>$@
+       @echo $(wordlist 2400,2699,$^)>>$@
+       @echo $(wordlist 2700,2999,$^)>>$@
+       # Print the rest, just in case the list is that long
+       echo $(wordlist 3000,$(words $^),$^)>>$@
+
+$(outdir)/collated-files.tely: $(outdir)/collated-files.list
+       $(LYS_TO_TELY) --name=$(outdir)/collated-files.tely --title="$(TITLE)" --author="$(AUTHOR)" --input-filename=$^
index 4522395cf6e08f20072b30aec272a10802ef90a7..ea360906810273880b47ec005da2f589f2d56d44 100644 (file)
@@ -317,6 +317,11 @@ def draw_gclef (expr reduction) =
        reduced_ss# = staff_space# * reduction;
        define_pixels (reduced_ss);
 
+       % G clef has now a smaller upper loop than it used to have.
+       % Too small loop in reduced clef (G_change) interacts badly
+       % with stafflines, so we make reduced clef's loop a bit bigger.
+       reduced_loop_correction := min (max (0.94, (0.6 + 0.46 * reduction)), 1);
+
        thinness = 0.095 staff_space + 0.75 linethickness;
        downstroke_dir = unitvector (14, -75);
        downstroke_angle = angle downstroke_dir;
@@ -328,12 +333,12 @@ def draw_gclef (expr reduction) =
        breapth_factor = 21/14;
        inner_thick_end = 45;
        inner_start_angle = downstroke_angle - 43;
-       thickness = .32 reduced_ss + 1.1 linethickness;
+       thickness = .33 reduced_ss + 1.1 linethickness;
 
        thinnib = thinness;
 
        set_char_box (0, 1.71 * breapth_factor * reduced_ss#,
-                     2.6 * reduced_ss#, 5 * reduced_ss#);
+                     2.55 * reduced_ss#, 4.8 * reduced_ss# / reduced_loop_correction);
 
        center := (breapth_factor * reduced_ss, 0);
 
@@ -356,32 +361,32 @@ def draw_gclef (expr reduction) =
        y5r = .37 reduced_ss + ypart center;
        penpos5 (thickness, upward_swoosh_angle);
 
-       z6 = center + whatever * downstroke_dir;
-       y6 = ypart center + 2 reduced_ss;
+       z6 = center + whatever * downstroke_dir + (-0.02, 0) * reduced_ss;
+       y6 = ypart center + 1.95 reduced_ss / reduced_loop_correction;
        % penpos6 is computed later
 
-       z7l - z6 = whatever * (z5 - z6) ;
-       y7l = 3.5 reduced_ss;
+       z7l - z6 = whatever * (z5 - z6);
+       y7l = 3.38 reduced_ss / reduced_loop_correction;
        penpos7 (thickness, upward_swoosh_angle);
 
-       x9 = .7 [x10, x7r];
-       top y9l = 5 reduced_ss;
+       x9 = .75 [x10, x7r];
+       top y9l = 4.78 reduced_ss / reduced_loop_correction;
        penpos9 (1.45 thickness, -70);
 
-       x11 - x13r = 1.5 reduced_ss + 0.5 thinnib;
-       y11 = ypart center - 47/28 reduced_ss;
-       y12 = ypart center - 71/28 reduced_ss;
+       x11 - x13r = 1.44 * reduced_ss + 0.5 thinnib;
+       y11 = ypart center - 45/28 reduced_ss;
+       y12 = ypart center - 69/28 reduced_ss;
        y13 = .48 [y12, y4r];
        x12r = xpart (.45 [z13r, z11] + .75 reduced_ss * downstroke_dir);
 
 %      z10 = center + whatever * dir (downstroke_angle - 1.5);
-       x10 = x6 - 2 thinnib;
-       y10 = ypart center + 3.5 reduced_ss;
+       x10 = x6 - 1.85 thinnib * reduction / reduced_loop_correction;
+       y10 = ypart center + 3.32 reduced_ss / reduced_loop_correction;
        y10l - y10r = 1.0 thickness;
        z10r - z10l = .7 thinnib * dir (downstroke_angle + 90)
                      + whatever * downstroke_dir;
        z10 = .5 [z10l, z10r];
-       z11 = center + whatever * downstroke_dir + (-0.05 reduced_ss, 0);
+       z11 = center + whatever * downstroke_dir + (0.03 reduced_ss, 0);
 
        penpos11 (thinnib, start_angle + 90);
        penpos12 (thinnib, bot_angle + 90);
@@ -403,7 +408,7 @@ def draw_gclef (expr reduction) =
        z10' = point 0.3 of pat;
        penpos10' (1.3 thinnib, angle (direction 0.3 of pat) + 50);
 
-       z11' = point 1.5 of pat;
+       z11' = point 1.5 of pat + (0.033, -0.5) * reduced_ss;
        penpos11' (thinnib, angle (direction 1.5 of pat) + 90);
 
        z21l = z20l;
index 6c00aa5784e3c43d85bab4315001f3127cb4e87c..3ba7949ba605528735347477305cd3244cb9d8d7 100644 (file)
@@ -45,6 +45,7 @@ if test = 0:
        input feta-pedals;
        input feta-brackettips;
        input feta-accordion;
+       input feta-ties;
 else:
        input feta-test-generic.mf;
 fi
index d04ed18b7b5e99c2641079b77e6af9a459a634ad..e252d335e5661f116fb35fa2da43a823e1e5e979 100644 (file)
@@ -620,6 +620,44 @@ fet_beginchar ("halfopen (unstopped)", "halfopen");
 fet_endchar;
 
 
+fet_beginchar ("halfopen vertical", "halfopenvertical");
+       save thin, height, width, thick, factor, slash;
+
+       factor := 3/2;
+       height# = 5/4 width#;
+       height# = staff_space#;
+       thin = 0.6 linethickness + 0.06 staff_space;
+       slash# = 1.05 linethickness#;
+
+       set_char_box (width# / 2, width# / 2,
+                     height# / 2, height# / 2);
+
+       define_pixels (width, height, slash);
+
+       2 thick + 0.6 (height - 2 thin) = width;
+
+       penpos1 (thick, 0);
+       penpos2 (thin, 90);
+       penpos3 (thick, 180);
+       penpos4 (thin, 270);
+       z1r = (w, 0);
+       z2r = (0, h);
+       z3r = (-w, 0);
+       z4r = (0, -h);
+
+       penlabels (1, 2, 3, 4);
+
+       penstroke z1e{up}
+                 .. z2e{left}
+                 .. z3e{down}
+                 .. z4e{right}
+                 .. cycle;
+
+       draw_brush ((0, -h * factor), slash,
+                   (0, h * factor), slash);
+fet_endchar;
+
+
 fet_beginchar ("plus (stopped)", "stopped");
        save hthick, vthick, size, outer_hsize, outer_vsize;
 
index 71f7ce842f2467d7bf5b4666fa4881ca5cdd7978..a910b52c5a5a3a018d8b9b5f612cec56753aa74f 100644 (file)
@@ -14,3 +14,4 @@ input feta-accidentals;
 %input feta-timesignatures;
 %input feta-pedals;
 %input feta-accordion;
+%input feta-ties;
diff --git a/mf/feta-ties.mf b/mf/feta-ties.mf
new file mode 100644 (file)
index 0000000..4378d57
--- /dev/null
@@ -0,0 +1,46 @@
+% Feta (not the Font-En-Tja) music font -- small ties
+% This file is part of LilyPond, the GNU music typesetter.
+%
+% Copyright (C) 2011 Bertrand Bordage <bordage.bertrand@gmail.com>
+%
+% 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/>.
+
+fet_begingroup ("ties");
+
+fet_beginchar ("lyric tie", "lyric");
+       save padding;
+
+       padding := .4 staff_space;
+
+       set_char_box (0, 0,
+               .7 staff_space#, 0);
+
+       z1 = (-staff_space, -padding);
+       z2 = (0, -d);
+       z3 = (staff_space, -padding);
+
+       penpos1 (1.2 linethickness, 50);
+       penpos2 (2 linethickness, 90);
+       penpos3 (1.2 linethickness, 130);
+
+       fill z2l
+               .. simple_serif (z3l, z3r, 90)
+               .. z2r
+               .. simple_serif (z1r, z1l, 90)
+               .. cycle;
+
+       penlabels (1, 2, 3);
+fet_endchar;
+
+fet_endgroup ("ties");
index b73f37336e4f3975dce9ffd7c7a47de6bcd33b8f..b43b9e00d4b4477b5ea2fe0f05eea0be9e3ae8f5 100644 (file)
@@ -172,7 +172,8 @@ class BookOutputFormat:
         rep = snippet.get_replacements ()
         if PRINTFILENAME in snippet.option_dict:
             rep['base'] = basename
-            rep['filename'] = os.path.basename (snippet.substring ('filename'))
+            rep['filename'] = os.path.basename (snippet.filename)
+            rep['ext'] = snippet.ext
             str = self.output[PRINTFILENAME] % rep
 
         return str
index 5ae766bbaf8a457b9bb83e561935dc5e018abc25..ef009935d6990e06832f100ddfbf328a7993afc5 100644 (file)
@@ -79,7 +79,7 @@ Docbook_output = {
 
     PRINTFILENAME: r'''<textobject>
   <simpara>
-    <ulink url="%(base)s.ly">
+    <ulink url="%(base)s%(ext)s">
       <filename>
         %(filename)s
       </filename>
index cf56dd5f49ae92b1bc69058a59f49a9f27117638..ac70b743a0e3a91727f3ee099b5026056b028bbb 100644 (file)
@@ -40,6 +40,13 @@ HTML_snippet_res = {
     'multiline_comment':
          r'''(?smx)(?P<match>\s*(?!@c\s+)(?P<code><!--\s.*?!-->)\s)''',
 
+    'musicxml_file':
+         r'''(?mx)
+          (?P<match>
+          <musicxmlfile\s*(?P<options>.*?)\s*>
+          \s*(?P<filename>.*?)\s*
+          </musicxmlfile\s*>)''',
+
     'verb':
          r'''(?x)(?P<match>(?P<code><pre>.*?</pre>))''',
 
@@ -62,7 +69,7 @@ HTML_output = {
 </p>''',
 
     BEFORE: r'''<p>
- <a href="%(base)s.ly">''',
+ <a href="%(base)s%(ext)s">''',
 
     OUTPUT: r'''
   <img align="middle"
@@ -70,7 +77,7 @@ HTML_output = {
        src="%(image)s"
        alt="%(alt)s">''',
 
-    PRINTFILENAME: '<p><tt><a href="%(base)s.ly">%(filename)s</a></tt></p>',
+    PRINTFILENAME: '<p><tt><a href="%(base)s%(ext)s">%(filename)s</a></tt></p>',
 
     QUOTE: r'''<blockquote>
 %(str)s
@@ -118,6 +125,8 @@ class BookHTMLOutputFormat (BookBase.BookOutputFormat):
         str = ''
         rep = snippet.get_replacements ();
         rep['base'] = basename
+        rep['filename'] = os.path.basename (snippet.filename)
+        rep['ext'] = snippet.ext
         str += self.output_print_filename (basename, snippet)
         if VERBATIM in snippet.option_dict:
             rep['verb'] = BookBase.verbatim_html (snippet.verb_ly ())
index 677e88a1f70fe42a78df7419b8f4f512689c3693..c94240cd54e2b3dc783a7b65b8e93d7ae5718e61 100644 (file)
@@ -3,6 +3,7 @@
 import re
 import tempfile
 import os
+import subprocess
 import book_base as BookBase
 from book_snippets import *
 import lilylib as ly
@@ -68,6 +69,17 @@ Latex_snippet_res = {
            (?P<filename>\S+?)
           })''',
 
+    'musicxml_file':
+         r'''(?smx)
+          ^[^%\n]*?
+          (?P<match>
+          \\musicxmlfile\s*(
+          \[
+           \s*(?P<options>.*?)\s*
+          \])?\s*\{
+           (?P<filename>\S+?)
+          })''',
+
     'singleline_comment':
          r'''(?mx)
           ^.*?
@@ -122,9 +134,9 @@ Latex_output = {
     PRINTFILENAME: '''\\texttt{%(filename)s}
 ''',
 
-    QUOTE: r'''\begin{quotation}
+    QUOTE: r'''\begin{quote}
 %(str)s
-\end{quotation}''',
+\end{quote}''',
 
     VERBATIM: r'''\noindent
 \begin{verbatim}%(verb)s\end{verbatim}
@@ -169,12 +181,20 @@ def get_latex_textwidth (source, global_options):
     tmp_handle.write (latex_document)
     tmp_handle.close ()
 
-    ly.system ('%s %s' % (global_options.latex_program, tmpfile),
-               be_verbose=global_options.verbose)
-    parameter_string = file (logfile).read()
-
+    progress (_ ("Running `%s' on file `%s' to detect default page settings.\n")
+              % (global_options.latex_program, tmpfile));
+    cmd = '%s %s' % (global_options.latex_program, tmpfile);
+    proc = subprocess.Popen (cmd,
+        universal_newlines=True, shell=True,
+        stdout=subprocess.PIPE, stderr=subprocess.PIPE);
+    if proc.returncode != 0:
+        warning (_ ("Unable to auto-detect default page settings:\n%s")
+                 % proc.communicate ()[1]);
     os.unlink (tmpfile)
-    os.unlink (logfile)
+    parameter_string = ""
+    if os.path.exists (logfile):
+        parameter_string = file (logfile).read()
+        os.unlink (logfile)
 
     columns = 0
     m = re.search ('columns=([0-9.]+)', parameter_string)
index b7c3ddf0d67d369acfec84b3db605a54860b4db9..cbf09a7a28f59bcf47cb8103883c2d511bedc510 100644 (file)
@@ -38,14 +38,11 @@ EXAMPLEINDENT = 'exampleindent'
 FILENAME = 'filename'
 FILTER = 'filter'
 FRAGMENT = 'fragment'
-LANG = 'lang'    ## TODO: This is handled nowhere!
 LAYOUT = 'layout'
-LILYQUOTE = 'lilyquote'
 LINE_WIDTH = 'line-width'
 NOFRAGMENT = 'nofragment'
 NOGETTEXT = 'nogettext'
 NOINDENT = 'noindent'
-NOQUOTE = 'noquote'
 INDENT = 'indent'
 NORAGGED_RIGHT = 'noragged-right'
 NOTES = 'body'
@@ -68,7 +65,6 @@ VERSION = 'lilypondversion'
 
 # NOTIME and NOGETTEXT have no opposite so they aren't part of this
 # dictionary.
-# NOQUOTE is used internally only.
 no_options = {
     NOFRAGMENT: FRAGMENT,
     NOINDENT: INDENT,
@@ -92,7 +88,6 @@ simple_options = [
     PRINTFILENAME,
     DOCTITLE,
     TEXIDOC,
-    LANG,
     VERBATIM,
     FILENAME,
     ALT,
@@ -117,7 +112,6 @@ snippet_options = {
         INDENT: r'''indent = %(indent)s''',
         LINE_WIDTH: r'''line-width = %(line-width)s''',
         QUOTE: r'''line-width = %(line-width)s - 2.0 * %(exampleindent)s''',
-        LILYQUOTE: r'''line-width = %(line-width)s - 2.0 * %(exampleindent)s''',
         RAGGED_RIGHT: r'''ragged-right = ##t''',
         NORAGGED_RIGHT: r'''ragged-right = ##f''',
     },
@@ -145,24 +139,9 @@ snippet_options = {
 
 
 
-FRAGMENT_LY = r'''
-%(notes_string)s
-{
-
-
-%% ****************************************************************
-%% ly snippet contents follows:
-%% ****************************************************************
-%(code)s
-
-
-%% ****************************************************************
-%% end ly snippet
-%% ****************************************************************
-}
-'''
-
 def classic_lilypond_book_compatibility (key, value):
+    if key == 'lilyquote':
+        return (QUOTE, value)
     if key == 'singleline' and value == None:
         return (RAGGED_RIGHT, None)
 
@@ -183,6 +162,8 @@ def classic_lilypond_book_compatibility (key, value):
     return (None, None)
 
 
+# TODO: Remove the 1mm additional padding in the line-width, once lilypond
+#       creates tighter cropped images!
 PREAMBLE_LY = '''%%%% Generated by %(program_name)s
 %%%% Options: [%(option_string)s]
 \\include "lilypond-book-preamble.ly"
@@ -196,8 +177,9 @@ PREAMBLE_LY = '''%%%% Generated by %(program_name)s
 
 \paper {
   %(paper_string)s
-  force-assignment = #""
-  line-width = #(- line-width (* mm  %(padding_mm)f))
+  %% offset the left padding, also add 1mm as lilypond creates cropped
+  %% images with a little space on the right
+  line-width = #(- line-width (* mm  %(padding_mm)f) (* mm 1))
 }
 
 \layout {
@@ -222,10 +204,23 @@ FULL_LY = '''
 %% ****************************************************************
 '''
 
+FRAGMENT_LY = r'''
+%(notes_string)s
+{
 
 
+%% ****************************************************************
+%% ly snippet contents follows:
+%% ****************************************************************
+%(code)s
 
 
+%% ****************************************************************
+%% end ly snippet
+%% ****************************************************************
+}
+'''
+
 
 
 
@@ -400,13 +395,13 @@ class LilypondSnippet (Snippet):
                     self.option_dict[option] = None
 
 
-        # If LINE_WIDTH is used without parameter, set it to default.
+        # Store if we have an explicit line-width given
         has_line_width = self.option_dict.has_key (LINE_WIDTH)
         if has_line_width and self.option_dict[LINE_WIDTH] == None:
             has_line_width = False
             del self.option_dict[LINE_WIDTH]
 
-        # TODO: Can't we do that more efficiently (built-in python func?)
+        # Use default options (i.e. auto-detected line-width, etc)
         for k in self.formatter.default_snippet_options:
             if k not in self.option_dict:
                 self.option_dict[k] = self.formatter.default_snippet_options[k]
@@ -417,22 +412,6 @@ class LilypondSnippet (Snippet):
         if has_relative and not self.option_dict.has_key (FRAGMENT):
             self.option_dict[FRAGMENT] = None
 
-        if not has_line_width:
-            if type == 'lilypond' or FRAGMENT in self.option_dict:
-                self.option_dict[RAGGED_RIGHT] = None
-
-            if type == 'lilypond':
-                if LINE_WIDTH in self.option_dict:
-                    del self.option_dict[LINE_WIDTH]
-            else:
-                if RAGGED_RIGHT in self.option_dict:
-                    if LINE_WIDTH in self.option_dict:
-                        del self.option_dict[LINE_WIDTH]
-
-            if QUOTE in self.option_dict or type == 'lilypond':
-                if LINE_WIDTH in self.option_dict:
-                    del self.option_dict[LINE_WIDTH]
-
         if not INDENT in self.option_dict:
             self.option_dict[INDENT] = '0\\mm'
 
@@ -443,8 +422,7 @@ class LilypondSnippet (Snippet):
         # all settings before writing them in the \paper block.
         if not LINE_WIDTH in self.option_dict:
             if not QUOTE in self.option_dict:
-                if not LILYQUOTE in self.option_dict:
-                    self.option_dict[LINE_WIDTH] = "#(- paper-width \
+                self.option_dict[LINE_WIDTH] = "#(- paper-width \
 left-margin-default right-margin-default)"
 
     def get_option_list (self):
@@ -460,10 +438,6 @@ left-margin-default right-margin-default)"
         return self.option_list
 
     def compose_ly (self, code):
-        if FRAGMENT in self.option_dict:
-            body = FRAGMENT_LY
-        else:
-            body = FULL_LY
 
         # Defaults.
         relative = 1
@@ -574,6 +548,10 @@ left-margin-default right-margin-default)"
         d = globals().copy()
         d.update (locals())
         d.update (self.global_options.information)
+        if FRAGMENT in self.option_dict:
+            body = FRAGMENT_LY
+        else:
+            body = FULL_LY
         return (PREAMBLE_LY + body) % d
 
     def get_checksum (self):
@@ -659,6 +637,11 @@ printing diff against existing file." % filename)
                 os.makedirs (dst_path)
             os.link (src, dst)
 
+    def additional_files_to_consider (self, base, full):
+        return []
+    def additional_files_required (self, base, full):
+        return []
+
 
     def all_output_files (self, output_dir, output_dir_files):
         """Return all files generated in lily_output_dir, a set.
@@ -722,6 +705,8 @@ printing diff against existing file." % filename)
             if 'ddump-signature' in self.global_options.process_cmd:
                 consider_file (systemfile + '.signature')
 
+        map (consider_file, self.additional_files_to_consider (base, full))
+        map (require_file, self.additional_files_required (base, full))
 
         return (result, missing)
 
@@ -733,7 +718,7 @@ printing diff against existing file." % filename)
         """Pass input through cmd, and return the result."""
 
         if self.global_options.verbose:
-            progress (_ ("Opening filter `%s'\n") % cmd)
+            progress (_ ("Running through filter `%s'\n") % cmd)
 
         # TODO: Use Popen once we resolve the problem with msvcrt in Windows:
         (stdin, stdout, stderr) = os.popen3 (cmd)
@@ -746,16 +731,16 @@ printing diff against existing file." % filename)
             status = 0
             output = stdout.read ()
             status = stdout.close ()
-            error = stderr.read ()
+            err = stderr.read ()
 
         if not status:
             status = 0
         signal = 0x0f & status
-        if status or (not output and error):
+        if status or (not output and err):
             exit_status = status >> 8
             ly.error (_ ("`%s' failed (%d)") % (cmd, exit_status))
             ly.error (_ ("The error log is as follows:"))
-            ly.stderr_write (error)
+            ly.stderr_write (err)
             ly.stderr_write (stderr.read ())
             exit (status)
 
@@ -808,7 +793,9 @@ re_end_verbatim = re.compile (r'\s+%.*?end verbatim.*$', re.M)
 class LilypondFileSnippet (LilypondSnippet):
     def __init__ (self, type, match, formatter, line_number, global_options):
         LilypondSnippet.__init__ (self, type, match, formatter, line_number, global_options)
-        self.contents = file (BookBase.find_file (self.substring ('filename'), global_options.include_path)).read ()
+        self.filename = self.substring ('filename')
+        self.ext = os.path.splitext (os.path.basename (self.filename))[1]
+        self.contents = file (BookBase.find_file (self.filename, global_options.include_path)).read ()
 
     def get_snippet_code (self):
         return self.contents;
@@ -824,18 +811,113 @@ class LilypondFileSnippet (LilypondSnippet):
         return s
 
     def ly (self):
-        name = self.substring ('filename')
+        name = self.filename
         return ('\\sourcefilename \"%s\"\n\\sourcefileline 0\n%s'
                 % (name, self.contents))
 
     def final_basename (self):
         if self.global_options.use_source_file_names:
-            base = os.path.splitext (os.path.basename (self.substring ('filename')))[0]
+            base = os.path.splitext (os.path.basename (self.filename))[0]
             return base
         else:
             return self.basename ()
 
 
+class MusicXMLFileSnippet (LilypondFileSnippet):
+    def __init__ (self, type, match, formatter, line_number, global_options):
+        LilypondFileSnippet.__init__ (self, type, match, formatter, line_number, global_options)
+        self.compressed = False
+        self.converted_ly = None
+        self.musicxml_options_dict = {
+           'verbose': '--verbose',
+           'lxml': '--lxml',
+           'compressed': '--compressed',
+           'relative': '--relative',
+           'absolute': '--absolute',
+           'no-articulation-directions': '--no-articulation-directions',
+           'no-rest-positions': '--no-rest-positions',
+           'no-page-layout': '--no-page-layout',
+           'no-beaming': '--no-beaming',
+           'language': '--language',
+        }
+
+    def snippet_options (self):
+        return self.musicxml_options_dict.keys ()
+
+    def convert_from_musicxml (self):
+        name = self.filename
+        xml2ly_option_list = []
+        for (key, value) in self.option_dict.items ():
+            cmd_key = self.musicxml_options_dict.get (key, None)
+            if cmd_key == None:
+                continue
+            if value == None:
+                xml2ly_option_list.append (cmd_key)
+            else:
+                xml2ly_option_list.append (cmd_key + '=' + value)
+        if ('.mxl' in name) and ('--compressed' not in xml2ly_option_list):
+            xml2ly_option_list.append ('--compressed')
+            self.compressed = True
+        opts = " ".join (xml2ly_option_list)
+        progress (_ ("Converting MusicXML file `%s'...\n") % self.filename)
+
+        ly_code = self.filter_pipe (self.contents, 'musicxml2ly %s --out=- - ' % opts)
+        return ly_code
+
+    def ly (self):
+        if self.converted_ly == None:
+            self.converted_ly = self.convert_from_musicxml ()
+        name = self.filename
+        return ('\\sourcefilename \"%s\"\n\\sourcefileline 0\n%s'
+                % (name, self.converted_ly))
+
+    def additional_files_required (self, base, full):
+        result = [];
+        if self.compressed:
+            result.append (base + '.mxl')
+        else:
+            result.append (base + '.xml')
+        return result
+
+    def write_ly (self):
+        base = self.basename ()
+        path = os.path.join (self.global_options.lily_output_dir, base)
+        directory = os.path.split(path)[0]
+        if not os.path.isdir (directory):
+            os.makedirs (directory)
+
+        # First write the XML to a file (so we can link it!)
+        if self.compressed:
+            xmlfilename = path + '.mxl'
+        else:
+            xmlfilename = path + '.xml'
+        if os.path.exists (xmlfilename):
+            diff_against_existing = self.filter_pipe (self.contents, 'diff -u %s - ' % xmlfilename)
+            if diff_against_existing:
+                warning (_ ("%s: duplicate filename but different contents of orginal file,\n\
+printing diff against existing file.") % xmlfilename)
+                ly.stderr_write (diff_against_existing)
+        else:
+            out = file (xmlfilename, 'w')
+            out.write (self.contents)
+            out.close ()
+
+        # also write the converted lilypond
+        filename = path + '.ly'
+        if os.path.exists (filename):
+            diff_against_existing = self.filter_pipe (self.full_ly (), 'diff -u %s -' % filename)
+            if diff_against_existing:
+                warning (_ ("%s: duplicate filename but different contents of converted lilypond file,\n\
+printing diff against existing file.") % filename)
+                ly.stderr_write (diff_against_existing)
+        else:
+            out = file (filename, 'w')
+            out.write (self.full_ly ())
+            out.close ()
+            file (path + '.txt', 'w').write ('image of music')
+
+
+
 class LilyPondVersionString (Snippet):
     """A string that does not require extra memory."""
     def __init__ (self, type, match, formatter, line_number, global_options):
@@ -851,4 +933,5 @@ snippet_type_to_class = {
     'lilypond': LilypondSnippet,
     'include': IncludeSnippet,
     'lilypondversion': LilyPondVersionString,
+    'musicxml_file': MusicXMLFileSnippet,
 }
index 03f723754a43619cf055d82d9f89601ffeda3356..779cf566740aa8498d8d2f88a80b79747052c657 100644 (file)
@@ -1,8 +1,13 @@
 # -*- coding: utf-8 -*-
 
 import re
+import tempfile
+import subprocess
 import book_base as BookBase
 from book_snippets import *
+import lilylib as ly
+global _;_=ly._
+
 
 # Recognize special sequences in the input.
 #
@@ -58,6 +63,15 @@ TexInfo_snippet_res = {
             .*?
            @end\s+ignore))\s''',
 
+    'musicxml_file': r'''(?mx)
+          ^(?P<match>
+          @musicxmlfile\s*(
+          \[
+           \s*(?P<options>.*?)\s*
+          \])?\s*{
+           (?P<filename>\S+)
+          })''',
+
     'singleline_comment': r'''(?mx)
           ^.*
           (?P<match>
@@ -103,7 +117,7 @@ TexInfo_output = {
 @end ifinfo
 @html
 <p>
- <a href="%(base)s.ly">
+ <a href="%(base)s%(ext)s">
   <img align="middle"
        border="0"
        src="%(image)s"
@@ -115,7 +129,7 @@ TexInfo_output = {
 
     PRINTFILENAME: '''
 @html
-<a href="%(base)s.ly">
+<a href="%(base)s%(ext)s">
 @end html
 @file{%(filename)s}
 @html
@@ -125,10 +139,6 @@ TexInfo_output = {
 
     QUOTE: r'''@quotation
 %(str)s@end quotation
-''',
-
-    NOQUOTE: r'''@format
-%(str)s@end format
 ''',
 
     VERBATIM: r'''@exampleindent 0
@@ -149,6 +159,97 @@ texinfo_line_widths = {
 }
 
 
+###
+# Retrieve dimensions from texinfo
+TEXINFO_INSPECTION_DOCUMENT = r'''
+\input texinfo
+@setfilename Texinfo_width_test
+@settitle Texinfo width test
+%(preamble)s
+
+@message{Global: textwidth=@the@hsize,exampleindent=@the@lispnarrowing}
+
+@bye
+'''
+
+def get_texinfo_width_indent (source, global_options):
+    #TODO: Check for end of header command "@c %**end of header"
+    #      only use material before that comment ?
+
+    # extract all relevant papter settings from the input:
+    pagesize = None
+    texinfo_paper_size_regexp = r'''(@(?:afourpaper|afourwide|afourlatex|afivepaper|smallbook|letterpaper))''';
+    m = re.search (texinfo_paper_size_regexp, source);
+    if m:
+        pagesize = m.group (1)
+
+    relevant_settings_regexp = r'''(@(?:fonttextsize|pagesizes|cropmarks|exampleindent).*)\n''';
+    m = re.findall (relevant_settings_regexp, source);
+    if pagesize:
+        m.insert (0, pagesize);
+    # all relevant options to insert into the test document:
+    preamble = "\n".join (m);
+
+    texinfo_document = TEXINFO_INSPECTION_DOCUMENT % {'preamble': preamble}
+
+    (handle, tmpfile) = tempfile.mkstemp('.texi')
+    outfile = os.path.splitext (tmpfile)[0] + '.pdf'
+
+    tmp_handle = os.fdopen (handle,'w')
+    tmp_handle.write (texinfo_document)
+    tmp_handle.close ()
+
+    # Work around a texi2pdf bug: if LANG=C is not given, a broken regexp is
+    # used to detect relative/absolute pathes, so the absolute path is not
+    # detected as such and this command fails:
+    progress (_ ("Running texi2pdf on file %s to detect default page settings.\n") % tmpfile);
+
+    # execute the command and pipe stdout to the parameter_string:
+    cmd = 'LC_ALL=C %s -c -o %s %s' % (global_options.texinfo_program, outfile, tmpfile);
+    if (global_options.verbose):
+        progress ("Executing: %s\n" % cmd);
+
+    proc = subprocess.Popen (cmd,
+        universal_newlines=True, shell=True,
+        stdout=subprocess.PIPE, stderr=subprocess.PIPE)
+    (parameter_string, error_string) = proc.communicate ()
+    if proc.returncode != 0:
+        warning (_ ("Unable to auto-detect default settings:\n%s")
+                 % error_string)
+    os.unlink (tmpfile)
+    if os.path.exists(outfile):
+        os.unlink (outfile)
+
+    # Find textwidth and exampleindent and format it as \\mm or \\in
+    # Use defaults if they cannot be extracted
+    textwidth = 0
+    m = re.search ('textwidth=([0-9.]+)pt', parameter_string)
+    if m:
+        val = float (m.group (1))/72.27
+        if pagesize and pagesize.startswith ("@afour"):
+            textwidth = "%g\\mm" % round (val*25.4, 3);
+        else:
+            textwidth = "%g\\in" % round (val, 3);
+    else:
+        textwidth = texinfo_line_widths.get(pagesize, "6\\in")
+
+    exampleindent = 0
+    m = re.search ('exampleindent=([0-9.]+)pt', parameter_string)
+    if m:
+        val = float (m.group (1))/72.27
+        if pagesize and pagesize.startswith ("@afour"):
+            exampleindent = "%g\\mm" % round (val*25.4, 3);
+        else:
+            exampleindent = "%g\\in" % round (val, 3);
+    else:
+        exampleindent = "0.4\\in"
+
+    retval = {LINE_WIDTH: textwidth, EXAMPLEINDENT: exampleindent}
+    if (global_options.verbose):
+        progress ("Auto-detected values are: %s\n" % retval);
+    return retval;
+
+
 
 texinfo_lang_re = re.compile ('(?m)^@documentlanguage (.*?)( |$)')
 
@@ -176,19 +277,10 @@ class BookTexinfoOutputFormat (BookBase.BookOutputFormat):
         else:
             return ''
 
-    def get_line_width (self, source):
-        for regex in texinfo_line_widths:
-            # FIXME: @layout is usually not in
-            # chunk #0:
-            #
-            #  \input texinfo @c -*-texinfo-*-
-            #
-            # Bluntly search first K items of
-            # source.
-            # s = chunks[0].replacement_text ()
-            if re.search (regex, source[:1024]):
-                return texinfo_line_widths[regex]
-        return None
+    def init_default_snippet_options (self, source):
+        texinfo_defaults = get_texinfo_width_indent (source, self.global_options);
+        self.default_snippet_options.update (texinfo_defaults)
+        BookBase.BookOutputFormat.init_default_snippet_options (self, source)
 
     def adjust_snippet_command (self, cmd):
         if '--formats' not in cmd:
@@ -242,17 +334,10 @@ class BookTexinfoOutputFormat (BookBase.BookOutputFormat):
             rep['verb'] = snippet.verb_ly ()
             substr = self.output[VERBATIM] % rep
         substr += self.output_info (basename, snippet)
-        if LILYQUOTE in snippet.option_dict:
+        if QUOTE in snippet.option_dict:
             substr = self.output[QUOTE] % {'str': substr}
         str += substr
 
-#                str += ('@ifinfo\n' + self.output_info () + '\n@end ifinfo\n')
-#                str += ('@tex\n' + self.output_latex () + '\n@end tex\n')
-#                str += ('@html\n' + self.output_html () + '\n@end html\n')
-
-        if QUOTE in snippet.option_dict:
-            str = self.output[QUOTE] % {'str': str}
-
         # need par after image
         str += '\n'
 
index fc35924b66cdb1cc570d55db8a9aa9fccb3bc942..b1e3fefd453112ca010cc1c00144874f818872cc 100644 (file)
@@ -3013,6 +3013,12 @@ def conv (str):
     str = re.sub (r'\\(cresc|dim|endcresc|enddim)\b', r'\\deprecated\1', str)
     return str
 
+@rule ((2, 13, 27),
+       ("interval-translate -> coord-translate"))
+def conv (str):
+    str = re.sub ('interval-translate', 'coord-translate', str)
+    return str
+
 @rule ((2, 13, 29),
        _ ("Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n\
 \"accordion.accEtcbase\" -> \"accordion.etcbass\""))
@@ -3207,14 +3213,6 @@ def conv(str):
 def conv (str):
     return str
 
-@rule ((2, 15, 2),
-       _ ("Change in internal property for MultiMeasureRest"))
-def conv (str):
-    if re.search (r'use-breve-rest',str):
-        stderr_write (NOT_SMART % _("use-breve-rest.  This internal property has been replaced by round-to-longer-rest and usable-duration-logs.\n"))
-        stderr_write (UPDATE_MANUALLY)
-    return str
-
 @rule ((2, 15, 7),
     _ ("Handling of non-automatic footnotes."))
 def conv(str):
@@ -3224,6 +3222,16 @@ def conv(str):
         stderr_write (UPDATE_MANUALLY)
     return str
 
+@rule ((2, 15, 9),
+       _ ("Change in internal property for MultiMeasureRest"))
+def conv (str):
+    if re.search (r'use-breve-rest',str):
+        stderr_write ("\n")
+        stderr_write (NOT_SMART % "use-breve-rest.\n")
+        stderr_write (_ ("This internal property has been replaced by round-up-to-longer-rest, round-up-exceptions and usable-duration-logs.\n"))
+        stderr_write (UPDATE_MANUALLY)
+    return str
+
 
 # Guidelines to write rules (please keep this at the end of this file)
 #
index 93cd2c02d8b3e2ce30f38c851f7f5d06547f6edb..b58d8aca89ef4382f967463f82e5f67366597799 100644 (file)
             (ice-9 optargs))
 
 (define-public (ly:system command)
-  (if (ly:get-option 'verbose)
-      (begin
-       (ly:message (_ "Invoking `~a'...") (string-join command)))
-      (ly:progress "\n"))
+  (ly:debug (_ "Invoking `~a'...") (string-join command))
   (let ((status (apply ly:spawn command)))
     (if (> status 0)
        (begin
index a30036d1afaaeca7c20becf8a5c3ebe3ecc8d4d1..83adcb0e4822d1ebb4501c67931fd90103e5181b 100644 (file)
@@ -53,7 +53,7 @@ FIXME: func, options/context have changed
 
 See @file{double-plus-new-chord-name.scm} for the signature of @var{style}.
 @var{pitches}, @var{bass}, and @var{inversion} are lily pitches.
-@var{options} is an alist-alist (see @file{input/test/dpncnt.ly})."
+@var{options} is an alist-alist (see @file{input/@/test/@/dpncnt.ly})."
 
   (define (step-nr pitch)
     (let* ((pitch-nr (+ (* 7 (ly:pitch-octave pitch))
index 79b018992ac34650c879c3c16dfb45f29b914da5..0542893cc02726e42a400f494d861d8dec90ce66 100644 (file)
           (list-ref '("eses" "es" "" "is" "isis") (+ 2 (cdr n-a)))))))))
 
 (define-public ((chord-name->italian-markup re-with-eacute) pitch lowercase?)
-  "Return pitch markup for @var{pitch}, using italian/french note names.
+  "Return pitch markup for @var{pitch}, using Italian/@/French note names.
 If @var{re-with-eacute} is set to @code{#t}, french `ré' is returned for
 pitch@tie{}D instead of `re'."
 
@@ -170,3 +170,31 @@ FOOBAR-MARKUP) if OMIT-ROOT is given and non-false.
         (alist (map chord-to-exception-entry elts)))
     (filter (lambda (x) (cdr x)) alist)))
 
+(define-public (capo-handler pitches bass inversion context)
+  (let ((chord-function
+          (ly:context-property context 'chordNameFunction 'jazz-chord-names))
+        (capo-pitch (ly:context-property context 'capoPitch #f)))
+    (if (not capo-pitch)
+        (chord-function pitches bass inversion context)  ;; call the chordNameFunction as of old
+        (let* ((new-pitches   ;; else transpose the pitches and do the chord twice
+               (map (lambda (p)
+                       (ly:pitch-transpose p capo-pitch))
+                    pitches))
+               (new-bass
+                 (if (ly:pitch? bass)
+                     (ly:pitch-transpose bass capo-pitch)
+                     '()))
+               (new-inversion
+                 (if (ly:pitch? inversion)
+                     (ly:pitch-transpose inversion capo-pitch)
+                     '()))
+               (capo-markup
+                 (make-parenthesize-markup
+                   (chord-function new-pitches new-bass new-inversion context)))
+               (name-markup (chord-function pitches bass  inversion context))
+               (capo-vertical (ly:context-property context 'capoVertical #f)))
+          (if capo-vertical
+              (make-column-markup (list name-markup capo-markup))
+              (make-line-markup (list name-markup
+                                      (make-hspace-markup 1)
+                                      capo-markup)))))))
index dab5211f14372444171626f23fb0ef3120175ee8..a238998d033cc77fc841b48ceb4e4b66ec5cc8aa 100644 (file)
@@ -98,7 +98,7 @@ printed.  @code{(#t . #f)} does not make sense.
 
 @end table")
      (autoBeamCheck ,procedure? "A procedure taking three
-arguments, @var{context}, @var{dir} [start/stop (-1 or 1)], and
+arguments, @var{context}, @var{dir} [start/@/stop (-1 or 1)], and
 @var{test} [shortest note in the beam].  A non-@code{#f} return value
 starts or stops the auto beam.")
      (autoBeaming ,boolean? "If set to true then beams are generated
@@ -135,6 +135,8 @@ that normally end on beats.")
      (beatStructure ,list? "List of @code{baseMoment}s that are combined
 to make beats.")
 
+     (capoPitch ,ly:pitch? "The pitch to transpose chords down by when using the capo.")
+     (capoVertical ,boolean? "Whether to display actual and transposed pitches above each other or not.")
      (chordChanges ,boolean? "Only show changes in chords scheme?")
      (chordNameExceptions ,list? "An alist of chord exceptions.
 Contains @code{(@var{chord} . @var{markup})} entries.")
@@ -239,7 +241,7 @@ for a bass figure.")
      (figuredBassPlusDirection ,ly:dir? "Where to put plus signs
 relative to the main figure.")
      (fingeringOrientations ,list? "A list of symbols, containing
-@samp{left}, @samp{right}, @samp{up} and/or @samp{down}.  This list
+@samp{left}, @samp{right}, @samp{up} and/@/or @samp{down}.  This list
 determines where fingerings are put relative to the chord being
 fingered.")
      (firstClef ,boolean? "If true, create a new clef when starting a
@@ -247,7 +249,7 @@ staff.")
      (followVoice ,boolean? "If set, note heads are tracked across
 staff switches by a thin line.")
      (fontSize ,number? "The relative size of all grobs in a context.")
-     (forbidBreak ,boolean? "If set to @code{##t}, prevent a line break
+     (forbidBreak ,boolean? "If set to @code{#t}, prevent a line break
 at this point.")
      (forceClef ,boolean? "Show clef symbol, even if it has not
 changed.  Only active for the first clef after the property is set, not
@@ -322,7 +324,7 @@ containing @code{(@var{step} . @var{alter})} or @code{((@var{octave} .
 alterations, use symbols, e.g. @code{keySignature = #`((6 . ,FLAT))}.")
 
 
-     (lyricMelismaAlignment ,ly:dir? "Alignment to use for a melisma syllable.")
+     (lyricMelismaAlignment ,number? "Alignment to use for a melisma syllable.")
 
 
      (majorSevenSymbol ,markup? "How should the major 7th be formatted
@@ -339,7 +341,7 @@ we had.  This can be set manually to create incomplete measures.")
      (melismaBusyProperties ,list? "A list of properties (symbols) to
 determine whether a melisma is playing.  Setting this property will
 influence how lyrics are aligned to notes.  For example, if set to
-@code{#'(melismaBusy beamMelismaBusy)}, only manual melismata and
+@code{'(melismaBusy beamMelismaBusy)}, only manual melismata and
 manual beams are considered.  Possible values include
 @code{melismaBusy}, @code{slurMelismaBusy}, @code{tieMelismaBusy}, and
 @code{beamMelismaBusy}.")
@@ -477,7 +479,7 @@ subdivided at @code{baseMoment} positions by only drawing one beam over the beat
      (suggestAccidentals ,boolean? "If set, accidentals are typeset as
 cautionary suggestions over the note.")
      (systemStartDelimiter ,symbol? "Which grob to make for the start
-of the system/staff?  Set to @code{SystemStartBrace},
+of the system/@/staff?  Set to @code{SystemStartBrace},
 @code{SystemStartBracket} or @code{SystemStartBar}.")
      (systemStartDelimiterHierarchy ,pair? "A nested list, indicating
 the nesting of a start delimiters.")
@@ -496,7 +498,7 @@ minute.")
 follow each other directly.  This can be used for writing out
 arpeggios.")
      (timeSignatureFraction ,number-pair? "A pair of numbers,
-signifying the time signature.  For example, @code{#'(4 . 4)} is a
+signifying the time signature.  For example, @code{'(4 . 4)} is a
 4/4 time signature.")
      (timeSignatureSettings ,cheap-list? "A nested alist of settings for
 time signatures.  Contains elements for various time signatures.  The
@@ -570,7 +572,7 @@ are described in @rinternals{bar-line-interface}.")
 barcheck fail?")
      (beamMelismaBusy ,boolean? "Signal if a beam is present.")
      (busyGrobs ,list? "A queue of @code{(@var{end-moment} .
-@var{GROB})} cons cells.  This is for internal (C++) use only.  This
+@var{grob})} cons cells.  This is for internal (C++) use only.  This
 property contains the grobs which are still busy (e.g. note heads,
 spanners, etc.).")
 
@@ -624,7 +626,7 @@ is not set")
 
      (scriptDefinitions ,list? "The description of scripts.  This is
 used by the @code{Script_engraver} for typesetting note-superscripts
-and subscripts.  See @file{scm/script.scm} for more information.")
+and subscripts.  See @file{scm/@/script.scm} for more information.")
      (slurMelismaBusy ,boolean? "Signal if a slur is present.")
      (stavesFound ,grob-list? "A list of all staff-symbols found.")
 
index 735b9c78956e4e602f41478525379bb344880232..7b6535f1e38ef069e7464e32b856673f4df3b6cc 100644 (file)
@@ -84,7 +84,7 @@ note)."
 (ly:add-interface
  'footnote-interface
  "Make a footnote."
- '(footnote-text))
+ '(automatically-numbered footnote-text))
 
 (ly:add-interface
  'footnote-spanner-interface
index 1b318deaf268d820dd4fdeb498de6f5cbdf0a801..ecd67e5b122df92430f7465fc9f61bc1b3e1b67d 100644 (file)
@@ -38,7 +38,7 @@
 included in this script's support.")
      (after-line-breaking ,boolean? "Dummy property, used to trigger
 callback for @code{after-line-breaking}.")
-     (align-dir ,ly:dir? "Which side to align? @code{-1}: left side,
+     (align-dir ,ly:dir? "Which side to align? @w{@code{-1}}: left side,
 @code{0}: around center of width, @code{1}: right side.")
      (allow-loose-spacing ,boolean? "If set, column can be detached
 from main spacing.")
@@ -58,6 +58,8 @@ arpeggio squiggly line.")
      (auto-knee-gap ,ly:dimension? "If a gap is found between note
 heads where a horizontal beam fits that is larger than this number,
 make a kneed beam.")
+     (automatically-numbered ,boolean? "Should a footnote be automatically
+numbered?")
      (average-spacing-wishes ,boolean? "If set, the spacing wishes are
 averaged over staves.")
      (avoid-note-head ,boolean? "If set, the stem of a chord does not
@@ -164,12 +166,12 @@ stick out of its bounds?")
 ;;
      (c0-position ,integer? "An integer indicating the position of
 middle@tie{}C.")
-     (circled-tip ,boolean? "Put a circle at start/end of
-hairpins (al/del niente).")
+     (circled-tip ,boolean? "Put a circle at start/@/end of
+hairpins (al/@/del niente).")
      (clip-edges ,boolean? "Allow outward pointing beamlets at the
 edges of beams?")
      (collapse-height ,ly:dimension? "Minimum height of system start
-delimiter.  If equal or smaller, the bracket/brace/line is removed.")
+delimiter.  If equal or smaller, the bracket/@/brace/@/line is removed.")
      (collision-interfaces ,list? "A list of interfaces for which
 automatic beam-collision resolution is run.")
      (collision-voice-only ,boolean? "Does automatic beam collsion apply
@@ -213,13 +215,13 @@ looking at the top of the Internals Reference page for each interface
 having a @code{details} property.")
      (digit-names ,vector? "Names for string finger digits.")
      (direction ,ly:dir? "If @code{side-axis} is @code{0} (or
-@code{#X}), then this property determines whether the object is placed
-@code{#LEFT}, @code{#CENTER} or @code{#RIGHT} with respect to the
+@code{X}), then this property determines whether the object is placed
+@code{LEFT}, @code{CENTER} or @code{RIGHT} with respect to the
 other object.  Otherwise, it determines whether the object is placed
-@code{#UP}, @code{#CENTER} or @code{#DOWN}.  Numerical values may also
-be used: @code{#UP}=@code{1}, @code{#DOWN}=@code{-1},
-@code{#LEFT}=@code{-1}, @code{#RIGHT}=@code{1},
-@code{#CENTER}=@code{0}.")
+@code{UP}, @code{CENTER} or @code{DOWN}.  Numerical values may also
+be used: @code{UP}=@code{1}, @code{DOWN}=@w{@code{-1}},
+@code{LEFT}=@w{@code{-1}}, @code{RIGHT}=@code{1},
+@code{CENTER}=@code{0}.")
      (dot-count ,integer? "The number of dots.")
      (dot-negative-kern ,number? "The space to remove between a dot
 and a slash in percent repeat glyphs.  Larger values bring the two
@@ -272,17 +274,7 @@ Y@tie{}dimension by this much.")
 ;;
 ;; f
 ;;
-     (flag ,ly:stencil? "A function returning the full flag stencil
-for the @code{Stem}, which is passed to the function as the only
-argument.  The default ly:stem::calc-stencil function uses the
-@code{flag-style} property to determine the correct glyph for the
-flag.  By providing your own function, you can create arbitrary
-flags.")
      (flag-count ,number? "The number of tremolo beams.")
-     (flag-style ,symbol? "A symbol determining what style of flag
-glyph is typeset on a @code{Stem}.  Valid options include @code{'()}
-for standard flags, @code{'mensural} and @code{'no-flag}, which
-switches off the flag.")
      (font-encoding ,symbol? "The font encoding is the broadest
 category for selecting a font.  Currently, only lilypond's system
 fonts (Emmentaler) are using this property.  Available
@@ -300,7 +292,7 @@ include @code{medium}, @code{bold}, @code{bold-narrow}, etc.")
 include @code{upright}, @code{italic}, @code{caps}.")
      (font-size ,number? "The font size, compared to the
 @q{normal}@tie{}size.  @code{0}@tie{}is style-sheet's normal size,
-@code{-1} is smaller, @code{+1} is bigger.  Each step of@tie{}1 is
+@w{@code{-1}} is smaller, @code{+1} is bigger.  Each step of@tie{}1 is
 approximately 12% larger; 6@tie{}steps are exactly a factor@tie{}2
 larger.  Fractional values are allowed.")
      (footnote-text ,markup? "A footnote for the grob.")
@@ -356,8 +348,8 @@ the center of the fret in direction parallel to strings.
 Default@tie{}0.
 @item
 @code{label-dir} -- Side to which the fret label is attached.
-@code{-1}, @code{#LEFT}, or @code{#DOWN} for left or down; @code{1},
-@code{#RIGHT}, or @code{#UP} for right or up.  Default @code{#RIGHT}.
+@w{@code{-1}}, @code{LEFT}, or @code{DOWN} for left or down; @code{1},
+@code{RIGHT}, or @code{UP} for right or up.  Default @code{RIGHT}.
 @item
 @code{mute-string} -- Character string to be used to indicate muted
 string.  Default @code{\"x\"}.
@@ -434,8 +426,8 @@ be included in harp-pedal-details include the following:
 
 @itemize @bullet
 @item
-@code{box-offset} -- Vertical shift of the center of flat/sharp pedal
-boxes above/below the horizontal line.  Default value@tie{}0.8.
+@code{box-offset} -- Vertical shift of the center of flat/@/sharp pedal
+boxes above/@/below the horizontal line.  Default value@tie{}0.8.
 @item
 @code{box-width} -- Width of each pedal box.  Default value@tie{}0.4.
 @item
@@ -698,7 +690,7 @@ attachments of spanners to edges.")
      (right-padding ,ly:dimension? "Space to insert on the right side
 of an object (e.g., between note and its accidentals).")
      (rotation ,list? "Number of degrees to rotate this object, and
-what point to rotate around.  For example, @code{#'(45 0 0)} rotates
+what point to rotate around.  For example, @code{'(45 0 0)} rotates
 by 45 degrees around the center of this object.")
      (round-up-to-longer-rest ,boolean? "Displays the longer multi-measure
 rest when the length of a measure is between two values of
@@ -716,7 +708,7 @@ stem distance.")
      (script-priority ,number? "A sorting key that determines in what
 order a script is within a stack of scripts.")
      (self-alignment-X ,number? "Specify alignment of an object.  The
-value @code{-1} means left aligned, @code{0}@tie{}centered, and
+value @w{@code{-1}} means left aligned, @code{0}@tie{}centered, and
 @code{1}@tie{}right-aligned in X@tie{}direction.  Other numerical
 values may also be specified.")
      (self-alignment-Y ,number? "Like @code{self-alignment-X} but for
@@ -732,9 +724,9 @@ space for the shortest duration.  This is expressed in
 shortest note playing here.")
      (shortest-starter-duration ,ly:moment? "The duration of the
 shortest note that starts here.")
-     (side-axis ,number? "If the value is @code{#X} (or
+     (side-axis ,number? "If the value is @code{X} (or
 equivalently@tie{}@code{0}), the object is placed horizontally next to
-the other object.  If the value is @code{#Y} or@tie{}@code{1}, it is
+the other object.  If the value is @code{Y} or@tie{}@code{1}, it is
 placed vertically.")
      (side-relative-direction ,ly:dir? "Multiply direction of
 @code{direction-source} with this to get the direction of this
@@ -779,7 +771,8 @@ bounds (i.e., clefs, key signatures and time signatures) using the following
 override:
 
 @example
-\\override MultiMeasureRest #'spacing-pair = #'(staff-bar . staff-bar)
+\\override MultiMeasureRest
+  #'spacing-pair = #'(staff-bar . staff-bar)
 @end example")
      (spanner-id ,string? "An identifier to distinguish concurrent spanners.")
      (springs-and-rods ,boolean? "Dummy variable for triggering
@@ -845,10 +838,8 @@ the @code{staff-staff-spacing} property of the staff's
 structure.")
      (stem-attachment ,number-pair? "An @code{(@var{x} . @var{y})}
 pair where the stem attaches to the notehead.")
-     (stem-begin-position ,number? "Where does the stem begin (the
-position of the support-head)?")
-     (stem-end-position ,number? "Where does the stem end (the end is
-opposite to the support-head)?")
+     (stem-begin-position ,number? "User override for the
+begin position of a stem.")
      ;;[TODO: doco]
      (stem-spacing-correction ,number? "Optical correction amount for
 stems that are placed in tight configurations.  For opposite
@@ -889,7 +880,7 @@ should use @code{LEFT}.")
 @var{dir})} pairs, indicating the desired tie configuration, where
 @var{position} is the offset from the center of the staff in staff
 space and @var{dir} indicates the direction of the tie
-(@code{1}=>up, @code{-1}=>down, @code{0}=>center).  A non-pair entry
+(@code{1}=>up, @w{@code{-1}}=>down, @code{0}=>center).  A non-pair entry
 in the list causes the corresponding tie to be formatted
 automatically.")
      (to-barline ,boolean? "If true, the spanner will stop at the bar
@@ -994,8 +985,10 @@ function is to protect objects from being garbage collected.")
 
      (bars ,ly:grob-array? "An array of bar line pointers.")
      (beam ,ly:grob? "A pointer to the beam, if applicable.")
+     (bound-alignment-interfaces ,list "Interfaces to be used
+for positioning elements that align with a column.")
      (bounded-by-me ,ly:grob-array? "An array of spanners that have this
-column as start/begin point.  Only columns that have grobs or act as
+column as start/@/begin point.  Only columns that have grobs or act as
 bounds are spaced.")
      (bracket ,ly:grob? "The bracket for a number.")
 
@@ -1017,6 +1010,7 @@ the grob where this is set in.")
 in addition to notes and stems.")
 
      (figures ,ly:grob-array? "Figured bass objects for continuation line.")
+     (flag ,ly:grob? "A pointer to a @code{Flag} object.")
 
      (glissando-index ,integer? "The index of a glissando in its note
 column.")
@@ -1065,10 +1059,11 @@ objects.")
      (spanner-broken ,boolean? "Indicates whether spanner
 alignment should be broken after the current spanner.")
      (spanner-placement ,ly:dir? "The place of an annotation on a spanner.
-LEFT is for the first spanner, and RIGHT is for the last.  CENTER will
-place it on the broken spanner that falls closest to the center of the length
-of the entire spanner, although this behavior is unpredictable in situations
-with lots of rhythmic diversity.  For predictable results, use LEFT and RIGHT.")
+@code{LEFT} is for the first spanner, and @code{RIGHT} is for the last.
+@code{CENTER} will place it on the broken spanner that falls closest to the
+center of the length of the entire spanner, although this behavior is
+unpredictable in situations with lots of rhythmic diversity.  For predictable
+results, use @code{LEFT} and @code{RIGHT}.")
      (staff-grouper ,ly:grob? "The staff grouper we belong to.")
      (staff-symbol ,ly:grob? "The staff symbol grob that we are in.")
      (stem ,ly:grob? "A pointer to a @code{Stem} object.")
@@ -1165,7 +1160,7 @@ an additional stem on the right side?")
 
      (cavum ,boolean? "Is this neume outlined?")
      (context-info ,integer? "Within a ligature, the final glyph or shape of
-a head may be affected by the left and/or right neighbour head.
+a head may be affected by the left and/@/or right neighbour head.
 @code{context-info} holds for each head such information about the left and
 right neighbour, encoded as a bit mask.")
 
index ff792baedb2657918c76f15fbbe91d77989c8828..586ed1f3b1c0e4eaed48baf8e17bd5f2a1300791 100644 (file)
        (clip-edges . #t)
        (collision-interfaces . (beam-interface
                                 clef-interface
+                                flag-interface
                                 inline-accidental-interface
                                 key-signature-interface
                                 note-head-interface
                        (key-signature . (minimum-space . 3.5))
                        (time-signature . (minimum-space . 4.2))
                        (first-note . (minimum-fixed-space . 5.0))
-                       (next-note . (extra-space . 0.5))
+                       (next-note . (extra-space . 1.0))
                        (right-edge . (extra-space . 0.5))))
        (stencil . ,ly:clef::print)
        (Y-offset . ,ly:staff-symbol-referencer::callback)
                        (time-signature . (minimum-space . 4.2))
                        (custos . (minimum-space . 0.0))
                        (first-note . (minimum-fixed-space . 3.0))
-                       (next-note . (extra-space . 0.5))
+                       (next-note . (extra-space . 1.0))
                        (right-edge . (extra-space . 0.5))))
        (stencil . ,ly:clef::print)
        (Y-offset . ,ly:staff-symbol-referencer::callback)
                        (key-signature . (minimum-space . 3.5))
                        (time-signature . (minimum-space . 4.2))
                        (first-note . (minimum-fixed-space . 5.0))
-                       (next-note . (extra-space . 0.5))
+                       (next-note . (extra-space . 1.0))
                        (right-edge . (extra-space . 0.5))))
        (stencil . ,ly:clef::print)
        (Y-offset . ,ly:staff-symbol-referencer::callback)
        ;; sync with TextScript (?)
 
        (avoid-slur . around)
-       (cross-staff . ,ly:side-position-interface::calc-cross-staff)
+       (cross-staff . ,script-or-side-position-cross-staff)
        (direction . ,ly:script-interface::calc-direction)
        (font-encoding . fetaText)
        (font-size . -5)                ; don't overlap when next to heads.
                                text-interface
                                text-script-interface))))))
 
+    (Flag
+     . (
+       (stencil . ,ly:flag::print)
+       (X-extent . ,ly:flag::width)
+       (X-offset . ,ly:flag::calc-x-offset)
+       (Y-offset . ,ly:flag::calc-y-offset)
+       (meta . ((class . Item)
+                (interfaces . (flag-interface
+                                font-interface))))))
+
     (FootnoteItem
      . (
        (annotation-balloon . #f)
        (annotation-line . #t)
+       (automatically-numbered . ,(grob::calc-property-by-copy 'automatically-numbered))
        (break-visibility . ,inherit-y-parent-visibility)
        (footnote-text . ,(grob::calc-property-by-copy 'footnote-text))
        (stencil . ,ly:balloon-interface::print)
      . (
        (annotation-balloon . #f)
        (annotation-line . #t)
+       (automatically-numbered . ,(grob::calc-property-by-copy 'automatically-numbered))
        (footnote-text . ,(grob::calc-property-by-copy 'footnote-text))
        (spanner-placement . ,LEFT)
        (stencil . ,ly:balloon-interface::print-spanner)
        (fret-diagram-details . ((finger-code . below-string)))
        (stencil . ,fret-board::calc-stencil)
        (extra-spacing-height . (0.2 . -0.2))
+       (extra-spacing-width . (-0.5 . 0.5))
        (meta . ((class . Item)
                 (interfaces . (chord-name-interface
                                font-interface
     (Glissando
      . (
        (after-line-breaking . ,ly:spanner::kill-zero-spanned-time)
-       (bound-details . ((right . ((attach-dir .  ,CENTER)
-                                   (padding . 1.5)
+       (bound-details . ((right . ((attach-dir .  ,LEFT)
+                                   (end-on-accidental . #t)
+                                   (padding . 0.5)
                                      ))
-                         (left . ((attach-dir .  ,CENTER)
-                                  (padding . 1.5)
+                         (left . ((attach-dir .  ,RIGHT)
+                                  (padding . 0.5)
                                      ))
                          ))
        (gap . 0.5)
                        (key-signature . (extra-space . 0.5))
                        (cue-clef . (extra-space . 0.5))
                        (right-edge . (extra-space . 0.5))
-                       (first-note . (fixed-space . 2.5))))
+                       (first-note . (semi-fixed-space . 2.5))))
        (stencil . ,ly:key-signature-interface::print)
        (extra-spacing-width . (0.0 . 0.5))
        (Y-offset . ,ly:staff-symbol-referencer::callback)
                        (staff-bar . (extra-space . 1.1))
                        (cue-clef . (extra-space . 0.5))
                        (right-edge . (extra-space . 0.5))
-                       (first-note . (fixed-space . 2.5))))
+                       (first-note . (semi-fixed-space . 2.5))))
        (stencil . ,ly:key-signature-interface::print)
        (extra-spacing-width . (0.0 . 0.5))
        (Y-offset . ,ly:staff-symbol-referencer::callback)
     (NoteColumn
      . (
        (axes . (,X ,Y))
+       (bound-alignment-interfaces . (rhythmic-head-interface stem-interface))
        (horizontal-skylines . ,ly:separation-item::calc-skylines)
        (skyline-vertical-padding . 0.15)
        (X-extent . ,ly:axis-group-interface::width)
        (allow-loose-spacing . #t)
        (axes . (,X))
        (before-line-breaking . ,ly:paper-column::before-line-breaking)
+       (bound-alignment-interfaces . (note-column-interface))
        (horizontal-skylines . ,ly:separation-item::calc-skylines)
        (keep-inside-line . #t)
        ;; (stencil . ,ly:paper-column::print)
        (side-axis . ,Y)
 
        ;; padding set in script definitions.
+       (slur-padding . 0.2)
        (staff-padding . 0.25)
 
        (stencil . ,ly:script-interface::print)
 
        (direction . ,ly:stem::calc-direction)
        (duration-log . ,stem::calc-duration-log)
-       (flag . ,ly:stem::calc-flag)
-       (length . ,ly:stem::calc-length)
+        (length . ,stem::length)
        (neutral-direction . ,DOWN)
        (positioning-done . ,ly:stem::calc-positioning-done)
-       (stem-begin-position . ,ly:stem::calc-stem-begin-position)
-       (stem-end-position . ,ly:stem::calc-stem-end-position)
        (stem-info . ,ly:stem::calc-stem-info)
+       (stem-begin-position . ,ly:stem::calc-stem-begin-position)
        (stencil . ,ly:stem::print)
        (thickness . 1.3)
        (X-extent . ,ly:stem::width)
        (Y-extent . ,ly:stem::height)
        (Y-offset . ,ly:staff-symbol-referencer::callback)
        (meta . ((class . Item)
-                (interfaces . (font-interface
-                               stem-interface))))))
+                (interfaces . (stem-interface))))))
 
     (StemTremolo
      . (
        (stencil . ,ly:stem-tremolo::print)
        (style . ,ly:stem-tremolo::calc-style)
        (X-extent . ,ly:stem-tremolo::width)
+       (Y-offset . ,ly:stem-tremolo::calc-y-offset)
        (meta . ((class . Item)
                 (interfaces . (stem-tremolo-interface))))))
 
     (StringNumber
      . (
        (avoid-slur . around)
+       (cross-staff . ,script-or-side-position-cross-staff)
        (font-encoding . fetaText)
        (font-size . -5)                ; don't overlap when next to heads.
        (padding . 0.5)
     (TextScript
      . (
        (avoid-slur . around)
-       (cross-staff . ,ly:script-interface::calc-cross-staff)
+       (cross-staff . ,script-or-side-position-cross-staff)
        (direction . ,DOWN)
        (extra-spacing-width . (+inf.0 . -inf.0))
        (outside-staff-priority . 450)
        (non-musical . #t)
        (space-alist . (
                        (cue-clef . (extra-space . 1.5))
-                       (first-note . (fixed-space . 2.0))
+                       (first-note . (semi-fixed-space . 2.0))
                        (right-edge . (extra-space . 0.5))
                        (staff-bar . (minimum-space . 2.0))))
        (stencil . ,ly:time-signature::print)
    ly:note-head::print
    ly:dots::print
    ly:clef::print
+   ly:flag::print
+   default-flag
+   normal-flag
+   mensural-flag
+   no-flag
+   modern-straight-flag
+   old-straight-flag
    ly:key-signature-interface::print
    ly:percent-repeat-item-interface::beat-slash
    ly:text-interface::print
     (,ly:accidental-interface::height . ,ly:accidental-interface::pure-height)
     (,ly:axis-group-interface::calc-staff-staff-spacing . ,ly:axis-group-interface::calc-pure-staff-staff-spacing)
     (,ly:axis-group-interface::height . ,ly:axis-group-interface::pure-height)
+    (,ly:beam::rest-collision-callback . ,ly:beam::pure-rest-collision-callback)
     (,ly:grob::stencil-height . ,pure-stencil-height)
     (,ly:hara-kiri-group-spanner::y-extent . ,ly:hara-kiri-group-spanner::pure-height)
     (,ly:rest-collision::force-shift-callback-rest . ,pure-chain-offset-callback)
     (,ly:side-position-interface::y-aligned-side . ,ly:side-position-interface::pure-y-aligned-side)
     (,ly:slur::height . ,ly:slur::pure-height)
     (,ly:slur::outside-slur-callback . ,ly:slur::pure-outside-slur-callback)
+    (,ly:stem::calc-stem-begin-position . ,ly:stem::pure-calc-stem-begin-position)
+    (,ly:stem::calc-stem-end-position . ,ly:stem::pure-calc-stem-end-position)
+    (,stem::length . ,stem::pure-length)
     (,ly:stem::height . ,ly:stem::pure-height)
+    (,ly:stem-tremolo::calc-y-offset . ,ly:stem-tremolo::pure-calc-y-offset)
     (,ly:system::height . ,ly:system::calc-pure-height)))
 
 (define pure-functions
   (list
    parenthesize-elements
    laissez-vibrer::print
+   ly:flag::calc-y-offset
    ly:rest::y-offset-callback
    ly:staff-symbol-referencer::callback
    ly:staff-symbol::height))
   (let ((extent-callback (ly:grob-property-data grob 'Y-extent)))
     (not (eq? #f
              (or
+               (ly:unpure-pure-container? extent-callback)
               (pair? extent-callback)
               (memq extent-callback pure-functions)
               (and
                   (assq stencil pure-print-to-height-conversions)
                   (ly:stencil? stencil)))))))))
 
+;; hideous code dup below - to be cleaned up when call pure functino
+;; is eliminated and lilypond works entirely from unpure-pure-containers
+
 (define-public (call-pure-function unpure args start end)
-  (if (ly:simple-closure? unpure)
-      (ly:eval-simple-closure (car args) unpure start end)
-      (if (not (procedure? unpure))
-         unpure
-         (if (memq unpure pure-functions)
-             (apply unpure args)
-             (let ((pure (assq unpure pure-conversions-alist)))
-               (if pure
-                   (apply (cdr pure)
-                          (append
-                           (list (car args) start end)
-                           (cdr args)))))))))
+  (if (ly:unpure-pure-container? unpure)
+      (let ((unpure (ly:unpure-pure-container-pure-part unpure)))
+        (if (ly:simple-closure? unpure)
+          (ly:eval-simple-closure (car args) unpure start end)
+          (if (not (procedure? unpure))
+              unpure
+              (apply (cdr pure)
+                     (append
+                       (list (car args) start end)
+                       (cdr args))))))
+      (if (ly:simple-closure? unpure)
+          (ly:eval-simple-closure (car args) unpure start end)
+          (if (not (procedure? unpure))
+              unpure
+              (if (memq unpure pure-functions)
+                  (apply unpure args)
+                  (let ((pure (assq unpure pure-conversions-alist)))
+                    (if pure
+                        (apply (cdr pure)
+                               (append
+                                (list (car args) start end)
+                                (cdr args))))))))))
index 38bf9623dc2167ade13f8b23459c70bbdb1eb842..18728e57d9809de9b1865209cfb5e7677103b59d 100644 (file)
@@ -60,7 +60,7 @@
 ;;;     functions that take a markup as their last argument.
 ;;;
 ;;;   args-signature
-;;;     the arguments signature, i.e. a list of type predicates which
+;;;     the arguments signature, i.e., a list of type predicates which
 ;;;     are used to type check the arguments, and also to define the general
 ;;;     argument types (markup, markup-list, scheme) that the command is
 ;;;     expecting.
 ;;;
 ;;;   category
 ;;;     for documentation purpose, builtin markup commands are grouped by
-;;;     category. This can be any symbol. When documentation is generated,
+;;;     category.  This can be any symbol.  When documentation is generated,
 ;;;     the symbol is converted to a capitalized string, where hyphens are
 ;;;     replaced by spaces.
 ;;;
 ;;;   property-bindings
 ;;;     this is used both for documentation generation, and to ease
-;;;     programming the command itself. It is list of
+;;;     programming the command itself.  It is list of
 ;;;        (property-name default-value)
 ;;;     or (property-name)
-;;;     elements. Each property is looked-up in the `props' argument, and
+;;;     elements.  Each property is looked-up in the `props' argument, and
 ;;;     the symbol naming the property is bound to its value.
 ;;;     When the property is not found in `props', then the symbol is bound
-;;;     to the given default value. When no default value is given, #f is
+;;;     to the given default value.  When no default value is given, #f is
 ;;;     used instead.
 ;;;     Thus, using the following property bindings:
 ;;;       ((thickness 0.1)
 ;;;         ..body..)
 ;;;     When a command `B' internally calls an other command `A', it may
 ;;;     desirable to see in `B' documentation all the properties and
-;;;     default values used by `A'. In that case, add `A-markup' to the
-;;;     property-bindings of B. (This is used when generating
+;;;     default values used by `A'.  In that case, add `A-markup' to the
+;;;     property-bindings of B.  (This is used when generating
 ;;;     documentation, but won't create bindings.)
 ;;;
 ;;;   documentation-string
 ;;;     the command documentation string (used to generate manuals)
 ;;;
 ;;;   body
-;;;     the command body. The function is supposed to return a stencil.
+;;;     the command body.  The function is supposed to return a stencil.
 ;;;
 ;;; Each markup command definition shall have a documentation string
 ;;; with description, syntax and example.
@@ -270,8 +270,8 @@ the PDF backend.
   "
 @cindex referencing page numbers in text
 
-Add a link to the page @var{page-number} around @var{arg}. This only works in
-the PDF backend.
+Add a link to the page @var{page-number} around @var{arg}.  This only works
+in the PDF backend.
 
 @lilypond[verbatim,quote]
 \\markup {
@@ -292,12 +292,14 @@ the PDF backend.
   "
 @cindex referencing page labels in text
 
-Add a link to the page holding label @var{label} around @var{arg}. This
+Add a link to the page holding label @var{label} around @var{arg}.  This
 only works in the PDF backend.
 
 @lilypond[verbatim,quote]
 \\markup {
-  \\with-link #\"label\" { \\italic { This links to the page containing the label... } }
+  \\with-link #\"label\" {
+    \\italic { This links to the page containing the label... }
+  }
 }
 @end lilypond"
   (let* ((arg-stencil (interpret-markup layout props arg))
@@ -860,13 +862,15 @@ Inline an image of music.
       indent = 0.0\\cm
       \\context {
         \\Score
-        \\override RehearsalMark #'break-align-symbols =
-          #'(time-signature key-signature)
-        \\override RehearsalMark #'self-alignment-X = #LEFT
+        \\override RehearsalMark
+          #'break-align-symbols = #'(time-signature key-signature)
+        \\override RehearsalMark
+          #'self-alignment-X = #LEFT
       }
       \\context {
         \\Staff
-        \\override TimeSignature #'break-align-anchor-alignment = #LEFT
+        \\override TimeSignature
+          #'break-align-anchor-alignment = #LEFT
       }
     }
   }
@@ -926,6 +930,7 @@ the use of @code{\\simple} is unnecessary.
 (define-markup-command (tied-lyric layout props str)
   (string?)
   #:category music
+  #:properties ((word-space))
   "
 @cindex simple text strings with tie characters
 
@@ -938,19 +943,18 @@ Like simple-markup, but use tie characters for @q{~} tilde symbols.
 @end lilypond"
   (if (string-contains str "~")
       (let*
-         ((parts (string-split str #\~))
-          (tie-str (ly:wide-char->utf-8 #x203f))
+         ((half-space (/ word-space 2))
+          (parts (string-split str #\~))
+          (tie-str (markup #:hspace half-space
+                           #:musicglyph "ties.lyric"
+                           #:hspace half-space))
           (joined  (list-join parts tie-str))
           (join-stencil (interpret-markup layout props tie-str))
           )
 
        (interpret-markup layout
-                         (prepend-alist-chain
-                          'word-space
-                          (/ (interval-length (ly:stencil-extent join-stencil X)) -3.5)
-                          props)
-                         (make-line-markup joined)))
-                          ;(map (lambda (s) (interpret-markup layout props s)) parts))
+                         props
+                         (make-concat-markup joined)))
       (interpret-markup layout props str)))
 
 (define-public empty-markup
@@ -1335,9 +1339,10 @@ the line width, where @var{X} is the number of staff spaces.
 \\header {
   title = \"My title\"
   myText = \"Lorem ipsum dolor sit amet, consectetur adipisicing
-    elit, sed do eiusmod tempor incididunt ut labore et dolore magna
-    aliqua.  Ut enim ad minim veniam, quis nostrud exercitation ullamco
-    laboris nisi ut aliquip ex ea commodo consequat.\"
+    elit, sed do eiusmod tempor incididunt ut labore et dolore
+    magna aliqua.  Ut enim ad minim veniam, quis nostrud
+    exercitation ullamco laboris nisi ut aliquip ex ea commodo
+    consequat.\"
 }
 
 \\paper {
@@ -1678,7 +1683,7 @@ Align @var{arg} in @var{axis} direction to the @var{dir} side.
   "
 @cindex setting horizontal text alignment
 
-Set horizontal alignment.  If @var{dir} is @code{-1}, then it is
+Set horizontal alignment.  If @var{dir} is @w{@code{-1}}, then it is
 left-aligned, while @code{+1} is right.  Values in between interpolate
 alignment accordingly.
 
@@ -1895,6 +1900,29 @@ returns an empty markup.
     (interpret-markup layout props (list anonymous-with-signature arg))))
 
 (define-markup-command (footnote layout props mkup note)
+  (markup? markup?)
+  #:category other
+  "Have footnote @var{note} act as an annotation to the markup @var{mkup}.
+
+@lilypond[verbatim,quote]
+\\markup {
+  \\auto-footnote a b
+  \\override #'(padding . 0.2)
+  \\auto-footnote c d
+}
+@end lilypond
+The footnote will not be annotated automatically."
+  (ly:stencil-combine-at-edge
+    (interpret-markup layout props mkup)
+    X
+    RIGHT
+    (ly:make-stencil
+      `(footnote (gensym "footnote") #f ,(interpret-markup layout props note))
+      '(0 . 0)
+      '(0 . 0))
+    0.0))
+
+(define-markup-command (auto-footnote layout props mkup note)
   (markup? markup?)
   #:category other
   #:properties ((raise 0.5)
@@ -1903,11 +1931,12 @@ returns an empty markup.
 
 @lilypond[verbatim,quote]
 \\markup {
-  \\footnote a b
+  \\auto-footnote a b
   \\override #'(padding . 0.2)
-  \\footnote c d
+  \\auto-footnote c d
 }
-@end lilypond"
+@end lilypond
+The footnote will be annotated automatically."
   (let* ((markup-stencil (interpret-markup layout props mkup))
          (auto-numbering (ly:output-def-lookup layout
                                                'footnote-auto-numbering))
@@ -1965,7 +1994,7 @@ returns an empty markup.
   (ly:stencil-add
     main-stencil
     (ly:make-stencil
-      `(footnote ,footnote-hash ,(interpret-markup layout props note))
+      `(footnote ,footnote-hash #t ,(interpret-markup layout props note))
       '(0 . 0)
       '(0 . 0)))))
 
@@ -2515,13 +2544,13 @@ normal text font, no matter what font was used earlier.
 @lilypond[verbatim,quote]
 \\markup {
   \\huge \\bold \\sans \\caps {
-    Some text with font overrides
+    huge bold sans caps
     \\hspace #2
     \\normal-text {
-      Default text, same font-size
+      huge normal
     }
     \\hspace #2
-    More text as before
+    as before
   }
 }
 @end lilypond"
@@ -3500,7 +3529,7 @@ a column containing several lines of text.
   "
 @cindex referencing page numbers in text
 
-Reference to a page number. @var{label} is the label set on the referenced
+Reference to a page number.  @var{label} is the label set on the referenced
 page (using the @code{\\label} command), @var{gauge} a markup used to estimate
 the maximum width of the page number, and @var{default} the value to display
 when @var{label} is not found."
@@ -3611,8 +3640,10 @@ Patterns are aligned to the @var{dir} markup.
   \\fill-with-pattern #1.5 #CENTER - left right
   \\null
   \"left-aligned :\"
-  \\override #'(line-width . 50) \\fill-with-pattern #2 #LEFT : left first
-  \\override #'(line-width . 50) \\fill-with-pattern #2 #LEFT : left second
+  \\override #'(line-width . 50)
+  \\fill-with-pattern #2 #LEFT : left first
+  \\override #'(line-width . 50)
+  \\fill-with-pattern #2 #LEFT : left second
 }
 @end lilypond"
   (let* ((pattern-x-extent (ly:stencil-extent (interpret-markup layout props pattern) X))
index 5e1159363654e42981a8677b67ff785cf91d3dc9..a6b910c7db6c60527c3ffeaef8bff2792696f211 100644 (file)
@@ -41,6 +41,8 @@ this @code{\\lyricsto} section.")
 (with @code{+} sign).")
      (augmented-slash ,boolean? "This figure is for an augmented figured bass
 (back-slashed number).")
+     (automatically-numbered ,boolean? "Should a footnote be automatically
+numbered?")
      (autosplit-end ,boolean? "Duration of event was truncated by automatic
 splitting in @code{Completion_heads_engraver}.")
 
index 8a3676b2a1ff13a497abe3959238d888bffc1fd6..4085957e032d29178d8b4ccb8bef402d8e843b8c 100644 (file)
@@ -55,7 +55,7 @@ context, and 3.@tie{}the context where @var{func} is called.")
     (ArpeggioEvent
      . ((description . "Make an arpeggio on this note.
 
-Syntax: @var{note}@code{-\\arpeggio}")
+Syntax: @w{@var{note}@code{-\\arpeggio}}")
        (types . (general-music arpeggio-event event))
        ))
 
@@ -67,7 +67,7 @@ Syntax: @var{note}@code{-\\arpeggio}")
 Syntax: @var{note}@code{x}@code{y}, where @code{x} is a direction
 (@code{^} for up or @code{_} for down), or LilyPond's choice
 (no direction specified), and where @code{y} is an articulation
-(such as @code{-.}, @code{->}, @code{\\tenuto}, @code{\\downbow}).
+(such as @w{@code{-.}}, @w{@code{->}}, @code{\\tenuto}, @code{\\downbow}).
 See the Notation Reference for details.")
        (types . (general-music event articulation-event script-event))
        ))
@@ -111,7 +111,7 @@ Syntax for manual control: @code{c8-[ c c-] c8}")
        ))
 
     (BendAfterEvent
-     . ((description . "A drop/fall/doit jazz articulation.")
+     . ((description . "A drop/@/fall/@/doit jazz articulation.")
        (types . (general-music bend-after-event event))))
 
     (BreathingEvent
@@ -609,7 +609,7 @@ octavation.")
     (TieEvent
      . ((description . "A tie.
 
-Syntax: @var{note}@code{-~}")
+Syntax: @w{@var{note}@code{-~}}")
        (types . (general-music tie-event event))
        ))
 
index 1c8fef1df92f2d9bbe3ae5bd3fac407a4a003c6c..2d85a97ed36ec7a8a39ec1d2951aadf2353dc559 100644 (file)
                          '())))
     (if (pair? alist)
        (begin
-         (if (ly:get-option 'verbose)
-             (ly:message (_ "Using `~a' note names...") str))
+         (ly:debug (_ "Using `~a' note names...") str)
          (set! pitchnames alist)
          (ly:parser-set-note-names parser alist))
        (ly:warning (_ "Could not find language `~a'.  Ignoring.") str))))
index 7b27d5201b897aef6bb125908a17766e6053df64..d377342843fda610a5532d1aac2a2829403c0f61 100644 (file)
@@ -64,7 +64,7 @@ defined in the output modules (@file{output-*.scm})."
 
 (define-public (ly:all-output-backend-commands)
   "Return the list of extra output backend commands that
-are used internally in @file{lily/stencil-interpret.cc}."
+are used internally in @file{lily/@/stencil-interpret.cc}."
   '(color
     combine-stencil
     delay-stencil-evaluation
index a2b037e2945fc283c7677c0586ec8ea3f5761a36..642e37a34f98eba5d2b0cdf3f97cd08ffc52a264 100644 (file)
   "Make a woodwind-instrument diagram.  For example, say
 
 @example
-\\markup \\woodwind-diagram #'oboe #'((lh . (d ees)) (cc . (five3qT1q)) (rh . (gis)))
+\\markup \\woodwind-diagram
+  #'oboe #'((lh . (d ees)) (cc . (five3qT1q)) (rh . (gis)))
 @end example
 
 @noindent
index 013cc2a4377bc0b373db7364221feedc96fe6d95..a033186067d998e51af075c695b9ce2fcaae7ec3 100644 (file)
@@ -56,7 +56,7 @@
        (node-children node)))
 
 (define (processing name)
-  (ly:message (_ "Processing ~S...") name))
+  (ly:basic-progress (_ "Processing ~S...") name))
 
 (define (self-evaluating? x)
   (or (number? x) (string? x) (procedure? x) (boolean? x)))
index 9e1a268e4d54ca8e9f91fc2c9a67589467835cde..018ebf50748c76d052aff8ad87e7db91007311ed 100644 (file)
@@ -19,7 +19,7 @@
 ;;;;  notably the old-straight-flag and the modern-straight-flag styles.
 
 
-(define-public (no-flag stem-grob)
+(define-public (no-flag grob)
   "No flag: Simply return empty stencil."
   empty-stencil)
 
@@ -29,7 +29,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
-(define-public (add-stroke-straight stencil stem-grob dir log stroke-style
+(define-public (add-stroke-straight stencil grob dir log stroke-style
                                     offset length thickness stroke-thickness)
   "Add the stroke for acciaccatura to the given flag stencil.
 The stroke starts for up-flags at `upper-end-of-flag + (0,length/2)'
@@ -39,7 +39,8 @@ whole length, while `flag-x-width' is just the x-extent and thus depends on
 the angle!  Other combinations don't look as good.
 
 For down-stems the y-coordinates are simply mirrored."
-  (let* ((start (offset-add offset (cons 0  (* (/ length 2) dir))))
+  (let* ((stem-grob (ly:grob-parent grob X))
+         (start (offset-add offset (cons 0  (* (/ length 2) dir))))
          (end (offset-add (cons 0 (cdr offset))
                           (cons (- (/ (car offset) 2)) (* (- (+ thickness (car offset))) dir))))
          (stroke (make-line-stencil stroke-thickness (car start) (cdr start) (car end) (cdr end))))
@@ -65,13 +66,14 @@ For down-stems the y-coordinates are simply mirrored."
 
 All lengths are scaled according to the font size of the note."
 
-  (lambda (stem-grob)
-    (let* ((log (ly:grob-property stem-grob 'duration-log))
+  (lambda (grob)
+    (let* ((stem-grob (ly:grob-parent grob X))
+           (log (ly:grob-property stem-grob 'duration-log))
            (dir (ly:grob-property stem-grob 'direction))
            (stem-up (eqv? dir UP))
-           (layout (ly:grob-layout stem-grob))
+           (layout (ly:grob-layout grob))
            ; scale with the note size (e.g. for grace notes)
-           (factor (magstep (ly:grob-property stem-grob 'font-size 0)))
+           (factor (magstep (ly:grob-property grob 'font-size 0)))
            (grob-stem-thickness (ly:grob-property stem-grob 'thickness))
            (line-thickness (ly:output-def-lookup layout 'line-thickness))
            (half-stem-thickness (/ (* grob-stem-thickness line-thickness) 2))
@@ -95,9 +97,9 @@ All lengths are scaled according to the font size of the note."
            (stencil (ly:round-filled-polygon points half-stem-thickness))
            ; Log for 1/8 is 3, so we need to subtract 3
            (flag-stencil (buildflag stencil (- log 3) stencil spacing))
-           (stroke-style (ly:grob-property stem-grob 'stroke-style)))
+           (stroke-style (ly:grob-property grob 'stroke-style)))
     (if (equal? stroke-style "grace")
-      (add-stroke-straight flag-stencil stem-grob
+      (add-stroke-straight flag-stencil grob
                            dir log
                            stroke-style
                            flag-end flag-length
@@ -105,16 +107,16 @@ All lengths are scaled according to the font size of the note."
                            (* half-stem-thickness 2))
       flag-stencil))))
 
-(define-public (modern-straight-flag stem-grob)
+(define-public (modern-straight-flag grob)
   "Modern straight flag style (for composers like Stockhausen, Boulez, etc.).
 The angles are 18 and 22 degrees and thus smaller than for the ancient style
 of Bach, etc."
-  ((straight-flag 0.55 1 -18 1.1 22 1.2) stem-grob))
+  ((straight-flag 0.55 1 -18 1.1 22 1.2) grob))
 
-(define-public (old-straight-flag stem-grob)
+(define-public (old-straight-flag grob)
   "Old straight flag style (for composers like Bach).  The angles of the
 flags are both 45 degrees."
-  ((straight-flag 0.55 1 -45 1.2 45 1.4) stem-grob))
+  ((straight-flag 0.55 1 -45 1.2 45 1.4) grob))
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -122,23 +124,24 @@ flags are both 45 degrees."
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
-; NOTE: By default, lilypond uses the C++ method Stem::calc-flag
-; (ly:stem::calc-flag is the corresponding Scheme interface) to generate the
+; NOTE: By default, lilypond uses the C++ method Flag::stencil
+; (ly:flag::stencil is the corresponding Scheme interface) to generate the
 ; flag stencil. The following functions are simply a reimplementation in
 ; Scheme, so that one has that functionality available in Scheme, if one
 ; wants to write a flag style, which modifies one of the standard flags
 ; by some stencil operations.
 
 
-(define-public (add-stroke-glyph stencil stem-grob dir stroke-style flag-style)
+(define-public (add-stroke-glyph stencil grob dir stroke-style flag-style)
   "Load and add a stroke (represented by a glyph in the font) to the given
 flag stencil."
   (if (not (string? stroke-style))
     stencil
     ; Otherwise: look up the stroke glyph and combine it with the flag
-    (let* ((font-char (string-append "flags." flag-style dir stroke-style))
+    (let* ((stem-grob (ly:grob-parent grob X))
+           (font-char (string-append "flags." flag-style dir stroke-style))
            (alt-font-char (string-append "flags." dir stroke-style))
-           (font (ly:grob-default-font stem-grob))
+           (font (ly:grob-default-font grob))
            (tmpstencil (ly:font-get-glyph font font-char))
            (stroke-stencil (if (ly:stencil-empty? tmpstencil)
                                (ly:font-get-glyph font alt-font-char)
@@ -150,10 +153,11 @@ flag stencil."
         (ly:stencil-add stencil stroke-stencil)))))
 
 
-(define-public (retrieve-glyph-flag flag-style dir dir-modifier stem-grob)
+(define-public (retrieve-glyph-flag flag-style dir dir-modifier grob)
   "Load the correct flag glyph from the font."
-  (let* ((log (ly:grob-property stem-grob 'duration-log))
-         (font (ly:grob-default-font stem-grob))
+  (let* ((stem-grob (ly:grob-parent grob X))
+         (log (ly:grob-property stem-grob 'duration-log))
+         (font (ly:grob-default-font grob))
          (font-char (string-append "flags." flag-style dir dir-modifier (number->string log)))
          (flag (ly:font-get-glyph font font-char)))
     (if (ly:stencil-empty? flag)
@@ -161,18 +165,19 @@ flag stencil."
     flag))
 
 
-(define-public (create-glyph-flag flag-style dir-modifier stem-grob)
+(define-public (create-glyph-flag flag-style dir-modifier grob)
   "Create a flag stencil by looking up the glyph from the font."
-  (let* ((dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "u" "d"))
-         (flag (retrieve-glyph-flag flag-style dir dir-modifier stem-grob))
-         (stroke-style (ly:grob-property stem-grob 'stroke-style)))
+  (let* ((stem-grob (ly:grob-parent grob X))
+         (dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "u" "d"))
+         (flag (retrieve-glyph-flag flag-style dir dir-modifier grob))
+         (stroke-style (ly:grob-property grob 'stroke-style)))
     (if (null? stroke-style)
       flag
-      (add-stroke-glyph flag stem-grob dir stroke-style flag-style))))
+      (add-stroke-glyph flag grob dir stroke-style flag-style))))
 
 
 
-(define-public (mensural-flag stem-grob)
+(define-public (mensural-flag grob)
   "Mensural flags: Create the flag stencil by loading the glyph from the font.
 Flags are always aligned with staff lines, so we need to check the end point
 of the stem: For stems ending on staff lines, use different flags than for
@@ -181,48 +186,57 @@ aligned with the staff lines, regardless of whether the note head is on a
 staff line or between two staff lines.  In other words, the inner end of
 a flag always touches a staff line."
 
-  (let* ((adjust #t)
-         (stem-end (inexact->exact (round (ly:grob-property stem-grob 'stem-end-position))))
+  (let* ((stem-grob (ly:grob-parent grob X))
+         (adjust #t)
+         (d (ly:grob-property stem-grob 'direction))
+         (ss (ly:staff-symbol-staff-space stem-grob))
+         (stem-end (inexact->exact (round (* (index-cell
+                                               (ly:grob-extent stem-grob
+                                                               stem-grob
+                                                               Y)
+                                               d)
+                                             (/ 2 ss)))))
          ; For some reason the stem-end is a real instead of an integer...
          (dir-modifier (if (ly:position-on-line? stem-grob stem-end) "1" "0"))
          (modifier (if adjust dir-modifier "2")))
-    (create-glyph-flag "mensural" modifier stem-grob)))
+    (create-glyph-flag "mensural" modifier grob)))
 
 
 
-(define-public ((glyph-flag flag-style) stem-grob)
+(define-public ((glyph-flag flag-style) grob)
   "Simulatesthe default way of generating flags: Look up glyphs
 @code{flags.style[ud][1234]} from the feta font and use it for the flag
 stencil."
-  (create-glyph-flag flag-style "" stem-grob))
+  (create-glyph-flag flag-style "" grob))
 
 
 
-(define-public (normal-flag stem-grob)
+(define-public (normal-flag grob)
   "Create a default flag."
-  (create-glyph-flag "" "" stem-grob))
+  (create-glyph-flag "" "" grob))
 
 
 
-(define-public (default-flag stem-grob)
+(define-public (default-flag grob)
   "Create a flag stencil for the stem.  Its style will be derived from the
-@code{'flag-style} Stem property.  By default, @code{lilypond} uses a
+@code{'style} Flag property.  By default, @code{lilypond} uses a
 C++ Function (which is slightly faster) to do exactly the same as this
 function.  However, if one wants to modify the default flags, this function
 can be used to obtain the default flag stencil, which can then be modified
 at will.  The correct way to do this is:
 
 @example
-\\override Stem #'flag = #default-flag
-\\override Stem #'flag-style = #'mensural
+\\override Flag #'stencil = #default-flag
+\\override Flag #'style = #'mensural
 @end example
 "
-  (let* ((flag-style-symbol (ly:grob-property stem-grob 'flag-style))
+  (let* ((stem-grob (ly:grob-parent grob X))
+         (flag-style-symbol (ly:grob-property grob 'style))
          (flag-style (if (symbol? flag-style-symbol)
                          (symbol->string flag-style-symbol)
                          "")))
     (cond
-        ((equal? flag-style "") (normal-flag stem-grob))
-        ((equal? flag-style "mensural") (mensural-flag stem-grob))
-        ((equal? flag-style "no-flag") (no-flag stem-grob))
-        (else ((glyph-flag flag-style) stem-grob)))))
+        ((equal? flag-style "") (normal-flag grob))
+        ((equal? flag-style "mensural") (mensural-flag grob))
+        ((equal? flag-style "no-flag") (no-flag grob))
+        (else ((glyph-flag flag-style) grob)))))
index db07a6d99809759f7d4bd77b26e75b6427f8de18..73287b6635c8c57edfa33d167619d52aa370f48d 100644 (file)
@@ -167,7 +167,7 @@ Arguments:
 @var{design-size-alist} is a list of @code{(rounded . designsize)}.
 @code{rounded} is a suffix for font filenames, while @code{designsize}
 should be the actual design size.  The latter is used for text fonts
-loaded through pango/fontconfig.
+loaded through pango/@/fontconfig.
 
 @item
 @var{factor} is a size factor relative to the default size that is being
index acc095a567ec8a602fd7d4cebf1f03e8274825bb..9247a115f70696dc444c1f6264abe59daa636150 100644 (file)
@@ -1116,13 +1116,13 @@ If there are multiple fret indicators desired on a string, they
 should be separated by spaces.
 
 @item
-Fingerings are given by following the fret number with a @code{-},
+Fingerings are given by following the fret number with a @w{@code{-},}
 followed by the finger indicator, e.g. @samp{3-2} for playing the third
 fret with the second finger.
 
 @item
 Where a barre indicator is desired, follow the fret (or fingering) symbol
-with @code{-(} to start a barre and @code{-)} to end the barre.
+with @w{@code{-(}} to start a barre and @w{@code{-)}} to end the barre.
 
 @end itemize"
   ;; TODO -- change syntax to fret\string-finger
index ede65ff5e2a54b88d303e0a2429e3980384c7022..5b990e76040d762841280c36d041e6e2c7361b22 100644 (file)
@@ -852,17 +852,12 @@ print a warning and set an optional @var{default}."
     scaling))
 
 (define-public (version-not-seen-message input-file-name)
-  (ly:message
-   "~a:0: ~a ~a"
-    input-file-name
-    (_ "warning:")
-    (format #f
-           (_ "no \\version statement found, please add~afor future compatibility")
-           (format #f "\n\n\\version ~s\n\n" (lilypond-version)))))
+  (ly:warning-located
+    (ly:format "~a:0" input-file-name)
+    (_ "no \\version statement found, please add~afor future compatibility")
+    (format #f "\n\n\\version ~s\n\n" (lilypond-version))))
 
 (define-public (old-relative-not-used-message input-file-name)
-  (ly:message
-   "~a:0: ~a ~a"
-    input-file-name
-    (_ "warning:")
+  (ly:warning-located
+    (ly:format "~a:0" input-file-name)
     (_ "old relative compatibility not used")))
index e8fb65d4f408dbbd6a2628b9062c1d4a9ecf387e..f7e53cb1793838947ea2072f9b8ae75c9dc5ffce 100644 (file)
@@ -36,7 +36,7 @@
     (debug-enable 'debug)
     (begin
       (debug-enable 'backtrace)
-      (debug-enable 'show-file-name)))
+      (debug-set! show-file-name #t)))
 
 (define-public PLATFORM
   (string->symbol
@@ -121,8 +121,8 @@ jobs.")
 "If string FOO is given as argument, redirect
 output to log file `FOO.log'.")
     (midi-extension ,(if (eq? PLATFORM 'windows)
-                        "mid"
-                        "midi")
+                         "mid"
+                         "midi")
 "Set the default file extension for MIDI output
 file to given string.")
     (music-strings-to-paths #f
@@ -179,8 +179,8 @@ second.  Dump results to `FILE.stacks' and
 `FILE.graph'.")
     (trace-scheme-coverage #f
 "Record coverage of Scheme files in `FILE.cov'.")
-    (verbose ,(ly:command-line-verbose?)
-"Value of the --verbose flag (read-only).")
+    (verbose ,(ly:verbose-output?)
+"Verbose output, i.e. loglevel at least DEBUG (read-only).")
     (warning-as-error #f
 "Change all warning and programming_error
 messages into errors.")
@@ -190,12 +190,12 @@ messages into errors.")
 ;; initialization depend on these options.
 
 (for-each (lambda (x)
-           (ly:add-option (car x) (cadr x) (caddr x)))
-         scheme-options-definitions)
+            (ly:add-option (car x) (cadr x) (caddr x)))
+          scheme-options-definitions)
 
 (for-each (lambda (x)
-           (ly:set-option (car x) (cdr x)))
-         (eval-string (ly:command-line-options)))
+            (ly:set-option (car x) (cdr x)))
+          (eval-string (ly:command-line-options)))
 
 (debug-set! stack 0)
 
@@ -205,17 +205,17 @@ messages into errors.")
 ;;(set-debug-cell-accesses! 1000)
 
 (use-modules (ice-9 regex)
-            (ice-9 safe)
-            (ice-9 format)
-            (ice-9 rdelim)
-            (ice-9 optargs)
-            (oop goops)
-            (srfi srfi-1)
-            (srfi srfi-13)
-            (srfi srfi-14)
-            (scm clip-region)
-            (scm memory-trace)
-            (scm coverage))
+             (ice-9 safe)
+             (ice-9 format)
+             (ice-9 rdelim)
+             (ice-9 optargs)
+             (oop goops)
+             (srfi srfi-1)
+             (srfi srfi-13)
+             (srfi srfi-14)
+             (scm clip-region)
+             (scm memory-trace)
+             (scm coverage))
 
 (define-public _ gettext)
 ;;; There are new modules defined in Guile V2.0 which we need to use.
@@ -226,12 +226,10 @@ messages into errors.")
 
 (cond
   ((guile-v2)
-   (if (ly:get-option 'verbose)
-       (ly:message  (_ "Using (ice-9 curried-definitions) module\n")))
+   (ly:debug (_ "Using (ice-9 curried-definitions) module\n"))
    (use-modules (ice-9 curried-definitions)))
   (else
-    (if (ly:get-option 'verbose)
-        (ly:message (_ "Guile 1.8\n")))))
+    (ly:debug (_ "Guile 1.8\n"))))
 
 ;; TODO add in modules for V1.8.7 deprecated in V2.0 and integrated
 ;; into Guile base code, like (ice-9 syncase).
@@ -266,9 +264,10 @@ messages into errors.")
 ;;; Debugging evaluator is slower.  This should have a more sensible
 ;;; default.
 
+
 (if (or (ly:get-option 'verbose)
-       (ly:get-option 'trace-memory-frequency)
-       (ly:get-option 'trace-scheme-coverage))
+        (ly:get-option 'trace-memory-frequency)
+        (ly:get-option 'trace-scheme-coverage))
     (begin
       (ly:set-option 'protected-scheme-parsing #f)
       (debug-enable 'backtrace)
@@ -288,26 +287,27 @@ messages into errors.")
 
 (define-public (ly:load x)
   (let* ((file-name (%search-load-path x)))
-    (if (ly:get-option 'verbose)
-       (ly:progress "[~A" file-name))
+    (ly:debug "[~A" file-name)
     (if (not file-name)
-       (ly:error (_ "cannot find: ~A") x))
+        (ly:error (_ "cannot find: ~A") x))
     (primitive-load-path file-name)  ;; to support Guile V2 autocompile
+    ;; TODO: Any chance to use ly:debug here? Need to extend it to prevent
+    ;;       a newline in this case
     (if (ly:get-option 'verbose)
-       (ly:progress "]\n"))))
+        (ly:progress "]\n"))))
 
 (define-public DOS
   (let ((platform (string-tokenize
-                  (vector-ref (uname) 0) char-set:letter+digit)))
+                   (vector-ref (uname) 0) char-set:letter+digit)))
     (if (null? (cdr platform)) #f
-       (member (string-downcase (cadr platform)) '("95" "98" "me")))))
+        (member (string-downcase (cadr platform)) '("95" "98" "me")))))
 
 (define (slashify x)
   (if (string-index x #\\)
       x
       (string-regexp-substitute
-       "//*" "/"
-       (string-regexp-substitute "\\\\" "/" x))))
+        "//*" "/"
+        (string-regexp-substitute "\\\\" "/" x))))
 
 (define-public (ly-getcwd)
   (if (eq? PLATFORM 'windows)
@@ -317,12 +317,12 @@ messages into errors.")
 (define-public (is-absolute? file-name)
   (let ((file-name-length (string-length file-name)))
     (if (= file-name-length 0)
-       #f
-       (or (eq? (string-ref file-name 0) #\/)
-           (and (eq? PLATFORM 'windows)
-                (> file-name-length 2)
-                (eq? (string-ref file-name 1) #\:)
-                (eq? (string-ref file-name 2) #\/))))))
+        #f
+        (or (eq? (string-ref file-name 0) #\/)
+            (and (eq? PLATFORM 'windows)
+                 (> file-name-length 2)
+                 (eq? (string-ref file-name 1) #\:)
+                 (eq? (string-ref file-name 2) #\/))))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; If necessary, emulate Guile V2 module_export_all! for Guile V1.8.n
@@ -331,13 +331,13 @@ messages into errors.")
   (define (module-export-all! mod)
     (define (fresh-interface!)
       (let ((iface (make-module)))
-       (set-module-name! iface (module-name mod))
-       ;; for guile 2: (set-module-version! iface (module-version mod))
-       (set-module-kind! iface 'interface)
-       (set-module-public-interface! mod iface)
-       iface))
+        (set-module-name! iface (module-name mod))
+        ;; for guile 2: (set-module-version! iface (module-version mod))
+        (set-module-kind! iface 'interface)
+        (set-module-public-interface! mod iface)
+        iface))
     (let ((iface (or (module-public-interface mod)
-                    (fresh-interface!))))
+                     (fresh-interface!))))
       (set-module-obarray! iface (module-obarray mod))))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -347,19 +347,19 @@ Print a message at LOCATION if any predicate failed."
   (define (recursion-helper signature arguments count)
     (define (helper pred? arg count)
       (if (not (pred? arg))
-         (begin
-           (ly:input-message
-            location
-            (format
-             #f (_ "wrong type for argument ~a.  Expecting ~a, found ~s")
-             count (type-name pred?) arg))
-           #f)
-         #t))
+          (begin
+            (ly:input-message
+             location
+             (format
+              #f (_ "wrong type for argument ~a.  Expecting ~a, found ~s")
+              count (type-name pred?) arg))
+            #f)
+          #t))
 
     (if (null? signature)
-       #t
-       (and (helper (car signature) (car arguments) count)
-            (recursion-helper (cdr signature) (cdr arguments) (1+ count)))))
+        #t
+        (and (helper (car signature) (car arguments) count)
+             (recursion-helper (cdr signature) (cdr arguments) (1+ count)))))
   (recursion-helper signature arguments 1))
 
 
@@ -388,9 +388,9 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
 (define-safe-public (lilypond-version)
   (string-join
    (map (lambda (x) (if (symbol? x)
-                       (symbol->string x)
-                       (number->string x)))
-       (ly:version))
+                        (symbol->string x)
+                        (number->string x)))
+        (ly:version))
    "."))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -401,36 +401,43 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; other files.
 
-(define init-scheme-files
+;;
+;;  List of Scheme files to be loaded into the (lily) module.
+;;
+;;  - Library definitions, need to be at the head of the list
+(define init-scheme-files-lib
   '("lily-library.scm"
-    "file-cache.scm"
+    "output-lib.scm"))
+;;  - Files containing definitions used later by other files later in load
+(define init-scheme-files-used
+  '("markup-macros.scm"))
+;;  - Main body of files to be loaded
+(define init-scheme-files-body
+  '("file-cache.scm"
     "define-event-classes.scm"
     "define-music-callbacks.scm"
     "define-music-types.scm"
     "define-note-names.scm"
-    "output-lib.scm"
     "c++.scm"
-    "chord-ignatzek-names.scm"
     "chord-entry.scm"
-    "chord-generic-names.scm"
     "stencil.scm"
+    "define-markup-commands.scm"
     "markup.scm"
     "modal-transforms.scm"
+    "chord-generic-names.scm"
+    "chord-ignatzek-names.scm"
     "music-functions.scm"
     "part-combiner.scm"
     "autochange.scm"
     "define-music-properties.scm"
     "time-signature-settings.scm"
     "auto-beam.scm"
+    "chord-name.scm"
     "bezier-tools.scm"
     "parser-ly-from-scheme.scm"
     "ly-syntax-constructors.scm"
 
     "define-context-properties.scm"
-    ;; guile 1.9 wants markups defined before referenced
-    "define-markup-commands.scm"
-
-    "chord-name.scm"
     "translation-functions.scm"
     "script.scm"
     "midi.scm"
@@ -455,10 +462,19 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
 
     "paper.scm"
     "backend-library.scm"
-    "x11-color.scm"
-
-    ;; must be after everything has been defined
-    "safe-lily.scm"))
+    "x11-color.scm"))
+;;  - Files to be loaded last
+(define init-scheme-files-tail
+;;  - must be after everything has been defined
+  '("safe-lily.scm"))
+;;
+;; Now construct the load list
+;;
+(define init-scheme-files
+  (append init-scheme-files-lib
+          init-scheme-files-used
+          init-scheme-files-body
+          init-scheme-files-tail))
 
 (for-each ly:load init-scheme-files)
 
@@ -582,22 +598,22 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
 
 (define (profile-measurements)
   (let* ((t (times))
-        (stats (gc-stats)))
+         (stats (gc-stats)))
     (list (- (+ (tms:cutime t)
-               (tms:utime t))
-            (assoc-get 'gc-time-taken stats))
-         (assoc-get 'total-cells-allocated  stats 0))))
+                (tms:utime t))
+             (assoc-get 'gc-time-taken stats))
+          (assoc-get 'total-cells-allocated  stats 0))))
 
 (define (dump-profile base last this)
   (let* ((outname (format #f "~a.profile" (dir-basename base ".ly")))
-        (diff (map (lambda (y) (apply - y)) (zip this last))))
+         (diff (map (lambda (y) (apply - y)) (zip this last))))
     (ly:progress "\nWriting timing to ~a..." outname)
     (format (open-file outname "w")
-           "time: ~a\ncells: ~a\n"
-           (if (ly:get-option 'dump-cpu-profile)
-               (car diff)
-               0)
-           (cadr diff))))
+            "time: ~a\ncells: ~a\n"
+            (if (ly:get-option 'dump-cpu-profile)
+                (car diff)
+                0)
+            (cadr diff))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; debug memory leaks
@@ -610,61 +626,61 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
 
 (define-public (dump-live-object-stats outfile)
   (for-each (lambda (x)
-             (format outfile "~a: ~a\n" (car x) (cdr x)))
-           (sort (gc-live-object-stats)
-                 (lambda (x y)
-                   (string<? (car x) (car y))))))
+              (format outfile "~a: ~a\n" (car x) (cdr x)))
+            (sort (gc-live-object-stats)
+                  (lambda (x y)
+                    (string<? (car x) (car y))))))
 
 (define-public (dump-gc-protects)
   (set! gc-protect-stat-count (1+ gc-protect-stat-count))
   (let* ((protects (sort (hash-table->alist (ly:protects))
-                        (lambda (a b)
-                          (< (object-address (car a))
-                             (object-address (car b))))))
-        (out-file-name (string-append
-                        "gcstat-" (number->string gc-protect-stat-count)
-                        ".scm"))
-        (outfile (open-file out-file-name "w")))
+                         (lambda (a b)
+                           (< (object-address (car a))
+                              (object-address (car b))))))
+        (out-file-name (string-append
+                       "gcstat-" (number->string gc-protect-stat-count)
+                       ".scm"))
+        (outfile (open-file out-file-name "w")))
     (set! gc-dumping #t)
-    (format #t "Dumping GC statistics ~a...\n" out-file-name)
+    (ly:progress "Dumping GC statistics ~a...\n" out-file-name)
     (for-each (lambda (y)
-               (let ((x (car y))
-                     (c (cdr y)))
-                 (format outfile "~a (~a) = ~a\n" (object-address x) c x)))
-             (filter
-              (lambda (x)
-                (not (symbol? (car x))))
-              protects))
+                (let ((x (car y))
+                      (c (cdr y)))
+                  (format outfile "~a (~a) = ~a\n" (object-address x) c x)))
+              (filter
+               (lambda (x)
+                 (not (symbol? (car x))))
+               protects))
     (format outfile "\nprotected symbols: ~a\n"
-           (apply + (map (lambda (obj-count)
-                           (if (symbol? (car obj-count))
-                               (cdr obj-count)
-                               0))
-                         protects)))
+            (apply + (map (lambda (obj-count)
+                            (if (symbol? (car obj-count))
+                                (cdr obj-count)
+                                0))
+                          protects)))
 
     ;; (display (ly:smob-protects))
     (newline outfile)
     (if (defined? 'gc-live-object-stats)
-       (let* ((stats #f))
-         (display "Live object statistics: GC'ing\n")
-         (ly:reset-all-fonts)
-         (gc)
-         (gc)
-         (display "Asserting dead objects\n")
-         (ly:set-option 'debug-gc-assert-parsed-dead #t)
-         (gc)
-         (ly:set-option 'debug-gc-assert-parsed-dead #f)
-         (set! stats (gc-live-object-stats))
-         (display "Dumping live object statistics.\n")
-         (dump-live-object-stats outfile)))
+        (let* ((stats #f))
+          (ly:progress "Live object statistics: GC'ing\n")
+          (ly:reset-all-fonts)
+          (gc)
+          (gc)
+          (ly:progress "Asserting dead objects\n")
+          (ly:set-option 'debug-gc-assert-parsed-dead #t)
+          (gc)
+          (ly:set-option 'debug-gc-assert-parsed-dead #f)
+          (set! stats (gc-live-object-stats))
+          (ly:progress "Dumping live object statistics.\n")
+          (dump-live-object-stats outfile)))
     (newline outfile)
     (let* ((stats (gc-stats)))
       (for-each (lambda (sym)
-                 (format outfile "~a ~a ~a\n"
-                         gc-protect-stat-count
-                         sym
-                         (assoc-get sym stats "?")))
-               '(protected-objects bytes-malloced cell-heap-size)))
+                  (format outfile "~a ~a ~a\n"
+                          gc-protect-stat-count
+                          sym
+                          (assoc-get sym stats "?")))
+                '(protected-objects bytes-malloced cell-heap-size)))
     (set! gc-dumping #f)
     (close-port outfile)))
 
@@ -672,23 +688,24 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
   "Read `/proc/self' to check up on memory use."
   (define (gulp-file name)
     (let* ((file (open-input-file name))
-          (text (read-delimited "" file)))
+           (text (read-delimited "" file)))
       (close file)
       text))
 
   (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)))
-        (mem (string->number (match:substring (car interesting) 1))))
+         (lines (string-split stat #\newline))
+         (interesting (filter identity
+                              (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))
-    (if (> mem 100000)
-       (begin (dump-gc-protects)
-              (raise 1)))))
+    (newline)
+    (if (> mem 500000)
+        (begin (dump-gc-protects)
+               (raise 1)))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
@@ -697,11 +714,11 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
 PIDs or the number of the process."
   (define (helper count acc)
     (if (> count 0)
-       (let* ((pid (primitive-fork)))
-         (if (= pid 0)
-             (1- count)
-             (helper (1- count) (cons pid acc))))
-       acc))
+        (let* ((pid (primitive-fork)))
+              (if (= pid 0)
+                  (1- count)
+                  (helper (1- count) (cons pid acc))))
+        acc))
 
   (helper count '()))
 
@@ -711,9 +728,9 @@ PIDs or the number of the process."
   "Exit function for lilypond"
   (if (not silently)
       (case status
-       ((0) (ly:success (_ "Compilation successfully completed")))
-       ((1) (ly:warning (_ "Compilation completed with warnings or errors")))
-       (else (ly:message ""))))
+        ((0) (ly:basic-progress (_ "Success: compilation successfully completed")))
+        ((1) (ly:warning (_ "Compilation completed with warnings or errors")))
+        (else (ly:message ""))))
   (exit status))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -723,141 +740,141 @@ PIDs or the number of the process."
   (eval-string (ly:command-line-code))
   (if (ly:get-option 'help)
       (begin (ly:option-usage)
-            (ly:exit 0 #t)))
+             (ly:exit 0 #t)))
   (if (ly:get-option 'show-available-fonts)
       (begin (ly:font-config-display-fonts)
-            (ly:exit 0 #t)))
+             (ly:exit 0 #t)))
   (if (ly:get-option 'gui)
       (gui-main files))
   (if (null? files)
       (begin (ly:usage)
-            (ly:exit 2 #t)))
+             (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 (ly:gulp-file f) #\nl))
-                               files)))))
+            (filter (lambda (s)
+                      (> (string-length s) 0))
+                    (apply append
+                           (map (lambda (f)
+                                  (string-split (ly:gulp-file f) #\nl))
+                                files)))))
   (if (and (number? (ly:get-option 'job-count))
-          (>= (length files) (ly:get-option 'job-count)))
+           (>= (length files) (ly:get-option 'job-count)))
       (let* ((count (ly:get-option 'job-count))
-            (split-todo (split-list files count))
-            (joblist (multi-fork count))
-            (errors '()))
-       (if (not (string-or-symbol? (ly:get-option 'log-file)))
-           (ly:set-option 'log-file "lilypond-multi-run"))
-       (if (number? joblist)
-           (begin (ly:set-option
-                   'log-file (format #f "~a-~a"
-                                     (ly:get-option 'log-file) joblist))
-                  (set! files (vector-ref split-todo joblist)))
-           (begin (ly:progress "\nForking into jobs:  ~a\n" joblist)
-                  (for-each
-                   (lambda (pid)
-                     (let* ((stat (cdr (waitpid pid))))
-                       (if (not (= stat 0))
-                           (set! errors
-                                 (acons (list-element-index joblist pid)
-                                        stat errors)))))
-                   joblist)
-                  (for-each
-                   (lambda (x)
-                     (let* ((job (car x))
-                            (state (cdr x))
-                            (logfile (format #f "~a-~a.log"
-                                             (ly:get-option 'log-file) job))
-                            (log (ly:gulp-file logfile))
-                            (len (string-length log))
-                            (tail (substring  log (max 0 (- len 1024)))))
-                       (if (status:term-sig state)
-                           (ly:message
-                            "\n\n~a\n"
-                            (format #f (_ "job ~a terminated with signal: ~a")
-                                    job (status:term-sig state)))
-                           (ly:message
-                            (_ "logfile ~a (exit ~a):\n~a")
-                            logfile (status:exit-val state) tail))))
-                   errors)
-                  (if (pair? errors)
-                      (ly:error "Children ~a exited with errors."
-                                (map car errors)))
-                  ;; must overwrite individual entries
-                  (if (ly:get-option 'dump-profile)
-                      (dump-profile "lily-run-total"
-                                    '(0 0) (profile-measurements)))
-                  (if (null? errors)
-                      (ly:exit 0 #f)
-                      (ly:exit 1 #f))))))
+             (split-todo (split-list files count))
+             (joblist (multi-fork count))
+             (errors '()))
+        (if (not (string-or-symbol? (ly:get-option 'log-file)))
+            (ly:set-option 'log-file "lilypond-multi-run"))
+        (if (number? joblist)
+            (begin (ly:set-option
+                    'log-file (format #f "~a-~a"
+                                      (ly:get-option 'log-file) joblist))
+                    (set! files (vector-ref split-todo joblist)))
+            (begin (ly:progress "\nForking into jobs:  ~a\n" joblist)
+                   (for-each
+                    (lambda (pid)
+                      (let* ((stat (cdr (waitpid pid))))
+                        (if (not (= stat 0))
+                            (set! errors
+                                  (acons (list-element-index joblist pid)
+                                 stat errors)))))
+                    joblist)
+                   (for-each
+                    (lambda (x)
+                      (let* ((job (car x))
+                             (state (cdr x))
+                             (logfile (format #f "~a-~a.log"
+                                              (ly:get-option 'log-file) job))
+                             (log (ly:gulp-file logfile))
+                             (len (string-length log))
+                             (tail (substring  log (max 0 (- len 1024)))))
+                        (if (status:term-sig state)
+                            (ly:message
+                             "\n\n~a\n"
+                             (format #f (_ "job ~a terminated with signal: ~a")
+                                     job (status:term-sig state)))
+                            (ly:message
+                             (_ "logfile ~a (exit ~a):\n~a")
+                             logfile (status:exit-val state) tail))))
+                      errors)
+                     (if (pair? errors)
+                         (ly:error "Children ~a exited with errors."
+                                   (map car errors)))
+                     ;; must overwrite individual entries
+                     (if (ly:get-option 'dump-profile)
+                         (dump-profile "lily-run-total"
+                                       '(0 0) (profile-measurements)))
+                     (if (null? errors)
+                         (ly:exit 0 #f)
+                         (ly:exit 1 #f))))))
 
   (if (string-or-symbol? (ly:get-option 'log-file))
       (ly:stderr-redirect (format #f "~a.log" (ly:get-option 'log-file)) "w"))
   (let ((failed (lilypond-all files)))
     (if (ly:get-option 'trace-scheme-coverage)
-       (begin
-         (coverage:show-all (lambda (f)
-                              (string-contains f "lilypond")))))
+        (begin
+          (coverage:show-all (lambda (f)
+                               (string-contains f "lilypond")))))
     (if (pair? failed)
-       (begin (ly:error (_ "failed files: ~S") (string-join failed))
-              (ly:exit 1 #f))
-       (begin
-         (ly:exit 0 #f)))))
+        (begin (ly:error (_ "failed files: ~S") (string-join failed))
+               (ly:exit 1 #f))
+        (begin
+          (ly:exit 0 #f)))))
 
 
 (define-public (lilypond-all files)
   (let* ((failed '())
-        (separate-logs (ly:get-option 'separate-log-files))
-        (ping-log
-         (if separate-logs
-             (open-file (if (string-or-symbol? (ly:get-option 'log-file))
-                            (format #f "~a.log" (ly:get-option 'log-file))
-                            "/dev/stderr") "a") #f))
-        (do-measurements (ly:get-option 'dump-profile))
-        (handler (lambda (key failed-file)
-                   (set! failed (append (list failed-file) failed)))))
+         (separate-logs (ly:get-option 'separate-log-files))
+         (ping-log
+          (if separate-logs
+              (open-file (if (string-or-symbol? (ly:get-option 'log-file))
+                             (format #f "~a.log" (ly:get-option 'log-file))
+                     "/dev/stderr") "a") #f))
+         (do-measurements (ly:get-option 'dump-profile))
+         (handler (lambda (key failed-file)
+                    (set! failed (append (list failed-file) failed)))))
     (gc)
     (for-each
      (lambda (x)
        (let* ((start-measurements (if do-measurements
-                                     (profile-measurements)
-                                     #f))
-             (base (dir-basename x ".ly"))
-             (all-settings (ly:all-options)))
-        (if separate-logs
-            (ly:stderr-redirect (format #f "~a.log" base) "w"))
-        (if ping-log
-            (format ping-log "Processing ~a\n" base))
-        (if (ly:get-option 'trace-memory-frequency)
-            (mtrace:start-trace  (ly:get-option 'trace-memory-frequency)))
-        (lilypond-file handler x)
-        (if start-measurements
-            (dump-profile x start-measurements (profile-measurements)))
-        (if (ly:get-option 'trace-memory-frequency)
-            (begin (mtrace:stop-trace)
-                   (mtrace:dump-results base)))
-        (for-each (lambda (s)
-                    (ly:set-option (car s) (cdr s)))
-                  all-settings)
-        (ly:set-option 'debug-gc-assert-parsed-dead #t)
-        (gc)
-        (ly:set-option 'debug-gc-assert-parsed-dead #f)
-        (if (ly:get-option 'debug-gc)
-            (dump-gc-protects)
+                                      (profile-measurements)
+                                      #f))
+              (base (dir-basename x ".ly"))
+              (all-settings (ly:all-options)))
+         (if separate-logs
+             (ly:stderr-redirect (format #f "~a.log" base) "w"))
+         (if ping-log
+             (format ping-log "Processing ~a\n" base))
+         (if (ly:get-option 'trace-memory-frequency)
+             (mtrace:start-trace  (ly:get-option 'trace-memory-frequency)))
+         (lilypond-file handler x)
+         (if start-measurements
+             (dump-profile x start-measurements (profile-measurements)))
+         (if (ly:get-option 'trace-memory-frequency)
+             (begin (mtrace:stop-trace)
+                    (mtrace:dump-results base)))
+         (for-each (lambda (s)
+                     (ly:set-option (car s) (cdr s)))
+                   all-settings)
+         (ly:set-option 'debug-gc-assert-parsed-dead #t)
+         (gc)
+         (ly:set-option 'debug-gc-assert-parsed-dead #f)
+         (if (ly:get-option 'debug-gc)
+             (dump-gc-protects)
              (ly:reset-all-fonts))))
      files)
 
     ;; Ensure a notice re failed files is written to aggregate logfile.
     (if ping-log
-       (format ping-log "Failed files: ~a\n" failed))
+        (format ping-log "Failed files: ~a\n" failed))
     (if (ly:get-option 'dump-profile)
-       (dump-profile "lily-run-total" '(0 0) (profile-measurements)))
+        (dump-profile "lily-run-total" '(0 0) (profile-measurements)))
     failed))
 
 (define (lilypond-file handler file-name)
   (catch 'ly-file-failed
-        (lambda () (ly:parse-file file-name))
-        (lambda (x . args) (handler x file-name))))
+         (lambda () (ly:parse-file file-name))
+         (lambda (x . args) (handler x file-name))))
 
 (use-modules (scm editor))
 
@@ -866,27 +883,27 @@ PIDs or the number of the process."
       (gui-no-files-handler))
   (if (not (string? (ly:get-option 'log-file)))
       (let* ((base (dir-basename (car files) ".ly"))
-            (log-name (string-append base ".log")))
-       (if (not (ly:get-option 'gui))
-           (ly:message (_ "Redirecting output to ~a...") log-name))
-       (ly:stderr-redirect log-name "w")
-       (ly:message "# -*-compilation-*-"))
+             (log-name (string-append base ".log")))
+        (if (not (ly:get-option 'gui))
+            (ly:message (_ "Redirecting output to ~a...") log-name))
+        (ly:stderr-redirect log-name "w")
+        (ly:message "# -*-compilation-*-"))
       (let ((failed (lilypond-all files)))
-       (if (pair? failed)
-           (begin
-             ;; ugh
-             (ly:stderr-redirect "foo" "r")
-             (system (get-editor-command log-name 0 0 0))
-             (ly:error (_ "failed files: ~S") (string-join failed))
-             ;; not reached?
-             (exit 1))
-           (ly:exit 0 #f)))))
+        (if (pair? failed)
+            (begin
+              ;; ugh
+              (ly:stderr-redirect "foo" "r")
+              (system (get-editor-command log-name 0 0 0))
+              (ly:error (_ "failed files: ~S") (string-join failed))
+              ;; not reached?
+              (exit 1))
+            (ly:exit 0 #f)))))
 
 (define (gui-no-files-handler)
   (let* ((ly (string-append (ly:effective-prefix) "/ly/"))
-        ;; FIXME: soft-code, localize
-        (welcome-ly (string-append ly "Welcome_to_LilyPond.ly"))
-        (cmd (get-editor-command welcome-ly 0 0 0)))
+         ;; FIXME: soft-code, localize
+         (welcome-ly (string-append ly "Welcome_to_LilyPond.ly"))
+         (cmd (get-editor-command welcome-ly 0 0 0)))
     (ly:message (_ "Invoking `~a'...\n") cmd)
     (system cmd)
     (ly:exit 1 #f)))
diff --git a/scm/markup-macros.scm b/scm/markup-macros.scm
new file mode 100644 (file)
index 0000000..cccfacc
--- /dev/null
@@ -0,0 +1,479 @@
+;;;; This file is part of LilyPond, the GNU music typesetter.
+;;;;
+;;;; Copyright (C) 2003--2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;;
+;;;; 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/>.
+
+"
+Internally markup is stored as lists, whose head is a function.
+
+  (FUNCTION ARG1 ARG2 ... )
+
+When the markup is formatted, then FUNCTION is called as follows
+
+  (FUNCTION GROB PROPS ARG1 ARG2 ... )
+
+GROB is the current grob, PROPS is a list of alists, and ARG1.. are
+the rest of the arguments.
+
+The function should return a stencil (i.e. a formatted, ready to
+print object).
+
+
+To add a markup command, use the define-markup-command utility.
+
+  (define-markup-command (mycommand layout prop arg1 ...) (arg1-type? ...)
+    \"my command usage and description\"
+    ...function body...)
+
+The command is now available in markup mode, e.g.
+
+  \\markup { .... \\MYCOMMAND #1 argument ... }
+
+" ; "
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; markup definer utilities
+
+;; For documentation purposes
+;; category -> markup functions
+(define-public markup-functions-by-category (make-hash-table 150))
+;; markup function -> used properties
+(define-public markup-functions-properties (make-weak-key-hash-table 151))
+;; List of markup list functions
+(define-public markup-list-functions (make-weak-key-hash-table 151))
+
+(use-modules (ice-9 optargs))
+
+(defmacro*-public define-markup-command
+  (command-and-args signature
+                    #:key (category '()) (properties '())
+                    #:rest body)
+  "
+* Define a COMMAND-markup function after command-and-args and body,
+register COMMAND-markup and its signature,
+
+* add COMMAND-markup to markup-functions-by-category,
+
+* sets COMMAND-markup markup-signature object property,
+
+* define a make-COMMAND-markup function.
+
+Syntax:
+  (define-markup-command (COMMAND layout props . arguments)
+                                 argument-types
+                                 [ #:properties properties ]
+    \"documentation string\"
+    ...command body...)
+
+where:
+  `argument-types' is a list of type predicates for arguments
+  `properties' a list of (property default-value) lists
+
+The specified properties are available as let-bound variables in the
+command body, using the respective `default-value' as fallback in case
+`property' is not found in `props'.  `props' itself is left unchanged:
+if you want defaults specified in that manner passed down into other
+markup functions, you need to adjust `props' yourself.
+
+The autogenerated documentation makes use of some optional
+specifications that are otherwise ignored:
+
+After `argument-types', you may also specify
+                                 [ #:category category ]
+where:
+  `category' is either a symbol or a symbol list specifying the
+             category for this markup command in the docs.
+
+As an element of the `properties' list, you may directly use a
+COMMANDx-markup symbol instead of a `(prop value)' list to indicate
+that this markup command is called by the newly defined command,
+adding its properties to the documented properties of the new
+command.  There is no protection against circular definitions.
+"
+  (let* ((command (car command-and-args))
+         (args (cdr command-and-args))
+         (command-name (string->symbol (format #f "~a-markup" command)))
+         (make-markup-name (string->symbol (format #f "make-~a-markup" command))))
+    (while (and (pair? body) (keyword? (car body)))
+           (set! body (cddr body)))
+    `(begin
+       ;; define the COMMAND-markup function
+       ,(let* ((documentation (if (string? (car body))
+                                  (list (car body))
+                                  '()))
+               (real-body (if (or (null? documentation)
+                                  (null? (cdr body)))
+                              body (cdr body))))
+          `(define-public (,command-name ,@args)
+             ,@documentation
+             (let ,(map (lambda (prop-spec)
+                          (let ((prop (car prop-spec))
+                                (default-value (if (null? (cdr prop-spec))
+                                                   #f
+                                                   (cadr prop-spec)))
+                                (props (cadr args)))
+                            `(,prop (chain-assoc-get ',prop ,props ,default-value))))
+                        (filter pair? properties))
+               ,@real-body)))
+       (set! (markup-command-signature ,command-name) (list ,@signature))
+       ;; Register the new function, for markup documentation
+       ,@(map (lambda (category)
+                `(hashq-set!
+                  (or (hashq-ref markup-functions-by-category ',category)
+                      (let ((hash (make-weak-key-hash-table 151)))
+                        (hashq-set! markup-functions-by-category ',category
+                                    hash)
+                        hash))
+                  ,command-name #t))
+              (if (list? category) category (list category)))
+       ;; Used properties, for markup documentation
+       (hashq-set! markup-functions-properties
+                   ,command-name
+                   (list ,@(map (lambda (prop-spec)
+                                  (cond ((symbol? prop-spec)
+                                         prop-spec)
+                                        ((not (null? (cdr prop-spec)))
+                                         `(list ',(car prop-spec) ,(cadr prop-spec)))
+                                        (else
+                                          `(list ',(car prop-spec)))))
+                                (if (pair? args)
+                                    properties
+                                    (list)))))
+       ;; define the make-COMMAND-markup function
+       (define-public (,make-markup-name . args)
+         (let ((sig (list ,@signature)))
+           (make-markup ,command-name ,(symbol->string make-markup-name) sig args))))))
+
+(defmacro*-public define-markup-list-command
+  (command-and-args signature #:key (properties '()) #:rest body)
+  "Same as `define-markup-command', but defines a command that, when
+interpreted, returns a list of stencils instead of a single one"
+  (let* ((command (car command-and-args))
+         (args (cdr command-and-args))
+         (command-name (string->symbol (format #f "~a-markup-list" command)))
+         (make-markup-name (string->symbol (format #f "make-~a-markup-list" command))))
+    (while (and (pair? body) (keyword? (car body)))
+           (set! body (cddr body)))
+    `(begin
+       ;; define the COMMAND-markup-list function
+       ,(let* ((documentation (if (string? (car body))
+                                  (list (car body))
+                                  '()))
+               (real-body (if (or (null? documentation)
+                                  (null? (cdr body)))
+                              body (cdr body))))
+          `(define-public (,command-name ,@args)
+             ,@documentation
+             (let ,(map (lambda (prop-spec)
+                          (let ((prop (car prop-spec))
+                                (default-value (if (null? (cdr prop-spec))
+                                                   #f
+                                                   (cadr prop-spec)))
+                                (props (cadr args)))
+                            `(,prop (chain-assoc-get ',prop ,props ,default-value))))
+                        (filter pair? properties))
+               ,@real-body)))
+       (set! (markup-command-signature ,command-name) (list ,@signature))
+       ;; add the command to markup-list-function-list, for markup documentation
+       (hashq-set! markup-list-functions ,command-name #t)
+       ;; Used properties, for markup documentation
+       (hashq-set! markup-functions-properties
+                   ,command-name
+                   (list ,@(map (lambda (prop-spec)
+                                  (cond ((symbol? prop-spec)
+                                         prop-spec)
+                                        ((not (null? (cdr prop-spec)))
+                                         `(list ',(car prop-spec) ,(cadr prop-spec)))
+                                        (else
+                                          `(list ',(car prop-spec)))))
+                                (if (pair? args)
+                                    properties
+                                    (list)))))
+       ;; it's a markup-list command:
+       (set-object-property! ,command-name 'markup-list-command #t)
+       ;; define the make-COMMAND-markup-list function
+       (define-public (,make-markup-name . args)
+         (let ((sig (list ,@signature)))
+           (list (make-markup ,command-name
+                              ,(symbol->string make-markup-name) sig args)))))))
+
+;;;;;;;;;;;;;;;
+;;; Utilities for storing and accessing markup commands signature
+;;; Examples:
+;;;
+;;; (set! (markup-command-signature raise-markup) (list number? markup?))
+;;; ==> (#<primitive-procedure number?> #<procedure markup? (obj)>)
+;;;
+;;; (markup-command-signature raise-markup)
+;;; ==> (#<primitive-procedure number?> #<procedure markup? (obj)>)
+;;;
+
+(define-public (markup-command-signature-ref markup-command)
+  "Return markup-command's signature (the 'markup-signature object property)"
+  (object-property markup-command 'markup-signature))
+
+(define-public (markup-command-signature-set! markup-command signature)
+  "Set markup-command's signature (as object property)"
+  (set-object-property! markup-command 'markup-signature signature)
+  signature)
+
+(define-public markup-command-signature
+  (make-procedure-with-setter markup-command-signature-ref
+                              markup-command-signature-set!))
+
+;;;;;;;;;;;;;;;;;;;;;;
+;;; markup type predicates
+
+(define (markup-function? x)
+  (and (markup-command-signature x)
+       (not (object-property x 'markup-list-command))))
+
+(define (markup-list-function? x)
+  (and (markup-command-signature x)
+       (object-property x 'markup-list-command)))
+
+(define-public (markup-command-list? x)
+  "Determine if `x' is a markup command list, ie. a list composed of
+a markup list function and its arguments."
+  (and (pair? x) (markup-list-function? (car x))))
+
+(define-public (markup-list? arg)
+  "Return a true value if `x' is a list of markups or markup command lists."
+  (define (markup-list-inner? lst)
+    (or (null? lst)
+        (and (or (markup? (car lst)) (markup-command-list? (car lst)))
+             (markup-list-inner? (cdr lst)))))
+  (not (not (and (list? arg) (markup-list-inner? arg)))))
+
+(define (markup-argument-list? signature arguments)
+  "Typecheck argument list."
+  (if (and (pair? signature) (pair? arguments))
+      (and ((car signature) (car arguments))
+           (markup-argument-list? (cdr signature) (cdr arguments)))
+      (and (null? signature) (null? arguments))))
+
+
+(define (markup-argument-list-error signature arguments number)
+  "return (ARG-NR TYPE-EXPECTED ARG-FOUND) if an error is detected, or
+#f is no error found.
+"
+  (if (and (pair? signature) (pair? arguments))
+      (if (not ((car signature) (car arguments)))
+          (list number (type-name (car signature)) (car arguments))
+          (markup-argument-list-error (cdr signature) (cdr arguments) (+ 1 number)))
+      #f))
+
+;;
+;; full recursive typecheck.
+;;
+(define (markup-typecheck? arg)
+  (or (string? arg)
+      (and (pair? arg)
+           (markup-function? (car arg))
+           (markup-argument-list? (markup-command-signature (car arg))
+                                  (cdr arg)))))
+
+;;
+;;
+;;
+;;
+(define (markup-thrower-typecheck arg)
+  "typecheck, and throw an error when something amiss.
+
+Uncovered - cheap-markup? is used."
+
+  (cond ((string? arg) #t)
+        ((not (pair? arg))
+         (throw 'markup-format "Not a pair" arg))
+        ((not (markup-function? (car arg)))
+         (throw 'markup-format "Not a markup function " (car arg)))
+        ((not (markup-argument-list? (markup-command-signature (car arg))
+                                     (cdr arg)))
+         (throw 'markup-format "Arguments failed  typecheck for " arg)))
+  #t)
+
+;;
+;; good enough if you only  use make-XXX-markup functions.
+;;
+(define (cheap-markup? x)
+  (or (string? x)
+      (and (pair? x)
+           (markup-function? (car x)))))
+
+;;
+;; replace by markup-thrower-typecheck for more detailed diagnostics.
+;;
+(define-public markup? cheap-markup?)
+
+(define-public (make-markup markup-function make-name signature args)
+  " Construct a markup object from MARKUP-FUNCTION and ARGS. Typecheck
+against SIGNATURE, reporting MAKE-NAME as the user-invoked function.
+"
+  (let* ((arglen (length args))
+         (siglen (length signature))
+         (error-msg (if (and (> siglen 0) (> arglen 0))
+                        (markup-argument-list-error signature args 1)
+                        #f)))
+    (if (or (not (= arglen siglen)) (< siglen 0) (< arglen 0))
+        (ly:error (string-append make-name ": "
+                                 (_ "Wrong number of arguments.  Expect: ~A, found ~A: ~S"))
+                  siglen arglen args))
+    (if error-msg
+        (ly:error
+         (string-append
+          make-name ": "
+          (_ "Invalid argument in position ~A.  Expect: ~A, found: ~S."))
+         (car error-msg) (cadr error-msg)(caddr error-msg))
+        (cons markup-function args))))
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;;; markup constructors
+;;; lilypond-like syntax for markup construction in scheme.
+
+(use-modules (ice-9 receive))
+
+(defmacro*-public markup* (#:rest body)
+  "Same as `markup', for use in a \\notes block."
+  `(ly:export (markup ,@body)))
+
+
+(define (compile-all-markup-expressions expr)
+  "Return a list of canonical markups expressions, e.g.:
+  (#:COMMAND1 arg11 arg12 #:COMMAND2 arg21 arg22 arg23)
+  ===>
+  ((make-COMMAND1-markup arg11 arg12)
+   (make-COMMAND2-markup arg21 arg22 arg23) ...)"
+  (do ((rest expr rest)
+       (markps '() markps))
+      ((null? rest) (reverse markps))
+    (receive (m r) (compile-markup-expression rest)
+             (set! markps (cons m markps))
+             (set! rest r))))
+
+(define (keyword->make-markup key)
+  "Transform a keyword, e.g. #:COMMAND, in a make-COMMAND-markup symbol."
+  (string->symbol (string-append "make-" (symbol->string (keyword->symbol key)) "-markup")))
+
+(define (compile-markup-expression expr)
+  "Return two values: the first complete canonical markup expression
+   found in `expr', e.g. (make-COMMAND-markup arg1 arg2 ...),
+   and the rest expression."
+  (cond ((and (pair? expr)
+              (keyword? (car expr)))
+         ;; expr === (#:COMMAND arg1 ...)
+         (let ((command (symbol->string (keyword->symbol (car expr)))))
+           (if (not (pair? (lookup-markup-command command)))
+               (ly:error (_ "Not a markup command: ~A") command))
+           (let* ((sig (markup-command-signature
+                        (car (lookup-markup-command command))))
+                  (sig-len (length sig)))
+             (do ((i 0 (1+ i))
+                  (args '() args)
+                  (rest (cdr expr) rest))
+                 ((>= i sig-len)
+                  (values (cons (keyword->make-markup (car expr)) (reverse args)) rest))
+               (cond ((eqv? (list-ref sig i) markup-list?)
+                      ;; (car rest) is a markup list
+                      (set! args (cons `(list ,@(compile-all-markup-expressions (car rest))) args))
+                      (set! rest (cdr rest)))
+                     (else
+                       ;; pick up one arg in `rest'
+                       (receive (a r) (compile-markup-arg rest)
+                                (set! args (cons a args))
+                                (set! rest r))))))))
+        ((and (pair? expr)
+              (pair? (car expr))
+              (keyword? (caar expr)))
+         ;; expr === ((#:COMMAND arg1 ...) ...)
+         (receive (m r) (compile-markup-expression (car expr))
+                  (values m (cdr expr))))
+        ((and (pair? expr)
+              (string? (car expr))) ;; expr === ("string" ...)
+         (values `(make-simple-markup ,(car expr)) (cdr expr)))
+        (else
+          ;; expr === (symbol ...) or ((funcall ...) ...)
+          (values (car expr)
+                  (cdr expr)))))
+
+(define (compile-all-markup-args expr)
+  "Transform `expr' into markup arguments"
+  (do ((rest expr rest)
+       (args '() args))
+      ((null? rest) (reverse args))
+    (receive (a r) (compile-markup-arg rest)
+             (set! args (cons a args))
+             (set! rest r))))
+
+(define (compile-markup-arg expr)
+  "Return two values: the desired markup argument, and the rest arguments"
+  (cond ((null? expr)
+         ;; no more args
+         (values '() '()))
+        ((keyword? (car expr))
+         ;; expr === (#:COMMAND ...)
+         ;; ==> build and return the whole markup expression
+         (compile-markup-expression expr))
+        ((and (pair? (car expr))
+              (keyword? (caar expr)))
+         ;; expr === ((#:COMMAND ...) ...)
+         ;; ==> build and return the whole markup expression(s)
+         ;; found in (car expr)
+         (receive (markup-expr rest-expr) (compile-markup-expression (car expr))
+                  (if (null? rest-expr)
+                      (values markup-expr (cdr expr))
+                      (values `(list ,markup-expr ,@(compile-all-markup-args rest-expr))
+                              (cdr expr)))))
+        ((and (pair? (car expr))
+              (pair? (caar expr)))
+         ;; expr === (((foo ...) ...) ...)
+         (values (cons 'list (compile-all-markup-args (car expr))) (cdr expr)))
+        (else (values (car expr) (cdr expr)))))
+
+(define (lookup-markup-command-aux symbol)
+  (let ((proc (catch 'misc-error
+                     (lambda ()
+                       (module-ref (current-module) symbol))
+                     (lambda (key . args) #f))))
+    (and (procedure? proc) proc)))
+
+(define-public (lookup-markup-command code)
+  (let ((proc (lookup-markup-command-aux
+               (string->symbol (format #f "~a-markup" code)))))
+    (and proc (markup-function? proc)
+         (cons proc (markup-command-signature proc)))))
+
+(define-public (lookup-markup-list-command code)
+  (let ((proc (lookup-markup-command-aux
+               (string->symbol (format #f "~a-markup-list" code)))))
+    (and proc (markup-list-function? proc)
+         (cons proc (markup-command-signature proc)))))
+
+;;;;;;;;;;;;;;;;;;;;;;
+;;; used in parser.yy to map a list of markup commands on markup arguments
+(define-public (map-markup-command-list commands markups)
+  "`markups' being a list of markups, eg (markup1 markup2 markup3),
+and `commands' a list of commands with their scheme arguments, in reverse order,
+eg: ((italic) (raise 4) (bold)), maps the commands on each markup argument, eg:
+ ((bold (raise 4 (italic markup1)))
+  (bold (raise 4 (italic markup2)))
+  (bold (raise 4 (italic markup3))))
+"
+  (map-in-order (lambda (arg)
+                  (let ((result arg))
+                    (for-each (lambda (cmd)
+                                (set! result (append cmd (list result))))
+                              commands)
+                    result))
+                markups))
index 3cf774d4a880bfd66f8e9cc8bd152411143aafa8..47ebe5d2bcd969f110a4a0adbb70a7516e6bdba3 100644 (file)
 ;;;; You should have received a copy of the GNU General Public License
 ;;;; along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 
-"
-Internally markup is stored as lists, whose head is a function.
-
-  (FUNCTION ARG1 ARG2 ... )
-
-When the markup is formatted, then FUNCTION is called as follows
-
-  (FUNCTION GROB PROPS ARG1 ARG2 ... )
-
-GROB is the current grob, PROPS is a list of alists, and ARG1.. are
-the rest of the arguments.
-
-The function should return a stencil (i.e. a formatted, ready to
-print object).
-
-
-To add a markup command, use the define-markup-command utility.
-
-  (define-markup-command (mycommand layout prop arg1 ...) (arg1-type? ...)
-    \"my command usage and description\"
-    ...function body...)
-
-The command is now available in markup mode, e.g.
-
-  \\markup { .... \\MYCOMMAND #1 argument ... }
-
-" ; "
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; markup definer utilities
-
-;; For documentation purposes
-;; category -> markup functions
-(define-public markup-functions-by-category (make-hash-table 150))
-;; markup function -> used properties
-(define-public markup-functions-properties (make-weak-key-hash-table 151))
-;; List of markup list functions
-(define-public markup-list-functions (make-weak-key-hash-table 151))
-
-(use-modules (ice-9 optargs))
-
-(defmacro*-public define-markup-command
-  (command-and-args signature
-   #:key (category '()) (properties '())
-   #:rest body)
-  "
-* Define a COMMAND-markup function after command-and-args and body,
-register COMMAND-markup and its signature,
-
-* add COMMAND-markup to markup-functions-by-category,
-
-* sets COMMAND-markup markup-signature object property,
-
-* define a make-COMMAND-markup function.
-
-Syntax:
-  (define-markup-command (COMMAND layout props . arguments)
-                                 argument-types
-                                 [ #:properties properties ]
-    \"documentation string\"
-    ...command body...)
-
-where:
-  `argument-types' is a list of type predicates for arguments
-  `properties' a list of (property default-value) lists
-
-The specified properties are available as let-bound variables in the
-command body, using the respective `default-value' as fallback in case
-`property' is not found in `props'.  `props' itself is left unchanged:
-if you want defaults specified in that manner passed down into other
-markup functions, you need to adjust `props' yourself.
-
-The autogenerated documentation makes use of some optional
-specifications that are otherwise ignored:
-
-After `argument-types', you may also specify
-                                 [ #:category category ]
-where:
-  `category' is either a symbol or a symbol list specifying the
-             category for this markup command in the docs.
-
-As an element of the `properties' list, you may directly use a
-COMMANDx-markup symbol instead of a `(prop value)' list to indicate
-that this markup command is called by the newly defined command,
-adding its properties to the documented properties of the new
-command.  There is no protection against circular definitions.
-"
-  (let* ((command (car command-and-args))
-         (args (cdr command-and-args))
-         (command-name (string->symbol (format #f "~a-markup" command)))
-         (make-markup-name (string->symbol (format #f "make-~a-markup" command))))
-    (while (and (pair? body) (keyword? (car body)))
-          (set! body (cddr body)))
-    `(begin
-       ;; define the COMMAND-markup function
-       ,(let* ((documentation (if (string? (car body))
-                                 (list (car body))
-                                 '()))
-              (real-body (if (or (null? documentation)
-                                 (null? (cdr body)))
-                             body (cdr body))))
-         `(define-public (,command-name ,@args)
-            ,@documentation
-            (let ,(map (lambda (prop-spec)
-                         (let ((prop (car prop-spec))
-                               (default-value (if (null? (cdr prop-spec))
-                                                  #f
-                                                  (cadr prop-spec)))
-                               (props (cadr args)))
-                           `(,prop (chain-assoc-get ',prop ,props ,default-value))))
-                       (filter pair? properties))
-              ,@real-body)))
-       (set! (markup-command-signature ,command-name) (list ,@signature))
-       ;; Register the new function, for markup documentation
-       ,@(map (lambda (category)
-               `(hashq-set!
-                 (or (hashq-ref markup-functions-by-category ',category)
-                     (let ((hash (make-weak-key-hash-table 151)))
-                       (hashq-set! markup-functions-by-category ',category
-                                   hash)
-                       hash))
-                 ,command-name #t))
-             (if (list? category) category (list category)))
-       ;; Used properties, for markup documentation
-       (hashq-set! markup-functions-properties
-                  ,command-name
-                  (list ,@(map (lambda (prop-spec)
-                                 (cond ((symbol? prop-spec)
-                                        prop-spec)
-                                        ((not (null? (cdr prop-spec)))
-                                         `(list ',(car prop-spec) ,(cadr prop-spec)))
-                                        (else
-                                         `(list ',(car prop-spec)))))
-                               (if (pair? args)
-                                   properties
-                                   (list)))))
-       ;; define the make-COMMAND-markup function
-       (define-public (,make-markup-name . args)
-        (let ((sig (list ,@signature)))
-          (make-markup ,command-name ,(symbol->string make-markup-name) sig args))))))
-
-(defmacro*-public define-markup-list-command
-  (command-and-args signature #:key (properties '()) #:rest body)
-  "Same as `define-markup-command', but defines a command that, when
-interpreted, returns a list of stencils instead of a single one"
-  (let* ((command (car command-and-args))
-         (args (cdr command-and-args))
-         (command-name (string->symbol (format #f "~a-markup-list" command)))
-         (make-markup-name (string->symbol (format #f "make-~a-markup-list" command))))
-    (while (and (pair? body) (keyword? (car body)))
-          (set! body (cddr body)))
-    `(begin
-       ;; define the COMMAND-markup-list function
-       ,(let* ((documentation (if (string? (car body))
-                                 (list (car body))
-                                 '()))
-              (real-body (if (or (null? documentation)
-                                 (null? (cdr body)))
-                             body (cdr body))))
-         `(define-public (,command-name ,@args)
-            ,@documentation
-            (let ,(map (lambda (prop-spec)
-                         (let ((prop (car prop-spec))
-                               (default-value (if (null? (cdr prop-spec))
-                                                  #f
-                                                  (cadr prop-spec)))
-                               (props (cadr args)))
-                           `(,prop (chain-assoc-get ',prop ,props ,default-value))))
-                       (filter pair? properties))
-              ,@real-body)))
-       (set! (markup-command-signature ,command-name) (list ,@signature))
-       ;; add the command to markup-list-function-list, for markup documentation
-       (hashq-set! markup-list-functions ,command-name #t)
-       ;; Used properties, for markup documentation
-       (hashq-set! markup-functions-properties
-                  ,command-name
-                  (list ,@(map (lambda (prop-spec)
-                                 (cond ((symbol? prop-spec)
-                                        prop-spec)
-                                        ((not (null? (cdr prop-spec)))
-                                         `(list ',(car prop-spec) ,(cadr prop-spec)))
-                                        (else
-                                         `(list ',(car prop-spec)))))
-                               (if (pair? args)
-                                   properties
-                                   (list)))))
-       ;; it's a markup-list command:
-       (set-object-property! ,command-name 'markup-list-command #t)
-       ;; define the make-COMMAND-markup-list function
-       (define-public (,make-markup-name . args)
-        (let ((sig (list ,@signature)))
-          (list (make-markup ,command-name
-                             ,(symbol->string make-markup-name) sig args)))))))
-
-(define-public (make-markup markup-function make-name signature args)
-  "Construct a markup object from @var{markup-function} and @var{args}.
-Typecheck against @var{signature}, reporting @var{make-name} as the
-user-invoked function."
-  (let* ((arglen (length args))
-        (siglen (length signature))
-        (error-msg (if (and (> siglen 0) (> arglen 0))
-                       (markup-argument-list-error signature args 1)
-                       #f)))
-    (if (or (not (= arglen siglen)) (< siglen 0) (< arglen 0))
-       (ly:error (string-append make-name ": "
-                  (_ "Wrong number of arguments.  Expect: ~A, found ~A: ~S"))
-                 siglen arglen args))
-    (if error-msg
-       (ly:error
-        (string-append
-         make-name ": "
-         (_ "Invalid argument in position ~A.  Expect: ~A, found: ~S."))
-         (car error-msg) (cadr error-msg)(caddr error-msg))
-       (cons markup-function args))))
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;;; markup constructors
-;;; lilypond-like syntax for markup construction in scheme.
-
-(use-modules (ice-9 receive))
-
 (defmacro*-public markup (#:rest body)
   "The `markup' macro provides a lilypond-like syntax for building markups.
 
@@ -258,252 +37,6 @@ Use `markup*' in a \\notemode context."
 
   (car (compile-all-markup-expressions `(#:line ,body))))
 
-(defmacro*-public markup* (#:rest body)
-  "Same as `markup', for use in a \\notes block."
-  `(ly:export (markup ,@body)))
-
-
-(define (compile-all-markup-expressions expr)
-  "Return a list of canonical markups expressions, e.g.:
-  (#:COMMAND1 arg11 arg12 #:COMMAND2 arg21 arg22 arg23)
-  ===>
-  ((make-COMMAND1-markup arg11 arg12)
-   (make-COMMAND2-markup arg21 arg22 arg23) ...)"
-  (do ((rest expr rest)
-       (markps '() markps))
-      ((null? rest) (reverse markps))
-    (receive (m r) (compile-markup-expression rest)
-             (set! markps (cons m markps))
-             (set! rest r))))
-
-(define (keyword->make-markup key)
-  "Transform a keyword, e.g. #:COMMAND, in a make-COMMAND-markup symbol."
-  (string->symbol (string-append "make-" (symbol->string (keyword->symbol key)) "-markup")))
-
-(define (compile-markup-expression expr)
-  "Return two values: the first complete canonical markup expression
-   found in `expr', e.g. (make-COMMAND-markup arg1 arg2 ...),
-   and the rest expression."
-  (cond ((and (pair? expr)
-              (keyword? (car expr)))
-         ;; expr === (#:COMMAND arg1 ...)
-         (let ((command (symbol->string (keyword->symbol (car expr)))))
-            (if (not (pair? (lookup-markup-command command)))
-                (ly:error (_ "Not a markup command: ~A") command))
-            (let* ((sig (markup-command-signature
-                         (car (lookup-markup-command command))))
-                   (sig-len (length sig)))
-              (do ((i 0 (1+ i))
-                   (args '() args)
-                   (rest (cdr expr) rest))
-                  ((>= i sig-len)
-                   (values (cons (keyword->make-markup (car expr)) (reverse args)) rest))
-                (cond ((eqv? (list-ref sig i) markup-list?)
-                       ;; (car rest) is a markup list
-                       (set! args (cons `(list ,@(compile-all-markup-expressions (car rest))) args))
-                       (set! rest (cdr rest)))
-                      (else
-                       ;; pick up one arg in `rest'
-                       (receive (a r) (compile-markup-arg rest)
-                         (set! args (cons a args))
-                         (set! rest r))))))))
-        ((and (pair? expr)
-              (pair? (car expr))
-              (keyword? (caar expr)))
-         ;; expr === ((#:COMMAND arg1 ...) ...)
-         (receive (m r) (compile-markup-expression (car expr))
-                  (values m (cdr expr))))
-        ((and (pair? expr)
-              (string? (car expr))) ;; expr === ("string" ...)
-         (values `(make-simple-markup ,(car expr)) (cdr expr)))
-        (else
-         ;; expr === (symbol ...) or ((funcall ...) ...)
-         (values (car expr)
-                 (cdr expr)))))
-
-(define (compile-all-markup-args expr)
-  "Transform `expr' into markup arguments"
-  (do ((rest expr rest)
-       (args '() args))
-      ((null? rest) (reverse args))
-    (receive (a r) (compile-markup-arg rest)
-             (set! args (cons a args))
-             (set! rest r))))
-
-(define (compile-markup-arg expr)
-  "Return two values: the desired markup argument, and the rest arguments"
-  (cond ((null? expr)
-         ;; no more args
-         (values '() '()))
-        ((keyword? (car expr))
-         ;; expr === (#:COMMAND ...)
-         ;; ==> build and return the whole markup expression
-         (compile-markup-expression expr))
-        ((and (pair? (car expr))
-              (keyword? (caar expr)))
-         ;; expr === ((#:COMMAND ...) ...)
-         ;; ==> build and return the whole markup expression(s)
-         ;; found in (car expr)
-         (receive (markup-expr rest-expr) (compile-markup-expression (car expr))
-                  (if (null? rest-expr)
-                      (values markup-expr (cdr expr))
-                      (values `(list ,markup-expr ,@(compile-all-markup-args rest-expr))
-                              (cdr expr)))))
-        ((and (pair? (car expr))
-              (pair? (caar expr)))
-         ;; expr === (((foo ...) ...) ...)
-         (values (cons 'list (compile-all-markup-args (car expr))) (cdr expr)))
-        (else (values (car expr) (cdr expr)))))
-
-;;;;;;;;;;;;;;;
-;;; Utilities for storing and accessing markup commands signature
-;;; Examples:
-;;;
-;;; (set! (markup-command-signature raise-markup) (list number? markup?))
-;;; ==> (#<primitive-procedure number?> #<procedure markup? (obj)>)
-;;;
-;;; (markup-command-signature raise-markup)
-;;; ==> (#<primitive-procedure number?> #<procedure markup? (obj)>)
-;;;
-
-(define-public (markup-command-signature-ref markup-command)
-  "Return @var{markup-command}'s signature (the @code{'markup-signature}
-object property)."
-  (object-property markup-command 'markup-signature))
-
-(define-public (markup-command-signature-set! markup-command signature)
-  "Set @var{markup-command}'s signature (as object property)."
-  (set-object-property! markup-command 'markup-signature signature)
-  signature)
-
-(define-public markup-command-signature
-  (make-procedure-with-setter markup-command-signature-ref
-                              markup-command-signature-set!))
-
-(define (lookup-markup-command-aux symbol)
-  (let ((proc (catch 'misc-error
-                (lambda ()
-                  (module-ref (current-module) symbol))
-                (lambda (key . args) #f))))
-    (and (procedure? proc) proc)))
-
-(define-public (lookup-markup-command code)
-  (let ((proc (lookup-markup-command-aux
-              (string->symbol (format #f "~a-markup" code)))))
-    (and proc (markup-function? proc)
-        (cons proc (markup-command-signature proc)))))
-
-(define-public (lookup-markup-list-command code)
-  (let ((proc (lookup-markup-command-aux
-              (string->symbol (format #f "~a-markup-list" code)))))
-     (and proc (markup-list-function? proc)
-         (cons proc (markup-command-signature proc)))))
-
-;;;;;;;;;;;;;;;;;;;;;;
-;;; used in parser.yy to map a list of markup commands on markup arguments
-(define-public (map-markup-command-list commands markups)
-  "@var{markups} being a list of markups, for example
-@code{(markup1 markup2 markup3)}, and @var{commands} a list of commands with
-their scheme arguments, in reverse order, for example
-@code{((italic) (raise 4) (bold))}, map the commands on each markup argument,
-for example
-@example
-((bold (raise 4 (italic markup1)))
- (bold (raise 4 (italic markup2)))
- (bold (raise 4 (italic markup3))))
-@end example"
-  (map-in-order (lambda (arg)
-                  (let ((result arg))
-                    (for-each (lambda (cmd)
-                                (set! result (append cmd (list result))))
-                              commands)
-                    result))
-                markups))
-
-;;;;;;;;;;;;;;;;;;;;;;
-;;; markup type predicates
-
-(define (markup-function? x)
-  (and (markup-command-signature x)
-       (not (object-property x 'markup-list-command))))
-
-(define (markup-list-function? x)
-  (and (markup-command-signature x)
-       (object-property x 'markup-list-command)))
-
-(define-public (markup-command-list? x)
-  "Determine whether @var{x} is a markup command list, i.e. a list
-composed of a markup list function and its arguments."
-  (and (pair? x) (markup-list-function? (car x))))
-
-(define-public (markup-list? arg)
-  "Return @code{#t} if @var{x} is a list of markups or markup command lists."
-  (define (markup-list-inner? lst)
-    (or (null? lst)
-       (and (or (markup? (car lst)) (markup-command-list? (car lst)))
-             (markup-list-inner? (cdr lst)))))
-  (not (not (and (list? arg) (markup-list-inner? arg)))))
-
-(define (markup-argument-list? signature arguments)
-  "Typecheck argument list."
-  (if (and (pair? signature) (pair? arguments))
-      (and ((car signature) (car arguments))
-           (markup-argument-list? (cdr signature) (cdr arguments)))
-      (and (null? signature) (null? arguments))))
-
-
-(define (markup-argument-list-error signature arguments number)
-  "return (ARG-NR TYPE-EXPECTED ARG-FOUND) if an error is detected, or
-#f is no error found.
-"
-  (if (and (pair? signature) (pair? arguments))
-      (if (not ((car signature) (car arguments)))
-          (list number (type-name (car signature)) (car arguments))
-          (markup-argument-list-error (cdr signature) (cdr arguments) (+ 1 number)))
-      #f))
-
-;;
-;; full recursive typecheck.
-;;
-(define (markup-typecheck? arg)
-  (or (string? arg)
-      (and (pair? arg)
-           (markup-function? (car arg))
-           (markup-argument-list? (markup-command-signature (car arg))
-                                  (cdr arg)))))
-
-;;
-;;
-;;
-;;
-(define (markup-thrower-typecheck arg)
-  "typecheck, and throw an error when something amiss.
-
-Uncovered - cheap-markup? is used."
-
-  (cond ((string? arg) #t)
-        ((not (pair? arg))
-         (throw 'markup-format "Not a pair" arg))
-        ((not (markup-function? (car arg)))
-         (throw 'markup-format "Not a markup function " (car arg)))
-        ((not (markup-argument-list? (markup-command-signature (car arg))
-                                     (cdr arg)))
-         (throw 'markup-format "Arguments failed  typecheck for " arg)))
-  #t)
-
-;;
-;; good enough if you only  use make-XXX-markup functions.
-;;
-(define (cheap-markup? x)
-  (or (string? x)
-      (and (pair? x)
-           (markup-function? (car x)))))
-
-;;
-;; replace by markup-thrower-typecheck for more detailed diagnostics.
-;;
-(define-public markup? cheap-markup?)
-
 ;; utility
 
 (define (markup-join markups sep)
@@ -518,12 +51,12 @@ Uncovered - cheap-markup? is used."
 (define-public (interpret-markup-list layout props markup-list)
   (let ((stencils (list)))
     (for-each (lambda (m)
-               (set! stencils
-                     (if (markup-command-list? m)
-                         (append! (reverse! (apply (car m) layout props (cdr m)))
-                                  stencils)
-                         (cons (interpret-markup layout props m) stencils))))
-             markup-list)
+                (set! stencils
+                      (if (markup-command-list? m)
+                          (append! (reverse! (apply (car m) layout props (cdr m)))
+                                   stencils)
+                          (cons (interpret-markup layout props m) stencils))))
+              markup-list)
     (reverse! stencils)))
 
 (define-public (prepend-alist-chain key val chain)
@@ -532,15 +65,15 @@ Uncovered - cheap-markup? is used."
 (define-public (stack-stencil-line space stencils)
   "DOCME"
   (if (and (pair? stencils)
-          (ly:stencil? (car stencils)))
+           (ly:stencil? (car stencils)))
 
       (if (and (pair? (cdr stencils))
-              (ly:stencil? (cadr stencils)))
+               (ly:stencil? (cadr stencils)))
           (let* ((tail (stack-stencil-line space (cdr stencils)))
                  (head (car stencils))
                  (xoff (+ space (interval-length (ly:stencil-extent head X)))))
             (ly:stencil-add head
-                             (ly:stencil-translate-axis tail xoff X)))
+                            (ly:stencil-translate-axis tail xoff X)))
           (car stencils))
       (ly:make-stencil '() '(0 . 0) '(0 . 0))))
 
@@ -550,57 +83,57 @@ Uncovered - cheap-markup? is used."
 (define-public (markup->string m)
   ;; markup commands with one markup argument, formatting ignored
   (define markups-first-argument '(list
-    bold-markup box-markup caps-markup dynamic-markup finger-markup
-    fontCaps-markup huge-markup italic-markup large-markup larger-markup
-    medium-markup normal-size-sub-markup normal-size-super-markup
-    normal-text-markup normalsize-markup number-markup roman-markup
-    sans-markup simple-markup small-markup smallCaps-markup smaller-markup
-    sub-markup super-markup teeny-markup text-markup tiny-markup
-    typewriter-markup underline-markup upright-markup bracket-markup
-    circle-markup hbracket-markup parenthesize-markup rounded-box-markup
-
-    center-align-markup center-column-markup column-markup dir-column-markup
-    fill-line-markup justify-markup justify-string-markup left-align-markup
-    left-column-markup line-markup right-align-markup right-column-markup
-    vcenter-markup wordwrap-markup wordwrap-string-markup ))
+                                   bold-markup box-markup caps-markup dynamic-markup finger-markup
+                                   fontCaps-markup huge-markup italic-markup large-markup larger-markup
+                                   medium-markup normal-size-sub-markup normal-size-super-markup
+                                   normal-text-markup normalsize-markup number-markup roman-markup
+                                   sans-markup simple-markup small-markup smallCaps-markup smaller-markup
+                                   sub-markup super-markup teeny-markup text-markup tiny-markup
+                                   typewriter-markup underline-markup upright-markup bracket-markup
+                                   circle-markup hbracket-markup parenthesize-markup rounded-box-markup
+
+                                   center-align-markup center-column-markup column-markup dir-column-markup
+                                   fill-line-markup justify-markup justify-string-markup left-align-markup
+                                   left-column-markup line-markup right-align-markup right-column-markup
+                                   vcenter-markup wordwrap-markup wordwrap-string-markup ))
 
   ;; markup commands with markup as second argument, first argument
   ;; specifies some formatting and is ignored
   (define markups-second-argument '(list
-    abs-fontsize-markup fontsize-markup magnify-markup lower-markup
-    pad-around-markup pad-markup-markup pad-x-markup raise-markup
-    halign-markup hcenter-in-markup rotate-markup translate-markup
-    translate-scaled-markup with-url-markup scale-markup ))
+                                    abs-fontsize-markup fontsize-markup magnify-markup lower-markup
+                                    pad-around-markup pad-markup-markup pad-x-markup raise-markup
+                                    halign-markup hcenter-in-markup rotate-markup translate-markup
+                                    translate-scaled-markup with-url-markup scale-markup ))
 
   ;; helper functions to handle string cons like string lists
   (define (markup-cons->string-cons c)
     (if (not (pair? c)) (markup->string c)
-      (cons (markup->string (car c)) (markup-cons->string-cons (cdr c)))))
+        (cons (markup->string (car c)) (markup-cons->string-cons (cdr c)))))
   (define (string-cons-join c)
     (if (not (pair? c)) c
         (string-join (list (car c) (string-cons-join (cdr c))) "")))
 
   (cond
-    ((string? m) m)
-    ((null? m) "")
+   ((string? m) m)
+   ((null? m) "")
 
-    ;; handle \concat (string-join without spaces)
-    ((and (pair? m) (equal? (car m) concat-markup))
-        (string-cons-join (markup-cons->string-cons (cadr m))) )
+   ;; handle \concat (string-join without spaces)
+   ((and (pair? m) (equal? (car m) concat-markup))
+    (string-cons-join (markup-cons->string-cons (cadr m))) )
 
-    ;; markup functions with the markup as first arg
-    ((member (car m) (primitive-eval markups-first-argument))
-        (markup->string (cadr m)))
+   ;; markup functions with the markup as first arg
+   ((member (car m) (primitive-eval markups-first-argument))
+    (markup->string (cadr m)))
 
-    ;; markup functions with markup as second arg
-    ((member (car m) (primitive-eval markups-second-argument))
-        (markup->string (cddr m)))
+   ;; markup functions with markup as second arg
+   ((member (car m) (primitive-eval markups-second-argument))
+    (markup->string (cddr m)))
 
-    ;; ignore all other markup functions
-    ((markup-function? (car m)) "")
+   ;; ignore all other markup functions
+   ((markup-function? (car m)) "")
 
-    ;; handle markup lists
-    ((list? m)
-        (string-join (map markup->string m) " "))
+   ;; handle markup lists
+   ((list? m)
+    (string-join (map markup->string m) " "))
 
-    (else "ERROR, unable to extract string from markup")))
+   (else "ERROR, unable to extract string from markup")))
index 3394ed1b3b78c3489de22ceef025be00b76dedc1..d7fedb689d9cf3e69a445ec7c4731ce176fe75b0 100644 (file)
@@ -424,6 +424,7 @@ in @var{grob}."
      (make-property-set 'graceSettings
                        ;; TODO: take this from voicedGraceSettings or similar.
                        '((Voice Stem font-size -3)
+                         (Voice Flag font-size -3)
                          (Voice NoteHead font-size -3)
                          (Voice TabNoteHead font-size -4)
                          (Voice Dots font-size -3)
@@ -650,21 +651,6 @@ NUMBER is 0-base, i.e., Voice=1 (upstems) has number 0.
        (set! (ly:grob-property grob symbol) val))))
 
 
-;;
-(define-public (smart-bar-check n)
-  "Make a bar check that checks for a specific bar number."
-  (let ((m (make-music 'ApplyContext)))
-    (define (checker tr)
-      (let* ((bn (ly:context-property tr 'currentBarNumber)))
-       (or (= bn n)
-           (ly:error
-            ;; FIXME: uncomprehensable message
-            (_ "Bar check failed.  Expect to be at ~a, instead at ~a")
-            n bn))))
-    (set! (ly:music-property m 'procedure) checker)
-    m))
-
-
 (define-public (skip->rest mus)
   "Replace @var{mus} by @code{RestEvent} of the same duration if it is a
 @code{SkipEvent}.  Useful for extracting parts from crowded scores."
@@ -692,12 +678,17 @@ NUMBER is 0-base, i.e., Voice=1 (upstems) has number 0.
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; warn for bare chords at start.
 
-
 (define-public (ly:music-message music msg)
   (let ((ip (ly:music-property music 'origin)))
     (if (ly:input-location? ip)
-       (ly:input-message ip msg)
-       (ly:warning msg))))
+        (ly:input-message ip msg)
+        (ly:message msg))))
+
+(define-public (ly:music-warning music msg)
+  (let ((ip (ly:music-property music 'origin)))
+    (if (ly:input-location? ip)
+        (ly:input-warning ip msg)
+        (ly:warning msg))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;
@@ -842,7 +833,7 @@ Syntax:
              (set! (ly:music-property music 'quoted-events) quoted-vector)
              (set! (ly:music-property music 'iterator-ctor)
                    ly:quote-iterator::constructor))
-           (ly:music-message music (ly:format (_ "cannot find quoted music: `~S'") quoted-name))))
+           (ly:music-warning music (ly:format (_ "cannot find quoted music: `~S'") quoted-name))))
     music))
 
 
@@ -1114,7 +1105,7 @@ active pitch in any octave.
 @var{laziness} states over how many bars an accidental should be remembered.
 @code{0}@tie{}is the default -- accidental lasts over 0@tie{}bar lines, that
 is, to the end of current measure.  A positive integer means that the
-accidental lasts over that many bar lines.  @code{-1} is `forget
+accidental lasts over that many bar lines.  @w{@code{-1}} is `forget
 immediately', that is, only look at key signature.  @code{#t} is `forever'."
 
   (check-pitch-against-signature context pitch barnum laziness octaveness))
index 025590e5bae0e001db8f089a96b811485faa1198..70e3ba3eeb07885ff46475ec6f20b2a841dd01f8 100644 (file)
     (ly:text-interface::interpret-markup layout props text)))
 
 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; cross-staff stuff
+
+(define-public (script-or-side-position-cross-staff g)
+  (or
+   (ly:script-interface::calc-cross-staff g)
+   (ly:side-position-interface::calc-cross-staff g)))
+
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; note heads
 
   (ly:duration-log
    (ly:event-property (event-cause grob) 'duration)))
 
+(define-public (stem::length grob)
+  (let* ((d (ly:grob-property grob 'direction))
+         (ss (ly:staff-symbol-staff-space grob))
+         (beg (ly:grob-property grob 'stem-begin-position))
+         (beam (ly:grob-object grob 'beam)))
+    (if (null? beam)
+        (abs (- (ly:stem::calc-stem-end-position grob) beg))
+        (ly:grob-property grob 'length))))
+
+(define-public (stem::pure-length grob beg end)
+  (let* ((d (ly:grob-property grob 'direction))
+         (ss (ly:staff-symbol-staff-space grob))
+         (beg (ly:grob-pure-property grob 'stem-begin-position 0 1000)))
+    (abs (- (ly:stem::pure-calc-stem-end-position grob 0 2147483646) beg))))
+
 (define-public (note-head::calc-duration-log grob)
   (min 2
        (ly:duration-log
index b86392623fddbf3b27ed5a4550e57b4aef5ad528..a17edb63f9e59ff2445734b5f38aa5b5b26267b2 100644 (file)
                                                                         (char->integer #\0)))))
                                                  (string->list (number->string var-idx)))))))))
 
-(define-public (parse-string-result str parser)
-  "Parse @var{str}, which is supposed to contain a music expression."
-
-  (ly:parser-parse-string
-   parser
-   (format #f "parseStringResult = \\notemode { ~a }" str))
-  (ly:parser-lookup parser 'parseStringResult))
-
 (define-public (read-lily-expression chr port)
   "Read a lilypond music expression enclosed within @code{#@}} and @code{#@}}
 from @var{port} and return the corresponding Scheme music expression.
@@ -93,6 +85,6 @@ symbols.  @code{$$} may be used to simply write a @samp{$} character itself."
          ,@(map (lambda (binding)
                   `(ly:parser-define! parser-clone ',(car binding) ,(cdr binding)))
                 (reverse bindings))
-         (parse-string-result ,lily-string parser-clone)))))
+         (ly:parse-string-expression parser-clone ,lily-string)))))
 
 (read-hash-extend #\{ read-lily-expression)
index 8c779a91ee19944affc53ee95d8848e5f1582724..c492701c9142087bb6c44ac65deabf1a41d0a224 100644 (file)
@@ -594,4 +594,4 @@ the mark when there are no spanners active.
 
     (if (not (null? quote-contents))
         (hash-set! tab name (list->vector (reverse! quote-contents '())))
-        (ly:music-message mus (ly:format (_ "quoted music `~a' is empty") name)))))
+        (ly:music-warning mus (ly:format (_ "quoted music `~a' is empty") name)))))
index 80bb58abcca28579c7ff3d6fe26477c13b27de79..caffb9aeda8d3dd717d607917684cddaf9a009b6 100644 (file)
@@ -84,7 +84,7 @@
       (my-system
        be-verbose #t
        (format #f
-              "pngtopnm ~a | pnmscale -reduce ~a 2>/dev/null | pnmtopng -compression 9 2>/dev/null > ~a"
+              "pngtopnm \"~a\" | pnmscale -reduce ~a 2>/dev/null | pnmtopng -compression 9 2>/dev/null > \"~a\""
               old factor file))
       (delete-file old)))
 
index 417df4cbee435084d093bcb65036ff59e1620dce..4d6dc05a8ea6eb5bcbe8f346cca4470c5b3fe6c1 100644 (file)
      . (
        (script-stencil . (feta . ("uportato" . "dportato")))
        (avoid-slur . around)
-       (slur-padding . 0.3)
        (padding . 0.45)
        (side-relative-direction . ,DOWN)))
     ("prall"
        (avoid-slur . around)
        (padding . 0.50)
        (direction . ,UP)
-       (slur-padding . 0.2)
        (staff-padding . 0.5)))
     ("trill"
      . (
index 8adc6e4ac5890885d41f2f193b2c06b060fe075e..ac99b292b5b23fa8aa19ad05757ecec1739c9b62 100644 (file)
@@ -1332,6 +1332,7 @@ def parse_file (fn):
 
         orig_ln = ln
 
+        ln = junk_space (ln, state)
         ln = try_parse_header_line (ln, state)
 
         # Try nibbling characters off until the line doesn't change.
index 7dd41eeadec97e851683faaeb97b872a830291fd..a3577ae830a77316570b37806ce415eee9180931 100644 (file)
@@ -131,8 +131,8 @@ def expand_includes (m, filename):
                 return extract_sections (filepath)[1]
         if not (include_name in known_missing_files):
             # Not found
-            print 'No such file: ' + include_name
-            print 'Search path: ' + ':'.join (include_path)
+            print 'Warning: No such file: ' + include_name + \
+                  ' (search path: ' + ':'.join (include_path)+')'
         return ''
 
 lang_re = re.compile (r'^@documentlanguage (.+)', re.M)
index c4e387547b18563b5fe6ba81e4f05fbf90e61129..a868ea2903395ebadec6f19383d183810a2170a9 100644 (file)
@@ -6,6 +6,7 @@ TODO:
 
  * Add @nodes, split at sections?
 
+ * -o --output   listed in help is not implemented?!
 '''
 
 
@@ -13,6 +14,7 @@ import sys
 import os
 import getopt
 import re
+import glob
 
 program_name = 'lys-to-tely'
 
@@ -26,6 +28,8 @@ Options:
  -f, --fragment-options=OPTIONS use OPTIONS as lilypond-book fragment
    options
  -o, --output=NAME              write tely doc to NAME
+ -i, --input-filenames=NAME     read list of files from a file instead of stdin
+ -g, --glob-input=GLOB          a string which will be passed to glob.glob(GLOB)
  -t, --title=TITLE              set tely doc title TITLE
  -a, --author=AUTHOR            set tely author AUTHOR
      --template=TEMPLATE        use TEMPLATE as Texinfo template file,
@@ -39,11 +43,15 @@ def help (text):
     sys.exit (0)
 
 (options, files) = getopt.getopt (sys.argv[1:], 'f:hn:t:',
-                     ['fragment-options=', 'help', 'name=', 'title=', 'author=', 'template='])
+                     ['fragment-options=', 'help', 'name=',
+                     'title=', 'author=', 'template=',
+                     'input-filenames=', 'glob-input='])
 
 name = "ly-doc"
 title = "Ly Doc"
 author = "Han-Wen Nienhuys and Jan Nieuwenhuizen"
+input_filename = ""
+glob_input = ""
 template = '''\input texinfo
 @setfilename %%(name)s.info
 @settitle %%(title)s
@@ -83,6 +91,10 @@ for opt in options:
         title = a
     elif o == '-a' or o == '--author':
         author = a
+    elif o == '-i' or o == '--input-filenames':
+        input_filename = a
+    elif o == '-p' or o == '--glob-input':
+        glob_input = a
     elif o == '-f' or o == '--fragment-options':
         fragment_options = a
     elif o == '--template':
@@ -92,7 +104,7 @@ for opt in options:
 
 texi_file_re = re.compile ('.*\.i?te(ly|xi)$')
 html_file_re = re.compile ('.*\.i?htm(l)?$')
-xml_file_re = re.compile ('.*\.i?xml$')
+xml_file_re = re.compile ('.*\.i?(xm|mx)l$')
 tex_file_re = re.compile ('.*\.i?(la)?tex$')
 pdf_file_re = re.compile ('.*\.i?pdf$')
 
@@ -101,7 +113,7 @@ def name2line (n):
         # We have a texi include file, simply include it:
         s = r"@include %s" % os.path.basename (n)
     elif (html_file_re.match (n) or pdf_file_re.match (n) or
-          xml_file_re.match (n) or tex_file_re.match (n)):
+          tex_file_re.match (n)):
         s = r"""
 @ifhtml
 @html
@@ -110,7 +122,19 @@ def name2line (n):
 @end html
 @end ifhtml
 """ % (os.path.basename (n), os.path.basename (n))
-        return s
+
+    elif (xml_file_re.match (n)):
+        # Assume it's a MusicXML file -> convert, create image etc.
+        s = r"""
+@ifhtml
+@html
+<a name="%s"></a>
+@end html
+@end ifhtml
+
+@musicxmlfile[%s]{%s}
+""" % (os.path.basename (n), fragment_options, n)
+
     else:
         # Assume it's a lilypond file -> create image etc.
         s = r"""
@@ -124,6 +148,11 @@ def name2line (n):
 """ % (os.path.basename (n), fragment_options, n)
     return s
 
+if glob_input:
+    files = glob.glob(glob_input)
+elif input_filename:
+    files = open(input_filename).read().split()
+
 if files:
     dir = os.path.dirname (name) or "."
 # don't strip .tely extension, Documentation/snippets uses .itely
index 537363b63a4958b26ab2698e72d08ff91c858aaa..b90bda55488480543c4837d4296788b56fcac30b 100644 (file)
@@ -3,6 +3,7 @@ import sys
 import optparse
 import os
 import math
+import re
 
 ## so we can call directly as scripts/build/output-distance.py
 me_path = os.path.abspath (os.path.split (sys.argv[0])[0])
@@ -314,7 +315,9 @@ class SystemLink:
                 self.geometric_distance ())
 
 def scheme_float (s) :
-  return float(s) if 'nan' not in s else float(s.split('.')[0])
+    if 'nan' not in s :
+        return float(s)
+    return float(s.split('.')[0])
 
 def read_signature_file (name):
     print 'reading', name
@@ -466,11 +469,22 @@ class GitFileCompareLink (FileCompareLink):
         return d
 
 
+snippet_fn_re = re.compile (r"`\./([0-9a-f]{2}/lily-[0-9a-f]{8}).eps'");
 class TextFileCompareLink (FileCompareLink):
     def calc_distance (self):
         import difflib
-        diff = difflib.unified_diff (self.contents[0].strip().split ('\n'),
-                                     self.contents[1].strip().split ('\n'),
+        # Extract the old and the new hashed snippet names from the log file
+        # and replace the old by the new, so file name changes don't show
+        # up as log differences...
+        cont0 = self.contents[0].strip();
+        cont1 = self.contents[1].strip();
+        m0 = re.search (snippet_fn_re, cont0);
+        m1 = re.search (snippet_fn_re, cont1);
+        if (m0 and m1 and (m0.group(1) != m1.group(1))):
+            cont0 = cont0.replace (m0.group(1), m1.group(1));
+
+        diff = difflib.unified_diff (cont0.split ('\n'),
+                                     cont1.split ('\n'),
                                      fromfiledate = self.file_names[0],
                                      tofiledate = self.file_names[1]
                                      )
@@ -752,7 +766,6 @@ class SignatureFileLink (FileLink):
 # Files/directories
 
 import glob
-import re
 
 def compare_signature_files (f1, f2):
     s1 = read_signature_file (f1)
index c0c7ee3e354fdee020bfeeb971cf92f91be57ec0..930c11da107db7bb24345a13216beaf6dc9c5fce 100644 (file)
@@ -182,9 +182,11 @@ string."""
     conv_list = get_conversions (from_version, to_version)
 
     error_file_write (_ ("Applying conversion: "))
-        
+
     last_conversion = ()
     try:
+        if not conv_list:
+            last_conversion = to_version
         for x in conv_list:
             error_file_write (tup_to_str (x[0]))
             if x != conv_list[-1]:
@@ -275,7 +277,7 @@ def do_one_file (infile_name):
         elif not global_options.skip_version_add:
             result = newversion + '\n' + result
             
-        error_file_write ('\n')            
+        error_file_write ('\n')
     
         if global_options.edit:
             try:
index cb3ff4de3269861c09f0e5d83bb46a2bbdd39ca4..b1256529fd247ae6193b906f7e7e7ce8ab15b6cc 100644 (file)
@@ -227,6 +227,11 @@ case --pdf option is set instead of pdflatex"),
               metavar=_ ("PROG"),
               action='store', dest='latex_program',
               default='latex')
+    group.add_option ('--texinfo-program',
+              help=_ ("run executable PROG instead of texi2pdf"),
+              metavar=_ ("PROG"),
+              action='store', dest='texinfo_program',
+              default='texi2pdf')
     group.add_option ('--pdf',
               action="store_true",
               dest="create_pdf",
index 1923d3b8803961cb31523ead1fd6c7567ad0b569..1a21c665155d5c163b784f149716631e83901197 100644 (file)
@@ -975,7 +975,7 @@ def convert_midi (in_file, out_file):
 
     s = tag
     s += r'''
-\version "2.13.53"
+\version "2.14.0"
 '''
 
     s += r'''
index 91408263bc9c8ab0ad735c0974872d2f1cf58dc0..caab907e0ed808d5acee717a06bce3579d98e8a1 100644 (file)
@@ -6051,6 +6051,12 @@ end
   \normbskip=\baselineskip \normpskip=\parskip \normlskip=\lineskip
   % Flag to tell @lisp, etc., not to narrow margin.
   \let\nonarrowing = t%
+  %
+  % If this cartouche directly follows a sectioning command, we need the
+  % \parskip glue (backspaced over by default) or the cartouche can
+  % collide with the section heading.
+  \ifnum\lastpenalty>10000 \vskip\parskip \fi
+  %
   \vbox\bgroup
       \baselineskip=0pt\parskip=0pt\lineskip=0pt
       \carttop