]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge commit 'origin/master'
authorJohn Mandereau <john.mandereau@gmail.com>
Thu, 20 Aug 2009 09:56:59 +0000 (11:56 +0200)
committerJohn Mandereau <john.mandereau@gmail.com>
Thu, 20 Aug 2009 09:56:59 +0000 (11:56 +0200)
Conflicts:
Documentation/ja/learning/introduction.itely

645 files changed:
Documentation/GNUmakefile
Documentation/application.tely
Documentation/application/install.itely
Documentation/application/running.itely
Documentation/application/suggestions.itely
Documentation/application/working.itely [new file with mode: 0644]
Documentation/automated-engraving.itexi [new file with mode: 0644]
Documentation/automated-engraving/GNUmakefile [new file with mode: 0644]
Documentation/automated-engraving/benchmarking.itexi [new file with mode: 0644]
Documentation/automated-engraving/conclusion.itexi [new file with mode: 0644]
Documentation/automated-engraving/divide-and-conquer.itexi [new file with mode: 0644]
Documentation/automated-engraving/engraving.itexi [new file with mode: 0644]
Documentation/automated-engraving/formatting-architecture.itexi [new file with mode: 0644]
Documentation/automated-engraving/implementing-notation.itexi [new file with mode: 0644]
Documentation/automated-engraving/implementing-typography.itexi [new file with mode: 0644]
Documentation/automated-engraving/input-format.itexi [new file with mode: 0644]
Documentation/automated-engraving/introduction.itexi [new file with mode: 0644]
Documentation/automated-engraving/problem-statement.itexi [new file with mode: 0644]
Documentation/automated-engraving/schubert.itexi [new file with mode: 0644]
Documentation/automated-engraving/scoring-esthetics.itexi [new file with mode: 0644]
Documentation/automated-engraving/software.itexi [new file with mode: 0644]
Documentation/automated-engraving/typography-features.itexi [new file with mode: 0644]
Documentation/bibliography/GNUmakefile [deleted file]
Documentation/bibliography/colorado.bib [deleted file]
Documentation/bibliography/computer-notation.bib [deleted file]
Documentation/bibliography/engraving.bib [deleted file]
Documentation/bibliography/html-long.bst [deleted file]
Documentation/bibliography/index.html.in [deleted file]
Documentation/changes.tely
Documentation/common-macros.itexi
Documentation/contributor/basic-compile.itexi
Documentation/contributor/doc-translation-list.itexi
Documentation/contributor/doc-work.itexi
Documentation/contributor/git-starting.itexi
Documentation/contributor/issues.itexi
Documentation/contributor/programming-work.itexi
Documentation/css/lilypond-mccarty.css
Documentation/css/lilypond-web.css
Documentation/de/application/running.itely
Documentation/de/learning/introduction.itely
Documentation/de/learning/scheme-tutorial.itely
Documentation/de/learning/tweaks.itely
Documentation/de/macros.itexi
Documentation/de/notation/input.itely
Documentation/de/notation/pitches.itely
Documentation/de/notation/rhythms.itely
Documentation/de/texidocs/accordion-discant-symbols.texidoc
Documentation/de/texidocs/ancient-notation-template----modern-transcription-of-gregorian-music.texidoc
Documentation/de/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc
Documentation/de/texidocs/beam-grouping-in-7-8-time.texidoc
Documentation/de/texidocs/beams-across-line-breaks.texidoc
Documentation/de/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc
Documentation/de/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc
Documentation/de/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc
Documentation/de/texidocs/dodecaphonic-style-accidentals-for-each-note-including-naturals.texidoc
Documentation/de/texidocs/entering-several-tuplets-using-only-one--times-command.texidoc
Documentation/de/texidocs/jazz-combo-template.texidoc
Documentation/de/texidocs/makam-example.texidoc
Documentation/de/texidocs/piano-template-with-centered-dynamics.texidoc
Documentation/de/texidocs/piano-template-with-centered-lyrics.texidoc
Documentation/de/texidocs/piano-template-with-melody-and-lyrics.texidoc
Documentation/de/texidocs/removing-bar-numbers-from-a-score.texidoc
Documentation/de/texidocs/setting-the-minimum-length-of-hairpins.texidoc
Documentation/de/texidocs/shortening-volta-brackets.texidoc
Documentation/de/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc
Documentation/de/texidocs/single-staff-template-with-notes-and-chords.texidoc
Documentation/de/texidocs/single-staff-template-with-notes-and-lyrics.texidoc
Documentation/de/texidocs/single-staff-template-with-only-notes.texidoc
Documentation/de/texidocs/string-quartet-template-simple.texidoc
Documentation/de/texidocs/string-quartet-template-with-separate-parts.texidoc
Documentation/de/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc
Documentation/de/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc
Documentation/de/texidocs/vocal-ensemble-template.texidoc
Documentation/es/learning/introduction.itely
Documentation/es/texidocs/adding-a-figured-bass-above-or-below-the-notes.texidoc
Documentation/es/texidocs/adding-the-current-date-to-a-score.texidoc
Documentation/es/texidocs/adjusting-the-shape-of-falls-and-doits.texidoc
Documentation/es/texidocs/ancient-notation-template----modern-transcription-of-mensural-music.texidoc
Documentation/es/texidocs/beam-grouping-in-7-8-time.texidoc
Documentation/es/texidocs/beams-across-line-breaks.texidoc
Documentation/es/texidocs/changing-beam-knee-gap.texidoc
Documentation/es/texidocs/changing-text-and-spanner-styles-for-text-dynamics.texidoc
Documentation/es/texidocs/changing-the-breath-mark-symbol.texidoc
Documentation/es/texidocs/contemporary-glissando.texidoc
Documentation/es/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc
Documentation/es/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc
Documentation/es/texidocs/creating-cross-staff-arpeggios-in-a-piano-staff.texidoc
Documentation/es/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc
Documentation/es/texidocs/display-bracket-with-only-one-staff-in-a-system.texidoc
Documentation/es/texidocs/forcing-horizontal-shift-of-notes.texidoc
Documentation/es/texidocs/grouping-beats.texidoc
Documentation/es/texidocs/hiding-the-extender-line-for-text-dynamics.texidoc
Documentation/es/texidocs/incipit.texidoc
Documentation/es/texidocs/inserting-a-caesura.texidoc
Documentation/es/texidocs/jazz-combo-template.texidoc
Documentation/es/texidocs/makam-example.texidoc
Documentation/es/texidocs/ottava-text.texidoc
Documentation/es/texidocs/piano-template-simple.texidoc
Documentation/es/texidocs/piano-template-with-centered-lyrics.texidoc
Documentation/es/texidocs/piano-template-with-melody-and-lyrics.texidoc
Documentation/es/texidocs/printing-hairpins-using-al-niente-notation.texidoc
Documentation/es/texidocs/printing-metronome-and-rehearsal-marks-below-the-staff.texidoc
Documentation/es/texidocs/quoting-another-voice.texidoc
Documentation/es/texidocs/setting-hairpin-behavior-at-bar-lines.texidoc
Documentation/es/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc
Documentation/es/texidocs/string-quartet-template-with-separate-parts.texidoc
Documentation/es/texidocs/tweaking-clef-properties.texidoc
Documentation/es/texidocs/using-double-slurs-for-legato-chords.texidoc
Documentation/es/texidocs/vertically-aligned-dynamics-and-textscripts.texidoc
Documentation/es/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc
Documentation/es/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc
Documentation/essay.tely
Documentation/essay/GNUmakefile
Documentation/essay/colorado.bib [new file with mode: 0644]
Documentation/essay/computer-notation.bib [new file with mode: 0644]
Documentation/essay/engraving.bib [new file with mode: 0644]
Documentation/essay/engraving.itely
Documentation/essay/html-long.bst [new file with mode: 0644]
Documentation/fr/GNUmakefile
Documentation/fr/common-macros.itexi [new file with mode: 0644]
Documentation/fr/general.texi [new file with mode: 0644]
Documentation/fr/general/GNUmakefile [new file with mode: 0644]
Documentation/fr/general/common-macros.itexi [new file with mode: 0644]
Documentation/fr/general/community.itexi [new file with mode: 0644]
Documentation/fr/general/download.itexi [new file with mode: 0644]
Documentation/fr/general/introduction.itexi [new file with mode: 0644]
Documentation/fr/general/macros.itexi [new file with mode: 0644]
Documentation/fr/general/manuals.itexi [new file with mode: 0644]
Documentation/fr/general/news-front.itexi [new file with mode: 0644]
Documentation/fr/general/news.itexi [new file with mode: 0644]
Documentation/fr/learning/introduction.itely
Documentation/fr/learning/working.itely
Documentation/fr/macros.itexi
Documentation/fr/notation.tely
Documentation/fr/notation/expressive.itely
Documentation/fr/notation/notation-appendices.itely
Documentation/fr/notation/pitches.itely
Documentation/fr/notation/programming-interface.itely
Documentation/fr/notation/repeats.itely
Documentation/fr/notation/rhythms.itely
Documentation/fr/notation/simultaneous.itely
Documentation/fr/notation/wind.itely
Documentation/fr/texidocs/adding-ambitus-per-voice.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/adding-drum-parts.texidoc
Documentation/fr/texidocs/adding-the-current-date-to-a-score.texidoc
Documentation/fr/texidocs/adding-volta-brackets-to-additional-staves.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/additional-voices-to-avoid-collisions.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/adjusting-lyrics-vertical-spacing.texidoc
Documentation/fr/texidocs/adjusting-the-shape-of-falls-and-doits.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/aligning-bar-numbers.texidoc
Documentation/fr/texidocs/ambitus-with-multiple-voices.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/automatic-beams-two-per-two-in-4-4-or-2-2-time-signature.texidoc
Documentation/fr/texidocs/beams-across-line-breaks.texidoc
Documentation/fr/texidocs/changing--flageolet-mark-size.texidoc
Documentation/fr/texidocs/changing-partcombine-texts.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/changing-text-and-spanner-styles-for-text-dynamics.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/changing-the-breath-mark-symbol.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/combining-two-parts-on-the-same-staff.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/conducting-signs,-measure-grouping-signs.texidoc
Documentation/fr/texidocs/contemporary-glissando.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/creating-a-delayed-turn.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/creating-cross-staff-arpeggios-in-a-piano-staff.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/cross-staff-tremolos.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/customizing-markup-fret-diagrams.texidoc
Documentation/fr/texidocs/defining-predefined-fretboards-for-other-instruments.texidoc
Documentation/fr/texidocs/dodecaphonic-style-accidentals-for-each-note-including-naturals.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/entering-several-tuplets-using-only-one--times-command.texidoc
Documentation/fr/texidocs/fingerings,-string-indications,-and-right-hand-fingerings.texidoc
Documentation/fr/texidocs/flat-flags-and-beam-nibs.texidoc
Documentation/fr/texidocs/forcing-horizontal-shift-of-notes.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/grouping-beats.texidoc
Documentation/fr/texidocs/hiding-the-extender-line-for-text-dynamics.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/inserting-a-caesura.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/isolated-percent-repeats.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/jazz-combo-template.texidoc
Documentation/fr/texidocs/makam-example.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/making-slurs-with-complex-dash-structure.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/non-traditional-key-signatures.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/ottava-text.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/percent-repeat-count-visibility.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/percent-repeat-counter.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/permitting-line-breaks-within-beamed-tuplets.texidoc
Documentation/fr/texidocs/piano-template-with-melody-and-lyrics.texidoc
Documentation/fr/texidocs/placement-of-right-hand-fingerings.texidoc
Documentation/fr/texidocs/positioning-text-markups-inside-slurs.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/preventing-extra-naturals-from-being-automatically-added.texidoc
Documentation/fr/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/printing-a-repeat-sign-at-the-beginning-of-a-piece.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/printing-bar-numbers-at-regular-intervals.texidoc
Documentation/fr/texidocs/printing-hairpins-using-al-niente-notation.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/printing-the-bar-number-for-the-first-measure.texidoc
Documentation/fr/texidocs/redefining-grace-note-global-defaults.texidoc
Documentation/fr/texidocs/removing-bar-numbers-from-a-score.texidoc
Documentation/fr/texidocs/setting-hairpin-behavior-at-bar-lines.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/setting-the-minimum-length-of-hairpins.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/shortening-volta-brackets.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/single-staff-template-with-notes,-lyrics,-and-chords.texidoc
Documentation/fr/texidocs/single-staff-template-with-notes-and-chords.texidoc
Documentation/fr/texidocs/specifying-context-with-beatgrouping.texidoc
Documentation/fr/texidocs/stem-and-beam-behavior-in-tablature.texidoc
Documentation/fr/texidocs/string-quartet-template-simple.texidoc
Documentation/fr/texidocs/sub-dividing-beams.texidoc
Documentation/fr/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/tweaking-clef-properties.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/tweaking-grace-layout-within-music.texidoc
Documentation/fr/texidocs/using-beatlength-and-beatgrouping.texidoc
Documentation/fr/texidocs/using-double-slurs-for-legato-chords.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/vertically-aligned-dynamics-and-textscripts.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc
Documentation/fr/texidocs/vocal-ensemble-template.texidoc
Documentation/general.texi
Documentation/general/GNUmakefile
Documentation/general/community.itexi
Documentation/general/download.itexi
Documentation/general/examples/GNUmakefile [new file with mode: 0644]
Documentation/general/examples/ancient-headword.ly [new file with mode: 0644]
Documentation/general/examples/aucun-snippet.ly [new file with mode: 0644]
Documentation/general/examples/bach-bwv610.ly [new file with mode: 0644]
Documentation/general/examples/bach-schenker.ly [new file with mode: 0644]
Documentation/general/examples/bach-tab-example.ly [new file with mode: 0644]
Documentation/general/examples/cary-layout.ily [new file with mode: 0644]
Documentation/general/examples/cary.ly [new file with mode: 0644]
Documentation/general/examples/chart.ly [new file with mode: 0644]
Documentation/general/examples/example-header.ily [new file with mode: 0644]
Documentation/general/examples/granados.ly [new file with mode: 0644]
Documentation/general/examples/orchestral.ly [new file with mode: 0644]
Documentation/general/examples/sesto-full.ly [new file with mode: 0644]
Documentation/general/examples/sesto-piano.ly [new file with mode: 0644]
Documentation/general/examples/sesto-violin.ly [new file with mode: 0644]
Documentation/general/examples/sesto.ily [new file with mode: 0644]
Documentation/general/examples/theory.ly [new file with mode: 0644]
Documentation/general/introduction.itexi
Documentation/general/manuals.itexi
Documentation/index.html.in
Documentation/ja/learning/introduction.itely
Documentation/ja/texidocs/string-quartet-template-simple.texidoc
Documentation/ja/texidocs/string-quartet-template-with-separate-parts.texidoc
Documentation/ja/texidocs/vocal-ensemble-template-with-automatic-piano-reduction.texidoc
Documentation/ja/texidocs/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.texidoc
Documentation/learning.tely
Documentation/learning/common-notation.itely [new file with mode: 0644]
Documentation/learning/fundamental.itely
Documentation/learning/generating.itely [deleted file]
Documentation/learning/introduction.itely
Documentation/learning/tutorial.itely [deleted file]
Documentation/learning/tweaks.itely
Documentation/learning/working.itely [deleted file]
Documentation/macros.itexi
Documentation/music-glossary.tely
Documentation/news-front.itexi [new file with mode: 0644]
Documentation/nl/GNUmakefile [new file with mode: 0644]
Documentation/nl/application.tely [new file with mode: 0644]
Documentation/nl/application/GNUmakefile [new file with mode: 0644]
Documentation/nl/application/common-macros.itexi [new file with mode: 0644]
Documentation/nl/application/converters.itely [new file with mode: 0644]
Documentation/nl/application/fdl.itexi [new file with mode: 0644]
Documentation/nl/application/lilypond-book.itely [new file with mode: 0644]
Documentation/nl/application/macros.itexi [new file with mode: 0644]
Documentation/nl/application/running.itely [new file with mode: 0644]
Documentation/nl/application/suggestions.itely [new file with mode: 0644]
Documentation/nl/application/updating.itely [new file with mode: 0644]
Documentation/nl/application/working.itely [new file with mode: 0644]
Documentation/nl/common-macros.itexi [new file with mode: 0644]
Documentation/nl/dedication.itely [new file with mode: 0644]
Documentation/nl/general.texi [new file with mode: 0644]
Documentation/nl/general/GNUmakefile [new file with mode: 0644]
Documentation/nl/general/common-macros.itexi [new file with mode: 0644]
Documentation/nl/general/community.itexi [new file with mode: 0644]
Documentation/nl/general/download.itexi [new file with mode: 0644]
Documentation/nl/general/introduction.itexi [new file with mode: 0644]
Documentation/nl/general/macros.itexi [new file with mode: 0644]
Documentation/nl/general/manuals.itexi [new file with mode: 0644]
Documentation/nl/general/news-front.itexi [new file with mode: 0644]
Documentation/nl/index.html.in [new file with mode: 0644]
Documentation/nl/learning.tely [new file with mode: 0644]
Documentation/nl/learning/GNUmakefile [new file with mode: 0644]
Documentation/nl/learning/common-macros.itexi [new file with mode: 0644]
Documentation/nl/learning/common-notation.itely [new file with mode: 0644]
Documentation/nl/learning/fdl.itexi [new file with mode: 0644]
Documentation/nl/learning/fundamental.itely [new file with mode: 0644]
Documentation/nl/learning/introduction.itely [new file with mode: 0644]
Documentation/nl/learning/macros.itexi [new file with mode: 0644]
Documentation/nl/learning/scheme-tutorial.itely [new file with mode: 0644]
Documentation/nl/learning/templates.itely [new file with mode: 0644]
Documentation/nl/learning/tweaks.itely [new file with mode: 0644]
Documentation/nl/macros.itexi [new file with mode: 0644]
Documentation/nl/notation.tely [new file with mode: 0644]
Documentation/nl/notation/GNUmakefile [new file with mode: 0644]
Documentation/nl/notation/changing-defaults.itely [new file with mode: 0644]
Documentation/nl/notation/cheatsheet.itely [new file with mode: 0644]
Documentation/nl/notation/common-macros.itexi [new file with mode: 0644]
Documentation/nl/notation/dedication.itely [new file with mode: 0644]
Documentation/nl/notation/fdl.itexi [new file with mode: 0644]
Documentation/nl/notation/input.itely [new file with mode: 0644]
Documentation/nl/notation/macros.itexi [new file with mode: 0644]
Documentation/nl/notation/notation-appendices.itely [new file with mode: 0644]
Documentation/nl/notation/notation.itely [new file with mode: 0644]
Documentation/nl/notation/programming-interface.itely [new file with mode: 0644]
Documentation/nl/notation/spacing.itely [new file with mode: 0644]
Documentation/nl/notation/specialist.itely [new file with mode: 0644]
Documentation/nl/texidocs/GNUmakefile [new file with mode: 0644]
Documentation/nl/translations.html.in [new file with mode: 0644]
Documentation/nl/translations.template.html.in [new file with mode: 0644]
Documentation/notation/ancient.itely
Documentation/notation/changing-defaults.itely
Documentation/notation/chords.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/percussion.itely
Documentation/notation/pitches.itely
Documentation/notation/programming-interface.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/GNUmakefile
Documentation/pictures/baer-flat-gray.png
Documentation/pictures/baer-ledger.png [new file with mode: 0644]
Documentation/pictures/baer-sarabande.png [new file with mode: 0644]
Documentation/pictures/baer-suite1-fullpage.png [new file with mode: 0644]
Documentation/pictures/baer-suite1-line.png [new file with mode: 0644]
Documentation/pictures/beam-scoring-example.png [new file with mode: 0644]
Documentation/pictures/bench-morgenlied.png [new file with mode: 0644]
Documentation/pictures/directions-updown.png [new file with mode: 0644]
Documentation/pictures/engraver-acc.png [new file with mode: 0644]
Documentation/pictures/engraver-clef.png [new file with mode: 0644]
Documentation/pictures/engraver-final.png [new file with mode: 0644]
Documentation/pictures/engraver-noteheads.png [new file with mode: 0644]
Documentation/pictures/engraver-score.png [new file with mode: 0644]
Documentation/pictures/engraver-slur.png [new file with mode: 0644]
Documentation/pictures/engraver-staff.png [new file with mode: 0644]
Documentation/pictures/engraver-stem.png [new file with mode: 0644]
Documentation/pictures/finale-beam-detail.png [new file with mode: 0644]
Documentation/pictures/finale-flat-correct.png [new file with mode: 0644]
Documentation/pictures/finale-flat-detail.png [new file with mode: 0644]
Documentation/pictures/finale-sarabande-full.png [new file with mode: 0644]
Documentation/pictures/hader-collage.jpeg [new file with mode: 0644]
Documentation/pictures/hader-collage.png [new file with mode: 0644]
Documentation/pictures/hader-slaan.jpeg [new file with mode: 0644]
Documentation/pictures/hader-slaan.png [new file with mode: 0644]
Documentation/pictures/henle-flat-gray.png
Documentation/pictures/henle-ledger.png [new file with mode: 0644]
Documentation/pictures/henle-suite1-fullpage.png [new file with mode: 0644]
Documentation/pictures/henle-suite1-line.png [new file with mode: 0644]
Documentation/pictures/lily-flat-bw.png
Documentation/pictures/lily-home-nav-active.png [new file with mode: 0644]
Documentation/pictures/lily-home-nav-bg.png [new file with mode: 0644]
Documentation/pictures/lily-home-nav-hover.png [new file with mode: 0644]
Documentation/pictures/lily-ledger.png [new file with mode: 0644]
Documentation/pictures/lily14-sarabande-correct.png [new file with mode: 0644]
Documentation/pictures/lily14-sarabande.png [new file with mode: 0644]
Documentation/pictures/lily17-sarabande.png [new file with mode: 0644]
Documentation/pictures/mc-squared.png [new file with mode: 0644]
Documentation/pictures/morgenlied-crop-2.jpeg [new file with mode: 0644]
Documentation/pictures/morgenlied-crop-2.png [new file with mode: 0644]
Documentation/pictures/morgenlied-ly-crop2.png [new file with mode: 0644]
Documentation/pictures/naive-notation-uml.png [new file with mode: 0644]
Documentation/pictures/naive-notation.png [new file with mode: 0644]
Documentation/pictures/nereid-shot-small.png [new file with mode: 0644]
Documentation/pictures/nereid-shot.png [new file with mode: 0644]
Documentation/pictures/nonnaive-notation.png [new file with mode: 0644]
Documentation/pictures/ross-beam-scan.jpeg [new file with mode: 0644]
Documentation/pictures/ross-beam-scan.png [new file with mode: 0644]
Documentation/pictures/simple-notation.png [new file with mode: 0644]
Documentation/pictures/simultaneous-0.png [new file with mode: 0644]
Documentation/pictures/simultaneous-1.png [new file with mode: 0644]
Documentation/pictures/simultaneous-2.png [new file with mode: 0644]
Documentation/pictures/simultaneous-3.png [new file with mode: 0644]
Documentation/pictures/slur-esthetics-annotate-1.png [new file with mode: 0644]
Documentation/pictures/slur-esthetics-annotate-2.png [new file with mode: 0644]
Documentation/pictures/slur-esthetics-annotate-3.png [new file with mode: 0644]
Documentation/pictures/slur-esthetics.png [new file with mode: 0644]
Documentation/pictures/spacing-no-corr.png [new file with mode: 0644]
Documentation/pictures/spacing-with-corr.png [new file with mode: 0644]
Documentation/pictures/stone-distance.png [new file with mode: 0644]
Documentation/pictures/text-input-1-annotate.svg
Documentation/pictures/text-input-1-output.png [new file with mode: 0644]
Documentation/pictures/text-input-2-annotate.svg
Documentation/pictures/text-input-2-output.png [new file with mode: 0644]
Documentation/pictures/text-input-parts-both-annotate.svg
Documentation/pictures/text-input-parts-single-annotate.svg
Documentation/pictures/text-input-parts-single-output.png [new file with mode: 0644]
Documentation/pictures/text-input-pop-annotate.svg
Documentation/pictures/text-input-pop-output.png [new file with mode: 0644]
Documentation/pictures/text-input-score-annotate.svg
Documentation/pictures/text-input-score-output.png [new file with mode: 0644]
Documentation/pictures/thickness-tweaks.png [new file with mode: 0644]
Documentation/pictures/ties-scoring-example.png [new file with mode: 0644]
Documentation/po/nl.po [new file with mode: 0644]
Documentation/search-box.html [new file with mode: 0644]
Documentation/snippets/accordion-discant-symbols.ly
Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly
Documentation/snippets/adding-ambitus-per-voice.ly
Documentation/snippets/adding-bar-lines-to-chordnames-context.ly
Documentation/snippets/adding-drum-parts.ly
Documentation/snippets/adding-the-current-date-to-a-score.ly
Documentation/snippets/adding-volta-brackets-to-additional-staves.ly
Documentation/snippets/additional-voices-to-avoid-collisions.ly
Documentation/snippets/adjusting-lyrics-vertical-spacing.ly
Documentation/snippets/adjusting-the-shape-of-falls-and-doits.ly
Documentation/snippets/aligning-bar-numbers.ly
Documentation/snippets/aligning-marks-with-various-notation-objects.ly
Documentation/snippets/allowing-fingerings-to-be-printed-inside-the-staff.ly
Documentation/snippets/ambitus-with-multiple-voices.ly
Documentation/snippets/ancient-fonts.ly
Documentation/snippets/ancient-notation-template----modern-transcription-of-gregorian-music.ly
Documentation/snippets/ancient-notation-template----modern-transcription-of-mensural-music.ly
Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly
Documentation/snippets/arabic-improvisation.ly
Documentation/snippets/beams-across-line-breaks.ly
Documentation/snippets/breathing-signs.ly
Documentation/snippets/caesura-railtracks-with-fermata.ly
Documentation/snippets/center-text-below-hairpin-dynamics.ly
Documentation/snippets/changing--flageolet-mark-size.ly
Documentation/snippets/changing-beam-knee-gap.ly
Documentation/snippets/changing-chord-separator.ly
Documentation/snippets/changing-form-of-multi-measure-rests.ly
Documentation/snippets/changing-partcombine-texts.ly
Documentation/snippets/changing-text-and-spanner-styles-for-text-dynamics.ly
Documentation/snippets/changing-the-breath-mark-symbol.ly
Documentation/snippets/changing-the-positions-of-figured-bass-alterations.ly
Documentation/snippets/changing-the-tempo-without-a-metronome-mark.ly
Documentation/snippets/changing-the-time-signature-without-affecting-the-beaming.ly
Documentation/snippets/changing-the-tuplet-number.ly
Documentation/snippets/chord-name-exceptions.ly
Documentation/snippets/chord-name-major7.ly
Documentation/snippets/combining-dynamics-with-markup-texts.ly
Documentation/snippets/combining-two-parts-on-the-same-staff.ly
Documentation/snippets/conducting-signs,-measure-grouping-signs.ly
Documentation/snippets/contemporary-glissando.ly
Documentation/snippets/controlling-the-placement-of-chord-fingerings.ly
Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly
Documentation/snippets/creating-a-delayed-turn.ly
Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly
Documentation/snippets/creating-arpeggios-across-notes-in-different-voices.ly
Documentation/snippets/creating-cross-staff-arpeggios-in-a-piano-staff.ly
Documentation/snippets/creating-cross-staff-arpeggios-in-other-contexts.ly
Documentation/snippets/creating-metronome-marks-in-markup-mode.ly
Documentation/snippets/creating-real-parenthesized-dynamics.ly
Documentation/snippets/cross-staff-tremolos.ly
Documentation/snippets/customizing-fretboard-fret-diagrams.ly
Documentation/snippets/customizing-markup-fret-diagrams.ly
Documentation/snippets/default-direction-of-stems-on-the-center-line-of-the-staff.ly
Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly
Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly
Documentation/snippets/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly
Documentation/snippets/engraving-ties-manually.ly
Documentation/snippets/entering-several-tuplets-using-only-one--times-command.ly
Documentation/snippets/fingerings,-string-indications,-and-right-hand-fingerings.ly
Documentation/snippets/flat-flags-and-beam-nibs.ly
Documentation/snippets/flute-slap-notation.ly
Documentation/snippets/forcing-horizontal-shift-of-notes.ly
Documentation/snippets/grid-lines--changing-their-appearance.ly
Documentation/snippets/guitar-strum-rhythms.ly
Documentation/snippets/hiding-the-extender-line-for-text-dynamics.ly
Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly
Documentation/snippets/incipit.ly
Documentation/snippets/indicating-cross-staff-chords-with-arpeggio-bracket.ly
Documentation/snippets/inserting-a-caesura.ly
Documentation/snippets/isolated-percent-repeats.ly
Documentation/snippets/jazz-combo-template.ly
Documentation/snippets/makam-example.ly
Documentation/snippets/making-an-object-invisible-with-the-transparent-property.ly
Documentation/snippets/making-slurs-with-complex-dash-structure.ly
Documentation/snippets/making-some-staff-lines-thicker-than-the-others.ly
Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly
Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly
Documentation/snippets/multi-measure-rest-markup.ly
Documentation/snippets/nesting-staves.ly
Documentation/snippets/new/incipit.ly [new file with mode: 0644]
Documentation/snippets/new/snap-pizzicato-bartok-pizzicato.ly
Documentation/snippets/non-traditional-key-signatures.ly
Documentation/snippets/orchestra,-choir-and-piano-template.ly
Documentation/snippets/ottava-text.ly
Documentation/snippets/percent-repeat-count-visibility.ly
Documentation/snippets/percent-repeat-counter.ly
Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly
Documentation/snippets/piano-template-simple.ly
Documentation/snippets/piano-template-with-centered-lyrics.ly
Documentation/snippets/piano-template-with-melody-and-lyrics.ly
Documentation/snippets/placement-of-right-hand-fingerings.ly
Documentation/snippets/polyphony-in-tablature.ly
Documentation/snippets/positioning-grace-notes-with-floating-space.ly
Documentation/snippets/positioning-multi-measure-rests.ly
Documentation/snippets/positioning-segno-and-coda-with-line-break.ly
Documentation/snippets/positioning-text-markups-inside-slurs.ly
Documentation/snippets/preventing-extra-naturals-from-being-automatically-added.ly
Documentation/snippets/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly
Documentation/snippets/printing-a-repeat-sign-at-the-beginning-of-a-piece.ly
Documentation/snippets/printing-bar-numbers-at-regular-intervals.ly
Documentation/snippets/printing-bar-numbers-inside-boxes-or-circles.ly
Documentation/snippets/printing-hairpins-using-al-niente-notation.ly
Documentation/snippets/printing-marks-at-the-end-of-a-line-or-a-score.ly
Documentation/snippets/printing-marks-on-every-staff.ly
Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly
Documentation/snippets/printing-the-bar-number-for-the-first-measure.ly
Documentation/snippets/quoting-another-voice-with-transposition.ly
Documentation/snippets/quoting-another-voice.ly
Documentation/snippets/redefining-grace-note-global-defaults.ly
Documentation/snippets/removing-bar-numbers-from-a-score.ly
Documentation/snippets/removing-the-first-empty-line.ly
Documentation/snippets/rest-styles.ly
Documentation/snippets/rhythmic-slashes.ly
Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly
Documentation/snippets/setting-the-minimum-length-of-hairpins.ly
Documentation/snippets/shortening-volta-brackets.ly
Documentation/snippets/showing-chords-at-changes.ly
Documentation/snippets/simple-lead-sheet.ly
Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly
Documentation/snippets/single-staff-template-with-notes-and-chords.ly
Documentation/snippets/single-staff-template-with-notes-and-lyrics.ly
Documentation/snippets/single-staff-template-with-only-notes.ly
Documentation/snippets/skips-in-lyric-mode-2.ly
Documentation/snippets/snap-pizzicato-bartok-pizzicato.ly
Documentation/snippets/stand-alone-two-column-markup.ly
Documentation/snippets/stem-and-beam-behavior-in-tablature.ly
Documentation/snippets/string-quartet-template-simple.ly
Documentation/snippets/string-quartet-template-with-separate-parts.ly
Documentation/snippets/sub-dividing-beams.ly
Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly
Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly
Documentation/snippets/tweaking-clef-properties.ly
Documentation/snippets/tweaking-grace-layout-within-music.ly
Documentation/snippets/use-square-bracket-at-the-start-of-a-staff-group.ly
Documentation/snippets/using-double-slurs-for-legato-chords.ly
Documentation/snippets/using-grace-note-slashes-with-normal-heads.ly
Documentation/snippets/using-ties-with-arpeggios.ly
Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly
Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly
Documentation/snippets/vertically-aligning-ossias-and-lyrics.ly
Documentation/snippets/vocal-ensemble-template-with-automatic-piano-reduction.ly
Documentation/snippets/vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly
Documentation/snippets/vocal-ensemble-template.ly
Documentation/snippets/volta-below-chords.ly
Documentation/web-texi2html.init
ROADMAP
configure.in
input/les-nereides.ly
input/mutopia/J.S.Bach/wtk1-fugue2.ly
input/regression/dead-notes.ly
input/regression/display-lily-tests.ly
input/regression/incipit.ly
input/regression/instrument-name-hara-kiri.ly
input/regression/page-spacing-first-system-spacing.ly [deleted file]
input/regression/page-spacing-first-system-title-spacing.ly [deleted file]
input/regression/page-spacing-loose-lines-after.ly
input/regression/page-spacing-loose-lines-and-markup.ly [new file with mode: 0644]
input/regression/page-spacing-loose-lines-before.ly
input/regression/page-spacing-loose-lines-between.ly [new file with mode: 0644]
input/regression/page-spacing-loose-lines-header-padding.ly [new file with mode: 0644]
input/regression/page-spacing-rehearsal-mark.ly [new file with mode: 0644]
input/regression/page-spacing-system-count.ly
input/regression/page-spacing-tall-headfoot.ly [new file with mode: 0644]
input/regression/page-spacing-top-system-spacing.ly [new file with mode: 0644]
input/regression/page-spacing-top-title-spacing.ly [new file with mode: 0644]
input/regression/palm-mute.ly
input/regression/spacing-empty-bar.ly [new file with mode: 0644]
lily/align-interface.cc
lily/axis-group-interface.cc
lily/beam-quanting.cc
lily/beam.cc
lily/easy-notation.cc [deleted file]
lily/grob.cc
lily/include/axis-group-interface.hh
lily/include/beam.hh
lily/include/grob.hh
lily/include/page-layout-problem.hh
lily/include/side-position-interface.hh
lily/include/system.hh
lily/main.cc
lily/multi-measure-rest-engraver.cc
lily/note-spacing.cc
lily/page-breaking.cc
lily/page-layout-problem.cc
lily/paper-book-scheme.cc
lily/paper-column.cc
lily/side-position-interface.cc
lily/slur-scoring.cc
lily/spaceable-grob.cc
lily/spacing-determine-loose-columns.cc
lily/spacing-interface.cc
lily/spacing-spanner.cc
lily/staff-symbol-referencer-scheme.cc
lily/stem.cc
lily/system-start-delimiter-engraver.cc
lily/system-start-text.cc [deleted file]
lily/system.cc
lily/vertical-align-engraver.cc
lily/vertically-spaced-context-engraver.cc
ly/engraver-init.ly
ly/guile-debugger.ly
ly/init.ly
ly/music-functions-init.ly
ly/paper-defaults-init.ly
ly/performer-init.ly
ly/property-init.ly
make/doc-i18n-root-rules.make
make/doc-i18n-root-vars.make
python/auxiliar/buildlib.py
python/auxiliar/manuals_definitions.py
python/auxiliar/postprocess_html.py
python/convertrules.py
python/langdefs.py
scm/backend-library.scm
scm/beam-settings.scm
scm/c++.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/framework-ps.scm
scm/framework-scm.scm
scm/framework-svg.scm
scm/layout-beam.scm
scm/lily-library.scm
scm/music-functions.scm
scm/output-lib.scm
scm/output-svg.scm
scm/page.scm
scm/safe-lily.scm
scm/tablature.scm
scm/translation-functions.scm
scripts/auxiliar/check_texi_refs.py
scripts/auxiliar/tely-gettext.py
scripts/auxiliar/texi-langutils.py
scripts/auxiliar/yyout2grammar.py
scripts/build/extract_texi_filenames.py
scripts/build/www_post.py
stepmake/aclocal.m4
stepmake/stepmake/texinfo-rules.make
stepmake/stepmake/texinfo-vars.make

index f04e7c4bfaf8814c6608b139e13a7c4a4ffbb1f2..0384e4c64a3687aabd3aab90eb13cf655d8ce543 100644 (file)
@@ -9,8 +9,8 @@ depth = ..
 
 NAME = documentation
 LANGS = $(shell $(PYTHON) $(top-src-dir)/python/langdefs.py)
-MANUALS_SUBDIRS = application contributor essay general learning notation
-SUBDIRS = $(MANUALS_SUBDIRS) snippets bibliography logo pictures misc po $(LANGS)
+MANUALS_SUBDIRS = application automated-engraving contributor essay general learning notation
+SUBDIRS = $(MANUALS_SUBDIRS) snippets logo pictures misc po css $(LANGS)
 STEPMAKE_TEMPLATES = documentation texinfo tex omf
 LOCALSTEPMAKE_TEMPLATES = lilypond ly
 
@@ -31,6 +31,8 @@ LATEX_FILES =$(call src-wildcard,*.latex)
 IN_ITELY_FILES = $(call src-wildcard,snippets/*-intro.itely)
 SNIPPET_LY_FILES = $(call src-wildcard,snippets/*.ly)
 
+EXTRA_DIST_FILES = $(call src-wildcard,*.init) $(LATEX_FILES)
+
 ### Out files
 
 # Dependencies
@@ -51,7 +53,7 @@ OUT_TEXINFO_MANUALS = $(TEXINFO_MANUALS:%=$(outdir)/%.texi)
 # of the NR
 TEXI_FILES_FROM_TELY = $(outdir)/internals.texi
 
-PDF_FILES = $(subst $(outdir)/general.pdf,,$(TEXINFO_MANUALS:%=$(outdir)/%.pdf))
+PDF_FILES = $(TEXINFO_MANUALS:%=$(outdir)/%.pdf)
 
 UNSPLITTED_HTML_MANUALS = changes
 SPLITTED_HTML_MANUALS = $(foreach manual, $(TEXINFO_MANUALS),\
@@ -91,9 +93,11 @@ OUT_TXT_FILES = $(addprefix $(outdir)/, $(addsuffix .txt, $(README_TOP_FILES)))
 ## No big page
 OUT_HTML_FILES := $(subst $(outdir)/general-big-page.html,,$(OUT_HTML_FILES))
 
-## Different init file and CSS
-$(outdir)/general/index.html: \
- TEXI2HTML_INIT = --init-file=$(top-src-dir)/Documentation/web-texi2html.init
+$(outdir)/essay/index.html: TEXI2HTML_INIT = $(WEB_TEXI2HTML_INIT) -D=shallow_toc
+$(outdir)/essay/index.html: TEXI2HTML_SPLIT = $(WEB_TEXI2HTML_SPLIT)
+
+$(outdir)/general/index.html: TEXI2HTML_INIT = $(WEB_TEXI2HTML_INIT)
+$(outdir)/general/index.html: TEXI2HTML_SPLIT = $(WEB_TEXI2HTML_SPLIT)
 
 ###########
 ### Targets
@@ -142,6 +146,12 @@ endif
 #########
 ### Rules
 
+$(outdir)/lilypond-%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
+       $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
+
+$(outdir)/lilypond.info: $(src-dir)/general.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
+       $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
+
 # cd $(outdir) rule gets bit hairy for --srcdir configure builds
 txt-to-html:
        $(foreach a, $(README_TOP_FILES), cp $(top-src-dir)/$(a) $(outdir)/$(a).txt && ) true
@@ -154,6 +164,14 @@ $(OUT_TEXINFO_MANUALS): $(outdir)/pictures
 $(outdir)/pictures:
        $(MAKE) -C pictures WWW-1
        ln -sf ../pictures/$(outdir) $@
+
+$(outdir)/general.texi: $(outdir)/examples
+
+$(outdir)/examples:
+       $(MAKE) -C general/examples
+# FIXME: who is replacing src="examples --> src="../examples" ?
+# [ugh, why do most scripts not even say they run anymore?]
+       ln -sf general/examples $@
 endif
 
 # Ugh, using '%' twice not possible
@@ -224,27 +242,48 @@ CHECK_TRANSLATION_FLAGS = --no-color
 endif
 
 ifneq ($(ISOLANG),)
-new-lang:
-       @if (( $$(file -b $(ISOLANG)) == directory )) 2>/dev/null; \
-       then echo "Error: $(ISOLANG) directory already exists. Exiting." ; \
-       exit 3 ; \
-       fi
-       mkdir -p $(ISOLANG)/learning
+new-lang-dir:
+       mkdir -p $(ISOLANG)/$(DIR)
        cp fr/GNUmakefile $(ISOLANG)
-       cp fr/learning/GNUmakefile $(ISOLANG)/learning
-       sed -i -e 's/ISOLANG *= *fr/ISOLANG = $(ISOLANG)/' $(ISOLANG)/GNUmakefile $(ISOLANG)/learning/GNUmakefile
-       $(auxscript-dir)/texi-langutils.py -d $(outdir) -l $(ISOLANG) -o doc.pot --skeleton --gettext ../learning.tely
-       mv $(outdir)/*.*tely $(ISOLANG)/learning
+       cp fr/$(DIR)/GNUmakefile $(ISOLANG)/$(DIR)
+       sed -i -e 's/ISOLANG *= *fr/ISOLANG = $(ISOLANG)/' $(ISOLANG)/GNUmakefile $(ISOLANG)/$(DIR)/GNUmakefile
+       rm -f $(outdir)/*.*tely $(outdir)/*.*texi
+       $(auxscript-dir)/texi-langutils.py -d $(outdir) -l $(ISOLANG) -o doc.pot --skeleton --gettext $$(cd $(ISOLANG) && ls -1 ../$(DIR).tely ../$(DIR).texi)
+       for i in $$(cd $(outdir) && ls -1 $(DIR).tely $(DIR).texi); do\
+           test -e $(ISOLANG)/$$i || mv $(outdir)/$$i $(ISOLANG)/$$i;\
+       done
+       rm -f $(outdir)/$(DIR).tely $(outdir)/$(DIR).texi
+       for i in $$(cd $(outdir) && ls -1 *.*tely *.*texi); do\
+           test -e $(ISOLANG)/$(DIR)/$$i\
+               || mv $(outdir)/$$i $(ISOLANG)/$(DIR)/$$i;\
+       done
+
+new-lang:
+# Also for updating/adding missing files
+       $(foreach i,$(TRANSLATION_DIRS),$(MAKE) new-lang-dir DIR=$(i) &&) :
+       $(foreach i, $(EXTRA_TRANSLATION_FILES), \
+           (test -e $(ISOLANG)/$(i) \
+               || cp fr/$(i) $(ISOLANG)/$(i)) && ) true
        msgmerge -U po/lilypond-doc.pot $(outdir)/doc.pot
-       cp po/lilypond-doc.pot po/$(ISOLANG).po
+       test -e po/$(ISOLANG).po || cp po/lilypond-doc.pot po/$(ISOLANG).po
        @echo "***  Please add a language definition for $(ISOLANG) in python/langdefs.py  ***"
 
-CHECKED_FILES = $(ISOLANG)/index.html.in $(foreach i,learning notation application, \
-  $(shell find $(ISOLANG)/$(manual) -name '*.*te??' -not -wholename '*out-www*')) \
-  $(shell find $(ISOLANG)/texidocs/ -name '*.texidoc')
+#TRANSLATION_DIRS = $(shell git ls-files $(ISOLANG) | $(PYTHON) $(buildscript-dir)/pytt.py '/[^/]*$$' / | sort -u )
+TRANSLATION_DIRS = application general learning notation texidocs
+TRANSLATION_FILES = $(shell git ls-files $(ISOLANG) | grep -v GNUmakefile)
+EXTRA_TRANSLATION_FILES =\
+ dedication.itely\
+ index.html.in\
+ common-macros.itexi\
+ macros.itexi\
+ translations.html.in\
+ translations.template.html.in\
+#
+
 
 TELY_FILES = $(call src-wildcard,$(ISOLANG)/*.tely)
 skeleton-update:
+       mkdir -p $(ISOLANG)
        $(auxscript-dir)/texi-langutils.py -d $(outdir) -l $(ISOLANG) --skeleton $(TELY_FILES:$(ISOLANG)/%.tely=../%.tely)
        $(auxscript-dir)/texi-skeleton-update.py $(ISOLANG) $(outdir)
 
@@ -274,10 +313,10 @@ fix-xrefs:
        $(DOCUMENTS_INCLUDES) $(auxpython-dir)/manuals_definitions.py
 
 check-translation:
-       ISOLANG=$(ISOLANG) $(auxscript-dir)/check_translation.py $(CHECK_TRANSLATION_FLAGS) $(CHECKED_FILES)
+       ISOLANG=$(ISOLANG) $(auxscript-dir)/check_translation.py $(CHECK_TRANSLATION_FLAGS) $(TRANSLATION_FILES)
 
 update-translation:
-       ISOLANG=$(ISOLANG) $(auxscript-dir)/check_translation.py --update $(CHECK_TRANSLATION_FLAGS) $(CHECKED_FILES)
+       ISOLANG=$(ISOLANG) $(auxscript-dir)/check_translation.py --update $(CHECK_TRANSLATION_FLAGS) $(TRANSLATION_FILES)
 
 translation-status:
        make -C po out=www messages
index c1b38b71c627fd2465abb44ccd276800cc685156..2aaddcbb25e6070275a6447b1e07d5f5a57ed553 100644 (file)
@@ -128,6 +128,7 @@ of this and other documentation.
 * Updating files with convert-ly:: Updating input files.
 * lilypond-book::                  Integrating text and music.
 * Converting from other formats::  Converting to lilypond source format.
+* Working on LilyPond projects::   Working on non-working files.
 * Suggestions for writing files::  Best practices
 
 Appendices
@@ -146,6 +147,7 @@ Appendices
 @include application/updating.itely
 @include application/lilypond-book.itely
 @include application/converters.itely
+@include application/working.itely
 @include application/suggestions.itely
 
 @include fdl.itexi
index 03985cdaa30fb750285127c3d70184128f6aec0d..03007b251f219ed04a877f07851804c471e2b1f5 100644 (file)
@@ -81,4 +81,4 @@ the @uref{Compiling-from-source.html,documentation in English}.
 @c and remove all stuff (menu, nodes, contents) below this line.
 
 
-@include contributor/compile.itexi
+@include contributor/basic-compile.itexi
index b537c8b7ad215873085bed9f48dd02b4a6035d66..23ab331f3f776841cd60c8190baa5edb38c29ff1 100644 (file)
@@ -59,12 +59,6 @@ if you are unfamiliar with the command-line.
 @node Invoking lilypond
 @subsection Invoking @command{lilypond}
 
-@cindex Invoking @command{lilypond}
-@cindex command line options for @command{lilypond}
-@cindex options, command line
-@cindex switches
-
-
 The @command{lilypond} executable may be called as follows from the command line.
 
 @example
@@ -103,6 +97,11 @@ will output @var{base}@file{-violin.pdf} and
 @node Command line options for lilypond
 @subsection Command line options for @command{lilypond}
 
+@cindex Invoking @command{lilypond}
+@cindex command line options for @command{lilypond}
+@cindex options, command line
+@cindex switches
+
 The following options are supported:
 
 @table @code
@@ -156,11 +155,15 @@ is the same as
 
 Here are a few interesting options.
 
+@cindex help, command line
+
 @table @samp
 @item help
 Running @code{lilypond -dhelp} will print all of the @code{-d} options
 available.
 
+@cindex paper-size, command line
+
 @item paper-size
 This option sets the default paper-size,
 @example
@@ -171,6 +174,8 @@ This option sets the default paper-size,
 Note that the string must be enclosed in escaped quotes ( @code{\"} ).
 @c Match " in previous line to help context-sensitive editors
 
+@cindex safe, command line
+
 @item safe
 Do not trust the @code{.ly} input.
 
@@ -222,6 +227,10 @@ the output format to use for the back-end.  Choices for @code{format} are
   lead to huge files.
 
 @item eps
+
+@cindex Postscript, encapulated
+@cindex EPS (Encapsulated PostScript)
+
  for encapsulated PostScript.  This dumps every page (system) as a separate
 @file{EPS} file, without fonts, and as one collated @file{EPS} file with
 all pages (systems) including fonts.
@@ -229,11 +238,13 @@ all pages (systems) including fonts.
 This mode is used by default by @command{lilypond-book}.
 
 @item svg
+
 @cindex SVG (Scalable Vector Graphics)
+
  for SVG (Scalable Vector Graphics).
 
- This creates a single SVG file containing the entire music output
with no embedded fonts.  It is recommended to install the Century
+ This creates a single SVG file, without embedded fonts, for every
page of output.  It is recommended to install the Century
  Schoolbook fonts, included with your LilyPond installation, for
  optimal rendering.  Under UNIX, simply copy these fonts from the
  LilyPond directory (typically
@@ -242,7 +253,9 @@ This mode is used by default by @command{lilypond-book}.
  SVG editor or user agent.
 
 @item scm
+
 @cindex Scheme dump
+
  for a dump of the raw, internal Scheme-based drawing commands.
 
 @item null
@@ -252,6 +265,7 @@ This mode is used by default by @command{lilypond-book}.
 Example: @code{lilypond -dbackend=svg @var{filename}.ly}
 
 @item preview
+@cindex preview, command line
 Generate an output file containing the titles and the first system
 
 @item print-pages
@@ -280,9 +294,13 @@ Set init file to @var{file} (default: @file{init.ly}).
 Set the default output file to @var{FILE}.  The appropriate
 suffix will be added (e.g. @code{.pdf} for pdf)
 
+@cindex PostScript output
+
 @item --ps
 Generate PostScript.
 
+@cindex Portable Network Graphics (PNG) output
+
 @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
@@ -290,6 +308,8 @@ Generate pictures of each page, in PNG format.  This implies
 -dresolution=110
 @end example
 
+@cindex Portable Document Format (PDF) output
+
 @item --pdf
 Generate PDF.  This implies @code{--ps}.
 
index 8157b431122f1441caa48c913b2e5a10851fb7ee..228b9227cb6b63eb289b8b7f9888dcb648f2bae3 100644 (file)
 @node Suggestions for writing files
 @chapter Suggestions for writing files
 
+Now you're ready to begin writing larger LilyPond input files --
+not just the little examples in the tutorial, but whole pieces.
+But how should you go about doing it?
+
+As long as LilyPond can understand your input files and produce
+the output that you want, it doesn't matter what your input files
+look like.  However, there are a few other things to consider when
+writing LilyPond input files.
+
+@itemize
+@item What if you make a mistake?  The structure of a LilyPond
+file can make certain errors easier (or harder) to find.
+
+@item What if you want to share your input files with somebody
+else?  In fact, what if you want to alter your own input files in
+a few years?  Some LilyPond input files are understandable at
+first glance; others may leave you scratching your head
+for an hour.
+
+@item What if you want to upgrade your LilyPond file for use
+with a later version of LilyPond?  The input syntax changes
+occasionally as LilyPond improves.  Most changes can be
+done automatically with @code{convert-ly}, but some changes
+might require manual assistance.  LilyPond input files can be
+structured in order to be easier (or harder) to update.
+
+@end itemize
+
+@menu
+* General suggestions::
+* Typesetting existing music::
+* Large projects::
+@end menu
+
+
+@node General suggestions
+@section General suggestions
+
+Here are a few suggestions that can help you to avoid or fix
+problems:
+
+@itemize
+@item @strong{Include @code{\version} numbers in every file}.  Note that all
+templates contain @code{\version} information.  We
+highly recommend that you always include the @code{\version}, no matter
+how small your file is.  Speaking from personal experience, it's
+quite frustrating to try to remember which version of LilyPond you were
+using a few years ago.  @command{convert-ly} requires you to declare
+which version of LilyPond you used.
+
+@item @strong{Include checks}: @ruser{Bar and bar number checks},
+@ruser{Octave checks}.  If you include checks every so often, then
+if you make a mistake, you can pinpoint it quicker.  How often is
+@q{every so often}?  It depends on the complexity of the music.
+For very simple music, perhaps just once or twice.  For very
+complex music, perhaps every bar.
+
+@item @strong{One bar per line of text}.  If there is anything complicated,
+either in the music
+itself or in the output you desire, it's often good to write only one bar
+per line.  Saving screen space by cramming eight bars per line just isn't
+worth it if you have to @q{debug} your input files.
+
+@item @strong{Comment your input files}.  Use either bar numbers
+(every so often) or
+references to musical themes (@q{second theme in violins,} @q{fourth
+variation,} etc.).  You may not need comments when you're writing the piece
+for the first time, but if you want to go back to change something two or
+three years later, or if you pass the source over to a friend, it will
+be much more
+challenging to determine your intentions or how your file is structured if
+you didn't comment the file.
+
+@item @strong{Indent your braces}.  A lot of problems are caused by an
+imbalance
+in the number of @code{@{} and @code{@}}.
+
+@item @strong{Explicitly add durations} at the beginnings of sections
+and variables.  If you specify @code{c4 d e} at the beginning of a
+phrase (instead of just @code{c d e}) you can save yourself some
+problems if you rearrange your music later.
+
+@item @strong{Separate tweaks} from music definitions.  See
+@rlearning{Saving typing with variables and functions}, and
+@rlearning{Style sheets}.
+
+@end itemize
+
+
+@node Typesetting existing music
+@section Typesetting existing music
+
+If you are entering music from an existing score (i.e., typesetting a
+piece of existing sheet music),
+
+@itemize
+
+@item Enter the manuscript (the physical copy of the music) into
+LilyPond one system at a time (but still only one bar per line of text),
+and check each system when you finish it.  You may use the
+@code{showLastLength} or @code{showFirstLength} properties to speed up
+processing -- see @ruser{Skipping corrected music}.
+
+@item Define @code{mBreak = @{ \break @}} and insert @code{\mBreak}
+in the input file whenever the manuscript has a line break.  This
+makes it much easier to compare the LilyPond music to the original
+music.  When you are finished proofreading your score, you may
+define @code{mBreak = @{ @}} to remove all those line breaks.  This
+will allow LilyPond to place line breaks wherever it feels are
+best.
+
+@item When entering a part for a transposing instrument into a
+variable, it is recommended that the notes are wrapped in
+
+@example
+\transpose c natural-pitch @{...@}
+@end example
+(where @code{natural-pitch} is the open pitch of the instrument) so
+that the music in the variable is effectively in C. You can transpose
+it back again when the variable is used, if required, but you might
+not want to (e.g., when printing a score in concert pitch,
+converting a trombone part from treble to bass clef, etc.)
+Mistakes in transpositions are less likely if all the music in
+variables is at a consistent pitch.
+
+Also, only ever transpose to/from C. That means that the only other
+keys you will use are the natural pitches of the instruments - bes
+for a B-flat trumpet, aes for an A-flat clarinet, etc.
+
+@end itemize
+
+
+@node Large projects
+@section Large projects
+
+When working on a large project, having a clear structure to your
+lilypond input files becomes vital.
+
+@itemize
+
+@item @strong{Use a variable for each voice}, with a minimum of
+structure inside the definition.  The structure of the
+@code{\score} section is the most likely thing to change;
+the @code{violin} definition is extremely unlikely to change
+in a new version of LilyPond.
+
+@example
+violin = \relative c'' @{
+g4 c'8. e16
+@}
+...
+\score @{
+  \new GrandStaff @{
+    \new Staff @{
+      \violin
+    @}
+  @}
+@}
+@end example
+
+@item @strong{Separate tweaks from music definitions}.  This
+point was made previously, but for large
+projects it is absolutely vital.  We might need to change
+the definition of @code{fthenp}, but then we only need
+to do this once, and we can still avoid touching anything
+inside @code{violin}.
+
+@example
+fthenp = _\markup@{
+  \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
+violin = \relative c'' @{
+g4\fthenp c'8. e16
+@}
+@end example
+
+@end itemize
+
+
 
diff --git a/Documentation/application/working.itely b/Documentation/application/working.itely
new file mode 100644 (file)
index 0000000..8b15cba
--- /dev/null
@@ -0,0 +1,661 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+@c \version "2.12.0"
+
+@node Working on LilyPond projects
+@chapter Working on LilyPond projects
+
+This section explains how to solve or avoid certain common
+problems.  If you have programming experience, many of these
+tips may seem obvious, but it is still advisable to read
+this chapter.
+
+
+@menu
+* When things don't work::
+* Make and Makefiles::
+@end menu
+
+
+@node When things don't work
+@section When things don't work
+
+@menu
+* Updating old input files::
+* Common errors::
+* Troubleshooting (taking it all apart)::
+* Minimal examples::
+@end menu
+
+@node Updating old input files
+@subsection Updating old input files
+
+@cindex convert-ly
+@cindex updating old input files
+
+The LilyPond input syntax occasionally changes.  As LilyPond itself
+improves, the syntax (input language) is modified accordingly.  Sometimes
+these changes are made to make the input easier to read and write or
+sometimes the changes are made to accommodate new features of LilyPond.
+
+LilyPond comes with a file that makes this updating easier:
+@code{convert-ly}.  For details about how to run this program, see
+@rprogram{Updating files with convert-ly}.
+
+Unfortunately, @code{convert-ly} cannot handle all input changes.  It
+takes care of simple search-and-replace changes (such as @code{raggedright}
+becoming @code{ragged-right}), but some changes are too
+complicated.  The syntax changes that @code{convert-ly} cannot handle
+are listed in @rprogram{Updating files with convert-ly}.
+
+For example, in LilyPond 2.4 and earlier, accents and non-English
+letters were entered using LaTeX -- for example,
+@code{No\"el} (this would print the French word for
+@c keep "-matching straight in fancy editors
+@q{Christmas}).  In LilyPond 2.6 and above, the special
+@code{ë} must be entered directly into the LilyPond file as an
+UTF-8 character.  @code{convert-ly} cannot change all the LaTeX
+special characters into UTF-8 characters; you must manually update
+your old LilyPond input files.
+
+@node Common errors
+@subsection Common errors
+
+The error conditions described below occur often, yet the cause
+is not obvious or easily found.  Once seen and understood, they
+are easily handled.
+
+
+@menu
+* Music runs off the page::
+* An extra staff appears::
+* Apparent error in ../ly/init.ly::
+* Error message Unbound variable %::
+* Error message FT_Get_Glyph_Name::
+@end menu
+
+@node Music runs off the page
+@unnumberedsubsubsec Music runs off the page
+
+Music running off the page over the right margin or appearing
+unduly compressed is almost always due to entering an incorrect
+duration on a note, causing the final note in a measure to extend
+over the bar line.  It is not invalid if the final note in a
+measure does not end on the automatically entered bar line, as the
+note is simply assumed to carry over into the next measure.  But
+if a long sequence of such carry-over measures occurs the music
+can appear compressed or may flow off the page because automatic
+line breaks can be inserted only at the end of complete measures,
+i.e., where all notes end before or at the end of the measure.
+
+@warning{An incorrect duration can cause line breaks to be
+inhibited, leading to a line of highly compressed music or
+music which flows off the page.}
+
+The incorrect duration can be found easily if bar checks are used,
+see @ruser{Bar and bar number checks}.
+
+If you actually intend to have a series of such carry-over measures
+you will need to insert an invisible bar line where you want the
+line to break.  For details, see @ruser{Bar lines}.
+
+
+@node An extra staff appears
+@unnumberedsubsubsec An extra staff appears
+
+If contexts are not created explicitly with @code{\new} they will be
+silently created as soon as a command is encountered which cannot
+be applied to an existing context.  In simple scores the automatic
+creation of contexts is useful, and most of the examples in the
+LilyPond manuals take advantage of this simplification.  But
+occasionally the silent creation of contexts can give rise to
+unexpected new staves or scores.  For example, it might be expected
+that the following code would cause all note heads within the
+following staff to be colored red, but in fact it results in two
+staves with the note heads remaining the default black in the lower
+staff.
+
+@lilypond[quote,verbatim,relative=2]
+\override Staff.NoteHead #'color = #red
+\new Staff { a }
+@end lilypond
+
+This is because a @code{Staff} context does not exist when the
+override is processed, so one is implicitly created and the override
+is applied to it, but then the @code{\new Staff} command creates
+another, separate, staff into which the notes are placed.  The
+correct code to color all note heads red is
+
+@lilypond[quote,verbatim,relative=2]
+\new Staff {
+  \override Staff.NoteHead #'color = #red
+  a
+}
+@end lilypond
+
+As a second example, if a @code{\relative} command is placed inside
+a @code{\repeat} command two staves result, the second offset from
+the first, because the @code{\repeat} command generates two
+@code{\relative} blocks, which each implicitly create @code{Staff}
+and @code{Voice} blocks.
+
+@lilypond[quote,verbatim]
+\repeat unfold 2 \relative { c d e f }
+@end lilypond
+
+The correct way is to reverse the @code{\repeat} and
+@code{\relative} commands, like this:
+
+@lilypond[quote,verbatim]
+\relative {
+  \repeat unfold 2 { c d e f }
+}
+@end lilypond
+
+
+@node Apparent error in ../ly/init.ly
+@unnumberedsubsubsec Apparent error in @code{../ly/init.ly}
+
+Various obscure error messages may appear about syntax errors in
+@code{../ly/init.ly} if the input file is not correctly formed,
+for example, if it does not contain correctly
+matched braces or quote signs.
+
+The most common error is a missing brace, (@code{@}}), at the end of
+a @code{score} block.  Here the solution is obvious: check the
+@code{score} block is correctly terminated.  The correct structure
+of an input file is described in @rlearning{How LilyPond input files work}.
+Using an editor which automatically highlights matching brackets and
+braces is helpful to avoid such errors.
+
+A second common cause is no white space between the last syllable
+of a lyrics block and the terminating brace, (@code{@}}).  Without
+this separation the brace is taken to be part of the syllable.  It
+is always advisable to ensure there is white space before and after
+@emph{every} brace.  For the importance of this when using lyrics,
+see @ruser{Lyrics explained}.
+
+This error message can also appear if a terminating quote sign,
+(@code{"}), is omitted.  In this case an accompanying error message
+@c keep "-matching straight in fancy editors
+should give a line number close to the line in error.  The
+mismatched quote will usually be on the line one or two above.
+
+@node Error message Unbound variable %
+@unnumberedsubsubsec Error message Unbound variable %
+
+This error message will appear at the bottom of the console
+output or log file together with a @qq{GUILE signalled an error ...}
+message every time a Scheme routine is called which (invalidly)
+contains a @emph{LilyPond} rather than a @emph{Scheme} comment.
+
+LilyPond comments begin with a percent sign, (@code{%}), and must
+not be used within Scheme routines.  Scheme comments begin with a
+semi-colon, (@code{;}).
+
+@node Error message FT_Get_Glyph_Name
+@unnumberedsubsubsec Error message FT_Get_Glyph_Name
+
+This error messages appears in the console output or log file if
+an input file contains a non-ASCII character and was not saved in
+UTF-8 encoding.  For details, see @ruser{Text encoding}.
+
+@node Troubleshooting (taking it all apart)
+@subsection Troubleshooting (taking it all apart)
+
+Sooner or later, you will write a file that LilyPond cannot
+compile.  The messages that LilyPond gives may help
+you find the error, but in many cases you need to do some
+investigation to determine the source of the problem.
+
+The most powerful tools for this purpose are the
+single line comment (indicated by @code{%}) and the block
+comment (indicated by @code{%@{ ... %@}}).  If you don't
+know where a problem is, start commenting out huge portions
+of your input file.  After you comment out a section, try
+compiling the file again.  If it works, then the problem
+must exist in the portion you just commented.  If it doesn't
+work, then keep on commenting out material until you have
+something that works.
+
+In an extreme case, you might end up with only
+
+@example
+\score @{
+  <<
+    % \melody
+    % \harmony
+    % \bass
+  >>
+  \layout@{@}
+@}
+@end example
+
+@noindent
+(in other words, a file without any music)
+
+If that happens, don't give up.  Uncomment a bit -- say,
+the bass part -- and see if it works.  If it doesn't work,
+then comment out all of the bass music (but leave
+@code{\bass} in the @code{\score} uncommented.
+
+@example
+bass = \relative c' @{
+%@{
+  c4 c c c
+  d d d d
+%@}
+@}
+@end example
+
+Now start slowly uncommenting more and more of the
+@code{bass} part until you find the problem line.
+
+Another very useful debugging technique is constructing
+FIXME FIXME @c @ref{Minimal examples}.
+
+
+@node Minimal examples
+@subsection Minimal examples
+
+A minimal example is an example which is as small as possible.  These
+examples are much easier to understand than long examples.  Minimal
+examples are used for
+
+@itemize
+@item Bug reports
+@item Sending a help request to mailing lists
+@item Adding an example to the @uref{http://lsr.dsi.unimi.it/,
+LilyPond Snippet Repository}
+@end itemize
+
+To construct an example which is as small as possible, the rule is
+quite simple: remove anything which is not necessary.  When trying to
+remove unnecessary parts of a file, it is a very good idea to comment
+out lines instead of deleting them.  That way, if you discover that you
+actually @emph{do} need some lines, you can uncomment them, instead of
+typing them in from scratch.
+
+There are two exceptions to the @qq{as small as possible} rule:
+
+@itemize
+@item Include the @code{\version} number.
+@item If possible, use @code{\paper@{ ragged-right=##t @}} at the
+top of your example.
+@end itemize
+
+The whole point of a minimal example is to make it easy to read:
+
+@itemize
+@item Avoid using complicated notes, keys, or time signatures, unless you
+wish to demonstrate something is about the behavior of those items.
+@item Do not use @code{\override} commands unless that is the point of the
+example.
+@end itemize
+
+
+
+@node Make and Makefiles
+@section Make and Makefiles
+
+@cindex makefiles
+@cindex make
+
+Pretty well all the platforms Lilypond can run on support a software
+facility called @code{make}. This software reads a special file called a
+@code{Makefile} that defines what files depend on what others and what
+commands you need to give the operating system to produce one file from
+another. For example the makefile would spell out how to produce
+@code{ballad.pdf} and @code{ballad.midi} from @code{ballad.ly} by
+running Lilypond.
+
+There are times when it is a good idea to create a @code{Makefile}
+for your project, either for your own convenience or
+as a courtesy to others who might have access to your source files.
+This is true for very large projects with many included files and
+different output options (e.g. full score, parts, conductor's
+score, piano reduction, etc.), or for projects that
+require difficult commands to build them (such as
+@code{lilypond-book} projects). Makefiles vary greatly in
+complexity and flexibility, according to the needs and skills of
+the authors. The program GNU Make comes installed on GNU/Linux
+distributions and on MacOS X, and it is also available for Windows.
+
+See the @strong{GNU Make Manual} for full details on using
+@code{make}, as what follows here gives only a glimpse of what it
+can do.
+
+The commands to define rules in a makefile differ
+according to platform; for instance the various forms of Linux and
+MacOS use @code{bash}, while Windows uses @code{cmd}. Note that on
+MacOS X, you need to configure the system to use the command-line
+intepreter. Here are some example makefiles, with versions for both
+Linux/MacOS and Windows.
+
+The first example is for an orchestral work in four
+movements with a directory structure as follows:
+
+@example
+Symphony/
+|-- MIDI/
+|-- Makefile
+|-- Notes/
+|   |-- cello.ily
+|   |-- figures.ily
+|   |-- horn.ily
+|   |-- oboe.ily
+|   |-- trioString.ily
+|   |-- viola.ily
+|   |-- violinOne.ily
+|   `-- violinTwo.ily
+|-- PDF/
+|-- Parts/
+|   |-- symphony-cello.ly
+|   |-- symphony-horn.ly
+|   |-- symphony-oboes.ly
+|   |-- symphony-viola.ly
+|   |-- symphony-violinOne.ly
+|   `-- symphony-violinTwo.ly
+|-- Scores/
+|   |-- symphony.ly
+|   |-- symphonyI.ly
+|   |-- symphonyII.ly
+|   |-- symphonyIII.ly
+|   `-- symphonyIV.ly
+`-- symphonyDefs.ily
+@end example
+
+The @code{.ly} files in the @code{Scores} and
+@code{Parts} directories get their notes from @code{.ily}
+files in the @code{Notes} directory:
+
+@example
+%%% top of file "symphony-cello.ly"
+\include ../definitions.ily
+\include ../Notes/cello.ily
+@end example
+
+The makefile will have targets of @code{score} (entire piece in
+full score), @code{movements} (individual movements in full score),
+and @code{parts} (individual parts for performers). There
+is also a target @code{archive} that will create a tarball of
+the source files, suitable for sharing via web or email. Here is
+the makefile for GNU/Linux or MacOS X. It should be saved with the
+name @code{Makefile} in the top directory of the project:
+
+@warning{When a target or pattern rule is defined, the
+subsequent lines must begin with tabs, not spaces.}
+
+@example
+# the name stem of the output files
+piece = symphony
+# determine how many processors are present
+CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
+# The command to run lilypond
+LILY_CMD = lilypond -ddelete-intermediate-files \
+                    -dno-point-and-click -djob-count=$(CPU_CORES)
+
+# The suffixes used in this Makefile.
+.SUFFIXES: .ly .ily .pdf .midi
+
+# Input and output files are searched in the directories listed in
+# the VPATH variable.  All of them are subdirectories of the current
+# directory (given by the GNU make variable `CURDIR').
+VPATH = \
+  $(CURDIR)/Scores \
+  $(CURDIR)/PDF \
+  $(CURDIR)/Parts \
+  $(CURDIR)/Notes
+
+# The pattern rule to create PDF and MIDI files from a LY input file.
+# The .pdf output files are put into the `PDF' subdirectory, and the
+# .midi files go into the `MIDI' subdirectory.
+%.pdf %.midi: %.ly
+        $(LILY_CMD) $<; \           # this line begins with a tab
+        if test -f "$*.pdf"; then \
+            mv "$*.pdf" PDF/; \
+        fi; \
+        if test -f "$*.midi"; then \
+            mv "$*.midi" MIDI/; \
+        fi
+
+notes = \
+  cello.ily \
+  horn.ily \
+  oboe.ily \
+  viola.ily \
+  violinOne.ily \
+  violinTwo.ily
+
+# The dependencies of the movements.
+$(piece)I.pdf: $(piece)I.ly $(notes)
+$(piece)II.pdf: $(piece)II.ly $(notes)
+$(piece)III.pdf: $(piece)III.ly $(notes)
+$(piece)IV.pdf: $(piece)IV.ly $(notes)
+
+# The dependencies of the full score.
+$(piece).pdf: $(piece).ly $(notes)
+
+# The dependencies of the parts.
+$(piece)-cello.pdf: $(piece)-cello.ly cello.ily
+$(piece)-horn.pdf: $(piece)-horn.ly horn.ily
+$(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
+$(piece)-viola.pdf: $(piece)-viola.ly viola.ily
+$(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
+$(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
+
+# Type `make score' to generate the full score of all four
+# movements as one file.
+.PHONY: score
+score: $(piece).pdf
+
+# Type `make parts' to generate all parts.
+# Type `make foo.pdf' to generate the part for instrument `foo'.
+# Example: `make symphony-cello.pdf'.
+.PHONY: parts
+parts: $(piece)-cello.pdf \
+       $(piece)-violinOne.pdf \
+       $(piece)-violinTwo.pdf \
+       $(piece)-viola.pdf \
+       $(piece)-oboes.pdf \
+       $(piece)-horn.pdf
+
+# Type `make movements' to generate files for the
+# four movements separately.
+.PHONY: movements
+movements: $(piece)I.pdf \
+           $(piece)II.pdf \
+           $(piece)III.pdf \
+           $(piece)IV.pdf
+
+all: score parts movements
+
+archive:
+        tar -cvvf stamitz.tar \       # this line begins with a tab
+        --exclude=*pdf --exclude=*~ \
+        --exclude=*midi --exclude=*.tar \
+        ../Stamitz/*
+@end example
+
+
+There are special complications on the Windows platform. After
+downloading and installing GNU Make for Windows, you must set the
+correct path in the system's environment variables so that the
+DOS shell can find the Make program. To do this, right-click on
+"My Computer," then choose @code{Properties} and
+@code{Advanced}. Click @code{Environment Variables}, and then
+in the @code{System Variables} pane, highlight @code{Path}, click
+@code{edit}, and add the path to the GNU Make executable file, which
+ will look something like this:
+
+@example
+C:\Program Files\GnuWin32\bin
+@end example
+
+The makefile itself has to be altered to handle different shell
+commands and to deal with spaces that are present
+in some default system directories. The @code{archive} target
+is eliminated since Windows does not have the @code{tar} command,
+and Windows also has a different default extension for midi files.
+
+
+@example
+## WINDOWS VERSION
+##
+piece = symphony
+LILY_CMD = lilypond -ddelete-intermediate-files \
+                    -dno-point-and-click \
+                    -djob-count=$(NUMBER_OF_PROCESSORS)
+
+#get the 8.3 name of CURDIR (workaround for spaces in PATH)
+workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \
+          do @@echo %%~sb)
+
+.SUFFIXES: .ly .ily .pdf .mid
+
+VPATH = \
+  $(workdir)/Scores \
+  $(workdir)/PDF \
+  $(workdir)/Parts \
+  $(workdir)/Notes
+
+%.pdf %.mid: %.ly
+        $(LILY_CMD) $<      # this line begins with a tab
+        if exist "$*.pdf"  move /Y "$*.pdf"  PDF/ # begin with tab
+        if exist "$*.mid" move /Y "$*.mid" MIDI/  # begin with tab
+
+notes = \
+  cello.ily \
+  figures.ily \
+  horn.ily \
+  oboe.ily \
+  trioString.ily \
+  viola.ily \
+  violinOne.ily \
+  violinTwo.ily
+
+$(piece)I.pdf: $(piece)I.ly $(notes)
+$(piece)II.pdf: $(piece)II.ly $(notes)
+$(piece)III.pdf: $(piece)III.ly $(notes)
+$(piece)IV.pdf: $(piece)IV.ly $(notes)
+
+$(piece).pdf: $(piece).ly $(notes)
+
+$(piece)-cello.pdf: $(piece)-cello.ly cello.ily
+$(piece)-horn.pdf: $(piece)-horn.ly horn.ily
+$(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
+$(piece)-viola.pdf: $(piece)-viola.ly viola.ily
+$(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
+$(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
+
+.PHONY: score
+score: $(piece).pdf
+
+.PHONY: parts
+parts: $(piece)-cello.pdf \
+       $(piece)-violinOne.pdf \
+       $(piece)-violinTwo.pdf \
+       $(piece)-viola.pdf \
+       $(piece)-oboes.pdf \
+       $(piece)-horn.pdf
+
+.PHONY: movements
+movements: $(piece)I.pdf \
+           $(piece)II.pdf \
+           $(piece)III.pdf \
+           $(piece)IV.pdf
+
+all: score parts movements
+@end example
+
+
+The next Makefile is for a @command{lilypond-book} document done in
+LaTeX. This project has an index, which requires that the
+@command{latex} command be run twice to update links. Output files are
+all stored in the @code{out} directory for .pdf output and in the
+@code{htmlout} directory for the html output.
+
+@example
+SHELL=/bin/sh
+FILE=myproject
+OUTDIR=out
+WEBDIR=htmlout
+VIEWER=acroread
+BROWSER=firefox
+LILYBOOK_PDF=lilypond-book --output=$(OUTDIR) --pdf $(FILE).lytex
+LILYBOOK_HTML=lilypond-book --output=$(WEBDIR) $(FILE).lytex
+PDF=cd $(OUTDIR) && pdflatex $(FILE)
+HTML=cd $(WEBDIR) && latex2html $(FILE)
+INDEX=cd $(OUTDIR) && makeindex $(FILE)
+PREVIEW=$(VIEWER) $(OUTDIR)/$(FILE).pdf &
+
+all: pdf web keep
+
+pdf:
+        $(LILYBOOK_PDF)  # begin with tab
+        $(PDF)           # begin with tab
+        $(INDEX)         # begin with tab
+        $(PDF)           # begin with tab
+        $(PREVIEW)       # begin with tab
+
+web:
+        $(LILYBOOK_HTML) # begin with tab
+        $(HTML)          # begin with tab
+        cp -R $(WEBDIR)/$(FILE)/ ./  # begin with tab
+        $(BROWSER) $(FILE)/$(FILE).html &  # begin with tab
+
+keep: pdf
+        cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf  # begin with tab
+
+clean:
+        rm -rf $(OUTDIR) # begin with tab
+
+web-clean:
+        rm -rf $(WEBDIR) # begin with tab
+
+archive:
+        tar -cvvf myproject.tar \ # begin this line with tab
+        --exclude=out/* \
+        --exclude=htmlout/* \
+        --exclude=myproject/* \
+        --exclude=*midi \
+        --exclude=*pdf \
+        --exclude=*~ \
+        ../MyProject/*
+@end example
+
+TODO: make this thing work on Windows
+
+The previous makefile does not work on Windows. An alternative
+for Windows users would be to create a simple batch file
+containing the build commands. This will not
+keep track of dependencies the way a makefile does, but it at
+least reduces the build process to a single command. Save the
+following code as @command{build.bat} or @command{build.cmd}.
+The batch file can be run at the DOS prompt or by simply
+double-clicking its icon.
+
+@example
+lilypond-book --output=out --pdf myproject.lytex
+cd out
+pdflatex myproject
+makeindex myproject
+pdflatex myproject
+cd ..
+copy out\myproject.pdf MyProject.pdf
+@end example
+
+
+@seealso
+Application Usage:
+FIXME
+@c @rprogram{Setup for MacOS X},
+@rprogram{Command-line usage},
+@rprogram{lilypond-book}
diff --git a/Documentation/automated-engraving.itexi b/Documentation/automated-engraving.itexi
new file mode 100644 (file)
index 0000000..192268e
--- /dev/null
@@ -0,0 +1,84 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+@ignore
+hmm, the one big page is too big, but it was really inviting to
+     read.  this is not.  maybe just scrap this menu and introduction
+     to index?
+@end ignore
+
+@c @setfilename automated-engraving.info
+@c @settitle Obsessed with putting ink on paper
+@c @documentencoding UTF-8
+@c @documentlanguage en
+
+@c @set web
+@c @include macros.itexi
+
+@c @afourpaper
+
+@c @ifnottex
+@c @node Top
+@c @top
+@c @chapheading
+@c @end ifnottex
+
+@node automated-engraving
+@unnumbered Obsessed with putting ink on paper
+@c @finalout
+
+@heading What is behind LilyPond?
+
+@sourceimage{hader-collage,,,.png}
+
+LilyPond is not unique in making music notation: there are a lot of
+programs that print music, and nowadays most of the newly printed
+music is made with computers.  Unfortunately, that also shows: just
+ask any musician that plays classical music: new scores do not look as
+nice as old ones.
+
+What is the difference between hand-work and machine work, and what
+has caused it?  How can we improve the situation?  This essay explains
+problems in music notation (software), and our approach to solving
+them.
+
+@menu
+* introduction:: Introduction -- what is wrong with computer music notation.
+* software:: What is wrong with software -- or how Finale is not the end-all of music software.
+* problem-statement:: How not to design software -- or modeling music notation.
+* divide-and-conquer:: Divide and conqueror -- a blue print for automated notation.
+* implementing-notation:: Impressive, but does it also work in theory -- a practical approach to capturing notation.
+* engraving:: Music engraving -- the art of printing music.
+* implementing-typography:: Implementing typography -- hackers attack the engraving problem.
+* formatting-architecture:: A flexible program architecture -- lets us write engraving software 
+* scoring-esthetics:: Beautiful numbers -- how LilyPond participates in the Miss World contests.
+* benchmarking:: Notation benchmarking -- is a flexible architecture enough?
+* schubert:: Notation benchmarking -- project too?
+* typography-features:: Typographical features -- unique to LilyPond.
+* input-format:: Input format -- how to enter music. 
+* conclusion:: Conclusion.
+@end menu
+
+@contents
+
+@c This essay is also available in @ref{big-page.html,one big page}.
+
+@include automated-engraving/introduction.itexi
+@include automated-engraving/software.itexi
+@include automated-engraving/problem-statement.itexi
+@include automated-engraving/divide-and-conquer.itexi
+@include automated-engraving/implementing-notation.itexi
+@include automated-engraving/engraving.itexi
+@include automated-engraving/implementing-typography.itexi
+@include automated-engraving/formatting-architecture.itexi
+@include automated-engraving/scoring-esthetics.itexi
+@include automated-engraving/benchmarking.itexi
+@include automated-engraving/schubert.itexi
+@include automated-engraving/typography-features.itexi
+@include automated-engraving/input-format.itexi
+@include automated-engraving/conclusion.itexi
diff --git a/Documentation/automated-engraving/GNUmakefile b/Documentation/automated-engraving/GNUmakefile
new file mode 100644 (file)
index 0000000..c93c9e0
--- /dev/null
@@ -0,0 +1,5 @@
+depth = ../..
+
+LOCALSTEPMAKE_TEMPLATES = ly
+
+include $(depth)/make/stepmake.make
diff --git a/Documentation/automated-engraving/benchmarking.itexi b/Documentation/automated-engraving/benchmarking.itexi
new file mode 100644 (file)
index 0000000..0ce993c
--- /dev/null
@@ -0,0 +1,104 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+
+@node benchmarking 
+
+@unnumberedsec Notation benchmarking
+
+A flexible architecture is necessary for good
+formatting. Unfortunately, it is not sufficient.  Only a careful
+emulation of printed matter will give a good result.  We suggested in
+the introduction to compare program output with existing hand-engraved
+scores.  It is exactly this technique that we use to perfect LilyPond
+output.  In a way, this is a benchmarking technique: the performance of
+the program, in terms of quality, is measured in relation to a known
+quantity.
+
+Here you see parts of a benchmark piece. At the top the reference
+edition (B@"arenreiter BA 320) at the bottom the output from
+LilyPond 1.4:
+
+@divClass{float-center}
+@c @ref{baer-sarabande-hires.png,
+@sourceimage{baer-sarabande,,,.png}
+@c }
+@divEnd
+
+@divClass{float-center}
+B@"arenreiter (click to enlarge)
+@divEnd
+
+@divClass{float-center}
+@sourceimage{lily14-sarabande,,,.png}
+@divEnd
+
+@divClass{float-center}
+LilyPond 1.4
+@divEnd
+
+The LilyPond output is certainly readable, and for many people it
+would be acceptable. However, close comparison with a hand-engraved
+score showed a lot of errors in the formatting details:
+
+@divClass{float-center}
+@sourceimage{lily14-sarabande-correct,,,.png}
+@divEnd
+
+@divClass{float-center}
+@itemize
+@item
+ Lots of symbols were unbalanced. In particular the trill sign was
+too large.
+
+
+@item
+ Stems and beams were all wrong: the stems were too long, and
+beam should be slanted to cover staff lines exactly. The beam was also
+too light.
+
+
+@item
+ The spacing was irregular: some measures were too tight, other
+too wide.
+
+
+@end itemize
+@divEnd
+
+(And there were missing notes in the original version for LilyPond)
+
+By addressing the relevant algorithms, settings, and font designs, we
+were able to improve the output. The output for LilyPond 1.8 is shown
+below. Although it is not a clone of the reference edition, this
+output is very close to publication quality.
+
+@divClass{float-center}
+@sourceimage{lily17-sarabande,,,.png}
+@divEnd
+
+@divClass{float-center}
+LilyPond 1.8
+@divEnd
+
+@divClass{float-center}
+@sourceimage{baer-sarabande,,,.png}
+@divEnd
+
+@divClass{float-center}
+B@"arenreiter
+@divEnd
+
+Another example of benchmarking is our project for the 2.1 series, a
+@ref{schubert,Schubert song}.
+
+@divClass{float-right}
+Next: @ref{typography-features,Cool features},
+typographical hoops that we made LilyPond jump through.
+@divEnd
diff --git a/Documentation/automated-engraving/conclusion.itexi b/Documentation/automated-engraving/conclusion.itexi
new file mode 100644 (file)
index 0000000..3093582
--- /dev/null
@@ -0,0 +1,34 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+
+@node conclusion 
+
+@unnumberedsec Conclusion
+
+We have shown you what engraved music should look like, and how we built
+our software to emulate that look.  We have put a lot of effort into
+building it.  Thanks to all that hard work, you can
+
+FIXME
+
+@c @ref{@DEPTH@switch/tour.html,use the program to print nice music too}.
+
+To complete the reading of this essay, you may want to have a look at
+
+FIXME
+
+@c @ref{@DEPTH@about/pubs.html,publications and articles},
+especially @uref{http://www.musicbyandrew.ca/finale-lilypond-1.html,Andrew
+Hawryluk's writings}, which include Finale and LilyPond notation
+benchmarking.
+
+@c @divClass{float-right}
+@c @divEnd
+@c Go @ref{Top,back} to the top.
diff --git a/Documentation/automated-engraving/divide-and-conquer.itexi b/Documentation/automated-engraving/divide-and-conquer.itexi
new file mode 100644 (file)
index 0000000..3828668
--- /dev/null
@@ -0,0 +1,79 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@node divide-and-conquer
+@unnumberedsec Plan de campagne
+
+Since content and form of a score are separate, we have to match that
+in the design of software. Hence, the basic blueprint  of our program
+should follow this scheme
+
+@multitable @columnfractions .3 .3 .3
+@item
+
+@sourceimage{simple-notation,,,.png}
+
+
+@tab
+
+@result{}
+
+
+@tab
+
+@code{@{ c'4 d'8 @}}
+
+
+
+
+@item
+
+1. form
+
+
+@tab
+
+2. translation
+
+
+@tab
+
+3. content
+
+
+
+
+@end multitable
+
+In effect, we are conquering the problem by dividing it into
+subproblems
+
+@enumerate 1
+@item
+Typography:  @strong{where} to put symbols
+
+@item
+Notation:  @strong{what} symbols to produce
+@item
+Representation: how to @strong{encode}  music
+@end enumerate
+
+Finally, whenever you subdivide a problem, a new problem is created,
+@enumerate 4
+
+
+@item
+ Architecture: glue everything @strong{together}
+
+@end enumerate
+
+@divClass{float-right}
+Next: @ref{implementing-notation,Impressive, but does it also
+work in theory}? A practical approach to capturing notation.
+@divEnd
diff --git a/Documentation/automated-engraving/engraving.itexi b/Documentation/automated-engraving/engraving.itexi
new file mode 100644 (file)
index 0000000..a90fbda
--- /dev/null
@@ -0,0 +1,52 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+@node engraving 
+@unnumberedsec Music engraving
+
+@sourceimage{hader-slaan,,,.png}
+
+
+When we know what symbols to print, we have to decide where to put
+them so the the result looks pleasing. This art is called @emph{music
+engraving}.  The term derives from the traditional process of
+music printing.  Only a few decades ago, sheet music was made by
+cutting and stamping the music into zinc or pewter plates in mirror
+image.  The plate would be inked, and the depressions caused by the
+cutting and stamping would hold ink.  An image was formed by pressing
+paper to the plate. The stamping and cutting was completely done by
+hand. Making corrections was cumbersome, so engraving had to be done
+correctly in one go. Of course, this was a highly specialized skill
+
+
+@itemize
+@item
+ Music engraving is a traditional craft, and was learned in
+practice. An accomplished master had to complete around 10 years of
+practice.
+
+
+@item
+ Most of the knowledge was passed from master to apprentice during
+practical training. Consequently, little has been explicitly laid down
+about the rules of elegant engraving.
+
+
+@item
+ Finally, engraving is about selecting proper distance and
+blackness for scores. @sourceimage{stone-distance,,,.png} The
+quality of the end result must be judged visually. This is virtually
+impossible to capture in formal rules.
+
+
+@end itemize
+
+@divClass{float-right}
+Next: @ref{implementing-typography,Stamping computer
+screens?}. Computer hackers take over the engraving business.
+@divEnd
diff --git a/Documentation/automated-engraving/formatting-architecture.itexi b/Documentation/automated-engraving/formatting-architecture.itexi
new file mode 100644 (file)
index 0000000..33599f9
--- /dev/null
@@ -0,0 +1,62 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+
+@node formatting-architecture 
+
+@unnumberedsec A flexible formatting architecture
+
+Remember the music notation problem? Its solution left us with a
+bunch of objects. The formatting architecture is built on these
+objects. Each object carries variables:
+
+@itemize
+@item
+ Variables control layout decisions.  For example, many objects
+have a @code{direction} variable that encodes the choice between up
+and down (or left and right).  Here you see two chords, with accents
+and arpeggio. In the first chord, the objects have all directions down
+(or left). The second chord has all directions up (right).
+
+@divClass{float-center}
+@sourceimage{directions-updown,,,.png}
+@divEnd
+
+The process of formatting a score consists of reading and writing
+object variables.
+
+
+
+@item
+Some variables have a preset value. For example, the thickness of
+ many lines &ndash; a characteristic of typographical style &ndash; are preset
+ variables. Changing them gives a different typographical impression:
+
+@divClass{float-center}
+@sourceimage{thickness-tweaks,,,.png}
+@divEnd
+
+@item
+Formatting rules are also preset variables: each object has
+variables containing procedures. These procedure perform the actual
+formatting, and by substituting different ones, we can change
+behavior. In the following example, the rule that note head objects
+use to draw their symbol is changed during the music fragment:
+
+@divClass{float-center}
+@sourceimage{mc-squared,,,.png}
+@divEnd
+
+@end itemize
+
+@divClass{float-right}
+Next:
+ @ref{scoring-esthetics,Beautiful numbers}: how
+LilyPond participates in the Miss World contests.
+@divEnd
diff --git a/Documentation/automated-engraving/implementing-notation.itexi b/Documentation/automated-engraving/implementing-notation.itexi
new file mode 100644 (file)
index 0000000..7047841
--- /dev/null
@@ -0,0 +1,127 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+
+@node implementing-notation 
+
+@unnumberedsec Music notation
+
+Common music notation encompasses some 500 years of music. Its
+applications range from monophonic melodies to monstruous counterpoint
+for large orchestras.  How can we get a grip on such a many-headed
+beast?  Our solution is to make a strict distinction between notation,
+@emph{what} symbols to use, and engraving, @emph{where} to put
+them.  For tackling notation, we have broken up the problem into
+digestible (and programmable) chunks: every type of symbol is handled
+by a separate plugin.  All plugins cooperate through the LilyPond
+architecture.  They are completely modular and independent, so each
+can be developed and improved separately.
+
+@itemize
+@item
+The most basic plug-in creates Note-heads:
+
+@divClass{float-center}
+@sourceimage{engraver-noteheads,,,.png}
+@divEnd
+
+This plug-in creates graphical objects from musical events.  People
+that put graphics to musical ideas are called copyists or engravers,
+so by analogy, this plug-in is called @code{Note_head_engraver}.
+
+
+@item
+ The @code{Staff_symbol_engraver} generates the object
+representing the staff lines.
+
+@divClass{float-center}
+@sourceimage{engraver-staff,,,.png}
+@divEnd
+
+@item
+
+ The @code{Clef_engraver} tells @code{Note_head_engraver} how high
+each head should be placed.
+
+@divClass{float-center}
+@sourceimage{engraver-clef,,,.png}
+@divEnd
+
+
+
+@item
+
+For the flags and stems we add  a @code{Stem_engraver}:
+
+@divClass{float-center}
+@sourceimage{engraver-stem,,,.png}
+@divEnd
+
+This engraver is notified of any note head coming along.  Every time
+one (or more, for a chord) note head is seen, a stem object is
+created, and attached to the note head.
+
+@item
+
+Beams, slurs, accents are handled by separate engravers. Like the
+@code{Stem_engraver}, they create objects and connect them to stems,
+note heads, etc.:
+
+@divClass{float-center}
+@sourceimage{engraver-slur,,,.png}
+@divEnd
+
+
+
+@item
+
+Accidentals, bar lines, time signature, and key signature each have a
+separate
+engraver.
+
+@divClass{float-center}
+@sourceimage{engraver-acc,,,.png}
+@divEnd
+
+The @code{Accidental_engraver} is the most complex plug-in: it has
+to look at the key signature, note pitches, ties, and bar lines to
+decide when to print accidentals.
+
+
+@end itemize
+
+
+@c @unnumberedsec  Polyphonic notation
+@heading  Polyphonic notation
+
+The system shown in the last section works well for monophonic music,
+but what about polyphony?  In polyphonic notation, many voices can
+share a staff:
+
+@divClass{float-center}
+@sourceimage{engraver-final,,,.png}
+@divEnd
+
+In this situation, the accidentals and staff are shared, but the
+stems, slurs, beams, etc. are private to each voice. Hence, engravers
+should be grouped.  The engravers for note head, stems, slurs, etc. go
+into a group called "Voice context," while the engravers for key,
+accidental, bar, etc. go into a group called "Staff context."  In the
+case of polyphony, a single Staff context contains more than one Voice
+context.  Similarly, more Staff contexts can be put into a single
+Score context:
+
+@divClass{float-center}
+@sourceimage{engraver-score,,,.png}
+@divEnd
+
+@divClass{float-right}
+Next: @ref{engraving,The art of stamping}:
+how @emph{did} they make hand-made music?
+@divEnd
diff --git a/Documentation/automated-engraving/implementing-typography.itexi b/Documentation/automated-engraving/implementing-typography.itexi
new file mode 100644 (file)
index 0000000..10b470f
--- /dev/null
@@ -0,0 +1,68 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+
+
+@node implementing-typography 
+
+
+@unnumberedsec Implementing typography
+
+How do we go about implementing typography?  Answering the "music
+notation" problem left us with a bunch of graphic objects
+representing note heads, the staff, stems, etc.
+
+If craftsmen need over ten years to become true masters, how could we
+simple hackers ever write a program to take over their jobs?
+
+The answer is: we cannot!  Since typography relies on human judgement
+of appearance, people cannot be replaced. However, much of their dull
+work can be automated: if LilyPond solves most of the common
+situations correctly, then this will be a huge improvement over
+existing software. The remaining cases can be tuned by hand.
+Over the course of years, the software can be refined to do
+more and more automatically, so manual overrides are necessary less
+and less.
+
+How do we go about building such a system?  When we started, we wrote
+the program in C++. Essentially, this means that the program
+functionality is set in stone by us developers. That proved to be
+unsatisfactory:
+
+@itemize
+@item
+ If things must be tuned by hand, then the user must access to the
+  formatting engine. Hence, rules and settings cannot be fixed at
+  compile time, but they must be accessible at run-time.
+
+
+@item
+ Engraving is a matter of visual judgement, and hence it is a
+  matter of taste. As knowledgeable as we are, users can disagree with
+  our personal decision. Therefore, the definitions of typographical
+  style must also be accessible to the user.
+
+
+@item
+ Finally, we continually refine the formatting algorithms, so we
+ need a flexible approach to rules.  The C++ language forces a certain
+ method of grouping rules that does not match how music notation works.
+
+
+@end itemize
+
+Clearly, there is a need for a flexible architecture. The architecture
+should encompass formatting rules, typographical style and individual
+formatting decisions.
+
+@divClass{float-right}
+Next: @ref{formatting-architecture,Program architecture,
+your flexible friend}: tuning, tweaking and developing  typography
+rules.
+@divEnd
diff --git a/Documentation/automated-engraving/input-format.itexi b/Documentation/automated-engraving/input-format.itexi
new file mode 100644 (file)
index 0000000..49cc252
--- /dev/null
@@ -0,0 +1,155 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+
+@node input-format 
+
+@unnumberedsec Input format
+
+As discussed earlier, the ideal input format for a music engraving
+system is the content: the music itself. This poses a formidable
+problem: how can we define what music really @emph{is}? Our way out
+of this problem, is to reverse it.  Instead of defining what music is,
+our program serves as a definition: we write a program capable of
+producing sheet music, and adjust the format to be as lean as
+possible.  When the format can no longer be trimmed down, by
+definition we are left with content itself.
+
+The syntax is also the user-interface for LilyPond, hence it is easily
+typable, e.g.,
+
+@verbatim
+
+  c'4 d'8
+
+@end verbatim
+Are a quarter note C1 and eighth note D1, as in this example:
+
+@divClass{float-center}
+@sourceimage{simple-notation,,,.png}
+@divEnd
+
+On a microscopic scale, such syntax is easy to use. On a larger scale,
+syntax also  needs structure.  How else can  you enter  complex pieces
+like symphonies and operas? The  structure is formed by the concept of
+music expressions:  by combining small fragments of  music into larger
+ones, more complex music can be expressed.  For example,
+
+@multitable @columnfractions .5 .5
+@item
+
+c4
+
+@tab
+
+@sourceimage{simultaneous-0,,,.png}
+
+
+@end multitable
+
+Combine this simultaneously with two other notes by enclosing in <&lt
+and >>.
+
+@multitable @columnfractions .5 .5
+
+@item
+
+@verbatim
+
+  <<c4 d4 e4>>
+
+@end verbatim
+
+
+@tab
+
+@sourceimage{simultaneous-1,,,.png}
+
+
+
+@end multitable
+
+This expression is put in sequence by enclosing it in braces, i.e.,
+@multitable @columnfractions .5 .5
+@item
+
+@verbatim
+
+   { <<c4 d4 e4>> f4  }
+@end verbatim
+
+
+@tab
+
+@sourceimage{simultaneous-2,,,.png}
+
+
+
+@end multitable
+
+The above is another expression, and therefore, it may be combined 
+again with a simultaneous expression (in this case, a half note). 
+
+@multitable @columnfractions .5 .5
+@item
+
+@verbatim
+
+<< { <<c4 d4 e4>> f4 } g2 >> 
+
+@end verbatim
+
+
+@tab
+
+@sourceimage{simultaneous-3,,,.png}
+
+
+
+
+@end multitable
+
+Such recursive structures can be specified neatly and formally in a
+@emph{context-free grammar}.  The parsing code is also generated
+from this grammar. In other words, the  syntax of LilyPond is clearly
+and unambiguously defined.
+
+User-interfaces and syntax are what people see and deal with
+most. They are partly a matter of taste, and also subject of much
+discussion.  Although discussions on taste do have their merit, they
+are not very productive.  In the larger picture of LilyPond, the
+importance of input syntax is small: inventing neat syntax is easy,
+writing decent formatting code is much harder.  This is also
+illustrated by the line-counts for the respective components: parsing
+and representation take up less than 10% of the code.
+
+@multitable @columnfractions .5 .5
+@item
+Parsing + representation
+@tab
+@item
+total
+@tab
+@item
+6000 lines C++
+@tab
+61500 lines C++
+@end multitable
+
+@ignore
+  TODO :
+
+  blurbs about lilypond today
+
+  future?
+@end ignore
+
+@divClass{float-right}
+Next: @ref{conclusion,wrapping it up}, the conclusion.
+@divEnd
diff --git a/Documentation/automated-engraving/introduction.itexi b/Documentation/automated-engraving/introduction.itexi
new file mode 100644 (file)
index 0000000..dfce6aa
--- /dev/null
@@ -0,0 +1,109 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+
+@node introduction 
+
+@unnumberedsec What is wrong with computer music notation?
+
+We like to call LilyPond an "automated engraving system." It will
+format music notation beautifully without requiring typographical
+expertise of its users.
+
+LilyPond is not unique in making music notation: there are a lot of
+programs that print music, and nowadays most of the newly printed
+music is made with computers.  Unfortunately, that also shows: just
+ask any musician that plays classical music: new scores do not look as
+nice as old (from before, say, 1970) scores: the new ones have a
+bland, mechanical look. They are not at all pleasurable to play from.
+
+To illustrate this, take a look at the following examples. Both are
+editions of the 1st Cello Suite by J.S.Bach. The one on the left is a
+very beautifully hand-engraved edition from 1950, the one on the right
+is a typical contemporary computer product. Take a few seconds to let
+the looks of both pages sink in. Which one do you like better, and
+why?
+
+@ifnottex
+@multitable @columnfractions .5 .5
+@item
+
+@sourceimage{baer-suite1-fullpage,,,.png}
+
+@tab
+
+@sourceimage{henle-suite1-fullpage,,,.png}
+
+
+
+@item
+B@"arenreiter (BA 320, (c) 1950)
+
+@tab
+Henle (nr. 666 (c) 2000)
+
+@end multitable
+@end ifnottex
+
+The left picture looks nice: it has flowing lines and movement. It's
+music, and it's alive.  Now, the picture on the right shows the same
+music, and it was written by Bach.  His music surely has liveliness
+and flowing lines.... Except, the score doesn't show it: it looks
+rigid and mechanical.  To understand better why that is, let's blow up
+a fragment of both pieces:
+
+@divClass{float-center}
+@sourceimage{baer-suite1-line,,,.png}
+@divEnd
+
+@divClass{float-center}
+Hand-made
+@divEnd
+
+@*
+
+@divClass{float-center}
+@sourceimage{henle-suite1-line,,,.png}
+@divEnd
+
+@divClass{float-center}
+Computer-made
+@divEnd
+
+The location of the bar lines is a giveaway.  In the new edition,
+both barlines are on exactly the same horizontal location. Also, the
+note heads are on the exact same horizontal location.  When you look
+back at the whole page, you can easily verify that almost all barlines
+are in the same location, as are most of the note heads. The entire
+thing is spaced as if it were put to a big grid, which is what causes
+the mechanical impression.
+
+This is not the only error on this example, and more importantly, this
+piece is not the only one with typographical errors.  Sadly, almost
+all music printed nowadays is full of basic typographical mistakes.
+
+Musicians are usually more absorbed with performing the music than
+with studying its looks, so this nitpicking about typographical
+details may seem academical. That is not justified.  This piece here
+has a monotonous rhythm. If all lines look the same, they become like
+a labyrinth. If the musician looks away once or has a lapse in his
+concentration, he will be lost on the page.
+
+In general, this is a common characteristic of typography. Layout
+should be pretty, not only for its own sake, but especially because it
+helps the reader in his task. For performance material like sheet
+music, this is doubly important: musicians have a limited amount of
+attention. The less attention they need for reading, the more they can
+focus on playing itself.  In other words, better typography translates
+to better performances.
+
+@divClass{float-right}
+Next: @ref{software,What is wrong with software}, or how
+Finale is not the end-all of music software.
+@divEnd
diff --git a/Documentation/automated-engraving/problem-statement.itexi b/Documentation/automated-engraving/problem-statement.itexi
new file mode 100644 (file)
index 0000000..080c62b
--- /dev/null
@@ -0,0 +1,73 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+
+
+@node problem-statement 
+@unnumberedsec Designing notation software: how not to do it
+
+It would be nice if notation software didn't need any babysitting to
+produce acceptable output. 
+
+Our goal with @emph{LilyPond} was to write such a system: a program
+that will produce beautiful music ("engraving") automatically.
+
+At first sight, music notation follows a straightforward hierarchical
+pattern.  Consider the example below, with two staves containing two
+measures.
+
+@sourceimage{naive-notation,,,.png}
+
+Isn't writing software all about finding hierarchies and modeling the
+real world in terms of trees? In the view of a naive programmer, the
+above fragment of notation is easily abstracted to a nested set of
+boxes
+
+@sourceimage{naive-notation-uml,,,.png}
+
+It's easy to follow this model when writing software.  It's obvious
+how to store this data in memory, and writing on disk can be easily
+mirrored. In an XML-file you could write something like
+
+@verbatim
+
+  <score>
+    <staff>
+      <measure id="1">
+         <chord length="1/2">
+          <pitch name="c">
+         </chord>
+         <chord>
+        
+        ....
+      </measure>
+    </staff>
+  </score>
+
+@end verbatim
+
+In short, this model is obvious, simple and neat.  It's the format
+used by a lot software. Unfortunately, it's also wrong.  The
+hierarchical representation works for a lot of simpler music, but it
+falls apart for advanced use. Consider the following example:
+
+@sourceimage{nonnaive-notation,,,.png}
+
+In this example, several assumptions of the previous model are
+violated: staves start and stop at will, voices jump around between
+staves, and sometimes span two staves.
+
+Music notation is really different from music itself. Notation is an
+intricate symbolic diagramming language for visualizing an often much
+simpler musical concept. Hence, software should reflect that separation.
+
+@divClass{float-right}
+Next: @ref{divide-and-conquer,Divide and conqueror},
+a blue print for automated notation
+@divEnd
diff --git a/Documentation/automated-engraving/schubert.itexi b/Documentation/automated-engraving/schubert.itexi
new file mode 100644 (file)
index 0000000..71f9315
--- /dev/null
@@ -0,0 +1,40 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@node schubert
+@unnumberedsec S@"angers Morgenlied, by Franz Schubert
+
+The benchmarking project for the LilyPond 2.1.x series, was the
+Ed. Peters version of a Schubert song.
+
+The result of 2.1.5 was nice, but certainly not perfect,
+
+@sourceimage{bench-morgenlied,,,.png}
+
+Here is the original,
+
+@sourceimage{morgenlied-crop-2,,,png}
+
+and the result of LilyPond 2.1.35.
+
+@sourceimage{morgenlied-ly-crop2,,,.png}
+
+This is a page from a song-book, which is printed in a smaller format.
+Normal print uses 20 pt staff height, this uses 17 pt. In smaller
+print, staff lines should be relatively thicker. To match the thicker
+lines, the music symbols should also be relatively heavier. Both have
+been implemented in LilyPond 2.1.  The difference is hard to see here,
+due to the limited resolution of computer screens. For a more detailed
+view, see the LilyPond PDF, available
+
+@uref{http://lilypond.org/documentation/v2.2/input/mutopia/F.Schubert/out-www/morgenlied.pdf,here}.
+
+@divClass{float-right}
+@ref{benchmarking,Back to the essay}
+@divEnd
diff --git a/Documentation/automated-engraving/scoring-esthetics.itexi b/Documentation/automated-engraving/scoring-esthetics.itexi
new file mode 100644 (file)
index 0000000..321cee1
--- /dev/null
@@ -0,0 +1,99 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@node scoring-esthetics
+@unnumberedsec Beautiful numbers 
+       
+How do we actually make formatting decisions?  In other words, which
+of the three configurations should we choose for the following slur?
+
+@sourceimage{slur-esthetics,,,.png}
+
+There are a few books on the art of music engraving
+available. Unfortunately, they contain rules of simple thumbs and some
+examples.  Such rules can be instructive, but they are a far cry from
+an algorithm that we could readily implement in a computer.  Following
+the instructions from literature leads to algorithms with lots of
+handcoded exceptions. Doing all this case analysis is a lot of work,
+and often not all cases are covered completely.
+
+@divClass{float-center}
+@sourceimage{ross-beam-scan,,,.png}
+@divEnd
+
+@divClass{float-center}
+@emph{Formatting rules defined by example. Image from Ted Ross' The Art of
+Music Engraving}
+@divEnd
+
+We have developed a much easier and robust method of determining the
+best formatting solution: score based formatting. The principle is the
+same as a beauty contest: for each possible configuration, we compute an
+ugliness score. Then we choose the least ugly configuration.
+
+@sourceimage{slur-esthetics-annotate-1,,,.png}
+
+For example, in the above configuration, the slur nicely connects the
+starting and ending note of the figure, a desirable trait. However, it
+also grazes one note head closely, while staying away from the others.
+Therefore, for this configuration, we deduct a `variance' score of
+15.39.
+
+@sourceimage{slur-esthetics-annotate-2,,,.png}
+
+In this configuration, the slur keeps a uniform distance from the
+heads, but we have to deduct some points because the slur doesn't
+start and end on the note heads.  For the left edge, we deduct 1.71,
+and for the right edge (which is further from the head) we deduct 9.37
+points.
+
+Furthermore, the slur goes up, while the melody goes down. This incurs
+a penalty of 2.00 points
+
+@sourceimage{slur-esthetics-annotate-3,,,.png}
+
+Finally, in this configuration, only the ending the slur is far away
+from the ending note head, at a score of 10.04 ugliness points.
+
+Adding up all scores, we notice that the third option is the least
+ugly, or most beautiful version.   Hence we select that one.
+
+This technique is a general technique, and it is used in a lot of
+situations, for example
+
+@itemize
+@item
+ determining beam slopes
+
+@sourceimage{beam-scoring-example,,,.png}
+
+@item
+ formatting tied chords
+
+@sourceimage{ties-scoring-example,,,.png}
+@item
+ formatting dotted chords
+
+
+@item
+ line breaking
+
+@item
+ page breaking  
+
+@end itemize
+
+This technique evaluates a lot of possibilities, which takes some time
+to compute. However, that is a worthwhile expense, because the end
+result is much better, and because it makes our lives easy.
+
+@divClass{float-right}
+Next: @ref{benchmarking,Man is the measure of things}: is a
+flexible architecture enough?
+@divEnd
diff --git a/Documentation/automated-engraving/software.itexi b/Documentation/automated-engraving/software.itexi
new file mode 100644 (file)
index 0000000..8dcd604
--- /dev/null
@@ -0,0 +1,109 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+
+@node software 
+@unnumberedsec What is wrong with music notation software
+
+Computers have made music printing accessible to the masses, but they
+tend to deliver mediocre typography.  Apparently, programmers have
+been doing a shoddy job on notation programs.  To illustrate that, we
+had an amateur user set a piece of music in one of the most popular
+@quotedblleft{}professional@quotedblright{} notation programs sold today, Finale
+2003. It was made with all of the default settings. The music is from
+the Sarabande of the 2nd Cello Suite by J. S. Bach.
+
+@emph{
+(Finale is a registered trademark of MakeMusic! Inc.)
+}
+
+@divClass{float-center}
+@sourceimage{finale-sarabande-full,,,.png}
+@divEnd
+
+This example far surpasses the previous one when it comes to
+formatting errors: there are serious errors in literally
+@emph{every} measure. The errors come in all sizes: a big one is the
+oddly s p a c e d @  o u t last line. A smaller one is the flat in
+measure 13, which is covered by the note preceding it. Here is a
+magnification of that measure:
+
+@divClass{float-center}
+@sourceimage{finale-flat-detail,,,.png}
+@divEnd
+
+The errors go down to the teensy details: below is a blowup of the
+beam in that measure. Of course, in proper typography the beam should
+not stick out to the right of the stem, and the ribbles provide a
+telling glimpse into Coda Music Technology programmers' aptness (or
+lack thereof) with the underlying PostScript technology.
+
+@divClass{float-center}
+@sourceimage{finale-beam-detail,,,.png}
+@divEnd
+
+Now, one could refute that Finale has a graphical interface, and it
+lets you easily move about elements to correct errors, or use plug-ins
+to do so.  This is certainly true: in fact, good professional
+engravers that use Finale typically spend the majority of their time
+correcting all the errors that Finale routinely makes.  But do you
+want to spend your time on correcting all glaring errors?  For the
+spaced out line, it is doable, but imagine that you have to correct
+each and every beam that sticks out of the stems....  by hand?
+
+There is a less obvious reason why correcting things by hand is a bad
+idea. Consider again measure 13 reproduced above.  The misplaced flat
+is pretty obvious, but did you notice that repeat bar? Its lines are
+too far apart. Did you notice that the eighth rest is too far down?
+Did it occur to you that the stem of the last eighth note is too long?
+
+@divClass{float-center}
+@sourceimage{finale-flat-correct,,,.png}
+@divEnd
+
+Unless you are an expert, typographical errors will irk you without
+being obvious. Many of them will go uncorrected and will still be in the
+final print.
+
+This example may seem contrived, but in fact, it's not.  All
+major producers of notation software claim to follow engraving
+standards, but we have not seen any that gets the basics right; all of
+them make systematic mistakes.  If you want to assess the output of your
+favorite program, then buy a decent hand-made score from a respectable
+publisher, and try to reproduce one page of it. Then compare them:
+
+@itemize
+@item
+
+How does the page layout compare? Typically, computer scores are more
+widely spaced so they take up more pages, meaning more annoying page
+turns.
+
+
+@item
+
+How does the spacing compare?  Is it as lively and flowing as the
+hand-made score? If in doubt, try measuring both with a ruler.
+
+
+@item
+
+Put both on a music stand, 1 meter away; that is not uncommon when
+performing. Can you read both pages? Almost all computer scores have
+an anemic look: they use lines which are too thin, and symbols which
+are too light. That makes them hard to read from a distance. If in
+doubt, measure the difference with a magnifying glass.
+
+
+@end itemize
+
+@divClass{float-right}
+Next: @ref{problem-statement,How not to design software},
+or: modeling music notation.
+@divEnd
diff --git a/Documentation/automated-engraving/typography-features.itexi b/Documentation/automated-engraving/typography-features.itexi
new file mode 100644 (file)
index 0000000..56923af
--- /dev/null
@@ -0,0 +1,129 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+
+@node typography-features 
+
+@unnumberedsec Font design
+
+A large factor that makes LilyPond output look traditional lies in the
+blackness of the page. By using heavy stafflines, and a font design to
+match that, the overall impression is much stronger. This is also very
+clear from the following blowups:
+
+@multitable @columnfractions .3 .3 .3
+@item
+
+@sourceimage{henle-flat-gray,,,.png}
+
+@tab
+
+@sourceimage{baer-flat-gray,,,.png}
+
+@tab
+
+@sourceimage{lily-flat-bw,,,.png}
+
+
+@item
+Henle (2000)
+
+@tab
+B@"arenreiter (1950)
+
+@tab
+LilyPond (2003)
+
+
+
+@end multitable
+
+Another typical aspect of hand-engraved scores is the general look of
+the symbols. They almost never have sharp corners. This is because
+sharp corners of the punching dies are fragile and quickly wear out
+when stamping in metal.  The general rounded shape of music symbols is
+also present in all glyphs of our "Feta" font.
+
+
+
+@c @unnumberedsec Spacing
+@heading Spacing
+
+One of the problems that the Bach piece above inspired us to attack
+is the spacing engine. One of its features is optical spacing.
+It is demonstrated in the fragment below.
+
+@divClass{float-center}
+@sourceimage{spacing-with-corr,,,.png}
+@divEnd
+
+@divClass{float-center}
+@sourceimage{spacing-no-corr,,,.png}
+@divEnd
+
+This fragment only uses quarter notes: notes that are played in a
+constant rhythm. The spacing should reflect that. Unfortunately, the
+eye deceives us a little: not only does it notice the distance between
+note heads, it also takes into account the distance between
+consecutive stems. As a result, the notes of an up-stem/down-stem
+combination should be put farther apart, and the notes of a down-up
+combination should be put closer together, all depending on the
+combined vertical positions of the notes. The top fragment is printed
+with this correction, the bottom one without.  In the last case, the
+down-stem/up-stems combinations form clumps of notes.
+
+
+@c @unnumberedsec Ledger lines
+@heading Ledger lines
+
+Ledger lines are typographically difficult. They can easily blot
+together with other signs, such as ledger lines or
+accidentals. Other software prevents these collisions by spacing the
+lines wider (thus taking up more space), or shortening ledger lines
+(which hampers readability.)  
+
+@multitable @columnfractions .3 .3 .3
+@item
+
+@sourceimage{henle-ledger,,,.png}
+
+@tab
+
+@sourceimage{baer-ledger,,,.png}
+
+
+
+@tab
+
+@sourceimage{lily-ledger,,,.png}
+
+
+@item
+Henle (2000)
+
+@tab
+B@"arenreiter (1950)
+
+@tab
+LilyPond (2004)
+
+
+
+@end multitable
+
+Traditional engravers would adjust the size of a ledger line,
+depending on what symbols were in the neighborhood. LilyPond does the
+same. Ledgers are shortened so they never collide with neighboring
+lines, and they are shortened when there is an accidental.
+
+@divClass{float-right}
+Next: @ref{input-format,Use the Source Luke}, or: what
+goes into LilyPond.
+@divEnd
diff --git a/Documentation/bibliography/GNUmakefile b/Documentation/bibliography/GNUmakefile
deleted file mode 100644 (file)
index 06055b5..0000000
+++ /dev/null
@@ -1,34 +0,0 @@
-# Documentation/bibliography/Makefile
-
-depth=../..
-
-OUT_BIB_FILES = $(addprefix $(outdir)/, $(BIB_FILES))
-EXTRA_DIST_FILES= $(BIB_FILES) $(call src-wildcard,*.bst) 
-BIB_FILES= $(call src-wildcard,*.bib)
-
-STEPMAKE_TEMPLATES=tex documentation
-LOCALSTEPMAKE_TEMPLATES=lilypond ly
-
-include $(depth)/make/stepmake.make
-
-dvi: $(DVI_FILES) $(OUT_BIB_FILES)
-
-ps: $(PS_FILES)
-
-default:
-
-GENHTMLS = engraving colorado computer-notation
-OUTGENHTMLS = $(addprefix $(outdir)/, $(GENHTMLS:%=%.html))
-
-ifeq ($(out),www)
-local-WWW-2: $(addprefix $(outdir)/, $(BIB_FILES:.bib=.html) index.html)
-endif
-
-$(outdir)/%.bib: %.bib
-       ln -f $< $@
-
-$(outdir)/%.html: %.bib
-       BSTINPUTS=$(src-dir) $(buildscript-dir)/bib2html -o $@ $<
-
-local-clean:
-       rm -f fonts.aux fonts.log feta*.tfm feta*.*pk
diff --git a/Documentation/bibliography/colorado.bib b/Documentation/bibliography/colorado.bib
deleted file mode 100644 (file)
index f72fa18..0000000
+++ /dev/null
@@ -1,524 +0,0 @@
-%
-% TITLE=University of Colorado Engraving music bibliography
-% AUTHOR=Alyssa Lamb (edited & converted to bibtex by HWN)
-%
-
-@Book {jacob47:_music,
-       author ={Jacob, Archibald},
-       year=1947,
-       title = {Musical handwriting : or, How to put music on paper : A handbook for all musicians, professional and amateur},
-       address ={London},
-       publisher ={Oxford University Press}, 
-       note = {subject: Musical notation},
-}
-
-@Book{brandt:_stand_chord_symbol_notat,
-       author ={Carl Brandt and Clinton Roemer},
-       title = {Standardized Chord Symbol Notation},
-       address={Sherman Oaks, CA},
-       publisher={Roerick Music Co.},
-       note ={subject: musical notation},
-}
-
-@Book{johnson46:_how,
-       author = {Johnson, Harold M},
-       year = 1946,
-       title = {How to write music manuscript an exercise-method handbook for the  music student, copyist, arranger, composer, teacher},
-       publisher={Carl Fischer, Inc.},
-       address= {New York},
-       note = {subject: Musical notation --Handbooks, manuals},
-}
-
-@Book{sadie90:_music_print_publis,
-       title = {Music Printing & Publishing},
-       author ={Donald W. Krummel \& Stanley Sadie},
-       year = 1990,
-       publisher= {Macmillan Press},
-       note ={subject: musical notation},
-}
-
-@Book{foss:_music_print,
-       author={Foss, Hubert},
-       title = {Music Printing},
-       series = {Practical Printing and Binding},
-       address={London},
-       publisher={Oldhams Press Ltd., Long Acre},
-       note ={subject: musical notation},
-}
-
-@Book{steele03:_earlies_englis_music_print,
-       author = {Steele, Robert},
-       year = 1903,
-       title = {The Earliest English Music Printing},
-       address={London},
-       note= {subject: history of music printing and engraving},
-}
-
-@Book{austin:_story_music_print,
-       author={Austin, Ernest},
-       title = {The Story of Music Printing},
-       address={London},
-       publisher={Lowe and Brydone Printers, Ltd.},
-       note= {subject: history of music printing and engraving},
-
-}
-
-
-
-@Book{?:_pictor_histor_music_print,
-       author={?},
-       title = {Pictoral History of Music Printing},
-       address={Elhardt, Indiana},
-       publisher={H. and A. Selmer, Inc.},
-       note= {subject: history of music printing and engraving},
-
-}
-
-@Book{wintermitz55:_music_autog_montev_hindem,
-       author = {Wintermitz, Emmanuel},
-       year = 1955,
-       title = {Musical Autographs from Monteverdi to Hindemith},
-       address={Princeton},
-       publisher={Princeton University Press},
-       note= {subject: history of music printing and engraving},
-
-}
-
-
-@Book{novello47:_some_accoun_method_music_print,
-
-       author = {Novello, A},
-       year = 1847,
-       title = {Some Account of the Methods of Musick Printing, with Specimens of the Various Sizes of Moveable Types and of Other Matters},
-       address={London},
-       note={ subject: history of music printing and engraving},
-}
-
-@Book{chrsander18:_sketc_histor_music,
-       author={Chrsander, F.},
-       year={18??},
-       title={A Sketch of the HIstory of Music printing, from the 15th to the 16th century},
-       note={ subject: history of music printing and engraving},
-}
-
-@Article {squire1897,
-       author = {Squire, W},
-       year = 1897,
-       title = {Notes on Early Music Printing},
-       journal = {Bibliographica},
-       volume={iii},
-       number=99,
-       note={ subject: history of music printing and engraving},
-
-}
-
-@Article{meyer35:_print_music,
-       author = {Meyer, K. and O'Meara, J},
-       year = 1935,
-       title = {The Printing of Music, 1473-1934},
-       journal = {The Dolphin},
-       volume={ ii},
-       pages={ 171--207},
-       note={ subject: history of music printing and engraving},
-
-}
-%% 4th ver.,
-@Article{pattison39:_notes_early_music_print,
-       author = {Pattison, B},
-       year = 1939,
-       title = {Notes on Early Music Printing},
-       journal = {The Library},
-       note={subject: history of music printing and engraving},
-       volume={xix},
-       pages={389-421}, 
-}
-
-@Book{king64:_four_hundr_years_music_print,
-       author = {King, H},
-       year = 1964,
-       title = {Four Hundred Years of Music Printing},
-       address={London},
-       note={ subject: history of music printing and engraving},
-}
-
-
-%(Rev.1961).
-@Book{deutsch46:_music_number,
-       author={Deutsch, O.F.},
-       year =1946,
-       title = {Music Publishers' Numbers},
-       address={London},
-       note={ subject: history of music printing and engraving},
-}
-
-@Book{marco62:_earlies_music_print_contin_europ,
-       author = {Marco, G.A},
-       year = 1962,
-       title = {The Earliest Music Printers of Continental Europe: a Checklist of Facsimiles Illustrating Their Work},
-       address={Charlottesville, Virginia},
-       note={ subject: history of music printing and engraving},
-}
-
-@Article{kinkeldey32:_music_and_music_print_incun,
-       author = {Kinkeldey, O},
-       year = 1932,
-       title = {Music And Music Printing in Incunabula},
-       journal = {Papers of the Bibliographical Society of America},
-       volume={ xxvi},
-       pages={89-118},
-       note={ subject: history of music printing and engraving},
-}
-
-@Book{oldman34:_collec_music_first_edition,
-       author = {Oldman, C.B},
-       year = 1934,
-       title = {Collecting Musical First Editions},
-       address={London},
-       note={ subject: history of music printing and engraving},
-}
-
-@Book{carter34:_new_paths_book_collec,
-       author={Carter, J},
-       year=1934,
-       title = {New Paths in Book Collecting},
-       address={London},
-       note={ subject: history of music printing and engraving},
-}
-
-@Book{krummel58:_graph_analy_applic_early_americ_engrav_music,
-       author={Krummel, D.W.},
-       year=1958,
-       month=9,
-       title = {Graphic Analysis in Application to Early American Engraved Music},
-       journal = {Notes},
-       volume={xvi},
-       pages=213,
-       note={ subject: history of music printing and engraving},
-}
-
-@Book{krummel71:_oblon_format_early_music_books,
-       author = {Krummel, D.W},
-       year = 1971,
-       title = {Oblong Format in Early Music Books},
-       journal = {The Library},
-       volume={5th ser., xxvi},
-       pages=312,
-       note={ subject: history of music printing and engraving},
-}
-
-@Book{king73:_anniv_music_print,
-       author = {King, A.H},
-       year = 1973,
-       title = {The 50th Anniversary of Music Printing},
-}
-
-@Book{rastall82:_wester,
-       author={Rastall, Richard},
-       year=1982,
- title = {The notation of Western music : an introduction},
-       address={New York, N.Y.},
-       publisher={St. Martin's Press},
-       note = {Musical notation},
-
-
-}
-
-@Book{tappolet47:_la_notat_music,
-       author = {Tappolet, Willy},
-       year = 1947,
-       title = {La Notation Musicale},
-       address={Paris},
-       note={subject: general notation},
-       publisher={Neuch\^atel},
-}
-
-@Book{williams03:_story_notat,
-       author = {Williams, C.F. Abdy},
-       year = 1903,
-       title = {The Story of Notation},
-       address={New York},
-       publisher={Charles Scribner's Sons},
-       note={subject: general notation},
-}
-
-@Book{apel53,
-       author={Apel, Willi},
-       year=1953,
-       title = {The notation of polyphonic music, 900-1600},
-       address={Cambridge, Mass},
-       institution={Mediaeval Academy of America},
-       note = {Musical notation},
-}
-
-@Book{berger93:_mensur,
-       author={Berger, Anna Maria Busse},
-       year=1993,
-       title = {Mensuration and proportion signs : origins and evolution},
-       address={Oxford, England},
-       publisher={Clarendon Press},
-       scnd_address={New York},
-       scnd_publisher={Oxford University Press },
-       note={subject: early notation},
-}
-
-@Book{parrish57,
-       author={Parrish, Carl},
-       year=1957,
- title = {The notation of medieval music},
-       address={New York},
-       publisher={Norton},
-       note = {Musical notation},
-
-
-}
-
-@Book{parrish46:_notat_mediev_music,
-       author = {Parrish, Carl},
-       year = 1946,
-       title = {The Notation of Medieval Music},
-       address={New York},
-       publisher={Carl Fischer, Inc.},
-       note={subject: early notation},
-}
-
-@Book{patch49:_genes_music,
-       author = {Patch, Harry},
-       year = 1949,
-       title = {Genesis of a Music},
-       address={Madison},
-       publisher={University of Wisconsin Press},
-       note={subject: early notation},
-}
-
-@Book{cage69:_notat,
-       author={Cage, John},
-       year=1969,
-  title = {Notations},
-       address={New York},
-       publisher={Something Else Press},
-       note = {Music, Manuscripts, Facsimiles.
-
-       Facsimiles of holographs from the Foundation for Contemporary
-       Performance Arts, with text by 269 composers, but rearranged using
-       chance operations.,V)} },
-
-@Book{gaburo77:_notat,
-       author = {Gaburo, Virginia},
-       year = 1977,
-       title = {Notation},
-       address={publisher= {Lingua Press},
-       publisher={La Jolla, California}},
-       note = {A Lecture about notation, new ideas about},
-}
-
-@Book{risatti75:_new_music_vocab,
-       author = {Risatti, Howard},
-       year = 1975,
-       title = {New Music Vocabulary},
-       address={Urbana, Illinois},
-       publisher={University of Illinois Press},
-       note = {A Guide to Notational Signs for Contemporary Music},
-}
-
-
-
-@Book{cowell30:_new_music_resour,
-       author = {Cowell, Henry},
-       year = 1930,
-       title = {New Musical Resources},
-       address={New York},
-       publisher={Alfred A. Knopf, Inc.},
-       note={subject: 20th century notation},
-}
-
-@Article{cowell27:_our_inadeq_notat,
-       author = {Cowell, Henry},
-       year = 1927,
-       title = {Our Inadequate Notation},
-       journal = {Modern Music},
-       volume=4,
-       number=3,
-       note={subject: 20th century notation},
-
-}
-
-@Book{bowers92:_music_letter,
-       author = {Bowers, Roger},
-       year = 1992,
-       title = {Music & Letters},
-       volume=73,
-       number=3,
-       month={August},
-       pages={347(52)},
-       note={Some reflection upon notation and proportion in Monteverdi's mass and vespers},
-}
-
-@Book{brainard92:_curren_music,
-       author = {Brainard, Paul},
-       year = 1992,
-       title = {Current Musicology},
-       number=50,
-       month={July-Dec},
-       pages={21(26)},
-       note={Proportional notation in the music of Schutz and his contemporaries in the 17th Century},
-}
-
-@Book{monelle89:_compar_liter,
-       author = {Monelle, Raymond},
-       year = 1989,
-       title = {Comparative Literature},
-       volume=41, number=3, 
-       month={Summer},
-       pages={252(18)},
-
-       note={Music notation and the poetic foot},
-}
-
-@Book{pinegar93:_curren_music,
-       author = {Pinegar, Sandra},
-       year = 1993,
-       title = {Current Musicology},
-       number=53,
-       month={July},
-       pages={99(10)},
-       note={The seeds of notation and music paleography.},
-}
-
-@Book{smith90:_curren_music,
-       author = {Smith, Norman E},
-       year = 1990,
-       title = {Current Musicology},
-       number={45-47},
-       month={Jan-Dec},
-       pages={283(22)},
-       note={The notation of fractio modi.},
-}
-
-@Book{treitler92:_journ_music,
-       author = {Treitler, Leo},
-       year = 1992,
-       title = {The Journal of Musicology},
-       volume=10,
-       number=2,
-       month={Spring},
-       pages={131(61)},
-
-       note={ The unwritten and written transmission, of medieval chant
-       and the start-up of musical notation.
-
-       Notational practice developed in medieval music to address the written tradition for chant which interacted with the unwritten vocal tradition.},
-}
-
-@Book{west94:_music_letter,
-       author = {West, M.L},
-       year = 1994,
-       title = {Music & Letters},
-       volume=75,
-       number=2,
-       month={May},
-       pages={161(19)},
-       note={The Babylonian musical notation and the Hurrian melodic texts. 
-
-       A new way of deciphering the ancient Babylonian musical notation. 
-}
-}
-
-@Book{brown86:_music_quart,
-       author = {Brown, Earle},
-       year = 1986,
-       title = {Musical Quarterly},
-       volume=72,
-       month={Spring},
-       pages={180(22)},
-       note={The notation and performance of new music.},
-}
-
-@Book{eggleston94:_notes,
-       author = {Eggleston, Suzanne},
-       year = 1994,
-       title = {Notes},
-       volume=51,
-       number=2,
-       month={Dec},
-       pages={657(7)}, 
-       journal={New periodicals},
-       note={A list of new music periodicals covering the period
-       Jun.-Dec. 1994. Includes aims, formats and a description of the
-       contents of each listed periodical. Includes Music Notation News},
-
-}
-
-@Book{fuller89:_journ_music,
-       author = {Fuller, David},
-       year = 1989,
-       title = {The Journal of Musicology},
-       volume=7,
-       number=1,
-       month={Winter},
-       pages={21(8)},
-       note={
-       Notes and inegales unjoined: defending a definition. (written-out inequalities in music notation).        
-}},
-
-@Book{jones90:_persp_new_music,
-
-       author = {Jones, David Evan},
-       year = 1990,
-       title = {Perspectives of New Music},
-       note={Speech extrapolated. (includes notation)}
-}
-
-@Book{lependorf89,
-       author = {Lependorf, Jeffrey},
-       year = 1989,
-       journal={Perspectives of New Music},
-       volume=27,
-       title = {?},
- number=2,
-       month={Summer},
-       pages={232(20)},
-       note={Contemporary notation for the shakuhachi: a primer for composers. (Tradition and Renewal in the Music of Japan) },
-
-}
-
-@Book{rastall93:_music_letter,
-       author = {Rastall, Richard},
-       year = 1993,
-       title = {Music & Letters},
-       volume=74, number=4,
-       month={November},
-       pages={639(2)},
-
-       note={Equal Temperament Music Notation: The Ailler-Brennink
-       Chromatic Notation. Results and Conclusions of the Music Notation
-       Refor by the Chroma Foundation (book reviews).  },
-}
-
-@Article {Francois92,
-       author={Francois, Jean-Charles},
-       journal = {Perspectives of New Music},
-       volume={30},
-       number={1}, month={Winter},
-       pages={6(15)},
-       year={1992},
-
-       note={subject: Modern music has outgrown notation. While the
-            computer is used to write down music with accuracy never
-            before achieved, the range of modern sounds has surpassed
-            the relevance of the computer...},
-
-       title={Writing without representation, and unreadable notation.},
-}
-
-@Book{hamel89,
-       author = {Hamel, Keith A},
-       year = 1989,
-       journal = {Perspectives of New Music},
-       volume=27,
-       number=1,
-       month={Winter},
-       pages={70(14)},
-
-       title={A design for music editing and printing software based
-on notational syntax}, }
-
diff --git a/Documentation/bibliography/computer-notation.bib b/Documentation/bibliography/computer-notation.bib
deleted file mode 100644 (file)
index b5887cb..0000000
+++ /dev/null
@@ -1,771 +0,0 @@
-%
-% TITLE=The music notation with computer bibliography
-% AUTHOR=Han-Wen Nienhuys
-%
-
-@String{CitH = {Computing and the Humanities}}
-@String{CMJ = {Computer Music Journal}}
-
-
-
-@Book {smith73,
-  year =  {1973},
-  title = {Editing and Printing Music by Computer},
-  author = {Leland Smith},
-  totalentry = {Journal of Music Theory},
-  volume={17},
-  pages ={292-309},
-
-  note = {Gourlay\cite{gourlay86} writes: A discussion of Smith's
-music-printing system SCORE}
-
-}
-
-@Article {byrd74,
-  year =  {1974},
-  title = {A System for Music Printing by Computer},
-  author = {Donald Byrd},
-  journal = {Computers and the Humanities},
-  volume ={8},
-  pages ={161-72},
-}
-
-
-@Article{ericson75,
-  author =      {R. F. Ericson},
-  title =       {The DARMS Project: A status report},
-  journal =     {Computing in the humanities},
-  year =        1975,
-  volume =      9,
-  number =      6,
-  pages =       {291--298},
-  note = {Gourlay\cite{gourlay86} writes: A discussion of the design
-  and potential uses of the DARMS music-description language.}
-}
-
-% Gomberg
-@PhdThesis {gomber75,
-  year =  {1975},
-  title = {A Computer-Oriented System for Music Printing},
-  author = {David A. Gomberg},
-  school = {Washington University},
-}
-
-@Book {gomberg,
-  title = {A Computer-oriented System for Music Printing},
-  author = {David A.  Gomberg},
-  journal  = CitH,
-  volume={11},
-  month = {march},
-  year = {1977},
-  pages = {63-80},
-
-  note = {Gourlay \cite{gourlay86} writes: "A discussion of the
-  problems of representing the conventions of musical notation in
-  computer algorithms."}
-}
-
-
-@TechReport{Ornstein83,
-  author={Ornstein, Severo M. and John Turner Maxwell III},
-  title={Mockingbird: A Composer's Amanuensis},
-  institution={Xerox Palo Alto Research Center},
-  address={3333 Coyote Hill Road, Palo Alto, CA, 94304},
-  number={CSL-83-2},
-  month={January},
-  year={1983}
-}
-
-@Article{Ornstein84,
-  author={Ornstein, Severo M. and John Turner Maxwell III},
-  title={Mockingbird: A Composer's Amanuensis},
-  journal= {Byte},
-  volume= 9,
-  month = {January},
-  year= { 1984},
-
-  note={A discussion of an interactive and graphical computer system
-for music composition}
-
-}
-
-% byrd
-@PhdThesis {byrd85,
-  year =  {1985},
-  title = {Music Notation by Computer},
-  author = {Donald Byrd},
-  school = {Indiana University},
-
-  note = {Describes the SMUT (sic) system for automated music printout.}
-}
-
-@InProceedings{assayaag86,
-  author =      {G. Assayaag and D. Timis},
-  title =       {A Toolbox for music notation},
-  booktitle =   {Proceedings of the 1986 International Computer Music Conference},
-  year =       1986
-}
-
-@TechReport{roush88,
-  year = {1988},
-  title = {Music Formatting Guidelines},
-  author = {D. Roush},
-  number = {OSU-CISRC-3/88-TR10}, 
-  institution = {Department of Computer and Information Science, The Ohio State University},
-
-  note = {Rules on formatting music formulated for use in
-  computers. Mainly distilled from [Ross] HWN},
-
-}
-
-
-@Article{byrd94,
-  author =      {Donald Byrd},
-  title =       {Music Notation Software and Intelligence},
-  journal =     {Computer Music Journal},
-year = 1994,
-pages = {17--20},
-  volume =      18,
-  number =      1,
-
-  note = {Byrd (author of Nightinggale) shows four problematic
-fragments of notation, and rants about notation programs that try to
-exhibit intelligent behaviour. HWN}
-}
-
-
-@Article{field-richards93,
-  author =      {H.S. Field-Richards},
-  title =       {Cadenza: A Music Description Language},
-  journal =     CMJ,
-  year =        1993,
-  volume =      17,
-  number =      4,
-
-  note = {A description through examples of a music entry language.
-Apparently it has no formal semantics.  There is also no
-implementation of notation convertor. HWN}
-
-}
-
-@Article{bielawa93,
-  author =      {Herbert Bielawa},
-  title =       {Review of Sibelius 7},
-  journal =     CMJ,
-  year =        {1993?},
-
-  note = {A raving review/tutorial of Sibelius 7 for Acorn.  (And did
-they seriously program a RISC chip in ... assembler ?!) HWN}
-
-
-}
-
-@Article{sloan93,
-  author =      {Donald Sloan},
-  title =       {Aspects of Music Representation in HyTime/SMDL},
-  journal =     CMJ,
-  year =        1993,
-  volume =      17,
-  number =      4,
-
-note = {An introduction into HyTime and its score description variant
-SMDL.  With a short  example that is quite  lengthy in SMDL}
-
-}
-
-@Article{wiggins93,
-  author =      {Geraint Wiggins and Eduardo Miranda and Alaaaan Smaill and Mitch Harris},
-  title =       {A Framework for the evaluation of music representation systems},
-  journal =     CMJ,
-  year =        1993,
-  volume =      17,
-  number =      3,
-
-  note = {A categorisation of music representation systems (languages,
-OO systems etc) splitted into high level and low level expressiveness.
-The discussion of Charm and parallel processing for music
-representation is rather vague. HWN}
-
-}
-
-
-
-@Article{dannenberg93,
-  author =      {Roger B. Dannenberg},
-  title =       {Music Representation: Issues, Techniques, and Systems},
-  journal =     CMJ,
-  year =        1993,
-  volume =      17,
-  number =      3,
-  url = {http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.44.6067},
-
-  note = {This article  points to some problems and solutions with music
-representation. HWN},
-
-}
-
-@Article{rothstein93,
-  author =      {Joseph Rothstein},
-  title =       {Review of Passport Designs' Encore Music Notation Software},
-  journal =     CMJ,
-  year =        {?},
-
-
-}
-
-
-
-@Article{belkin94,
-  author =      {Alan Belkin},
-  title =       {Macintosh Notation Software: Present and Future},
-  journal =     CMJ,
-  year =        1994,
-  volume =      18,
-  number =      1,
-
-  note = {Some music notation systems are analysed for ease of use,
-  MIDI handling.  The article ends with a plea for a standard notation
-  format. HWN},
-
-}
-
-@InProceedings{montel97,
-  author =      {Dominique Montel},
-  title =       {La gravure de la musique, lisibilit\'e esth\'etique, respect de l'oevre},
-  booktitle =   {Musique \& Notations},
-  year =        1997,
-  address={Lyon},
-  editors ={Genevois \& Orlarey}
-}
-
-
-
-
-@Book {CASR,
-  note = {Annual editions since 1985, many containing surveys of music typesetting technology. SP},
-  title = {Directory of Computer Assisted Research in Musicology},
-  author = {Walter B Hewlett and Eleanor Selfridge-Field},
-  totalentry = {Menlo Park, CA: Center for Computer Assisted Research in the Humanities},
-}
-
-
-@Book{selfridge-field97:_beyon_midi,
-  title =       {Beyond MIDI: the handbook of musical codes},
-  editor =      {Eleanor Selfridge-Field},
-  publisher =   {MIT Press},
-  year =        1997,
-
-  note = {A description of various music interchange formats.}
-}
-
-
-@InProceedings{hoos98:_guido_music_notat_format,
-title={The {GUIDO} Music Notation Format---A Novel Approach
-for Adequately Representing Score-level Music},
-author = {H. H. Hoos and K. A. Hamel and K. Renz and J. Kilian},
-booktitle = {Proceedings of International Computer Music Conference},
-year = 1998,
-pages = {451--454},
-}
-
-@Article {blostein91,
-
-  note = {This paper provides a overview of the algorithm used in LIME
-  for spacing individual lines. HWN},
-
-  year =  {1991},
-  title = {Justification of Printed Music},
-  author = {Dorothea Blostein and Lippold Haken},
-  journal   = {Communications of the ACM},
-  volume= {J34},
-  number= {3},
-  month= {March},
-  pages = {88-99},
-}
-
-
-@Article {haken93,
-  year =  {1993},
-  title = {The Tilia Music Representation: Extensibility, Abstraction, and Notation Contexts for the Lime Music Editor},
-  author = {Lippold Haken and Dorothea Blostein},
-  journal = {Computer Music Journal},
-  volume= {17},
-  number={3},
-  pages = {43--58},
-}
-@Article{blostein94,
-  author =      {Dorothea Blostein and Lippold Haken},
-  title =       {The Lime Music Editor: A Diagram Editor Involving Complex
-  Translations},
-  journal =     {Software Practice and Experience},
-  year =        {1994},
-  volume =      {24},
-  number =      {3},
-  month =       {march},
-  pages =       {289--306},
-
-  note = {A description of various conversions, decisions and issues
-relating to this interactive editor HWN},
-
-}
-
-
-
-@InProceedings{haken95,
-  year =  {1995},
-  title = {A New Algorithm for Horizontal Spacing of Printed Music},
-  author = {Lippold Haken and Dorothea Blostein},
-  booktitle = {International Computer Music Conference},
-  address={Banff},
-  month={Sept},
-  pages = {118-119},
-
-  note = {This describes an algorithm which uses springs between
-adjacent columns. }, }
-
-
-@InProceedings{bouzaiene98:_une,
-  author =      {Nabil Bouzaiene and Lo\"ic Le Gall and Emmanuel Saint-James},
-  title =       {Une biblioth\`eque pour la notation  musicale baroque},
-  booktitle =   {EP '98},
-  year =        1998,
-  series =      {LNCS},
-
-  note = {Describes ATYS, an extension to Berlioz, that can mimick
-  handwritten baroque style beams}
-}
-
-
-
-
-@InProceedings{balaban88,
-  author =      {M. Balaban},
-  title =       {A Music Workstation Based on Multiple Hierarchical Views of Music},
-  booktitle =   {Proceedings of the 1988 International Computer Music Conference},
-  year =        1988,
-  address =     {San Francisco},
-  organization = {International Computer Music Association}
-}
-
-%
-% MusiCopy
-%
-@TechReport {gourlay87-spacing,
-annote = {Algorithm for generating spacing in one line of (polyphonic) music, tailored for use with MusiCopy. LilyPond uses a variant of it.},
-  year =  {1987},
-  title = {Spacing a Line of Music,},
-  author = {John S. Gourlay},
-  number = {OSU-CISRC-10/87-TR35},
-  institution ={Department of Computer and Information Science, The Ohio State University},
-}
-
-
-@TechReport {parish87,
-  annote = {A brief overview of {MusiCopy}},
-  year =  {1987},
-  title = {{MusiCopy}: An automated Music Formatting System},
-  author = {Allen Parish and Wael A. Hegazy and John S. Gourlay and Dean K. Roush and F. Javier Sola},
-  totalentry = {OSU-CISRC-10/87-TR29},
-  institution ={Department of Computer and Information Science, The Ohio State University},
-}
-
-@TechReport {gourlay87-formatting,
-  note = {This paper discusses the development of algorithms for the
-formatting of musical scores (from abstract). It also appeared at
-PROTEXT III, Ireland 1986},
-
-  year =  {1987},
-  title = {Computer Formatting of Music},
-  author = {John S. Gourlay and A. Parrish
-and D. Roush and F. Sola and Y. Tien},
-  number = {OSU-CISRC-2/87-TR3},
-  institution ={Department of Computer and Information Science,
-The Ohio State University},
-}
-
-
-@TechReport {hegazy87,
-  year =  {1987},
-  title = {On the Implementation of the {MusiCopy} Language Processor,},
-
-  author = {Wael A. Hegazy},
-  number = {OSU-CISRC-10/87-TR34},
-  institution={Department of Computer and Information Science, The Ohio State University},
-
-  note = {Describes the "parser" which converts {MusiCopy} MDL to
-  MusiCopy Simultaneities and columns.
-
-MDL is short for Music Description Language\cite{gourlay86}. It
-accepts music descriptions that are organised into measures filled
-with voices, which are filled with notes. The measures can be arranged
-simultaneously or sequentially.  To address the 2-dimensionality,
-almost all constructs in MDL must be labeled.
-
-MDL uses begin/end markers for attribute values and spanners.
-Rightfully the author concludes that MusiCopy must administrate a
-"state" variable containing both properties and current spanning symbols.
-
-MusiCopy attaches graphic information to the objects constructed in
-the input: the elements of the input are partially complete graphic
-objects.
-
-},
-
-}
-
-
-@TechReport {hegazy87-breaking-tr,
-
-annote = {This generalizes \TeX's breaking algorithm to music. It also
-appeared in Document Manipulation and Typography, J.C. van Vliet (ed)
-1988},
-
-  year =  {1987},
-
-  title = {Optimal line breaking in music},
-  author = {Wael A. Hegazy and John S. Gourlay},
-  number = {OSU-CISRC-8/87-TR33},
-  institution={Department of Computer and Information Science, The Ohio State University,},
-}
-
-@InProceedings{hegazy88:_optim,
-  author = {Wael A. Hegazy and John S. Gourlay},
-booktitle = {Proceedings of the International Conference on
-Electronic Publishing, Document Manipulation and Typography. Nice (France)},
-month = {April},
-year =1988,
-editor={J. C. van Vliet},
-publisher = {Cambridge University Press},
-ISBN={0-521-36294-6},
-  title = {Optimal line breaking in music},
-}
-
-
-@TechReport {roush87,
-  note = {User manual of MusiCopy. },
-
-  year =  {1987},
-  title = {Using {MusiCopy}},
-  author = {Dean K. Roush},
-  number = {OSU-CISRC-18/87-TR31},
-  institution={Department of Computer and Information Science, The Ohio State University},
-}
-
-
-@TechReport {parrish87-simultaneities,
-
-note = {This note discusses
-  placement of balls, stems, dots which occur at the same moment
-  ("Simultaneity")},
-
-  year =  {1987},
-  title = {Computer Formatting of Musical Simultaneities,},
-  author = {A. Parrish and John S. Gourlay},
-  institution={Department of Computer and Information Science, The Ohio State University},
-  number = {OSU-CISRC-10/87-TR28},
-}
-
-
-@TechReport {sola87,
-  note = {Overview of a procedure for generating slurs},
-  year =  {1987},
-  title = {Computer Design of Musical Slurs, Ties and Phrase Marks,},
-  author = {F. Sola},
-  institution={Department of Computer and Information Science, The Ohio State University},
-  number = {OSU-CISRC-10/87-TR32},
-}
-
-
-@Article {gourlay86,
-  note = {This paper describes the {MusiCopy} musicsetting system and an input language to go with it.},
-
-  year =  {1986},
-  title = {A language for music printing},
-  author = {John. S. Gourlay},
-  journal = {Communications of the ACM},
-   volume= {29},
-  number ={5},
-  pages = {388--401},
-}
-
-
-@TechReport {sola87-beams,
-
-institution={Department of Computer and Information Science, The Ohio
-State University},
-
-  note = {Calculating beam slopes HWN},
-  year =  {1987},
-  title = {Design of Musical Beams,},
-  author = {F. Sola and D. Roush},
-  number = {OSU-CISRC-10/87-TR30},
-}
-
-
-@PhdThesis {page88,
-  note = {Don't ask Stephen for a copy. Write to the Bodleian Library, Oxford, or to the British Library, instead. SP},
-  year =  {1988},
-  title = {Computer Tools for Music Information Retrieval},
-  author = {Stephen Dowland Page},
-  school ={Dissertation University of Oxford},
-}
-
-
-%
-% three part study by John Gr/over
-@TechReport{grover89-symbols,
-  author =      {John Gr\/over},
-  title =       {A computer-oriented description of Music Notation.  Part I. The Symbol Inventory},
-  institution =  {Department of informatics, University of Oslo},
-  year =        1989,
-  number =      133,
-
-note = {The goal of this series of reports is a full description of
-music formatting.  As these largely depend on parameters of fonts, it
-starts with a verbose description of music symbols.
-
- The subject is treated backwards: from general rules of typesetting
-the author tries to extract dimensions for characters, whereas the
-rules of typesetting (in a particular font) follow from the dimensions
-of the symbols.  His symbols do not match (the stringent) constraints
-formulated by eg. \cite{wanske}} }
-
-@TechReport{grover89-twovoices,
-  author =      {John Gr\/over},
-  title =       {A computer-oriented description of Music Notation. Part II: Two Voice Sharing a Staff, Leger Line Rules, Dot Positioning},
-
-  institution =  {Department of informatics, University of Oslo},
-  year =        1989,
-  number =      134,
-
-  note = {A lot rules for what is in the title are formulated.  The
-descriptions are long and verbose.  The verbosity shows that
-formulating specific rules is not the proper way to approach the
-problem.  Instead, the formulated rules should follow from more
-general rules, similar to\cite{parrish87-simultaneities}},
-}
-
-@TechReport{grover89-accidentals,
-  author =      {John Gr\/over},
-  title =       {A computer-oriented description of Music Notation. Part III: Accidental Positioning},
-  institution =  {Department of informatics, University of Oslo},
-  year =        1989,
-  number =      135,
-
-note = {Placement of accidentals crystallised in an enormous set of
-rules.  Same remarks as for \cite{grover89-twovoices} applies} }
-
-
-@PhdThesis{mueller90:_inter_bearb_musik,
-  author =      {Giovanni M\"uller},
-  title =       {Interaktive Bearbeitung konventioneller Musiknotation},
-  school =      {Eidgen\"ossischen Technischen Hochschule Z\"urich},
-  year =        1990,
-
-note = {This is about engraver-quality typesetting with computers.  It
-accepts the axiom that notation is too difficult to generate
-automatically.  The result is that a notation program should be a
-WYSIWYG editor that allows one to tweak everything.
-}
-
-}
-
-
-
-
-
-@MastersThesis{roelofs91,
-
-note = {This dutch thesis describes a monophonic typesetting system,
-  and focuses on the breaking algorithm, which is taken from Hegazy &
-  Gourlay },
-
-  year =  {1991},
-  title = {Een Geautomatiseerd Systeem voor het Afdrukken van Muziek},
-  author = {Ren\'e Roelofs},
-  school={Erasmus Universiteit Rotterdam},
-  number={45327},
-  translation = {``An automated system for printing music'' Master's Thesis Managerial Computer Science.},
-}
-
-
-@Article {filgueiras93,
-  year =  {1993},
-  title = {Representation and manipulation of music documents in SceX},
-  author = {Miguel Filgueiras and Jos\'e Paulo Leal},
-  journal= {Electronic Publishing},
-  volume={6},
-  number={4}, pages = {507--518},
-  url={http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.17.1480},
-}
-
-
-@Article {foxley87,
-
-note = {A paper on a simple TROFF preprocessor to typeset music. },
-
-  year =  {1987},
-  title = {Music --- A language for typesetting music scores},
-  author = {Eric Foxley},
-  journal = {Software --- Practice and Experience},
-  volume = {17},
-  number = {8},
-  pages = {485-502},
-}
-
-@Article {Langston90,
-
-  note = {This paper deals with some command-line
-  tools for music editing and playback. },
-
-  year =  {1990},
-  title = {Unix music tools at Bellcore},
-  author = {Peter S. Langston},
-  journal={Software --- Practice and Experience},
-  volume={20},
-  number={S1},
-  pages={47--61},
-}
-
-
-@Book {filgueiras96,
-  year = {1996},
-  title = {Implementing a Symbolic Music Processing System},
-  author = {Miguel Filgueiras},
-  totalentry = {LIACC, Universidade do Porto, 1996; submitted},
-}
-
-@Book {filgueiras?,
-  title = {Some Music Typesetting Algorithms},
-  author = {Miguel Filgueiras},
-  totalentry = {Miguel Filgueiras. ``Some Music Typesetting Algorithms''. LIACC, Universidade do Porto, forthcoming},
-}
-
-
-@Article {colorado-web,
-  author ={Alyssa Lamb},
-
-  note = {Webpages about engraving (designed with finale
-users in mind) (sic) HWN},
-
-  institution = {The University of Colorado},
-  title ={The University of Colorado Music Engraving page.},
-  HTML={http://www.cc.colorado.edu/Dept/MU/Musicpress/},
-  year={1996}
-}
-
-@Article {tablature-web,
-  note = {FAQ (with answers) about TAB, the ASCII variant of Tablature. HWN},
-  title = {how to read and write tab: a guide to tab notation},
-  author = {Howard Wright},
-  email={Howard.Wright@ed.ac.uk},
-  url={http://www.guitartabs.cc/tabfaq.shtml},
-}
-
-@Article {niff-web,
-
-  note = {Specs for NIFF, a reasonably comprehensive but binary
-  format for notation HWN},
-
-  year =  {1995},
-  title = {NIFF6a Notation Interchange File Format},
-  author = {Cindy Grande},
-  publisher={Grande Software Inc.},
-  HTML= {http://www.jtauber.com/music/encoding/niff/},
-  ftp = {ftp://blackbox.cartah.washington.edu}
-}
-
-@Article {smdl-web,
-  author = {International Organization for Standardization (ISO)},
-  title = {Information Technology - Document Description and Processing Languages - Standard Music Description Language (SMDL)},
-  pdf= {ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf},
-  number={ISO/IEC DIS 10743},
-  year = {1992},
-  annote = {SGML instance for describing music.  Very comprehensive in music
-definition, but no support for notation / performance whatsoever (They
-basically say: "You can embed a NIFF or MIDI file")}
-}
-
-
-@Article {rader96,
-
-  note = {Describes a system called MusicEase, and explains that it
-  uses "constraints" (which go unexplained) to automatically position
-  various elements. },
-  html={http://mesastate.edu/~grader/ieeeme.pdf}, 
-  year =  {1996},
-  title = {Creating Printed Music Automatically},
-  author = {Gary M. Rader},
-  journal = {Computer},
-  volume={29},
-  number={6},
-  month={June},
-  pages = {61--69},
-}
-
-
-@MastersThesis{gall97:_creat,
-  author =      {Lo\"ic Le Gall},
-  title =       {Cr\'eation d'une police adapt\'ee \`a la notation musicale baroque},
-  school = {\'Ecole Estienne},
-  year = 1997,
-}
-
-@TechReport{droettboom00:_study_notat_descr_languag,
-  author =      {Michael Droettboom},
-  title =       {Study of music Notation Description Languages},
-  year =        2000,
-  url= {http://www.music.mcgill.ca/~ich/research/omr/levy/format.pdf},
-
-  note ={GUIDO and lilypond compared. LilyPond wins on practical
-issues as usability and availability of tools, GUIDO wins on
-implementation simplicity.}  }
-
-@PhdThesis{gieseking01:_code_gener_noten,
-  author =      {Martin Gieseking},
-  title =       {Code-basierte Generierung interaktiver Notengraphik
-
-},
-  school =      {Universit\"at Osnabr\"uck},
-  year =        2001,
-  isbn = {ISBN 3-923486-30-8}
-}
-
-@Book{hewlett01:_virtual_score,
-  editor =      {Walter B. Hewlett and Eleanor Selfridge-Field},
-  title =       {The Virtual Score; representation, retrieval and restoration},
-  publisher =   {MIT Press},
-series = {Computing in Musicology},
-  year =        2001
-}
-
-
-
-@PhdThesis{renz02:_algor_guido,
-  author =      {Kai Renz},
-  title =       {Algorithms and data structures for a music notation system based on GUIDO music notation},
-  school =      {Universit\"at Darmstadt},
-  year =        2002
-}
-
-@InBook{powell02:_music,
-  author =      {Steven Powell},
-  title =       {Music engraving today},
-  publisher =   {Brichtmark},
-  year =        2002,
-
-  note =        {A "How Steven uses Finale" manual.}
-}
-
-
-@InProceedings{nienhuys03:_lilyp,
-  author =      {Han-Wen Nienhuys and Jan Nieuwenhuizen},
-  title =       {LilyPond, a system for automated music engraving},
-  booktitle =   {XIV Colloquium on Musical Informatics},
-  year =        2003,
-  pages = {167--172},
-  address =     {Firenze},
-  month =       {May}
-}
-
diff --git a/Documentation/bibliography/engraving.bib b/Documentation/bibliography/engraving.bib
deleted file mode 100644 (file)
index 6d8e0e9..0000000
+++ /dev/null
@@ -1,357 +0,0 @@
-%
-% TITLE=The engraving bibliography
-% AUTHOR=Han-Wen Nienhuys
-%
-
-
-@Book{banter,
-  author =     {Harald Banter},
-  title =      {Akkord Lexikon},
-  publisher =  {Schott's S\"ohne},
-  year =       {1987},
-  isbn =       {ISBN 3-7957-2095-8},
-  note =       {Comprehensive overview of commonly used
-  chords.  Suggests (and uses) a unification for all different kinds
-  of chord names.},
-  address =    {Mainz, Germany},
-}
-
-
-
-@Book{rastall,
-  author =      {Richard Rastall},
-  ALTeditor =   {},
-  title =       {The Notation of Western Music: an
-  Introduction},
-  publisher =   {J. M. Dent \& Sons London},
-  year =        {1983},
-  note = {Interesting account of the evolution and origin of common notation starting from neumes, and ending with modern innovations HWN},
-}
-
-
-@Book{ignatzek95:_jazzm_klavier,
-  author =      {Klaus Ignatzek},
-  title =       {Die Jazzmethode f\"ur Klavier 1},
-  publisher =   {Schott},
-  year =        1995,
-  note =        {This book contains a system for denoting chords that is used in LilyPond.}
-}
-
-@Book{mcgrain,
-  author =      {Mark Mc Grain},
-  title =       {Music notation},
-  year =        1991,
-  publisher={Hal Leonard Publishing Corporation},
-isbn ={0793508479},
-note={HWN writes: `Book' edition of lecture notes from XXX school of
-music.  The book looks like it is xeroxed from bad printouts.  The
-content has nothing you won't find in other books like\cite{read} or
-\cite{heussenstamm}.   }
-}
-
-@Book{ross,
-  author =      {Ted Ross},
-  title =       {Teach yourself the art of music engraving and processing},
-  publisher =   {Hansen House},
-  year =        1987,
-annote =        {This is about engraving, i.e.  professional typesetting.  It contains
-  directions on good typesetting, but the sections on reproduction
-  technicalities, how to use pens and history are interesting.
-  Especially the section on Music Typewriters is amusing HWN},
-  address =     {Miami, Florida},
-}
-
-@Book {read78,
-  note = {Sound (boring) review of the various hairy rhythmic notations used by avant-garde composers HWN},
-  year =  {1978},
-  title = {Modern Rhythmic Notation},
-  author = {Gardner Read},
-  publisher = {Indiana University Press},
-}
-
-@Book {read-notation,
-  note = {This is as close to the ``standard''
-  reference work for music notation issues as one is likely to get.},
-
-  title = {Music Notation: a Manual of Modern Practice},
-  author = {Gardner Read},
-  totalentry = {(2nd edition)},
-  year = 1979,
-  publisher ={Taplinger Publishing},
-  address ={New York},
-}
-
-@Book {weaner93,
-  year =  {1993},
-  title = {Standard Music Notation Practice},
-  author = {Maxwell Weaner and Walter Boelke},
-  totalentry = {revised edition by Arnold Broido and Daniel Dorff.},
-  publisher = {Music Publisher's Association of the United States Inc},
-  address = {New York}
-}
-
-
-@Book {wanske,
-
-  annote = {I. A very thorough overview of engraving practices of various
-  craftsmen. It includes detailed specs of characters, dimensions
-  etc. II. a thorough overview of a anonymous (by now antiquated)
-  automated system. EDV Means e(lektronischen) D(aten)v(erarbeitung),
-  electronic data processing HWN.},
-
-  year =  {1988},
-  title = {Musiknotation --- Von der Syntax des
-    Notenstichs zum EDV-gesteuerten Notensatz},
-  author = {Helene Wanske},
-  publisher = {Schott-Verlag},
-  address = {Mainz},
-  isbn = {ISBN 3-7957-2886-x},
-}
-
-
-@Book {hader48,
-  year =  {1948},
-  title = {Aus der Werkstatt eines Notenstechers},
-  author = {Karl Hader},
-  publisher = {Waldheim--Eberle Verlag},
-  address ={Vienna},
-
-  note = {Hader was a chief-engraver in a Viennese engraving
-workshop. This beautiful booklet was intended as an introduction for
-laymen on the art of engraving.  It contains a step by step, in-depth
-explanation of how to cut and stamp music into zinc plates.  It also
-contains a few compactly formulated rules on musical orthography. Out
-of print. }
-
-
-}
-
-@Book{gamble23:_music_engrav,
-  author =      {William Gamble},
-  title =       {Music Engraving and printing.  Historical and Technical Treatise},
-  publisher =   {Sir Isaac Pitman & Sons, ltd.},
-  year =        1923,
-  note = {This pattriotic book was an attempt to promote and help
-  British music engravers.  It is somewhat similar to Hader's
-  book\cite{hader48} in scope and style, but Gamble focuses more on
-  technical details (Which French punch cutters are worth buying from,
-  etc.), and does not treat typographical details, such as optical
-  illusions.  It is available as reprint from Da Capo Press, New York
-  (1971).}
-}
-
-
-@Booklet {mpa96,
-  note = {Pamphlet explaining a few  fine points in music font design HWN},
-  year =  {1996},
-  title = {Standard music notation specifications for computer programming.},
-  month =  {December},
-  author ={mpa},
-  publisher = {MPA},
-}
-
-
-@Book {donato63,
-  year =  {1963},
-  author = {Anthony Donato},
-  title ={Preparing Music Manuscript},
-  address ={Englewood Cliffs, NJ},
-  publisher={Prentice-Hall},
-}
-
-
-@Book {Karkoshka72,
-  year =  {1972},
-  title = {Notation in New Music; a critical guide to interpretation and realisation},
-  author = {Erdhard Karkoshka},
-  translator={Ruth Koenig},
-  publisher={Praeger Publishers},
-  address={New York},
-  note ={(Out of print)},
-}
-
-
-@Book {Roemer84,
-  year =  {1984},
-  title = {The Art of Music Copying},
-  author = {Clinton Roemer},
-  publisher={Roerick music co.},
-  address= {Sherman Oaks (CA)},
-
-  note ={Out of print. Heussenstamm writes: an instructional manual
-    which specializes in methods used in the commercial field. },
-  edition={2nd},
-}
-
-
-@Book {Rosecrans79,
-  year =  {1979},
-  title = {Music Notation Primer},
-  author = {Glen Rosecrans},
-  publisher={Passantino},
-  address={New York},
-  note={Heussenstamm writes: Limited in scope, similar to \cite{Roemer84}}
-}
-
-@Book {donemus1982,
-  year =  {1982},
-  title = {Uitgeven van muziek},
-subtitle = {Handleiding voor componisten en copiisten},
-  author = {Donemus},
-  publisher= {Donemus Amsterdam},
-
-  note = {Manual on copying for composers and copyists at the Dutch
- publishing house Donemus. Besides general comments on copying, it
- also contains a lot of hands-on advice for making performance
- material for modern pieces.}
-
-}
-
-
-@Book{vinci,
-author={Vinci, Albert C.},
-title={Fundamentals of Traditional Music Notation},
-publisher={Kent State University Press},
-year={1989}
-}
-
-@Book{schirmer90,
-  author={{G. Schirmer, Inc.}},
-  title={The G. Schirmer Manual of Style and Usage},
-  address={New York},
-  publisher={The G. Schirmer Publications Department},
-  year={2001},
-note={This is the style guide for Schirmer publications. This manual
-specifically focuses on preparing print for publication by
-Schirmer. It discusses many details that are not in other, normal
-notation books. It als gives a good idea of what is necessary to bring
-printouts to publication quality.
-It can be ordered from the rental department.
-
-
-}
-}
-
-
-@Book {Stone80,
-  year =  {1980},
-  title = {Music Notation in the Twentieth Century},
-  author = {Kurt Stone},
-  publisher= {Norton},
-  address={New York},
-  note ={Heussenstamm writes: The most important book on notation in recent years. },
-
-}
-@Book {Heussenstamm87,
-  year =  {1987},
-  title = {The Norton Manual of Music Notation},
-  author = {George Heussenstamm},
-  address= {New York},
-  publisher={Norton},
-  note={Hands-on instruction book for copying (ie. handwriting) music.  Fairly complete. HWN}
-}
-
-
-@Book {gerou96,
-  note = {A cheap, concise, alphabetically ordered list of typesetting and music (notation) issues with a rather simplistic attitude but in most  cases "good-enough" answers JCN},
-  year =  {1996},
-  title = {Essential Dictionary of Music Notation},
-  author = {Tom Gerou and Linda Lusk},
-  publisher = {Alfred Publishing},
-  address ={Van Nuys CA},
-  isbn ={ISBN 0-88284-768-6},
-}
-
-
-@Book {chlapik87,
-  note = {An clearly written book for the casually interested
-  reader. It shows some of the conventions and difficulties in
-  printing music HWN},
-
-  year =  {1987},
-  title = {Die Praxis des Notengraphikers},
-  author = {Herbert Chlapik},
-  publisher = {Doblinger},
-  isbn ={ISBN 3-9000 035-96-2},
-}
-
-
-
-@Book {barksdale57,
-       author = {Barksdale, A},
-       year = {1957},
-       title = {The Printed Note: 500 Years of Music Printing and Engraving},
-       address={Toledo, Ohio},
-       month = {January},
-       note={`The exhibition "The Printed Note" attempts to show the various processes used since the second of the 15th century for reproducing music mechanically ... '. The illustration mostly feature ancient music},
-       publisher={The Toledo Museum of Art},
-}
-
-
-@Book {wolf19,
-       author = {Wolf, Johannes},
-       year = {1919},
-       title = {Handbuch der Notationskunde},
-       address={Leipzig},
-       publisher={Breitkopf & Hartel},
-       note= {Very thorough treatment (in two volumes) of the history of music notation},
-}
-
-@Book {rosenthal67,
-       author = {Rosenthal, Carl A},
-       year = {1967},
-       title = {A Practical Guide to Music Notation},
-       address={New York},
-       publisher={MCA Music},
-       note={Heussenstamm writes: Informative in terms of traditional notation.  Does not concern score preparation}
-}
-
-
-@Book {Boehm61,
-       author = {Boehm, Laszlo},
-       year = {1961},
-       title={Modern Music Notation},
-       address={New York},
-       publisher={G. Schirmer, Inc.},
-       note ={Heussenstamm writes: A handy compact reference book in basic notation. }
-}
-@Book{button20:_system_music_notat,
-  author =      {Button, H. Elliot},
-  title =       {System in Musical Notation},
-  publisher =   {Novello and co.},
-  year =        1920,
-  address =     {London}
-}
-
-@Book{johnson46:_how,
-  author =      {Johnson, Harold},
-  title =       {How to write music manuscript},
-  publisher =   {Carl Fischer, Inc.},
-  year =        1946,
-  address =     {New York}
-}
-
-
-
-@Book{tyboni94:_noter_handb_i_tradit_noter,
-  author =      {B\"orje Tyboni},
-  title =       {Noter Handbok I Traditionell Notering},
-  publisher =   {Gehrmans Musikf\"orlag},
-  year =        1994,
-  address =     {Stockholm},
-  note =        {Swedish book on music notation.}
-}
-
-@Book{jaschinski00:_notat,
-  editor =      {Andreas Jaschinski},
-  title =       {Notation},
-  publisher =   {Bärenreiter Verlag},
-  year =        2000,
-  number =      {BVK1625},
-
-  annote = {Articles from "Musik in Geschichte und Gegenwart"
-pertaining to notation.  Both "alternative" notation and ancient
-notation is treated in depth, while "common" notation is not.  }
-}
-
-
diff --git a/Documentation/bibliography/html-long.bst b/Documentation/bibliography/html-long.bst
deleted file mode 100644 (file)
index e01f1fa..0000000
+++ /dev/null
@@ -1,1374 +0,0 @@
-% BibTeX bibliography style `html-long'
-%   spits out HTML-formatted bibliography in place of bbl output
-% by David Kotz dfk@cs.dartmouth.edu
-% $Id: html-long.bst,v 1.4 2005/07/21 21:29:50 hjunes Exp $
-%    modified from
-% BibTeX standard bibliography style `alpha'
-       % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.
-       % Copyright (C) 1985, all rights reserved.
-       % Copying of this file is authorized only if either
-       % (1) you make absolutely no changes to your copy, including name, or
-       % (2) if you do make changes, you name it something other than
-       % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
-       % This restriction helps ensure that all standard styles are identical.
-       % The file btxbst.doc has the documentation for this style.
-
-% DFK added abstract, comment, earlier, keyword, later, URL
-ENTRY
-  { abstract
-    address
-    author
-    booktitle
-    chapter
-    comment
-    earlier
-    edition
-    editor
-    howpublished
-    institution
-    journal
-    key
-    keyword
-    later
-    month
-    note
-    number
-    organization
-    pages
-    private
-    publisher
-    school
-    series
-    title
-    type
-    URL
-    volume
-    year
-  }
-  {}
-  { label extra.label sort.label }
-
-INTEGERS { output.state before.all mid.sentence after.sentence after.block }
-
-FUNCTION {init.state.consts}
-{ #0 'before.all :=
-  #1 'mid.sentence :=
-  #2 'after.sentence :=
-  #3 'after.block :=
-}
-
-STRINGS { s t }
-
-FUNCTION {output.nonnull}
-{ 's :=
-  output.state mid.sentence =
-    { ", " * write$ }
-    { output.state after.block =
-       { add.period$ write$
-         newline$
-       }
-       { output.state before.all =
-            'write$
-            { add.period$ " " * write$ }
-           if$
-       }
-      if$
-      mid.sentence 'output.state :=
-    }
-  if$
-  s
-}
-
-FUNCTION {output}
-{ duplicate$ empty$
-    'pop$
-    'output.nonnull
-  if$
-}
-
-FUNCTION {output.check}
-{ 't :=
-  duplicate$ empty$
-    { pop$ "empty " t * " in " * cite$ * warning$ }
-    'output.nonnull
-  if$
-}
-
-% DFK changed to use cite$ for the label
-% DFK changed to HTML, and use URL to make cite key a link
-FUNCTION {output.bibitem}
-{ newline$
-  URL empty$
-    { "<DT> <A NAME=" quote$ * cite$ * quote$ * 
-       "> " * cite$ * ":</A> </DT>" * write$
-    }
-    { "<DT><A NAME=" quote$ * cite$ * quote$ * " HREF=" * quote$ * 
-       URL * quote$ * "> " * cite$ * ":</A></DT>" * write$
-    }
-  if$
-  newline$
-  "<DD>" write$ newline$
-  ""
-  before.all 'output.state :=
-}
-
-% DFK changed to HTML
-FUNCTION {fin.entry}
-{ add.period$
-  write$
-  newline$
-  earlier empty$
-       'skip$
-       { "<br>" write$ newline$
-         "See also earlier version <A HREF=" quote$ * "#" * earlier * quote$ *
-               ">" * earlier * "</A>." * write$ newline$
-       }
-  if$
-  later empty$
-       'skip$
-       { "<br>" write$ newline$
-         "See also later version <A HREF=" quote$ * "#" * later * quote$ *
-               ">" * later * "</A>." * write$ newline$
-       }
-  if$
-  "</DD>" write$ newline$
-}
-
-FUNCTION {new.block}
-{ output.state before.all =
-    'skip$
-    { after.block 'output.state := }
-  if$
-}
-
-FUNCTION {new.sentence}
-{ output.state after.block =
-    'skip$
-    { output.state before.all =
-       'skip$
-       { after.sentence 'output.state := }
-      if$
-    }
-  if$
-}
-
-FUNCTION {not}
-{   { #0 }
-    { #1 }
-  if$
-}
-
-FUNCTION {and}
-{   'skip$
-    { pop$ #0 }
-  if$
-}
-
-FUNCTION {or}
-{   { pop$ #1 }
-    'skip$
-  if$
-}
-
-FUNCTION {new.block.checka}
-{ empty$
-    'skip$
-    'new.block
-  if$
-}
-
-FUNCTION {new.block.checkb}
-{ empty$
-  swap$ empty$
-  and
-    'skip$
-    'new.block
-  if$
-}
-
-FUNCTION {new.sentence.checka}
-{ empty$
-    'skip$
-    'new.sentence
-  if$
-}
-
-FUNCTION {new.sentence.checkb}
-{ empty$
-  swap$ empty$
-  and
-    'skip$
-    'new.sentence
-  if$
-}
-
-FUNCTION {field.or.null}
-{ duplicate$ empty$
-    { pop$ "" }
-    'skip$
-  if$
-}
-
-% DFK changed to HTML
-FUNCTION {emphasize}
-{ duplicate$ empty$
-    { pop$ "" }
-    { "<EM>" swap$ * "</EM>" * }
-  if$
-}
-
-% DFK added for HTML strong emphasis
-FUNCTION {strong}
-{ duplicate$ empty$
-    { pop$ "" }
-    { "<STRONG>" swap$ * "</STRONG>" * }
-  if$
-}
-
-INTEGERS { nameptr namesleft numnames }
-
-% DFK added this, to strip {} and ~ from titles and authors
-% It's not a great idea, because it will screw up in math mode and some
-% special characters... but it makes most things much prettier.
-FUNCTION {author.title.purify}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "{" = 
-      t #1 #1 substring$ "}" = or
-       'skip$
-       { t #1 #1 substring$ "~" =
-           { " " * }
-           { t #1 #1 substring$ * }
-       if$
-       }
-      if$
-      t #2 global.max$ substring$ 't :=
-    }
-  while$
-}
-
-FUNCTION {format.names}
-{ 's :=
-  #1 'nameptr :=
-  s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
-      nameptr #1 >
-       { namesleft #1 >
-           { ", " * t * }
-           { numnames #2 >
-               { "," * }
-               'skip$
-             if$
-             t "others" =
-               { " et&nbsp;al." * }
-               { " and " * t * }
-             if$
-           }
-         if$
-       }
-       't
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
-  while$
-}
-
-FUNCTION {format.authors}
-{ author empty$
-    { "" }
-    { author format.names  author.title.purify }
-  if$
-}
-
-FUNCTION {format.editors}
-{ editor empty$
-    { "" }
-    { editor format.names
-      editor num.names$ #1 >
-       { ", editors" * }
-       { ", editor" * }
-      if$
-    }
-  if$
-}
-
-% DFK added strong, so it will be bold.
-FUNCTION {format.title}
-{ title empty$
-    { "" }
-    { title "t" change.case$  author.title.purify strong }
-  if$
-}
-
-FUNCTION {n.dashify}
-{ 't :=
-  ""
-    { t empty$ not }
-    { t #1 #1 substring$ "-" =
-       { t #1 #2 substring$ "--" = not
-           { "--" *
-             t #2 global.max$ substring$ 't :=
-           }
-           {   { t #1 #1 substring$ "-" = }
-               { "-" *
-                 t #2 global.max$ substring$ 't :=
-               }
-             while$
-           }
-         if$
-       }
-       { t #1 #1 substring$ *
-         t #2 global.max$ substring$ 't :=
-       }
-      if$
-    }
-  while$
-}
-
-FUNCTION {format.date}
-{ year empty$
-    { month empty$
-       { "" }
-       { "there's a month but no year in " cite$ * warning$
-         month
-       }
-      if$
-    }
-    { month empty$
-       'year
-       { month " " * year * }
-      if$
-    }
-  if$
-}
-
-% DFK changed emphasize to strong
-FUNCTION {format.btitle}
-{ title author.title.purify strong
-}
-
-FUNCTION {tie.or.space.connect}
-{ duplicate$ text.length$ #3 <
-    { "&nbsp;" }
-    { " " }
-  if$
-  swap$ * *
-}
-
-FUNCTION {either.or.check}
-{ empty$
-    'pop$
-    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
-  if$
-}
-
-FUNCTION {format.bvolume}
-{ volume empty$
-    { "" }
-    { "volume" volume tie.or.space.connect
-      series empty$
-       'skip$
-       { " of " * series emphasize * }
-      if$
-      "volume and number" number either.or.check
-    }
-  if$
-}
-
-FUNCTION {format.number.series}
-{ volume empty$
-    { number empty$
-       { series field.or.null }
-       { output.state mid.sentence =
-           { "number" }
-           { "Number" }
-         if$
-         number tie.or.space.connect
-         series empty$
-           { "there's a number but no series in " cite$ * warning$ }
-           { " in " * series * }
-         if$
-       }
-      if$
-    }
-    { "" }
-  if$
-}
-
-FUNCTION {format.edition}
-{ edition empty$
-    { "" }
-    { output.state mid.sentence =
-       { edition "l" change.case$ " edition" * }
-       { edition "t" change.case$ " edition" * }
-      if$
-    }
-  if$
-}
-
-INTEGERS { multiresult }
-
-FUNCTION {multi.page.check}
-{ 't :=
-  #0 'multiresult :=
-    { multiresult not
-      t empty$ not
-      and
-    }
-    { t #1 #1 substring$
-      duplicate$ "-" =
-      swap$ duplicate$ "," =
-      swap$ "+" =
-      or or
-       { #1 'multiresult := }
-       { t #2 global.max$ substring$ 't := }
-      if$
-    }
-  while$
-  multiresult
-}
-
-FUNCTION {format.pages}
-{ pages empty$
-    { "" }
-    { pages multi.page.check
-       { "pages" pages n.dashify tie.or.space.connect }
-       { "page" pages tie.or.space.connect }
-      if$
-    }
-  if$
-}
-
-FUNCTION {format.vol.num.pages}
-{ volume field.or.null
-  number empty$
-    'skip$
-    { "(" number * ")" * *
-      volume empty$
-       { "there's a number but no volume in " cite$ * warning$ }
-       'skip$
-      if$
-    }
-  if$
-  pages empty$
-    'skip$
-    { duplicate$ empty$
-       { pop$ format.pages }
-       { ":" * pages n.dashify * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {format.chapter.pages}
-{ chapter empty$
-    'format.pages
-    { type empty$
-       { "chapter" }
-       { type "l" change.case$ }
-      if$
-      chapter tie.or.space.connect
-      pages empty$
-       'skip$
-       { ", " * format.pages * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {format.in.ed.booktitle}
-{ booktitle empty$
-    { "" }
-    { editor empty$
-       { "In " booktitle emphasize * }
-       { "In " format.editors * ", " * booktitle emphasize * }
-      if$
-    }
-  if$
-}
-
-FUNCTION {empty.misc.check}
-{ author empty$ title empty$ howpublished empty$
-  month empty$ year empty$ note empty$
-  and and and and and
-  key empty$ not and
-    { "all relevant fields are empty in " cite$ * warning$ }
-    'skip$
-  if$
-}
-
-FUNCTION {format.thesis.type}
-{ type empty$
-    'skip$
-    { pop$
-      type "t" change.case$
-    }
-  if$
-}
-
-FUNCTION {format.tr.number}
-{ type empty$
-    { "Technical Report" }
-    'type
-  if$
-  number empty$
-    { "t" change.case$ }
-    { number tie.or.space.connect }
-  if$
-}
-
-FUNCTION {format.article.crossref}
-{ key empty$
-    { journal empty$
-       { "need key or journal for " cite$ * " to crossref " * crossref *
-         warning$
-         ""
-       }
-       { "In {\em " journal * "\/}" * }
-      if$
-    }
-    { "In " key * }
-  if$
-  " \cite{" * crossref * "}" *
-}
-
-FUNCTION {format.crossref.editor}
-{ editor #1 "{vv~}{ll}" format.name$
-  editor num.names$ duplicate$
-  #2 >
-    { pop$ " et&nbsp;al." * }
-    { #2 <
-       'skip$
-       { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
-           { " et&nbsp;al." * }
-           { " and " * editor #2 "{vv~}{ll}" format.name$ * }
-         if$
-       }
-      if$
-    }
-  if$
-}
-
-FUNCTION {format.book.crossref}
-{ volume empty$
-    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
-      "In "
-    }
-    { "Volume" volume tie.or.space.connect
-      " of " *
-    }
-  if$
-  editor empty$
-  editor field.or.null author field.or.null =
-  or
-    { key empty$
-       { series empty$
-           { "need editor, key, or series for " cite$ * " to crossref " *
-             crossref * warning$
-             "" *
-           }
-           { "{\em " * series * "\/}" * }
-         if$
-       }
-       { key * }
-      if$
-    }
-    { format.crossref.editor * }
-  if$
-  " \cite{" * crossref * "}" *
-}
-
-FUNCTION {format.incoll.inproc.crossref}
-{ editor empty$
-  editor field.or.null author field.or.null =
-  or
-    { key empty$
-       { booktitle empty$
-           { "need editor, key, or booktitle for " cite$ * " to crossref " *
-             crossref * warning$
-             ""
-           }
-           { "In {\em " booktitle * "\/}" * }
-         if$
-       }
-       { "In " key * }
-      if$
-    }
-    { "In " format.crossref.editor * }
-  if$
-  " \cite{" * crossref * "}" *
-}
-
-
-% DFK added
-% top of stack is the string we want to be a quoted paragraph
-FUNCTION {format.quotedParagraph}
-{ duplicate$ empty$
-    { skip$ }
-    { "<P><QUOTE> " swap$ * "  </QUOTE></P>" *}
-  if$
-}
-
-
-% DFK added, to support comment, private, keyword, etc
-% next-to-top is field name (eg, "Comment")
-% top is field value (eg, value of comment)
-% both are popped; resulting top is either empty, 
-%    or string describing field
-FUNCTION {format.dfkfield}
-{ duplicate$ empty$
-       { pop$ pop$ "" }
-       { swap$ 
-          "<strong> " swap$ * ":</strong> " * swap$ * }
-  if$
-}
-
-% DFK added
-FUNCTION {dfk.stuff}
-{ new.block
-  "Abstract" abstract format.dfkfield format.quotedParagraph write$ newline$
-  "Keyword" keyword format.dfkfield format.quotedParagraph write$ newline$
-  "Comment" comment format.dfkfield format.quotedParagraph write$ newline$
-}
-
-% DFK: added a call to dfk.stuff in all entry-type functions below
-
-FUNCTION {article}
-{ output.bibitem
-  format.authors "author" output.check
-  new.block
-  format.title "title" output.check
-  new.block
-  crossref missing$
-    { journal emphasize "journal" output.check
-      format.vol.num.pages output
-      format.date "year" output.check
-    }
-    { format.article.crossref output.nonnull
-      format.pages output
-    }
-  if$
-  new.block
-  note output
-  fin.entry
-  dfk.stuff
-}
-
-FUNCTION {book}
-{ output.bibitem
-  author empty$
-    { format.editors "author and editor" output.check }
-    { format.authors output.nonnull
-      crossref missing$
-       { "author and editor" editor either.or.check }
-       'skip$
-      if$
-    }
-  if$
-  new.block
-  format.btitle "title" output.check
-  crossref missing$
-    { format.bvolume output
-      new.block
-      format.number.series output
-      new.sentence
-      publisher "publisher" output.check
-      address output
-    }
-    { new.block
-      format.book.crossref output.nonnull
-    }
-  if$
-  format.edition output
-  format.date "year" output.check
-  new.block
-  note output
-  fin.entry
-  dfk.stuff
-}
-
-FUNCTION {booklet}
-{ output.bibitem
-  format.authors output
-  new.block
-  format.title "title" output.check
-  howpublished address new.block.checkb
-  howpublished output
-  address output
-  format.date output
-  new.block
-  note output
-  fin.entry
-  dfk.stuff
-}
-
-FUNCTION {inbook}
-{ output.bibitem
-  author empty$
-    { format.editors "author and editor" output.check }
-    { format.authors output.nonnull
-      crossref missing$
-       { "author and editor" editor either.or.check }
-       'skip$
-      if$
-    }
-  if$
-  new.block
-  format.btitle "title" output.check
-  crossref missing$
-    { format.bvolume output
-      format.chapter.pages "chapter and pages" output.check
-      new.block
-      format.number.series output
-      new.sentence
-      publisher "publisher" output.check
-      address output
-    }
-    { format.chapter.pages "chapter and pages" output.check
-      new.block
-      format.book.crossref output.nonnull
-    }
-  if$
-  format.edition output
-  format.date "year" output.check
-  new.block
-  note output
-  fin.entry
-  dfk.stuff
-}
-
-FUNCTION {incollection}
-{ output.bibitem
-  format.authors "author" output.check
-  new.block
-  format.title "title" output.check
-  new.block
-  crossref missing$
-    { format.in.ed.booktitle "booktitle" output.check
-      format.bvolume output
-      format.number.series output
-      format.chapter.pages output
-      new.sentence
-      publisher "publisher" output.check
-      address output
-      format.edition output
-      format.date "year" output.check
-    }
-    { format.incoll.inproc.crossref output.nonnull
-      format.chapter.pages output
-    }
-  if$
-  new.block
-  note output
-  fin.entry
-  dfk.stuff
-}
-
-FUNCTION {inproceedings}
-{ output.bibitem
-  format.authors "author" output.check
-  new.block
-  format.title "title" output.check
-  new.block
-  crossref missing$
-    { format.in.ed.booktitle "booktitle" output.check
-      format.bvolume output
-      format.number.series output
-      format.pages output
-      address empty$
-       { organization publisher new.sentence.checkb
-         organization output
-         publisher output
-         format.date "year" output.check
-       }
-       { address output.nonnull
-         format.date "year" output.check
-         new.sentence
-         organization output
-         publisher output
-       }
-      if$
-    }
-    { format.incoll.inproc.crossref output.nonnull
-      format.pages output
-    }
-  if$
-  new.block
-  note output
-  fin.entry
-  dfk.stuff
-}
-
-FUNCTION {conference} { inproceedings }
-
-FUNCTION {manual}
-{ output.bibitem
-  author empty$
-    { organization empty$
-       'skip$
-       { organization output.nonnull
-         address output
-       }
-      if$
-    }
-    { format.authors output.nonnull }
-  if$
-  new.block
-  format.btitle "title" output.check
-  author empty$
-    { organization empty$
-       { address new.block.checka
-         address output
-       }
-       'skip$
-      if$
-    }
-    { organization address new.block.checkb
-      organization output
-      address output
-    }
-  if$
-  format.edition output
-  format.date output
-  new.block
-  note output
-  fin.entry
-  dfk.stuff
-}
-
-FUNCTION {mastersthesis}
-{ output.bibitem
-  format.authors "author" output.check
-  new.block
-  format.title "title" output.check
-  new.block
-  "Master's thesis" format.thesis.type output.nonnull
-  school "school" output.check
-  address output
-  format.date "year" output.check
-  new.block
-  note output
-  fin.entry
-  dfk.stuff
-}
-
-FUNCTION {misc}
-{ output.bibitem
-  format.authors output
-  title howpublished new.block.checkb
-  format.title output
-  howpublished new.block.checka
-  howpublished output
-  format.date output
-  new.block
-  note output
-  fin.entry
-  dfk.stuff
-  empty.misc.check
-}
-
-FUNCTION {phdthesis}
-{ output.bibitem
-  format.authors "author" output.check
-  new.block
-  format.btitle "title" output.check
-  new.block
-  "PhD thesis" format.thesis.type output.nonnull
-  school "school" output.check
-  address output
-  format.date "year" output.check
-  new.block
-  note output
-  fin.entry
-  dfk.stuff
-}
-
-FUNCTION {proceedings}
-{ output.bibitem
-  editor empty$
-    { organization output }
-    { format.editors output.nonnull }
-  if$
-  new.block
-  format.btitle "title" output.check
-  format.bvolume output
-  format.number.series output
-  address empty$
-    { editor empty$
-       { publisher new.sentence.checka }
-       { organization publisher new.sentence.checkb
-         organization output
-       }
-      if$
-      publisher output
-      format.date "year" output.check
-    }
-    { address output.nonnull
-      format.date "year" output.check
-      new.sentence
-      editor empty$
-       'skip$
-       { organization output }
-      if$
-      publisher output
-    }
-  if$
-  new.block
-  note output
-  fin.entry
-  dfk.stuff
-}
-
-FUNCTION {techreport}
-{ output.bibitem
-  format.authors "author" output.check
-  new.block
-  format.title "title" output.check
-  new.block
-  format.tr.number output.nonnull
-  institution "institution" output.check
-  address output
-  format.date "year" output.check
-  new.block
-  note output
-  fin.entry
-  dfk.stuff
-}
-
-FUNCTION {unpublished}
-{ output.bibitem
-  format.authors "author" output.check
-  new.block
-  format.title "title" output.check
-  new.block
-  note "note" output.check
-  format.date output
-  fin.entry
-  dfk.stuff
-}
-
-FUNCTION {default.type} { misc }
-
-MACRO {jan} {"January"}
-
-MACRO {feb} {"February"}
-
-MACRO {mar} {"March"}
-
-MACRO {apr} {"April"}
-
-MACRO {may} {"May"}
-
-MACRO {jun} {"June"}
-
-MACRO {jul} {"July"}
-
-MACRO {aug} {"August"}
-
-MACRO {sep} {"September"}
-
-MACRO {oct} {"October"}
-
-MACRO {nov} {"November"}
-
-MACRO {dec} {"December"}
-
-MACRO {acmcs} {"ACM Computing Surveys"}
-
-MACRO {acta} {"Acta Informatica"}
-
-MACRO {cacm} {"Communications of the ACM"}
-
-MACRO {ibmjrd} {"IBM Journal of Research and Development"}
-
-MACRO {ibmsj} {"IBM Systems Journal"}
-
-MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
-
-MACRO {ieeetc} {"IEEE Transactions on Computers"}
-
-MACRO {ieeetcad}
- {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
-
-MACRO {ipl} {"Information Processing Letters"}
-
-MACRO {jacm} {"Journal of the ACM"}
-
-MACRO {jcss} {"Journal of Computer and System Sciences"}
-
-MACRO {scp} {"Science of Computer Programming"}
-
-MACRO {sicomp} {"SIAM Journal on Computing"}
-
-MACRO {tocs} {"ACM Transactions on Computer Systems"}
-
-MACRO {tods} {"ACM Transactions on Database Systems"}
-
-MACRO {tog} {"ACM Transactions on Graphics"}
-
-MACRO {toms} {"ACM Transactions on Mathematical Software"}
-
-MACRO {toois} {"ACM Transactions on Office Information Systems"}
-
-MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
-
-MACRO {tcs} {"Theoretical Computer Science"}
-
-READ
-
-FUNCTION {sortify}
-{ purify$
-  "l" change.case$
-}
-
-INTEGERS { len }
-
-FUNCTION {chop.word}
-{ 's :=
-  'len :=
-  s #1 len substring$ =
-    { s len #1 + global.max$ substring$ }
-    's
-  if$
-}
-
-INTEGERS { et.al.char.used }
-
-FUNCTION {initialize.et.al.char.used}
-{ #0 'et.al.char.used :=
-}
-
-EXECUTE {initialize.et.al.char.used}
-
-FUNCTION {format.lab.names}
-{ 's :=
-  s num.names$ 'numnames :=
-  numnames #1 >
-    { numnames #4 >
-       { #3 'namesleft := }
-       { numnames 'namesleft := }
-      if$
-      #1 'nameptr :=
-      ""
-       { namesleft #0 > }
-       { nameptr numnames =
-           { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
-               { "{\etalchar{+}}" *
-                 #1 'et.al.char.used :=
-               }
-               { s nameptr "{v{}}{l{}}" format.name$ * }
-             if$
-           }
-           { s nameptr "{v{}}{l{}}" format.name$ * }
-         if$
-         nameptr #1 + 'nameptr :=
-         namesleft #1 - 'namesleft :=
-       }
-      while$
-      numnames #4 >
-       { "{\etalchar{+}}" *
-         #1 'et.al.char.used :=
-       }
-       'skip$
-      if$
-    }
-    { s #1 "{v{}}{l{}}" format.name$
-      duplicate$ text.length$ #2 <
-       { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ }
-       'skip$
-      if$
-    }
-  if$
-}
-
-FUNCTION {author.key.label}
-{ author empty$
-    { key empty$
-       { cite$ #1 #3 substring$ }
-       { key #3 text.prefix$ }
-      if$
-    }
-    { author format.lab.names }
-  if$
-}
-
-FUNCTION {author.editor.key.label}
-{ author empty$
-    { editor empty$
-       { key empty$
-           { cite$ #1 #3 substring$ }
-           { key #3 text.prefix$ }
-         if$
-       }
-       { editor format.lab.names }
-      if$
-    }
-    { author format.lab.names }
-  if$
-}
-
-FUNCTION {author.key.organization.label}
-{ author empty$
-    { key empty$
-       { organization empty$
-           { cite$ #1 #3 substring$ }
-           { "The " #4 organization chop.word #3 text.prefix$ }
-         if$
-       }
-       { key #3 text.prefix$ }
-      if$
-    }
-    { author format.lab.names }
-  if$
-}
-
-FUNCTION {editor.key.organization.label}
-{ editor empty$
-    { key empty$
-       { organization empty$
-           { cite$ #1 #3 substring$ }
-           { "The " #4 organization chop.word #3 text.prefix$ }
-         if$
-       }
-       { key #3 text.prefix$ }
-      if$
-    }
-    { editor format.lab.names }
-  if$
-}
-
-FUNCTION {calc.label}
-{ type$ "book" =
-  type$ "inbook" =
-  or
-    'author.editor.key.label
-    { type$ "proceedings" =
-       'editor.key.organization.label
-       { type$ "manual" =
-           'author.key.organization.label
-           'author.key.label
-         if$
-       }
-      if$
-    }
-  if$
-  duplicate$
-  year field.or.null purify$ #-1 #2 substring$
-  *
-  'label :=
-  year field.or.null purify$ #-1 #4 substring$
-  *
-  sortify 'sort.label :=
-}
-
-FUNCTION {sort.format.names}
-{ 's :=
-  #1 'nameptr :=
-  ""
-  s num.names$ 'numnames :=
-  numnames 'namesleft :=
-    { namesleft #0 > }
-    { nameptr #1 >
-       { "   " * }
-       'skip$
-      if$
-      s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
-      nameptr numnames = t "others" = and
-       { "et al" * }
-       { t sortify * }
-      if$
-      nameptr #1 + 'nameptr :=
-      namesleft #1 - 'namesleft :=
-    }
-  while$
-}
-
-FUNCTION {sort.format.title}
-{ 't :=
-  "A " #2
-    "An " #3
-      "The " #4 t chop.word
-    chop.word
-  chop.word
-  sortify
-  #1 global.max$ substring$
-}
-
-FUNCTION {author.sort}
-{ author empty$
-    { key empty$
-       { "to sort, need author or key in " cite$ * warning$
-         ""
-       }
-       { key sortify }
-      if$
-    }
-    { author sort.format.names }
-  if$
-}
-
-FUNCTION {author.editor.sort}
-{ author empty$
-    { editor empty$
-       { key empty$
-           { "to sort, need author, editor, or key in " cite$ * warning$
-             ""
-           }
-           { key sortify }
-         if$
-       }
-       { editor sort.format.names }
-      if$
-    }
-    { author sort.format.names }
-  if$
-}
-
-FUNCTION {author.organization.sort}
-{ author empty$
-    { organization empty$
-       { key empty$
-           { "to sort, need author, organization, or key in " cite$ * warning$
-             ""
-           }
-           { key sortify }
-         if$
-       }
-       { "The " #4 organization chop.word sortify }
-      if$
-    }
-    { author sort.format.names }
-  if$
-}
-
-FUNCTION {editor.organization.sort}
-{ editor empty$
-    { organization empty$
-       { key empty$
-           { "to sort, need editor, organization, or key in " cite$ * warning$
-             ""
-           }
-           { key sortify }
-         if$
-       }
-       { "The " #4 organization chop.word sortify }
-      if$
-    }
-    { editor sort.format.names }
-  if$
-}
-
-FUNCTION {presort}
-{ calc.label
-  sort.label
-  "    "
-  *
-  type$ "book" =
-  type$ "inbook" =
-  or
-    'author.editor.sort
-    { type$ "proceedings" =
-       'editor.organization.sort
-       { type$ "manual" =
-           'author.organization.sort
-           'author.sort
-         if$
-       }
-      if$
-    }
-  if$
-  *
-  "    "
-  *
-  year field.or.null sortify
-  *
-  "    "
-  *
-  title field.or.null
-  sort.format.title
-  *
-% DFK throw away stuff above and use cite$ for sort key
-  pop$
-  cite$
-  #1 entry.max$ substring$
-  'sort.key$ :=
-}
-
-ITERATE {presort}
-
-SORT
-
-STRINGS { longest.label last.sort.label next.extra }
-
-INTEGERS { longest.label.width last.extra.num }
-
-FUNCTION {initialize.longest.label}
-{ "" 'longest.label :=
-  #0 int.to.chr$ 'last.sort.label :=
-  "" 'next.extra :=
-  #0 'longest.label.width :=
-  #0 'last.extra.num :=
-}
-
-FUNCTION {forward.pass}
-{ last.sort.label sort.label =
-    { last.extra.num #1 + 'last.extra.num :=
-      last.extra.num int.to.chr$ 'extra.label :=
-    }
-    { "a" chr.to.int$ 'last.extra.num :=
-      "" 'extra.label :=
-      sort.label 'last.sort.label :=
-    }
-  if$
-}
-
-FUNCTION {reverse.pass}
-{ next.extra "b" =
-    { "a" 'extra.label := }
-    'skip$
-  if$
-  label extra.label * 'label :=
-  label width$ longest.label.width >
-    { label 'longest.label :=
-      label width$ 'longest.label.width :=
-    }
-    'skip$
-  if$
-  extra.label 'next.extra :=
-}
-
-EXECUTE {initialize.longest.label}
-
-ITERATE {forward.pass}
-
-REVERSE {reverse.pass}
-
-% DFK removed code about et.al.char
-% DFK changed to HTML
-FUNCTION {begin.bib}
-{ "<HTML>" write$ newline$
-  "<HEAD><TITLE> Bibliography </TITLE>" write$ newline$
-  "</HEAD>" write$ newline$
-  "<BODY BGCOLOR=#EEEEEE>" write$ newline$
-  "<DL>" write$ newline$
-}
-
-EXECUTE {begin.bib}
-
-EXECUTE {init.state.consts}
-
-ITERATE {call.type$}
-
-% DFK changed to HTML
-FUNCTION {end.bib}
-{ newline$
-  "</DL>" write$ newline$
-  "</BODY>" write$ newline$
-  "</HTML>" write$ newline$
-}
-
-EXECUTE {end.bib}
diff --git a/Documentation/bibliography/index.html.in b/Documentation/bibliography/index.html.in
deleted file mode 100644 (file)
index d851dc8..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-<html><head>
-  <title>References on Music Notation</title>
-  </head>
-  <body>
-    <h1> References on Music Notation</h1>
-    <ul>
-      <li>colorado.bib:
-       University of Colorado Engraving music bibliography
-       <p>
-         by Alyssa Lamb (edited & converted to bibtex by HWN)
-       </p>
-       (<a href=colorado.html>HTML</a>)
-      </li>
-      <li>computer-notation.bib:
-       The music notation with computer bibliography
-       <p>
-         by Han-Wen Nienhuys
-       </p>
-       (<a href=computer-notation.html>HTML</a>)
-      </li>
-      <li>engraving.bib:
-       The engraving bibliography
-       <p>
-         by Han-Wen Nienhuys
-       </p>
-       (<a href=engraving.html>HTML</a>)
-      </li>
-    </ul>
-  </body>
-</html>
index 3d1b6f51fb0e48fdca42ec1973845c0b9ae368ec..98c22f58dcfeaedea4eaa6bc72d0f19d36f68046 100644 (file)
@@ -62,6 +62,43 @@ which scares away people.
 
 @end ignore
 
+@item
+Instrument names and vocal names now take into account the extent of
+system start delimiters in other staves for their positioning,
+resulting in improved default alignment for left-, center- and
+right-aligned names.
+@lilypond[quote,indent=18\mm]
+<<
+  \new StaffGroup <<
+    \new GrandStaff <<
+      \new Staff {
+        \set Staff.instrumentName = #"Piccolo"
+        c''1
+      }
+      \new Staff {
+        \set Staff.instrumentName = #"Flute"
+        c''1
+      }
+    >>
+    \new Staff {
+      \set Staff.instrumentName = #"Bassoon"
+      \clef tenor
+      c'1
+    }
+  >>
+  \new PianoStaff <<
+    \set PianoStaff.instrumentName = #"Piano"
+    \context Staff = "up" {
+      c'1
+    }
+    \context Staff = "down" {
+      \clef bass
+      c1
+    }
+  >>
+>>
+@end lilypond
+
 @item
 Braces in markup can now be selected by point size using the markup commands
 @code{\left-brace} and @code{\right-brace}.
@@ -95,7 +132,7 @@ c4( d e f)
 @end lilypond
 
 @item
-An eyeglasses markup was added, incidating strongly to look at the
+An eyeglasses markup was added, indicating strongly to look at the
 conductor for instructions:
 @lilypond[quote,relative=2]
 \mark \markup { \eyeglasses }
index 985bce595d218e5fb9cd744e829223d5124f31a6..58cb80541867d477208a546fb6935197bc200bec 100644 (file)
@@ -67,6 +67,7 @@
 
 @ifclear snippets-sections
 @macro lydoctitle {TEXT}
+@need 600
 @emph{\TEXT\}
 @end macro
 @end ifclear
@@ -175,45 +176,74 @@ UNTRANSLATED NODE: IGNORE ME
 @end html
 @end macro
 
+@macro exampleImage{IMAGE-FILE}
+@html
+<div class="float-center">
+  <a class="clickable" href="examples/\IMAGE-FILE\.png">
+    <img src="examples/\IMAGE-FILE\-small.png" alt="\IMAGE-FILE\">
+  </a>
+  <p style="text-align: center">
+    (click to enlarge)
+  </p>
+</div>
+@end html
+@iftex
+@image{general/examples/out-www/\IMAGE-FILE\-small,,,\IMAGE-FILE\,png}
+@end iftex
+@ifinfo
+FIXME: images broken in info
+@c @sourceimage{lilypond/general/examples/out-www/\IMAGE-FILE\,,,\IMAGE-FILE\,png}
+@end ifinfo
+@end macro
+
 
 
-@macro imageClickable{IMAGE-FILE, MORE-TEXT, CLICK-FILE, POSITION}
+@macro imageClickable{IMAGE-FILE, EXT, MORE-TEXT, CLICK-FILE, CLICK-EXT, POSITION}
 @html
 <div class="float-\POSITION\">
-  <a class="clickable" href="\CLICK-FILE\">
-    <img src="\IMAGE-FILE\" alt="\IMAGE-FILE\">
+  <a class="clickable" href="pictures/\CLICK-FILE\.\CLICK-EXT\">
+    <img src="pictures/\IMAGE-FILE\.\EXT\" alt="\IMAGE-FILE\">
   </a>
   <p style="text-align: center">
     \MORE-TEXT\
   </p>
 </div>
 @end html
-@ifnothtml
-FIXME: broken image
-@c @image{\IMAGE-FILE\}
-@end ifnothtml
+@iftex
+@image{pictures/out-www/\IMAGE-FILE\,,,\IMAGE-FILE\}
+@end iftex
+@ifinfo
+FIXME: images broken in info
+@c @sourceimage{lilypond/\IMAGE-FILE\,,,\IMAGE-FILE\}
+@end ifinfo
 @end macro
 
-@macro imageFloat{IMAGE-FILE, POSITION}
+@macro imageFloat{IMAGE-FILE, EXT, POSITION}
 @html
-<img class="float-\POSITION\" src="pictures/\IMAGE-FILE\" alt="\IMAGE-FILE\">
+<img class="float-\POSITION\" src="pictures/\IMAGE-FILE\.\EXT\" alt="\IMAGE-FILE\">
 @end html
-@ifnothtml
-FIXME: broken image
-@c @image{\IMAGE-FILE\}
-@end ifnothtml
+@iftex
+@image{pictures/out-www/\IMAGE-FILE\,,,\IMAGE-FILE\,\EXT\}
+@end iftex
+@ifinfo
+FIXME: images broken in info
+@c @sourceimage{lilypond/\IMAGE-FILE\,,,\EXT\}
+@end ifinfo
 @end macro
 
-@macro imageId{ID, IMAGE-FILE, ALT}
+@macro imageId{ID, IMAGE-FILE, EXT, ALT}
 @html
 <div id="\ID\">
-  <img src="pictures/\IMAGE-FILE\" alt="\ALT\">
+  <img src="pictures/\IMAGE-FILE\.\EXT\" alt="\ALT\">
 </div>
 @end html
-@ifnothtml
-FIXME: broken image
-@c @image{\IMAGE-FILE\}
-@end ifnothtml
+@iftex
+@image{pictures/out-www/\IMAGE-FILE\,,,\ALT\}
+@end iftex
+@ifinfo
+FIXME: images broken in info
+@c @sourceimage{lilypond/\IMAGE-FILE\,,,\ALT\}
+@end ifinfo
 @end macro
 
 @end ifset
index 981879ea860fbbe91167bd1b1d34e498fc573107..1c9cebd37aa4e5019bfe27be248d312f47fc36a7 100644 (file)
@@ -157,7 +157,7 @@ about which font packages are necessary for your platform)
 @uref{http://bugs.ghostscript.com/show_bug.cgi?id=688154}
 and the patch from
 @uref{http://bugs.ghostscript.com/show_bug.cgi?id=688017}.
-@item @uref{http://www.nongnu.org/texi2html/,Texi2HTML} 1.80 or newer
+@item @uref{http://www.nongnu.org/texi2html/,Texi2HTML} 1.82 or newer
 @item rsync
 @end itemize
 
index 9184fede9f8edbb33e5ac399875d392987e34d0d..9ed969bec8d9ec8d8f924a62774ed9b0859b04f9 100644 (file)
@@ -16,6 +16,8 @@ Priorities:
 Files marked with priority 3, 4 or 5 may be submitted individually.
 Word counts (excluding LilyPond snippets) are given for each file.
 
+FIXME: take into account the new web site integration in main sources.
+
 @example
 -1- Documentation index and Tutorial
 429   learning.tely
index 08dd49f2fd336cfcafc21a16232da4ab9a131277..e485e274bd04e6a32c7f3ecf42f0804e4fe3b3e5 100644 (file)
@@ -1065,6 +1065,15 @@ This also updates translated documentation.
 @node Translating the documentation
 @section Translating the documentation
 
+The mailing list @code{translations@@lilynet.net} is dedicated to
+LilyPond web site and documentation translation; on this list, you will
+get support from the Translations Meister and experimented translators,
+and we regularly discuss translations issues common to all languagues.
+All people interested in LilyPond translations are invited to subscribe
+to this list regardless of the amount of their contribution, by sending
+an email to @code{translations-request@@lilynet.net} with subject
+@code{subscribe} and an empty message body.
+
 @menu
 * Getting started with documentation translation::
 * Documentation translation details::
@@ -1104,12 +1113,12 @@ motivation and a suitable system, it can be very useful to build at
 least the documentation so that you can check the output yourself and
 more quickly; if you are interested, see @ref{Compiling from source}.
 
-@menu
-@end menu
 
 @node Which documentation can be translated
 @unnumberedsubsubsec Which documentation can be translated
 
+FIXME: take into account the new web site integration in main sources.
+
 The makefiles and scripts infrastructure currently supports translation
 of the following documentation:
 
@@ -1329,10 +1338,11 @@ and editing snippets}.
 names, file names and comments should be translated.
 
 Finally, please carefully apply every rule exposed in @ref{Texinfo
-introduction and usage policy}, and @ref{Documentation policy}.  If
-one of these rules conflicts with a rule specific to your language,
-please ask the Translation meister and/or the Documentation Editors on
-@email{lilypond-devel@@gnu.org}.
+introduction and usage policy}, and @ref{Documentation policy}.  If one
+of these rules conflicts with a rule specific to your language, please
+ask the Translation meister on @email{translations@@lilynet.net} list
+and/or the Documentation Editors on @email{lilypond-devel@@gnu.org}
+list.
 
 
 @node Translating the Notation Reference and Application Usage
@@ -1385,6 +1395,11 @@ revision of the translation.  To check a single file, cd into
 make CHECKED_FILES=@var{MY_LANGUAGE}/@var{manual}/@var{foo}.itely check-translation
 @end example
 
+@noindent
+In case this file has been renamed since you last updated the
+translation, you should specify both old and new file names,
+e.g. @code{CHECKED_FILES=@var{MY_LANGUAGE}/@{@var{manual},user@}/@var{foo}.itely}.
+
 To see only which files need to be updated, do
 
 @example
index 6d6d55e86c358c9155a7a7076dd6326e8bed44f2..d3886c525a8d515ac16087d7d6a60860dfa23a9e 100644 (file)
@@ -21,12 +21,11 @@ at @uref{http://git-scm.com/documentation},
 
 @menu
 * Git introduction::            
+* Git user configuration::      
 * Main source code::            
-* Website source code::         
 * Documentation translations source code::  
 * Other branches::              
 * Other locations for git::     
-* Git user configuration::      
 @end menu
 
 @node Git introduction
@@ -36,10 +35,38 @@ The source code is kept in a Git respository.  This allows us to
 track changes to files, and for multiple people to work on the
 same set of files efficiently.
 
+After downloading the source code, it is important to update the
+repository by @ref{Updating the source code}.
+
 @warning{These instructions assume that you are using the
 command-line version of Git 1.5 or higher.  Windows users should
 skip to @ref{Git on Windows}.}
 
+Some sections of this guide will redirect to specific Git man pages;
+however, if you think you need to understand more of Git, you might want
+to read the book @uref{http://progit.org/,Pro Git}.
+
+
+@node Git user configuration
+@subsection Git user configuration
+
+Some useful cofiguration can be performed automatically; cut and
+paste the following section:
+
+@example
+git config --global color.ui auto
+git config --global branch.autosetuprebase always
+@end example
+
+To configure git to automatically use your name and email address
+for commits and patches, edit the below lines by changing all the
+@code{MY...} entries:
+
+@example
+git config --global user.name "MYNAME"
+git config --global user.email MYEMAIL@@EXAMPLE.NET
+@end example
+
 
 @node Main source code
 @subsection Main source code
@@ -57,23 +84,11 @@ git checkout -b master origin/master
 @end smallexample
 
 
-@node Website source code
-@subsection Website source code
-
-To get the website (including translations),
-
-@smallexample
-mkdir lilypond-web ; cd lilypond-web
-git init-db
-git remote add -f -t web -m web origin git://git.sv.gnu.org/lilypond.git/
-git checkout -b web origin/web
-@end smallexample
-
-
 @node Documentation translations source code
 @subsection Documentation translations source code
 
 To translate the documentation (@emph{not} the website),
+FIXME: when website is integrated, modify this.
 
 @smallexample
 mkdir lilypond-translation; cd lilypond-translation
@@ -91,17 +106,6 @@ you wish to do so, you will need more familiarity with git.
 
 @itemize
 
-@item @code{gub}:
-This stores the Grand Unified Binary, our cross-platform building
-tool.
-@c TODO: merge the gub stuff with this CG.
-For more info, see @uref{http://lilypond.org/gub}.  The git
-location is:
-
-@example
-http://github.com/janneke/gub
-@end example
-
 @item @code{dev/XYZ}:
 These branches are for individual developers.  They store code
 which is not yet stable enough to be added to the @code{master}
@@ -112,6 +116,15 @@ The branches are kept for archival reasons.
 
 @end itemize
 
+Another item of interest might be the Grand Unified Builder, our
+cross-platform building tool.  Since it is used by projects as
+well, it is not stored in our gub repository.  For more info, see
+@uref{http://lilypond.org/gub}.  The git location is:
+
+@example
+http://github.com/janneke/gub
+@end example
+
 
 @node Other locations for git
 @subsection Other locations for git
@@ -130,17 +143,6 @@ SSH and Git protocols fail, which happens e.g. if you connect to
 internet through a router that filters out Git and/or SSH connections.
 
 
-@node Git user configuration
-@subsection Git user configuration
-
-To configure git to automatically use your name and email address
-for commits and patches,
-
-@example
-git config --global user.name "MYNAME"
-git config --global user.email MYEMAIL@@EXAMPLE.NET
-@end example
-
 
 @node Updating the source code
 @section Updating the source code
@@ -159,9 +161,8 @@ In a large project like LilyPond, contributors sometimes edit the same
 file at the same time.  As long as everybody updates their version of
 the file with the most recent changes (@emph{pulling}), there are
 generally no problems with this multiple-person editing.  However,
-boring problems can arise if you do not pull before attempting commit,
-e.g. you may encounter a conflict; in this case, see @ref{Resolving
-conflicts}.
+big problems can arise if you do not pull before attempting to
+commit.  If this occurs, see @ref{Resolving conflicts}.
 
 
 @node Update command
@@ -175,6 +176,32 @@ the remote @code{git.sv.gnu.org} repository:
 git pull -r
 @end example
 
+@noindent
+The @code{-r} option is short for @code{--rebase}.  If you don't
+want to type @code{-r} every time, add @code{rebase = true} to the
+master branch in your @file{.git/config}, like so:
+
+@example
+[branch "master"]
+        remote = origin
+        merge = refs/heads/master
+        rebase = true
+@end example
+
+@warning{translators and documentation editors, if you have changed
+committishes in the head of translated files using commits you have not
+yet pushed to @code{git.sv.gnu.org}, please do not rebase.  If you want
+to avoid wondering whether you should rebase each time you pull, please
+always use committishes from master and/or lilypond/translation branch
+on @code{git.sv.gnu.org}, which in particular implies that you must push
+your changes to documentation except committishes updates (possibly
+after having rebased), then update the committishes and push them.}
+
+@c FIXME: when committishes automatic conditional update have been
+@c tested and documented, append the following to the warning above:
+@c Note that using update-committishes make target generally touches
+@c committishes.
+
 
 @node Resolving conflicts
 @subsection Resolving conflicts
@@ -232,24 +259,25 @@ If you added a file to the source code, you must add it to git
 with:
 
 @example
-git add FILENAME
+git add @var{FILENAME}
 @end example
 
 @noindent
 (and possibly modify the @file{GNUmakefile})
 
-These commands will produce one or more files named
-@file{0001-xyz}, @file{0002-abc}, etc. in the top directory of the
-git tree.  Send an email to @email{lilypond-devel@@gnu.org} with
-these files attached, and a developer will review and apply the
-patches to the main repository.
+These commands will produce one or more files named @file{0001-xyz},
+@file{0002-abc}, etc. in the top directory of the git tree.  Send an
+email to @email{lilypond-devel@@gnu.org} with these files attached, and
+a developer will review and apply the patches to the main repository.
+If your patch is some translation work, you may send it to
+@email{translations@@lilynet.net} instead.
 
 
 @node Committing directly
 @subsection Committing directly
 
-Most contributors do not have permission to commit directly.  If you
-do, make sure you have set up your name and email in @ref{Git user
+Most contributors do not have permission to commit directly.  If you do,
+make sure you have set up your name and email in @ref{Git user
 configuration}, then edit @file{.git/config}: change the line
 
 @example
index 529227a1aa9fac81cc4969a11f7f413210484802..8fd68cf037f34a27595058b67b6fc3466b4c5768 100644 (file)
@@ -100,7 +100,7 @@ Priority-Regression: it used to work.
 @item
 Priority-Medium: normal priority; this is the highest priority a
 non-crashing, non-regression bug report can receive.
-(irregardless of the perceived importance)
+(regardless of the perceived importance)
 
 @item
 Priority-Low: less important than normal.
index bff7bbf47125137b914fa0875a97f85c2b681852..43a8e42632b29e2aea28823d217c1b2cfc67fbcf 100644 (file)
@@ -721,11 +721,11 @@ The compilation of the .ly file will then continue.
 When a new feature is to be added to LilyPond, it is necessary to
 ensure that the feature is properly integrated to maintain
 its long-term support.  This section describes the steps necessary
-for feature addition.
+for feature addition and modification.
 
 @subsection Write the code
 
-You should create a new git branch for writing the code, as that
+You should probably create a new git branch for writing the code, as that
 will separate it from the master branch and allow you to continue
 to work on small projects related to master.
 
@@ -748,29 +748,6 @@ multiple-issue regression test.
 Use existing regression tests as templates to demonstrate the type of
 header information that should be included in a regression test.
 
-@subsection Write documentation
-
-Although it is not required, it is helpful if the developer can
-write relevant material for inclusion in the Notation Reference.
-If the developer does not feel qualified to write the documentation,
-a documentation editor will be able to write it from the regression
-tests.
-
-If the modification changes the input syntax so that inline snippets in
-the documentation need to be changed, you will need to change the
-snippets in both the english version of the documentation and any
-translated versions.  If you do not change the snippets in all
-translations, older versions of the snippet may be included
-when the documentation is built.
-
-If lsr snippets need to be changed, the snippet should be copied to
-@file{Documentation/snippets/new} and modified there.  The portions of
-the snippet that are added by makelsr.py should be removed.  The changed
-snippet will then be included in all versions of the documentation.
-
-If non-snippet text is changed in the english documentation, no
-corresponding changes should be made in the translated documentation.
-
 @subsection Write convert-ly rule
 
 If the modification changes the input syntax, a convert-ly rule
@@ -784,6 +761,89 @@ of the file.  In some cases, this will not be possible, so the
 rule will simply point out to the user that the feature needs
 manual correction.
 
+@subsection Automatically update documentation, snippets, and regtests
+
+convert-ly should be used to update the documentation, the snippets,
+and the regression tests.  This not only makes the necessary syntax
+changes, it also tests the convert-ly rules.
+
+The automatic updating is a three step process.  First, be sure you
+are in the top-level source directory.  Then, for the
+documentation, do:
+
+@example
+find Documentation/ -name '*.itely' | xargs convert-ly -e --from @qq{@var{X.Y.Z}}
+@end example
+
+@noindent
+where @var{X.Y.Z} is the version number of the last released development
+version.
+
+Next, for the snippets, do:
+
+@example
+find Documentation/snippets/ -name '*.ly' | xargs convert-ly -e --from @qq{@var{X.Y.Z}}
+@end example
+
+Finally, for the regression tests, do:
+
+@example
+find input/regression/ -name '*.ly' | xargs convert-ly -e --from @qq{@var{X.Y.Z}}
+
+@end example
+
+@subsection Manually update documentation, snippets, and regtests
+
+Where the convert-ly rule is not able to automatically update the inline
+lilypond code in the documentation (i.e. if a NOT_SMART rule is used), the
+documentation must be manually updated.  The inline snippets that require
+changing must be changed in the English version of the docs and all
+translated versions.  If the inline code is not changed in the
+translated documentation, the old snippets will show up in the
+English version of the documentation.
+
+Where the convert-ly rule is not able to automatically update snippets
+in Documentation/snippets/, those snippets must be manually updated.
+Those snippets should be copied to Documentation/snippets/new.  The
+comments at the top of the snippet describing its automatice generation
+should be removed.  All translated texidoc strings should be removed.
+The comment @qq{% begin verbatim} should be removed.  The syntax of
+the snippet should then be manually edited.
+
+Where snippets in Documentation/snippets are made obsolete, the snippet
+should be copied to Documentation/snippets/new.  The comments and
+texidoc strings should be removed as described above.  Then the body
+of the snippet should be changed to:
+
+@example
+\markup @{
+  "This snippet is deprecated as of version X.Y.Z and
+  will be removed from the documentation."
+@}
+@end example
+
+@noindent
+where X.Y.Z is the version number for which the convert-ly rule was
+written.
+
+Update the snippet files by running:
+
+@example
+scripts\auxiliar\makelsr.py
+@end example
+
+Where the convert-ly rule is not able to automatically update regression
+tests, the regression tests in input/regression should be manually
+edited.
+
+Although it is not required, it is helpful if the developer
+can write relevant material for inclusion in the Notation
+Reference.  If the developer does not feel qualified to write
+the documentation, a documentation editor will be able to
+write it from the regression tests.  The text that is added to
+or removed from the documentation should be changed only in
+the English version.
+
 @subsection Write NEWS entry
 
 An entry should be added to the NEWS file to describe the feature
@@ -797,6 +857,22 @@ New entries in NEWS go at the top of the file.
 The NEWS entry should be written to show how the new change
 improves LilyPond, if possible.
 
+@subsection Verify successful build
+
+When the changes have been made, successful completion must be
+verified by doing
+
+@example
+make all
+make doc
+@end example
+
+When these commands complete without error, the patch is
+considered to function successfully.
+
+Developers on Windows who are unable to build LilyPond should
+get help from a Linux or OSX developer to do the make tests.
+
 @subsection Verify regression test
 
 In order to avoid breaking LilyPond, it is important to verify that
@@ -806,7 +882,26 @@ the regression tests all succeed.  This process is described in
 @subsection Post patch for comments
 
 For any change other than a minor change, a patch set should be
-posted on Rietveld for comment.
+posted on Rietveld for comment.  This requires the use of an
+external package, git-cl.
+
+git-cl is installed by:
+
+@example
+git clone git://neugierig.org/git-cl.git
+@end example
+
+Then, add the git-cl directory to your PATH, or create a
+symbolic link to the git-cl and upload.py in one of your
+PATH directories (like usr/bin).  git-cl will is then
+configured by
+
+@example
+git-cl config
+@end example
+
+@noindent
+and answering the questions that are asked.
 
 The patch set is posted by issuing the following command, after
 first committing all changes:
index ee917448cc5c536461697738486b919fd24a6386..4ccf54f206aa69a67f5d48ae11c0261a195b2904 100644 (file)
@@ -413,3 +413,21 @@ table.menu {
   #tocframe { display: none; }
   .nav_table { display: none; }
 }
+
+
+/***********************************************************/
+/*               OTHER                                     */
+/***********************************************************/
+
+.warning {
+  background: #eef;
+  text-align: left;
+  padding: 0;
+  border: 1px solid green;
+  /* Experimental rounded corners */
+  -moz-border-radius: 10px;
+  -webkit-border-radius: 10px;
+  margin: 1em;
+}
+
+
index 3b3994905fee6490879ebc4c98d8fe121d65cf0c..73a875069183445802d121d46aed7bc4297a7423 100644 (file)
@@ -49,7 +49,7 @@ div#tocframe {
   top: 0;
   left: 0;
   right: 0;
-  background: #9ccc7c;
+  background: url(../pictures/nav-bg.jpg) repeat-x top left;
   max-width: 70em;
   font-size: 100%;
   line-height: 1;
@@ -73,7 +73,7 @@ div#tocframe {
 
 #tocframe > ul:first-child > li:first-child a {
   text-indent: -999em;
-  background: #9ccc7c url(../pictures/lily-home.png) no-repeat 50% 50%;
+  background: url(../pictures/lily-home-nav-bg.png) no-repeat 50% 50%;
   width: 9%;
   /* css3 no go yet? */
   border-bottom-left-radius: 30px;
@@ -82,19 +82,19 @@ div#tocframe {
 }
 
 #tocframe > ul:first-child > li:first-child a:hover {
-  background: #bdee9d url(../pictures/lily-home.png) no-repeat 50% 50%;
+  background: url(../pictures/lily-home-nav-hover.png) no-repeat 50% 50%;
   width: 9%;
 }
 
 #tocframe > ul:first-child > li:first-child.toc_current a {
   text-indent: -999em;
-  background: #8cbc6c url(../pictures/lily-home.png) no-repeat 50% 50%;
+  background: url(../pictures/lily-home-nav-active.png) no-repeat 50% 50%;
   width: 9%;
 }
 
 #tocframe > ul:first-child > li:first-child.toc_current a:hover {
   text-indent: -999em;
-  background: #acdd8c url(../pictures/lily-home.png) no-repeat 50% 50%;
+  background: url(../pictures/lily-home-nav-active.png) no-repeat 50% 50%;
   width: 9%;
 }
 
@@ -114,7 +114,7 @@ div#tocframe {
 #tocframe li form {
   float: left;
   width: 17%;
-  background: #9ccc7c;
+  background: url(nav-bg.jpg);
   font-size: 100%;
   padding: 0.5em 0.8%;
   margin: 0;
@@ -134,6 +134,11 @@ div#tocframe {
   -webkit-border-bottom-right-radius: 20px;
 }
 
+#tocframe li form input[type="hidden"] {
+  visibility: hidden;
+  background: #f00;
+}
+
 #tocframe li a {
   float: left;
   width: 18%;
@@ -141,18 +146,19 @@ div#tocframe {
   font-weight: bold;
   padding: 0.85em 0;
   margin: 0;
-  background: #9ccc7c;
+  background: url(nav-bg.jpg);
 }
 
 #tocframe li a:hover {
-  background: #bdee9d;
-  text-decoration: none;
+  background: url(nav-hover.jpg);
+  text-decoration: underline;
 }
 
 #tocframe li.toc_current a,
 #tocframe li.toc_current a:hover {
-  background: #8cbc6c;
-  text-decoration: none;
+  background: url(nav-active.jpg);
+  color:#000;
+  text-decoration: underline;
 }
 
 /* second level toc (unnumberedsec) */
@@ -503,9 +509,10 @@ div#language {
 
 #verifier_texinfo {
   position: absolute;
-  top: 0;
+  bottom: 0;
   right: 0;
   left: 50%;
+  width: 50%;
 }
 
 #verifier_texinfo h3 {
index 49d861015712b68cc54a6fe180773b884e3a13eb..4f9c5d23ac9ed160596d58ead7a8522ae93ee9e4 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: d415427752fa5fd83b0da189d677481d1c7f3043
+    Translation of GIT committish: 5cf864d550e7148412d594cf336841791bff6f76
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -529,13 +529,30 @@ convert-ly -e meineDatei.ly
 
 @noindent
 auszuführen.
-@c MacOS@tie{}X-Benutzer können diesen Befehl im Menu unter
-@c @code{Compile > Update syntax} finden.
-@c Does it work? TR
 
-Wenn keine Veränderungen in @code{meineDatei.ly} vorgenommen wurden
-und eine Datei @code{meineDatei.ly.NEW} erstellt wird, it
-@code{meineDatei.ly} schon aktuell.
+Damit wird @code{meineDatei.ly} direkt aktualisiert und die
+Originaldatei unter @code{meineDatei.ly~} gespeichert.
+
+Alternativ kann man der aktualisierten Datei auch einen anderen
+Namen geben, in welchem Fall die Originaldatei unverändert
+gelassen wird.  Das geht mit dem Befehl
+
+@example
+convert-ly meineDatei.ly > meineneueDatei.ly
+@end example
+
+Das Programm zeigt die Versionsnummern an, für die Konvertierungen
+vorgenommen wurden.  Wenn keine Versionsnummern angezeigt werden,
+ist die Datei schon aktuell.
+
+
+MacOS@tie{}X-Benutzer können diesen Befehl im Menu unter
+@code{Compile > Update syntax} finden.
+
+Benutzer unter Windows müssen diesen Befehl auf der Eingabeaufforderung
+schreiben, welche man üblicherweise unter dem Menüeintrag
+@code{Start > Alle Programme > Zubehör > Eingabeaufforderung} zu
+finden ist.
 
 
 @menu
@@ -543,6 +560,7 @@ und eine Datei @code{meineDatei.ly.NEW} erstellt wird, it
 * Probleme mit convert-ly::
 @end menu
 
+
 @node Optionen von convert-ly auf der Kommandozeile
 @subsection Optionen von @command{convert-ly} auf der Kommandozeile
 @translationof Command line options for convert-ly
@@ -552,49 +570,24 @@ die es beherrscht.  Das heißt, dass die neue @code{version}-Nummer
 in der Datei überlicherweise etwas niedriger ist als die
 Version von @command{convert-ly}.
 
-Um LilyPond-Fragmente in texinfo-Dateien zu aktualisieren, gilt
-der Befehl:
-
-@example
-convert-ly --from=... --to=... --no-version *.itely
-@end example
-
-Um die Änderungen der LilyPond-Syntax zwischen bestimmten Versionen
-zu sehen, kann der Befehl
-
-@example
-convert-ly --from=... --to=... -s
-@end example
-
-@noindent
-benutzt werden.
-
-Viele Dateien können auf einmal aktualisiert werden, indem
-@code{convert-ly} mit den üblichen UNIX-Befehlen kombiniert
-wird.  Das folgende Beispiel aktualisiert alle @code{.ly}-Dateien
-im aktuellen Verzeichnis:
-
-@example
-for f in *.ly; do convert-ly -e $f; done;
-@end example
-
 Die allgemeine Syntax des Programms lautet:
 
 @example
-convert-ly [@var{option}]@dots{} @var{file}@dots{}
+convert-ly [@var{Option}]@dots{} @var{Dateiname}@dots{}
 @end example
 
 Folgende Optionen sind möglich:
 
 @table @code
 @item -e,--edit
-Verändere die entsprechende Zeile der Eingabedatei. Überschreibt
-@code{--output}.
+Führt die Aktualisierung direkt in der Datei durch, die Datei wird
+dabei verändert.
 
 @item -f,--from=@var{von-Versionsnummer}
 Setze die Version, ab welcher konvertiert werden soll.  Wenn diese
 Option nicht gesetzt ist, versucht @command{convert-ly}, die
 Version auf Grundlage von @code{\version} zu raten.
+Beispiel: @code{--from=2.10.25}
 
 @item -n,--no-version
 Normalerweise fügt @command{convert-ly} eine @code{\version}-Zeile
@@ -605,17 +598,52 @@ Zeige alle bekannten Konversionsregeln und beende.
 
 @item --to=@var{bis-Versionsnummer}
 Hiermit kann das Ziel der Konversion gesetzt werden.  Standard ist
-die neueste mögliche Version.
+die neueste mögliche Version. Beispiel: @code{--to=2.12.2}
 
 @item -h, --help
 Benutzerhilfe ausgeben.
 @end table
 
+Um LilyPond-Fragmente in texinfo-Dateien zu aktualisieren, gilt
+der Befehl:
+
+@example
+convert-ly --from=... --to=... --no-version *.itely
+@end example
+
+Um die Änderungen der LilyPond-Syntax zwischen bestimmten Versionen
+zu sehen, kann der Befehl
+
+@example
+convert-ly --from=... --to=... -s
+@end example
+
+@noindent
+benutzt werden.
+
+Viele Dateien können auf einmal aktualisiert werden, indem
+@code{convert-ly} mit den üblichen UNIX-Befehlen kombiniert
+wird.  Das folgende Beispiel aktualisiert alle @code{.ly}-Dateien
+im aktuellen Verzeichnis:
+
+@example
+for f in *.ly; do convert-ly -e $f; done;
+@end example
+
+
 
 @node Probleme mit convert-ly
 @subsection Probleme mit @code{convert-ly}
 @translationof Problems with convert-ly
 
+Wenn convert-ly unter Windows auf der Eingabeaufforderung mit einer
+Datei benutzt wird, deren Name oder Pfad Leerzeichen enthält, muss
+der gesamte Dateipfad mit drei (!) Anführungszeichen umgeben werden:
+
+@example
+convert-ly """D:/My Scores/Ode.ly""" > """D:/My Scores/new Ode.ly"""
+@end example
+
 Nicht alle Änderungen der Syntax können konvertiert werden.  Nur
 eine Ausgabeoption kann angegeben werden.  Scheme- und
 LilyPond-Scheme-Code wird sehr unwahrscheinlich korrekt aktualisiert,
index 2fab8c29d8e7aa5ab942eb28cdbad535438e5671..e5b73d84ece543c3373da89fafc0964b2c0013dd 100644 (file)
@@ -7,7 +7,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.12.0"
+@c \version "2.13.4"
 @c Translators: Till Rettig, Reinhold Kainhofer
 @c Translation checkers: Hajo Bäß
 
@@ -352,7 +352,7 @@ fragment = {
 <<
    \new Staff \fragment
    \new Staff \with {
-      \override Beam #'thickness = #0.3
+      \override Beam #'beam-thickness = #0.3
       \override Stem #'thickness = #0.5
       \override Bar #'thickness = #3.6
       \override Tie #'thickness = #2.2
@@ -391,7 +391,7 @@ die Notenköpfe gezeichnet werden, während des Ausschnitts verändert.
   \set autoBeaming = ##f
   \time 2/4
   <d f g>4
-  \once \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
+  \once \override NoteHead #'stencil = #note-head::brew-ez-stencil
   \once \override NoteHead #'font-size = #-7
   \once \override NoteHead #'font-family = #'sans
   \once \override NoteHead #'font-series = #'bold
@@ -804,7 +804,7 @@ nächste Beispiel zeigt einige etwas exotischere Konstruktionen:
       \key c \minor
       \set subdivideBeams = ##f
       \override Stem  #'french-beaming = ##t
-      \override Beam  #'thickness = #0.3
+      \override Beam  #'beam-thickness = #0.3
       \override Stem  #'thickness = #4.0
       g'16[ b16 fis16 g16]
       << \makeClusters {
index 8951a43acf91ebb0f55178843f5f46e1c49325b9..35bd95de3b48581fa03093bd13994276aa71fe1a 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: 5131c3292d30cabdf08839daa02a006e4d3c96c5
+    Translation of GIT committish: 5cf864d550e7148412d594cf336841791bff6f76
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -25,8 +25,28 @@ zusammenzufügen.  Dieser Abschnitt ist ein sehr kurzer Überblick über
 die Dateneingabe mit Scheme.  Wenn Sie mehr über Scheme wissen wollen,
 gehen Sie zu @uref{http://@/www@/.schemers@/.org}.
 
+LilyPond benutzt die GNU Guile-Implementation von Scheme, die auf dem
+@qq{R5RS}-Standard von Scheme basiert.  Wenn Sie Scheme lernen wollen,
+um es innerhalb von LilyPond zu benutzen, wird es nicht empfohlen,
+mit einer anderen Implementation (die sich auf einen anderen
+Standard bezieht) zu arbeiten.  Information zu Guile findet sich
+unter @uref{http://www.gnu.org/software/guile/}.  Der
+@qq{R5RS}-Standard von Scheme befindet sich unter der Adresse
+@uref{http://www.schemers.org/Documents/Standards/R5RS/}.
+
+Die LilyPond-Installation enthält gleichzeitig auch die
+Guile-Implemenation von Scheme.  Auf den meisten Systemen kann
+man in einer Scheme-sandbox experimentieren, indem man ein
+Kommandozeilen-Fenster öffnet und @code{guile} auffruft.  Unter
+einigen Systemen, insbesondere unter Windows, muss man evtl.
+die Umgebungsvariable @code{GUILE_LOAD_PATH} auf das Verzeichnis
+@code{../usr/shr/guile/1.8} innerhalb des LilyPond-Installationsverzeichnisses
+setzen (der vollständige Pfad ist erklärt in @ref{Other sources of information}).
+Alternativ können Windows-Benutzer auch einfach @qq{Ausführen} im
+Startmenü wählen und @code{guile} schreiben.
+
 Das Grundlegendste an einer Sprache sind Daten: Zahlen, Zeichen, 
-Zeichenketten, Listen usw.  Hier ist eine Liste der Datentypen, die für 
+Zeichenketten, Listen usw.  Hier ist eine Liste der Datentypen, die für
 LilyPond-Eingabedateien relevant sind.
 
 @table @asis
@@ -81,6 +101,37 @@ ist
 eine Zeichenkette"
 @end example
 
+LilyPond-Kommentare (@code{%} oder @code{%@{ %@}}) können innerhalb
+von Scheme-Code nicht benutzt werden.  Kommentare in Guile Scheme
+werden wie folgt notiert:
+
+@example
+; Einzeiliges Kommentar
+
+#!
+  Guile-Stil Blockkommentar (nicht schachtelbar)
+  Diese Kommentare werden von Scheme-Programmierern
+  selten benutzt und nie im Quellcode
+  von LilyPond
+!#
++@end example
+
+Merere aufeinander folgende Scheme-Ausdrücke in einer Notationsdatei
+können kombiniert werden, wenn man @code{begin} einsetzt.  Das
+erlaubt es, die Anzahl an Rauten auf eins zu begrenzen.
+
+@example
+#(begin
+  (define foo 0)
+  (define bar 1))
+@end example
+
+Wenn @code{#} von einer öffnenden Klammer, @code{(}, gefolgt wird, wie
+in dem Beispiel oben, bleibt der Parser im Scheme-Modus bis eine
+passende schließende Klammer, @code{)}, gefunden wird, sodass keine
+weiteren @code{#}-Zeichen benötigt werden, um einen Scheme-Abschnitt
+anzuzeigen.
+
 Für den Rest dieses Abschnitts nehmen wir an, dass die Daten immer in 
 einer LilyPond-Datei stehen, darum wird immer die Raute verwendet.
 
index c0f4b7d8c4d00c22f1c86e7207ade5708f57e016..ff8a6d23d0d8613cb1d6cd6b85927e93d70f3e07 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
+    Translation of GIT committish: 5cf864d550e7148412d594cf336841791bff6f76
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -1187,7 +1187,17 @@ Es sollte jedoch beachtet werden, dass das Setzen der
 kann, wenn die Dimensionen des Objekts für die richtige Behandlung
 benötigt werden.  Zum Beispiel werden Fehler ausgegeben, wenn
 die @code{stencil}-Eigenschaft des @code{NoteHead}-Objekts auf
-@code{#f} gesetzt wird.
+@code{#f} gesetzt wird. Wenn dieser Fall auftritt, kann anstatt
+dessen die @code{point-stencil}-Funktion benutzt werden, welche
+den Stencil auf ein Objekt mit der Größe Null setzt:
+
+@lilypond[quote,verbatim,relative=2]
+{
+  c c
+  \once \override NoteHead #'stencil = #point-stencil
+  c c
+}
+@end lilypond
 
 
 @subheading break-visibility (unsichtbar machen)
index 7fa259656a51c7fb0b891b1ba95de987d9abda9d..dfd9e8ea8a74b82e19534a74463c037ccc1e1249 100644 (file)
 @end macro
 
 
-@c obsolete, remove when translation is fully updated
-@macro commonprop
-@noindent
-@subsubheading Übliche Veränderungen der Einstellungen
-@end macro
-
 
 @c Don't insert an empty line after @seealso!  Otherwise we get
 @c unwanted extra vertical space in the PDF output.
 
 @c   ***** Links and references *****
 
-@c obsolete
-@c usage: @lsr{ancient,custodes.ly}
-@macro lsr{DIR,TEXT}
-@ifhtml
-@uref{source/input/lsr/\DIR\/collated-files.html#\TEXT\,@file{\DIR\/\TEXT\}}
-@end ifhtml
-@ifnothtml
-@file{\DIR\/\TEXT\}
-@end ifnothtml
-@end macro
-
-@c don't update until this macro is correctly set up in English docs
-@macro lsrdir{DIR}
-@ifhtml
-@uref{source/input/lsr/\DIR\/collated-files.html,@file{\DIR\}/}
-@end ifhtml
-@ifnothtml
-@file{\DIR\}
-@end ifnothtml
-@end macro
-
-
 @c  Definitions for references:
 @c
 @c     @rglos
index cf6f1e219c7579f862f64b6caa21611ec4f5ba1a..6d1e7c7af5f424b7c554e8d06fde3b75ea241370 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: 5131c3292d30cabdf08839daa02a006e4d3c96c5
+    Translation of GIT committish: 5cf864d550e7148412d594cf336841791bff6f76
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -377,6 +377,35 @@ Ein mehrzeiliger Kommentar, umgeben von @code{%@{ .. %@}}.
 
 @end itemize
 
+@cindex Leerzeichen
+
+Leerzeichen zwischen Einheiten in der Eingabe werden generell ignoriert
+und können nach Belieben weggelassen werden oder hinzugefügt werden,
+um die Lesbarkeit des Codes zu verbessern.  Mindestens ein Leerzeichen
+sollte jedoch unter folgenden Umständen immer eingesetzt werden, um
+Fehler zu vermeiden:
+
+@itemize
+@item
+Vor und hinter jeder schließenden oder öffnenden Klammer,
+@item
+nach jedem Befehl oder jeder Variable, also jeder Einheit, die mit
+@code{\} beginnt,
+@item
+nach jeder Einheit, die als Scheme-Ausdruck interpretiert werden,
+also alle Einheiten, die mit @code{#} beginnen.
+@item
+Alle Einheiten von Scheme-Ausdrücken müssen mit Leerzeichen getrennt
+werden,
+@item
+in Gesangstextabschnitten (@code{lyricmode}) müssen Leerzeichen
+zwischen alle Ausdrücke in @code{\override}- und @code{\set}-Befehlen
+gesetzt werden.  Insbesondere müssen um Punkte und Gleichzeitszeichen
+in Befehlen wie @code{\override Score . LyricTex #'font-size = #5)}
+und vor dem gesamten Befehl geschrieben werden.
+
+@end itemize
+
 @seealso
 Hanbuch zum Lernen:
 @rlearning{Wie eine LilyPond-Eingabe-Datei funktioniert}.
@@ -1250,6 +1279,10 @@ than one tagged section at the same place.
 @subsection Zeichenkodierung
 @translationof Text encoding
 
+@cindex Unicode
+@cindex UTF-8
+@cindex Nicht-ASCII-Zeichen
+
 LilyPond benutzt alle Zeichen, die durch das Unicode-Konsortium
 und ISO/IEC 10646 definiert sind.  Hiermit wird den Zeichen
 fast aller Schriftsysteme der Welt ein eindeutiger Name und ein
@@ -1346,6 +1379,8 @@ im Gesangstext und als normaler Text außerhalb der Partitur.
 \markup { "Copyright 2008--2009" \char ##x00A9 }
 @end lilypond
 
+@cindex Copyright-Zeichen
+
 Um das Copyright-Zeichen zu notieren, kann folgender Code eingesetzt werden:
 
 @example
index ce54cd0b73e8d90c8cde629ed39558db829a69f7..dbb52c1e33420385ef984e9b5736d0c4c5a8fe94 100644 (file)
@@ -267,7 +267,7 @@ Intervall enthält.
 
 
 @seealso
-Musickgossar:
+Musikgossar:
 @rglos{fifth},
 @rglos{interval},
 @rglos{Pitch names}.
index 27482271d73af95e4d1462b0ae0010d4c8e21e4c..6eda1e23f8cf3c8dca6e1f63dc90dc2fbee77403 100644 (file)
@@ -18,12 +18,12 @@ Dieser Abschnitt erklärt die Eingabe von Rhythmen, Pausen,
 Dauern, Bebalkung und Takten.
 
 @menu
-* Rhythmen eingeben::             
-* Pausen eingeben::               
-* Rhythmen anzeigen lassen::          
-* Balken::                       
-* Takte::                        
-* Besondere rhythmische Fragen::   
+* Rhythmen eingeben::
+* Pausen eingeben::
+* Rhythmen anzeigen lassen::
+* Balken::
+* Takte::
+* Besondere rhythmische Fragen::
 @end menu
 
 
@@ -32,10 +32,10 @@ Dauern, Bebalkung und Takten.
 @translationof Writing rhythms
 
 @menu
-* Tondauern::                   
-* Andere rhythmische Aufteilungen::                     
-* Tondauern skalieren::           
-* Bindebögen::                        
+* Tondauern::
+* Andere rhythmische Aufteilungen::
+* Tondauern skalieren::
+* Bindebögen::
 @end menu
 
 @node Tondauern
@@ -598,9 +598,9 @@ den Noten notiert.
 
 
 @menu
-* Pausen::                       
-* Unsichtbare Pausen::             
-* Ganztaktige Pausen::          
+* Pausen::
+* Unsichtbare Pausen::
+* Ganztaktpausen::
 @end menu
 
 @node Pausen
@@ -652,7 +652,7 @@ Pausen, die ganze Takte ausfüllen und in der Taktmitte zentriert
 werden sollen, müssen als mehrtaktige Pausen eingegeben werden.
 Sie können sowohl für einen einzigen Takt als auch für mehrere
 Takte verwendet werden, Näheres im Abschnitt
-@ref{Ganztaktige Pausen}.
+@ref{Ganztaktpausen}.
 
 Um die vertikale Position einer Pause explizit festzulegen,
 kann eine Note eingegeben werden, gefolgt vom Befehl @code{\rest}.
@@ -675,7 +675,7 @@ Glossar:
 @rglos{maxima}.
 
 Notationsreferenz:
-@ref{Ganztaktige Pausen}.
+@ref{Ganztaktpausen}.
 
 Schnipsel:
 @rlsr{Rhythms}.
@@ -758,8 +758,8 @@ Referenz der Interna:
 
 
 
-@node Ganztaktige Pausen
-@unnumberedsubsubsec Ganztaktige Pausen
+@node Ganztaktpausen
+@unnumberedsubsubsec Ganztaktpausen
 @translationof Full measure rests
 
 @cindex Ganztaktpausen
@@ -1546,10 +1546,10 @@ Referenz der Interna:
 @translationof Beams
 
 @menu
-* Automatische Balken::             
-* Einstellung von automatischen Balken::  
-* Manuelle Balken::                
-* Gespreizte Balken::             
+* Automatische Balken::
+* Einstellung von automatischen Balken::
+* Manuelle Balken::
+* Gespreizte Balken::
 @end menu
 
 
@@ -1666,8 +1666,14 @@ Stimmen zusammenstoßen.
 @funindex \set
 @funindex set
 
-Die Platzierung der automatischen Bebalkung wird entschieden, indem
-die folgenden Regeln in der dargestellten Reihenfolge angewendet werden:
+Die Platzierung der automatischen Bebalkung wird entsprechend
+der Taktart entschieden.  Drei Arten von Regeln werden eingesetzt,
+um die Endpunkte der automatischen Balken zu bestimmen:
+@emph{Standardregeln} für die Taktart, @emph{ausdrückliche}
+Regeln für einen Balken in einer Taktart und die
+Eigenschaft @emph{beatLenght} (Schlagdauer) der Taktart.
+
+Die folgenden Regeln, in der Reihenfolge ihrer Priorität, gelten, wenn das Aussehen der Balken bestimmt wird:
 
 @itemize
 
@@ -1675,74 +1681,65 @@ die folgenden Regeln in der dargestellten Reihenfolge angewendet werden:
 
 @item wenn @code{\autoBeamOff} eingeschaltet ist, werden keine Balken gesetzt, andernfalls
 
+@item wenn eine ausdrückliche Balkenregel für diesen Balken in
+dieser Taktart definiert ist, wird sie genommen um die möglichen
+Stellen zu errechnen, an denen der Balken enden darf, andernfalls
+
+@item wenn eine Standardbalkenregel für die Taktart definiert ist,
+wird sie genommen, um Noten mit Balken zu gruppieren, andernfalls
+
 @item benutze den Wert von @code{beatLength} um die Noten mit Balken zu gruppieren.
 
 @end itemize
 
-@i{@strong{Die Gruppierung von Noten verändern}}
+@i{@strong{Die Gruppierung von Taktzeiten verändern}}
 
-Sowohl @code{measureLength} als auch @code{beatLength} sind
-@i{Momente}, Einheiten musikalischer Dauer.  Eine Größe der
-Art @i{Moment} wird durch die Scheme-Funktion
+Standardmäßig wird @code{beatLength} (Schlagdauer) von der
+Taktart abgeleitet, die mit dem @code{\time}-Befehl gesetzt
+wurde.  Die Schlagdauer wird definiert als eine Eins über dem
+Nenner der Taktart.
+
+@code{beatLength} ist ein @i{Moment}, eine Einheit musikalischer
+Dauer.  Eine Größe der Art @i{Moment} wird durch die Scheme-Funktion
 @code{ly:make-moment} erstellt.  Für mehr Information zu dieser
 Funktion siehe @ref{Verwaltung der Zeiteinheiten}.
 
-@code{beatGrouping} ist eine Liste an Integren, die die Anzahl
-von Zählzeiten für jede Gruppe darstellen.
-
-@snippets
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{grouping-beats.ly}
-
-@funindex subdivideBeams
+Automatische Bebalkung und Balkenunterteilungen werden gespeichert
+in den Einstellungen der @code{beamSettings}-Eigenschaft.
+Standardwerte von @code{beamSettings} werden in der Datei
+@file{scm/beam-settings.scm} definiert.  Einträge in
+@code{beamSettings} werden nach Taktart und Regelart sortiert.
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{sub-dividing-beams.ly}
+Die Taktart sollte als Scheme-Paar dargestellt werden, also
+@code{#'(4 . 4)}.
 
-@cindex Taktgruppen
-@cindex Schlaggruppen
-@cindex Taktschläge gruppieren
-@cindex Takt unterteilen
-@cindex Unterteilen von Takten
+Die Regelart sollte sein @code{#'end} für Balkenenden und
+@code{#'subdivide} für Balkenunterteilungen.
 
-@funindex autoBeamSettings
-
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{conducting-signs,-measure-grouping-signs.ly}
-
-
-@strong{@i{Die Endpunkte von Balken bestimmen}}
-
-Balkenenden-Regeln werden benötigt, wenn Balken unterschiedlicher
-Dauer zur gleichen Taktzeit enden sollen.  Es kann beispielsweise
-nötig sein, dass Achtelbalken in einem 4/4-Takt nur am Ende des
-Taktes oder in seiner Mitte enden, Sechszehntelbalken hingegen
-sollen nach jeder Viertel enden, damit lange überbalkte Strecken
-vermieden werden.  Die Regeln funktionieren folgendermaßen:
-
-Automatische Balken beginnen an einer beliebigen Note, enden aber nur
-an den bestimmten Positionen, die durch die Eigenschaften von
-@code{autoBeamSettings} bestimmt werden.  Diese Eigenschaften
-bestehen aus einer Liste an Regeln, die die erlaubten Endpunkte
-definieren.  Die Standardregeln von @code{autoBeamSettings}
-sind in der Datei @file{scm/@/auto@/-beam@/.scm} definiert.  Um
-diese Datei zu finden, siehe
-@rlearning{Mehr Information}.
-
-Um eine neue Regel zu der Liste hinzuzufügen, muss folgende
-Syntax verwendet werden:
+Die Endungs- und Unterteilungsregeln bestehen aus einer
+Scheme-Aliste (oder Liste von Paaren), die den Balkentyp und
+die Gruppierung, die auf diesen Balkentyp angewendet werden
+soll, anzeigt.
 
 @example
-#(override-auto-beam-setting
-  '(Balken-Limit
-    Balken-Zähler Balken-Nenner
-    Taktart-Zähler Taktart-Nenner)
-  Moment-Zähler Moment-Nenner [Kontext])
+#'((beam-type1 . grouping-1)
+   (beam-type2 . grouping-2)
+   (beam-type3 . grouping-3))
 @end example
 
-@noindent
-wobei
+Balkentyp ist entweder ein Scheme-Paar, das die Dauer des Balkens
+anzeigt, etwa @code{(1 . 16)}, oder @code{*}, um eine Standardregel
+anzuzeigen, die auf alle Balken angewendet werden soll, wenn
+keine spezifische Regel vorliegt.
+
+Die Balkengruppierung ist eine Scheme-Liste, die die Gruppierungsart
+für einen Balkentyp darstellt.  Für Standardregeln (in denen
+der Balkentyp @code{*} ist) wird die Gruppierung in Einheiten
+von @code{beatLength} dargestellt.  Für explizite Regeln wird
+die Gruppierung in Einheiten der Balkenart angezeigt.
+
+Balkenregeln werden verändert mit @code{\overrideBeamSettings}
+und @code{\revertBeamSettings}.
 
 @lilypond[quote,relative=2,verbatim]
   \time 5/16
@@ -1753,6 +1750,11 @@ wobei
   c8^"(3+2)" c16 c8
 @end lilypond
 
+Balkenregelveränderungen können auf bestimmte Kontexte beschränkt
+werden.  Wenn keine Regeln in einen unteren Kontext definiert
+sind, gelten die Regeln des höheren Kontext, in dem sich der
+niedrigere befindet.
+
 @lilypond[quote, verbatim,relative=1]
 \new Staff <<
   \time 7/8
@@ -1772,14 +1774,14 @@ wobei
 >>
 @end lilypond
 
-Wenn mehrfache Stimmen benutzt werden, muss der @code{Staff}-Kontext
-angegeben werden, wenn die Balkenregeln auf alle Stimmen im System
-angewendet werden sollen:
+Wenn mehrere Stimmen eingesetzt werden, muss der @code{Staff}-Kontext
+definiert werden, wenn die Balkenregeln auf alle Stimmen des
+Systems angewendet werden sollen:
 
 @lilypond[quote,verbatim,relative=2]
 \time 7/8
 % rhythm 3-1-1-2
-% Context Voice specified - does not work correctly
+% Context Voice specified - does not work correctly
 % Because of autogenerated voices, all beating will
 % be at beatLength (1 . 8)
 \overrideBeamSettings #'Voice #'(7 . 8) #'end #'((* . (3 1 1 2)))
@@ -1790,17 +1792,19 @@ angewendet werden sollen:
 << {a8 a a a16 a a a a8 a} \\ {f4. f8 f f f} >>
 @end lilypond
 
-@funindex revert-beam-setting
+@funindex revertBeamSettings
 
-Beam settings can be reverted to get back to default behavior.  This
-is accomplished by using @code{\revertBeamSettings}.  The arguments
-are the same as for @code{\overrideBeamSettings}, except no value
-for @var{grouping} is given:
+Balkenregeln können rückgängig gemacht und das Standardverhalten
+wieder hergestellt werden.  Das erreicht man durch den Einsatz
+von @code{\revertBeamSettings}.  Die Argumente sind die gleichen
+wie für @code{overrideBeamSettings}, außer das kein Wert für
+@var{Gruppierung} gegeben wird:
 
 @example
-\revertBeamSettings context time-signature rule-type
+\revertBeamSettings Kontext Taktart Regelart
 @end example
 
+
 @lilypond[quote,verbatim,relative=2]
 \time 4/4
 \repeat unfold 16 {a16}
@@ -1812,17 +1816,20 @@ for @var{grouping} is given:
 \repeat unfold 16 {a16}
 @end lilypond
 
+
 @snippets
 
-@cindex beams, subdividing
+@cindex Balken, Unterteilung
+@funindex subdivideBeams
 
 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
 {sub-dividing-beams.ly}
 
-@cindex measure groupings
-@cindex beats, grouping
-@cindex grouping beats
-@cindex measure sub-grouping
+@cindex Taktgruppen
+@cindex Schlaggruppen
+@cindex Taktschläge gruppieren
+@cindex Takt unterteilen
+@cindex Unterteilen von Takten
 
 @funindex autoBeamSettings
 
@@ -1832,24 +1839,23 @@ for @var{grouping} is given:
 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
 {beam-endings-in-score-context.ly}
 
-@cindex Balken, letzter in einer Partitur
-@cindex letzter Balken einer Partitur
-@cindex Balken, letzter in einer polyphonen Stimme
+@cindex Balken, letzter in Partitur
+@cindex Balken, letzter in polyphoner Stimme
 
 @knownissues
 
-Wenn eine Partitur aufhört, während ein automatischer Balken noch
-nicht geschlossen ist und noch Noten erwartet, wird dieser letzte
-Balken überhaupt nicht ausgegeben.  Das gilt auch für polyphone
-Stimmen, die mit @code{<< @dots{} \\ @dots{} >>} gesetzt wurden.
-Wenn eine polyphone Stimme endet, während ein Balken noch Noten
-erwartet, wird dieser Balken nicht gesetzt.
+Wenn eine Partitur endet, während ein automatischer Balken noch
+nicht beendet wurde und weiterhin Notenerwartet, wird dieser
+letzte Balken nicht ausgegeben.  Das Gleiche gilt auch für
+polyphone Stimmen, die mit der @code{<<
+@dots{} \\ @dots{} >>}-Konstruktion notiert wurden.  Wenn eine
+polyphone Stimme endet, während ein Balken noch weitere Noten
+erwartet, wird der Balken nicht gesetzt.
 
 @seealso
 Schnipsel:
 @rlsr{Rhythms}.
 
-
 @node Manuelle Balken
 @unnumberedsubsubsec Manuelle Balken
 @translationof Manual beams
index 5db709780204a3ca017a273c566da5d8c0d7da03..e172191f335a8600128df54ec1c715ea181e56ad 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d  
+%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   doctitlede = "Symbole für Akkordeon-Diskantregister"
   texidocde = "
 Diskantregister für Akkordeon können mit @code{\\markup} dargestellt werden.
index 3fe50255d9235220063065f5cb337aede4aaec2a..bd8b169ec841d75ccb94e05f4d40a69fe2299cd9 100644 (file)
@@ -1,9 +1,9 @@
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
-  
+
   texidocde = "
-Dieses Beispiel zeigt eine moderne Transkription des Gregorianischen 
-Chorals. Hier gibt es keine Takte, keine Notenhälse und es werden nur 
-halbe und Viertelnoten verwendet. Zusätzliche Zeichen zeigen die 
+Dieses Beispiel zeigt eine moderne Transkription des Gregorianischen
+Chorals. Hier gibt es keine Takte, keine Notenhälse und es werden nur
+halbe und Viertelnoten verwendet. Zusätzliche Zeichen zeigen die
 Länge von Pausen an.
 "
 
index 8e8be97a96cef0236903cf7e7838d91f1596b6ce..8e9d2bbb6da7bcbf984be46d5105be356da51829 100644 (file)
@@ -1,12 +1,12 @@
-%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d 
+%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
-Bei der Transkription von Mensuralmusik ist es oft erwünscht, ein 
-Incipit an den Anfang des Stückes zu stellen, damit klar ist, wie 
-Tempo und Schlüssel in der Originalnotation gesetzt waren. Während 
-heutzutage Musiker an Taktlinien gewöhnt sind, um Rhythmen schneller 
-zu erkennen, wurden diese in der Mensuralmusik nicht verwendet. 
-Tatsächlich ändern sich die Rhythmen auch oft alle paar Noten. Als 
-ein Kompromiss werden die Notenlinien nicht auf dem System, sondern 
+Bei der Transkription von Mensuralmusik ist es oft erwünscht, ein
+Incipit an den Anfang des Stückes zu stellen, damit klar ist, wie
+Tempo und Schlüssel in der Originalnotation gesetzt waren. Während
+heutzutage Musiker an Taktlinien gewöhnt sind, um Rhythmen schneller
+zu erkennen, wurden diese in der Mensuralmusik nicht verwendet.
+Tatsächlich ändern sich die Rhythmen auch oft alle paar Noten. Als
+ein Kompromiss werden die Notenlinien nicht auf dem System, sondern
 zwischen den Systemen geschrieben.
 "
 
index 41cec9cfb61ecf659f5192edf9b76d1e525ad700..eeb01f370044b0fc5a9ace0f1afcd29efdc65d40 100644 (file)
@@ -7,4 +7,4 @@ für 2/8 und 5/8 definiert werden:
 
 "
   doctitlede = "Balkengruppen für 7/8-Takte"
-  
+
index 74aaf74ef2b61ced971d30787a07fffed47092b3..f907508fd341bb3dcc2403e5f4aaf70a5de3fc6a 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d  
+%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Zeilenumbrüche sind normalerweise während Balken verboten.  Das kann geändert
 werden.
index ce3f9d135cad0fa1463f68b6c770754af4cfab81..3e3d2708b08216648cd358981c6206d98bba41d5 100644 (file)
@@ -5,7 +5,7 @@ Die vertikale Anordnung von Beschriftungen wird mit der
 Zahl, umso näher wird die Beschriftung in Bezug auf die Note gesetzt.  In
 diesem Beispiel hat das @code{TextScript}-Objekt (das Kreuz) zuerst
 die niedrigste Priorität, wird also auch am niedrigsten in dem ersten
-Beispiel gesetzt.  Im zweiten Fall hat der Praller (das @code{Script}) 
+Beispiel gesetzt.  Im zweiten Fall hat der Praller (das @code{Script})
 die niedrigste Priorität, darum wird er am nächsten zum System gesetzt.
 Wenn zwei Objekte die gleiche Priorität haben, wird ihre Reihenfolge
 anhand ihres Auftretens in der Quelldatei entschieden.
index 3f17ab0875c762532e659b0a3dbf09b2378f31f8..4ece7d2d2bfbdbbc29fb76f815daf05b5c0f7071 100644 (file)
@@ -1,7 +1,7 @@
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Ein Arpeggio kann zwischen Noten aus unterschidlichen Stimmen auf demselben
-System gezogen werden, wenn der @code{Span_arpeggio_engraver} in den 
+System gezogen werden, wenn der @code{Span_arpeggio_engraver} in den
 @code{Staff}-Kontext verschoben wird:
 
 "
index f918d3de1c9c47c5855941d840a4930e173f6b4e..222407de1253bbcd12f7237a6c383bb4cc400bf2 100644 (file)
@@ -3,7 +3,7 @@
 In einem Klaviersystem (@code{PianoStaff}) ist es möglich, ein Arpeggio
 zwischen beiden Systemen zu verbinden, indem die
 @code{PianoStaff.connectArpeggios}-Eigenschaft gesetzt wird.
+
 
 "
   doctitlede = "Arpeggio zwischen Systemen in einem Klaviersystem erstellen"
index 06223d89bec6001ac6142c56cf2c6f1cfa136534..09e4d078362475a59ff7cb4c6d2ab328579886c5 100644 (file)
@@ -1,12 +1,12 @@
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
  In Werken des fürhen 20. Jahrhundert, angefangen mit Schönberg, Berg
- und Webern (die zweite Wiener Schule), wird jeder Ton der 
+ und Webern (die zweite Wiener Schule), wird jeder Ton der
  Zwölftonleiter als gleichwertig erachtet, ohne hierarchische
  Ordnung.  Deshalb wird in dieser Musik für jede Note ein Versetzungszeichen
  ausgegeben, auch für unalterierte Tonhöhen, um das neue Verständnis
  der Musiktheorie und Musiksprache zu verdeutlichen.
+
  Dieser Schnipsel zeigt, wie derartige Notationsregeln zu erstellen sind.
  "
   doctitlede = "Versetzungszeichen für jede Note im Stil der Zwölftonmusik"
index e949ae91640bf03cf7a9f9db4cebd99c09981f2b..a3c14d0b72e337364b826a2ffbdc5c3786762a23 100644 (file)
@@ -8,7 +8,7 @@ einem @code{\\times}-Befehl geschrieben werden.
 Im Beispiel sind zwei Triolen zu sehen, obwohl @code{\\times} nur
 einmal geschrieben wurde.
 
-Mehr Information über @code{make-moment} gibt es in \"Verwaltung der Zeiteinheiten\". 
+Mehr Information über @code{make-moment} gibt es in \"Verwaltung der Zeiteinheiten\".
 
 "
   doctitlede = "Mehrere Triolen notieren, aber nur einmal \\times benutzen"
index a9f010c004ecdc7aa48c2ba0a12c74307f3d324b..f7808d633ebea72803696732082c094fa29d796d 100644 (file)
@@ -1,8 +1,8 @@
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
-Hier ist ein ziemlich kompliziertes Beispiel für ein Jazz-Ensemble. Achtung: 
-Alle Instrumente sind in @code{\key c \major} (C-Dur) notiert. Das bezieht sich 
-auf die klingende Musik: LilyPond transponiert die Tonart automatisch, wenn 
+Hier ist ein ziemlich kompliziertes Beispiel für ein Jazz-Ensemble. Achtung:
+Alle Instrumente sind in @code{\key c \major} (C-Dur) notiert. Das bezieht sich
+auf die klingende Musik: LilyPond transponiert die Tonart automatisch, wenn
 sich die Noten innerhalb eines @code{\transpose}-Abschnitts befinden.
 
 "
index fad178fb03e72120bb387513ee1e991347daff5a..35d4793fe68282b12bb7c17b072def685d04191d 100644 (file)
@@ -6,5 +6,5 @@ eingesetzt werden.  Sehen Sie sich die Initialisierungsdatei
 und Alterationen an (siehe
 Handbuch zum Lernen @version{}, 4.6.3 Weitere Information zu
 Hinweisen, wo diese Datei gespeichert ist)."
-  
+
   doctitlede = "Makam-Beispiel"
index 4284d263bfc04ce924488b9d16b4d8065967583d..ea1ead60a5a9cf1e7641f136196a2b547d97bf16 100644 (file)
@@ -1,8 +1,8 @@
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
-In der meisten Klaviernotation werden die Dynamikzeichen zwischen 
-den beiden Systemen zentriert. Für LilyPond muss man die Einstellungen 
-etwas anpassen, aber Sie können ja das angepasste Beispiel von hier 
+In der meisten Klaviernotation werden die Dynamikzeichen zwischen
+den beiden Systemen zentriert. Für LilyPond muss man die Einstellungen
+etwas anpassen, aber Sie können ja das angepasste Beispiel von hier
 kopieren.
 "
 
index e69e76fa1e0e53eadc17730ff6581b8374bba063..63c39ac70e313b627e1b92c75bd2664f8918b7a0 100644 (file)
@@ -1,6 +1,6 @@
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
-Anstatt ein eigenes System für Melodie und Text zu schreiben, können 
+Anstatt ein eigenes System für Melodie und Text zu schreiben, können
 Sie den Text auch zwischen die beiden Klaviersysteme schreiben
 (und damit das zusätzliche System für die Gesangstimme auslassen).
 "
index 5593bfd6c0b2d4bcb2b5a8578078ae8e9039769c..038ba83cb78d32cd73bc36f7c8000f71e3fbe289 100644 (file)
@@ -1,6 +1,6 @@
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
-Das nächste Beispiel ist typisch für ein Lied: Im oberen System die 
+Das nächste Beispiel ist typisch für ein Lied: Im oberen System die
 Melodie mit Text, darunter Klavierbegleitung.
 "
 
index 5e75502ebca0d3ea4a61a1ca0a78c48ed1490e6e..14caa5ac434c26a61161b067608a532829b38b68 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d 
+%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Taktnummern können vollkommen aus den Noten entfernt werden, indem
 man den @code{Bar_number_engraver} aus dem @code{Score}-Kontext
index 705ecb3a66456dfd096e4650868d48ff4d2a98fb..20f78b88744034b81c93714d40fce36462cf95a8 100644 (file)
@@ -2,7 +2,7 @@
 texidocde = "
 Wenn Crescendo-Klammern zu kurz sind, können sie verlängert werden, indem
 die @code{minimum-length}-Eigenschaft des @code{Hairpin}-Objektes
-verändert wird. 
+verändert wird.
 
 "
   doctitlede = "Die Mindestlänge von Crescendo-Klammern bestimmen"
index 636142378c576852765782f2a9ee6d5ca31e57f5..28ca2820c23ec126b042a12acc05ab6e2ca367ec 100644 (file)
@@ -3,7 +3,7 @@
 Volta-Klammern werden normalerweise über alle Noten der Klammer gezogen, aber
 es ist möglich sie zu verkürzen.  Hierzu muss
 @code{voltaSpannerDuration} definiert werden, in dem Beispiel etwa als
-3/4, sodass die Klammer nur einen Takt dauert. 
+3/4, sodass die Klammer nur einen Takt dauert.
 
 "
   doctitlede = "Volta-Klammern verkürzen"
index 7202b198efeaa0b590d912669dc3fec087d42082..e628048e56303729b50d3631c80d8a2db78532d8 100644 (file)
@@ -1,6 +1,6 @@
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
-Mit diesem Beispiel können Sie einen Song mit Melodie, 
+Mit diesem Beispiel können Sie einen Song mit Melodie,
 Text und Akkorden schreiben.
 "
 
index 9fb9d324a366bf37294bd5c9c58a6ffb9add7010..4e8c7128825dcb22fb6902682a580f9cbe55fcdd 100644 (file)
@@ -1,6 +1,6 @@
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
-Wollen Sie ein Liedblatt mit Melodie und Akkorden schreiben?  Hier ist 
+Wollen Sie ein Liedblatt mit Melodie und Akkorden schreiben?  Hier ist
 das richtige Beispiel für Sie!
 "
 
index 92022d205145501023680abc77c289c113b4d047..301159f111edde25bcb6427ca24dbe7ba16f22f6 100644 (file)
@@ -1,11 +1,11 @@
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
-Das nächste Beispiel zeigt eine einfache Melodie mit Text. Kopieren 
-Sie es in Ihre Datei, fügen Sie Noten und Text hinzu und übersetzen 
-Sie es mit LilyPond. In dem Beispiel wird die automatische 
-Balkenverbindung ausgeschaltet (mit dem Befehl @code{\autoBeamOff}), 
-wie es für Vokalmusik üblich ist. 
-Wenn Sie die Balken wieder einschalten wollen, müssen Sie die 
+Das nächste Beispiel zeigt eine einfache Melodie mit Text. Kopieren
+Sie es in Ihre Datei, fügen Sie Noten und Text hinzu und übersetzen
+Sie es mit LilyPond. In dem Beispiel wird die automatische
+Balkenverbindung ausgeschaltet (mit dem Befehl @code{\autoBeamOff}),
+wie es für Vokalmusik üblich ist.
+Wenn Sie die Balken wieder einschalten wollen, müssen Sie die
 entsprechende Zeile entweder ändern oder auskommentieren.
 "
 
index 71d9cf658e48cc74804f9461210f88ed30d23b0f..ace1f291e5eb513f03fb64897e1af0e0911c0a36 100644 (file)
@@ -1,8 +1,8 @@
-%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d  
+%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
-Das erste Beispiel zeigt ein Notensystem mit Noten, passend für ein 
-Soloinstrument oder ein Melodiefragment. Kopieren Sie es und fügen 
-Sie es in Ihre Datei ein, schreiben Sie die Noten hinzu, und Sie haben 
+Das erste Beispiel zeigt ein Notensystem mit Noten, passend für ein
+Soloinstrument oder ein Melodiefragment. Kopieren Sie es und fügen
+Sie es in Ihre Datei ein, schreiben Sie die Noten hinzu, und Sie haben
 eine vollständige Notationsdatei.
 "
 
index 449122ec1d27b180c6a5d598f1eac3c781d43560..3efc89e4abd79e3d1b68f4b492aa6a3c10023910 100644 (file)
@@ -1,7 +1,7 @@
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
-Dieses Beispiel demonstriert die Partitur für ein Streichquartett. Hier 
-wird auch eine @qq{@code{\global}}-Variable für Taktart und 
+Dieses Beispiel demonstriert die Partitur für ein Streichquartett. Hier
+wird auch eine @qq{@code{\global}}-Variable für Taktart und
 Vorzeichen benutzt.
 "
 
index a09d78de06fcc6da22fe5c446bf1b73f5b892f6e..52f1a3217736dbe1d37f7721e82940a3d55d4e49 100644 (file)
@@ -1,19 +1,19 @@
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
-Mit diesem Beispiel können Sie ein schönes Streichquartett notieren, 
-aber wie gehen Sie vor, wenn Sie Stimmen brauchen? Das Beispiel 
-oben hat gezeigt, wie Sie mit Variablen einzelne Abschnitte getrennt 
-voneinander notieren können. Im nächsten Beispiel wird nun 
+Mit diesem Beispiel können Sie ein schönes Streichquartett notieren,
+aber wie gehen Sie vor, wenn Sie Stimmen brauchen? Das Beispiel
+oben hat gezeigt, wie Sie mit Variablen einzelne Abschnitte getrennt
+voneinander notieren können. Im nächsten Beispiel wird nun
 gezeigt, wie Sie mit diesen Variablen einzelne Stimmen erstellen.
 
 Sie müssen das Beispiel in einzelne Dateien aufteilen; die Dateinamen
 sind in den Kommentaren am Anfang jeder Datei enthalten.  @code{piece.ly}
 enthält die Noten. Die anderen Dateien -- @code{score.ly},
 @code{vn1.ly}, @code{vn2.ly}, @code{vla.ly} und
-@code{vlc.ly} -- erstellen daraus die entsprechenden Stimmen bzw. die 
-Partitur (@code{score.ly}). Mit @code{\tag} wird den Stimmen ein Name 
+@code{vlc.ly} -- erstellen daraus die entsprechenden Stimmen bzw. die
+Partitur (@code{score.ly}). Mit @code{\tag} wird den Stimmen ein Name
 zugewiesen, auf den zurückgegriffen werden kann.
 "
 
   doctitlede = "Vorlage für Streichquartett mit einzelnen Stimmen"
-  
+
index 225c241bfeaff4a49c1aaba9ba1936676cba4f18..914089b8ffcb1228f972d6a7ded8d10c6f805bb1 100644 (file)
@@ -1,9 +1,9 @@
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
-In diesem Beispiel wird ein automatischer Klavierauszug zu der 
+In diesem Beispiel wird ein automatischer Klavierauszug zu der
 Chorpartitur hinzugefügt. Das zeigt eine der Stärken von LilyPond
--- man kann eine Variable mehr als einmal benutzen. Wenn Sie 
-irgendeine Änderung an einer Chorstimme vornehmen, (etwa 
+-- man kann eine Variable mehr als einmal benutzen. Wenn Sie
+irgendeine Änderung an einer Chorstimme vornehmen, (etwa
 tenorMusic), verändert sich auch der Klavierauszug entsprechend.
 "
 
index 6bd1ddf690177c6f01821faa59349ce59a461cf3..d43171223603036d4a4236cb8cfc34085dc77476 100644 (file)
@@ -1,6 +1,6 @@
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
-In diesem Beispiel werden die Texte mit den Befehlen 
+In diesem Beispiel werden die Texte mit den Befehlen
 @code{alignAboveContext} und @code{alignBelowContext}
 über und unter dem System angeordnet.
 "
index 875be30bf19125e5b0f934b51036f83938125195..f8e0384aa9783a0b39c2579c2d7a40c23e256138 100644 (file)
@@ -1,8 +1,8 @@
-%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d  
+%% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
-Dieses Beispiel ist für vierstimmigen Gesang (SATB). Bei größeren 
-Stücken ist es oft sinnvoll, eine allgemeine Variable zu bestimmen, 
-die in allen Stimmen eingefügt wird. Taktart und Vorzeichen etwa 
+Dieses Beispiel ist für vierstimmigen Gesang (SATB). Bei größeren
+Stücken ist es oft sinnvoll, eine allgemeine Variable zu bestimmen,
+die in allen Stimmen eingefügt wird. Taktart und Vorzeichen etwa
 sind fast immer gleich in allen Stimmen.
 "
 
index 84e431092e6ae6086d626a884443094053c6c271..86b021ec178fa5c50d011a4649d3d6d82c9c796c 100644 (file)
@@ -7,7 +7,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.12.0"
+@c \version "2.13.4"
 
 @c Translation status: post-GDP
 
@@ -356,7 +356,7 @@ fragment = {
 <<
    \new Staff \fragment
    \new Staff \with {
-      \override Beam #'thickness = #0.3
+      \override Beam #'beam-thickness = #0.3
       \override Stem #'thickness = #0.5
       \override Bar #'thickness = #3.6
       \override Tie #'thickness = #2.2
@@ -396,7 +396,7 @@ altera durante el transcurso del fragmento musical.
   \set autoBeaming = ##f
   \time 2/4
   <d f g>4
-  \once \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
+  \once \override NoteHead #'stencil = #note-head::brew-ez-stencil
   \once \override NoteHead #'font-size = #-7
   \once \override NoteHead #'font-family = #'sans
   \once \override NoteHead #'font-series = #'bold
@@ -818,7 +818,7 @@ El ejemplo siguiente combina algunas otras construcciones exóticas.
       \key c \minor
       \set subdivideBeams = ##f
       \override Stem  #'french-beaming = ##t
-      \override Beam  #'thickness = #0.3
+      \override Beam  #'beam-thickness = #0.3
       \override Stem  #'thickness = #4.0
       g'16[ b16 fis16 g16]
       << \makeClusters {
index efaf3af3ced33e4fbbd92884e8187f63d5783880..e8b667ecfbee6b2b7b9926e1c8ff591fdf087a86 100644 (file)
@@ -14,4 +14,4 @@ truco se aplique a toda la partitura.
 
 "
   doctitlees = "Añadir un bajo cifrado encima o debajo de las notas"
-  
+
index 82c1307eb96d3179dff4da3149e2ba49afec6a9f..415e9f80e44800ad518116d493c37602cfa59ecb 100644 (file)
@@ -4,4 +4,4 @@ Con algo de código de Scheme, se puede añadir fácilmente la fecha
 actual a una partitura.
 "
   doctitlees = "Añadir la fecha actual a una partitura"
-  
+
index 1f2de762c18866ffec0586214f2796523f9b8525..887b3a5bed201cbca0f472ed95f9061703a47551 100644 (file)
@@ -6,4 +6,4 @@ caídas y subidas de tono («falls» y «doits»).
 
 "
   doctitlees = "Ajustar la forma de las subidas y caídas de tono"
-  
+
index 9c5eb3766bf25b0b84355d8ff499656990921c22..eb17db366f9271890d041a67cd227e03653a37c7 100644 (file)
@@ -12,4 +12,4 @@ encima de ellos.
 
 "
   doctitlees = "Plantilla de notación de música antigua (transcripción moderna de música mensural)"
-  
+
index 861431b743dd33fd929f66617382f74bc9ea2093..ff6dbc035a1c1c2ef47bc2cec965a1f74763ff11 100644 (file)
@@ -8,4 +8,4 @@ compás de 7/8, especificamos los finales de barra en 2/8 y 5/8:
 
 "
   doctitlees = "Agrupamiento de las barras en el compás de 7/8"
-  
+
index f10f44aac4b637ad3499b481c4d8c2f6c101a87f..78546263a119302b712b4b70dcc2b406b9e48487 100644 (file)
@@ -6,4 +6,4 @@ comportamiento como se muestra aquí:
 
 "
   doctitlees = "Barras que atraviesan saltos de línea"
-  
+
index 97d66bebd2d9be8b75388d4f86cdea9786e51648..115e431d7a851a14f10b07b81936fea0b7ad5336 100644 (file)
@@ -11,4 +11,4 @@ establecido a 5.5 espacios de pentagrama.
 
 "
   doctitlees = "Cambiar el salto de las barras en ángulo"
-  
+
index c327b65fca99ad657db6e688a86e44c92e1d4f9c..cca71d64346f1d612837fc6428b5edd7d9cbc057 100644 (file)
@@ -12,4 +12,4 @@ valores posibles se encuentran @code{'line} (línea),
 
 "
   doctitlees = "Cambiar el texto y los estilos de objeto de extensión para las indicaciones dinámicas textuales"
-  
+
index 501d634bfc8de8657ab6da4e9566de0770ce664d..eeedbde600db103b74f2312a84a62d958091376c 100644 (file)
@@ -6,4 +6,4 @@ sobreescribiendo la propiedad de texto del objeto de presentación
 
 "
   doctitlees = "Cambiar el símbolo de la marca de respiración"
-  
+
index ec86a12811acb0584c996a384b0445ddfc240f18..a389af15001242007452318f222b2ebaba7f783c 100644 (file)
@@ -5,4 +5,4 @@ utilizando una nota oculta y temporalización de cadenza.
 
 "
   doctitlees = "Glissando contemporáneo"
-  
+
index d72357abae71a3c4052278ad6df611bf15b0908e..d2ce936f8038661b99dc7188aa22e344090576a5 100644 (file)
@@ -13,4 +13,4 @@ lugar.
 
 "
   doctitlees = "Controlar la ordenación vertical de las inscripciones"
-  
+
index bfde9fb9cb574e12670940c6553ac3e46f59adb6..565b0ce43cb0cf49e11d4043c91d87d4bf9c5e57 100644 (file)
@@ -7,4 +7,4 @@ voces que están sobre el mismo pentagrama si el grabador
 
 "
   doctitlees = "Crear arpegios entre notas de voces distintas"
-  
+
index 42f5afc9233848317a040d0ffb1d51bae185f5e5..945c065792dafaa82a0f7616a6c9c72ee49e5a21 100644 (file)
@@ -3,7 +3,7 @@
 Dentro de un @code{PianoStaff}, es posible hacer que un arpegio
 cruce entre los pentagramas ajustando la propiedad
 @code{PianoStaff.connectArpeggios}.
+
 "
   doctitlees = "Crear arpegios que se cruzan entre pentagramas dentro de un sistema de piano"
-  
+
index 57d1b7e79b77c8507b6c2b23782f5e62df030484..9597e751b8c036e3a50ba4367fd6a602ace7611a 100644 (file)
@@ -6,4 +6,4 @@ contextos distintos a @code{PianoStaff} si se incluye el grabador
 
 "
   doctitlees = "Creación de arpegios que se cruzan entre pentagramas dentro de otros contextos"
-  
+
index 9f881cf0fc5191e1b699f52e92488df636da1c54..58dbbd3d801b123ee743a619fe35e74844d70acd 100644 (file)
@@ -13,4 +13,4 @@ distinta, como se ve en el segundo sistema del ejemplo.
 "
   doctitlees = "Mostrar corchete o llave en grupos de un solo pentagrama"
 
-  
+
index 0d84e44259a2afc77bc8e36f4e80b40f6927bda5..bac5ffc9158c98775788be632bdd9a30f74495cf 100644 (file)
@@ -1,7 +1,7 @@
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
 
  doctitlees = "Forzar el desplazamiento horizontal de las notas"
+
 texidoces = "
  Cuando el motor de tipografiado no es capaz de todo, se puede usar la
  sintaxis siguiente para sobreescribir las decisiones de tipografía.
index 9496a5e3c0e1b17f439e8ded6f61d16087cc67ba..97ea14f3fd9246e450ca48b39845e557f525886b 100644 (file)
@@ -5,4 +5,4 @@ Los patrones de barrado se pueden alterar con la propiedad
 
 "
   doctitlees = "Agrupar los pulsos"
-  
+
index 8d163560ced3839e1223e97750d7eb690c0c7a67..57777053dc5bc67e0d7f3a0241b98a43492d27a9 100644 (file)
@@ -6,4 +6,4 @@ Esta línea se puede suprimir de la siguiente manera:
 
 "
   doctitlees = "Ocultar la línea de extensión de las expresiones textuales de dinámica"
-  
+
index e0b6dcda1b2826468254d95b1f2131a8b9b20ae9..c5cb7d31b4b9bcca570be9c968e1648090696cf3 100644 (file)
@@ -3,5 +3,5 @@
 Los «incipit» se pueden escribir utilizando el grob del nombre del
 instruemento, pero manteniendo independientes las definiciones del
 nombre del instrumento y del incipit."
+
  doctitlees = "Incipit"
index 3ad3e552bcbe8e6b68d2d3f3414c0510e1620cde..55aff62162a7114bc4f80ee8b212f2b991497fdc 100644 (file)
@@ -6,4 +6,4 @@ una marca de cesura curva.
 
 "
   doctitlees = "Insertar una cesura"
-  
+
index 9290646ddc93a6e5dccb9d951a8d6217a56e3487..2e67bd8bb4c699674b45ebf563a36381296dde5b 100644 (file)
@@ -8,4 +8,4 @@ dentro de una sección @code{\\transpose}.
 
 "
   doctitlees = "Plantilla para combo de jazz"
-  
+
index c35ce7f7d97cbb7edca1372ac2b2975010ad6e69..ada5033b198a624928eea59563fa0f46eb8d567a 100644 (file)
@@ -10,4 +10,4 @@ nombres de las notas y las alteraciones.
 "
   doctitlees = "Ejemplo de «Makam»"
 
-  
+
index 9f61fbc964718dd7c9978609cac8759bd5ad3d74..2118c5226a250e674f8f8605fa9bfdd208500761 100644 (file)
@@ -9,4 +9,4 @@ instrucción @code{\\ottava}.
 "
 
   doctitlees = "Texto de octava alta y baja"
-  
+
index 10d9c97f8bb6e25689545c60a86cabb646b9def8..6ab9cec26e2498ccacef575549e43c128942bd8b 100644 (file)
@@ -5,4 +5,4 @@ notas.
 
 "
   doctitlees = "Plantilla de piano (sencilla)"
-  
+
index 25fb9939b603fc16c29d9fb0eb8475664a07f10f..564b27e3172dda7b6afa7cc364cf8d6e1fcca8a7 100644 (file)
@@ -5,4 +5,4 @@ se puede centrar entre los pentagramas de un sistema de piano.
 
 "
   doctitlees = "Plantilla de piano con letra centrada"
-  
+
index 314c87df17c59fe62337b885afcb35a4b32e0bad..b79b05b6f1e524c54c768bc8ff0bdd396de161fd 100644 (file)
@@ -5,4 +5,4 @@ melodía y la letra, y el acompañamiento de piano por debajo.
 
 "
   doctitlees = "Plantilla de piano con melodía y letra"
-  
+
index e452d10de461b934d0f1df31b02e3617dad8a137..0e52b42f386368326b72cca657c1b421d7520c15 100644 (file)
@@ -6,4 +6,4 @@ Se pueden imprimir reguladores con un círculo en la punta
 
 "
   doctitlees = "Impresión de reguladores utilizando la notación «al niente»"
-  
+
index 83d8984361e959545adb549b24ec6f5fe76f8bba..6b79b24e8d83372d167ffda7a6b98c84fc69d935 100644 (file)
@@ -10,4 +10,4 @@ adecuadamente la propiedad @code{direction} de
 
   doctitlees = "Impresión de indicaciones metronómicas y letras de ensayo debajo del pentagrama"
 
-  
+
index 41c3409350979925a299042b3070f9395aa00236..cbcf2a041115eeb4fe0c0c6f60e64887ac962af2 100644 (file)
@@ -10,4 +10,4 @@ el fragmento citado porque @code{rest-event} no está dentro de los
 
 "
   doctitlees = "Citar otra voz"
-  
+
index 18bad9dfc6d781b1fa2721414e26190811ce7c4e..cd433fc0821017188739964f112b8bbcc2adaa24 100644 (file)
@@ -7,4 +7,4 @@ sobreescribiendo la propiedad @code{'to-barline}.
 
 "
   doctitlees = "Establecer el comportamiento de los reguladores en las barras de compás"
-  
+
index e3396a173507e4cda891442f6cd3a73d62f0319b..a32e360fed5c4cc95263f6b9990b2eedc5173448 100644 (file)
@@ -5,4 +5,4 @@ letra y acordes.
 
 "
   doctitlees = "Plantilla de pentagrama único con música, letra y acordes"
-  
+
index b228d3032bbbb4a10201a4c2e8585f338d66dc92..be346975fe5292e45724b6bc62252879c7e9ae01 100644 (file)
@@ -18,4 +18,4 @@ los archivos independientes!
 
 "
   doctitlees = "Plantilla de cuarteto de cuerda con particellas independientes"
-  
+
index e40606158a38489c68ca6434f7d9735b28ec8bf6..2bfcada1d6636e2a73543877977878c02d3fca23 100644 (file)
@@ -32,4 +32,4 @@ ajustan estas propiedades manualmente.  En la primera línea, los
 cambios manuales preservan el posicionamiento relativo estándar de
 las claves y las notas, pero no lo hacen en la segunda línea.
 "
-  
+
index b7b0167f24f209ef028fe82f1fb7e8568019e6f3..87e2a305d125d40f1877f4c0046dee6a68bc881e 100644 (file)
@@ -5,4 +5,4 @@ legato.  Esto se puede conseguir estableciendo @code{doubleSlurs}.
 
 "
   doctitlees = "Utilizar ligaduras dobles para acordes legato"
-  
+
index 21c8085f9f9f1b9701a0273604e2f0c6ac82e677..aa884814921caf375e0341fcb1d0d38361940d1c 100644 (file)
@@ -12,4 +12,4 @@ largo de su línea de base.
 
 "
   doctitlees = "Indicaciones dinámicas y textuales alineadas verticalmente"
-  
+
index 194011d243f3296c52e01f3f3747e164b2f800c0..de445745e70a55af04a0e6627788dd8178c76f25 100644 (file)
@@ -9,4 +9,4 @@ entonces los cambios se aplicarán también a la reducción de piano.
 
 "
   doctitlees = "Plantilla de conjunto vocal con reducción de piano automática"
-  
+
index d6bbe430387e34d6a408a50ccf52a8ec0ceb9fc3..cccd7377897432a1af23ced01a9acf32f7b253b1 100644 (file)
@@ -7,4 +7,4 @@ colocan utilizando @code{alignAboveContext} y
 
 "
   doctitlees = "Plantilla para conjunto vocal con letras alineadas encima y debajo de los pentagramas"
-  
+
index 946086ca7699b9e5b09cc6b6e550078adb74c41f..f77504bafe5d3da04cd1f48fad23e863658065a8 100644 (file)
@@ -10,6 +10,7 @@
 @documentencoding UTF-8
 @documentlanguage en
 
+@set web
 @include macros.itexi
 
 @afourpaper
@@ -89,6 +90,7 @@ Free Documentation License''.
 
 @menu
 * Music engraving::
+* automated-engraving:: Essay on Automated engraving.
 * Literature list::
 * GNU Free Documentation License:: License of this document.
 * LilyPond index::
@@ -97,8 +99,10 @@ Free Documentation License''.
 @contents
 
 @include essay/engraving.itely
+@include automated-engraving.itexi
 @include essay/literature.itely
 
+@clear web
 @include fdl.itexi
 
 @node LilyPond index
index c93c9e062454b89f9cba92aef976d59ec4ead1d2..e88870f1a14094b0d04cf28433006a32733da651 100644 (file)
@@ -1,5 +1,35 @@
 depth = ../..
 
-LOCALSTEPMAKE_TEMPLATES = ly
+STEPMAKE_TEMPLATES=tex documentation
+LOCALSTEPMAKE_TEMPLATES = lilypond ly
+
+OUT_BIB_FILES = $(addprefix $(outdir)/, $(BIB_FILES))
+EXTRA_DIST_FILES= $(BIB_FILES) $(call src-wildcard,*.bst) 
+BIB_FILES= $(call src-wildcard,*.bib)
 
 include $(depth)/make/stepmake.make
+
+dvi: $(DVI_FILES) $(OUT_BIB_FILES)
+
+ps: $(PS_FILES)
+
+default:
+
+GENHTMLS = engraving colorado computer-notation
+OUTGENHTMLS = $(addprefix $(outdir)/, $(GENHTMLS:%=%.html))
+
+ifeq ($(out),www)
+#   temporary build fix; we don't know yet what's happening
+#   to the literature index.  -gp
+# local-WWW-2: $(addprefix $(outdir)/, $(BIB_FILES:.bib=.html) lit-index.html)
+endif
+
+$(outdir)/%.bib: %.bib
+       ln -f $< $@
+
+$(outdir)/%.html: %.bib
+       BSTINPUTS=$(src-dir) $(buildscript-dir)/bib2html -o $@ $<
+
+local-clean:
+       rm -f fonts.aux fonts.log feta*.tfm feta*.*pk
+
diff --git a/Documentation/essay/colorado.bib b/Documentation/essay/colorado.bib
new file mode 100644 (file)
index 0000000..f72fa18
--- /dev/null
@@ -0,0 +1,524 @@
+%
+% TITLE=University of Colorado Engraving music bibliography
+% AUTHOR=Alyssa Lamb (edited & converted to bibtex by HWN)
+%
+
+@Book {jacob47:_music,
+       author ={Jacob, Archibald},
+       year=1947,
+       title = {Musical handwriting : or, How to put music on paper : A handbook for all musicians, professional and amateur},
+       address ={London},
+       publisher ={Oxford University Press}, 
+       note = {subject: Musical notation},
+}
+
+@Book{brandt:_stand_chord_symbol_notat,
+       author ={Carl Brandt and Clinton Roemer},
+       title = {Standardized Chord Symbol Notation},
+       address={Sherman Oaks, CA},
+       publisher={Roerick Music Co.},
+       note ={subject: musical notation},
+}
+
+@Book{johnson46:_how,
+       author = {Johnson, Harold M},
+       year = 1946,
+       title = {How to write music manuscript an exercise-method handbook for the  music student, copyist, arranger, composer, teacher},
+       publisher={Carl Fischer, Inc.},
+       address= {New York},
+       note = {subject: Musical notation --Handbooks, manuals},
+}
+
+@Book{sadie90:_music_print_publis,
+       title = {Music Printing & Publishing},
+       author ={Donald W. Krummel \& Stanley Sadie},
+       year = 1990,
+       publisher= {Macmillan Press},
+       note ={subject: musical notation},
+}
+
+@Book{foss:_music_print,
+       author={Foss, Hubert},
+       title = {Music Printing},
+       series = {Practical Printing and Binding},
+       address={London},
+       publisher={Oldhams Press Ltd., Long Acre},
+       note ={subject: musical notation},
+}
+
+@Book{steele03:_earlies_englis_music_print,
+       author = {Steele, Robert},
+       year = 1903,
+       title = {The Earliest English Music Printing},
+       address={London},
+       note= {subject: history of music printing and engraving},
+}
+
+@Book{austin:_story_music_print,
+       author={Austin, Ernest},
+       title = {The Story of Music Printing},
+       address={London},
+       publisher={Lowe and Brydone Printers, Ltd.},
+       note= {subject: history of music printing and engraving},
+
+}
+
+
+
+@Book{?:_pictor_histor_music_print,
+       author={?},
+       title = {Pictoral History of Music Printing},
+       address={Elhardt, Indiana},
+       publisher={H. and A. Selmer, Inc.},
+       note= {subject: history of music printing and engraving},
+
+}
+
+@Book{wintermitz55:_music_autog_montev_hindem,
+       author = {Wintermitz, Emmanuel},
+       year = 1955,
+       title = {Musical Autographs from Monteverdi to Hindemith},
+       address={Princeton},
+       publisher={Princeton University Press},
+       note= {subject: history of music printing and engraving},
+
+}
+
+
+@Book{novello47:_some_accoun_method_music_print,
+
+       author = {Novello, A},
+       year = 1847,
+       title = {Some Account of the Methods of Musick Printing, with Specimens of the Various Sizes of Moveable Types and of Other Matters},
+       address={London},
+       note={ subject: history of music printing and engraving},
+}
+
+@Book{chrsander18:_sketc_histor_music,
+       author={Chrsander, F.},
+       year={18??},
+       title={A Sketch of the HIstory of Music printing, from the 15th to the 16th century},
+       note={ subject: history of music printing and engraving},
+}
+
+@Article {squire1897,
+       author = {Squire, W},
+       year = 1897,
+       title = {Notes on Early Music Printing},
+       journal = {Bibliographica},
+       volume={iii},
+       number=99,
+       note={ subject: history of music printing and engraving},
+
+}
+
+@Article{meyer35:_print_music,
+       author = {Meyer, K. and O'Meara, J},
+       year = 1935,
+       title = {The Printing of Music, 1473-1934},
+       journal = {The Dolphin},
+       volume={ ii},
+       pages={ 171--207},
+       note={ subject: history of music printing and engraving},
+
+}
+%% 4th ver.,
+@Article{pattison39:_notes_early_music_print,
+       author = {Pattison, B},
+       year = 1939,
+       title = {Notes on Early Music Printing},
+       journal = {The Library},
+       note={subject: history of music printing and engraving},
+       volume={xix},
+       pages={389-421}, 
+}
+
+@Book{king64:_four_hundr_years_music_print,
+       author = {King, H},
+       year = 1964,
+       title = {Four Hundred Years of Music Printing},
+       address={London},
+       note={ subject: history of music printing and engraving},
+}
+
+
+%(Rev.1961).
+@Book{deutsch46:_music_number,
+       author={Deutsch, O.F.},
+       year =1946,
+       title = {Music Publishers' Numbers},
+       address={London},
+       note={ subject: history of music printing and engraving},
+}
+
+@Book{marco62:_earlies_music_print_contin_europ,
+       author = {Marco, G.A},
+       year = 1962,
+       title = {The Earliest Music Printers of Continental Europe: a Checklist of Facsimiles Illustrating Their Work},
+       address={Charlottesville, Virginia},
+       note={ subject: history of music printing and engraving},
+}
+
+@Article{kinkeldey32:_music_and_music_print_incun,
+       author = {Kinkeldey, O},
+       year = 1932,
+       title = {Music And Music Printing in Incunabula},
+       journal = {Papers of the Bibliographical Society of America},
+       volume={ xxvi},
+       pages={89-118},
+       note={ subject: history of music printing and engraving},
+}
+
+@Book{oldman34:_collec_music_first_edition,
+       author = {Oldman, C.B},
+       year = 1934,
+       title = {Collecting Musical First Editions},
+       address={London},
+       note={ subject: history of music printing and engraving},
+}
+
+@Book{carter34:_new_paths_book_collec,
+       author={Carter, J},
+       year=1934,
+       title = {New Paths in Book Collecting},
+       address={London},
+       note={ subject: history of music printing and engraving},
+}
+
+@Book{krummel58:_graph_analy_applic_early_americ_engrav_music,
+       author={Krummel, D.W.},
+       year=1958,
+       month=9,
+       title = {Graphic Analysis in Application to Early American Engraved Music},
+       journal = {Notes},
+       volume={xvi},
+       pages=213,
+       note={ subject: history of music printing and engraving},
+}
+
+@Book{krummel71:_oblon_format_early_music_books,
+       author = {Krummel, D.W},
+       year = 1971,
+       title = {Oblong Format in Early Music Books},
+       journal = {The Library},
+       volume={5th ser., xxvi},
+       pages=312,
+       note={ subject: history of music printing and engraving},
+}
+
+@Book{king73:_anniv_music_print,
+       author = {King, A.H},
+       year = 1973,
+       title = {The 50th Anniversary of Music Printing},
+}
+
+@Book{rastall82:_wester,
+       author={Rastall, Richard},
+       year=1982,
+ title = {The notation of Western music : an introduction},
+       address={New York, N.Y.},
+       publisher={St. Martin's Press},
+       note = {Musical notation},
+
+
+}
+
+@Book{tappolet47:_la_notat_music,
+       author = {Tappolet, Willy},
+       year = 1947,
+       title = {La Notation Musicale},
+       address={Paris},
+       note={subject: general notation},
+       publisher={Neuch\^atel},
+}
+
+@Book{williams03:_story_notat,
+       author = {Williams, C.F. Abdy},
+       year = 1903,
+       title = {The Story of Notation},
+       address={New York},
+       publisher={Charles Scribner's Sons},
+       note={subject: general notation},
+}
+
+@Book{apel53,
+       author={Apel, Willi},
+       year=1953,
+       title = {The notation of polyphonic music, 900-1600},
+       address={Cambridge, Mass},
+       institution={Mediaeval Academy of America},
+       note = {Musical notation},
+}
+
+@Book{berger93:_mensur,
+       author={Berger, Anna Maria Busse},
+       year=1993,
+       title = {Mensuration and proportion signs : origins and evolution},
+       address={Oxford, England},
+       publisher={Clarendon Press},
+       scnd_address={New York},
+       scnd_publisher={Oxford University Press },
+       note={subject: early notation},
+}
+
+@Book{parrish57,
+       author={Parrish, Carl},
+       year=1957,
+ title = {The notation of medieval music},
+       address={New York},
+       publisher={Norton},
+       note = {Musical notation},
+
+
+}
+
+@Book{parrish46:_notat_mediev_music,
+       author = {Parrish, Carl},
+       year = 1946,
+       title = {The Notation of Medieval Music},
+       address={New York},
+       publisher={Carl Fischer, Inc.},
+       note={subject: early notation},
+}
+
+@Book{patch49:_genes_music,
+       author = {Patch, Harry},
+       year = 1949,
+       title = {Genesis of a Music},
+       address={Madison},
+       publisher={University of Wisconsin Press},
+       note={subject: early notation},
+}
+
+@Book{cage69:_notat,
+       author={Cage, John},
+       year=1969,
+  title = {Notations},
+       address={New York},
+       publisher={Something Else Press},
+       note = {Music, Manuscripts, Facsimiles.
+
+       Facsimiles of holographs from the Foundation for Contemporary
+       Performance Arts, with text by 269 composers, but rearranged using
+       chance operations.,V)} },
+
+@Book{gaburo77:_notat,
+       author = {Gaburo, Virginia},
+       year = 1977,
+       title = {Notation},
+       address={publisher= {Lingua Press},
+       publisher={La Jolla, California}},
+       note = {A Lecture about notation, new ideas about},
+}
+
+@Book{risatti75:_new_music_vocab,
+       author = {Risatti, Howard},
+       year = 1975,
+       title = {New Music Vocabulary},
+       address={Urbana, Illinois},
+       publisher={University of Illinois Press},
+       note = {A Guide to Notational Signs for Contemporary Music},
+}
+
+
+
+@Book{cowell30:_new_music_resour,
+       author = {Cowell, Henry},
+       year = 1930,
+       title = {New Musical Resources},
+       address={New York},
+       publisher={Alfred A. Knopf, Inc.},
+       note={subject: 20th century notation},
+}
+
+@Article{cowell27:_our_inadeq_notat,
+       author = {Cowell, Henry},
+       year = 1927,
+       title = {Our Inadequate Notation},
+       journal = {Modern Music},
+       volume=4,
+       number=3,
+       note={subject: 20th century notation},
+
+}
+
+@Book{bowers92:_music_letter,
+       author = {Bowers, Roger},
+       year = 1992,
+       title = {Music & Letters},
+       volume=73,
+       number=3,
+       month={August},
+       pages={347(52)},
+       note={Some reflection upon notation and proportion in Monteverdi's mass and vespers},
+}
+
+@Book{brainard92:_curren_music,
+       author = {Brainard, Paul},
+       year = 1992,
+       title = {Current Musicology},
+       number=50,
+       month={July-Dec},
+       pages={21(26)},
+       note={Proportional notation in the music of Schutz and his contemporaries in the 17th Century},
+}
+
+@Book{monelle89:_compar_liter,
+       author = {Monelle, Raymond},
+       year = 1989,
+       title = {Comparative Literature},
+       volume=41, number=3, 
+       month={Summer},
+       pages={252(18)},
+
+       note={Music notation and the poetic foot},
+}
+
+@Book{pinegar93:_curren_music,
+       author = {Pinegar, Sandra},
+       year = 1993,
+       title = {Current Musicology},
+       number=53,
+       month={July},
+       pages={99(10)},
+       note={The seeds of notation and music paleography.},
+}
+
+@Book{smith90:_curren_music,
+       author = {Smith, Norman E},
+       year = 1990,
+       title = {Current Musicology},
+       number={45-47},
+       month={Jan-Dec},
+       pages={283(22)},
+       note={The notation of fractio modi.},
+}
+
+@Book{treitler92:_journ_music,
+       author = {Treitler, Leo},
+       year = 1992,
+       title = {The Journal of Musicology},
+       volume=10,
+       number=2,
+       month={Spring},
+       pages={131(61)},
+
+       note={ The unwritten and written transmission, of medieval chant
+       and the start-up of musical notation.
+
+       Notational practice developed in medieval music to address the written tradition for chant which interacted with the unwritten vocal tradition.},
+}
+
+@Book{west94:_music_letter,
+       author = {West, M.L},
+       year = 1994,
+       title = {Music & Letters},
+       volume=75,
+       number=2,
+       month={May},
+       pages={161(19)},
+       note={The Babylonian musical notation and the Hurrian melodic texts. 
+
+       A new way of deciphering the ancient Babylonian musical notation. 
+}
+}
+
+@Book{brown86:_music_quart,
+       author = {Brown, Earle},
+       year = 1986,
+       title = {Musical Quarterly},
+       volume=72,
+       month={Spring},
+       pages={180(22)},
+       note={The notation and performance of new music.},
+}
+
+@Book{eggleston94:_notes,
+       author = {Eggleston, Suzanne},
+       year = 1994,
+       title = {Notes},
+       volume=51,
+       number=2,
+       month={Dec},
+       pages={657(7)}, 
+       journal={New periodicals},
+       note={A list of new music periodicals covering the period
+       Jun.-Dec. 1994. Includes aims, formats and a description of the
+       contents of each listed periodical. Includes Music Notation News},
+
+}
+
+@Book{fuller89:_journ_music,
+       author = {Fuller, David},
+       year = 1989,
+       title = {The Journal of Musicology},
+       volume=7,
+       number=1,
+       month={Winter},
+       pages={21(8)},
+       note={
+       Notes and inegales unjoined: defending a definition. (written-out inequalities in music notation).        
+}},
+
+@Book{jones90:_persp_new_music,
+
+       author = {Jones, David Evan},
+       year = 1990,
+       title = {Perspectives of New Music},
+       note={Speech extrapolated. (includes notation)}
+}
+
+@Book{lependorf89,
+       author = {Lependorf, Jeffrey},
+       year = 1989,
+       journal={Perspectives of New Music},
+       volume=27,
+       title = {?},
+ number=2,
+       month={Summer},
+       pages={232(20)},
+       note={Contemporary notation for the shakuhachi: a primer for composers. (Tradition and Renewal in the Music of Japan) },
+
+}
+
+@Book{rastall93:_music_letter,
+       author = {Rastall, Richard},
+       year = 1993,
+       title = {Music & Letters},
+       volume=74, number=4,
+       month={November},
+       pages={639(2)},
+
+       note={Equal Temperament Music Notation: The Ailler-Brennink
+       Chromatic Notation. Results and Conclusions of the Music Notation
+       Refor by the Chroma Foundation (book reviews).  },
+}
+
+@Article {Francois92,
+       author={Francois, Jean-Charles},
+       journal = {Perspectives of New Music},
+       volume={30},
+       number={1}, month={Winter},
+       pages={6(15)},
+       year={1992},
+
+       note={subject: Modern music has outgrown notation. While the
+            computer is used to write down music with accuracy never
+            before achieved, the range of modern sounds has surpassed
+            the relevance of the computer...},
+
+       title={Writing without representation, and unreadable notation.},
+}
+
+@Book{hamel89,
+       author = {Hamel, Keith A},
+       year = 1989,
+       journal = {Perspectives of New Music},
+       volume=27,
+       number=1,
+       month={Winter},
+       pages={70(14)},
+
+       title={A design for music editing and printing software based
+on notational syntax}, }
+
diff --git a/Documentation/essay/computer-notation.bib b/Documentation/essay/computer-notation.bib
new file mode 100644 (file)
index 0000000..b5887cb
--- /dev/null
@@ -0,0 +1,771 @@
+%
+% TITLE=The music notation with computer bibliography
+% AUTHOR=Han-Wen Nienhuys
+%
+
+@String{CitH = {Computing and the Humanities}}
+@String{CMJ = {Computer Music Journal}}
+
+
+
+@Book {smith73,
+  year =  {1973},
+  title = {Editing and Printing Music by Computer},
+  author = {Leland Smith},
+  totalentry = {Journal of Music Theory},
+  volume={17},
+  pages ={292-309},
+
+  note = {Gourlay\cite{gourlay86} writes: A discussion of Smith's
+music-printing system SCORE}
+
+}
+
+@Article {byrd74,
+  year =  {1974},
+  title = {A System for Music Printing by Computer},
+  author = {Donald Byrd},
+  journal = {Computers and the Humanities},
+  volume ={8},
+  pages ={161-72},
+}
+
+
+@Article{ericson75,
+  author =      {R. F. Ericson},
+  title =       {The DARMS Project: A status report},
+  journal =     {Computing in the humanities},
+  year =        1975,
+  volume =      9,
+  number =      6,
+  pages =       {291--298},
+  note = {Gourlay\cite{gourlay86} writes: A discussion of the design
+  and potential uses of the DARMS music-description language.}
+}
+
+% Gomberg
+@PhdThesis {gomber75,
+  year =  {1975},
+  title = {A Computer-Oriented System for Music Printing},
+  author = {David A. Gomberg},
+  school = {Washington University},
+}
+
+@Book {gomberg,
+  title = {A Computer-oriented System for Music Printing},
+  author = {David A.  Gomberg},
+  journal  = CitH,
+  volume={11},
+  month = {march},
+  year = {1977},
+  pages = {63-80},
+
+  note = {Gourlay \cite{gourlay86} writes: "A discussion of the
+  problems of representing the conventions of musical notation in
+  computer algorithms."}
+}
+
+
+@TechReport{Ornstein83,
+  author={Ornstein, Severo M. and John Turner Maxwell III},
+  title={Mockingbird: A Composer's Amanuensis},
+  institution={Xerox Palo Alto Research Center},
+  address={3333 Coyote Hill Road, Palo Alto, CA, 94304},
+  number={CSL-83-2},
+  month={January},
+  year={1983}
+}
+
+@Article{Ornstein84,
+  author={Ornstein, Severo M. and John Turner Maxwell III},
+  title={Mockingbird: A Composer's Amanuensis},
+  journal= {Byte},
+  volume= 9,
+  month = {January},
+  year= { 1984},
+
+  note={A discussion of an interactive and graphical computer system
+for music composition}
+
+}
+
+% byrd
+@PhdThesis {byrd85,
+  year =  {1985},
+  title = {Music Notation by Computer},
+  author = {Donald Byrd},
+  school = {Indiana University},
+
+  note = {Describes the SMUT (sic) system for automated music printout.}
+}
+
+@InProceedings{assayaag86,
+  author =      {G. Assayaag and D. Timis},
+  title =       {A Toolbox for music notation},
+  booktitle =   {Proceedings of the 1986 International Computer Music Conference},
+  year =       1986
+}
+
+@TechReport{roush88,
+  year = {1988},
+  title = {Music Formatting Guidelines},
+  author = {D. Roush},
+  number = {OSU-CISRC-3/88-TR10}, 
+  institution = {Department of Computer and Information Science, The Ohio State University},
+
+  note = {Rules on formatting music formulated for use in
+  computers. Mainly distilled from [Ross] HWN},
+
+}
+
+
+@Article{byrd94,
+  author =      {Donald Byrd},
+  title =       {Music Notation Software and Intelligence},
+  journal =     {Computer Music Journal},
+year = 1994,
+pages = {17--20},
+  volume =      18,
+  number =      1,
+
+  note = {Byrd (author of Nightinggale) shows four problematic
+fragments of notation, and rants about notation programs that try to
+exhibit intelligent behaviour. HWN}
+}
+
+
+@Article{field-richards93,
+  author =      {H.S. Field-Richards},
+  title =       {Cadenza: A Music Description Language},
+  journal =     CMJ,
+  year =        1993,
+  volume =      17,
+  number =      4,
+
+  note = {A description through examples of a music entry language.
+Apparently it has no formal semantics.  There is also no
+implementation of notation convertor. HWN}
+
+}
+
+@Article{bielawa93,
+  author =      {Herbert Bielawa},
+  title =       {Review of Sibelius 7},
+  journal =     CMJ,
+  year =        {1993?},
+
+  note = {A raving review/tutorial of Sibelius 7 for Acorn.  (And did
+they seriously program a RISC chip in ... assembler ?!) HWN}
+
+
+}
+
+@Article{sloan93,
+  author =      {Donald Sloan},
+  title =       {Aspects of Music Representation in HyTime/SMDL},
+  journal =     CMJ,
+  year =        1993,
+  volume =      17,
+  number =      4,
+
+note = {An introduction into HyTime and its score description variant
+SMDL.  With a short  example that is quite  lengthy in SMDL}
+
+}
+
+@Article{wiggins93,
+  author =      {Geraint Wiggins and Eduardo Miranda and Alaaaan Smaill and Mitch Harris},
+  title =       {A Framework for the evaluation of music representation systems},
+  journal =     CMJ,
+  year =        1993,
+  volume =      17,
+  number =      3,
+
+  note = {A categorisation of music representation systems (languages,
+OO systems etc) splitted into high level and low level expressiveness.
+The discussion of Charm and parallel processing for music
+representation is rather vague. HWN}
+
+}
+
+
+
+@Article{dannenberg93,
+  author =      {Roger B. Dannenberg},
+  title =       {Music Representation: Issues, Techniques, and Systems},
+  journal =     CMJ,
+  year =        1993,
+  volume =      17,
+  number =      3,
+  url = {http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.44.6067},
+
+  note = {This article  points to some problems and solutions with music
+representation. HWN},
+
+}
+
+@Article{rothstein93,
+  author =      {Joseph Rothstein},
+  title =       {Review of Passport Designs' Encore Music Notation Software},
+  journal =     CMJ,
+  year =        {?},
+
+
+}
+
+
+
+@Article{belkin94,
+  author =      {Alan Belkin},
+  title =       {Macintosh Notation Software: Present and Future},
+  journal =     CMJ,
+  year =        1994,
+  volume =      18,
+  number =      1,
+
+  note = {Some music notation systems are analysed for ease of use,
+  MIDI handling.  The article ends with a plea for a standard notation
+  format. HWN},
+
+}
+
+@InProceedings{montel97,
+  author =      {Dominique Montel},
+  title =       {La gravure de la musique, lisibilit\'e esth\'etique, respect de l'oevre},
+  booktitle =   {Musique \& Notations},
+  year =        1997,
+  address={Lyon},
+  editors ={Genevois \& Orlarey}
+}
+
+
+
+
+@Book {CASR,
+  note = {Annual editions since 1985, many containing surveys of music typesetting technology. SP},
+  title = {Directory of Computer Assisted Research in Musicology},
+  author = {Walter B Hewlett and Eleanor Selfridge-Field},
+  totalentry = {Menlo Park, CA: Center for Computer Assisted Research in the Humanities},
+}
+
+
+@Book{selfridge-field97:_beyon_midi,
+  title =       {Beyond MIDI: the handbook of musical codes},
+  editor =      {Eleanor Selfridge-Field},
+  publisher =   {MIT Press},
+  year =        1997,
+
+  note = {A description of various music interchange formats.}
+}
+
+
+@InProceedings{hoos98:_guido_music_notat_format,
+title={The {GUIDO} Music Notation Format---A Novel Approach
+for Adequately Representing Score-level Music},
+author = {H. H. Hoos and K. A. Hamel and K. Renz and J. Kilian},
+booktitle = {Proceedings of International Computer Music Conference},
+year = 1998,
+pages = {451--454},
+}
+
+@Article {blostein91,
+
+  note = {This paper provides a overview of the algorithm used in LIME
+  for spacing individual lines. HWN},
+
+  year =  {1991},
+  title = {Justification of Printed Music},
+  author = {Dorothea Blostein and Lippold Haken},
+  journal   = {Communications of the ACM},
+  volume= {J34},
+  number= {3},
+  month= {March},
+  pages = {88-99},
+}
+
+
+@Article {haken93,
+  year =  {1993},
+  title = {The Tilia Music Representation: Extensibility, Abstraction, and Notation Contexts for the Lime Music Editor},
+  author = {Lippold Haken and Dorothea Blostein},
+  journal = {Computer Music Journal},
+  volume= {17},
+  number={3},
+  pages = {43--58},
+}
+@Article{blostein94,
+  author =      {Dorothea Blostein and Lippold Haken},
+  title =       {The Lime Music Editor: A Diagram Editor Involving Complex
+  Translations},
+  journal =     {Software Practice and Experience},
+  year =        {1994},
+  volume =      {24},
+  number =      {3},
+  month =       {march},
+  pages =       {289--306},
+
+  note = {A description of various conversions, decisions and issues
+relating to this interactive editor HWN},
+
+}
+
+
+
+@InProceedings{haken95,
+  year =  {1995},
+  title = {A New Algorithm for Horizontal Spacing of Printed Music},
+  author = {Lippold Haken and Dorothea Blostein},
+  booktitle = {International Computer Music Conference},
+  address={Banff},
+  month={Sept},
+  pages = {118-119},
+
+  note = {This describes an algorithm which uses springs between
+adjacent columns. }, }
+
+
+@InProceedings{bouzaiene98:_une,
+  author =      {Nabil Bouzaiene and Lo\"ic Le Gall and Emmanuel Saint-James},
+  title =       {Une biblioth\`eque pour la notation  musicale baroque},
+  booktitle =   {EP '98},
+  year =        1998,
+  series =      {LNCS},
+
+  note = {Describes ATYS, an extension to Berlioz, that can mimick
+  handwritten baroque style beams}
+}
+
+
+
+
+@InProceedings{balaban88,
+  author =      {M. Balaban},
+  title =       {A Music Workstation Based on Multiple Hierarchical Views of Music},
+  booktitle =   {Proceedings of the 1988 International Computer Music Conference},
+  year =        1988,
+  address =     {San Francisco},
+  organization = {International Computer Music Association}
+}
+
+%
+% MusiCopy
+%
+@TechReport {gourlay87-spacing,
+annote = {Algorithm for generating spacing in one line of (polyphonic) music, tailored for use with MusiCopy. LilyPond uses a variant of it.},
+  year =  {1987},
+  title = {Spacing a Line of Music,},
+  author = {John S. Gourlay},
+  number = {OSU-CISRC-10/87-TR35},
+  institution ={Department of Computer and Information Science, The Ohio State University},
+}
+
+
+@TechReport {parish87,
+  annote = {A brief overview of {MusiCopy}},
+  year =  {1987},
+  title = {{MusiCopy}: An automated Music Formatting System},
+  author = {Allen Parish and Wael A. Hegazy and John S. Gourlay and Dean K. Roush and F. Javier Sola},
+  totalentry = {OSU-CISRC-10/87-TR29},
+  institution ={Department of Computer and Information Science, The Ohio State University},
+}
+
+@TechReport {gourlay87-formatting,
+  note = {This paper discusses the development of algorithms for the
+formatting of musical scores (from abstract). It also appeared at
+PROTEXT III, Ireland 1986},
+
+  year =  {1987},
+  title = {Computer Formatting of Music},
+  author = {John S. Gourlay and A. Parrish
+and D. Roush and F. Sola and Y. Tien},
+  number = {OSU-CISRC-2/87-TR3},
+  institution ={Department of Computer and Information Science,
+The Ohio State University},
+}
+
+
+@TechReport {hegazy87,
+  year =  {1987},
+  title = {On the Implementation of the {MusiCopy} Language Processor,},
+
+  author = {Wael A. Hegazy},
+  number = {OSU-CISRC-10/87-TR34},
+  institution={Department of Computer and Information Science, The Ohio State University},
+
+  note = {Describes the "parser" which converts {MusiCopy} MDL to
+  MusiCopy Simultaneities and columns.
+
+MDL is short for Music Description Language\cite{gourlay86}. It
+accepts music descriptions that are organised into measures filled
+with voices, which are filled with notes. The measures can be arranged
+simultaneously or sequentially.  To address the 2-dimensionality,
+almost all constructs in MDL must be labeled.
+
+MDL uses begin/end markers for attribute values and spanners.
+Rightfully the author concludes that MusiCopy must administrate a
+"state" variable containing both properties and current spanning symbols.
+
+MusiCopy attaches graphic information to the objects constructed in
+the input: the elements of the input are partially complete graphic
+objects.
+
+},
+
+}
+
+
+@TechReport {hegazy87-breaking-tr,
+
+annote = {This generalizes \TeX's breaking algorithm to music. It also
+appeared in Document Manipulation and Typography, J.C. van Vliet (ed)
+1988},
+
+  year =  {1987},
+
+  title = {Optimal line breaking in music},
+  author = {Wael A. Hegazy and John S. Gourlay},
+  number = {OSU-CISRC-8/87-TR33},
+  institution={Department of Computer and Information Science, The Ohio State University,},
+}
+
+@InProceedings{hegazy88:_optim,
+  author = {Wael A. Hegazy and John S. Gourlay},
+booktitle = {Proceedings of the International Conference on
+Electronic Publishing, Document Manipulation and Typography. Nice (France)},
+month = {April},
+year =1988,
+editor={J. C. van Vliet},
+publisher = {Cambridge University Press},
+ISBN={0-521-36294-6},
+  title = {Optimal line breaking in music},
+}
+
+
+@TechReport {roush87,
+  note = {User manual of MusiCopy. },
+
+  year =  {1987},
+  title = {Using {MusiCopy}},
+  author = {Dean K. Roush},
+  number = {OSU-CISRC-18/87-TR31},
+  institution={Department of Computer and Information Science, The Ohio State University},
+}
+
+
+@TechReport {parrish87-simultaneities,
+
+note = {This note discusses
+  placement of balls, stems, dots which occur at the same moment
+  ("Simultaneity")},
+
+  year =  {1987},
+  title = {Computer Formatting of Musical Simultaneities,},
+  author = {A. Parrish and John S. Gourlay},
+  institution={Department of Computer and Information Science, The Ohio State University},
+  number = {OSU-CISRC-10/87-TR28},
+}
+
+
+@TechReport {sola87,
+  note = {Overview of a procedure for generating slurs},
+  year =  {1987},
+  title = {Computer Design of Musical Slurs, Ties and Phrase Marks,},
+  author = {F. Sola},
+  institution={Department of Computer and Information Science, The Ohio State University},
+  number = {OSU-CISRC-10/87-TR32},
+}
+
+
+@Article {gourlay86,
+  note = {This paper describes the {MusiCopy} musicsetting system and an input language to go with it.},
+
+  year =  {1986},
+  title = {A language for music printing},
+  author = {John. S. Gourlay},
+  journal = {Communications of the ACM},
+   volume= {29},
+  number ={5},
+  pages = {388--401},
+}
+
+
+@TechReport {sola87-beams,
+
+institution={Department of Computer and Information Science, The Ohio
+State University},
+
+  note = {Calculating beam slopes HWN},
+  year =  {1987},
+  title = {Design of Musical Beams,},
+  author = {F. Sola and D. Roush},
+  number = {OSU-CISRC-10/87-TR30},
+}
+
+
+@PhdThesis {page88,
+  note = {Don't ask Stephen for a copy. Write to the Bodleian Library, Oxford, or to the British Library, instead. SP},
+  year =  {1988},
+  title = {Computer Tools for Music Information Retrieval},
+  author = {Stephen Dowland Page},
+  school ={Dissertation University of Oxford},
+}
+
+
+%
+% three part study by John Gr/over
+@TechReport{grover89-symbols,
+  author =      {John Gr\/over},
+  title =       {A computer-oriented description of Music Notation.  Part I. The Symbol Inventory},
+  institution =  {Department of informatics, University of Oslo},
+  year =        1989,
+  number =      133,
+
+note = {The goal of this series of reports is a full description of
+music formatting.  As these largely depend on parameters of fonts, it
+starts with a verbose description of music symbols.
+
+ The subject is treated backwards: from general rules of typesetting
+the author tries to extract dimensions for characters, whereas the
+rules of typesetting (in a particular font) follow from the dimensions
+of the symbols.  His symbols do not match (the stringent) constraints
+formulated by eg. \cite{wanske}} }
+
+@TechReport{grover89-twovoices,
+  author =      {John Gr\/over},
+  title =       {A computer-oriented description of Music Notation. Part II: Two Voice Sharing a Staff, Leger Line Rules, Dot Positioning},
+
+  institution =  {Department of informatics, University of Oslo},
+  year =        1989,
+  number =      134,
+
+  note = {A lot rules for what is in the title are formulated.  The
+descriptions are long and verbose.  The verbosity shows that
+formulating specific rules is not the proper way to approach the
+problem.  Instead, the formulated rules should follow from more
+general rules, similar to\cite{parrish87-simultaneities}},
+}
+
+@TechReport{grover89-accidentals,
+  author =      {John Gr\/over},
+  title =       {A computer-oriented description of Music Notation. Part III: Accidental Positioning},
+  institution =  {Department of informatics, University of Oslo},
+  year =        1989,
+  number =      135,
+
+note = {Placement of accidentals crystallised in an enormous set of
+rules.  Same remarks as for \cite{grover89-twovoices} applies} }
+
+
+@PhdThesis{mueller90:_inter_bearb_musik,
+  author =      {Giovanni M\"uller},
+  title =       {Interaktive Bearbeitung konventioneller Musiknotation},
+  school =      {Eidgen\"ossischen Technischen Hochschule Z\"urich},
+  year =        1990,
+
+note = {This is about engraver-quality typesetting with computers.  It
+accepts the axiom that notation is too difficult to generate
+automatically.  The result is that a notation program should be a
+WYSIWYG editor that allows one to tweak everything.
+}
+
+}
+
+
+
+
+
+@MastersThesis{roelofs91,
+
+note = {This dutch thesis describes a monophonic typesetting system,
+  and focuses on the breaking algorithm, which is taken from Hegazy &
+  Gourlay },
+
+  year =  {1991},
+  title = {Een Geautomatiseerd Systeem voor het Afdrukken van Muziek},
+  author = {Ren\'e Roelofs},
+  school={Erasmus Universiteit Rotterdam},
+  number={45327},
+  translation = {``An automated system for printing music'' Master's Thesis Managerial Computer Science.},
+}
+
+
+@Article {filgueiras93,
+  year =  {1993},
+  title = {Representation and manipulation of music documents in SceX},
+  author = {Miguel Filgueiras and Jos\'e Paulo Leal},
+  journal= {Electronic Publishing},
+  volume={6},
+  number={4}, pages = {507--518},
+  url={http://citeseerx.ist.psu.edu/viewdoc/summary?doi=10.1.1.17.1480},
+}
+
+
+@Article {foxley87,
+
+note = {A paper on a simple TROFF preprocessor to typeset music. },
+
+  year =  {1987},
+  title = {Music --- A language for typesetting music scores},
+  author = {Eric Foxley},
+  journal = {Software --- Practice and Experience},
+  volume = {17},
+  number = {8},
+  pages = {485-502},
+}
+
+@Article {Langston90,
+
+  note = {This paper deals with some command-line
+  tools for music editing and playback. },
+
+  year =  {1990},
+  title = {Unix music tools at Bellcore},
+  author = {Peter S. Langston},
+  journal={Software --- Practice and Experience},
+  volume={20},
+  number={S1},
+  pages={47--61},
+}
+
+
+@Book {filgueiras96,
+  year = {1996},
+  title = {Implementing a Symbolic Music Processing System},
+  author = {Miguel Filgueiras},
+  totalentry = {LIACC, Universidade do Porto, 1996; submitted},
+}
+
+@Book {filgueiras?,
+  title = {Some Music Typesetting Algorithms},
+  author = {Miguel Filgueiras},
+  totalentry = {Miguel Filgueiras. ``Some Music Typesetting Algorithms''. LIACC, Universidade do Porto, forthcoming},
+}
+
+
+@Article {colorado-web,
+  author ={Alyssa Lamb},
+
+  note = {Webpages about engraving (designed with finale
+users in mind) (sic) HWN},
+
+  institution = {The University of Colorado},
+  title ={The University of Colorado Music Engraving page.},
+  HTML={http://www.cc.colorado.edu/Dept/MU/Musicpress/},
+  year={1996}
+}
+
+@Article {tablature-web,
+  note = {FAQ (with answers) about TAB, the ASCII variant of Tablature. HWN},
+  title = {how to read and write tab: a guide to tab notation},
+  author = {Howard Wright},
+  email={Howard.Wright@ed.ac.uk},
+  url={http://www.guitartabs.cc/tabfaq.shtml},
+}
+
+@Article {niff-web,
+
+  note = {Specs for NIFF, a reasonably comprehensive but binary
+  format for notation HWN},
+
+  year =  {1995},
+  title = {NIFF6a Notation Interchange File Format},
+  author = {Cindy Grande},
+  publisher={Grande Software Inc.},
+  HTML= {http://www.jtauber.com/music/encoding/niff/},
+  ftp = {ftp://blackbox.cartah.washington.edu}
+}
+
+@Article {smdl-web,
+  author = {International Organization for Standardization (ISO)},
+  title = {Information Technology - Document Description and Processing Languages - Standard Music Description Language (SMDL)},
+  pdf= {ftp://ftp.ornl.gov/pub/sgml/wg8/smdl/10743.pdf},
+  number={ISO/IEC DIS 10743},
+  year = {1992},
+  annote = {SGML instance for describing music.  Very comprehensive in music
+definition, but no support for notation / performance whatsoever (They
+basically say: "You can embed a NIFF or MIDI file")}
+}
+
+
+@Article {rader96,
+
+  note = {Describes a system called MusicEase, and explains that it
+  uses "constraints" (which go unexplained) to automatically position
+  various elements. },
+  html={http://mesastate.edu/~grader/ieeeme.pdf}, 
+  year =  {1996},
+  title = {Creating Printed Music Automatically},
+  author = {Gary M. Rader},
+  journal = {Computer},
+  volume={29},
+  number={6},
+  month={June},
+  pages = {61--69},
+}
+
+
+@MastersThesis{gall97:_creat,
+  author =      {Lo\"ic Le Gall},
+  title =       {Cr\'eation d'une police adapt\'ee \`a la notation musicale baroque},
+  school = {\'Ecole Estienne},
+  year = 1997,
+}
+
+@TechReport{droettboom00:_study_notat_descr_languag,
+  author =      {Michael Droettboom},
+  title =       {Study of music Notation Description Languages},
+  year =        2000,
+  url= {http://www.music.mcgill.ca/~ich/research/omr/levy/format.pdf},
+
+  note ={GUIDO and lilypond compared. LilyPond wins on practical
+issues as usability and availability of tools, GUIDO wins on
+implementation simplicity.}  }
+
+@PhdThesis{gieseking01:_code_gener_noten,
+  author =      {Martin Gieseking},
+  title =       {Code-basierte Generierung interaktiver Notengraphik
+
+},
+  school =      {Universit\"at Osnabr\"uck},
+  year =        2001,
+  isbn = {ISBN 3-923486-30-8}
+}
+
+@Book{hewlett01:_virtual_score,
+  editor =      {Walter B. Hewlett and Eleanor Selfridge-Field},
+  title =       {The Virtual Score; representation, retrieval and restoration},
+  publisher =   {MIT Press},
+series = {Computing in Musicology},
+  year =        2001
+}
+
+
+
+@PhdThesis{renz02:_algor_guido,
+  author =      {Kai Renz},
+  title =       {Algorithms and data structures for a music notation system based on GUIDO music notation},
+  school =      {Universit\"at Darmstadt},
+  year =        2002
+}
+
+@InBook{powell02:_music,
+  author =      {Steven Powell},
+  title =       {Music engraving today},
+  publisher =   {Brichtmark},
+  year =        2002,
+
+  note =        {A "How Steven uses Finale" manual.}
+}
+
+
+@InProceedings{nienhuys03:_lilyp,
+  author =      {Han-Wen Nienhuys and Jan Nieuwenhuizen},
+  title =       {LilyPond, a system for automated music engraving},
+  booktitle =   {XIV Colloquium on Musical Informatics},
+  year =        2003,
+  pages = {167--172},
+  address =     {Firenze},
+  month =       {May}
+}
+
diff --git a/Documentation/essay/engraving.bib b/Documentation/essay/engraving.bib
new file mode 100644 (file)
index 0000000..6d8e0e9
--- /dev/null
@@ -0,0 +1,357 @@
+%
+% TITLE=The engraving bibliography
+% AUTHOR=Han-Wen Nienhuys
+%
+
+
+@Book{banter,
+  author =     {Harald Banter},
+  title =      {Akkord Lexikon},
+  publisher =  {Schott's S\"ohne},
+  year =       {1987},
+  isbn =       {ISBN 3-7957-2095-8},
+  note =       {Comprehensive overview of commonly used
+  chords.  Suggests (and uses) a unification for all different kinds
+  of chord names.},
+  address =    {Mainz, Germany},
+}
+
+
+
+@Book{rastall,
+  author =      {Richard Rastall},
+  ALTeditor =   {},
+  title =       {The Notation of Western Music: an
+  Introduction},
+  publisher =   {J. M. Dent \& Sons London},
+  year =        {1983},
+  note = {Interesting account of the evolution and origin of common notation starting from neumes, and ending with modern innovations HWN},
+}
+
+
+@Book{ignatzek95:_jazzm_klavier,
+  author =      {Klaus Ignatzek},
+  title =       {Die Jazzmethode f\"ur Klavier 1},
+  publisher =   {Schott},
+  year =        1995,
+  note =        {This book contains a system for denoting chords that is used in LilyPond.}
+}
+
+@Book{mcgrain,
+  author =      {Mark Mc Grain},
+  title =       {Music notation},
+  year =        1991,
+  publisher={Hal Leonard Publishing Corporation},
+isbn ={0793508479},
+note={HWN writes: `Book' edition of lecture notes from XXX school of
+music.  The book looks like it is xeroxed from bad printouts.  The
+content has nothing you won't find in other books like\cite{read} or
+\cite{heussenstamm}.   }
+}
+
+@Book{ross,
+  author =      {Ted Ross},
+  title =       {Teach yourself the art of music engraving and processing},
+  publisher =   {Hansen House},
+  year =        1987,
+annote =        {This is about engraving, i.e.  professional typesetting.  It contains
+  directions on good typesetting, but the sections on reproduction
+  technicalities, how to use pens and history are interesting.
+  Especially the section on Music Typewriters is amusing HWN},
+  address =     {Miami, Florida},
+}
+
+@Book {read78,
+  note = {Sound (boring) review of the various hairy rhythmic notations used by avant-garde composers HWN},
+  year =  {1978},
+  title = {Modern Rhythmic Notation},
+  author = {Gardner Read},
+  publisher = {Indiana University Press},
+}
+
+@Book {read-notation,
+  note = {This is as close to the ``standard''
+  reference work for music notation issues as one is likely to get.},
+
+  title = {Music Notation: a Manual of Modern Practice},
+  author = {Gardner Read},
+  totalentry = {(2nd edition)},
+  year = 1979,
+  publisher ={Taplinger Publishing},
+  address ={New York},
+}
+
+@Book {weaner93,
+  year =  {1993},
+  title = {Standard Music Notation Practice},
+  author = {Maxwell Weaner and Walter Boelke},
+  totalentry = {revised edition by Arnold Broido and Daniel Dorff.},
+  publisher = {Music Publisher's Association of the United States Inc},
+  address = {New York}
+}
+
+
+@Book {wanske,
+
+  annote = {I. A very thorough overview of engraving practices of various
+  craftsmen. It includes detailed specs of characters, dimensions
+  etc. II. a thorough overview of a anonymous (by now antiquated)
+  automated system. EDV Means e(lektronischen) D(aten)v(erarbeitung),
+  electronic data processing HWN.},
+
+  year =  {1988},
+  title = {Musiknotation --- Von der Syntax des
+    Notenstichs zum EDV-gesteuerten Notensatz},
+  author = {Helene Wanske},
+  publisher = {Schott-Verlag},
+  address = {Mainz},
+  isbn = {ISBN 3-7957-2886-x},
+}
+
+
+@Book {hader48,
+  year =  {1948},
+  title = {Aus der Werkstatt eines Notenstechers},
+  author = {Karl Hader},
+  publisher = {Waldheim--Eberle Verlag},
+  address ={Vienna},
+
+  note = {Hader was a chief-engraver in a Viennese engraving
+workshop. This beautiful booklet was intended as an introduction for
+laymen on the art of engraving.  It contains a step by step, in-depth
+explanation of how to cut and stamp music into zinc plates.  It also
+contains a few compactly formulated rules on musical orthography. Out
+of print. }
+
+
+}
+
+@Book{gamble23:_music_engrav,
+  author =      {William Gamble},
+  title =       {Music Engraving and printing.  Historical and Technical Treatise},
+  publisher =   {Sir Isaac Pitman & Sons, ltd.},
+  year =        1923,
+  note = {This pattriotic book was an attempt to promote and help
+  British music engravers.  It is somewhat similar to Hader's
+  book\cite{hader48} in scope and style, but Gamble focuses more on
+  technical details (Which French punch cutters are worth buying from,
+  etc.), and does not treat typographical details, such as optical
+  illusions.  It is available as reprint from Da Capo Press, New York
+  (1971).}
+}
+
+
+@Booklet {mpa96,
+  note = {Pamphlet explaining a few  fine points in music font design HWN},
+  year =  {1996},
+  title = {Standard music notation specifications for computer programming.},
+  month =  {December},
+  author ={mpa},
+  publisher = {MPA},
+}
+
+
+@Book {donato63,
+  year =  {1963},
+  author = {Anthony Donato},
+  title ={Preparing Music Manuscript},
+  address ={Englewood Cliffs, NJ},
+  publisher={Prentice-Hall},
+}
+
+
+@Book {Karkoshka72,
+  year =  {1972},
+  title = {Notation in New Music; a critical guide to interpretation and realisation},
+  author = {Erdhard Karkoshka},
+  translator={Ruth Koenig},
+  publisher={Praeger Publishers},
+  address={New York},
+  note ={(Out of print)},
+}
+
+
+@Book {Roemer84,
+  year =  {1984},
+  title = {The Art of Music Copying},
+  author = {Clinton Roemer},
+  publisher={Roerick music co.},
+  address= {Sherman Oaks (CA)},
+
+  note ={Out of print. Heussenstamm writes: an instructional manual
+    which specializes in methods used in the commercial field. },
+  edition={2nd},
+}
+
+
+@Book {Rosecrans79,
+  year =  {1979},
+  title = {Music Notation Primer},
+  author = {Glen Rosecrans},
+  publisher={Passantino},
+  address={New York},
+  note={Heussenstamm writes: Limited in scope, similar to \cite{Roemer84}}
+}
+
+@Book {donemus1982,
+  year =  {1982},
+  title = {Uitgeven van muziek},
+subtitle = {Handleiding voor componisten en copiisten},
+  author = {Donemus},
+  publisher= {Donemus Amsterdam},
+
+  note = {Manual on copying for composers and copyists at the Dutch
+ publishing house Donemus. Besides general comments on copying, it
+ also contains a lot of hands-on advice for making performance
+ material for modern pieces.}
+
+}
+
+
+@Book{vinci,
+author={Vinci, Albert C.},
+title={Fundamentals of Traditional Music Notation},
+publisher={Kent State University Press},
+year={1989}
+}
+
+@Book{schirmer90,
+  author={{G. Schirmer, Inc.}},
+  title={The G. Schirmer Manual of Style and Usage},
+  address={New York},
+  publisher={The G. Schirmer Publications Department},
+  year={2001},
+note={This is the style guide for Schirmer publications. This manual
+specifically focuses on preparing print for publication by
+Schirmer. It discusses many details that are not in other, normal
+notation books. It als gives a good idea of what is necessary to bring
+printouts to publication quality.
+It can be ordered from the rental department.
+
+
+}
+}
+
+
+@Book {Stone80,
+  year =  {1980},
+  title = {Music Notation in the Twentieth Century},
+  author = {Kurt Stone},
+  publisher= {Norton},
+  address={New York},
+  note ={Heussenstamm writes: The most important book on notation in recent years. },
+
+}
+@Book {Heussenstamm87,
+  year =  {1987},
+  title = {The Norton Manual of Music Notation},
+  author = {George Heussenstamm},
+  address= {New York},
+  publisher={Norton},
+  note={Hands-on instruction book for copying (ie. handwriting) music.  Fairly complete. HWN}
+}
+
+
+@Book {gerou96,
+  note = {A cheap, concise, alphabetically ordered list of typesetting and music (notation) issues with a rather simplistic attitude but in most  cases "good-enough" answers JCN},
+  year =  {1996},
+  title = {Essential Dictionary of Music Notation},
+  author = {Tom Gerou and Linda Lusk},
+  publisher = {Alfred Publishing},
+  address ={Van Nuys CA},
+  isbn ={ISBN 0-88284-768-6},
+}
+
+
+@Book {chlapik87,
+  note = {An clearly written book for the casually interested
+  reader. It shows some of the conventions and difficulties in
+  printing music HWN},
+
+  year =  {1987},
+  title = {Die Praxis des Notengraphikers},
+  author = {Herbert Chlapik},
+  publisher = {Doblinger},
+  isbn ={ISBN 3-9000 035-96-2},
+}
+
+
+
+@Book {barksdale57,
+       author = {Barksdale, A},
+       year = {1957},
+       title = {The Printed Note: 500 Years of Music Printing and Engraving},
+       address={Toledo, Ohio},
+       month = {January},
+       note={`The exhibition "The Printed Note" attempts to show the various processes used since the second of the 15th century for reproducing music mechanically ... '. The illustration mostly feature ancient music},
+       publisher={The Toledo Museum of Art},
+}
+
+
+@Book {wolf19,
+       author = {Wolf, Johannes},
+       year = {1919},
+       title = {Handbuch der Notationskunde},
+       address={Leipzig},
+       publisher={Breitkopf & Hartel},
+       note= {Very thorough treatment (in two volumes) of the history of music notation},
+}
+
+@Book {rosenthal67,
+       author = {Rosenthal, Carl A},
+       year = {1967},
+       title = {A Practical Guide to Music Notation},
+       address={New York},
+       publisher={MCA Music},
+       note={Heussenstamm writes: Informative in terms of traditional notation.  Does not concern score preparation}
+}
+
+
+@Book {Boehm61,
+       author = {Boehm, Laszlo},
+       year = {1961},
+       title={Modern Music Notation},
+       address={New York},
+       publisher={G. Schirmer, Inc.},
+       note ={Heussenstamm writes: A handy compact reference book in basic notation. }
+}
+@Book{button20:_system_music_notat,
+  author =      {Button, H. Elliot},
+  title =       {System in Musical Notation},
+  publisher =   {Novello and co.},
+  year =        1920,
+  address =     {London}
+}
+
+@Book{johnson46:_how,
+  author =      {Johnson, Harold},
+  title =       {How to write music manuscript},
+  publisher =   {Carl Fischer, Inc.},
+  year =        1946,
+  address =     {New York}
+}
+
+
+
+@Book{tyboni94:_noter_handb_i_tradit_noter,
+  author =      {B\"orje Tyboni},
+  title =       {Noter Handbok I Traditionell Notering},
+  publisher =   {Gehrmans Musikf\"orlag},
+  year =        1994,
+  address =     {Stockholm},
+  note =        {Swedish book on music notation.}
+}
+
+@Book{jaschinski00:_notat,
+  editor =      {Andreas Jaschinski},
+  title =       {Notation},
+  publisher =   {Bärenreiter Verlag},
+  year =        2000,
+  number =      {BVK1625},
+
+  annote = {Articles from "Musik in Geschichte und Gegenwart"
+pertaining to notation.  Both "alternative" notation and ancient
+notation is treated in depth, while "common" notation is not.  }
+}
+
+
index 1b4831a4eeb39c12f58e52b16591ec7549a336c4..baf8d60b2f396d4b41c109d7c71b4337026eabbf 100644 (file)
@@ -7,7 +7,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.12.0"
+@c \version "2.13.4"
 
 @node Music engraving
 @chapter Music engraving
@@ -93,7 +93,7 @@ much thicker than lines in the computer edition.
 @image{pictures/lily-flat-bw,,4cm}
 @end iftex
 @ifnottex
-@image{pitcures/lily-flat-bw,,,png}
+@image{pictures/lily-flat-bw,,,png}
 @end ifnottex
 @end ifnotinfo
 @ifinfo
@@ -323,7 +323,7 @@ fragment = {
 <<
    \new Staff \fragment
    \new Staff \with {
-      \override Beam #'thickness = #0.3
+      \override Beam #'beam-thickness = #0.3
       \override Stem #'thickness = #0.5
       \override Bar #'thickness = #3.6
       \override Tie #'thickness = #2.2
@@ -363,7 +363,7 @@ note head symbol is changed during the music fragment.
   \set autoBeaming = ##f
   \time 2/4
   <d f g>4
-  \once \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
+  \once \override NoteHead #'stencil = #note-head::brew-ez-stencil
   \once \override NoteHead #'font-size = #-7
   \once \override NoteHead #'font-family = #'sans
   \once \override NoteHead #'font-series = #'bold
@@ -759,7 +759,7 @@ following example combines some more exotic constructs.
       \key c \minor
       \set subdivideBeams = ##f
       \override Stem  #'french-beaming = ##t
-      \override Beam  #'thickness = #0.3
+      \override Beam  #'beam-thickness = #0.3
       \override Stem  #'thickness = #4.0
       g'16[ b16 fis16 g16]
       << \makeClusters {
diff --git a/Documentation/essay/html-long.bst b/Documentation/essay/html-long.bst
new file mode 100644 (file)
index 0000000..e01f1fa
--- /dev/null
@@ -0,0 +1,1374 @@
+% BibTeX bibliography style `html-long'
+%   spits out HTML-formatted bibliography in place of bbl output
+% by David Kotz dfk@cs.dartmouth.edu
+% $Id: html-long.bst,v 1.4 2005/07/21 21:29:50 hjunes Exp $
+%    modified from
+% BibTeX standard bibliography style `alpha'
+       % version 0.99a for BibTeX versions 0.99a or later, LaTeX version 2.09.
+       % Copyright (C) 1985, all rights reserved.
+       % Copying of this file is authorized only if either
+       % (1) you make absolutely no changes to your copy, including name, or
+       % (2) if you do make changes, you name it something other than
+       % btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
+       % This restriction helps ensure that all standard styles are identical.
+       % The file btxbst.doc has the documentation for this style.
+
+% DFK added abstract, comment, earlier, keyword, later, URL
+ENTRY
+  { abstract
+    address
+    author
+    booktitle
+    chapter
+    comment
+    earlier
+    edition
+    editor
+    howpublished
+    institution
+    journal
+    key
+    keyword
+    later
+    month
+    note
+    number
+    organization
+    pages
+    private
+    publisher
+    school
+    series
+    title
+    type
+    URL
+    volume
+    year
+  }
+  {}
+  { label extra.label sort.label }
+
+INTEGERS { output.state before.all mid.sentence after.sentence after.block }
+
+FUNCTION {init.state.consts}
+{ #0 'before.all :=
+  #1 'mid.sentence :=
+  #2 'after.sentence :=
+  #3 'after.block :=
+}
+
+STRINGS { s t }
+
+FUNCTION {output.nonnull}
+{ 's :=
+  output.state mid.sentence =
+    { ", " * write$ }
+    { output.state after.block =
+       { add.period$ write$
+         newline$
+       }
+       { output.state before.all =
+            'write$
+            { add.period$ " " * write$ }
+           if$
+       }
+      if$
+      mid.sentence 'output.state :=
+    }
+  if$
+  s
+}
+
+FUNCTION {output}
+{ duplicate$ empty$
+    'pop$
+    'output.nonnull
+  if$
+}
+
+FUNCTION {output.check}
+{ 't :=
+  duplicate$ empty$
+    { pop$ "empty " t * " in " * cite$ * warning$ }
+    'output.nonnull
+  if$
+}
+
+% DFK changed to use cite$ for the label
+% DFK changed to HTML, and use URL to make cite key a link
+FUNCTION {output.bibitem}
+{ newline$
+  URL empty$
+    { "<DT> <A NAME=" quote$ * cite$ * quote$ * 
+       "> " * cite$ * ":</A> </DT>" * write$
+    }
+    { "<DT><A NAME=" quote$ * cite$ * quote$ * " HREF=" * quote$ * 
+       URL * quote$ * "> " * cite$ * ":</A></DT>" * write$
+    }
+  if$
+  newline$
+  "<DD>" write$ newline$
+  ""
+  before.all 'output.state :=
+}
+
+% DFK changed to HTML
+FUNCTION {fin.entry}
+{ add.period$
+  write$
+  newline$
+  earlier empty$
+       'skip$
+       { "<br>" write$ newline$
+         "See also earlier version <A HREF=" quote$ * "#" * earlier * quote$ *
+               ">" * earlier * "</A>." * write$ newline$
+       }
+  if$
+  later empty$
+       'skip$
+       { "<br>" write$ newline$
+         "See also later version <A HREF=" quote$ * "#" * later * quote$ *
+               ">" * later * "</A>." * write$ newline$
+       }
+  if$
+  "</DD>" write$ newline$
+}
+
+FUNCTION {new.block}
+{ output.state before.all =
+    'skip$
+    { after.block 'output.state := }
+  if$
+}
+
+FUNCTION {new.sentence}
+{ output.state after.block =
+    'skip$
+    { output.state before.all =
+       'skip$
+       { after.sentence 'output.state := }
+      if$
+    }
+  if$
+}
+
+FUNCTION {not}
+{   { #0 }
+    { #1 }
+  if$
+}
+
+FUNCTION {and}
+{   'skip$
+    { pop$ #0 }
+  if$
+}
+
+FUNCTION {or}
+{   { pop$ #1 }
+    'skip$
+  if$
+}
+
+FUNCTION {new.block.checka}
+{ empty$
+    'skip$
+    'new.block
+  if$
+}
+
+FUNCTION {new.block.checkb}
+{ empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.block
+  if$
+}
+
+FUNCTION {new.sentence.checka}
+{ empty$
+    'skip$
+    'new.sentence
+  if$
+}
+
+FUNCTION {new.sentence.checkb}
+{ empty$
+  swap$ empty$
+  and
+    'skip$
+    'new.sentence
+  if$
+}
+
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+    { pop$ "" }
+    'skip$
+  if$
+}
+
+% DFK changed to HTML
+FUNCTION {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "<EM>" swap$ * "</EM>" * }
+  if$
+}
+
+% DFK added for HTML strong emphasis
+FUNCTION {strong}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "<STRONG>" swap$ * "</STRONG>" * }
+  if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+% DFK added this, to strip {} and ~ from titles and authors
+% It's not a great idea, because it will screw up in math mode and some
+% special characters... but it makes most things much prettier.
+FUNCTION {author.title.purify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "{" = 
+      t #1 #1 substring$ "}" = or
+       'skip$
+       { t #1 #1 substring$ "~" =
+           { " " * }
+           { t #1 #1 substring$ * }
+       if$
+       }
+      if$
+      t #2 global.max$ substring$ 't :=
+    }
+  while$
+}
+
+FUNCTION {format.names}
+{ 's :=
+  #1 'nameptr :=
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
+      nameptr #1 >
+       { namesleft #1 >
+           { ", " * t * }
+           { numnames #2 >
+               { "," * }
+               'skip$
+             if$
+             t "others" =
+               { " et&nbsp;al." * }
+               { " and " * t * }
+             if$
+           }
+         if$
+       }
+       't
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {format.authors}
+{ author empty$
+    { "" }
+    { author format.names  author.title.purify }
+  if$
+}
+
+FUNCTION {format.editors}
+{ editor empty$
+    { "" }
+    { editor format.names
+      editor num.names$ #1 >
+       { ", editors" * }
+       { ", editor" * }
+      if$
+    }
+  if$
+}
+
+% DFK added strong, so it will be bold.
+FUNCTION {format.title}
+{ title empty$
+    { "" }
+    { title "t" change.case$  author.title.purify strong }
+  if$
+}
+
+FUNCTION {n.dashify}
+{ 't :=
+  ""
+    { t empty$ not }
+    { t #1 #1 substring$ "-" =
+       { t #1 #2 substring$ "--" = not
+           { "--" *
+             t #2 global.max$ substring$ 't :=
+           }
+           {   { t #1 #1 substring$ "-" = }
+               { "-" *
+                 t #2 global.max$ substring$ 't :=
+               }
+             while$
+           }
+         if$
+       }
+       { t #1 #1 substring$ *
+         t #2 global.max$ substring$ 't :=
+       }
+      if$
+    }
+  while$
+}
+
+FUNCTION {format.date}
+{ year empty$
+    { month empty$
+       { "" }
+       { "there's a month but no year in " cite$ * warning$
+         month
+       }
+      if$
+    }
+    { month empty$
+       'year
+       { month " " * year * }
+      if$
+    }
+  if$
+}
+
+% DFK changed emphasize to strong
+FUNCTION {format.btitle}
+{ title author.title.purify strong
+}
+
+FUNCTION {tie.or.space.connect}
+{ duplicate$ text.length$ #3 <
+    { "&nbsp;" }
+    { " " }
+  if$
+  swap$ * *
+}
+
+FUNCTION {either.or.check}
+{ empty$
+    'pop$
+    { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+  if$
+}
+
+FUNCTION {format.bvolume}
+{ volume empty$
+    { "" }
+    { "volume" volume tie.or.space.connect
+      series empty$
+       'skip$
+       { " of " * series emphasize * }
+      if$
+      "volume and number" number either.or.check
+    }
+  if$
+}
+
+FUNCTION {format.number.series}
+{ volume empty$
+    { number empty$
+       { series field.or.null }
+       { output.state mid.sentence =
+           { "number" }
+           { "Number" }
+         if$
+         number tie.or.space.connect
+         series empty$
+           { "there's a number but no series in " cite$ * warning$ }
+           { " in " * series * }
+         if$
+       }
+      if$
+    }
+    { "" }
+  if$
+}
+
+FUNCTION {format.edition}
+{ edition empty$
+    { "" }
+    { output.state mid.sentence =
+       { edition "l" change.case$ " edition" * }
+       { edition "t" change.case$ " edition" * }
+      if$
+    }
+  if$
+}
+
+INTEGERS { multiresult }
+
+FUNCTION {multi.page.check}
+{ 't :=
+  #0 'multiresult :=
+    { multiresult not
+      t empty$ not
+      and
+    }
+    { t #1 #1 substring$
+      duplicate$ "-" =
+      swap$ duplicate$ "," =
+      swap$ "+" =
+      or or
+       { #1 'multiresult := }
+       { t #2 global.max$ substring$ 't := }
+      if$
+    }
+  while$
+  multiresult
+}
+
+FUNCTION {format.pages}
+{ pages empty$
+    { "" }
+    { pages multi.page.check
+       { "pages" pages n.dashify tie.or.space.connect }
+       { "page" pages tie.or.space.connect }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+  number empty$
+    'skip$
+    { "(" number * ")" * *
+      volume empty$
+       { "there's a number but no volume in " cite$ * warning$ }
+       'skip$
+      if$
+    }
+  if$
+  pages empty$
+    'skip$
+    { duplicate$ empty$
+       { pop$ format.pages }
+       { ":" * pages n.dashify * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+    'format.pages
+    { type empty$
+       { "chapter" }
+       { type "l" change.case$ }
+      if$
+      chapter tie.or.space.connect
+      pages empty$
+       'skip$
+       { ", " * format.pages * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.in.ed.booktitle}
+{ booktitle empty$
+    { "" }
+    { editor empty$
+       { "In " booktitle emphasize * }
+       { "In " format.editors * ", " * booktitle emphasize * }
+      if$
+    }
+  if$
+}
+
+FUNCTION {empty.misc.check}
+{ author empty$ title empty$ howpublished empty$
+  month empty$ year empty$ note empty$
+  and and and and and
+  key empty$ not and
+    { "all relevant fields are empty in " cite$ * warning$ }
+    'skip$
+  if$
+}
+
+FUNCTION {format.thesis.type}
+{ type empty$
+    'skip$
+    { pop$
+      type "t" change.case$
+    }
+  if$
+}
+
+FUNCTION {format.tr.number}
+{ type empty$
+    { "Technical Report" }
+    'type
+  if$
+  number empty$
+    { "t" change.case$ }
+    { number tie.or.space.connect }
+  if$
+}
+
+FUNCTION {format.article.crossref}
+{ key empty$
+    { journal empty$
+       { "need key or journal for " cite$ * " to crossref " * crossref *
+         warning$
+         ""
+       }
+       { "In {\em " journal * "\/}" * }
+      if$
+    }
+    { "In " key * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.crossref.editor}
+{ editor #1 "{vv~}{ll}" format.name$
+  editor num.names$ duplicate$
+  #2 >
+    { pop$ " et&nbsp;al." * }
+    { #2 <
+       'skip$
+       { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+           { " et&nbsp;al." * }
+           { " and " * editor #2 "{vv~}{ll}" format.name$ * }
+         if$
+       }
+      if$
+    }
+  if$
+}
+
+FUNCTION {format.book.crossref}
+{ volume empty$
+    { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+      "In "
+    }
+    { "Volume" volume tie.or.space.connect
+      " of " *
+    }
+  if$
+  editor empty$
+  editor field.or.null author field.or.null =
+  or
+    { key empty$
+       { series empty$
+           { "need editor, key, or series for " cite$ * " to crossref " *
+             crossref * warning$
+             "" *
+           }
+           { "{\em " * series * "\/}" * }
+         if$
+       }
+       { key * }
+      if$
+    }
+    { format.crossref.editor * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+FUNCTION {format.incoll.inproc.crossref}
+{ editor empty$
+  editor field.or.null author field.or.null =
+  or
+    { key empty$
+       { booktitle empty$
+           { "need editor, key, or booktitle for " cite$ * " to crossref " *
+             crossref * warning$
+             ""
+           }
+           { "In {\em " booktitle * "\/}" * }
+         if$
+       }
+       { "In " key * }
+      if$
+    }
+    { "In " format.crossref.editor * }
+  if$
+  " \cite{" * crossref * "}" *
+}
+
+
+% DFK added
+% top of stack is the string we want to be a quoted paragraph
+FUNCTION {format.quotedParagraph}
+{ duplicate$ empty$
+    { skip$ }
+    { "<P><QUOTE> " swap$ * "  </QUOTE></P>" *}
+  if$
+}
+
+
+% DFK added, to support comment, private, keyword, etc
+% next-to-top is field name (eg, "Comment")
+% top is field value (eg, value of comment)
+% both are popped; resulting top is either empty, 
+%    or string describing field
+FUNCTION {format.dfkfield}
+{ duplicate$ empty$
+       { pop$ pop$ "" }
+       { swap$ 
+          "<strong> " swap$ * ":</strong> " * swap$ * }
+  if$
+}
+
+% DFK added
+FUNCTION {dfk.stuff}
+{ new.block
+  "Abstract" abstract format.dfkfield format.quotedParagraph write$ newline$
+  "Keyword" keyword format.dfkfield format.quotedParagraph write$ newline$
+  "Comment" comment format.dfkfield format.quotedParagraph write$ newline$
+}
+
+% DFK: added a call to dfk.stuff in all entry-type functions below
+
+FUNCTION {article}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    { journal emphasize "journal" output.check
+      format.vol.num.pages output
+      format.date "year" output.check
+    }
+    { format.article.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {book}
+{ output.bibitem
+  author empty$
+    { format.editors "author and editor" output.check }
+    { format.authors output.nonnull
+      crossref missing$
+       { "author and editor" editor either.or.check }
+       'skip$
+      if$
+    }
+  if$
+  new.block
+  format.btitle "title" output.check
+  crossref missing$
+    { format.bvolume output
+      new.block
+      format.number.series output
+      new.sentence
+      publisher "publisher" output.check
+      address output
+    }
+    { new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {booklet}
+{ output.bibitem
+  format.authors output
+  new.block
+  format.title "title" output.check
+  howpublished address new.block.checkb
+  howpublished output
+  address output
+  format.date output
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {inbook}
+{ output.bibitem
+  author empty$
+    { format.editors "author and editor" output.check }
+    { format.authors output.nonnull
+      crossref missing$
+       { "author and editor" editor either.or.check }
+       'skip$
+      if$
+    }
+  if$
+  new.block
+  format.btitle "title" output.check
+  crossref missing$
+    { format.bvolume output
+      format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.number.series output
+      new.sentence
+      publisher "publisher" output.check
+      address output
+    }
+    { format.chapter.pages "chapter and pages" output.check
+      new.block
+      format.book.crossref output.nonnull
+    }
+  if$
+  format.edition output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    { format.in.ed.booktitle "booktitle" output.check
+      format.bvolume output
+      format.number.series output
+      format.chapter.pages output
+      new.sentence
+      publisher "publisher" output.check
+      address output
+      format.edition output
+      format.date "year" output.check
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.chapter.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {inproceedings}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  crossref missing$
+    { format.in.ed.booktitle "booktitle" output.check
+      format.bvolume output
+      format.number.series output
+      format.pages output
+      address empty$
+       { organization publisher new.sentence.checkb
+         organization output
+         publisher output
+         format.date "year" output.check
+       }
+       { address output.nonnull
+         format.date "year" output.check
+         new.sentence
+         organization output
+         publisher output
+       }
+      if$
+    }
+    { format.incoll.inproc.crossref output.nonnull
+      format.pages output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {conference} { inproceedings }
+
+FUNCTION {manual}
+{ output.bibitem
+  author empty$
+    { organization empty$
+       'skip$
+       { organization output.nonnull
+         address output
+       }
+      if$
+    }
+    { format.authors output.nonnull }
+  if$
+  new.block
+  format.btitle "title" output.check
+  author empty$
+    { organization empty$
+       { address new.block.checka
+         address output
+       }
+       'skip$
+      if$
+    }
+    { organization address new.block.checkb
+      organization output
+      address output
+    }
+  if$
+  format.edition output
+  format.date output
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  "Master's thesis" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {misc}
+{ output.bibitem
+  format.authors output
+  title howpublished new.block.checkb
+  format.title output
+  howpublished new.block.checka
+  howpublished output
+  format.date output
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+  empty.misc.check
+}
+
+FUNCTION {phdthesis}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.btitle "title" output.check
+  new.block
+  "PhD thesis" format.thesis.type output.nonnull
+  school "school" output.check
+  address output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+  editor empty$
+    { organization output }
+    { format.editors output.nonnull }
+  if$
+  new.block
+  format.btitle "title" output.check
+  format.bvolume output
+  format.number.series output
+  address empty$
+    { editor empty$
+       { publisher new.sentence.checka }
+       { organization publisher new.sentence.checkb
+         organization output
+       }
+      if$
+      publisher output
+      format.date "year" output.check
+    }
+    { address output.nonnull
+      format.date "year" output.check
+      new.sentence
+      editor empty$
+       'skip$
+       { organization output }
+      if$
+      publisher output
+    }
+  if$
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  format.tr.number output.nonnull
+  institution "institution" output.check
+  address output
+  format.date "year" output.check
+  new.block
+  note output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+  format.authors "author" output.check
+  new.block
+  format.title "title" output.check
+  new.block
+  note "note" output.check
+  format.date output
+  fin.entry
+  dfk.stuff
+}
+
+FUNCTION {default.type} { misc }
+
+MACRO {jan} {"January"}
+
+MACRO {feb} {"February"}
+
+MACRO {mar} {"March"}
+
+MACRO {apr} {"April"}
+
+MACRO {may} {"May"}
+
+MACRO {jun} {"June"}
+
+MACRO {jul} {"July"}
+
+MACRO {aug} {"August"}
+
+MACRO {sep} {"September"}
+
+MACRO {oct} {"October"}
+
+MACRO {nov} {"November"}
+
+MACRO {dec} {"December"}
+
+MACRO {acmcs} {"ACM Computing Surveys"}
+
+MACRO {acta} {"Acta Informatica"}
+
+MACRO {cacm} {"Communications of the ACM"}
+
+MACRO {ibmjrd} {"IBM Journal of Research and Development"}
+
+MACRO {ibmsj} {"IBM Systems Journal"}
+
+MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
+
+MACRO {ieeetc} {"IEEE Transactions on Computers"}
+
+MACRO {ieeetcad}
+ {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
+
+MACRO {ipl} {"Information Processing Letters"}
+
+MACRO {jacm} {"Journal of the ACM"}
+
+MACRO {jcss} {"Journal of Computer and System Sciences"}
+
+MACRO {scp} {"Science of Computer Programming"}
+
+MACRO {sicomp} {"SIAM Journal on Computing"}
+
+MACRO {tocs} {"ACM Transactions on Computer Systems"}
+
+MACRO {tods} {"ACM Transactions on Database Systems"}
+
+MACRO {tog} {"ACM Transactions on Graphics"}
+
+MACRO {toms} {"ACM Transactions on Mathematical Software"}
+
+MACRO {toois} {"ACM Transactions on Office Information Systems"}
+
+MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
+
+MACRO {tcs} {"Theoretical Computer Science"}
+
+READ
+
+FUNCTION {sortify}
+{ purify$
+  "l" change.case$
+}
+
+INTEGERS { len }
+
+FUNCTION {chop.word}
+{ 's :=
+  'len :=
+  s #1 len substring$ =
+    { s len #1 + global.max$ substring$ }
+    's
+  if$
+}
+
+INTEGERS { et.al.char.used }
+
+FUNCTION {initialize.et.al.char.used}
+{ #0 'et.al.char.used :=
+}
+
+EXECUTE {initialize.et.al.char.used}
+
+FUNCTION {format.lab.names}
+{ 's :=
+  s num.names$ 'numnames :=
+  numnames #1 >
+    { numnames #4 >
+       { #3 'namesleft := }
+       { numnames 'namesleft := }
+      if$
+      #1 'nameptr :=
+      ""
+       { namesleft #0 > }
+       { nameptr numnames =
+           { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+               { "{\etalchar{+}}" *
+                 #1 'et.al.char.used :=
+               }
+               { s nameptr "{v{}}{l{}}" format.name$ * }
+             if$
+           }
+           { s nameptr "{v{}}{l{}}" format.name$ * }
+         if$
+         nameptr #1 + 'nameptr :=
+         namesleft #1 - 'namesleft :=
+       }
+      while$
+      numnames #4 >
+       { "{\etalchar{+}}" *
+         #1 'et.al.char.used :=
+       }
+       'skip$
+      if$
+    }
+    { s #1 "{v{}}{l{}}" format.name$
+      duplicate$ text.length$ #2 <
+       { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ }
+       'skip$
+      if$
+    }
+  if$
+}
+
+FUNCTION {author.key.label}
+{ author empty$
+    { key empty$
+       { cite$ #1 #3 substring$ }
+       { key #3 text.prefix$ }
+      if$
+    }
+    { author format.lab.names }
+  if$
+}
+
+FUNCTION {author.editor.key.label}
+{ author empty$
+    { editor empty$
+       { key empty$
+           { cite$ #1 #3 substring$ }
+           { key #3 text.prefix$ }
+         if$
+       }
+       { editor format.lab.names }
+      if$
+    }
+    { author format.lab.names }
+  if$
+}
+
+FUNCTION {author.key.organization.label}
+{ author empty$
+    { key empty$
+       { organization empty$
+           { cite$ #1 #3 substring$ }
+           { "The " #4 organization chop.word #3 text.prefix$ }
+         if$
+       }
+       { key #3 text.prefix$ }
+      if$
+    }
+    { author format.lab.names }
+  if$
+}
+
+FUNCTION {editor.key.organization.label}
+{ editor empty$
+    { key empty$
+       { organization empty$
+           { cite$ #1 #3 substring$ }
+           { "The " #4 organization chop.word #3 text.prefix$ }
+         if$
+       }
+       { key #3 text.prefix$ }
+      if$
+    }
+    { editor format.lab.names }
+  if$
+}
+
+FUNCTION {calc.label}
+{ type$ "book" =
+  type$ "inbook" =
+  or
+    'author.editor.key.label
+    { type$ "proceedings" =
+       'editor.key.organization.label
+       { type$ "manual" =
+           'author.key.organization.label
+           'author.key.label
+         if$
+       }
+      if$
+    }
+  if$
+  duplicate$
+  year field.or.null purify$ #-1 #2 substring$
+  *
+  'label :=
+  year field.or.null purify$ #-1 #4 substring$
+  *
+  sortify 'sort.label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+  #1 'nameptr :=
+  ""
+  s num.names$ 'numnames :=
+  numnames 'namesleft :=
+    { namesleft #0 > }
+    { nameptr #1 >
+       { "   " * }
+       'skip$
+      if$
+      s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
+      nameptr numnames = t "others" = and
+       { "et al" * }
+       { t sortify * }
+      if$
+      nameptr #1 + 'nameptr :=
+      namesleft #1 - 'namesleft :=
+    }
+  while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+  "A " #2
+    "An " #3
+      "The " #4 t chop.word
+    chop.word
+  chop.word
+  sortify
+  #1 global.max$ substring$
+}
+
+FUNCTION {author.sort}
+{ author empty$
+    { key empty$
+       { "to sort, need author or key in " cite$ * warning$
+         ""
+       }
+       { key sortify }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {author.editor.sort}
+{ author empty$
+    { editor empty$
+       { key empty$
+           { "to sort, need author, editor, or key in " cite$ * warning$
+             ""
+           }
+           { key sortify }
+         if$
+       }
+       { editor sort.format.names }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {author.organization.sort}
+{ author empty$
+    { organization empty$
+       { key empty$
+           { "to sort, need author, organization, or key in " cite$ * warning$
+             ""
+           }
+           { key sortify }
+         if$
+       }
+       { "The " #4 organization chop.word sortify }
+      if$
+    }
+    { author sort.format.names }
+  if$
+}
+
+FUNCTION {editor.organization.sort}
+{ editor empty$
+    { organization empty$
+       { key empty$
+           { "to sort, need editor, organization, or key in " cite$ * warning$
+             ""
+           }
+           { key sortify }
+         if$
+       }
+       { "The " #4 organization chop.word sortify }
+      if$
+    }
+    { editor sort.format.names }
+  if$
+}
+
+FUNCTION {presort}
+{ calc.label
+  sort.label
+  "    "
+  *
+  type$ "book" =
+  type$ "inbook" =
+  or
+    'author.editor.sort
+    { type$ "proceedings" =
+       'editor.organization.sort
+       { type$ "manual" =
+           'author.organization.sort
+           'author.sort
+         if$
+       }
+      if$
+    }
+  if$
+  *
+  "    "
+  *
+  year field.or.null sortify
+  *
+  "    "
+  *
+  title field.or.null
+  sort.format.title
+  *
+% DFK throw away stuff above and use cite$ for sort key
+  pop$
+  cite$
+  #1 entry.max$ substring$
+  'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { longest.label last.sort.label next.extra }
+
+INTEGERS { longest.label.width last.extra.num }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+  #0 int.to.chr$ 'last.sort.label :=
+  "" 'next.extra :=
+  #0 'longest.label.width :=
+  #0 'last.extra.num :=
+}
+
+FUNCTION {forward.pass}
+{ last.sort.label sort.label =
+    { last.extra.num #1 + 'last.extra.num :=
+      last.extra.num int.to.chr$ 'extra.label :=
+    }
+    { "a" chr.to.int$ 'last.extra.num :=
+      "" 'extra.label :=
+      sort.label 'last.sort.label :=
+    }
+  if$
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+    { "a" 'extra.label := }
+    'skip$
+  if$
+  label extra.label * 'label :=
+  label width$ longest.label.width >
+    { label 'longest.label :=
+      label width$ 'longest.label.width :=
+    }
+    'skip$
+  if$
+  extra.label 'next.extra :=
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+% DFK removed code about et.al.char
+% DFK changed to HTML
+FUNCTION {begin.bib}
+{ "<HTML>" write$ newline$
+  "<HEAD><TITLE> Bibliography </TITLE>" write$ newline$
+  "</HEAD>" write$ newline$
+  "<BODY BGCOLOR=#EEEEEE>" write$ newline$
+  "<DL>" write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+% DFK changed to HTML
+FUNCTION {end.bib}
+{ newline$
+  "</DL>" write$ newline$
+  "</BODY>" write$ newline$
+  "</HTML>" write$ newline$
+}
+
+EXECUTE {end.bib}
index ec7606bfd2fc3e5e12d2d36552ef3e3baf462960..e32036a9905a08eeac8d388e64adaeb82a98ed38 100644 (file)
@@ -1,6 +1,6 @@
 ISOLANG = fr
 depth = ../..
-SUBDIRS = application learning notation texidocs
+SUBDIRS = application general learning notation texidocs
 STEPMAKE_TEMPLATES = documentation
 LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root
 
diff --git a/Documentation/fr/common-macros.itexi b/Documentation/fr/common-macros.itexi
new file mode 100644 (file)
index 0000000..a852227
--- /dev/null
@@ -0,0 +1,220 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+
+
+@c Don't replace quotes with directed quotes.
+
+@set txicodequoteundirected
+@set txicodequotebacktick
+
+
+@c   ***** Displaying text *****
+
+@c We need this since @q{\} doesn't work with makeinfo 4.11 --
+@c say @q{@bs{}} instead.
+
+@macro bs
+\\
+@end macro
+
+
+@ifnotinfo
+
+@macro notation{TEXT}
+@var{\TEXT\}
+@end macro
+
+@end ifnotinfo
+
+@ifinfo
+
+@macro notation{TEXT}
+\TEXT\
+@end macro
+
+@end ifinfo
+
+
+@macro smallspace
+@sp 1
+@end macro
+
+
+@c   ***** Displaying images not generated by lilypond-book *****
+
+@c Current installation setup of Info docs requires that all images are
+@c expected to be found in the `lilypond/' subdirectory.  `lilypond-book'
+@c already generates proper @image commands for images of music; these
+@c macro definitions do the same for other images.
+
+@ifnotinfo
+
+@macro sourceimage{FILENAME,WIDTH,HEIGHT,ALTTEXT}
+@image{pictures/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@end macro
+
+@end ifnotinfo
+
+@ifinfo
+
+@macro sourceimage{FILENAME,WIDTH,HEIGHT,ALTTEXT}
+@image{lilypond/pictures/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@end macro
+
+@end ifinfo
+
+
+@c   ***** Headers *****
+
+@ifclear snippets-sections
+@macro lydoctitle {TEXT}
+@need 600
+@emph{\TEXT\}
+@end macro
+@end ifclear
+
+@c   ***** Indexing *****
+
+@c Don't remove the `@c' within the macro definition!  See section 19.3,
+@c `Macro Details and Caveats', in the texinfo info file for explanation.
+
+@macro funindex {TEXT}
+@findex \TEXT\
+@kindex \TEXT\
+@c
+@end macro
+
+
+@c   ***** Macros specific to translated docs *****
+
+@c ugh, cannot set/define global variable 'translationof' in any way :-(
+
+@iftex
+
+@macro translationof{TEXT}
+@end macro
+
+@end iftex
+
+@ifinfo
+
+@macro translationof{TEXT}
+@set translationof \TEXT\
+@end macro
+
+@end ifinfo
+
+@ifhtml
+
+@ifset bigpage
+@macro untranslated
+@end macro
+@end ifset
+
+@ifclear bigpage
+@macro untranslated
+UNTRANSLATED NODE: IGNORE ME
+@end macro
+@end ifclear
+
+@end ifhtml
+
+@ifnothtml
+
+@macro untranslated
+@end macro
+
+@end ifnothtml
+
+
+@c  ***** Macros specific to the web site *****
+
+@ifset web
+
+@macro help{TEXT}
+@html
+<div class="help">
+<strong>
+  <span style="text-decoration:blink">Help wanted:</span>
+</strong> \TEXT\
+</div>
+@end html
+@end macro
+
+@macro divId {ID}
+@html
+<div id="\ID\">
+@end html
+@end macro
+
+@macro divClass {CLASS}
+@html
+<div class="\CLASS\">
+@end html
+@end macro
+
+@macro divEnd
+@c keep the space for proper nesting of </p>
+
+@html
+</div>
+@end html
+@end macro
+
+
+@c not strictly necessary, but it makes things easier for updating news
+@macro newsItem
+@html
+<div class="news-item">
+@end html
+@end macro
+
+@macro newsEnd
+@c keep the space for proper nesting of </p>
+
+@html
+</div>
+@end html
+@end macro
+
+
+
+@macro imageClickable{IMAGE-FILE, MORE-TEXT, CLICK-FILE, POSITION}
+@html
+<div class="float-\POSITION\">
+  <a class="clickable" href="\CLICK-FILE\">
+    <img src="\IMAGE-FILE\" alt="\IMAGE-FILE\">
+  </a>
+  <p style="text-align: center">
+    \MORE-TEXT\
+  </p>
+</div>
+@end html
+@ifnothtml
+FIXME: broken image
+@c @image{\IMAGE-FILE\}
+@end ifnothtml
+@end macro
+
+@macro imageFloat{IMAGE-FILE, POSITION}
+@html
+<img class="float-\POSITION\" src="pictures/\IMAGE-FILE\" alt="\IMAGE-FILE\">
+@end html
+@ifnothtml
+FIXME: broken image
+@c @image{\IMAGE-FILE\}
+@end ifnothtml
+@end macro
+
+@macro imageId{ID, IMAGE-FILE, ALT}
+@html
+<div id="\ID\">
+  <img src="pictures/\IMAGE-FILE\" alt="\ALT\">
+</div>
+@end html
+@ifnothtml
+FIXME: broken image
+@c @image{\IMAGE-FILE\}
+@end ifnothtml
+@end macro
+
+@end ifset
diff --git a/Documentation/fr/general.texi b/Documentation/fr/general.texi
new file mode 100644 (file)
index 0000000..07a93a7
--- /dev/null
@@ -0,0 +1,85 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@setfilename general.info
+@settitle LilyPond -- la notation musicale pour tous
+@documentencoding UTF-8
+@documentlanguage fr
+@set web
+@include macros.itexi
+@afourpaper
+@ifnottex
+@node Top
+@top LilyPond
+
+@translationof Top
+
+
+@chapheading
+@end ifnottex
+@finalout
+@titlepage
+@title LilyPond
+@subtitle
+@titlefont{New Website}
+@author Équipe de développement de LilyPond
+@quotation
+@end quotation
+@vskip 20pt
+@end titlepage
+@copying
+@quotation
+@end quotation
+@end copying
+@divId{pageHeader}
+@heading LilyPond
+
+... la notation musicale pour tous
+@divEnd
+@c @imageId{cmws,web-clef-g-eight-alpha.png,Catchy Musical Web Snippet}
+@imageId{lilylogo,double-lily-modified3.png,LilyPond logo}
+@c @im ageId{cmws,web-snippet-alpha.png,Catchy Musical Web Snippet}
+@divId{quickSummary}
+@subheading Qu'est-ce que c'est LilyPond?
+TODO FIXME FRENCH
+@divClass{align-right}
+@divEnd
+@divEnd
+@divId{news}
+@include news-front.itexi
+@divClass{float-right}
+@divEnd
+@divEnd
+@divId{latestVersion}
+@subheading Quick links
+@c TODO: javascript to detect OS and suggest download?
+@subsubheading Stable
+@ref{Download, Download 2.12.3}
+@ref{Manuals, Manuals 2.12.3}
+@subsubheading Unstable
+@ref{Development, Download 2.13.2}
+@ref{Development, Manuals 2.13.2}
+@divEnd
+@divClass{hide}
+@menu
+* Introduction::
+* Download::
+* Manuals::
+* Community::
+@end menu
+
+@divEnd
+@contents
+@include general/introduction.itexi
+@include general/download.itexi
+@include general/manuals.itexi
+@include general/community.itexi
+@bye
+
diff --git a/Documentation/fr/general/GNUmakefile b/Documentation/fr/general/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/fr/general/common-macros.itexi b/Documentation/fr/general/common-macros.itexi
new file mode 100644 (file)
index 0000000..9e8764d
--- /dev/null
@@ -0,0 +1,41 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
+@c This file is part of general.texi
+@ignore
+    Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c Don't replace quotes with directed quotes.
+@set txicodequoteundirected
+@set txicodequotebacktick
+@c ***** Displaying text *****
+@c We need this since @q{\} doesn't work with makeinfo 4.11 --
+@c say @q{@bs{}} instead.
+@c ***** Displaying images not generated by lilypond-book *****
+@c Current installation setup of Info docs requires that all images are
+@c expected to be found in the `lilypond/' subdirectory.  `lilypond-book'
+@c already generates proper @image commands for images of music; these
+@c macro definitions do the same for other images.
+@image{pictures/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@image{lilypond/pictures/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@c ***** Headers *****
+@c ***** Indexing *****
+@c Don't remove the `@c' within the macro definition!  See section 19.3,
+@c `Macro Details and Caveats', in the texinfo info file for explanation.
+@c
+@c ***** Macros specific to translated docs *****
+@c ugh, cannot set/define global variable 'translationof' in any way :-(
+@set translationof \TEXT\
+@c ***** Macros specific to the web site *****
+@c keep the space for proper nesting of </p>
+@c not strictly necessary, but it makes things easier for updating news
+@c keep the space for proper nesting of </p>
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+
+@c -- SKELETON FILE --
diff --git a/Documentation/fr/general/community.itexi b/Documentation/fr/general/community.itexi
new file mode 100644 (file)
index 0000000..b4b9cb1
--- /dev/null
@@ -0,0 +1,170 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node Community
+@unnumbered Community
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Interacting with the community
+@ref{Contact}: get help, discuss, and keep in touch!
+@ref{Tiny examples}: these are @emph{highly} recommended when
+@ref{Bug reports}: something went wrong.
+@divEnd
+@divClass{column-left-bottom}
+@subheading Making LilyPond better
+@ref{Help us}: your assistance is requested.
+@ref{Development}: for contributors and testers.
+@ref{Authors}: the people who made LilyPond what it is today.
+@divEnd
+@divClass{column-right-bottom}
+@subheading Miscellaneous
+@ref{Publications}: what we wrote, and have had written about us.
+@ref{Old news}: an archive.
+@divEnd
+@divClass{hide}
+@menu
+* Contact::
+* Tiny examples::
+* Bug reports::
+* Help us::
+* Development::
+* Authors::
+* Publications::
+* Old news::
+@end menu
+
+@divEnd
+@node Contact
+@unnumberedsec Contact
+
+@untranslated
+
+
+@divClass{column-left-bottom}
+@subheading User Discussions and Help
+@subsubheading User mailist: @code{lilypond-user@@gnu.org}
+@quotation
+@end quotation
+@subsubheading IRC
+@subsubheading Other languages
+@divEnd
+@divClass{column-right-top}
+@subheading Stay Informed
+@subsubheading LilyPond Report
+@subsubheading Releases mailist: @code{info-lilypond@@gnu.org}
+@quotation
+@c don't include gmane posting here.  -gp
+@end quotation
+@divEnd
+@divClass{column-right-bottom}
+@subheading Developer Discussion
+@subsubheading Developer mailist: @code{lilypond-devel@@gnu.org}
+@quotation
+@end quotation
+@subsubheading Bug mailist: @code{bug-lilypond@@gnu.org}
+@quotation
+@c don't include gmane posting here.  -gp
+@end quotation
+@divEnd
+@node Tiny examples
+@unnumberedsec Tiny examples
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading What are @qq{Tiny examples}?
+@divEnd
+@divClass{column-left-bottom}
+@subheading Why create them?
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@divClass{column-right-bottom}
+@subheading How do I create them?
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@node Bug reports
+@unnumberedsec Bug reports
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Step 1: Known bugs
+@divEnd
+@divClass{column-left-bottom}
+@subheading Step 2: Creating a bug report
+@divEnd
+@divClass{column-right-bottom}
+@subheading Step 3: Sending a bug report
+@divEnd
+@node Help us
+@unnumberedsec Help us
+
+@untranslated
+
+
+@subheading This document
+@subsubheading High priority / blocks release
+@subsubheading Low priority / may never
+@node Development
+@unnumberedsec Development
+
+@untranslated
+
+
+@divClass{heading-center}
+@heading Development materials for LilyPond 2.13.3
+@ref{Manuals}.}
+@divEnd
+@divClass{column-left-bottom}
+@subheading Download
+@subheading Manuals
+@divEnd
+@divClass{column-right-bottom}
+@subheading Contributors' Guide
+@divEnd
+@node Authors
+@unnumberedsec Authors 
+
+@untranslated
+
+
+@node Publications
+@unnumberedsec Publications
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading What we wrote
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@divClass{column-center-bottom}
+@subheading What others wrote
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@node Old news
+@unnumberedsec Old news
+
+@untranslated
+
+
+@include general/news.itexi
+
+@c -- SKELETON FILE --
diff --git a/Documentation/fr/general/download.itexi b/Documentation/fr/general/download.itexi
new file mode 100644 (file)
index 0000000..4742070
--- /dev/null
@@ -0,0 +1,174 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
+@c This file is part of general.texi
+@ignore
+    Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node Download
+@unnumbered Download
+
+@untranslated
+
+
+@divClass{heading-center}
+@heading Downloads for LilyPond 2.12.2
+@divEnd
+@divClass{column-left-top}
+@subheading For users
+@c TODO: duplicate to avoid underlined refs in HTML?  icky.
+@ref{Unix, @sourceimage{logo-linux} @sourceimage{logo-freebsd}}
+@ref{Unix, Unix (Linux and FreeBSD)}
+@ref{MacOS X, @sourceimage{logo-macosx}}
+@ref{MacOS X, MacOS X}
+@ref{Windows, @sourceimage{logo-windows}}
+@ref{Windows, Microsoft Windows}
+@divEnd
+@divClass{column-right-top}
+@subheading For developers
+@ref{Source}:
+@ref{Old downloads}:
+@divEnd
+@divClass{column-center-bottom}
+@subheading Software License
+@divEnd
+@divClass{color1}
+@subheading Sponsors
+@sourceimage{VTlogo_ITF} @sourceimage{lao_banner_06_on_white_demo}
+@subheading Legalese
+@divClass{legal}
+@divEnd
+@divEnd
+@divClass{hide}
+@menu
+* Unix::
+* MacOS X::
+* Windows::
+* Source::
+* Old downloads::
+* GPL::
+@end menu
+
+@divEnd
+@node Unix
+@unnumberedsec Unix
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Generic Packages or Distribution-Specific Packages?
+@divEnd
+@divClass{column-left-top}
+@subheading Generic Packages
+@subsubheading Download
+@sourceimage{logo-linux}
+@sourceimage{logo-linux}
+@sourceimage{logo-linux}
+@sourceimage{logo-freebsd}
+@sourceimage{logo-freebsd}
+@subsubheading Install
+@subsubheading Uninstall
+@divEnd
+@divClass{column-right-top}
+@subheading Distribution-specific Packages
+@sourceimage{logo-fedora}
+@sourceimage{logo-ubuntu}
+@sourceimage{logo-slackware}
+@sourceimage{logo-debian}
+@sourceimage{logo-suse}
+@divEnd
+@divClass{column-center-bottom}
+@subheading Legalese
+@divClass{legal}
+@divEnd
+@divEnd
+@node MacOS X
+@unnumberedsec MacOS X
+
+@untranslated
+
+
+@divClass{column-left-top}
+@subheading Packages
+@subsubheading Download
+@sourceimage{logo-macosx}
+@sourceimage{logo-macosx}
+@subsubheading Install
+@subsubheading Uninstall
+@divEnd
+@divClass{column-right-top}
+@subheading Running on the command-line
+@subsubheading Using Python scripts on MacOS 10.3 or 10.4
+@c ommand{convert-ly} and @command{lilypond-book} as follows: if the
+@subsubheading MacOS X on the command line
+@c ommand{abc2ly}, and even @command{lilypond} itself --- are included
+@c ommand{lilypond-book}, @command{convert-ly}, @command{abc2ly}, etc.
+@c ode{bin/convert-ly} (or other program name) in the above file.
+@divEnd
+@divClass{column-center-bottom}
+@subheading Legalese
+@divClass{legal}
+@divEnd
+@divEnd
+@node Windows
+@unnumberedsec Windows
+
+@untranslated
+
+
+@divClass{column-left-top}
+@subheading Packages
+@subsubheading Download
+@sourceimage{logo-windows}
+@subsubheading Install
+@subsubheading Uninstall
+@divEnd
+@divClass{column-right-top}
+@subheading Running on the command-line
+@divEnd
+@divClass{column-center-bottom}
+@subheading Legalese
+@divClass{legal}
+@divEnd
+@divEnd
+@node Source
+@unnumberedsec Source
+
+@untranslated
+
+
+@divClass{column-left-bottom}
+@subheading Source tarball
+@divEnd
+@divClass{column-right-bottom}
+@subheading Compiling instructions
+@divEnd
+@node Old downloads
+@unnumberedsec Old downloads
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading All versions
+@divEnd
+@node GPL
+@unnumberedsec GPL
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Software license
+@divEnd
+@divClass{column-center-bottom}
+@subheading GNU General Public License version 2
+@include gpl-2.0.itexi
+@divEnd
+
+@c -- SKELETON FILE --
diff --git a/Documentation/fr/general/introduction.itexi b/Documentation/fr/general/introduction.itexi
new file mode 100644 (file)
index 0000000..e75b9f5
--- /dev/null
@@ -0,0 +1,226 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
+@c This file is part of general.texi
+@ignore
+    Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node Introduction
+@unnumbered Introduction
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Our Goal
+@imageFloat{flat-design.png,right}
+@divEnd
+@divClass{column-left-top}
+@subheading Why use LilyPond?
+@ref{Features}: What can LilyPond do?
+@ref{Examples}: I want to see some music!
+@ref{Freedom}: LilyPond is Free Software.
+@divEnd
+@divClass{column-right-top}
+@subheading Who uses it?
+@ref{Productions}: Real-life use of LilyPond.
+@ref{Testimonials}: What do people say?
+@divEnd
+@divClass{column-center-bottom}
+@subheading Why not use LilyPond?
+@ref{Text input}: You write music as @emph{text}?!
+@divEnd
+@divClass{hide}
+@menu
+* Features::
+* Examples::
+* Freedom::
+* Productions::
+* Testimonials::
+* Text input::
+@end menu
+
+@divEnd
+@node Features
+@unnumberedsec Features
+
+@untranslated
+
+
+@subheading Why switch to LilyPond?
+@subsubheading Excellent classical engraving
+@imageFloat{flat-design.png,right}
+@subsubheading No fiddling
+@subsubheading Text-based input
+@subsubheading Mix music and text
+@imageFloat{lilypond-book.png,right}
+@subsubheading Free software
+@subsubheading Extensible design
+@subsubheading Excellent support
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Text input}.
+@divEnd
+@node Examples
+@unnumberedsec Examples
+
+@untranslated
+
+
+@imageClickable{examples/liszt-wagner-small.png, (click to enlarge), examples/liszt-wagner.png, center}
+@subsubheading Classical Music
+@imageClickable{examples/bach-bwv610-small.png, (click to enlarge), examples/bach-bwv610.png, center}
+@subsubheading Complex Notation
+@imageClickable{examples/granados-small.png, (click to enlarge), examples/granados.png, center}
+@subsubheading Early Music
+@imageClickable{examples/ancient-headword-small.png, (click to enlarge), examples/ancient-headword.png, center}
+@subsubheading Modern Music
+@imageClickable{examples/cary-small.png, (click to enlarge), examples/cary.png, center}
+@subsubheading Efficient, flexible creation of performance materials
+@imageClickable{examples/sesto-small.png, (click to enlarge), examples/sesto.png, center}
+@imageClickable{examples/sesto-1-small.png, (click to enlarge), examples/sesto-1.png, center}
+@imageClickable{examples/sesto-2-small.png, (click to enlarge), examples/sesto-2.png, center}
+@subsubheading Tablature
+@imageClickable{examples/bach-tab-example-small.png, (click to enlarge), examples/bach-tab-example.png, center}
+@subsubheading Schenker Graphs
+@imageClickable{examples/bach-schenker-small.png, (click to enlarge), examples/bach-schenker.png, center}
+@subsubheading Vocal Music
+@imageClickable{examples/aucun-snippet-small.png, (click to enlarge), examples/aucun-snippet.png, center}
+@subsubheading Educational Applications
+@imageClickable{examples/theory-small.png, (click to enlarge), examples/theory.png, center}
+@subsubheading Popular Music
+@imageClickable{examples/chart-small.png, (click to enlarge), examples/chart.png, center}
+@subsubheading Large Projects
+@imageClickable{examples/orchestral-small.png, (click to enlarge), examples/orchestral.png, center}
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Freedom}.  If you've already decided to try LilyPond, first
+@divEnd
+@node Freedom
+@unnumberedsec Freedom
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Free Software
+@ref{GPL, GNU General Public License} and the @ref{FDL, GNU Free
+@divEnd
+@c @divClass{column-left-top}
+@divClass{color2}
+@divClass{keep-bullets}
+@subheading What are the benefits to users?
+@divEnd
+@divEnd
+@c @divClass{column-right-top}
+@divClass{color3}
+@divClass{keep-bullets}
+@subheading Why do LilyPond developers @qq{give away} their work for free?
+@divEnd
+@divEnd
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Productions} and sheet music.  If you've already decided to
+@divEnd
+@node Productions
+@unnumberedsec Productions
+
+@untranslated
+
+
+@divClass{column-left-top}
+@subheading Concerts
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@divClass{column-right-top}
+@subheading Published sheet music
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Text input}.
+@divEnd
+@node Testimonials
+@unnumberedsec Testimonials
+
+@untranslated
+
+
+@divClass{testimonial-item}
+@imageFloat{carter-brey.jpg, right}
+@subsubheading @uref{http://nyphil.org/meet/orchestra/index.cfm?page=profile&personNum=7, Carter Brey}, Principal Cellist, New York Philharmonic
+@divEnd
+@divClass{testimonial-item}
+@imageFloat{orm-finnendahl.jpg, left}
+@subsubheading @uref{http://icem-www.folkwang-hochschule.de/~finnendahl/, Orm Finnendahl}, professor of Composition, Musikhochschule Freiburg
+@divEnd
+@divClass{testimonial-item}
+@imageFloat{darius-blasband.jpg, right}
+@subsubheading Darius Blasband, composer (Brussels, Belgium)
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Kieren MacMillan, composer (Toronto, Canada)
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Chris Cannam, lead programmer of the @uref{http://www.rosegardenmusic.com/, RoseGarden} project.
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Chris Snyder, @uref{http://www.adoromusicpub.com/, Adoro Music Publishing}
+@divEnd
+@divClass{testimonial-item}
+@subsubheading David Bobroff, Bass Trombone, Iceland Symphony Orchestra
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Vaylor Trucks, Electric guitar player (Yes, @uref{http://www.allmanbrothersband.com/modules.php?op=modload&name=userpage&file=content&page_id=12, related to})
+@divEnd
+@divClass{testimonial-item}
+@subsubheading @uref{http://nicolas.sceaux.free.fr/, Nicolas Sceaux}, @uref{http://www.mutopiaproject.org/, Mutopia} contributor
+@divEnd
+@divClass{testimonial-item}
+@subsubheading @uref{http://www.troff.org/whoswho.html#werner, Werner Lemberg}, Conductor at the Theatre in Koblenz, Germany and distinguished GNU Hacker.
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Paul Davis, developer of @uref{http://jackaudio.org/, JACK} and @uref{http://www.ardour.org/, Ardour}.
+@divEnd
+@divClass{column-center-bottom}
+@subheading Where now?
+@divEnd
+@node Text input
+@unnumberedsec Text input
+
+@untranslated
+
+
+@c TRANSLATORS: so far it's mostly from
+@c http://lilypond.org/web/switch/howto
+@subheading @qq{Compiling} Music
+@imageClickable{examples/nereid-shot-small.png, (click to enlarge), examples/nereid-shot.png, right}
+@subsubheading It's as simple as A B C
+@imageFloat{text-input-1-annotate.png,center}
+@imageFloat{text-input-1-output.png,center}
+@imageFloat{text-input-2-annotate.png,center}
+@imageFloat{text-input-2-output.png,center}
+@subsubheading Pop music
+@imageFloat{text-input-pop-annotate.png,center}
+@imageFloat{text-input-pop-output.png,center}
+@subsubheading Orchestral parts
+@imageFloat{text-input-parts-both-annotate.png,center}
+@imageFloat{text-input-parts-single-annotate.png,center}
+@imageFloat{text-input-parts-single-output.png,center}
+@imageFloat{text-input-score-annotate.png,center}
+@imageFloat{text-input-score-output.png,center}
+@subsubheading Beginner Documentation
+@subsubheading Easier editing environments
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Freedom} that LilyPond provides, or read about users'
+@ref{Productions} and @ref{Testimonials}.
+@divEnd
+
+@c -- SKELETON FILE --
diff --git a/Documentation/fr/general/macros.itexi b/Documentation/fr/general/macros.itexi
new file mode 100644 (file)
index 0000000..91044d9
--- /dev/null
@@ -0,0 +1,133 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
+@c This file is part of general.texi
+@ignore
+    Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: us-ascii; mode: texinfo; -*-
+@include version.itexi
+@include common-macros.itexi
+@c ***** Displaying text *****
+@c To get decent quotes in `foo' and ``foo''.
+@c artouche
+@quotation
+@quotation
+@c artouche
+@end quotation
+@end quotation
+@c ***** Headings in a doc subsection *****
+@c Don't insert an empty line after @predefined!  Right now
+@c it doesn't matter, but a future implementation will probably
+@c add some code which needs this restriction.
+@subsubheading Predefined commands
+@c The next macro is a dummy currently since texinfo doesn't
+@c provide a real ragged-right environment yet.
+@c
+@c Due to a bug in texi2html (texi2html.pl CVS versions <= 1.245)
+@c the macro must not be empty.
+@c
+@subsubheading Selected Snippets
+@c Don't insert an empty line after @seealso!  Otherwise we get
+@c unwanted extra vertical space in the PDF output.
+@subsubheading See also
+@subsubheading Known issues and warnings
+@c ***** Links and references *****
+@c Definitions for references:
+@c
+@c @rgeneral
+@c @ressay
+@c @rglos
+@c @rinternals
+@c @rlearning
+@c @rlsr
+@c @rprogram
+@c @ruser
+@c
+@c All these also have a @...named version which allows to specify the
+@c displayed text for the reference as second argument.
+@c
+@c ***** HTML + bigpage is a special case (other manual names); all other
+@c formats are treated similarly.
+@c *** not TeX ***
+@ifnottex
+@c ** bigpage **
+@ref{\TEXT\,,,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,,learning-big-page,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning-big-page,Learning Manual}
+@ref{\TEXT\,,,notation-big-page,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation-big-page,Notation Reference}
+@ref{\TEXT\,,,general-big-page,General Information}
+@ref{\TEXT\,,\DISPLAY\,general-big-page,General Information}
+@ref{\TEXT\,,,essay-big-page,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay-big-page,Essay}
+@ref{\TEXT\,,,application-big-page,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application-big-page,Application Usage}
+@ref{\TEXT\,,,snippets-big-page,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets-big-page,Snippets}
+@ref{\TEXT\,,,internals-big-page,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals-big-page,Internals Reference}
+@c ** not bigpage **
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,general,General Information}
+@ref{\TEXT\,,\DISPLAY\,general,General Information}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,,lilypond-general,General Information}
+@ref{\TEXT\,,\DISPLAY\,lilypond-general, General Information}
+@ref{\TEXT\,,,lilypond-essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,lilypond-essay,Essay}
+@ref{\TEXT\,,,lilypond-application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,lilypond-application,Application Usage}
+@ref{\TEXT\,,,lilypond-snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,lilypond-snippets,Snippets}
+@ref{\TEXT\,,,lilypond-internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-internals,Internals Reference}
+@end ifnottex
+@c *** TeX ***
+@c All commands below should work in the middle of the line;
+@c we thus must not use @vindex directly since it works only if placed
+@c on a line of its own.  To overcome this problem, we define a
+@c replacement macro using the internal definition of @vindex which
+@c delimits arguments in the standard way (i.e., with braces).
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,general,General Information}
+@ref{\TEXT\,,\DISPLAY\,general,General Information}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@c ***** Macros specific to the web site *****
+@c LEGALESE
+
+@c -- SKELETON FILE --
diff --git a/Documentation/fr/general/manuals.itexi b/Documentation/fr/general/manuals.itexi
new file mode 100644 (file)
index 0000000..fd59b22
--- /dev/null
@@ -0,0 +1,138 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node Manuals
+@unnumbered Manuals
+
+@untranslated
+
+
+@divClass{heading-center}
+@heading Documentation for LilyPond 2.12.2
+@divEnd
+@divClass{column-center-top}
+@subheading Introduction
+@divEnd
+@divClass{column-left-top}
+@subheading Regular use
+@divEnd
+@divClass{column-right-top}
+@subheading Infrequent Use
+@divEnd
+@divClass{column-center-bottom}
+@subheading Other material
+@divEnd
+@divClass{hide}
+@menu
+* Learning::
+* Glossary::
+* Essay::
+* Notation::
+* Usage::
+* Snippets::
+* FAQ::
+* Changes::
+* Internals::
+* Translated::
+* Old::
+* FDL::
+@end menu
+
+@divEnd
+@c TRANSLATORS: most of the text in this file came from
+@c LM 1.1 About the documentation  (before this section was
+@c removed in July 2009).
+@node Learning
+@unnumberedsec Learning
+
+@untranslated
+
+
+@node Glossary
+@unnumberedsec Glossary
+
+@untranslated
+
+
+@node Essay
+@unnumberedsec Essay
+
+@untranslated
+
+
+@node Notation
+@unnumberedsec Notation
+
+@untranslated
+
+
+@node Usage
+@unnumberedsec Usage
+
+@untranslated
+
+
+@node Snippets
+@unnumberedsec Snippets
+
+@untranslated
+
+
+@node FAQ
+@unnumberedsec FAQ
+
+@untranslated
+
+
+@subheading Where are the graphical canvas, menus, and toolbars?
+@subheading There's a lot of documentation!  Do I need to read it?
+@subheading That's still a lot of reading!  Is it worth it?
+@subheading Something isn't working!  How do I fix it?
+@subheading Why do you change the syntax?
+@node Changes
+@unnumberedsec Changes
+
+@untranslated
+
+
+@node Internals
+@unnumberedsec Internals
+
+@untranslated
+
+
+@node Translated
+@unnumberedsec Translated
+
+@untranslated
+
+
+@node Old
+@unnumberedsec Old
+
+@untranslated
+
+
+@node FDL
+@unnumberedsec FDL
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Documentation license
+@divEnd
+@divClass{column-center-bottom}
+@subheading GNU Free Documentation License 1.1
+@include fdl.itexi
+@divEnd
+
+@c -- SKELETON FILE --
diff --git a/Documentation/fr/general/news-front.itexi b/Documentation/fr/general/news-front.itexi
new file mode 100644 (file)
index 0000000..b857b25
--- /dev/null
@@ -0,0 +1,56 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c This file is part of lilypond-general.texi and community.itexi
+
+@c when you add a new item, consider moving the lowest item(s)
+@c into news-old.itexi.
+
+@newsItem
+@subsubheading New Website!  @emph{20 Aug 2009}
+
+As you can see, we have a new website design.  Many thanks to
+texi2html and CSS for being so flexible!
+
+(FIXME: change date when this is actually announced on lilypond.org)
+@newsEnd
+
+
+@newsItem
+@subsubheading  LilyPond 2.13.3.  @emph{July 2, 2009}
+
+This unstable release contains working menus in OSX 10.5; many
+thanks to Christian Hitz for fixing this long-standing problem!
+This release also contains numerous other bugfixes and features
+such as ties with variable thickness, partially dashed slurs, and
+eyeglasses.
+
+We are planning another 2.12 release in the next week or two,
+which will include the menu fixes for OSX 10.5. Normal users may
+wish to wait for this release rather than using an unstable
+release. For changes and download links, see @ref{Development}.
+@newsEnd
+
+
+
+@newsItem
+@subsubheading Hungarian translation!  @emph{22 May 2009}
+
+Elkészült a lilypond.org nagy részének magyar fordítása a LilyPond
+honosítási projekt első lépéseként. A projekt célja a LilyPond
+szabad kottaszedő szoftver minél széleskörűbben elérhetővé tétele
+a magyar felhasználók számára a teljes weboldal és dokumentáció
+lefordítása révén. A teljes dokumentáció lefordításához
+közreműködőket keresünk. Ha részt vennél a honosításban, küldj egy
+e-mailt a harmathdenes AT gmail.com címre!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond Report #15.  @emph{18 May 2009}
+
+The @emph{LilyPond Report} is a short, informal opinion column
+about the LilyPond project: its team, its world, its community.
+Read it @uref{http://news.lilynet.net/The-LilyPond-Report-15,
+here}!
+@newsEnd
+
+
diff --git a/Documentation/fr/general/news.itexi b/Documentation/fr/general/news.itexi
new file mode 100644 (file)
index 0000000..7893a6d
--- /dev/null
@@ -0,0 +1,3378 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+
+@ignore
+
+NOTE:
+
+  * avoid "HERE" as name for links, use descriptive link names like
+  @uref{,Download LilyPond 2.5.16}
+
+  * avoid putting links in running text. They make text harder to read.
+  Preferably: (@uref{,...}, etc. )
+
+  * use a descriptive title in @subsubheading
+
+  * writing date in "Month DD, YYYY" format is required for
+  generating the RSS feed; in case the message (and thus the date)
+  is not in English, you must write a well-formed date in English
+  like above in a comment between the closing brace of @emph and the
+  following line
+  (see "Japanese translation" below for an example).
+
+  * Split news items in small chunks. It's OK to have more than 1 item
+  on one day.
+
+
+FIXME
+
+  * add macro for long Google issues list URL
+@end ignore
+
+@newsItem
+@subsubheading New Website!  @emph{20 Aug 2009}
+
+As you can see, we have a new website design.  Many thanks to
+texi2html and CSS for being so flexible!
+
+(FIXME: change date when this is actually announced on lilypond.org)
+@newsEnd
+
+
+@newsItem
+@subsubheading  LilyPond 2.13.3.  @emph{July 2, 2009}
+
+This unstable release contains working menus in OSX 10.5; many
+thanks to Christian Hitz for fixing this long-standing problem!
+This release also contains numerous other bugfixes and features
+such as ties with variable thickness, partially dashed slurs, and
+eyeglasses.
+
+We are planning another 2.12 release in the next week or two,
+which will include the menu fixes for OSX 10.5. Normal users may
+wish to wait for this release rather than using an unstable
+release. For changes and download links, see @ref{Development}.
+@newsEnd
+
+
+
+@newsItem
+@subsubheading Hungarian translation!  @emph{22 May 2009}
+
+Elkészült a lilypond.org nagy részének magyar fordítása a LilyPond
+honosítási projekt első lépéseként. A projekt célja a LilyPond
+szabad kottaszedő szoftver minél széleskörűbben elérhetővé tétele
+a magyar felhasználók számára a teljes weboldal és dokumentáció
+lefordítása révén. A teljes dokumentáció lefordításához
+közreműködőket keresünk. Ha részt vennél a honosításban, küldj egy
+e-mailt a harmathdenes AT gmail.com címre!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond Report #15.  @emph{18 May 2009}
+
+The @emph{LilyPond Report} is a short, informal opinion column
+about the LilyPond project: its team, its world, its community.
+Read it @uref{http://news.lilynet.net/The-LilyPond-Report-15,
+here}!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.13.3.  @emph{July 2, 2009}
+
+This unstable release contains working menus in OSX 10.5; many
+thanks to Christian Hitz for fixing this long-standing problem!
+This release also contains numerous other bugfixes and features
+such as ties with variable thickness, partially dashed slurs, and
+eyeglasses.@*
+We are planning another 2.12 release in the next week or two,
+which will include the menu fixes for OSX 10.5.  Normal users may
+wish to wait for this release rather than using an unstable
+release.@*
+@ref{Changes},
+@ref{Development}.
+@newsEnd
+
+
+@newsItem
+@subsubheading A LilyPond weboldala magyarul.  @emph{May 22, 2009}
+
+Elkészült a lilypond.org nagy részének magyar fordítása a LilyPond
+honosítási projekt első lépéseként. A projekt célja a LilyPond
+szabad kottaszedő szoftver minél széleskörűbben elérhetővé tétele
+a magyar felhasználók számára a teljes weboldal és dokumentáció
+lefordítása révén. A teljes dokumentáció lefordításához
+közreműködőket keresünk. Ha részt vennél a honosításban, küldj egy
+e-mailt a @code{harmathdenes AT gmail.com} címre!
+<p align="right">Harmath Dénes, a LilyPond honosítási projekt
+vezetője
+@newsEnd
+
+
+@newsItem
+@subsubheading The LilyPond Report #15.  @emph{May 18, 2009}
+
+The @emph{LilyPond Report} is a short, informal opinion column about the LilyPond project:
+its team, its world, its community.
+Follow @uref{http://news.lilynet.net/The-LilyPond-Report-15,this link}
+to read the full issue...
+@newsEnd
+
+
+@newsItem
+@subsubheading The LilyPond Report #14.  @emph{April 13, 2009}
+
+The @emph{LilyPond Report} is back, on a new website!
+This short, informal, weekly opinion column is about the LilyPond project: its team, its world, its community.
+Follow @uref{http://news.lilynet.net/The-LilyPond-Report-14,this link} to read the full issue...
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.12.2 and 2.13.0 — @emph{March 21, 2009}
+
+As a very belated announcement, the stable version of LilyPond is
+now 2.12.2, and the next development version has begun with
+2.13.0.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.12.0 @qq{Rune} — @emph{December 27, 2008}
+
+A new stable release of LilyPond is available.
+@*
+@uref{announce-v2.12,Announcement},
+@ref{Changes},
+@ref{Download}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.65 — Release Candidate.  @emph{December 2, 2008}
+
+This release has improvements to MusicXML import, contributed by
+Reinhold Kainhofer, and adds support for splitting a book in several
+book parts, contributed by Nicolas Sceaux.
+Nested contexts of the same type are now allowed with any depth, and
+overriding nested properties can be done with list syntax, thanks to
+Neil Puttock.
+This is hopefully the last Release Candidate before stable release 2.12,
+so you are welcome to test this release if you can to report new
+issues.@*
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_65&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.64.  @emph{November 18, 2008}
+
+LilyPond 2.11.64 is available. MusicXML import has been improved,
+including church modes support, and a few bugs in the compilation
+and documentation building processes are fixed.  The three
+documentation manuals are now fully translated in Spanish, thanks
+to Francisco Vila.  The font cache problem in Windows binaries
+which used to cause excessive slowness should be fixed.
+@*
+@ref{Changes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.63.  @emph{October 29, 2008}
+
+LilyPond 2.11.63 is available. This release has lots of updates to the
+documentation and translations.
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.62 &ndash; Release Candidate.  @emph{October 11, 2008}
+
+LilyPond 2.11.62 is available. This is is one of the last releases
+before 2.12, so testing it is encouraged. In addition to a bugfix
+in @code{\tempo} command, this release has lot of updates
+to Spanish and German documentation translations, and the
+stylesheet for HTML documentation has been improved.
+@*
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_62&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.61 available.  @emph{October 1, 2008}
+
+LilyPond 2.11.61 has been released. It has updates to
+documentation translations, and a new automatic accidentals style
+(teaching) has been added.
+@*
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_61&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.60 available.  @emph{September 25, 2008}
+
+LilyPond 2.11.60 has been released. A new style of double repeat
+bar line has been added, and @code{printallheaders} variable in
+score block has been renamed to @code{print-all-headers}.
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.59 available.  @emph{September 20, 2008}
+
+Release 2.11.59 is out. LilyPond now uses 64 bit integers for
+rational numbers, which allows typesetting more complex polymetric
+music.  This release also has updates to German and Spanish
+translations of the documentation.
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.58 available.  @emph{September 13, 2008}
+
+LilyPond 2.11.58 is a beta release, which means the next stable
+release is expected in a few weeks.  This release is also special,
+as it includes code which supports more flexible automatic
+accidentals rules, written several months ago by Rune Zedeler,
+deceased since then.  All the development team express their
+condolences to his family and his friends.  Besides this,
+automatic beaming has been improved by Carl Sorensen, support
+for creating stem flags in a new style has been contributed by
+Reinhold Kainhofer, and a few bugs have been fixed.
+@*
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_58&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.57 available.  @emph{August 27, 2008}
+
+LilyPond 2.11.57 is out.  This release adds support for harp pedal
+diagrams, contributed by Reinhold Kainhofer, and some changes in
+markup command names have been made.
+@*
+@ref{Changes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.56 available.  @emph{August 17, 2008}
+
+LilyPond 2.11.56 is out.  This release features transposable fret
+diagrams, contributed by Carl Sorensen.  Translations status pages
+are now available from the documentation start page.  Two
+predefined commands @code{\pointAndClickOn},
+@code{\pointAndClickOff} have also been added.
+@*
+@ref{Changes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.55 available.  @emph{August 6, 2008}
+
+LilyPond 2.11.55 is out.  This release fixes several bugs, and for octavation brackets
+@code{set-octavation} has been replaced by a more user-friendly command, @code{\ottava}.  
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_55&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.54 available.  @emph{July 30, 2008}
+
+LilyPond 2.11.54 is out.  This release fixes a bug in tie formatting
+following a line break, and changes the behavior of @code{short-indent}
+so that short instrument names are no longer indented in the margin.
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_54&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.53 available.  @emph{July 23, 2008}
+
+LilyPond 2.11.53 is out.  This release fixes a lot of bugs.
+@*
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_53&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.52 available.  @emph{July 14, 2008}
+
+Release 2.11.52 fixes wrong offset of a bar number when it follows
+a breath mark, and syntax changes made in recent development
+releases are now fully listed on the News page.  @ref{Changes},
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_52&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.51 available.  @emph{July 8, 2008}
+
+Release 2.11.51 has a couple of bugfixes, and a lot of changes in
+predefined command names.  Fret diagrams formatting has been
+improved by Carl Sorensen, it is now controlled
+by @code{fret-diagram-details} property.
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_51&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.50 available.  @emph{July 2, 2008}
+
+Release 2.11.50 adds support for metronome marks with text, and
+backslashed numbers for figured bass, contributed by
+Reinhold Kainhofer.
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_50&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading The LilyPond Report #13.  @emph{June 23, 2008}
+
+This short, informal, weekly opinion column is about the LilyPond project: its team, its world, its community.
+Follow @uref{http://valentin.villenave.info/The-LilyPond-Report-13,this link} to read the full issue...
+@newsEnd
+
+
+@newsItem
+@subsubheading The LilyPond Report #12.  @emph{June 16, 2008}
+
+This short, informal, weekly opinion column is about the LilyPond project: its team, its world, its community.
+Follow @uref{http://valentin.villenave.info/The-LilyPond-Report-12,this link} to read the full issue...
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.49 released.  @emph{June 12, 2008}
+
+LilyPond 2.11.49 is out.  It fixes a number of bugs, including bugs in beams formatting.
+@*
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_49&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.48 released.  @emph{June 9, 2008}
+
+LilyPond 2.11.48 is out.  This release fixes a few bugs, and
+@code{\compressMusic} has been renamed
+to @code{\scaleDurations}.
+@*
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_48&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading The LilyPond Report #11.  @emph{June 9, 2008}
+
+This short, informal, weekly opinion column is about the LilyPond project: its team, its world, its community.
+Follow @uref{http://valentin.villenave.info/The-LilyPond-Report-11,this link} to read the full issue...
+@newsEnd
+
+
+@newsItem
+@subsubheading The LilyPond Report #10.  @emph{June 2, 2008}
+
+Welcome to this special tenth issue of the @emph{LilyPond Report}, entirely dedicated to Algorithmic Composition systems.@*
+Follow @uref{http://valentin.villenave.info/The-LilyPond-Report-10,this link} to read the full issue...
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.47 released.  @emph{May 28, 2008}
+
+LilyPond now allows all text context properties to be markups,
+except in @code{\lyricmode}.  This release also fixes
+regression tests maintenance for developers.
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_47&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.46 available.  @emph{May 22, 2008}
+
+Release 2.11.46 fixes a lot of bugs and includes a rewrite of
+dynamics engravers.  Support for slur-shaped arpeggios has been added.
+@ref{Changes},
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_46&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading RSS feed - @emph{May 21, 2008}
+
+A RSS feed is now available on lilypond.org.  It contains all
+news announced on the web site start page: releases, LilyPond
+report, new translations of the site and publications.
+@uref{http://lilypond.org/web/lilypond-rss-feed.xml,Feed URL}.
+The info mailing list (see @ref{Contact}) is still used to
+announce releases and special events.
+@newsEnd
+
+
+@newsItem
+@subsubheading The LilyPond Report #9.  @emph{May 05, 2008}
+
+Welcome to this ninth issue of the @emph{LilyPond Report}!@*
+This short, informal, weekly opinion column is about the LilyPond project: its team, its world, its community.
+Follow @uref{http://valentin.villenave.info/The-LilyPond-Report-9,this link} to read the full issue...
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.45 available.  @emph{April 26, 2008}
+
+Release 2.11.45 fixes a couple of bugs in the formatting
+engine. @code{lilypond-book} has been improved, with better
+performance, a bugfix about included files, and more flexibility
+for preprocessing documents with LaTeX variants. Support for
+enclosing text in a rounded box has been contributed by Valentin
+Villenave.
+@ref{Changes},
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_45&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.44 available.  @emph{April 14, 2008}
+
+Release 2.11.44 is available. Support for figured bass and chord
+names has been added to the MusicXML
+converter. @uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_44&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading lilypond.org日本語訳 (lilypond.org Japanese translation).  @emph{2008年4月8日 (April 4, 2008)}
+
+Lilypond.orgのいくつかのページの日本語訳が出来ました。
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.43 available.  @emph{March 31, 2008}
+
+Release 2.11.43 has been available since March 27. It fixes a
+couple of formatting bugs, and the font cache problem with
+MS-Windows binaries which caused excessive slowness has been
+fixed. @uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_43&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.42 available.  @emph{March 9, 2008}
+
+Release 2.11.42 is out. It fixes some formatting and spacing
+bugs. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_42&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading Comparison of music engraving with Finale and LilyPond.  @emph{February 25, 2008}
+
+In three articles, Andrew Hawryluk compares Finale and LilyPond in
+general terms, and evaluates in detail engraving capabilities of
+both pieces of software.  The second article is an instructive
+analysis of Rachmaninoff's Piano Prelude 6 engraving, including
+comparisons with a reference hand-engraved edition.
+@uref{http://www.musicbyandrew.ca/finale-lilypond-1.html,Read
+the articles}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.41 available.  @emph{February 25, 2008}
+
+Release 2.11.41 is available. It has a few bugfixes, updated
+program messages in French, German, Spanish and Vietnamese, and
+updates to the MusicXML converter. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_41&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.37 available.  @emph{January 3, 2008}
+
+Release 2.11.37 is available. It has a few bugfixes, and
+documentation changes. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.36 available.  @emph{December 13, 2007}
+
+Release 2.11.36 is now available. It has many bugfixes, updates
+for MusicXML import, and it includes major documentation changes from
+Grand Documentation Project. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_36&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.33 and 2.10.33 available.  @emph{September 20, 2007}
+
+Release 2.11.33 is now available.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_10_33&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.10}, @uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_33&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.32 available.  @emph{September 2, 2007}
+
+Release 2.11.32 is now available.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_32&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.31 available.  @emph{August 31, 2007}
+
+Release 2.11.31 is now available. It has more bugfixes, updates
+for MusicXML import and lots of updates for the translations.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_31&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.30 available.  @emph{August 20, 2007}
+
+Release 2.11.30 is now available. It has various bugfixes among
+others in the new spacing code, MusicXML import and lots of updates
+for the translations.  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_30&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.29 and 2.11.29 available.  @emph{August 11, 2007}
+
+Release 2.11.29 is now available. 2.10.29 has a few small fixes.
+2.11.29 has several bugfixes, among others in the new spacing code,
+and lots of updates for the translations.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_10_29&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.10}, @uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_29&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.28 for FreeBSD x86_64.  @emph{August 10, 2007}
+
+Release 2.11.28 is now available as a binary installer for
+FreeBSD x86_64.  Download
+@uref{http://lilypond.org/download/binaries/freebsd-64/lilypond-2.11.28-1.freebsd-64.sh,the installer} and 
+do @emph{sh lilypond-2.11.28-1.freebsd-64.sh} in a command window.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.28 available - @emph{July 25, 2007}
+Release 2.11.28 has several updates to the manual and its
+translations,  an plethora of bugfixes and a complete cleanup of the
+spacing engine code. 
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_28&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.26 available - @emph{June 8, 2007}
+
+Release 2.11.26 supports page markers, eg. for use in
+tables-of-contents.  In addition, it fixes a number of bugs. Enjoy!
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_26&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.25 and 2.11.25 available - @emph{May 20, 2007}
+
+Release 2.11.25 has support for toplevel page breaking commands,
+and page breaking as a whole has been sped up significantly. Enjoy!
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_25&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11}, @uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_10_25&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.10}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.23 and 2.11.23 available - @emph{May 1, 2007}
+This has lots of bugfixes.  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_23&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11}, @uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_10_23&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.10}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading &Uuml;bersetzung der Dokumentation - @emph{10. April 2007}
+Die Kapitel 1-5 (der Abschnitt für Anf&auml;nger) des 
+LilyPond-Benutzerhandbuchs
+sind auf deutsch &uuml;bersetzt &mdash; sie sind erh&auml;ltlich f&uuml;r
+die @ref{Changes}
+online und @ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.22 available - @emph{April 10, 2007}
+This release has updates of the dot collision code.  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_22&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+}, @ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.21 available - @emph{March 24, 2007}
+This release has some documentation updates.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_21&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+}, @ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading Traduction de la documentation en fran&ccedil;ais - @emph{25 f&eacute;vrier 2007}
+Les chapitres 1 &agrave; 4 et 6 du manuel de l'utilisateur sont
+d&eacute;sormais traduits, et disponibles en ligne &mdash; @uref{@@DOC@@v2.10/Documentation/user/lilypond/index.fr.html,version
+2.10}, @uref{@@DOC@@v2.11/Documentation/user/lilypond/index.fr.html,version
+2.11}.  Les traductions sont &eacute;galement incluses dans la @uref{install,documentation t&eacute;l&eacute;chargeable}.  
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.20 and 2.11.20 available - @emph{February 25, 2007}
+This release fixes many bugs.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_20&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11},
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_10_20&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.10}, @ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.19 and 2.11.19 available - @emph{February 18, 2007}
+This release fixes many bugs.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_11_19&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11},
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&amp;q=fixed_2_10_19&amp;colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.10}, @ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.18 available - @emph{February 12, 2007}
+This release fixes still more bugs, and included
+singing support through festival contributed by Milan Zamazal. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_18&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11}, @ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond  2.11.17 available - @emph{February 9, 2007}
+This release fixes still more bugs.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_17&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11}, @ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.16 and 2.11.16 available - @emph{February 4, 2007}
+This release fixes many bugs.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_16&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11},
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_16&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.10}, 
+@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.15 and 2.11.15 available - @emph{February 1, 2007}
+This release will stretch piano staves on a
+system-by-system basis and add a few glyphs: a black harmonic note
+head and the slashed mirrored flat.  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_15&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.11},
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_15&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes
+2.10}, 
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.14 and 2.11.14 available - @emph{January 26, 2007}
+This release has a rewrite of the line-spanner code, responsible for
+among other glissandi and text-crescendos, making them more flexible.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_14&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.13 and 2.11.13 available - @emph{January 17, 2007}
+This release fixes a few minor but irritating bugs. In addition, the
+2.11 release has updates of the tutorial.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_13&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.12 available - @emph{January 17, 2007}
+This release fixes lots of bugs. In particular, the tie formatting has
+been further improved, and memory usage has been improved enormously.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_12&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.12 available - @emph{January 17, 2007}
+This release mirrors 2.11.12. Notably, it has the same memory
+usage improvements.  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_12&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.11 available - @emph{January 12, 2007}
+This release mostly has the same fixes as 2.11.11.  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_11&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.11 available - @emph{January 11, 2007}
+This release has further fixes for popular bugs. Timing of the MIDI
+output won't get confused by tuplets and grace notes anymore. Some fat
+has also been trimmed of the skyline code performance.  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_11&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.10 available - @emph{January 8, 2007}
+LilyPond 2.11.10 has further review of the test-suite, performance and
+code coverage. This brought to light several problems that were
+fixed.  Notably, 2.11.10 fixes lots of regressions in optical
+correction spacing and MIDI dynamics.  Also, this version is 20 to 50
+% faster than previous 2.11 releases. (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_10&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.10 available - @emph{January 8, 2007} 
+This release fixes several popular bugs, among others: MIDI files
+that go silent after (de)crescendi, and tuplets problems with quoting
+and part-combining (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_10&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.9 and 2.10.9 available - @emph{January 3, 2007} 
+This release has a couple of bugfixes, and &mdash;in 2.11.9&mdash
+further improvements in the regression test suite (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_9&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.8 and 2.10.8 available - @emph{January 3, 2007}
+New! Improved! With even more bugfixes!  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_8&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading @code{lilypond.org} auf deutsch - @emph{31. Dezember 2006}
+Die LilyPond-Webseiten sind jetzt auch auf deutsch &uuml;bersetzt!
+@newsEnd
+
+
+@newsItem
+@subsubheading @code{lilypond.org} en español - @emph{December 29, 2006}
+¡Ya está disponible la versión en español del sitio web de LilyPond!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.7 and 2.10.7 available - @emph{January 1, 2007}
+New! Improved! With even more bugfixes!  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_7&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.6 available - @emph{December 30, 2006}
+This release supports arbitrary fractional alterations, allowing 
+music with different microtonal conventions to be typeset. 
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_6&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.6 available - @emph{December 30, 2006}
+New! Improved! With even more bugfixes!
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_6&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.5 available - @emph{December 24, 2006}
+These releases complete the translation infrastructure for
+Documentation. 
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_5&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.5 available - @emph{December 24, 2006}
+New! Improved! With even more bugfixes!
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_5&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.4 available - @emph{December 21, 2006}
+The vertical spacing improvements that were introduced in 2.11.0 now work
+within a system as well as between systems.  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_4&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.3 available - @emph{December 19, 2006}
+This release has @uref{http://lilypond.org/doc/v2.11/compare-v2.10.3/index.html,graphical
+test results} and several website build improvements.  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_3&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.3 available - @emph{December 19, 2006}
+This release fixes several bugs.
+(@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_3&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LinuxPPC binaries available! - @emph{December 19, 2006}
+From now on, our GUB binary builds include support for Linux/PPC.  (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading Traduction du tutoriel en fran&ccedil;ais.  @emph{December 13, 2006}
+Fruit du travail d'une &eacute;quipe de traducteurs, le tutoriel en
+fran&ccedil;ais est maintenant disponible en ligne. @uref{@@DOC@@v2.10/Documentation/user/lilypond/Tutorial.fr.html,Version
+2.10}, @uref{@@DOC@@v2.11/Documentation/user/lilypond/Tutorial.fr.html,Version
+2.11}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.2 available - @emph{December 12, 2006}
+This release supports glissandi and harmonics in tablature.  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_2&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.2 available - @emph{December 12, 2006} 
+A new stable release of LilyPond is available.  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_2&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.1 available - @emph{December 4, 2006}
+This release has improved support for horizontal spacing.  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_11_1&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.1 available - @emph{December 3, 2006}
+A new stable release of LilyPond is available.  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_10_1&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.11.0 available - @emph{November 27, 2006}
+This release has improved support for vertical spacing.  (@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.10.0 available - @emph{November 11, 2006}
+A new stable release of LilyPond is available.  (@uref{announce-v2.10.html,Announcement}, @ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading GIT repository online - @emph{November 11, 2006}
+LilyPond development has moved over its source code to @uref{http://git.or.cz,GIT}, the fast version control
+system. Check out our repository at @uref{http://git.sv.gnu.org/gitweb/?p=lilypond.git;a=summary,gnu.org}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.29 available - @emph{November 5, 2006}
+This release has many more bugfixes.  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_9_29&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.28 available - @emph{November 3, 2006}
+This release has many more bugfixes.  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_9_28&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.27 available - @emph{October 28, 2006}
+This release has a new @code{FretBoards} context, and some further
+bugfixes.  (@ref{Changes}, @uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_9_27&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading Music streams thesis available - @emph{October 21, 2006}
+The last months, Erik Sandberg has been overhauling the internals of
+Lily. This change introduces a new intermediate format, Music Streams,
+which will make it easier get music data out of LilyPond. A copy of
+the thesis is now available from lilypond.org
+(@ref{Publications}).
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.26 available - @emph{October 20, 2006}
+This release has further bugfixes.   (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_9_26&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.25 available - @emph{October 18, 2006}
+This release has more bugfixes; from now on, binaries are also
+available for x86/64.  (@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed_2_9_25&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.24 available - @emph{October 15, 2006}
+This release has support for right hand guitar fingerings, and offers
+some bugfixes.  (@ref{Changes},
+@uref{http://code.google.com/p/lilypond/issues/list?can=1&q=fixed2924&colspec=ID+Type+Status+Priority+Milestone+Owner+Summary,Bugfixes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.23 available - @emph{October 12, 2006}
+This release cuts fragments of EPS directly from your finished score,
+and makes it easier to insert ties into lyrics. (@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.22 available - @emph{October 9, 2006}
+Test this release candidate for LilyPond 2.10!  (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.21 available - @emph{October 4, 2006}
+Test this release candidate for LilyPond 2.10!  (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.20 available - @emph{October 3, 2006}
+Test this release candidate for LilyPond 2.10!  (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.17 available - @emph{September 2, 2006}
+This release fixes many bugs. Among others, MacOS X QuickTime now
+honors tempo changes are in the MIDI output.  (@ref{Changes}, @ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.16 available - @emph{August 25, 2006}
+In this release, chords may be partially tied and lyric extenders have
+tunable padding. Moreover, many bugs were fixed
+(@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.15 available - @emph{August 20, 2006}
+This releases fixes many bugs in the 2.9.14 release.  (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.8.6 available - @emph{August 8, 2006}
+This release contains a few minor bugfixes; the source tarball is also
+available.  (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.14 available - @emph{August 4, 2006}
+This release supports instrument name changes, dotted barlines and
+better spacing for floating grace notes. In addition, it contains
+ongoing work by Erik Sandberg to extend the interpretation phase with
+stream support.  (@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.13 available - @emph{July 23, 2006}
+This release supports doits and falls, and more tuning options for
+grace note spacing and tuplet brackets.  (@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.12 available - @emph{July 18, 2006}
+This release supports pdftex for lilypond-book, and uses PdfTeX for
+generating manuals, so page numbers and references are now clickable.
+(@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.11 available - @emph{July 12, 2006}
+This release wraps improvements of the last two weeks.  As a new
+feature, it supports tunable tuplet number formatting for nested
+tuplets.  (@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.10 available - @emph{June 15, 2006}
+This releases fixes a couple of  bugs in 2.9.9. 
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.9 available - @emph{June 15, 2006}
+This releases fixes many bugs in 2.9.8 and earlier. 
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.8 available - @emph{June 6, 2006}
+2.9.8 has support for different spacing sections within a single
+score, and better infrastructure for automated regression testing.
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.8.4 available - @emph{June 4, 2006}
+2.8.4 fixes some minor bugs, and includes a backport of the
+infrastructure for automated regression testing.
+(@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading First test results available - @emph{June 4, 2006}
+After a week of frantic tweaking, the first automated testing results
+are available.  You can now see @uref{http://lilypond.org/doc/v2.9/compare-v2.8.4/index.html,in full
+glory} what features are broken in the development release
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.7 available - @emph{May 30, 2006}
+2.9.7 has improvements in the formatting for figured bass, and
+includes a new framework for detecting bugs earlier, which will make
+the development releases even better
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.6 available - @emph{May 24, 2006}
+This
+release has new features in beam formatting: beams may now be put on
+single stems, and obey the @code{beatGrouping} property.  MusicXML
+converter.  (@ref{Changes}, @ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading New essay pages! - @emph{May 22, 2006}
+The @emph{Automated Engraving} essay has been updated with material
+from the @uref{http://fisl.softwarelivre.org,FISL} talk, with
+pages on @uref{about/automated-engraving/problem-statement,modeling
+notation} and @uref{about/automated-engraving/scoring-esthetics,algorithms for
+esthetics}. Happy reading!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.5 available - @emph{May 17, 2006}
+This release supports object rotation, hairpins with circled tips,
+hairpins that run to barlines before notes and improvements in the
+MusicXML converter.
+(@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.4 available - @emph{May 12, 2006}
+This release has support for feathered beaming, and note head styles in
+the markup @code{\note} command. In addition, it has a lot of updates
+of the manual and a clean up of the spring spacer. 
+(@ref{Changes}, @ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.8.2 available - @emph{May 12, 2006}
+This release has fixes for minor bugs and compilation issues.
+(@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.3 is out! - @emph{May 7, 2006}
+This new release has lots of updates of the manual, courtesy Graham
+and the contributors of the mailing. It handles formatting for ties in
+arpegiated chords better (feature sponsored by
+Steve Doonan), it has al niente hairpins, courtesy of Erlend Aasland,
+and some cleanups of the PostScript output, courtesy David Feuer. (@ref{Changes}, @ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading FISL7.0 slides available - @emph{April 22, 2006}
+The slides for Han-Wen's talk at
+@uref{http://fisl.softwarelivre.org,FISL 7} are now online.
+(@ref{Publications})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.8.1 is out! - @emph{April 3, 2006}
+Important bugfixes include CJK font handling and a Darwin/x86 port.
+(@ref{Changes}, @ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.9.1 is out! - @emph{April 3, 2006}
+It's mostly a bugfix release, and it's almoste the same as 2.8.1. This
+release mainly fixes problems with CJK font loading.
+(@ref{Changes}, @ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond on MacOS X/Intel - @emph{March 31, 2006}
+LilyPond now also runs on Intel based macs, offering a 400%
+speedup over the emulated PowerPC binaries.  (@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.8.0 is out! - @emph{March 22, 2006}
+Version 2.8 is here! Read the @uref{announce-v2.8.html,release
+announcement}.  (@ref{Changes}, @ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.39 is out - @emph{March 17, 2006}
+This release has even more bug fixes. Please test before 2.8 is
+released. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.38 is out - @emph{March 12, 2006}
+This is likely to be the last release candidate before we release 2.8,
+so report any bugs that you might find. New attractions include:
+lilypond postscript files now work with GSView, cut & pasting lily
+code from PDF files should now work, and spacing fixes for
+multi-measure rests.
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.37 is out - @emph{March 4, 2006}
+This release has more bug fixes. Please help us by testing it!
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.36 is out - @emph{February 24, 2006}
+This is another release candidate for 2.8. It has lots of bug fixes
+and polishes to the documentation.  It also contains support for
+creating ties that are only on their right side connected to note
+heads, which is handy for repeats (feature sponsored by Steve Doonan).
+The documentation suite can now be downloaded as a separate tarball
+from lilypond.org. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.35 is out - @emph{February 19, 2006}
+This release has lots of bugs fixes. The plan is to release 2.8 at the
+end of this month, so bug reports are @strong{very} welcome. By
+definition a bug is release critical if it wasn't present in version
+2.6. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.34 is out - @emph{February 16, 2006}
+This release has a bunch of bugfixes, and new features. Newly created
+contexts may also be named with @code{\new Voice =
+"alto"}. Thicknesses of tie and slurs may be tuned separately for
+the endings and the middle
+part. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.33 is out - @emph{February 10, 2006}
+Items directly connected with a music input element may be
+parenthesized, for example,
+@verbatim
+{
+  c4 -\parenthesize -.
+  <d \parenthesize fis a>
+}
+@end verbatim
+
+This feature was sponsored by Ramana Kumar. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.32 is out - @emph{February 7, 2006}
+This release contains some syntax changes: words inside the \paper and
+\layout block are henceforth written with dashes, for instance:
+
+@verbatim
+{
+  \layout {
+    ragged-right = ##t
+  }
+}
+@end verbatim
+
+Furthermore, in this release, we have dropped some legacy code from
+our library. Now, lily uses standard C++ strings and the STL
+vector. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.31 is out - @emph{February 2, 2006}
+This release fixes a load of bugs, and has some internal
+cleanups. Exported C++ members are now named
+ly:class-name::function-name in Scheme instead of
+Class_name::function_name. We are now using C++ vectors and strings
+instead of our own. The Linux/FreeBSD builds now include wrappers for
+Python scripts too, so you can run convert-ly and midi2ly.
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.30 is out - @emph{January 30, 2006}
+This release has a few bug fixes, like the solfa note head shape and
+collisions, the \epsfile command, and in getting No. ligature in
+normal words. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.29 is out - @emph{January 27, 2006}
+This release has the following new features. Alignments of staves may
+be tuned per system (feature sponsored by Trevor Baca), individual
+systems may be positioned manually (feature sponsored by Trevor Baca
+and Nicolas Sceaux), a linebreaking configuration can now be saved as
+a `.ly' file automatically. This allows vertical alignments to be
+stretched to fit pages in a second formatting run (feature sponsored
+by Trevor Baca and Nicolas
+Sceaux). (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.28 is out - @emph{January 22, 2006}
+This release contains numerous small fixes that were already in our
+GUB binaries. In addition, it has further polish for formatting of
+tied chords. Theses improvements were sponsored by Steve
+Doonan. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.27, release 4 - @emph{January 13, 2006}
+
+The fourth release of our Grand Unified Binary for 2.7.27 is
+available.  This release uses Pango 1.11.1, which has support for
+ligatures and kerning. Enjoy!  (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.27, release 3 - @emph{January 12, 2006}
+The third release of our Grand Unified Binaries is available.  This
+release fixes external font-support, the decompression flag for
+Linux. Also, we have support for @strong{FreeBSD} as well!  Jump
+to the @ref{Old downloads} get them!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.27 binaries are out - @emph{January 7, 2006}
+Starting with 2.7.26, the development team has been working on the
+installers. We're proud to announce another version of these: they are
+now available for
+@uref{http://lilypond.org/download/binaries/linux-x86/lilypond-2.7.27-1.linux.sh,
+Linux/x86},
+@uref{http://lilypond.org/download/binaries/MacOS/lilypond-2.7.27-2.zip,
+MacOS X} and  
+@uref{http://lilypond.org/download/binaries/mingw/lilypond-2.7.27-2.exe,
+Windows}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.27 is out - @emph{January 7, 2006}
+This release allows you to switch staff lines on and off individually
+(feature sponsored by Andrea
+Valle). (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading Linux Journal article - @emph{January 2006}
+Linux Journal publishes an article on
+@uref{http://www.linuxjournal.com/article/8364,@emph{Make
+Stunning Schenker Graphs with GNU LilyPond}}.  It is a
+in-depth but hands-on feature article with crisp LilyPond
+graphics.
+@*
+Author Kris Shaffer remarks
+&ldquo;GNU Lilypond generates beautiful graphics that make commercial
+alternatives seem second-rate.&rdquo;
+This article is now available @uref{http://www.linuxjournal.com/article/8583,on-line}.
+@newsEnd
+
+
+@newsItem
+@subsubheading New binaries for LilyPond 2.7.26 - @emph{January 4, 2006}
+The Development team has been working around the clock to improve
+to fix the first wave bugs reported by you.  The new results for MacOS
+and Windows are up on the @ref{Old downloads}
+page. Let us know how you fare!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.26 is out - @emph{December 31, 2005}
+This release has an improvement in the MusicXML importer (feature
+sponsored by Mark vd Borre's Music Academy): now, staves and voices
+are also setup, so you can readily run LilyPond on the .ly output.
+The important occasion for this release is our new build
+environment: we have completely revamped it, which means that binaries
+for all platforms (including MacOS, Windows, Linux/x86, but probably
+FreeBSD too) will be more quickly available for download.
+A happy 2006 from the LilyPond Development Team!
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.25 is out - @emph{December 24, 2005}
+This release has various bugfixes. Also, stems on the center line now
+have their directions interpolated to minimize the number of direction
+changes (feature sponsored by Basil Crow and Mike
+Rolish). (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.24 is out - @emph{December 20, 2005}
+This release fixes a couple of bugs, but more importantly, slurs now
+avoid TupletNumbers, and tuplet numbers may enter the staff (feature
+sponsored by Trent Johnston), tuplet brackets and numbers are
+implemented as separate grobs, TupletBracket and TupletNumber (rewrite
+sponsored by Trent Johnston), string arguments for music functions may
+be specified without # marks. This allows syntactical constructs (like
+\clef and \bar) to be expressed in generic music
+functions. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.23 is out - @emph{December 19, 2005}
+This release has the following new features:
+@itemize
+@item
+Ties in chords are also formatted using score based
+formatting. This reduces the number of collisions for ties in chords
+(feature sponsored by Steve Doonan).
+@item
+With the \tweak music function, layout objects that are directly
+connected to input may be tuned easily (feature sponsored by Sean Reed
+and Bertalan Fodor).
+@item
+Generic music functions may now also be used on
+articulations and chord elements (feature sponsored by Sean Reed and
+Bertalan Fodor).
+@item
+Better support for MusicXML, more options for spacing Lyrics;
+it is now possible to separately specify minimum distances for normal
+and hyphenated syllables (features sponsored by Mark van den Borre and
+Bertalan Fodor.
+@end itemize
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.22 is out - @emph{December 9, 2005}
+This release has better support for MusicXML: it also supports ties,
+beams and editorial accidentals. It also has more options for spacing
+Lyrics; it is now possible to separately specify minimum distances for
+normal and hyphenated syllables. These features were sponsored by Mark
+van den Borre and Bertalan
+Fodor. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.21 is out - @emph{December 5, 2005}
+Saint Nicholas brings you ... a @uref{http://www.musicxml.org/,MusicXML} convertor for LilyPond!
+The convertor is basic, but working. Check out the @uref{http://www.lilypond-design.com/sponsor/open-features.html#inputfilter,
+LilyPond Software Design} pages for MusicXML features that can be
+sponsored.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.20 is out - @emph{December 2, 2005}
+This release contains the following improvements: Texts set in a
+TrueType font are now kerned. Using the TeX no longer requires linking
+or dynamically opening the kpathsea library, making the backend more
+easily usable on various systems (feature sponsored by Christian Ebert
+of Black Trash
+Productions). (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.6.5 is out - @emph{December 1, 2005}
+This release updates the bugreporting address and reorganizes the
+documentation tree. (@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.19 is out - @emph{November 26, 2005}
+This version contains a few bugfixes, and now allows the type of
+brackets in system start bracket hierarchies to be specified. Also,
+the horizontal alignment of rehearsal marks may be changed: marks can
+be put on key signatures, clefs, time signatures,
+etc. (@ref{Changes},
+@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.18 is out - @emph{November 21, 2005}
+This version features nestable system start delimiters, like bracket,
+brace. It also adds "square" line bracket (feature sponsored by Trevor
+Baca). It also has refactored routines for tie formatting. This will
+make it easier to get better tie formatting for chords (feature
+sponsored by Steve Doonan). It also has a few bug
+fixes. (@ref{Changes},
+@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.17 is out - @emph{November 17, 2005}
+This version has refactored routines for tie formatting. This will
+make it easier to get better tie formatting for chords (feature
+sponsored by Steve Doonan). It also has a few bug
+fixes. (@ref{Changes},
+@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.16 is out - @emph{November 11, 2005}
+This release fixes a large number of bugs. Please upgrade before
+reporting bugs in the 2.7 series. (@ref{Changes},
+@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.15 is out - @emph{November 3, 2005}
+This release has another massive cleanup of the backend.  Each grob
+property may also be a "grob closure". This means that it is possible
+to combine functions. Calculation of extent and offset of grob is now
+controlled via the `X-extent', `Y-extent', `X-offset' and `Y-offset'
+properties. (@ref{Changes},
+@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.14 is out - @emph{October 23, 2005}
+This release has more cleanup in the layout-engine. Now,
+properties that have Procedure values are thought to be procedures
+that compute said property, i.e.
+@verbatim
+
+\override Beam #'direction = #(lambda (grob)
+(if (> (random 10) 5) UP DOWN))
+
+@end verbatim
+will set  a random direction for beams. (@ref{Changes},
+@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.13 is out - @emph{October 18, 2005}
+This release features slashed numerals, plus signs and interruptible
+extender lines for figured bass. Merging of Figured bass lines has
+been made switchable with the figuredBassCenterContinuations
+property. For each grob, a subproperty in `callbacks' property defines
+the procedure which computes it. This is major internal cleanup, which
+also provides advanced tweakability for power
+users. (@ref{Changes},
+@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.6.4 is out - @emph{October 11, 2005}
+This release fixes a few minor problems with the stable
+series. (@ref{Changes},
+@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.12 is out - @emph{October 07, 2005}
+It features more annotations for the page layout engine and some more
+sponsored features. Beamlets may stick out of the side of beams
+(feature sponsored by Trevor Baca); new support for figured bass with
+support for continuation lines and tuning of figures, brackets, and
+alignments (feature sponsored by Trent Johnston); vertical alignments
+of staves can now be tuned easily for individual systems (feature
+sponsored by Nicolas
+Sceaux). (@ref{Changes},
+@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.11 is out - @emph{October 02, 2005}
+Vertical spacing for page layout can now be tuned for each system
+individually (feature sponsored by Trevor Baca and Nicolas
+Sceaux). The slope of a stem-tremolo may be set manually (feature
+sponsored by Sven Axelsson). There are a number of cleanups in the
+handling and representation of systems, among other features and bug
+fixes. (@ref{Changes},
+@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.10 is out - @emph{September 13, 2005}
+This version adds proper support for "laissez vibrer ties", just enter
+\laissezVibrer after a chord. This feature was sponsored by Henrik
+Frisk. It also has a couple of minor
+bugfixes. (@ref{Changes},
+@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.9 is out - @emph{September 5, 2005}
+This is mainly a bugfix
+release. (@ref{Changes},
+@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading Traduction fran&ccedil;aise du site - @emph{September 03, 2005}
+Grâce à @uref{about/thanks#website,l'équipe des traducteurs},
+de nombreuses pages du site sont maintenant disponibles en fran&ccedil;ais,
+notamment l'@uref{about/automated-engraving/index.fr.html,essai sur
+la gravure musicale}.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.8 is out - @emph{August 29, 2005}
+This release has support for right-to-left text formatting in markup
+commands (sponsored by Aaron Mehl). In addition, it fixes a great
+number of bugs, among others, support for writing MIDI files.  (@ref{Changes},
+@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading Article in `De Standaard' - @emph{August 20, 2005}
+The Belgian newspaper @emph{De Standaard} investigates what drives
+Free Software authors in an article titled @emph{Delen van KENNIS
+zonder WINSTBEJAG} (Non-profit sharing of
+knowlegde) using LilyPond as an example.  This marks
+LilyPond's first appearance in mainstream printed press.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.7 is out - @emph{August 22, 2005}
+This release has a rewriting of tie formatting which was sponsored by
+Bertalan Fodor, Jay Hamilton, Kieren MacMillan, Steve Doonan, Trevor
+Baca, and Vicente Solsona
+Dell&aacute;. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.6 is out - @emph{August 19, 2005}
+This release adds support for numbered percent repeats, a feature
+sponsored by Yoshinobu Ishizaki. It also has bugfixes for clashes
+between slurs and symbols, like fingers dynamic
+signs. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.5 is out - @emph{August 16, 2005}
+Lily 2.7.5 has a large number of bugfixes, among others, in slur
+formatting, spacing, rest collisions and tuplet bracket
+formatting. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.4 is out - @emph{August 7, 2005}
+LilyPond 2.7.4 has support for proportional notation, where the space
+for a note is proportional to the time it
+takes. (@ref{Changes},
+@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.6.3 is out - @emph{August 4, 2005}
+This release fixes a memory corruption bug that was triggered by
+\override'ing Beam settings. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.6.2 is out - @emph{August 2, 2005}
+This release has a few bugfixes, among them: the autopackage will run
+in more platforms, LilyPond will be much quicker for large
+lilypond-book documents, and the up and down Fa note heads for shaped
+heads have been
+swapped. (@ref{Changes},
+@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.3 is out - @emph{July 25, 2005}
+LilyPond 2.7.3 has improvements in performance which should result in
+faster operations (15 to 20 percent). It also contains the new
+"\displayLilyMusic" function.
+(@ref{Changes},
+@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.2 is out - @emph{July 21, 2005}
+LilyPond 2.7.2 has support for suggested accidentals for musica
+ficta notation, easy entry for lyric melismata and improvements for
+quicker entry of scores.  (@ref{Changes},
+@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.6 released - @emph{June 27, 2005}
+Version 2.6 is the latest stable release of LilyPond.
+It now
+installs in a snap on Windows, MacOS X, and any version of Linux (x86).
+@strong{Get up and running in minutes!} Pango text formatting lets you
+print @strong{Unicode } lyrics in your favorite script and font.  Create
+@strong{SVG} files, and edit them in Inkscape.
+(@uref{announce-v2.6.html,Announcement}, @ref{Old downloads}, @ref{Changes})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7.1 is out - @emph{July 20, 2005}
+LilyPond 2.7.1 has no user-visible changes. However, due to
+restructuring @qq{under the hood}, this version will be 10 to
+20 % faster.  (@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.6.1 is out - @emph{July 11, 2005}
+This version fixes a few minor bugs found in
+2.6.0, and also works on DOS-based Windows versions.  (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.7 is out - @emph{July 9, 2005}
+LilyPond 2.7.0 is out. It has support for paragraph text and
+pitched trill notation. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.31 released - @emph{June 22, 2005}
+LilyPond 2.5.32 is now available for download (binaries for Fedora +
+MacOS only). It has a few very minor bugfixes, and a rewrite of the
+TTF embedding code, which should be a lot more robust now.
+(@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading Traduction du site de LilyPond - @emph{15 juin 2005}
+@uref{about/thanks#website,L'équipe des traducteurs} vous présente
+le site de LilyPond en français. Nous travaillons sur la traduction des
+pages encore non traduites. Bon surf !
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.31 for Windows and MacOS - @emph{June 15, 2005}
+2.5.31 is now available for both Windows and MacOS X. The Windows
+version should now work with embedding TTF fonts, and the MacOS X has
+better help functionality.
+(@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.31 released - @emph{June 15, 2005}
+This release has a few bugfixes. In the MacOS X version, ClickEdit has
+been renamed to LilyPond, and you can now upgrade your files and
+compile them directly from
+LilyPond. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.30 released - @emph{June 10, 2005}
+This is (hopefully) the last Release Candidate before 2.6. Give it a
+good shake to find those last bugs! (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.29 released - @emph{June 7, 2005}
+In this release the documentation also has pictures. In addition, the
+Mac version can also read native mac fonts (.dfonts and fonts in
+resource forks). (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.27 released - @emph{May 31, 2005}
+It has a big bunch of minor bugfixes.  This is another release
+candidate for version 2.6, which should be released within the next 2
+weeks. Please send a bug report if you find a critical problem with this
+release. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading Windows and MacOS installers available - @emph{May 26, 2005}
+There are now a native, standalone installers for Windows and
+MacOS.  They also support PDF point & click. (@ref{Old downloads}) 
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.26 released - @emph{May 26, 2005}
+This release has a couple of small bugfixes.
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.25 released - @emph{May 20, 2005}
+This release has many small bugfixes and updates to the
+documentation. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.24 released - @emph{May 12, 2005}
+2.5.24 fixes a bunch of bugs; in particular, chord symbols (such as
+slashed o) should now work on all platforms. This release has a new
+feature: it is now possible to make staves appear in a different order
+from the order that they were defined. (@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.23 released - @emph{May 6, 2005}
+This release has a couple of small bugfixes, and a new feature. It is
+now possible to start and stop the StaffSymbol, during a piece of
+music, by doing \stopStaff \startStaff. This can be used to produce
+Ossia
+staves. (@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading 2.5.22 released - @emph{May 3, 2005}
+2.5.22 is a bugfix
+release. The most visible improvement is in the PDF : this release
+will produce smaller PDF files, with symbols that look better on
+screen.
+(@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading April 25, 2005 - 2.5.21 released!
+2.5.21 has more bugfixes. It also has support for "grid
+lines", bar like vertical line, which are aligned with the notes. The
+auto-beam engraver was rewritten, so it also works with irregular time
+signatures like 5/8.
+(@ref{Changes},
+@ref{Old downloads})
+@newsEnd
+
+
+@newsItem
+@subsubheading April 18, 2005
+LilyPond 2.5.20 has lots of bugfixes, in particular, MIDI files of
+multi-movement pieces don't overwrite each other.  Version 2.5.20 also
+supports putting arrows on lines, such as glissandi.
+More details are in the 
+the @ref{Changes}
+file, or go straight to @ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading April 15, 2005
+LilyPond 2.5.19 was released. The command `\epsfile' allows inclusion
+of EPS graphics into markup texts and the music function
+`\musicDisplay' will display a music expression as indented
+Scheme code. Take a look at
+the @ref{Changes}
+file and @ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading April 6, 2005
+2.5.18 is a bugfix release. It has many small cleanups in the
+web-based documentation, and many small cleanups all over the
+place. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading March 31, 2005
+2.5.17 is out. This release features many small bugfixes. In addition,
+it has support for string number notation for guitar. This feature was
+sponsored by Gunther Strube. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading March 20, 2005
+LilyPond 2.5.16 is out. This release fixes a few minor but irritating
+errors. A Fedora Core 3 binary is also available.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading March 14, 2005
+LilyPond 2.5.15 is out. This release has clean ups in the SVG output,
+and now uses the LilyPond number font for time signatures.  It is
+now possible to add text before and after music. This can be used to
+add verses after a music. Take a look at the @ref{Changes}
+file and @ref{Old downloads}!
+@newsEnd
+
+
+@newsItem
+@subsubheading March 7, 2005
+LilyPond 2.5.14 is out. It is now possible (and in fact, encouraged),
+to build LilyPond either without the Kpathsea TeX library or with the
+Kpathsea dynamically loaded, but only for the -btex backend.  This
+means that packages do not have to depend on TeX anymore. With this,
+the Windows download size will go down significantly. Take a look at
+the @ref{Changes}
+file and download @ref{Old downloads}!
+@newsEnd
+
+
+@newsItem
+@subsubheading March 7, 2005
+LilyPond 2.4.5 is out. This release backports the tieWaitForNote
+feature and has support for tetex-3.0.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading February 28, 2005
+LilyPond 2.5.13 is available for Fedora Core 3. You need to install @uref{http://lilypond.org/download/binaries/Fedora-3/ghostscript-8.15rc3-0.i386.rpm,ESP
+Ghostscript 8.15rc3}. Unfortunately, this version of Ghostscript
+lacks the IJS dynamic library, which means that it will conflict with
+the gimp-print package. You may install it with --nodeps. Use at your
+own risk.  
+@newsEnd
+
+
+@newsItem
+@subsubheading February 28, 2005
+LilyPond 2.5.13 is out. This release has Point and click support for
+PDF output. You can read more about it @uref{http://lilypond.org/doc/v2.5/Documentation/user/out-www/lilypond/Point-and-click.html,here}.
+Take a look at the @ref{Changes}
+file and download @ref{Old downloads}!
+@newsEnd
+
+
+@newsItem
+@subsubheading February 26, 2005
+The @uref{http://lsr.dsi.unimi.it/,Lilypond Snippet
+Repository (LSR)} is a searchable database of Lilypond code
+snippets.  You can add snippets too, so join the LSR project, and
+contribute creative ideas for using Lilypond.  
+@newsEnd
+
+
+@newsItem
+@subsubheading February 21, 2005
+LilyPond 2.5.12 is out. The big news is that this release supports
+TrueType fonts. This means that it is now possible to use @strong{all}
+fonts available via FontConfig. Also, arpeggios may be written out
+using ties and individual objects may have colors!  Take a look at
+the @ref{Changes}
+file and @ref{Old downloads}!
+@newsEnd
+
+
+@newsItem
+@subsubheading February 4, 2005
+LilyPond 2.5.11 is out.  In this
+release, foreign character sets are now supported in lilypond-book
+too, and it is possible to put system separators between systems.
+@ref{Old downloads}!
+@newsEnd
+
+
+@newsItem
+@subsubheading January 31, 2005
+LilyPond 2.5.10 is out. This release
+sports as new EPS backend, based on the PS backend. This backend is
+used in the new and improved lilypond-book script.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 26, 2005
+LilyPond 2.5.9 is out. This release fixes a couple of annoying
+bugs in the direct PS output for piano braces.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 16, 2005
+LilyPond 2.5.8 is out.  This
+release has many internal code cleanups. In addition,
+accuracy of error reporting has been improved.
+See the 
+@uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.3065&content-type=text/vnd.viewcvs-markup,
+change log
+} and @ref{Old downloads}!
+@newsEnd
+
+
+@newsItem
+@subsubheading January 11, 2005
+LilyPond 2.5.7 is out. This release has a completely usable
+Pango integration for the PS backend. The default font is
+Century Schoolbook from the PS font suite.  It also has
+small updates to the tablature settings by Erlend Aasland,
+assorted manual updates by Graham, and an overhaul of the
+font code by Werner. 
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.3048&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading January 02, 2005
+LilyPond 2.5.6 was released. This is a "technology preview"
+release, which means that it has all kinds of nifty
+features, but is not actually usable for producing nicely
+printed scores. For this reason, an RPM of this release was
+not produced. The PS backend is now completely switched over
+to Pango/FontConfig: for -f ps, LilyPond only accepts UTF8
+input, all text fonts are loaded through Pango, the TeX
+backend now offloads all metric computations to LaTeX, the
+SVG and GNOME backends are broken, most probably.
+@ref{Old downloads}
+and check out the
+changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.3013&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading December 28, 2004
+LilyPond 2.5.5 is out. It is the first one to link against
+FontConfig and Pango, although it is only available in the "-f
+ps" output. The default output format has been changed back TeX
+while we stabilize the Pango/FontConfig integration.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev= 1.3000&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading December 20, 2004
+LilyPond 2.5.4 is out. This release has some major
+brainsurgery in the font handling. As of now, LilyPond loads
+the music fonts in OpenType font format using FreeType.
+This has made a lot of things simpler, including font
+handling for the GNOME backend and SVG backend.
+@ref{Old downloads}
+and check out the
+changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2974&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading December 3, 2004
+LilyPond 2.5.3 was released. A new script, `\espressivo' has
+been added, for a combination of crescendo and decrescendo
+on a single note. In markups, expressions stacked with
+`\column', `\center-align', etc, are not grouped with `< ...
+>' anymore, but with `@{ ... @}'. LilyPond will now avoid line
+breaks that cause long texts to stick outside of the page
+staff. Grace notes following a main note, used to be entered
+by letting the grace notes follow a skip in a parallel
+expression.
+@ref{Old downloads}
+and
+check out the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2908&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading November 26, 2004
+LilyPond 2.5.2 was released. It has several goodies,
+including solfa-notation (shaped noteheads), and an easier
+mechanism for customizing title, footer and header
+layout. Don't forget to rebuild the fonts, as they have been
+changed to accomodate the solfa-notation.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2898&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading November 20, 2004
+LilyPond 2.5.1 is out. This is an experimental release,
+containing some proof-of-concept code for our graphical
+layout editor. You can add and remove things from the file,
+and the tweaks will still work, as long as the tweaked notes
+remain in the place (ie. start at the same time-wise and be
+part of the same context). Further attractions are: the
+gnome backend now also draws beams and slurs, updates to the
+SVG backend, support for the lmodern font set for TeX,
+various bugfixes.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2881&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading November 12, 2004
+The LilyPond development is OPEN once again! The first
+release of the 2.5 series has the following new Features:
+Positioning of slurs can now be adjusted manually, Grace
+notes are correctly quoted and formatted when using cue
+notes, Cue notes can now be created with
+@verbatim
+
+\cueDuring #VOICE-NAME #DIRECTION { MUSIC }
+
+@end verbatim
+Stemlets (short stems over beamed rests) have been added.
+In addition, Jan hacked together some highly experimental
+code where you can use the mouse to drag and drop objects in
+the -f gnome backend. These tweaks can be saved and are
+applied to the PS and TeX output as well.
+@ref{Old downloads}
+and check out
+the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2837&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading November 11, 2004
+LilyPond 2.4.2 is out. This release fixes a number of security
+problems with --safe, and adds a lot of polishing fixes.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading November 4, 2004
+LilyPond 2.4.1 is out. This release includes a number of small
+fixes that were made to 2.4.0 last week.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2780.2&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 31, 2004
+LilyPond 2.4.0 was just @uref{announce-v2.4.html,released!}
+This new stable version has support for page-layout,
+completely rewritten slur formatting and many other
+improvements. Read about them in the @ref{Changes}
+file.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading October 29, 2004
+LilyPond 2.3.26 is out. This is another 2.4 release
+candidate. This release fixes a number of minor bugs, and
+some problems with the conversion scripts.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2773&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 29, 2004
+2.3.25 is the final release candidate for Lilypond 2.4.
+Werner has been overhauling the TeX macros and
+lilypond-book. In addition, this release contains an
+important fix for raggedbottom page-layout.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2765&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 27, 2004
+LilyPond 2.3.24 is a further polished 2.4 release candidate.
+This release has more improvements by Werner for the TeX
+backend, and a bunch of other small fixes.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2752&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 24, 2004
+LilyPond 2.3.23 has bugfixes in the documentation, lilypond-book and
+--preview output. This release can be considered as a release
+candidate for LilyPond 2.4.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2742&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 10, 2004
+LilyPond 2.3.22 fixes a bunch more bugs, to make 2.4 a really
+stable release.  In addition, it renames the \paper@{@} block to
+\layout@{@}.  The \bookpaper@{@} block is now called
+\paper@{@}.
+@ref{Old downloads}
+and
+check out the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2709&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 09, 2004
+LilyPond 2.3.21 is out. It is a serious release candidate for
+the next stable release LilyPond. This version has a cleanup
+and some small formatting improvements of the slur
+code.
+@ref{Old downloads}
+and check
+out the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2692&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 02, 2004
+LilyPond 2.3.20 was released. It fixes the biggest problems
+with encoding and the TeX backend. As a result, latin1
+characters (like the german SS) show up correctly in the
+output once again. Also it has the usual bugfixes and updates
+in the documentation.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2674&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 29, 2004
+The LilyPond development team will be present at the @uref{http://www.nluug.nl/events/sane2004/bazaar/index.html,Free
+Software Bazaar} of the NLUUG SANE 2004 conference today.  If you
+are in the neighborhood, drop by for live contact with the Team or
+just a friendly chat. Registration is not required to attend.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 26, 2004
+LilyPond 2.3.19 is out. It's mainly a bugfix release.
+@ref{Old downloads}
+and check out the changes
+in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2652&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 20, 2004
+LilyPond 2.3.18 was released. It has further improvements in
+the slur formatting, and a small syntax change: the mode
+changing commands (`\chords', `\lyrics', etc.)  have been
+renamed to `\chordmode', `\lyricmode', etc. The command
+`\chords' is an abbreviation for \new ChordNames \chordmode
+...  `\drums', `\lyrics', `\chords', `\figures' function
+similarly.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2614&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 11, 2004
+LilyPond 2.3.16 was released. It fixes a couple of annoying
+bugs, and has an important addition in the slur-formatter. Slurs that
+pass note heads much closer than the average distance get an extra
+penalty. This fixes a lot of difficult slurring cases. See
+input/regression/new-slur for some examples.
+Please consider this release as a 3.0 pre-release so try to find as
+many bugs as possible. A report including a small .ly example 
+can be filed at bug-lilypond@@gnu.org
+In this case, a bug is defined as something that the current 2.3 does
+worse than the latest 2.2 release.  We want to be sure that no output
+will get uglier by upgrading to 3.0, so that once 3.0 is out, nothing
+will hold users back in switching.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2562&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 10, 2004
+LilyPond 2.3.15 was released. It fixes for some gaffes with
+the new vertical spacing engine, has lots of documentation
+updates, and has support for landscape output in the direct
+postscript output. Also, the types of events quoted with
+`\quote' can now be tuned with `quotedEventTypes'. By default,
+only notes and rests end up in quotes.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2553&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 6, 2004
+LilyPond 2.3.14 was released and has exciting features!
+LilyPond will try to keep staves at the same distances across a
+page, but it will stretch distances to prevent collisions; key
+signature cancellations are now printed before the bar line;
+different voices that all use "\quote" can now refer to each
+other.
+@ref{Old downloads}
+and check out
+the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2534&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 29, 2004
+LilyPond now has a Documentation
+Editor, Graham Percival. From now on, he will oversee that
+useful information flows from the mailiing list into the
+manual. Also, if there are unclear sections in the manual,
+let him know via one of the mailing lists.
+As a start of his career, he worked to transform the
+"Templates" section of the website into a readable and comprehensive
+chapter of the user manual.
+A lot of cheers for Graham!
+@newsEnd
+
+
+@newsItem
+@subsubheading August 29, 2004
+LilyPond 2.3.13 was released. The new slur code was
+improved, scripts can be made to avoid slurs, by setting
+inside-slur to #f. It is no longer necessary to instantiate
+"up" and "down" staves separately when using
+\autochange. Jurgen Reuter refreshed the logic around
+mensural flags, so they are adjusted for staff lines once
+again.
+@ref{Old downloads}
+and
+check out the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2520&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 24, 2004
+LilyPond 2.2.6 fixes a few minor issues, among others, the
+disappearing metronome mark.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2000.2.33&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 23, 2004
+LilyPond 2.3.12 is out. This release has a lot of fixes and
+a new feature: there is now support for putting two slurs on
+chords, both above and below. This is switched on with the
+`doubleSlurs' property.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2489&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 3, 2004
+LilyPond 2.3.11 is out. This release basically is 2.3.10 with a few
+annoying bugs fixed.
+@ref{Old downloads}
+and check out
+the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2449&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 1, 2004
+LilyPond 2.3.10 is out. This release has a major clean-up of the
+input/test/ directory. Many examples have been moved to the regression
+test or manual, and the superfluous or outdated ones have been
+removed. The directory has gone from 146 examples to 72 examples. That
+means that we're halfway cleaning it out.  Incidentally, the manual
+has gone from 200 to 220 pages. New features:
+@itemize
+@item
+Running trills now have their own spanner and event. They are
+started and stopped with \startTrillSpan and \stopTrillSpan
+@item
+There is a new markup command `\postscript' that takes a string
+that is dumped as verbatim PostScript
+@end itemize
+
+@ref{Old downloads}
+and check out
+the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2435&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 30, 2004
+LilyPond 2.3.9 is out.  The important change is that lilypond
+now once-again directly runs the binary. The old wrapper script has
+been renamed to lilypond-latex.py, and should only be used for legacy
+projects. The recommended route is either using lilypond directly
+(with \book, you can have multiple movements within one document), or
+to run lilypond-book with a LaTeX wrapper file.
+This release also fixes a bunch of small errors.  I now consider
+LilyPond feature complete for a 3.0 release.  Next on the TODO list is
+updating the manual, and after that's done we can release 3.0. The
+projected date for this to happen is in about a month.
+@ref{Old downloads}
+and check out
+the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2416&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 23, 2004
+Lilypond 2.3.8 fixes a few minor bugs in the new slur code,
+and has rewritten support for ledger lines. Now, in tight
+situations, ledger lines will be shortened so they stay
+separate.  This also required a cleanup of the Ambitus
+implementation.
+@ref{Old downloads}
+and check out the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2395&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 19, 2004
+LilyPond 2.3.7 was released and has new exciting features!
+The slur formatting has been rewritten. The new slur code
+works similar to the Beam formatter: scores are assigned for
+all esthetic components of a slur. A large number of
+combinations for begin and end points is then tried out.
+Slurs will now also take into account collisions with staff
+lines, scripts (like staccato and accent) and accidentals. In
+the LilyPond emacs mode, the `|' will now display the current
+beat within the measure.
+@ref{Old downloads}
+and check out the changes in
+the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2383&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 15, 2004
+LilyPond 2.2.5 was released. It has a few bug fixes from
+2.3.x.
+@ref{Old downloads}
+and check
+out the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2000.2.28&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 11, 2004
+An introductory article on LilyPond appeared on @uref{http://www.linuxjournal.com/article.php?sid=7657&mode=thread&order=0,Linux
+Journal}.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 5, 2004
+LilyPond 2.3.6 was released.  This release has more updates
+for the Fret diagram code (thanks, Carl!), fixes a bunch of
+bugs, including a serious one that trashed a lot of beam
+formatting, and was also present in the 2.2 series.
+@ref{Old downloads}
+and check out the changes
+in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2306&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 5, 2004
+LilyPond 2.2.4 was released. It is mainly a bug fix
+release.
+@ref{Old downloads}
+and
+check out the changes in the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2000.2.23&content-type=text/vnd.viewcvs-markup,ChangeLog}.
+@newsEnd
+
+
+@newsItem
+@subsubheading June 25, 2004
+LilyPond 2.3.5 has numerous small bugfixes and cleanups, and
+features more work in the experimental GNOME output
+module. Adventurous hackers can check the instructions at
+scm/output-gnome.scm and try to run
+buildscripts/guile-gnome.sh to see what the fuss is all about.
+Carl Sorensen also provided us with more patches to the
+fret-diagram output. Check out the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2293&content-type=text/vnd.viewcvs-markup,ChangeLog}
+and
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading June 20, 2004
+LilyPond 2.2.3 has a turkish translation and fixes a few minor
+bugs that were reported over the past month. Check out the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2000.2.16&content-type=text/vnd.viewcvs-markup,ChangeLog} for a full description and
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading June 13, 2004
+LilyPond 2.3.4 further improves the output backends. As a
+result, manual page-breaks, multiple output formats and putting
+@code{\score} into markups now works.  Check out the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2242&content-type=text/vnd.viewcvs-markup,ChangeLog}
+and
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading May 31, 2004
+LilyPond 2.3.3 has many internal changes relating to the output
+backend (PostScript) and page-layout. In addition, it contains a few
+bugfixes for recently reported problems.  Check out the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2207&content-type=text/vnd.viewcvs-markup,ChangeLog}
+and
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading May 31, 2004
+LilyPond 2.2.2 is out.  It has a number of small bugfixes, so upgrade
+if any of these errors concern you.  Check out the @uref{http://savannah.gnu.org/cgi-bin/viewcvs/*checkout*/lilypond/lilypond/ChangeLog?rev=1.2000.2.9,ChangeLog}
+or head straight to the
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading May 26, 2004
+LilyPond 2.3.2 is out. This release has a lot of internal
+changes relating to page layout, but also sports experimental
+fret-diagram code.  Check out the @ref{Changes} or head straight to the
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading May 9, 2004
+LilyPond 2.3.1 is out. This release has many new and cool
+features. Check out the @ref{Changes} or head straight to the  
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading May 4, 2004
+Help LilyPond get better, and join in on LilyPond
+development!  This
+@uref{devel/participating/call-for-help.html,call for
+help} was posted on the mailing list a month ago, and we
+are still looking for a Release Meister, Code Janitor,
+Newsletter editor and a Writer for implementation
+Documentation. Of course, any other help is also welcome!
+@newsEnd
+
+
+@newsItem
+@subsubheading May 3, 2004
+LilyPond 2.2.1 has been released. It fixes a handful of bugs.
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading April 17, 2004
+LilyPond 2.2.0 is now available
+on Windows, and should find its way to the Cygwin mirrors
+soon.
+@newsEnd
+
+
+@newsItem
+@subsubheading April 12, 2004
+LilyPond 2.3.0 is the first release
+in the 2.3 cycle.  The focus for 2.3 is page layout, so
+instrumentalists can force parts to have page breaks at sane turning
+points.  This release is @emph{experimental}; expect things to break!
+More info in the @ref{Changes}.  
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading April 8, 2004
+A French article on the new LilyPond
+release appeared on @uref{http://linuxfr.org/2004/04/08/15968.html,linuxfr.org}.
+@newsEnd
+
+
+@newsItem
+@subsubheading April 8, 2004
+Binaries for LilyPond 2.2.0 are available for
+MacOS X, Slackware, Mandrake and Debian Woody.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading April 1, 2004
+LilyPond 2.2.0 is out!  This new stable version has
+completely revamped support for for orchestral score
+formatting, cue notes, font size management, lyric formatting,
+drum notation/playback and document integration. Read about it in
+the @uref{announce-v2.2.html,announcement} or skip to the
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 31, 2004
+LilyPond 2.1.37 has build fixes for Cygwin and SUSE,
+bugfixes for part-combining and chord tremolos and even more
+documentation polish.  This should be the final release
+candidate; expect only regression bugs to be fixed before
+2.2.  
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 30, 2004
+LilyPond 2.1.36 has many fixes in
+the user manual. 
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 28, 2004
+LilyPond 2.1..35 fixes a slew of
+bugs, and has the @code{raggedlast} option, which causes
+paragraph like line breaking for scores. More info in the
+@ref{Changes}.  
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading March 22, 2004
+LilyPond 2.1.34 fixes minor bugs, and has more rewriting.
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 21, 2004
+LilyPond 2.1.33 fixes a serious bug, and a few other
+irritations.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading March 20, 2004
+LilyPond 2.1.32 has more rewriting
+in the user manual. There is also an experimental
+implementation of optimal page breaking (Postscript backend
+only).
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 15, 2004
+LilyPond 2.1.31 is out.  It has fixes the alignment of bass
+figures and spurious dynamic warnings in MIDI. New
+attractions include rewritten font-selection routines.  See
+the
+@ref{Changes} and
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 14, 2004
+The
+@uref{http://linuxmusician.com/index.php?option=articles&task=viewarticle&artid=10,linuxmusician.com interview} made the
+@uref{http://slashdot.org/article.pl?sid=04/03/13/2054227&mode=thread&tid=141&tid=188,slashdot
+frontpage!}.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 11, 2004
+@uref{http://linuxmusician.com,linuxmusician.com} is
+running an
+@uref{http://linuxmusician.com/index.php?option=articles&task=viewarticle&artid=10,interview}
+with Han-Wen Nienhuys and Jan Nieuwenhuizen, the main
+authors of LilyPond.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 11, 2004
+LilyPond 2.1.30 has editorial fixes for the manual, and
+experimental support for page layout in the PostScript
+backend.  See the
+@ref{Changes} and
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading March 9, 2004
+LilyPond 2.1.29 fixes a couple of MIDI bugs, and has
+experimental support for producing titles with
+@code{markup}.
+@newsEnd
+
+
+@newsItem
+@subsubheading February 29, 2004
+In LilyPond 2.1.28 Scheme property functions may be used
+argument to @code{set!}.  In addition, parts of the manual
+have been proofread and corrected in this release.  See the
+@ref{Changes} and
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading February 24, 2004
+LilyPond 2.1.27 takes into account instrument transpositions
+when quoting other voices. This release also fixes a number
+of lyrics related bugs. See the
+@ref{Changes} and
+@ref{Old downloads}.
+@newsEnd
+
+
+@newsItem
+@subsubheading February 23, 2004
+LilyPond 2.1.26 has a new, experimental feature for quoting
+other voices in instrumental parts. This can be used to
+produce cue notes.  More information in the
+@ref{Changes}.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading February 18, 2004
+LilyPond 2.1.25 fixes many bugs, and changes the conventions
+for altering accidental rules.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading February 16, 2004
+LilyPond 2.1.24 has a big
+internal rewrite. One of its practical consequences is that
+@code{\with} now also works with @code{Score}
+contexts. Further 2.1.23, which was not announced here,
+fixes a few bugs caused by the change of @code{\property}
+syntax and has updates in the Program Reference document.
+More information in the
+@ref{Changes}.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading February 13, 2004
+LilyPond 2.1.22 has a
+simplification of the @code{\property} syntax: it is
+shorter and more consistent now.  More information in the
+@ref{Changes}.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading February 12, 2004
+In LilyPond 2.1.21, output
+tweaks can be done at multiple levels of the context
+hierarchy.  In addition, it has a bunch of bugfixes,
+improvements in the documentation.  More information in the
+@ref{Changes}. 
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading February 9, 2004
+LilyPond 2.1.20  has MIDI
+output for drums.  It also sports a completely rewritten
+lilypond-book script, which is cleaner, shorter, and faster.
+It also has a large number of bugfixes.
+More information in the
+@ref{Changes}. 
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading February 5, 2004
+LilyPond 2.1.19 has rewritten
+support for drum notation. This release also makes some
+long-standing cleanups: the removal of @code{Thread} (all
+functionality is now moved into @code{Voice}) and Lyrics
+(functionality moved to @code{LyricsVoice})  context.
+More information in the
+@ref{Changes}. 
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading February 4, 2004
+LilyPond 2.1.18 is out. This
+release has the new part-combiner installed by default, and a
+similar implementation of @code{autochange}.  More information
+in the
+@ref{Changes}. 
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@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
+information in the
+@ref{Changes}. 
+@newsEnd
+
+
+@newsItem
+@subsubheading January 28, 2004
+LilyPond 2.1.16 is out; its main feature
+is that it fixes the autobeams gaffe of 2.1.15.  The part-combiner
+has been tested successfully on larger pieces. In the near future,
+expect more part-combining eye-candy.
+More information in
+the
+@ref{Changes}. 
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 26, 2004
+LilyPond 2.1.15 further improves the part-combiner, and fixes many
+bugs, among others in pedal brackets and finger positioning.
+More information in
+the
+@ref{Changes}. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 21, 2004
+LilyPond 2.1.14
+has the first release of the new part combiner. If you have scores that
+use part-combining, please consider giving it a test-run. In addition
+many bugs relating to mixed staff sizes have been fixed.
+More information in
+the
+@ref{Changes}. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 20, 2004
+The lilypond.org domain has been moved to a new server. This
+will result in better connectivity and more bandwidth.  Due
+to security concerns, the new server  does not offer FTP
+access, but only HTTP downloads.
+@newsEnd
+
+
+@newsItem
+@subsubheading January 20, 2004
+LilyPond 2.1.13  fixes a small but
+nasty bug in side-positioning placement, and some bugs in
+tuplet, tie and accidental formatting. This release contains
+rudimentary work on a new part-combiner.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 19, 2004
+LilyPond 2.1.12 fixes many bugs
+and improves formatting of ottava brackets.  More information in
+the
+@ref{Changes}. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 18, 2004
+LilyPond 2.1.11 is now also
+available for Windows!  For downloading, go
+@uref{http://www.inf.bme.hu/~berti/lilypond/,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading January 17, 2004
+In 2.1.11, the mechanism for
+setting staff size and page is much simplified. In addition
+there are improvements in the notehead shape, and there is
+balloon help!
+More information in the
+@ref{Changes}. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 16, 2004
+LilyPond 2.1.10 has a load of
+bugfixes and a shorter syntax for octave checks. More
+information in the
+@ref{Changes}. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 13, 2004
+LilyPond 2.1.9 has a new mechanism
+for adding lyrics to melodies. It is now possible to have
+different melismatic variations for each stanza.  More
+information in the
+@ref{Changes}. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 9, 2004
+LilyPond 2.1.8 has an important new
+feature: it is now possible to use @code{\property} to tune
+the appearance of spanning objects like @code{StaffSymbol} and
+@code{SystemStartBrace}.  In addition, contexts may be
+modified with @code{\remove} and @code{\consists} for
+individual music expressions.
+More information in the
+@ref{Changes}. @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 7, 2004
+An update to the stable branch,
+version 2.0.2, was released today. It contains a couple of
+minor bugfixes.  @ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading January 6, 2004
+LilyPond 2.1.7 continues to
+improve the layout of the Schubert test piece; this release
+focuses on dot placement and multi measure rests centering.
+More information in the
+@ref{Changes} and download @uref{install/#2.1,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading January 4, 2004
+LilyPond 2.1.6 continues to
+improve the layout of  lyrics.  More
+information in the
+@uref{@@DOC@@v2.1/Documentation/topdocs/out-www/NEWS.html,release
+notes} and download @uref{install/#2.1,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading January 2, 2004
+in LilyPond 2.1.5, the lyric
+alignment is completely revamped, and now matches my Edition
+Peters version of the Schubert song S&auml;ngers Morgen.  More
+information in the
+@ref{Changes} and download @uref{install/#2.1,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading December 30, 2003
+LilyPond 2.1.4 is released. Font shapes and linethickness
+are now truly different for different staff sizes, thus lending
+an engraved look to scores printed in smaller type too. See the
+@ref{Changes} and download @uref{install/#2.1,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading December 23, 2003
+LilyPond 2.1.3 released.
+Interpreting and formatting is now done while parsing the
+file. This allows for Scheme manipulation of music, and could
+be used to implement experimental MusicXML output (volunteers
+to implement this are welcome!)  See the
+@ref{Changes} and download @uref{install/#2.1,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading December 17, 2003
+LilyPond 2.1.2 released. This
+release has a new mechanism for setting font sizes, which
+combines different font design sizes and continuous font
+scaling. See the
+@ref{Changes} and download @uref{install/#2.1,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading December 16, 2003
+LilyPond 2.1.1 released. This
+release wraps together all the small fixes made during
+Han-Wen's absence. See the
+@ref{Changes} and download @uref{install/#2.1,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 11, 2003
+LilyPond 2.1.0 released. See the
+@ref{Changes} and
+download @uref{install/#2.1,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 11, 2003
+LilyPond 2.0.1  binaries for Mandrake 9.1
+available from
+@uref{http://rpm.nyvalls.se/sound9.1.html,here}
+thanks to Heikki Junes.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 9, 2003
+LilyPond 2.0.1  binaries for Slackware 9
+available from @uref{install/#2.0,here},
+thanks to Ricardo Hoffman.
+@newsEnd
+
+
+@newsItem
+@subsubheading October 5, 2003
+LilyPond 2.0.1 binaries are available for Macos X, many thanks to
+Matthias Neeracher.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading October 4, 2003
+LilyPond 2.0.1 binaries are available for Windows (Cygwin
+version 1.5).  
+@ref{Old downloads}.  Thanks to Bertalan
+Fodor, our new Cygwin maintainer!
+@newsEnd
+
+
+@newsItem
+@subsubheading September 29, 2003
+LilyPond 2.0.1 is released. It
+contains minor bugfixes.
+See the @ref{Changes}
+or download @uref{install/#2.0,here} directly.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 27, 2003
+PlanetCCRMA has been updated to include LilyPond 2.0. Go
+@uref{http://www-ccrma.stanford.edu/planetccrma/software/soundapps.html#lilypond,
+here} to download.  Thanks to Fernando Pablo
+Lopez-Lezcano!
+@newsEnd
+
+
+@newsItem
+@subsubheading September 24, 2003 
+LilyPond 2.0.0 is released. The
+focus of this release is cleanups of the syntax: entering music is
+now much easier and more efficient. Read the announcement
+@uref{announce-v2.0.html,here}, or go to the
+@uref{install/#2.0,download page} directly.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 24, 2003
+LilyPond 1.9.10 is released. This is
+the final LilyPond 2.0 release candidate. Check
+the @ref{Changes} and
+download @uref{install/,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 23, 2003
+LilyPond 1.9.9 is released. This is
+the second LilyPond 2.0 prerelease. Check
+the @ref{Changes} and
+download @uref{install/,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 19, 2003
+LilyPond 1.9.8 is released. This is
+the first LilyPond 2.0 prerelease. Check
+the @ref{Changes} and
+download @uref{install/,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading September 17, 2003
+LilyPond 1.9.7 is released. LilyPond
+now has support for quarter tone accidentals!
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading September 16, 2003
+LilyPond 1.9.6 is released.
+It has a lot of minor fixes and updates.
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading September 10, 2003
+LilyPond 1.9.5 is released.
+With this release, the 1.9 branch is feature
+complete. After some stabilization and documentation work, 2.0
+will be available in a few weeks. 
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading September 9, 2003
+LilyPond 1.8.2 is released. This
+release fixes a couple of minor bugs. 
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading September 7, 2003
+LilyPond 1.8 binaries are available
+for Windows (Cygwin version 1.5). 
+@ref{Old downloads}
+@newsEnd
+
+
+@newsItem
+@subsubheading August 31, 2003
+LilyPond 1.9.4 is released.
+@emph{This is an experimental release}: read the
+@uref{http://mail.gnu.org/archive/html/lilypond-devel/2003-08/msg00133.html,announcement}
+before trying.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 31, 2003
+LilyPond 1.8 binaries for slackware
+available. Get them @uref{install/,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 31, 2003
+LilyPond 1.9.3 is released.  This
+release supports tagging for music version control, and has better
+fingering placement flexibility.  Read the
+@ref{Changes} and get it @uref{download#1.9,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 28, 2003
+LilyPond 1.9.2 is released. Read the
+@ref{Changes} and get it
+@uref{download#1.9,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 26, 2003
+LilyPond 1.9.1 is released. Read the
+@ref{Changes} and get it
+@uref{download#1.9,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 25, 2003
+The  LilyPond 1.9 development release is available. Read the
+@ref{Changes} and get it
+@uref{download#1.9,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 25, 2003
+Mandrake 9.1 RPMS available, get them
+@uref{http://rpm.nyvalls.se/sound9.1.html,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 21, 2003
+LilyPond 1.8.1 was released. Get it @uref{install/,here}, or
+read the @ref{Changes}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 18, 2003
+PlanetCCRMA (eg. RedHat 8 and 9)
+has been updated to 1.8.
+Download @uref{http://www-ccrma.stanford.edu/planetccrma/software/soundapps.html#lilypond,here.}
+@newsEnd
+
+
+@newsItem
+@subsubheading August 7, 2003
+LilyPond 1.8 is released.  Read
+@ref{Changes} and get it @uref{install/,here}.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 7, 2003
+New website went live!
+@newsEnd
+
+
+@newsItem
+@subsubheading August 6, 2003
+Announced new website.
+@newsEnd
+
+
+@newsItem
+@subsubheading August 1, 2003
+LilyPond 1.7.30 released.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 30, 2003
+Website: present @uref{about/automated-engraving/index.html,treatise}
+about music engraving, music printing software, and LilyPond's
+unique faculties.
+@newsEnd
+
+
+@newsItem
+@subsubheading July 29, 2003
+1.7.29 - release candidate 4 has been released.  Packages for
+Red Hat, Debian, Cygwin are @uref{install/,available}.
+@newsEnd
+
index 80ab58f598468bf6ba3ae90b29220c4ac668ae01..40146a19aae286ac60bdad41e53eec0644553697 100644 (file)
@@ -6,7 +6,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.12.0"
+@c \version "2.13.4"
 
 @c Translators: Ludovic Sardain, John Mandereau
 @c Translation checkers: Jean-Charles Malahieude, Jean-Yves Baudais, Damien Heurtebise
@@ -359,7 +359,7 @@ fragment = {
 <<
    \new Staff \fragment
    \new Staff \with {
-      \override Beam #'thickness = #0.3
+      \override Beam #'beam-thickness = #0.3
       \override Stem #'thickness = #0.5
       \override Bar #'thickness = #3.6
       \override Tie #'thickness = #2.2
@@ -399,7 +399,7 @@ musique.
   \set autoBeaming = ##f
   \time 2/4
   <d f g>4
-  \once \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
+  \once \override NoteHead #'stencil = #note-head::brew-ez-stencil
   \once \override NoteHead #'font-size = #-7
   \once \override NoteHead #'font-family = #'sans
   \once \override NoteHead #'font-series = #'bold
@@ -814,7 +814,7 @@ plus exotiques :
       \key c \minor
       \set subdivideBeams = ##f
       \override Stem  #'french-beaming = ##t
-      \override Beam  #'thickness = #0.3
+      \override Beam  #'beam-thickness = #0.3
       \override Stem  #'thickness = #4.0
       g'16[ b16 fis16 g16]
       << \makeClusters {
index 5e3bb175b693f2648b919eddea536ee0b23f6610..0a2a23966de02128f8596e9179fe2dea54e405ac 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-   Translation of GIT committish: 95e6825ee09ca7f8eea87580301c8819ff1d571b
+   Translation of GIT committish: 35dc92475b9341fbbbaf194afcc2c6e2561840ac
 
    When revising a translation, copy the HEAD committish of the
    version that you are working on.  See TRANSLATION for details.
@@ -645,6 +645,7 @@ facilement.
 
 @menu
 * La musique déborde de la page::
+* Apparition d'une portée supplémentaire::
 * Erreur renvoyant à ../ly/init.ly::
 * Message d'erreur « Unbound variable % »::
 @end menu
@@ -676,6 +677,61 @@ insérer des barres de mesure invisibles là où vous souhaitez positionner
 un saut de ligne.  Consultez le chapitre @ruser{Barres de mesure} pour
 plus de détails. 
 
+
+@node Apparition d'une portée supplémentaire
+@unnumberedsubsubsec Apparition d'une portée supplémentaire
+@translationof An extra staff appears
+
+Lorsque les contextes ne sont pas créés explicitement par la commande
+@code{\new}, ils le seront si la commande à exécuter n'est pas censée
+s'appliquer au contexte en cours.  Pour des partitions simples, les fait
+que les contextes soient automatiquement créés rend bien des services,
+et c'est d'ailleurs le cas pour la majorité des exemples contenus dans
+les manuels de LilyPond.  Cependant, la création implicite d'un contexte
+peut aboutir à l'apparition d'une portée @qq{parasite}.  On s'attend par
+exemple, en lisant le code qui suit, à ce que toutes les têtes de notes
+soient en rouge, alors que le résultat nous présente deux portées et que
+les notes, placées sur la portée inférieure, restent en noir.
+
+@lilypond[quote,verbatim,relative=2]
+\override Staff.NoteHead #'color = #red
+\new Staff { a }
+@end lilypond
+
+Étant donné qu'aucun contexte @code{Staff} n'existe lorsque la
+dérogation est introduite, LilyPond le crée implicitement pour lui
+appliquer la directive considérée.  Survient alors la commande
+@w{@code{\new Staff}} qui, à son tour, crée une nouvelle portée pour
+contenir les notes qui suivent.  Voici la syntaxe correcte pour obtenir
+ces notes en rouge :
+
+@lilypond[quote,verbatim,relative=2]
+\new Staff {
+  \override Staff.NoteHead #'color = #red
+  a
+}
+@end lilypond
+
+Autre exemple : la présence d'une commande @code{\relative} à
+l'intérieur d'une section @code{\repeat} génèrera obligatoirement une
+portée intempestive.  Cela tient au fait que la commande @code{\repeat}
+va créer deux blocs @code{\relative} qui, chacun à leur tour, créeront
+implicitement un bloc @code{Staff} assorti d'un bloc @code{Voice}.
+
+@lilypond[quote,verbatim]
+\repeat unfold 2 \relative { c d e f }
+@end lilypond
+
+La manière adéquate de procéder consiste à inverser les commandes
+@code{\repeat} et @code{\relative}, comme ceci :
+
+@lilypond[quote,verbatim]
+\relative {
+  \repeat unfold 2 { c d e f }
+}
+@end lilypond
+
+
 @node Erreur renvoyant à ../ly/init.ly
 @unnumberedsubsubsec Erreur renvoyant à @code{../ly/init.ly}
 @translationof Apparent error in ../ly/init.ly
index 9180519f028c29bf67fe41605df034a77bc2fd46..b06d76f8431e4520e3d568a9b051a82934ee6e7b 100644 (file)
 @ref{\TEXT\,,\DISPLAY\,notation-big-page,Manuel de notation}
 @end macro
 
+@macro ressay{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,essay-big-page,Essay}
+@end macro
+
+@macro ressaynamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,essay-big-page,Essay}
+@end macro
+
 @macro rprogram{TEXT}
 @vindex \TEXT\
 @ref{\TEXT\,,,application-big-page,Manuel d'utilisation du programme}
 @ref{\TEXT\,,\DISPLAY\,notation,Manuel de notation}
 @end macro
 
+@macro ressay{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,essay,Essay}
+@end macro
+
+@macro ressaynamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@end macro
+
 @macro rprogram{TEXT}
 @vindex \TEXT\
 @ref{\TEXT\,,,application,Manuel d'utilisation du programme}
 @ref{\TEXT\,,\DISPLAY\,notation.fr,Manuel de notation}
 @end macro
 
+@macro ressay{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,lilypond-essay,Essay}
+@end macro
+
+@macro ressaynamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,lilypond-essay,Essay}
+@end macro
+
 @macro rprogram{TEXT}
 @lilyvindex{\TEXT\}
 @ref{\TEXT\,,,application.fr,Manuel d'utilisation du programme}
index 68ca72a3cdeb1ebb92ebb2c412883952db9c31d1..8f1162b8e901c9948488651931afb59409b991b0 100644 (file)
@@ -1,13 +1,13 @@
 \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-    Translation of GIT committish: 6f84d7b264bf1faa8d9c586bbf06c762ae53183a
+    Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
 @documentencoding UTF-8
-@setfilename lilypond.info
+@setfilename lilypond-notation.info
 @settitle GNU LilyPond -- Manuel de notation
 
 @include macros.itexi
@@ -30,7 +30,7 @@
 
 @ifnottex
 @node Top
-@top GNU LilyPond --- Manuel d'initiation
+@top GNU LilyPond --- Manuel de notation
 @translationof Top
 @end ifnottex
 
@@ -160,16 +160,17 @@ ligne de ce manuel, ainsi qu'une documentation supplémentaire.
 
 Annexes
 
-* Bibliographie::                ouvrages de référence sur la notation musicale.
 * Tables du manuel de notation::         tables et diagrammes.
 * Aide-mémoire::                    résumé de la syntaxe de LilyPond.
+* LilyPond grammar::               diagramme syntaxique pour l'analyseur de LilyPond
 * GNU Free Documentation License:: licence de ce document.
 * Index des commandes LilyPond::
 * Index de LilyPond::
-
 @end menu
 @end ifnottex
 
+@c * Bibliographie::                ouvrages de référence sur la notation musicale.
+
 @contents
 
 
@@ -183,21 +184,42 @@ Annexes
 @include notation/programming-interface.itely
 
 
-@include notation/literature.itely
+@c @include notation/literature.itely
 @include notation/notation-appendices.itely
 @include notation/cheatsheet.itely
+
+@node LilyPond grammar
+@appendix LilyPond grammar
+
+Cette annexe présente la « grammaire » de LilyPond telle qu'elle ressort
+de l'analyseur syntaxique.
+
+@verbatiminclude ly-grammar.txt
+
 @include fdl.itexi
 
 @node Index des commandes LilyPond
 @appendix Index des commandes LilyPond
 @translationof LilyPond command index
 
+Cet index recense toutes les commandes et mots réservés de LilyPond,
+sous forme de lien vers les endroits du manuel où ils sont abordés.
+Chaque lien est constitué de deux parties : la première pointe
+directement là où la commande ou le terme apparaît, la seconde au début
+de la section où la commande ou le terme est abordé. 
+
 @printindex ky
 
 @node Index de LilyPond
 @appendix Index de LilyPond
 @translationof LilyPond index
 
+En plus des commandes et mots réservés de LilyPond, cet index recense
+les termes musicaux qui s'y rapportent.  Tout comme dans l'index des
+commandes, chaque lien est constitué de deux parties : la première
+pointe directement là où la commande ou le terme apparaît, la seconde au
+début de la section où la commande ou le terme est abordé. 
+
 @printindex cp
 
 @bye
index d32bd94d3a6669c728fcbf28d9d491ae0b69c955..d2aa73788f2f3c241ff293f7443a7ceeca419a7f 100644 (file)
@@ -1,6 +1,6 @@
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-    Translation of GIT committish: 33ba8d40c3493011a4b39ab8b1369701f8013bd6
+    Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -8,7 +8,7 @@
 
 @c \version "2.12.0"
 
-@c Translators: Valentin Villenave
+@c Translators: Valentin Villenave, Jean-Charles Malahieude
 @c Translation checkers: Jean-Charles Malahieude, John Mandereau
 
 
@@ -29,6 +29,9 @@
 @subsection Indications attachées à des notes
 @translationof Attached to notes
 
+Nous allons voir au cours de ces lignes comment ajouter aux notes des
+indications d'interprétation -- articulation, ornementation, nuances --
+et aborderons la manière de générer vos propres signes.
 
 @menu
 * Articulations et ornements::               
 @cindex articulations
 @cindex symboles d'ornementation
 @cindex ornementation, symboles
-
-
-Différents symboles peuvent être ajoutés au-dessus ou au-dessous des
-notes pour indiquer des ponctuations ou des modes de jeu différents.
-On les ajoute à chaque note au moyen d'un tiret suivi du caractère
-correspondant à l'articulation désirée.  En voici une démonstration :
-
-@c @l ilypondfile[quote,ragged-right]{script-abbreviations.ly}
-
-Il est possible de changer la signification de ces raccourcis : voir des
-exemples dans @file{ly/@/script@/-init@/.ly}.
-
-Même si LilyPond place automatiquement ces symboles, il est possible de
-l'obliger à les placer au-dessus ou en-dessous de la note, tout comme
-d'autres objets, en utilisant respectivement @code{^} et @code{_}.
-
-@lilypond[quote,ragged-right,fragment,verbatim]
-c''4^^ c''4_^
-@end lilypond
-
-On peut ajouter d'autres symboles, avec la syntaxe
-@var{note}@code{\}@var{symbole}.  Ici encore, on peut forcer leur
-orientation avec @code{^} and @code{_}.
-
-@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
-c\fermata c^\fermata c_\fermata
-@end lilypond
-
 @cindex accent
 @cindex marcato
 @cindex staccatissimo
@@ -80,8 +55,7 @@ c\fermata c^\fermata c_\fermata
 @cindex staccato
 @cindex portato
 @cindex tenuto
-@cindex tirer l'archet
-@cindex pousser l'archet
+@cindex coup d'archet
 @cindex bouché
 @cindex sourdine
 @cindex orgue, marque de pédale d'
@@ -97,40 +71,80 @@ c\fermata c^\fermata c_\fermata
 @cindex coda
 @cindex varcoda
 
+@funindex -
 
-Voici la liste exhaustive des symboles :
+Les différents symboles qui indiquent des ponctuations ou des modes de
+jeu différents s'ajoutent aux notes de la manière suivante :
 
-@lilypondfile[ragged-right,quote]{script-chart.ly}
+@example
+@var{note}\@var{nom}
+@end example
+Les valeurs de @var{nom} sont répertoriées dans l'annexe 
+@ref{Liste des signes d'articulation}. En voici un exemple :
 
-@commonprop
+@lilypond[verbatim,quote,relative=2]
+c4\staccato c\mordent b2\turn
+c1\fermata
+@end lilypond
 
-Les symboles s'ordonnent verticalement suivant la propriété
-@code{script-priority}. Plus sa valeur numérique est faible, plus le
-symbole sera proche de la note. Dans l'exemple suivant, l'objet
-@rinternals{TextScript} --- le dièse --- a d'abord la propriété la
-plus basse, et il est donc placé plus près de la note ; ensuite c'est
-l'objet @rinternals{Script} qui a la propriété la plus basse, et il se
-place alors sous le dièse.  Lorsque deux objets ont la même priorité,
-c'est l'ordre dans lequel ils sont indiqués qui détermine lequel sera
-placé en premier.
+@cindex marcato
+@cindex tenuto
+@cindex staccatissimo
+@cindex accent
+@cindex staccato
+@cindex portato
 
-@lilypond[verbatim,relative=3,ragged-right,fragment,quote]
-\once \override TextScript #'script-priority = #-100
-a4^\prall^\markup { \sharp }
+Certains signes d'articulation disposent d'un raccourci.  On les ajoute
+à chaque note au moyen d'un tiret suivi du caractère correspondant à
+l'articulation désirée.  C'est entre autres le cas pour
+@notation{marcato}, @notation{stopped}, @notation{tenuto},
+@notation{staccatissimo}, @notation{accent}, @notation{staccato}, et
+@notation{portato}, comme l'illustre l'exemple ci-dessous.
 
-\once \override Script #'script-priority = #-100
-a4^\prall^\markup { \sharp }
+@lilypond[verbatim,quote,relative=2]
+c4-^  c-+  c--  c-|
+c4->  c-.  c2-_
 @end lilypond
 
+Même si LilyPond place automatiquement ces symboles, selon les règles
+contenues dans le fichier @code{scm/@/script@/.scm}, il est possible de
+l'obliger à les positionner au-dessus ou en-dessous de la note, comme
+indiqué au chapitre @ref{Direction et positionnement}.
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{modifying-default-values-for-articulation-shorthand-notation.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{controlling-the-vertical-ordering-of-scripts.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{creating-a-delayed-turn.ly}
 
 @seealso
-Référence du programme : @rinternals{Script}.
+Glossaire musicologique :
+@rglos{tenuto},
+@rglos{accent},
+@rglos{staccato},
+@rglos{portato}.
 
+Manuel de notation :
+@ref{Direction et positionnement},
+@ref{Liste des signes d'articulation},
+@ref{Trilles}.
 
-@knownissues
+Fichiers installés :
+@code{scm/script.scm}.
 
-Ces symboles sont présents sur la partition imprimée, mais
-n'ont pas d'effet sur le rendu de la musique en MIDI.
+Morceaux choisis :
+@rlsr{Expressive marks}.
+
+Référence des propriétés internes :
+@rinternals{Script},
+@rinternals{TextScript}.
 
 
 @node Nuances
@@ -138,174 +152,223 @@ n'ont pas d'effet sur le rendu de la musique en MIDI.
 @translationof Dynamics
 
 @cindex nuances
+
+@funindex \ppppp
+@funindex ppppp
 @funindex \pppp
+@funindex pppp
 @funindex \ppp
+@funindex ppp
 @funindex \pp
+@funindex pp
 @funindex \p
+@funindex p
 @funindex \mp
+@funindex mp
 @funindex \mf
+@funindex mf
 @funindex \f
+@funindex f
 @funindex \ff
+@funindex ff
 @funindex \fff
+@funindex fff
 @funindex \ffff
+@funindex ffff
 @funindex \fp
+@funindex fp
 @funindex \sf
+@funindex sf
 @funindex \sff
+@funindex sff
 @funindex \sp
+@funindex sp
 @funindex \spp
+@funindex spp
 @funindex \sfz
+@funindex sfz
 @funindex \rfz
+@funindex rfz
 
 À chaque nuance absolue correspond une commande, qui peut être indiquée
-après une note : @code{c4\ff} par exemple.  Les commandes de nuances
+après une note : @code{c4\ff} par exemple.  Les commandes de nuance
 disponibles sont @code{\ppppp}, @code{\pppp}, @code{\ppp}, @code{\pp},
-@code{\p}, @code{\mp}, @code{\mf}, @code{\f}, @code{\ff}, @code{\fff},
-@code{\ffff}, @code{\fp}, @code{\sf}, @code{\sff}, @code{\sp},
-@code{\spp}, @code{\sfz}, et @code{\rfz}.
-
-@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
-c\ppp c\pp c \p c\mp c\mf c\f c\ff c\fff
-c2\fp c\sf c\sff c\sp c\spp c\sfz c\rfz
+@code{\p}, @code{\mp}, @code{\mf}, @code{\f}, @code{\ff}, @code{\fff}, 
+@code{\ffff}, @code{\fffff}, @code{\fp}, @code{\sf}, @code{\sff}, 
+@code{\sp}, @code{\spp}, @code{\sfz}, et @code{\rfz}.  Les nuances se
+placent aussi bien en dessous qu'au-dessus de la portée ; pour plus
+d'information, consultez @ref{Direction et positionnement}.
+
+@lilypond[verbatim,quote,relative=2]
+c2\ppp c\mp
+c2\rfz c^\mf
+c2_\spp c^\ff
 @end lilypond
 
+@cindex soufflet
+@cindex crescendo
+@cindex decrescendo
+@cindex diminuendo
+
 @funindex \<
 @funindex \>
 @funindex \!
+@funindex \cr
+@funindex cr
+@funindex \decr
+@funindex decr
 
 Un crescendo est délimité par @code{\<} et @code{\!}, ou peut se
 terminer par une commande de nuance.  Au lieu de @code{\<}
-ou @code{\>}, on peut aussi utiliser @code{\cr} et @code{\decr}.
-Ces indications sont attachées aux notes ; aussi si l'on veut
-faire se succéder plusieurs nuances pendant une note tenue, il faudra
-avoir recours à des silences invisibles :
+ou @code{\>}. 
 
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-c\< c\! d\> e\!
-<< f1 { s4 s4\< s4\! \> s4\! } >>
+@lilypond[verbatim,quote,relative=2]
+c2\< c\!
+d2\< d\f
+e2\< e\>
+f2\> f\!
+e2\> e\mp
+d2\> d\>
+c1\!
 @end lilypond
 
-@noindent
-En principe, un soufflet --- (de)crescendo imprimé sous forme graphique --
-commence au bord gauche de la note de départ, et se termine au
-bord droit de la note d'arrivée.  Cependant, si la note d'arrivée
-est sur un premier temps, le soufflet s'arrêtera au niveau de la
-barre de mesure qui la précède.  Ce comportement peut être annulé
-en assignant @emph{faux} (lettre @q{f}) à la propriété
-@code{hairpinToBarline} :
-
-@c TODO: Add link to new snippet for #'to-barline
+Ces indications sont attachées aux notes ; aussi si l'on veut
+faire se succéder plusieurs nuances pendant une note tenue, il faudra
+avoir recours à des silences invisibles :
 
-On peut avoir recours à l'indication @code{\espressivo} pour indiquer un
-crescendo puis un decrescendo sur une seule note.
+@cindex nuances successives sur une note tenue
+@cindex tenue et nuances successives
 
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-c2 b4 a g1\espressivo
+@lilypond[verbatim,quote,relative=2]
+c4\< c\! d\> e\!
+<< f1 { s4 s4\< s4\> s4\! } >>
 @end lilypond
 
-Cependant, ces deux indications graphiques peuvent se trouver très
-comprimées horizontalement.  Pour les rallonger, on peut modifier la
-propriété @code{minimum-length} de
-@code{Voice.Hairpin} --- @rinternals{Voice}
-étant le contexte, et @rinternals{Hairpin} l'objet affecté. Par
-exemple :
-
-@example
-\override Voice.Hairpin #'minimum-length = #5
-@end example
+@cindex espressivo 
 
-@cindex al niente
-@cindex niente, al
+@funindex \espressivo
+@funindex espressivo
 
-Des crescendos ou decrescendos @emph{al niente} peuvent être indiqués de
-manière graphique, en assignant @emph{vrai} (lettre @q{t}) à la
-propriété @code{circled-tip}, ce qui affiche un cercle à leur extrémité.
+On peut avoir recours à l'indication @code{\espressivo} pour indiquer un
+crescendo suivi d'un decrescendo sur une même note.
 
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
-\override Hairpin #'circled-tip = ##t
-c2\< c\!
-c4\> c\< c2\!
+@lilypond[verbatim,quote,relative=2]
+c2 b4 a 
+g1\espressivo
 @end lilypond
 
-
-@cindex crescendo
-@cindex decrescendo
-@cindex diminuendo
-
-Au lieu d'une notation graphique des crescendos, on peut utiliser
-une notation textuelle.
-
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
+@funindex \crescTextCresc
+@funindex crescTextCresc
+@funindex \dimTextDecresc
+@funindex dimTextDecresc
+@funindex \dimTextDecr
+@funindex dimTextDecr
+@funindex \dimTextDim
+@funindex dimTextDim
+@funindex \crescHairpin
+@funindex crescHairpin
+@funindex \dimHairpin
+@funindex dimHairpin
+
+
+
+Au lieu d'une notation graphique des (de)crescendos, on peut utiliser
+une notation textuelle.  Une ligne pointillée marque alors son étendue.
+Sont disponibles les commandes @code{\crescTextCresc},
+@code{\dimTextDecresc}, @code{\dimTextDecr}, et @code{\dimTextDim}.
+@code{\crescHairpin} et @code{\dimHairpin} permettent de revenir à des
+nuances en soufflet
+
+@lilypond[verbatim,quote,relative=2]
 \crescTextCresc
-c\< d e f\!
-\crescHairpin
-e\> d c b\!
+c2\< d | e f\!
 \dimTextDecresc
-c\> d e f\!
-\dimTextDim
-e\> d c b\!
+e2\> d | c b\!
+\crescHairpin
+c2\< d | e f\!
+\dimHairpin
+e2\> d\!
 @end lilypond
 
-On peut même définir ses propres indications textuelles :
+Pour créer des indications de nuance qui restent alignées
+avec les nuances habituelles, voir 
+@ref{Personnalisation des indications de nuance}.
 
-@lilypond[quote,ragged-right,fragment,relative=1,verbatim]
-\set crescendoText = \markup { \italic "cresc. poco" }
-\set crescendoSpanner = #'text
-a'2\< a a a\!\mf
-@end lilypond
+@cindex dynamics, vertical positioning
+@cindex vertical positioning of dynamics
+
+@funindex DynamicLineSpanner
 
-Pour créer des indications de nuances qui restent alignées
-avec les nuances habituelles, voir @ref{Personnalisation des indications de nuance}.
 
 Le positionnement vertical des nuances est géré par le
 @rinternals{DynamicLineSpanner}.
+@funindex \dynamicUp
+@funindex dynamicUp
+@funindex \dynamicDown
+@funindex dynamicDown
+@funindex \dynamicNeutral
+@funindex dynamicNeutral
 
 
-@commonprop
-
-Des nuances différentes situées --- ou commençant --- sur une même
-note seront alignées verticalement.  Pour aligner des nuances qui ne
-se situeraient pas sur une même note, il est possible d'augmenter
-la propriété @code{staff-padding}.
+@predefined
+@code{\dynamicUp},
+@code{\dynamicDown},
+@code{\dynamicNeutral},
+@code{\crescTextCresc},
+@code{\dimTextDim},
+@code{\dimTextDecr},
+@code{\dimTextDecresc},
+@code{\crescHairpin},
+@code{\dimHairpin}.
+@endpredefined
 
-@example
-\override DynamicLineSpanner #'staff-padding = #4
-@end example
 
-Cette propriété peut aussi servir à régler des problèmes de
-collision entre des nuances et d'autres objets.
+@snippets
 
-Les crescendos ou decrescendos qui aboutissent sur la première note
-d'une nouvelle ligne ne sont imprimés que jusqu'à la fin de la ligne
-précédente.  Ce comportement peut être outrepassé en définissant :
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{setting-hairpin-behavior-at-bar-lines.ly}
 
-@example
-\override Score.Hairpin #'after-line-breaking = ##t
-@end example
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{setting-the-minimum-length-of-hairpins.ly}
 
+@cindex al niente
+@cindex niente, al
 
-Les crescendos et decrescendos indiqués textuellement --- tels que
-@emph{cresc.} ou @emph{dim.} --- sont suivis de pointillés qui montrent
-leur étendue.  On peut empêcher l'impression de ces pointillés avec :
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{printing-hairpins-using-al-niente-notation.ly}
 
-@example
-\override DynamicTextSpanner #'dash-period = #-1.0
-@end example
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{vertically-aligned-dynamics-and-textscripts.ly}
 
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{hiding-the-extender-line-for-text-dynamics.ly}
 
-@predefined
-@funindex \dynamicUp
-@code{\dynamicUp},
-@funindex \dynamicDown
-@code{\dynamicDown},
-@funindex \dynamicNeutral
-@code{\dynamicNeutral}.
-@endpredefined
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{changing-text-and-spanner-styles-for-text-dynamics.ly}
 
 
 @seealso
-Référence du programme : @rinternals{DynamicText}, @rinternals{Hairpin}.
-
-Le placement vertical de ces éléments graphiques est géré par le
+Glossaire musicologique :
+@rglos{al niente},
+@rglos{crescendo},
+@rglos{decrescendo},
+@rglos{hairpin}.
+
+Manuel d'initiation :
+@rlearning{Articulations et nuances}.
+
+Manuel de notation :
+@ref{Direction et positionnement},
+@ref{Personnalisation des indications de nuance},
+@ref{Contenu de la sortie MIDI},
+@ref{Gestion des nuances en MIDI}.
+
+Morceaux choisis :
+@rlsr{Expressive marks}.
+
+Référence des propriétés internes :
+@rinternals{DynamicText},
+@rinternals{Hairpin},
 @rinternals{DynamicLineSpanner}.
 
 
@@ -313,47 +376,128 @@ Le placement vertical de ces éléments graphiques est géré par le
 @unnumberedsubsubsec Personnalisation des indications de nuance
 @translationof New dynamic marks
 
-Grâce à la commande @code{make-dynamic-script}, vous pouvez créer de
-nouvelles marques textuelles de nuances que vous combinerez
-éventuellement avec les signes de nuances.
-Notez bien que la police des nuances en contient que les caractères
-@code{f,m,p,r,s} and @code{z}. 
+@cindex indication de nuance, personnalisation
+@cindex nuances personnalisées
+
+La manière la plus simple de personnaliser une indication de nuance
+consiste à utiliser un objet @code{\markup}.
 
-Certains composants, tels que les marques de nuances, possèdent des
-propriétés particulières et prédéfinies quant à leur police.  Lorsque
-vous créez du texte en pareille situation, nous vous recommandons
-d'utiliser @code{normal-text} pour annuler ces propriétés.  Voir 
-@ref{Text markup commands} pour plus de détails.
+@lilypond[verbatim,quote]
+moltoF = \markup { molto \dynamic f }
+
+\relative c' {
+  <d e>16_\moltoF <d e>
+  <d e>2..
+}
+@end lilypond
+
+@cindex nuances éditoriales
+@cindex nuances entre parenthèses
+@cindex nuances suggérées
+
+@funindex \bracket
+@funindex bracket
+@funindex \dynamic
+@funindex dynamic
+
+Vous pouvez créer des indications de nuance éditoriales (entre
+parenthèses ou crochets) grâce aux étiquettes (@emph{mode markup}) ; l
+syntaxe en est abordée au chapitre @ref{Mise en forme du texte}.
+
+@lilypond[verbatim,quote]
+roundF = \markup { \center-align \concat { \bold { \italic ( }
+           \dynamic f \bold { \italic ) } } }
+boxF = \markup { \bracket { \dynamic f } }
+\relative c' {
+  c1_\roundF
+  c1_\boxF
+}
+@end lilypond
 
 @cindex make-dynamic-script
 
-@lilypond[quote,verbatim,ragged-right]
+@funindex make-dynamic-script
+
+Grâce à la commande @code{make-dynamic-script}, vous pouvez créer de
+nouvelles marques textuelles que vous combinerez avec les signes de
+nuance. 
+
+@lilypond[verbatim,quote]
 sfzp = #(make-dynamic-script "sfzp")
 \relative c' {
   c4 c c\sfzp c
 }
 @end lilypond
 
-@cindex Nuances éditoriales
-@cindex Nuances, entre parenthèses
+@code{make-dynamic-script} accepte en argume tout objet de type
+@emph{markup}. Notez bien que la police des nuances ne contient que les
+caractères @code{f,m,p,r,s} et @code{z}, et que les marques de nuances
+possèdent des propriétés particulières et prédéfinies quant à leur
+police.  Aussi, lorsque vous créez du texte en pareille situation, nous
+vous recommandons d'utiliser @code{\normal-text} pour annuler ces
+propriétés.  L'intérêt majeur de recourrir à la fonction
+@code{make-dynamic-script} plutôt qu'à un simple @emph{markup} réside
+dans l'assurance que ces objets personnalisés et les soufflets seront
+alignés lorsque attachés à une même note.
+
+@lilypond[verbatim,quote]
+roundF = \markup { \center-align \concat {
+           \normal-text { \bold { \italic ( } }
+           \dynamic f
+           \normal-text { \bold { \italic ) } } } }
+boxF = \markup { \bracket { \dynamic f } }
+mfEspress = \markup { \center-align \line {
+              \hspace #3.7 mf \normal-text \italic espress. } }
+roundFdynamic = #(make-dynamic-script roundF)
+boxFdynamic = #(make-dynamic-script boxF)
+mfEspressDynamic = #(make-dynamic-script mfEspress)
+\relative c' {
+  c4_\roundFdynamic\< d e f
+  g,1~_\boxFdynamic\>
+  g
+  g'~\mfEspressDynamic
+  g
+}
+@end lilypond
 
-Vous pouvez aussi encadrer les nuances entre parenthèses ou entre
-crochets.  Ceci est souvent utilisé pour ajouter des nuances propres à
-une édition donnée.
+La constrution d'une indication de nuance personnalisée peut aussi se
+faire en langage Scheme ; voir @ref{Construction Scheme d'un marqueur}
+pour en connaître les modalités.
 
-@lilypond[quote,verbatim,ragged-right]
-rndf = \markup{ \center-align {\line { \bold{\italic (}
-  \dynamic f \bold{\italic )} }} }
-boxf = \markup{ \bracket { \dynamic f } }
-{ c'1_\rndf c'1_\boxf }
+@lilypond[verbatim,quote]
+moltoF = #(make-dynamic-script
+            (markup #:normal-text "molto"
+                    #:dynamic "f"))
+\relative c' {
+  <d e>16 <d e>
+  <d e>2..\moltoF
+}
 @end lilypond
 
+L'utilisation des fontes en mode @emph{markup} est abordée au chapitre 
+@ref{Sélection de la fonte et de la taille}. 
+
+
+@seealso
+Manuel de notation :
+@ref{Mise en forme du texte},
+@ref{Sélection de la fonte et de la taille},
+@ref{Construction Scheme d'un marqueur},
+@ref{Contenu de la sortie MIDI},
+@ref{Gestion des nuances en MIDI}.
+
+Morceaux choisis :
+@rlsr{Expressive marks}.
 
 
 @node Courbes
 @subsection Courbes
 @translationof Curves
 
+Ce chapitre traite des signes d'interprétation imprimés sous forme de
+courbe : liaisons d'articulation ou de phrasé, respirations, chutes et
+sauts. 
+
 @menu
 * Liaisons d'articulation::                       
 * Liaisons de phrasé::              
@@ -372,61 +516,151 @@ Une liaison d'articulation indique que les notes doivent être jouées
 liées, ou @emph{legato}.  Ces liaisons s'indiquent au moyen de
 parenthèses.
 
-@lilypond[quote,ragged-right,relative=2,fragment,verbatim]
-f( g a) a8 b( a4 g2 f4)
+@warning{Lorsque la musique est polyphonique, la liaison doît se
+terminer dans la voix où elle a été entamée.}
+
+@lilypond[verbatim,quote,relative=2]
+f4( g a) a8 b(
+a4 g2 f4)
 <c e>2( <b d>2)
 @end lilypond
 
+@cindex liaison, orientation manuelle
+@cindex liaison, au-dessous des notes
+@cindex liaison, au-dessus des notes
 
-On peut indiquer l'orientation des liaisons suivantes avec
-@code{\slur@emph{DIR}}, @code{@emph{DIR}} pouvant être @code{Up} pour
-une liaison vers le haut, @code{Down} pour une liaison vers le bas, ou
-@code{Neutral} pour laisser LilyPond décider.
+@funindex \slurDown
+@funindex slurDown
+@funindex \slurNeutral
+@funindex slurNeutral
 
-Il existe également un raccourci pratique pour forcer l'orientation
-d'une seule liaison.  Il suffit pour cela d'ajouter @code{_} ou @code{^}
-avant d'ouvrir une parenthèse.
-
-@lilypond[relative=2,ragged-right,quote,verbatim,fragment]
-c4_( c) c^( c)
-@end lilypond
+Vous pouvez décider de l'orientation des liaisons par rapport à la
+portée, comme indiqué au chapitre @ref{Direction et positionnement}. 
 
+@cindex articulation, liaison
+@cindex liaisons d'articulation multiples
+@cindex liaisons d'articulation simultanées
+@cindex multiples, liaisons d'articulation
+@cindex simultanées, liaisons d'articulation
 
 Une seule liaison d'articulation peut être imprimée à la fois.  S'il est
 nécessaire d'imprimer une liaison plus longue, englobant des liaisons
 plus courtes, utilisez des @ref{Liaisons de phrasé}.
 
+@cindex liaison, style de trait
+@cindex liaison, trait plein
+@cindex liaison, trait pointillé
+@cindex liaison, tirets
+@cindex plein, trait de liaison
+@cindex pointillé, trait de liaison
+@cindex tiret, trait de liaison
+@cindex style de trait, liaison
+
+@funindex \slurDashed
+@funindex slurDashed
+@funindex \slurDotted
+@funindex slurDotted
+@funindex \slurSolid
+@funindex slurSolid
+
+Une liaison est par défaut dessinée d'une ligne pleine.  Il est aussi
+possible de l'imprimer sous la forme de tirets ou en pointillé :
+
+@lilypond[verbatim,quote,relative=1]
+c4( e g2)
+\slurDashed
+g4( e c2)
+\slurDotted
+c4( e g2)
+\slurSolid
+g4( e c2)
+@end lilypond
+
+@funindex \slurHalfDashed
+@funindex slurHalfDashed
+@funindex \slurHalfSolid
+@funindex slurHalfSolid
+
+@cindex liaison, tirets et trait continu
+
+En utilisant @code{\slurHalfDashed}, la première moitié de la liaison
+aura un trait discontinu et continu pour la seconde.  L'inverse
+s'obtient avec @code{\slurHalfSolid}.
+
+@lilypond[verbatim,quote,relative=1]
+c4( e g2)
+\slurHalfDashed
+g4( e c2)
+\slurHalfSolid
+c4( e g2)
+\slurSolid
+g4( e c2)
+@end lilypond
+
+@funindex \slurDashPattern
+@funindex slurDashPattern
 
-@commonprop
+@cindex liaison, densité des tirets
 
-Certains auteurs utilisent deux liaisons lorsqu'ils veulent
-lier des accords. Dans LilyPond, il faut pour cela assigner
-@emph{vrai} (@q{true}) la propriété @code{doubleSlurs} :
+Vous pouvez même personnaliser la densité des tirets d'une liaison :
 
-@lilypond[verbatim,ragged-right,relative,fragment,quote]
-\set doubleSlurs = ##t
-<c e>4 ( <d f> <c e> <d f> )
+@lilypond[verbatim,quote,relative=1]
+c4( e g2)
+\slurDashPattern #0.7 #0.75
+g4( e c2)
+\slurDashPattern #0.5 #2.0
+c4( e g2)
+\slurSolid
+g4( e c2)
 @end lilypond
 
 
-@predefined
+
 @funindex \slurUp
+@funindex slurUp
+
+
+@predefined
 @code{\slurUp},
-@funindex \slurDown
 @code{\slurDown},
-@funindex \slurNeutral
 @code{\slurNeutral},
-@funindex \slurDashed
 @code{\slurDashed},
-@funindex \slurDotted
 @code{\slurDotted},
-@funindex \slurSolid
+@code{\slurHalfDashed},
+@code{\slurHalfSolid},
+@code{\slurDashPattern},
 @code{\slurSolid}.
 @endpredefined
 
 
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{using-double-slurs-for-legato-chords.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{positioning-text-markups-inside-slurs.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{making-slurs-with-complex-dash-structure.ly}
+
+
 @seealso
-Référence du programme : @rinternals{Slur}.
+Glossaire musicologique :
+@rglos{slur}.
+
+Manuel d'initiation :
+@rlearning{Non-imbrication des crochets et liaisons}.
+
+Manuel de notation :
+@ref{Direction et positionnement},
+@ref{Liaisons de phrasé}.
+
+Morceaux choisis :
+@rlsr{Expressive marks}.
+
+Référence des propriétés internes :
+@rinternals{Slur}.
 
 
 @node Liaisons de phrasé
@@ -440,84 +674,227 @@ Une liaison de phrasé relie plusieurs notes en délimitant une phrase
 musicale.  On indique les points de départ et d'arrivée avec @code{\(}
 et @code{\)} respectivement.
 
-@lilypond[quote,ragged-right,fragment,verbatim,relative=1]
-\time 6/4 c'\( d( e) f( e) d\)
+@lilypond[verbatim,quote,relative=2]
+c4\( d( e) f(
+e2) d\)
 @end lilypond
 
+@funindex \phrasingSlurUp
+@funindex phrasingSlurUp
+@funindex \phrasingSlurDown
+@funindex phrasingSlurDown
+@funindex \phrasingSlurNeutral
+@funindex phrasingSlurNeutral
 
 D'un point de vue typographique, rien ne distingue une liaison de phrasé
 d'une liaison d'articulation. Cependant, LilyPond les considère comme
 des objets différents. Une commande @code{\slurUp} n'affectera donc pas
-une liaison de phrasé : il faut plutôt utiliser @code{\phrasingSlurUp},
-@code{\phrasingSlurDown} ou @code{\phrasingSlurNeutral}.
+une liaison de phrasé.  Vous pouvez décider de l'orientation des
+liaisons de phrasé par rapport à la portée, comme indiqué au chapitre
+@ref{Direction et positionnement}.  
+
+@cindex liaisons de phrasé multiples
+@cindex liaisons de phrasé simultanées
+@cindex multiples, liaisons de phrasé
+@cindex simultanées, liaisons de phrasé
 
 Il n'est pas possible d'avoir plusieurs liaisons de phrasé en même temps.
 
+@cindex liaison, style de trait
+@cindex liaison, trait plein
+@cindex liaison, trait pointillé
+@cindex liaison, tirets
+@cindex plein, trait de liaison
+@cindex pointillé, trait de liaison
+@cindex tiret, trait de liaison
+@cindex style de trait, liaison
+
+@funindex phrasingSlurDashed
+@funindex \phrasingSlurDashed
+@funindex \phrasingSlurDotted
+@funindex phrasingSlurDotted
+@funindex \phrasingSlurSolid
+@funindex phrasingSlurSolid
+
+Une liaison est par défaut dessinée d'une ligne pleine.  Il est aussi
+possible de l'imprimer sous la forme de tirets ou en pointillé :
+
+@lilypond[verbatim,quote,relative=1]
+c4\( e g2\)
+\phrasingSlurDashed
+g4\( e c2\)
+\phrasingSlurDotted
+c4\( e g2\)
+\phrasingSlurSolid
+g4\( e c2\)
+@end lilypond
+
+@cindex liaison, tirets et trait continu
+
+@funindex phrasingSlurHalfDashed
+@funindex \phrasingSlurHalfDashed
+@funindex \phrasingSlurHalfSolid
+@funindex phrasingSlurHalfSolid
+
+En utilisant @code{\phrasingslurHalfDashed}, la première moitié de la liaison
+aura un trait discontinu et continu pour la seconde.  L'inverse
+s'obtient avec @code{\phrasingslurHalfSolid}.
+
+@lilypond[verbatim,quote,relative=1]
+c4\( e g2\)
+\phrasingSlurHalfDashed
+g4\( e c2\)
+\phrasingSlurHalfSolid
+c4\( e g2\)
+\phrasingSlurSolid
+g4\( e c2\)
+@end lilypond
+
+@funindex \phrasingSlurDashPattern
+@funindex phrasingSlurDashPattern
+
+@cindex liaison, densité des tirets
+
+Vous pouvez même personnaliser la densité des tirets d'une liaison :
+
+@lilypond[verbatim,quote,relative=1]
+c4\( e g2\)
+\phrasingSlurDashPattern #0.7 #0.75
+g4\( e c2\)
+\phrasingSlurDashPattern #0.5 #2.0
+c4\( e g2\)
+\phrasingSlurSolid
+g4\( e c2\)
+@end lilypond
+
+La personnalisation des lignes discontinues est identique pour les
+liaisons de phrasé et les liaisons d'articulation.  Pour plus de
+détails, référez-vous aux morceaux choisis de la section 
+@ref{Liaisons d'articulation}. 
 
 @predefined
-@funindex \phrasingSlurUp
 @code{\phrasingSlurUp},
-@funindex \phrasingSlurDown
 @code{\phrasingSlurDown},
-@funindex \phrasingSlurNeutral
-@code{\phrasingSlurNeutral}.
+@code{\phrasingSlurNeutral},
+@code{\phrasingSlurDashed},
+@code{\phrasingSlurDotted},
+@code{\phrasingSlurHalfDashed},
+@code{\phrasingSlurHalfSolid},
+@code{\phrasingSlurDashPattern},
+@code{\phrasingSlurSolid}.
 @endpredefined
 
 
 @seealso
-Référence du programme : @rinternals{PhrasingSlur}.
+Manuel d'initiation :
+@rlearning{Non-imbrication des crochets et liaisons}.
+
+Manuel de notation :
+@ref{Direction et positionnement},
+@ref{Liaisons d'articulation}.
+
+Morceaux choisis :
+@rlsr{Expressive marks}.
+
+Référence des propriétés internes :
+@rinternals{PhrasingSlur}.
+
 
 
 @node Signes de respiration
 @unnumberedsubsubsec Signes de respiration
 @translationof Breath marks
 
-Les indications de respiration sont indiquées par la commande @code{\breathe}.
+@cindex respiration, indication
+
+@funindex \breathe
+@funindex breathe
 
-@lilypond[quote,ragged-right,fragment,relative=1,verbatim]
-c'4 \breathe d4
+Les indications de respiration sont indiquées par la commande
+@code{\breathe}. 
+
+@lilypond[verbatim,quote,relative=2]
+c2. \breathe d4
 @end lilypond
 
+LilyPond gère les @emph{divisiones}, signes utilisés en notation
+ancienne pour indiquer les respirations. Pour de plus amples détails,
+voir @ref{Divisiones}. 
 
-@commonprop
 
-On peut choisir le glyphe imprimé par cette commande, en modifiant la
-propriété @code{text} de l'objet @code{BreathingSign}, pour lui affecter
-n'importe quelle indication textuelle.  Par exemple :
+@snippets
 
-@lilypond[quote,ragged-right,fragment,verbatim,relative=1]
-c'4
-\override BreathingSign #'text
-  = #(make-musicglyph-markup "scripts.rvarcomma")
-\breathe
-d4
-@end lilypond
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{changing-the-breath-mark-symbol.ly}
+
+@cindex césure
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{inserting-a-caesura.ly}
 
 
 @seealso
-Référence du programme : @rinternals{BreathingSign}.
+Glossaire musicologique :
+@rglos{caesura}.
 
-Exemples : @rlsr{Winds}.
+Manuel de notation :
+@ref{Divisiones}.
+
+Morceaux choisis :
+@rlsr{Expressive marks}.
+
+Référence des propriétés internes :
+@rinternals{BreathingSign}.
 
 
 @node Chutes et sauts
 @unnumberedsubsubsec Chutes et sauts
 @translationof Falls and doits
 
-Des indications de désinence peuvent être obtenues au moyen de la
-commande @code{\bendAfter} :
+@cindex chutes
+@cindex sauts
 
-@lilypond[fragment,ragged-right,relative=2]
-\override Score.SpacingSpanner #'shortest-duration-space = #3.0
-c4-\bendAfter #+5
-c4-\bendAfter #-3
+@funindex \bendAfter
+@funindex bendAfter
+
+Des indications de désinence peuvent être obtenues au moyen de la
+commande @code{\bendAfter}.  Leur direction s'indique au moyen des
+signes plus (vers le haut) ou moins (vers le bas).  Le chiffre indique
+l'intervalle avec la note de départ.
+
+@lilypond[verbatim,quote,relative=2]
+c2-\bendAfter #+4
+c2-\bendAfter #-4
+c2-\bendAfter #+8
+c2-\bendAfter #-8
 @end lilypond
 
+Lorsque vous saisissez des chutes ou des sauts, @strong{n'oubliez pas}
+le tiret (@code{-}) qui précède la commande @code{\bendAfter}.
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{adjusting-the-shape-of-falls-and-doits.ly}
+
+
+@seealso
+Glossaire musical :
+@rglos{fall},
+@rglos{doit}.
+
+Morceaux choisis :
+@rlsr{Expressive marks}.
+
 
 @node Lignes
 @subsection Lignes
 @translationof Lines
 
+Cette partie traite de la manière de générer des signes d'interprétation
+d'aspect linéaire, tels les glissandos, arpèges et trilles.
+
 @menu
 * Glissando::                   
 * Arpèges::                    
@@ -529,36 +906,41 @@ c4-\bendAfter #-3
 @translationof Glissando
 
 @cindex glissando
+
 @funindex \glissando
+@funindex glissando
 
 Un glissando relie une hauteur à une autre en passant par chaque hauteur
-intermédiaire.  Il est indiqué graphiquement, par une ligne ou des
-vaguelettes entre ces deux notes. On l'obtient en accolant la commande
-@code{\glissando} à la première note.
+intermédiaire.  On l'obtient en accolant la commande @code{\glissando} à
+la première note. 
 
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
-c2\glissando c'
-\override Glissando #'style = #'zigzag
+@lilypond[verbatim,quote,relative=2]
+g2\glissando g'
 c2\glissando c,
 @end lilypond
 
+Un glissando est indiqué graphiquement, par une ligne ou des
+vaguelettes -- voir @ref{Styles de ligne}.
 
-@commonprop
 
-@lilypond[quote,ragged-right,verbatim]
-I = \once \override NoteColumn #'ignore-collision = ##t
+@snippets
 
-\relative <<
-  { \oneVoice \stemDown f2 \glissando \stemNeutral a } \\
-  { \oneVoice \I c2 \glissando \I d, }
->>
-@end lilypond
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{contemporary-glissando.ly}
 
 
 @seealso
-Référence du programme : @rinternals{Glissando}.
+Glossaire musicologique :
+@rglos{glissando}.
+
+Manuel de notation :
+@ref{Styles de ligne}.
 
-Exemples : @rlsr{Expressive marks}.
+Morceaux choisis :
+@rlsr{Expressive marks}.
+
+Référence des propriétés internes :
+@rinternals{Glissando}.
 
 
 @knownissues
@@ -573,123 +955,216 @@ le long de la ligne de glissando.
 
 @cindex arpège
 @cindex accord arpégé
-@funindex \arpeggio
 
+@funindex \arpeggio
+@funindex arpeggio
+@funindex \arpeggioArrowUp
+@funindex arpeggioArrowUp
+@funindex \arpeggioArrowDown
+@funindex arpeggioArrowDown
+@funindex \arpeggioNormal
+@funindex arpeggioNormal
 
 On peut indiquer qu'un accord doit être arpégé en lui accolant la
 commande @code{\arpeggio} :
 
-@lilypond[quote,ragged-right,fragment,relative=1,verbatim]
-<c e g c>\arpeggio
+@lilypond[verbatim,quote,relative=1]
+<c e g c>1\arpeggio
 @end lilypond
 
+LilyPond dispose de différents graphismes pour indiquer un arpège.
+@code{\arpeggioNormal} reviendra au style par défaut.
 
-Pour spécifier qu'un autre accord doit être plaqué et non arpégé, on
-peut remplacer ce signe par un crochet :
+@lilypond[verbatim,quote,relative=1]
+<c e g c>2\arpeggio
 
-@lilypond[quote,ragged-right,fragment,relative=1,verbatim]
-\arpeggioBracket
-<c' e g c>\arpeggio
+\arpeggioArrowUp
+<c e g c>2\arpeggio
+
+\arpeggioArrowDown
+<c e g c>2\arpeggio
+
+\arpeggioNormal
+<c e g c>2\arpeggio
 @end lilypond
 
+@cindex arpège, symboles spéciaux
 
-Le sens de l'arpège est parfois indiqué par une pointe de flèche au bout
-de la vaguelette :
+@funindex \arpeggioBracket
+@funindex arpeggioBracket
+@funindex \arpeggioParenthesis
+@funindex arpeggioParenthesis
+@funindex \arpeggioParenthesisDashed
+@funindex arpeggioParenthesisDashed
 
-@lilypond[quote,ragged-right,fragment,relative=1,verbatim]
-\new Voice {
-  \arpeggioArrowUp
-  <c e g c>\arpeggio
-  \arpeggioArrowDown
-  <c e g c>\arpeggio
-}
-@end lilypond
+Des crochets indiquent que l'accord devra être plaqué et non arpégé :
+
+@lilypond[verbatim,quote,relative=1]
+<c e g c>2
 
+\arpeggioBracket
+<c e g c>2\arpeggio
 
-@commonprop
+\arpeggioParenthesis
+<c e g c>2\arpeggio
 
-Quand un arpège couvre plusieurs portées, il est possible d'indiquer
-l'arpège sur chacune des portées, puis de relier la ligne de vaguelettes
-en assignant @emph{vrai} à la propriété @code{connectArpeggios}, par
-exemple dans le contexte @rinternals{PianoStaff} :
+\arpeggioParenthesisDashed
+<c e g c>2\arpeggio
 
-@lilypond[quote,ragged-right,fragment,relative=1,verbatim]
-\new PianoStaff <<
-  \set PianoStaff.connectArpeggios = ##t
-  \new Staff { <c' e g c>\arpeggio }
-  \new Staff { \clef bass <c,, e g>\arpeggio }
->>
+\arpeggioNormal
+<c e g c>2\arpeggio
 @end lilypond
 
+@c pas trouvé cette propriété, ou alors mal lu ? jcm
+@c The dash properties of the parenthesis arpeggio are controlled
+@c with the @code{'dash-details} property, which is described at @ref{Slurs}.
+
+Un arpège peut parfois s'écrire de manière explicite, à l'aide de
+liaisons de tenue.  Pour plus d'information, voir 
+@ref{Liaisons de prolongation}. 
+
 
 @predefined
 @code{\arpeggio},
-@funindex \arpeggioArrowUp
 @code{\arpeggioArrowUp},
-@funindex \arpeggioArrowDown
 @code{\arpeggioArrowDown},
-@funindex \arpeggioNormal
 @code{\arpeggioNormal},
-@funindex \arpeggioBracket
-@code{\arpeggioBracket}.
+@code{\arpeggioBracket},
+@code{\arpeggioParenthesis}
+@code{\arpeggioParenthesisDashed}.
 @endpredefined
 
 
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{creating-cross-staff-arpeggios-in-a-piano-staff.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{creating-cross-staff-arpeggios-in-other-contexts.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{creating-arpeggios-across-notes-in-different-voices.ly}
+
+
 @seealso
-Dans ce même manuel : @ref{Liaisons de prolongation}, pour noter explicitement des arpèges.
+Glossaire musicologique :
+@rglos{arpeggio}.
 
-Référence du programme : @rinternals{Arpeggio}.
+Manuel de notation :
+@ref{Liaisons d'articulation},
+@ref{Liaisons de prolongation}.
+
+Morceaux choisis :
+@rlsr{Expressive marks}.
+
+Référence des propriétés internes :
+@rinternals{Arpeggio},
+@rinternals{Slur},
+@rinternals{PianoStaff}.
 
 
 @knownissues
 
+@cindex arpège, style parenthèse
+
 Il est impossible de mêler au même instant, dans un contexte
-@rinternals{PianoStaff}, des lignes d'arpèges connectées et d'autres
+@code{PianoStaff}, des lignes d'arpèges connectées et d'autres
 non connectées.
 
+Il n'est pas possible d'imprimer des lignes d'arpèges connectées sous
+forme de parenthèse.
+
 
 @node Trilles
 @unnumberedsubsubsec Trilles
 @translationof Trills
 
-Les trilles brefs s'indiquent comme n'importe quelle ponctuation :
-voir @ref{Articulations et ornements}.
+@cindex trilles
+
+@funindex \trill
+@funindex trill
+@funindex \startTrillSpan
+@funindex startTrillSpan
+@funindex \stopTrillSpan
+@funindex stopTrillSpan
+
+Les trilles brefs s'indiquent comme n'importe quelle ponctuation, avec un
+simple @code{\trill} ; voir @ref{Articulations et ornements}.
 
 
 Les trilles plus longs sont délimités par @code{\startTrillSpan} et
 @code{\stopTrillSpan} :
 
-@lilypond[verbatim,ragged-right,relative=2,quote,fragment]
-\new Voice {
-  << { c1 \startTrillSpan }
-     { s2. \grace { d16[\stopTrillSpan e] } } >>
-  c4 }
+@lilypond[verbatim,quote,relative=2]
+d1~\startTrillSpan
+d1
+c2\stopTrillSpan r2
+@end lilypond
+
+Dans l'exemple suivant, un trille se combine avec des notes d'ornement.
+La syntaxe d'une telle construction ainsi que le moyen de positionner
+les notes d'ornement avec précision est expliquée dans 
+@ref{Notes d'ornement}.
+
+@lilypond[verbatim,quote,relative=2]
+c1 \afterGrace
+d1\startTrillSpan { c32[ d]\stopTrillSpan }
+e2 r2
 @end lilypond
 
 @cindex trilles avec hauteur explicite
 
+@funindex \pitchedTrill
+@funindex pitchedTrill
+
 Les trilles qui font intervenir une hauteur précise peuvent être
-indiqués par la commande @code{pitchedTrill}.
+indiqués par la commande @code{pitchedTrill}.  Le premier argument est
+la note réelle ; le second est une hauteur qui sera imprimée comme une
+tête de note noire entre parenthèses. 
 
-@lilypond[ragged-right,verbatim,fragment,relative=1,quote]
-\pitchedTrill c4\startTrillSpan fis
-f\stopTrillSpan
+@lilypond[verbatim,quote,relative=1]
+\pitchedTrill e2\startTrillSpan fis
+d\stopTrillSpan
 @end lilypond
 
-@noindent
-Le premier argument est la note réelle ; le second est une hauteur qui
-sera imprimée comme une tête de note noire entre parenthèses.
+@cindex trilles avec hauteur explicite et altération
+@cindex altération, trilles avec hauteur explicite
+
+Dans l'exemple suivant, le deuxième trille est ambigu -- le fa qui est
+forcé n'est pas diésé.  Pour lever toute ambiguité, il suffit de forcer
+l'impression de l'altération -- en ajoutant un @code{!} -- comme dans
+la deuxième mesure. 
+
+@lilypond[verbatim,quote,relative=2]
+\pitchedTrill eis4\startTrillSpan fis
+g\stopTrillSpan
+\pitchedTrill eis4\startTrillSpan fis
+g\stopTrillSpan
+\pitchedTrill eis4\startTrillSpan fis
+g\stopTrillSpan
+\pitchedTrill eis4\startTrillSpan fis!
+g\stopTrillSpan
+@end lilypond
 
 
 @predefined
-@funindex \startTrillSpan
 @code{\startTrillSpan},
-@funindex \stopTrillSpan
 @code{\stopTrillSpan}.
 @endpredefined
 
 
 @seealso
-Référence du programme : @rinternals{TrillSpanner}.
+Glossaire musicologique :
+@rglos{trill}.
+
+Manuel de notation :
+@ref{Articulations et ornements},
+@ref{Notes d'ornement}.
+
+Morceaux choisis :
+@rlsr{Expressive marks}.
 
+Référence des propriétés internes :
+@rinternals{TrillSpanner}.
 
index 65d6bc6cb28806759405fe9ff8568b0ba609f452..ecbeb030a45dda1dad4c749b503e47480be6b9cf 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
+    Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -71,9 +71,57 @@ and just before
 
 @node Instruments MIDI
 @appendixsec Instruments MIDI
-@translationof MIDI instruments @c external
+@translationof MIDI instruments 
+
+La liste suivante répertorie les différentes dénominations que vous
+pouvez affecter à la propriété @code{midiInstrument}.
+
+@example
+acoustic grand            contrabass           lead 7 (fifths)
+bright acoustic           tremolo strings      lead 8 (bass+lead)
+electric grand            pizzicato strings    pad 1 (new age)
+honky-tonk                orchestral harp      pad 2 (warm)
+electric piano 1          timpani              pad 3 (polysynth)
+electric piano 2          string ensemble 1    pad 4 (choir)
+harpsichord               string ensemble 2    pad 5 (bowed)
+clav                      synthstrings 1       pad 6 (metallic)
+celesta                   synthstrings 2       pad 7 (halo)
+glockenspiel              choir aahs           pad 8 (sweep)
+music box                 voice oohs           fx 1 (rain)
+vibraphone                synth voice          fx 2 (soundtrack)
+marimba                   orchestra hit        fx 3 (crystal)
+xylophone                 trumpet              fx 4 (atmosphere)
+tubular bells             trombone             fx 5 (brightness)
+dulcimer                  tuba                 fx 6 (goblins)
+drawbar organ             muted trumpet        fx 7 (echoes)
+percussive organ          french horn          fx 8 (sci-fi)
+rock organ                brass section        sitar
+church organ              synthbrass 1         banjo
+reed organ                synthbrass 2         shamisen
+accordion                 soprano sax          koto
+harmonica                 alto sax             kalimba
+concertina                tenor sax            bagpipe
+acoustic guitar (nylon)   baritone sax         fiddle
+acoustic guitar (steel)   oboe                 shanai
+electric guitar (jazz)    english horn         tinkle bell
+electric guitar (clean)   bassoon              agogo
+electric guitar (muted)   clarinet             steel drums
+overdriven guitar         piccolo              woodblock
+distorted guitar          flute                taiko drum
+guitar harmonics          recorder             melodic tom
+acoustic bass             pan flute            synth drum
+electric bass (finger)    blown bottle         reverse cymbal
+electric bass (pick)      shakuhachi           guitar fret noise
+fretless bass             whistle              breath noise
+slap bass 1               ocarina              seashore
+slap bass 2               lead 1 (square)      bird tweet
+synth bass 1              lead 2 (sawtooth)    telephone ring
+synth bass 2              lead 3 (calliope)    helicopter
+violin                    lead 4 (chiff)       applause
+viola                     lead 5 (charang)     gunshot
+cello                     lead 6 (voice)
+@end example
 
-@untranslated
 
 @node Liste des couleurs
 @appendixsec Liste des couleurs
@@ -95,22 +143,20 @@ and just before
 
 @node Styles de tête de note
 @appendixsec Styles de tête de note
-@translationof Note head styles @c external
+@translationof Note head styles 
 
-@untranslated
+Voici les différents styles de tête de note disponible.
+
+@lilypondfile[noindent]{note-head-style.ly}
 
-@ignore
 Les commandes suivantes peuvent être utilisées dans un bloc
 @code{\markup @{ @}}.
-@end ignore
 
 @include markup-commands.tely
 
 
-@ignore
 Les commandes suivantes peuvent être utilisées dans un
 bloc @code{\markuplines @{ @}}.
-@end ignore
 
 @include markup-list-commands.tely
 
@@ -146,9 +192,9 @@ bloc @code{\markuplines @{ @}}.
 @cindex varcoda
 
 
-Voici la liste exhaustive des symboles :
+Voici la liste exhaustive des symboles prédéfinis :
 
-@lilypondfile[ragged-right,quote]{script-chart.ly}
+@lilypondfile[quote]{script-chart.ly}
 
 
 @node Notes utilisées en percussion
@@ -157,6 +203,28 @@ Voici la liste exhaustive des symboles :
 
 @lilypondfile[quote]{percussion-chart.ly}
 
+
+
+@node Glossaire technique
+@appendixsec Glossaire technique
+@translationof Technical glossary @c external
+
+@untranslated
+
+@unnumberedsubsec callback
+@unnumberedsubsec glyph
+@unnumberedsubsec grob
+@unnumberedsubsec interface
+@unnumberedsubsec lexer
+@unnumberedsubsec output-def
+@unnumberedsubsec parser
+@unnumberedsubsec parser variable
+@unnumberedsubsec prob
+@unnumberedsubsec simple-closure
+@unnumberedsubsec smob
+@unnumberedsubsec stencil
+
+
 @node Liste des propriétés de contexte
 @appendixsec Liste des propriétés de contexte
 @translationof All context properties @c external
index d47e4a1265f9f5d299a07fe140d575af005bf17c..ab654cf101e4a32a3031fa6f7fcf78309ce414ae 100644 (file)
@@ -1,6 +1,6 @@
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-    Translation of GIT committish: a6b100669bfc3847b3a03029d6a46ee9b1609e73
+    Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -33,9 +33,9 @@ et les options de gravure.
 @subsection Écriture des hauteurs de note
 @translationof Writing pitches
 
-Cette section explique la manière d'indiquer les hauteurs de note.  Il
-y a deux modes d'indiquer l'octave des notes : le mode absolu, et le
-mode relatif.  Le dernier est le plus pratique lors de la saisie d'un
+Cette section explique la manière d'indiquer les hauteurs de note.  Deux 
+modes permettent d'indiquer l'octave des notes : le mode absolu, et le
+mode relatif.  Ce dernier est le plus pratique lors de la saisie d'un
 fichier source au clavier de l'ordinateur.
 
 @menu
@@ -55,41 +55,44 @@ fichier source au clavier de l'ordinateur.
 @cindex absolues, octaves
 @cindex octaves absolues
 
-La hauteur s'écrit --- à moins de préciser une autre langue --- avec la
-notation batave, en utilisant les lettres @code{a} à @code{g}.
-Une gamme ascendante de do majeur s'écrit
+La hauteur s'écrit -- à moins de préciser une autre langue -- avec la
+notation batave, en utilisant les lettres de @code{a} à @code{g}.
+Les notes @code{c} (do) et @code{b} (si) sont écrites une octave sous le
+do central. 
 
-@lilypond[quote,fragment,verbatim,ragged-right]
+@c don't use c' here.
+@lilypond[verbatim,quote,fragment]
 \clef bass
-c d e f g a b c'
+c d e f
+g a b c
+d e f g
 @end lilypond
 
-La note @code{c} est écrite une octave sous le do central.
-
-@lilypond[quote,fragment,verbatim,ragged-right]
-\clef treble
-c1
-\clef bass
-c1
-@end lilypond
+@cindex octave, spécification
 
 @funindex '
 @funindex ,
 
 L'octave peut être précisée sous forme d'une série d'apostrophes
-@samp{'} ou d'une série de virgules @samp{,}.  Chaque @samp{'} hausse la
-note d'une octave, chaque @samp{,} baisse la note d'une octave.
+@code{'} ou d'une série de virgules @code{,}.  Chaque @code{'} hausse la
+note d'une octave, chaque @code{,} baisse la note d'une octave.
 
-@lilypond[quote,ragged-right,fragment,verbatim]
+@lilypond[verbatim,quote,fragment]
 \clef treble
-c' c'' e' g d'' d' d c
+c' c'' e' g
+d'' d' d c
 \clef bass
-c, c,, e, g d,, d, d c
+c, c,, e, g
+d,, d, d c
 @end lilypond
 
-Il existe une autre méthode pour préciser à quelle octave se situe la
-note à graver ; cette méthode demande moins d'indications d'octave
-(@code{'} ou @code{,}) --- voir @ref{Octaves relatives}.
+
+@seealso
+Glossaire musicologique :
+@rglos{Pitch names}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
 
 
 @node Octaves relatives
@@ -98,109 +101,210 @@ note à graver ; cette méthode demande moins d'indications d'octave
 
 @cindex relatif
 @cindex indication d'octave relative
+@cindex octave relative, indication
+
 @funindex \relative
+@funindex relative
 
 On spécifie les octaves en ajoutant @code{'} et @code{,} aux noms de
 hauteurs.  En recopiant de la musique, on a vite fait de mettre une note
 à la mauvaise octave, et ce genre d'erreur est difficile à retrouver.
-Le mode d'écriture \relative prévient ces erreurs dans la mesure où
-elles deviennent beaucoup plus évidentes : une seule erreur décale le
-reste de la pièce à une mauvaise octave.
+Le mode d'écriture en octave relative prévient ces erreurs dans la
+mesure où elles deviennent beaucoup plus évidentes : une seule erreur
+décale le reste de la pièce à une mauvaise octave.
 
 
 @example
 \relative @var{hauteur_de_référence} @var{musicexpr}
 @end example
 
-@noindent
-ou
+En mode relatif, chaque note est considérée comme étant le plus proche
+possible de celle qui la précède.  L'octave des notes mentionnées dans
+@var{musicexpr} va être calculée de la manière suivante : 
 
-@example
-\relative @var{musicexpr}
-@end example
+@itemize
+@item
+Si aucun signe de changement d'octave n'est utilisé, l'intervalle de
+base entre la note actuelle et la précédente sera toujours au plus d'une
+quarte.  Cet intervalle est déterminé sans tenir compte des altérations. 
 
-@noindent
-@code{c'} est utilisé par défaut si aucune hauteur de départ n'est
-définie.
-
-L'octave des notes mentionnées dans @var{musicexpr} va être calculée de
-la manière suivante : si aucun signe de changement d'octave n'est
-utilisé, l'intervalle de base entre la note actuelle et la précédente
-sera toujours au plus d'une quarte.  Cet intervalle est déterminé sans
-tenir compte des altérations ; ainsi un @code{fisis} après un
-@code{ceses} sera placé au-dessus du @code{ceses}.  En d'autres termes,
-une quarte doublement augmentée demeure considérée comme un intervavlle
-plus petit qu'une quinte diminuée, bien que la quarte doublement
-augmentée soit de sept demi-tons et la quinte diminuée de seulement six
-demi-tons.
-
-Les signes de changement d'octave @code{'} et @code{,} peuvent être
-ajoutés pour hausser ou baisser la note d'une octave supplémentaire.
+@item
+Un signe de changement d'octave @code{'} ou @code{,} peut être ajouté
+pour hausser ou baisser la note d'une octave par rapport à la hauteur
+calculée sans spécification.
+
+@item
+Ces signes de changement d'octave peuvent être multipliés. Par exemple,
+@code{''}@tie{}ou@tie{}@code{,,} ajouteront une octave supplémentaire.
+
+@item
 Lorsque l'on entre en mode @code{\relative}, une hauteur absolue de
 départ peut être spécifiée, et agira dès lors comme si elle précédait la
-première note de @var{musicexpr}.  Si aucune hauteur de départ n'est
-spécifiée, le do central sert de point de départ.
+première note de @var{musicexpr}.
 
-Voici le mode \relative en action.
-@lilypond[quote,fragment,ragged-right,verbatim]
-\relative c'' {
-  b c d c b c bes a
+@end itemize
+
+Voici le mode @code{\relative} en action.
+
+@lilypond[verbatim,quote]
+\relative c {
+  \clef bass
+  c d e f
+  g a b c
+  d e f g
 }
 @end lilypond
 
 On utilise les signes de changement d'octave pour les intervalles
 dépassant la quarte.
 
-@lilypond[quote,ragged-right,fragment,verbatim]
+@lilypond[verbatim,quote]
 \relative c'' {
-  c g c f, c' a, e''
+  c g c f,
+  c' a, e'' c
+}
+@end lilypond
+
+Bien que ne comportant aucun signe de changement d'octave, une séquence
+de notes peut tout à fait couvrir un intervalle important.
+
+@lilypond[verbatim,quote]
+\relative c {
+  c f b e
+  a d g c
+}
+@end lilypond
+
+Lorsque plusieurs blocs @code{\relative} sont imbriqués, c'est la
+dernière clause @code{\relative} qui est prise en compte.
+
+@lilypond[verbatim,quote]
+\relative c' {
+  c d e f
+  \relative c'' {
+    c d e f
+  }
+}
+@end lilypond
+
+@code{\relative} est sans effet sur un bloc @code{\chordmode}.
+
+@lilypond[verbatim,quote]
+\new Staff {
+  \relative c''' {
+    \chordmode { c1 }
+  }
+  \chordmode { c1 }
 }
 @end lilypond
 
+@code{\relative} n'est pas permis au sein d'un bloc @code{\chordmode}.
+
+Pour utiliser le mode d'octave relative dans de la musique transposée,
+une clause @code{\relative} additionnelle doit être placée au sein du
+bloc @code{\transpose}. 
+
+@lilypond[verbatim,quote]
+\relative c' {
+  d e
+  \transpose f g {
+    d e
+    \relative c' {
+      d e
+    }
+  }
+}
+@end lilypond
+
+
+@cindex accords et octave relative
+@cindex octave relative et accords
+
 Si l'expression précédente est un accord, c'est la première note de
 l'accord qui détermine l'emplacement de la première note du prochain
-accord.
+accord.  A l'intérieur de l'accord, les notes sont placées relativement
+à celle qui précède.  Examinez avec attention l'exemple suivant, et tout
+particulièrement le positionnement des do.
 
-@lilypond[quote,ragged-right,fragment,verbatim]
+@lilypond[verbatim,quote]
 \relative c' {
-  c <c e g>
-  <c' e g>
-  <c, e' g>
+  c
+  <c e g>
+  <c' e g'>
+  <c, e, g''>
 }
 @end lilypond
 
-La hauteur après @code{\relative} contient un nom de note.
+Comme nous l'avons vu, l'octaviation est déterminée sans tenir compte
+des altérations.  Ainsi un mi double-dièse après un si naturel sera
+placé au-dessus de celui-ci, alors qu'un fa double-bémol se retrouvera
+en dessous.  En d'autres termes, une quarte doublement augmentée
+demeure considérée comme un intervalle plus petit qu'une quinte
+diminuée, bien que la quarte doublement augmentée soit de sept demi-tons
+et la quinte diminuée de seulement six demi-tons.
 
-La conversion en mode \relative n'affectera pas les sections @code{\transpose},
-@code{\chordmode} ou @code{\relative} situées dans son argument.  Pour
-utiliser \relative dans de la musique transposée, un code
-@code{\relative} additionnel doit être placé dans @code{\transpose}.
+@lilypond[verbatim,quote]
+\relative c'' {
+  c2 fis
+  c2 ges
+  b2 eisis
+  b2 feses
+}
+@end lilypond
+
+
+@seealso
+Glossaire musicologique :
+@rglos{fifth},
+@rglos{interval},
+@rglos{Pitch names}.
+
+Manuel de notation :
+@ref{Vérifications d'octave}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
+
+Référence des propriétés internes :
+@rinternals{RelativeOctaveMusic}.
 
 
 @node Altérations
 @unnumberedsubsubsec Altérations
 @translationof Accidentals
 
-@cindex noms de note, hollandais
-@cindex noms de note, par défaut
-
-Dans la notation par défaut, un dièse est formé en ajoutant @code{-is}
-après le nom de note, un bémol en ajoutant @code{-es}.  Les
-double-dièses et double-bémols sont obtenus en ajoutant @code{-isis}
-ou @code{-eses} au nom de note.
+@cindex altération
+@cindex armure
+@cindex clef
 
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-a2 ais a aes
-a2 aisis a aeses
-@end lilypond
+@c duplicated in Key signature and in Accidentals
+@warning{Les nouveaux utilisateurs sont parfois déroutés par la gestion
+des altérations et de l'armure.  Pour LilyPond, une hauteur n'est que du
+matériau brut ; l'armure et la clef ne feront que déterminer comment ce
+matériau sera retranscrit.  Un simple @code{c} signifie tout bonnement 
+@w{@qq{ do naturel}} quels que soient l'armure et la clef en question.
+Pour plus d'information, reportez-vous au chapitre
+@rlearning{Altérations et armure}.} 
 
-@noindent
-Ce sont les noms de note hollandais.  En hollandais, on élide @code{aes}
-pour écrire @code{as}, mais les deux formes sont acceptées.  De manière
-similaire, on accepte aussi bien @code{es} que @code{ees}.
+@cindex noms de note, hollandais
+@cindex noms de note, par défaut
+@cindex dièse
+@cindex bémol
+@cindex double dièse
+@cindex double bémol
+@cindex flat, double
+@cindex naturel
+@cindex bécarre
+
+Dans la notation par défaut, un @notation{dièse} est formé en ajoutant
+@code{-is} après le nom de note, un @notation{bémol} en ajoutant
+@code{-es}.  Les @notation{double-dièses} et @notation{double-bémols}
+sont obtenus en ajoutant @code{-isis} ou @code{-eses} au nom de note.
+Ce sont les noms de note hollandais.  Pour les autres langues, consultez 
+@ref{Noms de note dans d'autres langues}.
 
-@lilypond[fragment,quote,ragged-right,verbatim,relative=2]
-a2 as e es
+@lilypond[verbatim,quote,relative=2]
+ais1 aes aisis aeses
 @end lilypond
 
 Un bécarre annule l'effet d'une altération, qu'elle soit accidentelle
@@ -208,24 +312,13 @@ ou à l'armure.  Cependant, dans la syntaxe des noms de note, les
 bécarres ne s'écrivent pas avec un suffixe ; un simple nom de note
 donnera une note bécarre.
 
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
+@lilypond[verbatim,quote,relative=2]
 a4 aes a2
 @end lilypond
 
-LilyPond interprète l'entrée @code{d e f} comme @qq{imprimer un ré
-naturel, un mi naturel et un fa naturel}, sans tenir compte de l'armure.
-Pour plus d'information à propos de la distinction entre le contenu
-musical et sa représentation, voir @rlearning{Altérations et armure}.
-
-@lilypond[fragment,quote,ragged-right,verbatim,relative]
-\key d \major
-d e f g
-d e fis g
-@end lilypond
-
-
 @cindex quarts de ton
-@cindex demi-bémols, demi-dièses
+@cindex demi-bémols
+@cindex demi-dièses
 
 Les demi-bémols et demi-dièses s'écrivent en ajoutant respectivement
 @code{-eh} et @code{-ih}. Voici une série de dos altérés en hauteurs
@@ -238,40 +331,82 @@ ceseh1 ces ceh c cih cis cisih
 Les micro-intervalles sont aussi exportés dans le fichier MIDI.
 
 
-@cindex altération, de précaution
-@cindex altération, entre parenthèses
 @cindex altération de précaution
-@funindex ?
 @cindex altération entre parenthèses
+@cindex précaution, altération de
+@cindex parenthèses, altération entre
+
+@funindex ?
 @funindex !
 
 Normalement, les altérations sont imprimées automatiquement, mais il se
 peut que vous vouliez les imprimer manuellement.  On peut forcer
 l'impression d'une altération , dite @qq{de précaution}, en ajoutant un
-point d'exclamation @samp{!} après la hauteur de note.  Une altération
+point d'exclamation @code{!} après la hauteur de note.  Une altération
 entre parenthèses peut être obtenue en ajoutant un point d'interrogation
-@samp{?} après la hauteur de note.  Ces signes peuvent aussi être
+@code{?} après la hauteur de note.  Ces signes peuvent aussi être
 utilisés pour imprimer des bécarres.
 
-@lilypond[quote,ragged-right,fragment,verbatim,relative=1]
-cis cis cis! cis? c c? c! c
+@lilypond[verbatim,quote,relative=2]
+cis cis cis! cis? c c c! c?
+@end lilypond
+
+@cindex altération et liaison de tenue
+@cindex liaison de tenue et altération
+
+Lorsqu'une note est prolongée par une liaison de tenue, l'altération ne
+sera réimprimée que s'il y a un saut de ligne.
+
+@lilypond[verbatim,quote,relative=2]
+cis1 ~ cis ~
+\break
+cis
 @end lilypond
 
 
 @snippets
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+@lilypondfile[verbatim,lilyquote,texidoc, doctitle]
 {preventing-extra-naturals-from-being-automatically-added.ly}
 
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{makam-example.ly}
+
 
 @seealso
-Référence du programme : @rinternals{LedgerLineSpanner},
-@rinternals{NoteHead}.
+Glossaire musicologique :
+@rglos{sharp},
+@rglos{flat},
+@rglos{double sharp},
+@rglos{double flat},
+@rglos{Pitch names},
+@rglos{quarter tone}.
+
+Manuel d'initiation :
+@rlearning{Altérations et armure}.
+
+Manuel de notation :
+@ref{Altérations accidentelles automatiques},
+@ref{Altérations accidentelles suggérées},
+@ref{Noms de note dans d'autres langues}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
+
+Références internes du programme :
+@rinternals{Accidental_engraver},
+@rinternals{Accidental},
+@rinternals{AccidentalCautionary},
+@rinternals{accidental-interface}.
 
 L'impression automatique des altérations peut être affinée de plusieurs
-manières.  Pour plus d'information, voir @ref{Altérations accidentelles automatiques}.
+manières.  Pour plus d'information, voir 
+@ref{Altérations accidentelles automatiques}. 
 
 
+@cindex accidentel, quart de ton
+@cindex quart de ton
+
 @knownissues
 
 Il n'y a pas de standard universellement accepté pour noter le bémol et
@@ -284,70 +419,154 @@ LilyPond n'est donc conforme à aucun standard.
 @unnumberedsubsubsec Noms de note dans d'autres langues
 @translationof Note names in other languages
 
-Vous disposez de jeux prédéfinis de noms de notes pour plusieurs autres
+@cindex notes, noms selon la langue
+@cindex noms de note, langues
+@cindex langues, noms de note
+
+Vous disposez de jeux prédéfinis de noms de note pour plusieurs autres
 langues.  Pour les utiliser, incluez le fichier d'initialisation
 spécifique à la langue voulue.  Par exemple, pour les langues romanes,
-ajoutez @code{\include "italiano.ly"} au début du fichier source.  Les
-fichiers de langues disponibles ainsi que les noms de notes utilisés
+ajoutez @w{@code{\include "italiano.ly"}} au début du fichier source.
+
+@warning{Dans la mesure où certains fichiers d'initialisation, comme 
+@w{@code{predefined-fretboards.ly}}, utilisent les conventions bataves,
+la commande @code{\include} concernant la langue que vous décirez
+utiliser doît intervenir après toutes les autres inclusions de fichier
+d'initialisation de LilyPond.}
+
+Les fichiers de langue disponibles ainsi que les noms de note utilisés
 sont les suivants :
 
-@cindex noms de note, autres langues
-@example
-                       Noms de note              dièse       bémol      double          double
-                                                                        dièse           bémol
-nederlands.ly  c   d   e   f   g   a   bes b   -is         -es          -isis           -eses
-english.ly     c   d   e   f   g   a   bf  b   -s/-sharp   -f/-flat     -ss/-x/         -ff/
-                                                                        -sharpshsarp    -flatflat
-deutsch.ly     c   d   e   f   g   a   b   h   -is         -es          -isis           -eses
-norsk.ly       c   d   e   f   g   a   b   h   -iss/-is    -ess/-es     -ississ/-isis   -essess/-eses
-svenska.ly     c   d   e   f   g   a   b   h   -iss        -ess         -ississ         -essess
-italiano.ly    do  re  mi  fa  sol la  sib si  -d          -b           -dd             -bb
-catalan.ly     do  re  mi  fa  sol la  sib si  -d/-s       -b           -dd/-ss         -bb
-espanol.ly     do  re  mi  fa  sol la  sib si  -s          -b           -ss             -bb
-@end example
+@quotation
+@multitable {@file{nederlands.ly}} {do re mi fa sol la sib si}
+@headitem Fichier linguistique
+  @tab Nom des notes
+@item @file{nederlands.ly}
+  @tab c d e f g a bes b
+@item @file{arabic.ly}
+  @tab do re mi fa sol la sib si
+@item @file{catalan.ly}
+  @tab do re mi fa sol la sib si
+@item @file{deutsch.ly}
+  @tab c d e f g a b h
+@item @file{english.ly}
+  @tab c d e f g a bf b
+@item @file{espanol.ly}
+  @tab do re mi fa sol la sib si
+@item @file{italiano.ly}
+  @tab do re mi fa sol la sib si
+@item @file{norsk.ly}
+  @tab c d e f g a b h
+@item @file{portugues.ly}
+  @tab do re mi fa sol la sib si
+@item @file{suomi.ly}
+  @tab c d e f g a b h
+@item @file{svenska.ly}
+  @tab c d e f g a b h
+@item @file{vlaams.ly}
+  @tab do re mi fa sol la sib si
+@end multitable
+@end quotation
+
+@noindent
+et les suffixes d'altération correspondants :
+
+@quotation
+@multitable {@file{nederlands.ly}} {-s/-sharp} {-ess/-es} {-ss/-x/-sharpsharp} {-essess/-eses}
+@headitem Fichier linguistique
+  @tab dièse @tab bémol @tab double dièse @tab double bémol
+@item @file{nederlands.ly}
+  @tab -is @tab -es @tab -isis @tab -eses
+@item @file{arabic.ly}
+  @tab -d @tab -b @tab -dd @tab -bb
+@item @file{catalan.ly}
+  @tab -d/-s @tab -b @tab -dd/-ss @tab -bb
+@item @file{deutsch.ly}
+  @tab -is @tab -es @tab -isis @tab -eses
+@item @file{english.ly}
+  @tab -s/-sharp @tab -f/-flat @tab -ss/-x/-sharpsharp
+    @tab -ff/-flatflat
+@item @file{espanol.ly}
+  @tab -s @tab -b @tab -ss/-x @tab -bb
+@item @file{italiano.ly}
+  @tab -d @tab -b @tab -dd @tab -bb
+@item @file{norsk.ly}
+  @tab -iss/-is @tab -ess/-es @tab -ississ/-isis
+    @tab -essess/-eses
+@item @file{portugues.ly}
+  @tab -s @tab -b @tab -ss @tab -bb
+@item @file{suomi.ly}
+  @tab -is @tab -es @tab -isis @tab -eses
+@item @file{svenska.ly}
+  @tab -iss @tab -ess @tab -ississ @tab -essess
+@item @file{vlaams.ly}
+  @tab -k @tab -b @tab -kk @tab -bb
+@end multitable
+@end quotation
 
 @noindent
 Notez qu'en hollandais, en allemand, en norvégien et en suédois, un
-@samp{la} altéré de bemol se note @code{aes} et @code{aeses}.  Ces
-formes sont contractées en @code{as} et @code{ases} (ou plus communément
-@code{asas}).  Dans certains fichiers linguistiques, seules ces formes
-abrégées ont été définies ; ceci s'applique aussi aux suffixes pour les
-quarts de ton.
+@notation{la} altéré de @notation{bémol} se note @code{aes} et
+@code{aeses}.  Ces formes sont contractées en @code{as} et @code{ases}
+(ou plus communément @code{asas}).  Dans certains fichiers
+linguistiques, seules ces formes abrégées ont été définies.
+
+@lilypond[verbatim,quote,relative=2]
+a2 as e es a ases e eses
+@end lilypond
+
+
+@cindex microtonalités
+@cindex demi-dièse
+@cindex demi-bémol
+@cindex sesqui-dièse
+@cindex sesqui-bémol
 
 @noindent
 Certaines musiques utilisent des microtonalités, pour lesquelles les
 altérations sont des fractions de dièse ou bémol @qq{normaux}.  Le
 tableau suivant répertorie les noms de note en quart de ton, tels que
-définis dans plusieurs fichiers linguistiques. Les préfixes @q{semi-} et
-@q{sesqui-} correspondent au @q{demi-} et @q{trois demis}.  À noter
-qu'aucune définition n'existe à ce jour pour le norvégien, le suédois,
-le catalan et l'espagnol.
+définis dans plusieurs fichiers linguistiques. Les préfixes @emph{semi-}
+et @emph{sesqui-} correspondent au @emph{demi-} et @emph{trois demis}.
+À noter qu'aucune définition n'existe à ce jour pour le norvégien, le
+suédois, le catalan et l'espagnol.
+
+@quotation
+@multitable {@file{nederlands.ly}} {@b{semi-sharp}} {@b{semi-flat}} {@b{sesqui-sharp}} {@b{sesqui-flat}}
+@headitem Fichier linguistique
+  @tab semi-dièse @tab semi-bémol @tab sesqui-dièse @tab sesqui-bémol
+@item @file{nederlands.ly}
+  @tab -ih @tab -eh @tab -isih @tab -eseh
+@item @file{arabic.ly}
+  @tab -sd @tab -sb @tab -dsd @tab -bsb
+@item @file{deutsch.ly}
+  @tab -ih @tab -eh @tab -isih @tab -eseh
+@item @file{english.ly}
+  @tab -qs @tab -qf @tab -tqs @tab -tqf
+@item @file{espanol.ly}
+  @tab -cs @tab -cb @tab -tcs @tab -tcb
+@item @file{italiano.ly}
+  @tab -sd @tab -sb @tab -dsd @tab -bsb
+@item @file{portugues.ly}
+  @tab -sqt @tab -bqt @tab -stqt @tab -btqt
+@end multitable
+@end quotation
 
-@c What about Turkish Maquam music and similar microtonal systems?
-@c
-@c Note that the term "three-quarter-sharp/-flat" used in lilypond's source code 
-@c is actually misleading since the alteration is in fact one and a half
-@c of a regular sharp/flat. Whence the naming "sesqui-sharp/-flat" used below.
 
-@example
-                        Noms de note           semi-   semi-  sesqui-  sesqui-
-                                               dièse   bémol  dièse    bémol
-
-nederlands.ly  c   d   e   f   g   a   bes b   -ih     -eh    -isih    -eseh
-english.ly     c   d   e   f   g   a   bf  b   -qs     -qf    -tqs     -tqf
-deutsch.ly     c   d   e   f   g   a   b   h   -ih     -eh    -isih    -eseh
-norsk.ly       c   d   e   f   g   a   b   h   
-svenska.ly     c   d   e   f   g   a   b   h   
-italiano.ly    do  re  mi  fa  sol la  sib si  -sd     -sb    -dsd     -bsb
-catalan.ly     do  re  mi  fa  sol la  sib si  
-espanol.ly     do  re  mi  fa  sol la  sib si  
-@end example
+@seealso
+Glossaire musicologique :
+@rglos{Pitch names}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
 
 
 @node Modification de plusieurs hauteurs
 @subsection Modification de plusieurs hauteurs
 @translationof Changing multiple pitches
 
+Cette partie traite de la manière de modifier les hauteurs de note.
+
 @menu
 * Vérifications d'octave::                
 * Transposition::                   
@@ -358,64 +577,74 @@ espanol.ly     do  re  mi  fa  sol la  sib si
 @translationof Octave checks
 
 @cindex vérification d'octave
+@cindex octave, vérification
+@cindex contrôle des hauteurs
 
-Les tests d'octave rendent la correction d'erreurs d'octave plus facile
-dans le mode d'octave @code{relative} : une note peut être suivie de
-@code{=}@var{apostrophes/virgules} pour indiquer à quelle octave absolue
-elle devrait être.  Dans l'exemple suivant,
+@funindex =
+@funindex \octaveCheck
+@funindex octaveCheck
+@funindex controlpitch
 
-@example
-\relative c'' @{ c='' b=' d,='' @}
-@end example
 
-@noindent
-le @code{d} générera un avertissement, puisqu'on attend un @code{d''}
-mais qu'on obtient un @code{d'} --- il n'y a qu'une tierce entre
-@code{b'} et @code{d''}.  Sur la partition, l'octave sera corrigée pour
-donner un @code{d''} et la prochaine note sera calculée en fonction de
-@code{d''} et non de @code{d'}.
+Les tests d'octave rendent la correction d'erreurs d'octave plus facile
+dans le mode d'octave @code{relative} -- un @code{,} ou un @code{'}
+oublié, ça n'arrive pas qu'aux autres ! : une note peut être suivie de 
+@w{@code{=}@var{apostrophes/virgules}} pour indiquer à quelle octave
+absolue elle devrait être.  Dans l'exemple suivant, le @code{d} générera
+un avertissement, puisqu'on attend un @code{d''} mais qu'on obtient un
+@code{d'} -- il n'y a qu'une tierce entre @code{b'} et @code{d''}.  Sur
+la partition, l'octave sera corrigée pour donner un @code{d''} et la
+prochaine note sera calculée en fonction de @code{d''} et non de
+@code{d'}. 
+
+@lilypond[verbatim,quote]
+\relative c'' {
+  c2 d='4 d
+  e2 f
+}
+@end lilypond
 
 Il existe aussi une vérification d'octave qui ne produit pas de musique
-imprimée, ayant pour syntaxe
-
-@example
-\octaveCheck @var{hauteur}
-@end example
+imprimée, ayant pour syntaxe @w{@code{\octaveCheck}
+@var{hauteur_référence}} -- @var{hauteur_référence} étant spécifiée en
+mode absolu.  Cette commande vérifie que l'intervalle entre la note qui
+précède et @var{hauteur_référence} est inférieure à la quinte comme il
+se doît en mode relatif.  Dans le cas contraire, un message sera émis et
+la note précédente ne sera pas modifiée.  Les notes suivantes seront,
+par contre, positionnées relativement à @var{hauteur_référence}.
+
+@lilypond[verbatim,quote]
+\relative c'' {
+  c2 d
+  \octaveCheck c'
+  e2 f
+}
+@end lilypond
 
-Cette commande vérifie que la @var{hauteur} considérée sans apostrophe
-ni virgule et comme hauteur relative, est la même que la @var{hauteur}
-absolue considérée avec ses éventuelles apostrophes ou virgules.  Sinon,
-un avertissement est émis et l'octave est corrigée.  La @var{hauteur}
-n'est pas considérée comme une note, et donc n'est pas imprimée.
+Dans les deux mesures qui suivent, les premier et troisième
+@code{\octaveCheck} échouent, mais le deuxième est concluant.
 
-Dans l'exemple ci-dessous, le premier test réussit, puisque le @code{e}
---- dans le mode @code{relative} --- est au plus à une quarte de
-@code{a'}.  Cependant, le deuxième test produit un avertissement,
-puisque le @code{e} est à quinte de @code{b'}.  Le message
-d'avertissement est émis, et l'octave est corrigée afin que les notes
-suivantes soient à nouveau à la bonne octave.
+@lilypond[verbatim,quote]
+\relative c'' {
+  c4 f g f
+
+  c4
+  \octaveCheck c'
+  f
+  \octaveCheck c'
+  g
+  \octaveCheck c'
+  f
+}
+@end lilypond
 
-@example
-\relative c' @{
-  e
-  \octaveCheck a'
-  \octaveCheck b'
-@}
-@end example
 
-L'octave d'une note qui suit un test d'octave est déterminée selon la
-note précédente.  Dans l'exemple suivant, la dernière note est un
-@code{a'}, au-dessus du do central.  Cela veut dire que le test
-@code{\octaveCheck} réussit, et peut donc être enlevé sans changer le
-résultat sur la partition.
+@seealso
+Morceaux choisis :
+@rlsr{Pitches}.
 
-@lilypond[quote,ragged-right,verbatim,fragment]
-\relative c' {
-  e
-  \octaveCheck b
-  a
-}
-@end lilypond
+Référence des propriétés internes :
+@rinternals{RelativeOctaveCheck}.
 
 
 @node Transposition
@@ -424,47 +653,73 @@ résultat sur la partition.
 
 @cindex transposition
 @cindex transposition des hauteurs
+
 @funindex \transpose
+@funindex transpose
 
 Une expression musicale peut être transposée avec @code{\transpose}.
 Voici la syntaxe :
+
 @example
-\transpose @var{note_de départ} @var{note_d_arrivée} @var{musicexpr}
+\transpose @var{note_de_départ} @var{note_d_arrivée} @var{musicexpr}
 @end example
 
+@noindent
 Cela signifie que @var{musicexpr} est transposé d'un intervalle entre
 les notes @var{note_de_départ} et @var{note_d_arrivée} : toute note
-dont la hauteur était @code{note_de_départ}
-est changée en @code{note_d_arrivée}.
+dont la hauteur était @code{note_de_départ} est changée en
+@code{note_d_arrivée} et les autres note seront changées selon le même
+intervalle. 
+
+@warning{La musique contenue dans un bloc @code{@bs{}transpose} est en
+octaves absolus, sauf à inclure dans ce même bloc une clause
+@code{@bs{}relative}.} 
 
 Prenons comme exemple une pièce écrite en ré majeur.  Si cette pièce est
 un peu trop basse pour l'interprète, elle peut être transposée en mi
-majeur avec
-@example
-\transpose d e @dots{}
-@end example
+majeur.  Vous noterez que l'armure est modifiée automatiquement.
+
+@lilypond[verbatim,quote]
+\transpose d e {
+  \relative c' {
+    \key d \major
+    d4 fis a d
+  }
+}
+@end lilypond
+
+@cindex transpositeur, instrument
+@cindex instruments transpositeurs
 
-Regardons maintenant une partie écrite pour violon --- un instrument en
+Regardons maintenant une partie écrite pour violon -- un instrument en
 ut.  Si cette partie doit être jouée par une clarinette en la (écrite à
 la tierce mineure supérieure, un do écrit donnant un la réel), la
 transposition suivante créera la partie appropriée.
 
-@example
-\transpose a c @dots{}
-@end example
+@lilypond[verbatim,quote]
+\transpose a c' {
+  \relative c' {
+    \key c \major
+    c4 d e g
+  }
+}
+@end lilypond
+
+@noindent
+La présence de @w{@code{\key c \major}} s'explique par le fait que, bien
+que les notes soient effectivement transposées, l'armure ne sera
+imprimée que dans la mesure où elle est explicitement mentionnée.
 
 @code{\transpose} fait la distinction entre les notes enharmoniques :
-@code{\transpose c cis} et @code{\transpose c des} transposeront la
-pièce un demi-ton plus haut.  Mais la première version écrira des
+@w{@code{\transpose c cis}} et @w{@code{\transpose c des}} transposeront
+la pièce un demi-ton plus haut.  Mais la première version écrira des
 dièses et la deuxième des bémols.
 
-@lilypond[quote,ragged-right,verbatim]
-mus = { \key d \major cis d fis g }
+@lilypond[verbatim,quote]
+music = \relative c' { c d e f }
 \new Staff {
-  \clef "F" \mus
-  \clef "G"
-  \transpose c g' \mus
-  \transpose c f' \mus
+  \transpose c cis { \music }
+  \transpose c des { \music }
 }
 @end lilypond
 
@@ -472,38 +727,68 @@ On peut aussi utiliser @code{\transpose} pour entrer des notes écrites
 pour un instrument transpositeur.  Normalement, les hauteurs dans
 LilyPond sont écrites en ut, c'est à dire en sons réels, mais elles
 peuvent être écrites dans un autre ton.  Quand, par exemple, on écrit
-pour une trompette en si bémol, commençant sur ré note réelle, on
+pour une trompette en si bémol, commençant sur un ré à l'oreille, on
 pourrait écrire 
+
 @example
-\transpose c bes @{ e4 @dots{} @}
+musiqueEnSiBemol = @{ e4 @dots{} @}
+\transpose c bes, \musiqueEnSiBemol
 @end example
 
-Pour imprimer cette musique en si bémol à nouveau --- et de ce fait
+@noindent
+Pour imprimer cette musique en si bémol à nouveau -- et de ce fait
 produire une partie de trompette, au lieu d'un conducteur en notes
 réelles, on utilisera un deuxième @code{transpose}
 
 @example
-\transpose bes c @{ \transpose c bes @{ e4 @dots{} @} @}
+musiqueEnSiBemol = @{ e4 @dots{} @}
+\transpose f c' @{ \transpose c bes, \musiqueEnSiBemol @}
 @end example
 
+@noindent
+Pour plus d'information à ce sujet, consultez 
+@ref{Instruments transpositeurs}.
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{transposing-pitches-with-minimum-accidentals-smart-transpose.ly}
+
 
 @seealso
-Référence du programme : @rinternals{TransposedMusic}.
+Manuel de notation :
+@ref{Octaves relatives},
+@ref{Instruments transpositeurs}.
 
-Exemples : @rlsr{Pitches}.
+Morceaux choisis :
+@rlsr{Pitches}.
 
+Référence des propriété internes :
+@rinternals{TransposedMusic}.
+
+
+@funindex \transpose
+@funindex transpose
+@funindex \chordmode
+@funindex chordmode
+@funindex \relative
+@funindex relative
 
 @knownissues
 
-Si vous voulez utiliser en même temps @code{\transpose} et
-@code{\relative}, vous devez mettre @code{\transpose} en dehors de
-@code{\relative}, puisque @code{\relative} n'aura aucun effet sur la
-musique apparaissant dans un @code{\transpose}.
+Si vous voulez utiliser en même temps @code{@bs{}transpose} et
+@code{@bs{}relative}, vous devez mettre @code{@bs{}transpose} en dehors de
+@code{@bs{}relative}, puisque @code{@bs{}relative} n'aura aucun effet sur la
+musique apparaissant dans un @code{@bs{}transpose}.
 
 @node Gravure des hauteurs
 @subsection Gravure des hauteurs
 @translationof Displaying pitches
 
+Nous allons voir dans cette partie comment influer sur la gravure des
+hauteurs. 
+
 @menu
 * Clefs::                        
 * Armure::               
@@ -517,84 +802,107 @@ musique apparaissant dans un @code{\transpose}.
 @unnumberedsubsubsec Clefs
 @translationof Clef
 
+@cindex clé de sol
+@cindex clé de fa
+@cindex clé d'ut
+
 @funindex \clef
+@funindex clef
 
-La clé indique quelles lignes de la portée correspondent à telles
-hauteurs.  Elle est réglée par la commande @code{\clef}.
+La clé indique quelles lignes de la portée correspondent à quelles
+hauteurs.  Elle peut changer au fil du morceau, comme dans l'exemple
+suivant qui indique le do médium dans différentes clefs :
 
-@lilypond[quote,ragged-right,fragment,verbatim]
-{ c''2 \clef alto g'2 }
+@lilypond[verbatim,quote,relative=1]
+\clef treble
+c2 c
+\clef alto
+c2 c
+\clef tenor
+c2 c
+\clef bass
+c2 c
 @end lilypond
 
-@cindex clé de sol
-@cindex clé de fa
-@cindex clé d'ut
+LilyPond met à votre disposition d'autres clefs supplémentaires :
+
+@lilypond[verbatim,quote,relative=1]
+\clef french
+c2 c
+\clef soprano
+c2 c
+\clef mezzosoprano
+c2 c
+\clef baritone
+c2 c
+
+\break
+
+\clef varbaritone
+c2 c
+\clef subbass
+c2 c
+\clef percussion
+c2 c
+\clef tab
+c2 c
+
+\break
+
+\clef G
+c2 c
+\clef F
+c2 c
+\clef C
+c2 c
+
+@end lilypond
+
+Il esxiste d'autres clefs, qui sont plus particulièrement destinées à la
+musique ancienne.  Voir à ce sujet @ref{Clefs anciennes}.
+
+@cindex transposition et clefs
+@cindex clef et transposition
+@cindex octave et clef
+@cindex chorale, clef de tenor
+@cindex tenor, clef
 
-Les clés prises en charge sont
-
-@multitable @columnfractions .33 .66
-@headitem Clef @tab Position
-@item @code{treble}, violin, G, G2 @tab Clé de sol 2e ligne
-@item @code{alto, C} @tab Clé d'ut 3e ligne
-@item @code{tenor} @tab Clé d'ut 4e ligne
-@item @code{bass, F} @tab Clé de fa 4e ligne
-@item @code{french} @tab Clé de sol 1e ligne
-@item @code{soprano} @tab Clé d'ut 1e ligne
-@item @code{mezzosoprano} @tab Clé d'ut 2e ligne
-@item @code{baritone} @tab Clé d'ut 5e ligne
-@item @code{varbaritone} @tab Clé de fa 3e ligne
-@item @code{subbass} @tab Clé de fa 5e ligne
-@item @code{percussion} @tab Clé de percussion
-@item @code{tab} @tab Clé de tablature
-@end multitable
 
 En ajoutant @code{_8} ou @code{^8} au nom de la clé, celle-ci est
 transposée à l'octave respectivement inférieure ou supérieure, et
 @code{_15} ou @code{^15} la transpose de deux octaves.  L'argument
-@var{clefname} doit être mis entre guillemets lorsqu'il contient un
-caractère @qq{souligné} ou des chiffres.  Par exemple,
+@var{clefname} doit être mis entre guillemets lorsqu'il contient des
+caractères supplémentaires.  Par exemple,
 
 
-@cindex choral tenor clef
-@lilypond[quote,ragged-right,verbatim,fragment,relative=1]
-\clef "G_8" c4
+@lilypond[verbatim,quote,relative=2]
+\clef treble
+c2 c
+\clef "treble_8"
+c2 c
+\clef "bass^15"
+c2 c
 @end lilypond
 
 
-@commonprop
-
-La commande @code{\clef "treble_8"} équivaut à définir @code{clefGlyph},
-@code{clefPosition} --- qui contrôle la position verticale de la clé ---
-@code{middleCPosition} et @code{clefOctavation}.  Une clé est imprimée
-lorsque l'une de ces propriétés est changée.  Les exemples suivant font
-apparaître des possibilités de réglage manuel de ces propriétés.
-
-@lilypond[quote,ragged-right,verbatim]
-{
-  \set Staff.clefGlyph = #"clefs.F"
-  \set Staff.clefPosition = #2
-  c'4
-  \set Staff.clefGlyph = #"clefs.G"
-  c'4
-  \set Staff.clefGlyph = #"clefs.C"
-  c'4
-  \set Staff.clefOctavation = #7
-  c'4
-  \set Staff.clefOctavation = #0
-  \set Staff.clefPosition = #0
-  c'4
-  \clef "bass"
-  c'4
-  \set Staff.middleCPosition = #4
-  c'4
-}
-@end lilypond
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{tweaking-clef-properties.ly}
 
 
 @seealso
-Dans ce manuel : @ref{Notes d'ornement}.
+Manuel de notation :
+@ref{Clefs anciennes}.
 
-Référence du programme : @rinternals{Clef}.
+Morceaux choisis:
+@rlsr{Pitches}.
+
+Référence des propriétés internes :
+@rinternals{Clef_engraver},
+@rinternals{Clef},
+@rinternals{OctavateEight},
+@rinternals{clef-interface}.
 
 
 @node Armure
@@ -602,10 +910,21 @@ Référence du programme : @rinternals{Clef}.
 @translationof Key signature
 
 @cindex armure
+
 @funindex \key
+@funindex key
+
+@c duplicated in Key signature and in Accidentals
+@warning{Les nouveaux utilisateurs sont parfois déroutés par la gestion
+des altérations et de l'armure.  Pour LilyPond, une hauteur n'est que du
+matériau brut ; l'armure et la clef ne feront que déterminer comment ce
+matériau sera retranscrit.  Un simple @code{c} signifie tout bonnement 
+@w{@qq{ do naturel}} quels que soient l'armure et la clef en question.
+Pour plus d'information, reportez-vous au chapitre
+@rlearning{Altérations et armure}.} 
 
 L'armure indique la tonalité dans laquelle la pièce doit être jouée.
-Elle comprend un ensemble d'altérations (dièses ou bémols) à la clé,
+Elle comprend un ensemble d'altérations (dièses ou bémols) à la clef,
 c'est-à-dire au début de la portée.
 
 On définit ou modifie l'armure avec la commande @code{\key}
@@ -614,111 +933,130 @@ On définit ou modifie l'armure avec la commande @code{\key}
 @code{\key} @var{hauteur} @var{mode}
 @end example
 
-@funindex \minor
 @funindex \major
+@funindex major
 @funindex \minor
+@funindex minor
 @funindex \ionian
+@funindex ionian
 @funindex \locrian
+@funindex locrian
 @funindex \aeolian
+@funindex aeolian
 @funindex \mixolydian
+@funindex mixolydian
 @funindex \lydian
+@funindex lydian
 @funindex \phrygian
+@funindex phrygian
 @funindex \dorian
+@funindex dorian
+
 @cindex modes anciens
+@cindex modes
+@cindex majeur
+@cindex mineur
+@cindex ionien
+@cindex locrien
+@cindex éolien
+@cindex mixolydien
+@cindex lydien
+@cindex phrygien
+@cindex dorien
 
+@noindent
 Ici, @var{mode} doit être @code{\major} ou @code{\minor} afin d'avoir
 respectivement @var{hauteur}-majeur ou @var{hauteur}-mineur.  Vous pouvez
 aussi avoir recours aux modes anciens que sont @code{\ionian},
 @code{\locrian}, @code{\aeolian}, @code{\mixolydian}, @code{\lydian},
 @code{\phrygian}, et @code{\dorian}.
 
-Cette commande fixe la propriété de contexte @code{Staff.keySignature}.
-Des armures inhabituelles peuvent être spécifiées en modifiant
-directement cette propriété.
-
-Les nouveaux utilisateurs s'embrouillent souvent dans les altérations et
-les armures, car des notes naturelles prennent ou non un bécarre selon
-l'armure.  Pour plus d'informations, voir @ref{Altérations} ou
-@rlearning{Altérations et armure}.
-
-@lilypond[quote,ragged-right,verbatim,relative=2,fragment]
+@lilypond[verbatim,quote,relative=2]
 \key g \major
-f1
+fis1
+f
 fis
 @end lilypond
 
 
-@commonprop
+@snippets
 
-Un bécarre est imprimé pour annuler toute altération précédente.  Ceci
-peut être supprimé en réglant la propriété
-@code{Staff.printKeyCancellation}.
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{preventing-natural-signs-from-being-printed-when-the-key-signature-changes.ly}
 
-@lilypond[quote,fragment,ragged-right,fragment,verbatim,relative=2]
-\key d \major
-a b cis d
-\key g \minor
-a bes c d
-\set Staff.printKeyCancellation = ##f
-\key d \major
-a b cis d
-\key g \minor
-a bes c d
-@end lilypond
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{non-traditional-key-signatures.ly}
 
 
 @seealso
-Référence du programme : @rinternals{KeyCancellation},
-@rinternals{KeySignature}.
+Glossaire musicologique :
+@rglos{church mode},
+@rglos{scordatura}.
+
+Manuel d'initiation :
+@rlearning{Altérations et armure}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
+
+Référence des propriétés internes :
+@rinternals{KeyChangeEvent},
+@rinternals{Key_engraver},
+@rinternals{Key_performer},
+@rinternals{KeyCancellation},
+@rinternals{KeySignature},
+@rinternals{key-cancellation-interface},
+@rinternals{key-signature-interface}.
 
 
 @node Marques d'octaviation
 @unnumberedsubsubsec Marques d'octaviation
 @translationof Ottava brackets
 
-Les marques d'octaviation, @emph{Ottava}, permettent d'introduire une
-transposition spécifique d'une octave pour la portée en cours.  C'est
-la fonction @code{ottava} qui s'en charge.
-
 @cindex ottava
 @cindex 15ma
+@cindex 8va
+@cindex 8ve
 @cindex octaviation
 
-@lilypond[quote,ragged-right,verbatim,fragment]
-\relative c''' {
-  a2 b
-  \ottava #1
-  a b
-  \ottava #0
-  a b
-}
+@funindex set-octavation
+@funindex \ottava
+@funindex ottava
+
+Les marques d'octaviation, @emph{Ottava}, permettent d'introduire une
+transposition spécifique d'une octave pour la portée en cours.  C'est
+la fonction @code{ottava} qui s'en charge.
+
+@lilypond[verbatim,quote,relative=2]
+a'2 b
+\ottava #1
+a b
+\ottava #0
+a b
 @end lilypond
 
 La fonction @code{ottava} peut aussi prendre en argument les
-valeurs -1@tie{}(pour 8va bassa), 2@tie{}(pour 15ma --- 2 octaves) ou
--2@tie{}(pour 15ma bassa).   En interne, cette fonction détermine les
-propriétés @code{ottavation} (p.ex. en @code{"8va"} ou @code{"8vb"})
-et @code{centralCPosition}.  Vous pouvez modifier le texte d'une marque
-d'octaviation en définissant @code{ottavation} après avoir fait appel
-à @code{ottava} :
-
-@lilypond[quote,ragged-right,verbatim]
-{
-  \ottava #1
-  \set Staff.ottavation = #"8"
-  c'''
-}
-@end lilypond
+valeurs -1@tie{}(pour 8va bassa), 2@tie{}(pour 15ma -- 2 octaves) ou
+-2@tie{}(pour 15ma bassa).   
 
 
-@seealso
-Référence du programme : @rinternals{OttavaBracket}.
+@snippets
 
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{ottava-text.ly}
 
-@knownissues
 
-@code{ottava} gère difficilement les changements de clé qui
-pourraient intervenir alors qu'elle est effective.
+@seealso
+Glossarire musicologique :
+@rglos{octavation}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
+
+Référence des propriétés internes :
+@rinternals{Ottava_spanner_engraver},
+@rinternals{OttavaBracket},
+@rinternals{ottava-bracket-interface}.
 
 
 @node Instruments transpositeurs
@@ -726,164 +1064,350 @@ pourraient intervenir alors qu'elle est effective.
 @translationof Instrument transpositions
 
 @cindex transposition, MIDI
+@cindex MIDI et transposition
 @cindex transposition, instrument
 
-Vous pouvez spécifier la tonalité d'un instrument transpositeur, ce
-qui est le cas pour de nombreux instruments à vent comme la clarinette
-(si bémol, la ou mi bémol), le cor (fa), ou la trompette (si bémol,
-ut, ré ou mi bémol).
+@funindex \transposition
+@funindex transposition
 
-Cette transposition s'indique après le mot-clé @code{\transposition}.
+Lorsque l'on saisit une partition d'ensemble incluant des instruments
+transpositeurs, certaines parties peuvent être dans une autre tonalité
+que la @notation{tonalité de concert}.  Il faudra en pareil cas indiquer
+la tonalité spécifique de ces @notation{instruments transpositeurs},
+sous peine de fichier MIDI erroné et de citations incorrectes.  Pour
+plus de détails sur les citations, consultez le chapitre 
+@ref{Citation d'autres voix}.
 
 @example
-\transposition bes   %% clarinette en si bémol
+\transposition @var{hauteur}
 @end example
 
-@noindent
-Cette commande détermine la propriété @code{instrumentTransposition},
-dont la valeur sera utilisée pour le fichier MIDI et en cas de
-citation.  Elle n'affecte en rien la manière dont les notes seront
-imprimées sur la portée.  Référez-vous à la section @ref{Transposition}
-pour obtenir un autre résultat.
-
 La hauteur donnée en argument à @code{\transposition} doit
 correspondre à la note entendue lorsqu'un @code{do} écrit sur la
-portée est joué par l'instrument transpositeur.  Par exemple, lorsque
+portée est joué par l'instrument transpositeur.  Cette hauteur doit être
+mentionnée en @notation{mode absolu}.  Par exemple, lorsque
 vous saisissez une partition en notes réelles, toutes les voix
-devraient être en ut ; pour les instruments transpositeurs, il faudra
-procéder de cette manière : 
+devraient être en ut ; si un instrument joue un ton au dessus, il faudra
+lui ajouter un @w{@code{\transposition d'}}.  La commande
+@code{\transposition} s'utilise @strong{si et seulement si} les notes à
+saisir @strong{ne sont pas} dans la tonalité de concert.
+
+Voici un fragment pour violon et clarinette en si bémol (@emph{B-flat})
+pour lequel les parties respectives ont été recopiées à partir du
+conducteur.  Les deux instruments sont à l'unisson.
+
+@lilypond[verbatim,quote]
+\new GrandStaff <<
+  \new Staff = "violin" {
+    \relative c'' {
+      \set Staff.instrumentName = #"Vln"
+      \set Staff.midiInstrument = #"violin"
+      % not strictly necessary, but a good reminder
+      \transposition c'
+
+      \key c \major
+      g4( c8) r c r c4
+    }
+  }
+  \new Staff = "clarinet" {
+    \relative c'' {
+      \set Staff.instrumentName = \markup { Cl (B\flat) }
+      \set Staff.midiInstrument = #"clarinet"
+      \transposition bes
+
+      \key d \major
+      a4( d8) r d r d4
+    }
+  }
+>>
+@end lilypond
 
-@example
-clarinet = @{
-  \transposition c'
-  ...
-@}
-saxophone = @{
-  \transposition c'
-  ...
-@}
-@end example
+La @code{\transposition} peut évoluer au cours d'un morceau.  Un
+clarinettiste peut être amené à jongler entre une clarinette en la et
+une autre en si bémol.
+
+@lilypond[verbatim,quote,relative=2]
+\set Staff.instrumentName = #"Cl (A)"
+\key a \major
+\transposition a
+c d e f
+\textLengthOn
+s1*0^\markup { Switch to B\flat clarinet }
+R1
+
+\key bes \major
+\transposition bes
+c2 g
+@end lilypond
 
-Lorsque vous entrez de la musique à partir d'une partie transposée,
-utilisez la commande @code{\transposition}.  Si l'on prend l'exemple
-des parties de cor, leur tonalité change souvent au cours d'un morceau ;
-en recopiant cette partie, utilisez @code{\transposition} ainsi :
 
-@example
-\transposition d'
-c'4^"en ré"
-...
-\transposition g'
-c'4^"en sol"
-...
-@end example
+@seealso
+Glossaire musicologique :
+@rglos{concert pitch},
+@rglos{transposing instrument}.
+
+Manuel de notation :
+@ref{Citation d'autres voix},
+@ref{Transposition}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
+
 
 @node Altérations accidentelles automatiques
 @unnumberedsubsubsec Altérations accidentelles automatiques
 @translationof Automatic accidentals
 @cindex Altérations accidentelles automatiques
 
-Une fonction a été créée pour regrouper les règles suivant lesquelles
-s'impriment les altérations.  Elle s'invoque de la manière suivante :
+@cindex altération, style
+@cindex altération, style par défaut
+@cindex accidentelles, altérations
+@cindex accidentelles automatiques
+@cindex automatiques, altérations accidentelles
+@cindex default accidental style
+
+@funindex set-accidental-style
+@funindex voice
+@funindex default
+
+
+LilyPond dispose d'une fonction chargée de regrouper les règles suivant 
+lesquelles s'impriment les altérations.  Elle s'invoque de la manière
+suivante : 
 
 @funindex set-accidental-style
 @example
-#(set-accidental-style 'REGLE)
+\new Staff <<
+  #(set-accidental-style 'REGLE)
+  @{ @dots{} @}
+>>
 @end example
 
-@c TODO: check the context stuff below
-@c -does it *really* work?
-@c -the default contexts as specified in
-@c  scm/music-function.scm seem to be different -vv
-
-Cette fonction prend pour argument le nom de la règle d'altération,
-auquel peut s'ajouter, comme argument facultatif, le contexte
-devant être affecté :
+La règle de gestion des altérations s'applique par défaut au contexte
+@code{Staff} en cours, exception faite des styles @code{piano} et
+@code{piano-cautionary} comme nous allons le voir.  Cette fonction
+accepte un éventuel argument supplémentaire chargé de spécifier
+le champ d'action de la règle à suivre.  A titre d'exemple, il faudra
+utiliser, pour que toutes les portées d'un même système -- contexte
+@code{StaffGroup} -- soient soumises à la même règle :
 
 @example
-#(set-accidental-style 'REGLE #('CONTEXTE#))
+#(set-accidental-style 'voice 'StaffGroup)
 @end example
 
-Si aucun contexte n'est spécifié, le contexte @code{Staff} sera affecté ; 
-cependant on peut souhaiter l'appliquer au contexte @code{Voice} en lieu 
-et place.
+Nous vous présentons ci-après les différentes régles d'altération prises
+en charge.  Pour les besoins de la démonstration, nous partirons de
+l'exemple suivant :
+
+@lilypond[verbatim,quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
 
-Les régles d'altération suivantes sont possibles :
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>4
+      \change Staff = up
+      cis'
+      \change Staff = down
+      <fis, a>
+      \change Staff = up
+      dis' |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
 
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'default)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'default)
+      \musicB
+    }
+  >>
+}
+@end lilypond
+
+Notez bien que pour appliquer le même style aux deux portées, seules les
+dernières lignes de cet exemple nous intéressent.
+
+@example
+\new PianoStaff @{
+  <<
+    \context Staff = "haut" @{
+      %%% voici la ligne à modifier en conséquence :
+      #(set-accidental-style 'default 'Score)
+      \musicA
+    @}
+    \context Staff = "bas" @{
+      \musicB
+    @}
+  >>
+@}
+@end example
+
+
+@c don't use verbatim in this table.
 @table @code
 @item default
+
+@cindex @emph{default}, style d'altérations
+@cindex altérations, style @emph{default}
+
+@funindex default
+
 C'est la règle d'impression par défaut, qui se rapporte à l'usage 
 en vigueur au XVIIIème siècle : les altérations accidentelles sont
-valables tout une mesure, et uniquement à leur propre octave.
-
-
-@lilypond[quote,ragged-right]
-musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
-       \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
-       \change Staff = up cis' \change Staff = down <fis, a>  
-       \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
-       <f a d>2 |  } }}
-
-\score { 
-       \new PianoStaff {
-       << \context Staff = "up" {
-              %#(set-accidental-style 'default) 
-       \musicA }
-       \context Staff = "down"{
-              %#(set-accidental-style 'default)
-       \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'default" }}}
+valables tout une mesure, et uniquement à leur propre octave.  C'est la
+raison pour laquelle il n'y a pas de bécarre avant le @notation{si} de
+la deuxième mesure, ni avant le dernier @notation{do}.
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>4
+      \change Staff = up
+      cis'
+      \change Staff = down
+      <fis, a>
+      \change Staff = up
+      dis' |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'default)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'default)
+      \musicB
+    }
+  >>
 }
 @end lilypond
 
 @item voice
-En principe, LilyPond se souvient de toutes les altérations présentes sur la
-portée (contexte Staff).  Avec cette règle, cependant, les altérations
-sont indépendantes pour chacune des voix. 
 
+@cindex @emph{voice}, style d'altérations
+@cindex altérations, style @emph{voice}
+@cindex altérations, style @emph{modern}
+@cindex @emph{modern}, style d'altération
+@cindex altérations, style @emph{modern-cautionary}
+@cindex @emph{modern-cautionary}, style d'altération
+
+@funindex voice
+
+En principe, LilyPond se souvient de toutes les altérations présentes
+sur la portée (contexte @code{Staff}).  Avec cette règle, cependant, les
+altérations sont indépendantes pour chacune des voix tout en obéissant
+à la règle @code{default}.
+
+De ce fait, les altérations d'une voix sont ignorées dans les autres
+voix, ce qui peut donner lieu à un résultat malencontreux.  Dans
+l'exemple suivant, il est difficile de dire si le deuxième @notation{la}
+est dièse ou naturel.  La règle @code{voice} n'est donc à envisager que
+dans le cas de voix devant être lues par des musiciens différents.  S'il
+s'agit d'un @qq{conducteur}, ou d'une portée destinée à un seul
+musicien, il vaut mieux utiliser @code{modern} ou
+@code{modern-cautionary}.  
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
 
-@example
- \new Staff <<
-        #(set-accidental-style 'voice)
-       @{ @dots{} @}
-       >>
-@end example
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>4
+      \change Staff = up
+      cis'
+      \change Staff = down
+      <fis, a>
+      \change Staff = up
+      dis' |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
 
-De ce fait, les altérations d'une voix sont ignorées dans les autres voix,
-ce qui peut donner lieu à un résultat malencontreux.  Dans l'exemple suivant,
-il est difficile de dire si le deuxième @samp{la} est dièse ou naturel.
-
-@lilypond[quote,ragged-right]
-musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
-       \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
-       \change Staff = up cis' \change Staff = down <fis, a>  
-       \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
-       <f a d>2 |  } }}
-
-\score { 
-       \new PianoStaff {
-       << \context Staff = "up" {
-              #(set-accidental-style 'voice) 
-       \musicA }
-       \context Staff = "down"{
-              #(set-accidental-style 'voice)
-       \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'voice" }}}
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'voice)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'voice)
+      \musicB
+    }
+  >>
 }
 @end lilypond
 
-La règle @code{voice} n'est à envisager que dans le cas de voix devant
-être lues par des musiciens différents.  S'il s'agit d'un
-@qq{conducteur}, ou d'une portée destinée à un seul musicien, il vaut
-mieux utiliser @code{modern} ou @code{modern-cautionary}. 
+
+
 
 
 @item modern
 @funindex modern style accidentals
+
+@cindex altération, style @emph{modern}
+@cindex @emph{modern}, style d'altération
+
+@funindex modern
+
 Cette règle est la plus courante au XXème siècle.  Les altérations
 accidentelles sont imprimées comme avec le style @code{default}, mais
 lorsqu'une note non-altérée apparaît à une octave différente, ou bien
@@ -891,343 +1415,800 @@ dans la mesure suivante, des bécarres de précaution sont ajoutés.  Dans
 l'exemple suivant, notez ainsi les deux bécarres dans la deuxième mesure
 de la main droite. 
 
-@lilypond[quote,ragged-right]
-musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
-       \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
-       \change Staff = up cis' \change Staff = down <fis, a>  
-       \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
-       <f a d>2 |  } }}
-
-\score { 
-       \new PianoStaff {
-       << \context Staff = "up" {
-              #(set-accidental-style 'modern) 
-       \musicA }
-       \context Staff = "down"{
-              #(set-accidental-style 'modern)
-       \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'modern" }}}
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>4
+      \change Staff = up
+      cis'
+      \change Staff = down
+      <fis, a>
+      \change Staff = up
+      dis' |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'modern)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'modern)
+      \musicB
+    }
+  >>
 }
 @end lilypond
 
-@item @code{modern-cautionary}
+@item modern-cautionary
+
+@cindex altération, style @emph{modern cautionary}
+@cindex @emph{modern cautionary}, style d'altération
+@cindex altération de précaution, style @emph{modern}
+@cindex @emph{modern}, style d'altération de précaution
+
 @funindex modern-cautionary
+
 Cette règle est équivalente à @code{modern}, mais les bécarres de
-précaution sont imprimés de façon particulière : soit plus petits, soit
-(par défaut) entre parenthèses.  Il est possible de le définir au moyen
-de la propriété @code{cautionary-style} pour l'objet
-@rinternals{AccidentalSuggestion}. 
-
-@lilypond[quote,ragged-right]
-musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
-       \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
-       \change Staff = up cis' \change Staff = down <fis, a>  
-       \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
-       <f a d>2 |  } }}
-
-\score { 
-       \new PianoStaff {
-       << \context Staff = "up" {
-              #(set-accidental-style 'modern-cautionary) 
-       \musicA }
-       \context Staff = "down"{
-              #(set-accidental-style 'modern-cautionary)
-       \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'modern-cautionary" }}}
+précaution (absents dans la règle @code{default}) sont imprimés de façon
+particulière : soit plus petits, soit (par défaut) entre parenthèses.
+Il est possible de le définir au moyen de la propriété
+@code{cautionary-style} pour l'objet @code{AccidentalSuggestion}. 
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>4
+      \change Staff = up
+      cis'
+      \change Staff = down
+      <fis, a>
+      \change Staff = up
+      dis' |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'modern-cautionary)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'modern-cautionary)
+      \musicB
+    }
+  >>
 }
 @end lilypond
 
-@funindex modern-voice
 @item modern-voice
+
+@cindex @emph{modern}, style d'altération
+@cindex style d'altération @emph{modern}
+@cindex altérations multivoix
+@cindex modern accidental style
+@cindex voix pultiples et altérations
+@cindex multivoix, altérations
+
+@funindex modern-voice
+
 Cette règle sert aux altérations dans de la musique polyphonique destinée
 autant à des musiciens différents qu'à quelqu'un qui lirait l'ensemble
 des voix.  Les altérations sont imprimées voix par voix, mais les autres
-voix, dans le même contexte @rinternals{Staff}, en @emph{tiennent
-compte} cette fois. 
-
-@lilypond[quote,ragged-right]
-musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
-       \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
-       \change Staff = up cis' \change Staff = down <fis, a>  
-       \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
-       <f a d>2 |  } }}
-
-\score { 
-       \new PianoStaff {
-       << \context Staff = "up" {
-              #(set-accidental-style 'modern-voice) 
-       \musicA }
-       \context Staff = "down"{
-              #(set-accidental-style 'modern-voice)
-       \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'modern-voice" }}}
+voix, dans le même contexte @code{Staff}, en @emph{tiennent compte}
+cette fois.  C'est pourquoi le @notation{la} de la dernière mesure est
+affublé d'un bécarre bien qu'il y en ait déjà eu un dans la mesure
+précédente, et que le ré de la main gauche en ait un alors qu'il avait
+auparavant concerné la main droite.
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>4
+      \change Staff = up
+      cis'
+      \change Staff = down
+      <fis, a>
+      \change Staff = up
+      dis' |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'modern-voice)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'modern-voice)
+      \musicB
+    }
+  >>
 }
 @end lilypond
 
-@funindex modern-voice-cautionary
 @item modern-voice-cautionary
-Cette régle est similaire à la précédente, mais les altérations de précaution
-(celles que n'aurait pas ajoutées @code{voice}), sont imprimées de façon
-particulière.  On retrouve donc toutes les altérations qu'imprimerait
-@code{default}, mais certaines sont considérées comme étant @qq{de précaution}.
-
-@lilypond[quote,ragged-right]
-musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
-       \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
-       \change Staff = up cis' \change Staff = down <fis, a>  
-       \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
-       <f a d>2 |  } }}
-
-\score { 
-       \new PianoStaff {
-       << \context Staff = "up" {
-              #(set-accidental-style 'modern-voice-cautionary) 
-       \musicA }
-       \context Staff = "down"{
-              #(set-accidental-style 'modern-voice-cautionary)
-       \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'modern-voice-cautionary" }}}
+
+@cindex altération de précaution style @emph{modern voice}
+@cindex @emph{modern voice}, styme d'altération de précaution
+
+@funindex modern-voice-cautionary
+
+Cette régle est similaire à la précédente, mais les altérations de
+précaution (celles que n'aurait pas ajoutées @code{voice}), sont
+imprimées de façon particulière.  On retrouve donc toutes les
+altérations qu'imprimerait @code{default}, mais certaines sont
+considérées comme étant @qq{de précaution}. 
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>4
+      \change Staff = up
+      cis'
+      \change Staff = down
+      <fis, a>
+      \change Staff = up
+      dis' |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'modern-voice-cautionary)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'modern-voice-cautionary)
+      \musicB
+    }
+  >>
 }
 @end lilypond
 
 @item piano
-@funindex piano accidentals
-Cette règle est adaptée aux contextes GrandStaff -- ce qui n'empêche pas
-de devoir la spécifier pour chaque portée individuelle au sein du
-contexte GrandStaff. 
 
-@example
-\new GrandStaff @{ <<
-  \new Staff = "up" @{ <<
-    #(set-accidental-style 'piano)
-    @{ @dots{} @}
-  >> @}
-  \new Staff = "down"@{ <<
-    #(set-accidental-style 'piano)
-  @{ @dots{} @}
-  >> @}
->> @}
-@end example
+@cindex @emph{piano}, style d'altérations
+@cindex altérations style @emph{piano}
+@cindex piano et altérations
+
+@funindex piano accidentals
 
 Cette règle est communément employée pour les partitions de piano au
 XXème siècle.  Très similaire à @code{modern} de par son comportement,
 elle s'en distingue en ce que les altérations tiennent compte des autre
-portées du contexte @rinternals{GrandStaff} ou @rinternals{PianoStaff}.
-
-@lilypond[quote,ragged-right]
-musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
-       \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
-       \change Staff = up cis' \change Staff = down <fis, a>  
-       \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
-       <f a d>2 |  } }}
-
-\score { 
-       \new PianoStaff {
-       << \context Staff = "up" {
-              #(set-accidental-style 'piano) 
-       \musicA }
-       \context Staff = "down"{
-              #(set-accidental-style 'piano)
-       \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'piano" }}}
+portées du contexte @code{GrandStaff} ou @code{PianoStaff}.
+
+Cette règle s'applique par défaut dans un @code{GrandStaff} ou dans un
+@code{PianoStaff}. 
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>4
+      \change Staff = up
+      cis'
+      \change Staff = down
+      <fis, a>
+      \change Staff = up
+      dis' |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'piano)
+      \musicA
+    }
+    \context Staff = "down" {
+      \musicB
+    }
+  >>
 }
 @end lilypond
 
 @item piano-cautionary
-@funindex #(set-accidental-style 'piano-cautionary)
-Identique à @code{#(set-accidental-style 'piano)}, mais les altérations
-de précaution sont imprimées différemment.
-
-@lilypond[quote,ragged-right]
-musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
-       \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
-       \change Staff = up cis' \change Staff = down <fis, a>  
-       \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
-       <f a d>2 |  } }}
-
-\score { 
-       \new PianoStaff {
-       << \context Staff = "up" {
-              #(set-accidental-style 'piano-cautionary) 
-       \musicA }
-       \context Staff = "down"{
-              #(set-accidental-style 'piano-cautionary)
-       \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'piano-cautionary" }}}
+
+@cindex @emph{piano cautionary}, style d'altérations
+@cindex altérations style @emph{piano cautionary}
+@cindex piano et altérations
+
+@funindex piano-cautionary
+
+Identique au style @code{piano}, mais les altérations de précaution sont
+imprimées différemment. 
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>4
+      \change Staff = up
+      cis'
+      \change Staff = down
+      <fis, a>
+      \change Staff = up
+      dis' |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'piano-cautionary)
+      \musicA
+    }
+    \context Staff = "down" {
+      \musicB
+    }
+  >>
+}
+@end lilypond
+
+@item neo-modern
+
+@cindex @emph{neo-modern}, style d'altérations
+@cindex altérations, style @emph{neo-modern}
+
+@funindex neo-modern
+
+Cette règle suit les pratiques de la musique contemporaine : les
+altérations accidentelles apparaîssent comme dans le style
+@code{modern}, à ceci près qu'elles sont répétées dans la même mesure -- 
+sauf si elles concernent deux notes consécutives.
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>4
+      \change Staff = up
+      cis'
+      \change Staff = down
+      <fis, a>
+      \change Staff = up
+      dis' |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'neo-modern)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'neo-modern)
+      \musicB
+    }
+  >>
+}
+@end lilypond
+
+@item neo-modern-cautionary
+
+@cindex @emph{neo-modern-cautionary}, style d'altérations
+@cindex style d'altération @emph{neo-modern-cautionary}
+
+@funindex neo-modern-cautionary
+
+Identique au style @code{neo-modern}, mais les altérations de précaution
+sont imprimées différemment. 
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>4
+      \change Staff = up
+      cis'
+      \change Staff = down
+      <fis, a>
+      \change Staff = up
+      dis' |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'neo-modern-cautionary)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'neo-modern-cautionary)
+      \musicB
+    }
+  >>
+}
+@end lilypond
+
+
+@item dodecaphonic
+
+@cindex @emph{dodecaphonic}, style d'altérations
+@cindex altération, style @emph{dodecaphonic}
+
+@funindex dodecaphonic
+
+Cette règle reproduit ce que certains compositeurs du début du XXème
+siècle ont introduit dans leur désir d'abolir la distinction entre les
+notes naturelles ou non.  Ainsi, @emph{chaque} note est affublée d'une
+altération, même si elle est naturelle.
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>4
+      \change Staff = up
+      cis'
+      \change Staff = down
+      <fis, a>
+      \change Staff = up
+      dis' |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'dodecaphonic)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'dodecaphonic)
+      \musicB
+    }
+  >>
+}
+@end lilypond
+
+
+@item teaching
+
+@cindex @emph{teaching}, style d'altérations
+@cindex altérations, style @emph{teaching}
+
+@funindex teaching
+
+Cette règle est à usage pédagogique : l'impression d'une simple gamme
+fera apparaître une altération de précaution pour toute note altérée.
+Les altérations accidentelles sont imprimées selon le style
+@code{modern}, et une altération de précaution est ajoutée pour chaque
+dièse ou bémol à la clef -- sauf dans le cas de notes consécutives.
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>4
+      \change Staff = up
+      cis'
+      \change Staff = down
+      <fis, a>
+      \change Staff = up
+      dis' |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      \key fis \minor
+      #(set-accidental-style 'teaching)
+      \musicA
+    }
+    \context Staff = "down" {
+      \key fis \minor
+      #(set-accidental-style 'teaching)
+      \musicB
+    }
+  >>
 }
 @end lilypond
 
 @item no-reset
-@funindex no-reset accidental style
-C'est la même règle que @code{default}, mais l'effet des altérations
+
+@cindex altération, style @emph{no reset}
+@cindex @emph{no reset}, style d'altérations
+
+@funindex no-reset
+
+C'est la même règle que @code{default}, mais l'effet des altérations 
 accidentelles ne cesse jamais, même dans les mesures suivantes.
-@lilypond[quote,ragged-right]
-musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
-       \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
-       \change Staff = up cis' \change Staff = down <fis, a>  
-       \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
-       <f a d>2 |  } }}
-
-\score { 
-       \new PianoStaff {
-       << \context Staff = "up" {
-              #(set-accidental-style 'no-reset) 
-       \musicA }
-       \context Staff = "down"{
-              #(set-accidental-style 'no-reset)
-       \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'no-reset" }}}
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>4
+      \change Staff = up
+      cis'
+      \change Staff = down
+      <fis, a>
+      \change Staff = up
+      dis' |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'no-reset)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'no-reset)
+      \musicB
+    }
+  >>
 }
 @end lilypond
 
 @item forget
-Tout le contraire de @code{no-reset} : l'effet des altérations cesse aussitôt,
-et de ce fait, toutes les altérations, quelque soit leur place dans la
-mesure, sont imprimées en fonction de l'éventuelle armure.
-
-@lilypond[quote,ragged-right]
-musicA = {  << \relative {  cis'8 fis, d'4 <a cis>8 f bis4 | cis2. <c, g'>4 | } \\
-       \relative { ais'2 cis, | fis8 b a4 cis2 | } >> }
-
-musicB = { \clef bass  \new Voice { \voiceTwo \relative { < fis, a cis>4 
-       \change Staff = up cis' \change Staff = down <fis, a>  
-       \change Staff = up dis' | \change Staff = down <fis, a cis>4 gis 
-       <f a d>2 |  } }}
-
-\score { 
-       \new PianoStaff {
-       << \context Staff = "up" {
-              #(set-accidental-style 'forget) 
-       \musicA }
-       \context Staff = "down"{
-              #(set-accidental-style 'forget)
-       \musicB } >> }
-       \header { piece = \markup {\fill-line { \fontsize #3  "'forget" }}}
+
+@cindex @emph{forget}, style d'altérations
+@cindex altérations, style @emph{forget}
+
+@funindex forget
+
+Tout le contraire de @code{no-reset} : l'effet des altérations cesse
+aussitôt, et de ce fait, toutes les altérations, quelque soit leur place
+dans la mesure, sont imprimées en fonction de l'éventuelle armure.  A
+l'inverse du style @code{dodecaphonic}, aucun bécarre ne sera ici
+imprimé. 
+
+@lilypond[quote]
+musicA = {
+  <<
+    \relative c' {
+      cis'8 fis, d'4 <a cis>8 f bis4 |
+      cis2. <c, g'>4 |
+    }
+    \\
+    \relative c' {
+      ais'2 cis, |
+      fis8 b a4 cis2 |
+    }
+  >>
+}
+
+musicB = {
+  \clef bass
+  \new Voice {
+    \voiceTwo \relative c' {
+      <fis, a cis>4
+      \change Staff = up
+      cis'
+      \change Staff = down
+      <fis, a>
+      \change Staff = up
+      dis' |
+      \change Staff = down
+      <fis, a cis>4 gis <f a d>2 |
+    }
+  }
+}
+
+\new PianoStaff {
+  <<
+    \context Staff = "up" {
+      #(set-accidental-style 'forget)
+      \musicA
+    }
+    \context Staff = "down" {
+      #(set-accidental-style 'forget)
+      \musicB
+    }
+  >>
 }
 @end lilypond
 @end table
 
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{dodecaphonic-style-accidentals-for-each-note-including-naturals.ly}
+
 
 @seealso
-Référence du programme : @rinternals{Accidental_engraver},
-@rinternals{Accidental}, @rinternals{AccidentalSuggestion} et
+Référence des propriétés internes : 
+@rinternals{Accidental}, 
+@rinternals{Accidental_engraver},
+@rinternals{GrandStaff} et
+@rinternals{PianoStaff},
+@rinternals{Staff},
+@rinternals{AccidentalSuggestion},
 @rinternals{AccidentalPlacement}. 
+@rinternals{accidental-suggestion-interface}.
+
+
+@cindex altérations et notes simultanées
+@cindex notes simultanées et altérations
+@cindex altérations et accords
+@cindex accords et altérations
 
 
 @knownissues
 
-Les notes simultanées sont considérées comme des évènements séquentiels.
-Ce qui implique que, dans un accord, les altérations accidentelles seront 
-imprimées comme si les notes de l'accord apparaissaient une par une, en
-fonction de l'ordre dans lequels elles ont été saisies -- ce qui peut
-poser problème lorsqu'au sein d'un accord certaines altérations
+Les notes simultanées sont considérées comme des évènements séquentiels. 
+Ce qui implique que, dans un accord, les altérations accidentelles
+seront imprimées comme si les notes de l'accord apparaissaient une par
+une, en fonction de l'ordre dans lequel elles ont été saisies -- ce qui
+peut poser problème lorsqu'au sein d'un accord certaines altérations
 dépendent les unes des autres.  
-Ce problème est à résoudre manuellement, en insérant des @code{!} et des
+Ce problème est à résoudre manuellement, en insérant des @code{!} et des 
 @code{?} après les notes concernées.
 
 
 @node Ambitus
 @unnumberedsubsubsec Ambitus
 @translationof Ambitus
+
 @cindex ambitus
+@cindex tessiture
+@cindex amplitude
 
 L'@emph{ambitus} est l'amplitude des hauteurs d'une voix donnée dans une
 partition.  Ce terme peut aussi désigner la tessiture qu'un instrument
-est capable d'atteindre.  Souvent, cet @emph{ambitus} est imprimé au début des
-partitions vocales, afin que les exécutants puissent voir au premier
-coup d'œil s'ils sont en mesure de tenir la partie en question.
-
-Pour exprimer l'@emph{ambitus} d'une pièce, on indique avant la clé deux notes
-représentant la hauteur la plus basse et la plus haute.  Pour imprimer
-cet @emph{ambitus}, il faut ajouter le graveur @rinternals{Ambitus_engraver}
-au contexte @rinternals{Voice}.  Ainsi,
-
-@example
-\layout @{
-  \context @{
-    \Voice
-    \consists Ambitus_engraver
-  @}
-@}
-@end example
+est capable d'atteindre.  Souvent, cet @emph{ambitus} est imprimé au
+début des partitions vocales, afin que les exécutants puissent voir au
+premier coup d'œil s'ils sont en mesure de tenir la partie en question.
 
-@noindent
-aura pour résultat
+Pour exprimer l'@emph{ambitus} d'une pièce, on indique avant la clé deux
+notes représentant la hauteur la plus basse et la plus haute.  Les
+éventuelles altérations accidentelles seront automatiquement ajoutées. 
 
-@lilypond[quote,ragged-right]
+@lilypond[verbatim,quote]
 \layout {
   \context {
-    \Staff
-    \consists Ambitus_engraver
+    \Voice
+    \consists "Ambitus_engraver"
   }
 }
 
-\relative \new Staff {
-  as'' c e2 cis,2
+\relative c'' {
+  aes c e2
+  cis,1
 }
 @end lilypond
 
-Si plusieurs voix se trouvent sur une même portée, on peut attribuer le
-graveur @rinternals{Ambitus_engraver} au contexte @rinternals{Staff}
-plutôt qu'au contexte @rinternals{Voice} ; l'ambitus affiché sera
-alors celui de toutes les voix cumulées, non d'une seule des voix
-actives.
 
-@lilypond[verbatim,ragged-right,quote]
-\new Staff \with {
-  \consists "Ambitus_engraver"
-}
-<<
-  \new Voice \with {
-    \remove "Ambitus_engraver"
-  } \relative c'' {
-    \override Ambitus #'X-offset = #-1.0
-    \voiceOne
-    c4 a d e f2
-  }
-  \new Voice \with {
-    \remove "Ambitus_engraver"
-  } \relative c' {
-    \voiceTwo
-    es4 f g as b2
-  }
->>
-@end lilypond
+@snippets
 
-@noindent
-Cet exemple met en œuvre une fonctionnalité avancée :
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{adding-ambitus-per-voice.ly}
 
-@example
-\override Ambitus #'X-offset = #-1.0
-@end example
-
-@noindent
-Ce réglage déplace l'ambitus vers la gauche.  Le même résultat aurait pu
-être obtenu avec @code{extra-offset}, mais alors le système de mise en
-forme n'aurait pas attribué d'espace supplémentaire pour l'objet
-déplacé.
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{ambitus-with-multiple-voices.ly}
 
 
 @seealso
-Référence du programme : @rinternals{Ambitus},
-@rinternals{AmbitusLine}, @rinternals{AmbitusNoteHead},
-@rinternals{AmbitusAccidental}.
+Glossaire musicologique :
+@rglos{ambitus}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
 
-Exemples : @rlsr{Pitches}, @rlsr{Vocal music}.
+Référence des propriétés internes : 
+@rinternals{Ambitus_engraver},
+@rinternals{Voice},
+@rinternals{Staff},
+@rinternals{Ambitus},
+@rinternals{AmbitusAccidental},
+@rinternals{AmbitusLine}, 
+@rinternals{AmbitusNoteHead},
+@rinternals{ambitus-interface}.
 
 
 @knownissues
@@ -1240,6 +2221,9 @@ présents sur une même portée.
 @subsection Têtes de note
 @translationof Note heads
 
+Nous allons voir dans ce chapitre comment modifier l'aspect des têtes de
+note. 
+
 @menu
 * Têtes de note spécifiques::          
 * Têtes de note avec nom de note::    
@@ -1252,29 +2236,55 @@ présents sur une même portée.
 @translationof Special note heads
 
 @cindex têtes de note, spéciales
+@cindex croix, tête de note
+@cindex losange, tête de note
+@cindex parlato, tête de note
+@cindex harmonique, tête de note
+@cindex guitare, tête de note
+@cindex styles, tête de note
+
+@funindex cross
 
 Certains instruments utilisent des têtes de note différentes à des
-fins spécifiques --- des croix pour le @emph{parlato} des chanteurs ou les
+fins spécifiques -- des croix pour le @emph{parlato} des chanteurs ou les
 notes étouffées des guitares ; des losanges pour les harmoniques des
-cordes.  Il existe un raccourci (@code{\harmonic}) pour les notes en
-losange ; pour les autres styles de tête, il vous faudra jouer avec la
-propriété @code{NoteHead}.
+cordes.  
 
-@lilypond[ragged-right,relative=1,fragment,verbatim,quote]
-c4 d
+@lilypond[verbatim,quote,relative=2]
+c4 b a b
 \override NoteHead #'style = #'cross
-e f
+c4 b a b
 \revert NoteHead #'style
-e d <c f\harmonic> <d a'\harmonic>
+c4 d e f
+@end lilypond
+
+Il existe un raccourci pour les notes en losange :
+
+@lilypond[verbatim,quote,relative=2]
+<c f\harmonic>2 <d a'\harmonic>4 <c g'\harmonic>
 @end lilypond
 
-@noindent
 Pour une liste exhaustive des styles de tête de note, consultez 
 @ref{Styles de tête de note}.
 
 
 @seealso
-Référence du programme : @rinternals{NoteHead}.
+Morceaux choisis :
+@rlsr{Pitches}.
+
+Manuel de notation :
+@ref{Styles de tête de note},
+@ref{Notes en accord}.
+
+@seealso
+Référence des propriétés internes : 
+@rinternals{note-event},
+@rinternals{Note_heads_engraver},
+@rinternals{Ledger_line_engraver},
+@rinternals{NoteHead}.
+@rinternals{LedgerLineSpanner},
+@rinternals{note-head-interface},
+@rinternals{ledger-line-spanner-interface}.
 
 
 @node Têtes de note avec nom de note
@@ -1284,95 +2294,160 @@ Référence du programme : @rinternals{NoteHead}.
 @cindex tête de note, apprentissage
 @cindex notation facile
 @cindex Hal Leonard
+@cindex @emph{easy play}, têtes de note
+
+@funindex \easyHeadsOn
+@funindex easyHeadsOn
+@funindex \easyHeadsOff
+@funindex easyHeadsOff
 
 Les notes @qq{easy play} comportent le nom de la note à l'intérieur de
-la tête.  On l'utilise dans des partitions pour débutants.
+la tête.  On l'utilise dans des partitions pour débutants.  L'impression
+doit être de plus grande taille, afin que les lettres soient lisibles.
+Voir à ce propos @ref{Définition de la taille de portée}.
 
-@lilypond[quote,ragged-right,verbatim,fragment,staffsize=26]
+@lilypond[verbatim,quote]
+#(set-global-staff-size 26)
+\relative c' {
   \easyHeadsOn
-  c'2 e'4 f' | g'1
+  c2 e4 f
+  g1
+  \easyHeadsOff
+  c,1
+}
 @end lilypond
 
-La commande @code{\easyHeadsOn} remplace tous les réglages de l'objet
-@rinternals{NoteHead}.  L'impression doit être de plus grande
-taille, afin que les lettres soient lisibles.  Voir à ce propos
-@ref{Définition de la taille de portée}.
-
 
 @predefined
-@funindex \easyHeadsOn
-@code{\easyHeadsOn}.
+@code{\easyHeadsOn},
+@code{\easyHeadsOff}.
 @endpredefined
 
 
+@seealso
+Manuel de notation :
+@ref{Définition de la taille de portée}.
+
+Morceaux choisis :
+@rlsr{Pitches}.
+
+Référence des propriétés internes :
+@rinternals{note-event},
+@rinternals{Note_heads_engraver},
+@rinternals{NoteHead},
+@rinternals{note-head-interface}.
+
+
 @node Têtes de note à forme variable
 @unnumberedsubsubsec Têtes de note à forme variable
 @translationof Shape note heads
 
 @cindex tête de note, allure
+@cindex tête de note, Aiken
+@cindex tête de note, harpe sacrée
+@cindex notes profilées
+@cindex Aiken, tête de note
+@cindex harpe sacrée, tête de note
+
+@funindex \key
+@funindex key
+@funindex \aikenHeads
+@funindex aikenHeads
+@funindex \sacredHarpHeads
+@funindex sacredHarpHeads
 
 En notation profilée, le profil d'une tête de note correspond à la
 fonction harmonique de cette note dans la gamme.  Ce style de notation
 était très en vogue dans les recueils de chansons américains du XIXe
-siècle. 
+siècle.  Voici comment procéder :
 
-Des notes profilées sont produites après activation de
-@code{\aikenHeads} ou @code{\sacredHarpHeads}, selon le style.
-
-@lilypond[verbatim,relative=1,fragment]
-  \aikenHeads
-  c8 d4 e8 a2 g1
-  \sacredHarpHeads
-  c8 d4. e8 a2 g1
+@lilypond[verbatim,quote,relative=2]
+\aikenHeads
+c, d e f g a b c
+\sacredHarpHeads
+c, d e f g a b c
 @end lilypond
 
 Les profils sont déterminés par la hauteur dans la gamme, le premier
-degré étant défini par la commande @code{\key}. 
+degré étant défini par la commande @code{\key}.
 
-@funindex \key
-@funindex shapeNoteStyles
-@funindex \aikenHeads
-@funindex \sacredHarpHeads
 
-Les notes profilées sont mises en œuvre par la propriété
-@code{shapeNoteStyles}, dont les valeurs sont constituées d'une liste
-de symboles.  Le n-ième élément indique le style à utiliser pour le
-n-ième degré de la gamme.  Toutes les combinaisons sont possibles :
+@predefined
+@code{\aikenHeads},
+@code{\sacredHarpHeads}.
+@endpredefined
+
 
-@lilypond[verbatim,relative=1,fragment]
-  \set shapeNoteStyles  = #'#(cross triangle fa #f mensural xcircle diamond)
-  c8 d4. e8 a2 g1
-@end lilypond
+@snippets
+
+@lilypondfile[verbatim,lilyquote,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 
+@ref{Styles de tête de note}.
+
+
+@seealso
+Morceaux choisis :
+@rlsr{Pitches}.
+
+Manuel de notation :
+@ref{Note head styles}.
+
+Référence des propriétés internes :
+@rinternals{note-event},
+@rinternals{Note_heads_engraver},
+@rinternals{NoteHead},
+@rinternals{note-head-interface}.
 
 
 @node Improvisation
 @unnumberedsubsubsec Improvisation
 @translationof Improvisation
 
-L'improvisation peut quelquefois s'indiquer à l'aide de notes de forme
-allongée (@emph{slash}).  Ces têtes de notes sont créées  par
-l'adjonction du graveur @rinternals{Pitch_squash_engraver} au
-contexte @rinternals{Voice}, de telle sorte que la commande
+@cindex improvisation
+@cindex notes penchées
+@cindex note heads, improvisation
+@cindex note heads, slashed
 
-@example
-\set squashedPosition = #0
-\override NoteHead #'style = #'slash
-@end example
+@funindex \improvisationOn
+@funindex improvisationOn
+@funindex \improvisationOff
+@funindex improvisationOff
 
-@noindent
-active les notes penchées.
-
-Vous disposez des raccourcis @code{\improvisationOn} et son corollaire
-@code{\improvisationOff} pour cette séquence, comme l'illustre
-l'exemple ci dessous.
+L'improvisation peut quelquefois s'indiquer à l'aide de notes de forme
+allongée (@emph{slash}).  L'interprète jouera alors les notes qu'il
+veut, en respectant toutefois le rythme affiché. Ces têtes de notes sont
+créées  ainsi :
 
-@lilypond[verbatim,ragged-right,quote]
+@lilypond[verbatim,quote,relative=2]
 \new Voice \with {
-  \consists Pitch_squash_engraver
-} \transpose c c' {
-  e8 e g a a16(bes)(a8) g \improvisationOn
-  e8
-  ~e2~e8 f4 fis8
-  ~fis2 \improvisationOff a16(bes) a8 g e
+  \consists "Pitch_squash_engraver"
+} {
+  e8 e g a a16( bes) a8 g
+  \improvisationOn
+  e8 ~
+  e2 ~ e8 f4 f8 ~
+  f2
+  \improvisationOff
+  a16( bes) a8 g e
 }
 @end lilypond
+
+
+@predefined
+@code{\improvisationOn},
+@code{\improvisationOff}.
+@endpredefined
+
+
+@seealso
+Morceaux choisis :
+@rlsr{Pitches}.
+
+Référence des propriétés internes :
+@rinternals{Pitch_squash_engraver},
+@rinternals{Voice},
+@rinternals{RhythmicStaff}.
+
+
index b861b5b5fca53b86ed60354350d28994695a13c7..ccf0c665be73a610fd6a81fb61af008c9702be61 100644 (file)
@@ -377,6 +377,6 @@ façon similaire à @code{\once \override}, mais avec une syntaxe différente :
 @end example
 
 Notez cependant que la commande @code{\override} peut tout de même être appliquée
-à @code{NoteMusicalPaperColumn} et @code{PaperColumn} dans un bloc @code{\context}.
+à @code{NonMusicalPaperColumn} et @code{PaperColumn} dans un bloc @code{\context}.
 
 @end itemize
index e6393ebe67ff098782b9570e7425dcf58e610274..c4cbd67e643061ee0230bff82a563de3fe5290f1 100644 (file)
@@ -1,6 +1,6 @@
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-    Translation of GIT committish: 33ba8d40c3493011a4b39ab8b1369701f8013bd6
+    Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -8,7 +8,7 @@
 
 @c \version "2.12.0"
 
-@c Translators: Valentin Villenave
+@c Translators: Valentin Villenave, Jean-Charles Malahieude
 @c Translation checkers: Jean-Charles Malahieude, John Mandereau
 
 @node Répétitions et reprises
@@ -19,6 +19,7 @@
 
 @cindex reprises
 @cindex répétitions
+
 La répétition est une notion essentielle en musique, et il existe de
 nombreuses façons de mettre en œuvre et noter ce concept.  LilyPond
 prend en charge les types de répétition suivants :
@@ -27,7 +28,7 @@ prend en charge les types de répétition suivants :
 @item volta
 Le passage répété n'est pas développé , mais il est encadré par des
 barres de reprises, et peut se terminer par plusieurs fins
-alternatives --- ou @emph{volte} --- imprimées de gauche à droite sous
+alternatives -- ou @emph{volte} -- imprimées de gauche à droite sous
 des crochets.  Lorsque la répétition commence au début de la pièce,
 aucune barre de reprise n'est gravée au début de la partition.  Il
 s'agit de la notation courante des reprises avec fins alternatives.
@@ -35,184 +36,179 @@ s'agit de la notation courante des reprises avec fins alternatives.
 @item unfold
 La musique répétée est développée dans la partition autant de fois
 qu'indiqué.  Ceci est particulièrement utile pour de la musique
-répétitive.
+répétitive. 
 
 @item percent
 Des barres obliques ou signes de pourcentage indiquent la répétition
-de temps ou de mesures, imprimés sous la forme de signes de
-pourcentage.
+de temps ou de mesures.
 
 @item tremolo
 Ce type permet de réaliser des trémolos sous forme de liens de croches.
+
 @end table
 
 @menu
-* Répétition d'un long passage::             
-* Autres types de répétition::               
+* Répétition d'un long passage::  
+* Autres types de répétition::  
 @end menu
 
 @node Répétition d'un long passage
 @subsection Répétition d'un long passage
 @translationof Long repeats
 
-Cette section présente la syntaxe des répétitions longues ---
+Cette section présente la syntaxe des répétitions longues --
 c'est-à-dire plusieurs mesures.  Ces répétitions peuvent prendre deux
 formes : encadrées par des barres de reprises, ou bien développées
 dans la partition.  Les barres et autres signe de reprise peuvent être
 contrôlés manuellement.
 
 @menu
-* Types de répétitions::                
-* Syntaxe des répétitions::               
-* Commandes de reprise manuelles::      
+* Répétitions courantes::       
+* Indications de reprise manuelles::  
+* Répétitions explicites::      
 @end menu
 
-@cindex barres de reprise
-@cindex reprise
-@cindex répétition avec barres de reprise
 @cindex volta
-@cindex fois, pre
+@cindex fois, première
 @cindex première fois
 @cindex seconde fois
-@funindex \repeat
-
-
-@node Types de répétitions
-@unnumberedsubsubsec Types de répétitions
-@translationof Repeat types
-
-On peut indiquer des répétitions des façons suivantes :
-
-@table @code
-@item bar
-baz
-@end table
-
-@node Syntaxe des répétitions
-@unnumberedsubsubsec Syntaxe des répétitions
-@translationof Repeat syntax
+@cindex reprise courante
+@cindex reprise avec alternative
+@cindex fin alternative
 
-@cindex volta
+@funindex \repeat
+@funindex \alternative
+@funindex \partial
 
-Tous les différents types de reprise se spécifient dans
-LilyPond avec une même construction syntaxique, qui est :
 
+@node Répétitions courantes
+@unnumberedsubsubsec Répétitions courantes
+@translationof Normal repeats
 
-@example
-\repeat @var{type_de_la_reprise} @var{nombre_de_répétitions} @var{expression_à_répéter}
-@end example
+On peut indiquer une répétition de la façon suivante :
 
-On peut ajouter, pour indiquer une fin alternative :
-@funindex \alternative
 @example
-\alternative @{
- @var{alternative1}
- @var{alternative2}
- @var{alternative3}
- @dots{}
-@}
+\repeat volta @var{nombre_de_fois} @var{expression_musicale}
 @end example
 
 @noindent
-chaque @var{alternative} étant une expression musicale.  Si l'on donne
-trop peu d'alternatives en regard du nombre de fois où le passage doit
-être rejoué, la première alternative sera jouée plusieurs fois.
-
+où @var{expression_musicale} représente ce qui doît être répété.  On
+peut ajouter une fin alternative à l'aide de la commande
+@code{\alternative}.  Chaque @var{alternative} étant une expression
+musicale en elle-même, il faudra les regrouper par des accolades.  Si
+l'on donne trop peu d'alternatives en regard du nombre de fois où le
+passage doit être rejoué, la première alternative sera jouée plusieurs
+fois. 
 
 Les reprises courantes s'indiquent comme ceci :
 
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-c1
+@lilypond[verbatim,quote,relative=2]
 \repeat volta 2 { c4 d e f }
-\repeat volta 2 { f e d c }
+c2 d
+\repeat volta 2 { d4 e f g }
 @end lilypond
 
 Et avec des fins alternatives :
 
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
+@lilypond[verbatim,quote,relative=2]
+\repeat volta 4 { c4 d e f }
+\alternative {
+  { d2 e }
+  { f2 g }
+}
 c1
-\repeat volta 2 {c4 d e f}
-\alternative { {d2 d} {f f,} }
 @end lilypond
 
+@warning{Une clause @code{@bs{}relative} ne doît jamais se trouver à
+l'intérieur d'une section @code{@bs{}repeat} : vous aurez
+immanquablement des portées parasites.  Voir 
+@rlearning{Apparition d'une portée supplémentaire}.}
+
+@cindex reprise avec levée
+@cindex levée dans une reprise
+@cindex anacrouse et reprise
+@cindex reprise et anacrouse
+
+@funindex \partial
+
 Il est possible de créer des répétitions avec une levée.
 
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-\new Staff {
-  \partial 4 e |
-  \repeat volta 4 { c2 d2 | e2 f2 | }
-  \alternative { { g4 g g e } { a a a a | b2. } }
+@lilypond[verbatim,quote,relative=2]
+\partial 4
+e |
+\repeat volta 4 { c2 d | e2 f | }
+\alternative {
+  { g4 g g e }
+  { a4 a a a | b2. }
 }
 @end lilypond
 
 @noindent
 ou
 
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-\new Staff {
-  \partial 4 
-  \repeat volta 4 { e | c2 d2 | e2 f2 | }
-  \alternative { { \partial 4*3 g4 g g } { a a a a | b2. } }
+@lilypond[verbatim,quote,relative=2]
+\partial 4
+\repeat volta 4 { e4 | c2 d | e2 f | }
+\alternative {
+  { \partial 4*3 g4 g g }
+  { a4 a a a | b2. }
 }
 @end lilypond
 
-
+@cindex reprise et liaison de prolongation
+@cindex alternative et liaison de prolongation
+@cindex liaison de prolongationt et reprise
+@cindex liaison de prolongation et alternative
 
 @funindex \repeatTie
+
 Des liaisons de tenue peuvent être ajoutées à toute alternative :
 
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
+@lilypond[verbatim,quote,relative=2]
 c1
-\repeat volta 2 {c4 d e f ~ }
-\alternative { {f2 d} {f\repeatTie f,} }
-@end lilypond
-
-
-On peut raccourcir les crochets indiquant les fins alternatives,
-en définissant la propriété @code{voltaSpannerDuration}.  Dans 
-l'exemple suivant, le crochet ne se prolonge que sur une mesure
-à 3/4.
-
-@lilypond[verbatim,ragged-right,quote]
-\relative c''{
-  \time 3/4
-  c c c
-  \set Staff.voltaSpannerDuration = #(ly:make-moment 3 4)
-  \repeat volta 5 { d d d }
-  \alternative { { e e e f f f }
-  { g g g } }
+\repeat volta 2 { c4 d e f ~ }
+\alternative {
+  { f2 d }
+  { f2\repeatTie f, }
 }
 @end lilypond
 
-Si l'on souhaite à la fois terminer une ligne par une double barre et
-débuter la ligne suivante avec une section reprise, on peut utiliser
-@example
-@dots{} \bar "||:" \break
-\repeat volta 2 @{ @dots{}
-@end example
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{shortening-volta-brackets.ly}
 
-Consultez @ref{Barres de mesure} pour plus d'informations.
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{adding-volta-brackets-to-additional-staves.ly}
 
 
 @seealso
-Program reference: @rinternals{VoltaBracket},
-@rinternals{RepeatedMusic},
-@rinternals{VoltaRepeatedMusic}, et
-@rinternals{UnfoldedRepeatedMusic}.
+Glossaire musicologique :
+@rglos{repeat},
+@rglos{volta}.
 
+Manuel de notation :
+@ref{Barres de mesure},
+@ref{Modification des greffons de contexte}.
 
-Exemples
+Morceaux choisis :
+@rlsr{Repeats}.
 
-Les crochets précédant une reprise s'impriment d'ordinaire seulement
-au-dessus de la portée du haut.  On peut ajuster cela en déplaçant le
-graveur @code{Volta_engraver} vers les contextes de portée
-(@code{Staff}) qui doivent comporter ces crochets ;
-voir @ref{Modification des greffons de contexte}, et @rlsr{Repeats}.
+Référence eds propriétés internes :
+@rinternals{VoltaBracket},
+@rinternals{RepeatedMusic},
+@rinternals{VoltaRepeatedMusic},
+@rinternals{UnfoldedRepeatedMusic}.
 
 
 @knownissues
 
 @cindex reprises ambigües
+@cindex reprises imbriquées
+@cindex imbrication de reprises
+@cindex numéro de mesure et reprises
+@cindex reprise et liaison
+@cindex liaison et reprise
 
 Des reprises imbriquées telles que
 
@@ -236,180 +232,336 @@ en définissant @code{Score.measurePosition} ou en invoquant la commande
 @code{\partial}.  De même, aucune liaison (de tenue ou autre)
 n'est répétée.
 
-Les crochets qui indiquent les alternatives ne sont pas alignés 
-verticalement.
 
+@node Indications de reprise manuelles
+@unnumberedsubsubsec Indications de reprise manuelles
+@translationof Manual repeat marks
 
-@node Commandes de reprise manuelles
-@unnumberedsubsubsec Commandes de reprise manuelles
-@translationof Manual repeat commands
+@cindex reprise manuelle
 
 @funindex repeatCommands
+@funindex start-repeat
+
+@warning{Les méthodes présentées dans les lignes qui suivent ne
+devraient servir qu'à indiquer des constructions de répétitions
+inhabituelles.  En règle générale, il vaut mieux recourrir à la fonction
+@code{\\repeat} pour créer une reprise, ou bien insérer la barre de
+mesure adéquate.   Pour plus d'information, voir le chapitre 
+@ref{Barres de mesure}.} 
 
 La propriété @code{repeatCommands} sert à contrôler la mise en forme des
 reprises.  On la définit par une suite de commandes de reprise Scheme.
 
-@table @asis
-@item @code{start-repeat}
+@table @code
+@item start-repeat
 Pour imprimer une barre de reprise @code{|:}
 
-@item @code{end-repeat}
-Pour imprimer une barre de reprise @code{:|}
+@lilypond[verbatim,quote,relative=2]
+c1
+\set Score.repeatCommands = #'(start-repeat)
+d4 e f g
+c1
+@end lilypond
 
-@item @code{(volta @var{texte})}
-Pour imprimer un crochet indiquant une alternative.  L'argument
-@var{texte} mentionné dans le crochet peut être n'importe quelle chaîne
-de caractères ou indication textuelle --- voir @ref{Mise en forme du texte}.
-Attention cependant à changer la police, car la police employée par
-défaut pour les chiffres ne contient aucun caractère alphabétique.
+Traditionnellement, on n'imprime pas de signe de reprise en début de
+morceau. 
 
-@item @code{(volta #f)}
-Pour terminer un crochet indiquant une alternative.
-@end table
+@item end-repeat
+Pour imprimer une barre de reprise @code{:|}
 
-@lilypond[quote,ragged-right,verbatim,fragment,relative=2]
-c4
-  \set Score.repeatCommands = #'((volta "93") end-repeat)
-c4 c4
-  \set Score.repeatCommands = #'((volta #f))
-c4 c4
+@lilypond[verbatim,quote,relative=2]
+c1
+d4 e f g
+\set Score.repeatCommands = #'(end-repeat)
+c1
 @end lilypond
 
+@item (volta @var{nombre}) ... (volta #f)
+Pour obtenir un crochet indiquant le numéro de l'alternative.  Pour que
+le crochet s'imprime effectivement, il faut specifier explicitement
+l'endroit où il doît se terminer.  
 
-@seealso
-Référence du programme : @rinternals{VoltaBracket},
-@rinternals{RepeatedMusic},
-@rinternals{VoltaRepeatedMusic}, et
-@rinternals{UnfoldedRepeatedMusic}.
-
-
-@node Autres types de répétition
-@subsection Autres types de répétition
-@translationof Other repeats
+@lilypond[verbatim,quote,relative=2]
+f4 g a b
+\set Score.repeatCommands = #'((volta "2"))
+g4 a g a
+\set Score.repeatCommands = #'((volta #f))
+c1
+@end lilypond
 
-@menu
-* Répétition en trémolo::             
-* Subdivision de trémolos::        
-* Répétitions de mesure::             
-@end menu
+@end table
 
-@node Répétition en trémolo
-@unnumberedsubsubsec Répétition en trémolo
-@translationof Tremolo repeats
+Plusieurs commande de reprise peuvent intervenir au même moment :
 
-@cindex ligatures de trémolo
-@cindex trémolo, ligatures de
+@lilypond[verbatim,quote,relative=2]
+f4 g a b
+\set Score.repeatCommands = #'((volta "2, 5") end-repeat)
+g4 a g a
+c1
+\set Score.repeatCommands = #'((volta #f) (volta "95") end-repeat)
+b1
+\set Score.repeatCommands = #'((volta #f))
+@end lilypond
 
-On peut placer une notation de trémolo entre deux notes, avec la
-commande @code{\repeat} suivie du style trémolo :
-@lilypond[quote,verbatim,ragged-right]
-\new Voice \relative c' {
-  \repeat tremolo 8 { c16 d16 }
-  \repeat tremolo 4 { c16 d16 }
-  \repeat tremolo 2 { c16 d16 }
+@cindex alternative et texte
+@cindex texte et alternative
+
+Le crochet indiquant une alternative peut contenir aussi du texte.  Il
+peut s'agir d'un ou plusieurs nombres ou bien d'une indication textuelle
+(@emph{markup}) -- voir @ref{Mise en forme du texte}.  Le plus simple,
+dans le cas d'une indication textuelle, est de tout d'abord définir ce
+@code{markup}, puis de l'inclure dans une liste Scheme.
+
+@lilypond[verbatim,quote]
+voltaAdLib = \markup { 1. 2. 3... \text \italic { ad lib. } }
+\relative c'' {
+  c1
+  \set Score.repeatCommands = #(list(list 'volta voltaAdLib) 'start-repeat)
+  c4 b d e
+  \set Score.repeatCommands = #'((volta #f) (volta "4.") end-repeat)
+  f1
+  \set Score.repeatCommands = #'((volta #f))
 }
 @end lilypond
 
 
-On peut aussi indiquer un trémolo sur une seule note, qu'il faudra
-alors laisser sans accolades.
+@snippets
 
-@lilypond[quote,verbatim,ragged-right]
-\repeat tremolo 4 c'16
-@end lilypond
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{printing-a-repeat-sign-at-the-beginning-of-a-piece.ly}
 
 
-La subdivision des trémolos aboutit à un résultat semblable : voir
-@ref{Subdivision de trémolos}.
+@seealso
+Manuel de notation :
+@ref{Barres de mesure},
+@ref{Mise en forme du texte}.
 
+Morceaux choisis :
+@rlsr{Repeats}.
 
-@seealso
-Dans ce manuel : @ref{Subdivision de trémolos}, @ref{Répétitions et reprises}.
+Référence des propriétés internes : 
+@rinternals{VoltaBracket},
+@rinternals{RepeatedMusic},
+@rinternals{VoltaRepeatedMusic}.
 
-Référence du programme : @rinternals{Beam}, @rinternals{StemTremolo}.
 
+@node Répétitions explicites
+@unnumberedsubsubsec Répétitions explicites
+@translationof Written-out repeats
 
-@node Subdivision de trémolos
-@unnumberedsubsubsec Subdivision de trémolos
-@translationof Tremolo subdivisions
+@cindex musique répétitive
+@cindex reprise, expansion
+@cindex expansion de reprise
 
-@cindex trémolo, indication de
-@funindex tremoloFlags
+@funindex \repeat unfold
+@funindex unfold
 
-Un trémolo peut être indiqué sur une seule note, en la faisant suivre
-de deux points et d'un nombre :
+Adjoindre à la commande @code{\repeat} l'opion @code{unfold} permet de
+s'affranchir de ressaisir de la musique répétitive.  En voici la 
+syntaxe : 
 
-@code{note:}[@var{nombre}]. 
+@example
+\repeat unfold @var{nombre_de_fois} @var{expression_musicale}
+@end example
 
-Le nombre en question correspond à la valeur de la subdivision ;
-il doit être au moins de 8, auquel cas la hampe sera barrée par un 
-seul trait de ligature.  Si ce nombre est omis, la dernière valeur ---
-telle que mémorisée dans @code{tremoloFlags} --- sera utilisée.
+@noindent
+Le contenu de @var{expression_musicale} sera donc expansé autant de fois
+que stipulé par @var{nombre_de_fois}.
 
-@lilypond[quote,ragged-right,verbatim,fragment]
-c'2:8 c':32 | c': c': |
+@lilypond[verbatim,quote,relative=2]
+c1
+\repeat unfold 2 { c4 d e f }
+c1
 @end lilypond
 
+Une répétition expansée peut aussi avoir une fin alternative.  Si
+l'on donne trop peu d'alternatives en regard du nombre de fois où le
+passage doit être rejoué, la première alternative sera jouée plusieurs
+fois. 
 
-@knownissues
-
-Les trémolos entrés de cette manière ne sont pas rendus dans
-le fichier MIDI.
+@lilypond[verbatim,quote,relative=2]
+c1
+\repeat unfold 2 { g4 f e d }
+  \alternative {
+    { cis2 g' }
+    { cis,2 b }
+  }
+c1
+@end lilypond
 
 
 @seealso
-Dans ce manuel : @ref{Répétition en trémolo}.
+Morceaux choisis :
+@rlsr{Repeats}.
 
-Référence du programme : @rinternals{StemTremolo}.
+Référence des propriétés internes :
+@rinternals{RepeatedMusic},
+@rinternals{UnfoldedRepeatedMusic}.
 
 
+@node Autres types de répétition
+@subsection Autres types de répétition
+@translationof Short repeats
+
+Nous abordons ici les reprises de courte durée.  Il en existe deux
+formes, à savoir la répétition d'une même note sur quelques mesures -- 
+représentée par une barre oblique ou le signe pourcent -- et les
+trémolos. 
+
+@menu
+* Répétitions de mesure::       
+* Répétitions en trémolo::       
+@end menu
+
 @node Répétitions de mesure
 @unnumberedsubsubsec Répétitions de mesure
 @translationof Measure repeats
 
-@cindex percent repeats
-@cindex measure repeats
+@cindex pourcent, répétition
+@cindex mesure, répétition de
+@cindex répétition, pourcent
+@cindex répétition de mesure
+@cindex répétition courte
+
+@funindex \repeat percent
+@funindex percent
 
 Le style de @qq{reprise en pourcent} sert à répéter une séquence de
 notes.  Elle sera imprimée une fois, puis remplacée par un symbole
 spécial.  Les séquences d'une ou deux mesures sont remplacées par un
 symbole qui ressemble au symbole de pourcentage, tandis que les
 séquences inférieures à une mesure sont remplacées par une barre
-oblique.  Toutes ces répétitions doivent être déclarées dans un contexte
-@code{Voice}.
+oblique.  
 
-@lilypond[quote,verbatim,ragged-right]
-\new Voice \relative c' {
-  \repeat percent 4 { c4 }
-  \repeat percent 2 { c2 es2 f4 fis4 g4 c4 }
-}
-@end lilypond
+@example
+@code{\repeat percent @var{nombre} @var{musicexpr}}
+@end example
 
-Les répétitions de plus de 2 mesures sont surmontées d'un compteur,
-si l'on assigne @emph{vrai} (lettre @q{t}) à la propriété
-@code{countPercentRepeats}.
+@noindent
+où @var{musicexpr} est l'expression musicale à répéter.
 
-@lilypond[relative=2,fragment,quote,verbatim,ragged-right]
-\new Voice {
-\set countPercentRepeats = ##t
-  \repeat percent 4 { c1 }
-}
+@lilypond[verbatim,quote,relative=2]
+\repeat percent 4 { c4 }
+\repeat percent 2 { b4 a g f }
+\repeat percent 2 { c2 es | f4 fis g c | }
 @end lilypond
 
-Des symboles de pourcentage isolés peuvent aussi être obtenus, au
-moyen d'un silence multi-mesures dont on modifie l'aspect :
+@snippets
 
-@lilypond[fragment,verbatim,quote]
-\override MultiMeasureRest #'stencil
-  = #ly:multi-measure-rest::percent
-R1
-@end lilypond
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{percent-repeat-counter.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{percent-repeat-count-visibility.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{isolated-percent-repeats.ly}
 
 
 @seealso
-Référence du programme : @rinternals{RepeatSlash},
-@rinternals{PercentRepeat}, @rinternals{DoublePercentRepeat},
+Glossaire musicologique :
+@rglos{percent repeat},
+@rglos{simile}.
+
+Morceaux choisis :
+@rlsr{Repeats}.
+
+Référence des propriétés internes :
+@rinternals{RepeatSlash},
+@rinternals{PercentRepeat},
+@rinternals{DoublePercentRepeat},
 @rinternals{DoublePercentRepeatCounter},
 @rinternals{PercentRepeatCounter},
 @rinternals{PercentRepeatedMusic}.
 
+
+@knownissues
+
+LilyPond ne dispose que de trois signes différents pour indiquer une
+répétition @qq{en pourcent} : une simple barre oblique qui représente un 
+seul temps quelle que soit la durée des notes répétées ; une barre
+oblique simple entourée de points qui représente une mesure entière ;
+une double barre oblique entourée de points et placée sur la barre de
+mesure pour indiquer une répétition de deux mesures.  
+
+
+@node Répétitions en trémolo
+@unnumberedsubsubsec Répétitions en trémolo
+@translationof Tremolo repeats
+
+@cindex trémolo
+@cindex trémolo, ligatures de
+
+@funindex \repeat tremolo
+@funindex tremolo
+
+Il y a deux formes de trémolo : la répétition alernative de deux notes
+ou accords, et la répétition rapide d'une seule note ou d'un accord.  
+Lorsqu'il est constitué d'une alternance répétitive, le trémolo
+s'indique en ajoutant des barres de ligature entre les deux notes ou
+accords concernés.  Lorsqu'il s'agit d'une répétition rapide, des barres
+de ligature penchées sont ajoutée à la note en question.
+
+On peut placer une notation de trémolo entre deux notes, avec la
+commande @code{\repeat} suivie du style trémolo :
+
+@lilypond[quote,verbatim,relative=2]
+\repeat tremolo 8 { c16 d }
+\repeat tremolo 6 { c16 d }
+\repeat tremolo 2 { c16 d }
+@end lilypond
+
+La syntaxe de @code{\repeat tremolo} requiert espressément deux notes
+encadrées par des accolades, et le nombre de répétitions exprimé en
+durée d'une note (pointée ou non).  Ainsi, dans l'exemple ci-dessus,
+@w{@code{\repeat tremolo 7}} est valide car correspond à une note
+doublement pointée, à l'inverse de @code{\repeat tremolo 9}.
+
+La durée d'un trémolo est égale à la durée de l'expression entre
+accolades multipliée par le nombre de fois à répéter :
+@code{\repeat@tie{}tremolo@tie{}8@tie{}@{@tie{}c16@tie{}d16@tie{}@}}
+correspond donc à la valeur d'une ronde, et sera représenté par deux
+rondes séparées par des barres de trémolo.
+
+On peut indiquer de la même manière un trémolo sur une seule note, qu'il
+faudra alors laisser sans accolades :
+
+@lilypond[quote,verbatim,ragged-right]
+\repeat tremolo 4 c'16
+@end lilypond
+
+
+@cindex trémolo, indication de
+@funindex tremoloFlags
+@funindex :
+
+Le même résultat s'obtient en faisant suivre la note considérée 
+de deux points et d'un nombre (@w{@code{note:}[@var{nombre}]}).
+Le nombre en question correspond à la valeur de la subdivision ;
+il doit être au moins de 8, auquel cas la hampe sera barrée par un 
+seul trait de ligature.  Si ce nombre est omis, la dernière valeur --
+telle que mémorisée dans @code{tremoloFlags} -- sera utilisée.
+
+@lilypond[quote,verbatim,relative=2]
+c2:8 c:32
+c: c:
+@end lilypond
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{cross-staff-tremolos.ly}
+
+
+@seealso
+Morceaux choisis :
+@rlsr{Repeats}.
+
+@cindex tremolo, cross-staff
+@cindex cross-staff tremolo
+
+@knownissues
+
+Les trémolos distribués sur plusieurs portées peuvent amener des
+résultat inespérés.
+
index dfa8c446db89ac5305c61868f15645c7ff31304c..19df664dc57dcd1c09f82032b381e52243ad4dc5 100644 (file)
@@ -1,6 +1,6 @@
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-    Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
+    Translation of GIT committish: 7b70644b95f383b4281e9ffa146d315d2ada11d3
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -60,12 +60,12 @@ et de mesure.
 Dans les modes de notes, d'accords et de paroles, les durées sont
 écrites avec des chiffres et des points : les durées sont indiquées par
 leur valeur fractionnaire par rapport à la durée d'une ronde.  Une
-noire, par exemple, qui équivaut à un 1/4 de ronde --- @emph{quarter note}
-en anglais --- s'écrit @code{4}, alors qu'une blanche ---
-@emph{half-note}, 1/2 ronde --- s'écrit @code{2}.  Pour des notes plus
+noire, par exemple, qui équivaut à un 1/4 de ronde -- @emph{quarter note}
+en anglais -- s'écrit @code{4}, alors qu'une blanche --
+@emph{half-note}, 1/2 ronde -- s'écrit @code{2}.  Pour des notes plus
 longues qu'une ronde, vous devrez utiliser les commandes @code{\longa}
 pour une longue, et @code{\breve} pour une brève, aussi appelée carrée.
-Des durées plus courtes que la quintuple-croche --- 1/128 de ronde ---
+Des durées plus courtes que la quintuple-croche -- 1/128 de ronde --
 sont possibles, à condition de les ligaturer.
 
 @c Two 64th notes are needed to obtain beams
@@ -196,7 +196,7 @@ soupir à la maxime (valant huit pauses).
 @funindex \times
 @funindex times
 
-Les nolets --- triolets, quintolets, etc. --- sont obtenus en
+Les nolets -- triolets, quintolets, etc. -- sont obtenus en
 multipliant toutes les durées d'une expression musicale par une
 fraction.
 
@@ -226,7 +226,7 @@ c4 c \times 2/3 { b4 a g }
 @funindex tupletNeutral
 
 Des commandes prédéfinies permettent de déroger au positionnement
-automatique du crochet en surplomb ou au-dessous des notes --- voir le
+automatique du crochet en surplomb ou au-dessous des notes -- voir le
 chapitre @ref{Direction et positionnement}.  
 
 Les nolets peuvent être imbriqués ; par exemple,
@@ -314,7 +314,7 @@ se placer au sein de l'expression du nolet.
 @cindex durées, échelonnement
 
 Vous pouvez altérer la durée des notes, silences ou accords en leur
-joignant une fraction @var{N/M}, donnant @qq{@code{*}@var{N/M}} --- ou
+joignant une fraction @var{N/M}, donnant @qq{@code{*}@var{N/M}} -- ou
 @qq{@code{*}@var{N}} si @var{M=1}.  Ceci ne modifiera en rien l'apparence
 des notes ou silences produits, mais affectera le rendu MIDI.
 
@@ -368,7 +368,7 @@ manière de comprimer ou étirer de la musique :
 @end lilypond
 
 @noindent
-Cette technique est tout à fait appropriée à la notation polymétrique ---
+Cette technique est tout à fait appropriée à la notation polymétrique --
 voir @ref{Notation polymétrique}.
 
 
@@ -421,7 +421,7 @@ longues doivent s'aligner sur les subdivisions de la mesure, comme ici :
 
 Lorsque l'on doit lier de nombreuses notes sur plusieurs mesures, il
 devient plus facile d'avoir recours à la division automatique des notes
---- voir @ref{Découpage automatique des notes}.  Ce procédé divise
+-- voir @ref{Découpage automatique des notes}.  Ce procédé divise
 automatiquement les notes trop longues, et les lie par-delà les barres
 de mesure.
 
@@ -484,7 +484,7 @@ lieu de l'étouffer.  Elles s'indiquent de la manière suivante :
 @funindex tieNeutral
 
 Le positionnement vertical des liaisons de prolongation peut être affiné
---- voir à ce sujet les @qq{commandes prédéfinies} et, pour de plus
+-- voir à ce sujet les @qq{commandes prédéfinies} et, pour de plus
 amples détails, @ref{Direction et positionnement}.
 
 @cindex liaison de prolongation, apparence
@@ -696,7 +696,7 @@ soupir à la maxime (équivalant à huit pauses).
 @funindex \skip
 @funindex skip
 
-Un silence invisible --- que l'on pourrait appeler un @qq{saut} ---
+Un silence invisible -- que l'on pourrait appeler un @qq{saut} --
 peut être entré comme une note avec le nom de note @code{s} ou avec
 @code{\skip@tie{}@var{durée}}
 
@@ -793,7 +793,7 @@ R4*5*4 |
 @end lilypond
 
 Un @code{R} qui s'étend sur une seule mesure s'imprime tantôt comme
-une pause, tantôt comme une brève --- ou @qq{bâton de pause} --- et
+une pause, tantôt comme une brève -- ou @qq{bâton de pause} -- et
 sera centré sur la mesure quelle qu'en soit la métrique :
 
 @lilypond[quote,verbatim,fragment]
@@ -815,7 +815,7 @@ R1*2 |
 
 Par défaut, un silence multimesures sera répété sur autant de mesures
 que nécessaire.  Il peut aussi n'être imprimé qu'une seule fois,
-surplombé du nombre de mesures vides --- ou @qq{à compter} :
+surplombé du nombre de mesures vides -- ou @qq{à compter} :
 
 @lilypond[quote,fragment,verbatim]
 % Default behavior
@@ -1157,7 +1157,7 @@ s'afficher.
 
 Les barres de mesure et les numéros de mesure sont calculés
 automatiquement, ce qui n'est pas souhaitable dans le cas d'une musique
-non mesurée --- les cadences, par exemple. Les commandes
+non mesurée -- les cadences, par exemple. Les commandes
 @code{\cadenzaOn} et @code{\cadenzaOff} permettent de désactiver et de
 rétablir la métrique automatique.
 
@@ -1246,7 +1246,7 @@ pour indiquer où des sauts de ligne peuvent prendre place.
 @funindex times
 
 LilyPond gère les métriques composites, aussi bien de manière explicite
-que de manière détournée --- modification de l'indicateur de métrique
+que de manière détournée -- modification de l'indicateur de métrique
 et échelonnement de la durée des notes.
 
 @strong{@i{Portées aux métriques différentes, mesures d'égale longueur}}
@@ -1257,7 +1257,7 @@ ensuite remplacé dans chacune des portées par un quotient donné en
 argument à la propriété @code{timeSignatureFraction}.  La durée des
 notes sera enfin proratisée selon la métrique commune (voir 
 @ref{Métrique}) grâce à la fonction @code{\scaleDurations}, qui
-s'utilise tout comme la commande @code{\times} --- sans toutefois créer
+s'utilise tout comme la commande @code{\times} -- sans toutefois créer
 de crochet de nolet (voir @ref{Changement d'échelle des durées}).
 
 @cindex ligature et musique polymétrique
@@ -1422,8 +1422,8 @@ Références internes :
 
 @knownissues
 
-Bien que toutes les durées --- particulièrement celles contenant des
-nolets --- ne puissent être exactement représentées avec des notes
+Bien que toutes les durées -- particulièrement celles contenant des
+nolets -- ne puissent être exactement représentées avec des notes
 normales et des points, le graveur @code{Completion_heads_engraver}
 n'insèrera pas de nolet.
 
@@ -1438,7 +1438,7 @@ divise pas les silences.
 @cindex mélodie, affichage du rythme seul
 @cindex rythmique d'une mélodie
 
-Au moyen d'une portée rythmique --- @emph{rhythmic staff} en anglais ---
+Au moyen d'une portée rythmique -- @emph{rhythmic staff} en anglais --
 on peut montrer seulement le rythme d'une mélodie : toutes les notes
 sont ramenées à la même hauteur, sur une portée d'une seule ligne.
 
@@ -1551,13 +1551,13 @@ d'imprimer les ligatures.
 @end lilypond
 
 Lorsque ce comportement automatisé n'est pas satisfaisant, on peut
-définir des groupements manuellement --- voir @ref{Barres de ligature manuelles}.  Dans
-le cas où le groupe de notes en question contient un silence, il est
-@strong{impératif} d'indiquer explicitement les début et fin de la
-ligature.
+définir des groupements manuellement -- voir 
+@ref{Barres de ligature manuelles}.  Dans le cas où le groupe de notes
+en question contient un silence, il est @strong{impératif} d'indiquer
+explicitement les début et fin de la ligature.
 
 Lorsque les ligatures automatiques ne sont pas nécessaires, il suffit de
-désactiver la fonctionnalité par un @code{\autoBeamOff} --- réactivation
+désactiver la fonctionnalité par un @code{\autoBeamOff} -- réactivation
 par @code{\autoBeamOn} :
 
 @lilypond[quote,relative=1,verbatim]
@@ -1643,23 +1643,29 @@ altérations appartenant à d'autres voix.
 @funindex \set
 @funindex set
 
-The placement of automatic beams is determined by the time signature.
-Three types of rules are used for determining the end of automatic
-beams: @emph{default} rules
-for the time signature, @emph{explicit} rules for the beam in the time
-signature, and the @emph{beatLength} for the time signature.
+La gestion automatisée des ligatures est directement liée à la métrique.
+La terminaison d'une ligature automatique peut se définir selon trois
+différents types de règles : des règles @emph{par défaut} relatives à la
+métrique, des règles @emph{explicites} pour la métrique en question, et
+des règles basées sur la @emph{pulsation} (@code{beatLength}).
 
 Les règles déterminant le positionnement des ligatures automatiques
 s'appliquent dans l'ordre suivant de priorité :
 
 @itemize
 
-@item Une ligature explicite --- indiquée par @code{[@dots{}]} --- sera
+@item Une ligature explicite -- indiquée par @code{[@dots{}]} -- sera
 toujours respectée ; sinon
 
 @item si @code{\autoBeamOff} a été activé, il n'y aura pas de ligature ;
 sinon
 
+@item si une règle explicite de terminaison a été définie pour un type
+de ligature dans la métrique en cours, c'est elle qui s'appliquera ; sinon 
+
+@item if a default beam-ending rule is defined in the time signature,
+use it to group notes with beams, otherwise
+
 @item utiliser la valeur de @code{beatLength} pour regrouper les notes
 par des ligatures.
 
@@ -1667,19 +1673,49 @@ par des ligatures.
 
 @i{@strong{Modification des ligatures selon la pulsation}}
 
-@code{beatLength} constituent tous deux des
-@strong{moments}, autrement dit des unités de durée musicale.  La
-fonction Scheme @code{ly:make-moment} est tout particulièrement chargée
-de créer cette quantité de type @i{moment} --- pour plus d'information,
-consultez @ref{Gestion du temps}.
+La pulsation -- @emph{beatlength} en anglais -- découle directement de
+la métrique telle que définie par la commande @code{\time}.  Elle est
+par défaut égale à un sur le dénominateur de la métrique.
 
-@code{beatGrouping} représente une liste d'entiers correspondant au
-nombre de pulsations de chaque groupe.
+@code{beatLength} constitue un @strong{moment}, autrement dit une unité
+de durée musicale.  La fonction Scheme @code{ly:make-moment} est tout
+particulièrement chargée de créer cette quantité de type @i{moment} --
+pour plus d'information, consultez @ref{Gestion du temps}.
 
-@snippets
+Les règles de ligature et de subdivision sont enregistrées dans la
+propriété @code{beamSettings}. Ses valeurs par défaut, rangées par
+métrique et type de règle,  sont contenues dans le fichier
+@code{scm/@/beam@/-settings@/.scm}. 
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{grouping-beats.ly}
+La métrique est constituée d'une paire en langage Scheme -- p.ex.
+@w{@code{#'(4 . 4)}}.
+
+Le type de règle est soit @code{#'end} pour ce qui concerne les
+terminaisons, soit @code{#'subdivide} pour les subdivisions.
+
+Chaque règle, qu'il s'agisse de terminaison ou de subdivision, est
+constituée d'une liste de paires en langage Scheme (un @emph{alist} pour
+les puristes), qui indique le durée de base et sa règle de regroupement. 
+
+@example
+#'((durée-type1 . groupement-1)
+   (durée-type2 . groupement-2)
+   (durée-type3 . groupement-3))
+@end example
+
+@var{durée-type} est soit constitué d'une paire indiquant la durée de
+base -- par exemple @w{@code{(1 . 16)}}, soit du caractère @code{*} pour
+indiquer une règle par défaut qui s'appliquera à toutes les ligatures en
+l'absence de règle explicite. 
+
+@var{groupement} est constitué d'une liste Scheme qui indique le
+regroupement à effectuer.  En ce qui concerne les règles par défaut --
+celles où la durée type est @code{*} -- le regroupement s'indique
+en terme de @code{beatLength} ;  pour les règles explicites, en durée
+type. 
+
+Les règles de ligature automatique se modifient à l'aide des commandes 
+@code{\overrideBeamSettings} et @code{\revertBeamSettings}.
 
 @lilypond[quote,relative=2,verbatim]
   \time 5/16
@@ -1690,6 +1726,11 @@ nombre de pulsations de chaque groupe.
   c8^"(3+2)" c16 c8
 @end lilypond
 
+Les effets de règles de ligature peuvent être restreints à un contexte
+particulier.  En l'absence de régles particulières déterminées dans un
+contexte de niveau inférieur, les règles définies au niveau directement
+supérieur s'appliqueront.
+
 @lilypond[quote, verbatim,relative=1]
 \new Staff <<
   \time 7/8
@@ -1709,7 +1750,6 @@ nombre de pulsations de chaque groupe.
 >>
 @end lilypond
 
-
 Lorsque plusieurs voix cohabitent sur une même portée et que les règles
 de ligature doivent s'appliquer sans distinction, il faut spécifier que
 ces règles affectent le contexte @code{Staff} :
@@ -1730,6 +1770,16 @@ ces règles affectent le contexte @code{Staff} :
 
 @funindex revertBeamSettings
 
+Pour revenir aux règles de ligature par défaut, il suffit d'utiliser la
+commande @code{\revertBeamSettings}. Ses argument sont identiques à ceux
+fournis à @code{\overrideBeamSettings}, sans toutefois mentionner les
+règles de regroupement.
+
+@example
+\revertBeamSettings contexte métrique type-de-règle
+@end example
+
+
 @lilypond[quote,verbatim,relative=2]
 \time 4/4
 \repeat unfold 16 {a16}
@@ -1907,8 +1957,8 @@ Morceaux choisis :
 @rlsr{Rhythms}.
 
 
-@node Barres de mesure
-@subsection Barres de mesure
+@node Mesures
+@subsection Mesures
 @translationof Bars
 
 
@@ -1936,7 +1986,7 @@ indiquer une reprise. En principe, elles sont insérées automatiquement
 en respectant la métrique en vigueur.
 
 Il est possible de forcer l'impression d'une barre de mesure spéciale,
-avec la commande @code{\bar} --- c'est d'ailleurs l'habitude en fin de
+avec la commande @code{\bar} -- c'est d'ailleurs l'habitude en fin de
 morceau, où l'on voit une double barre :
 
 @lilypond[quote,relative=1,verbatim]
@@ -1966,8 +2016,8 @@ de barre de mesure visible, en utilisant :
 @end example
 
 @noindent
-Ceci insérera une barre de mesure invisible, et permettra --- sans pour
-autant le forcer --- de sauter de ligne à cet endroit, sans incrémenter
+Ceci insérera une barre de mesure invisible, et permettra -- sans pour
+autant le forcer -- de sauter de ligne à cet endroit, sans incrémenter
 le numéro de mesure. Pour forcer le saut de ligne, référez-vous à
 @ref{Sauts de ligne}. 
 
@@ -2125,8 +2175,8 @@ qu'en tête de chaque ligne.  Pour y arriver, il faudra dans un premier
 temps annuler le comportement par défaut afin que les numéros puissent
 être imprimés ailleurs qu'en début de ligne.  Tout ceci est contrôlé par
 la propriété @code{break-visibility} du @code{BarNumber}.  Elle se
-compose de trois commutateurs --- définis à @qq{vrai} (@code{#t}) ou
-@qq{faux} (@code{#f}) --- pour spécifier si le numéro de mesure est
+compose de trois commutateurs -- définis à @qq{vrai} (@code{#t}) ou
+@qq{faux} (@code{#f}) -- pour spécifier si le numéro de mesure est
 visible ou non.  Les valeurs sont rangées dans l'ordre suivant :
 @code{visible en fin de ligne}, @code{visible en cours de ligne},
 @code{visible en début de ligne}.  Voici comment imprimer partout les
@@ -2181,8 +2231,8 @@ Référence du programme :
 @knownissues
 
 Les numéros de mesure peuvent entrer en collision avec les crochets d'un
-@rinternals{StaffGroup}.  La propriété @code{padding} --- décalage
---- de l'objet @rinternals{BarNumber} permet alors d'ajuster leur
+@rinternals{StaffGroup}.  La propriété @code{padding} -- décalage
+-- de l'objet @rinternals{BarNumber} permet alors d'ajuster leur
 positionnement.
 
 
@@ -2409,6 +2459,7 @@ Référence du programme :
 @translationof Grace notes
 
 @cindex ornements
+@cindex broderies
 @cindex notes d'ornement
 @cindex appoggiature
 @cindex acciaccature
@@ -2453,7 +2504,7 @@ pour chaque petite croche.
 @funindex afterGrace
 
 La commande @code{\afterGrace} sert à placer une petite note après une
-note réelle --- et non @emph{avant} comme d'ordinaire.  Cette commande
+note réelle -- et non @emph{avant} comme d'ordinaire.  Cette commande
 requiert deux arguments : la note réelle, et la ou les petites notes qui
 suivent.
 
@@ -2563,8 +2614,8 @@ comme une @i{appoggiatura}, c'est-à-dire sans trait.
 @c TODO Add link to LSR snippet to add slash when available
 
 La synchronisation des petites notes se fait de façon parfois
-surprenante, car les autres objets de la portée --- barres de mesure,
-armures, etc. --- sont eux aussi synchrones. Pensez-y lorsque vous
+surprenante, car les autres objets de la portée -- barres de mesure,
+armures, etc. -- sont eux aussi synchrones. Pensez-y lorsque vous
 mélez des portées comprenant des petites notes et d'autres sans :
 
 @lilypond[quote,relative=2,verbatim]
index eac626a57df6f77b7155199d26196c537d65224c..afce1ce29f1c13f3464f1857be565c9ea75109d5 100644 (file)
@@ -1,6 +1,6 @@
-@c -*- coding: utf-8; mode: texinfo; -*-
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-    Translation of GIT committish: 33ba8d40c3493011a4b39ab8b1369701f8013bd6
+    Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -8,7 +8,7 @@
 
 @c \version "2.12.0"
 
-@c Translators: Frédéric Chiasson, Valentin Villenave
+@c Translators: Frédéric Chiasson, Valentin Villenave, Jean-Charles Malahieude
 @c Translation checkers: Jean-Charles Malahieude, John Mandereau
 
 @node Notes simultanées
@@ -34,6 +34,7 @@ portée.
 
 @menu
 * Notes en accords::                      
+* Expressions simultanées::                      
 * Clusters::                    
 @end menu
 
@@ -42,16 +43,82 @@ portée.
 @translationof Chorded notes
 
 @cindex accords
+@cindex chevrons
+@cindex hauteur relative et accords
+
+@funindex <
+@funindex >
+@funindex <...>
 
 Un accord est formé en mettant une série de hauteurs entre @code{<}
 et @code{>}.  Un accord peut être suivi d'une durée et d'indications
 d'articulation, comme une simple note.
 
-@lilypond[verbatim,ragged-right,fragment,quote,relative=1]
-<c e g>4 <c>8
+@lilypond[verbatim,quote,relative=1]
+<c e g>2 <c f a>4-> <e g c>-.
+@end lilypond
+
+Les accords peuvent être saisis en mode relatif.  Dans un accord,
+l'octave de chaque hauteur saisie est fonction de la précédente, à
+l'exception de la première qui, elle, sera positionnée en fonction de la
+première hauteur mentionnée dans l'accord précédent.
+
+Pour plus d'information à propos des accords, voir 
+@ref{Notation des accords}.
+
+
+@seealso
+Glossaire musical :
+@rglos{chord}.
+
+Manuel d'initiation :
+@rlearning{Combinaison de notes en accords}.
+
+Manuel de notation :
+@ref{Notation des accords}.
+
+Morceaux choisis :
+@rlsr{Simultaneous notes}.
+
+
+@node Expressions simultanées
+@unnumberedsubsubsec Expressions simultanées
+@translationof Simultaneous expressions
+
+Lorsqu'une ou plusieurs expressions musicales sont encadrées par des
+doubles chevrons, elles sont considérées comme étant simultanées.  Si la
+première expression débute par une note unique ou si l'intégralité de
+l'expression simultanée est explicitement rattachée à une voix en
+particulier, elle sera placée sur une seule portée.  Dans le cas
+contraire, les éléments d'une expression simultanée seront placés sur 
+des portées distinctes. 
+
+Voici deux exemples d'expression simultanée sur une même portée :
+
+@lilypond[quote,verbatim,relative=2]
+\new Voice {  % explicit single voice
+  << { a4 b g2 } { d4 g c,2 } >>
+}
+@end lilypond
+
+@lilypond[quote,verbatim,relative=2]
+% single first note
+a << { a4 b g } { d4 g c, } >>
 @end lilypond
 
-Pour plus d'information à propos des accords, voir @ref{Notation des accords}.
+Cette manière de procéder est utile lorsque les éléments de l'expression 
+ont des rythmes identiques.  Dès que vous tenterez d'attacher sur une
+même hampe des notes de durée différente, vous générerez des erreurs.
+
+Dans l'exemple suivant, l'expression simultanée génère implicitement
+plusieurs portées :
+
+@lilypond[quote,verbatim,relative=2]
+% no single first note
+<< { a4 b g2 } { d4 g2 c,4 } >>
+@end lilypond
+
+En pareil cas, des rythmes différents ne sont source d'aucun problème. 
 
 
 @node Clusters
@@ -60,32 +127,48 @@ Pour plus d'information à propos des accords, voir @ref{Notation des accords}.
 
 @cindex cluster
 
-Un cluster indique un agrégat de sons.  On peut le représenter par une
-plage limitée par un ambitus (notes extrêmes).  On obtient une telle notation en
-appliquant la fonction @code{makeClusters} à une séquence d'accords,
-comme  
-@lilypond[quote,ragged-right,relative=2,fragment,verbatim]
-\makeClusters { <c e > <b f'> }
+@funindex \makeClusters
+@funindex makeClusters
+
+Un cluster indique un agrégat de sons.  On peut le représenter par une 
+plage limitée par un ambitus (notes extrêmes).  On obtient une telle
+notation en appliquant la fonction @code{makeClusters} à une séquence
+d'accords, comme  
+
+@lilypond[quote,relative=2,verbatim]
+\makeClusters { <g b>2 <c g'> }
 @end lilypond
 
 Des notes ordinaires et des clusters peuvent cohabiter sur une même
-portée, y compris simultanément --- en pareil cas, rien ne sera fait
+portée, y compris simultanément -- en pareil cas, rien ne sera fait
 pour tenter d'empécher les chevauchements entre notes et clusters.
 
 
 @seealso
-Référence du programme : @rinternals{ClusterSpanner},
-@rinternals{ClusterSpannerBeacon},
-@rinternals{Cluster_spanner_engraver}.
+Glossaire musicologique :
+@rglos{cluster}.
 
-Exemples : @rlsr{Simultaneous notes}.
+Morceaux choisis : 
+@rlsr{Simultaneous notes}.
 
+Référence des propriétés internes : 
+@rinternals{ClusterSpanner},
+@rinternals{ClusterSpannerBeacon},
+@rinternals{Cluster_spanner_engraver}.
 
 @knownissues
 
 Les expressions musicales du type @code{<< @{ g8 e8 @} a4 >>} ne
 seront pas imprimées de façon acceptable.  utilisez plutôt 
-@code{<g a>8 <e a>8} . 
+@code{<g a>8 <e a>8}. 
+
+Dans la mesure où un cluster ne possède pas de hampe, il n'y a aucun
+moyen d'en connaître la durée ; cependant la longueur du signe imprimé
+dépend directement de la durée affectée aux accords qui le définissent.
+
+Seul un silence peut séparer deux clusters.
+
+Les clusters ne sont pas reproduits en MIDI.
 
 
 @node Plusieurs voix
@@ -93,211 +176,432 @@ seront pas imprimées de façon acceptable.  utilisez plutôt
 @translationof Multiple voices
 
 @menu
-* Polyphonie basique::             
+* Polyphonie sur une portée::             
+* Styles de voix::             
 * Résolution des collisions::        
 * Regroupement automatique de parties::    
 * Saisie de musique en parallèle::   
 @end menu
 
-@node Polyphonie basique
-@unnumberedsubsubsec Polyphonie basique
-@translationof Basic polyphony
+@node Polyphonie sur une portée
+@unnumberedsubsubsec Polyphonie sur une portée
+@translationof Single-staff polyphony
 
-@cindex polyphonie
+@cindex polyphonie, portée simple
+@cindex voix
+@cindex paroles assignées à une voix
+
+@funindex \voiceOne
+@funindex voiceOne
+@funindex \voiceOne ... \voiceFour
+@funindex Voice
+@funindex \oneVoice
+@funindex oneVoice
+
+@strong{@i{Instanciation explicite des voix}}
 
 La manière la plus facile d'entrer des fragments avec plus d'une voix
-sur une portée est d'entrer chaque voix comme une suite de notes
---- entre accolades : @code{@{...@}} --- puis de les combiner simultanément,
-en séparant les voix avec @code{\\}
+sur une portée est est la suivante :
 
-@funindex \\
+@lilypond[quote,relative=3,verbatim]
+\new Staff <<
+  \new Voice = "first"
+    { \voiceOne r8 r16 g e8. f16 g8[ c,] f e16 d }
+  \new Voice= "second"
+    { \voiceTwo d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+>>
+@end lilypond
 
-@lilypond[quote,verbatim,fragment]
-\new Staff \relative c' {
-  c16 d e f
-  <<
-    { g4 f e | d2 e2 } \\
-    { r8 e4 d c8 ~ | c b16 a b8 g ~ g2 } \\
-    { s2. | s4 b4 c2 }
-  >>
-}
+@noindent
+Vous constaterez que les voix sont créées  explicitement et qu'elles
+sont nommées.  Les commandes @code{\voiceOne} @dots{} @code{\voiceFour}
+déterminent les voix de telle sorte que les première et troisième
+auront des hampes vers le haut, et les deuxième et quatrième vers le
+bas.  D'utre prt, les notes des troisièmre et quatrième voix seront
+quelque peu décalées, tout comme leurs silences, afin d'éviter les
+collisions.  La commande @code{\oneVoice} permet de retrouver les
+réglages par défaut.
+
+@strong{@i{Polyphonie temporaire}}
+
+Un fragement temporairement polyphonique se construit de la manière
+suivante :
+
+@example
+<< @{ \voiceOne ... @}
+  \new Voice @{ \voiceTwo ... @}
+>> \oneVoice
+@end example
+
+@noindent
+En fait, la première expression d'une polyphonie temporaire reste dans
+le même contexte @code{Voice} que celui existant auparavant et qui
+perdurera àprès ce fragment.  Les autres expressions entre doubles
+chevrons seront assignées à des voix temporaires distinctes.  C'est la
+raison pour laquelle les paroles qui suivaient la voix avant la
+polyphonie continueront à le faire durant ce passage polyphonique et
+après lui.
+
+@lilypond[quote, verbatim, relative=2]
+<<
+  \new Voice = "melody" {
+    a4
+    <<
+      {
+        \voiceOne
+        g f
+      }
+      \new Voice {
+        \voiceTwo
+        d2
+      }
+    >>
+    \oneVoice
+    e4
+  }
+  \new Lyrics \lyricsto "melody" {
+  This is my song.
+  }
+>>
 @end lilypond
 
-Le séparateur permet aux contextes @rinternals{Voice}@footnote{Ces
-voix polyphoniques sont parfois appelées @qq{couches} ou @qq{calques} dans
-d'autres logiciels de notation.}
+@noindent
+Vous remarquerez que les commandes @code{\voiceOne} et @code{\voiceTwo}
+permettent d'obtenir des réglages différents pour chacune des voix.
+
+@strong{@i{La construction avec un double antislash}}
+
 @cindex couches
 @cindex calques
-d'être identifiés.  Les contextes de voix portent les noms @code{"1"},
-@code{"2"}, etc.  Dans chacun de ces contextes, la direction verticale
-des liaisons, hampes, etc. est réglée de manière appropriée.
-
-Ces voix sont toutes distinctes de la voix qui contient les notes en
-dehors de la construction @code{<< \\ >>}.  On doit le prendre en compte
-lorsqu'on fait des changements au niveau des voix.  Cela veut aussi dire
-que les liaisons de prolongation et d'articulation ne peuvent ni entrer
-ni sortir de la construction @code{<< \\ >>}.  À l'inverse, des voix
-parallèles venant de constructions @code{<< \\ >>} séparées sur la même
-portée sont dans les mêmes voix.  Voici le même exemple, avec des
-couleurs et têtes de note différentes pour chaque voix.  Notez que le
-changement de style de tête de note n'affecte pas l'intérieur des
-constructions @code{<< \\ >>}.  Aussi, le changement à la deuxième voix
-dans la première construction @code{<< \\ >>} l'affecte aussi dans la
-deuxième construction @code{<< \\ >>}, et la voix est liée entre les
-deux constructions.
 
+@funindex \\
+
+Une construction de la forme @code{<< @{...@} \\ @{...@} >>}, dans
+laquelle plusieurs expressions sont séparées par des doubles obliques
+inversées, se comporte différemment de celle sans séparateurs :
+@strong{tous} les membres de cette contruction seront assignés à de
+nouveaux contextes de voix.  Ces contextes de voix, créés implicitement,
+portent les noms @code{"1"}, @code{"2"}, etc.  Dans chacun de ces
+contextes, la direction verticale des liaisons, hampes, etc. est réglée
+de manière appropriée. En voici un exemple :
+
+@lilypond[quote,relative=3,verbatim]
+<<
+  { r8 r16 g e8. f16 g8[ c,] f e16 d }
+  \\
+  { d16 c d8~ d16 b c8~ c16 b c8~ c16 b8. }
+>>
+@end lilypond
+
+Cette syntaxe peut être utilisée dans la mesure où la création puis la
+disparition de voix temporaires sont sans conséquence.  Les réglages de
+ces voix créées implicitement sont les même que si elles avaient été
+créées à l'aide des commandes @code{\voiceOne} à @code{\voiceFour}, dans
+leur ordre d'apparition. 
+
+Dans l'exemple qui suit, la voix intermédiaire à des hampes vers le
+haut.   Nous la plaçons donc en troisième position, de telle sorte
+qu'elle adopte les réglages de @code{\voiceThree} qui correspondent à ce
+que nous voulons.  Grâce à des espaces invisibles, nous évitons de
+surcharger la portée avec des demis soupirs.
+
+@lilypond[quote,relative=3,verbatim]
+<<
+  { r8 g g  g g f16 ees f8 d }
+  \\
+  { ees,8 r ees r d r d r }
+  \\
+  { d'8 s c s bes s a s }
+>>
+@end lilypond
+
+En dehors des cas les plus simples, nous vous invitons à toujours créer
+les contextes de voix de manière explicite.  Voir à ce sujet
+@rlearning{Contextes et graveurs} et 
+@rlearning{Instanciation explicite des voix}.
+
+@strong{@i{Identité rythmique}}
+
+Lorsque l'on doît saisir des fragments de musique parallèle qui ont le
+même rythme, on peut les combiner dans un contexte de voix unique et par
+voie de conséquence former des accords.  Il suffit pour cela de les
+regrouper dans une construction de musique simultanée simple au sein
+d'une voix explicite :
+
+@lilypond[quote,relative=2,verbatim]
+\new Voice <<
+  { e4 f8 d e16 f g8 d4 }
+  { c4 d8 b c16 d e8 b4 }
+>>
+@end lilypond
+
+Prenez garde que les différents éléments doivent impérativement avoir la
+même structure rythmique, sous peine de ligature aléatoire et de
+messages d'avertissement.
+
+
+@predefined
+@code{\voiceOne},
+@code{\voiceTwo},
+@code{\voiceThree},
+@code{\voiceFour},
+@code{\oneVoice}.
+@endpredefined
+
+
+@seealso
+Manuel d'initiation :
+@rlearning{Les voix contiennent la musique},
+@rlearning{Instanciation explicite des voix}.
+
+Manuel de notation :
+@ref{Portées de percussion},
+@ref{Silences invisibles},
+@ref{Hampes}.
+
+Morceaux choisis :
+@rlsr{Simultaneous notes}.
+
+
+@node Styles de voix
+@unnumberedsubsubsec Styles de voix
+@translationof Voice styles
+
+@cindex voix, styles
+@cindex styles de voix
+@cindex colorier des voix
 @cindex têtes de note, styles
 
-@lilypond[quote,verbatim,fragment]
-\new Staff \relative c' {
-  \override NoteHead #'style = #'cross
-  \override NoteHead #'color = #red
-  c16 d e f
-  <<
-    { g4 f e } \\
-    { \override NoteHead #'style = #'triangle
-      \override NoteHead #'color = #blue
-    r8 e4 d c8 ~ }
-  >> |
-  <<
-    { d2 e2 } \\
-    { c8 b16 a b8 g ~ g2 } \\
-    { \override NoteHead #'style = #'slash 
-      \override NoteHead #'color = #green
-      s4 b4 c2 }
-  >>
-}
+@funindex \voiceOneStyle
+@funindex \voiceTwoStyle
+@funindex \voiceThreeStyle
+@funindex \voiceFourStyle
+@funindex \voiceNeutralStyle
+
+Opter pour des couleurs et des têtes de notes spécifiques selon la voix
+permet de les identifier plus facliement :
+
+@lilypond[quote,relative=2,verbatim]
+<<
+  { \voiceOneStyle d4 c2 b4 }
+  \\
+  { \voiceTwoStyle e,2 e }
+  \\
+  { \voiceThreeStyle b2. c4 }
+  \\
+  { \voiceFourStyle g'2 g }
+>>
 @end lilypond
 
-La polyphonie ne change pas la relation des notes dans un bloc
-@code{\relative @{ @}}.  Chaque note est calculée en fonction de la note
-qui la précède immédiatement, sans tenir compte des différentes voix.
+La commande @code{\voiceNeutralstyle} permet de revenir à la
+présentation normale.
 
-@example
-\relative @{ noteA << noteB \\ noteC >> noteD @}
-@end example
 
-@code{noteC} est calculé relativement à @code{noteB}, non pas à
-@code{noteA} ; @code{noteD} est calculé relativement à @code{noteC}, non
-pas à @code{noteB} ou @code{noteA}.
+@predefined
+@code{\voiceOneStyle},
+@code{\voiceTwoStyle},
+@code{\voiceThreeStyle},
+@code{\voiceFourStyle},
+@code{\voiceNeutralStyle}.
+@endpredefined
+
+
+@seealso
+Manuel d'initiation :
+@rlearning{J'entends des Voix},
+@rlearning{Autres sources d'information}.
+
+Morceaux choisis :
+@rlsr{Simultaneous notes}.
 
 
 @node Résolution des collisions
 @unnumberedsubsubsec Résolution des collisions
 @translationof Collision resolution
 
-D'ordinaire, les têtes de notes pointées et non-pointées ne sont pas
-fusionnées, mais lorsque la propriété @code{merge-differently-dotted} de
-l'objet @rinternals{NoteCollision} est définie, elles se trouvent
-fusionnées :
-
-@lilypond[quote,verbatim,fragment,ragged-right,relative=2]
-\new Voice << {
-  g8 g8
-  \override Staff.NoteCollision
-    #'merge-differently-dotted = ##t
-  g8 g8
-} \\ { g8.[ f16] g8.[ f16] } >>
+@cindex fusion de notes
+@cindex collision de notes
+@cindex collisions
+@cindex shift note
+@cindex multiples voix
+@cindex voix multiples
+@cindex polyphonie
+@cindex décélage de voix
+@cindex voix, décalage
+@cindex silences, décalage automatique
+
+@funindex \shiftOn
+@funindex shiftOn
+@funindex \shiftOnn
+@funindex shiftOnn
+@funindex \shiftOnnn
+@funindex shiftOnnn
+@funindex \shiftOff
+@funindex shiftOff
+@funindex \mergeDifferentlyDottedOn
+@funindex mergeDifferentlyDottedOn
+@funindex \mergeDifferentlyDottedOff
+@funindex mergeDifferentlyDottedOff
+@funindex \mergeDifferentlyHeadedOn
+@funindex mergeDifferentlyHeadedOn
+@funindex \mergeDifferentlyHeadedOff
+@funindex mergeDifferentlyHeadedOff
+
+
+Les notes de hauteur identique appartenant à des voix différentes, même
+si leur hampe sont opposées, verront leur tête automatiquement
+fusionnées.  Les notes dont la tête diffère ou bien qui ont la hampe dans
+la même direction ne seront pas automatiquement fusionnées.  Les
+silences, lorsqu'ils sont dans une autre voix et à l'opposé des
+hampes seront décalés verticalement.
+
+@lilypond[quote,verbatim,relative=2]
+<<
+  {
+    c8 d e d c d c4
+    g'2 fis
+  } \\ {
+    c2 c8. b16 c4
+    e,2 r
+  } \\ {
+    \oneVoice
+    s1
+    e8 a b c d2
+  }
+>>
 @end lilypond
 
-De même, vous pouvez fusionner une tête de blanche avec une tête de
-croche, en définissant @code{merge-differently-headed}
+Cependant, vous pouvez fusionner une tête de blanche avec une tête de
+croche :
 
-@lilypond[quote,ragged-right,fragment,relative=2,verbatim]
-\new Voice << {
-  c8 c4.
-  \override Staff.NoteCollision
-    #'merge-differently-headed = ##t
-c8 c4. } \\ { c2 c2 } >>
+@lilypond[quote,verbatim,relative=2]
+<<
+  {
+    \mergeDifferentlyHeadedOn
+    c8 d e d c d c4
+    g'2 fis
+  } \\ {
+    c2 c8. b16 c4
+    e,2 r
+  } \\ {
+    \oneVoice
+    s1
+    e8 a b c d2
+  }
+>>
 @end lilypond
 
-LilyPond décale aussi verticalement les silences à l'opposé des hampes,
-par exemple
+De même, vous pouvez fusionner les têtes de notes pointées et
+non-pointées : 
 
-@lilypond[quote,ragged-right,fragment,verbatim]
-\new Voice << c''4 \\ r4 >>
+@lilypond[quote,relative=2,verbatim]
+<<
+  {
+    \mergeDifferentlyHeadedOn
+    \mergeDifferentlyDottedOn
+    c8 d e d c d c4
+    g'2 fis
+  } \\ {
+    c2 c8. b16 c4
+    e,2 r
+  } \\ {
+    \oneVoice
+    s1
+    e8 a b c d2
+  }
+>>
 @end lilypond
 
+
+
+
 Lorsque trois notes ou plus s'agglutinent dans un même empilement,
-@code{merge-differently-headed} ne peut mener à bien la fusion des deux
+@code{\mergeDifferentlyHeadedOn} ne peut mener à bien la fusion des deux
 notes qui devraient l'être.  Pour obtenir une fusion optimale, appliquez
-un décalage (@code{\shift}) à la note qui ne devrait pas s'empiler.
-Dans la première mesure de l'exemple suivant,
-@code{merge-differently-headed} ne fonctionne pas --- la tête de la
-blanche est noire.  Dans la seconde mesure, @code{\shiftOn} s'applique
-pour sortir le sol (@code{g}) de l'alignement, et
-@code{merge-differently-headed} fonctionne correctement.
-
-@lilypond[quote,ragged-right,fragment,verbatim,relative=2]
-\override Staff.NoteCollision #'merge-differently-headed = ##t
-<<
-  { d=''2 g2 } \\
-  { \oneVoice d=''8 c8 r4 e,8 c'8 r4 } \\
-  { \voiceFour e,,2 e'2}
->>
+un décalage (@code{\shift}) à la note qui ne devrait pas fusionner.
+Ici, on applique un @code{\shiftOn} pour décaler le @notation{sol} de
+l'empilement ; le rendement de @code{\mergeDifferentlyHeadedOn} est
+alors comme il faut.
+
+@lilypond[quote,relative=2,verbatim]
 <<
-  { d'=''2 \shiftOn g2 } \\ 
-  { \oneVoice d=''8 c8 r4 e,8 c'8 r4 } \\
-  { \voiceFour e,,2 e'2}
+  {
+    \mergeDifferentlyHeadedOn
+    \mergeDifferentlyDottedOn
+    c8 d e d c d c4
+    \shiftOn
+    g'2 fis
+  } \\ {
+    c2 c8. b16 c4
+    e,2 r
+  } \\ {
+    \oneVoice
+    s1
+    e8 a b c d2
+  }
+
 >>
 @end lilypond
 
+Les commandes @code{\shiftOn}, @code{\shiftOnn}, et @code{\shiftOnnn}
+déterminent le niveau de décalage des accords de la voix en cours.  
+Les voix externes -- habituellement, les voix une et deux -- ont
+@code{\shiftOff}, alors que les voix internes -- trois et quatre -- ont
+@code{\shiftOn}.  @code{\shiftOnn} et @code{\shiftOnnn} sont des niveaux
+supplémentaires de décalage. 
+
+
+Les têtes de notes ne seront fusionnées que dans la mesure où leur
+hampe sont opposées.
+
 
 @predefined
-@funindex \oneVoice
-@code{\oneVoice},
-@funindex \voiceOne
-@code{\voiceOne},
-@funindex \voiceTwo
-@code{\voiceTwo},
-@funindex \voiceThree
-@code{\voiceThree},
-@funindex \voiceFour
-@code{\voiceFour}.
+@code{\mergeDifferentlyDottedOn},
+@code{\mergeDifferentlyDottedOff},
+@code{\mergeDifferentlyHeadedOn},
+@code{\mergeDifferentlyHeadedOff}.
 
-@funindex \shiftOn
 @code{\shiftOn},
-@funindex \shiftOnn
 @code{\shiftOnn},
-@funindex \shiftOnnn
 @code{\shiftOnnn},
-@funindex \shiftOff
-@code{\shiftOff} : toutes ces commandes précisent le degré de décalage
-des notes de la voix courante.  Les voix externes --- habituellement,
-les voix une et deux --- ont @code{\shiftOff}, alors que les voix
-internes --- trois et quatre --- ont @code{\shiftOn}.  @code{\shiftOnn}
-et @code{\shiftOnnn} sont des niveaux supplémentaires de décalage.
+@code{\shiftOff}.
 @endpredefined
 
 
-Quand LilyPond est dépassé, la propriété @code{force-hshift} de l'objet
-@rinternals{NoteColumn}, et des silences à hauteur déterminée, peuvent
-s'avérer utiles pour dicter au programme les choix de placement.
-
-@lilypond[quote,verbatim,ragged-right]
-\relative <<
-{
-  <d g>
-  <d g>
-} \\ {
-  <b f'>
-  \once \override NoteColumn #'force-hshift = #1.7
-  <b f'>
-} >>
-@end lilypond
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{additional-voices-to-avoid-collisions.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{forcing-horizontal-shift-of-notes.ly}
 
 
 @seealso
-Référence du programme : les objets appropriés pour résoudre les
-collisions sont @rinternals{NoteCollision} et
+Glossaire musicologique :
+@rglos{polyphony}.
+
+Manuel d'initiation :
+@rlearning{Multiple notes at once},
+@rlearning{Voices contain music},
+@rlearning{Collisions of objects}.
+
+Morceaux choisis :
+@rlsr{Simultaneous notes}.
+
+Référence des propriétés internes :
+@rinternals{NoteColumn},
+@rinternals{NoteCollision},
 @rinternals{RestCollision}.
 
 
 @knownissues
 
-Quand @code{merge-differently-headed} est utilisé avec une croche ou
-une valeur plus courte à hampe vers le haut, et une blanche hampe vers
-le bas, la croche se retrouve à la mauvaise place.
+@ignore
+@c TODO investigate! Sometimes it works, sometimes not. --FV
+The requirements for successfully merging different note heads that
+are at the same time differently dotted are not clear.
+@end ignore
 
 Il n'y a aucune prise en charge des agrégats dans lesquels une même note
 apparaît avec différentes altérations.  Il est conseillé d'avoir recours
@@ -309,8 +613,14 @@ voir @ref{Clusters}.
 @node Regroupement automatique de parties
 @unnumberedsubsubsec Regroupement automatique de parties
 @translationof Automatic part combining
+
 @cindex regroupement automatique de parties
 @cindex parties, combiner des
+@cindex a due
+@cindex solo
+
+@funindex \partcombine
+@funindex partcombine
 
 Le regroupement automatique de parties vous permet de fusionner deux
 pupitres sur une seule portée, ceci dans le but de créer des
@@ -323,77 +633,94 @@ ressortir les solos et parties @emph{a due}.
 Voici la syntaxe qui permet de combiner des parties :
 
 @example
-\partcombine @var{musicexpr1} @var{musicexpr2}
+\partcombine @var{expression_musicale_1} @var{expression_musicale_2}
 @end example
 
-
 L'exemple suivant illustre les fonctionnalités élémentaires du
 combinateur de parties : positionner les parties sur une portée, gérer
-la direction des hampes et de la polyphonie.
-
-@lilypond[quote,verbatim,ragged-right,fragment]
-\new Staff \partcombine
-  \relative g' { g g a( b) c c r r }
-  \relative g' { g g r4 r e e g g }
-@end lilypond
-
-Le premier @code{sol} n'apparaît qu'une seule fois, alors qu'il a été
-spécifié deux fois (une fois dans chacune des parties).  La direction
-des hampes et des liaisons de tenue ou de phrasé est gérée
-automatiquement, selon qu'il s'agisse d'un solo ou d'un unisson.  La
-première partie, dont le contexte s'appellera @code{one}, aura toujours
-ses hampes dirigées vers le haut et sera notée @q{Solo}, alors que la
-deuxième, appelée @code{two}, aura des hampes vers le bas et sera
-notée @q{Solo@tie{}II}.
-
-Si votre intention n'est que de fusionner les parties, sans ajouter de
-texte, assignez faux à la propriété @code{printPartCombineTexts}.
+la direction des hampes et de la polyphonie. Les identificateurs sont
+les mêmes pour la combinaison que pour les parties séparées.
 
-@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
-\new Staff <<
-  \set Staff.printPartCombineTexts = ##f
-  \partcombine
-    \relative g' { g a( b) r }
-    \relative g' { g r4 r f }
->>
-@end lilypond
+@lilypond[quote,verbatim]
+instrumentOne = \relative c' {
+  c4 d e f
+  R1
+  d'4 c b a
+  b4 g2 f4
+  e1
+}
 
-Le texte imprimé pour les sections solo ou à l'unisson se règle par
-les propriétés @code{soloText}, @code{soloIIText}, et @code{aDueText}. 
+instrumentTwo = \relative g' {
+  R1
+  g4 a b c
+  d c b a
+  g f( e) d
+  e1
+}
 
-@lilypond[quote,verbatim,ragged-right,fragment,relative=2]
-\new Staff <<
-  \set Score.soloText = #"ichi"
-  \set Score.soloIIText = #"ni"
-  \set Score.aDueText = #"tachi"
-  \partcombine
-    \relative g' { g4 g a( b) r }
-    \relative g' { g4 g r r f }
+<<
+  \new Staff \instrumentOne
+  \new Staff \instrumentTwo
+  \new Staff \partcombine \instrumentOne \instrumentTwo
 >>
 @end lilypond
 
-LilyPond interprète dans un contexte @rinternals{Voice} les
-arguments fournis à @code{\partcombine}.  Si vous travaillez avec des
-octaves relatives, spécifiez @code{\relative} dans chacune des
-expressions musicales, comme ceci :
+Les notes de la troisième mesure n'apparaîssent qu'une seule fois,
+alors qu'elles ont été spécifiés deux fois (une fois dans chacune des
+parties).  La direction des hampes et des liaisons de tenue ou de phrasé
+est gérée automatiquement, selon qu'il s'agisse d'un solo ou d'un
+unisson.  La première partie, dont le contexte s'appellera @code{one},
+aura toujours ses hampes dirigées vers le haut et sera notée @qq{Solo},
+alors que la deuxième, appelée @code{two}, aura des hampes vers le bas
+et sera notée @qq{Solo@tie{}II}.  Les parties à l'unisson seront
+estampillées d'un @qq{a2} par défaut.
+
+LilyPond interprète dans un contexte @code{Voice} les arguments fournis
+à @code{\partcombine}.  Si vous travaillez avec des octaves relatives,
+spécifiez @code{\relative} dans chacune des expressions musicales, comme
+ceci : 
 
 @example
 \partcombine
-  \relative @dots{} @var{musicexpr1}
-  \relative @dots{} @var{musicexpr2}
+  \relative @dots{} @var{expression_musicale_1}
+  \relative @dots{} @var{expression_musicale_2}
 @end example
 
 @noindent
-Une section @code{\relative} en dehors de @code{\partcombine} sera
-sans effet sur les hauteurs de @var{musicexpr1} et @var{musicexpr2}.
+Une section @code{\relative} à l'extérieur du @code{\partcombine} restera
+sans effet sur les hauteurs de @var{expression_musicale_1} ou de 
+@var{expression_musicale_2}.
+
+
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{combining-two-parts-on-the-same-staff.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{changing-partcombine-texts.ly}
 
 
 @seealso
-Référence du programme : @rinternals{PartCombineMusic}.
+Glossaire musicologique :
+@rglos{a due},
+@rglos{part}.
+
+Manuel de notation :
+@ref{Écriture de parties séparées}.
+
+Morceaux choisis :
+@rlsr{Simultaneous notes}.
+
+Référence des propriétés internes :
+@rinternals{PartCombineMusic},
+@rinternals{Voice}.
 
 
 @knownissues
 
+@code{\partcombine} ne prend en charge que deux voix.
+
 Lorsque @code{printPartCombineTexts} est actif et que les deux voix
 jouent souvent les mêmes notes, le combinateur peut afficher @code{a2}
 plus d'une fois par mesure.
@@ -406,7 +733,14 @@ En interne, @code{\partcombine} interprète les deux arguments en tant
 que @code{Voice}s, dénommées @code{one} et @code{two}, puis décide de
 quand les parties seront fusionnées.  Par conséquent, si les arguments
 changent pour d'autres noms de contexte @rinternals{Voice}, les
-événements qu'ils contiendraient seront ignorés. 
+événements qu'ils contiendraient seront ignorés.  De la même manière, le
+combinateur n'est pas conçu pour travailler avec des paroles ; il
+s'arrête dès qu'il est explicitement fait appel à l'une des voix pour y
+attacher des paroles.  
+
+@code{\partcombine} n'examine que l'attaque des notes.  Il n'est donc
+pas en mesure de déterminer si une note attaquée précédemment est enore
+jouée ou non, ce qui peut engendrer quelques problèmes.
 
 
 @node Saisie de musique en parallèle
@@ -417,61 +751,113 @@ changent pour d'autres noms de contexte @rinternals{Voice}, les
 @cindex musique en parallèle
 @cindex musique entremêlée
 
-On peut écrire plusieurs voix de façon entremêlée :
+@funindex \parallelMusic
+@funindex parallelMusic
+
+On peut écrire plusieurs voix de façon entremêlée.  La fonction
+@code{\parallelMusic} prend en charge une liste des variables à créer,
+ainsi qu'une expression musicale.  Le contenu des différentes mesures de
+l'expression musicale deviennent les valeurs des variables respectives
+que vous pourrez ensuite utiliser pour imprimer la partition.
+
+@warning{Les contrôles de barre de mesure @code{|} sont obligatoires et
+le mesures doivent être de longueur identique.}
+
+@lilypond[quote,verbatim]
+\parallelMusic #'(voiceA voiceB voiceC) {
+  % Bar 1
+  r8 g'16 c'' e'' g' c'' e'' r8 g'16 c'' e'' g' c'' e'' |
+  r16 e'8.~   e'4            r16 e'8.~   e'4            |
+  c'2                        c'2                        |
+
+  % Bar 2
+  r8 a'16 d'' f'' a' d'' f'' r8 a'16 d'' f'' a' d'' f'' |
+  r16 d'8.~   d'4            r16 d'8.~   d'4            |
+  c'2                        c'2                        |
 
-@lilypond[quote,fragment,verbatim]
-\parallelMusic #'(voiceA voiceB) {
-  r8     g'16[ c''] e''[ g' c'' e''] r8     g'16[ c''] e''[ g' c'' e''] |
-  c'2                                c'2                                |
-  r8     a'16[ d''] f''[ a' d'' f''] r8     a'16[ d''] f''[ a' d'' f''] |
-  c'2                                c'2                                |
 }
 \new StaffGroup <<
-  \new Staff \new Voice \voiceA
-  \new Staff \new Voice \voiceB
+  \new Staff << \voiceA \\ \voiceB >>
+  \new Staff { \clef bass \voiceC }
 >>
 @end lilypond
 
-Ceci fonctionne bien avec la musique pour piano :
+Vous pouvez travailler en mode relatif.  Notez cependant que la commande
+@code{\relative} n'apparaît pas au sein du bloc @code{\parallelMusic}.
+Le calcul des hauteurs relatives s'effectue voix par voix, et non au fil
+des lignes saisies ; en d'autre termes, les notes de la @code{voiceA}
+ignorent tout de celles de la @code{voiceB}.
 
 @lilypond[quote,verbatim]
-music = {
-  \key c \major
-  \time 4/4
-  \parallelMusic #'(voiceA voiceB voiceC voiceD) {
-    % Bar 1
-    r8  g'16[ c''] e''[ g' c'' e''] r8  g'16[ c''] e''[ g' c''
-e''] |
-    c'2                                 c'2 |
-    r8  a16[ d'] f'[ a d' f']       r8  a16[ d'] f'[ a d' f'] |
-    c2                                  c2 |
-
-    % Bar 2
-    a'8 b'      c'' d''    e'' f''    g'' a'' |
-    d'4         d'         d'         d' |
-    c16 d e f   d e f g    e f g a    f g a b |
-    a,4         a,4        a,4        a,4 |
-
-    % Bar 3 ...
-  }
+\parallelMusic #'(voiceA voiceB voiceC) {
+  % Bar 1
+  r8 g16 c e g, c e r8 g,16 c e g, c e  |
+  r16 e8.~ e4       r16 e8.~  e4        |
+  c2                c                   |
+
+  % Bar 2
+  r8 a,16 d f a, d f r8 a,16 d f a, d f |
+  r16 d8.~  d4       r16 d8.~  d4       |
+  c2                 c                  |
+
+ }
+\new StaffGroup <<
+  \new Staff << \relative c'' \voiceA \\ \relative c' \voiceB >>
+  \new Staff \relative c' { \clef bass \voiceC }
+>>
+@end lilypond
+
+Ceci fonctionne bien avec la musique pour piano.  L'exemple suivant
+affecte quatre mesures à quatre variables :
+
+@lilypond[quote,verbatim]
+global = {
+  \key g \major
+  \time 2/4
+}
+
+\parallelMusic #'(voiceA voiceB voiceC voiceD) {
+  % Bar 1
+  a8    b     c   d     |
+  d4          e         |
+  c16 d e fis d e fis g |
+  a4          a         |
+
+  % Bar 2
+  e8      fis  g     a   |
+  fis4         g         |
+  e16 fis g  a fis g a b |
+  a4           a         |
+
+  % Bar 3 ...
 }
 
 \score {
   \new PianoStaff <<
-    \music
-    \new Staff <<
-      \voiceA \\
-      \voiceB
-    >>
-    \new Staff {
-      \clef bass
-      <<
-        \voiceC \\
-        \voiceD
-      >>
-    }
+     \new Staff {
+       \global
+       <<
+         \relative c'' \voiceA
+         \\
+         \relative c'  \voiceB
+       >>
+     }
+     \new Staff {
+       \global \clef bass
+       <<
+         \relative c \voiceC
+         \\
+         \relative c \voiceD
+       >>
+     }
   >>
 }
 @end lilypond
 
 
+@seealso
+Manuel d'initiation :
+@rlearning{Organisation du code source avec des variables}.
+
+Morceaux choisis :
+@rlsr{Simultaneous notes}.
index ab1c912da6c04273963de54224fc22c479758eab..6706d728c8f9bdd14f3fe6d2b4ac4ab67ef64e07 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: a6b100669bfc3847b3a03029d6a46ee9b1609e73
+    Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -35,7 +35,7 @@ instruments à vent.
 
 @menu
 * Références en matière d'instruments à vent::
-* Doigtés::
+* Doigtéspour vents::
 @end menu
 
 @node Références en matière d'instruments à vent
@@ -111,8 +111,8 @@ Morceaux choisis :
 @rlsr{Winds}
 
 
-@node Doigtés
-@unnumberedsubsubsec Doigtés
+@node Doigtés pour vents
+@unnumberedsubsubsec Doigtés pour vents
 @translationof Fingerings
 
 @c TODO add link to LSR snippet by Libero Mureddo once he has added
diff --git a/Documentation/fr/texidocs/adding-ambitus-per-voice.texidoc b/Documentation/fr/texidocs/adding-ambitus-per-voice.texidoc
new file mode 100644 (file)
index 0000000..923a384
--- /dev/null
@@ -0,0 +1,8 @@
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+L'@code{ambitus} peut être individualisé par voix.  Il faut en pareil
+cas éviter qu'ils se chevauchent.
+
+"
+  doctitlefr = "Un ambitus par voix"
+
index a748b708cc7edd2eea316b5eefed558047cb5243..bc06bab8314557e5a29d348cc8973e2b81fd25ce 100644 (file)
@@ -1,11 +1,11 @@
 %% Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421
   texidocfr = "
 Grâce à la puissance des outils préconfigurés tels que la fonction
-@code{\\drummode} et le contexte @code{DrumStaff}, la saisie de 
+@code{\\drummode} et le contexte @code{DrumStaff}, la saisie de
 parties pour percussions est extrêmement simplifiée : chaque composant
-d'une batterie trouve sa place sur une portée dédiée (avec une clef 
-spécifique) et les têtes de note sont spécifiques à chaque élément.  
-Il est également possible d'affecter un symbole particulier à chaque 
+d'une batterie trouve sa place sur une portée dédiée (avec une clef
+spécifique) et les têtes de note sont spécifiques à chaque élément.
+Il est également possible d'affecter un symbole particulier à chaque
 élément, tout comme de restreindre le nombre de lignes de la portée.
 
 "
index 925595dd0a544544046355507f5759d6ca0ac5ed..e3f25dc0c6cc22dd265b92cf132e4a8882ccf6a1 100644 (file)
@@ -3,5 +3,5 @@
 Avec un peu de code Scheme, voici comment ajouter facilement
 la date du jour à votre partition.
 "
-  
+
   doctitlefr = "Ajout de la date du jour à une partition"
diff --git a/Documentation/fr/texidocs/adding-volta-brackets-to-additional-staves.texidoc b/Documentation/fr/texidocs/adding-volta-brackets-to-additional-staves.texidoc
new file mode 100644 (file)
index 0000000..8518de4
--- /dev/null
@@ -0,0 +1,11 @@
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+  texidocfr = "
+D'ordinaire, le graveur @code{Volta_engraver} réside dans le contexte
+@code{Score} ; les crochets précédant une reprise s'impriment donc
+seulement au-dessus de la portée du haut.  On peut ajuster cela en
+déplaçant ce graveur vers les contextes de portée (@code{Staff}) qui
+doivent comporter ces crochets. 
+
+"
+  doctitlefr = "Ajout du crochet de reprise à d'autres portées"
+
diff --git a/Documentation/fr/texidocs/additional-voices-to-avoid-collisions.texidoc b/Documentation/fr/texidocs/additional-voices-to-avoid-collisions.texidoc
new file mode 100644 (file)
index 0000000..4ebfa44
--- /dev/null
@@ -0,0 +1,10 @@
+%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
+  texidocfr = "
+Dans certains cas de musique polyphonie complexe, une voix
+supplémentaire peut permettre d'éviter les risques de collision.
+Lorsque quatre voix parallèles ne suffisent pas, la fonction Scheme
+@code{context-spec-music} permet d'ajouter des d'autres voix.
+
+"
+  doctitlefr = "Ajout de voix pour éviter les collisions"
+
index 5675767b9023846ea77962313122ee4d11def4a9..784f1d8e0a5d27b2afe8ea200233be1c948008a9 100644 (file)
@@ -1,6 +1,6 @@
 %% Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421
   texidocfr = "
-Cet extrait illustre la manière de rapprocher la ligne de paroles 
+Cet extrait illustre la manière de rapprocher la ligne de paroles
 de la portée.
 
 "
diff --git a/Documentation/fr/texidocs/adjusting-the-shape-of-falls-and-doits.texidoc b/Documentation/fr/texidocs/adjusting-the-shape-of-falls-and-doits.texidoc
new file mode 100644 (file)
index 0000000..6e92e76
--- /dev/null
@@ -0,0 +1,8 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+La propriété @code{shortest-duration-space} peut devoir être retouchée
+pour ajuster l'apparence des chutes ou sauts.
+
+"
+  doctitlefr = "Ajustement du galbe des chutes ou sauts"
+
index d4cc8579d6a6b65b99b8a6d14ca6587bcd4428ae..1cfec1d23977f3dc8b3678a6209d6eb7732888d7 100644 (file)
@@ -1,8 +1,8 @@
 %% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
   texidocfr = "
-Les numéros de mesure s'alignent en principe sur la droite de l'objet 
-dont ils dépendent.  C'est normalement le coin gauche de la portée ou, 
-en cours de ligne, à gauche de la barre.  Vous pouvez toutefois les 
+Les numéros de mesure s'alignent en principe sur la droite de l'objet
+dont ils dépendent.  C'est normalement le coin gauche de la portée ou,
+en cours de ligne, à gauche de la barre.  Vous pouvez toutefois les
 centrer par rapport à la barre ou les afficher à droite de la barre.
 
 "
diff --git a/Documentation/fr/texidocs/ambitus-with-multiple-voices.texidoc b/Documentation/fr/texidocs/ambitus-with-multiple-voices.texidoc
new file mode 100644 (file)
index 0000000..e5f137e
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+Si plusieurs voix se trouvent sur une même portée, on peut attribuer le
+graveur @code{Ambitus_engraver} au contexte @code{Staff} afin d'obtenir
+l'ambitus de toutes les voix cumulées, non d'une seule des voix actives. 
+
+"
+  doctitlefr = "Ambitus sur plusieurs voix"
+
diff --git a/Documentation/fr/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc b/Documentation/fr/texidocs/applying-note-head-styles-depending-on-the-step-of-the-scale.texidoc
new file mode 100644 (file)
index 0000000..f13234a
--- /dev/null
@@ -0,0 +1,20 @@
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+La propriété @code{shapeNoteStyles} permet d'affecter un profil
+particulier à chaque degré de la gamme -- à partir de l'armure ou
+de la propriété @code{tonic}.  Ses valeurs sont constituées d'une liste 
+de symboles, qu'il s'agisse de formes géométriques (@code{triangle},
+@code{cross}, ou @code{xcircle}) ou basés sur la tradition des graveurs
+américains (avec quelques noms de note latins).
+
+LilyPond dispose de deux raccourcis, @code{\aikenHeads} et
+@code{\sacredHarpHeads}, permettant de reproduire déanciens recueils de
+chansons américaines. 
+
+L'exemple suivant montre plusieurs manières de profiler les têtes de
+note, ainsi que la capacité de trnsposer tout en respectant la fonction
+harmonique de chaque note dans la gamme. 
+
+"
+  doctitlefr = "Profilage des notes selon leur degré dans la gamme"
+
index de2fc114204df48b4fc6cfa140e93b40fbfcbe14..bbb7f1ef3d10a5b6da8b82fe479b0426eea2772d 100644 (file)
@@ -3,8 +3,8 @@
 Dans une métrique simple comme 4/4 ou 2/2, les croches sont ligaturées
 par défaut en deux groupes de quatre.
 
-En utilisant une macro qui modifie le comportement des ligatures 
-automatiques, voici comment obtenir des ligatures basées sur la valeur 
+En utilisant une macro qui modifie le comportement des ligatures
+automatiques, voici comment obtenir des ligatures basées sur la valeur
 d'une noire.
 
 "
index 19415fe494c20e4f4179775318deb686c0cfe1e7..bda4a867259bd9a0f520beac03637806affd92f6 100644 (file)
@@ -1,5 +1,5 @@
 %% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
-  
+
   texidocfr = "
 Il est normalement impensable qu'un saut de ligne tombe au milieu d'une
 ligature.  LilyPond permet néanmoins de l'obtenir.
index 947569715104685225b78617943511cad08d6ca3..6099d14a9f1eb24ea2c948a16af355ce53417c0f 100644 (file)
@@ -1,8 +1,8 @@
 %% Translation of GIT committish: 0099693675b95c7ec6664d7277f22411a14e9c1b
 
   texidocfr = "
-Il est possible de rapetisser le cercle d'un @code{\\flageolet} grâce 
-à une fonction Scheme. 
+Il est possible de rapetisser le cercle d'un @code{\\flageolet} grâce
+à une fonction Scheme.
 
 "
   doctitlefr = "Modifier la taille d'un \\flageolet"
diff --git a/Documentation/fr/texidocs/changing-partcombine-texts.texidoc b/Documentation/fr/texidocs/changing-partcombine-texts.texidoc
new file mode 100644 (file)
index 0000000..332867c
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
+  texidocfr = "
+Lorsque vous regroupez automatiquement des parties, vous pouvez
+modifier le texte qui sera affiché pour les solos et pour les parties à
+l'unisson :
+
+"
+  doctitlefr = "Modification des indications de parties combinées"
+
diff --git a/Documentation/fr/texidocs/changing-text-and-spanner-styles-for-text-dynamics.texidoc b/Documentation/fr/texidocs/changing-text-and-spanner-styles-for-text-dynamics.texidoc
new file mode 100644 (file)
index 0000000..732f370
--- /dev/null
@@ -0,0 +1,12 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Le texte par défaut des crescendos et decrescendos se change en
+modifiant les propriétés de contexte @code{crescendoText} et 
+@code{decrescendoText}. L'aspect de la ligne d'extension est fonction
+de la propriété @code{'style} du @code{DynamicTextSpanner}.  Sa valeur
+par défaut est @code{'hairpin}, mais d'autres valeurs sont disponibles,
+comme @code{'line}, @code{'dashed-line} et @code{'dotted-line}.
+
+"
+  doctitlefr = "Modifidation du texte et de l'extension de nuances textuelles"
+
diff --git a/Documentation/fr/texidocs/changing-the-breath-mark-symbol.texidoc b/Documentation/fr/texidocs/changing-the-breath-mark-symbol.texidoc
new file mode 100644 (file)
index 0000000..20937d3
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+On peut choisir le glyphe imprimé par cette commande, en modifiant la
+propriété @code{text} de l'objet @code{BreathingSign}, pour lui affecter
+n'importe quelle indication textuelle.
+
+"
+  doctitlefr = "Modification de l'indicateur de respiration"
+
diff --git a/Documentation/fr/texidocs/combining-two-parts-on-the-same-staff.texidoc b/Documentation/fr/texidocs/combining-two-parts-on-the-same-staff.texidoc
new file mode 100644 (file)
index 0000000..0c69e83
--- /dev/null
@@ -0,0 +1,20 @@
+%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
+  texidocfr = "
+L'outil de combinaison de parties (la commande @code{\\partcombine})
+permet d'avoir deux parties différentes sur une même portée.  LilyPond
+ajoute automatiquement des indications textuelles, telles que @qq{solo}
+ou @qq{a2}.  Si votre intention n'est que de fusionner les parties, sans
+ajouter de texte, assignez faux à la propriété
+@code{printPartCombineTexts}.  Dans le cas de partitions vocales, et
+plus particulièrement d'hymnes, ces @qq{solo/a2} ne sont d'aucune
+utilité, aussi vaut-il mieux les désactiver.  Dans le cas où il y aurait
+alternance entre @emph{solo} et @emph{tutti}, il vaut mieux faire appel
+à de la musique polyphonique standard.
+
+Voici trois moyens d'imprimer deux parties sur un même portée : en
+polyphonie normale, avec @code{\\partcombine} sans indication
+supplémentaire, et avec @code{\\partcombine} commentée.
+
+"
+  doctitlefr = "Combinaison de deux parties sur une même portée"
+
index 79cbf194f1019245c0385a59529a6a0a9f976b93..d6730299d0b49eb58f6ec65efc27ed8510243aed 100644 (file)
@@ -1,15 +1,18 @@
-%% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
+%% Translation of GIT committish: 7b70644b95f383b4281e9ffa146d315d2ada11d3
   texidocfr = "
+Les règles de ligature par mesure sont gérées par la propriété
+@code{beamSettings}.  Elles peuvent être modifiées par la commande
+@code{\\overrideBeamSettings}.  
 Il existe des options qui permettent de grouper les ligatures au sein
 d'une mesure, grâce à la fonction Scheme @code{set-time-signature}.
 Celle-ci prend trois arguments : le nombre de pulsations, la durée de la
 pulsation et le regroupement des pulsations dans la mesure.  Si l'on
-fait appel au @code{Measure_grouping_engraver}, la fonction 
+fait appel au @code{Measure_grouping_engraver}, la fonction
 @code{set-time-signature} créera aussi des symboles
 @code{MeasureGrouping}.  Ces symboles aident à la lecture des œuvres
 modernes à la rythmique complexe.  Dans l'exemple qui suit, la mesure à
-9/8 est divisée en 2, 2, 2 et 3.  Ceci est fourni en tant que troisième
-argument à @code{set-time-signature} : @code{'(2 2 2 3)}.
+9/8 est divisée en 2, 2, 2 et 3, alors que la mesure à 5/8 répond aux
+règles par défaut contenues dans le fichier @w{@code{scm/beam-settings.scm}}.
 
 "
   doctitlefr = "Signes de direction, signes de sous-groupe"
diff --git a/Documentation/fr/texidocs/contemporary-glissando.texidoc b/Documentation/fr/texidocs/contemporary-glissando.texidoc
new file mode 100644 (file)
index 0000000..31cf81f
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+De nos jours, il peut arriver que la note d'arrivée d'un glissando soit
+absente de la partition.  Pour ce faire, il vous faudra utiliser une
+cadence et « masquer » la note d'arrivée.
+
+"
+  doctitlefr = "Glissando contemporain"
+
diff --git a/Documentation/fr/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc b/Documentation/fr/texidocs/controlling-the-vertical-ordering-of-scripts.texidoc
new file mode 100644 (file)
index 0000000..32ee550
--- /dev/null
@@ -0,0 +1,15 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Les symboles s'ordonnent verticalement suivant la propriété
+@code{script-priority}. Plus sa valeur numérique est faible, plus le
+symbole sera proche de la note. Dans l'exemple suivant, l'objet
+@code{TextScript} -- le dièse -- a d'abord la propriété la
+plus basse, et il est donc placé plus près de la note ; ensuite c'est
+l'objet @code{Script} -- le mordant -- qui a la propriété la plus basse,
+et il se place alors sous le dièse.  Lorsque deux objets ont la même
+priorité, c'est l'ordre dans lequel ils sont indiqués qui détermine
+lequel sera placé en premier.
+
+"
+  doctitlefr = "Contrôle de l'ordre vertical des articulations et ornements"
+
diff --git a/Documentation/fr/texidocs/creating-a-delayed-turn.texidoc b/Documentation/fr/texidocs/creating-a-delayed-turn.texidoc
new file mode 100644 (file)
index 0000000..7850b04
--- /dev/null
@@ -0,0 +1,12 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Obtenir un @emph{grupetto} retardé et dans lequel la note la plus basse
+est altérée requiert quelques surcharges.  La propriété
+@w{@code{outside-staff-priority}} doît être désactivée (@code{#f}) pour
+éviter qu'elle prenne le pas sur la propriété @w{@code{avoid-slur}}.  La
+valeur assignée à @code{halign} permet de gérer horizonalement le 
+@w{« retard »}. 
+
+"
+
+  doctitlefr = "Création d'un grupetto retardé"
diff --git a/Documentation/fr/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc b/Documentation/fr/texidocs/creating-arpeggios-across-notes-in-different-voices.texidoc
new file mode 100644 (file)
index 0000000..94c3e9d
--- /dev/null
@@ -0,0 +1,8 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Affecter le graveur @code{Span_arpeggio_engraver} au contexte de la
+portée (@code{Staff}) permet de distribuer un arpège sur plusieurs voix :
+
+"
+  doctitlefr = "Arpège distribué sur plusieurs voix"
+
diff --git a/Documentation/fr/texidocs/creating-cross-staff-arpeggios-in-a-piano-staff.texidoc b/Documentation/fr/texidocs/creating-cross-staff-arpeggios-in-a-piano-staff.texidoc
new file mode 100644 (file)
index 0000000..ffeda0d
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Dans une double portée pour piano (@code{PianoStaff}), un arpège peut
+s'étendre sur les deux portées grâce à la propriété 
+@code{PianoStaff.connectArpeggios}.
+
+"
+  doctitlefr = "Arpège distribué sur une partition pour piano"
+
diff --git a/Documentation/fr/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc b/Documentation/fr/texidocs/creating-cross-staff-arpeggios-in-other-contexts.texidoc
new file mode 100644 (file)
index 0000000..3d7b417
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Il est possible de distribuer un arpège sur plusieurs portées d'un
+système autre que le @code{PianoStaff} dès lors que vous incluez le
+@code{Span_arpeggio_engraver} au contexte @code{Score}.
+
+"
+  doctitlefr = "Arpège distribué pour un autre contexte que le piano"
+
diff --git a/Documentation/fr/texidocs/cross-staff-tremolos.texidoc b/Documentation/fr/texidocs/cross-staff-tremolos.texidoc
new file mode 100644 (file)
index 0000000..d759db5
--- /dev/null
@@ -0,0 +1,10 @@
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+  texidocfr = "
+Dans la mesure où @code{\\repeat tremolo} requiert deux arguments
+musicaux pour un trémolo d'accords, la note ou l'accord de la
+portée opposée doît être encadré par des accolades et se voir adjoindre
+la commande @code{\\change Staff}.
+
+"
+  doctitlefr = "Trémolo et changement de portée"
+
index 84e5e1c1e7a44e20815d1496996c5de253d80ce9..1e068cc844632fa97ca7cdd5a36a9d9045ae6525 100644 (file)
@@ -1,10 +1,10 @@
 %% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
 
   texidocfr = "
-Les propriétés d'un diagramme de fret sont modifiables grâce au 
-@code{'fret-diagram-details}.  Lorsqu'ils sont générés sous forme 
-de @code{\markup}, rien n'empêche de les modifier en jouant sur les 
-réglages de l'objet @code{Voice.TextScript} ou bien directement sur 
+Les propriétés d'un diagramme de fret sont modifiables grâce au
+@code{'fret-diagram-details}.  Lorsqu'ils sont générés sous forme
+de @code{\markup}, rien n'empêche de les modifier en jouant sur les
+réglages de l'objet @code{Voice.TextScript} ou bien directement sur
 le @qq{markup}.
 
 "
index 7011f6624b2a75ac0aebe02fc91eb6056e48bfe3..14342fe9ac396179289bd427c85ba664904c6f29 100644 (file)
@@ -2,15 +2,15 @@
 
   texidocfr = "
 La liste des diagrammes standards prédéfinis pour la guitare peut être
- augmentée d'autres définitions spécifiques à d'autres instruments.  
-Voici comment définir un nouvel accordage ainsi que quelques diagrammes 
+ augmentée d'autres définitions spécifiques à d'autres instruments.
+Voici comment définir un nouvel accordage ainsi que quelques diagrammes
 prédéfinis pour le @qq{cuatro vénézuélien}.
 
-Cet exemple illustre aussi la manière d'ajouter des doigtés aux 
-accords ; ils serviront de référence pour la boucle d'accord et seront 
-indiqués dans les diagrammes et le @code{TabStaff}, mais pas dans la musique. 
+Cet exemple illustre aussi la manière d'ajouter des doigtés aux
+accords ; ils serviront de référence pour la boucle d'accord et seront
+indiqués dans les diagrammes et le @code{TabStaff}, mais pas dans la musique.
 
-Ces diagrammes ne peuvent pas être transposés, dans la mesure où ils 
+Ces diagrammes ne peuvent pas être transposés, dans la mesure où ils
 contiennent des informations sur les cordes.  Ceci est amené à évoluer.
 
 "
diff --git a/Documentation/fr/texidocs/dodecaphonic-style-accidentals-for-each-note-including-naturals.texidoc b/Documentation/fr/texidocs/dodecaphonic-style-accidentals-for-each-note-including-naturals.texidoc
new file mode 100644 (file)
index 0000000..2974269
--- /dev/null
@@ -0,0 +1,14 @@
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+Au début du XXème siècle, Schoenberg, Berg et Webern -- la « Seconde »
+école de Vienne -- imaginèrent de donner une importance comparable aux
+douze notes de la gamme chromatique, et éviter ainsi toute tonalité.
+Pour ce faire, ces compositions font apparaître une altération à chaque
+note, y compris un bécarre, pour mettre en exergue cette nouvelle
+approche de la théorie et du langage musicaux.
+
+Voici comment obtenir une telle notation.
+
+"
+  doctitlefr = "Le dodécaphonisme : toute note est altérée"
+
index e1ee0a8f92380149950660bc4434ed73af403a59..99a6b2264a81793e1881e7e5007012a47c487b52 100644 (file)
@@ -2,7 +2,7 @@
   texidocfr = "
 La propriété @code{tupletSpannerDuration} spécifie la longueur voulue de
 chaque crochet.  Avec elle, vous pouvez faire plusieurs nolets en ne
-tapant @code{\\times} qu'une fois, ce qui évite une longue saisie.  
+tapant @code{\\times} qu'une fois, ce qui évite une longue saisie.
 
 Dans l'exemple suivant, deux triolets sont imprimés avec une seule fonction
 @code{\\times}.
index 9e0543ecebc2ab0840454a5892eefb3092be1324..b19a97343141c5d236fdec38a06b6f2fcdedca36 100644 (file)
@@ -1,7 +1,7 @@
 %% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
 
   texidocfr = "
-L'exemple suivant illustre comment combiner des doigtés pour la main 
+L'exemple suivant illustre comment combiner des doigtés pour la main
 gauche, des indications de corrde et des doigtés pour la main droite.
 
 "
index 7c3d49ce83626d91cc91557145c2317f09ba741c..1c65efe098ff94fc0a5b9c310212baa2225582b0 100644 (file)
@@ -1,29 +1,29 @@
 %% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
   texidocfr = "
-En combinant @code{stemLeftBeamCount}, @code{stemRightBeamCount} et des 
-paires de @code{[]}, vous pourrez obtenir des crochets rectilignes et 
+En combinant @code{stemLeftBeamCount}, @code{stemRightBeamCount} et des
+paires de @code{[]}, vous pourrez obtenir des crochets rectilignes et
 des ligatures qui débordent à leurs extrémités.
 
-Pour des crochets rectilignes à droite sur des notes isolées, il suffit 
-d'ajouter une paire d'indicateurs de ligature @code{[]} et de déterminer 
+Pour des crochets rectilignes à droite sur des notes isolées, il suffit
+d'ajouter une paire d'indicateurs de ligature @code{[]} et de déterminer
 @code{stemLeftBeamCount} à zéro, comme dans l'exemple 1.
 
-Pour des crochets rectiligne à gauche, c'est @code{stemRightBeamCount} 
+Pour des crochets rectiligne à gauche, c'est @code{stemRightBeamCount}
 qu'il faudra déterminer (exemple 2).
 
-Pour que les barres de ligature débordent sur la droite, 
-@code{stemRightBeamCount} doit avoir une valeur positive ; pour un 
-débrodement à gauche, c'est sur @code{stemLeftBeamCount} qu'il faut 
+Pour que les barres de ligature débordent sur la droite,
+@code{stemRightBeamCount} doit avoir une valeur positive ; pour un
+débrodement à gauche, c'est sur @code{stemLeftBeamCount} qu'il faut
 jouer.  Tout ceci est illustré par l'exemple 3.
 
-Il est parfois judicieux, lorsqu'une note est encadrée de silences, de 
-l'affubler de crochets rectilignes de part et d'autre. L'exemple 4 
+Il est parfois judicieux, lorsqu'une note est encadrée de silences, de
+l'affubler de crochets rectilignes de part et d'autre. L'exemple 4
 montre qu'il suffit d'adjoindre à cette note un @code{[]}.
 
-(Notez bien que @code{\\set stemLeftBeamCount} sera toujours synonyme de 
+(Notez bien que @code{\\set stemLeftBeamCount} sera toujours synonyme de
 @code{\\once \\set}.  Autrement dit, la détermination des ligatures
 n'est pas @qq{permanente} ; c'est la raison pour laquelle les crochets
-du @code{c'16[]} isolé du dernier exemple n'ont rien à voir avec le 
+du @code{c'16[]} isolé du dernier exemple n'ont rien à voir avec le
 @code{\\set} indiqué deux notes auparavant.)
 
 "
diff --git a/Documentation/fr/texidocs/forcing-horizontal-shift-of-notes.texidoc b/Documentation/fr/texidocs/forcing-horizontal-shift-of-notes.texidoc
new file mode 100644 (file)
index 0000000..3e18614
--- /dev/null
@@ -0,0 +1,10 @@
+%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
+  texidocfr = "
+Quand LilyPond est dépassé, la propriété @code{force-hshift} de l'objet
+@code{NoteColumn}, et des silences à hauteur déterminée, peuvent
+s'avérer utiles pour dicter au programme les choix de placement.  On
+travaille ici en espace de portée.
+
+"
+  doctitlefr = "Décalage horizontal forcé"
+
index 0cdd0cbebe475c8b9f24967b80841e5c4bbb54e9..084537a15b656b04437f071cb7df564a45544298 100644 (file)
@@ -1,6 +1,6 @@
 %% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
   texidocfr = "
-La manière de gérer les ligatures est influencée par la propriété 
+La manière de gérer les ligatures est influencée par la propriété
 @code{beatGrouping} :
 
 "
diff --git a/Documentation/fr/texidocs/hiding-the-extender-line-for-text-dynamics.texidoc b/Documentation/fr/texidocs/hiding-the-extender-line-for-text-dynamics.texidoc
new file mode 100644 (file)
index 0000000..78bc17b
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Les crescendos et decrescendos indiqués textuellement -- tels que
+@emph{cresc.} ou @emph{dim.} -- sont suivis de pointillés qui montrent
+leur étendue.  On peut empêcher l'impression de ces pointillés avec :
+
+"
+  doctitlefr = "Masquage de l'extension des nuances textuelles"
+
diff --git a/Documentation/fr/texidocs/inserting-a-caesura.texidoc b/Documentation/fr/texidocs/inserting-a-caesura.texidoc
new file mode 100644 (file)
index 0000000..74e14ff
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Une surcharge de la propriété @code{'text} de l'objet
+@code{BreathingSign} permet de créer une marque de césure.  LilyPond
+dispose également d'une variante courbée.
+
+"
+  doctitlefr = "Insertion d'une césure"
+
diff --git a/Documentation/fr/texidocs/isolated-percent-repeats.texidoc b/Documentation/fr/texidocs/isolated-percent-repeats.texidoc
new file mode 100644 (file)
index 0000000..a2d0e50
--- /dev/null
@@ -0,0 +1,8 @@
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+  texidocfr = "
+Des symboles de pourcentage isolés peuvent aussi être obtenus, au
+moyen d'un silence multi-mesures dont on modifie l'aspect :
+
+"
+  doctitlefr = "Répétition en pourcent isolée"
+
index 111e8dae28f1ee15db027e194ec07c50c2978e4e..9a4dbe70a7c4375ebcd01cde2d35733b0a12795e 100644 (file)
@@ -4,7 +4,7 @@ Bien que compliqué de prime abord, voici un canevas tout à fait indiqué
 pour les ensembles de jazz.  Vous noterez que tous les instruments sont
 notés en ut (@code{\key c \major}), la tonalité de concert.  Les notes
 seront automatiquement transposée dès lors qu'elles seront inscrites
-dans une section @code{\\transpose}. 
+dans une section @code{\\transpose}.
 
 "
   doctitlefr = "Symboles de jazz"
diff --git a/Documentation/fr/texidocs/makam-example.texidoc b/Documentation/fr/texidocs/makam-example.texidoc
new file mode 100644 (file)
index 0000000..7109601
--- /dev/null
@@ -0,0 +1,10 @@
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+Le «makam» est une forme de mélodie turque qui utilise des altérations
+d'un neuvième de ton.  Consultez le fichier d'initialisation
+@code{makam.ly} pour plus de détails sur les hauteurs et altérations
+utilisées (voir le chapitre 4.6.3 - Autres sources d'information du
+manuel d'initiation pour le localiser).
+
+"
+  doctitlefr = "Exemple de musique « Makam »"
diff --git a/Documentation/fr/texidocs/making-slurs-with-complex-dash-structure.texidoc b/Documentation/fr/texidocs/making-slurs-with-complex-dash-structure.texidoc
new file mode 100644 (file)
index 0000000..bdebca0
--- /dev/null
@@ -0,0 +1,21 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Grâce à la propriété @code{dash-definition}, une liaison d'articulation
+peut être formée de traits discontinus variables.
+@code{dash-definition} se compose d'une liste de
+@code{segments-discontinus} (@emph{dash-elements}).  Chaque
+@code{segment-discontinu} contient une liste de paramètres qui
+déterminent le comportement du trait pour une section de la liaison.  
+
+Cette liaison se définit selon le paramètre de Bézier @code{t} qui est
+compris entre 0 (l'extrémité gauche de la liaison) et 1 (l'extrémité
+droite de la liaison).  Chaque @code{segment-discontinu} se composera
+selon la liste @code{(t-début t-fin segment-style segment-taille)}.   
+La portion de liaison allant de @code{t-début} à @code{t-fin} aura un
+trait @code{segment-style} de longueur @code{segment-taille}.
+@code{segment-taille} est exprimé en espace de portée ; un
+@code{segment-style} à 1 donnera un trait plein.
+
+"
+  doctitlefr = "Dessin d'une liaison d'articulation au trait discontinu"
+
diff --git a/Documentation/fr/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc b/Documentation/fr/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc
new file mode 100644 (file)
index 0000000..a1dfef0
--- /dev/null
@@ -0,0 +1,15 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Les raccourcis sont répertoriés dans le fichier
+@code{ly/script-init.ly}, dans lequel on retrouve les variables
+@code{dashHat}, @code{dashPlus}, @code{dashDash}, @code{dashBar},
+@code{dashLarger}, @code{dashDot}, et @code{dashUnderscore} ainsi que
+leur valeur par défaut.  Ces valeurs peuvent être modifiées selon vos
+besoins.  Il suffit par exemple, pour affecter au raccourci @code{-+}
+(@code{dashPlus}) le symbole du trille en lieu et place du @code{+}
+(caractère plus), d'assigner la valeur @code{trill} à la variable
+@code{dashPlus} :
+
+"
+  doctitlefr = "Modification de la signification des raccourcis pour les signes d'articulation"
+
diff --git a/Documentation/fr/texidocs/non-traditional-key-signatures.texidoc b/Documentation/fr/texidocs/non-traditional-key-signatures.texidoc
new file mode 100644 (file)
index 0000000..a6bce6a
--- /dev/null
@@ -0,0 +1,28 @@
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+La commande @code{\\key} détermine la propriété @code{keySignature} d'un 
+contexte @code{Staff}.
+
+Des armures inhabituelles peuvent être spécifiées en modifiant
+directement cette propriété. Il s'agit en l'occurence de définir une
+liste :
+
+@code{\\set Staff.keySignature = #`(((octave . pas) . altération) ((octave
+. pas) . altération) @dots{})} 
+
+dans laquelle, et pour chaque élément, 
+@code{octave} spécifie l'octave (0@tie{}pour celle allant du
+do@tie{}médium au si supérieur), @code{pas} la note dans cette octave
+(0@tie{}pour@tie{}do et 6@tie{}pour@tie{}si), et @code{altération} sera
+@code{,SHARP ,FLAT ,DOUBLE-SHARP} etc.  (attention à la virgule en
+préfixe). 
+
+Une formulation abrégée -- @code{(pas . altération)} -- signifie que
+l'altération de l'élément en question sera valide quel que soit l'octave.
+
+
+Voici, par exemple, comment générer une gamme par ton :
+
+"
+  doctitlefr = "Armures inhabituelles"
+
diff --git a/Documentation/fr/texidocs/ottava-text.texidoc b/Documentation/fr/texidocs/ottava-text.texidoc
new file mode 100644 (file)
index 0000000..bf3f42a
--- /dev/null
@@ -0,0 +1,12 @@
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+En interne, la fonction @code{\\ottava} détermine les
+propriétés @code{ottavation} (p.ex. en @code{\"8va\"} ou @code{\"8vb\"})
+et @code{centralCPosition}.  Vous pouvez modifier le texte d'une marque
+d'octaviation en définissant @code{ottavation} après avoir fait appel
+à @code{ottava} :
+
+"
+
+  doctitlefr = "Texte des marques d'octaviation"
+
diff --git a/Documentation/fr/texidocs/percent-repeat-count-visibility.texidoc b/Documentation/fr/texidocs/percent-repeat-count-visibility.texidoc
new file mode 100644 (file)
index 0000000..4891f00
--- /dev/null
@@ -0,0 +1,8 @@
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+  texidocfr = "
+Le numéro de mesure répétée sera imprimé à intervalle régulier si vous
+déterminez la propriété de contexte @code{repeatCountVisibility}.
+
+"
+  doctitlefr = "Affichage du numéro de répétition en pourcent"
+
diff --git a/Documentation/fr/texidocs/percent-repeat-counter.texidoc b/Documentation/fr/texidocs/percent-repeat-counter.texidoc
new file mode 100644 (file)
index 0000000..2b5aa73
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+  texidocfr = "
+Les répétitions de plus de 2 mesures sont surmontées d'un compteur,
+si l'on active la propriété @code{countPercentRepeats} comme le montre
+l'exemple suivant :
+
+"
+  doctitlefr = "Compteur de répétition en pourcent"
+
index 9004b9d3153707c35e0f55e2e8b83397da20d30e..a5f83a9433ff1895ba44ae2d46c2fd394f99e5c6 100644 (file)
@@ -1,6 +1,6 @@
 %% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
   texidocfr = "
-Cet exemple peu académique démontre comment il est possible d'insérer un saut 
+Cet exemple peu académique démontre comment il est possible d'insérer un saut
 de ligne dans un nolet portant une ligature.  Ces ligatures doivent toutefois
 être explicites.
 
index 2403b0184b31997ade4272a4a122fe72cf68a27e..7c93f782c2b46d3725b66c4fa68dba9d045c1a58 100644 (file)
@@ -1,7 +1,7 @@
 %% Translation of GIT committish: 9ba35398048fdf1ca8c83679c7c144b1fd48e75b
   texidocfr = "
 Il s'agit du format classique pour le chant : une portée pour la mélodie
-et les paroles au-dessus de l'accompagnement au piano. 
+et les paroles au-dessus de l'accompagnement au piano.
 
 "
   doctitlefr = "Piano, mélodie et paroles"
index b818bc59399dbf6b0f99b24aadaf3db6c1ed7090..eb98d1444f75d011be010d3946c821aef6cd06ff 100644 (file)
@@ -1,8 +1,8 @@
 %% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
 
   texidocfr = "
-Vous disposez d'une propriété spécifique qui permet de contrôler plus 
-finement le positionnement des doigtés main droite, comme l'indique 
+Vous disposez d'une propriété spécifique qui permet de contrôler plus
+finement le positionnement des doigtés main droite, comme l'indique
 l'exemple suivant.
 
 "
diff --git a/Documentation/fr/texidocs/positioning-text-markups-inside-slurs.texidoc b/Documentation/fr/texidocs/positioning-text-markups-inside-slurs.texidoc
new file mode 100644 (file)
index 0000000..0fdab64
--- /dev/null
@@ -0,0 +1,8 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Lorsqu'il vous faut inscrire une annotation à l'intérieur d'une liaison,
+la propriété @code{outside-staff-priority} doît être désactivée.
+
+"
+  doctitlefr = "Positionnement d'une annotation à l'intérieur d'une liaison"
+
index c1ed4d9590529a32bc6f8f89030368f558f9029e..78cb4f53de7c772fd2fc924fafeccccf0f1747c2 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 203ab4a7388f36b9c89c66671498dbaefccbf86e
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
   texidocfr = "
 En accord avec les règles standards de l'écriture musicale, on grave
 un bécarre avant un dièse ou un bémol si on a besoin d'annuler une
@@ -6,3 +6,4 @@ altération précédente.  Pour modifier ce comportement, assignez la propriét
 @code{extraNatural} du contexte @code{Staff} à la valeur @code{##f} (faux).
 "
 
+  doctitlefr = "Suppression des bécarres superflus"
diff --git a/Documentation/fr/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc b/Documentation/fr/texidocs/preventing-natural-signs-from-being-printed-when-the-key-signature-changes.texidoc
new file mode 100644 (file)
index 0000000..f81137a
--- /dev/null
@@ -0,0 +1,11 @@
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+Après un changement de tonalité, un bécarre est imprimé pour annuler
+toute altération précédente.  Ceci peut être supprimé en réglant à
+@code{\"false\"} la propriété @code{printKeyCancellation} du contexte
+@code{Staff}. 
+
+"
+
+  doctitlefr = "Suppression des bécarres superflus après un changement de
+tonalité"
diff --git a/Documentation/fr/texidocs/printing-a-repeat-sign-at-the-beginning-of-a-piece.texidoc b/Documentation/fr/texidocs/printing-a-repeat-sign-at-the-beginning-of-a-piece.texidoc
new file mode 100644 (file)
index 0000000..79e94a7
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+  texidocfr = "
+Bien qu'allant à l'encontre des usages en matière de gravure, vous
+imprimerez une barre de reprise (@code{|:}) en début de partition si
+vous surchargez la propriété adéquate :
+
+"
+  doctitlefr = "Impression d'une barre de reprise en début de morceau"
+
index de02ea8cad97c841b2d066eeeb9b33e9058d817b..772fbd742e991a205b17710d3d50e72bd9d92a5d 100644 (file)
@@ -2,7 +2,7 @@
   texidocfr = "
 Vous pouvez imprimer un numéro de mesure à intervalle régulier plutôt
 qu'en tête de chaque ligne seulement, en recourrant à la propriété
-@code{barNumberVisibility}.  Voici comment afficher le numéro toutes les 
+@code{barNumberVisibility}.  Voici comment afficher le numéro toutes les
 deux mesures sauf en fin de ligne.
 
 "
diff --git a/Documentation/fr/texidocs/printing-hairpins-using-al-niente-notation.texidoc b/Documentation/fr/texidocs/printing-hairpins-using-al-niente-notation.texidoc
new file mode 100644 (file)
index 0000000..8293cb0
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Des crescendos ou decrescendos @emph{al niente} peuvent être indiqués de
+manière graphique, en assignant @emph{vrai} (@code{#t}) à la
+propriété @code{circled-tip}, ce qui affiche un cercle à leur extrémité.
+
+"
+  doctitlefr = "Impression de soufflets « al niente »"
+
index 806d81929ba20c4baf6f53a158d88c7774c25ac7..53163d0f297874fbde2c085e94a07ee5f4e0e9d3 100644 (file)
@@ -1,12 +1,12 @@
 %% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
   texidocfr = "
-Par défaut, LilyPond n'affiche pas le premier numéro de mesure s'il est 
-inférieur à 2. Le fait de définir @code{barNumberVisibility} à  
-@code{all-bar-numbers-visible} vous permettra d'imprimer n'importe quel 
-numéro pour la première mesure.  À noter que l'impression d'un numéro 
-de mesure ne peut intervenir que s'il y a une barre.  Aussi, pour 
-pouvoir le faire au début d'un morceau, devrez-vous ajouter une barre 
-vide avant la première note. 
+Par défaut, LilyPond n'affiche pas le premier numéro de mesure s'il est
+inférieur à 2. Le fait de définir @code{barNumberVisibility} à
+@code{all-bar-numbers-visible} vous permettra d'imprimer n'importe quel
+numéro pour la première mesure.  À noter que l'impression d'un numéro
+de mesure ne peut intervenir que s'il y a une barre.  Aussi, pour
+pouvoir le faire au début d'un morceau, devrez-vous ajouter une barre
+vide avant la première note.
 
 "
   doctitlefr = "Afficher le numéro de la première mesure"
index ee704b7b7241c1f5aa4cc1e281803f133629fdbd..565ec997220876c2fb1e3f94891b012a79e17202 100644 (file)
@@ -1,10 +1,10 @@
 %% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
   texidocfr = "
-Vous pouvez modifier les valeurs des variables @code{startGraceMusic}, 
-@code{stopGraceMusic}, @code{startAcciaccaturaMusic}, 
-@code{stopAcciaccaturaMusic}, @code{startAppoggiaturaMusic}, et 
-@code{stopAppoggiaturaMusic} afin d'en personnaliser les effets.  Pour 
-plus de détails, voir le fichier @code{ly/grace-init.ly}. 
+Vous pouvez modifier les valeurs des variables @code{startGraceMusic},
+@code{stopGraceMusic}, @code{startAcciaccaturaMusic},
+@code{stopAcciaccaturaMusic}, @code{startAppoggiaturaMusic}, et
+@code{stopAppoggiaturaMusic} afin d'en personnaliser les effets.  Pour
+plus de détails, voir le fichier @code{ly/grace-init.ly}.
 
 "
   doctitlefr = "Redéfinition des réglages de mise en forme par défaut des notes d'ornement"
index 4b9756b50f2080a2a3ff0ff5bec509bdb38815e3..da6b66007fbadbdb867e36ecc46fd199e0b5729a 100644 (file)
@@ -1,7 +1,7 @@
 %% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
   texidocfr = "
-Désactiver le graveur concerné --- @code{Bar_number_engraver} --- 
-donnera une partition  --- contexte @code{Score} --- sans numéros de 
+Désactiver le graveur concerné --- @code{Bar_number_engraver} ---
+donnera une partition  --- contexte @code{Score} --- sans numéros de
 mesure.
 
 "
diff --git a/Documentation/fr/texidocs/setting-hairpin-behavior-at-bar-lines.texidoc b/Documentation/fr/texidocs/setting-hairpin-behavior-at-bar-lines.texidoc
new file mode 100644 (file)
index 0000000..add492d
--- /dev/null
@@ -0,0 +1,12 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+En principe, un soufflet -- (de)crescendo imprimé sous forme graphique --
+commence au bord gauche de la note de départ, et se termine au
+bord droit de la note d'arrivée.  Cependant, si la note d'arrivée
+est sur un premier temps, le soufflet s'arrêtera au niveau de la
+barre de mesure qui la précède.  Ce comportement peut être annulé
+en assignant @emph{faux} (@code{#f}) à la propriété @code{'to-barline} :
+
+"
+  doctitlefr = "Soufflets et barres de mesure"
+
diff --git a/Documentation/fr/texidocs/setting-the-minimum-length-of-hairpins.texidoc b/Documentation/fr/texidocs/setting-the-minimum-length-of-hairpins.texidoc
new file mode 100644 (file)
index 0000000..1cd82c7
--- /dev/null
@@ -0,0 +1,8 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Si un soufflet est trop court, il suffit d'ajuster la propriété 
+@code{minimum-length} de l'objet @code{Hairpin} pour l'allonger.
+
+"
+  doctitlefr = "Ajustement de la longueur d'un soufflet"
+
diff --git a/Documentation/fr/texidocs/shortening-volta-brackets.texidoc b/Documentation/fr/texidocs/shortening-volta-brackets.texidoc
new file mode 100644 (file)
index 0000000..db06375
--- /dev/null
@@ -0,0 +1,10 @@
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+  texidocfr = "
+Les crochets indiquant les fins alternatives s'étalent tout au long ce
+celle-ci.  On peut les raccourcir en définissant la propriété
+@code{voltaSpannerDuration}.  Dans l'exemple suivant, le crochet ne se
+prolonge que sur une mesure à 3/4.
+
+"
+  doctitlefr = "Diminution de la taille du crochet d'alternative"
+
index 41a1684e274bd325555b203c2b0fb7ad83604bb6..b88bf9f1487b1d6222865459e42fe2dc638b1258 100644 (file)
@@ -1,7 +1,7 @@
 %% Translation of GIT committish: 9ba35398048fdf1ca8c83679c7c144b1fd48e75b
   texidocfr = "
-Ce cannevas comporte tous les éléments d'une chanson : la mélodie, 
-les paroles, les accords. 
+Ce cannevas comporte tous les éléments d'une chanson : la mélodie,
+les paroles, les accords.
 
 "
   doctitlefr = "Paroles, musique et accords"
index 2c63731d1c870a4c0b6821dba165787de1573d82..9a67b78c6fc255e9fe1294dba9dada87f117afbb 100644 (file)
@@ -1,6 +1,6 @@
 %% Translation of GIT committish: 9ba35398048fdf1ca8c83679c7c144b1fd48e75b
   texidocfr = "
-Vous avez besoin de la partition d'une mélodie avec les accords ?  
+Vous avez besoin de la partition d'une mélodie avec les accords ?
 N'allez pas plus loin !
 
 "
index b114d724f70700deddda973bc9807a2ad8c4cc26..ae1184d471f28521cfbe72270fb3bdbd23bac197 100644 (file)
@@ -1,9 +1,9 @@
 %% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
   texidocfr = "
-Le fait de spécifier un contexte à @code{beatGrouping} permet d'en 
+Le fait de spécifier un contexte à @code{beatGrouping} permet d'en
 limiter les effets.  Par voie de conséquence, il sera possible
 d'outrepasser les règles définies à un niveau supérieur.  La commande
-@code{\\set} destinée à en modifier les valeurs doit se placer après la 
+@code{\\set} destinée à en modifier les valeurs doit se placer après la
 commande @code{\\time} :
 
 "
index 97fd4b69e09af259dd98c41ff67d1e547bb28517..582f34bc4340734cab4d87b2d468b96106836ee4 100644 (file)
@@ -1,8 +1,8 @@
 %% Translation of GIT committish: cd4950757ab1ab6c89805b0b7c978bfca034f940
 
   texidocfr = "
-La direction des hampes se gère dans les tablatures tout comme en 
-notation traditionnelle.  Les ligatures peuvent être mises à l'horizontale 
+La direction des hampes se gère dans les tablatures tout comme en
+notation traditionnelle.  Les ligatures peuvent être mises à l'horizontale
 comme le montre cet exemple.
 
 "
index 7c1f7c482c37967f1eba2f0340bea69e284854e3..5d60e3f32ce3205c36b961a83e82de6a39d05832 100644 (file)
@@ -1,6 +1,6 @@
 %% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
   texidocfr = "
-Voici un canevas pour quatuor à cordes.  Notez l'utilisation de la 
+Voici un canevas pour quatuor à cordes.  Notez l'utilisation de la
 variable @code{\\global} pour traiter la métrique et la tonalité.
 
 "
index ddb22df0dfe0dcce6f78a16d1905b381c4587528..541ee277b27b10327b01736a0e7fa733d1e3d23e 100644 (file)
@@ -6,11 +6,11 @@ ligature seront continus.  Ce comportement peut être modifié afin de
 diviser la ligature en sous-groupes grâce à la propriété
 @code{subdivideBeams}.  Lorsqu'elle est activée, les ligatures seront
 subdivisées selon un intervalle défini par @code{beatLength} ; il n'y
-aura alors plus qu'un seul trait de ligature entre chaque sous-groupe.  
+aura alors plus qu'un seul trait de ligature entre chaque sous-groupe.
 Par défaut, @code{beatLength} fixe la valeur de référence à une noire.
 Il faudra donc lui fournir, à l'aide de la fonction @code{make-moment},
 une fraction correspondant au sous-groupe désiré, comme dans l'exemple
-suivant. 
+suivant.
 
 "
   doctitlefr = "Subdivision des ligatures"
diff --git a/Documentation/fr/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc b/Documentation/fr/texidocs/transposing-pitches-with-minimum-accidentals-smart-transpose.texidoc
new file mode 100644 (file)
index 0000000..f2c61ae
--- /dev/null
@@ -0,0 +1,29 @@
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+Cet exemple, grâce à un peu de code Scheme, donne la priorité aux
+enharmoniques  afin de limiter le nombre d'altérations supplémentaires.  
+La règle appliquable est :
+
+@itemize
+@item
+Les altérations doubles sont supprimées
+
+@item
+Si dièse -> Do
+
+@item
+Mi dièse -> Fa
+
+@item
+Do bémol -> Si
+
+@item
+Fa bémol -> Mi
+
+@end itemize
+
+Cette façon de procéder aboutit à plus d'enharmoniques naturelles.
+
+"
+
+  doctitlefr = "Transposition et réduction du nombrer d'altérations accidentelles"
diff --git a/Documentation/fr/texidocs/tweaking-clef-properties.texidoc b/Documentation/fr/texidocs/tweaking-clef-properties.texidoc
new file mode 100644 (file)
index 0000000..84bfcd5
--- /dev/null
@@ -0,0 +1,36 @@
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+La commande @code{\\clef \"treble_8\"} équivaut à définir @code{clefGlyph},
+@code{clefPosition} -- qui contrôle la position verticale de la clé --
+@code{middleCPosition} et @code{clefOctavation}.  Une clé est imprimée
+lorsque l'une de ces propriétés, hormis @code{middleCPosition}, est
+modifiée. 
+ Les exemples suivant font
+apparaître des possibilités de réglage manuel de ces propriétés.
+
+
+Modifier le glyphe, la position de la clef ou son octaviation ne
+changera pas la position des notes ; il faut pour y parvenir modifier
+aussi la position du do médium.  Le positionnement est relatif à la
+ligne médiane, un nombre positif faisant monter, chaque ligne ou
+interligne comptant pour 1.  La valeur de @code{clefOctavation} devrait
+être de 7, -7, 15 ou -15, bien que rien ne vous empêche de lui affecter
+une autre valeur.
+
+
+Lorsqu'un changement de clef intervient en même temps qu'un saut de
+ligne, la nouvelle clef est imprimer à la fois en fin de ligne et au
+début de la suivante.  Vous pouvez toujours supprimer cette « clef de 
+précaution » en affectant la valeur @code{end-of-line-invisible} à la
+propriété @code{explicitClefVisibility} du contexte @code{Staff}.  Le
+comportement par défaut sera réactivé par 
+@w{@code{\\unset@tie{}Staff.explicitClefVisibility}}. 
+
+
+Les exemples qui suivent illustrent les différentes possibilités de
+définir ces propriétés manuellement.  Sur la première ligne, la
+position relative des notes par rapport aux clefs sont préservées, ce
+qui n'est pas le cas pour la deuxième ligne.
+
+"
+  doctitlefr = "Affinage des propriétés d'une clef"
index b46bc1a5830359e1a0f869a1c3637d96bffb0b92..c015d3c75691a2d82e52636e66cb26ff26b1dd3e 100644 (file)
@@ -1,10 +1,10 @@
 %% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
   texidocfr = "
-Il est possible de changer globalement la mise en forme des petites 
-notes dans un morceau, au moyen de la fonction 
-@code{add-grace-property}.  Ici, par exemple, on ôte la définition de 
-l'orientation des objets @code{Stem} pour toutes les petites notes, 
-afin que les hampes ne soient pas toujours orientées vers le haut, et on 
+Il est possible de changer globalement la mise en forme des petites
+notes dans un morceau, au moyen de la fonction
+@code{add-grace-property}.  Ici, par exemple, on ôte la définition de
+l'orientation des objets @code{Stem} pour toutes les petites notes,
+afin que les hampes ne soient pas toujours orientées vers le haut, et on
 leur préfère des têtes en forme de croix.
 
 "
index 48908fe2d4439a7ed8b120000bd7742ea2fcf2ad..af40b56ae2a1c185183cb87cb663cf9f7bac9451 100644 (file)
@@ -4,7 +4,7 @@ La propriété @code{measureLength} détermine la pulsation et, combinée à
 @code{beatLength} et @code{beatGrouping}, comment générer les ligatures
 automatiques selon les durées et la métrique lorsqu'aucune règle n'a été
 définie.  L'exemple commenté qui suit indique différentes façons de
-contrôler les ligatures à l'aide de ces propriétés. 
+contrôler les ligatures à l'aide de ces propriétés.
 
 "
   doctitlefr = "Utilisation conjointe de beatLength et beatGrouping"
diff --git a/Documentation/fr/texidocs/using-double-slurs-for-legato-chords.texidoc b/Documentation/fr/texidocs/using-double-slurs-for-legato-chords.texidoc
new file mode 100644 (file)
index 0000000..0323d7b
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Certains auteurs utilisent deux liaisons lorsqu'ils veulent
+lier des accords. Dans LilyPond, il faut pour cela activer
+la propriété @code{doubleSlurs} :
+
+"
+  doctitlefr = "Accords et double liaison d'articulation"
+
diff --git a/Documentation/fr/texidocs/vertically-aligned-dynamics-and-textscripts.texidoc b/Documentation/fr/texidocs/vertically-aligned-dynamics-and-textscripts.texidoc
new file mode 100644 (file)
index 0000000..ef84e1d
--- /dev/null
@@ -0,0 +1,14 @@
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Vous pourrez, en jouant sur la propriété @code{'Y-extent}, aligner les
+différents objets @code{DynamicLineSpanner} (souflets ou textuels)
+quelle que soit leur étendue, par rapport à un même point de référence.
+Tous les éléments seront alors centrés sur une même ligne, ce qui sera
+visuellement plus agréable.
+
+C'est le même principe qui sert à aligner les indications textuelles sur
+une ligne de référence.
+
+"
+  doctitlefr = "Alignement vertical des nuances indications textuelles"
+
index 2e625699b21eda22a118ef433907715f47d610a8..8e49267e86c796bc9ed0e0d5a168212ede730109 100644 (file)
@@ -2,7 +2,7 @@
   texidocfr = "
 Ce canevas ressemble beaucoup à celui pour chœur à quatre voix mixtes.
 La différence réside dans le fait que les paroles sont positionnées en
-ayant recours à @code{alignAboveContext} et @code{alignBelowContext}. 
+ayant recours à @code{alignAboveContext} et @code{alignBelowContext}.
 
 "
   doctitlefr = "Ensemble vocal avec alignement des paroles selon le contexte"
index 2178211fbb80e5f6357323b7e50f99bac562db7d..f3037c7d84aa2e998149d79ed5f331f505c70292 100644 (file)
@@ -6,7 +6,7 @@ de recourrir à une section spécifique incluse dans chacune des parties,
 tout particulièrement pour gérer la métrique et la tonalité qui,
 la plupart du temps, sont communes à tous les pupitres.  Comme il est
 d'usage pour les hymnes, les quatre voix sont réparties sur deux
-portées. 
+portées.
 
 "
   doctitlefr = "Ensemble vocal (simple)"
index cbf4de3bf32a3d8bf8a2b2fb6782d28f3e3cfc90..9ccac7e9529be00ff0933c44e1d4206d0462a24d 100644 (file)
@@ -6,8 +6,8 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@setfilename lilypond.info
-@settitle GNU LilyPond New Website
+@setfilename general.info
+@settitle LilyPond -- Music notation for everyone
 @documentencoding UTF-8
 @documentlanguage en
 
 
 @afourpaper
 
+@c don't remove this comment.
+@ignore
+@omfcreator Graham Percival and Patrick McCarty
+@omfdescription General info about the LilyPond music engraving system
+@omftype program usage
+@omfcategory Applications|Publishing
+@omflanguage English
+@end ignore
+
+
+@copying
+Copyright @copyright{} 2009 by the authors.
+
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end quotation
+@end copying
+
+
+@c TITLE PAGE
 @ifnottex
 @node Top
-@top GNU LilyPond --- Web site
-@chapheading The music typesetter
+@top LilyPond... music notation for everyone
 @end ifnottex
 
 
+@c hack for texi2html, bleh -gp
+@ifnothtml
+
 @finalout
 
 @titlepage
 @title LilyPond
 @subtitle The music typesetter
-@titlefont{New Website}
+@titlefont{General Information}
 @author The LilyPond development team
 
-Copyright @copyright{} 1999--2009 by the authors
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
+@vskip 0pt plus 1filll
+@c @vskip 20pt
 
-@vskip 20pt
+@insertcopying{}
 
-For LilyPond version 
+For LilyPond version @version{}
 @end titlepage
+@end ifnothtml
+@c end hack for texi2html
 
-@copying
-Copyright @copyright{} 1999--2009 by the authors
 
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
-@end copying
+@c ************************ WEBSITE START ***************
+
 
 @divId{pageHeader}
 @heading LilyPond
@@ -67,18 +79,20 @@ Free Documentation License''.
 @divEnd
 
 @c @imageId{cmws,web-clef-g-eight-alpha.png,Catchy Musical Web Snippet}
-@imageId{lilylogo,double-lily-modified3.png,LilyPond logo}
+@imageId{lilylogo,double-lily-modified3,png,LilyPond logo}
 @c @im ageId{cmws,web-snippet-alpha.png,Catchy Musical Web Snippet}
 
 @divId{quickSummary}
 @subheading What is LilyPond?
 
 LilyPond is an open-source music engraving program, devoted to
-producing the highest-quality sheet music possible.  We bring the
-aesthetics of traditionally engraved music to computer printouts.
+producing the highest-quality sheet music possible.  This free
+software brings the aesthetics of traditionally engraved music to
+computer printouts.
 
 @divClass{align-right}
 Read more in our @ref{Introduction}!
+
 @divEnd
 @divEnd
 
@@ -88,8 +102,6 @@ FIXME: process news items like the old web site:
 select first 4 items to insert here, and generate
 RSS.
 
-@c @include news-front.itexi
-
 @divClass{float-right}
 (@ref{Old news})
 @divEnd
@@ -117,6 +129,8 @@ RSS.
 @divEnd
 
 
+@ifnottex
+
 @divClass{hide}
 @menu
 * Introduction::     Start here to creating sheet music.
@@ -126,6 +140,8 @@ RSS.
 @end menu
 @divEnd
 
+@end ifnottex
+
 @contents
 
 
index c93c9e062454b89f9cba92aef976d59ec4ead1d2..985bf0c5c88c344e5ac28224b3d2c8f9b9dc7ff2 100644 (file)
@@ -1,5 +1,4 @@
 depth = ../..
-
 LOCALSTEPMAKE_TEMPLATES = ly
-
+SUBDIRS = examples
 include $(depth)/make/stepmake.make
index 78051260a9eac2899729bb814687b9fc0ec67470..74db1e3a0aadae05a552c6ca8aca16cd777bb6f3 100644 (file)
@@ -81,23 +81,28 @@ discussing LilyPond.
 @divClass{column-left-bottom}
 @subheading User Discussions and Help
 
-@subsubheading User mailist
+@subsubheading User mailing list: @code{lilypond-user@@gnu.org}
 
-The main place for users to discuss and help each other is the
+This mailing list is the main place for users to discuss and help
+each other.
+
+@quotation
 @uref{http://mail.gnu.org/mailman/listinfo/lilypond-user,
-lilypond-user@@gnu.org} mailist.  To see what this mailist is
-like, read the
+lilypond-user subscribe and info}
+
 @uref{http://mail.gnu.org/archive/html/lilypond-user/,
-lilypond-user archives}.
+user archive1}
+@uref{http://www.mail-archive.com/lilypond-user@@gnu.org/,
+archive2}
+@uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.general,
+archive3}
 
-You may easily post messages to the mailist with the
 @uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.general,
-lilypond.general gmane interface}.
+send to lilypond-user with gmane}
+@end quotation
 
 @warning{When asking questions, please use @ref{Tiny examples}!}
 
-@help{we could add a "subscribe to -user" box here?}
-
 
 @subsubheading IRC
 
@@ -113,7 +118,22 @@ be useful for others would better be posted to one of the mailing lists.
 
 @subsubheading Other languages
 
-@help{send mailists or forums where non-English discussion occurs.}
+@quotation
+@uref{http://es.groups.yahoo.com/group/lilypond-es,
+Spanish yahoo group}
+
+@uref{http://www.lilypondforum.de/,
+German forum}
+
+@uref{http://groups.google.com/group/lilypond-brasil,
+Portugese group}
+
+@uref{http://lists.gnu.org/mailman/listinfo/lilypond-user-fr,
+French mailing list}
+
+@uref{http://www.lilypondforum.nl/,
+Dutch forum}
+@end quotation
 
 @divEnd
 
@@ -126,14 +146,25 @@ be useful for others would better be posted to one of the mailing lists.
 The easiest way to keep touch is by reading our community
 newsletter, the @uref{http://news.lilynet.net/, LilyPond Report}.
 
-@subsubheading Releases mailing list
+@subsubheading Releases mailing list: @code{info-lilypond@@gnu.org}
+
+This mailing list is a low-volume, read-only list which receives
+notifications of new releases.
+
+@quotation
+@uref{http://lists.gnu.org/mailman/listinfo/info-lilypond,
+info-lilypond subscribe and info}
 
-@uref{http://mail.gnu.org/mailman/listinfo/info-lilypond,
-info-lilypond@@gnu.org}
-is a low-volume, read-only list which receives notifications of
-new releases.  To see what the mailist is like, browse the
 @uref{http://mail.gnu.org/archive/html/info-lilypond/,
-info-lilypond archive}.
+info archive1}
+@uref{http://www.mail-archive.com/info-lilypond@@gnu.org/,
+archive2}
+@uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.announce,
+archive3}
+
+@c don't include gmane posting here.  -gp
+@end quotation
+
 
 @divEnd
 
@@ -141,19 +172,44 @@ info-lilypond archive}.
 @divClass{column-right-bottom}
 @subheading Developer Discussion
 
-Most developer discussion takes place on
+@subsubheading Developer mailing list: @code{lilypond-devel@@gnu.org}
+
+Most developer discussion takes place on this list.  Patches
+should be sent here.
+
+@quotation
 @uref{http://mail.gnu.org/mailman/listinfo/lilypond-devel,
-lilypond-devel@@gnu.org}.  Patches should be sent here.  You can
-browse the @uref{http://mail.gnu.org/archive/html/lilypond-devel/,
-lilypond-devel archives}, or send a message directly with the
-@uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.development,
-lilypond.development gmane interface}.
+lilypond-devel subscribe and info}
+
+@uref{http://mail.gnu.org/archive/html/lilypond-devel/,
+devel archive1}
+@uref{http://www.mail-archive.com/lilypond-devel@@gnu.org/,
+archive2}
+@uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.devel,
+archive3}
+
+@uref{http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.devel,
+send to lilypond-devel with gmane}
+@end quotation
 
-Bug-specific discussion takes place on the
+
+@subsubheading Bug mailing list: @code{bug-lilypond@@gnu.org}
+
+Bug-specific discussion takes place here.
+
+@quotation
 @uref{http://mail.gnu.org/mailman/listinfo/bug-lilypond,
-bug-lilypond@@gnu.org}.  You can browse the
-@uref{http://mail.gnu.org/archive/html/bug-lilypond/, bug-lilypond
-archives}.
+bug-lilypond subscribe and info}
+
+@uref{http://mail.gnu.org/archive/html/bug-lilypond/,
+bug archive1}
+@uref{http://www.mail-archive.com/bug-lilypond@@gnu.org/,
+archive2}
+@uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.bugs,
+archive3}
+
+@c don't include gmane posting here.  -gp
+@end quotation
 
 @warning{Before sending a message to the bug list, please read our
 guidelines for @ref{Bug reports}.}
index d5234cacd796e5add59d57d08fe1d41d81d28c46..47d546bc15840d80044195ad510a0994ddb003b9 100644 (file)
@@ -26,15 +26,16 @@ our @ref{Text input}.}
 
 @item
 @c TODO: duplicate to avoid underlined refs in HTML?  icky.
-@ref{Unix, @sourceimage{logo-linux} @sourceimage{logo-freebsd}}
+@ref{Unix, @sourceimage{logo-linux,,,}
+@sourceimage{logo-freebsd,,,}}
 @ref{Unix, Unix (Linux and FreeBSD)}
 
 @item
-@ref{MacOS X, @sourceimage{logo-macosx}}
+@ref{MacOS X, @sourceimage{logo-macosx,,,}}
 @ref{MacOS X, MacOS X}
 
 @item
-@ref{Windows, @sourceimage{logo-windows}}
+@ref{Windows, @sourceimage{logo-windows,,,}}
 @ref{Windows, Microsoft Windows}
 
 @end itemize
@@ -78,7 +79,8 @@ Many thanks to @uref{http://www.vt.edu/, Virgina Tech} and
 @uref{http://www.linuxaudio.org/, linuxaudio.org} for sponsoring
 our bandwidth.
 
-@sourceimage{VTlogo_ITF} @sourceimage{lao_banner_06_on_white_demo}
+@sourceimage{VTlogo_ITF,,,}
+@sourceimage{lao_banner_06_on_white_demo,,,}
 
 @subheading Legalese
 
@@ -135,27 +137,27 @@ package manager.
 @itemize
 
 @item
-@sourceimage{logo-linux}
+@sourceimage{logo-linux,,,}
 @uref{http://download.linuxaudio.org/lilypond/binaries/linux-x86/lilypond-2.12.2-1.linux-x86.sh,
 Linux x86: LilyPond 2.12.2} (if in doubt, use this)
 
 @item
-@sourceimage{logo-linux}
+@sourceimage{logo-linux,,,}
 @uref{http://download.linuxaudio.org/lilypond/binaries/linux-64/lilypond-2.12.2-1.linux-64.sh,
 Linux 64-bit: LilyPond 2.12.2}
 
 @item
-@sourceimage{logo-linux}
+@sourceimage{logo-linux,,,}
 @uref{http://download.linuxaudio.org/lilypond/binaries/linux-ppc/lilypond-2.12.2-1.linux-ppc.sh,
 Linux PPC: LilyPond 2.12.2}
 
 @item
-@sourceimage{logo-freebsd}
+@sourceimage{logo-freebsd,,,}
 @uref{http://download.linuxaudio.org/lilypond/binaries/freebsd-x86/lilypond-2.12.2-1.freebsd-x86.sh,
 FreeBSD i386: LilyPond 2.12.2}
 
 @item
-@sourceimage{logo-freebsd}
+@sourceimage{logo-freebsd,,,}
 @uref{http://download.linuxaudio.org/lilypond/binaries/freebsd-64/lilypond-2.12.2-1.freebsd-64.sh,
 FreeBSD amd64: LilyPond 2.12.2}
 
@@ -191,27 +193,27 @@ upgrade to these versions.
 @itemize
 
 @item
-@sourceimage{logo-fedora}
+@sourceimage{logo-fedora,,,}
 @uref{https://admin.fedoraproject.org/pkgdb/packages/name/lilypond,
 Fedora: LilyPond 2.12.0}
 
 @item
-@sourceimage{logo-ubuntu}
+@sourceimage{logo-ubuntu,,,}
 @uref{https://launchpad.net/ubuntu/+source/lilypond,
 Ubuntu: LilyPond 2.12.1}
 
 @item
-@sourceimage{logo-slackware}
+@sourceimage{logo-slackware,,,}
 @uref{http://www.johannes-schoepfer.de/lilypond/,
 Slackware: LilyPond 2.12.1}
 
 @item
-@sourceimage{logo-debian}
+@sourceimage{logo-debian,,,}
 @uref{http://packages.debian.org/search?keywords=lilypond,
 Debian: LilyPond 2.10.33}
 
 @item
-@sourceimage{logo-suse}
+@sourceimage{logo-suse,,,}
 @uref{http://opensuse.org/?fixme=urg-no-lilypond-package-page,
 openSUSE: LilyPond 2.10.33}
 
@@ -246,14 +248,14 @@ acknowledged.
 @itemize
 
 @item
-@sourceimage{logo-macosx}
+@sourceimage{logo-macosx,,,}
 @uref{
 http://download.linuxaudio.org/lilypond/binaries/darwin-x86/lilypond-2.12.2-1.darwin-x86.tar.bz2,
 lilypond-2.12.2-1.darwin-x86.tar.bz2}
 For Intel chips (if in doubt, use this).
 
 @item
-@sourceimage{logo-macosx}
+@sourceimage{logo-macosx,,,}
 @uref{
 http://download.linuxaudio.org/lilypond/binaries/darwin-x86/lilypond-2.12.2-1.darwin-ppc.tar.bz2,
 lilypond-2.12.2-1.darwin-ppc.tar.bz2}
@@ -386,7 +388,7 @@ acknowledged.
 @itemize
 
 @item
-@sourceimage{logo-windows}
+@sourceimage{logo-windows,,,}
 @uref{
 http://download.linuxaudio.org/lilypond/binaries/mingw/lilypond-2.12.2-1.mingw.exe,
 lilypond-2.12.2-1.mingw-exe}
diff --git a/Documentation/general/examples/GNUmakefile b/Documentation/general/examples/GNUmakefile
new file mode 100644 (file)
index 0000000..473d16b
--- /dev/null
@@ -0,0 +1,22 @@
+depth=../../..
+LOCALSTEPMAKE_TEMPLATES=lilypond ly
+include $(depth)/make/stepmake.make
+
+LILYPOND_PREVIEW = $(LILYPOND_BINARY) -dpreview -dresolution=150
+
+OUT_PNG_FILES = $(LY_FILES:%.ly=$(outdir)/%.png)
+OUT_PNG_PAGES = $(PNG_PAGES:%=$(outdir)/%.png)
+
+OUT_SMALL_PNG_FILES = $(OUT_PNG_FILES:%.png=%-small.png)
+
+ifeq ($(out),www)
+all: $(OUT_PNG_FILES) $(OUT_SMALL_PNG_FILES)
+endif
+
+$(outdir)/%.png: %.ly
+       $(LILYPOND_PREVIEW) -o $(outdir) $<
+       mv $(outdir)/$*.preview.png $@
+
+$(outdir)/%-small.png: $(outdir)/%.png
+       pngtopnm $< | pnmscale -w=600 | pnmtopng > $@
+
diff --git a/Documentation/general/examples/ancient-headword.ly b/Documentation/general/examples/ancient-headword.ly
new file mode 100644 (file)
index 0000000..ff337da
--- /dev/null
@@ -0,0 +1,124 @@
+\version "2.12.0"
+\include "example-header.ily"
+
+#(set-global-staff-size 15)
+
+\include "gregorian.ly" 
+
+\score {
+  <<
+    \new VaticanaVoice = "cantus" {
+      \clef "vaticana-do3"
+      % Verse 1 — Salve, Regína
+      a\melisma \[ a \flexa g \pes a\melismaEnd \] d
+      \divisioMinima
+      \[ a\melisma \flexa g\melismaEnd \]
+      \[ f\melisma \flexa e f \pes g \flexa f\melismaEnd \]
+      \[ e\melisma \flexa d\melismaEnd \]
+      \divisioMaior
+      c d \[d\melisma \flexa c\melismaEnd \] d
+      \[ e\melisma \pes f\melismaEnd\] g
+      \[d\melisma \pes e \flexa c\melismaEnd \] d
+      \finalis
+      % Verse 2 — Vita, dulcédo
+      % a\melisma \[ a \flexa g \pes a\melismaEnd \] d
+      % \divisioMinima
+      % \[ a\melisma \flexa g\melismaEnd \]
+      % \[ f\melisma \flexa e f \pes g \flexa f\melismaEnd \]
+      % \[ e\melisma \flexa d\melismaEnd \]
+      % \divisioMaior
+      % c d \[e\melisma \pes f\melismaEnd \] g
+      % \[d\melisma \pes e \flexa c\melismaEnd \] d
+      % \finalis
+      % Verse 3 — Ad te clamámus
+      \[ d\melisma \pes f\melismaEnd\] a g
+      \[ g\melisma \flexa f \pes a\melismaEnd\] e
+      \divisioMaior
+      g f \[ e\melisma \flexa d \pes g\melismaEnd \]
+      \divisioMinima
+      c d \[ e\melisma \flexa d \pes g\melismaEnd \]
+      \[ f\melisma \flexa e\melismaEnd \] d
+      \finalis
+      % Verse 4 — Ad te suspirámus
+      \[ d\melisma \pes f\melismaEnd \] a c' g
+      \[ g\melisma \flexa f \pes g\melismaEnd \] a
+      \divisioMaior
+      d \[ f\melisma \pes \deminutum g\melismaEnd \] g d
+      \[ \virga f\melisma \inclinatum e \inclinatum d\melismaEnd \]
+      c \divisioMaior
+      d \[ d\melisma \flexa c \pes f\melismaEnd \]
+      \[ g\melisma \pes a\melismaEnd \]
+      g \[ f\melisma \flexa e\melismaEnd \] g
+      \[ f\melisma \flexa \deminutum e\melismaEnd \]
+      \[ d\melisma \flexa c \pes d\melismaEnd \]
+      \finalis
+      % Verse 5 — Eia ergo, Advocáta nostra
+      f\melisma \[ f \pes g\melismaEnd \] f
+      \[ g\melisma \pes \deminutum a\melismaEnd \] a
+      \divisioMinima
+      c' g \[ \virga a\melisma \inclinatum g \inclinatum f\melismaEnd \] d g a
+      \divisioMaior
+      d' d' \[ c'\melisma \flexa b c' \pes d'\melismaEnd \] a
+      \divisioMinima
+      d' c' a \[ g\melisma \flexa f \pes a\melismaEnd \] g
+      \[ d\melisma \pes e\melismaEnd \] f
+      \[ \virga e\melisma \inclinatum d \inclinatum c\melismaEnd \]
+      \divisioMaior
+      \[ c\melisma \pes d\melismaEnd \]
+      f \[ g\melisma \flexa \deminutum f\melismaEnd \]
+      \[ d\melisma \flexa c \pes d\melismaEnd \] d
+      \finalis
+      % Verse 6 — Et Jesum
+      d a, \[ c\melisma \pes d\melismaEnd \]
+      \divisioMinima
+      d \[ d\melisma \pes e\melismaEnd \] \[ e\melisma \flexa d d\melismaEnd \]
+      c g f \[ e\melisma \flexa \deminutum d\melismaEnd \] g
+      \[ f\melisma \flexa e\melismaEnd \]
+      \[ d\melisma \flexa c \pes d\melismaEnd \]
+      \[ d\melisma \pes a \] \virga bes\melismaEnd a
+      \divisioMinima
+      \[ \virga a\melisma \inclinatum g \inclinatum f\melismaEnd \] g d f
+      \[ f\melisma \flexa e\melismaEnd \] \[ d\melisma \flexa c\melismaEnd \]
+      \divisioMinima
+      \[ e\melisma \pes f \flexa e\melismaEnd \] d d
+      \finalis
+      % Verse 7 ad finem — O clemens: O pia: O dulcis Virgo María
+      a\melisma \[a \flexa g a \quilisma b \pes c'\melismaEnd \]
+      \[ \virga b\melisma \inclinatum a \inclinatum g\melismaEnd \] a
+      \finalis
+      \[ g\melisma \pes a \quilisma b \pes c' \] \[ c' \flexa b\melismaEnd \]
+      \[ a\melisma \flexa g\melismaEnd \] \[ g\melisma \pes a\melismaEnd \]
+      \finalis
+      \[ a\melisma \flexa d \virga f \inclinatum e \inclinatum d \inclinatum c d \]
+      \divisioMinima
+      \[ d \pes e f \pes g\melismaEnd \]
+      \[ g\melisma \flexa \deminutum f\melismaEnd \]
+      \[ g\melisma \pes a\melismaEnd \]
+      d c d \[ d\melisma \pes g \flexa f f\melismaEnd \]
+      \[ e\melisma \flexa d\melismaEnd \]
+      \finalis
+    }
+    \new Lyrics \lyricsto "cantus" {
+      Sal- ve, Re- gí- na, ma- ter mi- se- ri- cór- di- ae:
+      % Vi- ta, dul- cé- do, et spes no- stra, sal- ve.
+      Ad te cla- má- mus, éx- su- les, fi- li- i He- vae.
+      Ad te su- spi- rá- mus, ge- mén- tes et flen- tes in hac la- cri- má- rum
+      val- le.
+      E- ia er- go, Ad- vo- cá- ta no- stra, il- los tu- os mi- se- ri- cór- des
+      ó- cu- los ad nos con- vér- te.
+      Et Je- sum, be- ne- díc- tum fruc- tum ven- tris tu- i, no- bis post hoc
+      ex- sí- li- um os- tén- de.
+      O cle- mens:
+      O pi- a:
+      O dul- cis Vir- go Ma- rí- a.
+    }
+  >>
+}
+
+\layout {
+  \context {
+    \Staff
+    \consists Custos_engraver
+  }
+}
+
diff --git a/Documentation/general/examples/aucun-snippet.ly b/Documentation/general/examples/aucun-snippet.ly
new file mode 100644 (file)
index 0000000..4dc345e
--- /dev/null
@@ -0,0 +1,257 @@
+\version "2.12.0"
+\include "example-header.ily"
+
+\paper {
+%  line-width=158\mm  % produces 624 pixels
+  line-width = 143\mm  % reserve 15mm for incipit
+}
+
+% Aucun ont trouvé, from Montpellier Codex
+% 
+% Put brackets in where the original has ligatures, using
+% "Analysis Brackets," and adjust the "bracket-flare" property
+% to make the ends vertical instead of slanted.
+
+#(set-global-staff-size 15)
+
+%%%%%%%%%%% INCIPIT DEFS %%%%%%%%%%
+
+incipitGlobal = {
+               \override NoteHead   #'style = #'mensural
+               \override Accidental #'style = #'mensural
+               \override KeySignature #'style = #'mensural
+               \override Rest #'style = #'mensural
+%              \override Staff.TimeSignature #'style = #'mensural
+               \cadenzaOn 
+         \override Score.Clef #'extra-offset = #'(-0.0 . 0.5)
+         \override Score.Clef #'font-size = #3
+         \clef "vaticana-do1"
+}
+
+incipitTriplum = \markup{
+       \score{
+               {
+               \set Staff.instrumentName="Triplum "
+               \incipitGlobal
+               s1.
+    }
+         \layout {
+               %indent = 1\cm
+                 \context {\Voice
+                         \remove Ligature_bracket_engraver
+                         \consists Mensural_ligature_engraver
+                 }
+                 \context {\Staff
+                   \remove "Time_signature_engraver"
+                 }
+                line-width=5\mm
+         }
+       }
+}
+
+incipitMotetus = \markup{
+       \score{
+               { 
+               \set Staff.instrumentName="Motetus"
+               \incipitGlobal
+               s1.
+               }
+         \layout {
+               %       indent = 1\cm
+                 \context {\Voice
+                         \remove Ligature_bracket_engraver
+                         \consists Mensural_ligature_engraver
+                 }
+                 \context {\Staff
+                   \remove "Time_signature_engraver"
+                 }
+                line-width=5\mm
+         }
+       }
+}
+
+incipitTenor = \markup{
+    \score{ 
+               {
+    \set Staff.instrumentName = "Tenor  "
+               \incipitGlobal
+               s1.*2
+    }
+    \layout {
+               %indent = 1\cm
+               \context {\Voice
+                       \remove Ligature_bracket_engraver
+                       \consists Mensural_ligature_engraver
+               }
+               \context {\Staff
+                 \remove "Time_signature_engraver"
+               }
+                line-width=5\mm
+}
+}
+}
+
+incipitBassus = \markup{
+    \score{ {
+    \set Staff.instrumentName = "Bassus  "
+    \override NoteHead   #'style = #'neomensural
+               \override Accidental #'style = #'neomensural
+       \override Rest #'style = #'neomensural
+       \override Staff.TimeSignature #'style = #'neomensural
+       \cadenzaOn 
+       \clef "petrucci-f3"
+       \key f \major
+       \time 3/2
+  \relative c' {
+    s1. % R1.*2
+  }
+    }
+    \layout {
+                 \context { \Voice
+                         \remove Ligature_bracket_engraver
+                         \consists Mensural_ligature_engraver
+                 }
+                line-width=5\mm
+    }
+  }
+}
+
+%%%%%%%%%%% END INCIPIT DEFS %%%%%%%%%%%
+
+#(ly:set-option 'point-and-click #f)
+
+global = {
+  \override Staff.TimeSignature #'stencil = #(lambda (grob)
+       (bracketify-stencil (ly:time-signature::print grob) Y 0.1 0.2 0.1))
+  \time 3/4
+       \override Staff.BarLine #'transparent = ##t
+  \override HorizontalBracket #'direction = #UP
+  \override HorizontalBracket #'bracket-flare = #'(0 . 0) 
+}
+
+%%%%%%%%% MACRO FOR MAKING SLASHES THROUGH STEMS %%%%%%%%%%
+MakeSlash = #(define-music-function (parser location angle len-left len-right 
+thick y-factor offset)
+                                    (number? number? number? number? number? 
+pair?)
+#{
+\once \override Voice.Stem #'text = \markup {
+    \postscript #(let ((x-off (car $offset))
+                       (y-off (cdr $offset)))
+    (string-append
+    (ly:number->string (car $offset)) " " (ly:number->string (cdr $offset)) " 
+translate "
+    (ly:number->string $angle) " rotate "
+    (ly:number->string (- x-off)) " " 
+    (ly:number->string (- y-off)) " translate 0 setlinewidth "
+    (ly:number->string (- x-off $len-left))  " " (ly:number->string (+ y-off 
+$thick)) " moveto " 
+    (ly:number->string (- x-off $len-left))  " " (ly:number->string y-off)
+                                             " " (ly:number->string $thick) " 
+90 270 arc "
+    (ly:number->string (+ x-off $len-right)) " " (ly:number->string y-off)
+                                             " " (ly:number->string $thick) " 
+270 90 arc "
+                                             " gsave fill grestore stroke")) }
+
+\once \override Voice.Stem #'stencil = #(lambda (grob)
+    (let* ((sten1 (ly:stem::print grob))
+           (sten2 (ly:text-interface::print grob))
+           (extent1 (ly:stencil-extent sten1 Y))
+           (extent2 (ly:stencil-extent sten2 Y)))
+    (ly:stencil-add
+        sten1
+        (ly:stencil-translate sten2
+                              (cons 0 (+ (* $y-factor (cdr extent1)) 
+                                         (* (- 1 $y-factor) (car extent1))))))))
+#})
+
+
+slash = { \MakeSlash #20 #1.0 #1.1 #0.05 #0.75 #'(0 . -.5) }
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+triplumWords = \lyricmode {
+  Au -- cun ont trou -- ve chant par u -- sa -- ge,
+       mes a moi en doune o -- choi -- son __
+  a -- mours, qui res -- bou -- dist mon cou -- ra -- ge
+       si que m'ès -- tuet fai -- re _ chan -- _ _ çon 
+}
+
+triplumNotes = \relative c' {
+  \clef "treble_8"
+       %\set Staff.midiInstrument = "flute"
+%      \global
+       \override StemTremolo #'beam-thickness = #.125
+       \override StemTremolo #'slope = #1.0
+  f8 f4 e8 d c f f f | % 1
+       % the \scaleDurations command below makes 5 notes last the 
+       % duration of a dotted quarter
+       e8 c4 \scaleDurations #'(3 . 2) {       \times 4/5{e16[ d e d e]} } e8 f4 | % 2
+  g2. ~ g4. | % 3
+       f8 d4 f4. \scaleDurations #'(3 . 2) { \times 4/6{ g16[ f e f e f]}} % 4
+       g8 g4 g4. e4. | % 5
+       fis8 d4 e8\startGroup g4\stopGroup f8[ e d] | % 6
+       c2. r4. | % 7
+}
+
+motetusWords = \lyricmode {
+  lonc tans _ _  me fiu -- te -- nu de chan -- _ _ ter __
+  mes or ai _ _  
+}
+
+motetusNotes = \relative c' {
+  \clef "treble_8"
+  c2. c8\startGroup b8 \slash c\stopGroup | % 1
+       a2. c4. | d2. e4. | % 2-3
+  f2. f8 e d | % 4
+       c2. ~ c4. | r2. r4. | % 5-6
+       g'4. g g8 f e | % 7
+}
+
+
+tenorNotes = \relative c {
+  \clef "treble_8"
+       f2. | a2. | g2. | r2. | % 1-4
+       c2. | b2. | c2. |  % 5-7
+}
+
+\score {
+  \new StaffGroup <<
+         \new Staff = "triplum" <<
+                 %\set Staff.instrumentName = "Triplum"
+                 \set Staff.instrumentName = \incipitTriplum 
+                       \set Staff.shortInstrumentName = "Tr."
+      \set Staff.timeSignatureFraction = #'(9 . 8)
+      \scaleDurations #'(2 . 3)
+                 \context Voice = "triplum" { \global \triplumNotes }
+%      \scaleDurations #'(2 . 3)
+%                      \context Voice = "slashes" { \triplumSkips }
+           \new Lyrics { \lyricsto "triplum" { \triplumWords }}
+               >>
+               \new Staff = "motetus" <<
+                 %\set Staff.instrumentName = "Motetus"
+                 \set Staff.instrumentName = \incipitMotetus
+                       \set Staff.shortInstrumentName = "M."
+      \set Staff.timeSignatureFraction = #'(9 . 8)
+      \scaleDurations #'(2 . 3)
+                       \context Voice = "motetus" { \global \motetusNotes } 
+           \new Lyrics { \lyricsto "motetus" { \motetusWords }}
+         >>
+               \new Staff = "tenor" { 
+                 %\set Staff.instrumentName = "Tenor"
+                 \set Staff.instrumentName = \incipitTenor 
+                       \set Staff.shortInstrumentName = "T."
+                       \global \tenorNotes 
+               }
+       >>
+       %\midi {}
+       \layout {
+         %\context {
+          % \Staff \consists "Horizontal_bracket_engraver"
+         %}
+               \context {
+                 \Voice \consists "Horizontal_bracket_engraver"
+         }
+       }
+}
diff --git a/Documentation/general/examples/bach-bwv610.ly b/Documentation/general/examples/bach-bwv610.ly
new file mode 100644 (file)
index 0000000..f74a383
--- /dev/null
@@ -0,0 +1,183 @@
+\version "2.12.0"
+%\include "example-header.ily"
+
+
+\header {
+ mutopiatitle = "Jesu, meine Freude"
+ mutopiacomposer = "BachJS"
+ poet = "BWV 610"
+ %mutopiaopus = "BWV 610"
+ mutopiainstrument = "Organ"
+ date = ""
+ source = "Bach-Album, Ernst H. Wolfram (editor), 6787, C. F. Peters, Leipzig"
+ style = "Baroque"
+ copyright = "Public Domain"
+ maintainer = "Urs Metzger"
+ maintainerEmail = "urs@ursmetzger.de"
+ lastupdated = "2006/Mar/15"
+
+ title = "Jesu, meine Freude"
+ composer = "Johann Sebastian Bach"
+ %opus="BWV 610"
+
+ footer = "Mutopia-2006/03/27-706"
+ tagline = \markup { \override #'(box-padding . 1.0) \override #'(baseline-skip . 2.7) \box \center-column { \small \line { Sheet music from \with-url #"http://www.MutopiaProject.org" \line { \teeny www. \hspace #-1.0 MutopiaProject \hspace #-1.0 \teeny .org \hspace #0.5 } • \hspace #0.5 \italic Free to download, with the \italic freedom to distribute, modify and perform. } \line { \small \line { Typeset using \with-url #"http://www.LilyPond.org" \line { \teeny www. \hspace #-1.0 LilyPond \hspace #-1.0 \teeny .org } by \maintainer \hspace #-1.0 . \hspace #0.5 Reference: \footer } } \line { \teeny \line { This sheet music has been placed in the public domain by the typesetter, for details see: \hspace #-0.5 \with-url #"http://creativecommons.org/licenses/publicdomain" http://creativecommons.org/licenses/publicdomain } } } }
+
+}
+
+\include "deutsch.ly"
+
+global = {
+   \key c \minor
+   \time 4/4
+   #(set-accidental-style 'default)
+}
+
+halsup = {
+  \stemUp
+  \tieUp
+}
+
+halsdown = {
+  \stemDown
+  \tieDown
+}
+
+staffup = {
+   \change Staff = "right" \halsdown
+}
+
+staffdown = {
+   \change Staff = "left" \halsup
+}
+
+sopran = {
+   \new Voice \relative g' {
+      \global
+      \halsup
+      \repeat volta 2 {
+         g4^\markup { \hspace #-4 \large "Largo" } g f es
+         d2 c\fermata
+         g'4 g a h
+         c2 h\fermata
+         %% Takt 5 ==============================================
+         c8. d16 es4 d4. d8
+         c1\fermata
+      }
+      g4 g as g
+      f4. f8 es2\fermata
+      g4 g a h
+      %% Takt 10 =============================================
+      c4 b! a2
+      g1\fermata
+      g4 g f es
+      d2 c2\fermata \bar "|."
+   }
+}
+
+alt = {
+   \new Voice \relative es' {
+      \global
+      \halsdown
+      \repeat volta 2 {
+         es16 d es8~ es16 f es d c8 d~ d c
+         c8 c4 h8 c8. \staffdown g16 \staffup c h c d
+         es16 d es8~ es16 f es d c8 d16 es f as g f~
+         f16 e f8~ f16 g f es d es d8~ d16 es f d
+         %% Takt 5 ==============================================
+         g8 f es16 g as es f es f d g as g f
+         e8 f16 g as g as e f g f8~ f16 f es d
+      }
+      es16 d es8~ es16 f es des c8 \staffdown b~ b16 b c g
+      as16 g as f b c b as g f g8~ g16 b \staffup c d
+      es16 d es8~ es16 f es d c8 d16 es f as g f
+      %% Takt 10 =============================================
+      es16 d es8 d g~g g4 fis8
+      g16 d es c \staffdown d h c a h a h c d h g h
+      c16 h c \staffup d es d es8~ es d4 c8~
+      c16 h c8~ c h c16 \staffdown g as8 g4\fermata
+   }
+}
+
+tenor = {
+   \new Voice \relative c' {
+      \global
+      \repeat volta 2 {
+         c16 h c8~ c16 h c g a8 g~ g16 g as es
+         f16 es f d g as g f es d \tieDown es8~ es16 \tieNeutral f es d
+         c16 h c g' c h c c, f8. g16 as!4~
+         as16 g as b c h c8 d8. c16 h c d h
+         %% Takt 5 ==============================================
+         es16 d es d~ d8 c~c c4 h8
+         c4~ c8. b16 as b as8 g16 as g f
+      }
+      \halsdown es16 f g as b des c b as g f8~ f es
+      es8 es4 d8 es8. b16 es d es f
+      es16 f g8 c16 d c b a g f8~ f4
+      %% Takt 10 =============================================
+      g16 fis g a b a b g c b c a d es d c
+      h8 c16 a h g a fis g8 d16 es f es f8~
+      f16 d es h c h c8 r16 f g d es g as fis
+      g16 d f! es f as g f e8. f16~ f d e8\fermata
+   }
+}
+
+right = {
+   \clef treble
+   <<
+   \alt
+   \sopran
+   >>
+}
+
+left = {
+   \clef bass
+   <<
+   \tenor
+   >>
+}
+
+pedal = {
+   \global
+   \clef "bass"
+   \relative c {
+      \repeat volta 2 {
+         r8 c16 d es d es8~ es16 a, h g c h c8
+         r16 g as f g f g8 c,2
+         r8 c'16 d es d es8~ es16 c f es d c d8
+         c8 f16 g as g as8~ as16 d, fis d g fis g8
+         %% Takt 5 ==============================================
+         r8 a16 h c h c8
+         r16 g as f g f g8
+         r16 g as e f e f8 r16 e f h, c h c8
+      }
+      r8 es16  f g f g8~ g16 c, d! b es d es8
+      r16 b c as b as b8 es,2
+      r8 c'16 d es d es8~ es16 c f es d c d8
+      %% Takt 10 =============================================
+      c8 es16 f! g fis g8 r16 d es c d c d8
+      g,1
+      c4 c,8 c'16 b! a8 h c16 h c8
+      r16 g as fis g fis g8 c,2_\fermata
+   }
+}
+
+\score {
+   \new PianoStaff
+      { \set PianoStaff.instrumentName = \markup { \large \center-column {
+          "a" "" "2 Clav." "" "e"  ""  "Pedale." } \hspace #0.5 }
+      <<
+         \context Staff = right
+         {
+            \context Voice = right \right
+         }
+         \context Staff = left {
+            \context Voice = left \left
+         }
+         \context Staff = pedal {
+            \context Voice = pedal \pedal
+         }
+      >>
+   }
+   \layout{}
+}
diff --git a/Documentation/general/examples/bach-schenker.ly b/Documentation/general/examples/bach-schenker.ly
new file mode 100644 (file)
index 0000000..ee6a18e
--- /dev/null
@@ -0,0 +1,258 @@
+% -*-coding: utf-8 -*-
+
+\header{
+  composer = "J.S. Bach"
+  title = "Wenn wir in höchsten Nöten sein"
+  subtitle = "Analysis from Gene Biringer's Schenker Text, Ex. 5-27"
+% "BWV641"
+  enteredby = "Kris Shaffer"
+}
+
+%%
+%% See http://www.shaffermusic.com/doc/schenker/index.html for more information
+%%
+
+I = \once \override NoteColumn #'ignore-collision = ##t
+
+\version "2.12.0"
+
+staffPiano = \new PianoStaff {
+  \set Score.timing = ##f
+  \set PianoStaff.followVoice = ##t
+
+  <<
+    \new Staff = "RH" {  % Right hand
+      \clef treble
+      \key g \major
+      \relative c'' {
+       \override Staff.NoteCollision
+       #'merge-differently-headed = ##t
+       <<
+         {
+           \override Beam #'positions = #'(8 . 8)
+           \override NoteHead #'transparent = ##t
+           \override NoteHead #'duration-log = #1
+           s1 b8[^\markup {
+             \override #'(baseline-skip . 0.5)
+             \column { \small {^ 3} }
+           }
+           s4. s1 a8^\markup {
+             \override #'(baseline-skip . 0.5)
+             \column { \small {^ 2} }
+           }
+           s4. s2 g8]^\markup {
+             \override #'(baseline-skip . 0.5)
+             \column { \small {^ 1} }
+           }
+           s4.
+           \revert Beam #'positions
+           \revert NoteHead #'transparent
+           \revert NoteHead #'duration-log
+         }
+         \\
+         {
+           \override Stem #'transparent = ##t
+           s1
+           \once \override Slur #'height-limit = #6
+           \once \override Slur #'extra-offset = #'(1.25 . 0)
+           \slurDashed
+           \I b2_( s2
+           \once \override NoteHead #'transparent = ##t
+           b4) s
+           \once \override Slur #'height-limit = #3.25
+           \once \override Slur #'extra-offset = #'(.75 . 0)
+           a2_( s4
+           \once \override NoteHead #'transparent = ##t
+           a)
+           g2
+           \revert Stem #'transparent
+         }
+         \\
+         \override Staff.NoteCollision
+         #'merge-differently-headed = ##t
+         {
+           \override Beam #'positions = #'(4 . -3.25)
+           \stemUp
+           g8[ s s4 s2
+             \stemDown
+             \once \override NoteHead #'transparent = ##t
+             \I b8] s8
+           \override Beam #'positions = #'(3 . -2.25)
+           \stemUp
+           a8[ s s4
+             \stemDown
+             c8] s s2 s s
+         }
+         \\
+         {
+           \override Stem #'transparent = ##t
+           \override Stem #'length = #0
+           g4_\( fis^(_\markup { \tiny N } g)\)
+           a^(^\markup { \tiny P } b2)
+           b4^(^\markup { \tiny P }
+           \stemUp
+           \revert Stem #'transparent
+           \override Stem #'length = #10
+           c8)^( s
+           \override Stem #'length = #14
+           b4) s s
+           \override Stem #'length = #0
+           \override Stem #'transparent = ##t
+           \once \override Slur #'extra-offset = #'(0 . 0.35)
+           c4^\( b_(_\markup { \tiny P } a)\) s2
+           \revert Stem #'length
+         }
+         \\
+         {
+           \override Stem #'transparent = ##t
+           \override NoteHead #'transparent = ##t
+           \override Stem #'length = #0
+           s1 s4 e4 s
+           \change Staff = "LH"
+           fis,4 s2
+           \revert Stem #'transparent
+           \revert NoteHead #'transparent
+           \revert Stem #'length
+         }
+         \\
+         {
+           \override Stem #'transparent = ##t
+           \override NoteHead #'transparent = ##t
+           \override Stem #'length = #0
+           s1 s s2
+           fis'4 s
+           \change Staff = "LH"
+           g,4 s s2
+           \revert Stem #'transparent
+           \revert NoteHead #'transparent
+           \revert Stem #'length
+         }
+       >>
+       \bar "|."
+      }
+    }
+
+    \new Staff = "LH" {  % Left hand
+      \clef bass
+      \key g \major
+      \relative c' {
+       \override Staff.NoteCollision
+       #'merge-differently-headed = ##t
+       <<
+         {
+           \override Beam #'positions = #'(-8 . -8)
+           \override NoteHead #'transparent = ##t
+           \stemDown
+           \I g8[_\markup { \bold I } s4. s1 s s2
+             \I d8_\markup { \bold V } s4.
+             \I g,8]_\markup { \bold I } s4.
+           \revert Beam #'positions
+           \revert NoteHead #'transparent
+         }
+         \\
+         {
+           \override Stem #'transparent = ##t
+           \stemDown
+           \override TextScript #'extra-offset = #'(-11.75 . -12.25)
+           \I g'2 s1 s s2 \I d2 g,2
+           \revert Stem #'transparent
+         }
+         \\
+         {
+           \override Stem #'transparent = ##t
+           \once \override NoteHead #'transparent = ##t
+           \override Stem #'length = #0
+           g'4
+           \once \override TextScript #'padding = #0.25
+           a4_(^\markup { \tiny P } b)
+           fis4^(^\markup { \tiny P } e)
+           \once \override NoteHead #'transparent = ##t
+           \once \override Slur #'height-limit = #1.5
+           c4^(
+           d)^\markup { \tiny N }
+           \once \override NoteHead #'transparent = ##t
+           \once \override Slur #'extra-offset = #'(0 . 0.5)
+           \I fis,4_(
+           \revert Stem #'transparent
+           \override Stem #'length = #10
+           \stemDown
+           g4) s
+           \once \override Slur #'extra-offset = #'(0 . 0.25)
+           \I c8_( s
+           \override Stem #'transparent = ##t
+           \revert Stem #'length
+           a4)
+           \once \override NoteHead #'transparent = ##t
+           \I d4^( d,4) s2
+         }
+         \\
+         {
+           \override Stem #'transparent = ##t
+           \override NoteHead #'transparent = ##t
+           \I g'4^( s b) s2
+           \revert Stem #'transparent
+           \revert NoteHead #'transparent
+           \override Beam #'positions = #'(-4 . 1)
+           \stemDown
+           c,8[ s s4
+             \stemUp
+             fis,8] s
+           \override Beam #'positions = #'(1 . -4)
+           g8[ s
+             \stemDown
+             b8] s
+           \revert Beam #'positions
+           \override Stem #'transparent = ##t
+           \override NoteHead #'transparent = ##t
+           c4^( s d4) s s2
+         }
+         \\
+         {
+           \override Stem #'transparent = ##t
+           \override NoteHead #'transparent = ##t
+           \override Stem #'length = #0
+           \stemDown
+           \once \override Slur #'height-limit = #3
+           \once \override Slur #'extra-offset = #'(0 . 0.25)
+           \I g4_( s2. e4) s2. s2 s1 s2
+           \revert Stem #'transparent
+           \revert NoteHead #'transparent
+         }
+         \\
+         {
+           \override Stem #'transparent = ##t
+           \override NoteHead #'transparent = ##t
+           \slurDashed
+           \once \override Slur #'height-limit = #6.0
+           \once \override Slur #'extra-offset = #'(0.5 . -0.25)
+           \override Stem #'length = #0
+           g4_( s2. s1 g,4) s s1 s2
+           \revert Stem #'transparent
+           \revert NoteHead #'transparent
+         }
+       >>
+       \bar "|."
+      }
+    }
+  >>
+}
+
+
+\score {
+  <<
+    \staffPiano
+  >>
+
+%  \midi {
+%  }
+
+  \layout {
+    indent = 0.0
+    ragged-right = ##f
+    \context { \Staff \remove "Time_signature_engraver" }
+  }
+}
+
+
+\paper {
+}
diff --git a/Documentation/general/examples/bach-tab-example.ly b/Documentation/general/examples/bach-tab-example.ly
new file mode 100644 (file)
index 0000000..e2ea18a
--- /dev/null
@@ -0,0 +1,50 @@
+\version "2.11.62"
+\include "example-header.ily"
+
+% Example of Tab Polyphony from Bach Lute Suite in E Minor
+
+
+
+%#(define (fret-letter-tablature-format string tuning pitch)
+%(make-string 1 (integer->char
+%(+ (char->integer #\a)
+%(- (pitch-semitones pitch)
+%(list-ref tuning (- string 1)))))))
+
+global = {
+  \time 12/8
+  \key e \minor
+  \set Staff.midiInstrument = "acoustic guitar (nylon)"
+%  \set TabStaff.tablatureFormat = #fret-letter-tablature-format
+}
+
+upper = \relative c' {
+       \global
+       \voiceOne
+       r4. r8 e, fis g16 b g e e' b c b a g fis e
+}
+
+lower = \relative c {
+       \global
+       \voiceTwo
+       r16 e d c b a g4 fis8 e fis g a b c | 
+}
+
+\score {
+  <<
+    \new StaffGroup = "tab with traditional" <<
+       \new Staff = "guitar" <<
+           \clef "treble_8"
+           \context Voice = "upper" \upper
+           \context Voice = "lower" \lower
+       >>
+       \new TabStaff = "guitar" << 
+            \context TabVoice = "upper"  \upper 
+            \context TabVoice = "lower"  \lower 
+       >>
+    >>
+  >>
+  \layout {}
+  %\midi {}
+}
+
diff --git a/Documentation/general/examples/cary-layout.ily b/Documentation/general/examples/cary-layout.ily
new file mode 100644 (file)
index 0000000..740a025
--- /dev/null
@@ -0,0 +1,104 @@
+
+\version "2.12.0"
+
+\layout {
+  indent = #0
+  ragged-right = ##t
+  \context {
+    \Score
+    
+    proportionalNotationDuration = #(ly:make-moment 1 64)
+    \override Beam #'breakable = ##t
+    autoBeaming = ##f
+    tupletFullLength = ##t
+    \override BarNumber #'transparent = ##t
+    \override BarLine #'transparent = ##t
+    \override SpanBar #'transparent = ##t
+    \override Beam #'break-overshoot = #'(-0.5 . 1.0)
+    \override TextScript #'staff-padding = #6
+    \override Glissando #'thickness = #3
+    \override SpacingSpanner #'strict-grace-spacing = ##t
+    \override TupletBracket #'bracket-visibility = ##t
+    \override NoteColumn #'ignore-collision = ##t
+  }
+}
+
+\paper {
+  oddHeaderMarkup = \markup \fill-line { " " }
+  evenHeaderMarkup = \markup \fill-line { " " }
+  oddFooterMarkup = \markup { 
+    \fill-line { 
+      \bold \fontsize #3 \on-the-fly #print-page-number-check-first \fromproperty #'page:page-number-string } }
+  evenFooterMarkup = \markup { 
+    \fill-line { 
+      \bold \fontsize #3 \on-the-fly #print-page-number-check-first \fromproperty #'page:page-number-string } }
+  printfirst-page-number = ##t
+  print-page-number = ##t
+  ragged-last-bottom = ##t
+}
+
+#(set-global-staff-size 14)
+
+
+%% definitions.
+
+
+ppX = #(make-dynamic-script (markup #:combine #:transparent #:dynamic "f" #:line(#:hspace 0 #:dynamic "pp" #:hspace 0)))
+pX = #(make-dynamic-script (markup #:combine #:transparent #:dynamic "f" #:line(#:hspace 0 #:dynamic "p" #:hspace 0)))
+mpX = #(make-dynamic-script (markup #:combine #:transparent #:dynamic "f" #:line(#:hspace 0 #:dynamic "mp" #:hspace 0)))
+fX = #(make-dynamic-script (markup #:combine #:transparent #:dynamic "f" #:line(#:hspace 0 #:dynamic "f" #:hspace 0)))
+ffX = #(make-dynamic-script (markup #:combine #:transparent #:dynamic "f" #:line(#:hspace 0 #:dynamic "ff" #:hspace 0)))
+sfp = #(make-dynamic-script "sfp")
+sfpp = #(make-dynamic-script "sfpp")
+sffp = #(make-dynamic-script "sffp")
+sffpp = #(make-dynamic-script "sffpp")
+
+beam = #(define-music-function (parser location left right) (number? number?)
+       (cond ((and (= left 0) (> right 0))
+                       #{
+                               \set stemRightBeamCount = #$right
+                       #})
+
+                       ((and (> left 0) (= right 0))
+                       #{
+                               \set stemLeftBeamCount = #$left
+                       #})
+
+                       (else
+                       #{
+                               \set stemLeftBeamCount = #$left
+                               \set stemRightBeamCount = #$right
+                       #})
+       )
+)
+
+fraction = #(define-music-function (parser location music) (ly:music?)
+       #{ \tweak #'text #tuplet-number::calc-fraction-text $music #})
+
+triangle = #(define-music-function (parser location music) (ly:music?)
+       #{ \once \set shapeNoteStyles = #'#(do do do do do do do) $music #})
+
+semicircle = #(define-music-function (parser location music) (ly:music?)
+       #{ \once \set shapeNoteStyles = #'#(re re re re re re re) $music #})
+
+blackdiamond = #(define-music-function (parser location music) (ly:music?)
+       #{ \once \set shapeNoteStyles = #'#(mi mi mi mi mi mi mi) $music #})
+
+tiltedtriangle = #(define-music-function (parser location music) (ly:music?)
+       #{ \once \set shapeNoteStyles = #'#(fa fa fa fa fa fa fa) $music #})
+
+square = #(define-music-function (parser location music) (ly:music?)
+       #{ \once \set shapeNoteStyles = #'#(la la la la la la la) $music #})
+
+wedge = #(define-music-function (parser location music) (ly:music?)
+       #{ \once \set shapeNoteStyles = #'#(ti ti ti ti ti ti ti) $music #})
+
+harmonic = #(define-music-function (parser location music) (ly:music?)
+       #{ \once \set shapeNoteStyles = #'#(harmonic harmonic harmonic harmonic harmonic harmonic harmonic) $music #})
+
+cross = #(define-music-function (parser location music) (ly:music?)
+       #{ \once \set shapeNoteStyles = #'#(cross cross cross cross cross cross cross) $music #})
+
+white = #(define-music-function (parser location music) (ly:music?)
+       #{ \once \override NoteHead #'duration-log = #1 $music #})
+
diff --git a/Documentation/general/examples/cary.ly b/Documentation/general/examples/cary.ly
new file mode 100644 (file)
index 0000000..f99547b
--- /dev/null
@@ -0,0 +1,395 @@
+\version "2.12.0"
+% the example header file caused the head to be chopped off
+%\include "example-header.ily"
+
+
+\header {
+  dedication = "Carin Levine"
+  instrument = "bass flute"
+  title = "ČÁRY"
+  year = "2004--2006"
+
+  subtitle = \markup { \italic Sorcery (extract) }
+  % Measures 6 - 10;
+
+  composer = "Trevor Bača"
+  copyright = "Copyright 2006 Trevor Bača - all rights reserved."
+  
+}
+
+% Verbatim from composer's score.
+%
+% Upper staff gives fingerings;
+% Lower staff gives special types of breath.
+%
+% Copyright 2006 for the entire score;
+% All rights reserved by the composer.
+
+\include "english.ly"
+\include "cary-layout.ily"
+
+\new Score <<
+       
+       \new StaffGroup <<
+               
+               \new Staff \with {
+                       \override Stem #'direction = #down
+                       \override Beam #'positions = #'(-7 . -7)
+                       \override TupletBracket #'direction = #down
+                       \override TupletBracket #'staff-padding = #5
+                       \override TupletBracket #'padding = #2.25
+                       \override VerticalAxisGroup #'minimum-Y-extent = #'(10 . 10)
+               } <<
+                       
+                       \new Voice {
+                               
+            \override Score.MetronomeMark #'extra-offset = #'(0 . 6)
+            \override Score.MetronomeMark #'font-size = #3
+            \tempo 8=42
+                               \time 5/16       s4 ~ s16       \noBreak                 % measure 6
+                               \time 4/8        s2                     \noBreak                 % measure 7
+                               \time 4/8        s2                     \noBreak                 % measure 8
+                               
+                       }
+                       
+                       \new Voice \with {
+                               \remove Forbid_line_break_engraver
+                       } {
+                               
+                               % measure 6
+                               \fraction \times 5/3 {
+                                       \times 4/5 {
+                                               a'64 [ % 36
+                                               cs''64 % 37
+                                               f''64 % 38
+                                               cs''64 % 39
+                                               ef'''64 ] % 40
+                                       }
+                                       \times 4/5 {
+                                               g''64 [ % 41
+                                               c''64 % 42
+                                               e''64 % 43
+                                               g''64 % 44
+                                               ef'''64 ] % 45
+                                       }
+                                       bf''16 % 46
+                               }
+                               
+                               % measure 7
+                               r8 % 47
+                               \times 4/5 {
+                                       d''32 [ % 48
+                                       af''32 % 49
+                                       e'32 % 50
+                                       b'32 % 51
+                                       b'32 ] % 52
+                               }
+                               ef'''4 % 53
+                               
+                               % measure 8
+                               b''8 [ % 54
+                               g''8 ] % 55
+                               d''4 % 56
+                               
+                       }
+               >>
+               
+               \new Staff \with {
+                       \override Clef #'transparent = ##t
+                       \override StaffSymbol #'line-positions = #'(-4 -2   2 4)
+                       \override Stem #'direction = #down
+                       \override TupletBracket #'staff-padding = #5
+                       \override TupletBracket #'padding = #2.25
+                       \override VerticalAxisGroup #'minimum-Y-extent = #'(10 . 10)
+               } <<
+                       
+                       \new Voice \with {
+                               \remove Forbid_line_break_engraver
+                               \override Stem #'direction = #up
+                               \override Stem #'stroke-style = #"grace" 
+                               \override Stem #'font-size = #-3
+                               \override Rest #'transparent = ##t
+                               \override NoteHead #'no-ledgers = ##t
+                               \override Dots #'transparent = ##t
+                               \override TupletBracket #'transparent = ##t
+                               \override TupletNumber #'transparent = ##t
+                       } {
+                               
+                               % measure 6
+                               \fraction \times 5/3 {
+                                       \square f''16 * 1/8 % 40
+                                       \square f''16 * 1/8 % 41
+                                       \square f''16 * 1/8 % 42
+                                       \square f''16 * 1/8 % 43
+                                       \square f''16 * 1/8 % 44
+                                       \square f''16 * 1/8 % 45
+                                       \square f''16 * 1/8 % 46
+                                       \square f''16 * 1/8 % 47
+                                       \times 2/3 {
+                                               \square f''16 % 48
+                                               \square f''16 * 1/2 % 49
+                                       }
+                                       \times 2/3 {
+                                               \square f''16 * 1/4 % 50
+                                               \square f''16 * 1/4 % 51
+                                               \square f''16 * 1/4 % 52
+                                               \square f''16 * 1/4 % 53
+                                               \square f''16 * 1/4 % 54
+                                               \square f''16 * 1/4 % 55
+                                       }
+                               }
+                               
+                               % measure 7
+                               s8 % 56
+                               \square g''16 * 2/1 % 57
+                               \square g''16 % 58
+                               \square g''16 % 59
+                               \times 8/9 {
+                                       s16 % 60
+                                       f''16 * 1/4 % 61
+                                       f''16 * 1/4 % 62
+                                       f''16 * 1/4 % 63
+                                       f''16 * 1/4 % 64
+                                       f''16 * 1/4 % 65
+                               }
+                               
+                               % measure 8
+                               \times 4/5 {
+                                       \times 4/7 {
+                                               s4 % 66
+                                               \triangle a''16 % 67
+                                               \triangle a''16 % 68
+                                               \triangle a''16 % 69
+                                       }
+                                       s8 % 70
+                                       \triangle a''16 * 1/2 % 71
+                                       \triangle a''16 * 1/2 % 72
+                                       \triangle a''16 * 1/2 % 73
+                                       \triangle a''16 * 1/2 % 74
+                                       \triangle a''16 * 1/2 % 75
+                                       \triangle g''16 * 1/2 % 76
+                                       \triangle g''16 * 1/2 % 77
+                                       \triangle g''16 * 1/2 % 78
+                               }
+                               
+                       }
+                       
+                       \new Voice \with {
+                               \remove Forbid_line_break_engraver
+                               \override Stem #'transparent = ##t
+                               \override Rest #'transparent = ##t
+                               \override Rest #'staff-position = #-0.5
+                               \override Dots #'transparent = ##t
+                               \override Beam #'transparent = ##t
+                               \override TupletBracket #'transparent = ##t
+                               \override TupletNumber #'transparent = ##t
+                       } {
+                               
+                               % measure 6
+                               \fraction \times 5/3 {
+                                       \blackdiamond f'128 [ % 40
+                                       \blackdiamond f'128 % 41
+                                       \blackdiamond f'128 % 42
+                                       \blackdiamond f'128 % 43
+                                       \blackdiamond f'128 % 44
+                                       \blackdiamond f'128 % 45
+                                       \blackdiamond f'128 % 46
+                                       \blackdiamond f'128 ] % 47
+                                       \times 2/3 {
+                                               \blackdiamond f'16 % 48
+                                               \blackdiamond f'32 % 49
+                                       }
+                                       \times 2/3 {
+                                               \blackdiamond f'64 % 50
+                                               \blackdiamond f'64 % 51
+                                               \blackdiamond f'64 % 52
+                                               \blackdiamond f'64 % 53
+                                               \blackdiamond f'64 % 54
+                                               \blackdiamond f'64 % 55
+                                       }
+                               }
+                               
+                               % measure 7
+                               s8 % 56
+                               \harmonic a'8 \glissando % 57
+                               \harmonic a'16 \glissando % 58
+                               \blackdiamond a'16 % 59
+                               \times 8/9 {
+                                       s16 % 60
+                                       \harmonic g'64 \glissando % 61
+                                       \harmonic g'64 \glissando % 62
+                                       \harmonic g'64 \glissando % 63
+                                       \harmonic g'64 \glissando % 64
+                                       \blackdiamond g'64 % 65
+                               }
+                               
+                               % measure 8
+                               \times 4/5 {
+                                       \times 4/7 {
+                                               s4 % 66
+                                               \blackdiamond f'16 % 67
+                                               \blackdiamond f'16 % 68
+                                               \blackdiamond f'16 % 69
+                                       }
+                                       s8 % 70
+                                       \blackdiamond f'32 % 71
+                                       \blackdiamond f'32 % 72
+                                       \blackdiamond f'32 % 73
+                                       \blackdiamond f'32 % 74
+                                       \blackdiamond f'32 % 75
+                                       \harmonic e'32 \glissando % 76
+                                       \harmonic e'32 \glissando % 77
+                                       \blackdiamond e'32 % 78
+                               }
+                               
+                       }
+                       
+                       \new Voice \with {
+                               \remove Forbid_line_break_engraver
+                               \override Stem #'direction = #down
+                               \override Stem #'font-size = #-3
+                               \override Stem #'stroke-style = #"grace" 
+                               \override Rest #'transparent = ##t
+                               \override NoteHead #'no-ledgers = ##t
+                               \override Dots #'transparent = ##t
+                               \override TupletBracket #'transparent = ##t
+                               \override TupletNumber #'transparent = ##t
+                       } {
+                               
+                               % measure 6
+                               \fraction \times 5/3 {
+                                       s128 % 40
+                                       s128 % 41
+                                       s128 % 42
+                                       s128 % 43
+                                       s128 % 44
+                                       s128 % 45
+                                       s128 % 46
+                                       s128 % 47
+                                       \times 2/3 {
+                                               \semicircle a16 % 48
+                                               \semicircle a16 * 1/2 % 49
+                                       }
+                                       \times 2/3 {
+                                               \semicircle a16 * 1/4 % 50
+                                               \semicircle a16 * 1/4 % 51
+                                               \semicircle a16 * 1/4 % 52
+                                               \semicircle a16 * 1/4 % 53
+                                               \semicircle a16 * 1/4 % 54
+                                               \semicircle a16 * 1/4 % 55
+                                       }
+                               }
+                               
+                               % measure 7
+                               s8 % 56
+                               s8 % 57
+                               s16 % 58
+                               \triangle a16 % 59
+                               \times 8/9 {
+                                       s16 % 60
+                                       s64 % 61
+                                       s64 % 62
+                                       s64 % 63
+                                       s64 % 64
+                                       \triangle a16 * 1/4 % 65
+                               }
+                               
+                               % measure 8
+                               \times 4/5 {
+                                       \times 4/7 {
+                                               s4 % 66
+                                               \semicircle a16 % 67
+                                               \semicircle a16 % 68
+                                               \semicircle a16 % 69
+                                       }
+                                       s8 % 70
+                                       \semicircle a16 * 1/2 % 71
+                                       \semicircle a16 * 1/2 % 72
+                                       \semicircle a16 * 1/2 % 73
+                                       \semicircle a16 * 1/2 % 74
+                                       \semicircle a16 * 1/2 % 75
+                                       s32 % 76
+                                       s32 % 77
+                                       \semicircle a16 * 1/2 % 78
+                               }
+                               
+                       }
+                       
+                       \new Voice \with {
+                               \remove Forbid_line_break_engraver
+                               \override Stem #'direction = #down
+                               \override NoteHead #'transparent = ##t
+                               \override NoteHead #'no-ledgers = ##t
+                               \override Rest #'staff-position = #-18
+                               \override Stem #'length = #10
+                               \override Beam #'positions = #'(-13 . -13)
+                               \override DynamicLineSpanner #'staff-padding = #18
+                               \override TextSpanner #'(bound-details left text) = #(markup (#:italic "covered"))
+                               \override TextSpanner #'dash-period = #1
+                               \override TextSpanner #'dash-fraction = #0.2
+                               \override TextSpanner #'(bound-details left padding) = #0.5
+                               \override TextSpanner #'(bound-details right padding) = #0.5
+                               \override TextSpanner #'staff-padding = #4
+                       } {
+                               
+                               % measure 6
+                               \fraction \times 5/3 {
+                                       \beam #0 #5 g,128 \sffp \< [ % 40
+                                       \beam #5 #5 g,128 % 41
+                                       \beam #5 #5 g,128 % 42
+                                       \beam #5 #5 g,128 % 43
+                                       \beam #5 #5 g,128 % 44
+                                       \beam #5 #5 g,128 % 45
+                                       \beam #5 #5 g,128 % 46
+                                       \beam #5 #1 g,128 % 47
+                                       \times 2/3 {
+                                               \beam #1 #2 g,16 % 48
+                                               \beam #3 #1 g,32 \fX % 49
+                                       }
+                                       \times 2/3 {
+                                               \beam #1 #4 g,64 \sffp \< % 50
+                                               \beam #4 #4 g,64 % 51
+                                               \beam #4 #4 g,64 % 52
+                                               \beam #4 #4 g,64 % 53
+                                               \beam #4 #4 g,64 % 54
+                                               \beam #4 #0 g,64 \fX ] % 55
+                                       }
+                               }
+                               
+                               % measure 7
+                               r8 % 56
+                               g,8 \sf \< [ % 57
+                               g,16 % 58
+                               \beam #2 #0 g,16 \ffX ] % 59
+                               \times 8/9 {
+                                       r16 % 60
+                                       \beam #4 #4 g,64 \sfp \< [ % 61
+                                       \beam #4 #4 g,64 % 62
+                                       \beam #4 #4 g,64 % 63
+                                       \beam #4 #4 g,64 % 64
+                                       \beam #4 #0 g,64 \fX ] % 65
+                               }
+                               
+                               % measure 8
+                               \times 4/5 {
+                                       \times 4/7 {
+                                               r4 % 66
+                                               \beam #2 #2 g,16 \fX [ % 67
+                                               \beam #2 #2 g,16 \f % 68
+                                               \beam #2 #0 g,16 \fX ] % 69
+                                       }
+                                       r8 % 70
+                                       \beam #3 #3 g,32 \fX [ % 71
+                                       \beam #3 #3 g,32 \fX % 72
+                                       \beam #3 #3 g,32 \fX % 73
+                                       \beam #3 #3 g,32 \fX % 74
+                                       \beam #3 #3 g,32 \fX % 75
+                                       \beam #3 #3 g,32 \sf \< % 76
+                                       \beam #3 #3 g,32 % 77
+                                       \beam #3 #0 g,32 \ffX ] % 78
+                               }
+                               
+                       }
+               >>
+       >>
+>>
diff --git a/Documentation/general/examples/chart.ly b/Documentation/general/examples/chart.ly
new file mode 100644 (file)
index 0000000..01acc24
--- /dev/null
@@ -0,0 +1,44 @@
+\version "2.12.0"
+\include "example-header.ily"
+
+\include "predefined-guitar-fretboards.ly"
+
+#(set-global-staff-size 17)
+
+global = {
+  \time 4/4
+  \key g \major
+  \partial 4
+  \numericTimeSignature
+}
+
+melody = \relative c' {
+  \global
+  d4
+  g4 b8( a) g4 fis
+  e e e e
+  a c8( b) a4 g
+  fis a d
+}
+
+harmonies = \chordmode {
+  \global 
+  s4 g1 | c | a:m | d   % 1-3
+}
+
+text = \lyricmode {
+  My eyes are dim, I can -- not see,
+  I have not brought my specs with me!
+}
+
+\score {
+  <<
+    \new ChordNames { \harmonies }
+    \new FretBoards { \harmonies }
+    \new Staff  { 
+      \context Voice = "vocal" { \melody }
+    }
+    \new Lyrics \lyricsto "vocal" \text
+  >>
+}
+
diff --git a/Documentation/general/examples/example-header.ily b/Documentation/general/examples/example-header.ily
new file mode 100644 (file)
index 0000000..0817b74
--- /dev/null
@@ -0,0 +1,20 @@
+\version "2.11.33"
+\paper{
+  indent=0\mm
+  ragged-last=##f
+  ragged-right=##f
+  line-width=158\mm  % produces 624 pixels
+  oddFooterMarkup=##f
+  oddHeaderMarkup=##f
+  bookTitleMarkup = ##f
+  scoreTitleMarkup = ##f
+}
+
+\layout {
+  \context { \Score
+    \override PaperColumn #'keep-inside-line = ##t
+    \override NonMusicalPaperColumn #'keep-inside-line = ##t
+  }
+}
+
+
diff --git a/Documentation/general/examples/granados.ly b/Documentation/general/examples/granados.ly
new file mode 100644 (file)
index 0000000..7b2c427
--- /dev/null
@@ -0,0 +1,146 @@
+\version "2.12.0"
+\include "example-header.ily"
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% This is a brief passage from Enrique Granados %
+% Goyescas, "Coloquio en la Reja."              %
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+#(set-global-staff-size 17)
+
+\paper {
+  ragged-right = ##f
+  #(set-paper-size "letter" 'landscape)
+  system-count = 1
+}
+
+
+csh = \change Staff = "high" 
+csm = \change Staff = "middle"
+csl = \change Staff = "low"
+
+crmolto = \markup { \italic \large "cresc. molto" }
+appassmolto = \markup { \italic \large "appassionato molto" }
+
+#(ly:set-option 'point-and-click #f)
+
+global = {
+  \time 3/4
+  \set fontSize = #1
+  \override Beam #'thickness = #0.5
+  \override NoteColumn #'ignore-collision = ##t
+}
+
+upperVoiceOne = \relative c'' {
+  \voiceOne
+  \override TupletBracket #'transparent = ##t
+  <aes f'>8\([ \times 4/5{g'32( aes g f g]) } 
+    <es aes>8[ \times 4/5{<d bes'>32( c' bes aes bes]) }
+    <es, aes es'>8 <d fis b d>\) | % end m. 1
+  %--------------------------------------------------%
+  <c g' c>4\( \voiceTwo <bes es bes'\arpeggio>\) 
+    \slurUp <aes aes'>16( <bes bes'> <g g'>8) % end m. 2
+  %--------------------------------------------------%
+  \noBreak
+  \voiceOne 
+  <f aes d f>8\([ \times 4/5{<g g'>32( aes' g f g]) }
+  \set subdivideBeams = ##t
+  \set beatLength = #(ly:make-moment 1 8)
+    <aes, aes'>16 <c f> \times 4/5{ bes'32( c bes aes bes]) }
+    \set subdivideBeams = ##f
+    \ottava #1 <es es'>16 <f f'> <d d'> \appoggiatura f8 <es es'>16\)
+}
+
+upperVoiceTwo = \relative c'' {
+  \voiceTwo
+  s8 c8\< <bes, f'>[ <bes aes'> c' <bes, d fis>\!]
+  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
+  s8 \voiceTwo g,8 aes4 s4
+}
+
+middleVoiceOne = \relative c' {
+  \override Stem #'cross-staff = ##t
+  \override Stem #'length = #32
+  \override Stem #'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
+  \revert Stem #'cross-staff
+  \showStaffSwitch
+  \csh \stemUp f4 s2
+  %s2.  % beginning m. 3
+}
+
+middleVoiceTwo = \relative c' {
+  s2. | % 1
+  \override Stem #'cross-staff = ##t
+  \override Stem #'length = #24
+  \override Stem #'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
+}
+
+lowerVoiceOne = \relative c, {
+  \override Staff.NoteCollision #'merge-differently-headed = ##t
+  \override Staff.NoteCollision #'merge-differently-dotted = ##t
+  bes8 \csm \stemDown <bes'' c es>8 s2
+  \csl \stemUp
+  \set subdivideBeams = ##t
+  \set beatLength = #(ly:make-moment 1 16)
+  s8 \hideNotes \slurUp \stemDown 
+    es,,64( bes'' s64 \unHideNotes \stemUp g64[ bes c d c]) s2
+  \set subdivideBeams = ##f
+  bes,,8 \csm \stemDown <bes'' c es>8 s2
+}
+
+lowerVoiceTwo = \relative c, {
+  \voiceTwo
+  bes2. 
+  \csh
+  \once \override Beam #'damping = #+inf.0
+  <bes'' es g>8 \csl \slurUp 
+  %\once\override Slur #'extra-offset = #'(0 . 4) 
+  es,,64 bes' es g s32. 
+    c64
+    s4 <bes des>
+  bes,,2. 
+}
+
+
+\score {
+  \new PianoStaff <<
+    \set PianoStaff.connectArpeggios = ##t
+%    \override PianoStaff.Arpeggio #'stencil = #ly:arpeggio::brew-chord-bracket
+    \new Staff = "high" <<     
+      \global
+      \context Voice = "upperVoiceOne" { \upperVoiceOne }
+      \context Voice = "upperVoiceTwo" { \upperVoiceTwo }
+    >>
+    \new Staff = "middle" << 
+      \global
+      \context Voice = "middleVoiceOne" { \middleVoiceOne }
+      \context Voice = "middleVoiceTwo" { \middleVoiceTwo }
+    >>
+    \new Staff = "low" <<      
+      \clef bass 
+      \global
+      \context Voice = "lowerVoiceOne" { \lowerVoiceOne }
+      \context Voice = "lowerVoiceTwo" { \lowerVoiceTwo }
+    >>
+  >>
+  \layout {
+    \context {
+      \Score
+      \override TimeSignature #'stencil = ##f
+      \remove "Bar_number_engraver"
+    }
+  }
+  %{\midi {
+    \context {
+      \Score
+      tempoWholesPerMinute = #(ly:make-moment 120 4)
+    }
+  }%}
+}
diff --git a/Documentation/general/examples/orchestral.ly b/Documentation/general/examples/orchestral.ly
new file mode 100644 (file)
index 0000000..6325d4b
--- /dev/null
@@ -0,0 +1,4 @@
+{
+  c'4^"NO EXAMPLE HERE YET"
+}
+
diff --git a/Documentation/general/examples/sesto-full.ly b/Documentation/general/examples/sesto-full.ly
new file mode 100644 (file)
index 0000000..e94aa9f
--- /dev/null
@@ -0,0 +1,72 @@
+%%% G.F Haendel, Giulio Cesare in Egitto
+%%% Act I, scene IV
+%%% Sesto: Svegliatevi nel core, furie d'un alma offesa (excerpt)
+%%%
+%%% Nicolas Sceaux <nicolas.sceaux@free.fr>
+
+\version "2.12.2"
+\include "sesto.ily"
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%% Lead sheet
+%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\book {
+  \paper {
+    #(layout-set-staff-size 14)
+  }
+  \score {
+    \new StaffGroupNoBar <<
+      \new StaffGroupNoBracket <<
+        \new Staff <<
+          \set Staff.instrumentName = "Violino I."
+          \global \clef treble \keepWithTag #'violin \violinoI
+        >>
+        \new Staff <<
+          \set Staff.instrumentName = "Violino II."
+          \global \clef treble \keepWithTag #'violin \violinoII
+        >>
+      >>
+      \new Staff <<
+        \new Voice = "sesto" \with { autoBeaming = ##f } <<
+          \set Staff.instrumentName = \markup \smallCaps Sesto.
+          \global \clef treble \sesto
+        >>
+        \lyricsto "sesto" \new Lyrics \sestoLyrics
+      >>
+      \new Staff <<
+        \set Staff.instrumentName = "Bassi."
+        \global \clef bass \bassi
+      >>
+    >>
+    \layout {
+      indent = 20\mm
+      \context {
+        \Score
+        \name Score
+%% FIXME: vertical engine changed!
+%%        \override VerticalAlignment #'max-stretch = #ly:align-interface::calc-max-stretch
+        \accepts "StaffGroupNoBar"
+        skipBars = ##t
+      }
+      \context {
+        \StaffGroup
+        \name StaffGroupNoBar
+        \description "Like StaffGroup, but without spanbar"
+        \remove "Span_bar_engraver"
+        \accepts "StaffGroupNoBracket"
+      }
+      \context {
+        \StaffGroup
+        \name StaffGroupNoBracket
+        \description "Like StaffGroup, but without brackets"
+        \remove "System_start_delimiter_engraver"
+      }
+    }
+%    \midi { }
+  }
+}
+
+
diff --git a/Documentation/general/examples/sesto-piano.ly b/Documentation/general/examples/sesto-piano.ly
new file mode 100644 (file)
index 0000000..de74cd0
--- /dev/null
@@ -0,0 +1,46 @@
+%%% G.F Haendel, Giulio Cesare in Egitto
+%%% Act I, scene IV
+%%% Sesto: Svegliatevi nel core, furie d'un alma offesa (excerpt)
+%%%
+%%% Nicolas Sceaux <nicolas.sceaux@free.fr>
+
+\version "2.12.2"
+\include "sesto.ily"
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%% Reduction
+%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\book {
+  \header { instrument = "Vocal part and keyboard reduction" }
+  \paper {
+    #(layout-set-staff-size 16)
+  }
+  \score {
+    <<
+      \new Staff <<
+        \new Voice = "sesto" \with { autoBeaming = ##f } <<
+          \set Staff.instrumentName = \markup \smallCaps Sesto.
+          \global \clef treble \sesto
+        >>
+        \lyricsto "sesto" \new Lyrics \sestoLyrics
+      >>
+      \new PianoStaff <<
+        \new Staff <<
+          \global \clef treble
+          \partcombine \keepWithTag #'reduction \violinoI \keepWithTag #'reduction \violinoII
+        >>
+        \new Staff <<
+          \global \clef bass \bassi
+        >>
+      >>
+    >>
+    \layout {
+      indent = 20\mm
+      \context { \Voice printPartCombineTexts = ##f }
+    }
+  }
+}
+
diff --git a/Documentation/general/examples/sesto-violin.ly b/Documentation/general/examples/sesto-violin.ly
new file mode 100644 (file)
index 0000000..038889b
--- /dev/null
@@ -0,0 +1,27 @@
+%%% G.F Haendel, Giulio Cesare in Egitto
+%%% Act I, scene IV
+%%% Sesto: Svegliatevi nel core, furie d'un alma offesa (excerpt)
+%%%
+%%% Nicolas Sceaux <nicolas.sceaux@free.fr>
+
+\version "2.12.2"
+\include "sesto.ily"
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%% Violino I
+%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\book {
+  \header { instrument = "Violino I" }
+  \paper {
+    #(layout-set-staff-size 18)
+  }
+  \score {
+    \new Staff <<
+      \global \clef treble \keepWithTag #'violin \violinoI
+    >>
+    \layout { indent = 5\mm }
+  }
+}
diff --git a/Documentation/general/examples/sesto.ily b/Documentation/general/examples/sesto.ily
new file mode 100644 (file)
index 0000000..899d3cc
--- /dev/null
@@ -0,0 +1,219 @@
+%%% G.F Haendel, Giulio Cesare in Egitto
+%%% Act I, scene IV
+%%% Sesto: Svegliatevi nel core, furie d'un alma offesa (excerpt)
+%%%
+%%% Nicolas Sceaux <nicolas.sceaux@free.fr>
+
+\version "2.12.2"
+\header {
+  title = "Giulio Cesare in Egitto"
+  subtitle = "Sesto: Svegliatevi nel core, furie d'un alma offesa (excerpt)"
+  composer = "G.F Handel"
+}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%%
+%%% Notes and lyrics
+%%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+sesto = {
+  R1*6 |
+  r4 r8 g' c''  ees''16[ d''] c''8 c'' |
+  c'' g' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+  aes' g' r c'' c''  b'16[ c''] d''8 g' |
+
+%{
+  %%10
+  f'4 r8 d'' ees''  d''16[ c''] b'4 |
+  c'' r8 c'' c''8. c'16 c'4 |
+  r r8 c'' aes'  c''16[ bes'] aes'8 g' |
+  f' f' r4 bes'8 bes'16 aes' g'8 f' |
+  ees' ees' r ees'' ees''  d''16[ ees''] f''8 bes' |
+  %%15
+  aes'4. bes'8 g' ees'' f'4 |
+  ees' r8 ees'' ees''8. ees'16 ees'4 |
+  r r8 c'' c''8. c'16 c'4 |
+  r r8 c'' c''  d''16[ ees''] f''8 ees'' |
+  d'' bes' r4 bes'8 c''16 d'' ees''8 d'' |
+  %%20
+  c'' c'' r c'' f'  f''16[ ees''] d''8 c'' |
+  b'16[ a'] g'8 r4 ees''8 ees''16 d'' c''8 bes' |
+  aes' g' r g' aes' f' d'' b' |
+  f''2 ~ f''8 d'' b' g' |
+  ees'4 r8 d'' ees''  d''16[ c''] b'4 |
+  %%25
+  c'' r8 g' c'' g' ees' g' |
+  c'4 r8 g' aes' f' d'' b' |
+  f''2 ~ f''8 d'' b' g' |
+  ees'4 r8 g'' ees''  d''16[ c''] b'4 |
+  c''2 r |
+  %%30
+  R1*5 |
+%}
+}
+
+sestoLyrics = \lyricmode {
+  Sve -- glia -- te -- vi nel co -- re,
+  fu -- rie "d'un" al -- "ma of" -- fe -- sa,
+%{
+  a far "d'un" tra -- di -- tor a -- spra ven -- det -- ta!
+  sve -- glia -- te -- vi,
+  sve -- glia te -- vi nel co -- re,
+  fu -- rie d'un al -- "ma of" -- fe -- sa,
+  a far "d'un" tra -- di -- tor as -- pra ven -- det -- ta,
+  sve -- glia -- te -- vi,
+  sve -- glia -- te -- vi,
+  sve -- glia -- te -- vi nel co -- re,
+  fu -- rie d'un al -- "ma of" -- fe -- sa,
+  sve -- glia -- te -- vi nel co -- re,
+  fu -- rie d'un al -- "ma of" -- fe -- sa,
+  a far d'un tra -- di -- tor, __
+  d'un tra -- di -- tor as -- spra ven -- det -- ta,
+  a far d'un tra -- di -- tor,
+  a far d'un tra -- di -- tor, __
+  d'un tra -- di -- tor as -- pra ven -- det -- ta!
+%}
+}
+
+violinoI = {
+  r4 r8 g' c'' ees''16 d'' c''8 c'' |
+  c'' c' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+  aes' g' r c'' c''8.^\trill b'32 c'' d''8 g' |
+  f'4. d''8 ees'' d''16 c'' b'4 |
+  %%5
+  c''16 g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' |
+  c'' g'' f'' g'' ees'' g'' f'' g'' aes''8 g''16 f'' f''4^\trill |
+  ees'' r8 g'_\p c'' ees''16 d'' c''8 c'' |
+  c'' g' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+  aes' g' r c'' c'' b'16 c'' d''8 g' |
+%{
+  %%10
+  f'4 r8 d'' ees'' d''16 c'' b'4 |
+  c''16 g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' |
+  ees'' g'' f'' g'' ees'' g'' f'' g'' aes''8 aes' r4 |
+  d''16 f'' ees'' f'' d'' f'' ees'' f'' g''8 g' r4 |
+  ees'16 g' f' g' ees'8 ees'' ees'' d''16 ees'' f''8 bes' |
+  %%15
+  aes'4. bes'8 g' ees'' d''4 |
+  ees''16 bes'' aes'' bes'' g'' bes'' aes'' bes'' g'' bes'' aes'' bes'' g'' bes'' aes'' bes'' |
+  g'' g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' |
+  ees'' g'' f'' g'' ees'' g'' f'' g'' aes'' c'' c'' bes' aes' c'' bes' c'' |
+  d'' f'' ees'' f'' d'' f'' ees'' f'' g'' bes' bes' aes' g' bes' aes' bes' |
+  %%20
+  c'' ees'' ees'' f'' g'' ees'' f'' g'' aes'' f'' g'' ees'' f'' d'' ees'' c'' |
+  \tag #'violin { g'' g' g'' g'' } \tag #'reduction { g'' d'' g'' g'' } g'' b' g'' g'' g'' f'' ees'' d'' c''8 bes' |
+  aes' g' r g' aes' f' d'' b' |
+  f''2 ~ f''8 d'' b' g' |
+  ees'16 c' g' ees' c'' g' g'' d'' g'4 r |
+  %%25
+  c'''16 ees''' d''' ees''' c''' ees''' d''' ees''' g'' c''' b'' c''' g'' c''' b'' c''' |
+  ees'' g'' f'' g'' ees'' g'' f'' g'' \tag #'violin { aes'8 f' } \tag #'reduction { c''8 aes' } d'' b' |
+  f''2 ~ f''8 d'' b' g' |
+  ees'4^\fermata r r2 |
+  r4 r8 c'_\f c'' ees''16 d'' c''8 c'' |
+  %%30
+  c'' c' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+  aes' g' r g' aes' f' d'' b' |
+  f''2 ~ f''8 d'' b' g' |
+  c''16 g'' f'' g'' ees'' g'' f'' g'' c'' g'' f'' g'' ees'' g'' f'' g'' |
+  b'8 c''16 d'' ees''8 d'' c''4^\fermata r
+%}
+}
+
+violinoII = {
+  r4 r8 g' c'' ees''16 d'' c''8 c'' |
+  c'' c' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+  aes' g' r c'' c''8.^\trill b'32 c'' d''8 g' |
+  f'4. d''8 ees'' d''16 c'' b'4 |
+  %%5
+  c''16 ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' |
+  c'' ees'' d'' ees'' c'' ees'' d'' ees'' d''8[ ees''] ees'' d'' |
+  ees''4 r8 g' c'' ees''16 d'' c''8 c'' |
+  c'' g' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+  aes' g' r c'' c'' b'16 c'' d''8 g' |
+%{
+  %%10
+  f'4 r8 d'' ees'' d''16 c'' b'4 |
+  c''16 ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' |
+  c'' ees'' d'' ees'' c'' ees'' d'' ees'' f''8 f' r4 |
+  bes'16 d'' c'' d'' bes' d'' c'' d'' ees''8 ees' r4 |
+  c'16 ees' d' ees' c'8 ees'' ees'' d''16 ees'' f''8 bes' |
+  %%15
+  aes'4. bes'8 g' ees'' d''4 |
+  ees''16 g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' ees'' g'' f'' g'' |
+  ees'' ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' |
+  c'' ees'' d'' ees'' c'' ees'' d'' ees'' f'' aes' aes' g' f' aes' g' aes' |
+  bes' d'' c'' d'' bes' d'' c'' d'' ees'' g' g' f' ees' g' f' g' |
+  %%20
+  aes' c'' c'' d'' ees'' c'' d'' ees'' f'' d'' ees'' c'' d'' b' c'' a' |
+  \tag #'violin { b' d' d' b' } \tag #'reduction { b' g' d'' b' } b' g' b' d'' g'' f'' ees'' d'' c''8 bes' |
+  d' ees' r g' aes' f' d'' b' |
+  f''2 ~ f''8 d'' b' g' |
+  ees'16 c' g' ees' c'' g' g'' d'' g'4 r |
+  %%25
+  ees''16 g'' f'' g'' ees'' g'' f'' g'' ees'' ees'' d'' ees'' c'' ees'' d'' ees'' |
+  g' ees'' d'' ees'' c'' ees'' d'' ees'' \tag #'violin { c''8 aes' } \tag #'reduction { aes'8 f' } f' d' |
+  f''2 ~ f''8 d'' b' g' |
+  ees'4^\fermata r r2 |
+  r4 r8 c' c'' ees''16 d'' c''8 c'' |
+  %%30
+  c'' c' ees''4 ~ ees''8 d''16 ees'' f''8 aes' |
+  aes' g' r g' aes' f' d'' b' |
+  f''2 ~ f''8 d'' b' g' |
+  c''16 ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' c'' ees'' d'' ees'' |
+  d'8 ees'16 f' g'8 b' c''4^\fermata r
+%}
+}
+
+bassi = {
+  c4 r8 g c' ees'16 d' c'8 c' |
+  c' c r g aes f bes bes, |
+  ees ees, r c ees c g ees |
+  aes f d' b c' f g g, |
+  %%5
+  c4 r c'8 c bes bes, |
+  aes aes, g g, f ees bes bes, |
+  ees4 r r r8 c_\p |
+  c' ees'16 d' c'8 bes aes f bes bes, |
+  ees ees, r c ees c g ees |
+%{
+  %%10
+  aes f d' b c' f g g, |
+  c4 r r r8 c' |
+  c'8. c16 c4 r8 f d ees |
+  bes bes, r bes g aes bes g |
+  c' c c' bes16 aes g8 ees bes g |
+  %%15
+  c' c d bes, ees g bes bes, |
+  ees4 r r r8 ees' |
+  ees'8. ees16 ees4 r r8 c' |
+  c'8. c16 c8 c' aes f r f |
+  bes bes, bes, bes g ees r ees |
+  %%20
+  aes aes, g g, f f, r f |
+  g g, r4 c'8 g aes g |
+  f ees r4 r r8 g, |
+  aes, f, d b, aes f d' b |
+  c'4 r8 b c' f g g, |
+  %%25
+  c' g c g, c,4 r |
+  c'8 g c c' f4 r8 g, |
+  aes, f, d b, aes f d' b |
+  c'4 r8 b c' f g g, |
+  c4 r8 c_\f c' ees'16 d' c'8 c' |
+  %%30
+  c' c r g aes f bes bes, |
+  ees g ees c f,4 r8 g, |
+  aes, f, d b, aes f d' b |
+  c' c bes bes, aes aes, g g, |
+  f c g g, c4^\fermata r
+%}
+}
+
+global = {
+  \key c \minor
+  \set Score . tempoWholesPerMinute = #(ly:make-moment (/ 80 4) 1 0 1)
+  \time 4/4 
+%s1*34 \bar "|."
+}
+
diff --git a/Documentation/general/examples/theory.ly b/Documentation/general/examples/theory.ly
new file mode 100644 (file)
index 0000000..57ef2f5
--- /dev/null
@@ -0,0 +1,63 @@
+\version "2.12.0"
+\include "example-header.ily"
+
+#(ly:set-option 'point-and-click #f)
+
+global = {
+    \time 4/4 
+    \numericTimeSignature
+    \key c \major
+    #(set-global-staff-size 24)
+}
+
+cf = \relative c { 
+  \clef bass
+  \global
+  c4 c' b a | 
+  g a f d | 
+  e f g g, | 
+  c1 
+}
+
+upper = \relative c'' { 
+  \global
+  r4 s4 s2 | 
+  s1*2 | 
+  s2 s4 s 
+  \bar "||" 
+}
+
+bassFigures = \figuremode {
+  s1*2 | s4 <6> <6 4> <7> | s1
+}
+
+\markup { "Exercise 3: Write 8th notes against the given bass line." }
+
+\score {
+  \new PianoStaff <<
+    \new Staff { 
+      \context Voice = "added voice" \with {
+        \consists "Balloon_engraver"
+      }
+      \upper
+    }
+
+    \new Staff = lower { 
+      <<
+%      \context Voice = "cantus firmus" \with {
+%        \consists "Balloon_engraver"
+%      }
+        \context Staff = lower \cf
+        \new FiguredBass \bassFigures
+      >>
+    }
+  >>
+  \layout {}
+  %{\midi {
+    \context {
+      \Score
+      tempoWholesPerMinute = #(ly:make-moment 120 4)
+    }  
+  }%}
+}
+
index 108c0953e254eff0526a29e966139759a4886542..76da24be2f4089cc64441030e2bb80c9616a9f7f 100644 (file)
@@ -12,7 +12,7 @@
 @divClass{column-center-top}
 @subheading Our Goal
 
-@imageFloat{flat-design.png,right}
+@imageFloat{flat-design,png,right}
 
 The inspiration for LilyPond came when two musicians became
 annoyed with the bland and boring look of computer-printed
@@ -40,6 +40,9 @@ Impress friends and colleagues with sharp sheet music!
 @item
 @ref{Freedom}: LilyPond is Free Software.
 
+@item
+@ref{Background}: Our computational aesthetics.
+
 @end itemize
 @divEnd
 
@@ -65,19 +68,23 @@ Impress friends and colleagues with sharp sheet music!
 @item
 @ref{Text input}: You write music as @emph{text}?!
 
+@item
+@ref{Alternate input}: Other ways of working with LilyPond.
+
 @end itemize
 @divEnd
 
 
-
 @divClass{hide}
 @menu
 * Features::                    What can LilyPond do?
 * Examples::                    I want to see some music!
 * Freedom::                     Freedom and the GPL.
+* Background::                  Computational aesthetics.
 * Productions::                 Real-life use of LilyPond.
 * Testimonials::                What do people say about it?
 * Text input::                  You write music as text?!
+* Alternate input::             Other ways of working with LilyPond.
 @end menu
 @divEnd
 
@@ -88,21 +95,21 @@ Impress friends and colleagues with sharp sheet music!
 
 @help{hoping to delegate this.  Desired: an enthusiastic
 attempt to sway people towards trying lilypond.  The warnings
-about writing music as text come in Crash Course, not here.  Maybe
-draw inspiration from
-http://lilypond.org/web/about/features
-and
-http://lilypond.org/web/switch/tour
-and
-http://lilypond.org/web/switch/advantages
-}
+about writing music as text come in Crash Course, not here.}
+
+Maybe draw inspiration from
+@uref{http://lilypond.org/web/about/features} and
+@uref{http://lilypond.org/web/switch/tour} and
+@uref{http://lilypond.org/web/switch/advantages}
+
+
 
 @subheading Why switch to LilyPond?
 
 
 @subsubheading Excellent classical engraving
 
-@imageFloat{flat-design.png,right}
+@imageFloat{flat-design,png,right}
 
 The point of using LilyPond is to produce elegant sheet music that
 is easy to read.  LilyPond's developer community has spent
@@ -111,12 +118,12 @@ that results in beautifully engraved music.  All of LilyPond's
 style settings, font designs and algorithms have been inspired by
 the finest hand-engraved music.  LilyPond output has the same
 strong, balanced and elegant look as the best-engraved classical
-scores
+scores.  This is further explained in our @ref{Essay}.
 
 
-@subsubheading No fiddling
+@subsubheading Less fiddling
 
-Don't waste time with tweaking the output; LilyPond gets the
+Spend less time with tweaking the output; LilyPond gets the
 formatting correct right from the start.  It determines spacing by
 itself, and breaks lines and pages to provide a tight and uniform
 layout.  Clashes between lyrics, notes, and chords are resolved
@@ -132,9 +139,20 @@ need to remember complex command sequences.  Simply save an input
 for later reference.
 
 
+@subsubheading Accessibility
+
+Text-based input also makes score-writing possible for users with
+severe physical disabilities.  Dexterity-impaired users who are
+unable to type or control a computer mouse can use
+speech-recognition software to edit LilyPond files.  Even users
+who are totally blind can use screen-reading software to write
+LilyPond files -- an impossible task in graphical-based
+score-writing programs.
+
+
 @subsubheading Mix music and text
 
-@imageFloat{lilypond-book.png,right}
+@imageFloat{lilypond-book,png,right}
 
 Put fragments of music into texts without cutting and pasting
 pictures. Integrate music into LaTeX or HTML seamlessly, or add
@@ -165,7 +183,7 @@ documented in the comprehensive program reference manual.
 @subsubheading Excellent support
 
 LilyPond runs on all popular platforms: Linux, MacOS X, and
-Windows.  LilyPond comes with extensive documetation and hundreds
+Windows.  LilyPond comes with extensive documentation and hundreds
 of example files.  There is an active user community answering
 questions on the Lilypond user mailing list, while the development
 team makes sure that problems are solved quickly.
@@ -196,8 +214,7 @@ algorithms, without tweaks of any kind. It
 handles cross-staff beaming gracefully and puts the system brace
 perfectly around all three staves.
 
-@imageClickable{liszt-wagner-small.png, (click to enlarge),
-liszt-wagner.png, center}
+@exampleImage{liszt-wagner}
 @end ignore
 
 @newsItem
@@ -205,8 +222,7 @@ liszt-wagner.png, center}
 This organ work by J.S. Bach is a fairly typical engraving project
 in Lilypond.
 
-@imageClickable{bach-bwv610-small.png, (click for longer
-excerpt), bach-bwv610.png, center}
+@exampleImage{bach-bwv610}
 @newsEnd
 
 @newsItem
@@ -216,8 +232,7 @@ This example from @emph{Goyescas} by Enrique Granados shows some
 of the more advanced features of typesetting, including kneed
 beams, cross-staff stems, and voice-follow lines.
 
-@imageClickable{granados-small.png, (click to enlarge),
-granados.png, center}
+@exampleImage{granados}
 @newsEnd
 
 @newsItem
@@ -225,8 +240,7 @@ granados.png, center}
 Lilypond also supports various types of ancient notation, such
 as this passage of Gregorian chant.
 
-@imageClickable{ancient-headword-small.png, (click to enlarge),
-ancient-headword.png, center}
+@exampleImage{ancient-headword}
 @newsEnd
 
 @newsItem
@@ -235,8 +249,7 @@ Contemporary composers find Lilypond well-suited to displaying
 unusual notation. Here is an excerpt from Trevor Bača's
 @emph{Čáry}, for unaccompanied bass flute.
 
-@imageClickable{cary-small.png, (click to enlarge),
-cary.png, center}
+@exampleImage{cary}
 @newsEnd
 
 
@@ -247,14 +260,11 @@ code. This is an excerpt of @uref{http://nicolas.sceaux.free.fr/,
 Nicolas Sceaux's} engraving of Handel's @emph{Giulio Cesare}, in
 full score, piano-vocal reduction, and a violin part.
 
-@imageClickable{sesto-small.png, (click to enlarge),
-sesto.png, center}
+@exampleImage{sesto-full}
 
-@imageClickable{sesto-1-small.png, (click to enlarge),
-sesto-1.png, center}
+@exampleImage{sesto-piano}
 
-@imageClickable{sesto-2-small.png, (click to enlarge),
-sesto-2.png, center}
+@exampleImage{sesto-violin}
 
 @newsEnd
 
@@ -267,8 +277,7 @@ suit any instrument that reads from tablature. Here is a passage
 from a Bach Lute Suite, with tablature generated automatically
 from the notes entered for the traditional staff.
 
-@imageClickable{bach-tab-example-small.png, (click to enlarge),
-bach-tab-example.png, center}
+@exampleImage{bach-tab-example}
 @newsEnd
 
 @newsItem
@@ -276,8 +285,7 @@ bach-tab-example.png, center}
 Standard output can be modified heavily. Here someone has created
 an impressive Schenkerian analysis.
 
-@imageClickable{bach-schenker-small.png, (click to enlarge),
-bach-schenker.png, center}
+@exampleImage{bach-schenker}
 @newsEnd
 
 @newsItem
@@ -290,8 +298,7 @@ Lilypond handles this most elegantly. Note also the incipits with
 Vaticana style clefs, the slashed stems indicating plicated notes,
 and the ligature braces above certain groups of notes.
 
-@imageClickable{aucun-snippet-small.png, (click to enlarge),
-aucun-snippet.png, center}
+@exampleImage{aucun-snippet}
 @newsEnd
 
 @newsItem
@@ -299,8 +306,7 @@ aucun-snippet.png, center}
 Lilypond is perfectly suited for educational purposes as well.
 Here is an example of a simple counterpoint exercise.
 
-@imageClickable{theory-small.png, (click to enlarge),
-theory.png, center}
+@exampleImage{theory}
 @newsEnd
 
 @help NEED BETTER POP EXAMPLE!! Also a better theory example would be nice.
@@ -312,8 +318,7 @@ chord names, and fretboards. In this example you see some of the
 predefined fretboard diagrams, but these can be heavily customized
 to suit nearly any situation.
 
-@imageClickable{chart-small.png, (click to enlarge),
-chart.png, center}
+@exampleImage{chart}
 @newsEnd
 
 @help NEED DIFFERENT ORCHESTRAL OR OPERA EXAMPLE?!
@@ -324,8 +329,7 @@ Lilypond is excellent for large projects like operas or works for
 full symphony orchestra, as well. Score, parts, piano reductions,
 and conductors' scores can be produced from the same source files.
 
-@imageClickable{orchestral-small.png, (click to enlarge),
-orchestral.png, center}
+@exampleImage{orchestral}
 @newsEnd
 
 
@@ -439,6 +443,34 @@ scholarships.
 @divEnd
 
 
+@divClass{column-center-bottom}
+@subheading Where now?
+
+Still not convinced?  Read about some of our users'
+@ref{Productions} and sheet music.  If you've already decided to
+try LilyPond, first read about our @ref{Text input}.
+
+FIXME: rewrite for Background.
+@divEnd
+
+
+@node Background
+@unnumberedsec Background
+
+@divClass{column-center-top}
+@subheading Background essay
+
+We have an extensive essay describing computational aesthetics:
+the art of creating beauty with a computer.  FIXME blah blah.
+
+FIXME: simplify the verbosity below.
+
+If you just want a quick introduction to LilyPond, the essay might
+be too much material to read.  If you would like to read it now,
+please progress to @ref{Essay}.
+
+@divEnd
+
 @divClass{column-center-bottom}
 @subheading Where now?
 
@@ -451,8 +483,6 @@ try LilyPond, first read about our @ref{Text input}.
 @node Productions
 @unnumberedsec Productions
 
-@help{more references to publishers who use lilypond}
-
 @divClass{column-left-top}
 @subheading Concerts
 
@@ -491,11 +521,25 @@ New York} (engraving by Nicolas Sceaux).
 @divClass{keep-bullets}
 @itemize
 
+@item
+@uref{http://www.mutopiaproject.org/index.html, Mutopia Project},
+over 1500 pieces of classical sheet music for free download, and
+the main showcase of LilyPond scores.
+
 @item
 @uref{http://www.adoromusicpub.com/, Adoro Music Publishing},
 high-quality scores of sacred music, available for immediate
 download or in traditional paper format.
+
+@item
+@uref{http://theshadylanepublishing.com/, The Shady Lane
+Publishing},
+a @qq{micro musical publishing house} whose goal is to promote a
+new form of musical economy closer to the musicians and music
+lovers.
+
 @end itemize
+
 @divEnd
 
 @divEnd
@@ -514,7 +558,7 @@ If you've already decided to try LilyPond, first read about our
 @unnumberedsec Testimonials
 
 @divClass{testimonial-item}
-@imageFloat{carter-brey.jpg, right}
+@imageFloat{carter-brey,jpg, right}
 @subsubheading @uref{http://nyphil.org/meet/orchestra/index.cfm?page=profile&personNum=7, Carter Brey}, Principal Cellist, New York Philharmonic
 
 @qq{... I've written a couple of encore pieces for solo cello
@@ -525,7 +569,7 @@ look half as sharp as mine!}
 
 
 @divClass{testimonial-item}
-@imageFloat{orm-finnendahl.jpg, left}
+@imageFloat{orm-finnendahl,jpg, left}
 @subsubheading @uref{http://icem-www.folkwang-hochschule.de/~finnendahl/, Orm Finnendahl}, professor of Composition, Musikhochschule Freiburg
 
 @qq{Although I don't know [LilyPond] very well yet, I'm *very*
@@ -537,7 +581,7 @@ and look!}
 
 
 @divClass{testimonial-item}
-@imageFloat{darius-blasband.jpg, right}
+@imageFloat{darius-blasband,jpg, right}
 @subsubheading Darius Blasband, composer (Brussels, Belgium)
 
 @qq{[..after the first orchestra rehearsal] I got numerous
@@ -660,8 +704,7 @@ Read about our @ref{Text input}.
 
 @subheading @qq{Compiling} Music
 
-@imageClickable{nereid-shot-small.png, (click to enlarge),
-nereid-shot.png, right}
+@imageClickable{nereid-shot-small,png, (click to enlarge), nereid-shot,png, right}
 
 LilyPond is a @emph{compiled} system: it is run on a text file
 containing the notes.  The resulting output is viewed on-screen or
@@ -687,26 +730,24 @@ everything at a much more gradual pace.}
 Notes are encoded with letters and numbers.  Special commands are
 entered with backslashes.
 
-@imageFloat{text-input-1-annotate.png,center}
-@imageFloat{text-input-1-output.png,center}
+@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
 languages are available).  LilyPond figures out where to put
 accidentals.
 
-@imageFloat{text-input-2-annotate.png,center}
-@imageFloat{text-input-2-output.png,center}
+@imageFloat{text-input-2-annotate,png,center}
+@imageFloat{text-input-2-output,png,center}
 
 
 @subsubheading Pop music
 
 Put chords and lyrics together to get a lead sheet:
 
-@help{change the lyrics.  svg available}
-
-@imageFloat{text-input-pop-annotate.png,center}
-@imageFloat{text-input-pop-output.png,center}
+@imageFloat{text-input-pop-annotate,png,center}
+@imageFloat{text-input-pop-output,png,center}
 
 
 
@@ -717,21 +758,21 @@ be made from a single input file.  So, changing a note always
 affects both parts and score.  To share the notes, the music is
 assigned to a variable:
 
-@imageFloat{text-input-parts-both-annotate.png,center}
+@imageFloat{text-input-parts-both-annotate,png,center}
 
 
 This variable is then used in a single part (here transposed, with
 condensed multi rests):
 
-@imageFloat{text-input-parts-single-annotate.png,center}
-@imageFloat{text-input-parts-single-output.png,center}
+@imageFloat{text-input-parts-single-annotate,png,center}
+@imageFloat{text-input-parts-single-output,png,center}
 
 
 The same variable is used in the full score (here in concert
 pitch):
 
-@imageFloat{text-input-score-annotate.png,center}
-@imageFloat{text-input-score-output.png,center}
+@imageFloat{text-input-score-annotate,png,center}
+@imageFloat{text-input-score-output,png,center}
 
 
 @subsubheading Beginner Documentation
@@ -772,6 +813,76 @@ users even report that they can enter a full score in LilyPond
 faster than with a piano keyboard or mouse+GUI!  Perhaps you would
 like to review the @ref{Features}, @ref{Examples}, or
 @ref{Freedom} that LilyPond provides, or read about users'
-@ref{Productions} and @ref{Testimonials}.
+@ref{Productions} and @ref{Testimonials}.  In addition, our
+approach to the computational aesthetics of classical engraving is
+explained in our @ref{Background}.  FIXME
+@divEnd
+
+
+@node Alternate input
+@unnumberedsec Alternate input
+
+@divClass{column-center-top}
+@subheading Graphical environment: Denemo
+
+@sourceimage{logo-linux,,,}
+
+FIXME: insert text and a graphic
+
+@divEnd
+
+@divClass{column-center-top}
+@subheading Mixed environment: LilyPondTool
+
+@sourceimage{logo-linux,,,}
+@sourceimage{logo-freebsd,,,}
+@sourceimage{logo-macosx,,,}
+@sourceimage{logo-windows,,,}
+
+
+FIXME: insert text and a graphic
+
+@divEnd
+
+@divClass{column-center-top}
+@subheading Text environment: Emacs and Vim
+
+@sourceimage{logo-linux,,,}
+@sourceimage{logo-freebsd,,,}
+@sourceimage{logo-macosx,,,}
+@sourceimage{logo-windows,,,}
+
+
+FIXME: insert text and a graphic
+
 @divEnd
 
+@divClass{column-center-top}
+@subheading Other
+
+FIXME: insert text and a graphic(s)
+
+@divEnd
+
+@divClass{column-center-bottom}
+@subheading Legalese
+
+@divClass{legal}
+All logos and product images are copyright and trademark
+acknowledged.
+
+@logoLegalLinux
+
+@logoLegalFreeBSD
+
+@logoLegalMacOSX
+
+@logoLegalWindows
+
+@divEnd
+
+@divEnd
+
+
+
+
index 3f2f6862a8ff29b72e6488f4a95f00b95ebb6360..4eb4f41f758b3982672011719b2960c3dcb58c54 100644 (file)
@@ -90,8 +90,8 @@ required for constructing tweaks.
 @item @ref{Translated}:
 translation status for non-English readers.
 
-@item @ref{Old}:
-manuals for older versions.
+@item @ref{All}:
+manuals for older versions and downloadable versions.
 
 @item @ref{Development}:
 manuals for the unstable version.
@@ -117,7 +117,7 @@ License.
 * Changes::                     NEWS.
 * Internals::         Internals.
 * Translated::          Translation.
-* Old::                 Old.
+* All::                 All manuals.
 * FDL::                     Licence.
 @end menu
 
@@ -131,16 +131,57 @@ License.
 @node Learning
 @unnumberedsec Learning
 
+@divClass{column-left-top}
+@subheading Learning manual
+
 This book explains how to begin learning LilyPond, as well as
 explaining some key concepts in easy terms.  You should read these
 chapters in a linear fashion.
 
 There is a paragraph @strong{See also} at the end of each section,
 which contains cross-references to other sections: you should not
-follow these cross-references at first reading; when you have read
-all of the Learning, you may want to read some sections
-again and follow cross-references for further reading.
+follow these cross-references at first reading.  When you have
+read all of the manual, you may want to read some sections again
+and follow those cross-references for more information.
+@divEnd
+
+@divClass{column-right-top}
+@subheading Read it now
+
+@itemize
+
+@item @rlearningnamed{Top,Learning}:
+read this manual in the same format as this one.
+
+@end itemize
+@divEnd
+
+@divClass{column-center-bottom}
+@subheading Other formats
+
+@divClass{keep-bullets}
+@itemize
+
+@item @uref{../learning/index.html, Learning (split HTML)}:
+the manual is split between many HTML pages.
+@emph{(small download for each page)}
+
+@item @uref{../learning-big-page.html, Learning (big HTML)}:
+read this manual as one huge HTML page.
+@emph{(large single download, around 10? Mb)}
+
+@item @uref{../learning.pdf, learning.pdf}:
+download as a PDF file.
+@emph{(large single download, 2.8 Mb)}
 
+@item @uref{FIXME, learning.info}:
+GNU info format for documentation.  FIXME, link broken.
+
+@end itemize
+@divEnd
+@divEnd
+
+@ignore
 @itemize
 
 @item
@@ -182,6 +223,7 @@ material for advanced tweaks; many users never touch Scheme at
 all.
 
 @end itemize
+@end ignore
 
 
 @node Glossary
@@ -210,6 +252,7 @@ notation.
 basic material covered in the Learning and is familiar with
 the English musical terms presented in the Musical Glossary.}
 
+@ignore
 @itemize
 
 @item
@@ -273,6 +316,7 @@ an index of all LilyPond @code{\commands}.
 a complete index.
 
 @end itemize
+@end ignore
 
 
 @node Usage
@@ -281,6 +325,7 @@ a complete index.
 This book explains how to execute the programs and how to integrate
 LilyPond notation with other programs.
 
+@ignore
 @itemize
 
 @item
@@ -312,6 +357,7 @@ supplied with the LilyPond package, and convert a variety of music
 formats to the @code{.ly} format.
 
 @end itemize
+@end ignore
 
 
 @node Snippets
@@ -403,11 +449,35 @@ have clickable links.
 blah
 
 
-@node Old
-@unnumberedsec Old
+@node All
+@unnumberedsec All
+
+@divClass{column-left-top}
+@subheading Downloadable versions
 
-Documentation for previous stable versions:
+FIXME: compare tarball vs. zip size, ask about windows users
+dealing with tarballs (both gz and bz2), etc.
 
+@divClass{keep-bullets}
+@itemize
+
+@item html-split zip
+
+@item html-big zip
+
+@item pdf zip
+
+@item info zip maybe?!?!
+
+@end itemize
+
+@divEnd
+@divEnd
+
+@divClass{column-right-top}
+@subheading Previous stable versions
+
+@divClass{keep-bullets}
 @itemize
 
 @item @uref{http://lilypond.org/doc/v2.12/Documentation/,
@@ -423,6 +493,9 @@ LilyPond 2.8 Documentation}
 
 @end itemize
 
+@divEnd
+@divEnd
+
 
 @node FDL
 @unnumberedsec FDL
index 6cb33d8ff2df21b648edc825dd0e0d45daf75bff..6cc6d51db2a3e37555c8fae288ff9799e3190297 100644 (file)
@@ -127,6 +127,8 @@ in <a class="title" href="snippets.pdf">PDF</a>)
         <li><a class="title"  href="DEDICATION.html">Dedication</a>
         <br>(by Jan and Han-Wen)</li>
 
+<li><a class="title" href="general/index.html">New website</a>
+<br>(total hack; to be replaced ASAP)</li>
          </ul>
          </td>
         </tr>
index 8be381a9b4c3bbbe08eacf9702d2d94ab23d2a87..e9efeed4dab3eab1bcf3b4f3d4df3ec129753248 100644 (file)
@@ -7,7 +7,7 @@
     version that you are working on.  See TRANSLATION for details.
 @end ignore
 
-@c \version "2.12.0"
+@c \version "2.13.4"
 
 @ignore
 Tutorial guidelines:  (different from policy.txt!)
index ca2e60ca4ed4f2c862d22a3cc80c58058e2295af..1f32d74b3d84a6ea67b52d9bf5333a461d0a3aa8 100644 (file)
@@ -1,5 +1,5 @@
 %% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
   texidocja = "
-これは簡単な弦楽四重奏のためのテンプレートです。これは拍子記号と調号のために 
+これは簡単な弦楽四重奏のためのテンプレートです。これは拍子記号と調号のために
 @code{@bs{}global} セクションを使っています。
 "
index b8acda1cedfb33e1c15497ee513518f998e36792..0c492ef195a386af4ee3378ff00dbca4af9714ac 100644 (file)
@@ -1,12 +1,12 @@
 %% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
   texidocja = "
 \"弦楽四重奏テンプレート\" は適切な弦楽四重奏の楽譜を作り出しますが、個々の@c
-パート譜を譜刻する必要がある場合はどうでしょうか?今度の新しいテンプレートは 
+パート譜を譜刻する必要がある場合はどうでしょうか?今度の新しいテンプレートは
 @code{@bs{}tag} 機能を用いて容易に楽曲を個々のパートに分ける方法を示しています。
 
 このテンプレートは別々のファイルに分ける必要があります。ファイル名は各ファイル@c
 の開始部分のコメントの中に記述されています。@code{piece.ly} はすべての音楽定義@c
-を保持しています。他のファイル - @code{score.ly}, @code{vn1.ly}, @code{vn2.ly}, 
+を保持しています。他のファイル - @code{score.ly}, @code{vn1.ly}, @code{vn2.ly},
 @code{vla.ly} それに @code{vlc.ly} - は対応するパートを作り出します。
 
 
index 8355a1353b0676320691cb4879da917f7e361eb4..f48199bd55335b672d6cc0145419616fedb6f8a5 100644 (file)
@@ -2,6 +2,6 @@
   texidocja = "
 このテンプレートは、\"合唱テンプレート\"で示された標準の SATB ボーカル譜に自動@c
 ピアノ譜を付け加えています。これは LilyPond の強みの 1 つを示しています - 音楽@c
-定義を何回も使用することができます。ボーカルの音符 (例えば、@code{tenorMusic} 
+定義を何回も使用することができます。ボーカルの音符 (例えば、@code{tenorMusic}
 の音符) に変更が加えられた場合、その変更はピアノ譜にも適用されます。
 "
index d51ae35e4ca5f994c78fcfb11e73643ad59c9792..661a2fc33202cbcc0fa134ae5ecdcf1fa929a72d 100644 (file)
@@ -1,5 +1,5 @@
 %% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
   texidocja = "
-このテンプレートは基本的に単純な \"合唱\" テンプレートと同じですが、歌詞が 
+このテンプレートは基本的に単純な \"合唱\" テンプレートと同じですが、歌詞が
 @code{alignAboveContext} と @code{alignBelowContext} を用いて配置されています。
 "
index 2425c3df7d416855989b84283a206bfc635e933f..f900e5e27b319ebe8520b4ef1e5b48585da530a9 100644 (file)
 @documentlanguage en
 
 @include macros.itexi
+@c  This produces the unified index
+@syncodeindex fn cp
+@syncodeindex vr cp
 
 @afourpaper
 
-
 @c don't remove this comment.
 @ignore
 @omfcreator Han-Wen Nienhuys, Jan Nieuwenhuizen and Graham Percival
 @omflanguage English
 @end ignore
 
-@ifnottex
-@node Top
-@top GNU LilyPond --- Learning Manual
-@end ifnottex
 
+@copying
+Copyright @copyright{} 1999, 2000, 2001, 2002, 2003, 2004, 2005,
+2006, 2007, 2008, 2009 by the authors.
 
-@ifhtml
-@ifclear bigpage
-This document is also available as a
-@uref{source/Documentation/learning.pdf,PDF} and as
-@uref{source/Documentation/learning-big-page.html,one big page}.
-@end ifclear
-@ifset bigpage
-This document is also available as a
-@uref{source/Documentation/learning.pdf,PDF} and as
-@uref{source/Documentation/learning/index.html,HTML indexed multiple pages}.
-@end ifset
-@end ifhtml
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end quotation
+@end copying
 
+@macro introText
+@cartouche
+This file provides an introduction to GNU LilyPond version
+@version{}.  For more information about how this fits with the
+other documentation, see @rgeneral{Manuals}.
+@end cartouche
+@end macro
 
-@c  This produces the unified index
-@syncodeindex fn cp
-@syncodeindex vr cp
 
+@c TITLE PAGE
+@ifnottex
+@node Top
+@top GNU LilyPond --- Learning Manual
+@end ifnottex
 
 @finalout
 
@@ -57,73 +64,29 @@ This document is also available as a
 @titlefont{Learning Manual}
 @author The LilyPond development team
 
+@vskip 100pt
 
-Copyright @copyright{} 1999--2009 by the authors
+@introText{}
 
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
+@vskip 0pt plus 1filll
+@c @vskip 20pt
 
-@vskip 20pt
+@insertcopying{}
 
 For LilyPond version @version{}
 @end titlepage
 
-@copying
-Copyright @copyright{} 1999--2009 by the authors
-
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
-@end copying
-
-@ifnottex
-This file documents GNU LilyPond for beginners.
-
-Copyright 1999--2009 by the authors
 
-@quotation
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1
-or any later version published by the Free Software Foundation;
-with no Invariant Sections.
-A copy of the license is included in the section entitled ``GNU
-Free Documentation License''.
-@end quotation
-@end ifnottex
+@c TOC -- non-tex
 
 @ifnottex
-This is the Learning Manual (LM) for GNU LilyPond version @version{}.
-For more information about how this fits with the other
-documentation, see
-FIXME FIXME FIXME 
-@c @ref{About the documentation}.
-
-@cindex web site
-@cindex URL
+@introText{}
 
-More information can be found at
-@uref{http://@/www@/.lilypond@/.org/}.  The website contains on-line copies
-of this and other documentation.
-
-@c * Preface::                        Preface.
-@c * Introduction::                   What, Why, How.
 @menu
-* Generating output::              Begin here.
+* Introduction::                   Begin here.
 * Common notation::                A tutorial introduction.
 * Fundamental concepts::           Basic concepts required for reading the rest of this manual.
 * Tweaking output::                Introduction to modifying output.
-* Working on LilyPond projects::   Discusses real-life usage.
 
 Appendices
 
@@ -132,23 +95,40 @@ Appendices
 * GNU Free Documentation License:: License of this document.
 * LilyPond index::
 @end menu
+
+
+@ifhtml
+@ifclear bigpage
+This document is also available as a
+@uref{source/Documentation/learning.pdf,PDF} and as
+@uref{source/Documentation/learning-big-page.html,one big page}.
+@end ifclear
+@ifset bigpage
+This document is also available as a
+@uref{source/Documentation/learning.pdf,PDF} and as
+@uref{source/Documentation/learning/index.html,HTML indexed multiple pages}.
+@end ifset
+@end ifhtml
+
 @end ifnottex
 
+
+@c TOC - tex
 @contents
 
 
-@c @include learning/preface.itely
-@c @include learning/introduction.itely
-@include learning/generating.itely
-@include learning/tutorial.itely
+@c INCLUDES
+
+@include learning/introduction.itely
+@include learning/common-notation.itely
 @include learning/fundamental.itely
 @include learning/tweaks.itely
-@include learning/working.itely
 
 @include learning/templates.itely
 @include learning/scheme-tutorial.itely
 @include fdl.itexi
 
+
 @node LilyPond index
 @appendix LilyPond index
 
diff --git a/Documentation/learning/common-notation.itely b/Documentation/learning/common-notation.itely
new file mode 100644 (file)
index 0000000..ac86a64
--- /dev/null
@@ -0,0 +1,1400 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+
+@ignore
+    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+@c \version "2.12.0"
+
+@ignore
+Tutorial guidelines:  (different from policy.txt!)
+- unless you have a really good reason, use either
+    @lilypond[verbatim,quote]
+  or
+    @lilypond[verbatim,quote,relative=2]
+
+  Don't use any other relative=X commands.
+
+- use "aes" and "ees" instead of "as" and "es".  I know it's not
+  correct Dutch naming, but let's not confuse people with this
+  until we get to the Basic notation chapter.
+
+- Add "Music Glossary: @rglos{foo}" to the *top* of the relevant
+  portions of the tutorial.
+
+@end ignore
+
+
+@node Common notation
+@chapter Common notation
+
+This chapter explains how to create beautiful printed music
+containing common musical notation, following the material in
+@ref{Introduction}.
+
+@menu
+* Single staff notation::
+* Multiple notes at once::
+* Songs::
+* Final touches::
+@end menu
+
+
+@node Single staff notation
+@section Single staff notation
+
+This section introduces common notation that is used for one voice
+on one staff.
+
+@menu
+* Accidentals and key signatures::
+* Ties and slurs::
+* Articulation and dynamics::
+* Adding text::
+* Automatic and manual beams::
+* Advanced rhythmic commands::
+@end menu
+
+
+@node Accidentals and key signatures
+@subsection Accidentals and key signatures
+
+@subheading Accidentals
+
+@cindex accidentals
+@cindex accidentals and key signatures
+@cindex sharp
+@cindex double sharp
+@cindex sharp, double
+@cindex flat
+@cindex double flat
+@cindex flat, double
+
+@funindex es
+@funindex is
+@funindex eses
+@funindex isis
+
+Music Glossary: @rglos{sharp}, @rglos{flat}, @rglos{double sharp},
+@rglos{double flat}, @rglos{accidental}.
+
+A @notation{sharp} pitch is made by adding @code{is} to the name,
+and a @notation{flat} pitch by adding @code{es}.  As you might
+expect, a @notation{double sharp} or @notation{double flat} is
+made by adding @code{isis} or @code{eses}.  This syntax is derived
+from note naming conventions in Nordic and Germanic languages,
+like German and Dutch.  To use other names for
+@notation{accidentals}, see @ruser{Note names in other languages}.
+
+@lilypond[verbatim,quote,relative=2]
+cis1 ees fisis, aeses
+@end lilypond
+
+@cindex key signature, setting
+@subheading Key signatures
+
+@cindex key signature
+@cindex major
+@cindex minor
+@cindex accidentals and key signature
+@cindex content vs. layout
+@cindex layout vs. content
+
+@funindex \key
+@funindex key
+@funindex \major
+@funindex major
+@funindex \minor
+@funindex minor
+
+Music Glossary: @rglos{key signature}, @rglos{major},
+@rglos{minor}.
+
+The @notation{key signature} is set with the command @code{\key}
+followed by a pitch and @code{\major} or @code{\minor}.
+
+@lilypond[verbatim,quote,relative=2]
+\key d \major
+a1
+\key c \minor
+a
+@end lilypond
+
+@smallspace
+
+@subheading Warning: key signatures and pitches
+
+Music Glossary: @rglos{accidental}, @rglos{key signature},
+@rglos{pitch}, @rglos{flat}, @rglos{natural}, @rglos{sharp},
+@rglos{transposition}.
+
+To determine whether to print an @notation{accidental}, LilyPond
+examines the pitches and the @notation{key signature}.  The key
+signature only affects the @emph{printed} accidentals, not the
+note's @notation{pitch}!  This is a feature that often causes
+confusion to newcomers, so let us explain it in more detail.
+
+LilyPond makes a sharp distinction between musical content and
+layout.  The alteration (@notation{flat}, @notation{natural sign} or
+@notation{sharp}) of a note is part of the pitch, and is therefore
+musical content.  Whether an accidental (a @emph{printed} flat,
+natural or sharp sign) is printed in front of the corresponding
+note is a question of layout.  Layout is something that follows
+rules, so accidentals are printed automatically according to those
+rules.  The pitches in your music are works of art, so they will
+not be added automatically, and you must enter what you want to
+hear.
+
+In this example:
+
+@lilypond[verbatim,quote,relative=2]
+\key d \major
+d cis fis
+@end lilypond
+
+@noindent
+No note has a printed accidental, but you must still add
+@code{is} and type @code{cis} and @code{fis} in the input file.
+
+The code @code{b} does not mean @qq{print a black dot just on
+the middle line of the staff.}  Rather, it means @qq{there is a
+note with pitch B-natural.}  In the key of A-flat major, it
+@emph{does} get an accidental:
+
+@lilypond[verbatim,quote,relative=2]
+\key aes \major
+b
+@end lilypond
+
+Adding all alterations explicitly might require a little more
+effort when typing, but the advantage is that
+@notation{transposing} is easier, and accidentals can be printed
+according to different conventions.  For some examples of how
+accidentals can be printed according to different rules, see
+@ruser{Automatic accidentals}.
+
+
+@seealso
+Notation Reference: @ruser{Note names in other languages},
+@ruser{Accidentals}, @ruser{Automatic accidentals},
+@ruser{Key signature}.
+
+Music Glossary: @rglos{Pitch names}.
+
+
+@node Ties and slurs
+@subsection Ties and slurs
+
+@cindex tie
+@cindex slur
+@cindex slur, phrasing
+@cindex phrasing slur
+
+@funindex ~
+@funindex ( ... )
+@funindex \( ... \)
+
+@subheading Ties
+
+
+Music Glossary: @rglos{tie}.
+
+A @notation{tie} is created by appending a tilde @code{~} to the
+first note being tied.
+
+@lilypond[verbatim,quote,relative=2]
+g4~ g c2~
+c4 ~ c8 a8 ~ a2
+@end lilypond
+
+@subheading Slurs
+
+
+Music Glossary: @rglos{slur}.
+
+A @notation{slur} is a curve drawn across many notes.  The
+starting note and ending note are marked with @code{(} and
+@code{)} respectively.
+
+@lilypond[verbatim,quote,relative=2]
+d4( c16) cis( d e c cis d) e( d4)
+@end lilypond
+
+@subheading Phrasing slurs
+
+Music Glossary: @rglos{slur}, @rglos{phrasing}.
+
+Slurs to indicate longer @notation{phrasing} can be entered with
+@code{\(} and @code{\)}.  You can have both @notation{slurs}
+and phrasing slurs at the same time, but you cannot have
+simultaneous slurs or simultaneous phrasing slurs.
+
+@lilypond[verbatim,quote,relative=2]
+a8(\( ais b c) cis2 b'2 a4 cis,\)
+@end lilypond
+
+@smallspace
+
+@cindex slurs versus ties
+@subheading Warnings: slurs vs. ties
+
+Music Glossary: @rglos{articulation}, @rglos{slur}, @rglos{tie}.
+
+A @notation{slur} looks like a @notation{tie}, but it has a
+different meaning.  A tie simply makes the first note longer, and
+can only be used on pairs of notes with the same pitch.  Slurs
+indicate the @notation{articulation} of notes, and can be used on
+larger groups of notes.  Slurs and ties can be nested.
+
+@lilypond[verbatim,quote,relative=2]
+c2~( c8 fis fis4 ~ fis2 g2)
+@end lilypond
+
+
+@seealso
+Notation Reference: @ruser{Ties}, @ruser{Slurs},
+@ruser{Phrasing slurs}.
+
+
+@node Articulation and dynamics
+@subsection Articulation and dynamics
+
+
+@subheading Articulations
+
+@cindex articulation
+@cindex accent
+@cindex staccato
+
+Music Glossary: @rglos{articulation}.
+
+Common @notation{articulations} can be added to a note using a
+dash @code{-} and a single character:
+
+@lilypond[verbatim,quote,relative=2]
+c-. c-- c-> c-^ c-+ c-_
+@end lilypond
+
+@subheading Fingerings
+
+@cindex fingering
+
+@funindex ^
+@funindex _
+
+Music Glossary: @rglos{fingering}.
+
+Similarly, @notation{fingering} indications can be added to a note
+using a dash (@code{-}) and the digit to be printed:
+
+@lilypond[verbatim,quote,relative=2]
+c-3 e-5 b-2 a-1
+@end lilypond
+
+Articulations and fingerings are usually placed automatically, but
+you can specify a direction by replacing the dash (@code{-}) with
+@code{^} (up) or @code{_} (down).  You can also use multiple
+articulations on the same note.  However, in most cases it is best
+to let LilyPond determine the articulation directions.
+
+@lilypond[verbatim,quote,relative=2]
+c_-^1 d^. f^4_2-> e^-_+
+@end lilypond
+
+@subheading Dynamics
+
+@cindex dynamics
+@cindex decrescendo
+@cindex crescendo
+
+@funindex \f
+@funindex \ff
+@funindex \mp
+@funindex \p
+@funindex \mf
+@funindex \pp
+@funindex \<
+@funindex <
+@funindex \>
+@funindex >
+@funindex \!
+@funindex !
+
+Music Glossary: @rglos{dynamics}, @rglos{crescendo},
+@rglos{decrescendo}.
+
+@notation{Dynamic} signs are made by adding the markings (with a
+backslash) to the note:
+
+@lilypond[verbatim,quote,relative=2]
+c\ff c\mf c\p c\pp
+@end lilypond
+
+
+@notation{Crescendi} and @notation{decrescendi} are started with
+the commands @code{\<} and @code{\>}.  The next dynamics sign, for
+example @code{\f}, will end the (de)crescendo, or the command
+@code{\!} can be used:
+
+@lilypond[verbatim,quote,relative=2]
+c2\< c2\ff\> c2 c2\!
+@end lilypond
+
+
+@seealso
+Notation Reference: @ruser{Articulations and ornamentations},
+@ruser{Fingering instructions}, @ruser{Dynamics}.
+
+
+@node Adding text
+@subsection Adding text
+
+@cindex text, adding
+@cindex adding text
+@cindex markup
+
+@funindex \markup
+@funindex markup
+
+Text may be added to your scores:
+
+@lilypond[verbatim,quote,relative=2]
+c1^"espr" a_"legato"
+@end lilypond
+
+Extra formatting may be added with the @code{\markup} command:
+
+@lilypond[verbatim,quote,relative=2]
+c1^\markup{ \bold espr}
+a1_\markup{
+  \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p
+}
+@end lilypond
+
+
+@seealso
+Notation Reference: @ruser{Writing text}.
+
+
+@node Automatic and manual beams
+@subsection Automatic and manual beams
+
+@cindex beaming
+@cindex automatic beams
+@cindex manual beams
+@cindex beams, automatic
+@cindex beams, manual
+@cindex beams, by hand
+
+@funindex [ ... ]
+@funindex [
+@funindex ]
+@funindex \autoBeamOff
+@funindex autoBeamOff
+@funindex \autoBeamOn
+@funindex autoBeamOn
+
+Music Glossary: @rglos{beam}.
+
+All @notation{beams} are drawn automatically:
+
+@lilypond[verbatim,quote,relative=2]
+a8 ais d ees r d c16 b a8
+@end lilypond
+
+If you do not like the automatic beams, they may be overridden
+manually.  To correct just an occasional beam mark the first note
+to be beamed with @code{[} and the last one with @code{]}.
+
+@lilypond[verbatim,quote,relative=2]
+a8[ ais] d[ ees r d] a b
+@end lilypond
+
+If you want to turn off automatic beaming entirely or for an
+extended section of music, use the command @code{\autoBeamOff}
+to turn off automatic beaming and @code{\autoBeamOn} to turn it
+on again.
+
+@lilypond[verbatim,quote,relative=2]
+\autoBeamOff
+a8 c b4 d8. c16 b4
+\autoBeamOn
+a8 c b4 d8. c16 b4
+@end lilypond
+
+
+@seealso
+Notation Reference: @ruser{Automatic beams}, @ruser{Manual beams}.
+
+
+@node Advanced rhythmic commands
+@subsection Advanced rhythmic commands
+
+@subheading Partial measure
+
+@cindex pickup
+@cindex anacrusis
+@cindex partial measure
+
+@funindex \partial
+@funindex partial
+
+Music Glossary: @rglos{anacrusis}.
+
+A pickup (or @notation{anacrusis}) is entered with the keyword
+@code{\partial}.  It is followed by a duration: @code{\partial 4}
+is a quarter note pickup and @code{\partial 8} an eighth note.
+
+@lilypond[verbatim,quote,relative=2]
+\partial 8
+f8 c2 d
+@end lilypond
+
+@subheading Tuplets
+
+@cindex tuplets
+@cindex triplets
+
+@funindex \times
+@funindex times
+
+Music Glossary: @rglos{note value}, @rglos{triplet}.
+
+@notation{Tuplets} are made with the @code{\times} keyword.  It
+takes two arguments: a fraction and a piece of music.  The
+duration of the piece of music is multiplied by the fraction.
+Triplets make notes occupy 2/3 of their notated duration, so a
+@notation{triplet} has 2/3 as its fraction
+
+@lilypond[verbatim,quote,relative=2]
+\times 2/3 { f8 g a }
+\times 2/3 { c r c }
+\times 2/3 { f,8 g16[ a g a] }
+\times 2/3 { d4 a8 }
+@end lilypond
+
+@subheading Grace notes
+
+@cindex grace notes
+@cindex acciaccatura
+@cindex appoggiatura
+
+@funindex \grace
+@funindex grace
+@funindex \acciaccatura
+@funindex acciaccatura
+@funindex \appoggiatura
+@funindex acciaccatura
+
+Music Glossary: @rglos{grace notes}, @rglos{acciaccatura},
+@rglos{appoggiatura}.
+
+@notation{Grace notes} are created with the @code{\grace} command,
+although they can also be created by prefixing a music expression
+with the keyword @code{\appoggiatura} or @code{\acciaccatura}:
+
+@lilypond[verbatim,quote,relative=2]
+c2 \grace { a32[ b] } c2
+c2 \appoggiatura b16 c2
+c2 \acciaccatura b16 c2
+@end lilypond
+
+
+@seealso
+Notation Reference: @ruser{Grace notes}, @ruser{Tuplets},
+@ruser{Upbeats}.
+
+
+@node Multiple notes at once
+@section Multiple notes at once
+
+This section introduces having more than one note at the same
+time: multiple instruments, multiple staves for a single
+instrument (i.e. piano), and chords.
+
+Polyphony in music refers to having more than one voice occurring
+in a piece of music.  Polyphony in LilyPond refers to having more
+than one voice on the same staff.
+
+@menu
+* Music expressions explained::
+* Multiple staves::
+* Staff groups::
+* Combining notes into chords::
+* Single staff polyphony::
+@end menu
+
+
+@node Music expressions explained
+@subsection Music expressions explained
+
+@cindex music expression
+@cindex expression, music
+@cindex compound music expression
+@cindex music expression, compound
+
+In LilyPond input files, music is represented by @emph{music
+expressions}.  A single note is a music expression:
+
+@lilypond[verbatim,quote,relative=2]
+a4
+@end lilypond
+
+Enclosing a note in braces creates a @emph{compound music
+expression}.  Here we have created a compound music expression
+with two notes:
+
+@lilypond[verbatim,quote,relative=2]
+{ a4 g4 }
+@end lilypond
+
+Putting a group of music expressions (e.g. notes) in braces means
+that they are in sequence (i.e. each one follows the previous
+one).  The result is another music expression:
+
+@lilypond[verbatim,quote,relative=2]
+{ { a4 g } f g }
+@end lilypond
+
+@subheading Analogy: mathematical expressions
+
+This mechanism is similar to mathematical formulas: a big formula
+is created by composing small formulas.  Such formulas are called
+expressions, and they can contain other expressions, so you can
+make arbitrarily complex and large expressions.  For example,
+
+@example
+1
+
+1 + 2
+
+(1 + 2) * 3
+
+((1 + 2) * 3) / (4 * 5)
+@end example
+
+This is a sequence of expressions, where each expression is
+contained in the next (larger) one.  The simplest expressions are
+numbers, and larger ones are made by combining expressions with
+operators (like @code{+}, @code{*} and @code{/}) and parentheses.
+Like mathematical expressions, music expressions can be nested
+arbitrarily deep, which is necessary for complex music like
+polyphonic scores.
+
+
+@subheading Simultaneous music expressions: multiple staves
+
+@cindex multiple staves
+@cindex staves, multiple
+@cindex polyphony
+@cindex combining expressions in parallel
+@cindex parallel expressions
+@cindex expressions, parallel
+@cindex relative notes and simultaneous music
+@cindex relative notes and parallel expressions
+@cindex simultaneous music and relative notes
+@cindex parallel expressions and relative notes
+
+@funindex <<
+@funindex >>
+@funindex << ... >>
+
+Music Glossary: @rglos{polyphony}.
+
+This technique is useful for @notation{polyphonic} music.  To
+enter music with more voices or more staves, we combine
+expressions in parallel.  To indicate that two voices should play
+at the same time, simply enter a simultaneous combination of music
+expressions.  A @q{simultaneous} music expression is formed by
+enclosing expressions inside @code{<<} and @code{>>}.  In the
+following example, three sequences (all containing two separate
+notes) are combined simultaneously:
+
+@lilypond[verbatim,quote]
+\relative c'' {
+  <<
+    { a4 g }
+    { f e }
+    { d b }
+  >>
+}
+@end lilypond
+
+Note that we have indented each level of the input with a
+different amount of space.  LilyPond does not care how much (or
+little) space there is at the beginning of a line, but indenting
+LilyPond code like this makes it much easier for humans to read.
+
+@warning{each note is relative to the previous note in
+the input, not relative to the @code{c''} in the initial
+@code{@bs{}relative} command.}
+
+
+@subheading Simultaneous music expressions: single staff
+
+To determine the number of staves in a piece, LilyPond looks at
+the beginning of the first expression.  If there is a single note,
+there is one staff; if there is a simultaneous expression, there
+is more than one staff.  The following example shows a complex
+expression, but as it begins with a single note it will be set
+out on a single staff.
+
+@lilypond[verbatim,quote]
+\relative c'' {
+  c2 <<c e>>
+  << { e f } { c <<b d>> } >>
+}
+@end lilypond
+
+@node Multiple staves
+@subsection Multiple staves
+
+@cindex multiple staves
+@cindex staves, multiple
+@cindex context
+@cindex context, notation
+@cindex notation context
+
+@funindex \new Staff
+@funindex new Staff
+@funindex Staff
+@funindex \new
+@funindex new
+@funindex Score
+@funindex Voice
+@funindex Lyrics
+@funindex ChordNames
+
+LilyPond input files are constructed out of music expressions, as
+we saw in @ref{Music expressions explained}.  If the score begins
+with simultaneous music expressions, LilyPond creates multiples
+staves.  However, it is easier to see what happens if we create
+each staff explicitly.
+
+To print more than one staff, each piece of music that makes up a
+staff is marked by adding @code{\new Staff} before it.  These
+@code{Staff} elements are then combined in parallel with @code{<<}
+and @code{>>}:
+
+@lilypond[verbatim,quote]
+\relative c'' {
+  <<
+    \new Staff { \clef treble c }
+    \new Staff { \clef bass c,, }
+  >>
+}
+@end lilypond
+
+The command @code{\new} introduces a @q{notation context.}  A
+notation context is an environment in which musical events (like
+notes or @code{\clef} commands) are interpreted.  For simple
+pieces, such notation contexts are created automatically.  For
+more complex pieces, it is best to mark contexts explicitly.
+
+There are several types of contexts.  @code{Score}, @code{Staff},
+and @code{Voice} handle melodic notation, while @code{Lyrics} sets
+lyric texts and @code{ChordNames} prints chord names.
+
+In terms of syntax, prepending @code{\new} to a music expression
+creates a bigger music expression.  In this way it resembles the
+minus sign in mathematics.  The formula @math{(4+5)} is an
+expression, so @math{-(4+5)} is a bigger expression.
+
+Time signatures entered in one staff affect all other staves by
+default.  On the other hand, the key signature of one staff does
+@emph{not} affect other staves.  This different default behavior
+is because scores with transposing instruments are more common
+than polyrhythmic scores.
+
+@lilypond[verbatim,quote]
+\relative c'' {
+  <<
+    \new Staff { \clef treble \key d \major \time 3/4 c }
+    \new Staff { \clef bass c,, }
+  >>
+}
+@end lilypond
+
+
+
+
+@node Staff groups
+@subsection Staff groups
+
+@cindex piano staff
+@cindex staff, piano
+@cindex choir staff
+@cindex staff, choir
+@cindex grand staff
+@cindex staff, grand
+@cindex staff group
+
+@funindex PianoStaff
+@funindex GrandStaff
+@funindex ChoirStaff
+
+Music Glossary: @rglos{brace}.
+
+Piano music is typeset in two staves connected by a
+@notation{brace}.
+Printing such a staff is similar to the polyphonic example in
+@ref{Multiple staves}.  However, now this entire expression is
+inserted inside a @code{PianoStaff}:
+
+@example
+\new PianoStaff <<
+  \new Staff @dots{}
+  \new Staff @dots{}
+>>
+@end example
+
+Here is a small example:
+
+@lilypond[verbatim,quote]
+\relative c'' {
+  \new PianoStaff <<
+    \new Staff { \time 2/4 c4 e g g, }
+    \new Staff { \clef bass c,, c' e c }
+  >>
+}
+@end lilypond
+
+Other staff groupings are introduced with @code{\new GrandStaff},
+suitable for orchestral scores, and @w{@code{\new ChoirStaff}},
+suitable for vocal scores.  These staff groups each form another
+type of context, one that generates the brace at the left end of
+every system and also controls the extent of bar lines.
+
+
+@seealso
+Notation Reference: @ruser{Keyboard and other multi-staff
+instruments},
+@ruser{Displaying staves}.
+
+
+@node Combining notes into chords
+@subsection Combining notes into chords
+
+@cindex chords
+@cindex note durations in chords
+
+@funindex <
+@funindex >
+@funindex < ... >
+
+Music Glossary: @rglos{chord}.
+
+We saw earlier how notes can be combined into @notation{chords} by
+indicating they are simultaneous by enclosing them in double angle
+brackets.  However, the normal way of indicating a chord is to
+surround the pitches with @emph{single} angle brackets.  Note that
+all the notes in a chord must have the same duration, and that the
+duration is placed after the closing bracket.
+
+@lilypond[verbatim,quote,relative=2]
+r4 <c e g>4 <c f a>2
+@end lilypond
+
+Think of chords as almost equivalent to single notes:
+almost everything you can attach to a single note can be attached
+to a chord, and everything must go @emph{outside} the angle
+brackets.  For example, you can combine markings like beams and
+ties with chords.  They must be placed outside the angle brackets.
+
+@lilypond[verbatim,quote,relative=2]
+r4 <c e g>8[ <c f a>]~ <c f a>2
+r4 <c e g>8( <c e g>\> <c e g>4 <c f a>\!)
+@end lilypond
+
+
+@node Single staff polyphony
+@subsection Single staff polyphony
+
+@cindex polyphony
+@cindex multiple voices
+@cindex voices, more on one staff
+@cindex single staff polyphony
+@cindex spacer rest
+@cindex rest, spacer
+
+@funindex << ... \\ ... >>
+@funindex <<
+@funindex \\
+@funindex >>
+
+Polyphonic music in lilypond, while not difficult, uses concepts
+that we haven't discussed yet, so we're not going to introduce
+them here. Instead, the following sections introduce these concepts
+and explain them thoroughly.
+
+@seealso
+Learning Manual: @ref{Voices contain music}.
+
+Notation Reference: @ruser{Simultaneous notes}.
+
+@node Songs
+@section Songs
+
+This section introduces vocal music and simple song sheets.
+
+@menu
+* Setting simple songs::
+* Aligning lyrics to a melody::
+* Lyrics to multiple staves::
+@end menu
+
+
+@node Setting simple songs
+@subsection Setting simple songs
+
+@cindex lyrics
+@cindex songs
+
+@funindex \addlyrics
+@funindex addlyrics
+
+Music Glossary: @rglos{lyrics}.
+
+Here is the start of the melody to a nursery
+rhyme, @notation{Girls and boys come out to play}:
+
+@lilypond[verbatim,quote]
+\relative c'' {
+  \key g \major
+  \time 6/8
+  d4 b8 c4 a8 d4 b8 g4
+}
+@end lilypond
+
+The @notation{lyrics} can be set to these notes, combining both
+with the @code{\addlyrics} keyword.  Lyrics are entered by
+separating each syllable with a space.
+
+@lilypond[verbatim,quote]
+<<
+  \relative c'' {
+    \key g \major
+    \time 6/8
+    d4 b8 c4 a8 d4 b8 g4
+  }
+  \addlyrics {
+    Girls and boys come out to play,
+  }
+>>
+@end lilypond
+
+Note the curly brackets delimiting both the music and the lyrics.
+It is essential that the final syllable is separated from the
+terminating curly bracket by a space or a newline, or it will be
+assumed to be part of the syllable, giving rise to an obscure
+error, see @rprogram{Apparent error in ../ly/init.ly}.
+
+Note also the double angle brackets @w{@code{<< ... >>}} around the
+whole piece to show that the music and lyrics are to occur at the
+same time.
+
+@node Aligning lyrics to a melody
+@subsection Aligning lyrics to a melody
+
+@cindex melisma
+@cindex extender line
+@cindex hyphens
+@cindex underscore
+@cindex lyrics, aligning
+@cindex aligning lyrics
+@cindex lyrics, multi-syllable words
+@cindex words with multiple syllables in lyrics
+
+Music Glossary: @rglos{melisma}, @rglos{extender line}.
+
+The next line in the nursery rhyme is @notation{The moon doth
+shine as bright as day}.  Let's extend it:
+
+@lilypond[verbatim,quote]
+<<
+  \relative c'' {
+    \key g \major
+    \time 6/8
+    d4 b8 c4 a8 d4 b8 g4
+    g8 a4 b8 c b a d4 b8 g4.
+  }
+  \addlyrics {
+    Girls and boys come out to play,
+    The moon doth shine as bright as day;
+  }
+>>
+@end lilypond
+
+We see the extra lyrics do not align properly with the notes.  The
+word @notation{shine} should be sung on two notes, not one.  This
+is called a @notation{melisma}, a single syllable sung to more
+than one note.  There are several ways to spread a syllable over
+multiple notes, the simplest being to add a slur across them, for
+details, see @ref{Ties and slurs}:
+
+@lilypond[verbatim,quote]
+<<
+  \relative c'' {
+    \key g \major
+    \time 6/8
+    d4 b8 c4 a8 d4 b8 g4
+    g8 a4 b8 c( b) a d4 b8 g4.
+  }
+  \addlyrics {
+    Girls and boys come out to play,
+    The moon doth shine as bright as day;
+  }
+>>
+@end lilypond
+
+The words now line up correctly with the notes, but the automatic
+beaming for the notes above @notation{shine as} does not look right.
+We can correct this by inserting manual beaming commands to override
+the automatic beaming here, for details, see @ref{Automatic and
+manual beams}.
+
+@lilypond[verbatim,quote]
+<<
+  \relative c'' {
+    \key g \major
+    \time 6/8
+    d4 b8 c4 a8 d4 b8 g4
+    g8 a4 b8 c([ b]) a d4 b8 g4.
+  }
+  \addlyrics {
+    Girls and boys come out to play,
+    The moon doth shine as bright as day;
+  }
+>>
+@end lilypond
+
+As an alternative to using slurs, the melismata may be indicated
+in just the lyrics by using an underscore @code{_} for each note
+that should be included in the melisma:
+
+@lilypond[verbatim,quote]
+<<
+  \relative c'' {
+    \key g \major
+    \time 6/8
+    d4 b8 c4 a8 d4 b8 g4
+    g8 a4 b8 c[ b] a d4 b8 g4.
+  }
+  \addlyrics {
+    Girls and boys come out to play,
+    The moon doth shine _ as bright as day;
+  }
+>>
+@end lilypond
+
+If a syllable extends over several notes or a single very long
+note an @notation{extender line} is usually drawn from the
+syllable extending under all the notes for that syllable.  It is
+entered as two underscores @code{__}.  Here is an example from the
+first three bars of @notation{Dido's Lament}, from Purcell's
+@notation{Dido and Æneas}:
+
+@lilypond[verbatim,quote]
+<<
+  \relative c'' {
+    \key g \minor
+    \time 3/2
+    g2 a bes bes( a)
+    b c4.( bes8 a4. g8 fis4.) g8 fis1
+  }
+  \addlyrics {
+    When I am laid,
+    am laid __ in earth,
+  }
+>>
+@end lilypond
+
+None of the examples so far have involved words containing more
+than one syllable.  Such words are usually split one syllable to a
+note, with hyphens between syllables.  Such hyphens are entered as
+two dashes, resulting in a centered hyphen between the syllables.
+Here is an example showing this and everything we have learned so
+far about aligning lyrics to notes.
+
+@c no ragged-right here because otherwise the hyphens get lost,
+@c but the example is long enough to avoid looking strange.
+@lilypond[verbatim,quote,noragged-right]
+<<
+  \relative c' {
+    \key g \major
+    \time 3/4
+    \partial 4
+    d4 g4 g a8( b) g4 g4
+    b8( c) d4 d e4 c2
+  }
+  \addlyrics {
+    A -- way in a __ man -- ger,
+    no __ crib for a bed, __
+  }
+>>
+@end lilypond
+
+Some lyrics, especially those in Italian, require the opposite:
+setting more than one syllable to a single note.  This is
+achieved by linking the syllables together with a single
+underscore @code{_} (with no spaces), or enclosing them in quotes.
+Here's an example from Rossini's @notation{Figaro}, where
+@notation{al} has to be sung on the same note as the @notation{go} of
+@notation{Largo} in Figaro's aria @notation{Largo al factotum}:
+
+@c no ragged-right here because otherwise the hyphens get lost,
+@c but the example is long enough to avoid looking strange.
+@lilypond[verbatim,quote,noragged-right]
+<<
+  \relative c' {
+    \clef bass
+    \key c \major
+    \time 6/8
+    c4.~ c8 d b c([ d]) b c d b c
+  }
+  \addlyrics {
+    Lar -- go_al fac -- to -- tum del -- la cit -- tà
+  }
+>>
+@end lilypond
+
+
+@seealso
+Notation Reference: @ruser{Vocal music}.
+
+
+@node Lyrics to multiple staves
+@subsection Lyrics to multiple staves
+
+@cindex lyrics and multiple staves
+@cindex multiple staves and lyrics
+
+The simple approach using @code{\addlyrics} can be used for
+placing lyrics under more than one staff.  Here is an
+example from Handel's @notation{Judas Maccabæus}:
+
+@lilypond[verbatim,quote]
+<<
+  \relative c'' {
+    \key f \major
+    \time 6/8
+    \partial 8
+    c8 c([ bes]) a a([ g]) f f'4. b, c4.~ c4
+  }
+  \addlyrics {
+    Let flee -- cy flocks the hills a -- dorn, __
+  }
+  \relative c' {
+    \key f \major
+    \time 6/8
+    \partial 8
+    r8 r4. r4 c8 a'([ g]) f f([ e]) d e([ d]) c bes'4
+  }
+  \addlyrics {
+    Let flee -- cy flocks the hills a -- dorn,
+  }
+>>
+@end lilypond
+
+Scores any more complex than this simple example are better
+produced by separating out the score structure from the notes and
+lyrics with variables.  These are discussed in @ref{Organizing
+pieces with variables}.
+
+
+@seealso
+Notation Reference: @ruser{Vocal music}.
+
+
+@node Final touches
+@section Final touches
+
+This is the final section of the tutorial; it demonstrates how to
+add the final touches to simple pieces, and provides an
+introduction to the rest of the manual.
+
+@menu
+* Organizing pieces with variables::
+* Version number::
+* Adding titles::
+* Absolute note names::
+* After the tutorial::
+@end menu
+
+
+@node Organizing pieces with variables
+@subsection Organizing pieces with variables
+
+@cindex variables
+@cindex variables, defining
+@cindex identifiers
+@cindex macros
+@cindex assigning variables
+@cindex using variables
+@cindex variables, using
+@cindex variables, characters allowed in
+@cindex characters allowed in variables
+
+When all of the elements discussed earlier are combined to produce
+larger files, the music expressions get a lot bigger.  In
+polyphonic music with many staves, the input files can become very
+confusing.  We can reduce this confusion by using
+@emph{variables}.
+
+With variables (also known as identifiers or macros), we can break
+up complex music expressions.  A variable is assigned as
+follows:
+
+@example
+namedMusic = @{ @dots{} @}
+@end example
+
+The contents of the music expression @code{namedMusic} can be used
+later by placing a backslash in front of the name
+(@code{\namedMusic}, just like a normal LilyPond command).
+
+@lilypond[verbatim,quote]
+violin = \new Staff {
+  \relative c'' {
+    a4 b c b
+  }
+}
+cello = \new Staff {
+  \relative c {
+    \clef bass
+    e2 d
+  }
+}
+{
+  <<
+    \violin
+    \cello
+  >>
+}
+@end lilypond
+
+@noindent
+The name of a variable must have alphabetic characters only, no
+numbers, underscores, or dashes.
+
+Variables must be defined @emph{before} the main music
+expression, but may be used as many times as required anywhere after
+they have been defined.  They may even be used in a later definition
+of another variable, giving a way of shortening the input if a
+section of music is repeated many times.
+
+@lilypond[verbatim,quote]
+tripletA = \times 2/3 { c,8 e g }
+barA = { \tripletA \tripletA \tripletA \tripletA }
+
+\relative c'' {
+ \barA \barA
+}
+@end lilypond
+
+Variables may be used for many other types of objects in
+the input.  For example,
+
+@example
+width = 4.5\cm
+name = "Wendy"
+aFivePaper = \paper @{ paperheight = 21.0 \cm @}
+@end example
+
+Depending on its contents, the variable can be used in different
+places.  The following example uses the above variables:
+
+@example
+\paper @{
+  \aFivePaper
+  line-width = \width
+@}
+@{
+  c4^\name
+@}
+@end example
+
+
+@node Version number
+@subsection Version number
+
+@cindex versioning
+@cindex version
+@cindex version number
+@cindex upgrades
+@cindex future upgrades
+@cindex updating files
+@cindex files, updating
+
+@funindex \version
+@funindex version
+@funindex convert-ly
+
+The @code{\version} statement records the version of LilyPond that
+was used to write the file:
+
+@example
+\version @w{"@version{}"}
+@end example
+
+@noindent
+By convention, this is placed at the top of your LilyPond file.
+
+These annotations make future upgrades of LilyPond go more
+smoothly.  Changes in the syntax are handled with a special
+program, @command{convert-ly}, and it uses @code{\version} to
+determine what rules to apply.  For details, see
+@rprogram{Updating files with convert-ly}.
+
+
+@node Adding titles
+@subsection Adding titles
+
+@cindex title
+@cindex headers
+@cindex header block
+
+@funindex \header
+@funindex header
+
+The title, composer, opus number, and similar information are
+entered in the @code{\header} block.  This exists outside of the
+main music expression; the @code{\header} block is usually placed
+underneath the version number.
+
+@example
+\version @w{"@version{}"}
+\header @{
+  title = "Symphony"
+  composer = "Me"
+  opus = "Op. 9"
+@}
+
+@{
+  @dots{} music @dots{}
+@}
+@end example
+
+When the file is processed, the title and composer are printed
+above the music.  More information on titling can be found in
+@ruser{Creating titles}.
+
+
+@node Absolute note names
+@subsection Absolute note names
+
+@cindex note names
+@cindex note names, absolute
+@cindex absolute mode
+@cindex absolute values for pitches
+@cindex pitches, absolute values
+@cindex absolute note names
+
+So far we have always used @code{\relative} to define pitches.
+This is the easiest way to enter most music, but another way of
+defining pitches exists: absolute mode.
+
+If you omit the @code{\relative}, LilyPond treats all pitches as
+absolute values.  A @code{c'} will always mean middle C, a
+@code{b} will always mean the note one step below middle C, and a
+@code{g,} will always mean the note on the bottom staff of the
+bass clef.
+
+@lilypond[verbatim,quote]
+{
+  \clef bass
+  c' b g, g,
+  g, f, f c'
+}
+@end lilypond
+
+Here is a four-octave scale:
+
+@lilypond[verbatim,quote]
+{
+  \clef bass
+  c, d, e, f,
+  g, a, b, c
+  d e f g
+  a b c' d'
+  \clef treble
+  e' f' g' a'
+  b' c'' d'' e''
+  f'' g'' a'' b''
+  c'''1
+}
+@end lilypond
+
+As you can see, writing a melody in the treble clef involves a lot
+of quote @code{'} marks.  Consider this fragment from Mozart:
+
+@lilypond[verbatim,quote]
+{
+  \key a \major
+  \time 6/8
+  cis''8. d''16 cis''8 e''4 e''8
+  b'8. cis''16 b'8 d''4 d''8
+}
+@end lilypond
+
+All these quotes makes the input less readable and they are a source
+of errors.  With @code{\relative}, the previous example is much
+easier to read and type:
+
+@lilypond[verbatim,quote]
+\relative c'' {
+  \key a \major
+  \time 6/8
+  cis8. d16 cis8 e4 e8
+  b8. cis16 b8 d4 d8
+}
+@end lilypond
+
+If you make a mistake with an octave mark (@code{'} or @code{,})
+while working in @code{\relative} mode, it is very obvious -- many
+notes will be in the wrong octave.  When working in absolute mode,
+a single mistake will not be as visible, and will not be as easy
+to find.
+
+However, absolute mode is useful for music which has large
+intervals, and is extremely useful for computer-generated LilyPond
+files.
+
+
+
+@node After the tutorial
+@subsection After the tutorial
+
+After finishing the tutorial, you should probably try writing a
+piece or two.  Start by adding notes to one of the
+@ref{Templates}.  If you need any notation that was not covered in
+the tutorial, look at the Notation Reference, starting with
+@ruser{Musical notation}.  If you want to write for an instrument
+ensemble that is not covered in the templates, take a look at
+@ref{Extending the templates}.
+
+Once you have written a few short pieces, read the rest of the
+Learning Manual (chapters 3-5).  There's nothing wrong with
+reading it now, of course!  However, the rest of the Learning
+Manual assumes that you are familiar with LilyPond input.  You may
+wish to skim these chapters right now, and come back to them after
+you have more experience.
+
+In this tutorial and in the rest of the Learning Manual, there is a
+paragraph @strong{See also} at the end of each section, which contains
+cross-references to other sections: you should not follow these
+cross-references at first reading; when you have read all of the
+Learning Manual, you may want to read some sections again and follow
+cross-references for further reading.
+
+If you have not done so already, @emph{please} read
+FIXME FIXME FIXME 
+@c @ref{About the documentation}.
+There is a lot of information about LilyPond, so
+newcomers often do not know where they should look for help.  If
+you spend five minutes reading that section carefully, you might
+save yourself hours of frustration looking in the wrong places!
+
index ba3812db3b09060ca8949cf96d85c6bf5829fa77..2b888413be57aff1c875a79d73e5103eff2cdad8 100644 (file)
@@ -71,7 +71,7 @@ example serves as a useful starting place.
 @cindex book
 @cindex score
 
-Up to this point none of the examples you have seen has used a
+Up to this point none of the examples you have seen have used a
 @code{\score@{@}} command.  This is because LilyPond automatically
 adds the extra commands which are needed when you give it simple
 input.  LilyPond treats input like this:
@@ -1703,7 +1703,7 @@ brackets because it requires only one voice.)
 @cindex contexts, naming
 @cindex naming contexts
 
-The @code{\new} command may also give a identifying name to the
+The @code{\new} command may also give an identifying name to the
 context to distinguish it from other contexts of the same type,
 
 @example
@@ -2006,7 +2006,7 @@ hash sign, @code{#}, while a true or false value is specified by
 @code{##t} and @code{##f}, with two hash signs.  A text property
 should be enclosed in double quotation signs, as above, although we
 shall see later that text can actually be specified in a much more
-general way by using the very powerful @code{markup} command.
+general way by using the very powerful @code{\markup} command.
 
 @subsubheading Setting context properties with @code{\with}
 
@@ -2281,7 +2281,7 @@ But what if you want something that isn't covered there?  Read on.
 
 Start off with the template that seems closest to what you want to end
 up with.  Let's say that you want to write something for soprano and
-cello.  In this case, we would start with @q{Notes and lyrics} (for the
+cello.  In this case, we would start with the @q{Notes and lyrics} template (for the
 soprano part).
 
 @example
@@ -2936,7 +2936,7 @@ violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA }
 @end lilypond
 
 However, you can also use these variables (also known as
-variables, macros, or (user-defined) command) for tweaks:
+macros, or user-defined commands) for tweaks:
 
 @c TODO Avoid padtext - not needed with skylining
 @lilypond[quote,verbatim,ragged-right]
@@ -3006,7 +3006,7 @@ padText =
 @end lilypond
 
 Using variables is also a good way to reduce work if the
-LilyPond input syntax changes (see @ref{Updating old input files}).  If
+LilyPond input syntax changes (see @rprogram{Updating old input files}).  If
 you have a single definition (such as @code{\dolce}) for all your
 input files (see @ref{Style sheets}), then if the syntax changes, you
 only need to update your single @code{\dolce} definition,
diff --git a/Documentation/learning/generating.itely b/Documentation/learning/generating.itely
deleted file mode 100644 (file)
index 0190cd4..0000000
+++ /dev/null
@@ -1,703 +0,0 @@
-@c -*- coding: utf-8; mode: texinfo; -*-
-
-@ignore
-    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
-
-    When revising a translation, copy the HEAD committish of the
-    version that you are working on.  See TRANSLATION for details.
-@end ignore
-
-@c \version "2.12.0"
-
-@node Generating output
-@chapter Generating output
-
-This chapter gives a basic introduction to working with LilyPond.
-
-@menu
-* Compiling a file::            
-* Advanced editors::            
-* How to write input files::    
-* How to read the manuals::     
-@end menu
-
-@node Compiling a file
-@section Compiling a file
-
-FIXME: insert text
-
-@menu
-* Entering input::              
-* MacOS X::                     
-* Windows::                     
-* Command-line::                
-@end menu
-
-@node Entering input
-@subsection Entering input
-
-@cindex compiling
-@cindex first example
-@cindex example, first
-@cindex case sensitive
-
-@qq{Compiling} is the term used for processing an input file
-in LilyPond format to produce a file which can be printed and
-(optionally) a MIDI file which can be played.  LilyPond input
-files are simple text files.  The first example
-shows what a simple input file looks like.
-
-To create sheet music, we write an input file that specifies the
-notation.  For example, if we write:
-
-@example
-@{
-  c' e' g' e'
-@}
-@end example
-
-@noindent
-the result looks like this:
-
-@c  in this case we don't want verbatim
-@lilypond[quote]
-{
-  c' e' g' e'
-}
-@end lilypond
-
-@warning{Notes and lyrics in LilyPond input must always be
-surrounded by @strong{@{ curly braces @}}.  The braces
-should also be surrounded by a space unless they are at the
-beginning or end of a line to avoid ambiguities.  The braces may
-be omitted in some examples in this manual, but don't forget them
-in your own music!  For more information about the display of
-examples in the manual, see @ref{How to read the manuals}.}
-
-In addition, LilyPond input is @strong{case sensitive}.
-@w{@code{@{ c d e @}}} is valid input; @w{@code{@{ C D E @}}} will
-produce an error message.
-
-@smallspace
-
-@subheading Entering music and viewing output
-
-@cindex PDF file
-@cindex viewing music
-@cindex text editors
-@cindex running LilyPond under MacOS X
-@cindex MacOS X, running LilyPond
-@cindex running LilyPond under Windows
-@cindex Windows, running LilyPond
-@cindex running LilyPond under Unix
-@cindex Unix, running LilyPond
-
-In this section we will explain what commands to run and how to
-view or print the output.
-
-Note that there are several other text editors available with
-better support for LilyPond.  For more information, see
-@ref{Advanced editors}.
-
-@warning{The first time you ever run LilyPond, it may take a
-minute or two because all of the system fonts have to be analyzed
-first.  After this, LilyPond will be much faster!}
-
-
-@node MacOS X
-@subsection MacOS X
-
-If you double click @command{LilyPond.app}, it will open with an
-example file.  Save it, for example, to @file{test.ly} on your
-Desktop, and then process it with the menu command
-@w{@code{Compile > Typeset File}}.  The resulting PDF file will be
-displayed on your screen.
-
-For future use of LilyPond, you should begin by selecting @q{New}
-or @q{Open}.  You must save your file before typesetting it.  If
-any errors occur in processing, please see the log window.
-
-
-@node Windows
-@subsection Windows
-
-On Windows, if you double-click in the LilyPond icon on the
-Desktop, it will open a simple text editor with an example file.
-Save it, for example, to @file{test.ly} on your Desktop and then
-double-click on the file to process it (the file icon looks like a
-note).  After some seconds, you will get a file @file{test.pdf} on
-your desktop.  Double-click on this PDF file to view the typeset
-score.  An alternative method to process the @file{test.ly} file
-is to drag and drop it onto the LilyPond icon using your mouse
-pointer.
-
-To edit an existing @file{.ly} file, right-click on it and
-select @qq{Edit source}.  To get an empty file to start from, run
-the editor as described above and use @qq{New} in
-the @qq{File} menu, or right-click on the desktop and select
-@qq{New..Text Document}, change its name to a name of your choice
-and change the file extension to @code{.ly}.  Double-click the
-icon to type in your LilyPond source code as before.
-
-Double-clicking the file does not only result in a PDF file, but
-also produces a @file{.log} file that contains some information on
-what LilyPond has done to the file.  If any errors occur, please
-examine this file.
-
-
-@node Command-line
-@subsection Command-line
-
-Create a text file called @file{test.ly} and enter:
-
-@example
-@{
-  c' e' g' e'
-@}
-@end example
-
-To process @file{test.ly}, proceed as follows:
-
-@example
-lilypond test.ly
-@end example
-
-@noindent
-You will see something resembling:
-
-@example
-lilypond test.ly
-GNU LilyPond @version{}
-Processing `test.ly'
-Parsing...
-Interpreting music...
-Preprocessing graphical objects...
-Finding the ideal number of pages...
-Fitting music on 1 page...
-Drawing systems...
-Layout output to `test.ps'...
-Converting to `test.pdf'...
-@end example
-
-
-
-@node Advanced editors
-@section Advanced editors
-
-FIXME: add text
-
-@menu
-* Denemo::                      
-* LilyPondTool::                
-* Emacs::                       
-* Vim::                         
-@end menu
-
-
-@node Denemo
-@subsection Denemo
-
-Available on:
-
-
-
-@node LilyPondTool
-@subsection LilyPondTool
-
-Available on:
-
-
-@node Emacs
-@subsection Emacs
-
-Available on: Windows, MacOS X, Unix
-
-
-@node Vim
-@subsection Vim
-
-Available on: Windows, MacOS X, Unix
-
-
-
-
-@node How to write input files
-@section How to write input files
-
-FIXME: insert text
-
-@menu
-* Simple notation::             
-* Working on input files::      
-@end menu
-
-
-@node Simple notation
-@subsection Simple notation
-
-@cindex simple notation
-@cindex notation, simple
-
-LilyPond will add some notation elements automatically.  In the
-next example, we have only specified four pitches, but LilyPond
-has added a clef, time signature, and rhythms.
-
-@lilypond[verbatim,quote]
-{
-  c' e' g' e'
-}
-@end lilypond
-
-@noindent
-This behavior may be altered, but in most cases these automatic
-values are useful.
-
-
-@subheading Pitches
-
-@cindex pitches
-@cindex relative mode
-@cindex quote, single
-@cindex comma
-@cindex accidentals and relative mode
-@cindex relative mode, and accidentals
-
-@funindex \relative
-@funindex relative
-@funindex '
-@funindex ,
-
-Music Glossary: @rglos{pitch}, @rglos{interval},
-@rglos{scale}, @rglos{middle C}, @rglos{octave},
-@rglos{accidental}.
-
-The easiest way to enter notes is by using @code{\relative} mode.
-In this mode, the octave is chosen automatically by assuming the
-following note is always to be placed closest to the previous
-note, i.e., it is to be placed in the octave which is within three
-staff spaces of the previous note.  We begin by entering the most
-elementary piece of music, a @notation{scale}, in which every note
-is within just one staff space of the previous note.
-
-@lilypond[verbatim,quote]
-% set the starting point to middle C
-\relative c' {
-  c d e f
-  g a b c
-}
-@end lilypond
-
-The initial note is @notation{middle C}.  Each successive note is
-placed closest to the previous note -- in other words, the first
-@code{c} is the closest C to middle C.  This is followed by the
-closest D to the previous note.  We can create melodies which have
-larger intervals, still using only @code{\relative} mode:
-
-@lilypond[verbatim,quote]
-\relative c' {
-  d f a g
-  c b f d
-}
-@end lilypond
-
-@noindent
-It is not necessary for the first note of the melody to start on
-the note which specifies the starting pitch.  In the previous
-example, the first note -- the @code{d} -- is the closest D to
-middle C.
-
-By adding (or removing) quotes @code{'} or commas @code{,} from
-the @code{@w{\relative c' @{}} command, we can change the starting
-octave:
-
-@lilypond[verbatim,quote]
-% one octave above middle C
-\relative c'' {
-  e c a c
-}
-@end lilypond
-
-Relative mode can be confusing initially, but is the easiest way
-to enter most melodies.  Let us see how this relative calculation
-works in practice.  Starting from a B, which is on the middle line
-in a treble clef, you can reach a C, D and E within 3 staff spaces
-going up, and an A, G and F within 3 staff spaces going down.  So
-if the note following a B is a C, D or E it will be assumed to be
-above the B, and an A, G or F will be assumed to be below.
-
-@lilypond[verbatim,quote]
-\relative c'' {
-  b c  % c is 1 staff space up, so is the c above
-  b d  % d is 2 up or 5 down, so is the d above
-  b e  % e is 3 up or 4 down, so is the e above
-  b a  % a is 6 up or 1 down, so is the a below
-  b g  % g is 5 up or 2 down, so is the g below
-  b f  % f is 4 up or 3 down, so is the f below
-}
-@end lilypond
-
-Exactly the same happens even when any of these notes are
-sharpened or flattened.  @notation{Accidentals} are
-@strong{totally ignored} in the calculation of relative position.
-Precisely the same staff space counting is done from a note at any
-other position on the staff.
-
-To add intervals that are larger than three staff spaces, we can
-raise the @notation{octave} by adding a single quote @code{'} (or
-apostrophe) to the note name.  We can lower the octave by adding a
-comma @code{,} to the note name.
-
-@lilypond[verbatim,quote]
-\relative c'' {
-  a a, c' f,
-  g g'' a,, f'
-}
-@end lilypond
-
-@noindent
-To change a note by two (or more!) octaves, we use multiple
-@code{''} or @code{,,} -- but be careful that you use two single
-quotes @code{''} and not one double quote @code{"}@tie{}!  The
-initial value in @code{@w{\relative c'}} may also be modified like
-this.
-@c " - keeps quotes in order for context-sensitive editor -td
-
-@subheading Durations (rhythms)
-
-@cindex note durations
-@cindex durations
-@cindex rhythms
-@cindex whole note
-@cindex half note
-@cindex quarter note
-@cindex dotted note
-@cindex notating durations
-
-Music Glossary: @rglos{beam}, @rglos{duration},
-@rglos{whole note}, @rglos{half note}, @rglos{quarter note},
-@rglos{dotted note}.
-
-The @notation{duration} of a note is specified by a number after
-the note name:  @code{1} for a @notation{whole note}, @code{2} for
-a @notation{half note}, @code{4} for a @notation{quarter note} and
-so on.  @notation{Beams} are added automatically.
-
-If you do not specify a duration, the previous duration is used
-for the next note.  The duration of the first note defaults to a
-quarter.
-
-@lilypond[verbatim,quote]
-\relative c'' {
-  a1
-  a2 a4 a8 a
-  a16 a a a a32 a a a a64 a a a a a a a a2
-}
-@end lilypond
-
-To create @notation{dotted notes}, add a dot @code{.} to the
-duration number.  The duration of a dotted note must be stated
-explicitly (i.e., with a number).
-
-@lilypond[verbatim,quote]
-\relative c'' {
-  a a a4. a8
-  a8. a16 a a8. a8 a4.
-}
-@end lilypond
-
-
-@subheading Rests
-
-@cindex rest
-@cindex notating rests
-
-Music Glossary: @rglos{rest}.
-
-A @notation{rest} is entered just like a note with the name
-@code{r}@tie{}:
-
-@lilypond[verbatim,quote]
-\relative c'' {
-  a r r2
-  r8 a r4 r4. r8
-}
-@end lilypond
-
-
-@subheading Time signature
-
-@cindex time signature
-
-@funindex \time
-@funindex time
-
-Music Glossary: @rglos{time signature}.
-
-The @notation{time signature} can be set with the @code{\time}
-command:
-
-@lilypond[verbatim,quote]
-\relative c'' {
-  \time 3/4
-  a4 a a
-  \time 6/8
-  a4. a
-  \time 4/4
-  a4 a a a
-}
-@end lilypond
-
-
-@subheading Clef
-
-@cindex clef
-@cindex treble
-@cindex alto
-@cindex tenor
-@cindex bass
-
-@funindex \clef
-@funindex clef
-
-Music Glossary: @rglos{clef}.
-
-The @notation{clef} can be set using the @code{\clef} command:
-
-@lilypond[verbatim,quote]
-\relative c' {
-  \clef treble
-  c1
-  \clef alto
-  c1
-  \clef tenor
-  c1
-  \clef bass
-  c1
-}
-@end lilypond
-
-
-@subheading All together
-
-Here is a small example showing all these elements together:
-
-@lilypond[verbatim,quote]
-\relative c, {
-  \time 3/4
-  \clef bass
-  c2 e8 c' g'2.
-  f4 e d c4 c, r4
-}
-@end lilypond
-
-
-@seealso
-Notation Reference: @ruser{Writing pitches},
-@ruser{Writing rhythms}, @ruser{Writing rests},
-@ruser{Time signature}, @ruser{Clef}.
-
-
-@node Working on input files
-@subsection Working on input files
-
-@cindex curly braces
-@cindex braces, curly
-@cindex comments
-@cindex line comment
-@cindex comment, line
-@cindex block comment
-@cindex comment, line
-@cindex case sensitive
-@cindex whitespace insensitive
-@cindex expressions
-
-@funindex { ... }
-@funindex %
-@funindex %@{ ... %@}
-
-LilyPond input files are similar to source files in many common
-programming languages.  They are case sensitive, and white-space
-is generally ignored.  Expressions are formed with curly braces
-@{ @}, and comments are denoted with @code{%} or
-@w{@code{%@{ ... %@}}}.
-
-If the previous sentences sound like nonsense, don't worry!  We'll
-explain what all these terms mean:
-
-@itemize
-
-@item
-@strong{Case sensitive}:
-it matters whether you enter a letter in lower case (e.g.
-@w{@code{a, b, s, t}}) or upper case (e.g.  @w{@code{A, B, S, T}}).
-Notes are lower case: @w{@code{@{ c d e @}}} is valid input;
-@w{@code{@{ C D E @}}} will produce an error message.
-
-@item
-@strong{Whitespace insensitive}:
-it does not matter how many spaces (or tabs or new lines) you add.
-@w{@code{@{ c d e @}}} means the same thing as
-@w{@code{@{ c @tie{}} @tie{} @tie{} d e @}} and:
-
-@example
-@{ c                        d
-                   e   @}
-@end example
-
-@noindent
-Of course, the previous example is hard to read.  A good rule of
-thumb is to indent code blocks with either a tab or two spaces:
-
-@example
-@{
-  c d e
-@}
-@end example
-
-However, whitespace @emph{is} required to separate many syntactical
-elements from others.  In other words, whitespace can always be
-@emph{added}, but it cannot be @emph{eliminated}.  As missing
-whitespace can give rise to strange errors it is advisable to
-always insert whitespace before and after every syntactic element,
-for example, before and after every curly brace.
-
-@item
-@strong{Expressions}:
-every piece of LilyPond input needs to have @strong{@{ curly
-braces @}} placed around the input.  These braces tell LilyPond
-that the input is a single music expression, just like parentheses
-@code{()} in mathematics.  The braces should be surrounded by a
-space unless they are at the beginning or end of a line to avoid
-ambiguities.
-
-A LilyPond command followed by a simple expression in braces (such
-as @w{@code{\relative @{ @}}}) also counts as a single music
-expression.
-
-@cindex comments
-@cindex line comment
-@cindex block comment
-@item
-@strong{Comments}:
-a comment is a remark for the human reader of the music input; it
-is ignored while parsing, so it has no effect on the printed
-output.  There are two types of comments.  The percent symbol
-@code{%} introduces a line comment; anything after @code{%} on
-that line is ignored.  By convention, a line comment is placed
-@emph{above} the code it refers to.
-
-@example
-a4 a a a
-% this comment refers to the Bs
-b2 b
-@end example
-
-A block comment marks a whole section of music input as a comment.
-Anything that is enclosed in @code{%@{} and @code{%@}} is ignored.
-However, block comments do not @q{nest}.  This means that you
-cannot place a block comment inside another block comment.  If you
-try, the first @code{%@}} will terminate @emph{both} block
-comments.  The following fragment shows possible uses for
-comments:
-
-@example
-% notes for twinkle twinkle follow
-  c4 c g' g a a g2
-
-%@{
-  This line, and the notes below are ignored,
-  since they are in a block comment.
-
-  f f e e d d c2
-%@}
-@end example
-
-@end itemize
-
-
-@node How to read the manuals
-@section How to read the manuals
-
-FIXME: fluff here
-
-@menu
-* Omitting braces::             
-* Clickable examples::          
-* Keyboard navigation::         
-* Overview of manuals::         
-@end menu
-
-
-@node Omitting braces
-@unnumberedsubsec Omitting braces
-
-
-@cindex how to read the manual
-@cindex manual, reading
-@cindex reading the manual
-@cindex examples, clickable
-@cindex clickable examples
-@cindex tips for constructing files
-@cindex templates
-@cindex constructing files, tips
-@cindex files, tips for constructing
-
-LilyPond input must be surrounded by @{ @} marks or a
-@code{@w{\relative c'' @{ ... @}}}, as we saw in @ref{Working on
-input files}.  For the rest of this manual, most examples will
-omit this.  To replicate the examples, you may copy and paste the
-displayed input, but you @strong{must} add the
-@code{@w{\relative c'' @{ @}}} like this:
-
-@example
-\relative c'' @{
-  ... example goes here...
-@}
-@end example
-
-Why omit the braces?  Most examples in this manual can be inserted
-into the middle of a longer piece of music.  For these examples,
-it does not make sense to add @code{@w{\relative c'' @{ @}}} --
-you should not place a @code{\relative} inside another
-@code{\relative}!  If we included @code{@w{\relative c'' @{ @}}}
-around every example, you would not be able to copy a small
-documentation example and paste it inside a longer piece of your
-own.  Most people want to add material to an existing piece, so we
-format the manual this way.
-
-
-@node Clickable examples
-@unnumberedsubsec Clickable examples
-
-Many people learn programs by trying and fiddling around with the
-program.  This is also possible with LilyPond.  If you click on a
-picture in the HTML version of this manual, you will see the exact
-LilyPond input that was used to generate that image.  Try it on
-this image:
-
-@c no verbatim here
-@lilypond[quote]
-\relative c'' {
-  c-\markup { \bold \huge { Click here.  } }
-}
-@end lilypond
-
-By cutting and pasting everything in the @qq{ly snippet} section,
-you have a starting template for experiments.  To see exactly the
-same output (line-width and all), copy everything from @qq{Start
-cut-&-pastable section} to the bottom of the file.
-
-
-@node Keyboard navigation
-@unnumberedsubsec Keyboard navigation
-
-
-
-@node Overview of manuals
-@unnumberedsubsec Overview of manuals
-
-FIXME: a brief discussion about the rest of the LM, and pointers
-to specific places.  like NR for general reference, AU for
-suggestions for writing files, etc.
-
-
index a37dc2597bba43772b7adde76ad247eccaf520e2..67b456bfde5fca7431d11574b070d05fbd5d1715 100644 (file)
 @node Introduction
 @chapter Introduction
 
-This chapter introduces readers to LilyPond and the
-documentation.
+This chapter gives a basic introduction to working with LilyPond.
 
 @menu
-* About the documentation::
+* Compiling a file::            
+* How to write input files::    
+* How to read the manuals::     
 @end menu
 
+@node Compiling a file
+@section Compiling a file
 
+FIXME: insert text
 
-@node About the documentation
-@section About the documentation
-
-This section explains the different portions of the documentation.
-
-@cindex Learning Manual
-@cindex Music Glossary
-@cindex Notation Reference
-@cindex Application Usage
-@cindex Snippet List
-@cindex Internals Reference
-
-@c leave these lines wrapping around.  It's some texinfo 4.12 thing. -gp
-@c This is actually a limitation of texi2html. -jm
 @menu
-* About the Learning Manual::  this manual introduces LilyPond, giving in-depth explanations of how to create notation.
-* About the Music Glossary::  this manual explains musical terms and gives translations of terms in other languages.
-* About the Notation Reference::  this manual is the main portion of the documentation.  It provides detailed information about creating notation.  This book assumes that the reader knows basic material covered in the Learning Manual and is familiar with the English musical terms presented in the Musical Glossary.
-* About the Application Usage::  this discusses the actual programs and operating system-specific issues.
-* About the Snippet List::  this is a collection of short LilyPond examples.
-* About the Internals Reference::  this document gives reference information about LilyPond's internal structures, which is required for constructing tweaks.
-* Other documentation::         there are a few other portions of the documentation, such as News items and the mailist archives.
+* Entering input::              
+* MacOS X::                     
+* Windows::                     
+* Command-line::                
 @end menu
 
+@node Entering input
+@subsection Entering input
+
+@cindex compiling
+@cindex first example
+@cindex example, first
+@cindex case sensitive
+
+@qq{Compiling} is the term used for processing an input file
+in LilyPond format to produce a file which can be printed and
+(optionally) a MIDI file which can be played.  LilyPond input
+files are simple text files.  The first example
+shows what a simple input file looks like.
+
+To create sheet music, we write an input file that specifies the
+notation.  For example, if we write:
+
+@example
+@{
+  c' e' g' e'
+@}
+@end example
+
+@noindent
+the result looks like this:
+
+@c  in this case we don't want verbatim
+@lilypond[quote]
+{
+  c' e' g' e'
+}
+@end lilypond
+
+@warning{Notes and lyrics in LilyPond input must always be
+surrounded by @strong{@{ curly braces @}}.  The braces
+should also be surrounded by a space unless they are at the
+beginning or end of a line to avoid ambiguities.  The braces may
+be omitted in some examples in this manual, but don't forget them
+in your own music!  For more information about the display of
+examples in the manual, see @ref{How to read the manuals}.}
+
+In addition, LilyPond input is @strong{case sensitive}.
+@w{@code{@{ c d e @}}} is valid input; @w{@code{@{ C D E @}}} will
+produce an error message.
+
+@smallspace
+
+@subheading Entering music and viewing output
 
-@node About the Learning Manual
-@unnumberedsubsec About the Learning Manual
+@cindex PDF file
+@cindex viewing music
+@cindex text editors
+@cindex running LilyPond under MacOS X
+@cindex MacOS X, running LilyPond
+@cindex running LilyPond under Windows
+@cindex Windows, running LilyPond
+@cindex running LilyPond under Unix
+@cindex Unix, running LilyPond
+
+In this section we will explain what commands to run and how to
+view or print the output.
+
+Note that there are several other text editors available with
+better support for LilyPond.  For more information, see
+@rgeneral{Alternate input}.
+
+@warning{The first time you ever run LilyPond, it may take a
+minute or two because all of the system fonts have to be analyzed
+first.  After this, LilyPond will be much faster!}
 
-@cindex Learning Manual
 
-This book explains how to begin learning LilyPond, as well as
-explaining some key concepts in easy terms.  You should read these
-chapters in a linear fashion.
+@node MacOS X
+@subsection MacOS X
 
-There is a paragraph @strong{See also} at the end of each section,
-which contains cross-references to other sections: you should not
-follow these cross-references at first reading; when you have read all
-of the Learning Manual, you may want to read some sections again and
-follow cross-references for further reading.
+@warning{These instructions assume that you are using the built-in
+LilyPad editor.  If you are using any of the programs described in
+@rgeneral{Alternate input}, please consult the documentation for
+those programs if you have any problems compiling a file.}
 
-@itemize
 
-@item
-@ref{Introduction}: explains the background and overall goal of
-LilyPond.
+If you double click @command{LilyPond.app}, it will open with an
+example file.  Save it, for example, to @file{test.ly} on your
+Desktop, and then process it with the menu command
+@w{@code{Compile > Typeset File}}.  The resulting PDF file will be
+displayed on your screen.
 
-@item
-@ref{Tutorial}: gives a gentle introduction to typesetting music.
-First time users should start here.
+For future use of LilyPond, you should begin by selecting @q{New}
+or @q{Open}.  You must save your file before typesetting it.  If
+any errors occur in processing, please see the log window.
 
-@item
-@ref{Fundamental concepts}: explains some general concepts about
-the LilyPond file format.  If you are not certain where to place a
-command, read this chapter!
 
-@item
-@ref{Tweaking output}: shows how to change the default engraving
-that LilyPond produces.
+@node Windows
+@subsection Windows
 
-@item
-@ref{Working on LilyPond projects}: discusses practical uses of
-LilyPond and how to avoid some common problems.  Read this before
-undertaking large projects!
+@warning{These instructions assume that you are using the built-in
+LilyPad editor.  If you are using any of the programs described in
+@rgeneral{Alternate input}, please consult the documentation for
+programs if you have any problems compiling a file.}
 
-@end itemize
+On Windows, if you double-click in the LilyPond icon on the
+Desktop, it will open a simple text editor with an example file.
+Save it, for example, to @file{test.ly} on your Desktop and then
+double-click on the file to process it (the file icon looks like a
+note).  After some seconds, you will get a file @file{test.pdf} on
+your desktop.  Double-click on this PDF file to view the typeset
+score.  An alternative method to process the @file{test.ly} file
+is to drag and drop it onto the LilyPond icon using your mouse
+pointer.
+
+To edit an existing @file{.ly} file, right-click on it and
+select @qq{Edit source}.  To get an empty file to start from, run
+the editor as described above and use @qq{New} in
+the @qq{File} menu, or right-click on the desktop and select
+@qq{New..Text Document}, change its name to a name of your choice
+and change the file extension to @code{.ly}.  Double-click the
+icon to type in your LilyPond source code as before.
 
-The Learning Manual also contains appendices which are not part of the
-recommended linear reading.  They may be useful for later
-viewing:
+Double-clicking the file does not only result in a PDF file, but
+also produces a @file{.log} file that contains some information on
+what LilyPond has done to the file.  If any errors occur, please
+examine this file.
 
-@itemize
 
-@item
-@ref{Templates}: shows ready-made templates of LilyPond pieces.
-Just cut and paste a template into a file, add notes, and you're
-done!
+@node Command-line
+@subsection Command-line
 
-@item
-@ref{Scheme tutorial}: presents a short introduction to Scheme,
-the programming language that music functions use.  This is
-material for advanced tweaks; many users never touch Scheme at
-all.
+@warning{These instructions assume that you are using the built-in
+LilyPad editor.  If you are using any of the programs described in
+@rgeneral{Alternate input}, please consult the documentation for
+programs if you have any problems compiling a file.}
 
-@end itemize
 
+Create a text file called @file{test.ly} and enter:
 
-@node About the Music Glossary
-@unnumberedsubsec About the Music Glossary
+@example
+@{
+  c' e' g' e'
+@}
+@end example
 
-@cindex Music Glossary
-@cindex idiom
-@cindex jargon
-@cindex terminology
-@cindex foreign languages
-@cindex language
+To process @file{test.ly}, proceed as follows:
 
-@rglosnamed{Top,Music glossary}
-this explains musical terms, and includes translations to various
-languages.  If you are not familiar with music notation or music
-terminology (especially if you are a non-native English speaker),
-it is highly advisable to consult the glossary.
+@example
+lilypond test.ly
+@end example
 
+@noindent
+You will see something resembling:
 
-@node About the Notation Reference
-@unnumberedsubsec About the Notation Reference
+@example
+lilypond test.ly
+GNU LilyPond @version{}
+Processing `test.ly'
+Parsing...
+Interpreting music...
+Preprocessing graphical objects...
+Finding the ideal number of pages...
+Fitting music on 1 page...
+Drawing systems...
+Layout output to `test.ps'...
+Converting to `test.pdf'...
+@end example
 
-@cindex Notation Reference
-@cindex appendices
-@cindex reference charts
-@cindex charts, reference
 
-This book explains all the LilyPond commands which produce
-notation.  It assumes that readers are familiar with the concepts
-in the Learning Manual.
 
-@itemize
+@node How to write input files
+@section How to write input files
 
-@item
-@ruser{Musical notation}:
-discusses topics grouped by notation construct.  This section
-gives details about basic notation that will be useful in almost
-any notation project.
+FIXME: insert text
 
-@item
-@ruser{Specialist notation}:
-discusses topics grouped by notation construct.  This section
-gives details about special notation that will only be useful for
-particular instrument (or vocal) groups.
+@menu
+* Simple notation::             
+* Working on input files::      
+@end menu
 
-@item
-@ruser{General input and output}:
-discusses general information about LilyPond input files and
-controlling output.
 
-@item
-@ruser{Spacing issues}:
-discusses issues which affect the global output, such as selecting
-paper size or specifying page breaks.
+@node Simple notation
+@subsection Simple notation
+
+@cindex simple notation
+@cindex notation, simple
+
+LilyPond will add some notation elements automatically.  In the
+next example, we have only specified four pitches, but LilyPond
+has added a clef, time signature, and rhythms.
+
+@lilypond[verbatim,quote]
+{
+  c' e' g' e'
+}
+@end lilypond
+
+@noindent
+This behavior may be altered, but in most cases these automatic
+values are useful.
+
+
+@subheading Pitches
+
+@cindex pitches
+@cindex relative mode
+@cindex quote, single
+@cindex comma
+@cindex accidentals and relative mode
+@cindex relative mode, and accidentals
+
+@funindex \relative
+@funindex relative
+@funindex '
+@funindex ,
+
+Music Glossary: @rglos{pitch}, @rglos{interval},
+@rglos{scale}, @rglos{middle C}, @rglos{octave},
+@rglos{accidental}.
+
+The easiest way to enter notes is by using @code{\relative} mode.
+In this mode, the octave is chosen automatically by assuming the
+following note is always to be placed closest to the previous
+note, i.e., it is to be placed in the octave which is within three
+staff spaces of the previous note.  We begin by entering the most
+elementary piece of music, a @notation{scale}, in which every note
+is within just one staff space of the previous note.
+
+@lilypond[verbatim,quote]
+% set the starting point to middle C
+\relative c' {
+  c d e f
+  g a b c
+}
+@end lilypond
+
+The initial note is @notation{middle C}.  Each successive note is
+placed closest to the previous note -- in other words, the first
+@code{c} is the closest C to middle C.  This is followed by the
+closest D to the previous note.  We can create melodies which have
+larger intervals, still using only @code{\relative} mode:
+
+@lilypond[verbatim,quote]
+\relative c' {
+  d f a g
+  c b f d
+}
+@end lilypond
+
+@noindent
+It is not necessary for the first note of the melody to start on
+the note which specifies the starting pitch.  In the previous
+example, the first note -- the @code{d} -- is the closest D to
+middle C.
+
+By adding (or removing) quotes @code{'} or commas @code{,} from
+the @code{@w{\relative c' @{}} command, we can change the starting
+octave:
+
+@lilypond[verbatim,quote]
+% one octave above middle C
+\relative c'' {
+  e c a c
+}
+@end lilypond
+
+Relative mode can be confusing initially, but is the easiest way
+to enter most melodies.  Let us see how this relative calculation
+works in practice.  Starting from a B, which is on the middle line
+in a treble clef, you can reach a C, D and E within 3 staff spaces
+going up, and an A, G and F within 3 staff spaces going down.  So
+if the note following a B is a C, D or E it will be assumed to be
+above the B, and an A, G or F will be assumed to be below.
+
+@lilypond[verbatim,quote]
+\relative c'' {
+  b c  % c is 1 staff space up, so is the c above
+  b d  % d is 2 up or 5 down, so is the d above
+  b e  % e is 3 up or 4 down, so is the e above
+  b a  % a is 6 up or 1 down, so is the a below
+  b g  % g is 5 up or 2 down, so is the g below
+  b f  % f is 4 up or 3 down, so is the f below
+}
+@end lilypond
+
+Exactly the same happens even when any of these notes are
+sharpened or flattened.  @notation{Accidentals} are
+@strong{totally ignored} in the calculation of relative position.
+Precisely the same staff space counting is done from a note at any
+other position on the staff.
+
+To add intervals that are larger than three staff spaces, we can
+raise the @notation{octave} by adding a single quote @code{'} (or
+apostrophe) to the note name.  We can lower the octave by adding a
+comma @code{,} to the note name.
+
+@lilypond[verbatim,quote]
+\relative c'' {
+  a a, c' f,
+  g g'' a,, f'
+}
+@end lilypond
+
+@noindent
+To change a note by two (or more!) octaves, we use multiple
+@code{''} or @code{,,} -- but be careful that you use two single
+quotes @code{''} and not one double quote @code{"}@tie{}!  The
+initial value in @code{@w{\relative c'}} may also be modified like
+this.
+@c " - keeps quotes in order for context-sensitive editor -td
+
+@subheading Durations (rhythms)
+
+@cindex note durations
+@cindex durations
+@cindex rhythms
+@cindex whole note
+@cindex half note
+@cindex quarter note
+@cindex dotted note
+@cindex notating durations
+
+Music Glossary: @rglos{beam}, @rglos{duration},
+@rglos{whole note}, @rglos{half note}, @rglos{quarter note},
+@rglos{dotted note}.
+
+The @notation{duration} of a note is specified by a number after
+the note name:  @code{1} for a @notation{whole note}, @code{2} for
+a @notation{half note}, @code{4} for a @notation{quarter note} and
+so on.  @notation{Beams} are added automatically.
+
+If you do not specify a duration, the previous duration is used
+for the next note.  The duration of the first note defaults to a
+quarter.
+
+@lilypond[verbatim,quote]
+\relative c'' {
+  a1
+  a2 a4 a8 a
+  a16 a a a a32 a a a a64 a a a a a a a a2
+}
+@end lilypond
+
+To create @notation{dotted notes}, add a dot @code{.} to the
+duration number.  The duration of a dotted note must be stated
+explicitly (i.e., with a number).
+
+@lilypond[verbatim,quote]
+\relative c'' {
+  a a a4. a8
+  a8. a16 a a8. a8 a4.
+}
+@end lilypond
+
+
+@subheading Rests
+
+@cindex rest
+@cindex notating rests
+
+Music Glossary: @rglos{rest}.
+
+A @notation{rest} is entered just like a note with the name
+@code{r}@tie{}:
+
+@lilypond[verbatim,quote]
+\relative c'' {
+  a r r2
+  r8 a r4 r4. r8
+}
+@end lilypond
+
+
+@subheading Time signature
+
+@cindex time signature
+
+@funindex \time
+@funindex time
+
+Music Glossary: @rglos{time signature}.
+
+The @notation{time signature} can be set with the @code{\time}
+command:
+
+@lilypond[verbatim,quote]
+\relative c'' {
+  \time 3/4
+  a4 a a
+  \time 6/8
+  a4. a
+  \time 4/4
+  a4 a a a
+}
+@end lilypond
+
+
+@subheading Clef
+
+@cindex clef
+@cindex treble
+@cindex alto
+@cindex tenor
+@cindex bass
+
+@funindex \clef
+@funindex clef
 
-@item
-@ruser{Changing defaults}:
-explains how to tweak LilyPond to produce exactly the notation you
-want.
+Music Glossary: @rglos{clef}.
 
-@item
-@ruser{Interfaces for programmers}:
-explains how to create music functions with scheme.
+The @notation{clef} can be set using the @code{\clef} command:
 
-@end itemize
+@lilypond[verbatim,quote]
+\relative c' {
+  \clef treble
+  c1
+  \clef alto
+  c1
+  \clef tenor
+  c1
+  \clef bass
+  c1
+}
+@end lilypond
 
-The Notation Reference also contains appendices with useful
-reference charts.
 
-@itemize
+@subheading All together
 
-@item
-@ruser{Literature list}:
-contains a set of useful reference books for those who wish to
-know more on notation and engraving.
+Here is a small example showing all these elements together:
 
-@item
-@ruser{Notation manual tables}:
-are a set of tables showing the chord names, MIDI instruments, a
-list of color names, and the Feta font.
+@lilypond[verbatim,quote]
+\relative c, {
+  \time 3/4
+  \clef bass
+  c2 e8 c' g'2.
+  f4 e d c4 c, r4
+}
+@end lilypond
 
-@item
-@ruser{Cheat sheet}:
-is a handy reference of the most common LilyPond commands.
 
-@item
-@ruser{LilyPond command index}:
-an index of all LilyPond @code{\commands}.
+@seealso
+Notation Reference: @ruser{Writing pitches},
+@ruser{Writing rhythms}, @ruser{Writing rests},
+@ruser{Time signature}, @ruser{Clef}.
 
-@item
-@ruser{LilyPond index}:
-a complete index.
 
-@end itemize
+@node Working on input files
+@subsection Working on input files
 
+@cindex curly braces
+@cindex braces, curly
+@cindex comments
+@cindex line comment
+@cindex comment, line
+@cindex block comment
+@cindex comment, line
+@cindex case sensitive
+@cindex whitespace insensitive
+@cindex expressions
 
-@node About the Application Usage
-@unnumberedsubsec About the Application Usage
+@funindex { ... }
+@funindex %
+@funindex %@{ ... %@}
 
-@cindex Application Usage
-@cindex integrating LilyPond with other programs
+LilyPond input files are similar to source files in many common
+programming languages.  They are case sensitive, and white-space
+is generally ignored.  Expressions are formed with curly braces
+@{ @}, and comments are denoted with @code{%} or
+@w{@code{%@{ ... %@}}}.
 
-This book explains how to execute the programs and how to integrate
-LilyPond notation with other programs.
+If the previous sentences sound like nonsense, don't worry!  We'll
+explain what all these terms mean:
 
 @itemize
 
 @item
-@rprogram{Install}:
-explains how to install LilyPond, including compilation if
-desired.
+@strong{Case sensitive}:
+it matters whether you enter a letter in lower case (e.g.
+@w{@code{a, b, s, t}}) or upper case (e.g.  @w{@code{A, B, S, T}}).
+Notes are lower case: @w{@code{@{ c d e @}}} is valid input;
+@w{@code{@{ C D E @}}} will produce an error message.
 
 @item
-@rprogram{Setup}:
-describes how to configure your computer for optimum LilyPond
-usage, such as using special environments for certain text
-editors.
+@strong{Whitespace insensitive}:
+it does not matter how many spaces (or tabs or new lines) you add.
+@w{@code{@{ c d e @}}} means the same thing as
+@w{@code{@{ c @tie{}} @tie{} @tie{} d e @}} and:
+
+@example
+@{ c                        d
+                   e   @}
+@end example
+
+@noindent
+Of course, the previous example is hard to read.  A good rule of
+thumb is to indent code blocks with either a tab or two spaces:
+
+@example
+@{
+  c d e
+@}
+@end example
+
+However, whitespace @emph{is} required to separate many syntactical
+elements from others.  In other words, whitespace can always be
+@emph{added}, but it cannot be @emph{eliminated}.  As missing
+whitespace can give rise to strange errors it is advisable to
+always insert whitespace before and after every syntactic element,
+for example, before and after every curly brace.
 
 @item
-@rprogram{Running LilyPond}:
-shows how to run LilyPond and its helper programs.  In addition,
-this section explains how to upgrade input files from previous
-versions of LilyPond.
-
-@item
-@rprogram{LilyPond-book}:
-explains the details behind creating documents with in-line music
-examples, like this manual.
-
+@strong{Expressions}:
+every piece of LilyPond input needs to have @strong{@{ curly
+braces @}} placed around the input.  These braces tell LilyPond
+that the input is a single music expression, just like parentheses
+@code{()} in mathematics.  The braces should be surrounded by a
+space unless they are at the beginning or end of a line to avoid
+ambiguities.
+
+A LilyPond command followed by a simple expression in braces (such
+as @w{@code{\relative @{ @}}}) also counts as a single music
+expression.
+
+@cindex comments
+@cindex line comment
+@cindex block comment
 @item
-@rprogram{Converting from other formats}:
-explains how to run the conversion programs.  These programs are
-supplied with the LilyPond package, and convert a variety of music
-formats to the @code{.ly} format.
+@strong{Comments}:
+a comment is a remark for the human reader of the music input; it
+is ignored while parsing, so it has no effect on the printed
+output.  There are two types of comments.  The percent symbol
+@code{%} introduces a line comment; anything after @code{%} on
+that line is ignored.  By convention, a line comment is placed
+@emph{above} the code it refers to.
+
+@example
+a4 a a a
+% this comment refers to the Bs
+b2 b
+@end example
+
+A block comment marks a whole section of music input as a comment.
+Anything that is enclosed in @code{%@{} and @code{%@}} is ignored.
+However, block comments do not @q{nest}.  This means that you
+cannot place a block comment inside another block comment.  If you
+try, the first @code{%@}} will terminate @emph{both} block
+comments.  The following fragment shows possible uses for
+comments:
+
+@example
+% notes for twinkle twinkle follow
+  c4 c g' g a a g2
+
+%@{
+  This line, and the notes below are ignored,
+  since they are in a block comment.
+
+  f f e e d d c2
+%@}
+@end example
 
 @end itemize
 
 
-@node About the Snippet List
-@unnumberedsubsec About the Snippet List
+@node How to read the manuals
+@section How to read the manuals
 
-@cindex snippets
-@cindex LSR
-@cindex Snippet List
-@cindex LilyPond Snippet Repository
+FIXME: fluff here
 
-@rlsrnamed{Top,LilyPond Snippet List}: this shows a
-selected set of LilyPond snippets from the
-@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}
-(LSR).  All the snippets are in the public domain.
+@menu
+* Omitting braces::             
+* Clickable examples::          
+* Keyboard navigation::         
+* Overview of manuals::         
+@end menu
 
-Please note that this document is not an exact subset of LSR.  LSR
-is running a stable LilyPond version, so any snippet which
-demonstrates new features of a development version must be added
-separately.  These are stored in @file{input/new/} in the LilyPond
-source tree.
 
-The list of snippets for each subsection of the Notation Reference are
-also linked from the @strong{See also} portion.
+@node Omitting braces
+@unnumberedsubsec Omitting braces
 
 
-@node About the Internals Reference
-@unnumberedsubsec About the Internals Reference
+@cindex how to read the manual
+@cindex manual, reading
+@cindex reading the manual
+@cindex examples, clickable
+@cindex clickable examples
+@cindex tips for constructing files
+@cindex templates
+@cindex constructing files, tips
+@cindex files, tips for constructing
 
-@cindex Internals Reference
+LilyPond input must be surrounded by @{ @} marks or a
+@code{@w{\relative c'' @{ ... @}}}, as we saw in @ref{Working on
+input files}.  For the rest of this manual, most examples will
+omit this.  To replicate the examples, you may copy and paste the
+displayed input, but you @strong{must} add the
+@code{@w{\relative c'' @{ @}}} like this:
 
-@rinternalsnamed{Top,Internals Reference}: this is a set
-of heavily cross linked HTML pages which document the nitty-gritty
-details of each and every LilyPond class, object, and function.
-It is produced directly from the formatting definitions in the
-source code.
+@example
+\relative c'' @{
+  ... example goes here...
+@}
+@end example
 
-Almost all formatting functionality that is used internally is
-available directly to the user.  For example, most variables that
-control thickness values, distances, etc., can be changed in input
-files.  There are a huge number of formatting options, and all of
-them are described in this document.  Each section of the Notation
-Reference has a @b{See also} subsection, which refers to the
-generated documentation.  In the HTML document, these subsections
-have clickable links.
+Why omit the braces?  Most examples in this manual can be inserted
+into the middle of a longer piece of music.  For these examples,
+it does not make sense to add @code{@w{\relative c'' @{ @}}} --
+you should not place a @code{\relative} inside another
+@code{\relative}!  If we included @code{@w{\relative c'' @{ @}}}
+around every example, you would not be able to copy a small
+documentation example and paste it inside a longer piece of your
+own.  Most people want to add material to an existing piece, so we
+format the manual this way.
 
 
-@node Other documentation
-@unnumberedsubsec Other documentation
+@node Clickable examples
+@unnumberedsubsec Clickable examples
 
-There are a number of other sources of information which may be
-very valuable.
+Many people learn programs by trying and fiddling around with the
+program.  This is also possible with LilyPond.  If you click on a
+picture in the HTML version of this manual, you will see the exact
+LilyPond input that was used to generate that image.  Try it on
+this image:
 
-@itemize
+@c no verbatim here
+@lilypond[quote]
+\relative c'' {
+  c-\markup { \bold \huge { Click here.  } }
+}
+@end lilypond
 
-@item
-@ifhtml
-@ifset bigpage
-@uref{../topdocs/NEWS.html,News}:
-@end ifset
-@ifclear bigpage
-@uref{../../topdocs/NEWS.html,News}:
-@end ifclear
-@end ifhtml
-@ifnothtml
-News:
-@end ifnothtml
-this is a summary of important changes
-and new features in LilyPond since the previous version.
-
-@item @uref{http://lists.gnu.org/archive/html/lilypond-user/, The
-lilypond-user mailist archives}: this is a collection of previous
-emails sent to the user list.  Many questions have been asked
-multiple times; there is a very good chance that if you have a
-question, the answer might be found in these archives.
-
-@item @uref{http://lists.gnu.org/archive/html/lilypond-devel/, The
-lilypond-devel mailist archives}: this is a collection of previous
-emails sent to the developer's list.  The discussion here is more
-technical; if you have an advanced question about lilypond
-internals, the answer might be in these archives.
-
-@item Embedded music fragments: in all HTML documents that have
-music fragments embedded, the exact LilyPond input that was used
-to produce that image can be viewed by clicking the image.
-
-@item Init files: the location of the documentation files that are
-mentioned here can vary from system to system.  On occasion, this
-manual refers to initialization and example files.  Throughout this
-manual, we refer to input files relative to the top-directory of the
-source archive.  For example, @file{input/@/lsr/@/dirname/@/bla@/.ly}
-may refer to the file
-@file{lilypond@/2.x.y/@/input/@/lsr/@/dirname/@/bla@/.ly}.  On binary
-packages for the UNIX platform, the documentation and examples can
-typically be found somewhere below
-@file{/usr/@/share/@/doc/@/lilypond/}.  Initialization files, for
-example @file{scm/@/lily@/.scm}, or @file{ly/@/engraver@/-init@/.ly},
-are usually found in the directory @file{/usr/@/share/@/lilypond/}.
-For more details, see @ref{Other sources of information}.
+By cutting and pasting everything in the @qq{ly snippet} section,
+you have a starting template for experiments.  To see exactly the
+same output (line-width and all), copy everything from @qq{Start
+cut-&-pastable section} to the bottom of the file.
+
+
+@node Keyboard navigation
+@unnumberedsubsec Keyboard navigation
+
+
+
+@node Overview of manuals
+@unnumberedsubsec Overview of manuals
+
+FIXME: a brief discussion about the rest of the LM, and pointers
+to specific places.  like NR for general reference, AU for
+suggestions for writing files, etc.
 
-@end itemize
 
diff --git a/Documentation/learning/tutorial.itely b/Documentation/learning/tutorial.itely
deleted file mode 100644 (file)
index bf3b457..0000000
+++ /dev/null
@@ -1,1396 +0,0 @@
-@c -*- coding: utf-8; mode: texinfo; -*-
-
-@ignore
-    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
-
-    When revising a translation, copy the HEAD committish of the
-    version that you are working on.  See TRANSLATION for details.
-@end ignore
-
-@c \version "2.12.0"
-
-@ignore
-Tutorial guidelines:  (different from policy.txt!)
-- unless you have a really good reason, use either
-    @lilypond[verbatim,quote]
-  or
-    @lilypond[verbatim,quote,relative=2]
-
-  Don't use any other relative=X commands.
-
-- use "aes" and "ees" instead of "as" and "es".  I know it's not
-  correct Dutch naming, but let's not confuse people with this
-  until we get to the Basic notation chapter.
-
-- Add "Music Glossary: @rglos{foo}" to the *top* of the relevant
-  portions of the tutorial.
-
-@end ignore
-
-
-@node Common notation
-@chapter Common notation
-
-This tutorial starts with an introduction to the LilyPond music
-language and explains how to produce printed music.  After this first
-contact we will explain how to create beautiful printed music
-containing common musical notation.
-
-@menu
-* Single staff notation::
-* Multiple notes at once::
-* Songs::
-* Final touches::
-@end menu
-
-
-@node Single staff notation
-@section Single staff notation
-
-This section introduces common notation that is used for one voice
-on one staff.
-
-@menu
-* Accidentals and key signatures::
-* Ties and slurs::
-* Articulation and dynamics::
-* Adding text::
-* Automatic and manual beams::
-* Advanced rhythmic commands::
-@end menu
-
-
-@node Accidentals and key signatures
-@subsection Accidentals and key signatures
-
-@subheading Accidentals
-
-@cindex accidentals
-@cindex accidentals and key signatures
-@cindex sharp
-@cindex double sharp
-@cindex sharp, double
-@cindex flat
-@cindex double flat
-@cindex flat, double
-
-@funindex es
-@funindex is
-@funindex eses
-@funindex isis
-
-Music Glossary: @rglos{sharp}, @rglos{flat}, @rglos{double sharp},
-@rglos{double flat}, @rglos{accidental}.
-
-A @notation{sharp} pitch is made by adding @code{is} to the name,
-and a @notation{flat} pitch by adding @code{es}.  As you might
-expect, a @notation{double sharp} or @notation{double flat} is
-made by adding @code{isis} or @code{eses}.  This syntax is derived
-from note naming conventions in Nordic and Germanic languages,
-like German and Dutch.  To use other names for
-@notation{accidentals}, see @ruser{Note names in other languages}.
-
-@lilypond[verbatim,quote,relative=2]
-cis1 ees fisis, aeses
-@end lilypond
-
-@cindex key signature, setting
-@subheading Key signatures
-
-@cindex key signature
-@cindex major
-@cindex minor
-@cindex accidentals and key signature
-@cindex content vs. layout
-@cindex layout vs. content
-
-@funindex \key
-@funindex key
-@funindex \major
-@funindex major
-@funindex \minor
-@funindex minor
-
-Music Glossary: @rglos{key signature}, @rglos{major},
-@rglos{minor}.
-
-The @notation{key signature} is set with the command @code{\key}
-followed by a pitch and @code{\major} or @code{\minor}.
-
-@lilypond[verbatim,quote,relative=2]
-\key d \major
-a1
-\key c \minor
-a
-@end lilypond
-
-@smallspace
-
-@subheading Warning: key signatures and pitches
-
-Music Glossary: @rglos{accidental}, @rglos{key signature},
-@rglos{pitch}, @rglos{flat}, @rglos{natural}, @rglos{sharp},
-@rglos{transposition}.
-
-To determine whether to print an @notation{accidental}, LilyPond
-examines the pitches and the @notation{key signature}.  The key
-signature only affects the @emph{printed} accidentals, not the
-note's @notation{pitch}!  This is a feature that often causes
-confusion to newcomers, so let us explain it in more detail.
-
-LilyPond makes a sharp distinction between musical content and
-layout.  The alteration (@notation{flat}, @notation{natural sign} or
-@notation{sharp}) of a note is part of the pitch, and is therefore
-musical content.  Whether an accidental (a @emph{printed} flat,
-natural or sharp sign) is printed in front of the corresponding
-note is a question of layout.  Layout is something that follows
-rules, so accidentals are printed automatically according to those
-rules.  The pitches in your music are works of art, so they will
-not be added automatically, and you must enter what you want to
-hear.
-
-In this example:
-
-@lilypond[verbatim,quote,relative=2]
-\key d \major
-d cis fis
-@end lilypond
-
-@noindent
-No note has a printed accidental, but you must still add
-@code{is} and type @code{cis} and @code{fis} in the input file.
-
-The code @code{b} does not mean @qq{print a black dot just on
-the middle line of the staff.}  Rather, it means @qq{there is a
-note with pitch B-natural.}  In the key of A-flat major, it
-@emph{does} get an accidental:
-
-@lilypond[verbatim,quote,relative=2]
-\key aes \major
-b
-@end lilypond
-
-Adding all alterations explicitly might require a little more
-effort when typing, but the advantage is that
-@notation{transposing} is easier, and accidentals can be printed
-according to different conventions.  For some examples how
-accidentals can be printed according to different rules, see
-@ruser{Automatic accidentals}.
-
-
-@seealso
-Notation Reference: @ruser{Note names in other languages},
-@ruser{Accidentals}, @ruser{Automatic accidentals},
-@ruser{Key signature}.
-
-Music Glossary: @rglos{Pitch names}.
-
-
-@node Ties and slurs
-@subsection Ties and slurs
-
-@cindex tie
-@cindex slur
-@cindex slur, phrasing
-@cindex phrasing slur
-
-@funindex ~
-@funindex ( ... )
-@funindex \( ... \)
-
-@subheading Ties
-
-
-Music Glossary: @rglos{tie}.
-
-A @notation{tie} is created by appending a tilde @code{~} to the
-first note being tied.
-
-@lilypond[verbatim,quote,relative=2]
-g4~ g c2~
-c4 ~ c8 a8 ~ a2
-@end lilypond
-
-@subheading Slurs
-
-
-Music Glossary: @rglos{slur}.
-
-A @notation{slur} is a curve drawn across many notes.  The
-starting note and ending note are marked with @code{(} and
-@code{)} respectively.
-
-@lilypond[verbatim,quote,relative=2]
-d4( c16) cis( d e c cis d) e( d4)
-@end lilypond
-
-@subheading Phrasing slurs
-
-Music Glossary: @rglos{slur}, @rglos{phrasing}.
-
-Slurs to indicate longer @notation{phrasing} can be entered with
-@code{\(} and @code{\)}.  You can have both @notation{slurs}
-and phrasing slurs at the same time, but you cannot have
-simultaneous slurs or simultaneous phrasing slurs.
-
-@lilypond[verbatim,quote,relative=2]
-a8(\( ais b c) cis2 b'2 a4 cis,\)
-@end lilypond
-
-@smallspace
-
-@cindex slurs versus ties
-@subheading Warnings: slurs vs. ties
-
-Music Glossary: @rglos{articulation}, @rglos{slur}, @rglos{tie}.
-
-A @notation{slur} looks like a @notation{tie}, but it has a
-different meaning.  A tie simply makes the first note longer, and
-can only be used on pairs of notes with the same pitch.  Slurs
-indicate the @notation{articulation} of notes, and can be used on
-larger groups of notes.  Slurs and ties can be nested.
-
-@lilypond[verbatim,quote,relative=2]
-c2~( c8 fis fis4 ~ fis2 g2)
-@end lilypond
-
-
-@seealso
-Notation Reference: @ruser{Ties}, @ruser{Slurs},
-@ruser{Phrasing slurs}.
-
-
-@node Articulation and dynamics
-@subsection Articulation and dynamics
-
-
-@subheading Articulations
-
-@cindex articulation
-@cindex accent
-@cindex staccato
-
-Music Glossary: @rglos{articulation}.
-
-Common @notation{articulations} can be added to a note using a
-dash @code{-} and a single character:
-
-@lilypond[verbatim,quote,relative=2]
-c-. c-- c-> c-^ c-+ c-_
-@end lilypond
-
-@subheading Fingerings
-
-@cindex fingering
-
-@funindex ^
-@funindex _
-
-Music Glossary: @rglos{fingering}.
-
-Similarly, @notation{fingering} indications can be added to a note
-using a dash (@code{-}) and the digit to be printed:
-
-@lilypond[verbatim,quote,relative=2]
-c-3 e-5 b-2 a-1
-@end lilypond
-
-Articulations and fingerings are usually placed automatically, but
-you can specify a direction by replacing the dash (@code{-}) with
-@code{^} (up) or @code{_} (down).  You can also use multiple
-articulations on the same note.  However, in most cases it is best
-to let LilyPond determine the articulation directions.
-
-@lilypond[verbatim,quote,relative=2]
-c_-^1 d^. f^4_2-> e^-_+
-@end lilypond
-
-@subheading Dynamics
-
-@cindex dynamics
-@cindex decrescendo
-@cindex crescendo
-
-@funindex \f
-@funindex \ff
-@funindex \mp
-@funindex \p
-@funindex \mf
-@funindex \pp
-@funindex \<
-@funindex <
-@funindex \>
-@funindex >
-@funindex \!
-@funindex !
-
-Music Glossary: @rglos{dynamics}, @rglos{crescendo},
-@rglos{decrescendo}.
-
-@notation{Dynamic} signs are made by adding the markings (with a
-backslash) to the note:
-
-@lilypond[verbatim,quote,relative=2]
-c\ff c\mf c\p c\pp
-@end lilypond
-
-
-@notation{Crescendi} and @notation{decrescendi} are started with
-the commands @code{\<} and @code{\>}.  The next dynamics sign, for
-example @code{\f}, will end the (de)crescendo, or the command
-@code{\!} can be used:
-
-@lilypond[verbatim,quote,relative=2]
-c2\< c2\ff\> c2 c2\!
-@end lilypond
-
-
-@seealso
-Notation Reference: @ruser{Articulations and ornamentations},
-@ruser{Fingering instructions}, @ruser{Dynamics}.
-
-
-@node Adding text
-@subsection Adding text
-
-@cindex text, adding
-@cindex adding text
-@cindex markup
-
-@funindex \markup
-@funindex markup
-
-Text may be added to your scores:
-
-@lilypond[verbatim,quote,relative=2]
-c1^"espr" a_"legato"
-@end lilypond
-
-Extra formatting may be added with the @code{\markup} command:
-
-@lilypond[verbatim,quote,relative=2]
-c1^\markup{ \bold espr}
-a1_\markup{
-  \dynamic f \italic \small { 2nd } \hspace #0.1 \dynamic p
-}
-@end lilypond
-
-
-@seealso
-Notation Reference: @ruser{Writing text}.
-
-
-@node Automatic and manual beams
-@subsection Automatic and manual beams
-
-@cindex beaming
-@cindex automatic beams
-@cindex manual beams
-@cindex beams, automatic
-@cindex beams, manual
-@cindex beams, by hand
-
-@funindex [ ... ]
-@funindex [
-@funindex ]
-@funindex \autoBeamOff
-@funindex autoBeamOff
-@funindex \autoBeamOn
-@funindex autoBeamOn
-
-Music Glossary: @rglos{beam}.
-
-All @notation{beams} are drawn automatically:
-
-@lilypond[verbatim,quote,relative=2]
-a8 ais d ees r d c16 b a8
-@end lilypond
-
-If you do not like the automatic beams, they may be overridden
-manually.  To correct just an occasional beam mark the first note
-to be beamed with @code{[} and the last one with @code{]}.
-
-@lilypond[verbatim,quote,relative=2]
-a8[ ais] d[ ees r d] a b
-@end lilypond
-
-If you want to turn off automatic beaming entirely or for an
-extended section of music, use the command @code{\autoBeamOff}
-to turn off automatic beaming and @code{\autoBeamOn} to turn it
-on again.
-
-@lilypond[verbatim,quote,relative=2]
-\autoBeamOff
-a8 c b4 d8. c16 b4
-\autoBeamOn
-a8 c b4 d8. c16 b4
-@end lilypond
-
-
-@seealso
-Notation Reference: @ruser{Automatic beams}, @ruser{Manual beams}.
-
-
-@node Advanced rhythmic commands
-@subsection Advanced rhythmic commands
-
-@subheading Partial measure
-
-@cindex pickup
-@cindex anacrusis
-@cindex partial measure
-
-@funindex \partial
-@funindex partial
-
-Music Glossary: @rglos{anacrusis}.
-
-A pickup (or @notation{anacrusis}) is entered with the keyword
-@code{\partial}.  It is followed by a duration: @code{\partial 4}
-is a quarter note pickup and @code{\partial 8} an eighth note.
-
-@lilypond[verbatim,quote,relative=2]
-\partial 8
-f8 c2 d
-@end lilypond
-
-@subheading Tuplets
-
-@cindex tuplets
-@cindex triplets
-
-@funindex \times
-@funindex times
-
-Music Glossary: @rglos{note value}, @rglos{triplet}.
-
-@notation{Tuplets} are made with the @code{\times} keyword.  It
-takes two arguments: a fraction and a piece of music.  The
-duration of the piece of music is multiplied by the fraction.
-Triplets make notes occupy 2/3 of their notated duration, so a
-@notation{triplet} has 2/3 as its fraction
-
-@lilypond[verbatim,quote,relative=2]
-\times 2/3 { f8 g a }
-\times 2/3 { c r c }
-\times 2/3 { f,8 g16[ a g a] }
-\times 2/3 { d4 a8 }
-@end lilypond
-
-@subheading Grace notes
-
-@cindex grace notes
-@cindex acciaccatura
-@cindex appoggiatura
-
-@funindex \grace
-@funindex grace
-@funindex \acciaccatura
-@funindex acciaccatura
-@funindex \appoggiatura
-@funindex acciaccatura
-
-Music Glossary: @rglos{grace notes}, @rglos{acciaccatura},
-@rglos{appoggiatura}.
-
-@notation{Grace notes} are created with the @code{\grace} command,
-although they can also be created by prefixing a music expression
-with the keyword @code{\appoggiatura} or @code{\acciaccatura}:
-
-@lilypond[verbatim,quote,relative=2]
-c2 \grace { a32[ b] } c2
-c2 \appoggiatura b16 c2
-c2 \acciaccatura b16 c2
-@end lilypond
-
-
-@seealso
-Notation Reference: @ruser{Grace notes}, @ruser{Tuplets},
-@ruser{Upbeats}.
-
-
-@node Multiple notes at once
-@section Multiple notes at once
-
-This section introduces having more than one note at the same
-time: multiple instruments, multiple staves for a single
-instrument (i.e. piano), and chords.
-
-Polyphony in music refers to having more than one voice occurring
-in a piece of music.  Polyphony in LilyPond refers to having more
-than one voice on the same staff.
-
-@menu
-* Music expressions explained::
-* Multiple staves::
-* Staff groups::
-* Combining notes into chords::
-* Single staff polyphony::
-@end menu
-
-
-@node Music expressions explained
-@subsection Music expressions explained
-
-@cindex music expression
-@cindex expression, music
-@cindex compound music expression
-@cindex music expression, compound
-
-In LilyPond input files, music is represented by @emph{music
-expressions}.  A single note is a music expression:
-
-@lilypond[verbatim,quote,relative=2]
-a4
-@end lilypond
-
-Enclosing a note in braces creates a @emph{compound music
-expression}.  Here we have created a compound music expression
-with two notes:
-
-@lilypond[verbatim,quote,relative=2]
-{ a4 g4 }
-@end lilypond
-
-Putting a group of music expressions (e.g. notes) in braces means
-that they are in sequence (i.e. each one follows the previous
-one).  The result is another music expression:
-
-@lilypond[verbatim,quote,relative=2]
-{ { a4 g } f g }
-@end lilypond
-
-@subheading Analogy: mathematical expressions
-
-This mechanism is similar to mathematical formulas: a big formula
-is created by composing small formulas.  Such formulas are called
-expressions, and they can contain other expressions, so you can
-make arbitrarily complex and large expressions.  For example,
-
-@example
-1
-
-1 + 2
-
-(1 + 2) * 3
-
-((1 + 2) * 3) / (4 * 5)
-@end example
-
-This is a sequence of expressions, where each expression is
-contained in the next (larger) one.  The simplest expressions are
-numbers, and larger ones are made by combining expressions with
-operators (like @code{+}, @code{*} and @code{/}) and parentheses.
-Like mathematical expressions, music expressions can be nested
-arbitrarily deep, which is necessary for complex music like
-polyphonic scores.
-
-
-@subheading Simultaneous music expressions: multiple staves
-
-@cindex multiple staves
-@cindex staves, multiple
-@cindex polyphony
-@cindex combining expressions in parallel
-@cindex parallel expressions
-@cindex expressions, parallel
-@cindex relative notes and simultaneous music
-@cindex relative notes and parallel expressions
-@cindex simultaneous music and relative notes
-@cindex parallel expressions and relative notes
-
-@funindex <<
-@funindex >>
-@funindex << ... >>
-
-Music Glossary: @rglos{polyphony}.
-
-This technique is useful for @notation{polyphonic} music.  To
-enter music with more voices or more staves, we combine
-expressions in parallel.  To indicate that two voices should play
-at the same time, simply enter a simultaneous combination of music
-expressions.  A @q{simultaneous} music expression is formed by
-enclosing expressions inside @code{<<} and @code{>>}.  In the
-following example, three sequences (all containing two separate
-notes) are combined simultaneously:
-
-@lilypond[verbatim,quote]
-\relative c'' {
-  <<
-    { a4 g }
-    { f e }
-    { d b }
-  >>
-}
-@end lilypond
-
-Note that we have indented each level of the input with a
-different amount of space.  LilyPond does not care how much (or
-little) space there is at the beginning of a line, but indenting
-LilyPond code like this makes it much easier for humans to read.
-
-@warning{each note is relative to the previous note in
-the input, not relative to the @code{c''} in the initial
-@code{@bs{}relative} command.}
-
-
-@subheading Simultaneous music expressions: single staff
-
-To determine the number of staves in a piece, LilyPond looks at
-the beginning of the first expression.  If there is a single note,
-there is one staff; if there is a simultaneous expression, there
-is more than one staff.  The following example shows a complex
-expression, but as it begins with a single note it will be set
-out on a single staff.
-
-@lilypond[verbatim,quote]
-\relative c'' {
-  c2 <<c e>>
-  << { e f } { c <<b d>> } >>
-}
-@end lilypond
-
-@node Multiple staves
-@subsection Multiple staves
-
-@cindex multiple staves
-@cindex staves, multiple
-@cindex context
-@cindex context, notation
-@cindex notation context
-
-@funindex \new Staff
-@funindex new Staff
-@funindex Staff
-@funindex \new
-@funindex new
-@funindex Score
-@funindex Voice
-@funindex Lyrics
-@funindex ChordNames
-
-LilyPond input files are constructed out of music expressions, as
-we saw in @ref{Music expressions explained}.  If the score begins
-with simultaneous music expressions, LilyPond creates multiples
-staves.  However, it is easier to see what happens if we create
-each staff explicitly.
-
-To print more than one staff, each piece of music that makes up a
-staff is marked by adding @code{\new Staff} before it.  These
-@code{Staff} elements are then combined in parallel with @code{<<}
-and @code{>>}:
-
-@lilypond[verbatim,quote]
-\relative c'' {
-  <<
-    \new Staff { \clef treble c }
-    \new Staff { \clef bass c,, }
-  >>
-}
-@end lilypond
-
-The command @code{\new} introduces a @q{notation context.}  A
-notation context is an environment in which musical events (like
-notes or @code{\clef} commands) are interpreted.  For simple
-pieces, such notation contexts are created automatically.  For
-more complex pieces, it is best to mark contexts explicitly.
-
-There are several types of contexts.  @code{Score}, @code{Staff},
-and @code{Voice} handle melodic notation, while @code{Lyrics} sets
-lyric texts and @code{ChordNames} prints chord names.
-
-In terms of syntax, prepending @code{\new} to a music expression
-creates a bigger music expression.  In this way it resembles the
-minus sign in mathematics.  The formula @math{(4+5)} is an
-expression, so @math{-(4+5)} is a bigger expression.
-
-Time signatures entered in one staff affects all other staves by
-default.  On the other hand, the key signature of one staff does
-@emph{not} affect other staves.  This different default behavior
-is because scores with transposing instruments are more common
-than polyrhythmic scores.
-
-@lilypond[verbatim,quote]
-\relative c'' {
-  <<
-    \new Staff { \clef treble \key d \major \time 3/4 c }
-    \new Staff { \clef bass c,, }
-  >>
-}
-@end lilypond
-
-
-
-
-@node Staff groups
-@subsection Staff groups
-
-@cindex piano staff
-@cindex staff, piano
-@cindex choir staff
-@cindex staff, choir
-@cindex grand staff
-@cindex staff, grand
-@cindex staff group
-
-@funindex PianoStaff
-@funindex GrandStaff
-@funindex ChoirStaff
-
-Music Glossary: @rglos{brace}.
-
-Piano music is typeset in two staves connected by a
-@notation{brace}.
-Printing such a staff is similar to the polyphonic example in
-@ref{Multiple staves}.  However, now this entire expression is
-inserted inside a @code{PianoStaff}:
-
-@example
-\new PianoStaff <<
-  \new Staff @dots{}
-  \new Staff @dots{}
->>
-@end example
-
-Here is a small example:
-
-@lilypond[verbatim,quote]
-\relative c'' {
-  \new PianoStaff <<
-    \new Staff { \time 2/4 c4 e g g, }
-    \new Staff { \clef bass c,, c' e c }
-  >>
-}
-@end lilypond
-
-Other staff groupings are introduced with @code{\new GrandStaff},
-suitable for orchestral scores, and @w{@code{\new ChoirStaff}},
-suitable for vocal scores.  These staff groups each form another
-type of context, one that generates the brace at the left end of
-every system and also controls the extent of bar lines.
-
-
-@seealso
-Notation Reference: @ruser{Keyboard and other multi-staff
-instruments},
-@ruser{Displaying staves}.
-
-
-@node Combining notes into chords
-@subsection Combining notes into chords
-
-@cindex chords
-@cindex note durations in chords
-
-@funindex <
-@funindex >
-@funindex < ... >
-
-Music Glossary: @rglos{chord}.
-
-We saw earlier how notes can be combined into @notation{chords} by
-indicating they are simultaneous by enclosing them in double angle
-brackets.  However, the normal way of indicating a chord is to
-surround the pitches with @emph{single} angle brackets.  Note that
-all the notes in a chord must have the same duration, and that the
-duration is placed after the closing bracket.
-
-@lilypond[verbatim,quote,relative=2]
-r4 <c e g>4 <c f a>2
-@end lilypond
-
-Think of chords as almost equivalent to single notes:
-almost everything you can attach to a single note can be attached
-to a chord, and everything must go @emph{outside} the angle
-brackets.  For example, you can combine markings like beams and
-ties with chords.  They must be placed outside the angle brackets.
-
-@lilypond[verbatim,quote,relative=2]
-r4 <c e g>8[ <c f a>]~ <c f a>2
-r4 <c e g>8( <c e g>\> <c e g>4 <c f a>\!)
-@end lilypond
-
-
-@node Single staff polyphony
-@subsection Single staff polyphony
-
-@cindex polyphony
-@cindex multiple voices
-@cindex voices, more on one staff
-@cindex single staff polyphony
-@cindex spacer rest
-@cindex rest, spacer
-
-@funindex << ... \\ ... >>
-@funindex <<
-@funindex \\
-@funindex >>
-
-Polyphonic music in lilypond, while not difficult, uses concepts
-that we haven't discussed yet, so we're not going to introduce
-them here. Instead, the following sections introduce these concepts
-and explain them thoroughly.
-
-@seealso
-Learning Manual: @ref{Voices contain music}.
-
-Notation Reference: @ruser{Simultaneous notes}.
-
-@node Songs
-@section Songs
-
-This section introduces vocal music and simple song sheets.
-
-@menu
-* Setting simple songs::
-* Aligning lyrics to a melody::
-* Lyrics to multiple staves::
-@end menu
-
-
-@node Setting simple songs
-@subsection Setting simple songs
-
-@cindex lyrics
-@cindex songs
-
-@funindex \addlyrics
-@funindex addlyrics
-
-Music Glossary: @rglos{lyrics}.
-
-Here is the start of the melody to a nursery
-rhyme, @notation{Girls and boys come out to play}:
-
-@lilypond[verbatim,quote]
-\relative c'' {
-  \key g \major
-  \time 6/8
-  d4 b8 c4 a8 d4 b8 g4
-}
-@end lilypond
-
-The @notation{lyrics} can be set to these notes, combining both
-with the @code{\addlyrics} keyword.  Lyrics are entered by
-separating each syllable with a space.
-
-@lilypond[verbatim,quote]
-<<
-  \relative c'' {
-    \key g \major
-    \time 6/8
-    d4 b8 c4 a8 d4 b8 g4
-  }
-  \addlyrics {
-    Girls and boys come out to play,
-  }
->>
-@end lilypond
-
-Note the curly brackets delimiting both the music and the lyrics,
-and the double angle brackets @w{@code{<< ... >>}} around the
-whole piece to show that the music and lyrics are to occur at the
-same time.
-
-@node Aligning lyrics to a melody
-@subsection Aligning lyrics to a melody
-
-@cindex melisma
-@cindex extender line
-@cindex hyphens
-@cindex underscore
-@cindex lyrics, aligning
-@cindex aligning lyrics
-@cindex lyrics, multi-syllable words
-@cindex words with multiple syllables in lyrics
-
-Music Glossary: @rglos{melisma}, @rglos{extender line}.
-
-The next line in the nursery rhyme is @notation{The moon doth
-shine as bright as day}.  Let's extend it:
-
-@lilypond[verbatim,quote]
-<<
-  \relative c'' {
-    \key g \major
-    \time 6/8
-    d4 b8 c4 a8 d4 b8 g4
-    g8 a4 b8 c b a d4 b8 g4.
-  }
-  \addlyrics {
-    Girls and boys come out to play,
-    The moon doth shine as bright as day;
-  }
->>
-@end lilypond
-
-We see the extra lyrics do not align properly with the notes.  The
-word @notation{shine} should be sung on two notes, not one.  This
-is called a @notation{melisma}, a single syllable sung to more
-than one note.  There are several ways to spread a syllable over
-multiple notes, the simplest being to add a slur across them, for
-details, see @ref{Ties and slurs}:
-
-@lilypond[verbatim,quote]
-<<
-  \relative c'' {
-    \key g \major
-    \time 6/8
-    d4 b8 c4 a8 d4 b8 g4
-    g8 a4 b8 c( b) a d4 b8 g4.
-  }
-  \addlyrics {
-    Girls and boys come out to play,
-    The moon doth shine as bright as day;
-  }
->>
-@end lilypond
-
-The words now line up correctly with the notes, but the automatic
-beaming for the notes above @notation{shine as} does not look right.
-We can correct this by inserting manual beaming commands to override
-the automatic beaming here, for details, see @ref{Automatic and
-manual beams}.
-
-@lilypond[verbatim,quote]
-<<
-  \relative c'' {
-    \key g \major
-    \time 6/8
-    d4 b8 c4 a8 d4 b8 g4
-    g8 a4 b8 c([ b]) a d4 b8 g4.
-  }
-  \addlyrics {
-    Girls and boys come out to play,
-    The moon doth shine as bright as day;
-  }
->>
-@end lilypond
-
-As an alternative to using slurs, the melismata may be indicated
-in just the lyrics by using an underscore @code{_} for each note
-that should be included in the melisma:
-
-@lilypond[verbatim,quote]
-<<
-  \relative c'' {
-    \key g \major
-    \time 6/8
-    d4 b8 c4 a8 d4 b8 g4
-    g8 a4 b8 c[ b] a d4 b8 g4.
-  }
-  \addlyrics {
-    Girls and boys come out to play,
-    The moon doth shine _ as bright as day;
-  }
->>
-@end lilypond
-
-If a syllable extends over several notes or a single very long
-note an @notation{extender line} is usually drawn from the
-syllable extending under all the notes for that syllable.  It is
-entered as two underscores @code{__}.  Here is an example from the
-first three bars of @notation{Dido's Lament}, from Purcell's
-@notation{Dido and Æneas}:
-
-@lilypond[verbatim,quote]
-<<
-  \relative c'' {
-    \key g \minor
-    \time 3/2
-    g2 a bes bes( a)
-    b c4.( bes8 a4. g8 fis4.) g8 fis1
-  }
-  \addlyrics {
-    When I am laid,
-    am laid __ in earth,
-  }
->>
-@end lilypond
-
-None of the examples so far have involved words containing more
-than one syllable.  Such words are usually split one syllable to a
-note, with hyphens between syllables.  Such hyphens are entered as
-two dashes, resulting in a centered hyphen between the syllables.
-Here is an example showing this and everything we have learned so
-far about aligning lyrics to notes.
-
-@c no ragged-right here because otherwise the hyphens get lost,
-@c but the example is long enough to avoid looking strange.
-@lilypond[verbatim,quote,noragged-right]
-<<
-  \relative c' {
-    \key g \major
-    \time 3/4
-    \partial 4
-    d4 g4 g a8( b) g4 g4
-    b8( c) d4 d e4 c2
-  }
-  \addlyrics {
-    A -- way in a __ man -- ger,
-    no __ crib for a bed, __
-  }
->>
-@end lilypond
-
-Some lyrics, especially those in Italian, require the opposite:
-setting more than one syllable to a single note.  This is
-achieved by linking the syllables together with a single
-underscore @code{_} (with no spaces), or enclosing them in quotes.
-Here's an example from Rossini's @notation{Figaro}, where
-@notation{al} has to be sung on the same note as the @notation{go} of
-@notation{Largo} in Figaro's aria @notation{Largo al factotum}:
-
-@c no ragged-right here because otherwise the hyphens get lost,
-@c but the example is long enough to avoid looking strange.
-@lilypond[verbatim,quote,noragged-right]
-<<
-  \relative c' {
-    \clef bass
-    \key c \major
-    \time 6/8
-    c4.~ c8 d b c([ d]) b c d b c
-  }
-  \addlyrics {
-    Lar -- go_al fac -- to -- tum del -- la cit -- tà
-  }
->>
-@end lilypond
-
-
-@seealso
-Notation Reference: @ruser{Vocal music}.
-
-
-@node Lyrics to multiple staves
-@subsection Lyrics to multiple staves
-
-@cindex lyrics and multiple staves
-@cindex multiple staves and lyrics
-
-The simple approach using @code{\addlyrics} can be used for
-placing lyrics under more than one staff.  Here is an
-example from Handel's @notation{Judas Maccabæus}:
-
-@lilypond[verbatim,quote]
-<<
-  \relative c'' {
-    \key f \major
-    \time 6/8
-    \partial 8
-    c8 c([ bes]) a a([ g]) f f'4. b, c4.~ c4
-  }
-  \addlyrics {
-    Let flee -- cy flocks the hills a -- dorn, __
-  }
-  \relative c' {
-    \key f \major
-    \time 6/8
-    \partial 8
-    r8 r4. r4 c8 a'([ g]) f f([ e]) d e([ d]) c bes'4
-  }
-  \addlyrics {
-    Let flee -- cy flocks the hills a -- dorn,
-  }
->>
-@end lilypond
-
-Scores any more complex than this simple example are better
-produced by separating out the score structure from the notes and
-lyrics with variables.  These are discussed in @ref{Organizing
-pieces with variables}.
-
-
-@seealso
-Notation Reference: @ruser{Vocal music}.
-
-
-@node Final touches
-@section Final touches
-
-This is the final section of the tutorial; it demonstrates how to
-add the final touches to simple pieces, and provides an
-introduction to the rest of the manual.
-
-@menu
-* Organizing pieces with variables::
-* Version number::
-* Adding titles::
-* Absolute note names::
-* After the tutorial::
-@end menu
-
-
-@node Organizing pieces with variables
-@subsection Organizing pieces with variables
-
-@cindex variables
-@cindex variables, defining
-@cindex identifiers
-@cindex macros
-@cindex assigning variables
-@cindex using variables
-@cindex variables, using
-@cindex variables, characters allowed in
-@cindex characters allowed in variables
-
-When all of the elements discussed earlier are combined to produce
-larger files, the music expressions get a lot bigger.  In
-polyphonic music with many staves, the input files can become very
-confusing.  We can reduce this confusion by using
-@emph{variables}.
-
-With variables (also known as identifiers or macros), we can break
-up complex music expressions.  A variable is assigned as
-follows:
-
-@example
-namedMusic = @{ @dots{} @}
-@end example
-
-The contents of the music expression @code{namedMusic} can be used
-later by placing a backslash in front of the name
-(@code{\namedMusic}, just like a normal LilyPond command).
-
-@lilypond[verbatim,quote]
-violin = \new Staff {
-  \relative c'' {
-    a4 b c b
-  }
-}
-cello = \new Staff {
-  \relative c {
-    \clef bass
-    e2 d
-  }
-}
-{
-  <<
-    \violin
-    \cello
-  >>
-}
-@end lilypond
-
-@noindent
-The name of a variable must have alphabetic characters only, no
-numbers, underscores, or dashes.
-
-Variables must be defined @emph{before} the main music
-expression, but may be used as many times as required anywhere after
-they have been defined.  They may even be used in a later definition
-of another variable, giving a way of shortening the input if a
-section of music is repeated many times.
-
-@lilypond[verbatim,quote]
-tripletA = \times 2/3 { c,8 e g }
-barA = { \tripletA \tripletA \tripletA \tripletA }
-
-\relative c'' {
- \barA \barA
-}
-@end lilypond
-
-Variables may be used for many other types of objects in
-the input.  For example,
-
-@example
-width = 4.5\cm
-name = "Wendy"
-aFivePaper = \paper @{ paperheight = 21.0 \cm @}
-@end example
-
-Depending on its contents, the variable can be used in different
-places.  The following example uses the above variables:
-
-@example
-\paper @{
-  \aFivePaper
-  line-width = \width
-@}
-@{
-  c4^\name
-@}
-@end example
-
-
-@node Version number
-@subsection Version number
-
-@cindex versioning
-@cindex version
-@cindex version number
-@cindex upgrades
-@cindex future upgrades
-@cindex updating files
-@cindex files, updating
-
-@funindex \version
-@funindex version
-@funindex convert-ly
-
-The @code{\version} statement records the version of LilyPond that
-was used to write the file:
-
-@example
-\version @w{"@version{}"}
-@end example
-
-@noindent
-By convention, this is placed at the top of your LilyPond file.
-
-These annotations make future upgrades of LilyPond go more
-smoothly.  Changes in the syntax are handled with a special
-program, @command{convert-ly}, and it uses @code{\version} to
-determine what rules to apply.  For details, see
-@rprogram{Updating files with convert-ly}.
-
-
-@node Adding titles
-@subsection Adding titles
-
-@cindex title
-@cindex headers
-@cindex header block
-
-@funindex \header
-@funindex header
-
-The title, composer, opus number, and similar information are
-entered in the @code{\header} block.  This exists outside of the
-main music expression; the @code{\header} block is usually placed
-underneath the version number.
-
-@example
-\version @w{"@version{}"}
-\header @{
-  title = "Symphony"
-  composer = "Me"
-  opus = "Op. 9"
-@}
-
-@{
-  @dots{} music @dots{}
-@}
-@end example
-
-When the file is processed, the title and composer are printed
-above the music.  More information on titling can be found in
-@ruser{Creating titles}.
-
-
-@node Absolute note names
-@subsection Absolute note names
-
-@cindex note names
-@cindex note names, absolute
-@cindex absolute mode
-@cindex absolute values for pitches
-@cindex pitches, absolute values
-@cindex absolute note names
-
-So far we have always used @code{\relative} to define pitches.
-This is the easiest way to enter most music, but another way of
-defining pitches exists: absolute mode.
-
-If you omit the @code{\relative}, LilyPond treats all pitches as
-absolute values.  A @code{c'} will always mean middle C, a
-@code{b} will always mean the note one step below middle C, and a
-@code{g,} will always mean the note on the bottom staff of the
-bass clef.
-
-@lilypond[verbatim,quote]
-{
-  \clef bass
-  c' b g, g,
-  g, f, f c'
-}
-@end lilypond
-
-Here is a four-octave scale:
-
-@lilypond[verbatim,quote]
-{
-  \clef bass
-  c, d, e, f,
-  g, a, b, c
-  d e f g
-  a b c' d'
-  \clef treble
-  e' f' g' a'
-  b' c'' d'' e''
-  f'' g'' a'' b''
-  c'''1
-}
-@end lilypond
-
-As you can see, writing a melody in the treble clef involves a lot
-of quote @code{'} marks.  Consider this fragment from Mozart:
-
-@lilypond[verbatim,quote]
-{
-  \key a \major
-  \time 6/8
-  cis''8. d''16 cis''8 e''4 e''8
-  b'8. cis''16 b'8 d''4 d''8
-}
-@end lilypond
-
-All these quotes makes the input less readable and they are a source
-of errors.  With @code{\relative}, the previous example is much
-easier to read and type:
-
-@lilypond[verbatim,quote]
-\relative c'' {
-  \key a \major
-  \time 6/8
-  cis8. d16 cis8 e4 e8
-  b8. cis16 b8 d4 d8
-}
-@end lilypond
-
-If you make a mistake with an octave mark (@code{'} or @code{,})
-while working in @code{\relative} mode, it is very obvious -- many
-notes will be in the wrong octave.  When working in absolute mode,
-a single mistake will not be as visible, and will not be as easy
-to find.
-
-However, absolute mode is useful for music which has large
-intervals, and is extremely useful for computer-generated LilyPond
-files.
-
-
-
-@node After the tutorial
-@subsection After the tutorial
-
-After finishing the tutorial, you should probably try writing a
-piece or two.  Start by adding notes to one of the
-@ref{Templates}.  If you need any notation that was not covered in
-the tutorial, look at the Notation Reference, starting with
-@ruser{Musical notation}.  If you want to write for an instrument
-ensemble that is not covered in the templates, take a look at
-@ref{Extending the templates}.
-
-Once you have written a few short pieces, read the rest of the
-Learning Manual (chapters 3-5).  There's nothing wrong with
-reading it now, of course!  However, the rest of the Learning
-Manual assumes that you are familiar with LilyPond input.  You may
-wish to skim these chapters right now, and come back to them after
-you have more experience.
-
-In this tutorial and in the rest of the Learning Manual, there is a
-paragraph @strong{See also} at the end of each section, which contains
-cross-references to other sections: you should not follow these
-cross-references at first reading; when you have read all of the
-Learning Manual, you may want to read some sections again and follow
-cross-references for further reading.
-
-If you have not done so already, @emph{please} read
-FIXME FIXME FIXME 
-@c @ref{About the documentation}.
-There is a lot of information about LilyPond, so
-newcomers often do not know where they should look for help.  If
-you spend five minutes reading that section carefully, you might
-save yourself hours of frustration looking in the wrong places!
-
index 247ce44994748c88e518fce218d8e6b0d3abfabb..8097e0bb522e060776296ff8d88b9075aaba1355 100644 (file)
@@ -1510,7 +1510,8 @@ properties are measured in units of an internal property called
 hairpins are given a thickness of 1 unit of @code{line-thickness},
 while the @code{thickness} of a note stem is 1.3.  Note, though,
 that some thickness properties are different; for example, the
-thickness of beams is measured in staff-spaces.
+thickness of beams is controlled by the value of the
+@code{beam-thickness} property, which is measured in staff-spaces.
 
 So how are lengths to be scaled in proportion to the font size?
 This can be done with the help of a special function called
@@ -1768,7 +1769,7 @@ effect to a single note you must either use the equivalent
 followed after the affected note by the corresponding
 @code{\xxxNeutral} command.
 
-@subheading Fingering
+@unnumberedsubsubsec Fingering
 
 @cindex fingering, placement
 @cindex fingering, chords
diff --git a/Documentation/learning/working.itely b/Documentation/learning/working.itely
deleted file mode 100644 (file)
index de89655..0000000
+++ /dev/null
@@ -1,834 +0,0 @@
-@c -*- coding: utf-8; mode: texinfo; -*-
-
-@ignore
-    Translation of GIT committish: FILL-IN-HEAD-COMMITTISH
-
-    When revising a translation, copy the HEAD committish of the
-    version that you are working on.  See TRANSLATION for details.
-@end ignore
-
-@c \version "2.12.0"
-
-@node Working on LilyPond projects
-@chapter Working on LilyPond projects
-
-This section explains how to solve or avoid certain common
-problems.  If you have programming experience, many of these
-tips may seem obvious, but it is still advisable to read
-this chapter.
-
-
-@menu
-* Suggestions for writing LilyPond input files::
-* When things don't work::
-* Make and Makefiles::
-@end menu
-
-
-@node Suggestions for writing LilyPond input files
-@section Suggestions for writing LilyPond input files
-
-Now you're ready to begin writing larger LilyPond input files --
-not just the little examples in the tutorial, but whole pieces.
-But how should you go about doing it?
-
-As long as LilyPond can understand your input files and produce
-the output that you want, it doesn't matter what your input files
-look like.  However, there are a few other things to consider when
-writing LilyPond input files.
-
-@itemize
-@item What if you make a mistake?  The structure of a LilyPond
-file can make certain errors easier (or harder) to find.
-
-@item What if you want to share your input files with somebody
-else?  In fact, what if you want to alter your own input files in
-a few years?  Some LilyPond input files are understandable at
-first glance; others may leave you scratching your head
-for an hour.
-
-@item What if you want to upgrade your LilyPond file for use
-with a later version of LilyPond?  The input syntax changes
-occasionally as LilyPond improves.  Most changes can be
-done automatically with @code{convert-ly}, but some changes
-might require manual assistance.  LilyPond input files can be
-structured in order to be easier (or harder) to update.
-
-@end itemize
-
-@menu
-* General suggestions::
-* Typesetting existing music::
-* Large projects::
-@end menu
-
-
-@node General suggestions
-@subsection General suggestions
-
-Here are a few suggestions that can help you to avoid or fix
-problems:
-
-@itemize
-@item @strong{Include @code{\version} numbers in every file}.  Note that all
-templates contain @code{\version} information.  We
-highly recommend that you always include the @code{\version}, no matter
-how small your file is.  Speaking from personal experience, it's
-quite frustrating to try to remember which version of LilyPond you were
-using a few years ago.  @command{convert-ly} requires you to declare
-which version of LilyPond you used.
-
-@item @strong{Include checks}: @ruser{Bar and bar number checks},
-@ruser{Octave checks}.  If you include checks every so often, then
-if you make a mistake, you can pinpoint it quicker.  How often is
-@q{every so often}?  It depends on the complexity of the music.
-For very simple music, perhaps just once or twice.  For very
-complex music, perhaps every bar.
-
-@item @strong{One bar per line of text}.  If there is anything complicated,
-either in the music
-itself or in the output you desire, it's often good to write only one bar
-per line.  Saving screen space by cramming eight bars per line just isn't
-worth it if you have to @q{debug} your input files.
-
-@item @strong{Comment your input files}.  Use either bar numbers
-(every so often) or
-references to musical themes (@q{second theme in violins,} @q{fourth
-variation,} etc.).  You may not need comments when you're writing the piece
-for the first time, but if you want to go back to change something two or
-three years later, or if you pass the source over to a friend, it will
-be much more
-challenging to determine your intentions or how your file is structured if
-you didn't comment the file.
-
-@item @strong{Indent your braces}.  A lot of problems are caused by an
-imbalance
-in the number of @code{@{} and @code{@}}.
-
-@item @strong{Explicitly add durations} at the beginnings of sections
-and variables.  If you specify @code{c4 d e} at the beginning of a
-phrase (instead of just @code{c d e}) you can save yourself some
-problems if you rearrange your music later.
-
-@item @strong{Separate tweaks} from music definitions.  See
-@ref{Saving typing with variables and functions}, and
-@ref{Style sheets}.
-
-@end itemize
-
-
-@node Typesetting existing music
-@subsection Typesetting existing music
-
-If you are entering music from an existing score (i.e., typesetting a
-piece of existing sheet music),
-
-@itemize
-
-@item Enter the manuscript (the physical copy of the music) into
-LilyPond one system at a time (but still only one bar per line of text),
-and check each system when you finish it.  You may use the
-@code{showLastLength} or @code{showFirstLength} properties to speed up
-processing -- see @ruser{Skipping corrected music}.
-
-@item Define @code{mBreak = @{ \break @}} and insert @code{\mBreak}
-in the input file whenever the manuscript has a line break.  This
-makes it much easier to compare the LilyPond music to the original
-music.  When you are finished proofreading your score, you may
-define @code{mBreak = @{ @}} to remove all those line breaks.  This
-will allow LilyPond to place line breaks wherever it feels are
-best.
-
-@item When entering a part for a transposing instrument into a
-variable, it is recommended that the notes are wrapped in
-
-@example
-\transpose c natural-pitch @{...@}
-@end example
-(where @code{natural-pitch} is the open pitch of the instrument) so
-that the music in the variable is effectively in C. You can transpose
-it back again when the variable is used, if required, but you might
-not want to (e.g., when printing a score in concert pitch,
-converting a trombone part from treble to bass clef, etc.)
-Mistakes in transpositions are less likely if all the music in
-variables is at a consistent pitch.
-
-Also, only ever transpose to/from C. That means that the only other
-keys you will use are the natural pitches of the instruments - bes
-for a B-flat trumpet, aes for an A-flat clarinet, etc.
-
-@end itemize
-
-
-@node Large projects
-@subsection Large projects
-
-When working on a large project, having a clear structure to your
-lilypond input files becomes vital.
-
-@itemize
-
-@item @strong{Use a variable for each voice}, with a minimum of
-structure inside the definition.  The structure of the
-@code{\score} section is the most likely thing to change;
-the @code{violin} definition is extremely unlikely to change
-in a new version of LilyPond.
-
-@example
-violin = \relative c'' @{
-g4 c'8. e16
-@}
-...
-\score @{
-  \new GrandStaff @{
-    \new Staff @{
-      \violin
-    @}
-  @}
-@}
-@end example
-
-@item @strong{Separate tweaks from music definitions}.  This
-point was made previously, but for large
-projects it is absolutely vital.  We might need to change
-the definition of @code{fthenp}, but then we only need
-to do this once, and we can still avoid touching anything
-inside @code{violin}.
-
-@example
-fthenp = _\markup@{
-  \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
-violin = \relative c'' @{
-g4\fthenp c'8. e16
-@}
-@end example
-
-@end itemize
-
-
-@node When things don't work
-@section When things don't work
-
-@menu
-* Updating old input files::
-* Common errors::
-* Troubleshooting (taking it all apart)::
-* Minimal examples::
-@end menu
-
-@node Updating old input files
-@subsection Updating old input files
-
-@cindex convert-ly
-@cindex updating old input files
-
-The LilyPond input syntax occasionally changes.  As LilyPond itself
-improves, the syntax (input language) is modified accordingly.  Sometimes
-these changes are made to make the input easier to read and write or
-sometimes the changes are made to accommodate new features of LilyPond.
-
-LilyPond comes with a file that makes this updating easier:
-@code{convert-ly}.  For details about how to run this program, see
-@rprogram{Updating files with convert-ly}.
-
-Unfortunately, @code{convert-ly} cannot handle all input changes.  It
-takes care of simple search-and-replace changes (such as @code{raggedright}
-becoming @code{ragged-right}), but some changes are too
-complicated.  The syntax changes that @code{convert-ly} cannot handle
-are listed in @rprogram{Updating files with convert-ly}.
-
-For example, in LilyPond 2.4 and earlier, accents and non-English
-letters were entered using LaTeX -- for example,
-@code{No\"el} (this would print the French word for
-@q{Christmas}).  In LilyPond 2.6 and above, the special
-@code{ë} must be entered directly into the LilyPond file as an
-UTF-8 character.  @code{convert-ly} cannot change all the LaTeX
-special characters into UTF-8 characters; you must manually update
-your old LilyPond input files.
-
-@node Common errors
-@subsection Common errors
-
-The error conditions described below occur often, yet the cause
-is not obvious or easily found.  Once seen and understood, they
-are easily handled.
-
-
-@menu
-* Music runs off the page::
-* An extra staff appears::
-* Apparent error in ../ly/init.ly::
-* Error message Unbound variable %::
-* Error message FT_Get_Glyph_Name::
-@end menu
-
-@node Music runs off the page
-@unnumberedsubsubsec Music runs off the page
-
-Music running off the page over the right margin or appearing
-unduly compressed is almost always due to entering an incorrect
-duration on a note, causing the final note in a measure to extend
-over the bar line.  It is not invalid if the final note in a
-measure does not end on the automatically entered bar line, as the
-note is simply assumed to carry over into the next measure.  But
-if a long sequence of such carry-over measures occurs the music
-can appear compressed or may flow off the page because automatic
-line breaks can be inserted only at the end of complete measures,
-i.e., where all notes end before or at the end of the measure.
-
-@warning{An incorrect duration can cause line breaks to be
-inhibited, leading to a line of highly compressed music or
-music which flows off the page.}
-
-The incorrect duration can be found easily if bar checks are used,
-see @ruser{Bar and bar number checks}.
-
-If you actually intend to have a series of such carry-over measures
-you will need to insert an invisible bar line where you want the
-line to break.  For details, see @ruser{Bar lines}.
-
-
-@node An extra staff appears
-@unnumberedsubsubsec An extra staff appears
-
-If contexts are not created explicitly with @code{\new} they will be
-silently created as soon as a command is encountered which cannot
-be applied to an existing context.  In simple scores the automatic
-creation of contexts is useful, and most of the examples in the
-LilyPond manuals take advantage of this simplification.  But
-occasionally the silent creation of contexts can give rise to
-unexpected new staves or scores.  For example, it might be expected
-that the following code would cause all note heads within the
-following staff to be colored red, but in fact it results in two
-staves with the note heads remaining the default black in the lower
-staff.
-
-@lilypond[quote,verbatim,relative=2]
-\override Staff.NoteHead #'color = #red
-\new Staff { a }
-@end lilypond
-
-This is because a @code{Staff} context does not exist when the
-override is processed, so one is implicitly created and the override
-is applied to it, but then the @code{\new Staff} command creates
-another, separate, staff into which the notes are placed.  The
-correct code to color all note heads red is
-
-@lilypond[quote,verbatim,relative=2]
-\new Staff {
-  \override Staff.NoteHead #'color = #red
-  a
-}
-@end lilypond
-
-As a second example, if a @code{\relative} command is placed inside
-a @code{\repeat} command two staves result, the second offset from
-the first, because the @code{\repeat} command generates two
-@code{\relative} blocks, which each implicitly create @code{Staff}
-and @code{Voice} blocks.
-
-@lilypond[quote,verbatim]
-\repeat unfold 2 \relative { c d e f }
-@end lilypond
-
-The correct way is to reverse the @code{\repeat} and
-@code{\relative} commands, like this:
-
-@lilypond[quote,verbatim]
-\relative {
-  \repeat unfold 2 { c d e f }
-}
-@end lilypond
-
-
-@node Apparent error in ../ly/init.ly
-@unnumberedsubsubsec Apparent error in @code{../ly/init.ly}
-
-Various obscure error messages may appear about syntax errors in
-@code{../ly/init.ly} if the input file is not correctly formed,
-for example, if it does not contain correctly
-matched braces or quote signs.
-
-The most common error is a missing brace, (@code{@}}), at the end of
-a @code{score} block.  Here the solution is obvious: check the
-@code{score} block is correctly terminated.  The correct structure
-of an input file is described in @ref{How LilyPond input files work}.
-Using an editor which automatically highlights matching brackets and
-braces is helpful to avoid such errors.
-
-This error message can also appear if a terminating quote sign,
-(@code{"}), is omitted.  In this case an accompanying error message
-should give a line number close to the line in error.  The
-mismatched quote will usually be on the line one or two above.
-
-@node Error message Unbound variable %
-@unnumberedsubsubsec Error message Unbound variable %
-
-This error message will appear at the bottom of the console
-output or log file together with a @qq{GUILE signalled an error ...}
-message every time a Scheme routine is called which (invalidly)
-contains a @emph{LilyPond} rather than a @emph{Scheme} comment.
-
-LilyPond comments begin with a percent sign, (@code{%}), and must
-not be used within Scheme routines.  Scheme comments begin with a
-semi-colon, (@code{;}).
-
-@node Error message FT_Get_Glyph_Name
-@unnumberedsubsubsec Error message FT_Get_Glyph_Name
-
-This error messages appears in the console output or log file if
-an input file contains a non-ASCII character and was not saved in
-UTF-8 encoding.  For details, see @ruser{Text encoding}.
-
-@node Troubleshooting (taking it all apart)
-@subsection Troubleshooting (taking it all apart)
-
-Sooner or later, you will write a file that LilyPond cannot
-compile.  The messages that LilyPond gives may help
-you find the error, but in many cases you need to do some
-investigation to determine the source of the problem.
-
-The most powerful tools for this purpose are the
-single line comment (indicated by @code{%}) and the block
-comment (indicated by @code{%@{ ... %@}}).  If you don't
-know where a problem is, start commenting out huge portions
-of your input file.  After you comment out a section, try
-compiling the file again.  If it works, then the problem
-must exist in the portion you just commented.  If it doesn't
-work, then keep on commenting out material until you have
-something that works.
-
-In an extreme case, you might end up with only
-
-@example
-\score @{
-  <<
-    % \melody
-    % \harmony
-    % \bass
-  >>
-  \layout@{@}
-@}
-@end example
-
-@noindent
-(in other words, a file without any music)
-
-If that happens, don't give up.  Uncomment a bit -- say,
-the bass part -- and see if it works.  If it doesn't work,
-then comment out all of the bass music (but leave
-@code{\bass} in the @code{\score} uncommented.
-
-@example
-bass = \relative c' @{
-%@{
-  c4 c c c
-  d d d d
-%@}
-@}
-@end example
-
-Now start slowly uncommenting more and more of the
-@code{bass} part until you find the problem line.
-
-Another very useful debugging technique is constructing
-@ref{Minimal examples}.
-
-
-@node Minimal examples
-@subsection Minimal examples
-
-A minimal example is an example which is as small as possible.  These
-examples are much easier to understand than long examples.  Minimal
-examples are used for
-
-@itemize
-@item Bug reports
-@item Sending a help request to mailing lists
-@item Adding an example to the @uref{http://lsr.dsi.unimi.it/,
-LilyPond Snippet Repository}
-@end itemize
-
-To construct an example which is as small as possible, the rule is
-quite simple: remove anything which is not necessary.  When trying to
-remove unnecessary parts of a file, it is a very good idea to comment
-out lines instead of deleting them.  That way, if you discover that you
-actually @emph{do} need some lines, you can uncomment them, instead of
-typing them in from scratch.
-
-There are two exceptions to the @qq{as small as possible} rule:
-
-@itemize
-@item Include the @code{\version} number.
-@item If possible, use @code{\paper@{ ragged-right=##t @}} at the
-top of your example.
-@end itemize
-
-The whole point of a minimal example is to make it easy to read:
-
-@itemize
-@item Avoid using complicated notes, keys, or time signatures, unless you
-wish to demonstrate something is about the behavior of those items.
-@item Do not use @code{\override} commands unless that is the point of the
-example.
-@end itemize
-
-
-
-@node Make and Makefiles
-@section Make and Makefiles
-
-@cindex makefiles
-@cindex make
-
-Pretty well all the platforms Lilypond can run on support a software
-facility called @code{make}. This software reads a special file called a
-@code{Makefile} that defines what files depend on what others and what
-commands you need to give the operating system to produce one file from
-another. For example the makefile would spell out how to produce
-@code{ballad.pdf} and @code{ballad.midi} from @code{ballad.ly} by
-running Lilypond.
-
-There are times when it is a good idea to create a @code{Makefile}
-for your project, either for your own convenience or
-as a courtesy to others who might have access to your source files.
-This is true for very large projects with many included files and
-different output options (e.g. full score, parts, conductor's
-score, piano reduction, etc.), or for projects that
-require difficult commands to build them (such as
-@code{lilypond-book} projects). Makefiles vary greatly in
-complexity and flexibility, according to the needs and skills of
-the authors. The program GNU Make comes installed on GNU/Linux
-distributions and on MacOS X, and it is also available for Windows.
-
-See the @strong{GNU Make Manual} for full details on using
-@code{make}, as what follows here gives only a glimpse of what it
-can do.
-
-The commands to define rules in a makefile differ
-according to platform; for instance the various forms of Linux and
-MacOS use @code{bash}, while Windows uses @code{cmd}. Note that on
-MacOS X, you need to configure the system to use the command-line
-intepreter. Here are some example makefiles, with versions for both
-Linux/MacOS and Windows.
-
-The first example is for an orchestral work in four
-movements with a directory structure as follows:
-
-@example
-Symphony/
-|-- MIDI/
-|-- Makefile
-|-- Notes/
-|   |-- cello.ily
-|   |-- figures.ily
-|   |-- horn.ily
-|   |-- oboe.ily
-|   |-- trioString.ily
-|   |-- viola.ily
-|   |-- violinOne.ily
-|   `-- violinTwo.ily
-|-- PDF/
-|-- Parts/
-|   |-- symphony-cello.ly
-|   |-- symphony-horn.ly
-|   |-- symphony-oboes.ly
-|   |-- symphony-viola.ly
-|   |-- symphony-violinOne.ly
-|   `-- symphony-violinTwo.ly
-|-- Scores/
-|   |-- symphony.ly
-|   |-- symphonyI.ly
-|   |-- symphonyII.ly
-|   |-- symphonyIII.ly
-|   `-- symphonyIV.ly
-`-- symphonyDefs.ily
-@end example
-
-The @code{.ly} files in the @code{Scores} and
-@code{Parts} directories get their notes from @code{.ily}
-files in the @code{Notes} directory:
-
-@example
-%%% top of file "symphony-cello.ly"
-\include ../definitions.ily
-\include ../Notes/cello.ily
-@end example
-
-The makefile will have targets of @code{score} (entire piece in
-full score), @code{movements} (individual movements in full score),
-and @code{parts} (individual parts for performers). There
-is also a target @code{archive} that will create a tarball of
-the source files, suitable for sharing via web or email. Here is
-the makefile for GNU/Linux or MacOS X. It should be saved with the
-name @code{Makefile} in the top directory of the project:
-
-@warning{When a target or pattern rule is defined, the
-subsequent lines must begin with tabs, not spaces.}
-
-@example
-# the name stem of the output files
-piece = symphony
-# determine how many processors are present
-CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
-# The command to run lilypond
-LILY_CMD = lilypond -ddelete-intermediate-files \
-                    -dno-point-and-click -djob-count=$(CPU_CORES)
-
-# The suffixes used in this Makefile.
-.SUFFIXES: .ly .ily .pdf .midi
-
-# Input and output files are searched in the directories listed in
-# the VPATH variable.  All of them are subdirectories of the current
-# directory (given by the GNU make variable `CURDIR').
-VPATH = \
-  $(CURDIR)/Scores \
-  $(CURDIR)/PDF \
-  $(CURDIR)/Parts \
-  $(CURDIR)/Notes
-
-# The pattern rule to create PDF and MIDI files from a LY input file.
-# The .pdf output files are put into the `PDF' subdirectory, and the
-# .midi files go into the `MIDI' subdirectory.
-%.pdf %.midi: %.ly
-        $(LILY_CMD) $<; \           # this line begins with a tab
-        if test -f "$*.pdf"; then \
-            mv "$*.pdf" PDF/; \
-        fi; \
-        if test -f "$*.midi"; then \
-            mv "$*.midi" MIDI/; \
-        fi
-
-notes = \
-  cello.ily \
-  horn.ily \
-  oboe.ily \
-  viola.ily \
-  violinOne.ily \
-  violinTwo.ily
-
-# The dependencies of the movements.
-$(piece)I.pdf: $(piece)I.ly $(notes)
-$(piece)II.pdf: $(piece)II.ly $(notes)
-$(piece)III.pdf: $(piece)III.ly $(notes)
-$(piece)IV.pdf: $(piece)IV.ly $(notes)
-
-# The dependencies of the full score.
-$(piece).pdf: $(piece).ly $(notes)
-
-# The dependencies of the parts.
-$(piece)-cello.pdf: $(piece)-cello.ly cello.ily
-$(piece)-horn.pdf: $(piece)-horn.ly horn.ily
-$(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
-$(piece)-viola.pdf: $(piece)-viola.ly viola.ily
-$(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
-$(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
-
-# Type `make score' to generate the full score of all four
-# movements as one file.
-.PHONY: score
-score: $(piece).pdf
-
-# Type `make parts' to generate all parts.
-# Type `make foo.pdf' to generate the part for instrument `foo'.
-# Example: `make symphony-cello.pdf'.
-.PHONY: parts
-parts: $(piece)-cello.pdf \
-       $(piece)-violinOne.pdf \
-       $(piece)-violinTwo.pdf \
-       $(piece)-viola.pdf \
-       $(piece)-oboes.pdf \
-       $(piece)-horn.pdf
-
-# Type `make movements' to generate files for the
-# four movements separately.
-.PHONY: movements
-movements: $(piece)I.pdf \
-           $(piece)II.pdf \
-           $(piece)III.pdf \
-           $(piece)IV.pdf
-
-all: score parts movements
-
-archive:
-        tar -cvvf stamitz.tar \       # this line begins with a tab
-        --exclude=*pdf --exclude=*~ \
-        --exclude=*midi --exclude=*.tar \
-        ../Stamitz/*
-@end example
-
-
-There are special complications on the Windows platform. After
-downloading and installing GNU Make for Windows, you must set the
-correct path in the system's environment variables so that the
-DOS shell can find the Make program. To do this, right-click on
-"My Computer," then choose @code{Properties} and
-@code{Advanced}. Click @code{Environment Variables}, and then
-in the @code{System Variables} pane, highlight @code{Path}, click
-@code{edit}, and add the path to the GNU Make executable file, which
- will look something like this:
-
-@example
-C:\Program Files\GnuWin32\bin
-@end example
-
-The makefile itself has to be altered to handle different shell
-commands and to deal with spaces that are present
-in some default system directories. The @code{archive} target
-is eliminated since Windows does not have the @code{tar} command,
-and Windows also has a different default extension for midi files.
-
-
-@example
-## WINDOWS VERSION
-##
-piece = symphony
-LILY_CMD = lilypond -ddelete-intermediate-files \
-                    -dno-point-and-click \
-                    -djob-count=$(NUMBER_OF_PROCESSORS)
-
-#get the 8.3 name of CURDIR (workaround for spaces in PATH)
-workdir = $(shell for /f "tokens=*" %%b in ("$(CURDIR)") \
-          do @@echo %%~sb)
-
-.SUFFIXES: .ly .ily .pdf .mid
-
-VPATH = \
-  $(workdir)/Scores \
-  $(workdir)/PDF \
-  $(workdir)/Parts \
-  $(workdir)/Notes
-
-%.pdf %.mid: %.ly
-        $(LILY_CMD) $<      # this line begins with a tab
-        if exist "$*.pdf"  move /Y "$*.pdf"  PDF/ # begin with tab
-        if exist "$*.mid" move /Y "$*.mid" MIDI/  # begin with tab
-
-notes = \
-  cello.ily \
-  figures.ily \
-  horn.ily \
-  oboe.ily \
-  trioString.ily \
-  viola.ily \
-  violinOne.ily \
-  violinTwo.ily
-
-$(piece)I.pdf: $(piece)I.ly $(notes)
-$(piece)II.pdf: $(piece)II.ly $(notes)
-$(piece)III.pdf: $(piece)III.ly $(notes)
-$(piece)IV.pdf: $(piece)IV.ly $(notes)
-
-$(piece).pdf: $(piece).ly $(notes)
-
-$(piece)-cello.pdf: $(piece)-cello.ly cello.ily
-$(piece)-horn.pdf: $(piece)-horn.ly horn.ily
-$(piece)-oboes.pdf: $(piece)-oboes.ly oboe.ily
-$(piece)-viola.pdf: $(piece)-viola.ly viola.ily
-$(piece)-violinOne.pdf: $(piece)-violinOne.ly violinOne.ily
-$(piece)-violinTwo.pdf: $(piece)-violinTwo.ly violinTwo.ily
-
-.PHONY: score
-score: $(piece).pdf
-
-.PHONY: parts
-parts: $(piece)-cello.pdf \
-       $(piece)-violinOne.pdf \
-       $(piece)-violinTwo.pdf \
-       $(piece)-viola.pdf \
-       $(piece)-oboes.pdf \
-       $(piece)-horn.pdf
-
-.PHONY: movements
-movements: $(piece)I.pdf \
-           $(piece)II.pdf \
-           $(piece)III.pdf \
-           $(piece)IV.pdf
-
-all: score parts movements
-@end example
-
-
-The next Makefile is for a @command{lilypond-book} document done in
-LaTeX. This project has an index, which requires that the
-@command{latex} command be run twice to update links. Output files are
-all stored in the @code{out} directory for .pdf output and in the
-@code{htmlout} directory for the html output.
-
-@example
-SHELL=/bin/sh
-FILE=myproject
-OUTDIR=out
-WEBDIR=htmlout
-VIEWER=acroread
-BROWSER=firefox
-LILYBOOK_PDF=lilypond-book --output=$(OUTDIR) --pdf $(FILE).lytex
-LILYBOOK_HTML=lilypond-book --output=$(WEBDIR) $(FILE).lytex
-PDF=cd $(OUTDIR) && pdflatex $(FILE)
-HTML=cd $(WEBDIR) && latex2html $(FILE)
-INDEX=cd $(OUTDIR) && makeindex $(FILE)
-PREVIEW=$(VIEWER) $(OUTDIR)/$(FILE).pdf &
-
-all: pdf web keep
-
-pdf:
-        $(LILYBOOK_PDF)  # begin with tab
-        $(PDF)           # begin with tab
-        $(INDEX)         # begin with tab
-        $(PDF)           # begin with tab
-        $(PREVIEW)       # begin with tab
-
-web:
-        $(LILYBOOK_HTML) # begin with tab
-        $(HTML)          # begin with tab
-        cp -R $(WEBDIR)/$(FILE)/ ./  # begin with tab
-        $(BROWSER) $(FILE)/$(FILE).html &  # begin with tab
-
-keep: pdf
-        cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf  # begin with tab
-
-clean:
-        rm -rf $(OUTDIR) # begin with tab
-
-web-clean:
-        rm -rf $(WEBDIR) # begin with tab
-
-archive:
-        tar -cvvf myproject.tar \ # begin this line with tab
-        --exclude=out/* \
-        --exclude=htmlout/* \
-        --exclude=myproject/* \
-        --exclude=*midi \
-        --exclude=*pdf \
-        --exclude=*~ \
-        ../MyProject/*
-@end example
-
-TODO: make this thing work on Windows
-
-The previous makefile does not work on Windows. An alternative
-for Windows users would be to create a simple batch file
-containing the build commands. This will not
-keep track of dependencies the way a makefile does, but it at
-least reduces the build process to a single command. Save the
-following code as @command{build.bat} or @command{build.cmd}.
-The batch file can be run at the DOS prompt or by simply
-double-clicking its icon.
-
-@example
-lilypond-book --output=out --pdf myproject.lytex
-cd out
-pdflatex myproject
-makeindex myproject
-pdflatex myproject
-cd ..
-copy out\myproject.pdf MyProject.pdf
-@end example
-
-
-@seealso
-Application Usage:
-FIXME
-@c @rprogram{Setup for MacOS X},
-@rprogram{Command-line usage},
-@rprogram{lilypond-book}
index 38609b25efbe6fc8570abcd247e293dedc7ca80f..6cb7efa90456c0ebf05a3510c9481543b872b717 100644 (file)
 @ifhtml
 
 @macro warning{TEXT}
-@cartouche
-@b{Note:} \TEXT\
-@end cartouche
+@html
+<div class="warning">
+@end html
+@strong{Note:} \TEXT\
+@html
+</div>
+@end html
 @end macro
 
 @end ifhtml
 
 @c  Definitions for references:
 @c
+@c     @rgeneral
+@c     @ressay
 @c     @rglos
+@c     @rinternals
 @c     @rlearning
-@c     @ruser
-@c     @ressay
-@c     @rprogram
 @c     @rlsr
-@c     @rinternals
+@c     @rprogram
+@c     @ruser
 @c
 @c  All these also have a @...named version which allows to specify the
 @c  displayed text for the reference as second argument.
 @ref{\TEXT\,,\DISPLAY\,notation-big-page,Notation Reference}
 @end macro
 
+@macro rgeneral{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,general-big-page,General Information}
+@end macro
+
+@macro rgeneralnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,general-big-page,General Information}
+@end macro
+
 @macro ressay{TEXT}
 @vindex \TEXT\
 @ref{\TEXT\,,,essay-big-page,Essay}
 @ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
 @end macro
 
+@macro rgeneral{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,general,General Information}
+@end macro
+
+@macro rgeneralnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,general,General Information}
+@end macro
+
 @macro ressay{TEXT}
 @vindex \TEXT\
 @ref{\TEXT\,,,essay,Essay}
 @ref{\TEXT\,,\DISPLAY\,lilypond-notation,Notation Reference}
 @end macro
 
+@macro rgeneral{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,lilypond-general,General Information}
+@end macro
+
+@macro rgeneralnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,lilypond-general, General Information}
+@end macro
+
 @macro ressay{TEXT}
 @vindex \TEXT\
 @ref{\TEXT\,,,lilypond-essay,Essay}
 @ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
 @end macro
 
+@macro rgeneral{TEXT}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,,general,General Information}
+@end macro
+
+@macro rgeneralnamed{TEXT,DISPLAY}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,\DISPLAY\,general,General Information}
+@end macro
+
 @macro ressay{TEXT}
 @lilyvindex{\TEXT\}
 @ref{\TEXT\,,,essay,Essay}
index d8a8af3ba07933189697cdf442b146159a2cccfe..c3dd9b066d67a896be76bc06b3541c44b4982d7f 100644 (file)
@@ -662,8 +662,8 @@ S: ?,
 FI: ?.
 
 A grace note which takes its time from the rest or note preceding the
-principal note to which it is attached. The acciaccatura is drawn as a small
-eighth note (quaver) with a line drawn through the flag and stem.
+principal note to which it is attached.  The acciaccatura is drawn as a
+small eighth note (quaver) with a line drawn through the flag and stem.
 
 @seealso
 @ref{appoggiatura}, @ref{grace notes}, @ref{ornament}.
@@ -673,7 +673,7 @@ eighth note (quaver) with a line drawn through the flag and stem.
 @section accidental
 
 ES: alteración accidental,
-I: accidento,
+I: alterazione, accidente,
 F: altération accidentelle,
 D: Versetzungszeichen, Akzidenz,
 NL: toevallig (verplaatsings)teken,
@@ -1123,7 +1123,7 @@ No cross-references.
 @section articulation
 
 ES: articulación,
-I: articulazione,
+I: articolazione,
 F: articulation,
 D: Artikulation,
 NL: articulatie,
@@ -1485,7 +1485,7 @@ No cross-references.
 @section bracket
 
 ES: corchete,
-I: ?,
+I: parentesi quadra,
 F: crochet,
 D: ?,
 NL: ?,
@@ -1919,10 +1919,10 @@ the top line high F:
 }
 @end lilypond
 
-Staves of five lines are usually used, and the clef superimposed on
-them indicates which five lines have been selected from this
-@samp{grand staff}. For example, the treble or G clef indicates that
-the top five lines have been selected:
+Staves of five lines are usually used, and the clef superimposed on them
+indicates which five lines have been selected from this @notation{grand
+staff}. For example, the treble or G clef indicates that the top five lines
+have been selected:
 
 @lilypond[quote]
 \score {
@@ -1983,11 +1983,10 @@ the top five lines have been selected:
 The @q{curl} of the G clef is centered on the line that represents the
 pitch G.
 
-In the same way, the bass or F clef indicates that the bottom five
-lines have been selected from the @samp{grand staff}, and the alto or
-C clef indicates the middle five lines have been selected.  This
-relationship is shown below, where the notes show an arpeggio on a C
-major chord.
+In the same way, the bass or F clef indicates that the bottom five lines
+have been selected from the @notation{grand staff}, and the alto or C clef
+indicates the middle five lines have been selected.  This relationship is
+shown below, where the notes show an arpeggio on a C major chord.
 
 @lilypond[quote]
 \score {
@@ -2052,7 +2051,7 @@ major chord.
 @section cluster
 
 ES: racimo,
-I: ?,
+I: cluster,
 F: cluster,
 D: Cluster,
 NL: ?,
@@ -2123,7 +2122,7 @@ Another name for @ref{common time}.
 @section common time
 
 ES: compasillo,
-I: ?,
+I: tempo semplice,
 F: mesure à 4/4,
 D: ?,
 NL: ?,
@@ -2176,7 +2175,7 @@ Intervals larger than an octave.
 @section compound meter
 
 ES: compás compuesto, compás de subdivisión ternaria,
-I: ?,
+I: tempo composto,
 F: mesure composée,
 D: ?,
 NL: ?,
@@ -2247,7 +2246,7 @@ A time signature that additively combines two or more unequal meters, e.g.,
 @section concert pitch
 
 ES: en Do, afinación de concierto,
-I: ?,
+I: intonazione reale,
 F: tonalité de concert, en ut,
 D: ?,
 NL: ?,
@@ -2261,8 +2260,8 @@ all) instruments that play in concert pitch:
 
 @c Let's see how easy (or hard) it is to put bulleted lists in tables.
 
-@multitable {alto trombone} {tenor trombone} {bass trombone}
-@headitem Woodwinds @tab Brass @tab Strings
+@multitable {bassoon} {violoncello}
+@headitem Woodwinds @tab Strings
 
 @item
 @itemize
@@ -2273,14 +2272,6 @@ all) instruments that play in concert pitch:
 
 @tab
 
-@itemize
-@item alto trombone
-@item tenor trombone
-@item bass trombone
-@end itemize
-
-@tab
-
 @itemize
 @item violin
 @item viola
@@ -2289,12 +2280,14 @@ all) instruments that play in concert pitch:
 
 @end multitable
 
+@ignore This needs to be reworked.
 The trombones are a special case: although they are said to be @q{in F} (alto or
 bass) or @q{in B-flat} (tenor), this refers to their fundamental note, not to
 their parts' transposition.  (In fact, the trombones' parts are written at
 concert pitch with an appropriate clef -- alto, tenor or bass.)  This differs
 from other instruments @q{in F}, @q{in B-flat}, and so on, which are transposing
 instruments.
+@end ignore
 
 Instruments that play @q{in C} but in a different octave than what is written
 are, technically speaking, @emph{transposing instruments}:
@@ -2508,7 +2501,7 @@ Compare: @ref{ossia}.
 @section custos
 
 ES: custos,
-I: ?,
+I: custos, guida,
 F: guidon,
 D: Notenzeiger, Custos,
 NL: ?,
@@ -2899,7 +2892,7 @@ FI: diminuendo, hiljentyen.
 @section diminution
 
 ES: ?,
-I: ?,
+I: diminuzione,
 F: diminution,
 D: ?,
 NL: ?,
@@ -3302,7 +3295,7 @@ FI: kesto, aika-arvo.
 @section dynamics
 
 ES: dinámica, matices,
-I: ?,
+I: dinamica,
 F: nuances,
 D: Dynamik, Lautstärke,
 NL: ?,
@@ -3388,7 +3381,7 @@ indicate this information are called dynamic marks.
 @c TODO: add languages
 
 ES: sinalefa,
-I: ?,
+I: elisione,
 F: élision,
 D: ?,
 NL: ?,
@@ -3519,7 +3512,7 @@ Performance indications concerning:
 @section extender line
 
 ES: línea de extensión [de melisma, de bajo cifrado, etc.],
-I: ?,
+I: linea di estensione,
 F: ligne d'extension [de mélisme, de basse chiffrée, etc.],
 D: Fülllinie,
 NL: ?,
@@ -4121,7 +4114,7 @@ counted in the rhythm of the bar.
 @section grand staff
 
 ES: sistema de piano,
-I: accolatura,
+I: accollatura,
 F: système [de portées], accolade,
 D: Akkolade, Klaviersystem,
 NL: piano systeem,
@@ -4280,7 +4273,7 @@ A sequence of chords that terminates a musical phrase or section.
 @section harmonics
 
 ES: sonidos del flautín,
-I: suoni flautati,
+I: armonici,
 F: flageolet, sons harmoniques,
 D: Flageolett-Töne,
 NL: ?,
@@ -4349,7 +4342,7 @@ For harmony that uses three or more notes, see @ref{chord}.
 @section hemiola
 
 ES: hemiolia,
-I: ?,
+I: emiolia, (rarely hemiola or emiola),
 F: hémiole,
 D: ?,
 NL: ?,
@@ -4536,7 +4529,7 @@ The addition of such two intervals forms an octave.
 @section inversion
 
 ES: ?,
-I: ?,
+I: rivolto,
 F: renversement,
 D: ?,
 NL: ?,
@@ -4659,7 +4652,7 @@ key of the music.
 @section laissez vibrer
 
 ES: dejar vibrar,
-I: ?,
+I: laissez vibrer,
 F: laissez vibrer,
 D: ?,
 NL: ?,
@@ -4930,7 +4923,7 @@ FI: sidonta sanoituksessa.
 @section lyrics
 
 ES: letra (de la canción),
-I: ?,
+I: testo,
 F: paroles,
 D: Liedtext, Gesangtext,
 NL: liedtekst,
@@ -4980,7 +4973,7 @@ FI: suuri intervalli.
 @section maxima
 
 ES: ?,
-I: ?,
+I: maxima,
 F: maxima, maxime,
 D: ?,
 NL: ?,
@@ -5078,7 +5071,7 @@ mediant (variant tonic).
 @section melisma
 
 ES: melisma,
-I: ?,
+I: melisma,
 F: mélisme, tenue,
 D: Melisma,
 NL: melisma,
@@ -5099,7 +5092,7 @@ No cross-references.
 @c TODO: add languages
 
 ES: línea de melisma,
-I: ?,
+I: linea del melisma,
 F: trait de mélisme, trait de tenue,
 D: ?,
 NL: ?,
@@ -5124,7 +5117,7 @@ FI: melismaviiva.
 @c TODO: add languages
 
 ES: notación mensural,
-I: ?,
+I: notazione mensurale,
 F: notation mensurale,
 D: ?,
 NL: ?,
@@ -5978,7 +5971,7 @@ bracket, or @notation{loco} see octave marking.
 @section octave mark
 
 ES: indicación de octava,
-I: ?,
+I: segno di ottava,
 F: indication d'octave,
 D: ?,
 NL: ?,
@@ -6369,7 +6362,7 @@ No cross-references.
 @section polymeter
 
 ES: compás polimétrico,
-I: ?,
+I: polimetria,
 F: polymétrie,
 D: ?,
 NL: ?,
@@ -6394,7 +6387,7 @@ parts.
 @section polymetric
 
 ES: polimétrico,
-I: ?,
+I: polimetrico,
 F: polymétrique,
 D: ?,
 NL: ?,
@@ -6413,7 +6406,7 @@ simultaneously or in alternation.
 @section polymetric time signature
 
 ES: compás polimétrico,
-I: ?,
+I: tempo polimetrico,
 F: ?,
 D: ?,
 NL: ?,
@@ -6484,7 +6477,7 @@ No cross-references.
 @section proportion
 
 ES: proporción,
-I: proprozione (?),
+I: proporzione,
 F: proportion,
 D: ?,
 NL: ?,
@@ -6715,7 +6708,7 @@ except in jazz.
 @section quarter tone
 
 ES: cuarto de tonno,
-I: ?,
+I: quarto di tono,
 F: quart de ton,
 D: Viertelton,
 NL: kwart toon,
@@ -6797,7 +6790,7 @@ c1_"c minor" d es f g a! b! c
 @section repeat
 
 ES: repetición,
-I: ritornello,
+I: ripetizione,
 F: barre de reprise,
 D: Wiederholung,
 NL: herhaling,
@@ -6870,6 +6863,7 @@ metrical unit (beat).
 @seealso
 @ref{accent}, @ref{beat}, @ref{measure}, @ref{meter}.
 
+
 @node ritardando
 @section ritardando
 
@@ -6882,7 +6876,8 @@ DK: ritardando,
 S: ritardando,
 FI: ritardando, hidastuen,
 
-Gradually slackening in speed.  Mostly abbreviated to rit.@: or ritard.
+Gradually slackening in speed.  Mostly abbreviated to @notation{rit.} or
+@notation{ritard}.
 
 @seealso
 No cross-references.
@@ -7018,7 +7013,7 @@ No cross-references.
 @section second
 
 ES: segunda,
-I: secunda,
+I: seconda,
 F: seconde,
 D: Sekunde,
 NL: secunde,
@@ -7287,7 +7282,7 @@ FI: seksti.
 @section slur
 
 ES: ligadura (de expresión),
-I: legatura (di portamento or espressiva),
+I: legatura (di portamento o espressiva),
 F: liaison, coulé,
 D: Bogen (Legatobogen, Phrasierungsbogen),
 NL: fraseringsboog, legatoboog, streekboog,
@@ -7561,7 +7556,7 @@ The fourth @notation{scale degree}.
 @section submediant
 
 ES: submediante,
-I: sopratonica,
+I: sopradominante,
 F: sous-médiante,
 D: Submediante,
 NL: submediant,
@@ -7597,7 +7592,7 @@ The seventh @ref{scale degree}.
 @section sul G
 
 ES: sobre la cuerda de Sol,
-I: sul g,
+I: sul Sol,
 F: sur la G,
 D: auf G, auf der G-Saite,
 NL: ?,
@@ -7624,7 +7619,7 @@ DK: superdominant,
 S: superdominant,
 FI: ylidominantti.
 
-The sixth @ref{scale degree}.
+The sixth @ref{scale degree}.  Equivalent to the submediant, q.v.
 
 @seealso
 @ref{functional harmony}, @ref{scale degree}, @ref{submediant}.
@@ -7727,7 +7722,7 @@ This comma is also known as the comma of Didymus, or didymic comma.
 @section system
 
 ES: sistema,
-I: accollatura,
+I: sistema,
 F: système,
 D: Notensystem, Partitur,
 NL: systeem,
@@ -7989,7 +7984,7 @@ The first @notation{scale degree}.
 @section transposing instrument
 
 ES: instrumento transpositor,
-I: ?,
+I: strumento traspositore,
 F: instrument transpositeur,
 D: ?,
 NL: ?,
@@ -8011,12 +8006,20 @@ note sounds the A (one and half tones -- a minor third -- lower).
 Not all transposing instruments include the pitch class in their name:
 
 @itemize
-
+@item Alto flute (in G)
 @item English horn (in F)
+@item Saxophones (in B-flat or E-flat)
+@end itemize
 
-@item Alto flute (in G)
+@ignore Can we do better?
 
-@end itemize
+To make matters more complex, some instruments are transposing instruments,
+but their players play from parts written at concert pitch.  This is the
+case for orchestral trombone and tuba players—whereas trombone players in
+brass bands treat their parts as if written for a true transposing
+instrument in B-flat.
+
+@end ignore
 
 @seealso
 @ref{concert pitch}.
@@ -8214,6 +8217,15 @@ standard.  Tuning forks for other pitches are available.
 @node tuplet
 @section tuplet
 
+ES: ?,
+I: gruppi irregolari,
+F: ?,
+D: ?,
+NL: ?,
+DK: ?,
+S: ?,
+FI: ?.
+
 A non-standard subdivision of a beat or part of a beat, usually
 indicated with a bracket and a number indicating the number of
 subdivisions.
@@ -8573,7 +8585,7 @@ No cross-references.
 @end multitable
 
 * About the French naming system: @notation{croche} refers to the note's
-@q{hook}. Therefore, from the eighth note on, the note names mean @q{hook},
+@q{hook}.  Therefore, from the eighth note on, the note names mean @q{hook},
 @q{doubled hook}, @q{trebled hook}, and so on.
 
 The rest names are based on the @notation{soupir}, or quarter rest. 
diff --git a/Documentation/news-front.itexi b/Documentation/news-front.itexi
new file mode 100644 (file)
index 0000000..b857b25
--- /dev/null
@@ -0,0 +1,56 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c This file is part of lilypond-general.texi and community.itexi
+
+@c when you add a new item, consider moving the lowest item(s)
+@c into news-old.itexi.
+
+@newsItem
+@subsubheading New Website!  @emph{20 Aug 2009}
+
+As you can see, we have a new website design.  Many thanks to
+texi2html and CSS for being so flexible!
+
+(FIXME: change date when this is actually announced on lilypond.org)
+@newsEnd
+
+
+@newsItem
+@subsubheading  LilyPond 2.13.3.  @emph{July 2, 2009}
+
+This unstable release contains working menus in OSX 10.5; many
+thanks to Christian Hitz for fixing this long-standing problem!
+This release also contains numerous other bugfixes and features
+such as ties with variable thickness, partially dashed slurs, and
+eyeglasses.
+
+We are planning another 2.12 release in the next week or two,
+which will include the menu fixes for OSX 10.5. Normal users may
+wish to wait for this release rather than using an unstable
+release. For changes and download links, see @ref{Development}.
+@newsEnd
+
+
+
+@newsItem
+@subsubheading Hungarian translation!  @emph{22 May 2009}
+
+Elkészült a lilypond.org nagy részének magyar fordítása a LilyPond
+honosítási projekt első lépéseként. A projekt célja a LilyPond
+szabad kottaszedő szoftver minél széleskörűbben elérhetővé tétele
+a magyar felhasználók számára a teljes weboldal és dokumentáció
+lefordítása révén. A teljes dokumentáció lefordításához
+közreműködőket keresünk. Ha részt vennél a honosításban, küldj egy
+e-mailt a harmathdenes AT gmail.com címre!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond Report #15.  @emph{18 May 2009}
+
+The @emph{LilyPond Report} is a short, informal opinion column
+about the LilyPond project: its team, its world, its community.
+Read it @uref{http://news.lilynet.net/The-LilyPond-Report-15,
+here}!
+@newsEnd
+
+
diff --git a/Documentation/nl/GNUmakefile b/Documentation/nl/GNUmakefile
new file mode 100644 (file)
index 0000000..d241809
--- /dev/null
@@ -0,0 +1,7 @@
+ISOLANG = nl
+depth = ../..
+SUBDIRS = application general learning notation texidocs
+STEPMAKE_TEMPLATES = documentation
+LOCALSTEPMAKE_TEMPLATES = lilypond ly doc-i18n-root
+
+include $(depth)/make/stepmake.make
diff --git a/Documentation/nl/application.tely b/Documentation/nl/application.tely
new file mode 100644 (file)
index 0000000..aa58ccb
--- /dev/null
@@ -0,0 +1,84 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@setfilename lilypond-application.info
+@settitle GNU LilyPond Application usage
+@documentencoding UTF-8
+@documentlanguage nl
+@include macros.itexi
+@afourpaper
+@c don't remove this comment.
+@ifnottex
+@node Top
+@top GNU LilyPond --- Application Usage
+
+@untranslated
+
+
+@c HJJ: Info needs `@top', which is a synonym for `@unnumbered' in TeX.
+@end ifnottex
+@c This produces the unified index
+@finalout
+@titlepage
+@title LilyPond
+@subtitle The music typesetter
+@titlefont{Program usage}
+@author The LilyPond development team
+@quotation
+@end quotation
+@vskip 20pt
+@end titlepage
+@copying
+@quotation
+@end quotation
+@end copying
+@ifnottex
+@quotation
+@end quotation
+@end ifnottex
+@ifnottex
+@c @rlearning{About the documentation}.
+@c index web site
+@c index URL
+@c * Install::                        How to install or compile.
+@c * Setup::                          Using LilyPond with other programs.
+@c maybe add a "Tasks" or "Specific tasks" or something like
+@c that, after Suggestions  -gp
+@menu
+* Running lilypond::
+* Updating files with convert-ly::
+* lilypond-book::
+* Converting from other formats::
+* Working on LilyPond projects::
+* Suggestions for writing files::
+* GNU Free Documentation License::
+* LilyPond index::
+@end menu
+
+@end ifnottex
+@contents
+@c @include application/install.itely
+@c @include application/setup.itely
+@include application/running.itely
+@include application/updating.itely
+@include application/lilypond-book.itely
+@include application/converters.itely
+@include application/working.itely
+@include application/suggestions.itely
+@include fdl.itexi
+@node LilyPond index
+@appendix LilyPond index
+
+@untranslated
+
+
+@bye
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/application/GNUmakefile b/Documentation/nl/application/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/nl/application/common-macros.itexi b/Documentation/nl/application/common-macros.itexi
new file mode 100644 (file)
index 0000000..50e7b3d
--- /dev/null
@@ -0,0 +1,39 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c Don't replace quotes with directed quotes.
+@set txicodequoteundirected
+@set txicodequotebacktick
+@c ***** Displaying text *****
+@c We need this since @q{\} doesn't work with makeinfo 4.11 --
+@c say @q{@bs{}} instead.
+@c ***** Displaying images not generated by lilypond-book *****
+@c Current installation setup of Info docs requires that all images are
+@c expected to be found in the `lilypond/' subdirectory.  `lilypond-book'
+@c already generates proper @image commands for images of music; these
+@c macro definitions do the same for other images.
+@c ***** Headers *****
+@c ***** Indexing *****
+@c Don't remove the `@c' within the macro definition!  See section 19.3,
+@c `Macro Details and Caveats', in the texinfo info file for explanation.
+@c
+@c ***** Macros specific to translated docs *****
+@c ugh, cannot set/define global variable 'translationof' in any way :-(
+@set translationof \TEXT\
+@c ***** Macros specific to the web site *****
+@c keep the space for proper nesting of </p>
+@c not strictly necessary, but it makes things easier for updating news
+@c keep the space for proper nesting of </p>
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/application/converters.itely b/Documentation/nl/application/converters.itely
new file mode 100644 (file)
index 0000000..1acb671
--- /dev/null
@@ -0,0 +1,77 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Converting from other formats
+@chapter Converting from other formats
+
+@untranslated
+
+
+@c @ref{Setup for MacOS X}.
+@menu
+* Invoking midi2ly::
+* Invoking musicxml2ly::
+* Invoking abc2ly::
+* Invoking etf2ly::
+* Generating LilyPond files::
+@end menu
+
+@node Invoking midi2ly
+@section Invoking @command{midi2ly}
+
+@untranslated
+
+
+@c index MIDI
+@c ommand{midi2ly} translates a Type@tie{}1 MIDI file to a LilyPond source
+@c ommand{midi2ly} converts tracks into @rinternals{Staff} and
+@c ommand{midi2ly} tries to compensate for these timing errors, but is not
+@c ode{:1}.
+@node Invoking musicxml2ly
+@section Invoking @code{musicxml2ly}
+
+@untranslated
+
+
+@c index MusicXML
+@c ommand{musicxml2ly} extracts the notes, articulations, score structure,
+@node Invoking abc2ly
+@section Invoking @code{abc2ly}
+
+@untranslated
+
+
+@c index ABC
+@quotation
+@end quotation
+@c ommand{abc2ly} translates from ABC to LilyPond.  It is invoked as follows:
+@c ommand{abc2ly} does not.
+@c ommand{abc2ly} ignores the ABC beaming.
+@node Invoking etf2ly
+@section Invoking @command{etf2ly}
+
+@untranslated
+
+
+@c index ETF
+@c index enigma
+@c index Finale
+@c index Coda Technology
+@node Generating LilyPond files
+@section Generating LilyPond files
+
+@untranslated
+
+
+@c index External programs, generating LilyPond files
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/application/fdl.itexi b/Documentation/nl/application/fdl.itexi
new file mode 100644 (file)
index 0000000..3553a68
--- /dev/null
@@ -0,0 +1,25 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+
+@untranslated
+
+
+@c index FDL, GNU Free Documentation License
+@c enter Version 1.1, March 2000
+@subheading ADDENDUM: How to use this License for your documents
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/application/lilypond-book.itely b/Documentation/nl/application/lilypond-book.itely
new file mode 100644 (file)
index 0000000..4ab1b26
--- /dev/null
@@ -0,0 +1,204 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@c Note: keep this node named so that `info lilypond-book' brings you here.
+@node lilypond-book
+@chapter Running @command{lilypond-book}
+
+@untranslated
+
+
+@c ommand{lilypond-book} provides a way to automate this process: This
+@c ommand{lilypond} on them, and outputs the document with pictures
+@c ode{lilypond-book}, see FIXME FIXME @c @ref{Setup for MacOS X}.
+@c index texinfo
+@c index latex
+@c index texinfo
+@c index texi
+@c index html
+@c index docbook
+@c index documents, adding music to
+@c index HTML, music in
+@c index Texinfo, music in
+@c index DocBook, music in
+@c index @LaTeX{}, music in
+@menu
+* An example of a musicological document::
+* Integrating music and text::
+* Music fragment options::
+* Invoking lilypond-book::
+* Filename extensions::
+* Alternate methods of mixing text and music::
+@end menu
+
+@node An example of a musicological document
+@section An example of a musicological document
+
+@untranslated
+
+
+@c index musicology
+@subheading Input
+@quotation
+@end quotation
+@subheading Processing
+@c keep space after @version{} so TeX doesn't choke
+@subheading Output
+@c ode{\lilypondfile}.
+@node Integrating music and text
+@section Integrating music and text
+
+@untranslated
+
+
+@menu
+* LaTeX::
+* Texinfo::
+* HTML::
+* DocBook::
+@end menu
+
+@node LaTeX
+@subsection @LaTeX{}
+
+@untranslated
+
+
+@c ode{\lilypond@{@}}, so this command is only useful with the
+@c ode{fragment} option.
+@c ode{\begin@{document@}}.  The @command{lilypond-book} command sends
+@c index titling and lilypond-book
+@c index \header in @LaTeX{} documents
+@c ode{lilypond-book} has split the snippet into several PostScript
+@c index Latex, feta symbols
+@c index fetachar
+@ref{Invoking lilypond-book}.
+@node Texinfo
+@subsection Texinfo
+
+@untranslated
+
+
+@node HTML
+@subsection HTML
+
+@untranslated
+
+
+@c ommand{lilypond-book} then produces an HTML file with appropriate image
+@c index titling in HTML
+@c index preview image
+@c index thumbnail
+@node DocBook
+@subsection DocBook
+
+@untranslated
+
+
+@subheading Common conventions
+@c ode{inlinemediaobject} element, so our snippets can be formatted
+@c ommand{lilypond-book} should have the extension @file{.lyxml}.
+@subheading Including a LilyPond file
+@subheading Including LilyPond code
+@c ode{inlinemediaobject}, and there is a @code{textobject} containing
+@subheading Processing the DocBook document
+@node Music fragment options
+@section Music fragment options
+
+@untranslated
+
+
+@c ode{ragged-right = ##t} is added to the LilyPond snippet.  This is the
+@c ode{pt}.  This option affects LilyPond output (this is, the staff
+@c ode{ragged-right} option.
+@c ode{cm}, @code{mm}, @code{in}, or @code{pt}.  This option affects
+@c ode{noindent} is redundant normally.
+@c ode{relative} option only works when @code{fragment} option is set,
+@c ode{intertext} option (not implemented yet); then the actual music is
+@c ode{LYDOC_LOCALEDIR} to a directory path; the directory should
+@c ode{@@documentlanguage @var{LANG}} and @file{foo@/.ly} header
+@c ode{verbatim} option) is put into a quotation block.  This option is
+@c ode{texidoc} documentation block.
+@c ode{texidoc} option: if @command{lilypond} is called with the
+@c ode{\header}, it creates a file @file{foo@/.doctitle}.  When
+@c ode{doctitle} option is used, the contents of @file{foo@/.doctitle},
+@c ode{@@lydoctitle} should be a macro defined in the Texinfo document.
+@node Invoking lilypond-book
+@section Invoking @command{lilypond-book}
+
+@untranslated
+
+
+@c ommand{lilypond-book} produces a file with one of the following
+@subheading Format-specific instructions
+@subsubheading @LaTeX{}
+@c ommand{dvips}.  The first way is simpler and recommended@footnote{Note
+@c index outline fonts
+@c index type1 fonts
+@c index dvips
+@c index invoking dvips
+@c ommand{dvips} options.
+@subsubheading Texinfo
+@c ommand{texi2dvi} or @command{makeinfo}, depending on the output format
+@subheading Command line options
+@c ommand{lilypond-book} accepts the following command line options:
+@c ode{texi} (the default) or @code{docbook}.  If this option is missing,
+@c ommand{lilypond-book} tries to detect the format automatically, see
+@ref{Filename extensions}. Currently, @code{texi} is the same as
+@c ode{texi-html}.
+@c This complicated detail is not implemented, comment it out -jm
+@c ommand{latex} with the same @code{-I @var{dir}} options.
+@c ommand{lilypond-book} generates lots of small files that LilyPond will
+@c ode{lilypond}.  @code{lilypond-book} will not @code{--filter} and
+@c ode{--process} at the same time.
+@node Filename extensions
+@section Filename extensions
+
+@untranslated
+
+
+@quotation
+@end quotation
+@c ommand{lilypond-book} running, otherwise it will exit with an error
+@node Alternate methods of mixing text and music
+@section Alternative methods of mixing text and music
+
+@untranslated
+
+
+@menu
+* Many quotes from a large score::
+* Inserting LilyPond output into OpenOffice.org::
+* Inserting LilyPond output into other programs::
+@end menu
+
+@node Many quotes from a large score
+@unnumberedsubsec Many quotes from a large score
+
+@untranslated
+
+
+@node Inserting LilyPond output into OpenOffice.org
+@unnumberedsubsec Inserting LilyPond output into OpenOffice.org
+
+@untranslated
+
+
+@c index OpenOffice.org
+@node Inserting LilyPond output into other programs
+@unnumberedsubsec Inserting LilyPond output into other programs
+
+@untranslated
+
+
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/application/macros.itexi b/Documentation/nl/application/macros.itexi
new file mode 100644 (file)
index 0000000..89b8a91
--- /dev/null
@@ -0,0 +1,124 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: us-ascii; mode: texinfo; -*-
+@include version.itexi
+@include common-macros.itexi
+@c ***** Displaying text *****
+@c To get decent quotes in `foo' and ``foo''.
+@c artouche
+@quotation
+@quotation
+@c artouche
+@end quotation
+@end quotation
+@c ***** Headings in a doc subsection *****
+@c Don't insert an empty line after @predefined!  Right now
+@c it doesn't matter, but a future implementation will probably
+@c add some code which needs this restriction.
+@subsubheading Predefined commands
+@c The next macro is a dummy currently since texinfo doesn't
+@c provide a real ragged-right environment yet.
+@c
+@c Due to a bug in texi2html (texi2html.pl CVS versions <= 1.245)
+@c the macro must not be empty.
+@c
+@subsubheading Selected Snippets
+@c Don't insert an empty line after @seealso!  Otherwise we get
+@c unwanted extra vertical space in the PDF output.
+@subsubheading See also
+@subsubheading Known issues and warnings
+@c ***** Links and references *****
+@c Definitions for references:
+@c
+@c @rglos
+@c @rlearning
+@c @ruser
+@c @ressay
+@c @rprogram
+@c @rlsr
+@c @rinternals
+@c
+@c All these also have a @...named version which allows to specify the
+@c displayed text for the reference as second argument.
+@c
+@c ***** HTML + bigpage is a special case (other manual names); all other
+@c formats are treated similarly.
+@c *** not TeX ***
+@ifnottex
+@c ** bigpage **
+@ref{\TEXT\,,,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,,learning-big-page,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning-big-page,Learning Manual}
+@ref{\TEXT\,,,notation-big-page,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation-big-page,Notation Reference}
+@ref{\TEXT\,,,essay-big-page,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay-big-page,Essay}
+@ref{\TEXT\,,,application-big-page,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application-big-page,Application Usage}
+@ref{\TEXT\,,,snippets-big-page,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets-big-page,Snippets}
+@ref{\TEXT\,,,internals-big-page,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals-big-page,Internals Reference}
+@c ** not bigpage **
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,,lilypond-essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,lilypond-essay,Essay}
+@ref{\TEXT\,,,lilypond-application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,lilypond-application,Application Usage}
+@ref{\TEXT\,,,lilypond-snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,lilypond-snippets,Snippets}
+@ref{\TEXT\,,,lilypond-internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-internals,Internals Reference}
+@end ifnottex
+@c *** TeX ***
+@c All commands below should work in the middle of the line;
+@c we thus must not use @vindex directly since it works only if placed
+@c on a line of its own.  To overcome this problem, we define a
+@c replacement macro using the internal definition of @vindex which
+@c delimits arguments in the standard way (i.e., with braces).
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@c ***** Macros specific to the web site *****
+@c LEGALESE
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/application/running.itely b/Documentation/nl/application/running.itely
new file mode 100644 (file)
index 0000000..17a322e
--- /dev/null
@@ -0,0 +1,115 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Running lilypond
+@chapter Running @command{lilypond}
+
+@untranslated
+
+
+@menu
+* Normal usage::
+* Command-line usage::
+* Error messages::
+@end menu
+
+@node Normal usage
+@section Normal usage
+
+@untranslated
+
+
+@c @rlearning{First steps} if
+@node Command-line usage
+@section Command-line usage
+
+@untranslated
+
+
+@c @ref{Setup for MacOS X}.
+@menu
+* Invoking lilypond::
+* Command line options for lilypond::
+* Environment variables::
+@end menu
+
+@node Invoking lilypond
+@subsection Invoking @command{lilypond}
+
+@untranslated
+
+
+@c ode{output-suffix} will be inserted between the basename and the
+@node Command line options for lilypond
+@subsection Command line options for @command{lilypond}
+
+@untranslated
+
+
+@c index Invoking @command{lilypond}
+@c index command line options for @command{lilypond}
+@c index options, command line
+@c index switches
+@c ode{svg}, @code{ps}, @code{pdf}, and @code{png}.
+@c index point and click, command line
+@c index help, command line
+@c index paper-size, command line
+@c Match " in previous line to help context-sensitive editors
+@c index safe, command line
+@c ode{--safe} or the @code{--jail} option @b{MUST} be passed.  The
+@c ode{--safe} option will prevent inline Scheme code from wreaking
+@quotation
+@end quotation
+@c ode{-dsafe} does @emph{not} detect resource overuse.  It is still possible to
+@c index output format, setting
+@c index PostScript output
+@c index Postscript, encapulated
+@c index EPS (Encapsulated PostScript)
+@c index SVG (Scalable Vector Graphics)
+@c index Scheme dump
+@c index preview, command line
+@c index file searching
+@c index search path
+@c index PostScript output
+@c index Portable Network Graphics (PNG) output
+@c ode{--ps}.  The resolution in DPI of the image may be set with
+@c index Portable Document Format (PDF) output
+@c ode{--safe} when LilyPond formatting is available through a web
+@c ode{--jail} to work @command{lilypond} must be run as root, which is usually
+@c ode{nosuid}.  In this way, it is impossible to run executables or to
+@node Environment variables
+@subsection Environment variables
+
+@untranslated
+
+
+@c index LANG
+@c index LILYPOND_DATADIR
+@c ommand{lilypond} recognizes the following environment variables:
+@node Error messages
+@section Error messages
+
+@untranslated
+
+
+@c index error messages
+@c index warning
+@c index error
+@c index fatal error
+@c index trace, Scheme
+@c index call trace
+@c index Scheme error
+@c ode{--verbose}) then a call trace of the offending
+@c index Programming error
+@c index errors, message format
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/application/suggestions.itely b/Documentation/nl/application/suggestions.itely
new file mode 100644 (file)
index 0000000..c5b646d
--- /dev/null
@@ -0,0 +1,46 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Suggestions for writing files
+@chapter Suggestions for writing files
+
+@untranslated
+
+
+@menu
+* General suggestions::
+* Typesetting existing music::
+* Large projects::
+@end menu
+
+@node General suggestions
+@section General suggestions
+
+@untranslated
+
+
+@node Typesetting existing music
+@section Typesetting existing music
+
+@untranslated
+
+
+@c ode{showLastLength} or @code{showFirstLength} properties to speed up
+@node Large projects
+@section Large projects
+
+@untranslated
+
+
+@c ode{\score} section is the most likely thing to change;
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/application/updating.itely b/Documentation/nl/application/updating.itely
new file mode 100644 (file)
index 0000000..b6dd140
--- /dev/null
@@ -0,0 +1,52 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Updating files with convert-ly
+@chapter Updating files with @command{convert-ly}
+
+@untranslated
+
+
+@c index Updating a LilyPond file
+@c index convert-ly
+@menu
+* Invoking convert-ly::
+* Command line options for convert-ly::
+* Problems with convert-ly::
+@end menu
+
+@node Invoking convert-ly
+@section Invoking @command{convert-ly}
+
+@untranslated
+
+
+@c ommand{convert-ly} uses @code{\version} statements in the input
+@c ode{myfile.ly} in-place and preserve the original file in
+@c ode{myfile.ly~}.
+@c ommand{convert-ly} always converts up to the last syntax change
+@c ode{Compile > Update syntax}.
+@c ode{Start > Accessories > Command Prompt}.
+@node Command line options for convert-ly
+@section Command line options for @command{convert-ly}
+
+@untranslated
+
+
+@node Problems with convert-ly
+@section Problems with @code{convert-ly}
+
+@untranslated
+
+
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/application/working.itely b/Documentation/nl/application/working.itely
new file mode 100644 (file)
index 0000000..5aae7a1
--- /dev/null
@@ -0,0 +1,131 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of application.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Working on LilyPond projects
+@chapter Working on LilyPond projects
+
+@untranslated
+
+
+@menu
+* When things don't work::
+* Make and Makefiles::
+@end menu
+
+@node When things don't work
+@section When things don't work
+
+@untranslated
+
+
+@menu
+* Updating old input files::
+* Common errors::
+* Troubleshooting (taking it all apart)::
+* Minimal examples::
+@end menu
+
+@node Updating old input files
+@subsection Updating old input files
+
+@untranslated
+
+
+@c index convert-ly
+@c index updating old input files
+@c ode{convert-ly}.  For details about how to run this program, see
+@c ode{No\"el} (this would print the French word for
+@c keep "-matching straight in fancy editors
+@c ode{ë} must be entered directly into the LilyPond file as an
+@node Common errors
+@subsection Common errors
+
+@untranslated
+
+
+@menu
+* Music runs off the page::
+* An extra staff appears::
+* Apparent error in ../ly/init.ly::
+* Error message Unbound variable %::
+* Error message FT_Get_Glyph_Name::
+@end menu
+
+@node Music runs off the page
+@unnumberedsubsubsec Music runs off the page
+
+@untranslated
+
+
+@node An extra staff appears
+@unnumberedsubsubsec An extra staff appears
+
+@untranslated
+
+
+@c ode{\relative} blocks, which each implicitly create @code{Staff}
+@c ode{\relative} commands, like this:
+@node Apparent error in ../ly/init.ly
+@unnumberedsubsubsec Apparent error in @code{../ly/init.ly}
+
+@untranslated
+
+
+@c ode{../ly/init.ly} if the input file is not correctly formed,
+@c ode{score} block is correctly terminated.  The correct structure
+@c keep "-matching straight in fancy editors
+@node Error message Unbound variable %
+@unnumberedsubsubsec Error message Unbound variable %
+
+@untranslated
+
+
+@node Error message FT_Get_Glyph_Name
+@unnumberedsubsubsec Error message FT_Get_Glyph_Name
+
+@untranslated
+
+
+@node Troubleshooting (taking it all apart)
+@subsection Troubleshooting (taking it all apart)
+
+@untranslated
+
+
+@c ode{\bass} in the @code{\score} uncommented.
+@c ode{bass} part until you find the problem line.
+@node Minimal examples
+@subsection Minimal examples
+
+@untranslated
+
+
+@node Make and Makefiles
+@section Make and Makefiles
+
+@untranslated
+
+
+@c index makefiles
+@c index make
+@c ode{Makefile} that defines what files depend on what others and what
+@c ode{ballad.pdf} and @code{ballad.midi} from @code{ballad.ly} by
+@c ode{lilypond-book} projects). Makefiles vary greatly in
+@c ode{make}, as what follows here gives only a glimpse of what it
+@c ode{Parts} directories get their notes from @code{.ily}
+@c ode{Advanced}. Click @code{Environment Variables}, and then
+@c ode{edit}, and add the path to the GNU Make executable file, which
+@c ommand{latex} command be run twice to update links. Output files are
+@c ode{htmlout} directory for the html output.
+@c @rprogram{Setup for MacOS X},
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/common-macros.itexi b/Documentation/nl/common-macros.itexi
new file mode 100644 (file)
index 0000000..a852227
--- /dev/null
@@ -0,0 +1,220 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+
+
+@c Don't replace quotes with directed quotes.
+
+@set txicodequoteundirected
+@set txicodequotebacktick
+
+
+@c   ***** Displaying text *****
+
+@c We need this since @q{\} doesn't work with makeinfo 4.11 --
+@c say @q{@bs{}} instead.
+
+@macro bs
+\\
+@end macro
+
+
+@ifnotinfo
+
+@macro notation{TEXT}
+@var{\TEXT\}
+@end macro
+
+@end ifnotinfo
+
+@ifinfo
+
+@macro notation{TEXT}
+\TEXT\
+@end macro
+
+@end ifinfo
+
+
+@macro smallspace
+@sp 1
+@end macro
+
+
+@c   ***** Displaying images not generated by lilypond-book *****
+
+@c Current installation setup of Info docs requires that all images are
+@c expected to be found in the `lilypond/' subdirectory.  `lilypond-book'
+@c already generates proper @image commands for images of music; these
+@c macro definitions do the same for other images.
+
+@ifnotinfo
+
+@macro sourceimage{FILENAME,WIDTH,HEIGHT,ALTTEXT}
+@image{pictures/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@end macro
+
+@end ifnotinfo
+
+@ifinfo
+
+@macro sourceimage{FILENAME,WIDTH,HEIGHT,ALTTEXT}
+@image{lilypond/pictures/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@end macro
+
+@end ifinfo
+
+
+@c   ***** Headers *****
+
+@ifclear snippets-sections
+@macro lydoctitle {TEXT}
+@need 600
+@emph{\TEXT\}
+@end macro
+@end ifclear
+
+@c   ***** Indexing *****
+
+@c Don't remove the `@c' within the macro definition!  See section 19.3,
+@c `Macro Details and Caveats', in the texinfo info file for explanation.
+
+@macro funindex {TEXT}
+@findex \TEXT\
+@kindex \TEXT\
+@c
+@end macro
+
+
+@c   ***** Macros specific to translated docs *****
+
+@c ugh, cannot set/define global variable 'translationof' in any way :-(
+
+@iftex
+
+@macro translationof{TEXT}
+@end macro
+
+@end iftex
+
+@ifinfo
+
+@macro translationof{TEXT}
+@set translationof \TEXT\
+@end macro
+
+@end ifinfo
+
+@ifhtml
+
+@ifset bigpage
+@macro untranslated
+@end macro
+@end ifset
+
+@ifclear bigpage
+@macro untranslated
+UNTRANSLATED NODE: IGNORE ME
+@end macro
+@end ifclear
+
+@end ifhtml
+
+@ifnothtml
+
+@macro untranslated
+@end macro
+
+@end ifnothtml
+
+
+@c  ***** Macros specific to the web site *****
+
+@ifset web
+
+@macro help{TEXT}
+@html
+<div class="help">
+<strong>
+  <span style="text-decoration:blink">Help wanted:</span>
+</strong> \TEXT\
+</div>
+@end html
+@end macro
+
+@macro divId {ID}
+@html
+<div id="\ID\">
+@end html
+@end macro
+
+@macro divClass {CLASS}
+@html
+<div class="\CLASS\">
+@end html
+@end macro
+
+@macro divEnd
+@c keep the space for proper nesting of </p>
+
+@html
+</div>
+@end html
+@end macro
+
+
+@c not strictly necessary, but it makes things easier for updating news
+@macro newsItem
+@html
+<div class="news-item">
+@end html
+@end macro
+
+@macro newsEnd
+@c keep the space for proper nesting of </p>
+
+@html
+</div>
+@end html
+@end macro
+
+
+
+@macro imageClickable{IMAGE-FILE, MORE-TEXT, CLICK-FILE, POSITION}
+@html
+<div class="float-\POSITION\">
+  <a class="clickable" href="\CLICK-FILE\">
+    <img src="\IMAGE-FILE\" alt="\IMAGE-FILE\">
+  </a>
+  <p style="text-align: center">
+    \MORE-TEXT\
+  </p>
+</div>
+@end html
+@ifnothtml
+FIXME: broken image
+@c @image{\IMAGE-FILE\}
+@end ifnothtml
+@end macro
+
+@macro imageFloat{IMAGE-FILE, POSITION}
+@html
+<img class="float-\POSITION\" src="pictures/\IMAGE-FILE\" alt="\IMAGE-FILE\">
+@end html
+@ifnothtml
+FIXME: broken image
+@c @image{\IMAGE-FILE\}
+@end ifnothtml
+@end macro
+
+@macro imageId{ID, IMAGE-FILE, ALT}
+@html
+<div id="\ID\">
+  <img src="pictures/\IMAGE-FILE\" alt="\ALT\">
+</div>
+@end html
+@ifnothtml
+FIXME: broken image
+@c @image{\IMAGE-FILE\}
+@end ifnothtml
+@end macro
+
+@end ifset
diff --git a/Documentation/nl/dedication.itely b/Documentation/nl/dedication.itely
new file mode 100644 (file)
index 0000000..15a7681
--- /dev/null
@@ -0,0 +1,18 @@
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
+
+@ignore
+    Translation of GIT committish: d56aa8181857c5feabf303ae88e716eba069f0a9
+
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+@c \version "2.12.0"
+
+@quotation
+Nous souhaitons dédier ce programme à tous les amis que nous avons
+rencontrés par la musique.
+
+Han-Wen et Jan
+@end quotation
diff --git a/Documentation/nl/general.texi b/Documentation/nl/general.texi
new file mode 100644 (file)
index 0000000..d6afdc8
--- /dev/null
@@ -0,0 +1,102 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@setfilename general.info
+@settitle LilyPond -- Muzieknotatie voor iedereen
+@documentencoding UTF-8
+@documentlanguage nl
+@set web
+@include macros.itexi
+@afourpaper
+@ifnottex
+@node Top
+@top
+@translationof Top
+
+
+@chapheading
+@end ifnottex
+@finalout
+@titlepage
+@title LilyPond
+@subtitle
+@titlefont{New Website}
+@author Het LilyPond ontwikkelteam
+@quotation
+@end quotation
+@vskip 20pt
+@end titlepage
+@copying
+@quotation
+@end quotation
+@end copying
+@divId{pageHeader}
+@heading LilyPond
+
+... muzieknotatie voor iedereen
+@divEnd
+@c @imageId{cmws,web-clef-g-eight-alpha.png,Catchy Musical Web Snippet}
+@imageId{lilylogo,double-lily-modified3.png,LilyPond logo}
+@c @im ageId{cmws,web-snippet-alpha.png,Catchy Musical Web Snippet}
+@divId{quickSummary}
+@subheading Wat is LilyPond?
+
+LilyPond is een Open Source muziek-graveer programma, gewijd aan
+het produceren van de hoogst mogelijke kwaliteit bladmuziek.
+
+Wij brengen de esthetiek van traditioneel gegraveerde muziek naar
+computer afdrukken.
+
+LilyPond is Vrije Software, is gratis en is onderdeel van het
+@uref{http://@/www@/.gnu@/.org/, GNU} project.
+
+@divClass{align-right}
+Lees de @ref{Inleiding}!
+
+@c For this to work, essay needs to be split like we are
+@c   --split=node --node-files
+@c Dat en meer in ons @ressaynamed{Engraving, essay}.
+@c Possibly, node Top always works?
+@c Dat en meer in ons @ressaynamed{Top, essay}.
+Dat en meer in ons @ref{automated-engraving,,Essay,essay,Essay}.
+
+@divEnd
+@divEnd
+@divId{news}
+@include news-front.itexi
+@divClass{float-right}
+@divEnd
+@divEnd
+@divId{latestVersion}
+@subheading Quick links
+@c TODO: javascript to detect OS and suggest download?
+@subsubheading Stable
+@ref{Download, Download 2.12.3}
+@ref{Handleiding, Handleiding 2.12.3}
+@subsubheading Unstable
+@ref{Development, Download 2.13.2}
+@ref{Handleiding, Handleiding 2.13.2}
+@divEnd
+@divClass{hide}
+@menu
+* Inleiding::
+* Download::
+* Handleiding::
+* Community::
+@end menu
+
+@divEnd
+@contents
+@include general/introduction.itexi
+@include general/download.itexi
+@include general/manuals.itexi
+@include general/community.itexi
+@bye
+
diff --git a/Documentation/nl/general/GNUmakefile b/Documentation/nl/general/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/nl/general/common-macros.itexi b/Documentation/nl/general/common-macros.itexi
new file mode 100644 (file)
index 0000000..fafde5a
--- /dev/null
@@ -0,0 +1,41 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+    Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c Don't replace quotes with directed quotes.
+@set txicodequoteundirected
+@set txicodequotebacktick
+@c ***** Displaying text *****
+@c We need this since @q{\} doesn't work with makeinfo 4.11 --
+@c say @q{@bs{}} instead.
+@c ***** Displaying images not generated by lilypond-book *****
+@c Current installation setup of Info docs requires that all images are
+@c expected to be found in the `lilypond/' subdirectory.  `lilypond-book'
+@c already generates proper @image commands for images of music; these
+@c macro definitions do the same for other images.
+@image{pictures/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@image{lilypond/pictures/\FILENAME\,\WIDTH\,\HEIGHT\,\ALTTEXT\}
+@c ***** Headers *****
+@c ***** Indexing *****
+@c Don't remove the `@c' within the macro definition!  See section 19.3,
+@c `Macro Details and Caveats', in the texinfo info file for explanation.
+@c
+@c ***** Macros specific to translated docs *****
+@c ugh, cannot set/define global variable 'translationof' in any way :-(
+@set translationof \TEXT\
+@c ***** Macros specific to the web site *****
+@c keep the space for proper nesting of </p>
+@c not strictly necessary, but it makes things easier for updating news
+@c keep the space for proper nesting of </p>
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/general/community.itexi b/Documentation/nl/general/community.itexi
new file mode 100644 (file)
index 0000000..1552940
--- /dev/null
@@ -0,0 +1,170 @@
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node Community
+@unnumbered Community
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Interacting with the community
+@ref{Contact}: get help, discuss, and keep in touch!
+@ref{Tiny examples}: these are @emph{highly} recommended when
+@ref{Bug reports}: something went wrong.
+@divEnd
+@divClass{column-left-bottom}
+@subheading Making LilyPond better
+@ref{Help us}: your assistance is requested.
+@ref{Development}: for contributors and testers.
+@ref{Authors}: the people who made LilyPond what it is today.
+@divEnd
+@divClass{column-right-bottom}
+@subheading Miscellaneous
+@ref{Publications}: what we wrote, and have had written about us.
+@ref{Old news}: an archive.
+@divEnd
+@divClass{hide}
+@menu
+* Contact::
+* Tiny examples::
+* Bug reports::
+* Help us::
+* Development::
+* Authors::
+* Publications::
+* Old news::
+@end menu
+
+@divEnd
+@node Contact
+@unnumberedsec Contact
+
+@untranslated
+
+
+@divClass{column-left-bottom}
+@subheading User Discussions and Help
+@subsubheading User mailist: @code{lilypond-user@@gnu.org}
+@quotation
+@end quotation
+@subsubheading IRC
+@subsubheading Other languages
+@divEnd
+@divClass{column-right-top}
+@subheading Stay Informed
+@subsubheading LilyPond Report
+@subsubheading Releases mailist: @code{info-lilypond@@gnu.org}
+@quotation
+@c don't include gmane posting here.  -gp
+@end quotation
+@divEnd
+@divClass{column-right-bottom}
+@subheading Developer Discussion
+@subsubheading Developer mailist: @code{lilypond-devel@@gnu.org}
+@quotation
+@end quotation
+@subsubheading Bug mailist: @code{bug-lilypond@@gnu.org}
+@quotation
+@c don't include gmane posting here.  -gp
+@end quotation
+@divEnd
+@node Tiny examples
+@unnumberedsec Tiny examples
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading What are @qq{Tiny examples}?
+@divEnd
+@divClass{column-left-bottom}
+@subheading Why create them?
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@divClass{column-right-bottom}
+@subheading How do I create them?
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@node Bug reports
+@unnumberedsec Bug reports
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Step 1: Known bugs
+@divEnd
+@divClass{column-left-bottom}
+@subheading Step 2: Creating a bug report
+@divEnd
+@divClass{column-right-bottom}
+@subheading Step 3: Sending a bug report
+@divEnd
+@node Help us
+@unnumberedsec Help us
+
+@untranslated
+
+
+@subheading This document
+@subsubheading High priority / blocks release
+@subsubheading Low priority / may never
+@node Development
+@unnumberedsec Development
+
+@untranslated
+
+
+@divClass{heading-center}
+@heading Development materials for LilyPond 2.13.3
+@ref{Handleiding}.}
+@divEnd
+@divClass{column-left-bottom}
+@subheading Download
+@subheading Manuals
+@divEnd
+@divClass{column-right-bottom}
+@subheading Contributors' Guide
+@divEnd
+@node Authors
+@unnumberedsec Authors 
+
+@untranslated
+
+
+@node Publications
+@unnumberedsec Publications
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading What we wrote
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@divClass{column-center-bottom}
+@subheading What others wrote
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@node Old news
+@unnumberedsec Old news
+
+@untranslated
+
+
+@include general/news.itexi
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/general/download.itexi b/Documentation/nl/general/download.itexi
new file mode 100644 (file)
index 0000000..954337f
--- /dev/null
@@ -0,0 +1,174 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+    Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node Download
+@unnumbered Download
+
+@untranslated
+
+
+@divClass{heading-center}
+@heading Downloads for LilyPond 2.12.2
+@divEnd
+@divClass{column-left-top}
+@subheading For users
+@c TODO: duplicate to avoid underlined refs in HTML?  icky.
+@ref{Unix, @sourceimage{logo-linux} @sourceimage{logo-freebsd}}
+@ref{Unix, Unix (Linux and FreeBSD)}
+@ref{MacOS X, @sourceimage{logo-macosx}}
+@ref{MacOS X, MacOS X}
+@ref{Windows, @sourceimage{logo-windows}}
+@ref{Windows, Microsoft Windows}
+@divEnd
+@divClass{column-right-top}
+@subheading For developers
+@ref{Source}:
+@ref{Old downloads}:
+@divEnd
+@divClass{column-center-bottom}
+@subheading Software License
+@divEnd
+@divClass{color1}
+@subheading Sponsors
+@sourceimage{VTlogo_ITF} @sourceimage{lao_banner_06_on_white_demo}
+@subheading Legalese
+@divClass{legal}
+@divEnd
+@divEnd
+@divClass{hide}
+@menu
+* Unix::
+* MacOS X::
+* Windows::
+* Source::
+* Old downloads::
+* GPL::
+@end menu
+
+@divEnd
+@node Unix
+@unnumberedsec Unix
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Generic Packages or Distribution-Specific Packages?
+@divEnd
+@divClass{column-left-top}
+@subheading Generic Packages
+@subsubheading Download
+@sourceimage{logo-linux}
+@sourceimage{logo-linux}
+@sourceimage{logo-linux}
+@sourceimage{logo-freebsd}
+@sourceimage{logo-freebsd}
+@subsubheading Install
+@subsubheading Uninstall
+@divEnd
+@divClass{column-right-top}
+@subheading Distribution-specific Packages
+@sourceimage{logo-fedora}
+@sourceimage{logo-ubuntu}
+@sourceimage{logo-slackware}
+@sourceimage{logo-debian}
+@sourceimage{logo-suse}
+@divEnd
+@divClass{column-center-bottom}
+@subheading Legalese
+@divClass{legal}
+@divEnd
+@divEnd
+@node MacOS X
+@unnumberedsec MacOS X
+
+@untranslated
+
+
+@divClass{column-left-top}
+@subheading Packages
+@subsubheading Download
+@sourceimage{logo-macosx}
+@sourceimage{logo-macosx}
+@subsubheading Install
+@subsubheading Uninstall
+@divEnd
+@divClass{column-right-top}
+@subheading Running on the command-line
+@subsubheading Using Python scripts on MacOS 10.3 or 10.4
+@c ommand{convert-ly} and @command{lilypond-book} as follows: if the
+@subsubheading MacOS X on the command line
+@c ommand{abc2ly}, and even @command{lilypond} itself --- are included
+@c ommand{lilypond-book}, @command{convert-ly}, @command{abc2ly}, etc.
+@c ode{bin/convert-ly} (or other program name) in the above file.
+@divEnd
+@divClass{column-center-bottom}
+@subheading Legalese
+@divClass{legal}
+@divEnd
+@divEnd
+@node Windows
+@unnumberedsec Windows
+
+@untranslated
+
+
+@divClass{column-left-top}
+@subheading Packages
+@subsubheading Download
+@sourceimage{logo-windows}
+@subsubheading Install
+@subsubheading Uninstall
+@divEnd
+@divClass{column-right-top}
+@subheading Running on the command-line
+@divEnd
+@divClass{column-center-bottom}
+@subheading Legalese
+@divClass{legal}
+@divEnd
+@divEnd
+@node Source
+@unnumberedsec Source
+
+@untranslated
+
+
+@divClass{column-left-bottom}
+@subheading Source tarball
+@divEnd
+@divClass{column-right-bottom}
+@subheading Compiling instructions
+@divEnd
+@node Old downloads
+@unnumberedsec Old downloads
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading All versions
+@divEnd
+@node GPL
+@unnumberedsec GPL
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Software license
+@divEnd
+@divClass{column-center-bottom}
+@subheading GNU General Public License version 2
+@include gpl-2.0.itexi
+@divEnd
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/general/introduction.itexi b/Documentation/nl/general/introduction.itexi
new file mode 100644 (file)
index 0000000..d121441
--- /dev/null
@@ -0,0 +1,232 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+    Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+@node Inleiding
+@unnumbered Inleiding
+@translationof Introduction
+@divClass{column-center-top}
+@subheading Ons Doel
+@imageFloat{flat-design.png,right}
+
+De inspiratie voor LilyPond ontstond toen twee bevriende muzikanten
+ontevreden werden met het saaie en inspiratieloze uiterlijk van
+computerafdrukken.  Elke muzikant leest liever mooie muziek, dus
+zouden wij als programmeurs dat afdrukprobleem niet kunnen oplossen?
+Dat is nu precies wat LilyPond doet: het drukt muziek volgens de
+beste tradities van klassieke muziekgravure, zonder gedoe.  Verspil
+geen tijd met het bijstellen van spatiëring, het verplaatsen van
+tekens, of met het vormgeven van legatoboogjes.  Imponeer vrienden
+en collega's met haarscherpe bladmuziek!
+@divEnd
+
+@divClass{column-left-top}
+@subheading Why use LilyPond?
+@ref{Features}: What can LilyPond do?
+@ref{Examples}: I want to see some music!
+@ref{Freedom}: LilyPond is Free Software.
+@divEnd
+@divClass{column-right-top}
+@subheading Who uses it?
+@ref{Productions}: Real-life use of LilyPond.
+@ref{Testimonials}: What do people say?
+@divEnd
+@divClass{column-center-bottom}
+@subheading Why not use LilyPond?
+@ref{Text input}: You write music as @emph{text}?!
+@divEnd
+@divClass{hide}
+@menu
+* Features::
+* Examples::
+* Freedom::
+* Productions::
+* Testimonials::
+* Text input::
+@end menu
+
+@divEnd
+@node Features
+@unnumberedsec Features
+
+@untranslated
+
+
+@subheading Why switch to LilyPond?
+@subsubheading Excellent classical engraving
+@imageFloat{flat-design.png,right}
+@subsubheading No fiddling
+@subsubheading Text-based input
+@subsubheading Mix music and text
+@imageFloat{lilypond-book.png,right}
+@subsubheading Free software
+@subsubheading Extensible design
+@subsubheading Excellent support
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Text input}.
+@divEnd
+@node Examples
+@unnumberedsec Examples
+
+@untranslated
+
+
+@imageClickable{examples/liszt-wagner-small.png, (click to enlarge), examples/liszt-wagner.png, center}
+@subsubheading Classical Music
+@imageClickable{examples/bach-bwv610-small.png, (click to enlarge), examples/bach-bwv610.png, center}
+@subsubheading Complex Notation
+@imageClickable{examples/granados-small.png, (click to enlarge), examples/granados.png, center}
+@subsubheading Early Music
+@imageClickable{examples/ancient-headword-small.png, (click to enlarge), examples/ancient-headword.png, center}
+@subsubheading Modern Music
+@imageClickable{examples/cary-small.png, (click to enlarge), examples/cary.png, center}
+@subsubheading Efficient, flexible creation of performance materials
+@imageClickable{examples/sesto-small.png, (click to enlarge), examples/sesto.png, center}
+@imageClickable{examples/sesto-1-small.png, (click to enlarge), examples/sesto-1.png, center}
+@imageClickable{examples/sesto-2-small.png, (click to enlarge), examples/sesto-2.png, center}
+@subsubheading Tablature
+@imageClickable{examples/bach-tab-example-small.png, (click to enlarge), examples/bach-tab-example.png, center}
+@subsubheading Schenker Graphs
+@imageClickable{examples/bach-schenker-small.png, (click to enlarge), examples/bach-schenker.png, center}
+@subsubheading Vocal Music
+@imageClickable{examples/aucun-snippet-small.png, (click to enlarge), examples/aucun-snippet.png, center}
+@subsubheading Educational Applications
+@imageClickable{examples/theory-small.png, (click to enlarge), examples/theory.png, center}
+@subsubheading Popular Music
+@imageClickable{examples/chart-small.png, (click to enlarge), examples/chart.png, center}
+@subsubheading Large Projects
+@imageClickable{examples/orchestral-small.png, (click to enlarge), examples/orchestral.png, center}
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Freedom}.  If you've already decided to try LilyPond, first
+@divEnd
+@node Freedom
+@unnumberedsec Freedom
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Free Software
+@ref{GPL, GNU General Public License} and the @ref{FDL, GNU Free
+@divEnd
+@c @divClass{column-left-top}
+@divClass{color2}
+@divClass{keep-bullets}
+@subheading What are the benefits to users?
+@divEnd
+@divEnd
+@c @divClass{column-right-top}
+@divClass{color3}
+@divClass{keep-bullets}
+@subheading Why do LilyPond developers @qq{give away} their work for free?
+@divEnd
+@divEnd
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Productions} and sheet music.  If you've already decided to
+@divEnd
+@node Productions
+@unnumberedsec Productions
+
+@untranslated
+
+
+@divClass{column-left-top}
+@subheading Concerts
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@divClass{column-right-top}
+@subheading Published sheet music
+@divClass{keep-bullets}
+@divEnd
+@divEnd
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Text input}.
+@divEnd
+@node Testimonials
+@unnumberedsec Testimonials
+
+@untranslated
+
+
+@divClass{testimonial-item}
+@imageFloat{carter-brey.jpg, right}
+@subsubheading @uref{http://nyphil.org/meet/orchestra/index.cfm?page=profile&personNum=7, Carter Brey}, Principal Cellist, New York Philharmonic
+@divEnd
+@divClass{testimonial-item}
+@imageFloat{orm-finnendahl.jpg, left}
+@subsubheading @uref{http://icem-www.folkwang-hochschule.de/~finnendahl/, Orm Finnendahl}, professor of Composition, Musikhochschule Freiburg
+@divEnd
+@divClass{testimonial-item}
+@imageFloat{darius-blasband.jpg, right}
+@subsubheading Darius Blasband, composer (Brussels, Belgium)
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Kieren MacMillan, composer (Toronto, Canada)
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Chris Cannam, lead programmer of the @uref{http://www.rosegardenmusic.com/, RoseGarden} project.
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Chris Snyder, @uref{http://www.adoromusicpub.com/, Adoro Music Publishing}
+@divEnd
+@divClass{testimonial-item}
+@subsubheading David Bobroff, Bass Trombone, Iceland Symphony Orchestra
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Vaylor Trucks, Electric guitar player (Yes, @uref{http://www.allmanbrothersband.com/modules.php?op=modload&name=userpage&file=content&page_id=12, related to})
+@divEnd
+@divClass{testimonial-item}
+@subsubheading @uref{http://nicolas.sceaux.free.fr/, Nicolas Sceaux}, @uref{http://www.mutopiaproject.org/, Mutopia} contributor
+@divEnd
+@divClass{testimonial-item}
+@subsubheading @uref{http://www.troff.org/whoswho.html#werner, Werner Lemberg}, Conductor at the Theatre in Koblenz, Germany and distinguished GNU Hacker.
+@divEnd
+@divClass{testimonial-item}
+@subsubheading Paul Davis, developer of @uref{http://jackaudio.org/, JACK} and @uref{http://www.ardour.org/, Ardour}.
+@divEnd
+@divClass{column-center-bottom}
+@subheading Where now?
+@divEnd
+@node Text input
+@unnumberedsec Text input
+
+@untranslated
+
+
+@c TRANSLATORS: so far it's mostly from
+@c http://lilypond.org/web/switch/howto
+@subheading @qq{Compiling} Music
+@imageClickable{examples/nereid-shot-small.png, (click to enlarge), examples/nereid-shot.png, right}
+@subsubheading It's as simple as A B C
+@imageFloat{text-input-1-annotate.png,center}
+@imageFloat{text-input-1-output.png,center}
+@imageFloat{text-input-2-annotate.png,center}
+@imageFloat{text-input-2-output.png,center}
+@subsubheading Pop music
+@imageFloat{text-input-pop-annotate.png,center}
+@imageFloat{text-input-pop-output.png,center}
+@subsubheading Orchestral parts
+@imageFloat{text-input-parts-both-annotate.png,center}
+@imageFloat{text-input-parts-single-annotate.png,center}
+@imageFloat{text-input-parts-single-output.png,center}
+@imageFloat{text-input-score-annotate.png,center}
+@imageFloat{text-input-score-output.png,center}
+@subsubheading Beginner Documentation
+@subsubheading Easier editing environments
+@divClass{column-center-bottom}
+@subheading Where now?
+@ref{Freedom} that LilyPond provides, or read about users'
+@ref{Productions} and @ref{Testimonials}.
+@divEnd
diff --git a/Documentation/nl/general/macros.itexi b/Documentation/nl/general/macros.itexi
new file mode 100644 (file)
index 0000000..d081a11
--- /dev/null
@@ -0,0 +1,133 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+    Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: us-ascii; mode: texinfo; -*-
+@include version.itexi
+@include common-macros.itexi
+@c ***** Displaying text *****
+@c To get decent quotes in `foo' and ``foo''.
+@c artouche
+@quotation
+@quotation
+@c artouche
+@end quotation
+@end quotation
+@c ***** Headings in a doc subsection *****
+@c Don't insert an empty line after @predefined!  Right now
+@c it doesn't matter, but a future implementation will probably
+@c add some code which needs this restriction.
+@subsubheading Predefined commands
+@c The next macro is a dummy currently since texinfo doesn't
+@c provide a real ragged-right environment yet.
+@c
+@c Due to a bug in texi2html (texi2html.pl CVS versions <= 1.245)
+@c the macro must not be empty.
+@c
+@subsubheading Selected Snippets
+@c Don't insert an empty line after @seealso!  Otherwise we get
+@c unwanted extra vertical space in the PDF output.
+@subsubheading See also
+@subsubheading Known issues and warnings
+@c ***** Links and references *****
+@c Definitions for references:
+@c
+@c @rgeneral
+@c @ressay
+@c @rglos
+@c @rinternals
+@c @rlearning
+@c @rlsr
+@c @rprogram
+@c @ruser
+@c
+@c All these also have a @...named version which allows to specify the
+@c displayed text for the reference as second argument.
+@c
+@c ***** HTML + bigpage is a special case (other manual names); all other
+@c formats are treated similarly.
+@c *** not TeX ***
+@ifnottex
+@c ** bigpage **
+@ref{\TEXT\,,,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,,learning-big-page,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning-big-page,Learning Manual}
+@ref{\TEXT\,,,notation-big-page,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation-big-page,Notation Reference}
+@ref{\TEXT\,,,general-big-page,General Information}
+@ref{\TEXT\,,\DISPLAY\,general-big-page,General Information}
+@ref{\TEXT\,,,essay-big-page,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay-big-page,Essay}
+@ref{\TEXT\,,,application-big-page,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application-big-page,Application Usage}
+@ref{\TEXT\,,,snippets-big-page,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets-big-page,Snippets}
+@ref{\TEXT\,,,internals-big-page,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals-big-page,Internals Reference}
+@c ** not bigpage **
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,general,General Information}
+@ref{\TEXT\,,\DISPLAY\,general,General Information}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,,lilypond-general,General Information}
+@ref{\TEXT\,,\DISPLAY\,lilypond-general, General Information}
+@ref{\TEXT\,,,lilypond-essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,lilypond-essay,Essay}
+@ref{\TEXT\,,,lilypond-application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,lilypond-application,Application Usage}
+@ref{\TEXT\,,,lilypond-snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,lilypond-snippets,Snippets}
+@ref{\TEXT\,,,lilypond-internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-internals,Internals Reference}
+@end ifnottex
+@c *** TeX ***
+@c All commands below should work in the middle of the line;
+@c we thus must not use @vindex directly since it works only if placed
+@c on a line of its own.  To overcome this problem, we define a
+@c replacement macro using the internal definition of @vindex which
+@c delimits arguments in the standard way (i.e., with braces).
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,general,General Information}
+@ref{\TEXT\,,\DISPLAY\,general,General Information}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@c ***** Macros specific to the web site *****
+@c LEGALESE
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/general/manuals.itexi b/Documentation/nl/general/manuals.itexi
new file mode 100644 (file)
index 0000000..c822c1f
--- /dev/null
@@ -0,0 +1,134 @@
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of general.texi
+@ignore
+    Translation of GIT committish: dab17828471057f4e12c0d80777ff9bb4c5b2309
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+@node Handleiding
+@unnumbered Handleiding
+@translationof Manuals
+
+@divClass{heading-center}
+@heading Documentation for LilyPond 2.12.2
+@divEnd
+@divClass{column-center-top}
+@subheading Introduction
+@divEnd
+@divClass{column-left-top}
+@subheading Regular use
+@divEnd
+@divClass{column-right-top}
+@subheading Infrequent Use
+@divEnd
+@divClass{column-center-bottom}
+@subheading Other material
+@divEnd
+@divClass{hide}
+@menu
+* Learning::
+* Glossary::
+* Essay::
+* Notation::
+* Usage::
+* Snippets::
+* FAQ::
+* Changes::
+* Internals::
+* Translated::
+* Old::
+* FDL::
+@end menu
+
+@divEnd
+@c TRANSLATORS: most of the text in this file came from
+@c LM 1.1 About the documentation  (before this section was
+@c removed in July 2009).
+@node Learning
+@unnumberedsec Learning
+
+@untranslated
+
+
+@node Glossary
+@unnumberedsec Glossary
+
+@untranslated
+
+
+@node Essay
+@unnumberedsec Essay
+
+@untranslated
+
+
+@node Notation
+@unnumberedsec Notation
+
+@untranslated
+
+
+@node Usage
+@unnumberedsec Usage
+
+@untranslated
+
+
+@node Snippets
+@unnumberedsec Snippets
+
+@untranslated
+
+
+@node FAQ
+@unnumberedsec FAQ
+
+@untranslated
+
+
+@subheading Where are the graphical canvas, menus, and toolbars?
+@subheading There's a lot of documentation!  Do I need to read it?
+@subheading That's still a lot of reading!  Is it worth it?
+@subheading Something isn't working!  How do I fix it?
+@subheading Why do you change the syntax?
+@node Changes
+@unnumberedsec Changes
+
+@untranslated
+
+
+@node Internals
+@unnumberedsec Internals
+
+@untranslated
+
+
+@node Translated
+@unnumberedsec Translated
+
+@untranslated
+
+
+@node Old
+@unnumberedsec Old
+
+@untranslated
+
+
+@node FDL
+@unnumberedsec FDL
+
+@untranslated
+
+
+@divClass{column-center-top}
+@subheading Documentation license
+@divEnd
+@divClass{column-center-bottom}
+@subheading GNU Free Documentation License 1.1
+@include fdl.itexi
+@divEnd
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/general/news-front.itexi b/Documentation/nl/general/news-front.itexi
new file mode 100644 (file)
index 0000000..b857b25
--- /dev/null
@@ -0,0 +1,56 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c This file is part of lilypond-general.texi and community.itexi
+
+@c when you add a new item, consider moving the lowest item(s)
+@c into news-old.itexi.
+
+@newsItem
+@subsubheading New Website!  @emph{20 Aug 2009}
+
+As you can see, we have a new website design.  Many thanks to
+texi2html and CSS for being so flexible!
+
+(FIXME: change date when this is actually announced on lilypond.org)
+@newsEnd
+
+
+@newsItem
+@subsubheading  LilyPond 2.13.3.  @emph{July 2, 2009}
+
+This unstable release contains working menus in OSX 10.5; many
+thanks to Christian Hitz for fixing this long-standing problem!
+This release also contains numerous other bugfixes and features
+such as ties with variable thickness, partially dashed slurs, and
+eyeglasses.
+
+We are planning another 2.12 release in the next week or two,
+which will include the menu fixes for OSX 10.5. Normal users may
+wish to wait for this release rather than using an unstable
+release. For changes and download links, see @ref{Development}.
+@newsEnd
+
+
+
+@newsItem
+@subsubheading Hungarian translation!  @emph{22 May 2009}
+
+Elkészült a lilypond.org nagy részének magyar fordítása a LilyPond
+honosítási projekt első lépéseként. A projekt célja a LilyPond
+szabad kottaszedő szoftver minél széleskörűbben elérhetővé tétele
+a magyar felhasználók számára a teljes weboldal és dokumentáció
+lefordítása révén. A teljes dokumentáció lefordításához
+közreműködőket keresünk. Ha részt vennél a honosításban, küldj egy
+e-mailt a harmathdenes AT gmail.com címre!
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond Report #15.  @emph{18 May 2009}
+
+The @emph{LilyPond Report} is a short, informal opinion column
+about the LilyPond project: its team, its world, its community.
+Read it @uref{http://news.lilynet.net/The-LilyPond-Report-15,
+here}!
+@newsEnd
+
+
diff --git a/Documentation/nl/index.html.in b/Documentation/nl/index.html.in
new file mode 100644 (file)
index 0000000..3d88ff3
--- /dev/null
@@ -0,0 +1,142 @@
+<html>
+<!--
+    Translation of GIT committish: 9dca038856a22595cabab9d8a7565300be2cc363
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+!-->
+  <head>
+    <title>Documentation de LilyPond @TOPLEVEL_VERSION@</title>
+    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=UTF-8">
+    <meta name="aesop" content="links">
+    <meta name="description"
+          content="Top-level index to the standard documentation for
+                   LilyPond @TOPLEVEL_VERSION@">
+  </head>
+  
+  <body>
+        
+    <div class="header">
+      <h1>Documentation de LilyPond</h1>
+    </div>
+
+    <div class="subheader">
+      <p>
+       <strong>Version @TOPLEVEL_VERSION@</strong>
+       <br>
+       <strong>@DATE@</strong>
+      </p>
+    </div>
+
+    <table id="navigation">
+      <tbody>
+        <tr>
+          <td class="left-column">
+         <ul>
+           <li>
+             <a class="title"
+                href="learning/index.fr.html">Manuel d'initiation</a>
+             (partiellement traduit,<br>aussi en <a class="title" href="learning-big-page.fr.html">page
+             unique</a> ~ 1,5 Mo, ou
+             <a class="title" href="learning.fr.pdf">au format PDF</a>)
+              <br>&mdash; commencer ici</li>
+           <li><a class="title" href="music-glossary/index.html">Glossaire</a>
+             multilingue<br>(aussi en
+             <a class="title" href="music-glossary-big-page.html">page unique</a>
+             ~ 500 ko, ou <a class="title" href="music-glossary.pdf">au format PDF</a>)
+              <br>&mdash; vocabulaire théorique de la musique</li>
+         </ul>
+         </td>
+         <td class="right-column">
+         <ul>
+            <li><a class="title" href="changes.html">Nouveautés</a>
+            <br>&mdash; changements depuis la version majeure précédente</li>
+           <li><a class="title" href="../examples.html">Exemples</a>
+            <br>&mdash; quelques exemples</li>
+         </ul>
+         </td>
+        </tr>
+        <tr>
+          <td valign="baseline" class="left-column">
+         <ul>
+           <li>
+             <a class="title" href="notation/index.fr.html">Manuel de notation</a>
+             (partiellement traduit,<br>aussi en <a class="title"
+                               href="notation-big-page.fr.html">page unique</a> ~ 4 Mo, ou
+               <a class="title" href="notation.fr.pdf">au format PDF</a>)
+                <br>&mdash; gravure de musique avec LilyPond</li>
+           <li>
+             <a  class="title" href="internals/index.html">Référence des propriétés internes</a>
+             <br>(en anglais, aussi en <a class="title" href="internals-big-page.html">page
+               unique</a> ~ 1 Mo, <a class="title"
+               href="internals.pdf">au format PDF</a>)
+              <br>&mdash; définitions pour les retouches</li>
+         </ul>
+         </td>
+         <td valign="baseline" class="right-column">
+         <ul>
+            <li>
+           <a class="title" href="application/index.fr.html">Utilisation des programmes</a>
+(partiellement traduit,<br>aussi en <a class="title"
+               href="application-big-page.fr.html">page unique</a>, ou
+           <a class="title" href="application.fr.pdf">au format PDF</a>)
+            <br>&mdash; installation et exécution des programmes</li>
+           <li><a class="title" href="snippets/index.html">Exemples de code</a>
+(en anglais, aussi en <a class="title" href="snippets-big-page.html">page unique</a> ~ 2 Mo,
+au format <a class="title" href="snippets.pdf">PDF</a>)
+            <br>&mdash; petits trucs, astuces et exemples</li>
+         </ul>
+         </td>
+        </tr>
+        <tr>
+          <td valign="baseline" class="left-column">
+       <ul>
+            <li><a class="title"  href="devel.html">Ressources de développement</a>
+            <br>&mdash; documentation pour les développeurs et contributeurs</li>
+       </ul>
+    </td><td class="right-column">
+       <ul>
+         <li><a class="title"  href="translations.fr.html">État des traductions</a>
+         <br>&mdash; avancement des traductions en français</li>
+       </ul>
+         </td>
+        </tr>
+       <tr>
+          <td valign="baseline" class="left-column">
+          <ul>
+            <li> <a class="title"  href="http://lilypond.org/">lilypond.org</a>
+            <br>&mdash; le site Web</li>
+            <li>
+             <a class="title" href="http://www.gnu.org/copyleft/gpl.html">Licence</a>
+              <br>&mdash; la licence GNU GPL</li>
+          </ul>
+          </td>
+          <td valign="baseline" class="right-column">
+          <ul>
+           <li><a class="title"  href="THANKS.html">Remerciements</a>
+            <br>&mdash; à nos contributeurs</li>
+           <li><a class="title"  href="DEDICATION.html">Dédicace</a>
+            <br>&mdash; par Jan et Han-Wen</li>
+          </ul>
+          </td>
+        </tr>
+         <tr>
+          <td valign="baseline" class="left-column">
+          <ul>
+          </ul>
+          </td>
+        </tr>
+      </tbody>
+    </table>
+    <p>
+      Toute la documentation répertoriée sur cette page peut être
+      <strong>téléchargée</strong>&nbsp;:
+      <a href="http://download.linuxaudio.org/lilypond/binaries/documentation/lilypond-@TOPLEVEL_VERSION@-1.documentation.tar.bz2">téléchargement
+      de l'archive compressée</a>.
+    </p>
+    <p>
+      Vous pouvez trouver, au bas de chaque page de cette
+      documentation, des liens vers les <strong>traductions</strong> disponibles.
+    </p>
+  </body>
+</html>
diff --git a/Documentation/nl/learning.tely b/Documentation/nl/learning.tely
new file mode 100644 (file)
index 0000000..c430f28
--- /dev/null
@@ -0,0 +1,76 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@setfilename lilypond-learning.info
+@settitle GNU LilyPond Learning Manual
+@documentencoding UTF-8
+@documentlanguage nl
+@include macros.itexi
+@c This produces the unified index
+@afourpaper
+@c don't remove this comment.
+@copying
+@quotation
+@end quotation
+@end copying
+@c artouche
+@c @ref{About the documentation}.
+@c TITLE PAGE
+@ifnottex
+@node Top
+@top GNU LilyPond --- Learning Manual
+
+@untranslated
+
+
+@end ifnottex
+@finalout
+@titlepage
+@title LilyPond
+@subtitle The music typesetter
+@titlefont{Learning Manual}
+@author The LilyPond development team
+@vskip 100pt
+@vskip 0pt plus 1filll
+@c @vskip 20pt
+@end titlepage
+@c TOC -- non-tex
+@ifnottex
+@menu
+* Introduction::
+* Common notation::
+* Fundamental concepts::
+* Tweaking output::
+* Templates::
+* Scheme tutorial::
+* GNU Free Documentation License::
+* LilyPond index::
+@end menu
+
+@end ifnottex
+@c TOC - tex
+@contents
+@c INCLUDES
+@include learning/introduction.itely
+@include learning/common-notation.itely
+@include learning/fundamental.itely
+@include learning/tweaks.itely
+@include learning/templates.itely
+@include learning/scheme-tutorial.itely
+@include fdl.itexi
+@node LilyPond index
+@appendix LilyPond index
+
+@untranslated
+
+
+@bye
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/learning/GNUmakefile b/Documentation/nl/learning/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/nl/learning/common-macros.itexi b/Documentation/nl/learning/common-macros.itexi
new file mode 100644 (file)
index 0000000..325f7a8
--- /dev/null
@@ -0,0 +1,39 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c Don't replace quotes with directed quotes.
+@set txicodequoteundirected
+@set txicodequotebacktick
+@c ***** Displaying text *****
+@c We need this since @q{\} doesn't work with makeinfo 4.11 --
+@c say @q{@bs{}} instead.
+@c ***** Displaying images not generated by lilypond-book *****
+@c Current installation setup of Info docs requires that all images are
+@c expected to be found in the `lilypond/' subdirectory.  `lilypond-book'
+@c already generates proper @image commands for images of music; these
+@c macro definitions do the same for other images.
+@c ***** Headers *****
+@c ***** Indexing *****
+@c Don't remove the `@c' within the macro definition!  See section 19.3,
+@c `Macro Details and Caveats', in the texinfo info file for explanation.
+@c
+@c ***** Macros specific to translated docs *****
+@c ugh, cannot set/define global variable 'translationof' in any way :-(
+@set translationof \TEXT\
+@c ***** Macros specific to the web site *****
+@c keep the space for proper nesting of </p>
+@c not strictly necessary, but it makes things easier for updating news
+@c keep the space for proper nesting of </p>
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/learning/common-notation.itely b/Documentation/nl/learning/common-notation.itely
new file mode 100644 (file)
index 0000000..0b53081
--- /dev/null
@@ -0,0 +1,346 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Common notation
+@chapter Common notation
+
+@untranslated
+
+
+@ref{Introduction}.
+@menu
+* Single staff notation::
+* Multiple notes at once::
+* Songs::
+* Final touches::
+@end menu
+
+@node Single staff notation
+@section Single staff notation
+
+@untranslated
+
+
+@menu
+* Accidentals and key signatures::
+* Ties and slurs::
+* Articulation and dynamics::
+* Adding text::
+* Automatic and manual beams::
+* Advanced rhythmic commands::
+@end menu
+
+@node Accidentals and key signatures
+@subsection Accidentals and key signatures
+
+@untranslated
+
+
+@subheading Accidentals
+@c index accidentals
+@c index accidentals and key signatures
+@c index sharp
+@c index double sharp
+@c index sharp, double
+@c index flat
+@c index double flat
+@c index flat, double
+@c index key signature, setting
+@subheading Key signatures
+@c index key signature
+@c index major
+@c index minor
+@c index accidentals and key signature
+@c index content vs. layout
+@c index layout vs. content
+@subheading Warning: key signatures and pitches
+@c ode{is} and type @code{cis} and @code{fis} in the input file.
+@node Ties and slurs
+@subsection Ties and slurs
+
+@untranslated
+
+
+@c index tie
+@c index slur
+@c index slur, phrasing
+@c index phrasing slur
+@subheading Ties
+@subheading Slurs
+@c ode{)} respectively.
+@subheading Phrasing slurs
+@c ode{\(} and @code{\)}.  You can have both @notation{slurs}
+@c index slurs versus ties
+@subheading Warnings: slurs vs. ties
+@node Articulation and dynamics
+@subsection Articulation and dynamics
+
+@untranslated
+
+
+@subheading Articulations
+@c index articulation
+@c index accent
+@c index staccato
+@subheading Fingerings
+@c index fingering
+@c ode{^} (up) or @code{_} (down).  You can also use multiple
+@subheading Dynamics
+@c index dynamics
+@c index decrescendo
+@c index crescendo
+@c ode{\!} can be used:
+@node Adding text
+@subsection Adding text
+
+@untranslated
+
+
+@c index text, adding
+@c index adding text
+@c index markup
+@node Automatic and manual beams
+@subsection Automatic and manual beams
+
+@untranslated
+
+
+@c index beaming
+@c index automatic beams
+@c index manual beams
+@c index beams, automatic
+@c index beams, manual
+@c index beams, by hand
+@node Advanced rhythmic commands
+@subsection Advanced rhythmic commands
+
+@untranslated
+
+
+@subheading Partial measure
+@c index pickup
+@c index anacrusis
+@c index partial measure
+@c ode{\partial}.  It is followed by a duration: @code{\partial 4}
+@subheading Tuplets
+@c index tuplets
+@c index triplets
+@subheading Grace notes
+@c index grace notes
+@c index acciaccatura
+@c index appoggiatura
+@node Multiple notes at once
+@section Multiple notes at once
+
+@untranslated
+
+
+@menu
+* Music expressions explained::
+* Multiple staves::
+* Staff groups::
+* Combining notes into chords::
+* Single staff polyphony::
+@end menu
+
+@node Music expressions explained
+@subsection Music expressions explained
+
+@untranslated
+
+
+@c index music expression
+@c index expression, music
+@c index compound music expression
+@c index music expression, compound
+@subheading Analogy: mathematical expressions
+@subheading Simultaneous music expressions: multiple staves
+@c index multiple staves
+@c index staves, multiple
+@c index polyphony
+@c index combining expressions in parallel
+@c index parallel expressions
+@c index expressions, parallel
+@c index relative notes and simultaneous music
+@c index relative notes and parallel expressions
+@c index simultaneous music and relative notes
+@c index parallel expressions and relative notes
+@c ode{@bs{}relative} command.}
+@subheading Simultaneous music expressions: single staff
+@node Multiple staves
+@subsection Multiple staves
+
+@untranslated
+
+
+@c index multiple staves
+@c index staves, multiple
+@c index context
+@c index context, notation
+@c index notation context
+@c ode{Staff} elements are then combined in parallel with @code{<<}
+@node Staff groups
+@subsection Staff groups
+
+@untranslated
+
+
+@c index piano staff
+@c index staff, piano
+@c index choir staff
+@c index staff, choir
+@c index grand staff
+@c index staff, grand
+@c index staff group
+@ref{Multiple staves}.  However, now this entire expression is
+@node Combining notes into chords
+@subsection Combining notes into chords
+
+@untranslated
+
+
+@c index chords
+@c index note durations in chords
+@node Single staff polyphony
+@subsection Single staff polyphony
+
+@untranslated
+
+
+@c index polyphony
+@c index multiple voices
+@c index voices, more on one staff
+@c index single staff polyphony
+@c index spacer rest
+@c index rest, spacer
+@node Songs
+@section Songs
+
+@untranslated
+
+
+@menu
+* Setting simple songs::
+* Aligning lyrics to a melody::
+* Lyrics to multiple staves::
+@end menu
+
+@node Setting simple songs
+@subsection Setting simple songs
+
+@untranslated
+
+
+@c index lyrics
+@c index songs
+@node Aligning lyrics to a melody
+@subsection Aligning lyrics to a melody
+
+@untranslated
+
+
+@c index melisma
+@c index extender line
+@c index hyphens
+@c index underscore
+@c index lyrics, aligning
+@c index aligning lyrics
+@c index lyrics, multi-syllable words
+@c index words with multiple syllables in lyrics
+@c no ragged-right here because otherwise the hyphens get lost,
+@c but the example is long enough to avoid looking strange.
+@c no ragged-right here because otherwise the hyphens get lost,
+@c but the example is long enough to avoid looking strange.
+@node Lyrics to multiple staves
+@subsection Lyrics to multiple staves
+
+@untranslated
+
+
+@c index lyrics and multiple staves
+@c index multiple staves and lyrics
+@node Final touches
+@section Final touches
+
+@untranslated
+
+
+@menu
+* Organizing pieces with variables::
+* Version number::
+* Adding titles::
+* Absolute note names::
+* After the tutorial::
+@end menu
+
+@node Organizing pieces with variables
+@subsection Organizing pieces with variables
+
+@untranslated
+
+
+@c index variables
+@c index variables, defining
+@c index identifiers
+@c index macros
+@c index assigning variables
+@c index using variables
+@c index variables, using
+@c index variables, characters allowed in
+@c index characters allowed in variables
+@node Version number
+@subsection Version number
+
+@untranslated
+
+
+@c index versioning
+@c index version
+@c index version number
+@c index upgrades
+@c index future upgrades
+@c index updating files
+@c index files, updating
+@node Adding titles
+@subsection Adding titles
+
+@untranslated
+
+
+@c index title
+@c index headers
+@c index header block
+@node Absolute note names
+@subsection Absolute note names
+
+@untranslated
+
+
+@c index note names
+@c index note names, absolute
+@c index absolute mode
+@c index absolute values for pitches
+@c index pitches, absolute values
+@c index absolute note names
+@c ode{b} will always mean the note one step below middle C, and a
+@c ode{g,} will always mean the note on the bottom staff of the
+@node After the tutorial
+@subsection After the tutorial
+
+@untranslated
+
+
+@ref{Templates}.  If you need any notation that was not covered in
+@ref{Extending the templates}.
+@c @ref{About the documentation}.
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/learning/fdl.itexi b/Documentation/nl/learning/fdl.itexi
new file mode 100644 (file)
index 0000000..9c9ac31
--- /dev/null
@@ -0,0 +1,25 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+
+@untranslated
+
+
+@c index FDL, GNU Free Documentation License
+@c enter Version 1.1, March 2000
+@subheading ADDENDUM: How to use this License for your documents
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/learning/fundamental.itely b/Documentation/nl/learning/fundamental.itely
new file mode 100644 (file)
index 0000000..33c8e01
--- /dev/null
@@ -0,0 +1,385 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Fundamental concepts
+@chapter Fundamental concepts
+
+@untranslated
+
+
+@menu
+* How LilyPond input files work::
+* Voices contain music::
+* Contexts and engravers::
+* Extending the templates::
+@end menu
+
+@node How LilyPond input files work
+@section How LilyPond input files work
+
+@untranslated
+
+
+@menu
+* Introduction to the LilyPond file structure::
+* Score is a (single) compound musical expression::
+* Nesting music expressions::
+* On the un-nestedness of brackets and ties::
+@end menu
+
+@node Introduction to the LilyPond file structure
+@subsection Introduction to the LilyPond file structure
+
+@untranslated
+
+
+@c index input format
+@c index file structure
+@c index book
+@c index score
+@c ode{\score@{@}} command.  This is because LilyPond automatically
+@c index implicit contexts
+@c index contexts, implicit
+@ref{Contexts and engravers}.
+@c ode{\score} command, leaving the others to default.
+@c index header
+@c index layout
+@c index midi
+@c ode{\midi} -- are special: unlike many other commands which begin
+@c ode{\header} is often placed above the @code{\score} command, as the
+@c ode{\layout @{ @}} and @code{\midi @{@}}.  If these appear as
+@c index scores, multiple
+@c index book block, implicit
+@c index implicit book block
+@c ode{\book} command should be used to separate the different
+@c ode{\book} block.
+@c index layout block, effect of location
+@c ode{\book} block in which it appears -- i.e., a @code{\layout}
+@c index variables
+@c ode{melody} (everything after the equals sign) and inserts it
+@c ode{TimeKey},
+@c ode{pianorighthand}, or @code{foofoobarbaz}.  For more details,
+@node Score is a (single) compound musical expression
+@subsection Score is a (single) compound musical expression
+
+@untranslated
+
+
+@c index score
+@c index contents of a score block
+@c index score block, contents of
+@c index compound music expression
+@c index music expression, compound
+@quotation
+@end quotation
+@ref{Music expressions explained}.  In that section, we saw how to
+@c ode{StaffGroup} for this ensemble, which simply groups a number
+@c ode{\lyricmode}.  These are essential to tell LilyPond
+@node Nesting music expressions
+@subsection Nesting music expressions
+
+@untranslated
+
+
+@c index staves, temporary
+@c index temporary staves
+@c index ossias
+@c index staff, positioning
+@node On the un-nestedness of brackets and ties
+@subsection On the un-nestedness of brackets and ties
+
+@untranslated
+
+
+@c index brackets, nesting
+@c index bracket types
+@c index brackets, enclosing vs. marking
+@c attempt to force this onto a new page
+@node Voices contain music
+@section Voices contain music
+
+@untranslated
+
+
+@menu
+* I'm hearing Voices::
+* Explicitly instantiating voices::
+* Voices and vocals::
+@end menu
+
+@node I'm hearing Voices
+@subsection I'm hearing Voices
+
+@untranslated
+
+
+@c index polyphony
+@c index layers
+@c index multiple voices
+@c index voices, multiple
+@c index Voice context
+@c index context, Voice
+@c index simultaneous music
+@c index music, simultaneous
+@c index concurrent music
+@c index music, concurrent
+@c index voices vs. chords
+@c index chords vs. voices
+@c ode{\\}, to place them in separate voices.  Without these, the
+@c index voices, naming
+@c index voices crossing brackets
+@c index slurs crossing brackets
+@c index ties crossing brackest
+@ref{Using variables for tweaks}.
+@c index polyphony and relative note entry
+@c index relative note entry and polyphony
+@c ode{\relative @{ @}} block.  Each note is still calculated
+@c ode{noteB} is relative to @code{noteA}                      @*
+@c ode{noteC} is relative to @code{noteB}, not @code{noteA};   @*
+@c ode{noteD} is relative to @code{noteB}, not @code{noteA} or
+@c ode{noteC};                                                 @*
+@c ode{noteE} is relative to @code{noteD}, not @code{noteA}.
+@c The following should appear as music without code
+@c The following should appear as music without code
+@c The three voice styles should be defined in -init
+@c index stem down
+@c index voices and stem directions
+@c index stem directions and voices
+@c index stem up
+@node Explicitly instantiating voices
+@subsection Explicitly instantiating voices
+
+@untranslated
+
+
+@c index voice contexts, creating
+@c ode{\voiceOne} ... @code{\voiceFour} to indicate the required
+@c The following example should not display the code
+@c index voices, reverting to single
+@c index reverting to a single voice
+@c ode{\voiceFour} make them point downwards.  These commands also
+@c ode{\oneVoice}, @code{\voiceOne} and @code{voiceTwo} have on
+@c index nesting music expressions
+@c index nesting simultaneous constructs
+@c index nesting voices
+@c index voices, temporary
+@c index voices, nesting
+@c index spacing notes
+@subsubheading Note columns
+@c index note column
+@c index note collisions
+@c index collisions, notes
+@c index shift commands
+@c ode{\shiftOff} commands specify the degree to which notes and
+@c ode{\shiftOnn} and @code{\shiftOnnn} define further shift
+@node Voices and vocals
+@subsection Voices and vocals
+
+@untranslated
+
+
+@c index Lyrics context, creating
+@c index lyrics, linking to voice
+@c index lyrics and beaming
+@c index beaming and lyrics
+@c ode{\autoBeamOff} to turn off the automatic beaming.
+@c index vocal score structure
+@c index choir staff
+@c ode{\lyricmode} to ensure they are interpreted as lyrics
+@c index hymn structure
+@c index SATB structure
+@c index vocal scores with multiple verses
+@c index multiple vocal verses
+@c index verses, multiple vocal
+@c index verse and refrain
+@c index book, example of using
+@c ode{\score} blocks within an implicit @code{\book} block, as
+@node Contexts and engravers
+@section Contexts and engravers
+
+@untranslated
+
+
+@menu
+* Contexts explained::
+* Creating contexts::
+* Engravers explained::
+* Modifying context properties::
+* Adding and removing engravers::
+@end menu
+
+@node Contexts explained
+@subsection Contexts explained
+
+@untranslated
+
+
+@c index contexts explained
+@quotation
+@end quotation
+@c ode{Score} and @code{Staff} contexts.
+@c ode{Voice} contexts there are contexts which fit between
+@c ode{PianoStaff} and @code{ChoirStaff} contexts.  There
+@c ode{GregorianTranscriptionStaff}.
+@node Creating contexts
+@subsection Creating contexts
+
+@untranslated
+
+
+@c index new contexts
+@c index creating contexts
+@c index contexts, creating
+@c ode{Staff} contexts may be left to be created automatically, but for
+@c ode{Voice}).  This command creates a new context, and starts
+@c ode{Staff} and @code{Voice} contexts in earlier sections, but
+@c index contexts, naming
+@c index naming contexts
+@c ode{Staff}, @code{Voice}, etc, and the identifying name of a
+@node Engravers explained
+@subsection Engravers explained
+
+@untranslated
+
+
+@c index engravers
+@c ode{Metronome_mark_engraver}, whose action and output apply to the
+@c ode{Score} context.
+@c The old Dynamic_engraver is deprecated. -jm
+@node Modifying context properties
+@subsection Modifying context properties
+
+@untranslated
+
+
+@c index context properties
+@c index context properties, modifying
+@c index modifying context properties
+@c ode{\set} command.  This takes the form
+@c ode{Staff} or @code{Voice}.  It may be omitted,
+@c attempt to force this onto a new page
+@c index properties operating in contexts
+@c index setting properties within contexts
+@c ode{instrumentName} clearly lives in the @code{Staff} context, since
+@c ode{\set} command set the property @code{instrumentName} in the
+@c ode{Voice} context to @qq{Alto}, but as LilyPond does not look
+@c ode{\set} or @code{\unset} again.  Let's try changing the
+@c ode{##t} and @code{##f}, with two hash signs.  A text property
+@subsubheading Setting context properties with @code{\with}
+@c index context properties, setting with \with
+@c ode{\with @{ .. @}} block in which the property values are
+@c ode{\set} and returned to their default value with @code{\unset}.
+@c index fontSize, default and setting
+@c ode{\unset fontSize} command.
+@subsubheading Setting context properties with @code{\context}
+@c index context properties, setting with \context
+@c ode{\with} block, introduced above.  It is placed in a
+@c ode{\context} block within a @code{\layout} block.  Each
+@c ode{\context} block will affect all contexts of the type specified
+@c ode{\layout} block appears.  Here is a example to show the format:
+@c ode{\set} commands embedded in music statements.
+@c FIXME
+@c uncomment when backslash-node-name issue is resolved -pm
+@c @ruser{The set command}.
+@node Adding and removing engravers
+@subsection Adding and removing engravers
+
+@untranslated
+
+
+@c index engravers, adding
+@c index adding engravers
+@c index engravers, removing
+@c index removing engravers
+@subsubheading Changing a single context
+@c ode{\with} command placed immediately after the context creation
+@c index ambitus engraver
+@c ode{\consists @var{Engraver_name}},
+@c ode{Ambitus_engraver}, which is not normally included in any
+@c ode{Staff} context, it calculates the range from all
+@subsubheading Changing all contexts of the same type
+@c ode{\set} command in a @code{\context} block in the
+@node Extending the templates
+@section Extending the templates
+
+@untranslated
+
+
+@menu
+* Soprano and cello::
+* Four-part SATB vocal score::
+* Building a score from scratch::
+* Saving typing with variables and functions::
+* Scores and parts::
+@end menu
+
+@node Soprano and cello
+@subsection Soprano and cello
+
+@untranslated
+
+
+@c index template, modifying
+@c index modifying templates
+@c ode{melody} section.  We don't want two @code{\score} sections
+@c ode{text} to be @code{sopranoLyrics}.  Remember to rename both
+@c ode{melody = \relative c' @{ } part) and the name's use (in the
+@c ode{\score} section).
+@c ode{>>} around the music -- that tells LilyPond that there's
+@c Indentation in this example is deliberately poor
+@node Four-part SATB vocal score
+@subsection Four-part SATB vocal score
+
+@untranslated
+
+
+@c index template, SATB
+@c index SATB template
+@c The following should appear as music without code
+@c ode{\voiceXXX} commands should be removed.  We also need to specify
+@node Building a score from scratch
+@subsection Building a score from scratch
+
+@untranslated
+
+
+@c index template, writing your own
+@c index example of writing a score
+@c index writing a score, example
+@c index score, example of writing
+@c ode{<< .. >>} for the manual two staff and the pedal organ staff,
+@c ode{@{ .. @}} in case your music is coded in several variables
+@c ode{\voiceOne} and @code{\voiceTwo}, and enter the time signature
+@node Saving typing with variables and functions
+@subsection Saving typing with variables and functions
+
+@untranslated
+
+
+@c index variables
+@c index variables
+@c TODO Avoid padtext - not needed with skylining
+@c TODO Replace the following with a better example  -td
+@c Skylining handles this correctly without padText
+@c ode{padtext=}).
+@node Scores and parts
+@subsection Scores and parts
+
+@untranslated
+
+
+@c ode{\transpose f@tie{}c'} indicates that the argument, being
+@c ode{\hornNotes}, should be transposed by a fifth upwards.  Sounding
+@c ode{f} is denoted by notated @code{c'}, which corresponds with the
+@c ode{Score} context to true (@code{##t}).  Prepending the rest and
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/learning/introduction.itely b/Documentation/nl/learning/introduction.itely
new file mode 100644 (file)
index 0000000..b1bf76b
--- /dev/null
@@ -0,0 +1,239 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Introduction
+@chapter Introduction
+
+@untranslated
+
+
+@menu
+* Compiling a file::
+* Advanced editors::
+* How to write input files::
+* How to read the manuals::
+@end menu
+
+@node Compiling a file
+@section Compiling a file
+
+@untranslated
+
+
+@menu
+* Entering input::
+* MacOS X::
+* Windows::
+* Command-line::
+@end menu
+
+@node Entering input
+@subsection Entering input
+
+@untranslated
+
+
+@c index compiling
+@c index first example
+@c index example, first
+@c index case sensitive
+@c in this case we don't want verbatim
+@subheading Entering music and viewing output
+@c index PDF file
+@c index viewing music
+@c index text editors
+@c index running LilyPond under MacOS X
+@c index MacOS X, running LilyPond
+@c index running LilyPond under Windows
+@c index Windows, running LilyPond
+@c index running LilyPond under Unix
+@c index Unix, running LilyPond
+@ref{Advanced editors}.
+@node MacOS X
+@subsection MacOS X
+
+@untranslated
+
+
+@node Windows
+@subsection Windows
+
+@untranslated
+
+
+@node Command-line
+@subsection Command-line
+
+@untranslated
+
+
+@node Advanced editors
+@section Advanced editors
+
+@untranslated
+
+
+@menu
+* Denemo::
+* LilyPondTool::
+* Emacs::
+* Vim::
+@end menu
+
+@node Denemo
+@subsection Denemo
+
+@untranslated
+
+
+@node LilyPondTool
+@subsection LilyPondTool
+
+@untranslated
+
+
+@node Emacs
+@subsection Emacs
+
+@untranslated
+
+
+@node Vim
+@subsection Vim
+
+@untranslated
+
+
+@node How to write input files
+@section How to write input files
+
+@untranslated
+
+
+@menu
+* Simple notation::
+* Working on input files::
+@end menu
+
+@node Simple notation
+@subsection Simple notation
+
+@untranslated
+
+
+@c index simple notation
+@c index notation, simple
+@subheading Pitches
+@c index pitches
+@c index relative mode
+@c index quote, single
+@c index comma
+@c index accidentals and relative mode
+@c index relative mode, and accidentals
+@c ode{c} is the closest C to middle C.  This is followed by the
+@c ode{''} or @code{,,} -- but be careful that you use two single
+@c " - keeps quotes in order for context-sensitive editor -td
+@subheading Durations (rhythms)
+@c index note durations
+@c index durations
+@c index rhythms
+@c index whole note
+@c index half note
+@c index quarter note
+@c index dotted note
+@c index notating durations
+@subheading Rests
+@c index rest
+@c index notating rests
+@c ode{r}@tie{}:
+@subheading Time signature
+@c index time signature
+@subheading Clef
+@c index clef
+@c index treble
+@c index alto
+@c index tenor
+@c index bass
+@subheading All together
+@node Working on input files
+@subsection Working on input files
+
+@untranslated
+
+
+@c index curly braces
+@c index braces, curly
+@c index comments
+@c index line comment
+@c index comment, line
+@c index block comment
+@c index comment, line
+@c index case sensitive
+@c index whitespace insensitive
+@c index expressions
+@c ode{()} in mathematics.  The braces should be surrounded by a
+@c index comments
+@c index line comment
+@c index block comment
+@c ode{%} introduces a line comment; anything after @code{%} on
+@node How to read the manuals
+@section How to read the manuals
+
+@untranslated
+
+
+@menu
+* Omitting braces::
+* Clickable examples::
+* Keyboard navigation::
+* Overview of manuals::
+@end menu
+
+@node Omitting braces
+@unnumberedsubsec Omitting braces
+
+@untranslated
+
+
+@c index how to read the manual
+@c index manual, reading
+@c index reading the manual
+@c index examples, clickable
+@c index clickable examples
+@c index tips for constructing files
+@c index templates
+@c index constructing files, tips
+@c index files, tips for constructing
+@c ode{@w{\relative c'' @{ ... @}}}, as we saw in @ref{Working on
+@c ode{@w{\relative c'' @{ @}}} like this:
+@c ode{\relative}!  If we included @code{@w{\relative c'' @{ @}}}
+@node Clickable examples
+@unnumberedsubsec Clickable examples
+
+@untranslated
+
+
+@c no verbatim here
+@node Keyboard navigation
+@unnumberedsubsec Keyboard navigation
+
+@untranslated
+
+
+@node Overview of manuals
+@unnumberedsubsec Overview of manuals
+
+@untranslated
+
+
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/learning/macros.itexi b/Documentation/nl/learning/macros.itexi
new file mode 100644 (file)
index 0000000..2fe6bd2
--- /dev/null
@@ -0,0 +1,124 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: us-ascii; mode: texinfo; -*-
+@include version.itexi
+@include common-macros.itexi
+@c ***** Displaying text *****
+@c To get decent quotes in `foo' and ``foo''.
+@c artouche
+@quotation
+@quotation
+@c artouche
+@end quotation
+@end quotation
+@c ***** Headings in a doc subsection *****
+@c Don't insert an empty line after @predefined!  Right now
+@c it doesn't matter, but a future implementation will probably
+@c add some code which needs this restriction.
+@subsubheading Predefined commands
+@c The next macro is a dummy currently since texinfo doesn't
+@c provide a real ragged-right environment yet.
+@c
+@c Due to a bug in texi2html (texi2html.pl CVS versions <= 1.245)
+@c the macro must not be empty.
+@c
+@subsubheading Selected Snippets
+@c Don't insert an empty line after @seealso!  Otherwise we get
+@c unwanted extra vertical space in the PDF output.
+@subsubheading See also
+@subsubheading Known issues and warnings
+@c ***** Links and references *****
+@c Definitions for references:
+@c
+@c @rglos
+@c @rlearning
+@c @ruser
+@c @ressay
+@c @rprogram
+@c @rlsr
+@c @rinternals
+@c
+@c All these also have a @...named version which allows to specify the
+@c displayed text for the reference as second argument.
+@c
+@c ***** HTML + bigpage is a special case (other manual names); all other
+@c formats are treated similarly.
+@c *** not TeX ***
+@ifnottex
+@c ** bigpage **
+@ref{\TEXT\,,,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,,learning-big-page,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning-big-page,Learning Manual}
+@ref{\TEXT\,,,notation-big-page,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation-big-page,Notation Reference}
+@ref{\TEXT\,,,essay-big-page,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay-big-page,Essay}
+@ref{\TEXT\,,,application-big-page,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application-big-page,Application Usage}
+@ref{\TEXT\,,,snippets-big-page,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets-big-page,Snippets}
+@ref{\TEXT\,,,internals-big-page,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals-big-page,Internals Reference}
+@c ** not bigpage **
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,,lilypond-essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,lilypond-essay,Essay}
+@ref{\TEXT\,,,lilypond-application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,lilypond-application,Application Usage}
+@ref{\TEXT\,,,lilypond-snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,lilypond-snippets,Snippets}
+@ref{\TEXT\,,,lilypond-internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-internals,Internals Reference}
+@end ifnottex
+@c *** TeX ***
+@c All commands below should work in the middle of the line;
+@c we thus must not use @vindex directly since it works only if placed
+@c on a line of its own.  To overcome this problem, we define a
+@c replacement macro using the internal definition of @vindex which
+@c delimits arguments in the standard way (i.e., with braces).
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@c ***** Macros specific to the web site *****
+@c LEGALESE
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/learning/scheme-tutorial.itely b/Documentation/nl/learning/scheme-tutorial.itely
new file mode 100644 (file)
index 0000000..c2a13e8
--- /dev/null
@@ -0,0 +1,51 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Scheme tutorial
+@appendix Scheme tutorial
+
+@untranslated
+
+
+@c index Scheme
+@c index GUILE
+@c index Scheme, in-line code
+@c index accessing Scheme
+@c index evaluating Scheme
+@c index LISP
+@c ode{GUILE_LOAD_PATH} to the directory @code{../usr/shr/guile/1.8}
+@c ode{1} is the (integer) number one, while @code{-1.5} is a
+@c ode{#} symbols to introduce a Scheme section are not required.
+@c ode{(* 3 4)} is replaced by its value @code{12}.  A similar thing
+@c index quoting in Scheme
+@c ode{24} for the @code{twentyFour}.  Instead, we get the name
+@c ode{twentyFour}.
+@c ode{twentyFour} in the example above) and variables of internal
+@c index properties vs. variables
+@c index variables vs. properties
+@menu
+* Tweaking with Scheme::
+@end menu
+
+@node Tweaking with Scheme
+@appendixsec Tweaking with Scheme
+
+@untranslated
+
+
+@c ode{\override TextScript #'extra-offset = ( 1 . -1)}.  But
+@c This isn't a valid example with skylining
+@c It works fine without padText  -td
+@c Check this is a valid example with skylining
+@c It is - 'padding still works
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/learning/templates.itely b/Documentation/nl/learning/templates.itely
new file mode 100644 (file)
index 0000000..1971f21
--- /dev/null
@@ -0,0 +1,100 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Templates
+@appendix Templates
+
+@untranslated
+
+
+@c bad node name for ancient notation to avoid conflict
+@menu
+* Single staff::
+* Piano templates::
+* String quartet::
+* Vocal ensembles::
+* Orchestral templates::
+* Ancient notation templates::
+* Jazz combo::
+* lilypond-book templates::
+@end menu
+
+@node Single staff
+@appendixsec Single staff
+
+@untranslated
+
+
+@appendixsubsec Notes only
+@appendixsubsec Notes and lyrics
+@appendixsubsec Notes and chords
+@appendixsubsec Notes, lyrics, and chords.
+@node Piano templates
+@appendixsec Piano templates
+
+@untranslated
+
+
+@appendixsubsec Solo piano
+@appendixsubsec Piano and melody with lyrics
+@appendixsubsec Piano centered lyrics
+@appendixsubsec Piano centered dynamics
+@node String quartet
+@appendixsec String quartet
+
+@untranslated
+
+
+@appendixsubsec String quartet
+@appendixsubsec String quartet parts
+@node Vocal ensembles
+@appendixsec Vocal ensembles
+
+@untranslated
+
+
+@appendixsubsec SATB vocal score
+@appendixsubsec SATB vocal score and automatic piano reduction
+@appendixsubsec SATB with aligned contexts
+@node Orchestral templates
+@appendixsec Orchestral templates
+
+@untranslated
+
+
+@appendixsubsec Orchestra, choir and piano
+@c bad node name to avoid node name conflict
+@node Ancient notation templates
+@appendixsec Ancient notation templates
+
+@untranslated
+
+
+@appendixsubsec Transcription of mensural music
+@appendixsubsec Gregorian transcription template
+@node Jazz combo
+@appendixsec Jazz combo
+
+@untranslated
+
+
+@node lilypond-book templates
+@appendixsec lilypond-book templates
+
+@untranslated
+
+
+@appendixsubsec LaTeX
+@appendixsubsec Texinfo
+@appendixsubsec xelatex
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/learning/tweaks.itely b/Documentation/nl/learning/tweaks.itely
new file mode 100644 (file)
index 0000000..5e78941
--- /dev/null
@@ -0,0 +1,656 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of learning.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Tweaking output
+@chapter Tweaking output
+
+@untranslated
+
+
+@menu
+* Tweaking basics::
+* The Internals Reference manual::
+* Appearance of objects::
+* Placement of objects::
+* Collisions of objects::
+* Further tweaking::
+@end menu
+
+@node Tweaking basics
+@section Tweaking basics
+
+@untranslated
+
+
+@menu
+* Introduction to tweaks::
+* Objects and interfaces::
+* Naming conventions of objects and properties::
+* Tweaking methods::
+@end menu
+
+@node Introduction to tweaks
+@subsection Introduction to tweaks
+
+@untranslated
+
+
+@ref{Contexts and engravers}, as Contexts, Engravers, and the
+@node Objects and interfaces
+@subsection Objects and interfaces
+
+@untranslated
+
+
+@c index object
+@c index grob
+@c index spanner
+@c index interface
+@c index properties, object
+@c index object properties
+@c index layout object
+@c index object, layout
+@c index interface
+@c ode{Lyrics} objects, as well as objects to represent all
+@node Naming conventions of objects and properties
+@subsection Naming conventions of objects and properties
+
+@untranslated
+
+
+@c index naming conventions for objects
+@c index naming conventions for properties
+@c index objects, naming conventions
+@c index properties, naming conventions
+@ref{Contexts and engravers}.  Here for reference is a list
+@node Tweaking methods
+@subsection Tweaking methods
+
+@untranslated
+
+
+@c index tweaking methods
+@c index override command
+@c index override syntax
+@ref{Adding and removing engravers}.  We must now introduce some more
+@c ode{\override}.  Because this command has to modify
+@c ode{Lyrics}, and we shall omit it in many of the following
+@c index color property, example
+@c index NoteHead, example of overriding
+@c index revert command
+@c index color property, example
+@c index NoteHead, example of overriding
+@c ode{\override} or @code{\set} command to be effective only
+@c index color property, example
+@c index NoteHead, example of overriding
+@c index overrideProperty command
+@c ode{\overrideProperty}, which is occasionally required.
+@c Maybe explain in a later iteration  -td
+@c index tweak command
+@c ode{\once \override} would do:
+@c index font-size property, example
+@c index NoteHead, example of overriding
+@c index font-size property, example
+@c index @code{\tweak}, example
+@c ode{\tweak} command is simply
+@c index color property, example
+@c index @code{\tweak}, example
+@c index tuplets, nested
+@c index triplets, nested
+@c index bracket, tuplet
+@c index bracket, triplet
+@c index tuplet bracket
+@c index triplet bracket
+@c index @code{\tweak}, example
+@c index direction property, example
+@c index color property, example
+@c ode{\override} commands:
+@c index text property, example
+@c index tuplet-number function, example
+@c index transparent property, example
+@c index TupletNumber, example of overriding
+@c NOTE Tuplet brackets collide if notes are high on staff
+@c See issue 509
+@node The Internals Reference manual
+@section The Internals Reference manual
+
+@untranslated
+
+
+@c index Internals Reference
+@menu
+* Properties of layout objects::
+* Properties found in interfaces::
+* Types of properties::
+@end menu
+
+@node Properties of layout objects
+@subsection Properties of layout objects
+
+@untranslated
+
+
+@c index properties of layout objects
+@c index properties of grobs
+@c index grobs, properties of
+@c index layout objects, properties of
+@c index Internals Reference manual
+@c ode{\override} command would be needed.  But is there a
+@c index override example
+@c index Internals Reference, example of using
+@c index @code{\addlyrics} example
+@c ode{thickness} (number)
+@c ode{thickness} and that the new value should be a number
+@c index Slur example of overriding
+@c index thickness property, example
+@subheading Finding the context
+@c index context, finding
+@c index context, identifying correct
+@c ode{Slur_engraver} page.  At the very bottom it tells
+@subheading Overriding once only
+@c index overriding once only
+@c index once override
+@c index Slur, example of overriding
+@c index thickness property, example
+@subheading Reverting
+@c index revert
+@c index default properties, reverting to
+@c ode{\once} placed immediately before each of the notes where
+@c index Slur, example of overriding
+@c index thickness property, example
+@c index Slur, example of overriding
+@c index thickness property, example
+@node Properties found in interfaces
+@subsection Properties found in interfaces
+
+@untranslated
+
+
+@c index interface
+@c index interface properties
+@c index properties in interfaces
+@c ode{\override} command do we need to do this?  We first look in the
+@c ode{font-interface}.
+@c ode{font-interface} but @code{font-shape} is not?  The answer is
+@c ode{font-shape} is not.  The entries in @code{LyricText} then tell
+@c ode{LyricText}.  Other objects which support @code{font-interface}
+@c ode{italic}.  As before, we'll omit the context.
+@c ode{thickness} or @code{font-shape}, others are used as values that
+@c index font-shape property, example
+@c index italic, example
+@c index LyricText, example of overriding
+@c index @code{\addlyrics}, example
+@subheading Specifying the context in lyric mode
+@c index context, specifying in lyric mode
+@c index lyric mode, specifying context
+@node Types of properties
+@subsection Types of properties
+
+@untranslated
+
+
+@c index property types
+@c ode{symbol}.  To be valid, the value given to a property
+@c ode{\override} command.
+@node Appearance of objects
+@section Appearance of objects
+
+@untranslated
+
+
+@menu
+* Visibility and color of objects::
+* Size of objects::
+* Length and thickness of objects::
+@end menu
+
+@node Visibility and color of objects
+@subsection Visibility and color of objects
+
+@untranslated
+
+
+@c ode{BarLine}.  Its properties include two that control its
+@subheading stencil
+@c index stencil property
+@c index BarLine, example of overriding
+@c index stencil property, example
+@c index BarLine, example of overriding
+@c index stencil property, example
+@c ode{stencil} property of the @code{NoteHead} object is set to
+@c ode{#f}.  If this is the case, you can instead use the
+@c ode{point-stencil} function, which sets the stencil to a object
+@subheading break-visibility
+@c index break-visibility property
+@c ode{break-visibility} property requires a vector of three booleans.
+@c ode{\override} command.
+@c index BarLine, example of overriding
+@c index break-visibility property, example
+@subheading transparent
+@c index transparent property
+@c index transparency
+@c ode{grob-interface}.  So the command to make the time signature
+@c index TimeSignature, example of overriding
+@c index transparent property, example
+@c index TimeSignature, example of overriding
+@c index stencil property, example
+@subheading color
+@c index color property
+@c index BarLine, example of overriding
+@c index color property, example
+@c index color, X11
+@c index X11 colors
+@c ode{x11-color}, like this:
+@c index BarLine, example of overriding
+@c index color property, example
+@c index rgb colors
+@c index color, rgb
+@c index BarLine, example of overriding
+@c index color property, example
+@c index StaffSymbol, example of overriding
+@c index TimeSignature, example of overriding
+@c index Clef, example of overriding
+@c index NoteHead, example of overriding
+@c index Stem, example of overriding
+@c index BarLine, example of overriding
+@c index color property, example
+@c index x11-color, example of using
+@node Size of objects
+@subsection Size of objects
+
+@untranslated
+
+
+@c index changing size of objects
+@c index size of objects
+@c index objects, size of
+@c index objects, changing size of
+@c index alignAboveContext property, example
+@c index @code{\with}, example
+@c index alignAboveContext property, example
+@c index @code{\with}, example
+@c index stencil property, example
+@c index Clef, example of overriding
+@c index TimeSignature, example of overriding
+@c ode{\set} or @code{\override} commands embedded in the
+@c ode{\with} clause, or if none have been set there, the normal
+@c ode{alignBelowContext}, are two such properties -- once the staff
+@c index alignAboveContext property, example
+@c index @code{\with}, example
+@c index Clef, example of overriding
+@c index TimeSignature, example of overriding
+@c index alignAboveContext property, example
+@c index @code{\with}, example
+@c index Clef, example of overriding
+@c index TimeSignature, example of overriding
+@c index fontSize property, example
+@node Length and thickness of objects
+@subsection Length and thickness of objects
+
+@untranslated
+
+
+@c index distances
+@c index thickness
+@c index length
+@c index magstep
+@c index size, changing
+@c index stem length, changing
+@c index staff line spacing, changing
+@c ode{line-thickness.}  For example, by default, the lines of
+@c ode{magstep} provided for exactly this purpose.  It takes
+@c index alignAboveContext property, example
+@c index @code{\with}, example
+@c index Clef, example of overriding
+@c index TimeSignature, example of overriding
+@c index fontSize property, example
+@c index StaffSymbol, example of overriding
+@c index magstep function, example of using
+@c index staff-space property, example
+@c index stencil property, example
+@c ode{thickness} property.  An example of changing the thickness
+@node Placement of objects
+@section Placement of objects
+
+@untranslated
+
+
+@menu
+* Automatic behavior::
+* Within-staff objects::
+* Outside-staff objects::
+@end menu
+
+@node Automatic behavior
+@subsection Automatic behavior
+
+@untranslated
+
+
+@c index within-staff objects
+@c index outside-staff objects
+@c index objects, within-staff
+@c index objects, outside-staff
+@c ode{outside-staff-priority} property to determine the order in
+@c ode{outside-staff-priority}.  The outside-staff objects are
+@c ode{outside-staff-priority}, and placed so that they do not
+@c ode{outside-staff-priority} the one encountered first will be
+@c index markup example
+@node Within-staff objects
+@subsection Within-staff objects
+
+@untranslated
+
+
+@c index down
+@c index up
+@c index center
+@c index neutral
+@c index Stem, example of overriding
+@c index direction property, example
+@c ode{UP} for stems, but for some objects it means @q{center}.
+@c ode{\once \override} command or use the predefined command
+@c ode{\xxxNeutral} command.
+@subheading Fingering
+@c index fingering, placement
+@c index fingering, chords
+@c index Fingering, example of overriding
+@c index direction property, example
+@c index fingering example
+@c index fingering example
+@c index fingering example
+@c ode{\set fingeringOrientations} command.  The format of this
+@c ode{\set fingeringOrientations = #'([up] [left/right] [down])}
+@c ode{\set} is used because @code{fingeringOrientations} is a
+@c ode{New_fingering_engraver}.
+@c ode{up} appears in the list), below (if @code{down} appears),
+@c ode{right} are mutually exclusive -- fingering may be placed
+@c index fingering example
+@c index @code{\set}, example of using
+@c index fingeringOrientations property, example
+@c ode{Fingering} object in the IR to be @code{-5}, so let's
+@node Outside-staff objects
+@subsection Outside-staff objects
+
+@untranslated
+
+
+@c ode{grob-interface} and so is a property of all layout objects.
+@c ode{Staff} or @code{Voice} contexts.
+@c index text spanner
+@c index ottava bracket
+@c index TextSpanner, example of overriding
+@c index bound-details property, example
+@c index tweaking bar number placement
+@c index bar numbers, tweaking placement
+@c index tweaking metronome mark placement
+@c index metronome mark, tweaking placement
+@c index tweaking rehearsal mark placement
+@c index rehearsal marks, tweaking placement
+@c ode{Bar_number_engraver}, @code{Metronome_mark_engraver} or
+@c ode{Mark_engraver} respectively should be removed from the
+@c ode{Score} context and placed in the top @code{Staff} context.  If
+@c ode{outside-staff-priority} values:
+@c ode{TextSpanner}, remembering that @code{OttavaBracket} is created
+@c index TextSpanner, example of overriding
+@c index bound-details property, example
+@c index slurs and outside-staff-priority
+@c index slurs and articulations
+@c index articulations and slurs
+@c index TextScript, example of overriding
+@c index outside-staff-priority property, example
+@subheading \textLengthOn
+@c index notes, spreading out with text
+@c ode{\textLengthOff}.  Remember @code{\once} only works with
+@c ode{\override}, @code{\set}, @code{\revert} or @code{unset},
+@c index markup text, allowing collisions
+@c index TextScript, example of overriding
+@c index outside-staff-priority property, example
+@subheading Dynamics
+@c index tweaking dynamics placement
+@c index dynamics, tweaking placement
+@subheading Grob sizing
+@c index grob sizing
+@c index sizing grobs
+@c ode{grob-interface}.
+@c index @code{extra-spacing-width}
+@c ode{extra-spacing-width} to @code{'(+inf.0 . -inf.0)}.  So
+@c ode{'(0 . 0)} so the true width shines through.  This is
+@c index DynamicText, example of overriding
+@c index extra-spacing-width property, example
+@c index DynamicText, example of overriding
+@c index extra-spacing-width property, example
+@c ode{staff-padding} which is covered in the following section.
+@node Collisions of objects
+@section Collisions of objects
+
+@untranslated
+
+
+@menu
+* Moving objects::
+* Fixing overlapping notation::
+* Real music example::
+@end menu
+
+@node Moving objects
+@subsection Moving objects
+
+@untranslated
+
+
+@c index moving overlapping objects
+@c index moving colliding objects
+@c index moving colliding grobs
+@c index objects, moving colliding
+@c index grobs, moving colliding
+@c ode{direction}
+@ref{Within-staff objects}.
+@c ode{padding}, @code{left-padding},
+@c ode{right-padding}, @code{staff-padding}
+@c index padding
+@c index left-padding property
+@c index padding property
+@c index right-padding property
+@c index staff-padding property
+@c ode{side-position-interface}.
+@c ode{AccidentalPlacement} object has any effect on the placement
+@c ode{padding} property: @code{padding} controls the minimum amount of
+@c ode{side-position-interface} and the nearest other object (generally
+@c ode{self-alignment-X}
+@c index self-alignment-X property
+@c ode{-1} and @code{+1} may be specified, where @code{-1} is
+@c ode{extra-spacing-width}
+@c index extra-spacing-width property
+@c ode{item-interface}.  It takes two numbers, the first is added
+@c ode{staff-position}
+@c index staff-position property
+@c ode{staff-position} is a property of the
+@c ode{staff-symbol-referencer-interface}, which is supported by
+@c ode{force-hshift}
+@c index force-hshift property
+@ref{Explicitly instantiating voices}) do not resolve the note
+@c index extra-offset property
+@c ode{grob-interface}.  It takes a pair of numbers which specify the
+@c index positions property
+@node Fixing overlapping notation
+@subsection Fixing overlapping notation
+
+@untranslated
+
+
+@subheading padding property
+@c index padding
+@c index fixing overlapping notation
+@c index overlapping notation
+@c index Script, example of overriding
+@c index padding property, example
+@c index MetronomeMark, example of overriding
+@c index padding property, example
+@c ode{Voice} context will not be noticed.  For more details, see
+@subheading left-padding and right-padding
+@c index left-padding property
+@c index right-padding property
+@c index Accidental, example of overriding
+@c index text property, example
+@c index stencil property, example
+@c index AccidentalPlacement, example of overriding
+@c index right-padding property, example
+@subheading staff-padding property
+@c index aligning objects on a baseline
+@c index objects, aligning on a baseline
+@c ode{staff-padding} can be used to align objects such as dynamics
+@c ode{DynamicLineSpanner}.  This is because the baseline should apply
+@c index DynamicText, example of overriding
+@c index extra-spacing-width property, example
+@c index DynamicLineSpanner, example of overriding
+@c index staff-padding property, example
+@subheading self-alignment-X property
+@c index StringNumber, example of overriding
+@c index self-alignment-X property, example
+@subheading staff-position property
+@c index object collision within a staff
+@c ode{staff-position} is set to -4 for MultiMeasureRest, so we need to
+@c index MultiMeasureRest, example of overriding
+@c index staff-position property, example
+@subheading extra-offset property
+@c index positioning objects
+@c index positioning grobs
+@c index objects, positioning
+@c index grobs, positioning
+@c index Fingering, example of overriding
+@c index extra-offset property, example
+@subheading positions property
+@c index controlling tuplets, slurs, phrasing slurs, and beams manually
+@c index manually controlling tuplets, slurs, phrasing slurs, and beams
+@c index tuplet beams, controlling manually
+@c index slurs, controlling manually
+@c index phrasing slurs, controlling manually
+@c index beams, controlling manually
+@c index PhrasingSlur, example of overriding
+@c index positions property, example
+@c index Beam, example of overriding
+@c index positions property, example
+@subheading force-hshift property
+@c FIXME: formatting stuff  (ie not important right now IMO)
+@c @a nchor Chopin finally corrected TODOgp
+@c index NoteColumn, example of overriding
+@c index force-hshift property, example
+@node Real music example
+@subsection Real music example
+
+@untranslated
+
+
+@c The following should appear as music without code
+@c This example should not be indexed
+@c ode{staff-position} property, which is specified in half staff
+@c ode{\once \override Tie #'staff-position = #3.5}
+@c index Tie, example of overriding
+@c index staff-position property, example
+@c index NoteColumn, example of overriding
+@c index force-hshift property, example
+@c index Stem, example of overriding
+@c index transparent property, example
+@node Further tweaking
+@section Further tweaking
+
+@untranslated
+
+
+@menu
+* Other uses for tweaks::
+* Using variables for tweaks::
+* Style sheets::
+* Other sources of information::
+* Avoiding tweaks with slower processing::
+* Advanced tweaks with Scheme::
+@end menu
+
+@node Other uses for tweaks
+@subsection Other uses for tweaks
+
+@untranslated
+
+
+@c index transparent property, use of
+@c index objects, making invisible
+@c index removing objects
+@c index objects, removing
+@c index hiding objects
+@c index objects, hiding
+@c index invisible objects
+@c index objects, invisible
+@c index tying notes across voices
+@subheading Tying notes across voices
+@c index Stem, example of overriding
+@c index transparent property, example
+@c ode{length} to @code{8},
+@subheading Simulating a fermata in MIDI
+@c index stencil property, use of
+@c index fermata, implementing in MIDI
+@c index MetronomeMark, example of overriding
+@c index transparent property, example
+@c index MetronomeMark, example of overriding
+@c index stencil property, example
+@node Using variables for tweaks
+@subsection Using variables for tweaks
+
+@untranslated
+
+
+@c index variables, using for tweaks
+@c index using variables for tweaks
+@c index tweaks, using variables for
+@c ode{\override Lyrics . LyricText #'font-shape = #'italic}
+@c ode{\override Lyrics . LyricText #'font-series = #'bold}
+@c ode{\revert Lyrics . LyricText #'font-shape}
+@c ode{\revert Lyrics . LyricText #'font-series}
+@c index LyricText, example of overriding
+@c index font-shape property, example
+@c index font-series property, example
+@node Style sheets
+@subsection Style sheets
+
+@untranslated
+
+
+@ref{Tweaking output}, for details.  But what if you have many
+@ref{Advanced tweaks with Scheme}.
+@c We have to do this awkward example/lilypond-non-verbatim
+@c because we can't do the \include stuff in the manual.
+@c ode{\include "definitions.ily"} with
+@c ode{\include "web-publish.ily"}.  Of course, we could make this
+@node Other sources of information
+@subsection Other sources of information
+
+@untranslated
+
+
+@node Avoiding tweaks with slower processing
+@subsection Avoiding tweaks with slower processing
+
+@untranslated
+
+
+@node Advanced tweaks with Scheme
+@subsection Advanced tweaks with Scheme
+
+@untranslated
+
+
+@c ode{\tweak} commands, an even more powerful way of modifying
+@c index x11-color function, example of using
+@c index NoteHead, example of overriding
+@c index color property, setting to Scheme procedure
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/macros.itexi b/Documentation/nl/macros.itexi
new file mode 100644 (file)
index 0000000..b06d76f
--- /dev/null
@@ -0,0 +1,391 @@
+@c -*- coding: utf-8; mode: texinfo; -*-
+@ignore
+    Translation of GIT committish: 8135382760aa0adfac5aed987a272c394e59dbdb
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@include version.itexi
+@include common-macros.itexi
+
+
+@c   ***** Displaying text *****
+
+@c To get decent quotes in `foo' and ``foo''.
+@c FIXME: Use thin spaces for @qq.
+
+@ifnotinfo
+
+@macro q{TEXT}
+@quoteleft{}\TEXT\@quoteright{}
+@end macro
+
+@macro qq{TEXT}
+@guillemetleft{}@tie{}\TEXT\@tie{}@guillemetright{}
+@end macro
+
+@end ifnotinfo
+
+@ifinfo
+
+@macro q{TEXT}
+`\TEXT\'
+@end macro
+
+@macro qq{TEXT}
+« \TEXT\ »
+@end macro
+
+@end ifinfo
+
+
+@ifhtml
+
+@macro warning{TEXT}
+@cartouche
+@b{Note :} \TEXT\
+@end cartouche
+@end macro
+
+@end ifhtml
+
+@ifnothtml
+
+@macro warning{TEXT}
+@quotation
+@quotation
+@cartouche
+@b{Note :} \TEXT\
+@end cartouche
+@end quotation
+@end quotation
+@end macro
+
+@end ifnothtml
+
+
+
+@c   ***** Headings in a doc subsection *****
+
+@c Don't insert an empty line after @predefined!  Right now
+@c it doesn't matter, but a future implementation will probably
+@c add some code which needs this restriction.
+
+@macro predefined
+@noindent
+@subsubheading Commandes prédéfinies
+@end macro
+
+@c The next macro is a dummy currently since texinfo doesn't
+@c provide a real ragged-right environment yet.
+@c
+@c Due to a bug in texi2html (texi2html.pl CVS versions <= 1.245)
+@c the macro must not be empty.
+
+@macro endpredefined
+@c
+@end macro
+
+
+@macro snippets
+@noindent
+@subsubheading Morceaux choisis
+@end macro
+
+
+@c obsolete, remove when translation is fully updated
+@macro commonprop
+@noindent
+@subsubheading Propriétés couramment modifiées
+@end macro
+
+
+@c Don't insert an empty line after @seealso!  Otherwise we get
+@c unwanted extra vertical space in the PDF output.
+
+@macro seealso
+@noindent
+@subsubheading Voir aussi
+@indent
+@end macro
+
+
+@macro knownissues
+@noindent
+@subsubheading Problèmes connus et avertissements
+@end macro
+
+
+
+
+@c   ***** Links and references *****
+
+@c  Definitions for references:
+@c
+@c     @rglos
+@c     @rlearning
+@c     @ruser
+@c     @rprogram
+@c     @rlsr
+@c     @rinternals
+@c
+@c  All these also have a @...named version which allows to specify the
+@c  displayed text for the reference as second argument.
+@c
+@c ***** HTML + bigpage is a special case (other manual names); all other
+@c formats are treated similarly.
+
+
+@c *** not TeX ***
+
+@ifnottex
+
+@c ** bigpage **
+
+@ifset bigpage
+
+@macro rglos{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,music-glossary-big-page,Glossaire}
+@end macro
+
+@macro rglosnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,music-glossary-big-page,Glossaire}
+@end macro
+
+@macro rlearning{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,learning-big-page,Manuel d'initiation}
+@end macro
+
+@macro rlearningnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,learning-big-page,Manuel d'initiation}
+@end macro
+
+@macro ruser{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,notation-big-page,Manuel de notation}
+@end macro
+
+@macro rusernamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,notation-big-page,Manuel de notation}
+@end macro
+
+@macro ressay{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,essay-big-page,Essay}
+@end macro
+
+@macro ressaynamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,essay-big-page,Essay}
+@end macro
+
+@macro rprogram{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,application-big-page,Manuel d'utilisation du programme}
+@end macro
+
+@macro rprogramnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,application-big-page,Manuel d'utilisation du programme}
+@end macro
+
+@macro rlsr{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,snippets-big-page,Exemples de code}
+@end macro
+
+@macro rlsrnamed{TEXT,DISPLAY}
+@ref{\TEXT\,,\DISPLAY\,snippets-big-page,Exemples de code}
+@end macro
+
+@macro rinternals{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,internals-big-page,Référence des propriétés internes}
+@end macro
+
+@macro rinternalsnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,,internals-big-page,Référence des propriétés internes}
+@end macro
+
+@end ifset
+
+
+@c ** not bigpage **
+
+@ifclear bigpage
+
+@macro rglos{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,music-glossary,Glossaire}
+@end macro
+
+@macro rglosnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Glossaire}
+@end macro
+
+@macro rlearning{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,learning,Manuel d'initiation}
+@end macro
+
+@macro rlearningnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,learning,Manuel d'initiation}
+@end macro
+
+@macro ruser{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,notation,Manuel de notation}
+@end macro
+
+@macro rusernamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,notation,Manuel de notation}
+@end macro
+
+@macro ressay{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,essay,Essay}
+@end macro
+
+@macro ressaynamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@end macro
+
+@macro rprogram{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,application,Manuel d'utilisation du programme}
+@end macro
+
+@macro rprogramnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,application,Manuel d'utilisation du programme}
+@end macro
+
+@macro rlsr{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,snippets,Exemples de code}
+@end macro
+
+@macro rlsrnamed{TEXT,DISPLAY}
+@ref{\TEXT\,,\DISPLAY\,snippets,Exemples de code}
+@end macro
+
+@macro rinternals{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,internals,Référence des propriétés internes}
+@end macro
+
+@macro rinternalsnamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,,internals,Référence des propriétés internes}
+@end macro
+
+@end ifclear
+
+@end ifnottex
+
+
+@c *** TeX ***
+
+@iftex
+
+@c All commands below should work in the middle of the line;
+@c we thus must not use @vindex directly since it works only if placed
+@c on a line of its own.  To overcome this problem, we define a
+@c replacement macro using the internal definition of @vindex which
+@c delimits arguments in the standard way (i.e., with braces).
+
+@tex
+\gdef\lilyvindex#1{\doind{vr}{\code #1}\ignorespaces}
+@end tex
+
+@macro rglos{TEXT}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,,music-glossary,Glossaire}
+@end macro
+
+@macro rglosnamed{TEXT,DISPLAY}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Glossaire}
+@end macro
+
+@macro rlearning{TEXT}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,,learning.fr,Manuel d'initiation}
+@end macro
+
+@macro rlearningnamed{TEXT,DISPLAY}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,\DISPLAY\,learning.fr,Manuel d'initiation}
+@end macro
+
+@macro ruser{TEXT}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,,notation.fr,Manuel de notation}
+@end macro
+
+@macro rusernamed{TEXT,DISPLAY}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,\DISPLAY\,notation.fr,Manuel de notation}
+@end macro
+
+@macro ressay{TEXT}
+@vindex \TEXT\
+@ref{\TEXT\,,,lilypond-essay,Essay}
+@end macro
+
+@macro ressaynamed{TEXT,DISPLAY}
+@vindex \TEXT\
+@ref{\TEXT\,,\DISPLAY\,lilypond-essay,Essay}
+@end macro
+
+@macro rprogram{TEXT}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,,application.fr,Manuel d'utilisation du programme}
+@end macro
+
+@macro rprogramnamed{TEXT,DISPLAY}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,\DISPLAY\,application.fr,Manuel d'utilisation du programme}
+@end macro
+
+@macro rlsr{TEXT}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,,snippets,Exemples de code}
+@end macro
+
+@macro rlsrnamed{TEXT,DISPLAY}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,\DISPLAY\,snippets,Exemples de code}
+@end macro
+
+@macro rinternals{TEXT}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,,internals,Référence des propriétés internes}
+@end macro
+
+@macro rinternalsnamed{TEXT,DISPLAY}
+@lilyvindex{\TEXT\}
+@ref{\TEXT\,,,internals,Référence des propriétés internes}
+@end macro
+
+@end iftex
+
+
+@c   ***** Macros specific to translated docs *****
+
+@macro englishref
+Cette section n'est pas encore encore traduite, veuillez
+vous reporter à la documentation correspondante en anglais.
+@end macro
diff --git a/Documentation/nl/notation.tely b/Documentation/nl/notation.tely
new file mode 100644 (file)
index 0000000..d0f0741
--- /dev/null
@@ -0,0 +1,106 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@setfilename lilypond-notation.info
+@settitle GNU LilyPond Notation Reference
+@documentencoding UTF-8
+@documentlanguage nl
+@include macros.itexi
+@afourpaper
+@c Keep this here, since it pertains to the direntry below.
+@c * lilypond: (lilypond-application)Running LilyPond.      Invoking the
+@c LilyPond  program.
+@c
+@c Info files are no longer installed in a subdirectory, images are
+@c expected to be found in lilypond/ subdirectory.
+@c don't remove this comment.
+@ifnottex
+@node Top
+@top GNU LilyPond --- Notation Reference
+
+@untranslated
+
+
+@chapheading The music typesetter
+@c HJJ: Info needs `@top', which is a synonym for `@unnumbered' in TeX.
+@end ifnottex
+@c This produces the unified index
+@finalout
+@titlepage
+@title LilyPond
+@subtitle The music typesetter
+@titlefont{Notation Reference}
+@author The LilyPond development team
+@quotation
+@end quotation
+@vskip 20pt
+@end titlepage
+@copying
+@quotation
+@end quotation
+@end copying
+@ifnottex
+@quotation
+@end quotation
+@end ifnottex
+@ifnottex
+@c @rlearning{About the documentation}.
+@c index web site
+@c index URL
+@include dedication.itely
+@menu
+* Musical notation::
+* Specialist notation::
+* General input and output::
+* Spacing issues::
+* Changing defaults::
+* Interfaces for programmers::
+* Notation manual tables::
+* Cheat sheet::
+* LilyPond grammar::
+* GNU Free Documentation License::
+* LilyPond command index::
+* LilyPond index::
+@end menu
+
+@end ifnottex
+@c * Literature list::                Reference works about music notation.
+@contents
+@include notation/notation.itely
+@include notation/specialist.itely
+@include notation/input.itely
+@include notation/spacing.itely
+@include notation/changing-defaults.itely
+@include notation/programming-interface.itely
+@c @include notation/literature.itely
+@include notation/notation-appendices.itely
+@include notation/cheatsheet.itely
+@node LilyPond grammar
+@appendix LilyPond grammar
+
+@untranslated
+
+
+@include fdl.itexi
+@node LilyPond command index
+@appendix LilyPond command index
+
+@untranslated
+
+
+@node LilyPond index
+@appendix LilyPond index
+
+@untranslated
+
+
+@bye
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/notation/GNUmakefile b/Documentation/nl/notation/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/nl/notation/changing-defaults.itely b/Documentation/nl/notation/changing-defaults.itely
new file mode 100644 (file)
index 0000000..24a89ef
--- /dev/null
@@ -0,0 +1,672 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Changing defaults
+@chapter Changing defaults
+
+@untranslated
+
+
+@c index Internals Reference
+@c leave the @uref as one long line.
+@c ode{#}.@footnote{@rlearning{Scheme tutorial}, contains a short tutorial
+@menu
+* Interpretation contexts::
+* Explaining the Internals Reference::
+* Modifying properties::
+* Useful concepts and properties::
+* Advanced tweaks::
+@end menu
+
+@node Interpretation contexts
+@section Interpretation contexts
+
+@untranslated
+
+
+@menu
+* Contexts explained::
+* Creating contexts::
+* Keeping contexts alive::
+* Modifying context plug-ins::
+* Changing context default settings::
+* Defining new contexts::
+* Aligning contexts::
+@end menu
+
+@node Contexts explained
+@subsection Contexts explained
+
+@untranslated
+
+
+@c TODO Rethink and rewrite
+@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 - the master of all contexts::
+* Top-level contexts - staff containers::
+* Intermediate-level contexts - staves::
+* Bottom-level contexts - voices::
+@end menu
+
+@node Score - the master of all contexts
+@unnumberedsubsubsec Score - the master of all contexts
+
+@untranslated
+
+
+@c ode{\score @{@dots{}@}} or @code{\layout @{@dots{}@}} block is
+@node Top-level contexts - staff containers
+@unnumberedsubsubsec Top-level contexts - staff containers
+
+@untranslated
+
+
+@node Intermediate-level contexts - staves
+@unnumberedsubsubsec Intermediate-level contexts - staves
+
+@untranslated
+
+
+@c ode{Voice} contexts.
+@node Bottom-level contexts - voices
+@unnumberedsubsubsec Bottom-level contexts - voices
+
+@untranslated
+
+
+@node Creating contexts
+@subsection Creating contexts
+
+@untranslated
+
+
+@c TODO \new Score and \score
+@c TODO more complete descriptions rather than learning style
+@c index new contexts
+@c index Context, creating
+@c ode{Voice}).  This command creates a new context, and starts
+@c ode{\new Staff}.
+@c index creating contexts
+@ref{Running a function on all layout objects}).  Without an explicit
+@c ode{\context}, it is usually applied to @code{Voice}
+@node Keeping contexts alive
+@subsection Keeping contexts alive
+
+@untranslated
+
+
+@c index contexts, keeping alive
+@c index contexts, lifetime
+@c ode{\change} commands, associating lyrics with a voice with
+@c ode{\lyricsto} commands, or when adding further musical events to
+@c ode{Voice} contexts in a @code{Staff} context or in a
+@c ode{<<...>>} construct will always persist to the end of the
+@c ode{<<...>>} constructs.
+@c index lyrics, aligning with sporadic melody
+@node Modifying context plug-ins
+@subsection Modifying context plug-ins
+
+@untranslated
+
+
+@c TODO Should this be Modifying engravers or Modifying contexts?
+@c ode{Note_head_engraver} and the @code{Staff} context contains a
+@c ode{Key_signature_engraver}.
+@c ode{Clef_engraver} from a @code{Staff} context,
+@c ode{Staff} context, we can have a score where each staff has its own
+@c index polymetric scores
+@c index Time signatures, multiple
+@c ode{Bar_engraver} must normally be first, and
+@node Changing context default settings
+@subsection Changing context default settings
+
+@untranslated
+
+
+@c ode{Score}, @code{Staff} and @code{Voice} contexts may be specified
+@c ode{Voice} contexts in a similar way.
+@c ode{\Staff} settings.  If you wish to change the defaults for a
+@c TODO: add \with in here.
+@node Defining new contexts
+@subsection Defining new contexts
+
+@untranslated
+
+
+@c ode{Voice} context from scratch.  It will be similar to
+@c ode{Voice}, but only prints centered slash note heads.  It can be used
+@c ode{\layout} block,
+@node Aligning contexts
+@subsection Aligning contexts
+
+@untranslated
+
+
+@c TODO Better example needed.  Ref LM, and expand on it.
+@c index ossia
+@c index nested contexts
+@c index contexts, nested
+@node Explaining the Internals Reference
+@section Explaining the Internals Reference
+
+@untranslated
+
+
+@menu
+* Navigating the program reference::
+* Layout interfaces::
+* Determining the grob property::
+* Naming conventions::
+@end menu
+
+@node Navigating the program reference
+@subsection Navigating the program reference
+
+@untranslated
+
+
+@c TODO remove this (it's in the LM)
+@c Replace with more factual directions
+@ref{Fingering instructions}), you will notice:
+@quotation
+@end quotation
+@c outdated info; probably will delete.
+@quotation
+@end quotation
+@quotation
+@end quotation
+@c ode{Fingering_engraver} plug-in will process them.
+@c I can't figure out what this is supposed to mean.  -gp
+@c old info?  it doesn't make any sense to me with our current docs.
+@quotation
+@end quotation
+@c ode{Music definitions}
+@node Layout interfaces
+@subsection Layout interfaces
+
+@untranslated
+
+
+@c index interface, layout
+@c index layout interface
+@c index grob
+@c ode{Fingering} object.  For example, the page says
+@quotation
+@c ode{padding} (dimension, in staff space):
+@c ode{0.5}
+@end quotation
+@quotation
+@end quotation
+@node Determining the grob property
+@subsection Determining the grob property
+
+@untranslated
+
+
+@c TODO remove this (it's in the LM)
+@c Replace with more factual directions
+@quotation
+@c ode{side-position-interface}
+@end quotation
+@c index padding
+@quotation
+@end quotation
+@quotation
+@end quotation
+@node Naming conventions
+@subsection Naming conventions
+
+@untranslated
+
+
+@node Modifying properties
+@section Modifying properties
+
+@untranslated
+
+
+@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
+* Overview of modifying properties::
+* The set command::
+* The override command::
+* The tweak command::
+* set versus override::
+@end menu
+
+@node Overview of modifying properties
+@subsection Overview of modifying properties
+
+@untranslated
+
+
+@c ode{Stem} or @code{NoteHead}, and @var{property} is an internal
+@c ode{\once} applies the change during one timestep only.
+@c ode{Beam} comes after the Beam is started, so it has no effect.
+@c ode{\revert} in the next example does not do anything.
+@c leave this as a long long
+@node The set command
+@subsection The @code{\set} command
+
+@untranslated
+
+
+@c index properties
+@c index changing properties
+@c ode{Lyrics}) is used.  In this example,
+@c ode{Voice}s in the current stave.  The change is applied
+@c index \once
+@node The override command
+@subsection The @code{\override} command
+
+@untranslated
+
+
+@c index internal documentation
+@c index finding graphical objects
+@c index graphical object descriptions
+@c index tweaking
+@c index internal documentation
+@node The tweak command
+@subsection The @code{\tweak} command
+
+@untranslated
+
+
+@c index tweaking
+@c index chord, modifying one note in
+@c ode{ChordEvent} event before the note, so separating the tweak
+@c ode{ChordEvent} in the music stream, so remaining adjacent to the
+@c TODO expand to include any further uses of \tweak
+@c TODO add examples of these
+@c ode{\tweak} command in the input stream by the automatic
+@ref{Displaying music expressions}.
+@c index tweaks in a variable
+@c index tweaks in lyrics
+@c index tweaking control points
+@c index control points, tweaking
+@node set versus override
+@subsection @code{\set} vs. @code{\override}
+
+@untranslated
+
+
+@c ode{\override}.  There are actually two different kinds of
+@c ode{studlyCaps}.  They mostly control the translation from
+@c ode{measurePosition} is an obvious example of
+@c ode{\override} is actually a shorthand;
+@c leave this long line -gp
+@c ode{dashed-words}.  The values of grob properties change
+@c ode{fontSize} is a special property: it is equivalent to
+@node Useful concepts and properties
+@section Useful concepts and properties
+
+@untranslated
+
+
+@menu
+* Input modes::
+* Direction and placement::
+* Context layout order::
+* Distances and measurements::
+* Staff symbol properties::
+* Spanners::
+* Visibility of objects::
+* Line styles::
+* Rotating objects::
+@end menu
+
+@node Input modes
+@subsection Input modes
+
+@untranslated
+
+
+@ref{Chord notation}.  Chords are rendered as notes on a staff.
+@ref{Basic percussion notation}.
+@ref{Entering figured bass}.
+@ref{Default tablatures}.
+@ref{Automatic fret diagrams} or you can enter them as a markup
+@ref{Fret diagram markups}).
+@c ode{\lyricsto} command which associates the following lyrics
+@ref{Text markup commands}.
+@c silly work-around for texinfo broken-ness
+@c (@strong{Note...} causes a spurious cross-reference in Info)
+@c ode{\notemode} command.  Input is interpreted as pitches,
+@node Direction and placement
+@subsection Direction and placement
+
+@untranslated
+
+
+@c TODO Add table showing these
+@c ode{DOWN} may be used instead of @code{1} and @code{-1}
+@c ode{direction} to @code{0} or @code{CENTER}.  Alternatively,
+@c ode{\xxxUp}, @code{xxxDown}, @code{xxxNeutral}
+@c ode{1} or @code{RIGHT} means @qq{to the right}.  @code{0}
+@node Context layout order
+@subsection Context layout order
+
+@untranslated
+
+
+@c index contexts, layout order
+@node Distances and measurements
+@subsection Distances and measurements
+
+@untranslated
+
+
+@c index distances, absolute
+@c index distances, scaled
+@c ode{\in}@tie{}(inches), or @code{\pt}@tie{}(points, 1/72.27
+@c ode{\staff-space} to the quantity.
+@c ode{StaffSymbol}.  Scaled distances automatically scale with any
+@c ode{staff-space} property of @code{StaffSymbol}, but fonts scale
+@c ode{staff-space} property of @code{StaffSymbol} and the size of
+@c ode{staff-space}.  For an explanation and an example of its use,
+@ref{Page formatting},
+@ref{Setting the staff size}.
+@node Staff symbol properties
+@subsection Staff symbol properties
+
+@untranslated
+
+
+@c index adjusting staff symbol
+@c index drawing staff symbol
+@c index 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 ode{'line-count} property.  The number of staff lines is
+@node Spanners
+@subsection Spanners
+
+@untranslated
+
+
+@unnumberedsubsubsec Using the @code{spanner-interface}
+@c ode{minimum-length} property.  Increasing this usually has the
+@c ode{springs-and-rods} property is set:
+@c ode{to-barline}.  By default this is true, causing hairpins and
+@unnumberedsubsubsec Using the @code{line-spanner-interface}
+@c ode{ly:line-interface::print}.  This routine determines the
+@c ode{right} sub-lists of the @code{bound-details} property
+@c ode{LEFT}) makes the line start/end at the left side of the note
+@c ode{Y} sub-properties.  Setting either @code{stencil-align-dir-y}
+@c ode{DOWN} means align the @emph{bottom} edge of the text with
+@node Visibility of objects
+@subsection Visibility of objects
+
+@untranslated
+
+
+@c index objects, visibility of
+@c index grobs, visibility of
+@c index visibility of objects
+@c ode{break-visibility} property can be overridden.  The first
+@menu
+* Removing the stencil::
+* Making objects transparent::
+* Painting objects white::
+* Using break-visibility::
+* Special considerations::
+@end menu
+
+@node Removing the stencil
+@unnumberedsubsubsec Removing the stencil
+
+@untranslated
+
+
+@c index stencil, removing
+@c ode{\revert}.
+@node Making objects transparent
+@unnumberedsubsubsec Making objects transparent
+
+@untranslated
+
+
+@c index transparent, making objects
+@node Painting objects white
+@unnumberedsubsubsec Painting objects white
+
+@untranslated
+
+
+@c index objects, coloring
+@c index coloring objects
+@c index layers
+@c index printing order
+@c index overwriting objects
+@c index objects, overwriting
+@c index grobs, overwriting
+@c ode{1}, although a few objects, including @code{StaffSymbol} and
+@c ode{BarLine}, are assigned a value of @code{0}.  The order of
+@c ode{layer} value @code{0}), so overwriting them.  To change this,
+@c ode{layer}, say @code{-1}, so that it is drawn earlier:
+@node Using break-visibility
+@unnumberedsubsubsec Using break-visibility
+
+@untranslated
+
+
+@c TODO Add making other objects breakable
+@c index break-visibility
+@c ode{break-visibility} property to control their visibility
+@c Leave this ref on a newline - formats incorrectly otherwise -td
+@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}
+@c omit the following item until it can be explained -td
+@c @item @code{BreakAlignGroup}  @tab @code{Score}          @tab calculated
+@c omit KeyCancellation until it can be explained -td
+@c @item @code{KeyCancellation}  @tab ??             @tab @code{begin-of-line-invisible}
+@c omit LeftEdge until it can be explained -td
+@c @item @code{LeftEdge}         @tab @code{Score}          @tab @code{center-invisible}
+@c ode{break-visibility} must be present, not all of them are
+@node Special considerations
+@unnumberedsubsubsec Special considerations
+
+@untranslated
+
+
+@c index key signature, visibility following explicit change
+@c index explicitKeySignatureVisibility
+@c index clef, visibility following explicit change
+@c index explicitClefVisibility
+@c ode{explicitClefVisibility} properties.  These are the equivalent
+@c ode{break-visibility}.  Both are properties of the Staff context,
+@c ode{\set} command.  Both are set by default to @code{all-visible}.
+@c ode{break-visibility} must still be overridden in the appropriate
+@c TODO Add visibility of cautionary accidentals before notes
+@c index automaticBars
+@c index bar lines, suppressing
+@c TODO Add example
+@c index octavated clefs, visibility of
+@c index visibility of octavated clefs
+@c index clefs, visibility of octavation
+@c ode{OctavateEight} layout object.  Its visibility is controlled
+@node Line styles
+@subsection Line styles
+
+@untranslated
+
+
+@c ode{ly:line-interface::print}.  This routine determines the
+@c FIXME Complete
+@c ode{left} instead of @code{right}.
+@ref{Spanners}.
+@node Rotating objects
+@subsection Rotating objects
+
+@untranslated
+
+
+@menu
+* Rotating layout objects::
+* Rotating markup::
+@end menu
+
+@node Rotating layout objects
+@unnumberedsubsubsec Rotating layout objects
+
+@untranslated
+
+
+@c index rotating objects
+@c index objects, rotating
+@c index hairpins, angled
+@c index angled hairpins
+@node Rotating markup
+@unnumberedsubsubsec Rotating markup
+
+@untranslated
+
+
+@c ode{outside-staff-priority} property for text is set to @code{#f}
+@node Advanced tweaks
+@section Advanced tweaks
+
+@untranslated
+
+
+@menu
+* Aligning objects::
+* Vertical grouping of grobs::
+* Modifying stencils::
+* Modifying shapes::
+@end menu
+
+@ref{Explaining the Internals Reference},
+@ref{Modifying properties},
+@ref{Interfaces for programmers}.
+@node Aligning objects
+@subsection Aligning objects
+
+@untranslated
+
+
+@c ode{X-offset} and @code{Y-offset} properties.  The value of
+@c ode{X-offset} gives the displacement from the x coordinate of
+@c ode{Y-offset} gives the displacement from the center line of the
+@c ode{Y-offset} may be set directly or may be set to be calculated
+@c ode{self-alignment-interface}.}
+@c ode{X-offset} have no effect.
+@menu
+* Setting @code{X-offset} and @code{Y-offset} directly::
+* Using the @code{side-position-interface}::
+* Using the @code{self-alignment-interface}::
+* Using the @code{break-alignable-interface}::
+@end menu
+
+@node Setting @code{X-offset} and @code{Y-offset} directly
+@unnumberedsubsubsec Setting @code{X-offset} and @code{Y-offset} directly
+
+@untranslated
+
+
+@c TODO write more
+@node Using the @code{side-position-interface}
+@unnumberedsubsubsec Using the @code{side-position-interface}
+
+@untranslated
+
+
+@c TODO add an example of each to the table
+@c TODO Add examples
+@node Using the @code{self-alignment-interface}
+@unnumberedsubsubsec Using the @code{self-alignment-interface}
+
+@untranslated
+
+
+@c ode{self-alignment-interface} is controlled by the value of
+@c ode{X-offset} property is set to
+@c ode{ly:self-alignment-interface::x-aligned-on-self}.
+@c ode{self-alignment-X}  may be given any
+@c ode{CENTER} and @code{RIGHT} may be used instead of the values
+@c ode{-1, 0, 1} respectively.
+@c ode{ly:self-alignment-interface::y-aligned-on-self}.  However,
+@c ode{CENTER}, @code{UP} may be substituted for @code{-1, 0, 1}
+@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
+@c TODO Add example
+@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
+@c TODO The align-interface, BassFigureAlignment and VerticalAlignment
+@node Using the @code{break-alignable-interface}
+@unnumberedsubsubsec Using the @code{break-alignable-interface}
+
+@untranslated
+
+
+@c index align to objects
+@c index break-align-symbols
+@c ode{breathing-sign}, @code{clef}, @code{custos}, @code{staff-bar},
+@c ode{left-edge}, @code{key-cancellation}, @code{key-signature}, and
+@c ode{time-signature}.
+@node Vertical grouping of grobs
+@subsection Vertical grouping of grobs
+
+@untranslated
+
+
+@c FIXME Expand this section
+@node Modifying stencils
+@subsection Modifying stencils
+
+@untranslated
+
+
+@c ode{MultiMeasureRest} object is @code{ly:multi-measure-rest::print}.
+@c ode{stencil} property to reference a different, specially-written,
+@c ode{text} property to the object which is set to contain the
+@ref{Graphic notation inside markup}.
+@c ode{\musicglyph} markup command -- see @ref{The Feta font}.
+@c TODO Add inserting eps files or ref to later
+@c TODO Add inserting Postscript or ref to later
+@ref{Graphic notation inside markup},
+@ref{Formatting text},
+@ref{Text markup commands},
+@ref{The Feta font}.
+@node Modifying shapes
+@subsection Modifying shapes
+
+@untranslated
+
+
+@menu
+* Modifying ties and slurs::
+@end menu
+
+@node Modifying ties and slurs
+@unnumberedsubsubsec Modifying ties and slurs
+
+@untranslated
+
+
+@c index slurs, modifying
+@c index ties, modifying
+@c index Bézier curves
+@c index Bézier control points
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/notation/cheatsheet.itely b/Documentation/nl/notation/cheatsheet.itely
new file mode 100644 (file)
index 0000000..ae01220
--- /dev/null
@@ -0,0 +1,21 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@c TODO: add tablature.
+@node Cheat sheet
+@appendix Cheat sheet
+
+@untranslated
+
+
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/notation/common-macros.itexi b/Documentation/nl/notation/common-macros.itexi
new file mode 100644 (file)
index 0000000..a77262f
--- /dev/null
@@ -0,0 +1,39 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c Don't replace quotes with directed quotes.
+@set txicodequoteundirected
+@set txicodequotebacktick
+@c ***** Displaying text *****
+@c We need this since @q{\} doesn't work with makeinfo 4.11 --
+@c say @q{@bs{}} instead.
+@c ***** Displaying images not generated by lilypond-book *****
+@c Current installation setup of Info docs requires that all images are
+@c expected to be found in the `lilypond/' subdirectory.  `lilypond-book'
+@c already generates proper @image commands for images of music; these
+@c macro definitions do the same for other images.
+@c ***** Headers *****
+@c ***** Indexing *****
+@c Don't remove the `@c' within the macro definition!  See section 19.3,
+@c `Macro Details and Caveats', in the texinfo info file for explanation.
+@c
+@c ***** Macros specific to translated docs *****
+@c ugh, cannot set/define global variable 'translationof' in any way :-(
+@set translationof \TEXT\
+@c ***** Macros specific to the web site *****
+@c keep the space for proper nesting of </p>
+@c not strictly necessary, but it makes things easier for updating news
+@c keep the space for proper nesting of </p>
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+@c @image{\IMAGE-FILE\}
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/notation/dedication.itely b/Documentation/nl/notation/dedication.itely
new file mode 100644 (file)
index 0000000..5518a5e
--- /dev/null
@@ -0,0 +1,16 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@quotation
+@end quotation
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/notation/fdl.itexi b/Documentation/nl/notation/fdl.itexi
new file mode 100644 (file)
index 0000000..51fc43a
--- /dev/null
@@ -0,0 +1,25 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@node GNU Free Documentation License
+@appendix GNU Free Documentation License
+
+@untranslated
+
+
+@c index FDL, GNU Free Documentation License
+@c enter Version 1.1, March 2000
+@subheading ADDENDUM: How to use this License for your documents
+@c Local Variables:
+@c ispell-local-pdict: "ispell-dict"
+@c End:
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/notation/input.itely b/Documentation/nl/notation/input.itely
new file mode 100644 (file)
index 0000000..82dd95f
--- /dev/null
@@ -0,0 +1,330 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node General input and output
+@chapter General input and output
+
+@untranslated
+
+
+@menu
+* Input structure::
+* Titles and headers::
+* Working with input files::
+* Controlling output::
+* MIDI output::
+@end menu
+
+@node Input structure
+@section Input structure
+
+@untranslated
+
+
+@menu
+* Structure of a score::
+* Multiple scores in a book::
+* File structure::
+@end menu
+
+@node Structure of a score
+@subsection Structure of a score
+
+@untranslated
+
+
+@ref{File structure}.)  Both single-line comments and comments
+@c ode{\score} block.
+@node Multiple scores in a book
+@subsection Multiple scores in a book
+
+@untranslated
+
+
+@c index movements, multiple
+@c ode{\book} block will result in a separate output.  If you do not
+@c ode{\book}, but if it is not present, the @code{\header} which is at
+@node File structure
+@subsection File structure
+
+@untranslated
+
+
+@c ode{\layout}.  Such a definition at the toplevel changes the default
+@c ode{#(set-default-paper-size "a7" 'landscape)} or
+@c ode{#(ly:set-option 'point-and-click #f)}.
+@c ode{toplevel-score-handler} at toplevel.  The default handler is
+@c ode{\book} blocks in a @code{.ly} file is if you wish to create
+@c ode{toplevel-music-handler} at toplevel.  The default handler is
+@c index variables
+@c index whitespace
+@c ode{\override} and @code{\set} commands.  In particular, spaces
+@c ode{\override Score . LyricText #'font-size = #5} and before and
+@node Titles and headers
+@section Titles and headers
+
+@untranslated
+
+
+@menu
+* Creating titles::
+* Custom titles::
+* Reference to page numbers::
+* Table of contents::
+@end menu
+
+@node Creating titles
+@subsection Creating titles
+
+@untranslated
+
+
+@c ode{\bookpart} blocks).
+@c index page breaks, forcing
+@c ode{\header} inside @code{\score}) by using
+@c index copyright
+@c index tagline
+@c ode{copyright} field from @code{\header} is inserted, and the last
+@node Custom titles
+@subsection Custom titles
+
+@untranslated
+
+
+@c index \paper
+@c index header
+@c index footer
+@c index page layout
+@c index titles
+@node Reference to page numbers
+@subsection Reference to page numbers
+
+@untranslated
+
+
+@c ode{\label},
+@c ode{\page-ref}.
+@node Table of contents
+@subsection Table of contents
+
+@untranslated
+
+
+@c ode{\table-of-contents},
+@c ode{\tocItem}.
+@node Working with input files
+@section Working with input files
+
+@untranslated
+
+
+@menu
+* Including LilyPond files::
+* Different editions from one source::
+* Text encoding::
+* Displaying LilyPond notation::
+@end menu
+
+@node Including LilyPond files
+@subsection Including LilyPond files
+
+@untranslated
+
+
+@c index including files
+@c ode{\include} statements are not interpreted until they have
+@c ode{-drelative-includes} option at the command line
+@node Different editions from one source
+@subsection Different editions from one source
+
+@untranslated
+
+
+@menu
+* Using variables::
+* Using tags::
+@end menu
+
+@node Using variables
+@unnumberedsubsubsec Using variables
+
+@untranslated
+
+
+@c index variables, use of
+@node Using tags
+@unnumberedsubsubsec Using tags
+
+@untranslated
+
+
+@c index tag
+@c index keep tagged music
+@c index remove tagged music
+@c ode{\removeWithTag #'@var{name}}.  The result of applying these filters
+@c ode{\removeWithTag}
+@c ode{\removeWithTag} commands should be a symbol
+@c ode{\tag} entries:
+@ref{Automatic part combining},
+@ref{Including LilyPond files}.
+@c This warning is more general than this placement implies.
+@c Rests are not merged whether or not they come from tagged sections.
+@c Should be deleted?  -td
+@node Text encoding
+@subsection Text encoding
+
+@untranslated
+
+
+@c index Unicode
+@c index UTF-8
+@c index non-ASCII characters
+@c ode{\markup} block, where @code{hhhh} is the hexadecimal code for
+@c index copyright sign
+@node Displaying LilyPond notation
+@subsection Displaying LilyPond notation
+
+@untranslated
+
+
+@c TODO What happens under Windows?
+@node Controlling output
+@section Controlling output
+
+@untranslated
+
+
+@menu
+* Extracting fragments of music::
+* Skipping corrected music::
+* Alternative output formats::
+@end menu
+
+@node Extracting fragments of music
+@subsection Extracting fragments of music
+
+@untranslated
+
+
+@c ode{-dclip-systems}.  The clips are output as EPS files, and are
+@node Skipping corrected music
+@subsection Skipping corrected music
+
+@untranslated
+
+
+@node Alternative output formats
+@subsection Alternative output formats
+
+@untranslated
+
+
+@c index scalable vector graphics output
+@c index SVG output
+@c index encapsulated postscript output
+@c index EPS output
+@node MIDI output
+@section MIDI output
+
+@untranslated
+
+
+@c index Sound
+@c index MIDI
+@c TODO Check this
+@menu
+* Creating MIDI files::
+* MIDI block::
+* What goes into the MIDI output?::
+* Repeats in MIDI::
+* Controlling MIDI dynamics::
+* Percussion in MIDI::
+@end menu
+
+@node Creating MIDI files
+@subsection Creating MIDI files
+
+@untranslated
+
+
+@c ode{\midi} block to a score, for example,
+@c ode{\layout} block, only MIDI output will be produced.  When
+@c ode{.midi}.
+@unnumberedsubsubsec Instrument names
+@c index instrument names
+@c ode{Staff.midiInstrument} property to the instrument name.
+@c In 2.11 the following no longer seems to be a problem -td
+@node MIDI block
+@subsection MIDI block
+
+@untranslated
+
+
+@c index MIDI block
+@c index MIDI context definitions
+@c ode{\midi@{ @}} block.
+@node What goes into the MIDI output?
+@subsection What goes into the MIDI output?
+
+@untranslated
+
+
+@c TODO Check grace notes - timing is suspect?
+@unnumberedsubsubsec Supported in MIDI
+@c index Pitches in MIDI
+@c index MIDI, Pitches
+@c index Quarter tones in MIDI
+@c index MIDI, quarter tones
+@c index Microtones in MIDI
+@c index MIDI, microtones
+@c index Chord names in MIDI
+@c index MIDI, chord names
+@c index Rhythms in MIDI
+@c index MIDI, Rhythms
+@c TODO etc
+@unnumberedsubsubsec Unsupported in MIDI
+@c TODO index as above
+@node Repeats in MIDI
+@subsection Repeats in MIDI
+
+@untranslated
+
+
+@c index repeats in MIDI
+@c ode{\unfoldRepeats} music function.  This function changes all
+@node Controlling MIDI dynamics
+@subsection Controlling MIDI dynamics
+
+@untranslated
+
+
+@unnumberedsubsubsec Dynamic marks
+@c ode{Score.dynamicAbsoluteVolumeFunction} to this function.
+@c ode{\rfz}, is required, this will not by default
+@unnumberedsubsubsec Overall MIDI volume
+@c ode{midiMaximumVolume} at the @code{Score} level.  These
+@unnumberedsubsubsec Equalizing different instruments (i)
+@unnumberedsubsubsec Equalizing different instruments (ii)
+@c ode{instrumentEqualizer} in the @code{Score} context to a new
+@c ode{dynamicAbsoluteVolumeFunction} at the start of this section.
+@c Delete when satisfied this is adequately covered elsewhere -td
+@c index microtones in MIDI
+@node Percussion in MIDI
+@subsection Percussion in MIDI
+
+@untranslated
+
+
+@c ode{DrumStaff} context, to obtain the correct MIDI output.
+@c TODO Expand with examples, and any other issues
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/notation/macros.itexi b/Documentation/nl/notation/macros.itexi
new file mode 100644 (file)
index 0000000..7d21b6e
--- /dev/null
@@ -0,0 +1,124 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: us-ascii; mode: texinfo; -*-
+@include version.itexi
+@include common-macros.itexi
+@c ***** Displaying text *****
+@c To get decent quotes in `foo' and ``foo''.
+@c artouche
+@quotation
+@quotation
+@c artouche
+@end quotation
+@end quotation
+@c ***** Headings in a doc subsection *****
+@c Don't insert an empty line after @predefined!  Right now
+@c it doesn't matter, but a future implementation will probably
+@c add some code which needs this restriction.
+@subsubheading Predefined commands
+@c The next macro is a dummy currently since texinfo doesn't
+@c provide a real ragged-right environment yet.
+@c
+@c Due to a bug in texi2html (texi2html.pl CVS versions <= 1.245)
+@c the macro must not be empty.
+@c
+@subsubheading Selected Snippets
+@c Don't insert an empty line after @seealso!  Otherwise we get
+@c unwanted extra vertical space in the PDF output.
+@subsubheading See also
+@subsubheading Known issues and warnings
+@c ***** Links and references *****
+@c Definitions for references:
+@c
+@c @rglos
+@c @rlearning
+@c @ruser
+@c @ressay
+@c @rprogram
+@c @rlsr
+@c @rinternals
+@c
+@c All these also have a @...named version which allows to specify the
+@c displayed text for the reference as second argument.
+@c
+@c ***** HTML + bigpage is a special case (other manual names); all other
+@c formats are treated similarly.
+@c *** not TeX ***
+@ifnottex
+@c ** bigpage **
+@ref{\TEXT\,,,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary-big-page,Music Glossary}
+@ref{\TEXT\,,,learning-big-page,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning-big-page,Learning Manual}
+@ref{\TEXT\,,,notation-big-page,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation-big-page,Notation Reference}
+@ref{\TEXT\,,,essay-big-page,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay-big-page,Essay}
+@ref{\TEXT\,,,application-big-page,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application-big-page,Application Usage}
+@ref{\TEXT\,,,snippets-big-page,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets-big-page,Snippets}
+@ref{\TEXT\,,,internals-big-page,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals-big-page,Internals Reference}
+@c ** not bigpage **
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-learning,Learning Manual}
+@ref{\TEXT\,,,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-notation,Notation Reference}
+@ref{\TEXT\,,,lilypond-essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,lilypond-essay,Essay}
+@ref{\TEXT\,,,lilypond-application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,lilypond-application,Application Usage}
+@ref{\TEXT\,,,lilypond-snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,lilypond-snippets,Snippets}
+@ref{\TEXT\,,,lilypond-internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,lilypond-internals,Internals Reference}
+@end ifnottex
+@c *** TeX ***
+@c All commands below should work in the middle of the line;
+@c we thus must not use @vindex directly since it works only if placed
+@c on a line of its own.  To overcome this problem, we define a
+@c replacement macro using the internal definition of @vindex which
+@c delimits arguments in the standard way (i.e., with braces).
+@ref{\TEXT\,,,music-glossary,Music Glossary}
+@ref{\TEXT\,,\DISPLAY\,music-glossary,Music Glossary}
+@ref{\TEXT\,,,learning,Learning Manual}
+@ref{\TEXT\,,\DISPLAY\,learning,Learning Manual}
+@ref{\TEXT\,,,notation,Notation Reference}
+@ref{\TEXT\,,\DISPLAY\,notation,Notation Reference}
+@ref{\TEXT\,,,essay,Essay}
+@ref{\TEXT\,,\DISPLAY\,essay,Essay}
+@ref{\TEXT\,,,application,Application Usage}
+@ref{\TEXT\,,\DISPLAY\,application,Application Usage}
+@ref{\TEXT\,,,snippets,Snippets}
+@ref{\TEXT\,,\DISPLAY\,snippets,Snippets}
+@ref{\TEXT\,,,internals,Internals Reference}
+@ref{\TEXT\,,\DISPLAY\,internals,Internals Reference}
+@c ***** Macros specific to the web site *****
+@c LEGALESE
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/notation/notation-appendices.itely b/Documentation/nl/notation/notation-appendices.itely
new file mode 100644 (file)
index 0000000..1ad8d94
--- /dev/null
@@ -0,0 +1,469 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Notation manual tables
+@appendix Notation manual tables
+
+@untranslated
+
+
+@c Please do not delete the following @ignore block.
+* Text markup commands::
+* Text markup list commands::
+* Note head styles::
+* List of articulations::
+@menu
+* Chord name chart::
+* Common chord modifiers::
+* Predefined fretboard diagrams::
+* MIDI instruments::
+* List of colors::
+* The Feta font::
+* Note head styles::
+* Text markup commands::
+* Text markup list commands::
+* List of articulations::
+* Percussion notes::
+* Technical glossary::
+* All context properties::
+* Layout properties::
+* Identifiers::
+* Scheme functions::
+@end menu
+
+@node Chord name chart
+@appendixsec Chord name chart
+
+@untranslated
+
+
+@node Common chord modifiers
+@appendixsec Common chord modifiers
+
+@untranslated
+
+
+@c ode{\chordmode} to generate standard chord structures.
+@c ode{5} or nothing
+@c ode{m} or @code{m5}
+@c ode{aug}
+@c ode{dim}
+@c ode{7}
+@c ode{maj7} or @code{maj}
+@c ode{m7}
+@c ode{dim7}
+@c ode{aug7}
+@c ode{m7.5-}
+@c ode{maj7.5-}
+@c ode{6}
+@c ode{m6}
+@c ode{9}
+@c ode{maj9}
+@c ode{m9}
+@c ode{11}
+@c ode{maj11}
+@c ode{m11}
+@c ode{13}
+@c ode{13.11}
+@c ode{maj13.11}
+@c ode{m13.11}
+@c ode{sus2}
+@c ode{sus4}
+@node Predefined fretboard diagrams
+@appendixsec Predefined fretboard diagrams
+
+@untranslated
+
+
+@node MIDI instruments
+@appendixsec MIDI instruments
+
+@untranslated
+
+
+@c ode{midiInstrument} property.
+@node List of colors
+@appendixsec List of colors
+
+@untranslated
+
+
+@subsubheading Normal colors
+@c index List of colors
+@c index Colors, list of
+@subsubheading X color names
+@subsubheading Color Names without a numerical suffix:
+@subsubheading Color names with a numerical suffix
+@subsubheading Grey Scale
+@node The Feta font
+@appendixsec The Feta font
+
+@untranslated
+
+
+@c index Feta font
+@c index Font, Feta
+@menu
+* Clef glyphs::
+* Time Signature glyphs::
+* Number glyphs::
+* Accidental glyphs::
+* Default Notehead glyphs::
+* Special Notehead glyphs::
+* Shape-note Notehead glyphs::
+* Rest glyphs::
+* Flag glyphs::
+* Dot glyphs::
+* Dynamic glyphs::
+* Script glyphs::
+* Arrowhead glyphs::
+* Bracket-tip glyphs::
+* Pedal glyphs::
+* Accordion glyphs::
+* Vaticana glyphs::
+* Medicaea glyphs::
+* Hufnagel glyphs::
+* Mensural glyphs::
+* Neomensural glyphs::
+* Petrucci glyphs::
+* Solesmes glyphs::
+@end menu
+
+@node Clef glyphs
+@unnumberedsubsec Clef glyphs
+
+@untranslated
+
+
+@node Time Signature glyphs
+@unnumberedsubsec Time Signature glyphs
+
+@untranslated
+
+
+@node Number glyphs
+@unnumberedsubsec Number glyphs
+
+@untranslated
+
+
+@node Accidental glyphs
+@unnumberedsubsec Accidental glyphs
+
+@untranslated
+
+
+@node Default Notehead glyphs
+@unnumberedsubsec Default Notehead glyphs
+
+@untranslated
+
+
+@node Special Notehead glyphs
+@unnumberedsubsec Special Notehead glyphs
+
+@untranslated
+
+
+@node Shape-note Notehead glyphs
+@unnumberedsubsec Shape-note Notehead glyphs
+
+@untranslated
+
+
+@node Rest glyphs
+@unnumberedsubsec Rest glyphs
+
+@untranslated
+
+
+@node Flag glyphs
+@unnumberedsubsec Flag glyphs
+
+@untranslated
+
+
+@node Dot glyphs
+@unnumberedsubsec Dot glyphs
+
+@untranslated
+
+
+@node Dynamic glyphs
+@unnumberedsubsec Dynamic glyphs
+
+@untranslated
+
+
+@node Script glyphs
+@unnumberedsubsec Script glyphs
+
+@untranslated
+
+
+@node Arrowhead glyphs
+@unnumberedsubsec Arrowhead glyphs
+
+@untranslated
+
+
+@node Bracket-tip glyphs
+@unnumberedsubsec Bracket-tip glyphs
+
+@untranslated
+
+
+@node Pedal glyphs
+@unnumberedsubsec Pedal glyphs
+
+@untranslated
+
+
+@node Accordion glyphs
+@unnumberedsubsec Accordion glyphs
+
+@untranslated
+
+
+@node Vaticana glyphs
+@unnumberedsubsec Vaticana glyphs
+
+@untranslated
+
+
+@node Medicaea glyphs
+@unnumberedsubsec Medicaea glyphs
+
+@untranslated
+
+
+@node Hufnagel glyphs
+@unnumberedsubsec Hufnagel glyphs
+
+@untranslated
+
+
+@node Mensural glyphs
+@unnumberedsubsec Mensural glyphs
+
+@untranslated
+
+
+@node Neomensural glyphs
+@unnumberedsubsec Neomensural glyphs
+
+@untranslated
+
+
+@node Petrucci glyphs
+@unnumberedsubsec Petrucci glyphs
+
+@untranslated
+
+
+@node Solesmes glyphs
+@unnumberedsubsec Solesmes glyphs
+
+@untranslated
+
+
+@node Note head styles
+@appendixsec Note head styles
+
+@untranslated
+
+
+@c index note head styles
+@include markup-commands.tely
+@include markup-list-commands.tely
+@node List of articulations
+@appendixsec List of articulations
+
+@untranslated
+
+
+@c index accent
+@c index marcato
+@c index staccatissimo
+@c index espressivo
+@c index fermata
+@c index stopped
+@c index staccato
+@c index portato
+@c index tenuto
+@c index upbow
+@c index downbow
+@c index foot marks
+@c index organ pedal marks
+@c index turn
+@c index open
+@c index stopped
+@c index flageolet
+@c index reverseturn
+@c index trill
+@c index prall
+@c index mordent
+@c index prallprall
+@c index prallmordent
+@c index prall, up
+@c index prall, down
+@c index thumb marking
+@c index segno
+@c index coda
+@c index varcoda
+@node Percussion notes
+@appendixsec Percussion notes
+
+@untranslated
+
+
+@node Technical glossary
+@appendixsec Technical glossary
+
+@untranslated
+
+
+@menu
+* callback::
+* glyph::
+* grob::
+* interface::
+* lexer::
+* output-def::
+* parser::
+* parser variable::
+* prob::
+* simple-closure::
+* smob::
+* stencil::
+@end menu
+
+@node callback
+@unnumberedsubsec callback
+
+@untranslated
+
+
+@c index callback
+@node glyph
+@unnumberedsubsec glyph
+
+@untranslated
+
+
+@c index glyph
+@c index font
+@c index typeface
+@ref{Fonts},
+@ref{Text encoding}.
+@node grob
+@unnumberedsubsec grob
+
+@untranslated
+
+
+@c index grob
+@c index layout objects
+@c index graphical objects
+@node interface
+@unnumberedsubsec interface
+
+@untranslated
+
+
+@c index interface
+@c index grob-interface
+@c index graphical object interfaces
+@ref{Layout interfaces}.
+@node lexer
+@unnumberedsubsec lexer
+
+@untranslated
+
+
+@c index lexer
+@node output-def
+@unnumberedsubsec output-def
+
+@untranslated
+
+
+@c index output-def
+@node parser
+@unnumberedsubsec parser
+
+@untranslated
+
+
+@c index parser
+@node parser variable
+@unnumberedsubsec parser variable
+
+@untranslated
+
+
+@c ode{\score} blocks as well as external files added with the
+@c ode{\include} command.  This can lead to unintended consequences
+@node prob
+@unnumberedsubsec prob
+
+@untranslated
+
+
+@node simple-closure
+@unnumberedsubsec simple-closure
+
+@untranslated
+
+
+@node smob
+@unnumberedsubsec smob
+
+@untranslated
+
+
+@node stencil
+@unnumberedsubsec stencil
+
+@untranslated
+
+
+@node All context properties
+@appendixsec All context properties
+
+@untranslated
+
+
+@include context-properties.tely
+@node Layout properties
+@appendixsec Layout properties
+
+@untranslated
+
+
+@include layout-properties.tely
+@node Identifiers
+@appendixsec Identifiers
+
+@untranslated
+
+
+@include identifiers.tely
+@node Scheme functions
+@appendixsec Scheme functions
+
+@untranslated
+
+
+@include scheme-functions.tely
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/notation/notation.itely b/Documentation/nl/notation/notation.itely
new file mode 100644 (file)
index 0000000..c7e48d9
--- /dev/null
@@ -0,0 +1,39 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Musical notation
+@chapter Musical notation
+
+@untranslated
+
+
+@menu
+* Pitches::
+* Rhythms::
+* Expressive marks::
+* Repeats::
+* Simultaneous notes::
+* Staff notation::
+* Editorial annotations::
+* Text::
+@end menu
+
+@include notation/pitches.itely
+@include notation/rhythms.itely
+@include notation/expressive.itely
+@include notation/repeats.itely
+@include notation/simultaneous.itely
+@include notation/staff.itely
+@include notation/editorial.itely
+@include notation/text.itely
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/notation/programming-interface.itely b/Documentation/nl/notation/programming-interface.itely
new file mode 100644 (file)
index 0000000..a2d92d5
--- /dev/null
@@ -0,0 +1,309 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Interfaces for programmers
+@chapter Interfaces for programmers
+
+@untranslated
+
+
+@menu
+* Music functions::
+* Programmer interfaces::
+* Building complicated functions::
+* Markup programmer interface::
+* Contexts for programmers::
+* Scheme procedures as properties::
+* Using Scheme code instead of \tweak::
+* Difficult tweaks::
+@end menu
+
+@node Music functions
+@section Music functions
+
+@untranslated
+
+
+@menu
+* Overview of music functions::
+* Simple substitution functions::
+* Paired substitution functions::
+* Mathematics in functions::
+* Void functions::
+* Functions without arguments::
+* Overview of available music functions::
+@end menu
+
+@node Overview of music functions
+@subsection Overview of music functions
+
+@untranslated
+
+
+@node Simple substitution functions
+@subsection Simple substitution functions
+
+@untranslated
+
+
+@node Paired substitution functions
+@subsection Paired substitution functions
+
+@untranslated
+
+
+@quotation
+@end quotation
+@node Mathematics in functions
+@subsection Mathematics in functions
+
+@untranslated
+
+
+@node Void functions
+@subsection Void functions
+
+@untranslated
+
+
+@c ode{'void} property set to @code{#t}, the parser is told to
+@node Functions without arguments
+@subsection Functions without arguments
+
+@untranslated
+
+
+@node Overview of available music functions
+@subsection Overview of available music functions
+
+@untranslated
+
+
+@c fixme ; this should be move somewhere else?
+@include identifiers.tely
+@node Programmer interfaces
+@section Programmer interfaces
+
+@untranslated
+
+
+@menu
+* Input variables and Scheme::
+* Internal music representation::
+@end menu
+
+@node Input variables and Scheme
+@subsection Input variables and Scheme
+
+@untranslated
+
+
+@c ode{traLaLa}.
+@c ode{\layout} block also contains a @code{traLaLa} variable, which is
+@c
+@c ode{\midi}, and @code{\layout} blocks are scopes nested inside that
+@c ode{twice}:
+@c Due to parser lookahead
+@ref{Void functions}, or
+@c ode{--safe} option.
+@node Internal music representation
+@subsection Internal music representation
+
+@untranslated
+
+
+@c ode{note-event}, a @code{rhythmic-event}, and a
+@c ode{melodic-event}.  All classes of music are listed in the
+@c ode{duration} properties that store the pitch and duration of that
+@c ode{element}.  The body of a repeat is stored in the @code{element}
+@c ode{elements}.
+@node Building complicated functions
+@section Building complicated functions
+
+@untranslated
+
+
+@menu
+* Displaying music expressions::
+* Music properties::
+* Doubling a note with slurs (example)::
+* Adding articulation to notes (example)::
+@end menu
+
+@node Displaying music expressions
+@subsection Displaying music expressions
+
+@untranslated
+
+
+@c index internal storage
+@c index displaying music expressions
+@c index internal representation, displaying
+@c index displayMusic
+@c ode{AbsoluteDynamicEvent} with a @code{"f"} text property.
+@node Music properties
+@subsection Music properties
+
+@untranslated
+
+
+@c ode{'elements} property of @code{someNote}.
+@c ode{\displayMusic} to display the Scheme representation of a music
+@node Doubling a note with slurs (example)
+@subsection Doubling a note with slurs (example)
+
+@untranslated
+
+
+@c ode{'elements} property of each one, and finally make a
+@c ode{SequentialMusic} with the two @code{EventChords}.
+@node Adding articulation to notes (example)
+@subsection Adding articulation to notes (example)
+
+@untranslated
+
+
+@ref{Creating contexts}.  However, suppose that we want to write
+@c ode{event-chord}.  In Scheme, the type of variable is often clear
+@c ode{let} is used to declare local variables.  Here we use one local
+@c ode{(ly:music-deep-copy event-chord)}.  @code{ly:music-deep-copy} is
+@c ode{ly:}.  It is use to make a copy of a music
+@c ode{EventChord} expression.  It is better to not modify the
+@c ode{EventChord} which was given as an argument, because it may be
+@c ode{NoteEventChord} expression and is a copy of @code{event-chord}.  We
+@c ode{result-event-chord} expression.
+@c ode{ly:music-property} is the function used to access music properties
+@c ode{ArticulationEvent} expression, which we copy from the
+@c ode{\displayMusic} output,
+@c ode{cons} is used to add an element to a list without modifying the
+@node Markup programmer interface
+@section Markup programmer interface
+
+@untranslated
+
+
+@menu
+* Markup construction in Scheme::
+* How markups work internally::
+* New markup command definition::
+* New markup list command definition::
+@end menu
+
+@node Markup construction in Scheme
+@subsection Markup construction in Scheme
+
+@untranslated
+
+
+@c index defining markup commands
+@quotation
+@end quotation
+@c ode{markup} macro.  For example, You may use function calls inside
+@c ode{markup} in order to manipulate character strings.  This is
+@ref{New markup command definition}).
+@c ode{#:center}, and @code{#:column} cannot be a variable or
+@c ode{make-center-markup}, or @code{make-column-markup} functions
+@node How markups work internally
+@subsection How markups work internally
+
+@untranslated
+
+
+@c ode{\raise} is actually represented by the @code{raise-markup}
+@c ode{raise-markup} function is called as
+@c ode{text example} string, and then it raises that Stencil by 0.5
+@node New markup command definition
+@subsection New markup command definition
+
+@untranslated
+
+
+@c ode{#'caps} for interpreting @code{Text-in-caps}.
+@c ode{padding} property) from the staff and the notes.  To make sure
+@c ode{#:translate}, we add an empty string (@code{#:hspace 0}) before the
+@c ode{name} is moved in relation to that empty string.  The net effect is
+@c ode{(make-line-markup ...)}.  Finally, the resulting markup is passed
+@c ode{props} arguments.
+@ref{Text markup commands}, for details.
+@c ode{define-markup-command} are limited as follows.
+@c index Scheme signature
+@c index signature, Scheme
+@c ommand{lilypond} complains that it cannot parse @code{foo} due to its
+@node New markup list command definition
+@subsection New markup list command definition
+
+@untranslated
+
+
+@c ode{define-markup-list-command} Scheme macro, which is similar to the
+@c ode{define-markup-command} macro described in
+@ref{New markup command definition}, except that where the latter returns
+@c ode{paragraph} markup list command takes a markup list argument, named
+@c ode{args}.  The predicate for markup lists is @code{markup-list?}.
+@c ode{par-indent}, from the property list @code{props} If the property
+@node Contexts for programmers
+@section Contexts for programmers
+
+@untranslated
+
+
+@menu
+* Context evaluation::
+* Running a function on all layout objects::
+@end menu
+
+@node Context evaluation
+@subsection Context evaluation
+
+@untranslated
+
+
+@c index calling code during interpreting
+@node Running a function on all layout objects
+@subsection Running a function on all layout objects
+
+@untranslated
+
+
+@c index calling code on layout objects
+@node Scheme procedures as properties
+@section Scheme procedures as properties
+
+@untranslated
+
+
+@c ode{AccidentalSuggestion},
+@c ode{ly:self-alignment-interface::centered-on-x-parent} are called
+@node Using Scheme code instead of \tweak
+@section Using Scheme code instead of @code{\tweak}
+
+@untranslated
+
+
+@c ode{^} and @code{_}.
+@c ode{m} (created with @code{make-music}) are extracted with
+@c ode{ly:music-property}, a new key-value pair to change the
+@c ode{acons} Scheme function, and the result is finally
+@c ode{let} block is the return value, @code{m} itself.
+@node Difficult tweaks
+@section Difficult tweaks
+
+@untranslated
+
+
+@c ode{after-line-breaking} callback contains the Scheme procedure that
+@c ode{my-callback}.  This procedure
+@c ode{ly:hairpin::after-line-breaking} should also be called.
+@c ode{\overrideProperty} function, which works similar to @code{\once
+@c ode{NonMusicalPaperColumn} and @code{PaperColumn}, still works as
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/notation/spacing.itely b/Documentation/nl/notation/spacing.itely
new file mode 100644 (file)
index 0000000..aa4b875
--- /dev/null
@@ -0,0 +1,423 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Spacing issues
+@chapter Spacing issues
+
+@untranslated
+
+
+@c ode{\score @{...@}} blocks and contains settings that
+@menu
+* Paper and pages::
+* Music layout::
+* Breaks::
+* Vertical spacing::
+* Horizontal spacing::
+* Fitting music onto fewer pages::
+@end menu
+
+@node Paper and pages
+@section Paper and pages
+
+@untranslated
+
+
+@menu
+* Paper size::
+* Page formatting::
+@end menu
+
+@node Paper size
+@subsection Paper size
+
+@untranslated
+
+
+@c index paper size
+@c index page size
+@c ode{set-default-paper-size} and @code{set-paper-size}.
+@c ode{set-default-paper-size} must be placed in the toplevel
+@c ode{set-default-paper-size} sets the size of all pages, whereas
+@c ode{set-paper-size} only sets the size of the pages that the
+@c ode{\paper} block applies to.  For example, if the @code{\paper}
+@c ode{\book}, then the paper size will only apply to that book.
+@c ode{letter}, @code{legal}, and @code{11x17} (also known as
+@c TODO add a new appendix for paper sizes (auto-generated) -pm
+@c ode{paper-alist} in the initialization file
+@c index orientation
+@c index landscape
+@c ode{set-default-paper-size}, pages will be rotated by 90
+@node Page formatting
+@subsection Page formatting
+
+@untranslated
+
+
+@menu
+* Vertical dimensions::
+* Horizontal dimensions::
+* Other layout variables::
+@end menu
+
+@node Vertical dimensions
+@unnumberedsubsubsec Vertical dimensions
+
+@untranslated
+
+
+@c ode{6\mm}.
+@c ode{evenHeaderMarkup}) and the title markup
+@c ode{5\mm}.
+@c ode{in}, @code{pt}, and @code{cm} are variables defined in
+@c ode{\paper} block, @code{page-music-height} and
+@c ode{page-make-stencil}.  The former tells the line-breaking algorithm
+@ref{Vertical spacing between systems}.
+@node Horizontal dimensions
+@unnumberedsubsubsec Horizontal dimensions
+
+@untranslated
+
+
+@c ode{left-margin}, @code{indent}, and @code{short-indent} may
+@c ode{set-default-paper-size} or @code{set-paper-size}.
+@c ode{set-default-paper-size} or @code{set-paper-size}.
+@c ode{20\mm}, as determined by @code{set-default-paper-size} or
+@c ode{set-paper-size}.
+@c ode{set-default-paper-size} or @code{set-paper-size}.
+@c ode{line-width}.
+@node Other layout variables
+@unnumberedsubsubsec Other layout variables
+
+@untranslated
+
+
+@c ode{5}.
+@c ode{#1}.
+@c ode{between-system-padding} is set to something different than
+@ref{Vertical spacing between systems}.
+@c ode{1.4}.  For details, see
+@ref{Vertical spacing between systems}.
+@c ode{##t}.
+@c ode{##f}.
+@node Music layout
+@section Music layout
+
+@untranslated
+
+
+@menu
+* Setting the staff size::
+* Score layout::
+@end menu
+
+@node Setting the staff size
+@subsection Setting the staff size
+
+@untranslated
+
+
+@c index font size, setting
+@c index staff size, setting
+@quotation
+@c modern rental material?
+@end quotation
+@c ode{fontSize} and the layout property @code{staff-space} (in
+@ref{Selecting notation font size}.
+@c ode{layout-set-staff-size} does not change the distance between the
+@node Score layout
+@subsection Score layout
+
+@untranslated
+
+
+@ref{Changing context default settings}.
+@node Breaks
+@section Breaks
+
+@untranslated
+
+
+@menu
+* Line breaking::
+* Page breaking::
+* Optimal page breaking::
+* Optimal page turning::
+* Minimal page breaking::
+* Explicit breaks::
+* Using an extra voice for breaks::
+@end menu
+
+@node Line breaking
+@subsection Line breaking
+
+@untranslated
+
+
+@c index line breaks
+@c index breaking lines
+@c ode{\break}. This will force a line break at this point.  However,
+@c TODO Check and add para on default for ragged-right
+@c index regular line breaks
+@c index four bar music.
+@c TODO Check this
+@c ode{\break},
+@c ode{\noBreak}.
+@c ode{\override Beam #'breakable = ##t}.
+@node Page breaking
+@subsection Page breaking
+
+@untranslated
+
+
+@c ode{\pageBreak} or @code{\noPageBreak} commands.  These commands are
+@c ode{ragged-last} which have the same effect on vertical spacing:
+@c ode{ragged-bottom} and @code{ragged-last-bottom}.  If set to
+@c ode{##t} the systems on all pages or just the last page
+@c ode{ly:optimal-breaking}, @code{ly:page-turn-breaking} and
+@c ode{ly:minimal-breaking}.  The default is @code{ly:optimal-breaking},
+@c ode{\pageBreak},
+@c ode{\noPageBreak}.
+@node Optimal page breaking
+@subsection Optimal page breaking
+
+@untranslated
+
+
+@c ode{ly:page-turn-breaking}, it has no concept of page turns.
+@node Optimal page turning
+@subsection Optimal page turning
+
+@untranslated
+
+
+@c ode{\allowPageTurn} will be inserted at the final @q{special} bar line in
+@c ode{minimumPageTurnLength} to determine how long a note-free section must
+@c ode{minimumPageTurnLength} is @code{#(ly:make-moment 1 1)}.  If you want
+@c ode{minimumRepeatLengthForPageTurn} then the @code{Page_turn_engraver} will
+@c ode{\allowPageTurn}, may also be used at top-level, between scores and
+@c ode{\pageTurn},
+@c ode{\noPageTurn},
+@c ode{\allowPageTurn}.
+@node Minimal page breaking
+@subsection Minimal page breaking
+
+@untranslated
+
+
+@node Explicit breaks
+@subsection Explicit breaks
+
+@untranslated
+
+
+@c ode{page-break-permission} is overridden to false, Lily will insert
+@node Using an extra voice for breaks
+@subsection Using an extra voice for breaks
+
+@untranslated
+
+
+@c ode{line-break-system-details} and the other useful but long properties of
+@c ode{NonMusicalPaperColumnGrob}, as explained in @ref{Vertical spacing}.
+@ref{Vertical spacing}.
+@node Vertical spacing
+@section Vertical spacing
+
+@untranslated
+
+
+@c index vertical spacing
+@c index spacing, vertical
+@menu
+* Vertical spacing inside a system::
+* Vertical spacing between systems::
+* Explicit staff and system positioning::
+* Two-pass vertical spacing::
+* Vertical collision avoidance::
+@end menu
+
+@node Vertical spacing inside a system
+@subsection Vertical spacing inside a system
+
+@untranslated
+
+
+@c index distance between staves
+@c index staff distance
+@c index space between staves
+@c index space inside systems
+@c ode{max-stretch} is set to zero, disabling stretching. To enable
+@c ode{keep-fixed-while-stretching} property of
+@c ode{VerticalAlignment} object.  The context parameters
+@c @lsr{spacing,page-spacing.ly},
+@c @lsr{spacing,alignment-vertical-spacing.ly}.
+@node Vertical spacing between systems
+@subsection Vertical spacing between systems
+
+@untranslated
+
+
+@c ode{page-limit-inter-system-space} variable in the @code{\paper}
+@c ode{1.3} means that the space can be 30% larger than what it would be
+@c ode{1}, the spacing would the same as on a ragged-bottom page, like
+@node Explicit staff and system positioning
+@subsection Explicit staff and system positioning
+
+@untranslated
+
+
+@c ode{NonMusicalPaperColumn #'line-break-system-details}.  Where
+@c ode{VerticalAxisGroup} and @code{\paper} settings specify vertical padding,
+@c ode{NonMusicalPaperColumn #'line-break-system-details} specifies exact
+@c ode{NonMusicalPaperColumn #'line-break-system-details} accepts an associative
+@c ode{\override} command in @code{\context} blocks and in the
+@c ode{\with} block.  On the other hand, when we override
+@c ode{NonMusicalPaperColumn} in the middle of note entry,
+@c ode{\overrideProperty} command:
+@c \book { } is required in these examples to ensure the spacing
+@c overrides can be seen between systems. -np
+@c ode{line-break-system-details} attribute of the
+@c ode{NonMusicalPaperColumn} grob.  Though the
+@c ode{line-break-system-details} attribute alist accepts many
+@c ode{X-offset} pair), we need only set the @code{Y-offset} and
+@c ode{alignment-offsets} pairs to control the vertical startpoint of
+@c ode{Y-offset} and @code{alignment-offsets} are interpreted as multiples
+@node Two-pass vertical spacing
+@subsection Two-pass vertical spacing
+
+@untranslated
+
+
+@quotation
+@end quotation
+@node Vertical collision avoidance
+@subsection Vertical collision avoidance
+
+@untranslated
+
+
+@c ode{outside-staff-priority} tells LilyPond in which order the objects
+@c ode{outside-staff-priority} (in increasing order).  One by one, LilyPond
+@c ode{outside-staff-padding}.
+@node Horizontal spacing
+@section Horizontal spacing
+
+@untranslated
+
+
+@c index horizontal spacing
+@c index spacing, horizontal
+@menu
+* Horizontal spacing overview::
+* New spacing area::
+* Changing horizontal spacing::
+* Line length::
+* Proportional notation::
+@end menu
+
+@node Horizontal spacing overview
+@subsection Horizontal spacing overview
+
+@untranslated
+
+
+@c ode{shortest-duration-space} in the @rinternals{SpacingSpanner}
+@c ode{spacing-increment}) of space to the note.
+@c ode{shortest-duration-space} is set to 2.0, meaning that the
+@c ode{spacing-increment}) of horizontal space.  This space is counted
+@c ode{lilypond} with the @code{--verbose} option.
+@c ode{common-shortest-duration} in @rinternals{SpacingSpanner}, then
+@c (see @rlearning{Engraving}), 
+@c ode{stem-spacing-correction} property in the
+@node New spacing area
+@subsection New spacing area
+
+@untranslated
+
+
+@c ode{newSpacingSection}.  This is useful when there are
+@c ode{SpacingSpanner} object, and hence new @code{\override}s
+@node Changing horizontal spacing
+@subsection Changing horizontal spacing
+
+@untranslated
+
+
+@c ode{base-shortest-duration} property.  Here
+@c ode{Score.SpacingSpanner #'uniform-stretching}.  This
+@node Line length
+@subsection Line length
+
+@untranslated
+
+
+@c index page breaks
+@c index breaking pages
+@c Although line-width can be set in \layout, it should be set in paper
+@c block, to get page layout right.
+@c Setting indent in \paper block makes not much sense, but it works.
+@c Bit verbose and vague, use examples?
+@c ode{line-width}.  They are set in the @code{\layout} block.  They
+@c index page layout
+@c index vertical spacing
+@c Note that for text there are several options for the last line.
+@c While Knuth TeX uses natural length, lead typesetters use the same
+@c stretch as the previous line.  eTeX uses \lastlinefit to
+@c interpolate between both these solutions.
+@node Proportional notation
+@subsection Proportional notation
+
+@untranslated
+
+
+@c ode{\context} block, or directly in music entry
+@c ode{#(ly:make-moment 1 16)}, @code{#(ly:make-moment 1 8)}, and
+@c ode{#(ly:make-moment 3 97)} are all possible as well.
+@c ode{proportionalNotationDuration}?  Usually by a process of trial and error,
+@c ode{SpacingSpanner}.
+@c ode{\newSpacingSection}.  See @ref{New spacing area}, for more info.
+@ref{New spacing area}.
+@node Fitting music onto fewer pages
+@section Fitting music onto fewer pages
+
+@untranslated
+
+
+@ref{Displaying spacing}.
+@menu
+* Displaying spacing::
+* Changing spacing::
+@end menu
+
+@node Displaying spacing
+@subsection Displaying spacing
+
+@untranslated
+
+
+@c index spacing, display of layout
+@c ode{annotate-spacing} in the @code{\paper} block:
+@c need to have \book{} otherwise we get the separate systems. -hwn
+@c ode{staff-spaces}, and the @code{staff-size} is 20 points (the
+@c ode{staff-spaces} is equivalent to 105 millimeters, the height
+@ref{Setting the staff size}.
+@node Changing spacing
+@subsection Changing spacing
+
+@untranslated
+
+
+@ref{Page formatting},
+@ref{Changing horizontal spacing}.
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/notation/specialist.itely b/Documentation/nl/notation/specialist.itely
new file mode 100644 (file)
index 0000000..03be0cc
--- /dev/null
@@ -0,0 +1,41 @@
+\input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: nl -*-
+@c This file is part of notation.tely
+@ignore
+    Translation of GIT committish: 1b3da70d81938d19a2b107382bbe25a267cf130b
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+@end ignore
+
+
+@c -*- coding: utf-8; mode: texinfo; -*-
+@c \version "2.12.0"
+@node Specialist notation
+@chapter Specialist notation
+
+@untranslated
+
+
+@menu
+* Vocal music::
+* Keyboard and other multi-staff instruments::
+* Unfretted string instruments::
+* Fretted string instruments::
+* Percussion::
+* Wind instruments::
+* Chord notation::
+* Ancient notation::
+* World music::
+@end menu
+
+@include notation/vocal.itely
+@include notation/keyboards.itely
+@include notation/unfretted-strings.itely
+@include notation/fretted-strings.itely
+@include notation/percussion.itely
+@include notation/wind.itely
+@include notation/chords.itely
+@include notation/ancient.itely
+@include notation/world.itely
+
+@c -- SKELETON FILE --
diff --git a/Documentation/nl/texidocs/GNUmakefile b/Documentation/nl/texidocs/GNUmakefile
new file mode 100644 (file)
index 0000000..0ffa758
--- /dev/null
@@ -0,0 +1,5 @@
+depth=../../..
+
+EXTRA_DIST_FILES=$(call src-wildcard,*.texidoc)
+
+include $(depth)/make/stepmake.make
diff --git a/Documentation/nl/translations.html.in b/Documentation/nl/translations.html.in
new file mode 100644 (file)
index 0000000..2126f6f
--- /dev/null
@@ -0,0 +1,458 @@
+ <p><i>Dernière mise à jour Fri Jul 17 16:08:17 UTC 2009
+</i></p>
+<html>
+<!-- This page is automatically generated by translation-status.py from
+translations.template.html.in; DO NOT EDIT !-->
+<!--
+    Translation of GIT committish: 148e80b8992a7fb9d59ec439c00b79decbbe3bad
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+!-->
+<head>
+  <title>État de la traduction de la documentation de LilyPond</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+<p><a href="index.html">Retour à l'accueil de la documentation</a></p>
+
+<h1>Avancement de la traduction de la documentation</h1>
+
+<p>Cette page présente pour chaque partie de la documentation de
+  LilyPond @TOPLEVEL_VERSION@ l'avancement de la traduction
+  francophone.  Pour chaque partie sont indiqués le nombre de mots de
+  l'original en anglais, les noms des traducteurs et relecteurs,
+  le proportion de matériel traduit, l'état de mise à jour, et
+  l'indicateur de révision par rapport au Grand Documentation Project
+  (GDP).
+</p>
+
+<p>Au cours du GDP, la documentation en anglais a été complètement
+  remaniée, et sa révision se poursuit encore actuellement&nbsp;; le rythme
+  de cette révision ne permet pas de maintenir toutes les traductions
+  à jour.  Cependant, le fait que certaines traductions ne soient pas
+  du tout à jour (avec une indication sur fond rouge) ne signifie
+  pas qu'elles sont périmées, mais simplement qu'elles
+  n'atteignent pas la qualité de la documentation en anglais récemment
+  remaniée&nbsp;: les traducteurs font de leur mieux pour au moins mettre à
+  jour dans la documentation la syntaxe et les noms de commande
+  LilyPond.  La mise à jour des traductions après le GDP est en
+  cours&nbsp;; vous pouvez accélérer et améliorer ce processus en
+  participant aux traductions et relectures, qui sont organisées sur
+  la liste de diffusion
+  <a href="http://lists.gnu.org/mailman/listinfo/lilypond-user-fr">lilypond-user-fr@gnu.org</a>.
+</p>
+
+<table align="center" border="2">
+ <tr align="center">
+  <th>GNU LilyPond --- Manuel d'initiation</th>  <th>Traducteurs</th>
+  <th>Relecteurs</th>
+  <th>Traduit</th>
+  <th>À jour</th>
+  <th>Autres informations</th>
+ </tr>
+ <tr align="left">
+  <td>Titre des chapitres<br>(429)</td>
+  <td>John Mandereau<br>
+   Jean-Charles Malahieude</td>
+  <td></td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #47ff24">partiellement</span></td>
+  <td>post-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>Préface<br>(411)</td>
+  <td>Valentin Villenave</td>
+  <td>Ludovic Sardain<br>
+   Damien Heurtebise</td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>1 Introduction<br>(3866)</td>
+  <td>Ludovic Sardain<br>
+   John Mandereau</td>
+  <td>Jean-Charles Malahieude<br>
+   Jean-Yves Baudais<br>
+   Damien Heurtebise</td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #40fe23">partiellement</span></td>
+  <td>post-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>2 Tutoriel<br>(6368)</td>
+  <td>Nicolas Grandclaude<br>
+   Ludovic Sardain<br>
+   Gauvain Pocentek</td>
+  <td>Jean-Charles Malahieude<br>
+   Valentin Villenave<br>
+   John Mandereau</td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #33ff21">partiellement</span></td>
+  <td>post-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>3 Concepts fondamentaux<br>(10323)</td>
+  <td>Valentin Villenave<br>
+   Jean-Charles Malahieude</td>
+  <td>John Mandereau</td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td>post-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>4 Retouche de partition<br>(14834)</td>
+  <td>Valentin Villenave<br>
+   Nicolas Klutchnikoff<br>
+   Damien Heurtebise</td>
+  <td>Jean-Charles Malahieude<br>
+   John Mandereau</td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #25fe1f">partiellement</span></td>
+  <td>post-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>5 Travail sur des projets LilyPond<br>(5033)</td>
+  <td>Ludovic Sardain</td>
+  <td>Jean-Yves Baudais<br>
+   Valentin Villenave<br>
+   John Mandereau<br>
+   Jean-Charles Malahieude</td>
+  <td><span style="background-color: #dfef77">partiellement (53 %)</span></td>
+  <td><span style="background-color: #e8fe39">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>A Modèles<br>(498)</td>
+  <td></td>
+  <td></td>
+  <td><span style="background-color: #dfef77">partiellement (12 %)</span></td>
+  <td></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>B Tutoriel Scheme<br>(1222)</td>
+  <td></td>
+  <td></td>
+  <td><span style="background-color: #d0f0f8">non</span></td>
+  <td></td>
+  <td>pré-GDP</td>
+ </tr>
+</table>
+<p></p>
+
+<table align="center" border="2">
+ <tr align="center">
+  <th>GNU LilyPond --- Utilisation du programme</th>  <th>Traducteurs</th>
+  <th>Relecteurs</th>
+  <th>Traduit</th>
+  <th>À jour</th>
+  <th>Autres informations</th>
+ </tr>
+ <tr align="left">
+  <td>Titre des chapitres<br>(407)</td>
+  <td>John Mandereau<br>
+   Jean-Charles Malahieude</td>
+  <td></td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #47ff24">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>1 Installation<br>(193)</td>
+  <td>John Mandereau</td>
+  <td>Jean-Charles Malahieude</td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #ff9a4e">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>2 Environnement de travail<br>(1149)</td>
+  <td>Jean-Charles Malahieude</td>
+  <td></td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>3 Exécution de LilyPond<br>(3023)</td>
+  <td></td>
+  <td></td>
+  <td><span style="background-color: #d0f0f8">non</span></td>
+  <td></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>4 @command{lilypond-book} : association musique-texte<br>(3248)</td>
+  <td></td>
+  <td></td>
+  <td><span style="background-color: #d0f0f8">non</span></td>
+  <td></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>5 Conversion à partir d'autres formats<br>(1171)</td>
+  <td>Jean-Charles Malahieude</td>
+  <td></td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td>pré-GDP</td>
+ </tr>
+</table>
+<p></p>
+
+<table align="center" border="2">
+ <tr align="center">
+  <th>GNU LilyPond --- Manuel d'initiation</th>  <th>Traducteurs</th>
+  <th>Relecteurs</th>
+  <th>Traduit</th>
+  <th>À jour</th>
+  <th>Autres informations</th>
+ </tr>
+ <tr align="left">
+  <td>Titre des chapitres<br>(724)</td>
+  <td>John Mandereau<br>
+   Jean-Charles Malahieude</td>
+  <td></td>
+  <td><span style="background-color: #dfef77">partiellement (88 %)</span></td>
+  <td><span style="background-color: #40fe23">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>1 Notation musicale générale<br>(91)</td>
+  <td>John Mandereau<br>
+   Jean-Charles Malahieude</td>
+  <td></td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #2cff20">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>1.1 Hauteurs<br>(3155)</td>
+  <td>Frédéric Chiasson</td>
+  <td>Valentin Villenave<br>
+   Jean-Charles Malahieude</td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #25fe1f">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>1.2 Rythme<br>(4757)</td>
+  <td>Frédéric Chiasson<br>
+   Jean-Charles Malahieude</td>
+  <td>Valentin Villenave<br>
+   Jean-Charles Malahieude<br>
+   </td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>1.3 Signes d'interprétation<br>(1392)</td>
+  <td>Valentin Villenave</td>
+  <td>Jean-Charles Malahieude<br>
+   John Mandereau</td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #ff6f57">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>1.4 Répétitions et reprises<br>(555)</td>
+  <td>Valentin Villenave</td>
+  <td>Jean-Charles Malahieude<br>
+   John Mandereau</td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #ff6d58">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>1.5 Notes simultanées<br>(1456)</td>
+  <td>Frédéric Chiasson<br>
+   Valentin Villenave</td>
+  <td>Jean-Charles Malahieude<br>
+   John Mandereau</td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #ff6d58">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>1.6 Notation sur la portée<br>(1689)</td>
+  <td>Valentin Villenave<br>
+   Jean-Charles Malahieude</td>
+  <td>John Mandereau</td>
+  <td><span style="background-color: #dfef77">partiellement (69 %)</span></td>
+  <td><span style="background-color: #ff6f57">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>1.7 Notation éditoriale<br>(919)</td>
+  <td>Jean-Charles Malahieude</td>
+  <td></td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #ff6f57">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>1.8 Texte<br>(2412)</td>
+  <td>Jean-Charles Malahieude</td>
+  <td>Valentin Villenave<br>
+   John Mandereau</td>
+  <td><span style="background-color: #dfef77">partiellement (97 %)</span></td>
+  <td><span style="background-color: #ff6f57">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>2 Notation spécialisée<br>(76)</td>
+  <td>John Mandereau<br>
+   Jean-Charles Malahieude</td>
+  <td></td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #2cff20">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>2.1 Musique vocale<br>(2725)</td>
+  <td>Valentin Villenave</td>
+  <td>Jean-Charles Malahieude</td>
+  <td><span style="background-color: #dfef77">partiellement (55 %)</span></td>
+  <td><span style="background-color: #ff6d58">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>2.2 Instruments utilisant des portées multiples<br>(747)</td>
+  <td>Valentin Villenave<br>
+   Jean-Charles Malahieude</td>
+  <td>Jean-Charles Malahieude<br>
+   John Mandereau</td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #25fe1f">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>2.3 Cordes non frettées<br>(235)</td>
+  <td>Valentin Villenave<br>
+   Matthieu Jacquot</td>
+  <td>Jean-Charles Malahieude<br>
+   John Mandereau</td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>2.4 Instruments à cordes frettées<br>(1879)</td>
+  <td>Matthieu Jacquot</td>
+  <td>Jean-Charles Malahieude</td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #25fe1f">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>2.5 Percussions<br>(810)</td>
+  <td>Valentin Villenave</td>
+  <td>Jean-Charles Malahieude<br>
+   John Mandereau</td>
+  <td><span style="background-color: #dfef77">partiellement (44 %)</span></td>
+  <td><span style="background-color: #ff6d58">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>2.6 Instruments à vent<br>(136)</td>
+  <td>Valentin Villenave</td>
+  <td>Jean-Charles Malahieude<br>
+   John Mandereau</td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>2.7 Notation des accords<br>(1516)</td>
+  <td>Valentin Villenave</td>
+  <td>Jean-Charles Malahieude<br>
+   John Mandereau</td>
+  <td><span style="background-color: #dfef77">partiellement (59 %)</span></td>
+  <td><span style="background-color: #ff6f57">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>2.8 Notations anciennes<br>(4487)</td>
+  <td>John Mandereau<br>
+   Jean-Charles Malahieude</td>
+  <td></td>
+  <td><span style="background-color: #dfef77">partiellement (82 %)</span></td>
+  <td><span style="background-color: #ff6d58">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>2.9 Musiques du monde<br>(1115)</td>
+  <td></td>
+  <td></td>
+  <td><span style="background-color: #d0f0f8">non</span></td>
+  <td></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>3 Généralités en matière d'entrée et sortie<br>(6170)</td>
+  <td>Jean-Charles Malahieude<br>
+   Valentin Villenave</td>
+  <td></td>
+  <td><span style="background-color: #dfef77">partiellement (5 %)</span></td>
+  <td><span style="background-color: #ff8353">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>4 Gestion de l'espace<br>(8663)</td>
+  <td>Frédéric Chiasson<br>
+   Jean-Charles Malahieude</td>
+  <td></td>
+  <td><span style="background-color: #dfef77">partiellement (18 %)</span></td>
+  <td><span style="background-color: #fff23f">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>5 Modification des réglages prédéfinis<br>(11800)</td>
+  <td>Valentin Villenave</td>
+  <td>Gilles Thibault</td>
+  <td><span style="background-color: #dfef77">partiellement (45 %)</span></td>
+  <td><span style="background-color: #ff954f">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>6 Interfaces pour les programmeurs<br>(5187)</td>
+  <td>Valentin Villenave</td>
+  <td>Gilles Thibault</td>
+  <td><span style="background-color: #dfef77">partiellement (9 %)</span></td>
+  <td><span style="background-color: #83fe2c">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>A Bibliographie<br>(310)</td>
+  <td></td>
+  <td></td>
+  <td><span style="background-color: #d0f0f8">non</span></td>
+  <td></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>B Tables du manuel de notation<br>(611)</td>
+  <td>Frédéric Chiasson<br>
+   Jean-Charles Malahieude</td>
+  <td></td>
+  <td><span style="background-color: #dfef77">partiellement (12 %)</span></td>
+  <td><span style="background-color: #97ff2f">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+ <tr align="left">
+  <td>C Aide-mémoire<br>(252)</td>
+  <td>Valentin Villenave</td>
+  <td></td>
+  <td><span style="background-color: #1fff1f">oui</span></td>
+  <td><span style="background-color: #33ff21">partiellement</span></td>
+  <td>pré-GDP</td>
+ </tr>
+</table>
+<p></p>
+
+</body>
+</html>
diff --git a/Documentation/nl/translations.template.html.in b/Documentation/nl/translations.template.html.in
new file mode 100644 (file)
index 0000000..c492ef8
--- /dev/null
@@ -0,0 +1,44 @@
+<html>
+<!--
+    Translation of GIT committish: 148e80b8992a7fb9d59ec439c00b79decbbe3bad
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  See TRANSLATION for details.
+!-->
+<head>
+  <title>État de la traduction de la documentation de LilyPond</title>
+  <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+</head>
+
+<body>
+<p><a href="index.html">Retour à l'accueil de la documentation</a></p>
+
+<h1>Avancement de la traduction de la documentation</h1>
+
+<p>Cette page présente pour chaque partie de la documentation de
+  LilyPond @TOPLEVEL_VERSION@ l'avancement de la traduction
+  francophone.  Pour chaque partie sont indiqués le nombre de mots de
+  l'original en anglais, les noms des traducteurs et relecteurs,
+  le proportion de matériel traduit, l'état de mise à jour, et
+  l'indicateur de révision par rapport au Grand Documentation Project
+  (GDP).
+</p>
+
+<p>Au cours du GDP, la documentation en anglais a été complètement
+  remaniée, et sa révision se poursuit encore actuellement&nbsp;; le rythme
+  de cette révision ne permet pas de maintenir toutes les traductions
+  à jour.  Cependant, le fait que certaines traductions ne soient pas
+  du tout à jour (avec une indication sur fond rouge) ne signifie
+  pas qu'elles sont périmées, mais simplement qu'elles
+  n'atteignent pas la qualité de la documentation en anglais récemment
+  remaniée&nbsp;: les traducteurs font de leur mieux pour au moins mettre à
+  jour dans la documentation la syntaxe et les noms de commande
+  LilyPond.  La mise à jour des traductions après le GDP est en
+  cours&nbsp;; vous pouvez accélérer et améliorer ce processus en
+  participant aux traductions et relectures, qui sont organisées sur
+  la liste de diffusion
+  <a href="http://lists.gnu.org/mailman/listinfo/lilypond-user-fr">lilypond-user-fr@gnu.org</a>.
+</p>
+
+</body>
+</html>
index c6ae58e19ba9c5786e65fc6fb581d24164918cee..cd01c94a40f8564af2a21f2769720180666b6573 100644 (file)
@@ -186,7 +186,7 @@ mensural notation.
 Ligatures are entered by @emph{enclosing} them in @code{\[} and
 @code{\]}.  Some ligature styles may need additional input syntax
 specific for this particular type of ligature.  By default, the
-@rinternals{LigatureBracket} engraver just puts a square bracket
+@code{LigatureBracket} engraver just puts a square bracket
 above the ligature.
 
 @lilypond[quote,ragged-right,verbatim]
@@ -202,12 +202,12 @@ Gregorian chant, and the Mensural for mensural music (only white
 mensural ligatures are supported for mensural music, and with
 certain limitations).  To use any of these styles, the default
 @code{Ligature_bracket_engraver} has to be replaced with one of the
-specialized ligature engravers in the @rinternals{Voice} context,
+specialized ligature engravers in the @code{Voice} context,
 as explained in @ref{White mensural ligatures} and @ref{Gregorian
 square neume ligatures}.
 
 
-@seealso
+@c @seealso
 @c TODO: nothing here yet ...
 
 
@@ -257,8 +257,8 @@ of Gregorian chant like the @emph{Editio Vaticana}.  There are
 different custos glyphs used in different flavors of notational
 style.
 
-For typesetting custodes, just put a @rinternals{Custos_engraver} into the
-@rinternals{Staff} context when declaring the @code{\layout} block,
+For typesetting custodes, just put a @code{Custos_engraver} into the
+@code{Staff} context when declaring the @code{\layout} block,
 and change the style of the custos with an @code{\override} if
 desired, as shown in the following example:
 
@@ -281,24 +281,24 @@ desired, as shown in the following example:
 
 The custos glyph is selected by the @code{style} property.  The styles
 supported are @code{vaticana}, @code{medicaea}, @code{hufnagel}, and
-@code{mensural}.  They are demonstrated in the following fragment
+@code{mensural}.  They are demonstrated in the following fragment.
 
 @lilypond[quote,ragged-right,fragment]
 \new Lyrics \lyricmode {
   \markup { \column {
-    \typewriter "vaticana"
+    \typewriter "vaticana "
     \line { " " \musicglyph #"custodes.vaticana.u0" }
   } }
   \markup { \column {
-    \typewriter "medicaea"
+    \typewriter "medicaea "
     \line { " " \musicglyph #"custodes.medicaea.u0" }
   }}
   \markup { \column {
-    \typewriter "hufnagel"
+    \typewriter "hufnagel "
     \line { " " \musicglyph #"custodes.hufnagel.u0" }
   }}
   \markup { \column {
-    \typewriter "mensural"
+    \typewriter "mensural "
     \line { " " \musicglyph #"custodes.mensural.u0" }
   }}
 }
@@ -306,9 +306,10 @@ supported are @code{vaticana}, @code{medicaea}, @code{hufnagel}, and
 
 
 @seealso
-Internals Reference: @rinternals{Custos}.
+Internals Reference:
+@rinternals{Custos}.
 
-Examples:
+Snippets:
 @rlsr{Ancient notation}.
 
 
@@ -372,8 +373,8 @@ entering the chant, as the following excerpt demonstrates:
 @end lilypond
 
 
-@seealso
-TODO: nothing here yet ...
+@c @seealso
+@c TODO: nothing here yet ...
 
 
 @c {{{2 Mensural clefs
@@ -486,7 +487,8 @@ petrucci style G clef
 
 
 @seealso
-Notation Reference: see @ref{Clef}.
+Notation Reference:
+@ref{Clef}.
 
 
 @knownissues
@@ -552,7 +554,7 @@ chosen according to the following table
 }
 @end lilypond
 
-Use the @code{style} property of grob @rinternals{TimeSignature}
+Use the @code{style} property of grob @code{TimeSignature}
 to select ancient time signatures.  Supported styles are
 @code{neomensural} and @code{mensural}.  The above table uses the
 @code{neomensural} style.  The following examples show the
@@ -584,15 +586,16 @@ differences in style:
 
 
 @seealso
-Notation Reference: @ref{Time signature}, gives a general introduction to
+Notation Reference:
+@ref{Time signature}, gives a general introduction to
 the use of time signatures.
 
 
 @knownissues
 
 Ratios of note durations do not change with the time signature.  For
-example, the ratio of 1 breve = 3 semibreves (@emph{tempus perfectum}) must
-be made by hand, by setting
+example, the ratio of 1@tie{}breve = 3@tie{}semibreves (@emph{tempus
+perfectum}) must be made by hand, by setting
 
 @example
 breveTP = #(ly:make-duration -1 0 3 2)
@@ -616,7 +619,7 @@ Use @code{\markup @{\musicglyph #"timesig.mensural68alt" @}} instead.
 
 For ancient notation, a note head style other than the @code{default} style
 may be chosen.  This is accomplished by setting the @code{style} property of
-the @rinternals{NoteHead} object to @code{baroque}, @code{neomensural},
+the @code{NoteHead} object to @code{baroque}, @code{neomensural},
 @code{mensural} or @code{petrucci}.
 
 The @code{baroque} style differs from the @code{default} style by:
@@ -650,7 +653,8 @@ a'\maxima a'\longa a'\breve a'1 a'2 a'4 a'8 a'16 a'
 
 
 @seealso
-@ref{Note head styles} gives an overview of all available note head styles.
+Notation Reference:
+@ref{Note head styles}, gives an overview of all available note head styles.
 
 
 @c {{{2Mensural flags
@@ -659,7 +663,7 @@ a'\maxima a'\longa a'\breve a'1 a'2 a'4 a'8 a'16 a'
 
 @cindex flags
 
-Use the @code{flag-style} property of grob @rinternals{Stem} to
+Use the @code{flag-style} property of grob @code{Stem} to
 select ancient flags.  Besides the @code{default} flag style,
 only the @code{mensural} style is supported.
 
@@ -682,8 +686,8 @@ There is no particular flag style for neo-mensural or Petrucci notation.
 There are no flags in Gregorian chant notation.
 
 
-@seealso
-TODO: nothing here yet ...
+@c @seealso
+@c TODO: nothing here yet ...
 
 
 @knownissues
@@ -703,7 +707,7 @@ scope for mensural notation).
 
 @cindex rests, ancient
 
-Use the @code{style} property of grob @rinternals{Rest} to select
+Use the @code{style} property of grob @code{Rest} to select
 ancient rests.   Supported styles are @code{classical},
 @code{neomensural}, and @code{mensural}.  @code{classical} differs
 from the @code{default} style only in that the quarter rest looks
@@ -731,7 +735,8 @@ taken.
 See @rlsr{Ancient notation} for a chart of all rests.
 
 @seealso
-Notation Reference: @ref{Rests}, gives a general introduction into the use of
+Notation Reference:
+@ref{Rests}, gives a general introduction into the use of
 rests.
 
 
@@ -773,20 +778,21 @@ will be taken from the @code{vaticana} style.
 @end lilypond
 
 The style for accidentals and key signatures is controlled by the
-@code{glyph-name-alist} property of the  grobs @rinternals{Accidental} and
-@rinternals{KeySignature}, respectively; e.g.:
+@code{glyph-name-alist} property of the grobs @code{Accidental} and
+@code{KeySignature}, respectively; e.g.:
 
 @code{\override Staff.Accidental #'glyph-name-alist =
 #alteration-mensural-glyph-name-alist}
 
 
 @seealso
-Notation Reference: @ref{Pitches}, @ref{Accidentals}, and
-@ref{Automatic accidentals} give a general introduction of the use of
-accidentals.  @ref{Key signature} gives a general introduction of
-the use of key signatures.
+Notation Reference:
+@ref{Pitches}, @ref{Accidentals}, and @ref{Automatic accidentals}, give a
+general introduction of the use of accidentals.  @ref{Key signature}, gives
+a general introduction of the use of key signatures.
 
-Internals Reference: @rinternals{KeySignature}.
+Internals Reference:
+@rinternals{KeySignature}.
 
 
 @c {{{2 Annotational accidentals (musica ficta)
@@ -831,8 +837,9 @@ ficta = { \once \set suggestAccidentals = ##t }
 
 
 @seealso
-Internals Reference: @rinternals{Accidental_engraver} engraver and
-the @rinternals{AccidentalSuggestion} object.
+Internals Reference:
+@rinternals{Accidental_engraver},
+@rinternals{AccidentalSuggestion}.
 
 
 @c {{{2White mensural ligatures
@@ -845,8 +852,8 @@ the @rinternals{AccidentalSuggestion} object.
 There is limited support for white mensural ligatures.
 
 To engrave white mensural ligatures, in the layout block, replace
-the @rinternals{Ligature_bracket_engraver} with the
-@rinternals{Mensural_ligature_engraver} in the @rinternals{Voice}
+the @code{Ligature_bracket_engraver} with the
+@code{Mensural_ligature_engraver} in the @code{Voice}
 context:
 
 @example
@@ -903,8 +910,8 @@ For example,
 }
 @end lilypond
 
-Without replacing @rinternals{Ligature_bracket_engraver} with
-@rinternals{Mensural_ligature_engraver}, the same music transcribes
+Without replacing @code{Ligature_bracket_engraver} with
+@code{Mensural_ligature_engraver}, the same music transcribes
 to the following
 
 @lilypond[quote,ragged-right]
@@ -922,8 +929,8 @@ to the following
 @end lilypond
 
 
-@seealso
-TODO: nothing here yet ...
+@c @seealso
+@c TODO: nothing here yet ...
 
 
 @knownissues
@@ -946,11 +953,11 @@ Horizontal spacing of ligatures is poor.
 @end menu
 
 When typesetting a piece in Gregorian chant notation, the
-@rinternals{Vaticana_ligature_engraver} automatically selects the
+@code{Vaticana_ligature_engraver} automatically selects the
 proper note heads, so there is no need to explicitly set the note
 head style.  Still, the note head style can be set, e.g., to
 @code{vaticana_punctum} to produce punctum neumes.  Similarly, the
-@rinternals{Mensural_ligature_engraver} automatically assembles
+@code{Mensural_ligature_engraver} automatically assembles
 mensural ligatures.  See @ref{Ligatures}, for how ligature
 engravers work.
 
@@ -990,8 +997,8 @@ the following excerpt demonstrates:
 @end lilypond
 
 
-@seealso
-TODO: nothing here yet ...
+@c @seealso
+@c TODO: nothing here yet ...
 
 
 @c {{{2 Gregorian clefs
@@ -1128,7 +1135,8 @@ hufnagel style combined do/fa clef
 
 
 @seealso
-Notation Reference: see @ref{Clef}.
+Notation Reference:
+@ref{Clef}.
 
 
 @c {{{2 Gregorian accidentals and key signatures
@@ -1182,20 +1190,21 @@ different style.
 @c {ancient-accidentals.ly}
 
 The style for accidentals and key signatures is controlled by the
-@code{glyph-name-alist} property of the  grobs @rinternals{Accidental} and
-@rinternals{KeySignature}, respectively; e.g.:
+@code{glyph-name-alist} property of the grobs @code{Accidental} and
+@code{KeySignature}, respectively; e.g.:
 
 @code{\override Staff.Accidental #'glyph-name-alist =
 #alteration-mensural-glyph-name-alist}
 
 
 @seealso
-Notation Reference: @ref{Pitches}, @ref{Accidentals}, and
-@ref{Automatic accidentals} give a general introduction of the use of
-accidentals.  @ref{Key signature} gives a general introduction of
-the use of key signatures.
+Notation Reference:
+@ref{Pitches}, @ref{Accidentals}, and @ref{Automatic accidentals}, give a
+general introduction of the use of accidentals.  @ref{Key signature}, gives
+a general introduction of the use of key signatures.
 
-Internals Reference: @rinternals{KeySignature}.
+Internals Reference:
+@rinternals{KeySignature}.
 
 
 @c {{{2Divisiones
@@ -1273,8 +1282,8 @@ Vaticana} style are provided.
 @end lilypond
 
 
-@seealso
-TODO: nothing here yet ...
+@c @seealso
+@c TODO: nothing here yet ...
 
 
 @knownissues
@@ -1311,11 +1320,14 @@ note that you can say @code{\augmentum @{a g@}} as a shortcut for
 
 
 @seealso
-Notation Reference: @ref{Breath marks}.
+Notation Reference:
+@ref{Breath marks}.
 
-Internals Reference: @rinternals{BreathingSign}.
+Internals Reference:
+@rinternals{BreathingSign}.
 
-Examples: @rlsr{Ancient notation}.
+Snippets:
+@rlsr{Ancient notation}.
 
 
 @c {{{2Gregorian square neumes ligatures
@@ -1434,7 +1446,7 @@ produced by making a regular @code{pes} or @code{flexa} and
 modifying the shape of the second note: @code{\[ a \pes \deminutum
 b \] }, the second by modifying the shape of a single-note neume
 with @code{\auctum} and one of the direction markers
-@code{\descendens} or @code{\ascendens}, e.g. @code{ \[ \auctum
+@code{\descendens} or @code{\ascendens}, e.g., @code{ \[ \auctum
 \descendens a \] }.
 
 @noindent
@@ -1465,7 +1477,7 @@ quilisma.
 In addition to the note signs, gregorian.ly also defines the
 commands @code{\versus}, @code{\responsum}, @code{\ij},
 @code{\iij}, @code{\IJ}, and @code{\IIJ}, that will produce the
-corresponding characters, e.g. for use in lyrics, as section
+corresponding characters, e.g., for use in lyrics, as section
 markers, etc.  These commands use special unicode characters and
 will only work if a font is used which supports them.
 
@@ -2259,15 +2271,15 @@ respectively.
 Use the unary music function @code{\augmentum} to add augmentum dots.
 
 
-@seealso
-TODO: nothing here yet ...
+@c @seealso
+@c TODO: nothing here yet ...
 
 
 @knownissues
 
 When an @code{\augmentum} dot appears at the end of the last staff
 within a ligature, it is sometimes vertically placed wrong.  As a
-workaround, add an additional skip note (e.g. @code{s8}) as last note
+workaround, add an additional skip note (e.g., @code{s8}) as last note
 of the staff.
 
 @code{\augmentum} should be implemented as a head prefix rather than a
@@ -2315,7 +2327,7 @@ same source.
 TBC
 
 
-@seealso
+@c @seealso
 @c ... and reference to other sections ...
 
 
@@ -2341,7 +2353,7 @@ orientation aids that bar lines give.
 @c TBC
 
 
-@seealso
+@c @seealso
 @c ... and reference to other sections ...
 
 
@@ -2381,7 +2393,7 @@ transparent, will leave an empty space in the score, since the
 invisible signature will still take up space.
 
 In many cases, @code{\set Score.timing = ##f} will give good
-results.  Another alternative is to use \@code{\CadenzaOn} and
+results.  Another alternative is to use @code{\CadenzaOn} and
 @code{\CadenzaOff}.
 
 To remove the barlines, the radical approach is to @code{\remove}
@@ -2468,7 +2480,7 @@ melismatic chants, i.e. chants with a varying number of notes
 to each syllable.  In this case, one would want to set the
 syllable groups clearly apart, usually also the subdivisions of a
 longer melisma.  One way to achieve this is to use a fixed
-@code{\time}, e.g. 1/4, and let each syllable or note group fill
+@code{\time}, e.g., 1/4, and let each syllable or note group fill
 one of these measures, with the help of tuplets or shorter
 durations.  If the barlines and all other rhythmical indications
 are made transparent, and the space around the barlines is
@@ -2518,7 +2530,7 @@ spirLyr = \lyricmode {
 
 @c extract from 1.6.1.1
 
-@seealso
+@c @seealso
 @c ... and reference to other sections ...
 
 @c {{{2Ancient and modern from one source
@@ -2529,7 +2541,7 @@ spirLyr = \lyricmode {
 @c Here among others the snippets about reducing note length
 TBC
 
-@seealso
+@c @seealso
 @c ... and reference to other sections ...
 
 @c {{{2Editorial markings
@@ -2557,6 +2569,6 @@ TBC
 TBC
 
 
-@seealso
+@c @seealso
 @c ... and reference to other sections ...
 
index bb1013e249b93448b5fb3bbfb098a5687de3e8d9..6ed8f24d7a4303710b7ff46201a963a465602737 100644 (file)
@@ -1417,8 +1417,11 @@ such as
 
 
 @seealso
-Internals: @rinternals{OverrideProperty}, @rinternals{RevertProperty},
-@rinternals{PropertySet}, @rinternals{Backend}, and
+Internals:
+@rinternals{OverrideProperty},
+@rinternals{RevertProperty},
+@rinternals{PropertySet},
+@rinternals{Backend},
 @rinternals{All layout objects}.
 
 
@@ -2024,7 +2027,8 @@ The default order in which contexts are laid out and the
 
 @seealso
 Learning Manual:
-@rlearning{An extra staff appears}.
+@rprogram{An extra staff appears}.
+
 
 @node Distances and measurements
 @subsection Distances and measurements
@@ -2412,8 +2416,10 @@ hairpins with @code{\!}.
 
 
 @seealso
-Internals Reference: @rinternals{TextSpanner},
-@rinternals{Glissando}, @rinternals{VoiceFollower},
+Internals Reference:
+@rinternals{TextSpanner},
+@rinternals{Glissando},
+@rinternals{VoiceFollower},
 @rinternals{TrillSpanner},
 @rinternals{line-spanner-interface}.
 
@@ -2561,7 +2567,7 @@ beginning of a line.  Or to be more precise, before a line break,
 where there is no line break, or after a line break.
 
 Alternatively, these eight combinations may be specified
-by pre-defined functions, defined in @file{scm/output-lib.scm},
+by pre-defined functions, defined in @file{scm/@/output@/-lib@/.scm},
 where the last three columns indicate whether the layout objects
 will be visible in the positions shown at the head of the columns:
 
index 0619f02b245fdc3b0b6e419e86775437d47f7b40..7d9f1390ae11386e76ae8a7f221c2be7ee6e827f 100644 (file)
@@ -84,7 +84,7 @@ Notation Reference:
 @ref{Input modes}.
 
 Snippets:
-@rlsr{Chords}
+@rlsr{Chords}.
 
 
 @knownissues
@@ -233,6 +233,7 @@ Notation Reference:
 Snippets:
 @rlsr{Chords}.
 
+
 @knownissues
 Only one quality modifier should be used per chord, typically on the
 highest step present in the chord.  Chords with more than quality
@@ -383,7 +384,7 @@ Notation Reference:
 @ref{Common chord modifiers}.
 
 Snippets:
-@rlsr{Chords}
+@rlsr{Chords}.
 
 
 @knownissues
@@ -774,7 +775,7 @@ Music Glossary:
 @rglos{figured bass}.
 
 Snippets:
-@rlsr{Chords}
+@rlsr{Chords}.
 
 
 @node Entering figured bass
index 696816ca295ad979c3d4476c099d387da8addc7e..942dbd7bdfee8742b93a744fe7d682c42246eb40 100644 (file)
@@ -174,6 +174,8 @@ Internals Reference:
 @funindex fff
 @funindex \ffff
 @funindex ffff
+@funindex \fffff
+@funindex fffff
 @funindex \fp
 @funindex fp
 @funindex \sf
@@ -633,6 +635,7 @@ g4( e c2)
 @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
 {making-slurs-with-complex-dash-structure.ly}
 
+
 @seealso
 Music Glossary:
 @rglos{slur}.
index 1f153e3d9b18916d01406620b705602ea93dca1d..4ef9de7c0931aa75f6a479976b90a89e230f02ba 100644 (file)
@@ -343,7 +343,7 @@ mynotes = {
 
 @seealso
 Installed Files:
-@file{scm/output-lib.scm}.
+@file{scm/@/output@/-lib@/.scm}.
 
 Snippets:
 @rlsr{Fretted strings}.
@@ -970,6 +970,7 @@ predefined fret diagram, the interface properties belong to
 @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
 {chordchanges-for-fretboards.ly}
 
+
 @seealso
 Notation Reference:
 @ref{Custom tablatures},
@@ -978,8 +979,8 @@ Notation Reference:
 @ref{Predefined fretboard diagrams}.
 
 Installed Files:
-@file{ly/predefined-guitar-fretboards.ly},
-@file{ly/predefined-guitar-ninth-fretboards.ly}.
+@file{ly/@/predefined@/-guitar@/-fretboards@/.ly},
+@file{ly/@/predefined@/-guitar@/-ninth@/-fretboards@/.ly}.
 
 Snippets:
 @rlsr{Fretted strings}.
@@ -1060,7 +1061,7 @@ commands:
 
 
 Sometimes the fretboard calculator will be unable to find
-an accceptable diagram.  This can often be remedied by
+an acceptable diagram.  This can often be remedied by
 manually assigning a note to a string.  In many cases, only one
 note need be manually placed on a string; the rest of
 the notes will then be placed appropriately by the @code{FretBoards}
@@ -1331,4 +1332,5 @@ These tunings may be converted to four-string banjo tunings using the
 Snippets:
 @rlsr{Fretted strings}.
 
-The file @file{scm/@/output@/-lib@/.scm} contains predefined banjo tunings.
+Installed Files:
+@file{scm/@/output@/-lib@/.scm} contains predefined banjo tunings.
index 28c1307249e191a7eabcce1ed3b83b8f2953f913..e37be74cd45940326dc1b2f1a45839f995aa26ad 100644 (file)
@@ -245,7 +245,7 @@ A @code{\score} block.  This score will be collected with other
 toplevel scores, and combined as a single @code{\book}.
 This behavior can be changed by setting the variable
 @code{toplevel-score-handler} at toplevel.  The default handler is
-defined in the init file @file{../scm/@/lily@/.scm}.
+defined in the init file @file{../@/scm/@/lily@/.scm}.
 
 @item
 A @code{\book} block logically combines multiple movements
@@ -260,7 +260,7 @@ a @code{\book} block if you want more than a single @code{\score}
 or @code{\markup} in the same example.  This behavior can be
 changed by setting the variable @code{toplevel-book-handler} at
 toplevel.  The default handler is defined in the init file
-@file{../scm/@/lily@/.scm}.
+@file{../@/scm/@/lily@/.scm}.
 
 @item
 A @code{\bookpart} block.  A book may be divided into several parts,
@@ -294,7 +294,7 @@ music expression will be translated into
 
 This behavior can be changed by setting the variable
 @code{toplevel-music-handler} at toplevel.  The default handler is
-defined in the init file @file{../scm/@/lily@/.scm}.
+defined in the init file @file{../@/scm/@/lily@/.scm}.
 
 @item
 A markup text, a verse for example
@@ -376,6 +376,7 @@ after the entire command.
 
 @end itemize
 
+
 @seealso
 Learning Manual:
 @rlearning{How LilyPond input files work}.
@@ -586,7 +587,7 @@ Headers may be completely removed by setting them to false.
 
 A more advanced option is to change the definitions of the following
 variables in the @code{\paper} block.  The init file
-@file{../ly/titling-init.ly} lists the default layout.
+@file{../@/ly/@/titling@/-init@/.ly} lists the default layout.
 
 @table @code
 @funindex bookTitleMarkup
@@ -800,7 +801,7 @@ tocAct =
 
 
 @seealso
-Init files: @file{../ly/@/toc@/-init@/.ly}.
+Init files: @file{../@/ly/@/toc@/-init@/.ly}.
 
 
 @predefined
@@ -1328,6 +1329,7 @@ lilypond file.ly >display.txt
 @menu
 * Extracting fragments of music::
 * Skipping corrected music::
+* Alternative output formats::
 @end menu
 
 @node Extracting fragments of music
@@ -1412,6 +1414,20 @@ been warned.
 In polyphonic music, @code{Score.skipTypesetting} will affect all
 voices and staves, saving even more time.
 
+@node Alternative output formats
+@subsection Alternative output formats
+
+@cindex scalable vector graphics output
+@cindex SVG output
+@cindex encapsulated postscript output
+@cindex EPS output
+
+The default output formats for the printed score are Portable
+Document Format (PDF) and PostScript (PS).  Scalable Vector
+Graphics (SVG), Encapsulated PostScript (EPS) and Portable
+Network Graphics (PNG) output formats are also available through
+command line options, see @rprogram{Command line options for
+lilypond}.
 
 
 @node MIDI output
@@ -1610,7 +1626,7 @@ tempoWholesPerMinute = #(ly:make-moment 270 8)
 Context definitions follow precisely the same syntax as those
 within a @code{\layout} block.  Translation modules for sound are
 called performers.  The contexts for MIDI output are defined in
-@file{../ly/@/performer@/-init@/.ly},
+@file{../@/ly/@/performer@/-init@/.ly},
 see @rlearning{Other sources of information}.
 For example, to remove the effect of dynamics
 from the MIDI output, insert the following lines in the
@@ -1747,7 +1763,7 @@ Dynamic marks are translated to a fixed fraction of the available
 MIDI volume range.  The default fractions range from 0.25 for
 @notation{ppppp} to 0.95 for @notation{fffff}.  The set of dynamic
 marks and the associated fractions can be seen in
-@file{../scm/midi.scm}, see @rlearning{Other sources of information}.
+@file{../@/scm/@/midi.scm}, see @rlearning{Other sources of information}.
 This set of fractions may be changed or extended by providing a
 function which takes a dynamic mark as its argument and returns the
 required fraction, and setting
@@ -1787,7 +1803,7 @@ found, or calls the default function otherwise.
 Alternatively, if the whole table of fractions needs to be
 redefined, it would be better to use the
 @notation{default-dynamic-absolute-volume} procedure in
-@file{../scm/midi.scm} and the associated table as a model.
+@file{../@/scm/@/midi.scm} and the associated table as a model.
 The final example in this section shows how this might be done.
 
 @unnumberedsubsubsec Overall MIDI volume
@@ -1898,7 +1914,7 @@ If the MIDI minimum and maximum volume properties are not set
 LilyPond will, by default, apply a small degree of equalization
 to a few instruments.  The instruments and the equalization
 applied are shown in the table @notation{instrument-equalizer-alist}
-in @file{../scm/midi.scm}.
+in @file{../@/scm/@/midi.scm}.
 
 This basic default equalizer can be replaced by setting
 @code{instrumentEqualizer} in the @code{Score} context to a new
@@ -1908,7 +1924,7 @@ maximum volumes to be applied to that instrument.  This replacement
 is done in the same way as shown for resetting the
 @code{dynamicAbsoluteVolumeFunction} at the start of this section.
 The default equalizer, @notation{default-instrument-equalizer}, in
-@file{../scm/midi.scm} shows how such a procedure might be written.
+@file{../@/scm/@/midi.scm} shows how such a procedure might be written.
 
 The following example sets the relative flute and clarinet volumes
 to the same values as the previous example.
index c1adb583b674c4bfbd1483957e51aeb3634b27fb..2ee35b3603a2048df2a7c078496a4cb61ecdd040 100644 (file)
@@ -595,7 +595,7 @@ Some common characteristics of harp music are covered elsewhere:
 @ref{Glissando}.
 
 @item A @notation{bisbigliando} is written as a tremelo @ref{Tremolo
-repeats}
+repeats}.
 
 @item Natural harmonics are covered under @ref{Harmonics}.
 
@@ -605,10 +605,10 @@ repeats}
 
 @seealso
 Notation Reference:
-@ref{Tremolo repeats}
-@ref{Glissando}
-@ref{Arpeggio}
-@ref{Harmonics}
+@ref{Tremolo repeats},
+@ref{Glissando},
+@ref{Arpeggio},
+@ref{Harmonics}.
 
 @node Harp pedals
 @unnumberedsubsubsec Harp pedals
@@ -627,8 +627,10 @@ The position of the pedals may be indicated with text marks:
 
 @lilypond[quote,verbatim,relative=2]
 \textLengthOn
-cis1_\markup \concat \vcenter { [D \flat C \sharp B|E \sharp F \sharp G A \flat] }
-c!1_\markup \concat \vcenter {[ C \natural ]}
+cis1_\markup \concat \vcenter {
+  [D \flat C \sharp B|E \sharp F \sharp G A \flat] }
+c!1_\markup \concat \vcenter {
+  [ C \natural ] }
 @end lilypond
 
 or pedal diagrams:
@@ -647,5 +649,5 @@ position (sharpened pitch), and @code{|} is the divider. A prefixed
 
 @seealso
 Notation Reference:
-@ref{Text scripts}
-@ref{Instrument Specific Markup}
+@ref{Text scripts},
+@ref{Instrument Specific Markup}.
index 84710b5311f747b2bb76e67636d71f3d051827ad..bce07b59df54e8f18e8dcdc151431f9fd7eeb504 100644 (file)
@@ -45,7 +45,7 @@ and just before
 * Technical glossary::
 * All context properties::
 * Layout properties::
-* Identifiers::
+* Available music functions::
 * Scheme functions::
 @end menu
 
@@ -573,8 +573,11 @@ Where N is in the range 0-100.
 @cindex Font, Feta
 
 The following symbols are available in the Emmentaler font and may be
-accessed directly using text markup such as @code{g^\markup @{
-\musicglyph #"scripts.segno" @}}, see @ref{Formatting text}.
+accessed directly using text markup with the name of the glyph
+as shown in the tables below,
+such as @code{g^\markup @{\musicglyph #"scripts.segno" @}} or
+@code{\markup @{\musicglyph #"five"@}}.  For more information,
+see @ref{Formatting text}.
 
 
 @menu
@@ -895,6 +898,7 @@ The following styles may be used for note heads.
 A glossary of the technical terms and concepts used internally.
 
 @menu
+* alist::
 * callback::
 * glyph::
 * grob::
@@ -909,6 +913,20 @@ A glossary of the technical terms and concepts used internally.
 * stencil::
 @end menu
 
+@node alist
+@unnumberedsubsec alist
+
+@cindex alist
+@cindex association list
+
+An association list or @strong{alist} for short is a Scheme pair
+which associates a value with a key: @w{@code{(key . value)}}.  For
+example, in @file{scm/lily.scm}, the alist
+@w{@qq{type-p-name-alist}} associates certain type predicates
+(e.g.@tie{}@code{ly:music?}) with names (e.g.@tie{}@qq{music}) so
+that type-check failures can be reported with a console message that
+includes the name of the expected type predicate.
+
 @node callback
 @unnumberedsubsec callback
 
@@ -934,10 +952,12 @@ character, or a combination of two characters formating a ligature.
 A set of glyphs with a single style and shape comprise a font, and
 a set of fonts covering several styles and sizes comprise a typeface.
 
+
 @seealso
 Notation Reference:
-@ruser{Fonts},
-@ruser{Text encoding}.
+@ref{Fonts},
+@ref{Text encoding}.
+
 
 @node grob
 @unnumberedsubsec grob
@@ -951,6 +971,7 @@ output such as note heads, stems, slurs, ties, fingering, clefs,
 etc are called @q{Layout objects}, often known as @q{GRaphical
 OBjects}, or @strong{grobs} for short.
 
+
 @seealso
 Learning Manual:
 @rlearning{Objects and interfaces},
@@ -960,6 +981,7 @@ Learning Manual:
 Internals Reference:
 @rinternals{All layout objects}.
 
+
 @node interface
 @unnumberedsubsec interface
 
@@ -971,6 +993,7 @@ Actions and properties which are common to a number of grobs are
 grouped together in an object called a @code{grob-interface}, or
 just @q{interface} for short.
 
+
 @seealso
 Learning Manual:
 @rlearning{Objects and interfaces},
@@ -978,21 +1001,27 @@ Learning Manual:
 @rlearning{Properties found in interfaces}.
 
 Notation Reference:
-@ruser{Layout interfaces}.
+@ref{Layout interfaces}.
 
 Internals Reference:
 @rinternals{Graphical Object Interfaces}.
 
+
 @node lexer
 @unnumberedsubsec lexer
 
 @cindex lexer
+@cindex Flex
 
 A @strong{lexer} is a program which converts a sequence of
 characters into a sequence of tokens, a process called lexical
-analysis.  The LilyPond lexer converts an input @code{.ly} file
-into a tokenized file more suited to the next stage of processing,
-parsing, see @ref{parser}.
+analysis.  The LilyPond lexer converts the stream obtained from an
+input @file{.ly} file into a tokenized stream more suited to the
+next stage of processing - parsing, for which see @ref{parser}.
+The LilyPond lexer is built with Flex from the lexer file
+@file{lily/lexer.ll} which contains the lexical rules.  This file
+is part of the source code and is not included in the LilyPond
+binary installation.
 
 @node output-def
 @unnumberedsubsec output-def
@@ -1007,10 +1036,23 @@ created for midi, layout and paper blocks.
 @unnumberedsubsec parser
 
 @cindex parser
-
-A @strong{parser} analyzes the sequence of tokens produced by
-a lexer to determine its grammatical structure as defined by the
-rules governing the format of an input file.
+@cindex Bison
+@cindex grammar for LilyPond
+@cindex BNF
+
+A @strong{parser} analyzes the sequence of tokens produced by a
+lexer to determine its grammatical structure, grouping the tokens
+progressively into larger groupings according to the rules of the
+grammar.  If the sequence of tokens is valid the end product is a
+tree of tokens whose root is the grammar's start symbol.  If this
+cannot be achieved the file is invalid and an appropriate error
+message is produced.  The syntactic groupings and the rules for
+constructing the groupings from their parts for the LilyPond syntax
+are defined in @file{lily/parser.yy} and shown in Backus Normal Form
+(BNF) in @ref{LilyPond grammar}.  This file is used to build the
+parser during the program build by the parser generator, Bison.  It
+is part of the source code and is not included in the LilyPond
+binary installation.
 
 @node parser variable
 @unnumberedsubsec parser variable
@@ -1073,8 +1115,8 @@ TODO
 @include layout-properties.tely
 
 
-@node Identifiers
-@appendixsec Identifiers
+@node Available music functions
+@appendixsec Available music functions
 
 @include identifiers.tely
 
index f182b78a9ac80c0f0ee332199fe05bd8e16dda39..0ba1d7cbe193824b136002284443f6e6e07b7e8f 100644 (file)
@@ -54,7 +54,8 @@ Notation Reference:
 @ref{Instantiating new staves}.
 @ref{Percussion in MIDI}.
 
-Snippets: @rlsr{Percussion}.
+Snippets:
+@rlsr{Percussion}.
 
 
 @node Basic percussion notation
@@ -98,11 +99,15 @@ instruments; for details please see @ref{Percussion in MIDI}.
 
 
 @seealso
-Notation Reference: @ref{Percussion in MIDI}, @ref{Percussion notes}.
+Notation Reference:
+@ref{Percussion in MIDI},
+@ref{Percussion notes}.
 
-File: @file{ly/@/drumpitch@/-init@/.ly}
+File:
+@file{ly/@/drumpitch@/-init@/.ly}
 
-Snippets: @rlsr{Percussion}.
+Snippets:
+@rlsr{Percussion}.
 
 
 @node Drum rolls
@@ -140,7 +145,8 @@ overridden to achieve a pleasing baseline.
 
 
 @seealso
-Snippets: @rlsr{Percussion}.
+Snippets:
+@rlsr{Percussion}.
 
 
 @node Pitched percussion
@@ -155,9 +161,11 @@ This is covered in other sections of the manual.
 @c TODO: possibly link to an alternate section of NR 3.5, if
 @c "percussion in MIDI" gets a separate subsubsection for
 @c pitched percussion sounds.  -gp
-Notation Reference: @ref{Percussion in MIDI}.
+Notation Reference:
+@ref{Percussion in MIDI}.
 
-Snippets: @rlsr{Percussion}.
+Snippets:
+@rlsr{Percussion}.
 
 
 @node Percussion staves
@@ -487,7 +495,7 @@ bellstaff = {
 }
 @end lilypond
 
-Here an short example by maestro Stravinsky (from @q{L'histoire du Soldat})
+Here a short example taken from Stravinsky's @q{L'histoire du Soldat}.
 
 @lilypond[quote,verbatim]
 #(define mydrums '((bassdrum   default #t  4)
@@ -550,9 +558,12 @@ drumsB = {
 
 
 @seealso
-Snippets: @rlsr{Percussion}.
+Snippets:
+@rlsr{Percussion}.
 
-Internals Reference: @rinternals{DrumStaff}, @rinternals{DrumVoice}.
+Internals Reference:
+@rinternals{DrumStaff},
+@rinternals{DrumVoice}.
 
 
 @c TODO: check name -gp
@@ -592,4 +603,5 @@ around each @code{\parenthesize} statement.
 
 
 @seealso
-Snippets: @rlsr{Percussion}.
+Snippets:
+@rlsr{Percussion}.
index f6e853d14b99862a0dc9089e2244e4e63ffbe74a..b02e6da55362bd0bc37b2dc51fb447e3e0a9d494 100644 (file)
@@ -930,7 +930,8 @@ c2 c
 
 @seealso
 Notation Reference:
-@ref{Mensural clefs}, @ref{Gregorian clefs}.
+@ref{Mensural clefs},
+@ref{Gregorian clefs}.
 
 Snippets:
 @rlsr{Pitches}.
@@ -1179,7 +1180,8 @@ Music Glossary:
 @rglos{transposing instrument}.
 
 Notation Reference:
-@ref{Quoting other voices}, @ref{Transpose}.
+@ref{Quoting other voices},
+@ref{Transpose}.
 
 Snippets:
 @rlsr{Pitches}.
@@ -2166,7 +2168,7 @@ Snippets:
 Internals Reference:
 @rinternals{Accidental},
 @rinternals{Accidental_engraver},
-@rinternals{GrandStaff} and
+@rinternals{GrandStaff},
 @rinternals{PianoStaff},
 @rinternals{Staff},
 @rinternals{AccidentalSuggestion},
@@ -2289,25 +2291,58 @@ This section suggests ways of altering note heads.
 
 @funindex cross
 
-Note heads may be altered:
+The appearance of note heads may be altered:
 
 @lilypond[verbatim,quote,relative=2]
-c4 b a b
+c4 b
 \override NoteHead #'style = #'cross
-c4 b a b
+c4 b
+\revert NoteHead #'style
+a b
+\override NoteHead #'style = #'harmonic
+a b
 \revert NoteHead #'style
 c4 d e f
 @end lilypond
 
-There is a shorthand for diamond shapes which can only be used
-inside chords:
+To see all note head styles, see @ref{Note head styles}.
+
+The @code{cross} style is used to represent a variety of musical
+intentions.  The following generic predefined commands modify the
+note head in both staff and tablature contexts and can be used to
+represent any musical meaning:
 
 @lilypond[verbatim,quote,relative=2]
-<c f\harmonic>2 <d a'\harmonic>4 <c g'\harmonic>
+c4 b
+\xNotesOn
+ a b c4 b
+\xNotesOff
+c4 d
 @end lilypond
 
-To see all note head styles, see @ref{Note head styles}.
+The music function form of this predefined command may be used
+inside and outside chords to generate crossed note heads in both
+staff and tablature contexts:
 
+@lilypond[verbatim,quote,relative=2]
+c4 b
+\xNote { e f }
+c b < g \xNote c f > b
+@end lilypond
+
+There is also a shorthand for diamond shapes which can be used
+only inside chords:
+
+@lilypond[verbatim,quote,relative=2]
+<c f\harmonic>2 <d a'\harmonic>4 <c g'\harmonic>
+@end lilypond
+
+@predefined
+@code{\harmonic},
+@code{\xNotesOn},
+@code{\xNotesOff},
+@code{\xNote}.
+@endpredefined
 
 @seealso
 Snippets:
index ecee99c8fd5cc41ebef5ac1cebd203376d329c97..5949236538542b708bb27f3d7dc9472b7262bd3f 100644 (file)
@@ -40,7 +40,6 @@ This section discusses how to create music functions within LilyPond.
 * Mathematics in functions::
 * Void functions::
 * Functions without arguments::
-* Overview of available music functions::
 @end menu
 
 @node Overview of music functions
@@ -280,16 +279,6 @@ lilypond -d display-bar-numbers FILENAME.ly
 @end example
 
 
-@node Overview of available music functions
-@subsection Overview of available music functions
-
-@c fixme ; this should be move somewhere else?
-The following commands are music functions
-
-@include identifiers.tely
-
-
-
 @node Programmer interfaces
 @section Programmer interfaces
 
index 967b80912ef7d778bdc71a95836f0bb40f07f190..c5381240f17a9239144b5743e3e6427ef998141c 100644 (file)
@@ -82,6 +82,7 @@ The syntax for a normal repeat is
 \repeat volta @var{repeatcount} @var{musicexpr}
 @end example
 
+@noindent
 where @var{musicexpr} is a music expression.  Alternate endings can be
 produced using @code{\alternative}.  In order to delimit the alternate
 endings, the group of alternatives must be enclosed in a set of
@@ -109,7 +110,7 @@ c1
 
 @warning{Do not include @code{@bs{}relative} inside a
 @code{@bs{}repeat}.  It will cause unwanted staves to appear.
-See @rlearning{An extra staff appears}.}
+See @rprogram{An extra staff appears}.}
 
 @cindex repeat with upbeat
 @cindex upbeat in a repeat
@@ -171,14 +172,21 @@ c1
 
 
 @seealso
-Music Glossary: @rglos{repeat}, @rglos{volta}.
+Music Glossary:
+@rglos{repeat},
+@rglos{volta}.
 
-Notation Reference: @ref{Bar lines}, @ref{Modifying context plug-ins}.
+Notation Reference:
+@ref{Bar lines},
+@ref{Modifying context plug-ins}.
 
-Snippets: @rlsr{Repeats}.
+Snippets:
+@rlsr{Repeats}.
 
-Internals Reference: @rinternals{VoltaBracket},
-@rinternals{RepeatedMusic}, @rinternals{VoltaRepeatedMusic},
+Internals Reference:
+@rinternals{VoltaBracket},
+@rinternals{RepeatedMusic},
+@rinternals{VoltaRepeatedMusic},
 @rinternals{UnfoldedRepeatedMusic}.
 
 
@@ -352,6 +360,7 @@ the writing out of repetitious music.  The syntax is
 \repeat unfold @var{repeatcount} @var{musicexpr}
 @end example
 
+@noindent
 where @var{musicexpr} is a music expression and @var{repeatcount} is
 the number of times @var{musicexpr} is repeated.
 
@@ -377,9 +386,11 @@ c1
 
 
 @seealso
-Snippets: @rlsr{Repeats}.
+Snippets:
+@rlsr{Repeats}.
 
-Internals Reference: @rinternals{RepeatedMusic},
+Internals Reference:
+@rinternals{RepeatedMusic},
 @rinternals{UnfoldedRepeatedMusic}.
 
 
@@ -415,6 +426,7 @@ one or two measures are replaced by percent-like signs.  The syntax is
 @code{\repeat percent @var{number} @var{musicexpr}}
 @end example
 
+@noindent
 where @var{musicexpr} is a music expression.
 
 @lilypond[verbatim,quote,relative=2]
@@ -436,14 +448,20 @@ where @var{musicexpr} is a music expression.
 
 
 @seealso
-Music Glossary: @rglos{percent repeat}, @rglos{simile}.
+Music Glossary:
+@rglos{percent repeat},
+@rglos{simile}.
 
-Snippets: @rlsr{Repeats}.
+Snippets:
+@rlsr{Repeats}.
 
-Internals Reference: @rinternals{RepeatSlash},
-@rinternals{PercentRepeat}, @rinternals{DoublePercentRepeat},
+Internals Reference:
+@rinternals{RepeatSlash},
+@rinternals{PercentRepeat},
+@rinternals{DoublePercentRepeat},
 @rinternals{DoublePercentRepeatCounter},
-@rinternals{PercentRepeatCounter}, @rinternals{PercentRepeatedMusic}.
+@rinternals{PercentRepeatCounter},
+@rinternals{PercentRepeatedMusic}.
 
 
 @knownissues
@@ -511,16 +529,22 @@ The same output can be obtained by adding
 the duration of the subdivision, and it must be at least 8.  A
 @var{number} value of 8 gives one line across the note stem.  If
 the length is omitted, the last value (stored in
-@code{tremoloFlags}) is used
+@code{tremoloFlags}) is used:
 
 @lilypond[quote,verbatim,relative=2]
 c2:8 c:32
 c: c:
 @end lilypond
 
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{cross-staff-tremolos.ly}
+
 
 @seealso
-Snippets: @rlsr{Repeats}.
+Snippets:
+@rlsr{Repeats}.
 
 @cindex tremolo, cross-staff
 @cindex cross-staff tremolo
index 9b74a3e9453b69601a2d606b0b075741086e887a..894e95959eb51b245a485de568c79bfb5bcc4303 100644 (file)
@@ -265,7 +265,8 @@ Music Glossary:
 @rglos{tuplet},
 @rglos{polymetric}.
 
-Learning Manual: @rlearning{Tweaking methods}.
+Learning Manual:
+@rlearning{Tweaking methods}.
 
 Notation Reference:
 @ref{Time administration},
@@ -281,6 +282,7 @@ Internals Reference:
 @rinternals{TupletNumber},
 @rinternals{TimeScaledMusic}.
 
+
 @cindex grace notes within tuplet brackets
 
 @knownissues
@@ -1025,9 +1027,12 @@ Mensural time signatures are covered in
 @cindex compound time signatures
 @cindex time signature, compound
 
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
 {compound-time-signatures.ly}
 
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly}
+
 
 @seealso
 Music Glossary:
@@ -1158,6 +1163,11 @@ c4 c d8 d d f4 g4.
 d4 e d c
 @end lilypond
 
+Note that these predefined commands affect all staves in the
+score, even when they are placed in just one @code{Voice}
+context.  To change this, move the @code{Timing_translator}
+from the @code{Score} context to the @code{Staff} context, as
+shown in @ref{Polymetric notation}.
 
 @predefined
 @code{\cadenzaOn},
@@ -1170,7 +1180,8 @@ Music Glossary:
 @rglos{cadenza}.
 
 Notation Reference:
-@ref{Visibility of objects}.
+@ref{Visibility of objects},
+@ref{Polymetric notation}.
 
 Snippets:
 @rlsr{Rhythms}.
@@ -1378,7 +1389,8 @@ much each measure is off.
 
 
 @seealso
-Music Glossary: @rglos{tie}
+Music Glossary:
+@rglos{tie}
 
 Learning Manual:
 @rlearning{Engravers explained},
@@ -1576,7 +1588,8 @@ Installed Files:
 Snippets:
 @rlsr{Rhythms}.
 
-Internals Reference: @rinternals{Beam}.
+Internals Reference:
+@rinternals{Beam}.
 
 
 @knownissues
@@ -1644,7 +1657,7 @@ information about this function, see @ref{Time administration}.
 
 Autobeam and beam subdivide settings are stored in the
 @code{beamSettings} property.  Default values of @code{beamSettings}
-are determined in @file{scm/beam-settings.scm}.  Entries in
+are determined in @file{scm/@/beam@/-settings@/.scm}.  Entries in
 @code{beamSettings} are indexed by time signature and
 rule type.
 
@@ -1982,12 +1995,18 @@ counter is not increased.  To force a line break see
 @cindex measure lines, manual
 
 This and other special bar lines may be inserted manually at any
-point.  When they coincide with the end of a measure they replace the
-simple bar line which would have been inserted there automatically.
-When they do not coincide with the end of a measure the specified bar
-line is inserted at that point in the printed output.  Such insertions
-do not affect the calculation and placement of subsequent automatic
-bar lines.
+point.  When they coincide with the end of a measure they replace
+the simple bar line which would have been inserted there
+automatically.  When they do not coincide with the end of a measure
+the specified bar line is inserted at that point in the printed
+output.
+
+Note that manual bar lines are purely visual. They do not affect
+any of the properties that a normal bar line would affect, such as
+measure numbers, accidentals, line breaks, etc.  They do not affect
+the calculation and placement of subsequent automatic bar lines.
+When a manual bar line is placed where a normal bar line already
+exists, the effects of the original bar line are not altered.
 
 Two types of simple bar lines and five types of double bar lines are available
 for manual insertion:
@@ -2104,10 +2123,10 @@ Notation Reference:
 Snippets:
 @rlsr{Rhythms}.
 
-Internals Reference: @rinternals{BarLine} (created at
-@rinternals{Staff} level), @rinternals{SpanBar} (across
-staves), @rinternals{Timing_translator} (for Timing
-properties).
+Internals Reference:
+@rinternals{BarLine} (created at @code{Staff} level),
+@rinternals{SpanBar} (across staves),
+@rinternals{Timing_translator} (for Timing properties).
 
 
 @node Bar numbers
@@ -2186,7 +2205,8 @@ c1 | c | c | c
 Snippets:
 @rlsr{Rhythms}.
 
-Internals Reference: @rinternals{BarNumber}.
+Internals Reference:
+@rinternals{BarNumber}.
 
 
 @cindex bar number collision
@@ -2415,7 +2435,8 @@ other formatting functions.
 Snippets:
 @rlsr{Rhythms}.
 
-Internals Reference: @rinternals{RehearsalMark}.
+Internals Reference:
+@rinternals{RehearsalMark}.
 
 
 @node Special rhythmic concerns
@@ -2565,11 +2586,14 @@ Music Glossary:
 @rglos{acciaccatura},
 @rglos{appoggiatura}.
 
-Installed Files: @file{ly/@/grace@/-init@/.ly}.
+Installed Files:
+@file{ly/@/grace@/-init@/.ly}.
 
-Snippets: @rlsr{Rhythms}.
+Snippets:
+@rlsr{Rhythms}.
 
-Internals Reference: @rinternals{GraceMusic}.
+Internals Reference:
+@rinternals{GraceMusic}.
 
 
 @knownissues
@@ -2730,11 +2754,14 @@ notes.
 
 
 @seealso
-This manual: @ref{Bar numbers}, @ref{Unmetered music}
+Notation Reference:
+@ref{Bar numbers},
+@ref{Unmetered music}.
 
 Snippets:
 @rlsr{Rhythms}.
 
-Internals Reference: @rinternals{Timing_translator},
-@rinternals{Score}
+Internals Reference:
+@rinternals{Timing_translator},
+@rinternals{Score}.
 
index f3d8be5d05723c85c43d427845b1351600649613..8699239107a4292739b9c8c98b4d7a0c6743df5a 100644 (file)
@@ -208,6 +208,7 @@ voices in a single staff is illustrated in the following example:
 >>
 @end lilypond
 
+@noindent
 Here, voices are instantiated explicitly and are given names. The
 @code{\voiceOne} ... @code{\voiceFour} commands set up the voices
 so that first and third voices get stems up, second and fourth
@@ -228,6 +229,7 @@ construct:
 >> \oneVoice
 @end example
 
+@noindent
 Here, the first expression within a temporary polyphonic passage is
 placed into the @code{Voice} context which was in use immediately
 before the polyphonic passage, and that same @code{Voice} context
@@ -259,6 +261,7 @@ during and after a polyphonic section:
 >>
 @end lilypond
 
+@noindent
 Here, the @code{\voiceOne} and @code{\voiceTwo} commands are
 required to define the settings of each voice.
 
index 70ef916fc02942708956dfb0b5ce4ef2fe20d34f..a52bc68f904f7525a09397651e878594c3f34463 100644 (file)
@@ -195,43 +195,61 @@ page:
 
 @table @code
 
-@item after-title-space
-@funindex after-title-space
-
-The amount of space between the title and the first system.
-Default: @code{5\mm}.
-
-@item before-title-space
-@funindex before-title-space
+@item after-title-spacing
+@funindex after-title-spacing
+
+Specifies how to calculate the space between a title (or top-level markup)
+and the system that follows it.  This is an associative list with five
+components:
+@itemize @bullet
+@item @var{space} -- the amount of stretchable space between the baseline
+of a title and the center of the staff that follows it;
+@item @var{padding} -- the minimum amount of whitespace that must be
+present between a title and the staff that follows it;
+@item @var{stretchability} -- the ease with which the stretchable
+space increases when a page is stretched.
+If this is zero, the distance to the next staff will not stretch at all;
+@item @var{minimum-distance} -- the minimum distance to place between
+the baseline of a title and the center of the staff that follows it. This differs
+from @var{padding} in that the height of a staff has no effect on
+the application of @var{minimum-distance} (whereas the height of a
+staff is crucial for @var{padding}).
+@end itemize
 
-Amount of space between the last system of the previous piece and the
-title of the next.  Default: @code{10\mm}.
+If a page has a ragged bottom, @var{space} is not stretched. In particular, the
+resulting distance on such a page is the largest of
+@itemize @bullet
+@item @var{space},
+@item @var{minimum-distance}, and
+@item @var{padding} plus the smallest distance necessary to eliminate overlap.
+@end itemize
 
-@item between-system-padding
-@funindex between-system-padding
+@item before-title-spacing
+@funindex before-title-spacing
 
-The minimum amount of white space that will always be present
-between the bottom-most symbol of one system, and the top-most of
-the next system.  Default: @code{4\mm}.
+Specifies the spacing between a system and the title (or top-level markup) that
+follows it.
+The distances are measured from the center of the last staff in the system to
+the baseline of the title that follows it.  See @var{after-title-spacing}.
 
-Increasing this will put systems whose bounding boxes almost touch
-farther apart.
+@item between-scores-system-spacing
+@funindex between-scores-system-spacing
 
-@item between-system-space
-@funindex between-system-space
+Specifies the spacing between two systems if they are in different scores, but
+there is no title between them. See @var{after-title-spacing}.
 
-The distance between systems.  It is the ideal distance between
-the center of the bottom staff of one system and the center of the
-top staff of the next system.  Default: @code{20\mm}.
+@item between-system-spacing
+@funindex between-system-spacing
 
-Increasing this value will provide a more even appearance of the
-page at the cost of using more vertical space.
+Specifies the spacing between the center of the bottom staff of one system
+and the center of the top staff of the following system.  See @var{after-title-spacing}.
 
-@item between-title-space
-@funindex between-title-space
+@item between-title-spacing
+@funindex between-title-spacing
 
-Amount of space between consecutive titles (e.g., the title of the
-book and the title of a piece).  Default: @code{2\mm}.
+Specifies the spacing between two titles (or top-level markups).
+The distances are measured from the baseline of the first title to the baseline
+of the second.  See @var{after-title-spacing}.
 
 @item bottom-margin
 @funindex bottom-margin
@@ -239,29 +257,35 @@ book and the title of a piece).  Default: @code{2\mm}.
 The margin between footer and bottom of the page.  Default:
 @code{6\mm}.
 
+@item bottom-system-spacing
+@funindex bottom-system-spacing
+
+Specifies the spacing from the center of the last staff (or the
+baseline of the last top-level markup) to the bottom of the
+printable area (ie. the top of the bottom margin).
+See @var{after-title-spacing}.
+
 @item foot-separation
 @funindex foot-separation
 
 Distance between the bottom-most music system and the page
 footer.  Default: @code{4\mm}.
 
-@item head-separation
-@funindex head-separation
+@item top-title-spacing
+@funindex top-title-spacing
 
-Distance between the header markup (@code{oddHeaderMarkup} and
-@code{evenHeaderMarkup}) and the title markup
-(@code{bookTitleMarkup}, @code{title}, and others).  If the header
-markup and title markup are not present, it is the distance
-between @code{top-margin} and the spot where the title markup
-would normally appear.  Default: @code{4\mm}.
+Specifies the spacing from the top of the printable area (ie.
+the bottom of the top margin) to the baseline of the title.
+See @var{after-title-spacing}.
 
-@item page-top-space
-@funindex page-top-space
+@item top-system-spacing
+@funindex top-system-spacing
 
-Distance from the top of the printable area to the center of the
-first staff.  This only works for staves that are vertically
-small.  Big staves are set with the top of their bounding box
-aligned to the top of the printable area.  Default: @code{12\mm}.
+Specifies the spacing from the top of the printable area (ie.
+the bottom of the top margin) to the center of the first staff.
+This only takes effect if there is no title at the top of the
+page (in which case @var{top-title-spacing} is used instead).
+See @var{after-title-spacing}.
 
 @item paper-height
 @funindex paper-height
@@ -331,7 +355,7 @@ This second example centers page numbers at the bottom of every page.
 
 You can also define these values in Scheme.  In that case @code{mm},
 @code{in}, @code{pt}, and @code{cm} are variables defined in
-@file{paper-defaults.ly} with values in millimeters.  That is why the
+@file{paper@/-defaults@/.ly} with values in millimeters.  That is why the
 value must be multiplied in the example
 
 @example
@@ -2094,6 +2118,8 @@ If @code{ragged-right} is set to true in the @code{\layout} block, then
 systems ends at their natural horizontal length, instead of being spread
 horizontally to fill the whole line.  This is useful for
 short fragments, and for checking how tight the natural spacing is.
+The normal default setting is false, but if the score has only one
+system the default value is true.
 
 @cindex page layout
 @cindex vertical spacing
@@ -2540,7 +2566,9 @@ edge and @var{b} the upper edge of the interval.
 
 
 @seealso
-@ref{Setting the staff size}
+Notation Reference:
+@ref{Setting the staff size}.
+
 Snippets:
 @rlsr{Spacing}.
 
index 64897821755a72c4804032b3fe60be568a4dbafb..58539e0fa28d00e2ee267d3b2acf7a3d2a408dbf 100644 (file)
@@ -1339,6 +1339,7 @@ g4 ees8 f4 g8
 d2. d2.
 @end lilypond
 
+
 @seealso
 Notation Reference:
 @ref{Instrument transpositions},
index 41b8fb34a432f6dfc0626f038c8f0ec8330ef2d7..cab401bb16b30e2b6f7d7a7b9960019d9ef9b292 100644 (file)
@@ -105,6 +105,7 @@ Snippets:
 Internals Reference:
 @rinternals{TextScript}.
 
+
 @cindex text outside margin
 @cindex margin, text running over
 @cindex text, keeping inside margin
@@ -346,8 +347,10 @@ requires, are described in @ref{Multi-page markup}.
 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
 {stand-alone-two-column-markup.ly}
 
+
 @seealso
-Notation Reference: @ref{Formatting text},
+Notation Reference:
+@ref{Formatting text},
 @ref{File structure},
 @ref{Multiple scores in a book},
 @ref{Multi-page markup}.
@@ -355,7 +358,8 @@ Notation Reference: @ref{Formatting text},
 Snippets:
 @rlsr{Text}.
 
-Internals Reference: @rinternals{TextScript}.
+Internals Reference:
+@rinternals{TextScript}.
 
 
 @node Formatting text
@@ -920,7 +924,8 @@ Notation Reference:
 Snippets:
 @rlsr{Text}.
 
-Internals Reference: @rinternals{TextScript}.
+Internals Reference:
+@rinternals{TextScript}.
 
 Installed files:
 @file{scm/@/define@/-markup@/-commands@/.scm}.
@@ -1100,7 +1105,8 @@ Notation Reference:
 Snippets:
 @rlsr{Text}.
 
-Internals Reference: @rinternals{TextScript}.
+Internals Reference:
+@rinternals{TextScript}.
 
 Installed files:
 @file{scm/@/define@/-markup@/-commands@/.scm},
@@ -1172,7 +1178,6 @@ c16
 c2^\markup { \musicglyph #"timesig.neomensural94" }
 @end lilypond
 
-@noindent
 Another way of printing non-text glyphs is described in @ref{Fonts
 explained}.  This is useful for printing braces of various sizes.
 
@@ -1232,7 +1237,8 @@ Notation Reference:
 Snippets:
 @rlsr{Text}.
 
-Internals Reference: @rinternals{TextScript}.
+Internals Reference:
+@rinternals{TextScript}.
 
 Installed files:
 @file{scm/@/define@/-markup@/-commands@/.scm},
@@ -1295,11 +1301,13 @@ Notation Reference:
 Snippets:
 @rlsr{Text}.
 
-Internals Reference: @rinternals{TextScript}.
+Internals Reference:
+@rinternals{TextScript}.
 
 Installed files:
 @file{scm/@/define@/-markup@/-commands@/.scm}.
 
+
 @funindex \markuplines
 @funindex markuplines
 
@@ -1435,7 +1443,7 @@ Any font that is installed on the operating system and recognized by
 FontConfig may be used in a score, using the following syntax:
 
 @lilypond[quote,verbatim,relative=2]
-\override Staff.TimeSignature #'font-name = #"Charter"
+\override Staff.TimeSignature #'font-name = #"Bitstream Charter"
 \override Staff.TimeSignature #'font-size = #2
 \time 3/4
 
@@ -1459,10 +1467,6 @@ operating system:
 lilypond -dshow-available-fonts x
 @end example
 
-@noindent
-The last argument of the command can be anything, but has to be
-present.
-
 
 @seealso
 Notation Reference:
@@ -1472,8 +1476,9 @@ Notation Reference:
 Snippets:
 @rlsr{Text}.
 
-Installed files:
-@file{lily/@/font@/-config@/-scheme@/.cc}.
+@c A source file gets never installed...
+@c Installed files:
+@c @file{lily/@/font@/-config@/-scheme@/.cc}.
 
 
 @node Entire document fonts
index 3736331f836ad8867ef97c46b871345a512481f0..e253d2f971a25fd74a31512210fd813d00ed470f 100644 (file)
@@ -363,7 +363,7 @@ verseOne = \lyricmode @{ Joy to the world the Lord is come @}
 @}
 @end example
 
-For different or more complex orderings, the best way is to setup the
+For different or more complex orderings, the best way is to set up the
 hierarchy of staves and lyrics first, e.g.,
 @example
 \new ChoirStaff <<
@@ -374,6 +374,7 @@ hierarchy of staves and lyrics first, e.g.,
 >>
 @end example
 
+@noindent
 and then combine the appropriate melodies and lyric lines
 
 @example
@@ -382,7 +383,6 @@ and then combine the appropriate melodies and lyric lines
 @end example
 
 @noindent
-
 The final input would resemble
 
 @example
@@ -448,7 +448,7 @@ Lyrics aligning and typesetting are prepared with the help of skips,
 hyphens and extender lines.
 
 Lyrics are printed by interpreting them in the context called
-@rinternals{Lyrics}.
+@code{Lyrics}; see @rinternals{Lyrics}, for more.
 
 @example
 \new Lyrics \lyricmode @dots{}
@@ -461,7 +461,7 @@ of the syllables:
 @item
 by automatically aligning
 the lyrics to a melody or other voice of music, using @code{\addlyrics}
-or @code{\lyricsto}.
+or @code{\lyricsto}
 
 @item
 or by specifying the duration of each syllable
@@ -499,8 +499,9 @@ melody and the lyrics with the @code{\lyricsto} expression
 \new Lyrics \lyricsto @var{name} @dots{}
 @end example
 
+@noindent
 This aligns the lyrics to the
-notes of the @rinternals{Voice} context called @var{name}, which must
+notes of the @code{Voice} context called @var{name}, which must
 already exist.  Therefore normally the @code{Voice} is specified first, and
 then the lyrics are specified with @code{\lyricsto}.  The command
 @code{\lyricsto} switches to @code{\lyricmode} mode automatically, so the
@@ -516,7 +517,7 @@ The following example uses different commands for entering lyrics.
     c4 b8. a16 g4. f8 e4 d c2
   }
 
-% not recommended: left aligns syllables
+% not recommended: left-aligned syllables
   \new Lyrics \lyricmode { Joy4 to8. the16 world!4. the8 Lord4 is come.2 }
 
 % wrong: durations needed
@@ -569,7 +570,7 @@ The alignment to a melody can be specified with the
 
 @noindent
 The value of the property (here: @code{"lala"}) should be the name of
-a @rinternals{Voice} context.  Without this setting, extender lines
+a @code{Voice} context.  Without this setting, extender lines
 will not be formatted properly.
 
 Here is an example demonstrating manual lyric durations,
@@ -591,7 +592,8 @@ Notation Reference:
 @ref{Keeping contexts alive}.
 
 Internals Reference:
-@rinternals{Lyrics}.
+@rinternals{Lyrics},
+@rinternals{Voice}.
 
 
 @node Multiple syllables to one note
@@ -604,10 +606,10 @@ Internals Reference:
 In order to assign more than one syllable to a single note, you can
 surround them with quotes or use a @code{_} character, to get spaces
 between syllables, or use tilde  symbol (@code{~}) to get a lyric
-tie@footnote{The lyric ties is implemented with the Unicode character
+tie.@footnote{The lyric ties is implemented with the Unicode character
 U+203F, so be
-sure to have a font (Like DejaVuLGC) installed that includes this
-glyph.}.
+sure to have a font (like DejaVuLGC) installed that includes this
+glyph.}
 
 @lilypond[quote,ragged-right,fragment,verbatim]
 \time 3/4
@@ -622,6 +624,7 @@ glyph.}.
 Internals Reference:
 @rinternals{LyricCombineMusic}.
 
+
 @c Here come the section which used to be "Melismata"
 @c the new title might be more self-explanatory
 
@@ -697,7 +700,7 @@ behavior}) is switched off.
 @cindex SATB
 @cindex choral score
 
-A complete example of a SATB score setup is in section
+A complete example of a SATB score setup is in
 @rlearning{Vocal ensembles}.
 
 
@@ -709,7 +712,7 @@ A complete example of a SATB score setup is in section
 @endpredefined
 
 
-@seealso
+@c @seealso
 @c @lsr{vocal,lyric@/-combine.ly}.
 
 
@@ -727,8 +730,6 @@ the text will be delayed another note.  The @code{\skip} command
 must be followed by a valid duration, but this is ignored when
 @code{\skip} is used in lyrics.
 
-For example,
-
 @lilypond[verbatim,ragged-right,quote]
 \relative c' { c c g' }
 \addlyrics {
@@ -774,7 +775,7 @@ distance between two syllables) and the @code{minimum-length}
 @seealso
 Internals Reference:
 @rinternals{LyricExtender},
-@rinternals{LyricHyphen}
+@rinternals{LyricHyphen}.
 
 
 @node Lyrics and repeats
@@ -895,8 +896,8 @@ the implicit melismata get ignored.
 @cindex Spacing lyrics
 @cindex Lyrics, increasing space between
 
-To increase the spacing between lyrics, set the minimum-distance property of
-LyricSpace.
+To increase the spacing between lyrics, set the @code{minimum-distance}
+property of @code{LyricSpace}.
 
 @lilypond[relative,verbatim,fragment,quote,ragged-right]
 {
@@ -910,6 +911,7 @@ LyricSpace.
 }
 @end lilypond
 
+@noindent
 To make this change for all lyrics in the score, set the property in the
 layout.
 
index 65071975540e0fb5a6ca9abe98c100a5462ed4df..44d85c43a8d2eaa207e63d3c0979ea10ed19dd46 100644 (file)
@@ -95,7 +95,7 @@ Notation Reference:
 @ref{Special note heads},
 
 Snippets:
-@rlsr{Winds}
+@rlsr{Winds}.
 
 
 @node Fingerings
@@ -169,7 +169,7 @@ music.
 
 
 @seealso
-@rlsr{Winds}
+@rlsr{Winds}.
 
 
 @node Bagpipe example
@@ -220,4 +220,4 @@ notation.
 
 
 @seealso
-@rlsr{Winds}
+@rlsr{Winds}.
index 8550f4b291b70aaa2b783b69362a31a7dcb4556a..0d7d5a501397898770135fb138c04342c6dca7cc 100644 (file)
@@ -164,6 +164,7 @@ For example to indicate the key signature of a maqam muhayer piece:
 \key re \bayati
 @end example
 
+@noindent
 Here @var{re} is the default pitch of the muhayer maqam, and
 @var{bayati} is the name of the base maqam in the group.
 
@@ -335,7 +336,7 @@ intervals and unusual modes that are discussed in this section.
 
 @seealso
 Snippets:
-@rlsr{World music}
+@rlsr{World music}.
 
 
 @node Further reading
@@ -344,7 +345,7 @@ Snippets:
 @enumerate
 
 @item
-The music of the Arabs by Habib Hassan Touma [Amadeus Press, 1996],
+@emph{The music of the Arabs} by Habib Hassan Touma [Amadeus Press, 1996],
 contains a discussion of maqams and their method of groupings.
 
 There are also various web sites that explain maqams and some
@@ -368,8 +369,8 @@ specified. It is common, however, to use a key signature per
 group, rather than a different key signature for each different
 maqam.
 
-Oud methods by the following authors, contain examples of
-mainly Turkish and Arabic compositions.
+Method books by the following authors for the @dfn{Oud}, the Arabic lute,
+contain examples of mainly Turkish and Arabic compositions.
 
 @itemize @bullet
 @item
@@ -380,5 +381,3 @@ George Farah
 Ibrahim Ali Darwish Al-masri
 @end itemize
 @end enumerate
-
-
index a360164335a2d9398ef6cb037010ca7fcf71276c..d6cca648e276994d849405733fca6280884ec01a 100644 (file)
@@ -10,6 +10,7 @@ EXTRA_DIST_FILES = $(BITMAP_IMAGES) $(EPS_ILLUSTRATIONS) $(SVG_FILES)
 OUT_PDF_IMAGES = $(EPS_ILLUSTRATIONS:%.eps=$(outdir)/%.pdf)
 OUT_BITMAP_IMAGES = $(BITMAP_IMAGES:%=$(outdir)/%)
 OUT_BITMAP_IMAGES += $(EPS_ILLUSTRATIONS:%.pdf=$(outdir)/%.png)
+OUT_SVG_IMAGES = $(SVG_FILES:%.svg=$(outdir)/%.png)
 
 STEPMAKE_TEMPLATES = documentation
 
@@ -21,7 +22,7 @@ include $(depth)/make/stepmake.make
 default:
 
 ifeq ($(out),www)
-local-WWW-1: $(OUT_BITMAP_IMAGES) $(OUT_PDF_IMAGES)
+local-WWW-1: $(OUT_BITMAP_IMAGES) $(OUT_PDF_IMAGES) $(OUT_SVG_IMAGES)
 endif
 
 #########
@@ -33,6 +34,9 @@ $(outdir)/%-flat-gray.png: %-flat-gray.png
 $(outdir)/%-flat-bw.png: %-flat-bw.png
        convert -depth 8 -geometry 50x50% $< $@
 
+$(outdir)/%.png: %.svg
+       convert -depth 8 -alpha Off -background white -layers flatten -trim +repage $< $@
+
 $(outdir)/%.png: %.png
        ln -f $< $@
 
index 08cd33838016594b0c7e133d5437ab753bac7394..47e97d42e9c34296be0043760b63a0777cc7736a 100644 (file)
Binary files a/Documentation/pictures/baer-flat-gray.png and b/Documentation/pictures/baer-flat-gray.png differ
diff --git a/Documentation/pictures/baer-ledger.png b/Documentation/pictures/baer-ledger.png
new file mode 100644 (file)
index 0000000..ccf8196
Binary files /dev/null and b/Documentation/pictures/baer-ledger.png differ
diff --git a/Documentation/pictures/baer-sarabande.png b/Documentation/pictures/baer-sarabande.png
new file mode 100644 (file)
index 0000000..ae65e6e
Binary files /dev/null and b/Documentation/pictures/baer-sarabande.png differ
diff --git a/Documentation/pictures/baer-suite1-fullpage.png b/Documentation/pictures/baer-suite1-fullpage.png
new file mode 100644 (file)
index 0000000..72504df
Binary files /dev/null and b/Documentation/pictures/baer-suite1-fullpage.png differ
diff --git a/Documentation/pictures/baer-suite1-line.png b/Documentation/pictures/baer-suite1-line.png
new file mode 100644 (file)
index 0000000..d94ac32
Binary files /dev/null and b/Documentation/pictures/baer-suite1-line.png differ
diff --git a/Documentation/pictures/beam-scoring-example.png b/Documentation/pictures/beam-scoring-example.png
new file mode 100644 (file)
index 0000000..2f450f4
Binary files /dev/null and b/Documentation/pictures/beam-scoring-example.png differ
diff --git a/Documentation/pictures/bench-morgenlied.png b/Documentation/pictures/bench-morgenlied.png
new file mode 100644 (file)
index 0000000..cfe0bcf
Binary files /dev/null and b/Documentation/pictures/bench-morgenlied.png differ
diff --git a/Documentation/pictures/directions-updown.png b/Documentation/pictures/directions-updown.png
new file mode 100644 (file)
index 0000000..a08280d
Binary files /dev/null and b/Documentation/pictures/directions-updown.png differ
diff --git a/Documentation/pictures/engraver-acc.png b/Documentation/pictures/engraver-acc.png
new file mode 100644 (file)
index 0000000..2b96c62
Binary files /dev/null and b/Documentation/pictures/engraver-acc.png differ
diff --git a/Documentation/pictures/engraver-clef.png b/Documentation/pictures/engraver-clef.png
new file mode 100644 (file)
index 0000000..b8869b4
Binary files /dev/null and b/Documentation/pictures/engraver-clef.png differ
diff --git a/Documentation/pictures/engraver-final.png b/Documentation/pictures/engraver-final.png
new file mode 100644 (file)
index 0000000..92884a7
Binary files /dev/null and b/Documentation/pictures/engraver-final.png differ
diff --git a/Documentation/pictures/engraver-noteheads.png b/Documentation/pictures/engraver-noteheads.png
new file mode 100644 (file)
index 0000000..449d7ed
Binary files /dev/null and b/Documentation/pictures/engraver-noteheads.png differ
diff --git a/Documentation/pictures/engraver-score.png b/Documentation/pictures/engraver-score.png
new file mode 100644 (file)
index 0000000..dc2b2e6
Binary files /dev/null and b/Documentation/pictures/engraver-score.png differ
diff --git a/Documentation/pictures/engraver-slur.png b/Documentation/pictures/engraver-slur.png
new file mode 100644 (file)
index 0000000..9247ab2
Binary files /dev/null and b/Documentation/pictures/engraver-slur.png differ
diff --git a/Documentation/pictures/engraver-staff.png b/Documentation/pictures/engraver-staff.png
new file mode 100644 (file)
index 0000000..f59d362
Binary files /dev/null and b/Documentation/pictures/engraver-staff.png differ
diff --git a/Documentation/pictures/engraver-stem.png b/Documentation/pictures/engraver-stem.png
new file mode 100644 (file)
index 0000000..2934268
Binary files /dev/null and b/Documentation/pictures/engraver-stem.png differ
diff --git a/Documentation/pictures/finale-beam-detail.png b/Documentation/pictures/finale-beam-detail.png
new file mode 100644 (file)
index 0000000..32fae42
Binary files /dev/null and b/Documentation/pictures/finale-beam-detail.png differ
diff --git a/Documentation/pictures/finale-flat-correct.png b/Documentation/pictures/finale-flat-correct.png
new file mode 100644 (file)
index 0000000..de40a26
Binary files /dev/null and b/Documentation/pictures/finale-flat-correct.png differ
diff --git a/Documentation/pictures/finale-flat-detail.png b/Documentation/pictures/finale-flat-detail.png
new file mode 100644 (file)
index 0000000..2ee5b2d
Binary files /dev/null and b/Documentation/pictures/finale-flat-detail.png differ
diff --git a/Documentation/pictures/finale-sarabande-full.png b/Documentation/pictures/finale-sarabande-full.png
new file mode 100644 (file)
index 0000000..36707dd
Binary files /dev/null and b/Documentation/pictures/finale-sarabande-full.png differ
diff --git a/Documentation/pictures/hader-collage.jpeg b/Documentation/pictures/hader-collage.jpeg
new file mode 100644 (file)
index 0000000..44702d2
Binary files /dev/null and b/Documentation/pictures/hader-collage.jpeg differ
diff --git a/Documentation/pictures/hader-collage.png b/Documentation/pictures/hader-collage.png
new file mode 100644 (file)
index 0000000..6687b1c
Binary files /dev/null and b/Documentation/pictures/hader-collage.png differ
diff --git a/Documentation/pictures/hader-slaan.jpeg b/Documentation/pictures/hader-slaan.jpeg
new file mode 100644 (file)
index 0000000..893d6eb
Binary files /dev/null and b/Documentation/pictures/hader-slaan.jpeg differ
diff --git a/Documentation/pictures/hader-slaan.png b/Documentation/pictures/hader-slaan.png
new file mode 100644 (file)
index 0000000..a6d6650
Binary files /dev/null and b/Documentation/pictures/hader-slaan.png differ
index 20326b958a591ca62d8e46820713e5a6bf472cb9..f257c86a18d31b8a222aeea2e2996fd336ad671f 100644 (file)
Binary files a/Documentation/pictures/henle-flat-gray.png and b/Documentation/pictures/henle-flat-gray.png differ
diff --git a/Documentation/pictures/henle-ledger.png b/Documentation/pictures/henle-ledger.png
new file mode 100644 (file)
index 0000000..184b2f0
Binary files /dev/null and b/Documentation/pictures/henle-ledger.png differ
diff --git a/Documentation/pictures/henle-suite1-fullpage.png b/Documentation/pictures/henle-suite1-fullpage.png
new file mode 100644 (file)
index 0000000..aa57b99
Binary files /dev/null and b/Documentation/pictures/henle-suite1-fullpage.png differ
diff --git a/Documentation/pictures/henle-suite1-line.png b/Documentation/pictures/henle-suite1-line.png
new file mode 100644 (file)
index 0000000..fc6a264
Binary files /dev/null and b/Documentation/pictures/henle-suite1-line.png differ
index 09ce34e7c5fc7448c2e6f767f7d4ab1620c6cb78..45cf450c897b33ff5f50bebfd9c9ea13ae92367f 100644 (file)
Binary files a/Documentation/pictures/lily-flat-bw.png and b/Documentation/pictures/lily-flat-bw.png differ
diff --git a/Documentation/pictures/lily-home-nav-active.png b/Documentation/pictures/lily-home-nav-active.png
new file mode 100644 (file)
index 0000000..a709a02
Binary files /dev/null and b/Documentation/pictures/lily-home-nav-active.png differ
diff --git a/Documentation/pictures/lily-home-nav-bg.png b/Documentation/pictures/lily-home-nav-bg.png
new file mode 100644 (file)
index 0000000..73ad72d
Binary files /dev/null and b/Documentation/pictures/lily-home-nav-bg.png differ
diff --git a/Documentation/pictures/lily-home-nav-hover.png b/Documentation/pictures/lily-home-nav-hover.png
new file mode 100644 (file)
index 0000000..cd03636
Binary files /dev/null and b/Documentation/pictures/lily-home-nav-hover.png differ
diff --git a/Documentation/pictures/lily-ledger.png b/Documentation/pictures/lily-ledger.png
new file mode 100644 (file)
index 0000000..ce4dcc4
Binary files /dev/null and b/Documentation/pictures/lily-ledger.png differ
diff --git a/Documentation/pictures/lily14-sarabande-correct.png b/Documentation/pictures/lily14-sarabande-correct.png
new file mode 100644 (file)
index 0000000..f114f12
Binary files /dev/null and b/Documentation/pictures/lily14-sarabande-correct.png differ
diff --git a/Documentation/pictures/lily14-sarabande.png b/Documentation/pictures/lily14-sarabande.png
new file mode 100644 (file)
index 0000000..36aaf56
Binary files /dev/null and b/Documentation/pictures/lily14-sarabande.png differ
diff --git a/Documentation/pictures/lily17-sarabande.png b/Documentation/pictures/lily17-sarabande.png
new file mode 100644 (file)
index 0000000..6481373
Binary files /dev/null and b/Documentation/pictures/lily17-sarabande.png differ
diff --git a/Documentation/pictures/mc-squared.png b/Documentation/pictures/mc-squared.png
new file mode 100644 (file)
index 0000000..84324bd
Binary files /dev/null and b/Documentation/pictures/mc-squared.png differ
diff --git a/Documentation/pictures/morgenlied-crop-2.jpeg b/Documentation/pictures/morgenlied-crop-2.jpeg
new file mode 100644 (file)
index 0000000..dad0394
Binary files /dev/null and b/Documentation/pictures/morgenlied-crop-2.jpeg differ
diff --git a/Documentation/pictures/morgenlied-crop-2.png b/Documentation/pictures/morgenlied-crop-2.png
new file mode 100644 (file)
index 0000000..f71d792
Binary files /dev/null and b/Documentation/pictures/morgenlied-crop-2.png differ
diff --git a/Documentation/pictures/morgenlied-ly-crop2.png b/Documentation/pictures/morgenlied-ly-crop2.png
new file mode 100644 (file)
index 0000000..7c51ebf
Binary files /dev/null and b/Documentation/pictures/morgenlied-ly-crop2.png differ
diff --git a/Documentation/pictures/naive-notation-uml.png b/Documentation/pictures/naive-notation-uml.png
new file mode 100644 (file)
index 0000000..a030d8e
Binary files /dev/null and b/Documentation/pictures/naive-notation-uml.png differ
diff --git a/Documentation/pictures/naive-notation.png b/Documentation/pictures/naive-notation.png
new file mode 100644 (file)
index 0000000..112c406
Binary files /dev/null and b/Documentation/pictures/naive-notation.png differ
diff --git a/Documentation/pictures/nereid-shot-small.png b/Documentation/pictures/nereid-shot-small.png
new file mode 100644 (file)
index 0000000..1e09a8e
Binary files /dev/null and b/Documentation/pictures/nereid-shot-small.png differ
diff --git a/Documentation/pictures/nereid-shot.png b/Documentation/pictures/nereid-shot.png
new file mode 100644 (file)
index 0000000..138c2db
Binary files /dev/null and b/Documentation/pictures/nereid-shot.png differ
diff --git a/Documentation/pictures/nonnaive-notation.png b/Documentation/pictures/nonnaive-notation.png
new file mode 100644 (file)
index 0000000..1026928
Binary files /dev/null and b/Documentation/pictures/nonnaive-notation.png differ
diff --git a/Documentation/pictures/ross-beam-scan.jpeg b/Documentation/pictures/ross-beam-scan.jpeg
new file mode 100644 (file)
index 0000000..e727780
Binary files /dev/null and b/Documentation/pictures/ross-beam-scan.jpeg differ
diff --git a/Documentation/pictures/ross-beam-scan.png b/Documentation/pictures/ross-beam-scan.png
new file mode 100644 (file)
index 0000000..fe4e72e
Binary files /dev/null and b/Documentation/pictures/ross-beam-scan.png differ
diff --git a/Documentation/pictures/simple-notation.png b/Documentation/pictures/simple-notation.png
new file mode 100644 (file)
index 0000000..f711094
Binary files /dev/null and b/Documentation/pictures/simple-notation.png differ
diff --git a/Documentation/pictures/simultaneous-0.png b/Documentation/pictures/simultaneous-0.png
new file mode 100644 (file)
index 0000000..731b22a
Binary files /dev/null and b/Documentation/pictures/simultaneous-0.png differ
diff --git a/Documentation/pictures/simultaneous-1.png b/Documentation/pictures/simultaneous-1.png
new file mode 100644 (file)
index 0000000..edecbe7
Binary files /dev/null and b/Documentation/pictures/simultaneous-1.png differ
diff --git a/Documentation/pictures/simultaneous-2.png b/Documentation/pictures/simultaneous-2.png
new file mode 100644 (file)
index 0000000..7099046
Binary files /dev/null and b/Documentation/pictures/simultaneous-2.png differ
diff --git a/Documentation/pictures/simultaneous-3.png b/Documentation/pictures/simultaneous-3.png
new file mode 100644 (file)
index 0000000..df0811c
Binary files /dev/null and b/Documentation/pictures/simultaneous-3.png differ
diff --git a/Documentation/pictures/slur-esthetics-annotate-1.png b/Documentation/pictures/slur-esthetics-annotate-1.png
new file mode 100644 (file)
index 0000000..91f27d5
Binary files /dev/null and b/Documentation/pictures/slur-esthetics-annotate-1.png differ
diff --git a/Documentation/pictures/slur-esthetics-annotate-2.png b/Documentation/pictures/slur-esthetics-annotate-2.png
new file mode 100644 (file)
index 0000000..e8901cc
Binary files /dev/null and b/Documentation/pictures/slur-esthetics-annotate-2.png differ
diff --git a/Documentation/pictures/slur-esthetics-annotate-3.png b/Documentation/pictures/slur-esthetics-annotate-3.png
new file mode 100644 (file)
index 0000000..7f06186
Binary files /dev/null and b/Documentation/pictures/slur-esthetics-annotate-3.png differ
diff --git a/Documentation/pictures/slur-esthetics.png b/Documentation/pictures/slur-esthetics.png
new file mode 100644 (file)
index 0000000..4146798
Binary files /dev/null and b/Documentation/pictures/slur-esthetics.png differ
diff --git a/Documentation/pictures/spacing-no-corr.png b/Documentation/pictures/spacing-no-corr.png
new file mode 100644 (file)
index 0000000..39fd5c0
Binary files /dev/null and b/Documentation/pictures/spacing-no-corr.png differ
diff --git a/Documentation/pictures/spacing-with-corr.png b/Documentation/pictures/spacing-with-corr.png
new file mode 100644 (file)
index 0000000..b62ed8a
Binary files /dev/null and b/Documentation/pictures/spacing-with-corr.png differ
diff --git a/Documentation/pictures/stone-distance.png b/Documentation/pictures/stone-distance.png
new file mode 100644 (file)
index 0000000..9c7fa54
Binary files /dev/null and b/Documentation/pictures/stone-distance.png differ
index e27f3655c86e282f85612e6fa50e26caa1da982a..aeedac6acfadb7da174190d066186be74595c7e0 100644 (file)
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
 <svg
-   id="svg548"
-   sodipodi:version="0.32"
-   width="210mm"
-   height="297mm"
-   sodipodi:docname="example-1.svg"
-   inkscape:version="0.39"
-   sodipodi:docbase="/home/hanwen/usr/src/newweb/site/switch"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:xml="http://www.w3.org/XML/1998/namespace"
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:xlink="http://www.w3.org/1999/xlink">
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="571"
+   height="269"
+   id="svg8911"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="text-input-1-annotate.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
   <defs
-     id="defs550">
-    <linearGradient
-       id="linearGradient792">
-      <stop
-         style="stop-color:#000;stop-opacity:1;"
-         offset="0"
-         id="stop793" />
-      <stop
-         style="stop-color:#fff;stop-opacity:1;"
-         offset="1"
-         id="stop794" />
-    </linearGradient>
-    <linearGradient
-       xlink:href="#linearGradient792"
-       id="linearGradient795" />
-    <linearGradient
-       xlink:href="#linearGradient792"
-       id="linearGradient796" />
-    <linearGradient
-       xlink:href="#linearGradient792"
-       id="linearGradient797" />
-    <linearGradient
-       xlink:href="#linearGradient792"
-       id="linearGradient798" />
-    <linearGradient
-       xlink:href="#linearGradient792"
-       id="linearGradient799" />
+     id="defs8913">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective8919" />
   </defs>
   <sodipodi:namedview
      id="base"
-     inkscape:zoom="2.4525204"
-     inkscape:cx="231.58330"
-     inkscape:cy="460.32837"
-     inkscape:window-width="1375"
-     inkscape:window-height="911"
-     inkscape:window-x="8"
-     inkscape:window-y="8" />
-  <text
-     xml:space="preserve"
-     style="fill:black;stroke:none;font-family:Luxi Mono;font-style:normal;font-weight:bold;font-size:24.000000;fill-opacity:1;stroke-opacity:1;stroke-width:1pt;stroke-linejoin:miter;stroke-linecap:butt;text-anchor:start;writing-mode:lr;font-stretch:normal;font-variant:normal;"
-     x="80.3415680"
-     y="429.014679"
-     id="text551"
-     sodipodi:linespacing="100%"><tspan
-       x="80.341568"
-       y="429.01468"
-       sodipodi:role="line"
-       id="tspan1054">{</tspan><tspan
-       x="80.341568"
-       y="453.01468"
-       sodipodi:role="line"
-       id="tspan1056">  \time 2/4</tspan><tspan
-       x="80.341568"
-       y="477.01468"
-       sodipodi:role="line"
-       id="tspan1058">  \clef bass</tspan><tspan
-       x="80.341568"
-       y="501.01468"
-       sodipodi:role="line"
-       id="tspan1060">  c4 c g g a a g2</tspan><tspan
-       x="80.341568"
-       y="525.01468"
-       sodipodi:role="line"
-       id="tspan1062">}</tspan></text>
-  <text
-     style="font-size:12.000000;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:helvetica;"
-     x="400.56955"
-     y="448.21982"
-     id="text562"><tspan
-       id="tspan563"></tspan></text>
-  <rect
-     style="font-size:12.000000;fill:#fa0000;fill-opacity:0.42335799;fill-rule:evenodd;stroke-width:1.0000000pt;"
-     id="rect730"
-     width="85.952026"
-     height="47.097027"
-     x="105.17464"
-     y="432.73337" />
-  <rect
-     style="font-size:12.000000;fill:#1ae293;fill-opacity:0.37956199;fill-rule:evenodd;stroke-width:1.0000000pt;"
-     id="rect731"
-     width="21.193634"
-     height="17.661377"
-     x="102.62420"
-     y="486.89508" />
-  <rect
-     style="font-size:12.000000;fill:#1ae293;fill-opacity:0.37956199;fill-rule:evenodd;stroke-width:1.0000000pt;"
-     id="rect732"
-     width="21.193634"
-     height="17.661377"
-     x="149.72118"
-     y="486.89508" />
-  <rect
-     style="font-size:12.000000;fill:#1ae293;fill-opacity:0.37956199;fill-rule:evenodd;stroke-width:1.0000000pt;"
-     id="rect733"
-     width="21.193634"
-     height="17.661377"
-     x="177.97934"
-     y="486.89508" />
-  <text
-     style="font-size:12.000000;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:helvetica;"
-     x="400.56955"
-     y="448.21982"
-     id="text734"><tspan
-       id="tspan735"></tspan></text>
-  <text
-     style="font-size:12.000000;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:helvetica;"
-     x="459.44083"
-     y="447.04242"
-     id="text739"><tspan
-       id="tspan740"></tspan></text>
-  <rect
-     style="font-size:12.000000;fill:#1ae293;fill-opacity:0.37956199;fill-rule:evenodd;stroke-width:1.0000000pt;"
-     id="rect743"
-     width="21.193634"
-     height="17.661377"
-     x="236.85062"
-     y="486.89502" />
-  <text
-     style="font-size:12.000000;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:helvetica;"
-     x="400.56955"
-     y="448.21982"
-     id="text744"><tspan
-       id="tspan745"></tspan></text>
-  <text
-     style="font-size:12.000000;font-style:normal;font-weight:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:helvetica;"
-     x="514.19104"
-     y="448.21979"
-     id="text749"><tspan
-       id="tspan750"></tspan></text>
-  <rect
-     style="font-size:12.000000;fill:#1ae293;fill-opacity:0.37956199;fill-rule:evenodd;stroke-width:1.0000000pt;"
-     id="rect752"
-     width="21.193634"
-     height="17.661377"
-     x="260.39914"
-     y="485.12885" />
-  <rect
-     style="font-size:12.000000;fill:#1ae293;fill-opacity:0.37956199;fill-rule:evenodd;stroke-width:1.0000000pt;"
-     id="rect753"
-     width="21.193634"
-     height="17.661377"
-     x="291.60086"
-     y="486.89508" />
-  <rect
-     style="font-size:12.000000;fill:#1ae293;fill-opacity:0.37956199;fill-rule:evenodd;stroke-width:1.0000000pt;"
-     id="rect754"
-     width="21.193634"
-     height="17.661377"
-     x="207.41501"
-     y="486.89502" />
-  <rect
-     style="font-size:12.000000;fill:#5974c8;fill-opacity:0.57391298;fill-rule:evenodd;stroke-width:1.0000000pt;"
-     id="rect755"
-     width="22.959778"
-     height="22.959778"
-     x="123.52354"
-     y="481.59650" />
-  <rect
-     style="font-size:12.000000;fill:#5974c8;fill-opacity:0.57391298;fill-rule:evenodd;stroke-width:1.0000000pt;"
-     id="rect756"
-     width="22.959778"
-     height="22.959778"
-     x="311.32285"
-     y="481.30206" />
-  <text
-     style="fill:#af0000;stroke:none;font-family:Bitstream Charter;font-style:normal;font-weight:normal;font-size:28;fill-opacity:1;stroke-opacity:1;stroke-width:1pt;stroke-linejoin:miter;stroke-linecap:butt;text-anchor:start;writing-mode:lr;"
-     x="364.413025"
-     y="401.540314"
-     id="text763"><tspan
-       x="364.41302"
-       y="401.54031"
-       sodipodi:role="line"
-       id="tspan800">
-_("Commands start with \\")</tspan></text>
-  <text
-     style="font-size:28.000000;font-style:normal;font-weight:normal;fill:#008f00;fill-opacity:1.0000000;stroke:#00d500;stroke-width:0.0000000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;"
-     x="323.05475"
-     y="454.98016"
-     id="text775"><tspan
-       x="323.05475"
-       y="454.98016"
-       sodipodi:role="line"
-       id="tspan806">
-_("Letters are notes")</tspan></text>
-  <path
-     style="fill:none;fill-rule:evenodd;stroke:#0000af;stroke-opacity:1;stroke-width:1.875;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;stroke-dasharray:none;"
-     d="M 262.30989,573.38170 C 233.76782,572.36234 213.27992,562.25728 232.13807,506.19251"
-     id="path782"
-     sodipodi:nodetypes="cc"
-     transform="translate(-103.0247,-0.588715)" />
-  <path
-     style="fill:none;fill-rule:evenodd;stroke:#0000af;stroke-opacity:1;stroke-width:1.875;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;stroke-dasharray:none;"
-     d="M 465.80736,560.72683 C 471.17433,536.18388 425.20469,554.40167 426.89137,505.56308"
-     id="path783"
-     sodipodi:nodetypes="cc"
-     transform="translate(-103.0247,-0.588715)" />
-  <text
-     style="font-size:28.000000;font-style:normal;font-weight:normal;fill:#0000b1;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;"
-     x="167.61949"
-     y="582.76678"
-     id="text784"><tspan
-       x="167.61949"
-       y="582.76678"
-       sodipodi:role="line"
-       id="tspan802">
-_("Numbers are durations")</tspan><tspan
-       x="167.61949"
-       y="610.76678"
-       sodipodi:role="line"
-       id="tspan804"></tspan></text>
-  <path
-     style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#00af00;stroke-width:1.8750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
-     d="M 316.57929,448.50436 C 300.09529,448.50436 262.44950,440.40439 249.19783,485.43300"
-     id="path808"
-     sodipodi:nodetypes="cc" />
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="288.41667"
+     inkscape:cy="140"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="651"
+     inkscape:window-height="708"
+     inkscape:window-x="23"
+     inkscape:window-y="13" />
   <metadata
-     id="metadata69">
-    <rdf:RDF
-       id="RDF70">
+     id="metadata8916">
+    <rdf:RDF>
       <cc:Work
-         rdf:about=""
-         id="Work71">
-        <dc:format
-           id="format72">image/svg+xml</dc:format>
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
         <dc:type
-           id="type74"
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
       </cc:Work>
     </rdf:RDF>
   </metadata>
-  <path
-     style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#a60000;stroke-width:1.3338088;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
-     d="M 161.31580,432.69054 L 161.31579,432.69055 C 193.19907,377.64512 356.49996,393.11427 356.49996,393.42377"
-     id="path1014"
-     sodipodi:nodetypes="ccc" />
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="fill:#afc6e9;stroke:none;stroke-width:1.63807011;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8967"
+       width="14.16193"
+       height="24.16193"
+       x="258.41901"
+       y="128.91904" />
+    <rect
+       style="fill:#87de87;stroke:none;stroke-width:1.73805976;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8965"
+       width="14.56194"
+       height="24.061941"
+       x="242.96902"
+       y="128.96902" />
+    <rect
+       style="fill:#87de87;stroke:none;stroke-width:1.71404052;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8963"
+       width="15.585959"
+       height="24.08596"
+       x="214.45702"
+       y="128.95702" />
+    <rect
+       style="fill:#87de87;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8961"
+       width="17"
+       height="24"
+       x="185"
+       y="129" />
+    <rect
+       style="fill:#87de87;stroke:none;stroke-width:1.81719244;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8959"
+       width="18.982809"
+       height="24.482809"
+       x="154.00859"
+       y="129.00859" />
+    <rect
+       style="fill:#87de87;stroke:none;stroke-width:1.89140844;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8957"
+       width="18.908592"
+       height="24.408592"
+       x="125.04572"
+       y="129.0457" />
+    <rect
+       style="fill:#87de87;stroke:none;stroke-width:1.96262109;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8955"
+       width="12.837379"
+       height="23.337378"
+       x="100.08132"
+       y="129.08131" />
+    <rect
+       style="fill:#afc6e9;stroke:none;stroke-width:1.57691681;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8953"
+       width="16.723083"
+       height="23.723083"
+       x="70.888458"
+       y="128.88846" />
+    <rect
+       style="fill:#87de87;stroke:none;stroke-width:1.66620374;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8951"
+       width="13.633797"
+       height="24.133797"
+       x="55.433102"
+       y="128.93309" />
+    <rect
+       style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8949"
+       width="80"
+       height="56"
+       x="53"
+       y="67" />
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono Bold"
+       x="27"
+       y="58"
+       id="text8921"><tspan
+         sodipodi:role="line"
+         x="27"
+         y="58"
+         id="tspan8925">{</tspan><tspan
+         sodipodi:role="line"
+         x="27"
+         y="88"
+         id="tspan8929">  \time 2/4</tspan><tspan
+         sodipodi:role="line"
+         x="27"
+         y="118"
+         id="tspan8931">  \clef bass</tspan><tspan
+         sodipodi:role="line"
+         x="27"
+         y="148"
+         id="tspan8933">  c4 c g g a a g2</tspan><tspan
+         sodipodi:role="line"
+         x="27"
+         y="178"
+         id="tspan8935">}</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#c83737;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+       x="294"
+       y="44"
+       id="text8937"><tspan
+         sodipodi:role="line"
+         id="tspan8939"
+         x="294"
+         y="44">Commands start with \</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#217821;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+       x="293"
+       y="86"
+       id="text8941"><tspan
+         sodipodi:role="line"
+         id="tspan8943"
+         x="293"
+         y="86">Letters are notes</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#0044aa;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+       x="180"
+       y="230"
+       id="text8945"><tspan
+         sodipodi:role="line"
+         id="tspan8947"
+         x="180"
+         y="230">Numbers are durations</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#c83737;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 289,36 C 223,32.5 101.5,27.5 92,64"
+       id="path8969"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#217821;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 289,78 C 225.5,69.5 220.5,125 220.5,125"
+       id="path8971"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0044aa;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 176,222.5 C 98.5,225.5 57,208 77.5,156"
+       id="path8973"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0044aa;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 350,209 C 363.5,184 267.5,211.5 265.5,156"
+       id="path8975"
+       sodipodi:nodetypes="cc" />
+  </g>
 </svg>
diff --git a/Documentation/pictures/text-input-1-output.png b/Documentation/pictures/text-input-1-output.png
new file mode 100644 (file)
index 0000000..7a37525
Binary files /dev/null and b/Documentation/pictures/text-input-1-output.png differ
index dc63cd3fd422c34f986606b3351c10f4f99f12a9..132a9b4ab6763d4ef9251cf3ac2b3220743d508f 100644 (file)
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
 <svg
-   id="svg548"
-   sodipodi:version="0.32"
-   width="210mm"
-   height="297mm"
-   sodipodi:docname="annotate-example-2.svg"
-   inkscape:version="0.39"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:xml="http://www.w3.org/XML/1998/namespace"
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   sodipodi:docbase="/home/hanwen/usr/src/savannah/lily/newweb/site/graphics">
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="588"
+   height="268"
+   id="svg8302"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="text-input-2-annotate.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
   <defs
-     id="defs550" />
+     id="defs8304">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective8310" />
+  </defs>
   <sodipodi:namedview
      id="base"
-     inkscape:zoom="1.7341938"
-     inkscape:cx="297.63779"
-     inkscape:cy="420.94488"
-     inkscape:window-width="1262"
-     inkscape:window-height="1055"
-     inkscape:window-x="8"
-     inkscape:window-y="8" />
-  <text
-     xml:space="preserve"
-     style="fill:black;stroke:none;font-family:Luxi Mono;font-style:normal;font-weight:bold;font-size:28.000000;fill-opacity:1;stroke-opacity:1;stroke-width:1pt;stroke-linejoin:miter;stroke-linecap:butt;text-anchor:start;writing-mode:lr;font-stretch:normal;font-variant:normal;"
-     x="52.9841156"
-     y="382.407318"
-     id="text554"
-     sodipodi:linespacing="100%"><tspan
-       x="52.984116"
-       y="382.40732"
-       sodipodi:role="line"
-       id="tspan954">\relative c''  {</tspan><tspan
-       x="52.984116"
-       y="410.40732"
-       sodipodi:role="line"
-       id="tspan956">  \key c \minor</tspan><tspan
-       x="52.984116"
-       y="438.40732"
-       sodipodi:role="line"
-       id="tspan958">  g(</tspan><tspan
-       x="52.984116"
-       y="466.40732"
-       sodipodi:role="line"
-       id="tspan960">  &lt;ees c'&gt;)</tspan><tspan
-       x="52.984116"
-       y="494.40732"
-       sodipodi:role="line"
-       id="tspan962">  &lt;d f gis b&gt;-.</tspan><tspan
-       x="52.984116"
-       y="522.40732"
-       sodipodi:role="line"
-       id="tspan964">  &lt;ees g bes&gt;-.</tspan><tspan
-       x="52.984116"
-       y="550.40732"
-       sodipodi:role="line"
-       id="tspan966">}</tspan><tspan
-       x="52.984116"
-       y="578.40732"
-       sodipodi:role="line"
-       id="tspan968"></tspan></text>
-  <rect
-     style="font-size:12.000000;fill:#ee9797;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;"
-     id="rect626"
-     width="19.427519"
-     height="77.710083"
-     x="85.174614"
-     y="447.72412" />
-  <rect
-     style="font-size:12.000000;fill:#ee9797;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;"
-     id="rect628"
-     width="14.129138"
-     height="25.903381"
-     x="257.16812"
-     y="471.71484" />
-  <rect
-     style="font-size:12.000000;fill:#ee9797;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:0.97468004pt;"
-     id="rect629"
-     width="17.072718"
-     height="24.725952"
-     x="255.40198"
-     y="501.15015" />
-  <rect
-     style="font-size:12.000000;fill:#67ee7a;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;"
-     id="rect630"
-     width="36.500156"
-     height="20.016266"
-     x="121.76426"
-     y="448.16650" />
-  <rect
-     style="font-size:12.000000;fill:#67ee7a;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;"
-     id="rect631"
-     width="34.145306"
-     height="23.548523"
-     x="121.76426"
-     y="502.32779" />
-  <rect
-     style="font-size:12.000000;fill:#67ee7a;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0368200pt;"
-     id="rect632"
-     width="30.024336"
-     height="25.314667"
-     x="223.68295"
-     y="502.90585" />
-  <rect
-     style="font-size:12.000000;fill:#ad99f2;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;"
-     id="rect633"
-     width="24.856951"
-     height="25.903351"
-     x="104.10285"
-     y="416.37610" />
-  <rect
-     style="font-size:12.000000;fill:#ad99f2;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:0.99361296pt;"
-     id="rect634"
-     width="37.677589"
-     height="26.735905"
-     x="271.88599"
-     y="471.47107" />
-  <rect
-     style="font-size:12.000000;fill:#ad99f2;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0392300pt;"
-     id="rect635"
-     width="37.677547"
-     height="24.725952"
-     x="273.06339"
-     y="500.90649" />
-  <rect
-     style="font-size:12.000000;fill:#67ee7a;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0368200pt;"
-     id="rect636"
-     width="37.088890"
-     height="25.314667"
-     x="190.05493"
-     y="471.71478" />
-  <rect
-     style="font-size:12.000000;fill:#ad99f2;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:0.95553303pt;"
-     id="rect638"
-     width="17.072678"
-     height="24.725899"
-     x="224.20026"
-     y="444.63416" />
-  <path
-     style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#0000b0;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
-     d="M 149.83455,427.22393 C 169.81555,427.22393 266.39455,450.53593 361.30655,428.88893"
-     id="path639"
-     sodipodi:nodetypes="cc" />
-  <path
-     style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#0000b0;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
-     d="M 319.03655,481.48393 C 352.33955,481.48393 414.58955,470.51793 434.57155,442.21093"
-     id="path640"
-     sodipodi:nodetypes="cc" />
-  <path
-     style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#00b300;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
-     d="M 146.92575,533.08248 C 156.91675,549.73348 273.16575,611.54548 354.75775,574.91248"
-     id="path641"
-     sodipodi:nodetypes="cc" />
-  <path
-     style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#00b300;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
-     d="M 239.09757,536.47447 C 260.74457,564.78147 286.10157,584.67947 353.53957,566.36347"
-     id="path642"
-     sodipodi:nodetypes="cc" />
-  <path
-     style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#b30000;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
-     d="M 96.111906,528.81335 C 77.795921,578.76735 72.800924,620.39535 152.72690,635.38135"
-     id="path643" />
-  <text
-     style="font-size:26.000000;font-style:normal;font-weight:normal;fill:#00009e;fill-opacity:1.0000000;stroke:none;stroke-width:1.2500000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;"
-     x="375.45959"
-     y="435.54965"
-     id="text694"><tspan
-       x="375.45959"
-       y="435.54965"
-       sodipodi:role="line"
-       id="tspan648">
-_("Add articulations")</tspan></text>
-  <text
-     style="font-size:26.000000;font-style:normal;font-weight:normal;fill:#00ad00;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;"
-     x="360.02643"
-     y="575.85645"
-     id="text699"><tspan
-       x="360.02643"
-       y="575.85645"
-       sodipodi:role="line"
-       id="tspan707">
-_("Add -es for flat, -is for sharp")</tspan></text>
-  <text
-     style="font-size:26.000000;font-style:normal;font-weight:normal;fill:#a60000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;"
-     x="168.54550"
-     y="644.53925"
-     id="text702"><tspan
-       x="168.54550"
-       y="644.53925"
-       sodipodi:role="line"
-       id="tspan625">
-_("Enclose pitches in &lt; &gt; for chords")</tspan></text>
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="311.5"
+     inkscape:cy="100"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="715"
+     inkscape:window-height="708"
+     inkscape:window-x="0"
+     inkscape:window-y="0" />
   <metadata
-     id="metadata56">
-    <rdf:RDF
-       id="RDF57">
+     id="metadata8307">
+    <rdf:RDF>
       <cc:Work
-         rdf:about=""
-         id="Work58">
-        <dc:format
-           id="format59">image/svg+xml</dc:format>
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
         <dc:type
-           id="type61"
            rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
       </cc:Work>
     </rdf:RDF>
   </metadata>
-  <rect
-     style="font-size:12.000000;fill:#ee9797;fill-opacity:0.48905101;fill-rule:evenodd;stroke:none;stroke-width:1.0000000pt;"
-     id="rect970"
-     width="14.129138"
-     height="25.903381"
-     x="204.84946"
-     y="444.75378" />
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="fill:#afc6e9;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8370"
+       width="23.5"
+       height="22.5"
+       x="218"
+       y="168" />
+    <rect
+       style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8368"
+       width="14.5"
+       height="22"
+       x="201"
+       y="168" />
+    <rect
+       style="fill:#87de87;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8360"
+       width="26"
+       height="22.5"
+       x="173"
+       y="167.5" />
+    <rect
+       style="fill:#afc6e9;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8366"
+       width="21.5"
+       height="20.5"
+       x="218.5"
+       y="138" />
+    <rect
+       style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8364"
+       width="16"
+       height="20.5"
+       x="200.5"
+       y="138" />
+    <rect
+       style="fill:#87de87;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8362"
+       width="28.5"
+       height="25.5"
+       x="145"
+       y="135.5" />
+    <rect
+       style="fill:#87de87;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8358"
+       width="28"
+       height="22.5"
+       x="86"
+       y="168" />
+    <rect
+       style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8356"
+       width="18"
+       height="24.5"
+       x="53.5"
+       y="166" />
+    <rect
+       style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8354"
+       width="18.5"
+       height="23.5"
+       x="53"
+       y="136" />
+    <rect
+       style="fill:#afc6e9;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8352"
+       width="14"
+       height="27"
+       x="175.5"
+       y="105" />
+    <rect
+       style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8350"
+       width="17"
+       height="26"
+       x="156"
+       y="105.5" />
+    <rect
+       style="fill:#87de87;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8348"
+       width="30"
+       height="25"
+       x="86"
+       y="108" />
+    <rect
+       style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8346"
+       width="20"
+       height="25"
+       x="51.5"
+       y="106" />
+    <rect
+       style="fill:#afc6e9;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect8344"
+       width="18"
+       height="29"
+       x="73"
+       y="75" />
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono"
+       x="34"
+       y="50"
+       id="text8312"><tspan
+         sodipodi:role="line"
+         id="tspan8314"
+         x="34"
+         y="50" /></text>
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono Bold"
+       x="28"
+       y="36"
+       id="text8316"><tspan
+         sodipodi:role="line"
+         id="tspan8318"
+         x="28"
+         y="36">\relative c'' {</tspan><tspan
+         sodipodi:role="line"
+         x="28"
+         y="66"
+         id="tspan8320">  \key c \minor</tspan><tspan
+         sodipodi:role="line"
+         x="28"
+         y="96"
+         id="tspan8322">  g(</tspan><tspan
+         sodipodi:role="line"
+         x="28"
+         y="126"
+         id="tspan8324">  &lt;ees c'&gt;)</tspan><tspan
+         sodipodi:role="line"
+         x="28"
+         y="156"
+         id="tspan8326">  &lt;d f gis b&gt;-.</tspan><tspan
+         sodipodi:role="line"
+         x="28"
+         y="186"
+         id="tspan8328">  &lt;ees g bes&gt;-.</tspan><tspan
+         sodipodi:role="line"
+         x="28"
+         y="216"
+         id="tspan8330">}</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#0044aa;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+       x="299"
+       y="38"
+       id="text8332"><tspan
+         sodipodi:role="line"
+         id="tspan8334"
+         x="299"
+         y="38">Add articulations</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#217821;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+       x="250"
+       y="140"
+       id="text8336"><tspan
+         sodipodi:role="line"
+         id="tspan8338"
+         x="250"
+         y="140">Add -es for flat, -is for sharp</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#c83737;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+       x="114"
+       y="253"
+       id="text8340"><tspan
+         sodipodi:role="line"
+         id="tspan8342"
+         x="114"
+         y="253">Enclose pitches in &lt; &gt; for chords</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0044aa;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 342.49094,46.616703 C 291.87214,101.82991 162.63456,72.131421 101.11627,89.809091"
+       id="path8372"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0044aa;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 371.50314,45.637518 C 372.91735,75.336 240.84271,89.67052 226.3158,133.37763"
+       id="path8374"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#217821;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 307.54982,148.21825 C 307.69701,196.64466 189.3833,236.168 187.3833,195.168"
+       id="path8376"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#217821;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 409.49957,149.23907 C 380.04015,239.51472 84.53048,227.50252 99.702056,197.28932"
+       id="path8378"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#c83737;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 107.48023,246.07969 C 58.689862,262.34315 41.012194,228.40202 62.225397,197.99643"
+       id="path8380"
+       sodipodi:nodetypes="cc" />
+  </g>
 </svg>
diff --git a/Documentation/pictures/text-input-2-output.png b/Documentation/pictures/text-input-2-output.png
new file mode 100644 (file)
index 0000000..bfc2c75
Binary files /dev/null and b/Documentation/pictures/text-input-2-output.png differ
index d9f020f51bcdec071ad09eab1690087ac3181d79..0a2bbc10e6eb869e8d73887c22cf57da64cc87b1 100644 (file)
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
 <svg
-   xmlns:xml="http://www.w3.org/XML/1998/namespace"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:cc="http://creativecommons.org/ns#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   sodipodi:docbase="/home/hanwen/vc/savannah/lily/newweb/site/graphics"
-   inkscape:version="0.41+cvs"
-   sodipodi:docname="annotate-example-parts.svg"
-   height="297mm"
-   width="210mm"
+   width="565"
+   height="439"
+   id="svg7717"
    sodipodi:version="0.32"
-   id="svg548"
-   xml:space="preserve">
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="text-input-parts-both-annotate.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
   <defs
-   id="defs550" />
-
+     id="defs7719">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective7725" />
+  </defs>
   <sodipodi:namedview
-   inkscape:window-y="40"
-   inkscape:window-x="24"
-   inkscape:window-height="1183"
-   inkscape:window-width="1399"
-   inkscape:cy="420.94487"
-   inkscape:cx="297.63779"
-   inkscape:zoom="1.7341938"
-   id="base" />
-
-  <text
-   sodipodi:linespacing="100%"
-   id="text555"
-   y="283.503632"
-   x="63.5809479"
-   style="fill:black;stroke:none;font-family:Luxi Mono;font-style:normal;font-weight:bold;font-size:28.000000;fill-opacity:1;stroke-opacity:1;stroke-width:1pt;stroke-linejoin:miter;stroke-linecap:butt;text-anchor:start;writing-mode:lr;font-stretch:normal;font-variant:normal;"><tspan
-     id="tspan1190"
-     sodipodi:role="line"
-     y="283.50363"
-     x="63.580948">_("hornNotes") =</tspan><tspan
-     id="tspan1192"
-     sodipodi:role="line"
-     y="311.50363"
-     x="63.580948">\relative c {</tspan><tspan
-     id="tspan1194"
-     sodipodi:role="line"
-     y="339.50363"
-     x="63.580948">  \time 2/4</tspan><tspan
-     id="tspan1196"
-     sodipodi:role="line"
-     y="367.50363"
-     x="63.580948">  R2*3</tspan><tspan
-     id="tspan1198"
-     sodipodi:role="line"
-     y="395.50363"
-     x="63.580948">  r4 f8 a cis4 f e d</tspan><tspan
-     id="tspan1200"
-     sodipodi:role="line"
-     y="423.50363"
-     x="63.580948">}</tspan><tspan
-     id="tspan1202"
-     sodipodi:role="line"
-     y="451.50363"
-     x="63.580948" /><tspan
-     id="tspan1204"
-     sodipodi:role="line"
-     y="479.50363"
-     x="63.580948">_("bassoonNotes") =</tspan><tspan
-     id="tspan1206"
-     sodipodi:role="line"
-     y="507.50363"
-     x="63.580948">\relative c {</tspan><tspan
-     id="tspan1208"
-     sodipodi:role="line"
-     y="535.50363"
-     x="63.580948">  \clef bass</tspan><tspan
-     id="tspan1210"
-     sodipodi:role="line"
-     y="563.50363"
-     x="63.580948">  r4 d,8 f  gis4 c   b bes</tspan><tspan
-     id="tspan1212"
-     sodipodi:role="line"
-     y="591.50363"
-     x="63.580948">  a8 e f4   g d  gis f</tspan><tspan
-     id="tspan1214"
-     sodipodi:role="line"
-     y="619.50363"
-     x="63.580948">}</tspan><tspan
-     id="tspan1216"
-     sodipodi:role="line"
-     y="647.50363"
-     x="63.580948" /><tspan
-     id="tspan1218"
-     sodipodi:role="line"
-     y="675.50363"
-     x="63.580948">    </tspan><tspan
-     id="tspan1220"
-     sodipodi:role="line"
-     y="703.50363"
-     x="63.580948" /><tspan
-     id="tspan1222"
-     sodipodi:role="line"
-     y="731.50363"
-     x="63.580948" /><tspan
-     id="tspan1224"
-     sodipodi:role="line"
-     y="759.50363"
-     x="63.580948" /><tspan
-     id="tspan1226"
-     sodipodi:role="line"
-     y="787.50363"
-     x="63.580948">  </tspan></text>
-
-
-  <rect
-   y="343.849060"
-   x="93.6635971"
-   height="25.8095703"
-   width="72.4331894"
-   id="rect662"
-   style="font-size:12;fill:#01b500;fill-opacity:0.562044;fill-rule:evenodd;stroke:none;stroke-width:1pt;stroke-opacity:1;" />
-
-  <rect
-   y="254.764572"
-   x="55.781881"
-   height="31.637497"
-   width="203.978513"
-   id="rect663"
-   style="font-size:12;fill:#af3738;fill-opacity:0.565217;fill-rule:evenodd;stroke-width:1pt;" />
-
-  <rect
-   y="456.245392"
-   x="60.3609848"
-   height="25.8095398"
-   width="246.439331"
-   id="rect664"
-   style="font-size:12;fill:#af3738;fill-opacity:0.565217;fill-rule:evenodd;stroke-width:1pt;" />
-
-  <path
-   transform="translate(0.000000,-3.051758e-5)"
-   id="path665"
-   d="M 166.606 360.625 C 239.606 360.625 356.171 337.076 445.655 338.254 "
-   style="fill:none;fill-rule:evenodd;stroke:#00ad00;stroke-opacity:1;stroke-width:1.875;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;stroke-dasharray:none;" />
-
-  <path
-   transform="translate(0.000000,-3.051758e-5)"
-   sodipodi:nodetypes="cc"
-   id="path666"
-   d="M 306.131 476.601 C 363.824 449.52 492.753 491.908 495.107 454.23 "
-   style="fill:none;fill-rule:evenodd;stroke:#b10000;stroke-opacity:1;stroke-width:1.875;stroke-linejoin:miter;stroke-linecap:butt;fill-opacity:1;stroke-dasharray:none;" />
-
-  <text
-   sodipodi:linespacing="100%"
-   id="text667"
-   y="346.47586"
-   x="455.14835"
-   style="line-height:100%;font-variant:normal;font-stretch:normal;font-family:Bitstream Charter;stroke-opacity:1.0000000;stroke-linejoin:miter;stroke-linecap:butt;stroke-width:1.0000000pt;stroke:none;fill-opacity:1.0000000;fill:#00ad00;text-anchor:start;writing-mode:lr;font-weight:normal;font-style:normal;font-size:26.000000"><tspan
-     y="346.47586"
-     x="455.14835"
-     id="tspan1315"
-     sodipodi:role="line">  _("Enter multi-rest")   </tspan></text>
-
-
-  <text
-   sodipodi:linespacing="100%"
-   id="text674"
-   y="444.58768"
-   x="429.52213"
-   style="line-height:100%;font-variant:normal;font-stretch:normal;font-family:Bitstream Charter;stroke-opacity:1.0000000;stroke-linejoin:miter;stroke-linecap:butt;stroke-width:1.0000000pt;stroke:none;fill-opacity:1.0000000;fill:#b10000;text-anchor:start;writing-mode:lr;font-weight:normal;font-style:normal;font-size:26.000000"><tspan
-     y="444.58768"
-     x="429.52213"
-     id="tspan1317"
-     sodipodi:role="line">  _("Store notes in variable")   </tspan></text>
-
-
-<metadata
-   id="metadata1054">
-  <rdf:RDF
-   id="RDF1055">
-    <cc:Work
-   id="Work1056"
-   rdf:about="">
-      <dc:format
-   id="format1057">image/svg+xml</dc:format>
-      <dc:type
-   rdf:resource="http://purl.org/dc/dcmitype/StillImage"
-   id="type1059" />
-    </cc:Work>
-  </rdf:RDF>
-</metadata>
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="285.55612"
+     inkscape:cy="240"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="689"
+     inkscape:window-height="708"
+     inkscape:window-x="0"
+     inkscape:window-y="0" />
+  <metadata
+     id="metadata7722">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="fill:#87de87;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect7765"
+       width="74"
+       height="27"
+       x="45"
+       y="105" />
+    <rect
+       style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect7767"
+       width="223"
+       height="30"
+       x="12"
+       y="222" />
+    <rect
+       style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect7763"
+       width="174"
+       height="34"
+       x="16"
+       y="8" />
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:Sans Bold"
+       x="23"
+       y="35"
+       id="text7727"><tspan
+         sodipodi:role="line"
+         id="tspan7729"
+         x="23"
+         y="35">hornNotes =</tspan><tspan
+         sodipodi:role="line"
+         x="23"
+         y="65"
+         id="tspan7731">\relative c {</tspan><tspan
+         sodipodi:role="line"
+         x="23"
+         y="95"
+         id="tspan7733">  \time 2/4</tspan><tspan
+         sodipodi:role="line"
+         x="23"
+         y="125"
+         id="tspan7735">  R2*3</tspan><tspan
+         sodipodi:role="line"
+         x="23"
+         y="155"
+         id="tspan7737">  r4 f8 a cis4 f e d</tspan><tspan
+         sodipodi:role="line"
+         x="23"
+         y="185"
+         id="tspan7739">}</tspan><tspan
+         sodipodi:role="line"
+         x="23"
+         y="215"
+         id="tspan7741" /><tspan
+         sodipodi:role="line"
+         x="23"
+         y="245"
+         id="tspan7743">bassoonNotes =</tspan><tspan
+         sodipodi:role="line"
+         x="23"
+         y="275"
+         id="tspan7745">\relative c {</tspan><tspan
+         sodipodi:role="line"
+         x="23"
+         y="305"
+         id="tspan7747">  \clef bass</tspan><tspan
+         sodipodi:role="line"
+         x="23"
+         y="335"
+         id="tspan7749">  r4 d,8 f gis4 g b bes</tspan><tspan
+         sodipodi:role="line"
+         x="23"
+         y="365"
+         id="tspan7751">  a8 e f4 g d gis f</tspan><tspan
+         sodipodi:role="line"
+         x="23"
+         y="395"
+         id="tspan7753">}</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#217821;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+       x="327"
+       y="73"
+       id="text7755"><tspan
+         sodipodi:role="line"
+         id="tspan7757"
+         x="327"
+         y="73">Enter multi-rest</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#c83737;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+       x="292"
+       y="212"
+       id="text7759"><tspan
+         sodipodi:role="line"
+         id="tspan7761"
+         x="292"
+         y="212">Store notes in variable</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#217821;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 321,66 C 228,66 251,121 127,120"
+       id="path7769"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#c83737;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 407,220 C 404,260 280,205 241,237"
+       id="path7771"
+       sodipodi:nodetypes="cc" />
+  </g>
 </svg>
index 6e7dae5dcd326de4f4a252622bd23623621d6242..9f5fc98f5a3e8c825464ffdec8ed2a30725ee610 100644 (file)
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
 <svg
-   xmlns:xml="http://www.w3.org/XML/1998/namespace"
    xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:cc="http://creativecommons.org/ns#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   sodipodi:docbase="/home/hanwen/vc/savannah/lily/newweb/site/graphics"
-   inkscape:version="0.41+cvs"
-   sodipodi:docname="annotate-example-single-part.svg"
-   height="297mm"
-   width="210mm"
+   width="527"
+   height="271"
+   id="svg5884"
    sodipodi:version="0.32"
-   id="svg682"
-   xml:space="preserve">
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="text-input-parts-single-annotate.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
   <defs
-   id="defs684" />
-
-
+     id="defs5886">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective5892" />
+  </defs>
   <sodipodi:namedview
-   inkscape:current-layer="svg682"
-   inkscape:window-y="0"
-   inkscape:window-x="72"
-   inkscape:window-height="1123"
-   inkscape:window-width="1368"
-   inkscape:cy="587.01628"
-   inkscape:cx="509.84015"
-   inkscape:zoom="1.7341938"
-   id="base" />
-
-
-  <text
-   sodipodi:linespacing="100%"
-   id="text690"
-   y="361.213776"
-   x="38.8550110"
-   style="fill:black;stroke:none;font-family:Luxi Mono;font-style:normal;font-weight:bold;font-size:28.000000;fill-opacity:1;stroke-opacity:1;stroke-width:1pt;stroke-linejoin:miter;stroke-linecap:butt;text-anchor:start;writing-mode:lr;font-stretch:normal;font-variant:normal;"><tspan
-     id="tspan1160"
-     sodipodi:role="line"
-     y="361.21378"
-     x="38.855011">{</tspan><tspan
-     id="tspan1162"
-     sodipodi:role="line"
-     y="389.21378"
-     x="38.855011">  \set Score.skipBars = ##t</tspan><tspan
-     id="tspan1164"
-     sodipodi:role="line"
-     y="417.21378"
-     x="38.855011">  \transpose f c'  \_("hornNotes")</tspan><tspan
-     id="tspan1166"
-     sodipodi:role="line"
-     y="445.21378"
-     x="38.855011">}</tspan><tspan
-     id="tspan1168"
-     sodipodi:role="line"
-     y="473.21378"
-     x="38.855011">  </tspan></text>
-
-
-
-  <rect
-   y="364.06888"
-   x="69.357788"
-   height="30.066223"
-   width="429.67987"
-   id="rect705"
-   style="font-size:12.000000;fill:#ee9797;fill-opacity:0.73913002;fill-rule:evenodd;stroke-width:1.0000000pt;" />
-
-
-  <rect
-   y="395.51447"
-   x="69.155769"
-   height="26.248253"
-   width="249.95901"
-   id="rect706"
-   style="font-size:12.000000;fill:#23e023;fill-opacity:0.49634996;fill-rule:evenodd;stroke-width:1.0000000pt;" />
-
-
-  <rect
-   y="396.10330"
-   x="374.42114"
-   height="22.573122"
-   width="169.54926"
-   id="rect707"
-   style="font-size:12.000000;fill:#6165d3;fill-opacity:0.60000002;fill-rule:evenodd;stroke-width:1.0000000pt;" />
-
-
-  <path
-   id="path708"
-   d="M 201.22890,365.83552 C 207.11690,306.96352 258.92290,299.89952 287.18090,295.18952"
-   style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#b10000;stroke-width:1.8750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;" />
-
-
-  <path
-   id="path709"
-   d="M 108.21290,423.52852 C 65.825930,463.56152 6.9542299,510.65852 58.760930,543.62652"
-   style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#00b300;stroke-width:1.8750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;" />
-
-
-  <path
-   id="path710"
-   d="M 397.97000,421.17452 C 346.16300,472.98052 367.35700,496.52952 400.32500,517.72252"
-   style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#0000b0;stroke-width:1.8750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;" />
-
-
-  <text
-   sodipodi:linespacing="100.00000%"
-   id="text711"
-   y="295.36185"
-   x="298.96884"
-   style="font-size:26.000000;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;line-height:100.00000%;writing-mode:lr-tb;text-anchor:start;fill:#b00000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter"><tspan
-     y="295.36185"
-     x="298.96884"
-     id="tspan1306"
-     sodipodi:role="line"> _("Condense multi-rests")   </tspan></text>
-
-
-
-  <text
-   sodipodi:linespacing="100%"
-   id="text718"
-   y="561.34088"
-   x="65.262001"
-   style="line-height:100%;font-variant:normal;font-stretch:normal;font-family:Bitstream Charter;stroke-opacity:1.0000000;stroke-linejoin:miter;stroke-linecap:butt;stroke-width:1.0000000pt;stroke:none;fill-opacity:1.0000000;fill:#00b200;text-anchor:start;writing-mode:lr;font-weight:normal;font-style:normal;font-size:26.000000"><tspan
-     y="561.34088"
-     x="65.262001"
-     id="tspan1304"
-     sodipodi:role="line"> _("Transpose for F instrument")   </tspan></text>
-
-
-
-  <text
-   id="text723"
-   y="528.31940"
-   x="379.02060"
-   style="font-size:26.000000;font-style:normal;font-weight:normal;fill:#0000ab;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;">
-    <tspan
-   id="tspan724">_("Reuse variable")</tspan>
-  </text>
-
-
-
-<metadata
-   id="metadata1154">
-  <rdf:RDF
-   id="RDF1155">
-    <cc:Work
-   id="Work1156"
-   rdf:about="">
-      <dc:format
-   id="format1157">image/svg+xml</dc:format>
-
-      <dc:type
-   rdf:resource="http://purl.org/dc/dcmitype/StillImage"
-   id="type1159" />
-
-    </cc:Work>
-
-  </rdf:RDF>
-
-</metadata>
-
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="255.35714"
+     inkscape:cy="120"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="654"
+     inkscape:window-height="708"
+     inkscape:window-x="0"
+     inkscape:window-y="0" />
+  <metadata
+     id="metadata5889">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="fill:#afc6e9;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect5928"
+       width="151"
+       height="29"
+       x="283"
+       y="119" />
+    <rect
+       style="fill:#87de87;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect5926"
+       width="228"
+       height="27"
+       x="48"
+       y="120" />
+    <rect
+       style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect5924"
+       width="379"
+       height="27"
+       x="50"
+       y="89" />
+    <text
+       xml:space="preserve"
+       style="font-size:22px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:Sans Bold"
+       x="25"
+       y="69"
+       id="text5894"><tspan
+         sodipodi:role="line"
+         x="25"
+         y="69"
+         id="tspan5898" /></text>
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:Sans Bold"
+       x="28"
+       y="79"
+       id="text5902"><tspan
+         sodipodi:role="line"
+         id="tspan5904"
+         x="28"
+         y="79">{</tspan><tspan
+         sodipodi:role="line"
+         x="28"
+         y="109"
+         id="tspan5906">  \set Score.skipBars = ##t</tspan><tspan
+         sodipodi:role="line"
+         x="28"
+         y="139"
+         id="tspan5908">  \transpose f c' \hornNotes</tspan><tspan
+         sodipodi:role="line"
+         x="28"
+         y="169"
+         id="tspan5910">}</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#c83737;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:Sans"
+       x="248"
+       y="43"
+       id="text5912"><tspan
+         sodipodi:role="line"
+         id="tspan5914"
+         x="248"
+         y="43">Condense multi-rests</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#0044aa;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+       x="326"
+       y="208"
+       id="text5916"><tspan
+         sodipodi:role="line"
+         id="tspan5918"
+         x="326"
+         y="208">Reuse variable</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#217821;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+       x="35"
+       y="244"
+       id="text5920"><tspan
+         sodipodi:role="line"
+         id="tspan5922"
+         x="35"
+         y="244">Transpose for F instrument</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#c83737;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 242,35 C 217,47 173,36 166,86"
+       id="path7681"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#217821;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 27,236 C -25,207 56,188 90,152"
+       id="path7683"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0044aa;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 319,200 C 304,196 295,183 333,152"
+       id="path7685"
+       sodipodi:nodetypes="cc" />
+  </g>
 </svg>
diff --git a/Documentation/pictures/text-input-parts-single-output.png b/Documentation/pictures/text-input-parts-single-output.png
new file mode 100644 (file)
index 0000000..c1bd22f
Binary files /dev/null and b/Documentation/pictures/text-input-parts-single-output.png differ
index 01fdd70d05a5c1daa082e876de0d06710edf4eaa..39126eb5186881e6af0970f93be2453f263d098b 100644 (file)
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
 <svg
    xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:cc="http://web.resource.org/cc/"
+   xmlns:cc="http://creativecommons.org/ns#"
    xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
    xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
-   xmlns:sodipodi="http://inkscape.sourceforge.net/DTD/sodipodi-0.dtd"
+   xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
    xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
-   id="svg548"
+   width="594"
+   height="470"
+   id="svg5281"
    sodipodi:version="0.32"
-   width="210mm"
-   height="297mm"
-   sodipodi:docname="annotate-example-lead.svg"
-   inkscape:version="0.42"
-   sodipodi:docbase="/home/hanwen/vc/savannah/lily/newweb/site/graphics">
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="text-input-pop-annotate.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
   <defs
-     id="defs550" />
+     id="defs5283">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective5289" />
+  </defs>
   <sodipodi:namedview
      id="base"
-     inkscape:zoom="0.86709690"
-     inkscape:cx="310.90043"
-     inkscape:cy="218.54536"
-     inkscape:window-width="1397"
-     inkscape:window-height="1211"
-     inkscape:window-x="8"
-     inkscape:window-y="8"
-     inkscape:current-layer="svg548" />
-  <text
-     xml:space="preserve"
-     style="fill:black;stroke:none;font-family:Luxi Mono;font-style:normal;font-weight:bold;font-size:22.000000;fill-opacity:1;stroke-opacity:1;stroke-width:1pt;stroke-linejoin:miter;stroke-linecap:butt;text-anchor:start;writing-mode:lr;font-stretch:normal;font-variant:normal;text-align:start;line-height:125%"
-     x="41.2098694"
-     y="376.520386"
-     id="text551"
-     sodipodi:linespacing="125%"><tspan
-       sodipodi:role="line"
-       id="tspan1338"
-       x="41.209869"
-       y="376.52039">&lt;&lt;</tspan><tspan
-       sodipodi:role="line"
-       id="tspan1340"
-       x="41.209869"
-       y="404.02039">  \chords {</tspan><tspan
-       sodipodi:role="line"
-       id="tspan1342"
-       x="41.209869"
-       y="431.52039">    c1:m7 f2:7 c2</tspan><tspan
-       sodipodi:role="line"
-       id="tspan1344"
-       x="41.209869"
-       y="459.02039">  }</tspan><tspan
-       sodipodi:role="line"
-       id="tspan1346"
-       x="41.209869"
-       y="486.52039">  \relative c'' {</tspan><tspan
-       sodipodi:role="line"
-       id="tspan1348"
-       x="41.209869"
-       y="514.02039">    g2 es8( c4.)</tspan><tspan
-       sodipodi:role="line"
-       id="tspan1350"
-       x="41.209869"
-       y="541.52039">    f8 f es d c2</tspan><tspan
-       sodipodi:role="line"
-       id="tspan1352"
-       x="41.209869"
-       y="569.02039">  }</tspan><tspan
-       sodipodi:role="line"
-       id="tspan1354"
-       x="41.209869"
-       y="596.52039">  \addlyrics {</tspan><tspan
-       sodipodi:role="line"
-       id="tspan1356"
-       x="41.209869"
-       y="624.02039">    Li ly,</tspan><tspan
-       sodipodi:role="line"
-       id="tspan1358"
-       x="41.209869"
-       y="651.52039">    got me on my knees</tspan><tspan
-       sodipodi:role="line"
-       id="tspan1360"
-       x="41.209869"
-       y="679.02039">  }</tspan><tspan
-       sodipodi:role="line"
-       id="tspan1362"
-       x="41.209869"
-       y="706.52039">&gt;&gt;</tspan><tspan
-       sodipodi:role="line"
-       id="tspan1364"
-       x="41.209869"
-       y="734.02039"></tspan><tspan
-       sodipodi:role="line"
-       id="tspan1366"
-       x="41.209869"
-       y="761.52039">    </tspan><tspan
-       sodipodi:role="line"
-       id="tspan1368"
-       x="41.209869"
-       y="789.02039"></tspan><tspan
-       sodipodi:role="line"
-       id="tspan1370"
-       x="41.209869"
-       y="816.52039"></tspan><tspan
-       sodipodi:role="line"
-       id="tspan1372"
-       x="41.209869"
-       y="844.02039"></tspan><tspan
-       sodipodi:role="line"
-       id="tspan1374"
-       x="41.209869"
-       y="871.52039">  </tspan></text>
-  <rect
-     style="font-size:12.000000px;fill:#0900ad;fill-opacity:0.54744500;fill-rule:evenodd;stroke:none;stroke-width:0.98323898pt"
-     id="rect663"
-     width="303.07663"
-     height="59.471516"
-     x="91.461838"
-     y="604.74438" />
-  <rect
-     style="font-size:12.000000px;fill:#b00000;fill-opacity:0.40875897;fill-rule:evenodd;stroke:none;stroke-width:0.97302504pt"
-     id="rect664"
-     width="236.25644"
-     height="29.735817"
-     x="90.929131"
-     y="409.34128" />
-  <rect
-     style="font-size:12.000000px;fill:#009400;fill-opacity:0.30656901;fill-rule:evenodd;stroke:none;stroke-width:0.94686499pt"
-     id="rect665"
-     width="207.34248"
-     height="54.896721"
-     x="90.530762"
-     y="496.25824" />
-  <path
-     style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#0000b0;stroke-width:2.5668228;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
-     d="M 394.14835,631.74801 C 430.98379,629.46083 492.96002,664.17167 452.49749,687.41238"
-     id="path666"
-     sodipodi:nodetypes="cc" />
-  <path
-     style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#00b100;stroke-width:2.5668228;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
-     d="M 293.22541,527.13655 C 363.64796,521.41927 371.03004,562.59274 443.72411,548.86825"
-     id="path667"
-     sodipodi:nodetypes="cc" />
-  <path
-     style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#aa0000;stroke-width:2.5668228;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
-     d="M 327.18569,424.75304 C 355.58173,427.04023 443.56575,396.71288 475.47924,436.70789"
-     id="path668"
-     sodipodi:nodetypes="cc" />
-  <text
-     style="font-size:26.000000px;font-style:normal;font-weight:normal;writing-mode:lr-tb;text-anchor:start;fill:#b00000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter"
-     x="387.3223"
-     y="463.74142"
-     id="text669">
-    <tspan
-       x="387.32230"
-       y="463.74142"
-       sodipodi:role="line"
-       id="tspan672">_("Enter chord names")</tspan>
-  </text>
-  <text
-     style="font-size:26.000000px;font-style:normal;font-weight:normal;writing-mode:lr-tb;text-anchor:start;fill:#00b700;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter"
-     x="457.95572"
-     y="559.27612"
-     id="text674">
-    <tspan
-       x="457.95572"
-       y="559.27612"
-       sodipodi:role="line"
-       id="tspan679">_("Enter melody")</tspan>
-  </text>
-  <text
-     style="font-size:26.000000px;font-style:normal;font-weight:normal;writing-mode:lr-tb;text-anchor:start;fill:#0000ad;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter"
-     x="382.41147"
-     y="720.53723"
-     id="text681">
-    <tspan
-       id="tspan682">_("Enter lyrics")</tspan>
-  </text>
-  <rect
-     style="font-size:12.000000px;fill:#b25ed5;fill-opacity:0.64347798;fill-rule:evenodd;stroke-width:1.0000000pt"
-     id="rect686"
-     width="172.64890"
-     height="27.448336"
-     x="68.646278"
-     y="574.81348" />
-  <path
-     style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#531d8a;stroke-width:2.5668228;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000"
-     d="M 69.816929,598.17726 C -44.900574,618.74495 -6.3023345,743.82988 123.44372,778.09269"
-     id="path687"
-     sodipodi:nodetypes="cc" />
-  <text
-     style="font-size:26.000000;font-style:normal;font-weight:normal;fill:#531f8a;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;"
-     x="144.12660"
-     y="794.27051"
-     id="text688">
-    <tspan
-       id="tspan689">
-_("Combine melody and lyrics")</tspan>
-  </text>
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="295.57647"
+     inkscape:cy="236.58879"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     showguides="true"
+     inkscape:guide-bbox="true"
+     inkscape:window-width="719"
+     inkscape:window-height="708"
+     inkscape:window-x="0"
+     inkscape:window-y="0" />
   <metadata
-     id="metadata77">
+     id="metadata5286">
     <rdf:RDF>
       <cc:Work
          rdf:about="">
@@ -208,4 +59,168 @@ _("Combine melody and lyrics")</tspan>
       </cc:Work>
     </rdf:RDF>
   </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="fill:#afc6e9;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect5345"
+       width="324"
+       height="60"
+       x="66"
+       y="290" />
+    <rect
+       style="fill:#b380ff;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect5343"
+       width="206"
+       height="28"
+       x="52"
+       y="258" />
+    <rect
+       style="fill:#87de87;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect5341"
+       width="232"
+       height="62"
+       x="90"
+       y="168" />
+    <rect
+       style="fill:#ff8080;stroke:none;stroke-width:1.79999995;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       id="rect5339"
+       width="222"
+       height="32"
+       x="78"
+       y="76" />
+    <text
+       xml:space="preserve"
+       style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:DejaVu Sans Mono Bold"
+       x="38"
+       y="40"
+       id="text5291"><tspan
+         sodipodi:role="line"
+         x="38"
+         y="40"
+         id="tspan5295"
+         style="font-size:24px">&lt;&lt;</tspan><tspan
+         sodipodi:role="line"
+         x="38"
+         y="70"
+         id="tspan5299"
+         style="font-size:24px">  \chords {</tspan><tspan
+         sodipodi:role="line"
+         x="38"
+         y="100"
+         id="tspan5301"
+         style="font-size:24px">    c1:m7 f2:7 c2</tspan><tspan
+         sodipodi:role="line"
+         x="38"
+         y="130"
+         id="tspan5303"
+         style="font-size:24px">  }</tspan><tspan
+         sodipodi:role="line"
+         x="38"
+         y="160"
+         id="tspan5305"
+         style="font-size:24px">  \relative c'' {</tspan><tspan
+         sodipodi:role="line"
+         x="38"
+         y="190"
+         id="tspan5307"
+         style="font-size:24px">    g2 es8( c4) es8</tspan><tspan
+         sodipodi:role="line"
+         x="38"
+         y="220"
+         id="tspan5309"
+         style="font-size:24px">    f8 es d c~ c2</tspan><tspan
+         sodipodi:role="line"
+         x="38"
+         y="250"
+         id="tspan5311"
+         style="font-size:24px">  }</tspan><tspan
+         sodipodi:role="line"
+         x="38"
+         y="280"
+         id="tspan5313"
+         style="font-size:24px">  \addlyrics {</tspan><tspan
+         sodipodi:role="line"
+         x="38"
+         y="310"
+         id="tspan5315"
+         style="font-size:24px">    You are</tspan><tspan
+         sodipodi:role="line"
+         x="38"
+         y="340"
+         id="tspan5317"
+         style="font-size:24px">    the sky and my rain,</tspan><tspan
+         sodipodi:role="line"
+         x="38"
+         y="370"
+         id="tspan5319"
+         style="font-size:24px">  }</tspan><tspan
+         sodipodi:role="line"
+         x="38"
+         y="400"
+         id="tspan5321"
+         style="font-size:24px">&gt;&gt;</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#c83737;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+       x="333"
+       y="139"
+       id="text5323"><tspan
+         sodipodi:role="line"
+         id="tspan5325"
+         x="333"
+         y="139">Enter chord names</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#217821;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+       x="415"
+       y="218"
+       id="text5327"><tspan
+         sodipodi:role="line"
+         id="tspan5329"
+         x="415"
+         y="218">Enter melody</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#0044aa;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+       x="403"
+       y="403"
+       id="text5331"><tspan
+         sodipodi:role="line"
+         id="tspan5333"
+         x="403"
+         y="403">Enter lyrics</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:22px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#5500d4;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+       x="108"
+       y="446"
+       id="text5335"><tspan
+         sodipodi:role="line"
+         id="tspan5337"
+         x="108"
+         y="446">Combine melody and lyrics</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#c83737;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 434,113 C 399,65 376,99 308,93"
+       id="path5856"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#217821;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 409,217 C 341,247 377,194 327,194"
+       id="path5858"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#0044aa;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 469,378 C 525,347 440,310 398,318"
+       id="path5860"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#5500d4;stroke-width:1.99090564;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 97.90455,438.90455 C 10.90455,445.90455 -10.904547,285.09545 46.095453,272.09545"
+       id="path5862"
+       sodipodi:nodetypes="cc" />
+  </g>
 </svg>
diff --git a/Documentation/pictures/text-input-pop-output.png b/Documentation/pictures/text-input-pop-output.png
new file mode 100644 (file)
index 0000000..0754084
Binary files /dev/null and b/Documentation/pictures/text-input-pop-output.png differ
index c45a7c7621f60dd3b927a5043558c83233f95f84..d318e94de33ee3c1c1965b2c165873026aa03441 100644 (file)
 <?xml version="1.0" encoding="UTF-8" standalone="no"?>
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
-"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
-<!-- Created with Sodipodi ("http://www.sodipodi.com/") -->
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
 <svg
-   xml:space="preserve"
-   id="svg728"
-   sodipodi:version="0.32"
-   width="210mm"
-   height="297mm"
-   sodipodi:docname="example-score.svg"
-   inkscape:version="0.39"
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
    xmlns="http://www.w3.org/2000/svg"
-   xmlns:cc="http://web.resource.org/cc/"
-   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
    xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
-   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
-   xmlns:xml="http://www.w3.org/XML/1998/namespace"
-   xmlns:dc="http://purl.org/dc/elements/1.1/"
-   xmlns:xlink="http://www.w3.org/1999/xlink"
-   sodipodi:docbase="/home/hanwen/usr/src/savannah/lily/newweb/site/switch">
+   xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+   width="514"
+   height="264"
+   id="svg4445"
+   sodipodi:version="0.32"
+   inkscape:version="0.46"
+   version="1.0"
+   sodipodi:docname="text-input-score-annotate.svg"
+   inkscape:output_extension="org.inkscape.output.svg.inkscape">
   <defs
-   id="defs730" />
-
-
+     id="defs4447">
+    <inkscape:perspective
+       sodipodi:type="inkscape:persp3d"
+       inkscape:vp_x="0 : 526.18109 : 1"
+       inkscape:vp_y="0 : 1000 : 0"
+       inkscape:vp_z="744.09448 : 526.18109 : 1"
+       inkscape:persp3d-origin="372.04724 : 350.78739 : 1"
+       id="perspective4453" />
+  </defs>
   <sodipodi:namedview
-   id="base"
-   inkscape:zoom="0.86709691"
-   inkscape:cx="72.749435"
-   inkscape:cy="693.11745"
-   inkscape:window-width="640"
-   inkscape:window-height="530"
-   inkscape:window-x="827"
-   inkscape:window-y="45" />
-
-
-  <text
-   style="font-size:26.000000;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Luxi Mono;text-anchor:start;writing-mode:lr;"
-   x="21.182615"
-   y="125.72841"
-   id="text731"
-   sodipodi:linespacing="100%"><tspan
-     x="21.182615"
-     y="125.72841"
-     sodipodi:role="line"
-     id="tspan1178">&lt;&lt;</tspan><tspan
-     x="21.182615"
-     y="151.72841"
-     sodipodi:role="line"
-     id="tspan1180">  \new Staff \_("hornNotes")</tspan><tspan
-     x="21.182615"
-     y="177.72841"
-     sodipodi:role="line"
-     id="tspan1182">  \new Staff \_("bassoonNotes")</tspan><tspan
-     x="21.182615"
-     y="203.72841"
-     sodipodi:role="line"
-     id="tspan1184">&gt;&gt;</tspan><tspan
-     x="21.182615"
-     y="229.72841"
-     sodipodi:role="line"
-     id="tspan1186"></tspan><tspan
-     x="21.182615"
-     y="255.72841"
-     sodipodi:role="line"
-     id="tspan1188">  </tspan></text>
-
-
-  <rect
-   style="font-size:12.000000;fill:#c12b28;fill-opacity:0.53658497;fill-rule:evenodd;stroke-width:1.0000000pt;"
-   id="rect758"
-   width="393.38718"
-   height="22.479324"
-   x="58.027321"
-   y="132.13493" />
-
-
-  <rect
-   style="font-size:12.000000;fill:#c12b28;fill-opacity:0.53658497;fill-rule:evenodd;stroke-width:1.0000000pt;"
-   id="rect759"
-   width="392.55447"
-   height="22.479324"
-   x="59.046661"
-   y="158.96379" />
-
-
-  <rect
-   style="font-size:12.000000;fill:#23ca22;fill-opacity:0.58841503;fill-rule:evenodd;stroke-width:1.0000000pt;"
-   id="rect760"
-   width="38.440845"
-   height="101.57295"
-   x="17.647863"
-   y="109.03632" />
-
-
-  <path
-   style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#00b000;stroke-width:1.8750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
-   d="M 36.593644,212.69114 C 34.928544,267.64014 84.882535,270.97014 131.50652,270.97014"
-   id="path761" />
-
-
-  <path
-   style="fill:none;fill-opacity:1.0000000;fill-rule:evenodd;stroke:#af0000;stroke-width:1.8750000;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;"
-   d="M 141.28421,134.21683 C 139.61821,70.941551 161.26521,55.955351 211.21921,54.290251"
-   id="path762" />
-
-
-  <text
-   style="font-size:26.000000;font-style:normal;font-weight:normal;fill:#b00000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;"
-   x="230.36832"
-   y="54.290195"
-   id="text763">
-    <tspan
-   id="tspan764">
-_("Create staff")</tspan>
-  </text>
-
-
-  <text
-   style="font-size:26.000000;font-style:normal;font-weight:normal;fill:#00b000;fill-opacity:1.0000000;stroke:none;stroke-width:1.0000000pt;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1.0000000;font-family:Bitstream Charter;text-anchor:start;writing-mode:lr;"
-   x="154.81793"
-   y="278.46335"
-   id="text766">
-    <tspan
-   id="tspan767">
-_("Combine staffs in parallel")</tspan>
-  </text>
-
-
-<metadata
-   id="metadata1091">
-  <rdf:RDF
-   id="RDF1092">
-    <cc:Work
-   rdf:about=""
-   id="Work1093">
-      <dc:format
-   id="format1094">image/svg+xml</dc:format>
-
-      <dc:type
-   id="type1096"
-   rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
-
-    </cc:Work>
-
-  </rdf:RDF>
-
-</metadata>
-
+     id="base"
+     pagecolor="#ffffff"
+     bordercolor="#666666"
+     borderopacity="1.0"
+     gridtolerance="10000"
+     guidetolerance="10"
+     objecttolerance="10"
+     inkscape:pageopacity="0.0"
+     inkscape:pageshadow="2"
+     inkscape:zoom="1"
+     inkscape:cx="257"
+     inkscape:cy="162.42641"
+     inkscape:document-units="px"
+     inkscape:current-layer="layer1"
+     showgrid="false"
+     inkscape:window-width="635"
+     inkscape:window-height="708"
+     inkscape:window-x="0"
+     inkscape:window-y="0" />
+  <metadata
+     id="metadata4450">
+    <rdf:RDF>
+      <cc:Work
+         rdf:about="">
+        <dc:format>image/svg+xml</dc:format>
+        <dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+      </cc:Work>
+    </rdf:RDF>
+  </metadata>
+  <g
+     inkscape:label="Layer 1"
+     inkscape:groupmode="layer"
+     id="layer1">
+    <rect
+       style="fill:#87de87"
+       id="rect5251"
+       width="31.1127"
+       height="115.25841"
+       x="23.85965"
+       y="57.76746" />
+    <rect
+       y="115.23402"
+       x="55.353554"
+       height="32"
+       width="351.54773"
+       id="rect5249"
+       style="fill:#ff8080" />
+    <rect
+       style="fill:#ff8080"
+       id="rect4477"
+       width="307"
+       height="32"
+       x="55.353554"
+       y="81.646446" />
+    <text
+       xml:space="preserve"
+       style="font-size:28px;font-style:normal;font-variant:normal;font-weight:bold;font-stretch:normal;fill:#000000;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Sans Mono;-inkscape-font-specification:Sans Bold"
+       x="26"
+       y="76"
+       id="text4455"><tspan
+         sodipodi:role="line"
+         x="26"
+         y="76"
+         id="tspan4459"
+         style="font-size:24px">&lt;&lt;</tspan><tspan
+         sodipodi:role="line"
+         x="26"
+         y="106"
+         id="tspan4463"
+         style="font-size:24px">  \new Staff \hornNotes</tspan><tspan
+         sodipodi:role="line"
+         x="26"
+         y="136"
+         id="tspan4465"
+         style="font-size:24px">  \new Staff \bassoonNotes</tspan><tspan
+         sodipodi:role="line"
+         x="26"
+         y="166"
+         id="tspan4467"
+         style="font-size:24px">&gt;&gt;</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#c83737;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+       x="203"
+       y="37"
+       id="text4469"><tspan
+         sodipodi:role="line"
+         id="tspan4471"
+         x="203"
+         y="37"
+         style="font-size:22px;fill:#c83737">Create staff</tspan></text>
+    <text
+       xml:space="preserve"
+       style="font-size:24px;font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;fill:#217821;fill-opacity:1;stroke:none;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;font-family:DejaVu Serif;-inkscape-font-specification:DejaVu Serif"
+       x="120"
+       y="222"
+       id="text4473"><tspan
+         sodipodi:role="line"
+         id="tspan4475"
+         x="120"
+         y="222"
+         style="font-size:22px;fill:#217821">Combine staves in parallel</tspan></text>
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#217821;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 114.72287,214.39161 C 69.821589,214.74516 36.120523,211.11735 36.474077,173.99425"
+       id="path5255"
+       sodipodi:nodetypes="cc" />
+    <path
+       style="fill:none;fill-rule:evenodd;stroke:#c83737;stroke-width:1.79999995;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
+       d="M 199.57568,27.361869 C 107.6518,27.361869 115.42998,58.828121 115.78353,80.041324"
+       id="path5259"
+       sodipodi:nodetypes="cc" />
+  </g>
 </svg>
diff --git a/Documentation/pictures/text-input-score-output.png b/Documentation/pictures/text-input-score-output.png
new file mode 100644 (file)
index 0000000..b06658d
Binary files /dev/null and b/Documentation/pictures/text-input-score-output.png differ
diff --git a/Documentation/pictures/thickness-tweaks.png b/Documentation/pictures/thickness-tweaks.png
new file mode 100644 (file)
index 0000000..4495a6c
Binary files /dev/null and b/Documentation/pictures/thickness-tweaks.png differ
diff --git a/Documentation/pictures/ties-scoring-example.png b/Documentation/pictures/ties-scoring-example.png
new file mode 100644 (file)
index 0000000..6cd43de
Binary files /dev/null and b/Documentation/pictures/ties-scoring-example.png differ
diff --git a/Documentation/po/nl.po b/Documentation/po/nl.po
new file mode 100644 (file)
index 0000000..f9ba3b1
--- /dev/null
@@ -0,0 +1,36 @@
+# translation of LilyPond documentation
+# Copyright (C) 2006 Han-Wen Nienhuys, Jan Nieuwenhuizen
+# This file is distributed under the same license as the lilypond package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: \n"
+"POT-Creation-Date: 2009-08-12 12:33+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#. -*- coding: utf-8 -*-
+msgid "Up:"
+msgstr ""
+
+msgid "Next:"
+msgstr ""
+
+msgid "Previous:"
+msgstr ""
+
+msgid "Appendix "
+msgstr ""
+
+msgid "Footnotes"
+msgstr ""
+
+msgid "Table of Contents"
+msgstr ""
diff --git a/Documentation/search-box.html b/Documentation/search-box.html
new file mode 100644 (file)
index 0000000..961b6af
--- /dev/null
@@ -0,0 +1,13 @@
+<form action="http://google.com/search"
+      method="get"
+      name="search"
+      onSubmit="search.q.value='site:lilypond.org +v2.12 '
+               + search.brute_query.value"
+      onMouseMove="search.q.value='site:lilypond.org +v2.12 '
+                  + search.brute_query.value"
+      onKeyUp="search.q.value='site:lilypond.org +v2.12 '
+              + search.brute_query.value">
+  <input type="hidden" name="btnG" value="Google Search">
+  <input type="text" name="brute_query" onfocus="this.value=''" value="Search">
+  <input type="hidden" name="q" value="">
+</form>
index 0f8f88ff735c5ea3164a102b54145bbbc68951b2..ddc73d4e8b6adb9d2eb3a2e880b1a72b68ac4b6e 100644 (file)
@@ -15,7 +15,6 @@ símbolos modificando los argumentos de @code{\\raise}.
 "
   doctitlees = "Símbolos de acordeón discanto"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   doctitlede = "Symbole für Akkordeon-Diskantregister"
   texidocde = "
index 362aca6a257c153db7c2d4a94f585747bb356e67..8c319d48567772c9e0d71d31d1b018d342e89aea 100644 (file)
@@ -23,7 +23,6 @@ truco se aplique a toda la partitura.
 "
   doctitlees = "Añadir un bajo cifrado encima o debajo de las notas"
 
-
 %% Translation of GIT committish: 7eb450e8e6c935410b8f3212cb53e5a731f4f33f
   doctitlefr = "Ajout d'une basse chiffrée au-dessus ou au-dessous des notes"
 
index b246029632e997c1915b2d8d08aae7d0739a7668..044bd7da75867d61dc7ec1981b2ff55c0a5b3e1f 100644 (file)
@@ -4,6 +4,15 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+L'@code{ambitus} peut être individualisé par voix.  Il faut en pareil
+cas éviter qu'ils se chevauchent.
+
+"
+  doctitlefr = "Un ambitus par voix"
+
+
   lsrtags = "pitches, staff-notation, vocal-music"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -13,7 +22,6 @@ Se puede añadir un ámbito por cada voz. En este caso, el ámbito se
 debe desplazar manualmente para evitar colisiones.
 
 "
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Ambitus können pro Stimme gesetzt werden. In diesem Fall müssen sie
index f48890d3e2fa2aecbcaa29cef02ed12229b6c760..757f7acfca4c8754a169013339355b415ae1da7f 100644 (file)
@@ -15,7 +15,6 @@ los nombres de acorde @code{ChordNames}, incluya el grabador
 "
   doctitlees = "Añadir barras de compás al contexto de nombres de acorde (ChordNames)"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Um Taktstriche in einem @code{ChordNames}-Kontext anzeigen zu lassen, muss der
index 4b3e9198fcb9d80f6ca9a95c4debf63b6b1af54f..027b7b3b522bd50957330879cec584e420dafeee 100644 (file)
@@ -19,7 +19,6 @@ de líneas.
 "
   doctitlees = "Escritura de partes de percusión"
 
-
 %% Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421
   texidocfr = "
 Grâce à la puissance des outils préconfigurés tels que la fonction
index b11c135e6b817c7e8d3236d836a61803d9a34190..168e16920e34f1926188ad58b306b9bfb525e19c 100644 (file)
@@ -13,7 +13,6 @@ actual a una partitura.
 "
   doctitlees = "Añadir la fecha actual a una partitura"
 
-
 %% Translation of GIT committish: 7eb450e8e6c935410b8f3212cb53e5a731f4f33f
   texidocfr = "
 Avec un peu de code Scheme, voici comment ajouter facilement
index b4e5517264e1842374387e49fde423f08f09809e..10ea39b92990a229445215b3c16c26af186f21fc 100644 (file)
@@ -4,6 +4,18 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+  texidocfr = "
+D'ordinaire, le graveur @code{Volta_engraver} réside dans le contexte
+@code{Score} ; les crochets précédant une reprise s'impriment donc
+seulement au-dessus de la portée du haut.  On peut ajuster cela en
+déplaçant ce graveur vers les contextes de portée (@code{Staff}) qui
+doivent comporter ces crochets. 
+
+"
+  doctitlefr = "Ajout du crochet de reprise à d'autres portées"
+
+
   lsrtags = "repeats"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -18,7 +30,6 @@ también el fragmento de código \"Volta multi staff\".
 "
   doctitlees = "Añadir corchetes de primera y segunda vez a más pentagramas"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Der @code{Volta_engraver} befindet sich im @code{Score}-Kontext und Klammern
@@ -35,7 +46,7 @@ The @code{Volta_engraver} by default resides in the @code{Score}
 context, and brackets for the repeat are thus normally only printed
 over the topmost staff. This can be adjusted by adding the
 @code{Volta_engraver} to the @code{Staff} context where the brackets
-should appear; see also the \"Volta multi staff\" snippet.
+should appear; see also the @qq{Volta multi staff} snippet.
 
 "
   doctitle = "Adding volta brackets to additional staves"
index cac86c9eb23f483e054683fb9c9f5d9f2836279e..9c7a6ec3af5ca219140cb6f92ec1854455a9dca8 100644 (file)
@@ -4,6 +4,17 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
+  texidocfr = "
+Dans certains cas de musique polyphonie complexe, une voix
+supplémentaire peut permettre d'éviter les risques de collision.
+Lorsque quatre voix parallèles ne suffisent pas, la fonction Scheme
+@code{context-spec-music} permet d'ajouter des d'autres voix.
+
+"
+  doctitlefr = "Ajout de voix pour éviter les collisions"
+
+
   lsrtags = "simultaneous-notes"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -16,7 +27,6 @@ variable que utiliza la función de Scheme @code{context-spec-music}.
 
 "
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Ein einigen Fällen von sehr komplexer polyphoner Musik sind zusätzliche
index 8b0568f3e3383d103f3a158fbbb3c6f6300f7b32..9946bb3f63e4dff565a11e4ac0279775b081f889 100644 (file)
@@ -14,7 +14,6 @@ letra más cerca del pentagrama.
 "
   doctitlees = "Ajuste del especiado vertical de la letra"
 
-
 %% Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421
   texidocfr = "
 Cet extrait illustre la manière de rapprocher la ligne de paroles
index 6148cf5702cfbf9790e9dd451c7f6403faa88fb9..1615423fca90aec969f35f9393a7f4c00848f7df 100644 (file)
@@ -4,6 +4,15 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+La propriété @code{shortest-duration-space} peut devoir être retouchée
+pour ajuster l'apparence des chutes ou sauts.
+
+"
+  doctitlefr = "Ajustement du galbe des chutes ou sauts"
+
+
   lsrtags = "expressive-marks"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -15,7 +24,6 @@ caídas y subidas de tono («falls» y «doits»).
 "
   doctitlees = "Ajustar la forma de las subidas y caídas de tono"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Die @code{shortest-duration-space}-Eigenschaft kann verändert werden, um
index 58d868b35f12afb45ae0916c7f24b93255aa1512..f1cb0e57f065369ebfdcd7bde45ce9aaf140277b 100644 (file)
@@ -20,7 +20,6 @@ alineados por la izquierda con ella.
 
   doctitlees = "Alineación de los números de compás"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Taktnummern sind standardmäßig links an ihrem Ursprungsobjet
@@ -34,7 +33,6 @@ Taktstrich gesetzt werden.
   doctitlede = "Taktnummern ausrichten"
 
 
-
 %% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
   texidocfr = "
 Les numéros de mesure s'alignent en principe sur la droite de l'objet
index 1bbc5f91b692e38e7bd27853741f314dc1c940a2..f25954d3bc1e38d90743bb03f0eacce6db7ea346 100644 (file)
@@ -22,7 +22,6 @@ debe hacer este ajuste para todos los pentagramas).
 "
   doctitlees = "Alinear marcas con varios objetos de notación"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Wenn angegeben, können Textzeichen auch an anderen Objekten als Taktstrichen
@@ -75,7 +74,7 @@ be done for all the staves).
   \key a \major
   \clef treble
   \time 3/4
-  \mark "↓"
+  \mark \markup { \char ##x2193 }
   e2.
 
   % the RehearsalMark will be centered above the KeySignature
@@ -83,7 +82,7 @@ be done for all the staves).
   \key a \major
   \clef treble
   \time 4/4
-  \mark "↓"
+  \mark \markup { \char ##x2193 }
   e1
 
   \break
@@ -91,20 +90,20 @@ be done for all the staves).
 
   % the RehearsalMark will be aligned with the left edge of the KeySignature
   \once \override Score.KeySignature #'break-align-anchor-alignment = #LEFT
-  \mark "↓"
+  \mark \markup { \char ##x2193 }
   \key a \major
   e1
 
   % the RehearsalMark will be aligned with the right edge of the KeySignature
   \once \override Score.KeySignature #'break-align-anchor-alignment = #RIGHT
   \key a \major
-  \mark "↓"
+  \mark \markup { \char ##x2193 }
   e1
 
   % the RehearsalMark will be aligned with the left edge of the KeySignature
   % and then shifted right by one unit.
   \once \override Score.KeySignature #'break-align-anchor = #1
   \key a \major
-  \mark "↓"
+  \mark \markup { \char ##x2193 }
   e1
 }
index e17eaf53b59bbdae927258117094112e68061773..da6e16e11764234e6b62c46b7e9b4879e137160a 100644 (file)
@@ -15,7 +15,6 @@ comportamiento se puede cancelar.
 "
   doctitlees = "Permitir que las digitaciones se impriman dentro del pentagrama"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Normalerweise werden vertikal orientierte Fingersatzzahlen außerhalb des Systems
@@ -23,7 +22,6 @@ gesetzt.  Das kann aber verändert werden.
 
 "
   doctitlede = "Fingersatz auch innerhalb des Systems setzen"
-
 %% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
   texidocfr = "
 L'empilement des indications de doigté se fait par défaut à l'extérieur de la portée.  Néanmoins, il est possible d'annuler ce comportement.
index b0090eb9ae88a1383bf48f268bdb71b2c4ecf892..a77506af59d8cf117a50d26fab4caf58b25f24be 100644 (file)
@@ -4,6 +4,16 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+Si plusieurs voix se trouvent sur une même portée, on peut attribuer le
+graveur @code{Ambitus_engraver} au contexte @code{Staff} afin d'obtenir
+l'ambitus de toutes les voix cumulées, non d'une seule des voix actives. 
+
+"
+  doctitlefr = "Ambitus sur plusieurs voix"
+
+
   lsrtags = "pitches, vocal-music"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -15,7 +25,6 @@ pentagramas con varias voces.
 
 "
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Indem man den @code{Ambitus_engraver} im @code{Staff}-Kontext
index 7454234e49c69dd1adf03c4c8cee93fa361d19d9..7a00c8687a98b6c834cc712f9c800ce76d72ef9c 100644 (file)
@@ -15,7 +15,6 @@ antigua.
 
   doctitlees = "Tipografía de música antigua"
 
-
 %% Translation of GIT committish: 499a511d4166feaada31114e097f86b5e0c56421
   texidocfr ="
 Voici comment graver la plupart, sinon tous les symboles que
index 4fbfef3f091a5310285300c1d8a140b45135dfa6..22edf3a0e901e33002226055d624eb1b5a35e8b5 100644 (file)
@@ -16,7 +16,6 @@ especiales que indican silencios de distintas longitudes.
 "
 
   doctitlees = "Plantilla para notación de música antigua (transcripción moderna de canto gregoriano)"
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 
   texidocde = "
@@ -27,7 +26,6 @@ Länge von Pausen an.
 "
 
  doctitlede = "Vorlage für Alte Notation -- moderne Transkription des gregorianischen Chorals"
-
 %% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
   texidocfr = "
 Voici comment vous pourriez transcrire du grégorien.  Pour mémoire, il
index c4765112918d6ecffeda20ec27e718340afd862b..18ce929f5e085e391ff6b64c57050afd3ade3648 100644 (file)
@@ -21,7 +21,6 @@ encima de ellos.
 "
   doctitlees = "Plantilla de notación de música antigua (transcripción moderna de música mensural)"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Bei der Transkription von Mensuralmusik ist es oft erwünscht, ein
@@ -36,7 +35,6 @@ zwischen den Systemen geschrieben.
 
 doctitlede = "Vorlage für Alte Notation -- moderne Transkription von Mensuralmusik"
 
-
 %% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
   texidocfr = "
 Lorsque l'on transcrit de la musique mensurale, un @emph{incipit} permet
index 7d7a9a6a6d4b4ff7340df297b4436b2631b1a6da..6e98aefd29e8a0399ac98fca7afc1f081e0f40d1 100644 (file)
@@ -4,6 +4,27 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+La propriété @code{shapeNoteStyles} permet d'affecter un profil
+particulier à chaque degré de la gamme -- à partir de l'armure ou
+de la propriété @code{tonic}.  Ses valeurs sont constituées d'une liste 
+de symboles, qu'il s'agisse de formes géométriques (@code{triangle},
+@code{cross}, ou @code{xcircle}) ou basés sur la tradition des graveurs
+américains (avec quelques noms de note latins).
+
+LilyPond dispose de deux raccourcis, @code{\aikenHeads} et
+@code{\sacredHarpHeads}, permettant de reproduire déanciens recueils de
+chansons américaines. 
+
+L'exemple suivant montre plusieurs manières de profiler les têtes de
+note, ainsi que la capacité de trnsposer tout en respectant la fonction
+harmonique de chaque note dans la gamme. 
+
+"
+  doctitlefr = "Profilage des notes selon leur degré dans la gamme"
+
+
   lsrtags = "pitches, editorial-annotations"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -30,7 +51,6 @@ nota.
 
 "
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   doctitlede = "Notenkopfstile basierend auf der Tonleiterstufe erstellen"
   texidocde = "
@@ -56,8 +76,8 @@ harmonischen Funktionen und dem Notenstil verloren geht.
   texidoc = "
 The @code{shapeNoteStyles} property can be used to define various note
 head styles for each step of the scale (as set by the key signature or
-the \"tonic\" property). This property requires a set of symbols, which
-can be purely arbitrary (geometrical expressions such as
+the @code{tonic} property). This property requires a set of symbols,
+which can be purely arbitrary (geometrical expressions such as
 @code{triangle}, @code{cross}, and @code{xcircle} are allowed) or based
 on old American engraving tradition (some latin note names are also
 allowed).
index 89cdc4cb39233fb585d2b1a4fadc11643aba5cbb..18b2d52e63ad1e599b91d877f568ee1992f535b7 100644 (file)
@@ -18,7 +18,6 @@ cómo podría ser el comienzo de una improvisación @emph{hijaz}:
 "
 doctitlees = "Improvisación de música árabe"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Bei Improvisation oder @emph{taqasim}, die zeitlich frei gespielt
index 91cacac0c2eefa8bf9043049feb6e54549d3fba5..9c61c3f058debe294bf167e6734a93c20e274bda 100644 (file)
@@ -15,7 +15,6 @@ comportamiento como se muestra aquí:
 "
   doctitlees = "Barras que atraviesan saltos de línea"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Zeilenumbrüche sind normalerweise während Balken verboten.  Das kann geändert
@@ -25,7 +24,6 @@ werden.
   doctitlede = "Balken über Zeilenumbrüche"
 
 
-
 %% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
 
   texidocfr = "
index ea03455e2c547f37ba5526ac0be59f49b5f2fa06..396a0b3b54ac603b88ca6344323c66acb0015911 100644 (file)
@@ -8,7 +8,7 @@
 
   texidoc = "
 Breathing signs are available in different tastes: commas (default),
-ticks, vees and \"railroad tracks\" (caesura).
+ticks, vees and @qq{railroad tracks} (caesura).
 
 "
   doctitle = "Breathing signs"
index ec7a78fb7907a341db299643774eef11666b811e..ee6c267cc47f5aa95ba40c99aa8da0b7f2588fe5 100644 (file)
@@ -17,9 +17,9 @@ satisfactoria.
   doctitlees = "Cesura tipo \"vías del tren\" con calderón"
 
   texidoc = "
-A caesura is sometimes denoted by a double \"railtracks\" breath mark
-with a fermata sign positioned above. This snippet should present an
-optically pleasing combination of railtracks and fermata.
+A caesura is sometimes denoted by a double @qq{railtracks} breath mark
+with a fermata sign positioned above. This snippet shows an optically
+pleasing combination of railtracks and fermata.
 
 "
   doctitle = "Caesura (\"railtracks\") with fermata"
index d44ca4833ebff5ef51ad202a714052a25abe4b07..bfc76970456083502494b57036e411ced2043e5a 100644 (file)
@@ -18,9 +18,9 @@ normalmente un objeto, utilizando código de Scheme.
 
   texidoc = "
 This example provides a function to typeset a hairpin (de)crescendo
-with some additional text below it, such as \"molto\" or \"poco\". The
-example also illustrates how to modify the way an object is normally
-printed, using some Scheme code.
+with some additional text below it, such as @qq{molto} or @qq{poco}.
+The example also illustrates how to modify the way an object is
+normally printed, using some Scheme code.
 
 "
   doctitle = "Center text below hairpin dynamics"
index bb4a427d3fc0b90427e9910f2454d5ca9922f226..161df77e43162921374eae0ffd93ff625839f67b 100644 (file)
@@ -14,7 +14,6 @@ utilice la siguiente función de Scheme.
 "
   doctitlees = "Cambiar el tamaño de la marca de \\flageolet"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Um den @code{\\flageolet}-Kreis kleiner zu machen, kann diese
@@ -22,7 +21,6 @@ Scheme-Funktion eingesetzt werden.
 
 "
   doctitlede = "\\flageolet-Zeichen verkleinern"
-
 %% Translation of GIT committish: 0099693675b95c7ec6664d7277f22411a14e9c1b
 
   texidocfr = "
index d870c809640e2afb12b9787083e91edf5862a74e..c9f0330de5b0f45bfa3367cfd7d7afcd59736df5 100644 (file)
@@ -20,7 +20,6 @@ establecido a 5.5 espacios de pentagrama.
 "
   doctitlees = "Cambiar el salto de las barras en ángulo"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Balken mit Hälsen in unterschiedliche Richtungen werden automatisch
@@ -35,7 +34,6 @@ Standardwert von @code{auto-knee-gap} ist 5.5 Notensystemabstände.
   doctitlede = "Balken für weit auseinander liegende Noten ändern"
 
 
-
 %% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
   texidocfr = "
 LilyPond insère automatiquement des ligatures coudées --- certaines
index 0605d27248dc000ef4e7edef171721c860bf23a0..2ece53e2ce8577458de0ac9592377a434c097b8f 100644 (file)
@@ -14,7 +14,6 @@ nombre de un acorde para que sea cualquier elemento de marcado.
 "
   doctitlees = "Modificación del separador de acordes"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Der Trenner zwischen unterschiedlichen Teilen eines Akkordsymbols kann
index 58c76d98b11e1b601b7291334e44e1a4ee8c344d..aba536e5052667ac6e613640340ee85a8bf3a02f 100644 (file)
@@ -17,7 +17,6 @@ puede cambiar sobreescribiendo la propiedad @code{expand-limit}:
 
 "
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Wenn zehn oder weniger Pausentakte vorkommen, wird eine Reihe von Longa-
@@ -29,7 +28,6 @@ setzt:
   doctitlede = "Die Erscheinung von Pausentakten ändern"
 
 
-
 %% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
 texidocfr = "
 Dans le cas où ce silence dure moins de dix mesures, LilyPond imprime sur
@@ -42,7 +40,7 @@ allemand -- et qui sont une simple suite de rectangles.  La propriété
 
   texidoc = "
 If there are ten or fewer measures of rests, a series of longa and
-breve rests (called in German \"Kirchenpausen\" - church rests) is
+breve rests (called in German @qq{Kirchenpausen} - church rests) is
 printed within the staff; otherwise a simple line is shown. This
 default number of ten may be changed by overriding the
 @code{expand-limit} property.
index 5c741d3fc0ef4aa8130b2ccddf7f35884cb6a02b..14cb96b2ca7bc59d87361d8ed5c0145202e43e75 100644 (file)
@@ -4,6 +4,16 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
+  texidocfr = "
+Lorsque vous regroupez automatiquement des parties, vous pouvez
+modifier le texte qui sera affiché pour les solos et pour les parties à
+l'unisson :
+
+"
+  doctitlefr = "Modification des indications de parties combinées"
+
+
   lsrtags = "simultaneous-notes"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -15,7 +25,6 @@ y de unísono:
 "
   doctitlees = "Cambiar los textos de partcombine"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Wenn Stimmen automatisch kombiniert werden, kann der Text, der für
index d63859caf97cf2869501dde837911af4d0a86037..9c55b9fff249a3356a77e80e531f3050f18de8d1 100644 (file)
@@ -4,6 +4,19 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Le texte par défaut des crescendos et decrescendos se change en
+modifiant les propriétés de contexte @code{crescendoText} et 
+@code{decrescendoText}. L'aspect de la ligne d'extension est fonction
+de la propriété @code{'style} du @code{DynamicTextSpanner}.  Sa valeur
+par défaut est @code{'hairpin}, mais d'autres valeurs sont disponibles,
+comme @code{'line}, @code{'dashed-line} et @code{'dotted-line}.
+
+"
+  doctitlefr = "Modifidation du texte et de l'extension de nuances textuelles"
+
+
   lsrtags = "expressive-marks"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -21,7 +34,6 @@ valores posibles se encuentran @code{'line} (línea),
 "
   doctitlees = "Cambiar el texto y los estilos de objeto de extensión para las indicaciones dinámicas textuales"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Der Text, der für Crescendo und Decrescendo gestzt wird, kann geändert
index fe3e983bc4f7450074cd700496e66a3f637e45dc..0302305bebb05e10ffb54fb61e80358d29983398 100644 (file)
@@ -4,6 +4,16 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+On peut choisir le glyphe imprimé par cette commande, en modifiant la
+propriété @code{text} de l'objet @code{BreathingSign}, pour lui affecter
+n'importe quelle indication textuelle.
+
+"
+  doctitlefr = "Modification de l'indicateur de respiration"
+
+
   lsrtags = "expressive-marks"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -15,7 +25,6 @@ sobreescribiendo la propiedad de texto del objeto de presentación
 "
   doctitlees = "Cambiar el símbolo de la marca de respiración"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Das Schriftzeichen für das Atemzeichen kann verändert werden, indem
index 858726b134b486c34b325177eaf0f94affe64b15..acf41aa492efbc9ff1ddda04ce71d091a352b0fa 100644 (file)
@@ -16,7 +16,6 @@ después de los números, según el valor de las propiedades
 "
   doctitlees = "Cambiar las posiciones de las alteraciones del bajo cifrado"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Versetzungszeichen und Pluszeichen können vor oder nach den Ziffern erscheinen,
index 2843c982d145c1d7e9bb218359228bcf6a611307..5d7453910bca7ba40d8cb0347555f1baceee7c78 100644 (file)
@@ -15,7 +15,6 @@ imprimir nada, hacemos invisible la indicación metronómica:
 
   doctitlees = "Cambiar el tempo sin indicación metronómica"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Um das Tempo für die MIDI-Ausgabe zu ändern, ohne eine Tempoangabe in den
index 744e983ee51e504cfc84371ef7d37a5908146400..528a88500194fdf97322270eacacabc997e04c7b 100644 (file)
@@ -19,7 +19,6 @@ de compás sin que cambie ninguna de las demás propiedades:
   doctitlees = "Cambio de compás sin afectar al barrado"
 
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Der @code{\\time}-Befehl verändert die Eigenschaften
@@ -33,7 +32,6 @@ Taktart ausgegeben, ohne die anderen Eigenschaften zu beeinflussen:
   doctitlede = "Die Taktart verändern ohne die Bebalkung zu beeinflussen"
 
 
-
 %% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
   texidocfr = "
 La commande @code{\\time} gère les propriétés
index e18542bdba1ca32ce8651af8ff3cf2ad6de0aca4..4e440bd4201f78b3bd91fe7d523ed1014bf64911 100644 (file)
@@ -18,7 +18,6 @@ del grupo, o eliminar el número.
 
 "
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Standardmäßig wird nur der Zähler des N-tolen-Bruchs über der Klammer
@@ -30,7 +29,6 @@ vollständig unterdrücken.
   doctitlede = "Die Zahl der N-tole verändern"
 
 
-
 %% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
   texidocfr = "
 L'apparence du chiffre est déterminée par la propriété @code{text} dans
index bab16e38261a49afcd59ee62a01085587a5fc523..4f46ac351215ef4b01ab65b8977ba4fe73d388ab 100644 (file)
@@ -15,7 +15,6 @@ específicos.
 "
   doctitlees = "Excepciones para los nombres de acorde"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Die Eigenschaft @code{chordNameExceptions} kann benutzt werden, um eine
index d3795572149e0150bd934393dcb965e2ee0870cb..d7a86345e51274bf46d41056c8da4be190b48e9e 100644 (file)
@@ -14,7 +14,6 @@ puede ajustar mediante majorSevenSymbol.
 "
   doctitlees = "Nombre de acorde maj7"
 
-
 %% Translation of GIT committish: d4f58bb3ad4e7fe1967a6b48f25e3addffc8aa14
  texidocde = "
 Das Aussehen des großen Septakkords kann mit @code{majorSevenSymbol} verändert werden.
index 66d9c00deca71a361ea9ad9da6297d400c1dabc8..29ec7b6a7643aabe4be461ce223b4876fea34624 100644 (file)
@@ -16,8 +16,9 @@ bloque @code{\\markup}.
   doctitlees = "Combinar indicaciones dinámicas con marcados textuales"
 
   texidoc = "
-Some dynamics may involve text indications (such as \"più forte\" or
-\"piano subito\"). They can be produced using a @code{\\markup} block.
+Some dynamics may involve text indications (such as @qq{più forte} or
+@qq{piano subito}). These can be produced using a @code{\\markup}
+block.
 
 "
   doctitle = "Combining dynamics with markup texts"
index 53c3a2b5fd81ef0b29f29b4698b1bb8b831f87fa..8a24416fa870b3c0e28ef5bf88b69aacfab6abee 100644 (file)
@@ -4,6 +4,27 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
+  texidocfr = "
+L'outil de combinaison de parties (la commande @code{\\partcombine})
+permet d'avoir deux parties différentes sur une même portée.  LilyPond
+ajoute automatiquement des indications textuelles, telles que @qq{solo}
+ou @qq{a2}.  Si votre intention n'est que de fusionner les parties, sans
+ajouter de texte, assignez faux à la propriété
+@code{printPartCombineTexts}.  Dans le cas de partitions vocales, et
+plus particulièrement d'hymnes, ces @qq{solo/a2} ne sont d'aucune
+utilité, aussi vaut-il mieux les désactiver.  Dans le cas où il y aurait
+alternance entre @emph{solo} et @emph{tutti}, il vaut mieux faire appel
+à de la musique polyphonique standard.
+
+Voici trois moyens d'imprimer deux parties sur un même portée : en
+polyphonie normale, avec @code{\\partcombine} sans indication
+supplémentaire, et avec @code{\\partcombine} commentée.
+
+"
+  doctitlefr = "Combinaison de deux parties sur une même portée"
+
+
   lsrtags = "simultaneous-notes, text"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -28,7 +49,6 @@ textos.
 "
   doctitlees = "Combinar dos partes sobre el mismo pentagrama"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Die Funktion, die Stimmen kombiniert (also der @code{\\partcombine}-Befehl)
@@ -52,13 +72,12 @@ kombinieren: Standardpolyphonie, @code{\\partcombine} ohne Text und
   texidoc = "
 The part combiner tool ( @code{\\partcombine} command ) allows the
 combination of several different parts on the same staff.  Text
-directions such as \"solo\" or \"a2\" are added by default; to remove
-them, simply set the property @code{printPartCombineTexts} to
-\"false\". For vocal scores (hymns), there is no need to add
-\"solo\"/\"a2\" texts, so they should be switched off.  However, it
-might be better not to use it if there are any solos, as they won't be
-indicated.  In such cases, standard polyphonic notation may be
-preferable.
+directions such as @qq{solo} or @qq{a2} are added by default; to remove
+them, simply set the property @code{printPartCombineTexts} to @code{f}.
+For vocal scores (hymns), there is no need to add @qq{solo/a2} texts,
+so they should be switched off.  However, it might be better not to use
+it if there are any solos, as they won't be indicated.  In such cases,
+standard polyphonic notation may be preferable.
 
 This snippet presents the three ways two parts can be printed on a same
 staff: standard polyphony, @code{\\partcombine} without texts, and
index da7f8355581aa98efa5e041bb69a057fd21a4946..1069b03bae559b64863648bdd9be033fa438a59a 100644 (file)
@@ -41,8 +41,11 @@ der @code{set-time-signature}-Funktion als das dritte Argument mitgegeben:
 
 
 
-%% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
+%% Translation of GIT committish: 7b70644b95f383b4281e9ffa146d315d2ada11d3
   texidocfr = "
+Les règles de ligature par mesure sont gérées par la propriété
+@code{beamSettings}.  Elles peuvent être modifiées par la commande
+@code{\\overrideBeamSettings}.  
 Il existe des options qui permettent de grouper les ligatures au sein
 d'une mesure, grâce à la fonction Scheme @code{set-time-signature}.
 Celle-ci prend trois arguments : le nombre de pulsations, la durée de la
@@ -51,8 +54,8 @@ fait appel au @code{Measure_grouping_engraver}, la fonction
 @code{set-time-signature} créera aussi des symboles
 @code{MeasureGrouping}.  Ces symboles aident à la lecture des œuvres
 modernes à la rythmique complexe.  Dans l'exemple qui suit, la mesure à
-9/8 est divisée en 2, 2, 2 et 3.  Ceci est fourni en tant que troisième
-argument à @code{set-time-signature} : @code{'(2 2 2 3)}.
+9/8 est divisée en 2, 2, 2 et 3, alors que la mesure à 5/8 répond aux
+règles par défaut contenues dans le fichier @w{@code{scm/beam-settings.scm}}.
 
 "
   doctitlefr = "Signes de direction, signes de sous-groupe"
index a97e06dec37138efc96e98f21d9aa0407ae4d8c9..8c106d1844273730a09427400bcf78f01d17aadf 100644 (file)
@@ -4,6 +4,16 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+De nos jours, il peut arriver que la note d'arrivée d'un glissando soit
+absente de la partition.  Pour ce faire, il vous faudra utiliser une
+cadence et « masquer » la note d'arrivée.
+
+"
+  doctitlefr = "Glissando contemporain"
+
+
   lsrtags = "expressive-marks"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -14,7 +24,6 @@ utilizando una nota oculta y temporalización de cadenza.
 "
   doctitlees = "Glissando contemporáneo"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Ein modernes Glissando ohne eine Endnote kann gesetzt werden, indem
index bc04066661f8e6e08cc1d7a51ab5062b9c27c5e0..73305e2a86cc36a3189c118ffb2941d050b4c297 100644 (file)
@@ -14,14 +14,12 @@ Se puede controlar con precisión la colocación de los números de digitación.
   doctitlees = "Controlar la colocación de las digitaciones de acordes"
 
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Die Position von Fingersatzzahlen kann exakt kontrolliert werden.
 
 "
   doctitlede = "Position von Fingersatz in Akkorden kontrollieren"
-
 %% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
 
   texidocfr = "
index 3a864485495f583876240b6aa1ef961f52f88533..a1bca2a99daea3b8a71db65284dcbc0bdc2f984f 100644 (file)
@@ -4,6 +4,22 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Les symboles s'ordonnent verticalement suivant la propriété
+@code{script-priority}. Plus sa valeur numérique est faible, plus le
+symbole sera proche de la note. Dans l'exemple suivant, l'objet
+@code{TextScript} -- le dièse -- a d'abord la propriété la
+plus basse, et il est donc placé plus près de la note ; ensuite c'est
+l'objet @code{Script} -- le mordant -- qui a la propriété la plus basse,
+et il se place alors sous le dièse.  Lorsque deux objets ont la même
+priorité, c'est l'ordre dans lequel ils sont indiqués qui détermine
+lequel sera placé en premier.
+
+"
+  doctitlefr = "Contrôle de l'ordre vertical des articulations et ornements"
+
+
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -22,7 +38,6 @@ lugar.
 "
   doctitlees = "Controlar la ordenación vertical de las inscripciones"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Die vertikale Anordnung von Beschriftungen wird mit der
index d64883a7d11239f05a390857eb168541853815be..6d1b52e89cc296d5b576317dc0866a2d1cd6e3f6 100644 (file)
@@ -4,6 +4,19 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Obtenir un @emph{grupetto} retardé et dans lequel la note la plus basse
+est altérée requiert quelques surcharges.  La propriété
+@w{@code{outside-staff-priority}} doît être désactivée (@code{#f}) pour
+éviter qu'elle prenne le pas sur la propriété @w{@code{avoid-slur}}.  La
+valeur assignée à @code{halign} permet de gérer horizonalement le 
+@w{« retard »}. 
+
+"
+
+  doctitlefr = "Création d'un grupetto retardé"
+
   lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -21,7 +34,6 @@ grupeto horizontalmente.
 doctitlees = "Crear un grupeto de anticipación"
 
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Einen Doppelschlag mit Vorhalt zu erstellen, wobei die untere Note das
index cd5d121d53bc2b9189313b8c561bf030c1e49e7e..eceb14919a8f4f39b7c3b828f9b9151bfb597661 100644 (file)
@@ -23,10 +23,9 @@ de Gustav Holst.
   texidoc = "
 In music that contains many occurrences of the same sequence of notes
 at different pitches, the following music function may prove useful.
-It takes a note, of which only the pitch is used.  The supporting
-Scheme functions were borrowed from the \"Tips and tricks\" document in
-the manual for version 2.10.   This example creates the rhythm used
-throughout Mars, from Gustav Holst's The Planets.
+It takes a note, of which only the pitch is used.   This example
+creates the rhythm used throughout Mars, from Gustav Holst's The
+Planets.
 
 "
   doctitle = "Creating a sequence of notes on various pitches"
index 5c0ceffe940c54c513a2e84c6aaa47749656169c..f67fcbdbd9e7634989edd23001a6a2156d5f9f6a 100644 (file)
@@ -4,6 +4,15 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Affecter le graveur @code{Span_arpeggio_engraver} au contexte de la
+portée (@code{Staff}) permet de distribuer un arpège sur plusieurs voix :
+
+"
+  doctitlefr = "Arpège distribué sur plusieurs voix"
+
+
   lsrtags = "expressive-marks"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -16,7 +25,6 @@ voces que están sobre el mismo pentagrama si el grabador
 "
   doctitlees = "Crear arpegios entre notas de voces distintas"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Ein Arpeggio kann zwischen Noten aus unterschidlichen Stimmen auf demselben
index fe6d5b9f37d3b2772f64b5badd4e7b0280a759cd..b272492bc703d5026973f4957117d03db19beb73 100644 (file)
@@ -4,6 +4,16 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Dans une double portée pour piano (@code{PianoStaff}), un arpège peut
+s'étendre sur les deux portées grâce à la propriété 
+@code{PianoStaff.connectArpeggios}.
+
+"
+  doctitlefr = "Arpège distribué sur une partition pour piano"
+
+
   lsrtags = "expressive-marks"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -15,7 +25,6 @@ cruce entre los pentagramas ajustando la propiedad
 "
   doctitlees = "Crear arpegios que se cruzan entre pentagramas dentro de un sistema de piano"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Arpeggio über mehrere Systeme können in anderen Kontexten als dem
index d7f9097c41c1e2bbe942a8efb1673fc7ba32a587..2ab7b7edb4dda4dee1dcb5f865160acab3ef9ed2 100644 (file)
@@ -4,6 +4,16 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Il est possible de distribuer un arpège sur plusieurs portées d'un
+système autre que le @code{PianoStaff} dès lors que vous incluez le
+@code{Span_arpeggio_engraver} au contexte @code{Score}.
+
+"
+  doctitlefr = "Arpège distribué pour un autre contexte que le piano"
+
+
   lsrtags = "expressive-marks"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -15,7 +25,6 @@ contextos distintos a @code{PianoStaff} si se incluye el grabador
 "
   doctitlees = "Creación de arpegios que se cruzan entre pentagramas dentro de otros contextos"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
  texidocde = "
 In einem Klaviersystem (@code{PianoStaff}) ist es möglich, ein Arpeggio
index e51b7e58618765a5af279af808193a63a0172dcd..d6d9ce1ab0404927d57636bf61abea66b86bf446 100644 (file)
@@ -14,7 +14,6 @@ marcado, pero no cambian el tempo en la salida MIDI.
 "
   doctitlees = "Crear indicaciones metronómicas en modo de marcado"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Neue Metronombezeichnungen können als Textbeschriftung erstellt werden,
index ea2d105f9171ec9147ce20ffa0a75f5cc190c9e0..34361c8067ca539357535d8f4220beefc9babb9b 100644 (file)
@@ -31,9 +31,9 @@ a @code{\\markup} block, this method has a downside: the created
 objects will behave like text markups, and not like dynamics.
 
 However, it is possible to create a similar object using the equivalent
-Scheme code (as described in \"Markup programmer interface\"), combined
-with the @code{make-dynamic-script} function. This way, the markup will
-be regarded as a dynamic, and therefore will remain compatible with
+Scheme code (as described in the Notation Reference), combined with the
+@code{make-dynamic-script} function. This way, the markup will be
+regarded as a dynamic, and therefore will remain compatible with
 commands such as @code{\\dynamicUp} or @code{\\dynamicDown}.
 
 
index c8a6640dadefdfae97e4b3a2a7efd487115691b8..ddfb96c68141399961cfe58a545d2b591dcba079 100644 (file)
@@ -4,6 +4,17 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+  texidocfr = "
+Dans la mesure où @code{\\repeat tremolo} requiert deux arguments
+musicaux pour un trémolo d'accords, la note ou l'accord de la
+portée opposée doît être encadré par des accolades et se voir adjoindre
+la commande @code{\\change Staff}.
+
+"
+  doctitlefr = "Trémolo et changement de portée"
+
+
   lsrtags = "repeats, keyboards"
 
   texidoc = "
index 59820606edf56f048cea92a20e700a10e20401a7..bba55ebd7d4d767e9b5b4756fb03936fe30ec477 100644 (file)
@@ -19,7 +19,6 @@ sobreescritura de propiedades.
 "
   doctitlees = "Personalizar los diagramas de posiciones"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Eigenschaften von Bunddiagrammen können in
index a9e5536254cc5aa4e28b420277fc3db260a51705..ff7a2b9d8643242ece0bc1c79fec6fe2b92babe1 100644 (file)
@@ -16,7 +16,6 @@ diagramas de posiciones de marcado, se pueden aplicar overrides
 "
  doctitlees = "Personalizar diagramas de posiciones de marcado"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Bunddiagramme können mit der Eigenschaft @code{'fret-diagram-details}
@@ -26,7 +25,6 @@ Beschriftung vorgenommen werden.
 
 "
   doctitlede = "Anpassung von Beschriftungs-Bunddiagrammen"
-
 %% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
 
   texidocfr = "
index fe77fc008563abb737d6bfe37b17dce411110038..72c093c1037f69ba7a2b233424400d68e5971086 100644 (file)
@@ -15,7 +15,6 @@ del pentagrama está determinada por la propiedad
 "
   doctitlees = "Dirección predeterminada de las plicas sobre la tercera línea del pentagrama"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Die Richtung von Hälsen auf der mittleren Linie kann mit der @code{Stem}-Eigenschaft
index 5bcb551542e824ac8d4dfac4868f619c870f43bf..449f8155c11b90504f391fab8e32af5ee27d3963 100644 (file)
@@ -25,7 +25,6 @@ de las cuerdas.  Hay planes para corregir esto en un futuro.
 "
   doctitlees = "Definición de posiciones predefinidas para otros instrumentos"
 
-
 %% Translation of GIT committish: 33f623301a41fcc53efadf96bca1c72834763415
   texidocde = "
 Vordefinierte Bunddiagramme können für neue Instrumente hinzugefügt werden
@@ -43,7 +42,6 @@ enthalten.  Das soll in der Zukunft verbessert werden.
 
 "
   doctitlede = "Eigene vordefinierte Bunddiagramme für andere Instrumente erstellen"
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 
   texidocfr = "
index 7688100acef7de238bfbfa36c3b2f390c64a97fa..c393dff4d5bcdab5a125e50deacfb303fdf559e4 100644 (file)
@@ -22,7 +22,6 @@ distinta, como se ve en el segundo sistema del ejemplo.
   doctitlees = "Mostrar corchete o llave en grupos de un solo pentagrama"
 
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Wenn nur ein System einer Systemgruppe vom Typ @code{ChoirStaff} oder
index c7e390b303e37b10295c7c639debbcff0ec67052..4fdf7cba4b22a01532bfb0125a217ff0e6444fb5 100644 (file)
@@ -4,6 +4,21 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+Au début du XXème siècle, Schoenberg, Berg et Webern -- la « Seconde »
+école de Vienne -- imaginèrent de donner une importance comparable aux
+douze notes de la gamme chromatique, et éviter ainsi toute tonalité.
+Pour ce faire, ces compositions font apparaître une altération à chaque
+note, y compris un bécarre, pour mettre en exergue cette nouvelle
+approche de la théorie et du langage musicaux.
+
+Voici comment obtenir une telle notation.
+
+"
+  doctitlefr = "Le dodécaphonisme : toute note est altérée"
+
+
   lsrtags = "pitches"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -21,7 +36,6 @@ notación.
 
 "
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
  In Werken des fürhen 20. Jahrhundert, angefangen mit Schönberg, Berg
@@ -37,7 +51,7 @@ notación.
 
   texidoc = "
 In early 20th century works, starting with Schoenberg, Berg and Webern
-(the \"Second\" Viennese school), every pitch in the twelve-tone scale
+(the @qq{Second} Viennese school), every pitch in the twelve-tone scale
 has to be regarded as equal, without any hierarchy such as the
 classical (tonal) degrees. Therefore, these composers print one
 accidental for each note, even at natural pitches, to emphasize their
index 73126849409128303cb212b41d05bceefd20ec50..562180839503c8f36cf2df58125a9a9cd4abd7e5 100644 (file)
@@ -17,7 +17,6 @@ hacia arriba, -1 = hacia abajo).
 
 "
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Überbindungen können manuell gesetzt werden, indem man die
@@ -30,7 +29,6 @@ Notensystemabständen an, die zweite Zahl zeigt die Richtung an (1 = nach oben,
   doctitlede = "Bindebögen manuell setzen"
 
 
-
 %% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
   texidocfr = "
 Il est possible de graver manuellement les liaisons de tenue, en
index c029f4fdef2723165f0d7317b1b9495270dff403..1517160740583cae6b3e181756e39c56cf632764 100644 (file)
@@ -24,7 +24,6 @@ Para ver más inforamción sobre @code{make-moment}, véase
 
 "
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Die Eigenschaft @code{tupletSpannerDuration} bestimmt, wie lange jede
@@ -41,7 +40,6 @@ Mehr Information über @code{make-moment} gibt es in \"Verwaltung der Zeiteinhei
   doctitlede = "Mehrere Triolen notieren, aber nur einmal \\times benutzen"
 
 
-
 %% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
   texidocfr = "
 La propriété @code{tupletSpannerDuration} spécifie la longueur voulue de
@@ -66,8 +64,8 @@ In the example, two triplets are shown, while @code{\\times} was
 entered only once.
 
 
-For more information about @code{make-moment}, see \"Time
-administration\".
+Read the relevant sections of the Notation Reference for more
+information about @code{make-moment}.
 
 "
   doctitle = "Entering several tuplets using only one \\times command"
index d8f2433994025c8020a1f5ff19270bd2233778b8..8ed3f65f26696995f1a4a92759e9499fa5945c1d 100644 (file)
@@ -15,7 +15,6 @@ derecha.
 "
   doctitlees = "Digitaciones, indicación del número de cuerda y digitaciones de mano derecha"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Dieses Beispiel kombiniert Fingersatz für die linke Hand, Saitennummern
@@ -23,7 +22,6 @@ und Fingersatz für die rechte Hand.
 
 "
   doctitlede = "Fingersatz, Saitennummern und Fingersatz für die rechte Hand"
-
 %% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
 
   texidocfr = "
index 74748e48c06ced53c3a11d0cffba8be2c4029d3a..b1158c836f74860887cfe300f9769363900b63f9 100644 (file)
@@ -41,7 +41,6 @@ no tiene nada que ver con el @code{\\set} de dos notas por detrás.)
   doctitlees = "Corchetes rectos y extremos de barra sueltos"
 
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Gerade Fähnchen an einzelnen Noten und überstehende Balkenenden bei
@@ -72,7 +71,6 @@ Beispiel haben nichts mit dem @code{\\set}-Befehl zwei Noten vorher zu tun.)
   doctitlede = "Gerade Fähnchen und überstehende Balkenenden"
 
 
-
 %% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
   texidocfr = "
 En combinant @code{stemLeftBeamCount}, @code{stemRightBeamCount} et des
@@ -141,7 +139,7 @@ carry both a left- and right-pointing flat flag. Do this with paired
 
 (Note that @code{\\set stemLeftBeamCount} is always equivalent to
 @code{\\once \\set}.  In other words, the beam count settings are not
-\"sticky\", so the pair of flat flags attached to the lone
+@qq{sticky}, so the pair of flat flags attached to the lone
 @code{c'16[]} in the last example have nothing to do with the
 @code{\\set} two notes prior.)
 
index e7807527150a8a55b81b6a9fb406b556658d5250..805b623e2931222ce9b0fbf3157c91cd2fce1381 100644 (file)
@@ -8,7 +8,7 @@
 
   texidoc = "
 It is possible to indicate special articulation techniques such as a
-flute's \"tongue slap\" by replacing the note head with the appropriate
+flute @qq{tongue slap} by replacing the note head with the appropriate
 glyph.
 
 "
@@ -18,13 +18,17 @@ glyph.
 slap =
 #(define-music-function (parser location music) (ly:music?)
 #{
-  \override NoteHead #'stencil = #(lambda (grob)
-    (grob-interpret-markup grob
-      (markup #:musicglyph "scripts.sforzato")))
-  \override NoteHead #'extra-offset = #'(0.1 . 0.0)
+  \override NoteHead #'stencil =
+    #(lambda (grob)
+       (grob-interpret-markup grob
+        (markup #:musicglyph "scripts.sforzato")))
+  \override NoteHead #'stem-attachment =
+    #(lambda (grob)
+       (let ((thickness (ly:staff-symbol-line-thickness grob)))
+         (cons 1 (/ thickness 2))))
   $music
   \revert NoteHead #'stencil
-  \revert NoteHead #'extra-offset
+  \revert NoteHead #'stem-attachment
 #})
 
 \relative c' {
index 28b5b2bc243b7211d9b5df455095fcaa1cbe94d0..7c8aef34d713c7342bedc3d80e8b5c6560d47ad4 100644 (file)
@@ -4,6 +4,17 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: c39256c433c9e0d80429fb768cde5834541524f8
+  texidocfr = "
+Quand LilyPond est dépassé, la propriété @code{force-hshift} de l'objet
+@code{NoteColumn}, et des silences à hauteur déterminée, peuvent
+s'avérer utiles pour dicter au programme les choix de placement.  On
+travaille ici en espace de portée.
+
+"
+  doctitlefr = "Décalage horizontal forcé"
+
+
   lsrtags = "simultaneous-notes, tweaks-and-overrides"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -17,7 +28,6 @@ texidoces = "
 
 "
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Wenn es zu Zusammenstößen kommt, kann mit folgender Lösung eine andere
index dbaa7a40e68545422c7646cd31274a72f0e6836f..5542700f46d3dac13e5c59fd989349dd7985eb7b 100644 (file)
@@ -14,7 +14,6 @@ sobreescribiendo algunas de sus propiedades.
 "
   doctitlees = "Líneas de rejilla: modificar su aspecto"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Die Erscheinung der Gitternetzlinien kann durch einige Eigenschaften
index ff0137e9229f3676bc5da9f1cb2bf36bf1270528..06fe1834f54119abe0a28cc0c4135fb435098eab 100644 (file)
@@ -14,7 +14,6 @@ además de las notas de la melodía, acordes y diagramas de posiciones.
 "
   doctitlees = "Ritmos rasgueados de guitarra"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 In Guitarrennotation kann neben Melodie, Akkordbezeichnungen und
@@ -24,7 +23,6 @@ Bunddiagrammen auch der Schlagrhythmus angegeben werden.
   doctitlede = "Schlagrhythmus für Guitarren"
 
 
-
 %% Translation of GIT committish: fa7695ea860d7ab2db86581dd5f8bc4f413f6705
   texidocfr = "
 En matière de notation pour guitare, il arrive que soient indiqués les
index 91e8c24043d91f3041c59c855e3eee5b1f85c637..b1dca2a67afd86cc1a105317775aaaa1bd8dba56 100644 (file)
@@ -4,6 +4,16 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Les crescendos et decrescendos indiqués textuellement -- tels que
+@emph{cresc.} ou @emph{dim.} -- sont suivis de pointillés qui montrent
+leur étendue.  On peut empêcher l'impression de ces pointillés avec :
+
+"
+  doctitlefr = "Masquage de l'extension des nuances textuelles"
+
+
   lsrtags = "expressive-marks"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -15,7 +25,6 @@ Esta línea se puede suprimir de la siguiente manera:
 "
   doctitlees = "Ocultar la línea de extensión de las expresiones textuales de dinámica"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Dynamik-Texte (wie cresc. und dim.) werden mit einer gestrichelten Linie
index 6d8b7036cc758fa02145d3955d3e5d15bc81258a..a751f9ed334c30c50531ffb05f66a124aa285ef8 100644 (file)
@@ -7,11 +7,11 @@
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
   texidoc = "
-Some dynamic expressions involve additional text, like \"sempre pp\".
-Since lilypond aligns all dynamics centered on the note, the \\pp would
-be displayed way after the note it applies to.
+Some dynamic expressions involve additional text, like @qq{sempre pp}.
+Since dynamics are usually centered under the note, the \\pp would be
+displayed way after the note it applies to.
 
-To correctly align the \"sempre \\pp\" horizontally, so that it is
+To correctly align the @qq{sempre pp} horizontally, so that it is
 aligned as if it were only the \\pp, there are several approaches:
 
 * Simply use @code{\\once\\override DynamicText #'X-offset = #-9.2}
@@ -27,9 +27,9 @@ or dynamics to be shown in that position.
 Drawback: @code{\\once\\override} is needed for every invocation!
 
 * Set the dimensions of the additional text to 0 (using
-@code{#:with-dimensions '(0 . 0) '(0 . 0)}). Drawback: To lilypond
-\"sempre\" has no extent, so it might put other stuff there and create
-collisions (which are not detected by the collision dection!). Also,
+@code{#:with-dimensions '(0 . 0) '(0 . 0)}). Drawback: To LilyPond
+@qq{sempre} has no extent, so it might put other stuff there and create
+collisions (which are not detected by the collision detection!). Also,
 there seems to be some spacing, so it's not exactly the same alignment
 as without the additional text
 
index 46710df5a18c9af6e9e6386149130c2f3acfd923..334a5c1bfd37955ec7e9f93b732b11b2667b6545 100644 (file)
@@ -1,11 +1,10 @@
-%% Do not edit this file; it is automatically
-%% generated from LSR http://lsr.dsi.unimi.it
-%% This file is in the public domain.
+% Do not edit this file; it is automatically
+% generated from Documentation/snippets/new
+% This file is in the public domain.
+%% Note: this file works from version 2.13.4
 \version "2.13.4"
 
 \header {
-  lsrtags = "staff-notation, ancient-notation"
-
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
   texidoces = "
 Los «incipit» se pueden escribir utilizando el grob del nombre del
@@ -14,48 +13,56 @@ nombre del instrumento y del incipit."
 
  doctitlees = "Incipit"
 
+  lsrtags = "staff-notation, ancient-notation"
   texidoc = "
 Incipits can be added using the instrument name grob, but keeping
 separate the instrument name definition and the incipit definition.
-
 "
   doctitle = "Incipit"
 } % begin verbatim
 
+
 incipit =
 #(define-music-function (parser location incipit-music) (ly:music?)
   #{
     \once \override Staff.InstrumentName #'self-alignment-X = #RIGHT
     \once \override Staff.InstrumentName #'self-alignment-Y = #UP
-    \once \override Staff.InstrumentName #'Y-offset = #4
+    \once \override Staff.InstrumentName #'Y-offset =
+      #(lambda (grob)
+         (+ 4 (system-start-text::calc-y-offset grob)))
     \once \override Staff.InstrumentName #'padding = #0.3
     \once \override Staff.InstrumentName #'stencil =
-    #(lambda (grob)
-       (let* ((instrument-name (ly:grob-property grob 'long-text))
-              (layout (ly:output-def-clone (ly:grob-layout grob)))
-              (music (make-music 'SequentialMusic
-                      'elements (list (make-music 'ContextSpeccedMusic
-                                        'context-type 'MensuralStaff
-                                        'element (make-music 'PropertySet
-                                                   'symbol 'instrumentName
-                                                   'value instrument-name))
-                                      $incipit-music)))
-              (score (ly:make-score music))
-              (mm (ly:output-def-lookup layout 'mm))
-              (indent (ly:output-def-lookup layout 'indent))
-              (width (ly:output-def-lookup layout 'incipit-width))
-              (incipit-width (if (number? width)
-                                 (* width mm)
-                                 (* indent 0.5))))
-         (ly:output-def-set-variable! layout 'indent (- indent incipit-width))
-         (ly:output-def-set-variable! layout 'line-width indent)
-         (ly:output-def-set-variable! layout 'ragged-right #f)
-         (ly:output-def-set-variable! layout 'ragged-last #f)
-         (ly:output-def-set-variable! layout 'system-count 1)
-         (ly:score-add-output-def! score layout)
-         (ly:grob-set-property! grob 'long-text
-               (markup #:score score))
-         (ly:system-start-text::print grob)))
+      #(lambda (grob)
+         (let* ((instrument-name (ly:grob-property grob 'long-text))
+                (layout (ly:output-def-clone (ly:grob-layout grob)))
+                (music (make-sequential-music
+                        (list (context-spec-music
+                               (make-sequential-music
+                                (list (make-property-set
+                                       'instrumentName instrument-name)
+                                      (make-grob-property-set
+                                       'VerticalAxisGroup
+                                       'Y-extent '(-4 . 4))))
+                               'MensuralStaff)
+                              $incipit-music)))
+                (score (ly:make-score music))
+                (mm (ly:output-def-lookup layout 'mm))
+                (indent (ly:output-def-lookup layout 'indent))
+                (width (ly:output-def-lookup layout 'incipit-width))
+                (incipit-width (if (number? width)
+                                   (* width mm)
+                                   (* indent 0.5))))
+
+           (ly:output-def-set-variable! layout 'indent (- indent
+                                                          incipit-width))
+           (ly:output-def-set-variable! layout 'line-width indent)
+           (ly:output-def-set-variable! layout 'ragged-right #f)
+           (ly:output-def-set-variable! layout 'ragged-last #f)
+           (ly:output-def-set-variable! layout 'system-count 1)
+           (ly:score-add-output-def! score layout)
+           (ly:grob-set-property! grob 'long-text
+                                  (markup #:score score))
+           (system-start-text::print grob)))
   #})
 
 %%%%%%%%%%%%%%%%%%%%%%%%%
index 132dfdca6be39741f2a683cc11a30abe13129e4d..a85a90d7f87878823d19d5f36ed44d8256f27db9 100644 (file)
@@ -19,7 +19,6 @@ configurar a la forma de corchete en el contexto de @code{PianoStaff}.
 "
   doctitlees = "Indicar acordes de pentagrama cruzado con corchetes de arpegio"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Eine Arpeggioklammer kann anzeigen, dass Noten auf zwei unterschiedlichen
index f51c172178d20052d4a1319afb115f5cbe933191..bf9761156aaff15fe1ba680acfd522e0a793a04b 100644 (file)
@@ -4,6 +4,16 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Une surcharge de la propriété @code{'text} de l'objet
+@code{BreathingSign} permet de créer une marque de césure.  LilyPond
+dispose également d'une variante courbée.
+
+"
+  doctitlefr = "Insertion d'une césure"
+
+
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -15,7 +25,6 @@ una marca de cesura curva.
 "
   doctitlees = "Insertar una cesura"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
  texidocde = "
 Zäsurzeichen können erstellt werden, indem die @code{'text}-Eigenschaft
index cd6f600fd9c576f22a0e9d86b1709c620c16ce35..6b96983bcca2063f0a47cca0c26ea989bea9e223 100644 (file)
@@ -4,6 +4,15 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+  texidocfr = "
+Des symboles de pourcentage isolés peuvent aussi être obtenus, au
+moyen d'un silence multi-mesures dont on modifie l'aspect :
+
+"
+  doctitlefr = "Répétition en pourcent isolée"
+
+
   lsrtags = "repeats"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -15,7 +24,6 @@ impresión distinta:
 "
   doctitlees = "Símbolos de porcentaje sueltos"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Isolierte Prozentwiederholungen können auch ausgegeben werden.  Das wird
index 7e057b9ae8f64ecf6d67cd961358dc07eb339db8..1b4585abb2c363f4c4690aed97cf99ee35050036 100644 (file)
@@ -17,7 +17,6 @@ dentro de una sección @code{\\transpose}.
 "
   doctitlees = "Plantilla para combo de jazz"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Hier ist ein ziemlich kompliziertes Beispiel für ein Jazz-Ensemble. Achtung:
@@ -28,7 +27,6 @@ sich die Noten innerhalb eines @code{\transpose}-Abschnitts befinden.
 "
 
   doctitlede = "Vorlage für Jazz-Combo"
-
 %% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
   texidocfr = "
 Bien que compliqué de prime abord, voici un canevas tout à fait indiqué
index a41a672e6163b78a4e0ea094af08971d6776d503..a2417e3fc4c07d2520d7cb1c77d6ab45ba7173fe 100644 (file)
@@ -30,6 +30,17 @@ Hinweisen, wo diese Datei gespeichert ist)."
 
   doctitlede = "Makam-Beispiel"
 
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+Le «makam» est une forme de mélodie turque qui utilise des altérations
+d'un neuvième de ton.  Consultez le fichier d'initialisation
+@code{makam.ly} pour plus de détails sur les hauteurs et altérations
+utilisées (voir le chapitre 4.6.3 - Autres sources d'information du
+manuel d'initiation pour le localiser).
+
+"
+  doctitlefr = "Exemple de musique « Makam »"
+
   lsrtags = "pitches, world-music"
   texidoc = "
 Makam is a type of melody from Turkey using 1/9th-tone microtonal
index 2b1e8e5e69781aae2d0b85dccd2ae815b81849ec..fdc60c116d8f5049b9eccfaeb62784238cd2d29e 100644 (file)
@@ -8,7 +8,7 @@
 
   texidoc = "
 Setting the @code{transparent} property will cause an object to be
-printed in \"invisible ink\": the object is not printed, but all its
+printed in @qq{invisible ink}: the object is not printed, but all its
 other behavior is retained.  The object still takes up space, it takes
 part in collisions, and slurs, ties and beams can be attached to it.
 
index 1661f6012ff4e4acfb808a70cc108439de41ad59..32316e5487d2cee5198671f918cd2bd286a8fc3e 100644 (file)
@@ -54,6 +54,28 @@ gesetzt.
   doctitlede = "Legatobögen mit kompliziertem Strichelmuster
   definieren"
 
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Grâce à la propriété @code{dash-definition}, une liaison d'articulation
+peut être formée de traits discontinus variables.
+@code{dash-definition} se compose d'une liste de
+@code{segments-discontinus} (@emph{dash-elements}).  Chaque
+@code{segment-discontinu} contient une liste de paramètres qui
+déterminent le comportement du trait pour une section de la liaison.  
+
+Cette liaison se définit selon le paramètre de Bézier @code{t} qui est
+compris entre 0 (l'extrémité gauche de la liaison) et 1 (l'extrémité
+droite de la liaison).  Chaque @code{segment-discontinu} se composera
+selon la liste @code{(t-début t-fin segment-style segment-taille)}.   
+La portion de liaison allant de @code{t-début} à @code{t-fin} aura un
+trait @code{segment-style} de longueur @code{segment-taille}.
+@code{segment-taille} est exprimé en espace de portée ; un
+@code{segment-style} à 1 donnera un trait plein.
+
+"
+  doctitlefr = "Dessin d'une liaison d'articulation au trait discontinu"
+
+
   lsrtags = "rhythms, expressive-marks"
   texidoc = "
 Slurs can be made with complex dash patterns by defining
index 0710f99e2362e50172463e2761584c693fa165f3..a64904c8ceced42a527d8a3c076691aacaa00c57 100644 (file)
@@ -17,7 +17,6 @@ destacar, utilizando la propiedad @code{line-positions} del objeto
 "
   doctitlees = "Hacer unas líneas del pentagrama más gruesas que las otras"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Für den pädagogischen Einsatz kann eine Linie des Notensystems dicker
index 2b7ed95a4787aeb19a1fd9bb24a3a346821448ff..a09a2e74f1ec532a1d48f5811df49230bfea88cd 100644 (file)
@@ -18,7 +18,6 @@ propiedad @code{transparent}.
 
   doctitlees = "Disposición Mensurstriche (líneas divisorias entre pentagramas)"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Das Mensurstiche-Layout, in welchem die Taktlinien nicht auf den Systemen,
index b8f20038a63f53c8fe76d1c3639478cfbe92aefc..d2f88782414b96d718f583a69d334bc677a2ead8 100644 (file)
@@ -4,6 +4,22 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Les raccourcis sont répertoriés dans le fichier
+@code{ly/script-init.ly}, dans lequel on retrouve les variables
+@code{dashHat}, @code{dashPlus}, @code{dashDash}, @code{dashBar},
+@code{dashLarger}, @code{dashDot}, et @code{dashUnderscore} ainsi que
+leur valeur par défaut.  Ces valeurs peuvent être modifiées selon vos
+besoins.  Il suffit par exemple, pour affecter au raccourci @code{-+}
+(@code{dashPlus}) le symbole du trille en lieu et place du @code{+}
+(caractère plus), d'assigner la valeur @code{trill} à la variable
+@code{dashPlus} :
+
+"
+  doctitlefr = "Modification de la signification des raccourcis pour les signes d'articulation"
+
+
   lsrtags = "expressive-marks"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -21,7 +37,6 @@ semitrino en lugar del símbolo predeterminado +, asigne el valor
 "
   doctitlees = "Modificar los valores predeterminados para la notación abreviada de las articulaciones"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
  texidocde = "
 Die Abkürzungen sind in der Datei @samp{ly/script-init.ly} definiert, wo
index 0af70ea2331ac688a73227f7773e0116ed387a7f..47b431235d2d54b6a7621690f83f5af6f37ea886 100644 (file)
@@ -25,7 +25,6 @@ longitud del texto, éste aparecerá centrado.
 
 doctitlees = "Marcado de silencios multicompás"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "Textbeschriftungen, die an Mehrtaktpausen gehängt wird,
 wird über oder unter der Pause zentriert.  Lange Beschriftungen
@@ -43,7 +42,6 @@ ist."
   doctitlede = "Textbeschriftung und Mehrtaktpausen"
 
 
-
 %% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
   texidocfr = "
 Lorsque du texte est attaché à un silence multi-mesures, il sera centré
index 81c634e52f93b11aeac7291acee1369f641e07b1..65e785b79a51182aa03730ffc0cf3701f485e543 100644 (file)
@@ -24,7 +24,6 @@ todos los pentagramas. Las posibilidades son
 "
   doctitlees = "Anidado de grupos de pentagramas"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Die Eigenschaft @code{systemStartDelimiterHierarchy} kann eingesetzt
diff --git a/Documentation/snippets/new/incipit.ly b/Documentation/snippets/new/incipit.ly
new file mode 100644 (file)
index 0000000..8e8c6ce
--- /dev/null
@@ -0,0 +1,277 @@
+\version "2.13.4"
+
+\header {
+  lsrtags = "staff-notation, ancient-notation"
+  texidoc = "
+Incipits can be added using the instrument name grob, but keeping
+separate the instrument name definition and the incipit definition.
+"
+  doctitle = "Incipit"
+}
+
+incipit =
+#(define-music-function (parser location incipit-music) (ly:music?)
+  #{
+    \once \override Staff.InstrumentName #'self-alignment-X = #RIGHT
+    \once \override Staff.InstrumentName #'self-alignment-Y = #UP
+    \once \override Staff.InstrumentName #'Y-offset =
+      #(lambda (grob)
+         (+ 4 (system-start-text::calc-y-offset grob)))
+    \once \override Staff.InstrumentName #'padding = #0.3
+    \once \override Staff.InstrumentName #'stencil =
+      #(lambda (grob)
+         (let* ((instrument-name (ly:grob-property grob 'long-text))
+                (layout (ly:output-def-clone (ly:grob-layout grob)))
+                (music (make-sequential-music
+                        (list (context-spec-music
+                               (make-sequential-music
+                                (list (make-property-set
+                                       'instrumentName instrument-name)
+                                      (make-grob-property-set
+                                       'VerticalAxisGroup
+                                       'Y-extent '(-4 . 4))))
+                               'MensuralStaff)
+                              $incipit-music)))
+                (score (ly:make-score music))
+                (mm (ly:output-def-lookup layout 'mm))
+                (indent (ly:output-def-lookup layout 'indent))
+                (width (ly:output-def-lookup layout 'incipit-width))
+                (incipit-width (if (number? width)
+                                   (* width mm)
+                                   (* indent 0.5))))
+
+           (ly:output-def-set-variable! layout 'indent (- indent
+                                                          incipit-width))
+           (ly:output-def-set-variable! layout 'line-width indent)
+           (ly:output-def-set-variable! layout 'ragged-right #f)
+           (ly:output-def-set-variable! layout 'ragged-last #f)
+           (ly:output-def-set-variable! layout 'system-count 1)
+           (ly:score-add-output-def! score layout)
+           (ly:grob-set-property! grob 'long-text
+                                  (markup #:score score))
+           (system-start-text::print grob)))
+  #})
+
+%%%%%%%%%%%%%%%%%%%%%%%%%
+
+global = {
+  \set Score.skipBars = ##t
+  \key g \major
+  \time 4/4
+
+  % the actual music
+  \skip 1*8
+
+  % let finis bar go through all staves
+  \override Staff.BarLine #'transparent = ##f
+
+  % finis bar
+  \bar "|."
+}
+
+discantusIncipit = <<
+  \new MensuralVoice = "discantusIncipit" <<
+    \repeat unfold 9 { s1 \noBreak }
+    {
+      \clef "neomensural-c1"
+      \key f \major
+      \time 2/2
+      c''1.
+    }
+  >>
+  \new Lyrics \lyricsto discantusIncipit { IV- }
+>>
+
+discantusNotes = {
+  \transpose c' c'' {
+    \clef "treble"
+    d'2. d'4 |
+    b e' d'2 |
+    c'4 e'4.( d'8 c' b |
+    a4) b a2 |
+    b4.( c'8 d'4) c'4 |
+    \once \override NoteHead #'transparent = ##t
+    c'1 |
+    b\breve |
+  }
+}
+
+discantusLyrics = \lyricmode {
+  Ju -- bi -- |
+  la -- te De -- |
+  o, om --
+  nis ter -- |
+  ra, __ om- |
+  "..." |
+  -us. |
+}
+
+altusIncipit = <<
+  \new MensuralVoice = "altusIncipit" <<
+    \repeat unfold 9 { s1 \noBreak }
+    {
+      \clef "neomensural-c3"
+      \key f \major
+      \time 2/2
+      r1 f'1.
+    }
+  >>
+  \new Lyrics \lyricsto altusIncipit { IV- }
+>>
+
+altusNotes = {
+  \transpose c' c'' {
+    \clef "treble"
+    % two measures
+    r2 g2. e4 fis g |
+    a2 g4 e |
+    fis g4.( fis16 e fis4) |
+    g1 |
+    \once \override NoteHead #'transparent = ##t
+    g1 |
+    g\breve |
+  }
+}
+
+altusLyrics = \lyricmode {
+  % two measures
+  Ju -- bi -- la -- te |
+  De -- o, om -- |
+  nis ter -- ra, |
+  "..." |
+  -us. |
+}
+
+tenorIncipit = <<
+  \new MensuralVoice = "tenorIncipit" <<
+    \repeat unfold 9 { s1 \noBreak }
+    {
+      \clef "neomensural-c4"
+      \key f \major
+      \time 2/2
+      r\longa
+      r\breve
+      r1 c'1.
+    }
+  >>
+  \new Lyrics \lyricsto tenorIncipit { IV- }
+>>
+
+tenorNotes = {
+  \transpose c' c' {
+    \once \override Staff.VerticalAxisGroup #'minimum-Y-extent = #'(-6 . 3)
+    \clef "treble_8"
+    R1 |
+    R1 |
+    R1 |
+    % two measures
+    r2 d'2. d'4 b e' |
+    \once \override NoteHead #'transparent = ##t
+    e'1 |
+    d'\breve |
+  }
+}
+
+tenorLyrics = \lyricmode {
+  % two measures
+  Ju -- bi -- la -- te |
+  "..." |
+  -us.
+}
+
+bassusIncipit = <<
+  \new MensuralVoice = "bassusIncipit" <<
+    \repeat unfold 9 { s1 \noBreak }
+    {
+      \clef "bass"
+      \key f \major
+      \time 2/2
+      %% incipit
+      r\maxima
+      f1.
+    }
+  >>
+  \new Lyrics \lyricsto bassusIncipit { IV- }
+>>
+
+bassusNotes = {
+  \transpose c' c' {
+    \clef "bass"
+    R1 |
+    R1 |
+    R1 |
+    R1 |
+    g2. e4 |
+    \once \override NoteHead #'transparent = ##t
+    e1 |
+    g\breve |
+  }
+}
+
+bassusLyrics = \lyricmode {
+  Ju -- bi- |
+  "..." |
+  -us.
+}
+
+\score {
+  <<
+    \new StaffGroup = choirStaff <<
+      \new Voice = "discantusNotes" <<
+        \global
+        \set Staff.instrumentName = #"Discantus"
+        \incipit \discantusIncipit
+        \discantusNotes
+      >>
+      \new Lyrics = "discantusLyrics" \lyricsto discantusNotes { \discantusLyrics }
+      \new Voice = "altusNotes" <<
+        \global
+        \set Staff.instrumentName = #"Altus"
+        \incipit \altusIncipit
+        \altusNotes
+      >>
+      \new Lyrics = "altusLyrics" \lyricsto altusNotes { \altusLyrics }
+      \new Voice = "tenorNotes" <<
+        \global
+        \set Staff.instrumentName = #"Tenor"
+        \incipit \tenorIncipit
+        \tenorNotes
+      >>
+      \new Lyrics = "tenorLyrics" \lyricsto tenorNotes { \tenorLyrics }
+      \new Voice = "bassusNotes" <<
+        \global
+        \set Staff.instrumentName = #"Bassus"
+        \incipit \bassusIncipit
+        \bassusNotes
+      >>
+      \new Lyrics = "bassusLyrics" \lyricsto bassusNotes { \bassusLyrics }
+    >>
+  >>
+  \layout {
+    \context {
+      \Score
+      %% no bar lines in staves or lyrics
+      \override BarLine #'transparent = ##t
+    }
+    %% the next two instructions keep the lyrics between the bar lines
+    \context {
+      \Lyrics
+      \consists "Bar_engraver"
+      \consists "Separating_line_group_engraver"
+    }
+    \context {
+      \Voice
+      %% no slurs
+      \override Slur #'transparent = ##t
+      %% Comment in the below "\remove" command to allow line
+      %% breaking also at those bar lines where a note overlaps
+      %% into the next measure.  The command is commented out in this
+      %% short example score, but especially for large scores, you
+      %% will typically yield better line breaking and thus improve
+      %% overall spacing if you comment in the following command.
+      %%\remove "Forbid_line_break_engraver"
+    }
+    indent = 6\cm
+    incipit-width = 4\cm
+  }
+}
index a3124a312b9965a56054e45e98613b056ad8b9ac..731381678a18a678b84ce49ae1643685b804a935 100644 (file)
@@ -3,13 +3,13 @@
 \header {
   lsrtags = "expressive-marks, unfretted-strings"
   texidoc = "
-A snap-pizzicato (also known as \"Bartok pizzicato\") is a \"strong
+A snap-pizzicato (also known as @qq{Bartok pizzicato}) is a @qq{strong
 pizzicato where the string is plucked vertically by snapping and
-rebounds off the fingerboard of the instrument\" (Wikipedia).  It is
-denoted by a cicle with a vertical line going from the center upwards
+rebounds off the fingerboard of the instrument} (Wikipedia).  It is
+denoted by a circle with a vertical line going from the center upwards
 outside the circle.
 "
-  doctitle = "Snap-pizzicato (\"Bartok pizzicato\")"
+  doctitle = "Snap-pizzicato (@qq{Bartok pizzicato})"
 }
 
 \relative c' {
index 62087ccdd77109b8a73fe28fd7adb009388cbe90..f0ab4ec5cd01e42e8763373a54e197b3c520d370 100644 (file)
@@ -57,6 +57,35 @@ für alle Oktaven gelten.
 Hier ein Beispiel einer möglichen Tonart für eine Ganztonleiter:
 "
 
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+La commande @code{\\key} détermine la propriété @code{keySignature} d'un 
+contexte @code{Staff}.
+
+Des armures inhabituelles peuvent être spécifiées en modifiant
+directement cette propriété. Il s'agit en l'occurence de définir une
+liste :
+
+@code{\\set Staff.keySignature = #`(((octave . pas) . altération) ((octave
+. pas) . altération) @dots{})} 
+
+dans laquelle, et pour chaque élément, 
+@code{octave} spécifie l'octave (0@tie{}pour celle allant du
+do@tie{}médium au si supérieur), @code{pas} la note dans cette octave
+(0@tie{}pour@tie{}do et 6@tie{}pour@tie{}si), et @code{altération} sera
+@code{,SHARP ,FLAT ,DOUBLE-SHARP} etc.  (attention à la virgule en
+préfixe). 
+
+Une formulation abrégée -- @code{(pas . altération)} -- signifie que
+l'altération de l'élément en question sera valide quel que soit l'octave.
+
+
+Voici, par exemple, comment générer une gamme par ton :
+
+"
+  doctitlefr = "Armures inhabituelles"
+
+
   lsrtags = "pitches, staff-notation"
   texidoc = "
 The commonly used @code{\\key} command sets the @code{keySignature}
index cc291bbd3d4c45750ad4ef15dadab1075bc66bdb..645ea5dd2d008069516b5aca7b2b7062eab91944 100644 (file)
@@ -19,7 +19,6 @@ a Do antes de ser asignada a una variable.
 
 "
   doctitlees = "Plantilla de orquesta, coro y piano"
-
 %% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
   texidocfr = "
 Ce canevas illustre l'utilisation de contextes @code{StaffGroup} pour
index 2ba3dda7ae7fc263e0b45908ef2381893643c667..c66bf31d6e72c84cc36373b6eef51d7249790911 100644 (file)
@@ -4,6 +4,19 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+En interne, la fonction @code{\\ottava} détermine les
+propriétés @code{ottavation} (p.ex. en @code{\"8va\"} ou @code{\"8vb\"})
+et @code{centralCPosition}.  Vous pouvez modifier le texte d'une marque
+d'octaviation en définissant @code{ottavation} après avoir fait appel
+à @code{ottava} :
+
+"
+
+  doctitlefr = "Texte des marques d'octaviation"
+
+
   lsrtags = "pitches, text"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -18,7 +31,6 @@ instrucción @code{\\ottava}.
 
   doctitlees = "Texto de octava alta y baja"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Intern setzt die @code{set-octavation}-Funktion die Eigenschaften
@@ -33,9 +45,9 @@ doctitlede = "Ottava-Text"
 
   texidoc = "
 Internally, @code{\\ottava} sets the properties @code{ottavation} (for
-example, to @code{\"8va\"} or @code{\"8vb\"}) and
-@code{middleCPosition}.  To override the text of the bracket, set
-@code{ottavation} after invoking @code{\\ottava}.
+example, to @code{8va} or @code{8vb}) and @code{middleCPosition}.  To
+override the text of the bracket, set @code{ottavation} after invoking
+@code{\\ottava}.
 
 "
   doctitle = "Ottava text"
index 68edac645dd92fefc0a7fe26a748e3b7fc20f9c0..be7d66b55f69a4efc2ec764f08d9691f4738a50f 100644 (file)
@@ -4,6 +4,15 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+  texidocfr = "
+Le numéro de mesure répétée sera imprimé à intervalle régulier si vous
+déterminez la propriété de contexte @code{repeatCountVisibility}.
+
+"
+  doctitlefr = "Affichage du numéro de répétition en pourcent"
+
+
   lsrtags = "repeats, tweaks-and-overrides"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -15,7 +24,6 @@ la propiedad de contexto @code{repeatCountVisibility}.
 "
   doctitlees = "Visibilidad del contador de repeticiones de tipo porcentaje"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Prozentwiederholungszähler können in regelmäßigen Intervallen angezeigt
index 68a945b6d34105561dbead895e9a38bb4e979577..62a8d5eb6e1bbc866fd3ae89a5f6ff060b5b22ff 100644 (file)
@@ -4,6 +4,16 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+  texidocfr = "
+Les répétitions de plus de 2 mesures sont surmontées d'un compteur,
+si l'on active la propriété @code{countPercentRepeats} comme le montre
+l'exemple suivant :
+
+"
+  doctitlefr = "Compteur de répétition en pourcent"
+
+
   lsrtags = "repeats"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -15,7 +25,6 @@ ve en este ejemplo:
 "
   doctitlees = "Percent repeat counter"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Ganztaktwiederholungen mit mehr als zwei Wiederholungen erhalten einen
index 8d666031d24f663dc556db362f92ac57c9074c68..643f8bf8bf7b387b57ee906d5ff3943adba873c4 100644 (file)
@@ -16,7 +16,6 @@ sincopados se deben barrar manualmente.
 
 "
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Dieses künstliche Beispiel zeigt, wie sowohl automatische als auch
@@ -28,7 +27,6 @@ gesetzt werden.
   doctitlede = "Zeilenumbrüche bei N-tolen mit Balken erlauben"
 
 
-
 %% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
   texidocfr = "
 Cet exemple peu académique démontre comment il est possible d'insérer un saut
index e2b50009fb9b2a08528349101f2fbdb27404054e..57d814bbfab6a6b2042fcbb7aa7f14f60ebefd1f 100644 (file)
@@ -14,14 +14,12 @@ notas.
 "
   doctitlees = "Plantilla de piano (sencilla)"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Hier ein einfaches Klaviersystem.
 
 "
   doctitlede = "Vorlage für einfache Klaviernotation"
-
 %% Translation of GIT committish: 9ba35398048fdf1ca8c83679c7c144b1fd48e75b
   texidocfr = "
 Voici une simple partition pour piano avec quelques notes.
index 44c507a77fa24002f5052b36b4b59fe8a7d3ea97..1c3e3e77725f145f8d563c07518f5f0fda423f66 100644 (file)
@@ -14,12 +14,10 @@ se puede centrar entre los pentagramas de un sistema de piano.
 "
   doctitlees = "Plantilla de piano con letra centrada"
 
-
 %% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
   texidocja = "
 旋律と歌詞のための譜表を持つ代わりに、歌詞をピアノ譜の 2 つの譜の間に置くことができます。
 "
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Anstatt ein eigenes System für Melodie und Text zu schreiben, können
@@ -27,7 +25,6 @@ Sie den Text auch zwischen die beiden Klaviersysteme schreiben
 (und damit das zusätzliche System für die Gesangstimme auslassen).
 "
 
-
 %% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
   texidocfr = "
 Lorsque la mélodie est doublée au piano, cela ne nécessite pas forcément
index 9aa1c06d8793c7414ec215a5bd94e191ea348685..e2bcdb9032c71b399c363ee01ed446baef838e22 100644 (file)
@@ -14,12 +14,10 @@ melodía y la letra, y el acompañamiento de piano por debajo.
 "
   doctitlees = "Plantilla de piano con melodía y letra"
 
-
 %% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
   texidocja = "
 これは一般的な歌曲のフォーマットです: 旋律と歌詞を持つ譜表と、その下にピアノ伴奏譜があります。
 "
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Das nächste Beispiel ist typisch für ein Lied: Im oberen System die
@@ -28,7 +26,6 @@ Melodie mit Text, darunter Klavierbegleitung.
 
   doctitlede = "Vorlage für Klavier und Gesangsstimme"
 
-
 %% Translation of GIT committish: 9ba35398048fdf1ca8c83679c7c144b1fd48e75b
   texidocfr = "
 Il s'agit du format classique pour le chant : une portée pour la mélodie
index 9d9c882e4ad69ad506df676b2ff3637d9c0ffbf2..619dbd5dcbb9aa44aa186dfc613e7315c5ae42fa 100644 (file)
@@ -15,7 +15,6 @@ propiedad específica, como se muestra en el ejemplo siguiente.
 "
   doctitlees = "Posicionamiento de digitaciones de mano derecha"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Man kann die Positionierung von Fingersatz der rechten Hand besser
@@ -24,7 +23,6 @@ das folgende Beispiel zeigt:
 
 "
   doctitlede = "Positionierung von Fingersatz der rechten Hand"
-
 %% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
 
   texidocfr = "
index b4de7304e00c6108e3278a7219307eab870a2e07..f41dabb669d0829fd15b317bf1e11021a9a0c11f 100644 (file)
@@ -14,7 +14,6 @@ en una pauta normal.
 "
   doctitlees = "Polifonía en tablaturas"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Polyphonie kann in einer Tabulatur (@code{TabStaff}) genauso wie in einem
@@ -22,7 +21,6 @@ normalen Notensystem erstellt werden.
 
 "
   doctitlede = "Polyphonie in einer Tabulatur"
-
 %% Translation of GIT committish: 3f880f886831b8c72c9e944b3872458c30c6c839
 
   texidocfr = "
index fbe0556f136eb340cb0d397f977999941a960c58..fd971d80b22b0cc21c26709859826fec6ccdd9f2 100644 (file)
@@ -21,7 +21,6 @@ izquierda de las columnas musicales de las notas principales.
   doctitlees = "Posicionamiento de las notas de adorno con espacio flotante"
 
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Wenn man die Eigenschaft @code{'strict-grace-spacing} aktiviert,
@@ -34,7 +33,6 @@ Hauptnote gesetzt.
   doctitlede = "Positionierung von Verzierungen mit verschiebbarem Platz"
 
 
-
 %% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
   texidocfr = "
 Lorsque vous activez la propriété @code{'strict-grace-spacing},
index 6990621467d6656caafa44f094845d17041f223f..5ba510940883302745d1a4cb461ed30562705e0c 100644 (file)
@@ -19,7 +19,6 @@ colocación de los silencios multicompás se puede controlar como se
 ve a continuación:
 
 "
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Anders als bei normalen Pausen gibt es keinen direkten Befehl, um die
@@ -32,7 +31,6 @@ werden:
   doctitlede = "Positionierung von Ganztaktpausen"
 
 
-
 %% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
   texidocfr = "
 Si l'on peut positionner verticalement un silence simple en le
index 83b59ea62a44881cf123dee704f4c60d1a94d72b..01a5ac26e09e4ce4200e2d1b0bdf5e129ddc1a61 100644 (file)
@@ -7,8 +7,8 @@
   lsrtags = "repeats, breaks"
 
   texidoc = "
-If you want to place an exiting segno sign and add text like \"D.S. al
-Coda\" next to it where usually the staff lines are you can use this
+If you want to place an exiting segno sign and add text like @qq{D.S.
+al Coda} next to it where usually the staff lines are you can use this
 snippet. The coda will resume in a new line. There is a variation
 documented in this snippet, where the coda will remain on the same
 line.
index c739769702ad4ec3c7ff30a57b78b0f9e89ad41b..0a9cb0412ce7ff03a2a265d94ce53ae25b230c5f 100644 (file)
@@ -4,6 +4,15 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Lorsqu'il vous faut inscrire une annotation à l'intérieur d'une liaison,
+la propriété @code{outside-staff-priority} doît être désactivée.
+
+"
+  doctitlefr = "Positionnement d'une annotation à l'intérieur d'une liaison"
+
+
   lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -16,7 +25,6 @@ impriman por dentro de las ligaduras de expresión.
 "
   doctitlees = "Situar los elementos de marcado de texto por dentro de las ligaduras"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Textbeschriftung kann innerhalb von Bögen gesetzt werden, wenn die
index f5387907fed256c0e6afe6d8afb6d6ff2ebae68d..8d420913920fe88f7370b9d6e65cf45e4d5f9b78 100644 (file)
@@ -19,7 +19,6 @@ dentro del contexto de @code{Staff}.
 
 "
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   doctitlede = "Verhindern, dass zusätzliche Auflösungszeichen automatisch
 hinzugefügt werden"
@@ -30,8 +29,7 @@ ein vorheriges Versetzungszeichen der gleichen Note aufgehoben werden
 soll.  Um dieses Verhalten zu ändern, muss die Eigenschaft
 @code{extraNatural} im @code{Staff}-Kontext auf \"false\" gesetzt werden.
 "
-
-%% Translation of GIT committish: 203ab4a7388f36b9c89c66671498dbaefccbf86e
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
   texidocfr = "
 En accord avec les règles standards de l'écriture musicale, on grave
 un bécarre avant un dièse ou un bémol si on a besoin d'annuler une
@@ -39,12 +37,13 @@ altération précédente.  Pour modifier ce comportement, assignez la propriét
 @code{extraNatural} du contexte @code{Staff} à la valeur @code{##f} (faux).
 "
 
+  doctitlefr = "Suppression des bécarres superflus"
 
   texidoc = "
 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 \"false\" in the @code{Staff} context.
+@code{extraNatural} property to @code{f} in the @code{Staff} context.
 
 
 
index 44e8ec8dceb765ea4fc86639d32848320d61c805..58a227aade839e8153181b0bc2282a272303733b 100644 (file)
@@ -4,6 +4,18 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+Après un changement de tonalité, un bécarre est imprimé pour annuler
+toute altération précédente.  Ceci peut être supprimé en réglant à
+@code{\"false\"} la propriété @code{printKeyCancellation} du contexte
+@code{Staff}. 
+
+"
+
+  doctitlefr = "Suppression des bécarres superflus après un changement de
+tonalité"
+
   lsrtags = "pitches"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -16,7 +28,6 @@ propiedad @code{printKeyCancellation} del contexto @code{Staff}.
 
 "
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 doctitlede = "Auflösungzeichen nicht setzen, wenn die Tonart wechselt"
 
@@ -30,7 +41,7 @@ im @code{Staff}-Kontext auf \"false\" gesetzt wird.
   texidoc = "
 When the key signature changes, natural signs are automatically printed
 to cancel any accidentals from previous key signatures.  This may be
-prevented by setting to \"false\" the @code{printKeyCancellation}
+prevented by setting to @code{f} the @code{printKeyCancellation}
 property in the @code{Staff} context.
 
 "
index 2e6d50b91b51a75a4711748a778f3ea12c39f3e5..7b7e286c9d0477fa46e94ef0da8e1c48e643cf4e 100644 (file)
@@ -4,6 +4,16 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+  texidocfr = "
+Bien qu'allant à l'encontre des usages en matière de gravure, vous
+imprimerez une barre de reprise (@code{|:}) en début de partition si
+vous surchargez la propriété adéquate :
+
+"
+  doctitlefr = "Impression d'une barre de reprise en début de morceau"
+
+
   lsrtags = "repeats, tweaks-and-overrides"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -14,7 +24,6 @@ principio de la pieza, sobreescribiendo la propiedad correspondiente:
 "
   doctitlees = "Imprimir puntos de repetición al prinicpio de la pieza"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Ein @code{|:}-Taktstrich kann auch zu Beginn eines Stückes ausgegeben werden, indem
index b258853f63adc8790acd5c59b60b7eb790c75110..24bfa05fe4284222c5797873da30529322e4d87f 100644 (file)
@@ -19,7 +19,6 @@ imprimen a cada dos compases excepto al final de la línea.
   doctitlees = "Imprimir números de compás a intervalos regulares"
 
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Taktnummern können in regelmäßigen Intervallen gesetzt werden, indem
@@ -31,7 +30,6 @@ am Ende einer Zeile.
   doctitlede = "Setzen der Taktnummern in regelmäßigen Intevallen"
 
 
-
 %% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
   texidocfr = "
 Vous pouvez imprimer un numéro de mesure à intervalle régulier plutôt
index dc7aa5ee4561b32e0938f1df10069ca6503bc7f8..08ce1b08de49e896089c42c60a3762fe02e21f06 100644 (file)
@@ -15,7 +15,6 @@ Los números de compás también se pueden imprimir dentro de rectángulos o de
   doctitlees = "Imprimir números de compás dentro de rectángulos o circunferencias"
 
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Taktnummern können auch in Boxen oder Kreisen gesetzt werden.
@@ -24,7 +23,6 @@ Taktnummern können auch in Boxen oder Kreisen gesetzt werden.
   doctitlede = "Setzen von Taktnummern in Kästen oder Kreisen"
 
 
-
 %% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
   texidocfr = "
 Les numéros de mesures peuvent être encadrés ou entourés d'un cercle.
index 8e2ce3f4ce3987224f93b3651e02e13203e1a8c2..e3c32461822bad2cebbc4d391057298c0334d50b 100644 (file)
@@ -4,6 +4,16 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Des crescendos ou decrescendos @emph{al niente} peuvent être indiqués de
+manière graphique, en assignant @emph{vrai} (@code{#t}) à la
+propriété @code{circled-tip}, ce qui affiche un cercle à leur extrémité.
+
+"
+  doctitlefr = "Impression de soufflets « al niente »"
+
+
   lsrtags = "expressive-marks"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -15,7 +25,6 @@ Se pueden imprimir reguladores con un círculo en la punta
 "
   doctitlees = "Impresión de reguladores utilizando la notación «al niente»"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
  texidocde = "
  Crescendo-Klammern können mit einem kleinen Kreis vor der Spitze
index bceba30dd8575ffb1a071396e6f7c141663beafc..1971e65ff80469607f626e974981e31cc413a5f3 100644 (file)
@@ -20,7 +20,6 @@ ejemplo.
 "
   doctitlees = "Imprimir marcas al final de la línea o de la partitura"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Zeichen können auch am Ende der aktuellen Zeile ausgegeben werden, anstatt
index 3fef127b581771ec4b7e3f8dbd21a3af6ac48e65..eb7f12e79dd69b65c7ae28fe114436547463c35d 100644 (file)
@@ -15,7 +15,6 @@ cualquiera.
 "
   doctitlees = "Imprimir marcas en cualquier pentagrama"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Normalerweise werden Textzeichen nur über dem obersten Notensystem gesetzt.  Sie
index 24c937700cd9c99d87717a2f229753ba67439053..1ca3f4918ff2ad9a65d47af107e7a3d5c2a545ef 100644 (file)
@@ -19,7 +19,6 @@ adecuadamente la propiedad @code{direction} de
   doctitlees = "Impresión de indicaciones metronómicas y letras de ensayo debajo del pentagrama"
 
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Normalerweise werden Metronom- und Übungszeichen über dem Notensystem ausgegeben.
index f9832b7a5d91fb638d6bb9067cb2ef6cd07dfc97..769cd2ffe72a3e35ccc16a7eb4c79d0657efda20 100644 (file)
@@ -21,7 +21,6 @@ debe insertar una líinea divisoria vacía antes de la primera nota.
   doctitlees = "Imprimir el número de compás en el primer compás"
 
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Standardmäßig wird die erste Taktzahl einer Paritur nicht gesetzt,
@@ -35,7 +34,6 @@ werden, damit das funktioniert.
   doctitlede = "Setzen der Taktnummer für den ersten Takt"
 
 
-
 %% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
   texidocfr = "
 Par défaut, LilyPond n'affiche pas le premier numéro de mesure s'il est
index 0df6883831a9f8706d556e21a166ad44f967ed4b..18a1d3ca8f030e965afd074090f0725991467e21 100644 (file)
@@ -19,7 +19,6 @@ se transportan todas las notas (incluidas las citadas).
 
 doctitlees = "Citar otra voz con transposición"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Zitate berücksichtigen sowohl die Transposition der Quelle als auch
index 46d2c8f5d4c418730296d42d3bface2d1ce9307d..fd4c44d06931a575940fd288051744157cec31f0 100644 (file)
@@ -19,7 +19,6 @@ el fragmento citado porque @code{rest-event} no está dentro de los
 "
   doctitlees = "Citar otra voz"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Die @code{quotedEventTypes}-Eigenschaft bestimmt die
index a8d302eb30764e89026b78fce59875a80260e5aa..3e1716b520e3c4b26965b5123eab0dce589fda46 100644 (file)
@@ -22,7 +22,6 @@ efectos.
   doctitlees = "Redefinición de los valores globales predeterminados para notas de adorno"
 
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Die globalen Standardeinstellungen für Verzierungsnoten werden in
@@ -37,7 +36,6 @@ werden.
   doctitlede = "Globale Umdefinition von Verzierungsnoten"
 
 
-
 %% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
   texidocfr = "
 Vous pouvez modifier les valeurs des variables @code{startGraceMusic},
index fb22c93d0bdeeb89b0c2bb85c2591732b7878fba..3389b54f93904d7b965be246d9c23503c819f4af 100644 (file)
@@ -17,7 +17,6 @@ grabador @code{Bar_number_engraver} del contexto de @code{Score}.
   doctitlees = "Suprimir los números de compás de toda la partitura"
 
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Taktnummern können vollkommen aus den Noten entfernt werden, indem
@@ -28,7 +27,6 @@ entfernt.
   doctitlede = "Entfernung von Taktnummern in einer Partitur"
 
 
-
 %% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
   texidocfr = "
 Désactiver le graveur concerné --- @code{Bar_number_engraver} ---
index f732ff9985e9d4c3bf2b9ae3a16be247e9a09699..b4201b186d3d2c4694c5ecfd98a81ae7c9f51eb2 100644 (file)
@@ -23,7 +23,6 @@ escribe.
 "
   doctitlees = "Quitar la primera línea vacía"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Ein leeres Notensystem kann auch aus der ersten Zeile einer Partitur
index 8331ec11abcf35de54e0bb54f90e56ff07cebffd..10541fccce02493908c287db869ddbaa39052779 100644 (file)
@@ -11,7 +11,6 @@
   texidoces = "
 Los silencios se pueden imprimir en distintos estilos.
 "
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 
   doctitlede = "Pausenstile"
@@ -20,7 +19,6 @@ Pausen können in verschiedenen Stilen dargestellt werden.
 "
 
 
-
 %% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
   texidocfr = "
 Les silences peuvent être gravés selon différents styles.
index d13f2c4e416ae5d4978b5c0ddd8f899729cf5577..eba5658979f84f44dd14f2a432be7ccdfb091a11 100644 (file)
@@ -7,8 +7,8 @@
   lsrtags = "rhythms, tweaks-and-overrides"
 
   texidoc = "
-In \"simple\" lead-sheets, sometimes no actual notes are written,
-instead only \"rhythmic patterns\" and chords above the measures are
+In @qq{simple} lead-sheets, sometimes no actual notes are written,
+instead only @qq{rhythmic patterns} and chords above the measures are
 notated giving the structure of a song. Such a feature is for example
 useful while creating/transcribing the structure of a song and also
 when sharing lead sheets with guitarists or jazz musicians. The
index 42aafad6d77fd215696c08bf707db341d3e3aa6a..89b7f5a6ff4c96b632765bccb391fe85aa3a571e 100644 (file)
@@ -4,6 +4,19 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+En principe, un soufflet -- (de)crescendo imprimé sous forme graphique --
+commence au bord gauche de la note de départ, et se termine au
+bord droit de la note d'arrivée.  Cependant, si la note d'arrivée
+est sur un premier temps, le soufflet s'arrêtera au niveau de la
+barre de mesure qui la précède.  Ce comportement peut être annulé
+en assignant @emph{faux} (@code{#f}) à la propriété @code{'to-barline} :
+
+"
+  doctitlefr = "Soufflets et barres de mesure"
+
+
   lsrtags = "expressive-marks, tweaks-and-overrides"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -16,7 +29,6 @@ sobreescribiendo la propiedad @code{'to-barline}.
 "
   doctitlees = "Establecer el comportamiento de los reguladores en las barras de compás"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Wenn die Note, an welcher eine Crescendo-Klammer endet, die erste Note
index a658b561e90c66dd52a5f124320ef17039a12f50..d9dfa66f122a453673a07e3700a43c0a1c2954ce 100644 (file)
@@ -4,6 +4,15 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Si un soufflet est trop court, il suffit d'ajuster la propriété 
+@code{minimum-length} de l'objet @code{Hairpin} pour l'allonger.
+
+"
+  doctitlefr = "Ajustement de la longueur d'un soufflet"
+
+
   lsrtags = "expressive-marks"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -15,7 +24,6 @@ modificando la propiedad @code{minimum-length} del objeto
 "
   doctitlees = "Ajustar la longitud mínima de los reguladores"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Wenn Crescendo-Klammern zu kurz sind, können sie verlängert werden, indem
index 57bcc34e16cc20d2d92f9b2b9867021b2ad8e3b2..927172f729e4db375f046357000e38b94969b058 100644 (file)
@@ -4,6 +4,17 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: e98b2d804c2a136edfa28adc894bb584f676c884
+  texidocfr = "
+Les crochets indiquant les fins alternatives s'étalent tout au long ce
+celle-ci.  On peut les raccourcir en définissant la propriété
+@code{voltaSpannerDuration}.  Dans l'exemple suivant, le crochet ne se
+prolonge que sur une mesure à 3/4.
+
+"
+  doctitlefr = "Diminution de la taille du crochet d'alternative"
+
+
   lsrtags = "repeats"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -17,7 +28,6 @@ sólo dura un compás, que corresponde a una duración de 3/4.
 "
   doctitlees = "Shortening volta brackets"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Volta-Klammern werden normalerweise über alle Noten der Klammer gezogen, aber
index c7a1dbfa741739137e369a97a7ac2b69f496ea4f..2ecf8a643cfcd5c25c5069fb09cc7181dfae0fb2 100644 (file)
@@ -14,7 +14,6 @@ líneas y cuando cambia el acorde.
 "
   doctitlees = "Imprimir los acordes cuando se produce un cambio"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Akkordsymbole können so eingestellt werden, dass sie nur zu Beginn der Zeile
index e2eb1a4639b430728266429b86e60499d63a6763..ea3dcd4cc1fe6c6ed79d4bfdf777fc19f08f0775 100644 (file)
@@ -14,7 +14,6 @@ obtenemos una hoja guía de acordes o «lead sheet»:
 "
   doctitlees = "Hoja guía de acordes o «lead sheet» sencilla"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
  texidocde = "
 Ein Liedblatt besteht aus Akkordbezeichnungen, einer Melodie und dem Liedtext:
index 7a548b5d2061a0d5e04d01e8f5457adb85f0d1ab..2d5bc371aee693837876c57e0b7dc7594e920afd 100644 (file)
@@ -14,12 +14,10 @@ letra y acordes.
 "
   doctitlees = "Plantilla de pentagrama único con música, letra y acordes"
 
-
 %% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
   texidocja = "
 これは旋律、単語、コードを持つ歌曲の楽譜のためのテンプレートです。
 "
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Mit diesem Beispiel können Sie einen Song mit Melodie,
@@ -28,7 +26,6 @@ Text und Akkorden schreiben.
 
   doctitlede = "Vorlage für eine Notenzeile mit Noten, Text und Akkorden"
 
-
 %% Translation of GIT committish: 9ba35398048fdf1ca8c83679c7c144b1fd48e75b
   texidocfr = "
 Ce cannevas comporte tous les éléments d'une chanson : la mélodie,
index 2ae0ddf42a1881398fe075f3cbe0f1a6f6728454..80f3c8a1e92fb87c734e337fa80e3b55b6c61500 100644 (file)
@@ -15,12 +15,10 @@ melodía y acordes?  ¡No busque más!
 
 doctitlees = "Plantilla de pentagrama único con música y acordes"
 
-
 %% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
   texidocja = "
 旋律とコードを持つリード譜を欲しくはありませんか?他を見る必要はありません!
 "
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Wollen Sie ein Liedblatt mit Melodie und Akkorden schreiben?  Hier ist
@@ -29,7 +27,6 @@ das richtige Beispiel für Sie!
 
   doctitlede = "Vorlage für eine Notenzeile mit Akkorden"
 
-
 %% Translation of GIT committish: 9ba35398048fdf1ca8c83679c7c144b1fd48e75b
   texidocfr = "
 Vous avez besoin de la partition d'une mélodie avec les accords ?
index 2e411098b14afabb44296b9be29f6208694a2216..db877ad06b551664e6c005f9704c732028392d3d 100644 (file)
@@ -17,7 +17,6 @@ comentario la línea correspondiente.
 "
   doctitlees = "Plantilla de pentagrama único don notas y letra"
 
-
 %% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
   texidocja = "
 この小さなテンプレートは歌詞を持つ簡単な旋律を表しています。カット&ペーストして、音符@c
@@ -26,7 +25,6 @@ comentario la línea correspondiente.
 行を変更するか、コメント アウトしてください。
 "
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Das nächste Beispiel zeigt eine einfache Melodie mit Text. Kopieren
@@ -40,7 +38,6 @@ entsprechende Zeile entweder ändern oder auskommentieren.
 
   doctitlede = "Vorlage für ein Notensystem mit Noten und Gesangstext"
 
-
 %% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
 
   texidocfr = "
index 15a08d488d48b46901f394bb1dafe937a07c2657..b60ca44ac79e02941b584daf1fb288885f58d3c1 100644 (file)
@@ -15,14 +15,12 @@ un archivo, escriba las notas y ¡ya está!
 "
   doctitlees = "Plantilla de un solo pentagrama, con notas únicamente"
 
-
 %% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
   texidocja = "
 これは音符を持つ譜表を提供するとても簡単なテンプレートであり、ソロの楽器や旋律に適しています。@c
 これをファイルにカット&ペーストして、音符を付け加えれば完了です!
 "
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Das erste Beispiel zeigt ein Notensystem mit Noten, passend für ein
@@ -33,7 +31,6 @@ eine vollständige Notationsdatei.
 
   doctitlede = "Vorlage für ein Notensystem"
 
-
 %% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
   texidocfr = "
 Cet exemple simpliste se compose d'une portée agrémentée de quelques
index c211cd318be89deaad6fc7e63a3ac7862919162f..c8103f997f8cd1489d7ec5803820ef6ad5cda836 100644 (file)
@@ -8,7 +8,7 @@
 
   texidoc = "
 Although @code{s} skips cannot be used in @code{\\lyricmode} (it is
-taken to be a literal \"s\", not a space), double quotes (@code{\"\"})
+taken to be a literal @qq{s}, not a space), double quotes (@code{\"\"})
 or underscores (@code{_}) are available.So for example:
 
 "
index d1021fdd4621213c0123627a6944a181a507738e..33efd5c605f55b1f5adb7dfa39596db4b452d241 100644 (file)
@@ -32,13 +32,13 @@ ist aber einfach, direkt eine Definition in die Eingabedatei einzufügen.
 
   lsrtags = "expressive-marks, unfretted-strings"
   texidoc = "
-A snap-pizzicato (also known as \"Bartok pizzicato\") is a \"strong
+A snap-pizzicato (also known as @qq{Bartok pizzicato}) is a @qq{strong
 pizzicato where the string is plucked vertically by snapping and
-rebounds off the fingerboard of the instrument\" (Wikipedia).  It is
-denoted by a cicle with a vertical line going from the center upwards
+rebounds off the fingerboard of the instrument} (Wikipedia).  It is
+denoted by a circle with a vertical line going from the center upwards
 outside the circle.
 "
-  doctitle = "Snap-pizzicato (\"Bartok pizzicato\")"
+  doctitle = "Snap-pizzicato (@qq{Bartok pizzicato})"
 } % begin verbatim
 
 
index 27e4351b2f449fc11b00b0a4ea2429d901623762..bdae696cd12383765319688c7ecae4ebae766bfd 100644 (file)
@@ -14,7 +14,6 @@ utilizando instrucciones @code{\\markup}:
 "
   doctitlees = "Elemento de marcado de texto independiente en dos columnas"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Isolierter Text kann in mehreren Spalten mit @code{\\markup}-Befehlen
index 60dfd4b1c7dd331e55962d5c77ccd0244806f8ba..e2997996348af92a8c474a7c67d8a0f09f01bef9 100644 (file)
@@ -15,7 +15,6 @@ poner horizontales, como se muestra en este ejemplo.
 "
   doctitlees = "Comportamiento de las plicas y las barras de corchea en tablaturas"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Die Richtung von Hälsen wird in Tabulaturen genauso wie in normaler Notation
@@ -24,7 +23,6 @@ zeigt.
 
 "
   doctitlede = "Hals- und Balkenverhalten in einer Tabulatur"
-
 %% Translation of GIT committish: cd4950757ab1ab6c89805b0b7c978bfca034f940
 
   texidocfr = "
index 28229c9c6f285ce76c4f6ef77cf04805f7ebf334..9e34b1c12bc6a8da0a66e015dd63e8ac698d3be2 100644 (file)
@@ -14,13 +14,11 @@ una sección @code{\\global} para el compás y la armadura
 "
   doctitlees = "Plantilla de cuarteto de cuerda (sencilla)"
 
-
 %% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
   texidocja = "
 これは簡単な弦楽四重奏のためのテンプレートです。これは拍子記号と調号のために
 @code{@bs{}global} セクションを使っています。
 "
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Dieses Beispiel demonstriert die Partitur für ein Streichquartett. Hier
@@ -30,7 +28,6 @@ Vorzeichen benutzt.
 
   doctitlede = "Vorlage für Streichquartett (einfach)"
 
-
 %% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
   texidocfr = "
 Voici un canevas pour quatuor à cordes.  Notez l'utilisation de la
index dfccd9e4c7510f2463be72f1965ce01c73c78e83..3b702be04ab4e133126aac99a2ce5cc3157ccd07 100644 (file)
@@ -27,7 +27,6 @@ los archivos independientes!
 "
   doctitlees = "Plantilla de cuarteto de cuerda con particellas independientes"
 
-
 %% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
   texidocja = "
 \"弦楽四重奏テンプレート\" は適切な弦楽四重奏の楽譜を作り出しますが、個々の@c
@@ -42,7 +41,6 @@ los archivos independientes!
 
 別々のファイルに分ける場合は、指定されたコメントを外すことを忘れないでください!
 "
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Mit diesem Beispiel können Sie ein schönes Streichquartett notieren,
@@ -62,7 +60,6 @@ zugewiesen, auf den zurückgegriffen werden kann.
 
   doctitlede = "Vorlage für Streichquartett mit einzelnen Stimmen"
 
-
 %% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
   texidocfr = "
 Grâce à ce canevas, vous pouvez obtenir une partition d'excellente
@@ -85,10 +82,10 @@ individualisés !
   doctitlefr = "Quatuor à cordes, avec parties séparées"
 
   texidoc = "
-The \"String quartet template\" snippet produces a nice string quartet,
-but what if you needed to print parts? This new template demonstrates
-how to use the @code{\\tag} feature to easily split a piece into
-individual parts.
+The @qq{String quartet template} snippet produces a nice string
+quartet, but what if you needed to print parts? This new template
+demonstrates how to use the @code{\\tag} feature to easily split a
+piece into individual parts.
 
 You need to split this template into separate files; the filenames are
 contained in comments at the beginning of each file. @code{piece.ly}
index f15e1aae940dd173fd0eb38143a2c89324f8bcf1..a1443e51b220a32a200ddfd0eaea3783829ca7b0 100644 (file)
@@ -26,7 +26,6 @@ da la duración el subgrupo de barras utilizando la función
 "
   doctitlees = "Subdivisión de las barras de semicorchea"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Die Balken von aufeinanderfolgenden Sechszehnteln (oder kürzeren Notenwerten)
@@ -41,7 +40,6 @@ Standardwert für @code{beatLength} ist 1 / Zähler des aktuellen Taktes.
   doctitlede = "Balken in Untergruppen teilen"
 
 
-
 %% Translation of GIT committish: b3196fadd8f42d05ba35e8ac42f7da3caf8a3079
   texidocfr = "
 Les ligatures d'une succession de notes de durée inférieure à la croche
index 3de9780b38a579b1633e7f126b23bf49256a5f0a..defd9f6f9fe00f1dd08fd098d9cac2fb5475f38b 100644 (file)
@@ -9,10 +9,10 @@
   texidoc = "
 If notes from two voices with stems in the same direction are placed at
 the same position, and both voices have no shift or the same shift
-specified, the error message \"warning: ignoring too many clashing note
-columns\" will appear when compiling the LilyPond file.  This message
-can be suppressed by setting the @code{'ignore-collision} property of
-the @code{NoteColumn} object to @code{#t}.
+specified, the error message @samp{warning: ignoring too many clashing
+note columns} will appear when compiling the LilyPond file.  This
+message can be suppressed by setting the @code{'ignore-collision}
+property of the @code{NoteColumn} object to @code{#t}.
 
 "
   doctitle = "Suppressing warnings for clashing note columns"
index 000df2b900a2f70265099ef7bff059e06f7a8e0a..efc3c0c7892c70859fefff64a3f2252c26353a80 100644 (file)
@@ -4,6 +4,36 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+Cet exemple, grâce à un peu de code Scheme, donne la priorité aux
+enharmoniques  afin de limiter le nombre d'altérations supplémentaires.  
+La règle appliquable est :
+
+@itemize
+@item
+Les altérations doubles sont supprimées
+
+@item
+Si dièse -> Do
+
+@item
+Mi dièse -> Fa
+
+@item
+Do bémol -> Si
+
+@item
+Fa bémol -> Mi
+
+@end itemize
+
+Cette façon de procéder aboutit à plus d'enharmoniques naturelles.
+
+"
+
+  doctitlefr = "Transposition et réduction du nombrer d'altérations accidentelles"
+
   lsrtags = "pitches"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -37,7 +67,6 @@ naturales.
 
 "
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   doctitlede = "Noten mit minimaler Anzahl an Versetzungszeichen transponieren."
   texidocde = "Dieses Beispiel benutzt Scheme-Code, um enharmonische
index a68e83363c109982a0345fc5f0edc00b33061c7b..6e02a72d4410abb9f220b57ded1950527636c778 100644 (file)
@@ -4,6 +4,43 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: 59968a089729d7400f8ece38d5bc98dbb3656a2b
+  texidocfr = "
+La commande @code{\\clef \"treble_8\"} équivaut à définir @code{clefGlyph},
+@code{clefPosition} -- qui contrôle la position verticale de la clé --
+@code{middleCPosition} et @code{clefOctavation}.  Une clé est imprimée
+lorsque l'une de ces propriétés, hormis @code{middleCPosition}, est
+modifiée. 
+ Les exemples suivant font
+apparaître des possibilités de réglage manuel de ces propriétés.
+
+
+Modifier le glyphe, la position de la clef ou son octaviation ne
+changera pas la position des notes ; il faut pour y parvenir modifier
+aussi la position du do médium.  Le positionnement est relatif à la
+ligne médiane, un nombre positif faisant monter, chaque ligne ou
+interligne comptant pour 1.  La valeur de @code{clefOctavation} devrait
+être de 7, -7, 15 ou -15, bien que rien ne vous empêche de lui affecter
+une autre valeur.
+
+
+Lorsqu'un changement de clef intervient en même temps qu'un saut de
+ligne, la nouvelle clef est imprimer à la fois en fin de ligne et au
+début de la suivante.  Vous pouvez toujours supprimer cette « clef de 
+précaution » en affectant la valeur @code{end-of-line-invisible} à la
+propriété @code{explicitClefVisibility} du contexte @code{Staff}.  Le
+comportement par défaut sera réactivé par 
+@w{@code{\\unset@tie{}Staff.explicitClefVisibility}}. 
+
+
+Les exemples qui suivent illustrent les différentes possibilités de
+définir ces propriétés manuellement.  Sur la première ligne, la
+position relative des notes par rapport aux clefs sont préservées, ce
+qui n'est pas le cas pour la deuxième ligne.
+
+"
+  doctitlefr = "Affinage des propriétés d'une clef"
+
   lsrtags = "pitches, staff-notation, tweaks-and-overrides"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -41,7 +78,6 @@ cambios manuales preservan el posicionamiento relativo estándar de
 las claves y las notas, pero no lo hacen en la segunda línea.
 "
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   doctitlede = "Eigenschaften des Schlüssels optimieren"
   texidocde = "
index a6a384a72b42a2c58f686a2f922561fe3c0b0fe6..ab57f45053e08e5e96916fc5799ba192db9e5985 100644 (file)
@@ -22,7 +22,6 @@ cabezas a aspas.
   doctitlees = "Trucar la disposición de las notas de adorno dentro de la música"
 
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Das Layout von Verzierungsausdrücken kann in der Musik verändert
@@ -35,7 +34,6 @@ in ein Kreuz.
   doctitlede = "Veränderung des Layouts von Verzierungen innerhalb der Noten"
 
 
-
 %% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
   texidocfr = "
 Il est possible de changer globalement la mise en forme des petites
index 1a60b9dce426a24dfb139cc27efa86fa1f40343f..251b4976d7880165fd8903605caa460c2c353575 100644 (file)
@@ -15,7 +15,6 @@ un contexto @code{StaffGroup} o @code{ChoirStaffGroup}.
 "
   doctitlees = "Uso del corchete recto al comienzo de un grupo de pentagramas"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Die Klammer zu Beginn von Systemgruppen kann auch in eine eckige Klammer
index a264a062e982bdec2083b2f9bcb6b966fbfd4791..7ad42c6617e80b44b5eb2a6d6e55f31398983bb3 100644 (file)
@@ -4,6 +4,16 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Certains auteurs utilisent deux liaisons lorsqu'ils veulent
+lier des accords. Dans LilyPond, il faut pour cela activer
+la propriété @code{doubleSlurs} :
+
+"
+  doctitlefr = "Accords et double liaison d'articulation"
+
+
   lsrtags = "expressive-marks"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -14,7 +24,6 @@ legato.  Esto se puede conseguir estableciendo @code{doubleSlurs}.
 "
   doctitlees = "Utilizar ligaduras dobles para acordes legato"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Einige Komponisten schreiben doppelte Bögen, wenn Legato-Akkorde notiert
index 93d537c927848ba8a95ddfd0630507b36ae7fdd0..84e5ad9a71a465cc0b2b45a1daae74be9526739e 100644 (file)
@@ -17,7 +17,6 @@ acciaccaturas, en otras situaciones.
   doctitlees = "Utilizar la barra que tacha las notas de adorno con notas normales"
 
 
-
 %% Translation of GIT committish: 21c8461ea87cd670a35a40b91d3ef20de03a0409
   texidocfr = "
 Le trait que l'on trouve sur les hampes des acciaccatures peut
index 065848ea709882d81af69a422cb9531dd73b0c2f..7c56168ab97ef8fd74ae078e173785adbf534235 100644 (file)
@@ -18,7 +18,6 @@ en principio también se puede usar para notas normales consecutivas.
 
 "
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
  texidocde = "
  Überbindungen werden teilweise benutzt, um Arpeggios zu notieren.  In
@@ -31,7 +30,6 @@ für normale Überbindungen eingesetzt werden
   doctitlede = "Überbingungen für Arpeggio genutzen"
 
 
-
 %% Translation of GIT committish: e71f19ad847d3e94ac89750f34de8b6bb28611df
   texidocfr = "
 Les liaisons de tenue servent parfois à rendre un accord arpégé. Dans
index 5e3168e80ee28a7e95fce81225a20afa7c509465..36ac6cd71ae3f44d6a0ead923a6f5fcd470c42d6 100644 (file)
@@ -9,7 +9,7 @@
   texidoc = "
 This short vertical line placed above the note is commonly used in
 baroque music.  Its meaning can vary, but generally indicates notes
-that should be played with more \"weight\".  The following example
+that should be played with more @qq{weight}.  The following example
 demonstrates how to achieve such a notation.
 
 "
@@ -29,5 +29,5 @@ upline =
 
 
 \relative c' {
-  a'^\upline a( c d')_\upline
+  a'4^\upline a( c d')_\upline
 }
index cf481529b51bd377d3983844b6faf86bfc36840d..8ffc3002689c169e52494e14ebdbae4529d79824 100644 (file)
@@ -4,6 +4,21 @@
 \version "2.13.4"
 
 \header {
+%% Translation of GIT committish: ae814f45737bd1bdaf65b413a4c37f70b84313b7
+  texidocfr = "
+Vous pourrez, en jouant sur la propriété @code{'Y-extent}, aligner les
+différents objets @code{DynamicLineSpanner} (souflets ou textuels)
+quelle que soit leur étendue, par rapport à un même point de référence.
+Tous les éléments seront alors centrés sur une même ligne, ce qui sera
+visuellement plus agréable.
+
+C'est le même principe qui sert à aligner les indications textuelles sur
+une ligne de référence.
+
+"
+  doctitlefr = "Alignement vertical des nuances indications textuelles"
+
+
   lsrtags = "tweaks-and-overrides, spacing"
 
 %% Translation of GIT committish: b2d4318d6c53df8469dfa4da09b27c15a374d0ca
@@ -21,7 +36,6 @@ largo de su línea de base.
 "
   doctitlees = "Indicaciones dinámicas y textuales alineadas verticalmente"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
 texidocde = "
 Indem man die @code{'Y-extent}-Eigenschaft auf einen passenden Wert setzt,
index 6d1ed71d85b213a69de2e99a28ce7b39c92259da..fafa35c12b8a051a48b13afdb2893e59ff68cdb6 100644 (file)
@@ -15,7 +15,6 @@ controlar la posición de la letra y los compases de ossia.
 "
   doctitlees = "Alineación vertical de la letra y los compases de ossia"
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Dieser Schnipsel zeigt, wie man die Kontexteigenschaften
index ed9cedd9d21f76ae1c85675654660605cd337ec0..f7372ad2f03aafb1b96bf8738ce1d51b98d0de65 100644 (file)
@@ -18,7 +18,6 @@ entonces los cambios se aplicarán también a la reducción de piano.
 "
   doctitlees = "Plantilla de conjunto vocal con reducción de piano automática"
 
-
 %% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
   texidocja = "
 このテンプレートは、\"合唱テンプレート\"で示された標準の SATB ボーカル譜に自動@c
@@ -26,7 +25,6 @@ entonces los cambios se aplicarán también a la reducción de piano.
 定義を何回も使用することができます。ボーカルの音符 (例えば、@code{tenorMusic}
 の音符) に変更が加えられた場合、その変更はピアノ譜にも適用されます。
 "
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 In diesem Beispiel wird ein automatischer Klavierauszug zu der
@@ -36,7 +34,6 @@ irgendeine Änderung an einer Chorstimme vornehmen, (etwa
 tenorMusic), verändert sich auch der Klavierauszug entsprechend.
 "
 
-
 %% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
   texidocfr = "
 Ce canevas ajoute une réduction pour piano à une partition standard pour
@@ -50,7 +47,7 @@ sera automatiquement reportée dans la réduction pour piano.
 
   texidoc = "
 This template adds an automatic piano reduction to the standard SATB
-vocal score demonstrated in \"Vocal ensemble template\". This
+vocal score demonstrated in @qq{Vocal ensemble template}. This
 demonstrates one of the strengths of LilyPond – you can use a music
 definition more than once. If any changes are made to the vocal notes
 (say, @code{tenorMusic}), then the changes will also apply to the piano
index 0efb8d4fdb45d41309af2e65202b666a1356748e..2549012e6fd259931d4faf77c0ca9220817ac086 100644 (file)
@@ -16,13 +16,11 @@ colocan utilizando @code{alignAboveContext} y
 "
   doctitlees = "Plantilla para conjunto vocal con letras alineadas encima y debajo de los pentagramas"
 
-
 %% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
   texidocja = "
 このテンプレートは基本的に単純な \"合唱\" テンプレートと同じですが、歌詞が
 @code{alignAboveContext} と @code{alignBelowContext} を用いて配置されています。
 "
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 In diesem Beispiel werden die Texte mit den Befehlen
@@ -32,7 +30,6 @@ In diesem Beispiel werden die Texte mit den Befehlen
 
   doctitlede = "Vorlage für Vokalensemble mit dem Gesangstext über und unter dem System"
 
-
 %% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
   texidocfr = "
 Ce canevas ressemble beaucoup à celui pour chœur à quatre voix mixtes.
@@ -43,7 +40,7 @@ ayant recours à @code{alignAboveContext} et @code{alignBelowContext}.
   doctitlefr = "Ensemble vocal avec alignement des paroles selon le contexte"
 
   texidoc = "
-This template is basically the same as the simple \"Vocal ensemble\"
+This template is basically the same as the simple @qq{Vocal ensemble}
 template, with the exception that here all the lyrics lines are placed
 using @code{alignAboveContext} and @code{alignBelowContext}.
 
index fe33184bc8ba773f6cbdeb57088f5e26729ae486..359dfae968b87813e2b421f8a901ea6ba4e4bfac 100644 (file)
@@ -17,14 +17,12 @@ voces se reagrupan en sólo dos pentagramas.
 "
   doctitlees = "Plantilla de conjunto vocal"
 
-
 %% Translation of GIT committish: 06d99c3c9ad1c3472277b4eafd7761c4aadb84ae
   texidocja = "
 これは標準の 4 パート SATB (ソプラノ、アルト、テナー、バス) ボーカル譜です。@c
 もっと大きな合唱では、すべてのパートで使用されるセクションをインクルードすると@c
 便利です。例えば、拍子記号と調号はほとんど常にすべてのパートで同じです。\"賛美@c
 歌\" テンプレートのように、4 つのボイスは 2 つの譜にグループ分けされています。"
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Dieses Beispiel ist für vierstimmigen Gesang (SATB). Bei größeren
@@ -35,7 +33,6 @@ sind fast immer gleich in allen Stimmen.
 
   doctitlede = "Vorlage für Vokalensemble"
 
-
 %% Translation of GIT committish: 892286cbfdbe89420b8181975032ea975e79d2f5
   texidocfr = "
 Ce fichier constitue un canevas standard de partition pour chœur à
@@ -53,7 +50,7 @@ portées.
 Here is a standard four-part SATB vocal score. With larger ensembles,
 it is often useful to include a section which is included in all parts.
 For example, the time signature and key signature are almost always the
-same for all parts. Like in the \"Hymn\" template, the four voices are
+same for all parts. Like in the @qq{Hymn} template, the four voices are
 regrouped on only two staves.
 
 "
index 117a66d3a14ab9e591c52edeb130de3d6fbdaf8e..5ddaa83eb3a88c4112a56f3219faeaa3cfe11db9 100644 (file)
@@ -16,7 +16,6 @@ segunda vez debajo de los acordes.
   doctitlees = "Corchetes de primera y segunda vez debajo de los acordes"
 
 
-
 %% Translation of GIT committish: d96023d8792c8af202c7cb8508010c0d3648899d
   texidocde = "
 Indem man den @code{Volta_engraver} zu dem entsprechenden Notensystem
index 67bbfbf566460bfa3a79b54898e741188cbe1732..2bc6275b6d6bfcdd96c9f884c383445bae6f36a4 100644 (file)
@@ -1,6 +1,9 @@
 #!/usr/bin/env perl
 # -*- coding: utf-8; -*-
 
+### WTF, perl cannot read a file?
+###use File::Slurp qw( read_file );
+
 ### texi2html customization script for LilyPond
 ### Author: Reinhold Kainhofer <reinhold@kainhofer.com>, 2008.
 ###         Some code parts copied from texi2html and adapted. These functions
@@ -106,30 +109,25 @@ $Texi2HTML::Config::DOCTYPE = '<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Tran
 
 @Texi2HTML::Config::CSS_REFS      = (
     {FILENAME => "lilypond-web.css", TITLE => "Default style"},
+);
+
+@Texi2HTML::Config::ALT_CSS_REFS      = (
     {FILENAME => "lilypond-web-alt1.css", TITLE => "Alternate style 1"},
     {FILENAME => "lilypond-web-alt2.css", TITLE => "Alternate style 2"},
- );
-
-# GOP tweak: We don't have alternate stylesheets right now
-#@Texi2HTML::Config::ALT_CSS_REFS      = (
-#    {FILENAME => "lilypond.css", TITLE => "Andrew Hawryluk's design" },
-#    {FILENAME => "lilypond-blue.css", TITLE => "Kurt Kroon's blue design" },
-#);
+);
 
 $Texi2HTML::Config::USE_ACCESSKEY = 1;
 $Texi2HTML::Config::USE_LINKS     = 1;
 $Texi2HTML::Config::USE_REL_REV   = 1;
 $Texi2HTML::Config::SPLIT_INDEX   = 0;
 $Texi2HTML::Config::SEPARATED_FOOTNOTES = 0; # Print footnotes on same page, not separated
-# FIXME: remove for GOP
-#if ($Texi2HTML::Config::SPLIT eq 'section') {
-#  $Texi2HTML::Config::element_file_name    = \&lilypond_element_file_name;
-#}
-
-## GOP tweak:
 # FIXME: creates duplicate anchors, which causes Opera to barf;
 #       should be fixed in lilypond-texi2html.init too
-# $Texi2HTML::Config::element_target_name  = \&lilypond_element_target_name;
+# Uhm, what about a bug report to Opera?  We need sane names here.
+if ($Texi2HTML::Config::SPLIT eq 'section') {
+  $Texi2HTML::Config::element_file_name    = \&lilypond_element_file_name;
+}
+$Texi2HTML::Config::element_target_name  = \&lilypond_element_target_name;
 $default_print_element_header = $Texi2HTML::Config::print_element_header;
 $Texi2HTML::Config::print_element_header = \&lilypond_print_element_header;
 $Texi2HTML::Config::print_page_foot      = \&print_lilypond_page_foot;
@@ -238,6 +236,7 @@ sub load_map_file ($)
     my $node_map = ();
 
     if (open(XREFFILE, $mapfile)) {
+        print STDERR "Reading map file: $mapfile\n";
         my $line;
         while ( $line = <XREFFILE> ) {
             # parse the tab-separated entries and insert them into the map:
@@ -251,7 +250,7 @@ sub load_map_file ($)
         }
         close (XREFFILE);
     } else {
-        print STDERR "WARNING: Unable to load the map file $mapfile\n";
+        print STDERR "warning: cannot load map file: no such file: $mapfile\n";
     }
     return $node_map;
 }
@@ -302,11 +301,10 @@ sub lilypond_css_lines ($$)
         $Texi2HTML::THISDOC{'CSS_LINES'} .= "<link rel=\"stylesheet\" type=\"text/css\" title=\"$ref->{TITLE}\" href=\"$ref->{FILENAME}\">\n";
     }
 
-    # GOP tweak: We don't have alternate stylesheets
-    #foreach my $ref (@Texi2HTML::Config::ALT_CSS_REFS)
-    #{
-    #    $Texi2HTML::THISDOC{'CSS_LINES'} .= "<link rel=\"alternate stylesheet\" type=\"text/css\" href=\"$ref->{FILENAME}\" title=\"$ref->{TITLE}\">\n";
-    #}
+    foreach my $ref (@Texi2HTML::Config::ALT_CSS_REFS)
+    {
+        $Texi2HTML::THISDOC{'CSS_LINES'} .= "<link rel=\"alternate stylesheet\" type=\"text/css\" href=\"$ref->{FILENAME}\" title=\"$ref->{TITLE}\">\n";
+    }
 
     # GOP tweak: We aren't using an IE-specific stylesheet
     #$Texi2HTML::THISDOC{'CSS_LINES'} .= "<!--[if lte IE 7]>\n<link href=\"lilypond-ie-fixes.css\" rel=\"stylesheet\" type=\"text/css\">\n<![endif]-->\n";
@@ -322,6 +320,137 @@ sub lilypond_css_lines ($$)
 
 # FIXME: removed for GOP.
 
+# Uhm, yes: that's what I found.  It was gone.  No need to add that
+# in a comment, DIFF tells me that it's gone.
+
+# Comments can be used to tell *why* something has been removed -- as
+# it seems to me that we *need* this in order to get sane,
+# untranslated, html file names?  Putting it back for this reason.
+
+my $lastfilename;
+my $docnr = 0;
+my $node_to_filename_map = ();
+
+
+# This function makes sure that files are only generated for numbered sections,
+# but not for unnumbered ones. It is called after texi2html has done its own
+# splitting and simply returns the filename for the node given as first argument
+# Nodes with the same filename will be printed out to the same filename, so
+# this really all we need. Also, make sure that the file names for sections
+# are derived from the section title. We also might want to name the anchors
+# according to node titles, which works by simply overriding the id element of
+# the $element hash.
+# If an external nodename<=>filename/anchor map file is found (loaded in
+# the command handler, use the externally created values, otherwise use the
+# same logic here.
+sub lilypond_element_file_name($$$)
+{
+  my $element = shift;
+  my $type = shift;
+  my $docu_name = shift;
+  my $docu_ext = $Texi2HTML::Config::EXTENSION;
+
+  my $node_name = main::remove_texi($element->{'node_ref'}->{'texi'});
+  # the snippets page does not use nodes for the snippets, so in this case
+  # we'll have to use the section name!
+  if ($node_name eq '') {
+    $node_name = main::remove_texi($element->{'texi'});
+  }
+
+  # If we have an entry in the section<=>filename map, use that one, otherwise
+  # generate the filename/anchor here. In the latter case, external manuals
+  # will not be able to retrieve the file name for xrefs!!! Still, I already
+  # had that code, so I'll leave it in in case something goes wrong with the
+  # extract_texi_filenames.py script in the lilypond build process!
+  if (exists ($node_to_filename_map->{$node_name})) {
+    (my $filename, my $anchor) = @{$node_to_filename_map->{$node_name}};
+    $filename .= ".$docu_ext" if (defined($docu_ext));
+
+    # unnumbered sections (except those at top-level!) always go to the same
+    # file as the previous numbered section
+    if (not ($element->{number}) and not ($lastfilename eq '') and ($element->{level} > 1)) {
+      $filename = $lastfilename;
+    }
+    if (($filename eq $lastfilename)) {
+      $$element{doc_nr} = $docnr;
+    } else {
+      $docnr += 1;
+      $$element{doc_nr} = $docnr;
+      $lastfilename = $filename;
+    }
+    return $filename;
+
+  } elsif ($type eq "top" or $type eq "toc" or $type eq "doc" or $type eq "stoc" or $type eq "foot" or $type eq "about") {
+    return;
+  } else {
+    print STDERR "WARNING: Node '$node_name' was NOT found in the map\n"
+        unless ($node_name eq '') or ($element->{'tag'} eq 'unnumberedsec')
+               or ($node_name =~ /NOT REALLY USED/);
+
+    # Numbered sections will get a filename Node_title, unnumbered sections will use
+    # the file name of the previous numbered section:
+    if (($element->{number}) or ($lastfilename eq '') or ($element->{level} == 1)) {
+      # normalize to the same file name as texinfo
+      if ($element->{translationof}) {
+        $node_name = main::remove_texi($element->{translationof});
+      }
+      my $filename = texinfo_file_name($node_name);
+      $filename .= ".$docu_ext" if (defined($docu_ext));
+      $docnr += 1;
+      $$element{doc_nr} = $docnr;
+      $lastfilename = $filename;
+      return $filename;
+    } else {
+      $$element{doc_nr} = $docnr;
+      return $lastfilename;
+    }
+  }
+
+  return;
+}
+
+sub lilypond_element_target_name($$$)
+{
+  my $element = shift;
+  my $target = shift;
+  my $id = shift;
+  # Target is based on node name (or sec name for secs without node attached)
+  my $node_name = main::remove_texi($element->{'node_ref'}->{'texi'});
+  if ($node_name eq '') {
+    $node_name = main::remove_texi($element->{'texi'});
+  }
+
+  # If we have an entry in the section<=>filename map, use that one, otherwise
+  # generate the anchor here.
+  if (exists ($node_to_filename_map->{$node_name})) {
+    (my $filename, $target) = @{$node_to_filename_map->{$node_name}};
+  } else {
+    my $anchor = $node_name;
+    if ($element->{translationof}) {
+      $anchor = main::remove_texi($element->{translationof});
+    }
+    # normalize to the same file name as texinfo
+    $target = texinfo_file_name($anchor);
+  }
+  # TODO: Once texi2html correctly prints out the target and not the id for
+  #       the sections, change this back to ($id, $target)
+  return ($target, $target);
+}
+
+
+## Load the map file for the corrently processed texi file. We do this
+#  using a command init handler, since texi2html does not have any
+#  other hooks that are called after THISDOC is filled but before phase 2
+#  of the texi2html conversion.
+sub lilypond_init_map ()
+{
+    my ($docu_dir, $docu_name) = split_texi_filename ($Texi2HTML::THISDOC{'input_file_name'});
+    my $map_filename = main::locate_include_file ("${docu_name}.$Texi2HTML::THISDOC{current_lang}.xref-map")
+       || main::locate_include_file ("${docu_name}.xref-map");
+    $node_to_filename_map = load_map_file ($map_filename);
+}
+push @Texi2HTML::Config::command_handler_init, \&lilypond_init_map;
+
 
 #############################################################################
 ###  CLEANER LINK TITLE FOR EXTERNAL REFS
@@ -459,7 +588,6 @@ sub lilypond_external_href($$$)
 my $page_toc_depth = 2;
 my @default_toc = [];
 
-
 # Initialize the toc_depth to 1 if the command-line option -D=short_toc is given
 sub lilypond_init_toc_depth ()
 {
@@ -509,7 +637,7 @@ sub generate_ly_toc_entries($$$)
         "Contact", "Tiny examples", "Bug reports"
        );
   my @color_2 = (
-        "Features", "Examples", "Freedom",
+        "Features", "Examples", "Freedom", "Background",
        "Unix", "MacOS X", "Windows",
         "Notation", "Usage", "Snippets",
         "Help us", "Development", "Authors"
@@ -521,9 +649,9 @@ sub generate_ly_toc_entries($$$)
         "Publications", "Old news"
         );
   my @color_4 = (
-        "Text input",
+        "Text input", "Alternate input",
         "GPL",
-        "Translated", "Old", "FDL"
+        "Translated", "All", "FDL"
         );
 
   my $addColor = " colorDefault";
@@ -600,6 +728,9 @@ sub lilypond_generate_page_toc_body($)
       $parentelements{$current_element->{'sectionup'}->{'id'}} = 1
               if ($current_element->{'sectionup'}->{'id'} ne '');
       $current_element = $current_element->{'sectionup'};
+      if (exists($main::value{'shallow_toc'})) {
+         last;
+      }
     }
     return () if not defined($current_element);
     # Create the toc entries recursively
@@ -614,15 +745,31 @@ sub lilypond_generate_page_toc_body($)
     } else {
         push (@toc_entries, "<li class=\"toc_current\"><a href=\"index.html\">Main</a></li>\n");
     }
-
     my $children = $current_element->{'section_childs'};
 # FIXME: generate toc
     foreach ( @$children ) {
       push (@toc_entries, generate_ly_toc_entries($_, \%parentelements, $page_toc_depth));
     }
-# FIXME: add search entry box
-    push (@toc_entries, "<li><form action=\"#\" method=\"get\"><input onfocus=\"this.value=''\" type=\"text\" name=\"search\" id=\"search\" value=\"Search\"></form></li>\n");
-
+    if (!exists($main::value{'shallow_toc'})) {
+# WTF, perl needs 6 lines of magic to do: ' ' + open ('file-name').read ()?
+       local $/=undef;
+        my $name = 'search-box.html';
+       open FILE, $name or open FILE, "../$name" or die  die "no such file: $name: $!";
+
+# All these also seems to work, but fail silently.  Great, it runs!
+# It's late already, let's this broken site.
+
+#      push (@toc_entries, '<li>\n' + <FILE> + '</li>\n');
+#      push (@toc_entries, '<li>\n' . <FILE> . '</li>\n');
+#      my $string = '<li>\n' + <FILE> + '</li>\n';
+#       my $string = '<li>\n' + <FILE> + '</li>\n';
+#       my $string = '<li>\n' . <FILE> . '</li>\n';
+       my $string = <FILE>;
+#       $string = '<li>\n' + $string + '</li>\n';
+       $string =  "<li>\n" . $string . "</li>\n";
+       push (@toc_entries, $string);
+       close FILE;
+    }
     push (@toc_entries, "</ul>\n");
 #FIXME
 #    push (@toc_entries, "</div>\n");
@@ -723,6 +870,7 @@ sub print_lilypond_page_foot($)
   # Do not include language selection in div#main
   print $fh "<!-- end div#main here -->\n</div>\n\n";
 
+  if (0) {
   print $fh "<!-- FOOTER -->\n\n";
   print $fh "<div id=\"footer\">\n";
   print $fh "<div id=\"language\">\n";
@@ -730,6 +878,7 @@ sub print_lilypond_page_foot($)
   print $fh "<p><a href=\"\">Deutsch</a>, Español, Français, Magyar.</p>\n";
   print $fh "<p>About automatic language selection.</p>\n";
   print $fh "</div>\n";
+  }
 
   print $fh "<div id=\"verifier_texinfo\">\n";
   print $fh "<h3>Validation</h3>\n";
@@ -739,11 +888,6 @@ sub print_lilypond_page_foot($)
   print $fh "<img src=\"http://www.w3.org/Icons/valid-html401\"\n";
   print $fh "     alt=\"Valid HTML 4.01 Transitional\"\n";
   print $fh "     height=\"31\" width=\"88\"></a></p>\n";
-  print $fh "<p>Web pages created with";
-  print $fh " <a href=\"http://www.gnu.org/software/texinfo/\">";
-  print $fh " GNU Texinfo</a>\n";
-  print $fh " and <a href=\"http://www.nongnu.org/texi2html/\">";
-  print $fh " texi2html</a>.</p>\n";
   print $fh "</div>";
   print $fh "</div>";
 
diff --git a/ROADMAP b/ROADMAP
index 050360d63dd705275dcf8a0d82948b2b3dc28590..25425e862b6a39119df2aca587bdeb9140d25ae0 100644 (file)
--- a/ROADMAP
+++ b/ROADMAP
@@ -13,7 +13,8 @@ source files.
                           patches for third party programs
    Documentation/
        application/     Source files for Application Usage manual
-       bibliography/    .bib files with references to books and articles
+       essay/           Academic material and .bib files with references
+                          to books and articles
        contributor/     Source files for the Contribotor's Guide
        learning/        Source files for the Learning Manual
        misc/            Old announcements, ChangeLogs and NEWS
index b067305f9dcf38c807099c986524dd54bd279cec..f274204aaa4bdd354b924f20f75da2ea9750cfb1 100644 (file)
@@ -189,7 +189,7 @@ STEPMAKE_GUILE(OPTIONAL)
 STEPMAKE_PERL(OPTIONAL)
 
 STEPMAKE_PROGS(MAKEINFO, makeinfo, REQUIRED, 4.11)
-STEPMAKE_PROGS(TEXI2HTML, texi2html, OPTIONAL, 1.80)
+STEPMAKE_PROGS(TEXI2HTML, texi2html, OPTIONAL, 1.82)
 
 AC_DEFINE_UNQUOTED(FLOWER_VERSION, "${FULL_FLOWER_VERSION}")
 
index e5c1195111eccca9915f9ec701628de6fcf3f962..53866b478089c7f3954986305ad2302ae9ab9be4 100644 (file)
@@ -1,4 +1,4 @@
-\version "2.12.0"
+\version "2.13.4"
 
 \header {
     composer = "ARTHUR GRAY"
@@ -40,9 +40,9 @@ treble = \new Voice \relative c''{
     <fis fis,>8 <e! e,!>
     | %4
     <dis, a' dis>4)\sustainOn
-    
+
     \change Staff=treble
-    
+
     \slurUp
     \set PianoStaff.connectArpeggios = ##t
 
@@ -53,10 +53,10 @@ treble = \new Voice \relative c''{
     \grace {
         cis8
        \revert Stem #'direction
-       
+
        a16[-5_( fis dis]
        \ottava #0
-       
+
        cis32[ a-1 fis-4 dis]   cis[ a  fis)-2]
                                % the small grace in lower staff comes after us
        s32
@@ -68,16 +68,16 @@ treble = \new Voice \relative c''{
 
     | %5
     r8 <a' a,>8(\mf <gis gis,> <fis fis,>
-    
+
     % \fingerUp
     \override Fingering  #'direction = #UP
-    
+
     <gis gis,> <fis fis,> e)-1-4-5 r
 
     | %6
     r <a a,>8(\mf <gis gis,> <fis fis,>
     <gis gis,> <fis fis,>  e) r
-    
+
     | %7
     \bar "||"
 }
@@ -102,7 +102,7 @@ trebleTwo = \new Voice \relative c''{
     \override Fingering #'slur-padding = #0.1
     <cis e,>8[( <d,_3 b'_1>
     | %6
-    <cis_1 a'_2>)] cis'4. d4 
+    <cis_1 a'_2>)] cis'4. d4
     <cis e,>8[( <b d,>
     | %7
     <a cis,>)]
@@ -111,36 +111,36 @@ trebleTwo = \new Voice \relative c''{
 bass = \new Voice \relative c{
     \partial 2
     \key a \major
-    
+
     \slurDown
     \dynamicUp
 
     r8. e,16(\f_2 <a a,>8[ <b b,>]
     | %2
     %\override Staff.SustainPedalLineSpanner #'staff-padding = #5 %tweak
-                          
+
     <cis cis,>4\sustainOn
     \change Staff=treble
     \stemDown
     <a'' eis cis>4)\arpeggio
-    
+
     \change Staff=bass
     \stemNeutral
-    
+
     r8. cis,,16(\sustainOff <fis fis,>8 <gis gis,>
-    
+
     | %3
 
     <a a,>4\sustainOn
     \change Staff=treble
-                       
+
     \stemNeutral
-    \stemDown    
+    \stemDown
     <a' fis cis>)\arpeggio
     \change Staff=bass
     \stemNeutral
     r2
-    
+
     | %4
     \stemDown
     <b,, b,>4
@@ -150,46 +150,46 @@ bass = \new Voice \relative c{
         %urg: staff-change: ! on dis
         <cis'' a fis dis!>\arpeggio
     >>
-    
+
     \grace {
        \override Stem  #'stroke-style = #"grace"
-  
+
         s8
         s16 s s
        s32 s s
        s s s
        \clef bass
        <e,,, e,>32(\sustainOff\sustainOn
-    
+
        \revert Stem #'stroke-style
     }
     <gis' e>2)
-    
+
     | %5
     \slurUp
-    
+
     % \fingerDown
     \override Fingering  #'direction = #DOWN
 
-                          
+
     %\override Staff.SustainPedalLineSpanner #'staff-padding = #3.5 %tweak
     \set Staff.pedalSustainStyle = #'mixed
     %%a,8 e'[-5(<a-2 cis-3>])
 
-                          
+
     a,8\sustainOn e'[-5(<a cis>])-2-3
     %%r b,-5 <e-3 gis-5 d'>4
     r b,-5\sustainOff\sustainOn <e gis d'>4-3-5
     \slurNeutral
     e,8[-5(\sustainOff
-    
+
     | %6
     a)-2]\sustainOn
     \slurUp
     e'[(<a cis>)] r b,\sustainOff\sustainOn <e gis d'>4
     \slurNeutral
     e,8[(\sustainOff
-    
+
     | %7
     a)]
 }
@@ -217,7 +217,7 @@ middleDynamics = {
        s32 s
        s\> s
        s32 s s\! s
-    
+
     }
     \textLengthOn
     s32 s-"rall." s s s8 s4
@@ -225,7 +225,7 @@ middleDynamics = {
     | %5
     s2-"a tempo" s8
     s \> s s
-    | %6 
+    | %6
     s8\!
     s2 s8 s\> s
     | %7
@@ -235,6 +235,9 @@ middleDynamics = {
 theScore = \score{
     \context PianoStaff <<
         \new Staff = "treble" <<
+            \overrideBeamSettings #'Score #'(4 . 4) #'end
+              #'((* . (1 1 1 1))
+                 ((1 . 32) (4 4 4 4 4 4 4 4)))
            \treble
            \trebleTwo
         >>
@@ -255,11 +258,11 @@ theScore = \score{
         }
     }
 }
-                          
+
 \book{
     \score { \theScore }
 }
-    
+
 %%% Local variables:
 %%% coding: utf-8
 %%% LilyPond-indent-level:2
index a92188df114f980eef964866bcc8e8b0b3292731..48251ac17d65b296984ec7b494904cc68b6f60f7 100644 (file)
                       "domain by " maintainer  "." ))
        }
        \justify {
-         Unrestricted modification and redistribution 
-         is permitted and encouraged. Copy this music 
+         Unrestricted modification and redistribution
+         is permitted and encouraged. Copy this music
          and share it!
        }
       }
     }
-    lastupdated = "2002/August/19"
+    lastupdated = "2009/August/08"
   }
 
 
 
-\version "2.12.0"
+\version "2.13.4"
 
 
 
@@ -52,21 +52,21 @@ dux = \context Voice = "two"  \relative c''{
 
     r8 c16 b c8 g as c16 b c8 d |
     g, c16 b c8 d f,16 g as4 g16 f |
-    es c' b a g f! es d c8 es' d c | 
+    es c' b a g f! es d c8 es' d c |
     bes a bes c fis, g a fis |
     %%5
     g4 r16 c, d es f g as8~ as16 d, es f |
-    g a bes8 ~ bes16 es, f g as g f es d8 c'16 b! |  
+    g a bes8 ~ bes16 es, f g as g f es d8 c'16 b! |
                                % forced accident!
     c4 r4 r8 f es d |
-    r8 as g f g f16 es f8 d | 
+    r8 as g f g f16 es f8 d |
     g4 r8 b c c16 b c8 g |
-    %%10 
+    %%10
     as4 r8 a bes bes16 a bes8 f |
     g4 r8 g as as g
-    \change Staff = bass \stemUp 
+    \change Staff = bass \stemUp
     f |
-    r8 
+    r8
     as, bes c r8 as16 g as8 f8 |
     bes8 c bes as bes g f es |
     f des' c bes c as g f |
@@ -75,7 +75,7 @@ dux = \context Voice = "two"  \relative c''{
     \change Staff = treble
     \stemDown
 
-    g'16 fis g8 c, 
+    g'16 fis g8 c,
     es
     g16 fis! g8 a |
     d, g16 fis g8 a! c,16 d es4 d16 c |  % forced accident!
@@ -87,7 +87,7 @@ dux = \context Voice = "two"  \relative c''{
     c
     \change Staff = bass
     \stemUp
-    bes! as g 
+    bes! as g
     f8 \change Staff = treble
     \stemDown
     as' g f |
@@ -109,18 +109,18 @@ dux = \context Voice = "two"  \relative c''{
 
 comes = \context Voice = "one"  \relative c'' {
     \voiceOne
-    \override MultiMeasureRest  #'staff-position = #6 
+    \override MultiMeasureRest  #'staff-position = #6
     R1 |
     R1 |
     r8 g'16 fis g8 c, es g16 fis g8 a |
     d,8 g16 fis g8 a c,16 d es4 d16 c |
     %%5
-    bes8 es16 d es8 g,8 as f'16 es f8 a, 
+    bes8 es16 d es8 g,8 as f'16 es f8 a,
     bes8 g'16 f g8 b, c8 d16 es f4 ~ |
-    f8 es16 d c16 bes ! as g f8 as' g f 
+    f8 es16 d c16 bes ! as g f8 as' g f
     es d es f b, c d b |
     c g'16 fis g8 d es4 r8 e8 |
-    %%10 
+    %%10
     f f16 e f8 c8 d4 r8 d |
     es8 es16 d es8 bes c es16 d es8 f |
     bes, es16 d es8 f as,16 bes c4 bes16 as |
@@ -159,7 +159,7 @@ bassdux = \context Voice = "three"  \relative c' {
     R |
     R1 |
     r8 c16 b c8 g as c16 b c8 d |
-    g, c16 b c8 d f,16 g as4 g16 f | 
+    g, c16 b c8 d f,16 g as4 g16 f |
     es c' b a g f es d c d es d c bes! as! g |
                                % -> \classic_accidentals
     %%10
@@ -174,7 +174,7 @@ bassdux = \context Voice = "three"  \relative c' {
     g,8 bes'16 a bes8 d, es c'16 bes c8 e, |
     f d'16 c d8 fis, g4 r16 g, a b |
     c16 d es8~ es16 a, bes c d es f8~ f16 b, c d |
-    %%20 
+    %%20
     es8 r r e \stemNeutral \stemDown f f, es! d \stemNeutral |
     r as' g f g f16 es f8 g |
     c16 d es d c bes as g f bes' as g f es d c |
@@ -185,11 +185,11 @@ bassdux = \context Voice = "three"  \relative c' {
     g f as g f es d c b8 c16 b c8 g |
     as c16 b c8 d g, c16 b c8 d |
     f,16 g as4 g16 f es4 r8 es' |
-    d c g' g, 
+    d c g' g,
     %%30
     << {  c2 ~ | c1 ~ | c1 } \\
        {   c,2 ~ | c1 ~ | c1 }
-   >> 
+   >>
 }
 
 
@@ -199,10 +199,13 @@ bassdux = \context Voice = "three"  \relative c' {
        \context Score \with
        {
            \override SpacingSpanner #'spacing-increment = #1.0
-           \override SpacingSpanner #'shortest-duration-space = #1.9   
-       } \context PianoStaff << 
+           \override SpacingSpanner #'shortest-duration-space = #1.9
+       } \context PianoStaff <<
            \override Score.TimeSignature  #'style = #'C
            \context Staff = "treble" <<
+                \overrideBeamSettings #'Score #'(4 . 4) #'end
+                  #'((* . (1 1 1 1))
+                     ((1 . 32) . (4 4 4 4 4 4 4 4)))
                \key c \minor
                \dux
                { \comes \bar "|." }
index 253fdd5bf3ab09845c031c8ceb625a45e21ef1f5..a002adf33352ec10bbd618c756c43edee1c56407 100644 (file)
@@ -4,8 +4,11 @@
                     within normal staves and tablature."
        }
 
-deadnotes = \relative c,, {
-   e8. \deadNotesOn e16 \deadNotesOff g4 a b |
+mynotes = \relative c,, {
+   \deadNotesOn
+   e8. e16
+   \deadNotesOff
+   g4 a b |
    e8. \deadNote e16 g4 a b |
    e,4. \deadNote { e8 e e } e4 |
    < e, \deadNote b' e >8 < e \deadNote b' e > < e \deadNote b' e >4 < e \deadNote b' e >4 r
@@ -13,14 +16,24 @@ deadnotes = \relative c,, {
 }
 
 \context StaffGroup <<
-  \context Staff <<
-    \clef "bass_8"
-    \deadnotes
-  >>
-  \context TabStaff <<
-    \set TabStaff.stringTunings = #bass-tuning
-    \deadnotes
-  >>
+  \context Staff {
+    \context Voice {  % Warning: explicit voice instantiation is required
+                      %   to have deadNotesOff work properly
+                      %   when deadNotesOn comes at the beginning
+                      %   of the piece
+      \clef "bass_8"
+      \mynotes
+    }
+  }
+  \context TabStaff {
+    \context TabVoice {  % Warning:  explicit voice instantiation is
+                         %   required to have deadNotesOff work properly
+                         %   when deadNotesOn comes at the beginning
+                         %   of the piece
+      \set TabStaff.stringTunings = #bass-tuning
+      \mynotes
+    }
+  }
 >>
 
 
index 80d41549ee04b3c67a777f3c8f254b2c32a0dd7c..7d81a696afaf4b7f401567ddcbad281c9dcfb538 100644 (file)
@@ -208,9 +208,9 @@ stderr of this run."
 \test "" ##[ \unset autoBeaming #]
 %% Layout properties
 \test "" ##[ \override Staff . Stem #'thickness = #4.0 #]      % OverrideProperty
-\test "" ##[ \once \override Beam #'thickness = #0.6 #]
+\test "" ##[ \once \override Beam #'beam-thickness = #0.6 #]
 \test "" ##[ \revert Staff . Stem #'thickness #]       % RevertProperty
-\test "" ##[ \revert Beam #'thickness #]
+\test "" ##[ \revert Beam #'beam-thickness #]
 
 %% \applyOutput
 \test "" ##[ \applyOutput #'Foo #(lambda (arg) (list)) #]
index 31d9e6f252d66609a15f4ffa8384c0e536de3477..35af8f6b9fb621ef88912f52c19b929b98efc14c 100644 (file)
@@ -1,56 +1,62 @@
-\header {
-
-  texidoc = "Incipit can be printed using an InstrumentName grob."
+\version "2.13.4"
 
+\header {
+  texidoc = "Incipits can be printed using an @code{InstrumentName}
+grob."
 }
 
-\version "2.12.0"
-
-%% to avoid warnings:
+%% to prevent warnings/programming errors:
 #(set-object-property! 'music 'backend-type? ly:music?)
 #(set-object-property! 'music 'backend-doc "Incipit music")
+#(ly:add-interface 'incipit-interface "An incipit." '(music))
+#(let* ((instrument-def (assoc 'InstrumentName all-grob-descriptions))
+        (meta-def (assoc 'meta (cdr instrument-def)))
+        (interfaces-def (assoc 'interfaces (cdr meta-def)))
+        (interfaces (cdr interfaces-def)))
+   (set-cdr! interfaces-def (cons 'incipit-interface interfaces)))
 
 \score {
   \new Staff {
     %% All this would be shortcuted by an appropriate music function:
     \override Staff.InstrumentName #'music = ##{ \clef "petrucci-c1" c'4 d' e' f' #}
     \override Staff.InstrumentName #'self-alignment-X = #RIGHT
-    \override Staff.InstrumentName #'self-alignment-Y = #UP
-    \override Staff.InstrumentName #'Y-offset = #4
     \override Staff.InstrumentName #'padding = #0
-    \override Staff.InstrumentName #'stencil = 
-    #(lambda (grob)
-       (let* ((instrument-name (ly:grob-property grob 'long-text))
-              (layout (ly:output-def-clone (ly:grob-layout grob)))
-              (music (make-music 'SequentialMusic
-                      'elements (list (make-music 'ContextSpeccedMusic
-                                        'context-type 'MensuralStaff
-                                        'element (make-music 'PropertySet
-                                                   'symbol 'instrumentName
-                                                   'value instrument-name))
-                                      (ly:grob-property grob 'music))))
-              (score (ly:make-score music))
-              (mm (ly:output-def-lookup layout 'mm))
-              (indent (ly:output-def-lookup layout 'indent))
-              (incipit-width (ly:output-def-lookup layout 'incipit-width))
-              (scaled-incipit-width (if (number? incipit-width)
-                                        (* incipit-width mm)
-                                        (* indent 0.5))))
-         (ly:output-def-set-variable! layout 'indent (- indent scaled-incipit-width))
-         (ly:output-def-set-variable! layout 'line-width indent)
-         (ly:output-def-set-variable! layout 'ragged-right #f)
-         (ly:score-add-output-def! score layout)
-         (set! (ly:grob-property grob 'long-text)
-               (markup #:score score))
-         (ly:system-start-text::print grob)))
+    \override Staff.InstrumentName #'stencil =
+      #(lambda (grob)
+         (let* ((instrument-name (ly:grob-property grob 'long-text))
+                (layout (ly:output-def-clone (ly:grob-layout grob)))
+                (music (make-sequential-music
+                        (list (context-spec-music
+                               (make-sequential-music
+                                (list (make-property-set
+                                       'instrumentName instrument-name)
+                                      (make-grob-property-set
+                                       'VerticalAxisGroup
+                                       'Y-extent '(-4 . 4))))
+                               'MensuralStaff)
+                              (ly:grob-property grob 'music))))
+                (score (ly:make-score music))
+                (mm (ly:output-def-lookup layout 'mm))
+                (indent (ly:output-def-lookup layout 'indent))
+                (incipit-width (ly:output-def-lookup layout 'incipit-width))
+                (scaled-incipit-width (if (number? incipit-width)
+                                          (* incipit-width mm)
+                                          (* indent 0.5))))
+           (ly:output-def-set-variable! layout 'indent (- indent scaled-incipit-width))
+           (ly:output-def-set-variable! layout 'line-width indent)
+           (ly:output-def-set-variable! layout 'ragged-right #f)
+           (ly:score-add-output-def! score layout)
+           (set! (ly:grob-property grob 'long-text)
+                 (markup #:score score))
+           (system-start-text::print grob)))
 
     %% the instrument name definition is separated:
-    \set Staff.instrumentName = \markup Instrument
-    c'4 d' e' f' g'1
+    \set Staff.instrumentName = #"Instrument"
+    c'4 d' e' f'
+    g'1
   }
   \layout {
-    ragged-right = ##t
     indent = 5\cm
-    incipit-width = 3 \cm
+    incipit-width = 3\cm
   }
 }
\ No newline at end of file
index 55b209d3499ac4ba23b78535a697bdc65bef8671..4083620d39b3b9caab7d4d79b0661b75f65fcad7 100644 (file)
@@ -1,21 +1,18 @@
+\version "2.12.0"
 
 \header {
+  texidoc = "Instrument names are removed when the staves are
+killed off.
 
-  texidoc = "@code{PianoStaff.instrument} and
-@code{PianoStaff.instr} are removed when the staves are killed off.
-
-In this example, the 2nd staff (marked by the barnumber 2) disappears
-as does the instrument name.  "
-
+In this example, the second staff (marked by the bar number 2)
+disappears, as does the instrument name."
 }
-
-\version "2.12.0"
         
-  \new PianoStaff <<
-    \new Staff {
-      \override Staff.VerticalAxisGroup #'remove-empty = ##t  
-      \set PianoStaff.instrumentName ="up" 
-      \set PianoStaff.shortInstrumentName ="u"
-      c'1\break R
-    }
-  >>
+\new PianoStaff <<
+  \new Staff {
+    \override Staff.VerticalAxisGroup #'remove-empty = ##t  
+    \set PianoStaff.instrumentName = #"up" 
+    \set PianoStaff.shortInstrumentName = #"u"
+    c'1\break R
+  }
+>>
diff --git a/input/regression/page-spacing-first-system-spacing.ly b/input/regression/page-spacing-first-system-spacing.ly
deleted file mode 100644 (file)
index 82f7b4e..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-\version "2.13.2"
-
-#(set-default-paper-size "a6")
-
-\book {
-
-  \header {
-    texidoc = "first-system-spacing controls the spacing to the first
-non-title staff on every page."
-    title = "Title"
-  }
-
-  \paper {
-    first-system-spacing = #'((minimum-distance . 30))
-    ragged-bottom = ##t
-  }
-
-  { c'1 \pageBreak c'1 }
-}
\ No newline at end of file
diff --git a/input/regression/page-spacing-first-system-title-spacing.ly b/input/regression/page-spacing-first-system-title-spacing.ly
deleted file mode 100644 (file)
index e6117fc..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-\version "2.13.2"
-
-#(set-default-paper-size "a6")
-
-\book {
-
-  \header {
-    texidoc = "first-system-title-spacing controls the spacing to the title,
-provided that it is the first system on a page."
-    title = "Title"
-  }
-
-  \paper {
-    first-system-title-spacing = #'((minimum-distance . 30))
-    ragged-bottom = ##t
-  }
-
-  { c'1 \pageBreak c'1 }
-}
\ No newline at end of file
index 8a7903dab9975614d4defc7eb69e400ac30d3959..da6c0ceb101b9266cf4c0083e2cbb3941e95d3b7 100644 (file)
@@ -1,6 +1,8 @@
+\version "2.13.4"
+
 \header {
     texidoc = "A loose line (eg. a lyric line) at the bottom of a system
-gets spaced as though it wasn't loose."
+gets spaced appropriately."
 }
 
 \layout {
@@ -22,4 +24,3 @@ gets spaced as though it wasn't loose."
     }
 >>
 
-\version "2.12.0"
diff --git a/input/regression/page-spacing-loose-lines-and-markup.ly b/input/regression/page-spacing-loose-lines-and-markup.ly
new file mode 100644 (file)
index 0000000..9191d58
--- /dev/null
@@ -0,0 +1,21 @@
+\version "2.13.4"
+
+\header {
+  texidoc = "Having markup after a loose line doesn't confuse the page layout
+engine."
+}
+
+#(set-default-paper-size "a6")
+
+\book {
+  \score {
+  <<
+     \new Staff <<
+       \new Voice = "asdf" { c' d' e' f' }
+     >>
+     \new Lyrics \lyricsto "asdf" \lyricmode { a b c d }
+  >>
+  }
+  \markup "blah blah blah"
+}
+
index 15a0a732c29d355468b1eaee11493e5b026dc20a..715d33e09acc5510703a178f3594629dd0df9089 100644 (file)
@@ -1,13 +1,15 @@
+\version "2.13.4"
+
 \header {
     texidoc = "A loose line (eg. a lyric line) at the top of a system
-gets spaced as though it wasn't loose."
+is spaced appropriately."
 }
 
 \layout {
   ragged-right = ##t
   \context {
     \Lyrics
-    \override VerticalAxisGroup #'inter-loose-line-spacing #'space = #20
+    \override VerticalAxisGroup #'inter-loose-line-spacing #'minimum-distance = #20
     \override VerticalAxisGroup #'staff-affinity = #DOWN
   }
 }
@@ -23,4 +25,3 @@ gets spaced as though it wasn't loose."
   }
 >>
 
-\version "2.12.0"
diff --git a/input/regression/page-spacing-loose-lines-between.ly b/input/regression/page-spacing-loose-lines-between.ly
new file mode 100644 (file)
index 0000000..241e40f
--- /dev/null
@@ -0,0 +1,30 @@
+\version "2.13.4"
+
+\header {
+  texidoc = "Loose lines between two systems don't confuse the layout engine.
+In particular, they don't interfere with @var{between-system-spacing},
+which measures distances between spaceable staves."
+}
+
+\paper {
+  ragged-right = ##t
+  between-system-spacing = #'((space . 20) (minimum-distance . 30))
+  annotate-spacing = ##t
+}
+
+<<
+  \new Lyrics
+  \with { \override VerticalAxisGroup #'staff-affinity = #DOWN }
+  \lyricmode {
+    My2 first Li4 -- ly song,2
+    My2 first Li4 -- ly song,2
+  }
+  \context Voice = "voice" \relative {
+    d'2 d c4 bes a2 \break
+    d'2 d c4 bes a2
+  }
+  \new Lyrics \lyricmode {
+    Not2 much can4 go wrong!2
+    Not2 much can4 go wrong!2
+  }
+>>
diff --git a/input/regression/page-spacing-loose-lines-header-padding.ly b/input/regression/page-spacing-loose-lines-header-padding.ly
new file mode 100644 (file)
index 0000000..fca9e62
--- /dev/null
@@ -0,0 +1,32 @@
+\version"2.13.4"
+
+\header {
+  texidoc = "Padding from the header and footer is measured to the first
+line, whether or not it is spaceable."
+}
+
+#(set-default-paper-size "a6")
+
+\book {
+  \paper {
+    top-system-spacing = #'((space . 1) (padding . 10))
+    bottom-system-spacing = #'((space . 1) (padding . 10))
+    annotate-spacing = ##t
+    ragged-last-bottom = ##f
+  }
+
+  \score {
+    <<
+      \new Lyrics \with { \override VerticalAxisGroup #'staff-affinity = #DOWN } \lyricmode { foo }
+      \new Lyrics \with { \override VerticalAxisGroup #'staff-affinity = #DOWN } \lyricmode { foo }
+      \new Lyrics \with { \override VerticalAxisGroup #'staff-affinity = #DOWN } \lyricmode { foo }
+      \new Lyrics \with { \override VerticalAxisGroup #'staff-affinity = #DOWN } \lyricmode { foo }
+      \new Staff { c'1 }
+      \new Staff { c'1 }
+      \new Lyrics \lyricmode { foo }
+      \new Lyrics \lyricmode { foo }
+      \new Lyrics \lyricmode { foo }
+      \new Lyrics \lyricmode { foo }
+    >>
+  }
+}
\ No newline at end of file
diff --git a/input/regression/page-spacing-rehearsal-mark.ly b/input/regression/page-spacing-rehearsal-mark.ly
new file mode 100644 (file)
index 0000000..7603d93
--- /dev/null
@@ -0,0 +1,22 @@
+\version "2.13.4"
+
+\header {
+  texidoc = "The space taken up by rehearsal marks is correctly
+accounted for, even though they live in the Score context."
+}
+
+#(set-default-paper-size "a6")
+
+\book {
+  \paper {
+    oddHeaderMarkup = "header"
+    ragged-last-bottom = ##f
+  }
+  \score {
+    <<
+      \new Staff { \mark \markup \column { T A L L M A R K } c'1 \break
+                  \mark \markup \column { T A L L M A R K } c'1 }
+      \new Staff { c'1 \break c'1 }
+    >>
+  }
+}
index 3758bd4cf1a0e1f55a49563b2f98d6530e67d3b2..f3f5e382d53e0705b66c50b799595cac0fb31993 100644 (file)
@@ -1,7 +1,7 @@
 \version "2.13.4"
 
 \header {
-  texidoc = "Page layout and stretching work with system-cound enabled."
+  texidoc = "Page layout and stretching work with system-count enabled."
 }
 
 #(set-default-paper-size "a6")
diff --git a/input/regression/page-spacing-tall-headfoot.ly b/input/regression/page-spacing-tall-headfoot.ly
new file mode 100644 (file)
index 0000000..c6d03b9
--- /dev/null
@@ -0,0 +1,19 @@
+\version "2.13.4"
+
+#(set-default-paper-size "a6")
+
+\book {
+  \header {
+    texidoc = "Both the page breaking and the page layout take account of
+the heights of the header and footer."
+  }
+  \paper {
+    oddHeaderMarkup = \markup { \fill-line { \column { t a l l h e a d e r } } } 
+    oddFooterMarkup = \markup { \fill-line { \column { t a l l f o o t e r } } }
+    evenFooterMarkup = \markup { \fill-line { "small footer" } }
+  }
+
+  \repeat unfold 10 { c'1 \break }
+}
+
+
diff --git a/input/regression/page-spacing-top-system-spacing.ly b/input/regression/page-spacing-top-system-spacing.ly
new file mode 100644 (file)
index 0000000..dbb1689
--- /dev/null
@@ -0,0 +1,19 @@
+\version "2.13.2"
+
+#(set-default-paper-size "a6")
+
+\book {
+
+  \header {
+    texidoc = "top-system-spacing controls the spacing to the first
+non-title staff on every page."
+    title = "Title"
+  }
+
+  \paper {
+    top-system-spacing = #'((minimum-distance . 30))
+    ragged-bottom = ##t
+  }
+
+  { c'1 \pageBreak c'1 }
+}
\ No newline at end of file
diff --git a/input/regression/page-spacing-top-title-spacing.ly b/input/regression/page-spacing-top-title-spacing.ly
new file mode 100644 (file)
index 0000000..823b62f
--- /dev/null
@@ -0,0 +1,19 @@
+\version "2.13.2"
+
+#(set-default-paper-size "a6")
+
+\book {
+
+  \header {
+    texidoc = "@var{top-title-spacing} controls the spacing
+from the top margin to a title (or markup), provided that it is
+the first system on a page."
+    title = "Title" }
+
+  \paper {
+    top-title-spacing = #'((minimum-distance . 30))
+    ragged-bottom = ##t
+  }
+
+  { c'1 \pageBreak c'1 }
+}
\ No newline at end of file
index 33123f3f8e8c176d95d85d27662d25d2d2829066..12833b680529e93456b0f7dfcf78f769e424b5a3 100644 (file)
@@ -1,13 +1,17 @@
 \version "2.13.4"
 
-\header{ texidoc = "The palm mute technique for stringed instruments
-                    is supported by triangle-shaped note heads."
-       }
+\header{
+  texidoc =
+"The palm mute technique for stringed instruments
+is supported by triangle-shaped note heads."
+}
 
 palmmute = \relative c, {
     \time 4/4
+    \palmMuteOn
     e8^\markup { \musicglyph #"noteheads.u2do"  = palm mute }
-    \palmMuteOn e e \palmMuteOff  e e  \palmMute e e e |
+    e e
+    \palmMuteOff  e e  \palmMute e e e |
     e8 \palmMute { e e e } e e e e |
     \palmMuteOn < e b' e >8 e e e < e b' e >2 \palmMuteOff |
     < \palmMute e b' e >8 \palmMute { e e e } < \palmMute e b' e >2
@@ -15,10 +19,15 @@ palmmute = \relative c, {
 }
 
 \context StaffGroup <<
-  \context Staff <<
-    \clef "G_8"
-    \palmmute
-  >>
+  \context Staff {
+    \context Voice {  % Warning: explicit Voice instantiation is
+                      %    required to have palmMuteOff work properly
+                      %    when palmMuteOn comes at the beginning of
+                      %    the piece.
+      \clef "G_8"
+      \palmmute
+    }
+  }
   \context TabStaff <<
     \palmmute
   >>
diff --git a/input/regression/spacing-empty-bar.ly b/input/regression/spacing-empty-bar.ly
new file mode 100644 (file)
index 0000000..3a8cd9c
--- /dev/null
@@ -0,0 +1,10 @@
+\version "2.13.4"
+
+\header {
+  texidoc = "Empty barlines do not affect spacing."
+}
+
+{
+  c'4 c' \bar "" c' c' \break
+  \repeat unfold 10 { c' c' c' c' \bar "" \noBreak }
+}
\ No newline at end of file
index 8fe151b337f5576e845704cbe710dbd1493e139e..2931043303a42b04f22666d1fc60d2f7405e81e0 100644 (file)
@@ -342,5 +342,4 @@ ADD_INTERFACE (Align_interface,
               "padding "
               "positioning-done "
               "stacking-dir "
-              "threshold "
               );
index 4ce0a01a65918d486bb1d7be9dca9603eb8ef9be..00a8219ec044ee526a36b3f075c90485a79d82e4 100644 (file)
@@ -691,6 +691,18 @@ Axis_group_interface::calc_next_staff_spacing (SCM smob)
   return me->get_property ("default-next-staff-spacing");
 }
 
+Real
+Axis_group_interface::minimum_distance (Grob *g1, Grob *g2, Axis a)
+{
+  SCM sym = ly_symbol2scm ((a == Y_AXIS) ? "vertical-skylines" : "horizontal-skylines");
+
+  Skyline_pair *s1 = Skyline_pair::unsmob (g1->get_property (sym));
+  Skyline_pair *s2 = Skyline_pair::unsmob (g2->get_property (sym));
+  if (s1 && s2)
+    return (*s1)[DOWN].distance ((*s2)[UP]);
+  return 0;
+}
+
 ADD_INTERFACE (Axis_group_interface,
               "An object that groups other layout objects.",
 
@@ -715,5 +727,6 @@ ADD_INTERFACE (Axis_group_interface,
               "pure-relevant-spanners "
               "staff-affinity "
               "staff-grouper "
+              "system-Y-offset "
               "vertical-skylines "
               );
index 48272ae10fa0bc84dcc5761eeb5ca655fbb829e8..06b7c2d80be86fe2f6fb4690709ee720ced8a57c 100644 (file)
@@ -111,14 +111,14 @@ Beam::quanting (SCM smob, SCM posns)
     divided by the current staff_space.
   */
   Real ss = Staff_symbol_referencer::staff_space (me);
-  Real thickness = Beam::get_thickness (me) / ss;
+  Real beam_thickness = Beam::get_beam_thickness (me) / ss;
   Real slt = Staff_symbol_referencer::line_thickness (me) / ss;
 
   Real dy_mus = robust_scm2double (me->get_property ("least-squares-dy"), 0);
   Real straddle = 0.0;
-  Real sit = (thickness - slt) / 2;
+  Real sit = (beam_thickness - slt) / 2;
   Real inter = 0.5;
-  Real hang = 1.0 - (thickness - slt) / 2;
+  Real hang = 1.0 - (beam_thickness - slt) / 2;
   Real quants [] = {straddle, sit, inter, hang };
 
   int num_quants = int (sizeof (quants) / sizeof (Real));
@@ -249,7 +249,7 @@ Beam::quanting (SCM smob, SCM posns)
     if (qscores[i].demerits < reasonable_score)
       {
        Real d = score_forbidden_quants (qscores[i].yl, qscores[i].yr,
-                                        rad, slt, thickness, beam_translation,
+                                        rad, slt, beam_thickness, beam_translation,
                                         edge_beam_counts, ldir, rdir, &parameters);
        qscores[i].demerits += d;
 
@@ -441,7 +441,7 @@ Real
 Beam::score_forbidden_quants (Real yl, Real yr,
                              Real radius,
                              Real slt,
-                             Real thickness, Real beam_translation,
+                             Real beam_thickness, Real beam_translation,
                              Drul_array<int> beam_counts,
                              Direction ldir, Direction rdir,
 
@@ -469,8 +469,8 @@ Beam::score_forbidden_quants (Real yl, Real yr,
            will be in the gap of the (2, sit) quant, leading to a
            false demerit.
          */
-         Real gap1 = y[d] - stem_dir * ((j - 1) * beam_translation + thickness / 2 - slt / 2.2);
-         Real gap2 = y[d] - stem_dir * (j * beam_translation - thickness / 2 + slt / 2.2);
+         Real gap1 = y[d] - stem_dir * ((j - 1) * beam_translation + beam_thickness / 2 - slt / 2.2);
+         Real gap2 = y[d] - stem_dir * (j * beam_translation - beam_thickness / 2 + slt / 2.2);
 
          Interval gap;
          gap.add_point (gap1);
@@ -498,9 +498,9 @@ Beam::score_forbidden_quants (Real yl, Real yr,
   if (max (beam_counts[LEFT], beam_counts[RIGHT]) >= 2)
     {
       Real straddle = 0.0;
-      Real sit = (thickness - slt) / 2;
+      Real sit = (beam_thickness - slt) / 2;
       Real inter = 0.5;
-      Real hang = 1.0 - (thickness - slt) / 2;
+      Real hang = 1.0 - (beam_thickness - slt) / 2;
 
       Direction d = LEFT;
       do
index e803b806c89fa974eddbf81769325f2dff63795b..ac407546095d11d551fee16afda8eb720c15eced 100644 (file)
@@ -82,9 +82,9 @@ Beam::add_stem (Grob *me, Grob *s)
 }
 
 Real
-Beam::get_thickness (Grob *me)
+Beam::get_beam_thickness (Grob *me)
 {
-  return robust_scm2double (me->get_property ("thickness"), 0)
+  return robust_scm2double (me->get_property ("beam-thickness"), 0)
     * Staff_symbol_referencer::staff_space (me);
 }
 
@@ -95,12 +95,12 @@ Beam::get_beam_translation (Grob *me)
   int beam_count = get_beam_count (me);
   Real staff_space = Staff_symbol_referencer::staff_space (me);
   Real line = Staff_symbol_referencer::line_thickness (me);
-  Real thickness = get_thickness (me);
+  Real beam_thickness = get_beam_thickness (me);
   Real fract = robust_scm2double (me->get_property ("length-fraction"), 1.0);
   
   Real beam_translation = beam_count < 4
-    ? (2 * staff_space + line - thickness) / 2.0
-    : (3 * staff_space + line - thickness) / 3.0;
+    ? (2 * staff_space + line - beam_thickness) / 2.0
+    : (3 * staff_space + line - beam_thickness) / 3.0;
 
   return fract * beam_translation;
 }
@@ -564,7 +564,7 @@ Beam::print (SCM grob)
   Real dy = pos[RIGHT] - pos[LEFT];
   Real slope = (dy && span.length ()) ? dy / span.length ()  : 0;
 
-  Real thick = get_thickness (me);
+  Real beam_thickness = get_beam_thickness (me);
   Real beam_dy = get_beam_translation (me);
 
   Direction feather_dir = to_dir (me->get_property ("grow-direction"));
@@ -578,7 +578,7 @@ Beam::print (SCM grob)
          local_slope += feather_dir * segments[i].vertical_count_ * beam_dy / span.length ();
        }
       
-      Stencil b = Lookup::beam (local_slope, segments[i].horizontal_.length (), thick, blot);
+      Stencil b = Lookup::beam (local_slope, segments[i].horizontal_.length (), beam_thickness, blot);
 
       b.translate_axis (segments[i].horizontal_[LEFT], X_AXIS);
       
@@ -794,7 +794,7 @@ Beam::consider_auto_knees (Grob *me)
     }
 
   Real beam_translation = get_beam_translation (me);
-  Real beam_thickness = Beam::get_thickness (me);
+  Real beam_thickness = Beam::get_beam_thickness (me);
   int beam_count = Beam::get_beam_count (me);
   Real height_of_beams = beam_thickness / 2
     + (beam_count - 1) * beam_translation;
@@ -842,11 +842,11 @@ set_minimum_dy (Grob *me, Real *dy)
       */
 
       Real ss = Staff_symbol_referencer::staff_space (me);
-      Real thickness = Beam::get_thickness (me) / ss;
+      Real beam_thickness = Beam::get_beam_thickness (me) / ss;
       Real slt = Staff_symbol_referencer::line_thickness (me) / ss;
-      Real sit = (thickness - slt) / 2;
+      Real sit = (beam_thickness - slt) / 2;
       Real inter = 0.5;
-      Real hang = 1.0 - (thickness - slt) / 2;
+      Real hang = 1.0 - (beam_thickness - slt) / 2;
 
       *dy = sign (*dy) * max (fabs (*dy),
                              min (min (sit, inter), hang));
@@ -976,7 +976,7 @@ Beam::calc_least_squares_positions (SCM smob, SCM /* posns */)
        {
          /* FIXME. -> UP */
          Direction d = (Direction) (sign (chord.delta ()) * UP);
-         pos[d] = get_thickness (me) / 2;
+         pos[d] = get_beam_thickness (me) / 2;
          pos[-d] = -pos[d];
        }
       else
@@ -1272,7 +1272,7 @@ Beam::set_stem_lengths (SCM smob)
   if (robust_scm2int (me->get_property ("gap-count"), 0))
     {
       gap = true;
-      thick = get_thickness (me);
+      thick = get_beam_thickness (me);
     }
 
   Grob *fvs = first_normal_stem (me);
@@ -1443,7 +1443,7 @@ Beam::rest_collision_callback (SCM smob, SCM prev_offset)
     + (stem->relative_coordinate (common, X_AXIS) - x0) * slope;
 
   Real beam_translation = get_beam_translation (beam);
-  Real beam_thickness = Beam::get_thickness (beam);
+  Real beam_thickness = Beam::get_beam_thickness (beam);
 
   /*
     TODO: this is not strictly correct for 16th knee beams.
@@ -1552,7 +1552,7 @@ Beam::get_direction_beam_count (Grob *me, Direction d)
 ADD_INTERFACE (Beam,
               "A beam.\n"
               "\n"
-              "The @code{thickness} property is the weight of beams,"
+              "The @code{beam-thickness} property is the weight of beams,"
               " measured in staffspace.  The @code{direction} property is"
               " not user-serviceable.  Use the @code{direction} property"
               " of @code{Stem} instead.\n"
@@ -1596,6 +1596,7 @@ ADD_INTERFACE (Beam,
               "auto-knee-gap "
               "beamed-stem-shorten "
               "beaming "
+              "beam-thickness "
               "break-overshoot "
               "clip-edges "
               "concaveness "
@@ -1616,5 +1617,4 @@ ADD_INTERFACE (Beam,
               "quantized-positions "
               "shorten "
               "stems "
-              "thickness "
               );
diff --git a/lily/easy-notation.cc b/lily/easy-notation.cc
deleted file mode 100644 (file)
index 8838efe..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
-  easy-notation.cc --  implement easy notation heads
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2005--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
-*/
-
-#include "note-head.hh"
-
-#include <cctype>
-using namespace std;
-
-#include "font-interface.hh"
-#include "grob.hh"
-#include "music.hh"
-#include "output-def.hh"
-#include "staff-symbol-referencer.hh"
-#include "stem.hh"
-#include "stream-event.hh"
-#include "text-interface.hh"
-#include "rhythmic-head.hh"
-
-/*
-
-TODO: move to scheme
-
-*/
-MAKE_SCHEME_CALLBACK (Note_head, brew_ez_stencil, 1);
-SCM
-Note_head::brew_ez_stencil (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-  int log = Rhythmic_head::duration_log (me);
-
-  SCM cause = me->get_property ("cause");
-  SCM spitch = unsmob_stream_event (cause)->get_property ("pitch");
-  Pitch *pit = unsmob_pitch (spitch);
-
-  SCM idx = scm_from_int (pit->get_notename ());
-  SCM names = me->get_property ("note-names");
-  SCM charstr = SCM_EOL;
-  if (scm_is_vector (names))
-    charstr = scm_vector_ref (names, idx);
-  else
-    {
-      char s[2] = "a";
-      s[0] = char ((pit->get_notename () + 2) % 7 + 'a');
-      s[0] = char (toupper (s[0]));
-      charstr = scm_from_locale_string (s);
-    }
-
-  SCM letter
-    = Text_interface::interpret_string (me->layout ()->self_scm (),
-                                       Font_interface::text_font_alist_chain (me),
-                                       charstr);
-
-  Stencil l (*unsmob_stencil (letter));
-  l.align_to (X_AXIS, CENTER);
-  l.align_to (Y_AXIS, CENTER);
-
-  l = Stencil (Box (), l.expr ());
-  Real ss = Staff_symbol_referencer::staff_space (me);
-  Real lt = Staff_symbol_referencer::line_thickness (me);
-
-  Real radius = (ss + lt) / 2.0;
-  Real stem_thick = 1.3 * lt;
-  if (Grob *stem = unsmob_grob (me->get_object ("stem")))
-    stem_thick = Stem::thickness (stem);
-
-  int black = (log >= 2);
-
-  Stencil head;
-  Box extent (Interval (-radius, radius),
-             Interval (-radius, radius));
-
-  Stencil black_head (extent,
-                     scm_list_4 (ly_symbol2scm ("circle"),
-                                 scm_from_double (radius),
-                                 scm_from_double (0.0),
-                                 SCM_BOOL_T));
-  Stencil white_head;
-  if (black)
-    l = l.in_color (1, 1, 1);
-  else
-    {
-      white_head = Stencil (extent,
-                           scm_list_4 (ly_symbol2scm ("circle"),
-                                       scm_from_double (radius - stem_thick),
-                                       scm_from_double (0.0),
-                                       SCM_BOOL_T));
-
-      white_head = white_head.in_color (1, 1, 1);
-    }
-
-  Stencil total;
-  total.add_stencil (l);
-  total.add_stencil (white_head);
-  total.add_stencil (black_head);
-  total.translate_axis (radius, X_AXIS);
-
-  return total.smobbed_copy ();
-}
-
index ce3e41c76dbcbf826d9191c9e27511edd23f1209..540f279b44d109fcb8679eb4ac7fe176756b2132 100644 (file)
@@ -11,6 +11,7 @@
 #include <cstring>
 
 #include "align-interface.hh"
+#include "axis-group-interface.hh"
 #include "input.hh"
 #include "international.hh"
 #include "item.hh"
@@ -761,3 +762,4 @@ Grob::check_cross_staff (Grob *commony)
 
   return false;
 }
+
index b147896b05dab1c132e8bb2bc6e36b7d959652ea..95aa9f3bc555c2e5695445df70bd5fe1c736ae79 100644 (file)
@@ -43,6 +43,7 @@ struct Axis_group_interface
   static void get_children (Grob *, vector<Grob*> *);
   static Interval staff_extent (Grob *me, Grob *ref, Axis, Grob *staff, Axis);
   static SCM calc_common (Grob *, Axis);
+  static Real minimum_distance (Grob*, Grob*, Axis);
   DECLARE_GROB_INTERFACE();
 };
 
index 3abccea544df70a15b210f65550f928685914796..2b877ad644b6c2b34357cca84f46a69a84e229ed 100644 (file)
@@ -79,7 +79,7 @@ public:
   static void set_stemlens (Grob *);
   static int get_beam_count (Grob *me);
   static Real get_beam_translation (Grob *me);
-  static Real get_thickness (Grob *me);
+  static Real get_beam_thickness (Grob *me);
   static void connect_beams (Grob *me);
   static vector<Beam_segment> get_beam_segments (Grob *me_grob, Grob **common); 
   static Interval no_visible_stem_positions (Grob *me, Interval default_value);
index 3a724c8d95ac5141e233584d2752d50bdc51a840..9ff7613561f3b92b62bc88fc4641c00d9a7d8df7 100644 (file)
@@ -54,8 +54,8 @@ public:
   friend SCM ly_grob_basic_properties (SCM);
 
   /* standard callbacks */
-  DECLARE_SCHEME_CALLBACK(x_parent_positioning, (SCM));
-  DECLARE_SCHEME_CALLBACK(y_parent_positioning, (SCM));
+  DECLARE_SCHEME_CALLBACK (x_parent_positioning, (SCM));
+  DECLARE_SCHEME_CALLBACK (y_parent_positioning, (SCM));
   DECLARE_SCHEME_CALLBACK (stencil_height, (SCM smob));
   DECLARE_SCHEME_CALLBACK (stencil_width, (SCM smob));
 
index e7e8d73dba6a8adcee8ddcb78f011712065d7343..74c6ca440f0c49b4cf3d10722b6165dfeee5d254 100644 (file)
@@ -33,11 +33,7 @@ protected:
   void solve_rod_spring_problem (bool ragged);
   SCM find_system_offsets ();
   void distribute_loose_lines (vector<Grob*> const&, vector<Real> const&, Real, Real);
-  void add_loose_lines_as_spaceable_lines (vector<Grob*> const&,
-                                          vector<Real> const&,
-                                          vsize start, vsize end);
 
-  static Grob* find_vertical_alignment (System*);
   static void build_system_skyline (vector<Grob*> const&, vector<Real> const&, Skyline* up, Skyline* down);
   static vector<Grob*> filter_dead_elements (vector<Grob*> const&);
 
@@ -76,6 +72,8 @@ protected:
   Real page_height_;
   Real header_height_;
   Real footer_height_;
+  Real header_padding_;
+  Real footer_padding_;
 };
 
 #endif /* PAGE_LAYOUT_HH */
index 0febd15be3ce6d6094cf64a47f9477147d49d0f0..030403572055197c7afe111f382aa20de4b7fcb8 100644 (file)
@@ -27,6 +27,7 @@ public:
   DECLARE_SCHEME_CALLBACK (y_aligned_side, (SCM element, SCM current));
   DECLARE_SCHEME_CALLBACK (pure_y_aligned_side, (SCM element, SCM start, SCM end, SCM current));
   DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM element));
+  DECLARE_SCHEME_CALLBACK (move_to_extremal_staff, (SCM));
 
   static SCM aligned_side (Grob*me, Axis a, bool pure, int start, int end, Real *current_off_ptr);
 
index 3fc805a959c1ea6ca6ad1ab16397ef2b3b3b404e..f69a3cee67b6e1ff4273a6414c9ff3bb53772ed1 100644 (file)
@@ -26,6 +26,8 @@ class System : public Spanner
   
 public:
   Paper_score *paper_score () const;
+  Grob *get_vertical_alignment ();
+  Grob *get_extremal_staff (Direction dir, Interval const&);
   int get_rank () const;
   void do_break_substitution_and_fixup_refpoints ();
   void post_processing ();
index 1413854b1b33ce8de7ba25942259989e8c677552..8141a87cd1864f33f62aea45351c1c299a245f57 100644 (file)
@@ -172,14 +172,18 @@ char const *LILYPOND_DATADIR = PACKAGE_DATADIR "/" TOPLEVEL_VERSION;
   && defined(HAVE_FPU_CONTROL_H) && (HAVE_FPU_CONTROL_H == 1))
 
 #include <fpu_control.h>
-static void configure_fpu() {
+static void
+configure_fpu ()
+{
   fpu_control_t fpu_control = 0x027f;
   _FPU_SETCW (fpu_control);
 }
 
 #else
 
-static void configure_fpu() {
+static void
+configure_fpu ()
+{
 }
 
 #endif /* defined(__x86__) || defined(__i386__) */
@@ -220,8 +224,8 @@ static void
 copyright ()
 {
   /* Do not update the copyright years here, run grand-replace.sh.  */
-  printf (_f ("Copyright (c) %s by\n%s  and others.", "1996--2009",
-             AUTHORS).c_str ());
+  printf ("%s", (_f ("Copyright (c) %s by\n%s  and others.", "1996--2009",
+                     AUTHORS).c_str ()));
   printf ("\n");
 }
 
@@ -247,25 +251,25 @@ LY_DEFINE (ly_usage, "ly:usage",
           "Print usage message.")
 {
   /* No version number or newline here.  It confuses help2man.  */
-  printf (_f ("Usage: %s [OPTION]... FILE...", PROGRAM_NAME).c_str ());
+  printf ("%s", (_f ("Usage: %s [OPTION]... FILE...", PROGRAM_NAME).c_str ()));
   printf ("\n\n");
-  printf (_ ("Typeset music and/or produce MIDI from FILE.").c_str ());
+  printf ("%s", (_ ("Typeset music and/or produce MIDI from FILE.").c_str ()));
   printf ("\n\n");
-  printf (_ ("LilyPond produces beautiful music notation.").c_str ());
+  printf ("%s", (_ ("LilyPond produces beautiful music notation.").c_str ()));
   printf ("\n");
-  printf (_f ("For more information, see %s", PROGRAM_URL).c_str ());
+  printf ("%s", (_f ("For more information, see %s", PROGRAM_URL).c_str ()));
   printf ("\n\n");
-  printf (_ ("Options:").c_str ());
+  printf ("%s", (_ ("Options:").c_str ()));
   printf ("\n");
-  printf (Long_option_init::table_string (options_static).c_str ());
+  printf ("%s", Long_option_init::table_string (options_static).c_str ());
   printf ("\n");
   /* Translators, please translate this string as
-         "Report bugs in English via %s",
+     "Report bugs in English via %s",
      or if there is a LilyPond users list or forum in your language
-         "Report bugs in English via %s or in YOUR_LANG via URI"  */
-  printf (_f ("Report bugs via %s",
-             "http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs"
-             ).c_str ());
+     "Report bugs in English via %s or in YOUR_LANG via URI"  */
+  printf ("%s", (_f ("Report bugs via %s",
+                    "http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs"
+                    ).c_str ()));
   printf ("\n");
   printf ("\n");
   return SCM_UNSPECIFIED;
@@ -278,7 +282,7 @@ warranty ()
   printf ("\n");
   copyright ();
   printf ("\n");
-  printf (_ (WARRANTY).c_str ());
+  printf ("%s", (_ (WARRANTY).c_str ()));
 }
 
 static void
@@ -409,7 +413,7 @@ main_with_guile (void *, int, char **)
       *tail = scm_cons (scm_from_locale_string (arg), SCM_EOL);
       tail = SCM_CDRLOC (*tail);
     }
-  
+
   delete option_parser;
   option_parser = 0;
 
@@ -504,9 +508,10 @@ parse_argv (int argc, char **argv)
        case 'j':
          jail_spec = option_parser->optional_argument_str0_;
          break;
-         
+
        case 'e':
-         init_scheme_code_global += option_parser->optional_argument_str0_ + string (" ");
+         init_scheme_code_global
+            += option_parser->optional_argument_str0_ + string (" ");
          break;
        case 'w':
          warranty ();
@@ -561,7 +566,7 @@ parse_argv (int argc, char **argv)
 void
 setup_guile_env ()
 {
-  const char *yield = getenv ("LILYPOND_GC_YIELD");
+  char const *yield = getenv ("LILYPOND_GC_YIELD");
   bool overwrite = true;
   if (!yield)
     {
@@ -581,7 +586,7 @@ setup_guile_env ()
 }
 
 vector<string> start_environment_global;
+
 int
 main (int argc, char **argv, char **envp)
 {
@@ -589,7 +594,7 @@ main (int argc, char **argv, char **envp)
 
   for (char **p = envp; *p; p++)
     start_environment_global.push_back(*p);
-  
+
   if (getenv ("LILYPOND_VERBOSE"))
     be_verbose_global = true;
 
@@ -614,7 +619,7 @@ main (int argc, char **argv, char **envp)
 #else
   scm_boot_guile (argc, argv, main_with_guile, 0);
 #endif
-       
+
   /* Only reachable if GUILE exits.  That is an error.  */
   return 1;
 }
index fa84af9c4bf85563a9048532441d01a00dbf43c8..9059390c893d2673ebdc1a2cacd0afcc15f6e4cb 100644 (file)
@@ -267,7 +267,6 @@ ADD_TRANSLATOR (Multi_measure_rest_engraver,
                /* read */
                "internalBarNumber "
                "restNumberThreshold "
-               "breakableSeparationItem "
                "currentCommandColumn "
                "measurePosition "
                "measureLength ",
index bd796a71354f5d2376164781befe70a7f852a5cd..81cb8c2fcd52fd51bed952166124de5a4e659693 100644 (file)
@@ -235,6 +235,8 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn,
          Item *it = dynamic_cast<Item *> (items[i]);
          if (!Note_column::has_interface (it))
            continue;
+         if (d == RIGHT && it->get_column () != rcolumn)
+           continue;
 
          /*
            Find accidentals which are sticking out of the right side.
index 8dc19ef3576adc8dff840bcf962fb2f8b65b6680..038b0af2479b3f4db7a5a29488a493a9cc136f38 100644 (file)
@@ -524,13 +524,14 @@ Page_breaking::find_chunks_and_breaks (Break_predicate is_break)
              Constrained_breaking breaking (system_specs_[i].pscore_);
              vector<Line_details> details = breaking.line_details (0, VPOS, scm_to_int (system_count));
 
+             cols.push_back (system_specs_[i].pscore_->root_system ()->used_columns ()[0]);
              for (vsize j = 0; j < details.size (); j++)
                cols.push_back (details[j].last_column_);
            }
          else
            cols = system_specs_[i].pscore_->root_system ()->used_columns ();
 
-         int last_chunk_idx = -1;
+         int last_chunk_idx = 0;
          vector<vsize> line_breaker_columns;
          line_breaker_columns.push_back (0);
 
@@ -1365,9 +1366,9 @@ Page_breaking::last_break_position () const
 Real
 Page_breaking::min_whitespace_at_top_of_page (Line_details const &line) const
 {
-  SCM first_system_spacing = book_->paper_->c_variable ("first-system-spacing");
+  SCM first_system_spacing = book_->paper_->c_variable ("top-system-spacing");
   if (line.title_)
-    first_system_spacing = book_->paper_->c_variable ("first-system-title-spacing");
+    first_system_spacing = book_->paper_->c_variable ("top-title-spacing");
 
   Real min_distance = -infinity_f;
   Real padding = 0;
@@ -1386,7 +1387,7 @@ Page_breaking::min_whitespace_at_top_of_page (Line_details const &line) const
 Real
 Page_breaking::min_whitespace_at_bottom_of_page (Line_details const &line) const
 {
-  SCM last_system_spacing = book_->paper_->c_variable ("last-system-spacing");
+  SCM last_system_spacing = book_->paper_->c_variable ("bottom-system-spacing");
   Real min_distance = -infinity_f;
   Real padding = 0;
 
index 61a7ebb90168cf26a747bdee0f31b269b50b7cb8..1aa83d3c0b222a9a05dcc8d0efdea51dccd9b802 100644 (file)
 #include "page-layout-problem.hh"
 
 #include "align-interface.hh"
+#include "axis-group-interface.hh"
 #include "hara-kiri-group-spanner.hh"
 #include "international.hh"
 #include "item.hh"
 #include "output-def.hh"
 #include "paper-book.hh"
+#include "paper-column.hh"
 #include "pointer-group-interface.hh"
 #include "prob.hh"
 #include "skyline-pair.hh"
@@ -26,6 +28,8 @@ Page_layout_problem::Page_layout_problem (Paper_book *pb, SCM page_scm, SCM syst
   Prob *page = unsmob_prob (page_scm);
   header_height_ = 0;
   footer_height_ = 0;
+  header_padding_ = 0;
+  footer_padding_ = 0;
   page_height_ = 100;
 
   if (page)
@@ -44,33 +48,38 @@ Page_layout_problem::Page_layout_problem (Paper_book *pb, SCM page_scm, SCM syst
   bottom_skyline_.set_minimum_height (-header_height_);
 
   SCM between_system_spacing = SCM_EOL;
+  SCM between_scores_system_spacing = SCM_EOL;
   SCM after_title_spacing = SCM_EOL;
   SCM before_title_spacing = SCM_EOL;
   SCM between_title_spacing = SCM_EOL;
 
-  // first_system_spacing controls the spring from the top of the printable
+  // top_system_spacing controls the spring from the top of the printable
   // area to the first staff. It allows the user to control the offset of
   // the first staff (as opposed to the top of the first system) from the
-  // top of the page. Similarly for last_system_spacing.
-  SCM first_system_spacing = SCM_EOL;
-  SCM last_system_spacing = SCM_EOL;
+  // top of the page. Similarly for bottom_system_spacing.
+  SCM top_system_spacing = SCM_EOL;
+  SCM bottom_system_spacing = SCM_EOL;
   if (pb && pb->paper_)
     {
       Output_def *paper = pb->paper_;
       between_system_spacing = paper->c_variable ("between-system-spacing");
+      between_scores_system_spacing = paper->c_variable ("between-scores-system-spacing");
       after_title_spacing = paper->c_variable ("after-title-spacing");
       before_title_spacing = paper->c_variable ("before-title-spacing");
       between_title_spacing = paper->c_variable ("between-title-spacing");
-      last_system_spacing = paper->c_variable ("last-system-spacing");
-      first_system_spacing = paper->c_variable ("first-system-spacing");
+      bottom_system_spacing = paper->c_variable ("bottom-system-spacing");
+      top_system_spacing = paper->c_variable ("top-system-spacing");
       if (scm_is_pair (systems) && unsmob_prob (scm_car (systems)))
-       first_system_spacing = paper->c_variable ("first-system-title-spacing");
+       top_system_spacing = paper->c_variable ("top-title-spacing");
 
       // Note: the page height here does _not_ reserve space for headers and
-      // footers. This is because we want to anchor the first-system-spacing
+      // footers. This is because we want to anchor the top-system-spacing
       // spring at the _top_ of the header.
       page_height_ -= robust_scm2double (paper->c_variable ("top-margin"), 0)
        + robust_scm2double (paper->c_variable ("bottom-margin"), 0);
+
+      read_spacing_spec (top_system_spacing, &header_padding_, ly_symbol2scm ("padding"));
+      read_spacing_spec (bottom_system_spacing, &footer_padding_, ly_symbol2scm ("padding"));
     }
   bool last_system_was_title = false;
 
@@ -88,8 +97,14 @@ Page_layout_problem::Page_layout_problem (Paper_book *pb, SCM page_scm, SCM syst
              continue;
            }
 
-         SCM spec = first ? first_system_spacing
-           : (last_system_was_title ? after_title_spacing : between_system_spacing);
+         SCM spec = between_system_spacing;
+         if (first)
+           spec = top_system_spacing;
+         else if (last_system_was_title)
+           spec = after_title_spacing;
+         else if (0 == Paper_column::get_rank (sys->get_bound (LEFT)))
+           spec = between_scores_system_spacing;
+
          Spring spring (first ? 0 : 1, 0.0);
          Real padding = 0.0;
          alter_spring_from_spacing_spec (spec, &spring);
@@ -100,7 +115,7 @@ Page_layout_problem::Page_layout_problem (Paper_book *pb, SCM page_scm, SCM syst
        }
       else if (Prob *p = unsmob_prob (scm_car (s)))
        {
-         SCM spec = first ? first_system_spacing
+         SCM spec = first ? top_system_spacing
            : (last_system_was_title ? between_title_spacing : before_title_spacing);
          Spring spring (first ? 0 : 1, 0.0);
          Real padding = 0.0;
@@ -116,10 +131,30 @@ Page_layout_problem::Page_layout_problem (Paper_book *pb, SCM page_scm, SCM syst
 
   Spring last_spring (0, 0);
   Real last_padding = 0;
-  alter_spring_from_spacing_spec (last_system_spacing, &last_spring);
-  read_spacing_spec (last_system_spacing, &last_padding, ly_symbol2scm ("padding"));
+  alter_spring_from_spacing_spec (bottom_system_spacing, &last_spring);
+  read_spacing_spec (bottom_system_spacing, &last_padding, ly_symbol2scm ("padding"));
   last_spring.ensure_min_distance (last_padding - bottom_skyline_.max_height () + footer_height_);
   springs_.push_back (last_spring);
+
+  if (elements_.size ())
+    {
+      Real bottom_padding = 0;
+
+      // TODO: junk bottom-space now that we have bottom-system-spacing?
+      // bottom-space has the flexibility that one can do it per-system.
+      // NOTE: bottom-space is misnamed since it is not stretchable space.
+      if (Prob *p = elements_.back ().prob)
+       bottom_padding = robust_scm2double (p->get_property ("bottom-space"), 0);
+      else if (elements_.back ().staves.size ())
+       {
+         SCM details = get_details (elements_.back ());
+         bottom_padding = robust_scm2double (ly_assoc_get (ly_symbol2scm ("bottom-space"),
+                                                           details,
+                                                           SCM_BOOL_F),
+                                             0.0);
+       }
+      page_height_ -= bottom_padding;
+    }
 }
 
 void
@@ -134,26 +169,12 @@ Page_layout_problem::set_footer_height (Real height)
   footer_height_ = height;
 }
 
-Grob*
-Page_layout_problem::find_vertical_alignment (System *sys)
-{
-  extract_grob_set (sys, "elements", elts);
-  for (vsize i = 0; i < elts.size (); ++i)
-    if (Align_interface::has_interface (elts[i]))
-      return elts[i];
-
-  return 0;
-}
-
 void
 Page_layout_problem::append_system (System *sys, Spring const& spring, Real padding)
 {
-  Grob *align = find_vertical_alignment (sys);
+  Grob *align = sys->get_vertical_alignment ();
   if (!align)
-    {
-      sys->programming_error ("no VerticalAlignment in system: can't do vertical spacing");
-      return;
-    }
+    return;
 
   align->set_property ("positioning-done", SCM_BOOL_T);
 
@@ -191,9 +212,6 @@ Page_layout_problem::append_system (System *sys, Spring const& spring, Real padd
          // we are only adding springs _between_ staves here.
          if (!found_spaceable_staff)
            {
-             if (i > 0)
-               add_loose_lines_as_spaceable_lines (elts, minimum_offsets, 0, i-1);
-
              found_spaceable_staff = true;
              last_spaceable_staff = i;
              continue;
@@ -204,7 +222,7 @@ Page_layout_problem::append_system (System *sys, Spring const& spring, Real padd
          alter_spring_from_spacing_spec (spec, &spring);
 
          springs_.push_back (spring);
-         Real min_distance = minimum_offsets[last_spaceable_staff] - minimum_offsets[i];
+         Real min_distance = (found_spaceable_staff ? minimum_offsets[last_spaceable_staff] : 0) - minimum_offsets[i];
          springs_.back ().ensure_min_distance (min_distance);
 
          if (scm_is_pair (manual_dists))
@@ -222,54 +240,14 @@ Page_layout_problem::append_system (System *sys, Spring const& spring, Real padd
          last_spaceable_staff = i;
        }
     }
-  // Any loose lines hanging off the end are treated as spaceable
-  // lines.  This might give slightly weird results if the hanging
-  // systems have staff-affinity != UP.  It's not quite clear what
-  // should happen in that case, though.
-  if (last_spaceable_staff + 1 < elts.size ())
-    add_loose_lines_as_spaceable_lines (elts, minimum_offsets,
-                                       found_spaceable_staff ? last_spaceable_staff + 1 : 0,
-                                       elts.size () - 1);
+
   // Corner case: there was only one staff, and it wasn't spaceable.
   // Mark it spaceable, because we do not allow non-spaceable staves
   // to be at the top or bottom of a system.
-  else if (!found_spaceable_staff && elts.size ())
+  if (!found_spaceable_staff && elts.size ())
     mark_as_spaceable (elts[0]);
 }
 
-// first and  last are inclusive
-void
-Page_layout_problem::add_loose_lines_as_spaceable_lines (vector<Grob*> const& elts,
-                                                        vector<Real> const& minimum_offsets,
-                                                        vsize first, vsize last)
-{
-  vsize start = first;
-  vsize end = last;
-  if (start > 0)
-    --start;
-  if (end + 1 < elts.size ())
-    ++end;
-  
-  for (vsize i = start; i < end; ++i)
-    {
-      SCM spec = get_spacing_spec (elts[i], elts[i+1]);
-      Spring spring (1.0, 0.0);
-      alter_spring_from_spacing_spec (spec, &spring);
-      if (spec == SCM_BOOL_F)
-       {
-         spring.set_inverse_compress_strength (10000);
-         spring.set_inverse_stretch_strength (10000);
-       }
-
-      Real min_distance = minimum_offsets[i] - minimum_offsets[i+1];
-      spring.ensure_min_distance (min_distance);
-      springs_.push_back (spring);
-    }
-
-  for (vsize i = first; i <= last; ++i)
-    mark_as_spaceable (elts[i]);
-}
-
 void
 Page_layout_problem::append_prob (Prob *prob, Spring const& spring, Real padding)
 {
@@ -304,30 +282,7 @@ Page_layout_problem::solve_rod_spring_problem (bool ragged)
   for (vsize i = 0; i < springs_.size (); ++i)
     spacer.add_spring (springs_[i]);
 
-  Real bottom_padding = 0;
-  Interval first_staff_iv (0, 0);
-  Interval last_staff_iv (0, 0);
-  if (elements_.size ())
-    {
-      first_staff_iv = first_staff_extent (elements_[0]);
-      last_staff_iv = last_staff_extent (elements_.back ());
-
-      // TODO: junk bottom-space now that we have last-spring-spacing?
-      // bottom-space has the flexibility that one can do it per-system.
-      // NOTE: bottom-space is misnamed since it is not stretchable space.
-      if (Prob *p = elements_.back ().prob)
-       bottom_padding = robust_scm2double (p->get_property ("bottom-space"), 0);
-      else if (elements_.back ().staves.size ())
-       {
-         SCM details = get_details (elements_.back ());
-         bottom_padding = robust_scm2double (ly_assoc_get (ly_symbol2scm ("bottom-space"),
-                                                           details,
-                                                           SCM_BOOL_F),
-                                             0.0);
-       }
-    }
-
-  spacer.solve (page_height_ - bottom_padding, ragged);
+  spacer.solve (page_height_, ragged);
   solution_ = spacer.spring_positions ();
 }
 
@@ -344,12 +299,36 @@ Page_layout_problem::find_system_offsets ()
 
   // spring_idx 0 is the top of the page. Interesting values start from 1.
   vsize spring_idx = 1;
+  vector<Grob*> loose_lines;
+  vector<Real> loose_line_min_distances;
+  Grob *last_spaceable_line = 0;
+  Real last_spaceable_line_translation = 0;
   for (vsize i = 0; i < elements_.size (); ++i)
     {
       if (elements_[i].prob)
        {
          *tail = scm_cons (scm_from_double (solution_[spring_idx]), SCM_EOL);
          tail = SCM_CDRLOC (*tail);
+
+         // Lay out any non-spaceable lines between this line and
+         // the last one.
+         if (loose_lines.size ())
+           {
+             Interval loose_extent = loose_lines.back ()->extent (loose_lines.back (), Y_AXIS);
+             Interval prob_extent = unsmob_stencil (elements_[i].prob->get_property ("stencil"))->extent (Y_AXIS);
+             Real min_distance = -loose_extent[DOWN] + prob_extent[UP]; // TODO: include padding/minimum-distance
+
+             loose_line_min_distances.push_back (min_distance);
+             loose_lines.push_back (0);
+
+             distribute_loose_lines (loose_lines, loose_line_min_distances,
+                                     last_spaceable_line_translation, -solution_[spring_idx]);
+             loose_lines.clear ();
+             loose_line_min_distances.clear ();
+           }
+
+         last_spaceable_line = 0;
+         last_spaceable_line_translation = -solution_[spring_idx];
          spring_idx++;
        }
       else
@@ -370,14 +349,12 @@ Page_layout_problem::find_system_offsets ()
 
          // Position the staves within this system.
          Real translation = 0;
-         vector<Grob*> loose_lines;
          vector<Real> const& min_offsets = elements_[i].min_offsets;
-         vector<Real> loose_line_min_distances;
-         Grob *last_spaceable_line = 0;
-         Real last_spaceable_line_translation = 0;
+         bool found_spaceable_staff = false;
          for (vsize staff_idx = 0; staff_idx < elements_[i].staves.size (); ++staff_idx)
            {
              Grob *staff = elements_[i].staves[staff_idx];
+             staff->set_property ("system-Y-offset", scm_from_double (-system_position));
 
              if (is_spaceable (staff))
                {
@@ -391,15 +368,18 @@ Page_layout_problem::find_system_offsets ()
                    {
                      loose_line_min_distances.push_back (min_offsets[staff_idx-1] - min_offsets[staff_idx]);
                      loose_lines.push_back (staff);
+
                      distribute_loose_lines (loose_lines, loose_line_min_distances,
-                                             last_spaceable_line_translation, translation);
+                                             last_spaceable_line_translation, translation - system_position);
                      loose_lines.clear ();
                      loose_line_min_distances.clear ();
                    }
                  last_spaceable_line = staff;
-                 last_spaceable_line_translation = translation;
+                 // Negative is down but the translation is relative to the whole page.
+                 last_spaceable_line_translation = -system_position + translation;
 
                  staff->translate_axis (translation, Y_AXIS);
+                 found_spaceable_staff = true;
                }
              else
                {
@@ -407,14 +387,27 @@ Page_layout_problem::find_system_offsets ()
                    loose_lines.push_back (last_spaceable_line);
 
                  loose_lines.push_back (staff);
-                 loose_line_min_distances.push_back (min_offsets[staff_idx-1] - min_offsets[staff_idx]);
+                 if (staff_idx)
+                   loose_line_min_distances.push_back (min_offsets[staff_idx-1] - min_offsets[staff_idx]);
+                 else
+                   {
+                     Real min_dist = 0;
+                     if (last_spaceable_line)
+                       min_dist = Axis_group_interface::minimum_distance (last_spaceable_line,
+                                                                          staff,
+                                                                          Y_AXIS);
+                     else // distance to the top margin
+                       min_dist = header_padding_ + header_height_ + staff->extent (staff, Y_AXIS)[UP];
+
+                     loose_line_min_distances.push_back (min_dist);
+                   }
                }
            }
 
          // Corner case: even if a system has no live staves, it still takes up
          // one spring (a system with one live staff also takes up one spring),
          // which we need to increment past.
-         if (elements_[i].staves.empty ())
+         if (!found_spaceable_staff)
            spring_idx++;
 
          *tail = scm_cons (scm_from_double (system_position), SCM_EOL);
@@ -422,6 +415,18 @@ Page_layout_problem::find_system_offsets ()
        }
     }
 
+  if (loose_lines.size ())
+    {
+      Grob *last = loose_lines.back ();
+      Interval last_ext = last->extent (last, Y_AXIS);
+      loose_line_min_distances.push_back (-last_ext[DOWN] + footer_height_ + footer_padding_);
+      loose_lines.push_back (0);
+
+      distribute_loose_lines (loose_lines, loose_line_min_distances,
+                             last_spaceable_line_translation, -page_height_);
+
+    }
+
   assert (spring_idx == solution_.size () - 1);
   return system_offsets;
 }
@@ -442,9 +447,14 @@ Page_layout_problem::distribute_loose_lines (vector<Grob*> const &loose_lines,
       alter_spring_from_spacing_spec (spec, &spring);
       spring.ensure_min_distance (min_distances[i]);
 
-      if (spec == SCM_BOOL_F)
+      if ((spec == SCM_BOOL_F && loose_lines[0] && loose_lines.back ())
+         || !loose_lines[i]
+         || !loose_lines[i+1])
        {
          // Insert a very flexible spring, so it doesn't have much effect.
+         // TODO: set a default distance and a compress strength so that a
+         // lyrics line, for example, will stay closer to the top staff
+         // even in a compressed configuration.
          spring.set_inverse_stretch_strength (100000);
          spring.set_inverse_compress_strength (100000);
        }
@@ -457,7 +467,10 @@ Page_layout_problem::distribute_loose_lines (vector<Grob*> const &loose_lines,
 
   vector<Real> solution = spacer.spring_positions ();
   for (vsize i = 1; i + 1 < solution.size (); ++i)
-    loose_lines[i]->translate_axis (first_translation - solution[i], Y_AXIS);
+    {
+      Real system_offset = scm_to_double (loose_lines[i]->get_property ("system-Y-offset"));
+      loose_lines[i]->translate_axis (first_translation - solution[i] - system_offset, Y_AXIS);
+    }
 }
 
 SCM
@@ -487,7 +500,9 @@ Page_layout_problem::build_system_skyline (vector<Grob*> const& staves,
 
   assert (staves.size () == minimum_translations.size ());
   Real first_translation = minimum_translations[0];
-  Real last_dy = 0;
+  Real last_spaceable_dy = 0;
+  Real first_spaceable_dy = 0;
+  bool found_spaceable_staff = false;
 
   for (vsize i = 0; i < staves.size (); ++i)
     {
@@ -503,14 +518,25 @@ Page_layout_problem::build_system_skyline (vector<Grob*> const& staves,
          down->raise (-dy);
          down->merge ((*sky)[DOWN]);
          down->raise (dy);
-
-         last_dy = dy;
+       }
+      if (is_spaceable (staves[i]))
+       {
+         if (!found_spaceable_staff)
+           {
+             found_spaceable_staff = true;
+             first_spaceable_dy = dy;
+           }
+         last_spaceable_dy = dy;
        }
     }
 
+  // Leave the up skyline at a position relative
+  // to the top spaceable staff.
+  up->raise (-first_spaceable_dy);
+
   // Leave the down skyline at a position
-  // relative to the bottom staff.
-  down->raise (-last_dy);
+  // relative to the bottom spaceable staff.
+  down->raise (-last_spaceable_dy);
 }
 
 Interval
@@ -588,6 +614,9 @@ Page_layout_problem::read_spacing_spec (SCM spec, Real* dest, SCM sym)
 SCM
 Page_layout_problem::get_spacing_spec (Grob *before, Grob *after)
 {
+  if (!before || !after)
+    return SCM_BOOL_F;
+
   if (is_spaceable (before))
     {
       if (is_spaceable (after))
index c3c45a1c5f8024312092b755f55935c59c9e49d5..8306c79585ea5cdb0b99ee42020a2b65aa43fbbe 100644 (file)
 
 LY_DEFINE (ly_paper_book_pages, "ly:paper-book-pages",
           1, 0, 0, (SCM pb),
-          "Return pages in book @var{pb}.")
+          "Return pages in @code{Paper_book} object @var{pb}.")
 {
   LY_ASSERT_SMOB (Paper_book, pb, 1);
   return unsmob_paper_book (pb)->pages ();
 }
 
 LY_DEFINE (ly_paper_book_scopes, "ly:paper-book-scopes",
-          1, 0, 0, (SCM book),
-          "Return scopes in layout book @var{book}.")
+          1, 0, 0, (SCM pb),
+          "Return scopes in @code{Paper_book} object @var{pb}.")
 {
-  LY_ASSERT_SMOB (Paper_book, book, 1);
-  Paper_book *pb = unsmob_paper_book (book);
+  LY_ASSERT_SMOB (Paper_book, pb, 1);
+  Paper_book *book = unsmob_paper_book (pb);
 
   SCM scopes = SCM_EOL;
-  if (pb->parent_)
+  if (book->parent_)
     {
-      scopes = ly_paper_book_scopes (pb->parent_->self_scm ());
+      scopes = ly_paper_book_scopes (book->parent_->self_scm ());
     }
-  if (ly_is_module (pb->header_))
-    scopes = scm_cons (pb->header_, scopes);
+  if (ly_is_module (book->header_))
+    scopes = scm_cons (book->header_, scopes);
 
   return scopes;
 }
 
 LY_DEFINE (ly_paper_book_performances, "ly:paper-book-performances",
-          1, 0, 0, (SCM paper_book),
-          "Return performances in book @var{paper-book}.")
+          1, 0, 0, (SCM pb),
+          "Return performances in @code{Paper_book} object @var{pb}.")
 {
-  LY_ASSERT_SMOB (Paper_book, paper_book, 1);
-  return unsmob_paper_book (paper_book)->performances ();
+  LY_ASSERT_SMOB (Paper_book, pb, 1);
+  return unsmob_paper_book (pb)->performances ();
 }
 
 LY_DEFINE (ly_paper_book_systems, "ly:paper-book-systems",
           1, 0, 0, (SCM pb),
-          "Return systems in book @var{pb}.")
+          "Return systems in @code{Paper_book} object @var{pb}.")
 {
   LY_ASSERT_SMOB (Paper_book, pb, 1);
   return unsmob_paper_book (pb)->systems ();
@@ -55,7 +55,7 @@ LY_DEFINE (ly_paper_book_systems, "ly:paper-book-systems",
 LY_DEFINE (ly_paper_book_paper, "ly:paper-book-paper",
           1, 0, 0, (SCM pb),
           "Return the paper output definition (@code{\\paper})"
-          " in book @var{pb}.")
+          " in @code{Paper_book} object @var{pb}.")
 {
   LY_ASSERT_SMOB (Paper_book, pb, 1);
   Paper_book *pbook = unsmob_paper_book (pb);
index e8533e945327ff5365a9a482846e33ca655a5111..3308cf251cc65a55aaf2302780a4b5abb8b323c3 100644 (file)
@@ -365,6 +365,7 @@ ADD_INTERFACE (Paper_column,
               "line-break-system-details "
               "line-break-penalty "
               "line-break-permission "
+              "maybe-loose "
               "page-break-penalty "
               "page-break-permission "
               "page-turn-penalty "
index ed3af0577a8a0e726adfb86f079a58d513a06dda..0024408b79342e80234a2c071ca42deda26e2b3d 100644 (file)
 
 using namespace std;
 
+#include "axis-group-interface.hh"
 #include "directional-element-interface.hh"
 #include "grob.hh"
+#include "grob-array.hh"
 #include "main.hh"
 #include "misc.hh"
 #include "note-head.hh"
@@ -23,6 +25,7 @@ using namespace std;
 #include "staff-symbol.hh"
 #include "stem.hh"
 #include "string-convert.hh"
+#include "system.hh"
 #include "warn.hh"
 
 void
@@ -309,6 +312,51 @@ Side_position_interface::get_axis (Grob *me)
   return NO_AXES;
 }
 
+MAKE_SCHEME_CALLBACK (Side_position_interface, move_to_extremal_staff, 1);
+SCM
+Side_position_interface::move_to_extremal_staff (SCM smob)
+{
+  Grob *me = unsmob_grob (smob);
+  System *sys = dynamic_cast<System*> (me->get_system ());
+  Direction dir = Side_position_interface::get_direction (me);
+  if (dir != DOWN)
+    dir = UP;
+
+  Interval iv = me->extent (sys, X_AXIS);
+  iv.widen (1.0);
+  Grob *top_staff = sys->get_extremal_staff (dir, iv);
+
+  if (!top_staff)
+    return SCM_BOOL_F;
+
+  // Only move this grob if it is a direct child of the system.  We
+  // are not interested in moving marks from other staves to the top
+  // staff; we only want to move marks from the system to the top
+  // staff.
+  if (sys != me->get_parent (Y_AXIS))
+    return SCM_BOOL_F;
+
+  me->set_parent (top_staff, Y_AXIS);
+  me->flush_extent_cache (Y_AXIS);
+  Axis_group_interface::add_element (top_staff, me);
+
+  // Remove any cross-staff side-support dependencies
+  Grob_array *ga = unsmob_grob_array (me->get_object ("side-support-elements"));
+  if (ga)
+    {
+      vector<Grob*> const& elts = ga->array ();
+      vector<Grob*> new_elts;
+      for (vsize i = 0; i < elts.size (); ++i)
+       {
+         if (me->common_refpoint (elts[i], Y_AXIS) == top_staff)
+           new_elts.push_back (elts[i]);
+       }
+      ga->set_array (new_elts);
+    }
+  return SCM_BOOL_T;
+}
+
+
 ADD_INTERFACE (Side_position_interface,
               "Position a victim object (this one) next to other objects"
               " (the support).  The property @code{direction} signifies where"
index bb2b1f3b2bafed2593fd0ac688b3cecef440cb9e..417a8171a010790aad84dedf76d8dd511f609391 100644 (file)
@@ -116,7 +116,7 @@ Slur_score_state::get_encompass_info (Grob *col) const
     {
       ei.stem_ = stem->extent (common_[Y_AXIS], Y_AXIS)[dir_];
       if (Grob *b = Stem::get_beam (stem))
-       ei.stem_ += stem_dir * 0.5 * Beam::get_thickness (b);
+       ei.stem_ += stem_dir * 0.5 * Beam::get_beam_thickness (b);
 
       Interval x = stem->extent (common_[X_AXIS], X_AXIS);
       ei.x_ = x.is_empty ()
index 0412edcf02a2b537d7172e0fffd9aa015f3ba6ff..d736c25420657488053d1ea74acc02f843f2309b 100644 (file)
@@ -95,10 +95,10 @@ ADD_INTERFACE (Spaceable_grob,
               "allow-loose-spacing "
               "ideal-distances "
               "keep-inside-line "
-              "left-neighbors "
+              "left-neighbor "
               "measure-length "
               "minimum-distances "
-              "right-neighbors "
+              "right-neighbor "
               "spacing-wishes "
               );
 
index 20771542fb98c74053cdfa46dde2086867716e20..90db1e01e192a82b341a79694b2d2df01cd4d6b8 100644 (file)
@@ -47,8 +47,7 @@ is_loose_column (Grob *l, Grob *col, Grob *r, Spacing_options const *options)
     }
 
   
-  if (Paper_column::is_musical (col)
-      || Paper_column::is_breakable (col))
+  if (Paper_column::is_musical (col))
     return false;
 
   /*
@@ -73,27 +72,17 @@ is_loose_column (Grob *l, Grob *col, Grob *r, Spacing_options const *options)
 
   */
 
-  extract_grob_set (col, "right-neighbors", rns);
-  extract_grob_set (col, "left-neighbors", lns);
-
-  if (lns.empty () || rns.empty ())
-    return false;
-
-  
-  Item *l_neighbor = dynamic_cast<Item *> (lns[0]);
-  Item *r_neighbor = dynamic_cast<Item *> (rns[0]);
+  Item *r_neighbor = unsmob_item (col->get_object ("right-neighbor"));
+  Item *l_neighbor = unsmob_item (col->get_object ("left-neighbor"));
 
   if (!l_neighbor || !r_neighbor)
     return false;
 
-  l_neighbor = l_neighbor->get_column ();
-  r_neighbor = dynamic_cast<Item *> (Spacing_interface::right_column (r_neighbor));
-
-  if (l == l_neighbor && r == r_neighbor)
-    return false;
-
-  if (!l_neighbor || !r_neighbor)
-    return false;
+  /* If a non-empty column (ie. not \bar "") is placed nicely in series with
+     its neighbor (ie. no funny polyphonic stuff), don't make it loose.
+  */
+  if (l == l_neighbor && r == r_neighbor && col->extent (col, X_AXIS).length () > 0)
+     return false;
 
   /*
     Only declare loose if the bounds make a little sense.  This means
@@ -119,7 +108,12 @@ is_loose_column (Grob *l, Grob *col, Grob *r, Spacing_options const *options)
              Grob *h = gelts[j];
 
              if (h && h->get_property ("break-align-symbol") == ly_symbol2scm ("staff-bar"))
-               return false;
+               {
+                 extract_grob_set (h, "elements", helts);
+                 for (vsize k = helts.size (); k--;)
+                   if ("" != robust_scm2string (helts[k]->get_property ("glyph-name"), ""))
+                     return false;
+               }
            }
        }
     }
@@ -198,21 +192,25 @@ Spacing_spanner::prune_loose_columns (Grob *me,
       bool loose = (i > 0 && i + 1 < cols->size ())
        && is_loose_column (cols->at (i - 1), c, cols->at (i + 1), options);
 
-      if (loose)
+      /* Breakable columns never get pruned; even if they are loose,
+        their broken pieces are not.  However, we mark them so that
+        the spacing can take their mid-line looseness into account. */
+      if (loose && Paper_column::is_breakable (c))
        {
-         extract_grob_set (c, "right-neighbors", rns_arr);
-         extract_grob_set (c, "left-neighbors", lns_arr);
+         loose = false;
+         c->set_property ("maybe-loose", SCM_BOOL_T);
+       }
 
-         SCM lns = lns_arr.size () ? lns_arr.back ()->self_scm () : SCM_BOOL_F;
-         SCM rns = rns_arr.size () ? rns_arr.back ()->self_scm () : SCM_BOOL_F;
+      if (loose)
+       {
+         Grob *right_neighbor = unsmob_grob (c->get_object ("right-neighbor"));
+         Grob *left_neighbor = unsmob_grob (c->get_object ("left-neighbor"));
 
          /*
            Either object can be non existent, if the score ends
            prematurely.
          */
-
-         extract_grob_set (unsmob_grob (rns), "right-items", right_items);
-         if (right_items.size () == 0 || !unsmob_grob (lns))
+         if (!right_neighbor || !left_neighbor)
            {
              c->programming_error ("Cannot determine neighbors for floating column. ");
              c->set_object ("between-cols", scm_cons (cols->at (i-1)->self_scm (),
@@ -220,20 +218,9 @@ Spacing_spanner::prune_loose_columns (Grob *me,
            }
          else
            {
-             Grob *min_item = 0;
-             int min_rank = INT_MAX;
-             for (vsize j = 0; j < right_items.size (); j ++)
-               {
-                 int rank = dynamic_cast<Item*> (right_items[j])->get_column ()->get_rank ();
-                 if (rank < min_rank)
-                   {
-                     min_item = right_items[j];
-                     min_rank = rank;
-                   }
-               }
-             
-             c->set_object ("between-cols", scm_cons (lns,
-                                                      min_item->self_scm ()));
+             c->set_object ("between-cols", scm_cons (left_neighbor->self_scm (),
+                                                      right_neighbor->self_scm ()));
+
 
              /*
                Set distance constraints for loose columns
@@ -260,72 +247,38 @@ Spacing_spanner::set_explicit_neighbor_columns (vector<Grob*> const &cols)
 {
   for (vsize i = 0; i < cols.size (); i++)
     {
-      SCM right_neighbors = Grob_array::make_array ();
-      Grob_array *rn_arr = unsmob_grob_array (right_neighbors);
-      int min_rank = INT_MAX;
-
       extract_grob_set (cols[i], "spacing-wishes", wishes);
-      for (vsize k = wishes.size (); k--;)
+      for (vsize j = wishes.size (); j--;)
        {
-         Item *wish = dynamic_cast<Item *> (wishes[k]);
+         Item *wish = dynamic_cast<Item*> (wishes[j]);
+         Item *left_col = wish->get_column ();
+         int left_rank = Paper_column::get_rank (left_col);
+         int min_right_rank = INT_MAX;
 
-         Item *lc = wish->get_column ();
-         Grob *right = Spacing_interface::right_column (wish);
-
-         if (!right)
-           continue;
-
-         Item *rc = dynamic_cast<Item *> (right);
-
-         int right_rank = Paper_column::get_rank (rc);
-         int left_rank = Paper_column::get_rank (lc);
-
-         /*
-           update the left column.
-         */
-         if (right_rank <= min_rank)
-           {
-             if (right_rank < min_rank)
-               rn_arr->clear ();
-
-             min_rank = right_rank;
-             rn_arr->add (wish);
-           }
-
-         /*
-           update the right column of the wish.
-         */
-         int maxrank = 0;
-
-         extract_grob_set (rc, "left-neighbors", lns_arr);
-         if (lns_arr.size ())
-           {
-             Item *it = dynamic_cast<Item *> (lns_arr.back ());
-             maxrank = Paper_column::get_rank (it->get_column ());
-           }
-
-         if (left_rank >= maxrank)
+         extract_grob_set (wish, "right-items", right_items);
+         for (vsize k = right_items.size (); k--;)
            {
+             Item *right_col = dynamic_cast<Item*> (right_items[k])->get_column ();
+             int right_rank = Paper_column::get_rank (right_col);
 
-             if (left_rank > maxrank)
+             if (right_rank < min_right_rank)
                {
-                 Grob_array *ga = unsmob_grob_array (rc->get_object ("left-neighbors"));
-                 if (ga)
-                   ga->clear ();
+                 left_col->set_object ("right-neighbor", right_col->self_scm ());
+                 min_right_rank = right_rank;
                }
 
-             Pointer_group_interface::add_grob (rc, ly_symbol2scm ("left-neighbors"), wish);
+             Grob *old_left_neighbor = unsmob_grob (right_col->get_object ("left-neighbor"));
+             if (!old_left_neighbor || left_rank > Paper_column::get_rank (old_left_neighbor))
+               right_col->set_object ("left-neighbor", left_col->self_scm ());
            }
        }
-
-      if (rn_arr->size ())
-       cols[i]->set_object ("right-neighbors", right_neighbors);
     }
 }
 
 /*
   Set neighboring columns that have no left/right-neighbor set
   yet. Only do breakable non-musical columns, and musical columns.
+  Why only these? --jneem
 */
 void
 Spacing_spanner::set_implicit_neighbor_columns (vector<Grob*> const &cols)
@@ -336,24 +289,9 @@ Spacing_spanner::set_implicit_neighbor_columns (vector<Grob*> const &cols)
       if (!Paper_column::is_breakable (it) && !Paper_column::is_musical (it))
        continue;
 
-      /*
-       sloppy with typing left/right-neighbors should take list, but paper-column found instead.
-      */
-      extract_grob_set (cols[i], "left-neighbors", lns);
-      if (lns.empty () && i)
-       {
-         SCM ga_scm = Grob_array::make_array ();
-         Grob_array *ga = unsmob_grob_array (ga_scm);
-         ga->add (cols[i - 1]);
-         cols[i]->set_object ("left-neighbors", ga_scm);
-       }
-      extract_grob_set (cols[i], "right-neighbors", rns);
-      if (rns.empty () && i + 1 < cols.size ())
-       {
-         SCM ga_scm = Grob_array::make_array ();
-         Grob_array *ga = unsmob_grob_array (ga_scm);
-         ga->add (cols[i + 1]);
-         cols[i]->set_object ("right-neighbors", ga_scm);
-       }
+      if (i && !unsmob_grob (cols[i]->get_object ("left-neighbor")))
+       cols[i]->set_object ("left-neighbor", cols[i-1]->self_scm ());
+      if (i + 1 < cols.size () && !unsmob_grob (cols[i]->get_object ("right-neighbor")))
+       cols[i]->set_object ("right-neighbor", cols[i+1]->self_scm ());
     }
 }
index f7d6b8d31fc90d3a925272eae629f84c48665775..6e8027bc8c31b445833bc842593c188651175aa7 100644 (file)
@@ -92,20 +92,7 @@ Spacing_interface::minimum_distance (Grob *me, Grob *right)
 }
 
 /*
-  Compute the column of the right-items.  This is a big function,
-  since RIGHT-ITEMS may span more columns (eg. if a clef is inserted,
-  this will add a new column to RIGHT-ITEMS. Here we look at the
-  columns, and return the left-most. If there are multiple columns, we
-  prune RIGHT-ITEMS.
-
-  If we end up pruning, we add a left-neighbor to every column that
-  gets pruned. This ensures that loose columns in cross-staff music
-  do indeed get marked as loose. The problem situation is when a voice
-  passes from staff 1 to staff 2 and a clef appears later on in staff 1.
-  Then the NoteSpacing attached to the last note in staff 1 has two
-  right-items: one pointing to the next note in staff 2 and one pointing
-  to the clef. We will prune the clef right-item here and, unless we add
-  a left-neighbor to the clef, it won't get marked as loose.
+  Compute the left-most column of the right-items.
 */
 Item *
 Spacing_interface::right_column (Grob *me)
@@ -116,7 +103,6 @@ Spacing_interface::right_column (Grob *me)
   Grob_array *a = unsmob_grob_array (me->get_object ("right-items"));
   Item *mincol = 0;
   int min_rank = INT_MAX;
-  bool prune = false;
   for (vsize i = 0; a && i < a->size (); i++)
     {
       Item *ri = a->item (i);
@@ -127,31 +113,8 @@ Spacing_interface::right_column (Grob *me)
       if (rank < min_rank)
        {
          min_rank = rank;
-         if (mincol)
-           prune = true;
-
          mincol = col;
        }
-      else if (rank > min_rank)
-       prune = true;
-    }
-
-  if (prune && a)
-    {
-      vector<Grob*> &right = a->array_reference ();
-      for (vsize i = right.size (); i--;)
-       {
-         if (dynamic_cast<Item *> (right[i])->get_column () != mincol)
-           {
-             extract_grob_set (right[i], "left-neighbors", lns);
-             if (lns.empty ())
-               Pointer_group_interface::add_grob (right[i],
-                                                  ly_symbol2scm ("left-neighbors"),
-                                                  dynamic_cast<Item*> (me)->get_column ());
-
-             right.erase (right.begin () + i);
-           }
-       }
     }
 
   return mincol;
index 99fe9824a8e1c7ca083666030a1c7dc8c7630ab7..cc5170de79eba2763dc1ed5b9406b390542fe705 100644 (file)
@@ -168,7 +168,7 @@ Spacing_spanner::generate_pair_spacing (Grob *me,
   if (Paper_column::is_musical (left_col))
     {
       if (!Paper_column::is_musical (right_col)
-         && options->float_nonmusical_columns_
+         && (options->float_nonmusical_columns_ || to_boolean (right_col->get_property ("maybe-loose")))
          && after_right_col
          && Paper_column::is_musical (after_right_col))
        {
@@ -324,21 +324,33 @@ Spacing_spanner::musical_column_spacing (Grob *me,
   else
     {
       vector<Spring> springs;
-      extract_grob_set (left_col, "right-neighbors", neighbors);
+      extract_grob_set (left_col, "spacing-wishes", wishes);
 
-      for (vsize i = 0; i < neighbors.size (); i++)
+      for (vsize i = 0; i < wishes.size (); i++)
        {
-         Grob *wish = neighbors[i];
+         Grob *wish = wishes[i];
+         if (Spacing_interface::left_column (wish) != left_col)
+           {
+             /* This shouldn't really happen, but the ancient music
+                stuff really messes up the spacing code, grrr
+             */
+             continue;
+           }
 
-         Item *wish_rcol = Spacing_interface::right_column (wish);
-         if (Spacing_interface::left_column (wish) != left_col
-             || (wish_rcol != right_col && wish_rcol != right_col->original ()))
-           continue;
+         extract_grob_set (wish, "right-items", right_items);
+         bool found_matching_column = false;
+         for (vsize j = 0; j < right_items.size (); j++)
+           {
+             Item *it = dynamic_cast<Item*> (right_items[j]);
+             if (it && (right_col == it->get_column ()
+                        || right_col->original () == it->get_column ()))
+               found_matching_column = true;
+           }
 
          /*
            This is probably a waste of time in the case of polyphonic
            music.  */
-         if (Note_spacing::has_interface (wish))
+         if (found_matching_column && Note_spacing::has_interface (wish))
            {
              Real inc = options->increment_;
              Grob *gsp = unsmob_grob (left_col->get_object ("grace-spacing"));
index ebf268677781f1bf56b23f5c96f1258356951d37..74dd8c2e3a97671ce06eb9882ecbef37e5c4a081 100644 (file)
@@ -7,13 +7,13 @@
 */
 
 #include "grob.hh"
-#include "staff-symbol-referencer.hh"
-#include "staff-symbol.hh"
 #include "libc-extension.hh"
+#include "staff-symbol.hh"
+#include "staff-symbol-referencer.hh"
 
 LY_DEFINE (ly_grob_staff_position, "ly:grob-staff-position",
-          1, 0, 0, (SCM sg),
-          "Return the Y-position of @var{sg} relative to the staff.")
+           1, 0, 0, (SCM sg),
+           "Return the Y-position of @var{sg} relative to the staff.")
 {
   LY_ASSERT_SMOB (Grob, sg, 1);
   Grob *g = unsmob_grob (sg);
@@ -27,7 +27,8 @@ LY_DEFINE (ly_grob_staff_position, "ly:grob-staff-position",
 
 LY_DEFINE (ly_position_on_line_p, "ly:position-on-line?",
            2, 0, 0, (SCM sg, SCM spos),
-           "Return whether @var{pos} is on a line of the staff associated with the the grob @var{sg} (even on an extender line).")
+           "Return whether @var{spos} is on a line of the staff associated"
+           " with the the grob @var{sg} (even on an extender line).")
 {
   LY_ASSERT_SMOB (Grob, sg, 1);
   LY_ASSERT_TYPE (scm_is_number, spos, 2);
@@ -40,10 +41,22 @@ LY_DEFINE (ly_position_on_line_p, "ly:position-on-line?",
 
 LY_DEFINE (ly_staff_symbol_line_thickness, "ly:staff-symbol-line-thickness",
            1, 0, 0, (SCM grob),
-           "Returns the line-thickness of the staff associated with @var{grob}.")
+           "Returns the @code{line-thickness} of the staff associated"
+           " with @var{grob}.")
 {
   LY_ASSERT_SMOB (Grob, grob, 1);
   Grob *g = unsmob_grob (grob);
   Real thickness = Staff_symbol_referencer::line_thickness (g);
   return scm_from_double (thickness);
 }
+
+LY_DEFINE (ly_staff_symbol_staff_space, "ly:staff-symbol-staff-space",
+           1, 0, 0, (SCM grob),
+           "Returns the @code{staff-space} of the staff associated"
+           " with @var{grob}.")
+{
+  LY_ASSERT_SMOB (Grob, grob, 1);
+  Grob *g = unsmob_grob (grob);
+  Real staff_space = Staff_symbol_referencer::staff_space (g);
+  return scm_from_double (staff_space);
+}
index 8ba6f2b6c9cdba33022481ba5b0113d4abdecfbe..bde62f57120d3099f189121f6b7fe38555866de0 100644 (file)
@@ -557,7 +557,7 @@ Stem::height (SCM smob)
          programming_error ("no stem direction");
          dir = UP;
        }
-      iv[dir] += dir * Beam::get_thickness (beam) * 0.5;
+      iv[dir] += dir * Beam::get_beam_thickness (beam) * 0.5;
     }
 
   return ly_interval2scm (iv);
@@ -740,7 +740,7 @@ Stem::print (SCM smob)
   else if (stemlet)
     {
       Real beam_translation = Beam::get_beam_translation (beam);
-      Real beam_thickness = Beam::get_thickness (beam);
+      Real beam_thickness = Beam::get_beam_thickness (beam);
       int beam_count = beam_multiplicity (me).length () + 1;
 
       y2 -= d
@@ -884,7 +884,7 @@ Stem::calc_stem_info (SCM smob)
     }
   
   Real beam_translation = Beam::get_beam_translation (beam);
-  Real beam_thickness = Beam::get_thickness (beam);
+  Real beam_thickness = Beam::get_beam_thickness (beam);
   int beam_count = Beam::get_direction_beam_count (beam, my_dir);
   Real length_fraction
     = robust_scm2double (me->get_property ("length-fraction"), 1.0);
index ea4fcf38a859a5930b2a1da7c5172fe8065e062a..7d8647051023099eec5019c699aeabb993b3b6e8 100644 (file)
@@ -5,28 +5,26 @@
   source file of the GNU LilyPond music typesetter
 
   (c) 2005--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
 */
 
 #include "engraver.hh"
-
-#include "side-position-interface.hh"
-#include "system-start-delimiter.hh"
-#include "staff-symbol.hh"
-#include "pointer-group-interface.hh"
-#include "paper-column.hh"
 #include "output-def.hh"
+#include "paper-column.hh"
+#include "pointer-group-interface.hh"
+#include "side-position-interface.hh"
 #include "spanner.hh"
+#include "staff-symbol.hh"
+#include "system-start-delimiter.hh"
 
 struct Bracket_nesting_node
 {
 public:
-  virtual ~Bracket_nesting_node (){}
+  virtual ~Bracket_nesting_node () {}
   virtual bool add_staff (Grob *) { return false; }
-  virtual void add_support (Grob *) { }
-  virtual void set_bound (Direction, Grob *){}
-  virtual void set_nesting_support (Grob*) {}
-  virtual void create_grobs (Engraver*, SCM) {}
+  virtual void add_support (Grob *) {}
+  virtual void set_bound (Direction, Grob *) {}
+  virtual void set_nesting_support (Grob *) {}
+  virtual void create_grobs (Engraver *, SCM) {}
 };
 
 struct Bracket_nesting_group : public Bracket_nesting_node
@@ -35,12 +33,12 @@ struct Bracket_nesting_group : public Bracket_nesting_node
   vector<Bracket_nesting_node*> children_;
   SCM symbol_;
 
-  void from_list (SCM ); 
+  void from_list (SCM);
   virtual void add_support (Grob *grob);
   virtual bool add_staff (Grob *grob);
-  virtual void set_nesting_support (Grob*);
+  virtual void set_nesting_support (Grob *);
   virtual void set_bound (Direction, Grob *grob);
-  virtual void create_grobs (Engraver*, SCM);
+  virtual void create_grobs (Engraver *, SCM);
   ~Bracket_nesting_group ();
   Bracket_nesting_group ();
 };
@@ -76,12 +74,11 @@ void
 Bracket_nesting_group::create_grobs (Engraver *engraver, SCM default_type)
 {
   SCM type = scm_is_symbol (symbol_) ? symbol_ : default_type;
-  delimiter_ = engraver->make_spanner (ly_symbol2string (type).c_str (), SCM_EOL);
+  delimiter_ = engraver->make_spanner (ly_symbol2string (type).c_str (),
+                                      SCM_EOL);
 
   for (vsize i = 0 ; i < children_.size (); i++)
-    {
-      children_[i]->create_grobs (engraver, default_type);
-    }
+    children_[i]->create_grobs (engraver, default_type);
 }
 
 void
@@ -89,9 +86,7 @@ Bracket_nesting_group::add_support (Grob *g)
 {
   Side_position_interface::add_support (g, delimiter_);
   for (vsize i = 0 ; i < children_.size (); i++)
-    {
-      children_[i]->add_support (g);
-    }
+    children_[i]->add_support (g);
 }
 
 Bracket_nesting_group::~Bracket_nesting_group ()
@@ -104,9 +99,7 @@ Bracket_nesting_group::set_bound (Direction d, Grob *g)
 {
   delimiter_->set_bound (d, g);
   for (vsize i = 0 ; i < children_.size (); i++)
-    {
-      children_[i]->set_bound (d, g);
-    }
+    children_[i]->set_bound (d, g);
 }
 
 void
@@ -114,11 +107,9 @@ Bracket_nesting_group::set_nesting_support (Grob *parent)
 {
   if (parent)
     Side_position_interface::add_support (delimiter_, parent);
-  
+
   for (vsize i = 0 ; i < children_.size (); i++)
-    {
-      children_[i]->set_nesting_support (delimiter_);
-    }
+    children_[i]->set_nesting_support (delimiter_);
 }
 
 
@@ -137,13 +128,10 @@ Bracket_nesting_group::from_list (SCM x)
       else if (entry == ly_symbol2scm ("SystemStartBrace")
               || entry == ly_symbol2scm ("SystemStartBracket")
               || entry == ly_symbol2scm ("SystemStartBar")
-              || entry == ly_symbol2scm ("SystemStartSquare")
-              )
+              || entry == ly_symbol2scm ("SystemStartSquare"))
        symbol_ = entry;
       else
-       {
-         children_.push_back (new Bracket_nesting_staff (0));
-       }
+       children_.push_back (new Bracket_nesting_staff (0));
     }
 }
 
@@ -154,11 +142,11 @@ Bracket_nesting_group::add_staff (Grob *grob)
     {
       if (children_[i]->add_staff (grob))
        {
-         Pointer_group_interface::add_grob (delimiter_, ly_symbol2scm ("elements"), grob);
+         Pointer_group_interface::add_grob (delimiter_,
+                                            ly_symbol2scm ("elements"), grob);
          return true;
        }
     }
-
   return false;
 }
 
@@ -174,9 +162,8 @@ public:
 
 protected:
   Bracket_nesting_group *nesting_;
-  
+
   DECLARE_ACKNOWLEDGER (system_start_delimiter);
-  DECLARE_ACKNOWLEDGER (system_start_text);
   DECLARE_ACKNOWLEDGER (staff_symbol);
 
   void process_music ();
@@ -199,7 +186,8 @@ System_start_delimiter_engraver::process_music ()
 
       nesting_->from_list (hierarchy);
       nesting_->create_grobs (this, delimiter_name);
-      nesting_->set_bound (LEFT, unsmob_grob (get_property ("currentCommandColumn")));
+      nesting_->set_bound (LEFT,
+                          unsmob_grob (get_property ("currentCommandColumn")));
     }
 }
 
@@ -229,14 +217,6 @@ System_start_delimiter_engraver::acknowledge_staff_symbol (Grob_info inf)
     }
 }
 
-
-
-void
-System_start_delimiter_engraver::acknowledge_system_start_text (Grob_info inf)
-{
-  nesting_->add_support (inf.grob ());
-}
-
 void
 System_start_delimiter_engraver::acknowledge_system_start_delimiter (Grob_info inf)
 {
@@ -247,7 +227,6 @@ System_start_delimiter_engraver::acknowledge_system_start_delimiter (Grob_info i
 
 ADD_ACKNOWLEDGER (System_start_delimiter_engraver, staff_symbol);
 ADD_ACKNOWLEDGER (System_start_delimiter_engraver, system_start_delimiter);
-ADD_ACKNOWLEDGER (System_start_delimiter_engraver, system_start_text);
 
 ADD_TRANSLATOR (System_start_delimiter_engraver,
                /* doc */
diff --git a/lily/system-start-text.cc b/lily/system-start-text.cc
deleted file mode 100644 (file)
index 33b0f68..0000000
+++ /dev/null
@@ -1,121 +0,0 @@
-/*
-  system-start-text.cc -- implement System_start_text
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 2006--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
-
-*/
-
-#include "text-interface.hh"
-#include "pointer-group-interface.hh"
-#include "output-def.hh"
-#include "font-interface.hh"
-#include "spanner.hh"
-#include "stencil.hh"
-#include "item.hh"
-
-class System_start_text
-{
-public:
-  static Stencil get_stencil (Grob *);
-  DECLARE_GROB_INTERFACE ();
-
-  DECLARE_SCHEME_CALLBACK (print, (SCM));
-};
-
-Stencil
-System_start_text::get_stencil (Grob *me_grob)
-{
-  Spanner *me = dynamic_cast<Spanner*> (me_grob);
-  SCM t = me->get_property ("text");
-  if (me->get_break_index () == 0)
-    t = me->get_property ("long-text");
-          
-  
-  SCM chain = Font_interface::text_font_alist_chain (me);
-
-  SCM scm_stencil = Text_interface::is_markup (t)
-    ? Text_interface::interpret_markup (me->layout ()->self_scm (), chain, t)
-    : SCM_EOL;
-
-  
-  if (Stencil *p = unsmob_stencil (scm_stencil))
-    {
-      SCM align_y  = me_grob->get_property ("self-alignment-Y");
-      if (scm_is_number (align_y))
-       p->align_to (Y_AXIS, robust_scm2double (align_y, 0.0));
-
-      /* Horizontal alignment according to the self-alignment-X property
-       * and indent value. */
-      Output_def *layout = me_grob->layout ();
-      Real indent;
-      if (me->get_break_index () == 0)
-       indent = robust_scm2double (layout->c_variable ("indent"), 0);
-      else
-       indent = robust_scm2double (layout->c_variable ("short-indent"), 0);
-      Real align_x = robust_scm2double (me->get_property ("self-alignment-X"), 0);
-      Interval p_extent_x = p->extent (X_AXIS);
-      Interval padding (0.0, max (0.0, indent - p_extent_x.length ()));
-      Real right_padding = padding.length () - padding.linear_combination (align_x);
-      Box box (Interval (p_extent_x[LEFT], p_extent_x[RIGHT] + right_padding),
-              p->extent (Y_AXIS));
-      Stencil *aligned_p = new Stencil (box, p->expr ());
-      return *aligned_p;
-    }
-  return Stencil ();
-}
-
-
-MAKE_SCHEME_CALLBACK (System_start_text, print, 1);
-SCM
-System_start_text::print (SCM smob)
-{
-  Spanner *me = unsmob_spanner (smob);
-
-  if (!me->get_bound (LEFT)->break_status_dir ())
-    {
-      me->suicide ();
-      return SCM_EOL;
-    }
-
-  extract_grob_set (me, "elements", all_elts);
-  vector<Grob*> elts;
-  for (vsize i = 0; i < all_elts.size (); i++)
-    if (all_elts[i]->is_live ())
-      elts.push_back (all_elts[i]);
-
-  if (!elts.size ())
-    {
-      me->suicide ();
-      return SCM_EOL;
-    }
-  
-  Grob *common = common_refpoint_of_array (elts, me, Y_AXIS);
-
-  Interval ext;
-  for (vsize i = elts.size (); i--;)
-    {
-      Spanner *sp = dynamic_cast<Spanner *> (elts[i]);
-
-      if (sp
-         && sp->get_bound (LEFT) == me->get_bound (LEFT))
-       ext.add_point (sp->relative_coordinate (common, Y_AXIS));
-    }
-
-  Stencil m = get_stencil (me);
-  if (!ext.is_empty ())
-    m.translate_axis (ext.center (), Y_AXIS);
-  return m.smobbed_copy ();
-}
-
-
-ADD_INTERFACE (System_start_text,
-              "Text in front of the system.",
-
-              /* properties */
-              "text "
-              "long-text "
-              "self-alignment-Y "
-              "self-alignment-X "
-              );
index e0964482fcf91373fb73aaf07aebac53844d7ce3..a43c1b4aacdbe265f81779af44b1cb1a3c08229a 100644 (file)
 #include "all-font-metrics.hh"
 #include "axis-group-interface.hh"
 #include "grob-array.hh"
+#include "hara-kiri-group-spanner.hh"
 #include "international.hh"
 #include "lookup.hh"
 #include "main.hh"
 #include "output-def.hh"
+#include "page-layout-problem.hh"
 #include "paper-column.hh"
 #include "paper-score.hh"
 #include "paper-system.hh"
@@ -172,6 +174,12 @@ System::do_break_substitution_and_fixup_refpoints ()
     {
       System *child = dynamic_cast<System*> (broken_intos_[i]);
       child->all_elements_->remove_duplicates ();
+      for (vsize j = 0; j < child->all_elements_->size (); j++)
+       {
+         Grob *g = child->all_elements_->grob (j);
+
+         (void) g->get_property ("after-line-breaking");
+       }
     }
 
   if (be_verbose_global)
@@ -295,13 +303,6 @@ System::pre_processing ()
 void
 System::post_processing ()
 {
-  for (vsize i = 0; i < all_elements_->size (); i++)
-    {
-      Grob *g = all_elements_->grob (i);
-
-      (void) g->get_property ("after-line-breaking");
-    }
-
   Interval iv (extent (this, Y_AXIS));
   if (iv.is_empty ())
     programming_error ("system with empty extent");
@@ -515,6 +516,49 @@ get_root_system (Grob *me)
   return dynamic_cast<System*> (system_grob); 
 }
 
+Grob *
+System::get_vertical_alignment ()
+{
+  extract_grob_set (this, "elements", elts);
+  Grob *ret = 0;
+  for (vsize i = 0; i < elts.size (); i++)
+    if (Align_interface::has_interface (elts[i]))
+      {
+       if (ret)
+         programming_error ("found multiple vertical alignments in this system");
+       ret = elts[i];
+      }
+
+  if (!ret)
+    programming_error ("didn't find a vertical alignment in this system");
+  return ret;
+}
+
+// Finds the furthest staff in the given direction whose x-extent
+// overlaps with the given interval.
+Grob *
+System::get_extremal_staff (Direction dir, Interval const &iv)
+{
+  Grob *align = get_vertical_alignment ();
+  if (!align)
+    return 0;
+
+  extract_grob_set (align, "elements", elts);
+  vsize start = (dir == UP) ? 0 : elts.size () - 1;
+  vsize end = (dir == UP) ? elts.size () : VPOS;
+  for (vsize i = start; i != end; i += dir)
+    {
+      if (Hara_kiri_group_spanner::has_interface (elts[i]))
+       Hara_kiri_group_spanner::consider_suicide (elts[i]);
+
+      Interval intersection = elts[i]->extent (this, X_AXIS);
+      intersection.intersect (iv);
+      if (elts[i]->is_live () && !intersection.is_empty ())
+       return elts[i];
+    }
+  return 0;
+}
+
 ADD_INTERFACE (System,
               "This is the top-level object: Each object in a score"
               " ultimately has a @code{System} object as its X and"
index 14f67333cf54c5f98f8d737fd62f80354062e937..b90af7471af3d3f21efe31dd0537cbda123bd575 100644 (file)
@@ -140,11 +140,13 @@ Vertical_align_engraver::acknowledge_axis_group (Grob_info i)
              if (arr[i] == before_grob)
                {
                  arr.insert (arr.begin () + i, added);
+                 added->set_property ("staff-affinity", scm_from_int (DOWN));
                  break;
                }
              else if (arr[i] == after_grob)
                {
                  arr.insert (arr.begin () + i + 1, added);
+                 added->set_property ("staff-affinity", scm_from_int (UP));
                  break;
                }
            }
index 750f2e3721c77e26e623513c2324a916dd99a4dd..bc64f1bc5ce3f66ff064dcbba76ba6c47eeefcf5 100644 (file)
@@ -1,5 +1,6 @@
 /*
   vertically-spaced-contexts-engraver.cc -- implement Vertically_spaced_contexts_engraver
+  TODO: junk this, since we now determine spaceability using Page_layout_problem::is_spaceable.
 
   source file of the GNU LilyPond music typesetter
 
index ed7698ef0914c29ff3778a98574a753a5d517263..5ff869b9305964504d06f657caa44d70ac63f595 100644 (file)
@@ -10,8 +10,6 @@
   \grobdescriptions #all-grob-descriptions
 }
 
-% FIXME: replace minimum-Y-extents with proper spacing commands.
-
 \context {
   \type "Engraver_group"
   \name "FretBoards"
@@ -66,7 +64,6 @@
   localKeySignature = #'()
   createSpacing = ##t
   ignoreFiguredBassRest = ##t
-  \override VerticalAxisGroup #'minimum-Y-extent = #'(-4 . 4)
 
   %% explicitly set instrument, so we don't get
   %% weird effects when doing instrument names for
@@ -136,7 +133,6 @@ contained staves are not connected vertically."
 \context{
   \type "Engraver_group"
 
-  \override VerticalAxisGroup #'minimum-Y-extent = ##f
   localKeySignature = #'()
   createSpacing = ##t
 
@@ -252,7 +248,7 @@ multiple voices on the same staff."
   fontSize = #-4
   \override Stem #'length-fraction = #(magstep -4)
   \override Beam #'length-fraction = #(magstep -4)
-  \override Beam #'thickness = #0.35
+  \override Beam #'beam-thickness = #0.35
 }
 
 \context {
@@ -375,7 +371,6 @@ centered between the staves surrounding this context."
 
 \context{
   \type "Engraver_group"
-  \override VerticalAxisGroup #'minimum-Y-extent = #'(-0.75 . 2.0)
 
   \description "Corresponds to a voice with lyrics.  Handles the
 printing of a single line of lyrics."
@@ -397,7 +392,7 @@ printing of a single line of lyrics."
   \override VerticalAxisGroup #'remove-empty = ##t
   \override VerticalAxisGroup #'staff-affinity = #UP
   \override VerticalAxisGroup #'inter-staff-spacing = #'((space . 5.5) (stretchability . 1) (padding . 0.5))
-  \override VerticalAxisGroup #'inter-loose-line-spacing = #'((space . 2) (stretchability . 0.5) (padding . 0.2))
+  \override VerticalAxisGroup #'inter-loose-line-spacing = #'((space . 0) (stretchability . 0) (padding . 0.2))
   \override SeparationItem #'padding = #0.2
   \override InstrumentName #'self-alignment-Y = ##f
 
@@ -416,7 +411,6 @@ printing of a single line of lyrics."
   \description "A context for printing the names of notes."
   \consists "Axis_group_engraver"
 
-  \override VerticalAxisGroup #'minimum-Y-extent = ##f
   % FIXME: not sure what the default should be here.
   \override VerticalAxisGroup #'staff-affinity = #DOWN
 
@@ -440,10 +434,11 @@ printing of a single line of lyrics."
   \consists "Skip_event_swallow_translator"
   \consists "Hara_kiri_engraver"
 %  \consists "Note_spacing_engraver"
-  \override VerticalAxisGroup #'minimum-Y-extent = #'(0 . 2)
   \override VerticalAxisGroup #'remove-first = ##t
   \override VerticalAxisGroup #'remove-empty = ##t
   \override VerticalAxisGroup #'staff-affinity = #DOWN
+  \override VerticalAxisGroup #'inter-staff-spacing #'padding = #0.5
+  \override VerticalAxisGroup #'inter-loose-line-spacing #'padding = #0.5
 }
 
 
@@ -632,7 +627,7 @@ automatically when an output definition (a @code{\score} or
     (Voice Dots font-size -3)
     (Voice Stem length-fraction 0.8)
     (Voice Stem no-stem-extend #t)
-    (Voice Beam thickness 0.384)
+    (Voice Beam beam-thickness 0.384)
     (Voice Beam length-fraction 0.8)
     (Voice Accidental font-size -4)
     (Voice AccidentalCautionary font-size -4)
@@ -682,7 +677,8 @@ automatically when an output definition (a @code{\score} or
   \override VerticalAxisGroup #'remove-empty = ##t
   \override VerticalAxisGroup #'remove-first = ##t
   \override VerticalAxisGroup #'staff-affinity = #UP
-  \override VerticalAxisGroup #'minimum-Y-extent = #'(0 . 2)
+  \override VerticalAxisGroup #'inter-staff-spacing #'padding = #0.5
+  \override VerticalAxisGroup #'inter-loose-line-spacing #'padding = #0.5
 }
 
 \context {
@@ -713,7 +709,7 @@ context."
   %% TabStaff increase the staff-space, which in turn
   %% increases beam thickness and spacing; beams are
   %% too big. We have to adjust the beam settings:
-  \override Beam #'thickness = #0.32
+  \override Beam #'beam-thickness = #0.32
   \override Beam #'length-fraction = #0.62
 
   %% No accidental in tablature !
index 26179d117846a371e2c8f7c3018bc65fc95790a6..ecfaa5da2ad1a38aea545fa503efab0cc9daf2ab 100644 (file)
 %%  For more information, see the Contributors' Guide.
 
 
-\version "2.13.0"
+\version "2.13.4"
 
-#(use-modules (ice-9 debugger) (ice-9 debugging trace) (ice-9 debugging steps) (ice-9 debugging ice-9-debugger-extensions)  )
+#(use-modules
+  (ice-9 debugger)
+  (ice-9 debugging trace)
+  (ice-9 debugging steps)
+  (ice-9 debugging ice-9-debugger-extensions))
 
 #(define (break! proc)
-       (install-trap (make <procedure-trap>
-                       #:procedure proc
-                       #:behaviour debug-trap)))
-     
+   (install-trap (make <procedure-trap>
+                   #:procedure proc
+                   #:behaviour debug-trap)))
+
 #(define (trace! proc)
-       (install-trap (make <procedure-trap>
-                       #:procedure proc
-                       #:behaviour (list trace-trap
-                                         trace-at-exit))))
-     
+   (install-trap (make <procedure-trap>
+                   #:procedure proc
+                   #:behaviour (list trace-trap
+                                     trace-at-exit))))
+
 #(define (trace-subtree! proc)
-       (install-trap (make <procedure-trap>
-                       #:procedure proc
-                       #:behaviour (list trace-trap
-                                         trace-until-exit))))
-#(module-define! (resolve-module '(guile-user)) 'lilypond-module (current-module))
+   (install-trap (make <procedure-trap>
+                   #:procedure proc
+                   #:behaviour (list trace-trap
+                                     trace-until-exit))))
+
+#(module-define! (resolve-module '(guile-user))
+                 'lilypond-module
+                 (current-module))
 #(top-repl)
 #(set-current-module lilypond-module)
index d1923659f981c3a90e8e3a1447a921a470b68186..88b152a9a1d672564ad1850ea9bdc8a9729bf6e3 100644 (file)
             (set! toplevel-scores (list))
             (book-handler parser book)))
          ((or (pair? toplevel-scores) output-empty-score-list)
-          (book-handler parser (apply ly:make-book $defaultpaper
-                                      $defaultheader toplevel-scores)))))
+          (let ((book (apply ly:make-book $defaultpaper 
+                             $defaultheader toplevel-scores)))
+            (set! toplevel-scores (list))
+            (book-handler parser book)))))
 
 #(if (eq? expect-error (ly:parser-has-error? parser))
   (ly:parser-clear-error parser)
index 3f3bdca54dd9632a539b27e18d24be757d39747d..7bec31990ee298fab46fd25cf24470d1f9618f2f 100644 (file)
@@ -7,14 +7,25 @@
 %% this file is alphabetically sorted.
 %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
-%% need SRFI-1 filter
+%% need SRFI-1 for filter; optargs for lambda*
+#(use-modules (srfi srfi-1)
+             (ice-9 optargs))
 
-#(use-modules (srfi srfi-1))
+%% TODO: using define-music-function in a .scm causes crash.
 
 acciaccatura =
 #(def-grace-function startAcciaccaturaMusic stopAcciaccaturaMusic
    (_i "Create an acciaccatura from the following music expression"))
 
+%% keep these two together
+"instrument-definitions" = #'()
+addInstrumentDefinition =
+#(define-music-function
+   (parser location name lst) (string? list?)
+   (_i "Create instrument @var{name} with properties @var{list}.")
+   (set! instrument-definitions (acons name lst instrument-definitions))
+   (make-music 'SequentialMusic 'void #t))
+
 addQuote =
 #(define-music-function (parser location name music) (string? ly:music?)
    (_i "Define @var{music} as a quotable music expression named
@@ -22,9 +33,8 @@ addQuote =
    (add-quotable parser name music)
    (make-music 'SequentialMusic 'void #t))
 
-afterGraceFraction =
-#(cons 6 8)
-
+%% keep these two together
+afterGraceFraction = #(cons 6 8)
 afterGrace =
 #(define-music-function
   (parser location main grace)
@@ -50,25 +60,43 @@ afterGrace =
        (make-music 'GraceMusic
                    'element grace)))))))
 
+
+%% music identifiers not allowed at top-level,
+%% so this is a music-function instead.
+allowPageTurn =
+#(define-music-function (location parser) ()
+   (_i "Allow a page turn. May be used at toplevel (ie between scores or
+markups), or inside a score.")
+   (make-music 'EventChord
+              'page-marker #t
+              'page-turn-permission 'allow
+              'elements (list (make-music 'PageTurnEvent
+                                          'break-permission 'allow))))
+
+applyContext =
+#(define-music-function (parser location proc) (procedure?)
+  (_i "Modify context properties with Scheme procedure @var{proc}.")
+  (make-music 'ApplyContext
+             'origin location
+             'procedure proc))
+
 applyMusic =
 #(define-music-function (parser location func music) (procedure? ly:music?)
    (_i"Apply procedure @var{func} to @var{music}.")
   (func music))
 
-
 applyOutput =
 #(define-music-function (parser location ctx proc) (symbol? procedure?)
   (_i "Apply function @code{proc} to every layout object in context @code{ctx}")
   (make-music 'ApplyOutputEvent
-              'origin location
-              'procedure proc
-              'context-type ctx))
+             'origin location
+             'procedure proc
+             'context-type ctx))
 
 appoggiatura =
 #(def-grace-function startAppoggiaturaMusic stopAppoggiaturaMusic
   (_i "Create an appoggiatura from @var{music}"))
 
-
 % for regression testing purposes.
 assertBeamQuant =
 #(define-music-function (parser location l r) (pair? pair?)
@@ -91,24 +119,16 @@ assertBeamSlope =
       (list chain-grob-member-functions `(,cons 0 0))
       (check-slope-callbacks comp))))))
 
-
-
 autochange =
 #(define-music-function (parser location music) (ly:music?)
   (_i "Make voices that switch between staves automatically")
   (make-autochange-music parser music))
 
-applyContext =
-#(define-music-function (parser location proc) (procedure?)
-  (_i "Modify context properties with Scheme procedure @var{proc}.")
-  (make-music 'ApplyContext
-              'origin location
-              'procedure proc))
 
 
 balloonGrobText =
 #(define-music-function (parser location grob-name offset text)
-                        (symbol? number-pair? markup?)
+                       (symbol? number-pair? markup?)
   (_i "Attach @var{text} to @var{grob-name} at offset @var{offset}
 (use like @code{\\once})")
     (make-music 'AnnotateOutputEvent
@@ -125,7 +145,6 @@ balloonText =
                'Y-offset (cdr offset)
                'text text))
 
-
 bar =
 #(define-music-function (parser location type) (string?)
   (_i "Insert a bar line of type @var{type}")
@@ -133,7 +152,6 @@ bar =
     (make-property-set 'whichBar type)
     'Timing))
 
-
 barNumberCheck =
 #(define-music-function (parser location n) (integer?)
   (_i "Print a warning if the current bar number is not @var{n}.")
@@ -147,7 +165,6 @@ barNumberCheck =
                       (ly:input-message location "Barcheck failed got ~a expect ~a"
                                         cbn n))))))
 
-
 bendAfter =
 #(define-music-function (parser location delta) (real?)
   (_i "Create a fall or doit of pitch interval @var{delta}.")
@@ -158,9 +175,10 @@ bendAfter =
 breathe =
 #(define-music-function (parser location) ()
   (_i "Insert a breath mark.")
-            (make-music 'EventChord
-              'origin location
-              'elements (list (make-music 'BreathingEvent))))
+           (make-music 'EventChord
+             'origin location
+             'elements (list (make-music 'BreathingEvent))))
+
 
 
 clef =
@@ -168,7 +186,6 @@ clef =
   (_i "Set the current clef to @var{type}.")
    (make-clef-set type))
 
-
 cueDuring =
 #(define-music-function
   (parser location what dir main-music) (string? ly:dir? ly:music?)
@@ -182,9 +199,11 @@ in a CueVoice oriented by @var{dir}.")
              'quoted-voice-direction dir
              'origin location))
 
+
+
 displayLilyMusic =
 #(define-music-function (parser location music) (ly:music?)
-  (_i "Display  the LilyPond input representation of @var{music}
+  (_i "Display the LilyPond input representation of @var{music}
 to the console.")
    (newline)
    (display-lily-music music parser)
@@ -198,6 +217,7 @@ displayMusic =
    music)
 
 
+
 endSpanners =
 #(define-music-function (parser location music) (ly:music?)
   (_i "Terminate the next spanner prematurely after exactly one note without the need of a specific end spanner.")
@@ -224,6 +244,8 @@ endSpanners =
 
        (ly:input-message location (_ "argument endSpanners is not an EventChord: ~a" music))))
 
+
+
 featherDurations=
 #(define-music-function (parser location factor argument) (ly:moment? ly:music?)
  (_i "Adjust durations of music in @var{argument} by rational @var{factor}. ")
@@ -248,28 +270,38 @@ featherDurations=
 
      argument))
 
+
+
 grace =
 #(def-grace-function startGraceMusic stopGraceMusic
    (_i "Insert @var{music} as grace notes."))
 
-"instrument-definitions" = #'()
 
-addInstrumentDefinition =
-#(define-music-function
-   (parser location name lst) (string? list?)
-   (_i "Create instrument @var{name} with properties @var{list}.")
-   (set! instrument-definitions (acons name lst instrument-definitions))
 
+%% see comment for page-layout-parser definition below.
+includePageLayoutFile =
+#(define-music-function (parser location) ()
+   (_i "Include the file @var{<basename>-page-layout.ly}. Deprecated as
+part of two-pass spacing.")
+   (if (not (ly:get-option 'dump-tweaks))
+       (let ((tweak-filename (format #f "~a-page-layout.ly"
+                                    (ly:parser-output-name parser))))
+        (if (access? tweak-filename R_OK)
+            (begin
+              (ly:message "Including tweak file ~a" tweak-filename)
+              (set! page-layout-parser (ly:parser-clone parser))
+              (ly:parser-parse-string page-layout-parser
+                                      (format #f "\\include \"~a\""
+                                              tweak-filename))))))
    (make-music 'SequentialMusic 'void #t))
 
-
 instrumentSwitch =
 #(define-music-function
    (parser location name) (string?)
    (_i "Switch instrument to @var{name}, which must be predefined with
 @code{\\addInstrumentDefinition}.")
    (let*
-       ((handle  (assoc name instrument-definitions))
+       ((handle         (assoc name instrument-definitions))
        (instrument-def (if handle (cdr handle) '()))
        )
 
@@ -286,24 +318,6 @@ instrumentSwitch =
       'Staff)))
 
 
-%% Parser used to read page-layout file, and then retreive score tweaks.
-#(define page-layout-parser #f)
-
-includePageLayoutFile =
-#(define-music-function (parser location) ()
-   (_i "Include the file @var{<basename>-page-layout.ly}. Deprecated as
-part of two-pass spacing.")
-   (if (not (ly:get-option 'dump-tweaks))
-       (let ((tweak-filename (format #f "~a-page-layout.ly"
-                                    (ly:parser-output-name parser))))
-        (if (access? tweak-filename R_OK)
-            (begin
-              (ly:message "Including tweak file ~a" tweak-filename)
-               (set! page-layout-parser (ly:parser-clone parser))
-              (ly:parser-parse-string page-layout-parser
-                                       (format #f "\\include \"~a\""
-                                               tweak-filename))))))
-   (make-music 'SequentialMusic 'void #t))
 
 keepWithTag =
 #(define-music-function
@@ -312,23 +326,12 @@ keepWithTag =
   (music-filter
    (lambda (m)
     (let* ((tags (ly:music-property m 'tags))
-           (res (memq tag tags)))
+          (res (memq tag tags)))
      (or
       (eq? tags '())
       res)))
    music))
 
-removeWithTag =
-#(define-music-function
-  (parser location tag music) (symbol? ly:music?)
-  (_i "Remove elements of @var{music} that are tagged with @var{tag}.")
-  (music-filter
-   (lambda (m)
-    (let* ((tags (ly:music-property m 'tags))
-           (res (memq tag tags)))
-     (not res)))
- music))
-
 killCues =
 #(define-music-function
    (parser location music)
@@ -340,6 +343,8 @@ killCues =
          (ly:music-property mus 'element)
          mus)) music))
 
+
+
 label =
 #(define-music-function (parser location label) (symbol?)
    (_i "Create @var{label} as a bookmarking label")
@@ -349,6 +354,8 @@ label =
               'elements (list (make-music 'LabelEvent
                                           'page-label label))))
 
+
+
 makeClusters =
 #(define-music-function
                (parser location arg) (ly:music?)
@@ -359,6 +366,45 @@ musicMap =
 #(define-music-function (parser location proc mus) (procedure? ly:music?)
             (music-map proc mus))
 
+
+
+%% noPageBreak and noPageTurn are music functions (not music indentifiers),
+%% because music identifiers are not allowed at top-level.
+noPageBreak =
+#(define-music-function (location parser) ()
+   (_i "Forbid a page break. May be used at toplevel (ie between scores or
+markups), or inside a score.")
+   (make-music 'EventChord
+              'page-marker #t
+              'page-break-permission 'forbid
+              'elements (list (make-music 'PageBreakEvent
+                                          'break-permission '()))))
+
+noPageTurn =
+#(define-music-function (location parser) ()
+   (_i "Forbid a page turn. May be used at toplevel (ie between scores or
+markups), or inside a score.")
+   (make-music 'EventChord
+              'page-marker #t
+              'page-turn-permission 'forbid
+              'elements (list (make-music 'PageTurnEvent
+                                          'break-permission '()))))
+
+
+
+octaveCheck =
+#(define-music-function (parser location pitch-note) (ly:music?)
+   (_i "octave check")
+
+   (make-music 'RelativeOctaveCheck
+              'origin location
+              'pitch (pitch-of-note pitch-note)
+          ))
+
+ottava = #(define-music-function (parser location octave) (number?)
+  (_i "set the octavation ")
+  (make-ottava-set octave))
+
 overrideBeamSettings =
 #(define-music-function
     (parser location
@@ -377,7 +423,7 @@ entries.  @var{grouping} is in units of @var{beam-type}.  If
 of @var{time-signature}.")
 
  ;; TODO -- add warning if largest value of grouping is
- ;;         greater than time-signature.
+ ;;        greater than time-signature.
 
 #{
 #(override-beam-setting
@@ -413,8 +459,14 @@ or @code{\"GrobName\"}")
                        grob-name)
                       (set! (ly:grob-property grob property) value))))))
 
-%% These are music functions (iso music indentifiers), because music identifiers
-%% are not allowed at top-level.
+
+
+%% Parser used to read page-layout file (see includePageLayoutFile
+%% above), and then retreive score tweaks (see scoreTweak below).
+#(define page-layout-parser #f)
+
+%% pageBreak and pageTurn are music functions (iso music indentifiers),
+%% because music identifiers are not allowed at top-level.
 pageBreak =
 #(define-music-function (location parser) ()
    (_i "Force a page break. May be used at toplevel (ie between scores or
@@ -428,16 +480,6 @@ markups), or inside a score.")
                               (make-music 'PageBreakEvent
                                           'break-permission 'force))))
 
-noPageBreak =
-#(define-music-function (location parser) ()
-   (_i "Forbid a page break. May be used at toplevel (ie between scores or
-markups), or inside a score.")
-   (make-music 'EventChord
-              'page-marker #t
-              'page-break-permission 'forbid
-              'elements (list (make-music 'PageBreakEvent
-                                          'break-permission '()))))
-
 pageTurn =
 #(define-music-function (location parser) ()
    (_i "Force a page turn between two scores or top-level markups.")
@@ -453,85 +495,6 @@ pageTurn =
                               (make-music 'PageTurnEvent
                                           'break-permission 'force))))
 
-noPageTurn =
-#(define-music-function (location parser) ()
-   (_i "Forbid a page turn. May be used at toplevel (ie between scores or
-markups), or inside a score.")
-   (make-music 'EventChord
-              'page-marker #t
-              'page-turn-permission 'forbid
-              'elements (list (make-music 'PageTurnEvent
-                                          'break-permission '()))))
-
-allowPageTurn =
-#(define-music-function (location parser) ()
-   (_i "Allow a page turn. May be used at toplevel (ie between scores or
-markups), or inside a score.")
-   (make-music 'EventChord
-              'page-marker #t
-              'page-turn-permission 'allow
-              'elements (list (make-music 'PageTurnEvent
-                                          'break-permission 'allow))))
-
-%% Todo:
-%% doing
-%% define-music-function in a .scm causes crash.
-
-octaveCheck =
-#(define-music-function (parser location pitch-note) (ly:music?)
-   (_i "octave check")
-
-   (make-music 'RelativeOctaveCheck
-              'origin location
-              'pitch (pitch-of-note pitch-note)
-           ))
-
-ottava = #(define-music-function (parser location octave) (number?)
-  (_i "set the octavation ")
-  (make-ottava-set octave))
-
-partcombine =
-#(define-music-function (parser location part1 part2) (ly:music? ly:music?)
-                (make-part-combine-music parser
-                                        (list part1 part2)))
-
-
-pitchedTrill =
-#(define-music-function
-   (parser location main-note secondary-note)
-   (ly:music? ly:music?)
-   (let*
-       ((get-notes (lambda (ev-chord)
-                    (filter
-                     (lambda (m) (eq? 'NoteEvent (ly:music-property m 'name)))
-                     (ly:music-property ev-chord 'elements))))
-       (sec-note-events (get-notes secondary-note))
-       (trill-events (filter (lambda (m) (music-has-type m 'trill-span-event))
-                             (ly:music-property main-note 'elements))))
-
-     (if (pair? sec-note-events)
-        (begin
-          (let*
-              ((trill-pitch (ly:music-property (car sec-note-events) 'pitch))
-               (forced (ly:music-property (car sec-note-events ) 'force-accidental)))
-
-            (if (ly:pitch? trill-pitch)
-                (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: "))
-                  (display sec-note-events)))
-
-            (if (eq? forced #t)
-                (for-each (lambda (m) (ly:music-set-property! m 'force-accidental forced))
-                          trill-events)))))
-     main-note))
-
-
-
-%% for lambda*
-#(use-modules (ice-9 optargs))
-
 parallelMusic =
 #(define-music-function (parser location voice-ids music) (list? ly:music?)
   (_i "Define parallel music sequences, separated by '|' (bar check signs),
@@ -555,8 +518,8 @@ Example:
 @end verbatim
 ")
   (let* ((voices (apply circular-list (make-list (length voice-ids) (list))))
-         (current-voices voices)
-         (current-sequence (list)))
+        (current-voices voices)
+        (current-sequence (list)))
     ;;
     ;; utilities
     (define (push-music m)
@@ -566,8 +529,8 @@ Example:
       "Stores the previously built sequence into the current voice and
        change to the following voice."
       (list-set! current-voices 0 (cons (make-music 'SequentialMusic
-                                         'elements (reverse! current-sequence))
-                                        (car current-voices)))
+                                        'elements (reverse! current-sequence))
+                                       (car current-voices)))
       (set! current-sequence (list))
       (set! current-voices (cdr current-voices)))
     (define (bar-check? m)
@@ -576,55 +539,53 @@ Example:
     (define (music-origin music)
       "Recursively search an origin location stored in music."
       (cond ((null? music) #f)
-            ((not (null? (ly:music-property music 'origin)))
-             (ly:music-property music 'origin))
-            (else (or (music-origin (ly:music-property music 'element))
-                      (let ((origins (remove not (map music-origin
-                                                      (ly:music-property music 'elements)))))
-                        (and (not (null? origins)) (car origins)))))))
+           ((not (null? (ly:music-property music 'origin)))
+            (ly:music-property music 'origin))
+           (else (or (music-origin (ly:music-property music 'element))
+                     (let ((origins (remove not (map music-origin
+                                                     (ly:music-property music 'elements)))))
+                       (and (not (null? origins)) (car origins)))))))
     ;;
     ;; first, split the music and fill in voices
     (map-in-order (lambda (m)
-                    (push-music m)
-                    (if (bar-check? m) (change-voice)))
-                  (ly:music-property music 'elements))
+                   (push-music m)
+                   (if (bar-check? m) (change-voice)))
+                 (ly:music-property music 'elements))
     (if (not (null? current-sequence)) (change-voice))
     ;; un-circularize `voices' and reorder the voices
     (set! voices (map-in-order (lambda (dummy seqs)
-                                 (reverse! seqs))
-                               voice-ids voices))
+                                (reverse! seqs))
+                              voice-ids voices))
     ;;
     ;; set origin location of each sequence in each voice
     ;; for better type error tracking
     (for-each (lambda (voice)
-                (for-each (lambda (seq)
-                            (set! (ly:music-property seq 'origin)
-                                  (or (music-origin seq) location)))
-                          voice))
-              voices)
+               (for-each (lambda (seq)
+                           (set! (ly:music-property seq 'origin)
+                                 (or (music-origin seq) location)))
+                         voice))
+             voices)
     ;;
     ;; check sequence length
     (apply for-each (lambda* (#:rest seqs)
-                      (let ((moment-reference (ly:music-length (car seqs))))
-                        (for-each (lambda (seq moment)
-                                    (if (not (equal? moment moment-reference))
-                                        (ly:music-message seq
-                                         "Bars in parallel music don't have the same length")))
-                          seqs (map-in-order ly:music-length seqs))))
-           voices)
+                     (let ((moment-reference (ly:music-length (car seqs))))
+                       (for-each (lambda (seq moment)
+                                   (if (not (equal? moment moment-reference))
+                                       (ly:music-message seq
+                                        "Bars in parallel music don't have the same length")))
+                         seqs (map-in-order ly:music-length seqs))))
+          voices)
    ;;
    ;; bind voice identifiers to the voices
    (map (lambda (voice-id voice)
-          (ly:parser-define! parser voice-id
-                             (make-music 'SequentialMusic
-                               'origin location
-                               'elements voice)))
-        voice-ids voices))
+         (ly:parser-define! parser voice-id
+                            (make-music 'SequentialMusic
+                              'origin location
+                              'elements voice)))
+       voice-ids voices))
  ;; Return an empty sequence. this function is actually a "void" function.
  (make-music 'SequentialMusic 'void #t))
 
-
-
 parenthesize =
 #(define-music-function (parser loc arg) (ly:music?)
    (_i "Tag @var{arg} to be parenthesized.")
@@ -633,17 +594,54 @@ parenthesize =
      ; arg is an EventChord -> set the parenthesize property on all child notes and rests
      (map
        (lambda (ev)
-         (if (or (memq 'note-event (ly:music-property ev 'types))
-                 (memq 'rest-event (ly:music-property ev 'types)))
-           (set! (ly:music-property ev 'parenthesize) #t)))
+        (if (or (memq 'note-event (ly:music-property ev 'types))
+                (memq 'rest-event (ly:music-property ev 'types)))
+          (set! (ly:music-property ev 'parenthesize) #t)))
        (ly:music-property arg 'elements))
      ; No chord, simply set property for this expression:
      (set! (ly:music-property arg 'parenthesize) #t))
    arg)
 
+partcombine =
+#(define-music-function (parser location part1 part2) (ly:music? ly:music?)
+               (make-part-combine-music parser
+                                        (list part1 part2)))
+
+pitchedTrill =
+#(define-music-function
+   (parser location main-note secondary-note)
+   (ly:music? ly:music?)
+   (let*
+       ((get-notes (lambda (ev-chord)
+                    (filter
+                     (lambda (m) (eq? 'NoteEvent (ly:music-property m 'name)))
+                     (ly:music-property ev-chord 'elements))))
+       (sec-note-events (get-notes secondary-note))
+       (trill-events (filter (lambda (m) (music-has-type m 'trill-span-event))
+                             (ly:music-property main-note 'elements))))
 
-quoteDuring = #
-(define-music-function
+     (if (pair? sec-note-events)
+        (begin
+          (let*
+              ((trill-pitch (ly:music-property (car sec-note-events) 'pitch))
+               (forced (ly:music-property (car sec-note-events ) 'force-accidental)))
+
+            (if (ly:pitch? trill-pitch)
+                (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: "))
+                  (display sec-note-events)))
+
+            (if (eq? forced #t)
+                (for-each (lambda (m) (ly:music-set-property! m 'force-accidental forced))
+                          trill-events)))))
+     main-note))
+
+
+
+quoteDuring =
+#(define-music-function
   (parser location what main-music)
   (string? ly:music?)
   (make-music 'QuoteMusic
@@ -653,7 +651,18 @@ quoteDuring = #
 
 
 
-resetRelativeOctave  =
+removeWithTag =
+#(define-music-function
+  (parser location tag music) (symbol? ly:music?)
+  (_i "Remove elements of @var{music} that are tagged with @var{tag}.")
+  (music-filter
+   (lambda (m)
+    (let* ((tags (ly:music-property m 'tags))
+          (res (memq tag tags)))
+     (not res)))
+ music))
+
+resetRelativeOctave =
 #(define-music-function
     (parser location reference-note)
     (ly:music?)
@@ -667,7 +676,7 @@ resetRelativeOctave  =
     (set! (ly:music-property reference-note
        'to-relative-callback)
        (lambda (music last-pitch)
-        pitch))
+       pitch))
 
     reference-note))
 
@@ -685,22 +694,49 @@ or @code{subdivide}.")
   #(revert-beam-setting $time-signature $rule-type $context)
 #})
 
+rightHandFinger =
+#(define-music-function (parser location finger) (number-or-string?)
+   (_i "Apply @var{finger} as a fingering indication.")
+
+   (apply make-music
+         (append
+          (list
+           'StrokeFingerEvent
+           'origin location)
+          (if  (string? finger)
+               (list 'text finger)
+               (list 'digit finger)))))
+
+
+
 scaleDurations =
 #(define-music-function (parser location fraction music) (number-pair? ly:music?)
    (_i "Multiply the duration of events in @var{music} by @var{fraction}.")
    (ly:music-compress music
                      (ly:make-moment (car fraction) (cdr fraction))))
 
+%% see comment for page-layout-parser definition above.
+scoreTweak =
+#(define-music-function (parser location name) (string?)
+   (_i "Include the score tweak, if exists.")
+   (if (and page-layout-parser (not (ly:get-option 'dump-tweaks)))
+       (let ((tweak-music (ly:parser-lookup page-layout-parser
+                                           (string->symbol name))))
+        (if (ly:music? tweak-music)
+            tweak-music
+            (make-music 'SequentialMusic)))
+       (make-music 'SequentialMusic)))
+
 setBeatGrouping =
 #(define-music-function (parser location grouping) (pair?)
    (_i "Set the beat grouping in the current time signature to
 @var{grouping}.")
    (define (default-group-setting c)
     (let* ((context-time-signature
-            (ly:context-property c 'timeSignatureFraction))
-           (time-signature (if (null? context-time-signature)
-                               '(4 . 4)
-                               context-time-signature)))
+           (ly:context-property c 'timeSignatureFraction))
+          (time-signature (if (null? context-time-signature)
+                              '(4 . 4)
+                              context-time-signature)))
       (override-property-setting
        c
        'beamSettings
@@ -711,7 +747,6 @@ setBeatGrouping =
      (make-apply-context default-group-setting)
      'Score))
 
-
 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)}.")
@@ -726,35 +761,18 @@ spacingTweaks =
 the `parameters' assoc list.")
    #{
       \overrideProperty #"Score.NonMusicalPaperColumn"
-        #'line-break-system-details
-        #$(list (cons 'alignment-extra-space (cdr (assoc 'system-stretch parameters)))
+       #'line-break-system-details
+       #$(list (cons 'alignment-extra-space (cdr (assoc 'system-stretch parameters)))
                (cons 'system-Y-extent (cdr (assoc 'system-Y-extent parameters))))
    #})
 
+styledNoteHeads =
+#(define-music-function
+   (parser location style heads music)
+   (symbol? list-or-symbol? ly:music?)
+   (_i "Set @var{heads} in @var{music} to @var{style}.")
+   (style-note-heads heads style music))
 
-rightHandFinger =
-#(define-music-function (parser location finger) (number-or-string?)
-   (_i "Apply @var{finger} as a fingering indication.")
-
-   (apply make-music
-         (append
-          (list
-           'StrokeFingerEvent
-           'origin location)
-          (if  (string? finger)
-               (list 'text finger)
-               (list 'digit finger)))))
-
-scoreTweak =
-#(define-music-function (parser location name) (string?)
-   (_i "Include the score tweak, if exists.")
-   (if (and page-layout-parser (not (ly:get-option 'dump-tweaks)))
-       (let ((tweak-music (ly:parser-lookup page-layout-parser
-                                            (string->symbol name))))
-         (if (ly:music? tweak-music)
-             tweak-music
-             (make-music 'SequentialMusic)))
-       (make-music 'SequentialMusic)))
 
 
 tag =
@@ -769,8 +787,6 @@ tag =
          (ly:music-property arg 'tags)))
    arg)
 
-
-
 transposedCueDuring =
 #(define-music-function
   (parser location what dir pitch-note main-music)
@@ -778,7 +794,7 @@ transposedCueDuring =
 
   (_i "Insert notes from the part @var{what} into a voice called @code{cue},
 using the transposition defined by @var{pitch-note}.  This happens
-simultaneously with @var{main-music}, which is usually a rest.  The
+simultaneously with @var{main-music}, which is usually a rest. The
 argument @var{dir} determines whether the cue notes should be notated
 as a first or second voice.")
 
@@ -791,8 +807,6 @@ as a first or second voice.")
              'quoted-transposition (pitch-of-note pitch-note)
              'origin location))
 
-
-
 transposition =
 #(define-music-function (parser location pitch-note) (ly:music?)
    (_i "Set instrument transposition")
@@ -800,7 +814,7 @@ transposition =
    (context-spec-music
     (make-property-set 'instrumentTransposition
                       (ly:pitch-negate (pitch-of-note pitch-note)))
-        'Staff))
+       'Staff))
 
 tweak =
 #(define-music-function (parser location sym val arg)
index 33d8ee9a6baecaa05d2fbb7970908c85ffb1d8f1..0bc54798e4bf1395397db5cdf6ece7cf927018ed 100644 (file)
     
     %% Note: these are not scaled; they are in staff-spaces.
     between-system-spacing = #'((space . 12) (minimum-distance . 8) (padding . 1))
+    between-scores-system-spacing = #'((space . 14) (minimum-distance . 8) (padding . 1))
     after-title-spacing = #'((space . 2) (padding . 0.5))
     before-title-spacing = #'((space . 5) (padding . 0.5))
     between-title-spacing = #'((space . 1) (padding . 0.5))
-    first-system-spacing = #'((space . 1) (padding . 0) (min-distance . 0))
-    first-system-title-spacing = #'((space . 1) (padding . 1) (min-distance . 0))
-    last-system-spacing = #'((space . 1) (padding . 0) (min-distance . 0) (stretchability . 5))
+    top-system-spacing = #'((space . 1) (padding . 1) (min-distance . 0))
+    top-title-spacing = #'((space . 1) (padding . 1) (min-distance . 0))
+    bottom-system-spacing = #'((space . 1) (padding . 1) (min-distance . 0) (stretchability . 5))
 
     ragged-bottom = ##f
 
index 3803396b2075b07e814fdb07448b865d24e4b81d..70550a78c067588d2e2c4b52e86f91bf781ceaa0 100644 (file)
@@ -68,6 +68,7 @@
     \name GrandStaff
     \accepts RhythmicStaff
     \accepts Staff
+    \accepts Dynamics
     \defaultchild Staff
 }
 
 
 \context { \Staff \name RhythmicStaff }
 
-
+\context {
+  \type "Performer_group"
+  \name Dynamics
+  \consists "Piano_pedal_performer"
+}
index f91c4b8d85dd760af497e4c99e95d66a71466b67..49ff7dc560b0e46d7a4c650dcaa871f3241b83e0 100644 (file)
@@ -3,7 +3,7 @@
 \version "2.12.0"
 
 stemUp = \override Stem #'direction = #UP
-stemDown = \override Stem #'direction = #DOWN 
+stemDown = \override Stem #'direction = #DOWN
 stemNeutral = \revert Stem #'direction
 
 slurUp = \override Slur #'direction = #UP
@@ -16,7 +16,7 @@ slurNeutral = \revert Slur #'direction
 slurDashed = {
   \override Slur #'dash-definition =  #'((0 1 0.4 0.75))
 }
-slurDashPattern = 
+slurDashPattern =
 #(define-music-function (parser location dash-fraction dash-period)
   (number? number?)
   #{
@@ -46,7 +46,7 @@ phrasingSlurNeutral = \revert PhrasingSlur #'direction
 phrasingSlurDashed = {
   \override PhrasingSlur #'dash-definition =  #'((0 1 0.4 0.75))
 }
-phrasingSlurDashPattern = 
+phrasingSlurDashPattern =
 #(define-music-function (parser location dash-fraction dash-period)
   (number? number?)
   #{
@@ -94,7 +94,7 @@ tieNeutral = \revert Tie #'direction
 tieDashed = {
   \override Tie #'dash-definition = #'((0 1 0.4 0.75))
 }
-tieDashPattern = 
+tieDashPattern =
 #(define-music-function (parser location dash-fraction dash-period)
   (number? number?)
   #{
@@ -117,8 +117,8 @@ tieSolid = {
 }
 
 easyHeadsOn = {
-  \override NoteHead #'stencil = #ly:note-head::brew-ez-stencil
-  \override NoteHead #'font-size = #-7
+  \override NoteHead #'stencil = #note-head::brew-ez-stencil
+  \override NoteHead #'font-size = #-8
   \override NoteHead #'font-family = #'sans
   \override NoteHead #'font-series = #'bold
 }
@@ -164,7 +164,7 @@ cadenzaOff = {
   \set Timing.measurePosition = #ZERO-MOMENT
 }
 
-% dynamic ly:dir?  text script, articulation script ly:dir? 
+% dynamic ly:dir?  text script, articulation script ly:dir?
 oneVoice = #(context-spec-music (make-voice-props-revert) 'Voice)
 voiceOne = #(context-spec-music (make-voice-props-set 0) 'Voice)
 voiceTwo = #(context-spec-music (make-voice-props-set 1) 'Voice)
@@ -279,9 +279,9 @@ defaultTimeSignature = {
 
 
 % For drawing vertical chord brackets with \arpeggio
-% This is a shorthand for the value of the print-function property 
-% of either Staff.Arpeggio or PianoStaff.Arpeggio, depending whether 
-% cross-staff brackets are desired. 
+% This is a shorthand for the value of the print-function property
+% of either Staff.Arpeggio or PianoStaff.Arpeggio, depending whether
+% cross-staff brackets are desired.
 
 arpeggio = #(make-music 'ArpeggioEvent)
 
@@ -320,7 +320,13 @@ arpeggioParenthesisDashed = {
 
 glissando = #(make-music 'GlissandoEvent)
 
-fermataMarkup = \markup { \musicglyph #"scripts.ufermata" } 
+fermataMarkup =
+#(make-music 'MultiMeasureTextEvent
+   ; Set the 'text based on the 'direction
+   'tweaks (list (cons 'text (lambda (grob)
+       (if (eq? (ly:grob-property grob 'direction) DOWN)
+           (markup #:musicglyph "scripts.dfermata")
+           (markup #:musicglyph "scripts.ufermata"))))))
 
 hideNotes = {
   % hide notes, accidentals, etc.
@@ -405,7 +411,7 @@ bassFigureStaffAlignmentNeutral = {
   \revert Staff.BassFigureAlignmentPositioning #'direction
 }
 
-predefinedFretboardsOff = {  
+predefinedFretboardsOff = {
   \set FretBoards.predefinedDiagramTable = ##f
 }
 
@@ -421,54 +427,34 @@ pointAndClickOn = #(define-music-function (parser location) ()
                       (ly:set-option 'point-and-click #t)
                       (make-music 'SequentialMusic 'void #t))
 
-palmMuteOn = {
-  \override NoteHead #'style = #'do
-}
+palmMuteOn =
+#(define-music-function (parser location) ()
+   (override-head-style 'NoteHead 'do))
 
-palmMuteOff = {
-  \revert NoteHead #'style
-}
+palmMuteOff =
+#(define-music-function (parser location) ()
+   (revert-head-style 'NoteHead))
 
 palmMute =
 #(define-music-function (parser location note) (ly:music?)
-  ;; are we inside a <...>?
-  (if (eq? (ly:music-property note 'name) 'NoteEvent)
-      ;; yes -> add a tweak
-      (begin (set! (ly:music-property note 'tweaks)
-                    (acons 'style 'do (ly:music-property note 'tweaks)))
-      note)
-      ;; no -> use predefined commands to switch to triangle-shaped note heads
-      #{
-        \palmMuteOn
-        $note
-        \palmMuteOff
-      #}))
-
-deadNotesOn = {
-  \override TabNoteHead #'style = #'cross
-  \override NoteHead #'style = #'cross
-}
+    (style-note-heads 'NoteHead 'do note))
 
-deadNotesOff = {
-  \revert TabNoteHead #'style
-  \revert NoteHead #'style
-}
+xNotesOn =
+#(define-music-function (parser location) ()
+   (override-head-style '(TabNoteHead NoteHead) 'cross))
 
-deadNote =
+xNotesOff =
+#(define-music-function (parser location) ()
+   (revert-head-style '(TabNoteHead NoteHead)))
+
+xNote =
 #(define-music-function (parser location note) (ly:music?)
-  ;; are we inside a <...>?
-  (if (eq? (ly:music-property note 'name) 'NoteEvent)
-      ;; yes -> add a tweak
-      (begin (set! (ly:music-property note 'tweaks)
-                    (acons 'style 'cross (ly:music-property note 'tweaks)))
-       note)
-       ;; no -> use predefined commmands for changing
-       ;; note head and tablature fret signs
-       #{
-         \deadNotesOn
-         $note
-         \deadNotesOff
-       #}))
+   (style-note-heads '(TabNoteHead NoteHead) 'cross note))
+
+% Define aliases of cross-head notes for specific purposes
+deadNotesOn = \xNotesOn
+deadNotesOff = \xNotesOff
+deadNote = #xNote
 
 tabFullNotation = {
   % time signature
@@ -481,7 +467,7 @@ tabFullNotation = {
   \revert TabVoice.Tie #'stencil
   \revert TabVoice.Tie #'after-line-breaking
   \revert TabVoice.RepeatTie #'stencil
-  \revert TabVoice.RepeatTie #'after-line-braking
+  \revert TabVoice.RepeatTie #'after-line-breaking
   \revert TabVoice.LaissezVibrerTie #'stencil
   \revert TabVoice.Slur #'stencil
   \revert PhrasingSlur #'stencil
index e63acb4f65c68b22133d7a5d9bf1f877d5089433..d729423c87864363aad640b6bde387dae6d578ab 100644 (file)
@@ -1,20 +1,22 @@
+$(outdir)/%.texi: %.texi
+       cp -p $< $@
+
 $(top-build-dir)/Documentation/$(outdir)/%/index.$(ISOLANG).html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map $(TRANSLATION_LILY_IMAGES)
        mkdir -p $(dir $@)
        mkdir -p $(outdir)/$*
-       $(TEXI2HTML) --I=$(src-dir) --I=$(outdir) $(TEXI2HTML_FLAGS) --output=$(outdir)/$* --prefix=index --split=section $(TEXI2HTML_INIT) $<
+       $(TEXI2HTML) $(TEXI2HTML_FLAGS) $(TEXI2HTML_SPLIT) --output=$(outdir)/$* $<
        find $(outdir)/$* -name '*.html' | xargs grep -L --label="" 'UNTRANSLATED NODE: IGNORE ME' | sed 's!$(outdir)/!!g' | xargs $(buildscript-dir)/mass-link --prepend-suffix .$(ISOLANG) hard $(outdir) $(top-build-dir)/Documentation/$(outdir)
 
-
 $(top-build-dir)/Documentation/$(outdir)/%-big-page.$(ISOLANG).html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map $(TRANSLATION_LILY_IMAGES)
-       $(TEXI2HTML) --I=$(src-dir) --I=$(outdir) -D bigpage $(TEXI2HTML_FLAGS) --output=$@ $(TEXI2HTML_INIT) $<
+       $(TEXI2HTML) $(TEXI2HTML_FLAGS) -D bigpage --output=$@ $<
 
 $(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map $(outdir)/version.itexi
-       $(TEXI2HTML) --I=$(src-dir) --I=$(outdir) $(TEXI2HTML_FLAGS) --output=$@ $(TEXI2HTML_INIT) $<
+       $(TEXI2HTML) $(TEXI2HTML_FLAGS) --output=$@ $<
 
 $(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).pdf: $(outdir)/%.texi
        cd $(outdir) && \
-       texi2pdf $(TEXI2PDF_FLAGS) $(TEXINFO_PAPERSIZE_OPTION) $*.texi && \
-       mkdir -p $(dir $@) && mv $*.pdf $@
+           texi2pdf $(TEXI2PDF_FLAGS) $(TEXINFO_PAPERSIZE_OPTION) $*.texi && \
+           mkdir -p $(dir $@) && mv $*.pdf $@
 
 $(outdir)/version.%: $(top-src-dir)/VERSION
        echo '@macro version'> $@
@@ -26,6 +28,7 @@ $(outdir)/%.png: $(top-build-dir)/Documentation/$(outdir)/%.png
 
 $(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map
        $(buildscript-dir)/extract_texi_filenames -o $(XREF_MAPS_DIR) $(XREF_MAP_FLAGS) --master-map-file=$(XREF_MAPS_DIR)/$*.xref-map $<
+       touch -r $< $@
 
 $(MASTER_TEXI_FILES): $(ITELY_FILES) $(ITEXI_FILES) $(outdir)/pictures
 
@@ -37,4 +40,12 @@ $(TRANSLATION_LILY_IMAGES): $(MASTER_TEXI_FILES)
        find $(outdir) \( -name 'lily-*.png' -o -name 'lily-*.ly' \) | sed 's!$(outdir)/!!g' | xargs $(buildscript-dir)/mass-link hard $(outdir) $(top-build-dir)/Documentation/$(outdir)
        touch $@
 
+$(outdir)/lilypond-%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
+       $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
+
+$(outdir)/lilypond.info: $(outdir)/general.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
+       $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
+
+$(outdir)/general/index.html: $(outdir)/macros.itexi $(outdir)/common-macros.itexi
+
 .SECONDARY:
index ed68660f74a9966a7aeeeb875b4591209ee3352a..8da06ada19b209428f02efd2a14e878ebee3795a 100644 (file)
@@ -9,15 +9,20 @@ LANGS = $(shell $(PYTHON) $(buildscript-dir)/langdefs.py)
 CSS_SOURCE_FILES = $(shell ls $(top-src-dir)/Documentation/lilypond*.css)
 
 TELY_FILES := $(call src-wildcard,*.tely)
-MASTER_TEXI_FILES := $(TELY_FILES:%.tely=$(outdir)/%.texi)
+TEXI_FILES := $(call src-wildcard,*.texi)
+MASTER_TEXI_FILES := $(TEXI_FILES) $(TELY_FILES:%.tely=$(outdir)/%.texi)
 
-SPLITTED_HTML_MANUALS = $(foreach manual, $(TELY_FILES:%.tely=%),\
+TEXINFO_MANUALS =\
+ $(TELY_FILES:%.tely=%)\
+ $(TEXI_FILES:%.texi=%)
+
+SPLITTED_HTML_MANUALS = $(foreach manual, $(TEXINFO_MANUALS),\
  $(if $(findstring $(manual), $(UNSPLITTED_HTML_MANUALS)),,$(manual)))
 
 OUT_HTML_FILES += $(UNSPLITTED_HTML_MANUALS:%=$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).html)
 BIG_PAGE_HTML_FILES := $(SPLITTED_HTML_MANUALS:%=$(top-build-dir)/Documentation/$(outdir)/%-big-page.$(ISOLANG).html)
 DEEP_HTML_FILES := $(SPLITTED_HTML_MANUALS:%=$(top-build-dir)/Documentation/$(outdir)/%/index.$(ISOLANG).html)
-PDF_FILES := $(TELY_FILES:%.tely=$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).pdf)
+#PDF_FILES := $(TEXINFO_MANUALS:%=$(top-build-dir)/Documentation/$(outdir)/%.$(ISOLANG).pdf)
 
 ITELY_FILES := $(call src-wildcard,*.itely)
 ITEXI_FILES := $(call src-wildcard,*.itexi)
@@ -31,18 +36,41 @@ MAKEINFO_FLAGS += --force --enable-encoding $(DOCUMENTATION_INCLUDES)
 MAKEINFO = LANG= $(MAKEINFO_PROGRAM) $(MAKEINFO_FLAGS)
 
 # texi2html xref map files
-XREF_MAPS_DIR=$(top-build-dir)/out/xref-maps
-XREF_MAPS_FILES=$(TELY_FILES:%.tely=$(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map)
+# FIXME: duplicated in stepake/texinfo-vars.make make/doc-i18n-root-vars.make
+XREF_MAPS_DIR=$(top-build-dir)/$(outbase)/xref-maps
+XREF_MAPS_FILES=$(TEXINFO_MANUALS:%=$(XREF_MAPS_DIR)/%.$(ISOLANG).xref-map)
 XREF_MAP_FLAGS += -I $(outdir)
 
-# texi2html flags
-TEXI2HTML_INIT= --init-file=$(top-src-dir)/Documentation/lilypond-texi2html.init
-TEXI2HTML_LANG=--lang=$(ISOLANG)
-TEXI2HTML_FLAGS += $(TEXI2HTML_LANG) $(DOCUMENTATION_INCLUDES) \
-  -I $(XREF_MAPS_DIR)
-TEXI2HTML = PERL_UNICODE=SD LANG= $(TEXI2HTML_PROGRAM)
+WEB_MANUALS=general
+
+###########
+ifneq ($(ISOLANG),)
+TEXI2HTML_LANG = --lang=$(ISOLANG)
+endif
+
+DOC_TEXI2HTML_INIT = --init-file=$(top-src-dir)/Documentation/lilypond-texi2html.init
+WEB_TEXI2HTML_INIT =--init-file=$(top-src-dir)/Documentation/web-texi2html.init
+TEXI2HTML_INIT = $(DOC_TEXI2HTML_INIT)
+
+DOC_TEXI2HTML_SPLIT = --prefix=index --split=section
+# --split=node --node-files makes that translated pages have
+# translated file names, that breaks.
+## WEB_TEXI2HTML_SPLIT = --prefix=index --split=node --node-files
+WEB_TEXI2HTML_SPLIT = $(DOC_TEXI2HTML_SPLIT)
+TEXI2HTML_SPLIT = $(DOC_TEXI2HTML_SPLIT)
+
+$(top-build-dir)/Documentation/$(outdir)/general/index.$(ISOLANG).html:\
+       TEXI2HTML_INIT = $(WEB_TEXI2HTML_INIT)
+$(top-build-dir)/Documentation/$(outdir)/general/index.$(ISOLANG).html:\
+       TEXI2HTML_SPLIT := $(WEB_TEXI2HTML_SPLIT)
+
+TEXI2HTML_INCLUDES += --I=. --I=$(src-dir) --I=$(outdir) $(DOCUMENTATION_INCLUDES) --I=$(XREF_MAPS_DIR)
+TEXI2HTML_FLAGS += $(TEXI2HTML_INCLUDES) $(TEXI2HTML_INIT) $(TEXI2HTML_LANG)
+TEXI2HTML = PERL_UNICODE=SD $(TEXI2HTML_PROGRAM)
+###########
 
 TEXI2PDF_FLAGS += --batch $(DOCUMENTATION_INCLUDES)
+TEXI2PDF_FLAGS += -I $(LYS_OUTPUT_DIR)
 
 ifdef QUIET_BUILD
 TEXI2PDF_FLAGS += -q
index 04a72c7924df43b4ed89eb75cab166643b476ff8..783c808642831c5d564be6613b76492ab260cb1c 100644 (file)
@@ -19,8 +19,42 @@ def read_pipe (command):
         error = code + ' ' + error
     return (output, error)
 
+### Renamed files map to ensure continuity of file history
+## Map of new_name: old_name
+renames_map = {
+    'application.tely': 'user/lilypond-program.tely',
+    'notation.tely': 'user/lilypond.tely',
+    'learning.tely': 'user/lilypond-learning.tely',
+    'changes.tely': 'topdocs/NEWS.tely',
+}
+
+# FIXME: Hardcoded file names!?
+manuals_subdirectories_re = \
+    re.compile ('(application|automated-engraving|essay|general|learning|notation)/')
+
+def add_old_name (file_path):
+    for new_path in renames_map:
+        if file_path.endswith (new_path):
+            old_file_path = file_path.replace (new_path,
+                                               renames_map[new_path])
+            break
+    else:
+        if file_path.endswith ('macros.itexi'):
+            old_file_path = file_path.replace ('macros.itexi',
+                                               'user/macros.itexi')
+        elif file_path.endswith ('.itely'):
+            old_file_path = manuals_subdirectories_re.sub ('user/',
+                                                           file_path)
+        elif 'snippets/' in file_path:
+            old_file_path = file_path.replace ('snippets/',
+                                               '../input/lsr/')
+        else:
+            return file_path
+    return file_path + ' ' + old_file_path
+
 revision_re = re.compile ('GIT [Cc]ommittish:\s+([a-f0-9]+)')
-vc_diff_cmd = 'git diff --patience -M %(color_flag)s %(revision)s %(upper_revision)s -- %(original)s | cat'
+vc_diff_cmd = 'git diff -M %(color_flag)s %(revision)s \
+%(upper_revision)s -- %(original_with_old_name)s | cat'
 no_committish_fatal_error = """error: %s: no 'GIT committish: <hash>' found.
 Please check the whole file against the original in English, then
 fill in HEAD committish in the header.
@@ -38,6 +72,7 @@ def check_translated_doc (original, translated_file, translated_contents,
         color_flag = '--color --color-words'
     else:
         color_flag = '--no-color'
+    original_with_old_name = add_old_name (original)
     c = vc_diff_cmd % vars ()
     if verbose:
         sys.stderr.write ('running: ' + c)
index 4b548f11e19397fe0dc57cfcb768b2ca530614ce..d0542b073f690f62676e4c55f117cb99cb3e7792 100644 (file)
@@ -6,6 +6,8 @@ references_dict = {
     'notation': 'ruser',
     'learning': 'rlearning',
     'application': 'rprogram',
+    'essay': 'ressay',
     'snippets': 'rlsr',
     'music-glossary': 'rglos',
-    'internals': 'rinternals' }
+    'internals': 'rinternals',
+    }
index 3db9fda8d149526e9c0fdc83661e813e99501ce5..c26d7473e2efb8c3274e2299238c0686c571b95d 100644 (file)
@@ -44,6 +44,12 @@ footer = '''
 </p>
 </div>
 '''
+
+web_footer = '''
+<div class="footer">
+</div>
+'''
+
 footer_name_version = _doc ('This page is for %(package_name)s-%(package_version)s (%(branch_str)s).')
 # ugh, must not have "_doc" in strings because it is naively replaced with "_" in hacked gettext process
 footer_report_links = _doc ('Your <a href="%(suggest_Docs_url)s">suggestions for the documentation</a> are welcome, please report errors to our <a href="%(mail_address_url)s">bug list</a>.')
@@ -93,9 +99,9 @@ def build_pages_dict (filelist):
 def source_links_replace (m, source_val):
     return 'href="' + os.path.join (source_val, m.group (1)) + '"'
 
-splitted_docs_re = re.compile ('(Documentation/out-www/(notation|\
-music-glossary|application|general|learning|snippets))/')
-lily_snippets_re = re.compile ('(href|src)="(../lily-.*?|.*?[.]png)"')
+# More hardcoding, yay!
+splitted_docs_re = re.compile ('(Documentation/out-www/(automated-engraving|essay|notation|music-glossary|application|general|learning|snippets))/')
+lily_snippets_re = re.compile ('(href|src)="([0-9a-f]{2}/lily-.*?)"')
 pictures_re = re.compile ('src="(pictures/.*?)"')
 
 docindex_link_re = re.compile (r'href="index.html"')
@@ -342,7 +348,10 @@ def process_html_files (package_name = '',
 
             ### add footer
             if footer_tag_re.search (s) == None:
-                s = add_footer (s, footer_tag + footer)
+                if 'general' in file_name:
+                    s = add_footer (s, footer_tag + web_footer)
+                else:
+                    s = add_footer (s, footer_tag + footer)
 
                 available, missing = find_translations (prefix, lang_ext)
                 page_flavors = process_links (s, prefix, lang_ext, file_name, missing, target)
index 187dfdd09baab156342095fb1e7385de9e745593..e0d118f11a7826ce0b8400938728311c1e0ce3e7 100644 (file)
@@ -10,7 +10,7 @@ _ = lilylib._
 
 
 NOT_SMART = _ ("Not smart enough to convert %s")
-UPDATE_MANUALLY        = _ ("Please refer to the manual for details, and update manually.")
+UPDATE_MANUALLY = _ ("Please refer to the manual for details, and update manually.")
 FROM_TO = _ ( "%s has been replaced by %s")
 
 
@@ -2911,7 +2911,10 @@ def conv(str):
        _ ("Autobeaming rules have changed.  override-auto-beam-setting and\n\
 revert-auto-beam-setting have been eliminated.  \\overrideBeamSettings has been\n\
 added.  BeatGrouping has been eliminated.\n\
-Different settings for vertical layout."))
+Different settings for vertical layout.\n\
+ly:system-start-text::print -> system-start-text::print\n\
+Beam #'thickness -> Beam #'beam-thickness\n\
+ly:note-head::brew-ez-stencil -> note-head::brew-ez-stencil"))
 def conv(str):
     if re.search("override-auto-beam-setting", str):
         stderr_write ("\n")
@@ -2923,9 +2926,9 @@ def conv(str):
         stderr_write (NOT_SMART % _("override-auto-beam-setting.\n\
    Autobeam settings are now reverted with \\revertBeamSettings.\n"))
         stderr_write (UPDATE_MANUALLY)
-    str = re.sub(r"\\set\s+#\'beatGrouping", r"\\setBeatGrouping", str)
-    if re.search(r"(\w+\.beatGrouping)", str):
-        stderr_write (NOT_SMART % _(".beatGrouping. \n\
+    str = re.sub(r"\\set\s+beatGrouping", r"\\setBeatGrouping", str)
+    if re.search(r"\w+\s*.\s*beatGrouping", str):
+        stderr_write (NOT_SMART % _("beatGrouping. \n\
    beatGrouping with a specified context must now be accomplished with\n\
    \\overrideBeamSettings.\n"))
         stderr_write (UPDATE_MANUALLY)
@@ -2934,6 +2937,9 @@ def conv(str):
         stderr_write(NOT_SMART % _("alignment-offsets has been changed to alignment-distances: \
 you must now specify the distances between staves rather than the offset of staves.\n"))
         stderr_write(UPDATE_MANUALLY)
+    str = re.sub ('ly:(system-start-text::print|note-head::brew-ez-stencil)',
+                  '\\1', str)
+    str = re.sub ('(\\bBeam\\s+#\')(?=thickness\\b)', '\\1beam-', str)
     return str
 
 # Guidelines to write rules (please keep this at the end of this file)
index eb9d08ac527cfbff0c09990e123218240e1d2048..b37f9caf5c0b20c9a126361bc6c0d41e5d80ccf6 100644 (file)
@@ -62,13 +62,14 @@ def french_html_filter (page):
 fr = LanguageDef ('fr', 'français', double_punct_char_sep='&nbsp;', html_filter = french_html_filter)
 es = LanguageDef ('es', 'español')
 de = LanguageDef ('de', 'deutsch')
+nl = LanguageDef ('nl', 'nederlands')
 ja = LanguageDef ('ja', '日本語', enable_ly_identifier_l10n=False)
 
 # Outdated or broken translations may be disabled
 # (please run 'make doc-clean' before doing that):
 #fr.enabled = False
 
-LANGUAGES = (site, fr, es, de, ja)
+LANGUAGES = (site, fr, es, de, nl, ja)
 
 if __name__ == '__main__':
     print ' '.join ([l.code for l in LANGUAGES if l.enabled and l.code != 'en'])
index 9fa094f51892e3eb0e0cad2186c1922ba97bf0b3..3a4ccab817871d821b3e6641e1b0e4d044191e2f 100644 (file)
 
 (define-public (postprocess-output paper-book module filename formats)
   (let* ((completed (completize-formats formats))
-        (base (string-regexp-substitute "\\.[a-z]+$" "" filename))
+        (base (dir-basename filename ".ps" ".eps"))
         (intermediate (remove (lambda (x) (member x formats)) completed)))
-    
     (for-each (lambda (f)
                ((eval (string->symbol (format "convert-to-~a" f))
                       module) paper-book filename)) completed)
     (if (ly:get-option 'delete-intermediate-files)
        (for-each (lambda (f)
-                   (delete-file (string-append base "." f))) intermediate))))
+                   (if (file-exists? f) (delete-file f)))
+                 (map (lambda (x) (string-append base "." x)) intermediate)))))
 
 (define-public (completize-formats formats)
   (define new-fmts '())
index a0ab77ae59470c7a847f3d40d4c98b5e1eb049c4..6649aad73b45dc3755f25f0ccdd9657ac797c502 100644 (file)
 
     ;; in 4 4 (common) time:
     ;;   default: end beams on beats
-    ;;  use beatLength for all except 32nd notes:
-    ;;  end beams with 32nd notes each 1 8 beat
+    ;;   end beams with 8th notes each 1 2 beat
    (((4 . 4) end) .
-    ((* . (2 2))
-     ((1 . 32) . (4 4 4 4
-                  4 4 4 4))))
+    ((* . (1 1 1 1))
+     ((1 . 8) . (4 4))))
 
     ;; in 4 8 time:
     ;;   default: group on 1 4 notes
index 8db8bb96c079185d54da0b887180e0545a094227..3381a9e898888fdff0433bd1385031e0d9a46fd7 100644 (file)
 (define-public (string-or-pair? x)
   (or (string? x) (pair? x)))
 
+(define-public (cheap-list? x)
+  (or (pair? x) (null? x)))
+
+(define-public (list-or-symbol? x)
+  (or (cheap-list? x) (symbol? x)))
+
 (define-public (scheme? x) #t)
 
 
index b6a5becfb56561fb2dca7bce283b26911d447379..9509adc9b67739380961e39665d2b3391d7e4b79 100644 (file)
@@ -524,8 +524,6 @@ are described in @rinternals{bar-line-interface}.")
      (barCheckLastFail ,ly:moment? "Where in the measure did the last
 barcheck fail?")
      (beamMelismaBusy ,boolean? "Signal if a beam is present.")
-     (breakableSeparationItem ,ly:grob? "The breakable items in this
-time step, for this staff.")
      (busyGrobs ,list? "A queue of @code{(@var{end-moment} .
 @var{GROB})} cons cells.  This is for internal (C++) use only.  This
 property contains the grobs which are still busy (e.g. note heads,
index 0bed1adc6527ee0859ab3a4407695e5718849a69..f06b0d4a90c767a94e5cb53e01fae6a87980adbd 100644 (file)
@@ -167,11 +167,10 @@ interesting enough to maintain a hara-kiri staff."
  "A right hand finger instruction."
  '(digit-names))
 
-;;; todo: this is not typesetting info. Move to interpretation.
 (ly:add-interface
- 'tablature-interface
- "An interface for any notes set in a tablature staff."
- '())
+ 'system-start-text-interface
+ "Text in front of the system."
+ '(long-text self-alignment-X self-alignment-Y text))
 
 (ly:add-interface
  'trill-spanner-interface
index 98eb2c022c31f21b82af2c3ff7f7d481c33df53a..d0b65b64e48f2c27230c0e5f28175ceff1fd2b49 100644 (file)
@@ -791,8 +791,6 @@ should use @code{LEFT}.")
      (thickness ,number? "Line thickness, generally measured in
 @code{line-thickness}.")
      (thin-kern ,number? "The space after a hair-line in a bar line.")
-     (threshold ,number-pair? "@code{(@var{min} . @var{max})}, where
-@var{min} and @var{max} are dimensions in staff space.")
      (tie-configuration ,list? "List of @code{(@var{position} .
 @var{dir})} pairs, indicating the desired tie configuration, where
 @var{position} is the offset from the center of the staff in staff
@@ -926,11 +924,8 @@ in addition to notes and stems.")
 empty in a particular staff, then that staff is erased.")
 
      (left-items ,ly:grob-array? "DOCME")
-     (left-neighbors ,ly:grob-array? "An array of @code{spacing-wishes} grobs
-that are close to the current column.
-
-The closest @code{spacing-wishes} determine the actual distances between the
-columns.")
+     (left-neighbor ,ly:grob? "The right-most column that has a spacing-wish
+for this column.")
 
      (normal-stems ,ly:grob-array? "An array of visible stems.")
      (note-columns ,ly:grob-array? "An array of @code{NoteColumn} grobs.")
@@ -949,7 +944,7 @@ relevant for finding the @code{pure-Y-extent}.")
      (rest-collision ,ly:grob? "A rest collision that a rest is in.")
      (rests ,ly:grob-array? "An array of rest objects.")
      (right-items ,ly:grob-array? "DOCME")
-     (right-neighbors ,ly:grob-array? "See @code{left-neighbors}.")
+     (right-neighbor ,ly:grob? "See @code{left-neighbor}.")
 
      (separation-item ,ly:grob? "A pointer to a @code{SeparationItem}
 object.")
@@ -1007,6 +1002,8 @@ supported by this object.  It is initialized from the @code{meta} field.")
 
      (least-squares-dy ,number? "The ideal beam slope, without damping.")
 
+     (maybe-loose ,boolean? "Used to mark a breakable column that is
+loose if and only if it is in the middle of a line.")
      (meta ,list? "Provide meta information.  It is an alist with the
 entries @code{name} and @code{interfaces}.")
      (minimum-distances ,list? "A list of rods that have the format
@@ -1032,6 +1029,8 @@ Internally used to distribute beam shortening over stems.")
      (skyline-distance ,number? "The distance between this staff and the
 next one, as determined by a skyline algorithm.")
      (stem-info ,pair? "A cache of stem parameters.")
+     (system-Y-offset ,number? "The Y-offset (relative to the bottom of the
+top-margin of the page) of the system to which this staff belongs.")
 
      (use-breve-rest ,boolean? "Use breve rests for measures longer
 than a whole rest.")
index a20dc54cb00403e919a157ecfe554e163c8932e9..3182c54018f6e718f99d2de81f554038f5d3e0ea 100644 (file)
 
     (BarNumber
      . (
+       (after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff)
        ;; want the bar number before the clef at line start.
        (break-align-symbols . (left-edge staff-bar))
 
        (padding . 0.2)
        (positioning-done . ,ly:align-interface::align-to-minimum-distances)
        (stacking-dir . ,DOWN)
-       (threshold . (2 . 1000))
        (Y-extent . ,ly:axis-group-interface::height)
        (meta . ((class . Spanner)
                 (interfaces . (align-interface
        ;; rather long.
 
        (auto-knee-gap . 5.5)
+       (beam-thickness . 0.48) ; in staff-space
 
        ;; We have some unreferenced problems here.
        ;;
        (shorten . ,ly:beam::calc-stem-shorten)
        (stencil . ,ly:beam::print)
 
-       ;; TODO: should be in SLT.
-       (thickness . 0.48) ; in staff-space
-
        (meta . ((class . Spanner)
                 (object-callbacks . ((normal-stems . ,ly:beam::calc-normal-stems)))
                 (interfaces . (beam-interface
        (padding . 0.3)
        (self-alignment-X . ,CENTER)
        (self-alignment-Y . ,CENTER)
-       (stencil . ,ly:system-start-text::print)
-       (X-offset . ,ly:side-position-interface::x-aligned-side)
+       (stencil . ,system-start-text::print)
+       (X-offset . ,system-start-text::calc-x-offset)
+       (Y-offset . ,system-start-text::calc-y-offset)
        (meta . ((class . Spanner)
                 (interfaces . (font-interface
                                self-alignment-interface
 
     (MetronomeMark
      . (
+       (after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff)
        (direction . ,UP)
        (extra-spacing-width . (+inf.0 . -inf.0))
        (outside-staff-priority . 1000)
 
     (RehearsalMark
      . (
+       (after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff)
        (baseline-skip . 2)
        (break-align-symbols . (staff-bar clef))
        (break-visibility . ,end-of-line-invisible)
 
     (VoltaBracketSpanner
      . (
+       (after-line-breaking . ,ly:side-position-interface::move-to-extremal-staff)
        (axes . (,Y))
        (direction . ,UP)
        (no-alignment . ,#t)
-       (outside-staff-priority . 100)
+       (outside-staff-priority . 600)
        (padding . 1)
        (side-axis . ,Y)
        (X-extent . ,ly:axis-group-interface::width)
index 7836da51a150fca38bf2594cc4865739e1d912a0..4058c34c075e563153bb05ab33a57c4e0c913581 100644 (file)
@@ -2595,7 +2595,7 @@ figured bass notation.
 \\markup { \\eyeglasses }
 @end lilypond"
   (interpret-markup layout props
-    (make-with-dimensions-markup '(-0.61 . 3.21) '(0.21 . 2.4)
+    (make-with-dimensions-markup '(-0.61 . 3.22) '(0.2 . 2.41)
       (make-postscript-markup eyeglassesps))))
 
 (define-builtin-markup-command (left-brace layout props size)
index c183fb0de5a463616bafc262d107eceb3131c627..becf51d275784d4d90436e59bf80e52bbd3aad0b 100644 (file)
                  (else
                   (ly:warning (_ "do not know how to embed font ~s ~s ~s")
                               name file-name font))))))
-       
+
   (define (load-fonts paper)
     (let* ((fonts (ly:paper-fonts paper))
 
@@ -509,7 +509,7 @@ fonts inline."
     (display "stroke grestore\n%%Trailer\n%%EOF\n" port)
     (ly:outputter-close outputter)))
 
-(define (clip-systems-to-region basename paper systems region do-pdf)
+(define (clip-systems-to-region basename paper systems region do-pdf do-png)
   (let* ((extents-system-pairs
          (filtered-map (lambda (paper-system)
                          (let* ((x-ext (system-clipped-x-extent
@@ -537,12 +537,17 @@ fonts inline."
                                        (ly:get-option 'include-eps-fonts)
                                        bbox)
         (if do-pdf
-            (postscript->pdf 0 0 (format "~a.eps" filename)))))
+            (postscript->pdf 0 0 (format "~a.eps" filename)))
+        (if do-png
+            (postscript->png (ly:get-option 'resolution) 0 0
+                             (format "~a.eps" filename)))))
      extents-system-pairs)))
 
 (define-public (clip-system-EPSes basename paper-book)
   (define do-pdf
     (member "pdf" (ly:output-formats)))
+  (define do-png
+    (member "png" (ly:output-formats)))
 
   (define (clip-score-systems basename systems)
     (let* ((layout (ly:grob-layout (paper-system-system-grob (car systems))))
@@ -555,7 +560,7 @@ fonts inline."
                  (rhythmic-location->file-string (car region))
                  (rhythmic-location->file-string (cdr region)))
          layout systems region
-         do-pdf))
+         do-pdf do-png))
        regions)))
 
   ;; partition in system lists sharing their layout blocks
index 7c7c7e1045a31a88d4e62da4edfdb7114b32e54b..51a14463021909086fb09aab0260e62733cfdb04 100644 (file)
@@ -1,37 +1,36 @@
-;;;; framework-scm.scm
+;;;; framework-scm.scm -- output full-page stencil expressions
 
-(define-module (scm framework-scm)
-  #:export (output-framework)
-  )
+(define-module (scm framework-scm))
 
-(use-modules (ice-9 regex)
-            (ice-9 string-fun)
-            (guile)
-            (srfi srfi-1)
-            (ice-9 pretty-print)
-            (srfi srfi-13)
-            (scm page)
-            (lily))
+(use-modules
+  (ice-9 regex)
+  (ice-9 string-fun)
+  (guile)
+  (srfi srfi-1)
+  (ice-9 pretty-print)
+  (srfi srfi-13)
+  (scm page)
+  (lily))
 
-(define-public (output-framework basename book scopes fields )
-  (let*
-      ((file (open-output-file (format #f "~a.scm" basename))))
+(define format ergonomic-simple-format)
+
+(define-public (output-framework basename book scopes fields)
+  (let* ((file (open-output-file (format "~a.scm" basename))))
     
     (display ";;Creator: LilyPond\n" file)
     (display ";; raw SCM output\n" file)
-
-  (for-each
-   (lambda (page)
-     (display
-       ";;;;;;;;;;;;;;;;;;;;;;;;;;\n;;;PAGE\n" file)
-;     (pretty-print (ly:stencil-expr page) file)
-     (write (ly:stencil-expr page) file)
-     )
-   (map page-stencil (ly:paper-book-pages book)))))
+    
+    (for-each
+      (lambda (page)
+       (display ";;;;;;;;;;;;;;;;;;;;;;;;;;\n;;;PAGE\n" file)
+       ;; The following two lines are alternates
+       ;(pretty-print (ly:stencil-expr page) file)
+       (write (ly:stencil-expr page) file)
+       )
+      (map page-stencil (ly:paper-book-pages book)))))
 
 (define-public output-classic-framework output-framework)
 
-
 (define-public (convert-to-ps . args) #t)
 (define-public (convert-to-pdf . args) #t)
 (define-public (convert-to-png . args) #t)
index 3d03aa6e30338b587c296dd9e54941eb311dac11..1868057b25fcf4cf6309fceb6051ba834098da2c 100644 (file)
@@ -1,85 +1,81 @@
-;;
-;; framework-svg.scm -- structure for SVG output
+;;;; framework-svg.scm -- structure for SVG output
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
+;;;;
 ;;;; (c) 2004--2009 Jan Nieuwenhuizen <janneke@gnu.org>
+;;;;                Patrick McCarty <pnorcks@gmail.com>
 
-(define-module (scm framework-svg))
+;;;; Recommendations:
+;;;; http://www.w3.org/TR/SVG11/
+;;;; http://www.w3.org/TR/SVGTiny12/
+;;;;
+;;;; Working draft:
+;;;; http://www.w3.org/TR/SVGPrint/ -- for <pageSet> and <page>
 
-(use-modules (guile)
-            (lily)
-            (scm page)
-            (scm output-svg))
+;;;; TODO:
+;;;; * Once <pageSet> and <page> are supported by Inkscape and
+;;;;   other user agents, add a -d option (-dsvg-multiple-page)
+;;;;   that will create a single SVG file containing all pages
+;;;;   of output.  --pmccarty
 
-(use-modules (srfi srfi-1)
-            (srfi srfi-2)
-            (srfi srfi-13)
-            (ice-9 regex))
+(define-module (scm framework-svg))
+
+(use-modules
+  (guile)
+  (lily)
+  (scm page)
+  (scm output-svg)
+  (srfi srfi-1)
+  (srfi srfi-2)
+  (srfi srfi-13)
+  (ice-9 regex))
 
 (define format ergonomic-simple-format)
 
-(define-public (output-framework basename book scopes fields)
-  (let* ((filename (format "~a.svg" basename))
-        (outputter  (ly:make-paper-outputter (open-file filename "wb")
-                                             (ly:get-option 'backend)))
+(define (svg-header paper unit-length)
+  (let* ((lookup (lambda (x) (ly:output-def-lookup paper x)))
+        (output-scale (* lily-unit->mm-factor unit-length))
+        (paper-width (lookup 'paper-width))
+        (paper-height (lookup 'paper-height))
+        (page-width (* output-scale paper-width))
+        (page-height (* output-scale paper-height)))
+
+    `((xmlns . "http://www.w3.org/2000/svg")
+      (xmlns:xlink . "http://www.w3.org/1999/xlink")
+      (version . "1.2")
+      (width . ,(ly:format "~2fmm" page-width))
+      (height . ,(ly:format "~2fmm" page-height))
+      (viewBox . ,(ly:format "0 0 ~4f ~4f"
+                            paper-width paper-height)))))
+
+(define (dump-page paper filename page page-number page-count)
+  (let* ((outputter (ly:make-paper-outputter (open-file filename "wb") 'svg))
         (dump (lambda (str) (display str (ly:outputter-port outputter))))
-        (paper (ly:paper-book-paper book))
-        (unit-length (ly:output-def-lookup paper 'output-scale))
-        (output-scale (* lily-unit->mm-factor
-                         unit-length))
+        (unit-length (ly:output-def-lookup paper 'output-scale)))
+
+    (dump (apply eo 'svg (svg-header paper unit-length)))
+    (dump (comment (format "Page: ~S/~S" page-number page-count)))
+    (ly:outputter-output-scheme outputter
+                               `(begin (set! lily-unit-length ,unit-length)
+                                       ""))
+    (ly:outputter-dump-stencil outputter page)
+    (dump (ec 'svg))
+    (ly:outputter-close outputter)))
+
+(define (output-framework basename book scopes fields)
+  (let* ((paper (ly:paper-book-paper book))
         (page-stencils (map page-stencil (ly:paper-book-pages book)))
-        (landscape? (eq? (ly:output-def-lookup paper 'landscape) #t))
         (page-number (1- (ly:output-def-lookup paper 'first-page-number)))
         (page-count (length page-stencils))
-        (paper-width (ly:output-def-lookup paper 'paper-width))
-        (paper-height (ly:output-def-lookup paper 'paper-height))
-        (page-width (* output-scale paper-width))
-        (page-height (* output-scale paper-height))
-        (page-set? (or (> page-count 1) landscape?)))
+        (filename "")
+        (file-suffix (lambda (num)
+                       (if (= page-count 1) "" (format "-page-~a" num)))))
 
-    (ly:outputter-output-scheme outputter
-                               `(begin (set! lily-unit-length ,unit-length) ""))
-    (dump (eo 'svg
-             '(xmlns . "http://www.w3.org/2000/svg")
-             '(xmlns:xlink . "http://www.w3.org/1999/xlink")
-             '(version . "1.2")
-             `(width . ,(ly:format "~2fmm" page-width))
-             `(height . ,(ly:format "~2fmm" page-height))
-             `(viewBox . ,(ly:format "0 0 ~4f ~4f"
-                                     paper-width paper-height))))
-    
-    (dump
-     (string-append
-      ;; FIXME: only use pages if there are more than one, pageSet is
-      ;; not supported by all SVG applications yet.
-      (if page-set? (eo 'pageSet) "")))
-    
     (for-each
-     (lambda (page)
-       (set! page-number (1+ page-number))
-       (dump-page outputter page page-number page-count landscape? page-set?))
-     page-stencils)
-    
-    (if page-set? (eo 'pageSet) "")
-    (dump
-     (string-append
-      (if page-set? (ec 'pageSet) "")
-      (ec 'svg)))
-    
-    (ly:outputter-close outputter)
-    ))
-
-(define (dump-page outputter page page-number page-count landscape? page-set?)
-  (define (dump str) (display str (ly:outputter-port outputter)))
-  
-  (dump (comment (format "Page: ~S/~S" page-number page-count)))
-  (if (or landscape? page-set?)
-      (dump
-       (if landscape?
-          (eo 'page '(page-orientation . "270"))
-          (eo 'page))))
-  
-  (ly:outputter-dump-stencil outputter page)
-  (if (or landscape? page-set?)
-      (dump (ec 'page))))
+      (lambda (page)
+       (set! page-number (1+ page-number))
+       (set! filename (format "~a~a.svg"
+                              basename
+                              (file-suffix page-number)))
+       (dump-page paper filename page page-number page-count))
+      page-stencils)))
index e99387864dd8c3dd97783b01771f2a27db2807b2..0834024aa43ccaa71e9016348bbbf588f197050b 100644 (file)
@@ -11,7 +11,7 @@
 . QUANT) pairs, where QUANT is -1 (hang), 0 (center), 1 (sit) or -2/ 2 (inter) 
 
 "
-  (let* ((thick (ly:grob-property beam 'thickness))
+  (let* ((thick (ly:grob-property beam 'beam-thickness))
         (layout (ly:grob-layout beam))
         (lthick (ly:output-def-lookup layout 'line-thickness))
         (staff-thick lthick) ; fixme.
index adb2bdfdc8ccde720798cb57a8d572885a221afc..e7f1d295d81ea98708163f173acf76e0f6067979 100644 (file)
@@ -2,7 +2,7 @@
 ;;;; lily-library.scm -- utilities
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
+;;;;
 ;;;; (c) 1998--2009 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; moments
 
-(define-public ZERO-MOMENT (ly:make-moment 0 1)) 
+(define-public ZERO-MOMENT (ly:make-moment 0 1))
 
 (define-public (moment-min a b)
   (if (ly:moment<? a b) a b))
 
+(define-public (moment<=? a b)
+  (or (equal? a b)
+      (ly:moment<? a b)))
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; arithmetic
 (define-public (average x . lst)
@@ -59,7 +63,7 @@
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; parser <-> output hooks.
-               
+
 (define-public (collect-bookpart-for-book parser book-part)
   "Toplevel book-part handler"
   (define (add-bookpart book-part)
 
 (define-public (scorify-music music parser)
   "Preprocess MUSIC."
-  
+
   (for-each (lambda (func)
              (set! music (func music parser)))
            toplevel-music-functions)
@@ -239,7 +243,7 @@ found."
   (hash-fold (lambda (k v acc) (acons  k v  acc))
             '() t))
 
-;; todo: code dup with C++. 
+;; todo: code dup with C++.
 (define-safe-public (alist->hash-table lst)
   "Convert alist to table"
   (let ((m (make-hash-table (length lst))))
@@ -263,14 +267,14 @@ found."
 
 (define (split-list lst n)
   "Split LST in N equal sized parts"
-  
+
   (define (helper todo acc-vector k)
     (if (null? todo)
        acc-vector
        (begin
          (if (< k 0)
              (set! k (+ n k)))
-           
+
          (vector-set! acc-vector k (cons (car todo) (vector-ref acc-vector k)))
          (helper (cdr todo) acc-vector (1- k)))))
 
@@ -296,7 +300,7 @@ found."
 
 
   (reverse (helper lst '() 1)))
-  
+
 (define-public (list-join lst intermediate)
   "put INTERMEDIATE  between all elts of LST."
 
@@ -314,7 +318,7 @@ found."
 
 
 (define (flatten-list lst)
-  "Unnest LST" 
+  "Unnest LST"
   (if (null? lst)
       '()
       (if (pair? (car lst))
@@ -328,7 +332,7 @@ found."
 (define-public (uniq-list lst)
   "Uniq LST, assuming that it is sorted. Uses equal? for comparisons."
 
-  (reverse! 
+  (reverse!
    (fold (lambda (x acc)
           (if (null? acc)
               (list x)
@@ -363,7 +367,7 @@ found."
 
 (define-public (offset-add a b)
   (cons (+ (car a) (car b))
-       (+ (cdr a) (cdr b)))) 
+       (+ (cdr a) (cdr b))))
 
 (define-public (offset-flip-y o)
   (cons (car o) (- (cdr o))))
@@ -392,6 +396,8 @@ found."
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; intervals
 
+(define-public empty-interval '(+inf.0 . -inf.0))
+
 (define-public (interval-length x)
   "Length of the number-pair X, when an interval"
   (max 0 (- (cdr x) (car x))))
@@ -408,7 +414,7 @@ found."
 
 (define-public (interval-index interval dir)
   "Interpolate INTERVAL between between left (DIR=-1) and right (DIR=+1)"
-  
+
   (* (+  (interval-start interval) (interval-end interval)
         (* dir (- (interval-end interval) (interval-start interval))))
      0.5))
@@ -447,6 +453,10 @@ found."
            (inf? (cdr i))
            (> (car i) (cdr i)))))
 
+(define-public (add-point interval p)
+  (cons (min (interval-start interval) p)
+        (max (interval-end interval) p)))
+
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; string
@@ -455,10 +465,10 @@ found."
   (equal? suffix (substring s
                            (max 0 (- (string-length s) (string-length suffix)))
                            (string-length s))))
-            
+
 (define-public (string-startswith s prefix)
   (equal? prefix (substring s 0 (min (string-length s) (string-length prefix)))))
-            
+
 (define-public (string-encode-integer i)
   (cond
    ((= i  0) "o")
@@ -522,7 +532,7 @@ possibly turned off."
   (fold-right conc #f lst))
 
 (define-public (string-regexp-substitute a b str)
-  (regexp-substitute/global #f a str 'pre b 'post)) 
+  (regexp-substitute/global #f a str 'pre b 'post))
 
 (define (regexp-split str regex)
   (define matches '())
@@ -577,8 +587,8 @@ applied to function @var{getter}.")
   (string<? (symbol->string (car lst)) (symbol->string (car r))))
 
 ;;
-;; don't confuse users with #<procedure .. > syntax. 
-;; 
+;; don't confuse users with #<procedure .. > syntax.
+;;
 (define-public (scm->string val)
   (if (and (procedure? val)
           (symbol? (procedure-name val)))
@@ -633,7 +643,7 @@ applied to function @var{getter}.")
 
 (define-public (version-not-seen-message input-file-name)
   (ly:message
-   "~a:0: ~a ~a" 
+   "~a:0: ~a ~a"
     input-file-name
     (_ "warning:")
     (format #f
@@ -642,7 +652,7 @@ applied to function @var{getter}.")
 
 (define-public (old-relative-not-used-message input-file-name)
   (ly:message
-   "~a:0: ~a ~a" 
+   "~a:0: ~a ~a"
     input-file-name
     (_ "warning:")
     (_ "old relative compatibility not used")))
index 1372a15a526e34cb6009c190d56d69cf231692a8..cc1c3d2e8567bc28fa24381518c9d480fe927848 100644 (file)
@@ -346,8 +346,7 @@ i.e.  this is not an override"
              'pop-first #t))
 
 (define-public (make-grob-property-override grob gprop val)
-  "Make a Music expression that sets GPROP to VAL in GROB. Does a pop first,
-i.e.  this is not an override"
+  "Make a Music expression that overrides GPROP to VAL in GROB."
   (make-music 'OverrideProperty
              'symbol grob
              'grob-property gprop
@@ -388,7 +387,7 @@ i.e.  this is not an override"
                          (Voice Dots font-size -3)
                          (Voice Stem length-fraction 0.8)
                          (Voice Stem no-stem-extend #t)
-                         (Voice Beam thickness 0.384)
+                         (Voice Beam beam-thickness 0.384)
                          (Voice Beam length-fraction 0.8)
                          (Voice Accidental font-size -4)
                          (Voice AccidentalCautionary font-size -4)
@@ -564,7 +563,42 @@ included in .ly file."
   (make-music type
              'span-direction span-dir))
 
-(define-public (set-mus-properties! m alist)
+(define-public (override-head-style heads style)
+  "Override style for @var{heads} to @var{style}."
+  (make-sequential-music
+    (if (pair? heads)
+        (map (lambda (h)
+              (make-grob-property-override h 'style style))
+         heads)
+        (list (make-grob-property-override heads 'style style)))))
+
+(define-public (revert-head-style heads)
+  "Revert style for @var{heads}."
+  (make-sequential-music
+    (if (pair? heads)
+        (map (lambda (h)
+              (make-grob-property-revert h 'style))
+         heads)
+        (list (make-grob-property-revert heads 'style)))))
+
+(define-public (style-note-heads heads style music)
+ "Set @var{style} for all @var{heads} in @var{music}.  Works both
+inside of and outside of chord construct."
+  ;; are we inside a <...>?
+  (if (eq? (ly:music-property music 'name) 'NoteEvent)
+      ;; yes -> use a tweak
+      (begin
+        (set! (ly:music-property music 'tweaks)
+              (acons 'style style (ly:music-property music 'tweaks)))
+        music)
+      ;; not in <...>, so use overrides
+      (make-sequential-music
+        (list
+          (override-head-style heads style)
+          music
+          (revert-head-style heads)))))
+
+ (define-public (set-mus-properties! m alist)
   "Set all of ALIST as properties of M."
   (if (pair? alist)
       (begin
index db1181f740d87e27264992185eca317470ccdd84..444f77df06965be181cb0f660dbef72cb85914b7 100644 (file)
 ;;;; output-lib.scm -- implement Scheme output helper functions
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
+;;;;
 ;;;; (c) 1998--2009 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;; Han-Wen Nienhuys <hanwen@xs4all.nl>
 
 
-
-
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; general
+
 (define-public (grob::has-interface grob iface)
   (memq iface (ly:grob-interfaces grob)))
 
+(define-public (grob::is-live? grob)
+  (pair? (ly:grob-basic-properties grob)))
+
 (define-public (make-stencil-boxer thickness padding callback)
 
   "Return function that adds a box around the grob passed as argument."
   (lambda (grob)
-    
     (box-stencil (callback grob) thickness padding)))
 
 (define-public (make-stencil-circler thickness padding callback)
   "Return function that adds a circle around the grob passed as argument."
-  
+
   (lambda (grob) (circle-stencil (callback grob) thickness padding)))
 
 (define-public (print-circled-text-callback grob)
   (grob-interpret-markup grob (make-circle-markup
-                  (ly:grob-property grob 'text))
-            ))
+                              (ly:grob-property grob 'text))))
 
 (define-public (event-cause grob)
-  (let*
-      ((cause (ly:grob-property  grob 'cause)))
-    
+  (let ((cause (ly:grob-property  grob 'cause)))
+
     (cond
      ((ly:stream-event? cause) cause)
      ((ly:grob? cause) (event-cause cause))
      (else #f))))
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; tablature
-
-;; The TabNoteHead tablatureFormat callback.
-;; Compute the text grob-property
-(define-public (fret-number-tablature-format string
-                                            context event)
-  (let*
-      ((tuning (ly:context-property context 'stringTunings))
-       (pitch (ly:event-property event 'pitch))
-       (is-harmonic (apply
-                    functional-or
-                    (map
-                     (lambda (ev)
-                       (eq? 'harmonic-event (ly:event-property ev 'class)))
-                     (ly:event-property event 'articulations)))))
-
-    
-    (make-whiteout-markup
-     (make-vcenter-markup
-      (format
-       "~a"
-       (- (ly:pitch-semitones pitch)
-         (list-ref tuning
-                   ;; remove 1 because list index starts at 0 and guitar string at 1. 
-                   (- string 1))))))
-    ))
-
-;; The 5-string banjo has got a extra string, the fifth (duh), wich
-;; starts at the fifth fret on the neck. Frets on the fifth string
-;; are referred to relative to the other frets:
-;;   the "first fret" on the fifth string is really the sixth fret
-;;   on the banjo neck.
-;; We solve this by defining a new fret-number-tablature function:
-(define-public (fret-number-tablature-format-banjo string 
-                                            context event)
-  (let*
-      ((tuning (ly:context-property context 'stringTunings))
-       (pitch (ly:event-property event 'pitch))
-       )
-  (make-whiteout-markup
-   (make-vcenter-markup  
-    (let ((fret (- (ly:pitch-semitones pitch) (list-ref tuning (- string 1)))))
-      (number->string (cond
-                      ((and (> fret 0) (= string 5))
-                       (+ fret 5))
-                      (else fret))))))
-  ))
+(define-public (grob-interpret-markup grob text)
+  (let* ((layout (ly:grob-layout grob))
+        (defs (ly:output-def-lookup layout 'text-font-defaults))
+        (props (ly:grob-alist-chain grob defs)))
+
+    (ly:text-interface::interpret-markup layout props text)))
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; note heads
 
-
 (define-public (stem::calc-duration-log grob)
   (ly:duration-log
    (ly:event-property (event-cause grob) 'duration)))
 
 (define-public (note-head::calc-duration-log grob)
-  (min 2 
+  (min 2
        (ly:duration-log
        (ly:event-property (event-cause grob) 'duration))))
 
    (ly:event-property (event-cause grob) 'duration)))
 
 (define-public (dots::calc-staff-position grob)
-  (let*
-      ((head (ly:grob-parent grob Y))
-       (log (ly:grob-property head 'duration-log)))
+  (let* ((head (ly:grob-parent grob Y))
+        (log (ly:grob-property head 'duration-log)))
 
     (cond
      ((or (not (grob::has-interface head 'rest-interface))
-        (not (integer? log))) 0)
+         (not (integer? log))) 0)
      ((= log 7) 4)
      ((> log 4) 3)
      ((= log 0) -1)
      ((= log -1) 1)
      (else 0))))
 
-(define (note-head::calc-tablature-stem-attachment grob)
-  (cons 0.0 1.35))
-
-
-
-;; silly, use alist? 
+;; silly, use alist?
 (define-public (note-head::calc-glyph-name grob)
-  (let*
-      ((style (ly:grob-property grob 'style))
-       (log (min 2 (ly:grob-property grob 'duration-log))))
-    
+  (let ((style (ly:grob-property grob 'style))
+       (log (min 2 (ly:grob-property grob 'duration-log))))
+
     (case style
       ;; "default" style is directly handled in note-head.cc as a
       ;; special case (HW says, mainly for performance reasons).
       ((harmonic) "0harmonic")
       ((harmonic-black) "2harmonic")
       ((harmonic-mixed) (if (<= log 1) "0harmonic"
-                                       "2harmonic"))
-      ((baroque) 
+                           "2harmonic"))
+      ((baroque)
        ;; Oops, I actually would not call this "baroque", but, for
        ;; backwards compatibility to 1.4, this is supposed to take
        ;; brevis, longa and maxima from the neo-mensural font and all
           (string-append (number->string (max 0 log))
                          (symbol->string style)))))))
 
-;; TODO junk completely?
-(define (note-head-style->attachment-coordinates grob axis)
-  "Return pair (X . Y), containing multipliers for the note head
-bounding box, where to attach the stem. e.g.: X==0 means horizontally
-centered, X==1 is at the right, X == -1 is at the left."
-
-  '(1.0 . 0.0))
-
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; bar numbers
-
-(define-public ((every-nth-bar-number-visible n) barnum) (= 0 (modulo barnum n)))
-
-(define-public ((modulo-bar-number-visible n m) barnum) (and (> barnum 1) (= m (modulo barnum n))))
-
-(define-public ((set-bar-number-visibility n) tr)
-  (let* ((bn (ly:context-property tr 'currentBarNumber)))
-    (ly:context-set-property! tr 'barNumberVisibility (modulo-bar-number-visible n (modulo bn n)))))
-
-(define-public (first-bar-number-invisible barnum) (> barnum 1))
-
-(define-public (all-bar-numbers-visible barnum) #t)
-
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; percent repeat counters
-
-(define-public ((every-nth-repeat-count-visible n) count context) (= 0 (modulo count n)))
-
-(define-public (all-repeat-counts-visible count context) #t)
+(define-public (note-head::brew-ez-stencil grob)
+  (let* ((log (ly:grob-property grob 'duration-log))
+        (pitch (ly:event-property (event-cause grob) 'pitch))
+        (pitch-index (ly:pitch-notename pitch))
+        (note-names (ly:grob-property grob 'note-names))
+        (pitch-string (if (vector? note-names)
+                          (vector-ref note-names pitch-index)
+                          (string
+                           (integer->char
+                            (+ (modulo (+ pitch-index 2) 7)
+                               (char->integer #\A))))))
+        (staff-space (ly:staff-symbol-staff-space grob))
+        (line-thickness (ly:staff-symbol-line-thickness grob))
+        (stem (ly:grob-object grob 'stem))
+        (stem-thickness (* (if (ly:grob? stem)
+                               (ly:grob-property stem 'thickness)
+                               1.3)
+                           line-thickness))
+        (radius (/ (+ staff-space line-thickness) 2))
+        (letter (markup #:center-align #:vcenter pitch-string))
+        (filled-circle (markup #:draw-circle radius 0 #t)))
+
+    (grob-interpret-markup
+     grob
+     (if (>= log 2)
+        (make-combine-markup
+         filled-circle
+         (make-with-color-markup white letter))
+        (make-combine-markup
+         (make-combine-markup
+          filled-circle
+          (make-with-color-markup white (make-draw-circle-markup
+                                         (- radius stem-thickness) 0 #t)))
+         letter)))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; break visibility
@@ -207,26 +160,26 @@ centered, X==1 is at the right, X == -1 is at the left."
 (define-public end-of-line-visible     #(#t #f #f))
 (define-public all-invisible           #(#f #f #f))
 
-(define-public spanbar-begin-of-line-invisible
-  #(#t #f #f))
+(define-public spanbar-begin-of-line-invisible #(#t #f #f))
 
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Bar lines.
 
 ;;
-;; How should a  bar line behave at a break? 
+;; How should a  bar line behave at a break?
 (define bar-glyph-alist
   '((":|:" . (":|" . "|:"))
     (":|.|:" . (":|" . "|:"))
     (":|.:" . (":|" . "|:"))
     ("||:" . ("||" . "|:"))
-    ("dashed" . ("dashed" . '())) 
+    ("dashed" . ("dashed" . '()))
     ("|" . ("|" . ()))
     ("||:" . ("||" . "|:"))
     ("|s" . (() . "|"))
     ("|:" . ("|" . "|:"))
     ("|." . ("|." . ()))
-    
+
     ;; hmm... should we end with a bar line here?
     (".|" . ("|" . ".|"))
     (":|" . (":|" . ()))
@@ -239,29 +192,27 @@ centered, X==1 is at the right, X == -1 is at the left."
     ("'" . ("'" . ()))
     ("empty" . (() . ()))
     ("brace" . (() . "brace"))
-    ("bracket" . (() . "bracket")) 
-    ))
+    ("bracket" . (() . "bracket"))))
 
 (define-public (bar-line::calc-glyph-name grob)
-  (let* (
-        (glyph (ly:grob-property grob 'glyph))
+  (let* ((glyph (ly:grob-property grob 'glyph))
         (dir (ly:item-break-dir grob))
         (result (assoc glyph  bar-glyph-alist))
         (glyph-name (if (= dir CENTER)
                         glyph
-                        (if (and result (string? (index-cell (cdr result) dir)))
+                        (if (and result
+                                 (string? (index-cell (cdr result) dir)))
                             (index-cell (cdr result) dir)
-                            #f)))
-        )
+                            #f))))
     glyph-name))
 
 (define-public (bar-line::calc-break-visibility grob)
   (let* ((glyph (ly:grob-property grob 'glyph))
         (result (assoc glyph bar-glyph-alist)))
+
     (if result
        (vector (string? (cadr result)) #t (string? (cddr result)))
-       #(#f #f #f))))
-
+       all-invisible)))
 
 (define-public (shift-right-at-line-begin g)
   "Shift an item to the right, but only at the start of the line."
@@ -277,58 +228,65 @@ centered, X==1 is at the right, X == -1 is at the left."
   (number->string (ly:event-property (event-cause grob) 'denominator)))
 
 (define-public (tuplet-number::calc-fraction-text grob)
-  (let*
-      ((ev (event-cause grob)))
+  (let ((ev (event-cause grob)))
 
-    (format "~a:~a" 
+    (format "~a:~a"
            (ly:event-property ev 'denominator)
            (ly:event-property ev 'numerator))))
 
-
-; a formatter function, which is simply a wrapper around an existing 
-; tuplet formatter function. It takes the value returned by the given
-; function and appends a note of given length. 
+;; a formatter function, which is simply a wrapper around an existing
+;; tuplet formatter function. It takes the value returned by the given
+;; function and appends a note of given length.
 (define-public ((tuplet-number::append-note-wrapper function note) grob)
-  (let* ((txt (if function (function grob) #f)))
-    (if txt 
-      (markup txt #:fontsize -5 #:note note UP)
-      (markup #:fontsize -5 #:note note UP))))
-
-; Print a tuplet denominator with a different number than the one derived from 
-; the actual tuplet fraction
-(define-public ((tuplet-number::non-default-tuplet-denominator-text denominator) grob)
-(number->string (if denominator 
-                    denominator 
-                    (ly:event-property (event-cause grob) 'denominator))))
-
-; Print a tuplet fraction with different numbers than the ones derived from 
-; the actual tuplet fraction
-(define-public ((tuplet-number::non-default-tuplet-fraction-text denominator numerator) grob)
+  (let ((txt (if function (function grob) #f)))
+
+    (if txt
+       (markup txt #:fontsize -5 #:note note UP)
+       (markup #:fontsize -5 #:note note UP))))
+
+;; Print a tuplet denominator with a different number than the one derived from
+;; the actual tuplet fraction
+(define-public ((tuplet-number::non-default-tuplet-denominator-text denominator)
+               grob)
+  (number->string (if denominator
+                     denominator
+                     (ly:event-property (event-cause grob) 'denominator))))
+
+;; Print a tuplet fraction with different numbers than the ones derived from
+;; the actual tuplet fraction
+(define-public ((tuplet-number::non-default-tuplet-fraction-text
+                denominator numerator) grob)
   (let* ((ev (event-cause grob))
          (den (if denominator denominator (ly:event-property ev 'denominator)))
          (num (if numerator numerator (ly:event-property ev 'numerator))))
-     (format "~a:~a" den num)))
 
-; Print a tuplet fraction with note durations appended to the numerator and the 
-; denominator
-(define-public ((tuplet-number::fraction-with-notes denominatornote numeratornote) grob)
+    (format "~a:~a" den num)))
+
+;; Print a tuplet fraction with note durations appended to the numerator and the
+;; denominator
+(define-public ((tuplet-number::fraction-with-notes
+                denominatornote numeratornote) grob)
   (let* ((ev (event-cause grob))
          (denominator (ly:event-property ev 'denominator))
          (numerator (ly:event-property ev 'numerator)))
-    ((tuplet-number::non-default-fraction-with-notes denominator denominatornote numerator numeratornote) grob)))
 
-; Print a tuplet fraction with note durations appended to the numerator and the 
-; denominator
-(define-public ((tuplet-number::non-default-fraction-with-notes denominator denominatornote numerator numeratornote) grob)
+    ((tuplet-number::non-default-fraction-with-notes
+      denominator denominatornote numerator numeratornote) grob)))
+
+;; Print a tuplet fraction with note durations appended to the numerator and the
+;; denominator
+(define-public ((tuplet-number::non-default-fraction-with-notes
+                denominator denominatornote numerator numeratornote) grob)
   (let* ((ev (event-cause grob))
          (den (if denominator denominator (ly:event-property ev 'denominator)))
          (num (if numerator numerator (ly:event-property ev 'numerator))))
-     (make-concat-markup (list 
-          (make-simple-markup (format "~a" den)) 
-          (markup #:fontsize -5 #:note denominatornote UP)
-          (make-simple-markup " : ")
-          (make-simple-markup (format "~a" num)) 
-          (markup #:fontsize -5 #:note numeratornote UP)))))
+
+    (make-concat-markup (list
+                        (make-simple-markup (format "~a" den))
+                        (markup #:fontsize -5 #:note denominatornote UP)
+                        (make-simple-markup " : ")
+                        (make-simple-markup (format "~a" num))
+                        (markup #:fontsize -5 #:note numeratornote UP)))))
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -355,38 +313,39 @@ centered, X==1 is at the right, X == -1 is at the left."
 (define-public darkmagenta '(0.5 0.0 0.5))
 (define-public darkyellow  '(0.5 0.5 0.0))
 
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; key signature
 
-
-(define-public (key-signature-interface::alteration-position step alter c0-position)
+(define-public (key-signature-interface::alteration-position step alter
+                                                            c0-position)
   ;; TODO: memoize - this is mostly constant.
-  
+
   ;; fes, ges, as and bes typeset in lower octave
   (define FLAT_TOP_PITCH 2)
-  
+
   ;; ais and bis typeset in lower octave
   (define SHARP_TOP_PITCH 4)
 
   (if (pair? step)
-      (+ (cdr step) (* (car step) 7)  c0-position)
-      (let*
-         ((from-bottom-pos (modulo (+ 4 49 c0-position)  7))
-          (p step)
-          (c0 (- from-bottom-pos  4)))
-       
+      (+ (cdr step) (* (car step) 7) c0-position)
+      (let* ((from-bottom-pos (modulo (+ 4 49 c0-position) 7))
+            (p step)
+            (c0 (- from-bottom-pos 4)))
+
        (if
-        (or (and (< alter 0) (or (> p FLAT_TOP_PITCH) (> (+ p c0) 4)) (> (+ p c0) 1))
-            (and (> alter 0) (or (> p SHARP_TOP_PITCH) (> (+ p c0) 5)) (> (+ p c0) 2))
-            )
+        (or (and (< alter 0)
+                 (or (> p FLAT_TOP_PITCH) (> (+ p c0) 4)) (> (+ p c0) 1))
+            (and (> alter 0)
+                 (or (> p SHARP_TOP_PITCH) (> (+ p c0) 5)) (> (+ p c0) 2)))
 
-        ;; Typeset below c_position 
+        ;; Typeset below c_position
         (set! p (- p 7)))
 
        ;; Provide for the four cases in which there's a glitch
        ;; it's a hack, but probably not worth
        ;; the effort of finding a nicer solution.
-       ;; --dl. 
+       ;; --dl.
        (cond
         ((and (= c0 2) (= p 3) (> alter 0))
          (set! p (- p 7)))
@@ -404,64 +363,62 @@ centered, X==1 is at the right, X == -1 is at the left."
 ;; accidentals
 
 (define-public (accidental-interface::calc-alteration grob)
-  (ly:pitch-alteration  (ly:event-property (event-cause grob) 'pitch)))
-
+  (ly:pitch-alteration (ly:event-property (event-cause grob) 'pitch)))
 
 (define-public cancellation-glyph-name-alist
   '((0 . "accidentals.natural")))
 
 (define-public standard-alteration-glyph-name-alist
-     '(
-       ;; ordered for optimal performance.
-       (0 . "accidentals.natural")
-       (-1/2 . "accidentals.flat")
-       (1/2 . "accidentals.sharp")
-
-       (1 . "accidentals.doublesharp")
-       (-1 . "accidentals.flatflat")
-       
-       (3/4 . "accidentals.sharp.slashslash.stemstemstem")
-       (1/4 . "accidentals.sharp.slashslash.stem")
-       (-1/4 . "accidentals.mirroredflat")
-       (-3/4 . "accidentals.mirroredflat.flat")
-       ))
+  '(
+    ;; ordered for optimal performance.
+    (0 . "accidentals.natural")
+    (-1/2 . "accidentals.flat")
+    (1/2 . "accidentals.sharp")
+
+    (1 . "accidentals.doublesharp")
+    (-1 . "accidentals.flatflat")
+
+    (3/4 . "accidentals.sharp.slashslash.stemstemstem")
+    (1/4 . "accidentals.sharp.slashslash.stem")
+    (-1/4 . "accidentals.mirroredflat")
+    (-3/4 . "accidentals.mirroredflat.flat")))
 
 ;; FIXME: standard vs default, alteration-FOO vs FOO-alteration
-(define-public alteration-default-glyph-name-alist standard-alteration-glyph-name-alist)
+(define-public alteration-default-glyph-name-alist
+  standard-alteration-glyph-name-alist)
 
 (define-public makam-alteration-glyph-name-alist
-     '((1 . "accidentals.doublesharp")
-       (8/9 . "accidentals.sharp.slashslashslash.stemstem")
-       (5/9 . "accidentals.sharp.slashslashslash.stem")
-       (4/9 . "accidentals.sharp")
-       (1/9 . "accidentals.sharp.slashslash.stem")
-       (0 . "accidentals.natural")
-       (-1/9 . "accidentals.mirroredflat")
-       (-4/9 . "accidentals.flat.slash")
-       (-5/9 . "accidentals.flat")
-       (-8/9 . "accidentals.flat.slashslash")
-       (-1 . "accidentals.flatflat")
-       ))
-  
+  '((1 . "accidentals.doublesharp")
+    (8/9 . "accidentals.sharp.slashslashslash.stemstem")
+    (5/9 . "accidentals.sharp.slashslashslash.stem")
+    (4/9 . "accidentals.sharp")
+    (1/9 . "accidentals.sharp.slashslash.stem")
+    (0 . "accidentals.natural")
+    (-1/9 . "accidentals.mirroredflat")
+    (-4/9 . "accidentals.flat.slash")
+    (-5/9 . "accidentals.flat")
+    (-8/9 . "accidentals.flat.slashslash")
+    (-1 . "accidentals.flatflat")))
+
 (define-public alteration-hufnagel-glyph-name-alist
-   '((-1/2 . "accidentals.hufnagelM1")
-     (0 . "accidentals.vaticana0")
-     (1/2 . "accidentals.mensural1")))
+  '((-1/2 . "accidentals.hufnagelM1")
+    (0 . "accidentals.vaticana0")
+    (1/2 . "accidentals.mensural1")))
 
 (define-public alteration-medicaea-glyph-name-alist
-   '((-1/2 . "accidentals.medicaeaM1")
-     (0 . "accidentals.vaticana0")
-     (1/2 . "accidentals.mensural1")))
+  '((-1/2 . "accidentals.medicaeaM1")
+    (0 . "accidentals.vaticana0")
+    (1/2 . "accidentals.mensural1")))
 
 (define-public alteration-vaticana-glyph-name-alist
-   '((-1/2 . "accidentals.vaticanaM1")
-     (0 . "accidentals.vaticana0")
-     (1/2 . "accidentals.mensural1")))
+  '((-1/2 . "accidentals.vaticanaM1")
+    (0 . "accidentals.vaticana0")
+    (1/2 . "accidentals.mensural1")))
 
 (define-public alteration-mensural-glyph-name-alist
-   '((-1/2 . "accidentals.mensuralM1")
-     (0 . "accidentals.vaticana0")
-     (1/2 . "accidentals.mensural1")))
+  '((-1/2 . "accidentals.mensuralM1")
+    (0 . "accidentals.vaticana0")
+    (1/2 . "accidentals.mensural1")))
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -475,69 +432,58 @@ centered, X==1 is at the right, X == -1 is at the left."
 
     (list lp rp)))
 
-
-(define-public (grob-interpret-markup grob text)
-  (let*
-      ((layout (ly:grob-layout grob))
-       (defs (ly:output-def-lookup layout 'text-font-defaults))
-       (props (ly:grob-alist-chain grob defs)))
-
-    (ly:text-interface::interpret-markup
-     layout props text)))
-
 (define-public (parentheses-item::calc-angled-bracket-stencils grob)
-  (let* (
-        (font (ly:grob-default-font grob))
-        (lp (ly:stencil-aligned-to (ly:stencil-aligned-to (grob-interpret-markup grob (ly:wide-char->utf-8 #x2329))
-                                                          Y CENTER)  X RIGHT))
-        (rp (ly:stencil-aligned-to (ly:stencil-aligned-to (grob-interpret-markup grob (ly:wide-char->utf-8 #x232A))
-                                                          Y CENTER) X LEFT))
-        )
+  (let* ((font (ly:grob-default-font grob))
+        (lp (ly:stencil-aligned-to (ly:stencil-aligned-to
+                                    (grob-interpret-markup
+                                     grob
+                                     (ly:wide-char->utf-8 #x2329))
+                                    Y CENTER)
+                                   X RIGHT))
+        (rp (ly:stencil-aligned-to (ly:stencil-aligned-to
+                                    (grob-interpret-markup
+                                     grob
+                                     (ly:wide-char->utf-8 #x232A))
+                                    Y CENTER)
+                                   X LEFT)))
 
     (list (stencil-whiteout lp)
          (stencil-whiteout rp))))
 
 (define (parenthesize-elements grob . rest)
-  (let*
-      ((refp (if (null? rest)
-                grob
-                (car rest)))
-       (elts (ly:grob-object grob 'elements))
-       (x-ext (ly:relative-group-extent elts refp X))
-       (stencils (ly:grob-property grob 'stencils))
-       (lp (car stencils))
-       (rp (cadr stencils))
-       (padding (ly:grob-property grob 'padding 0.1)))
-    
+  (let* ((refp (if (null? rest)
+                  grob
+                  (car rest)))
+        (elts (ly:grob-object grob 'elements))
+        (x-ext (ly:relative-group-extent elts refp X))
+        (stencils (ly:grob-property grob 'stencils))
+        (lp (car stencils))
+        (rp (cadr stencils))
+        (padding (ly:grob-property grob 'padding 0.1)))
+
     (ly:stencil-add
      (ly:stencil-translate-axis lp (- (car x-ext) padding) X)
-     (ly:stencil-translate-axis rp (+ (cdr x-ext) padding) X))
-  ))
+     (ly:stencil-translate-axis rp (+ (cdr x-ext) padding) X))))
 
 
 (define (parentheses-item::print me)
-  (let*
-      ((elts (ly:grob-object me 'elements))
-       (y-ref (ly:grob-common-refpoint-of-array me elts Y))
-       (x-ref (ly:grob-common-refpoint-of-array me elts X))
-       (stencil (parenthesize-elements me x-ref))
-       (elt-y-ext  (ly:relative-group-extent elts y-ref Y))
-       (y-center (interval-center elt-y-ext)))
+  (let* ((elts (ly:grob-object me 'elements))
+        (y-ref (ly:grob-common-refpoint-of-array me elts Y))
+        (x-ref (ly:grob-common-refpoint-of-array me elts X))
+        (stencil (parenthesize-elements me x-ref))
+        (elt-y-ext (ly:relative-group-extent elts y-ref Y))
+        (y-center (interval-center elt-y-ext)))
 
     (ly:stencil-translate
      stencil
      (cons
-      (-
-       (ly:grob-relative-coordinate me x-ref X))
-      (-
-       y-center
-       (ly:grob-relative-coordinate me y-ref Y))))
-    ))
+      (- (ly:grob-relative-coordinate me x-ref X))
+      (- y-center (ly:grob-relative-coordinate me y-ref Y))))))
 
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
-;; 
+;;
 
 (define-public (chain-grob-member-functions grob value . funcs)
   (for-each
@@ -547,58 +493,61 @@ centered, X==1 is at the right, X == -1 is at the left."
 
   value)
 
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; falls/doits
 
 (define-public (bend::print spanner)
   (define (close  a b)
     (< (abs (- a b)) 0.01))
-  
-  (let*
-      ((delta-y (* 0.5 (ly:grob-property spanner 'delta-position)))
-       (left-span (ly:spanner-bound spanner LEFT))
-       (dots (if (and (grob::has-interface left-span 'note-head-interface)
-                     (ly:grob? (ly:grob-object left-span 'dot)))
-                (ly:grob-object left-span 'dot) #f))
-                
-       (right-span (ly:spanner-bound spanner RIGHT))
-       (thickness (* (ly:grob-property spanner 'thickness)
-                    (ly:output-def-lookup (ly:grob-layout spanner)
-                                          'line-thickness)))
-       (padding (ly:grob-property spanner 'padding 0.5))
-       (common (ly:grob-common-refpoint right-span
-                                       (ly:grob-common-refpoint spanner
-                                                                left-span X)
-                                       X))
-       (common-y (ly:grob-common-refpoint spanner left-span Y))
-       (minimum-length (ly:grob-property spanner 'minimum-length 0.5))
-
-       (left-x (+ padding
-                 (max (interval-end (ly:grob-robust-relative-extent
-                                     left-span common X))
-                       (if (and
-                            dots
-                            (close (ly:grob-relative-coordinate dots common-y Y)
-                                       (ly:grob-relative-coordinate spanner common-y Y)))
-                           (interval-end (ly:grob-robust-relative-extent dots common X))
-                           -10000) ;; TODO: use real infinity constant.
-                       )))
-       (right-x (max (- (interval-start (ly:grob-robust-relative-extent right-span common X))
-                       padding)
-                    (+ left-x minimum-length)))
-       (self-x (ly:grob-relative-coordinate spanner common X))
-       (dx (- right-x left-x))
-       (exp (list 'path thickness 
-                 `(quote
-                   (rmoveto
-                    ,(- left-x self-x) 0
-
-                    rcurveto                
-                    ,(/ dx 3)
-                    0
-                    ,dx ,(* 0.66 delta-y)
-                    ,dx ,delta-y
-                    )))))
+
+  (let* ((delta-y (* 0.5 (ly:grob-property spanner 'delta-position)))
+        (left-span (ly:spanner-bound spanner LEFT))
+        (dots (if (and (grob::has-interface left-span 'note-head-interface)
+                       (ly:grob? (ly:grob-object left-span 'dot)))
+                  (ly:grob-object left-span 'dot) #f))
+
+        (right-span (ly:spanner-bound spanner RIGHT))
+        (thickness (* (ly:grob-property spanner 'thickness)
+                      (ly:output-def-lookup (ly:grob-layout spanner)
+                                            'line-thickness)))
+        (padding (ly:grob-property spanner 'padding 0.5))
+        (common (ly:grob-common-refpoint right-span
+                                         (ly:grob-common-refpoint spanner
+                                                                  left-span X)
+                                         X))
+        (common-y (ly:grob-common-refpoint spanner left-span Y))
+        (minimum-length (ly:grob-property spanner 'minimum-length 0.5))
+
+        (left-x (+ padding
+                   (max
+                    (interval-end (ly:grob-robust-relative-extent
+                                   left-span common X))
+                    (if
+                     (and dots
+                          (close
+                           (ly:grob-relative-coordinate dots common-y Y)
+                           (ly:grob-relative-coordinate spanner common-y Y)))
+                     (interval-end
+                      (ly:grob-robust-relative-extent dots common X))
+                     ;; TODO: use real infinity constant.
+                     -10000))))
+        (right-x (max (- (interval-start
+                          (ly:grob-robust-relative-extent right-span common X))
+                         padding)
+                      (+ left-x minimum-length)))
+        (self-x (ly:grob-relative-coordinate spanner common X))
+        (dx (- right-x left-x))
+        (exp (list 'path thickness
+                   `(quote
+                     (rmoveto
+                      ,(- left-x self-x) 0
+
+                      rcurveto
+                      ,(/ dx 3)
+                      0
+                      ,dx ,(* 0.66 delta-y)
+                      ,dx ,delta-y)))))
 
     (ly:make-stencil
      exp
@@ -606,99 +555,95 @@ centered, X==1 is at the right, X == -1 is at the left."
      (cons (min 0 delta-y)
           (max 0 delta-y)))))
 
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; grace spacing
 
-
 (define-public (grace-spacing::calc-shortest-duration grob)
-  (let*
-     ((cols (ly:grob-object grob 'columns))
-      (get-difference
-       (lambda (idx)
-        (ly:moment-sub (ly:grob-property
-                        (ly:grob-array-ref cols (1+ idx)) 'when)
-                       (ly:grob-property
-                        (ly:grob-array-ref cols idx) 'when))))
-      
-      (moment-min (lambda (x y)
-                   (cond
-                    ((and x y)
-                     (if (ly:moment<? x y)
-                           x
-                           y))
-                    (x x)
-                    (y y)))))
-                    
+  (let* ((cols (ly:grob-object grob 'columns))
+        (get-difference
+         (lambda (idx)
+           (ly:moment-sub (ly:grob-property
+                           (ly:grob-array-ref cols (1+ idx)) 'when)
+                          (ly:grob-property
+                           (ly:grob-array-ref cols idx) 'when))))
+
+        (moment-min (lambda (x y)
+                      (cond
+                       ((and x y)
+                        (if (ly:moment<? x y)
+                            x
+                            y))
+                       (x x)
+                       (y y)))))
+
     (fold moment-min #f (map get-difference
                             (iota (1- (ly:grob-array-length cols)))))))
 
 
-
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; fingering
 
 (define-public (fingering::calc-text grob)
-  (let*
-      ((event (event-cause grob))
-       (digit (ly:event-property event 'digit)))
-    
+  (let* ((event (event-cause grob))
+        (digit (ly:event-property event 'digit)))
+
     (if (> digit 5)
        (ly:input-message (ly:event-property event 'origin)
-                         "Warning: Fingering notation for finger number ~a" digit))
+                         "Warning: Fingering notation for finger number ~a"
+                         digit))
 
-    (number->string digit 10)
-  ))
+    (number->string digit 10)))
 
 (define-public (string-number::calc-text grob)
-  (let*
-      ((digit (ly:event-property (event-cause  grob) 'string-number)))
-    
-    (number->string digit 10)
-  ))
+  (let ((digit (ly:event-property (event-cause grob) 'string-number)))
 
+    (number->string digit 10)))
 
 (define-public (stroke-finger::calc-text grob)
-  (let*
-      ((digit (ly:event-property (event-cause grob) 'digit))
-       (text (ly:event-property (event-cause grob) 'text)))
+  (let* ((digit (ly:event-property (event-cause grob) 'digit))
+        (text (ly:event-property (event-cause grob) 'text)))
 
     (if (string? text)
        text
-       (vector-ref (ly:grob-property grob 'digit-names)  (1- (max (min 5 digit) 1))))))
+       (vector-ref (ly:grob-property grob 'digit-names)
+                   (1- (max (min 5 digit) 1))))))
+
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; dynamics
+
 (define-public (hairpin::calc-grow-direction grob)
   (if (eq? (ly:event-property (event-cause grob) 'class) 'decrescendo-event)
       START
-      STOP
-      ))
+      STOP))
+
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; lyrics
 
 (define-public (lyric-text::print grob)
   "Allow interpretation of tildes as lyric tieing marks."
-  
-  (let*
-      ((text (ly:grob-property grob 'text)))
 
-    (grob-interpret-markup grob 
-              (if (string? text)
-                  (make-tied-lyric-markup text)
-                  text))))
+  (let ((text (ly:grob-property grob 'text)))
+
+    (grob-interpret-markup grob (if (string? text)
+                                   (make-tied-lyric-markup text)
+                                   text))))
 
 (define-public ((grob::calc-property-by-copy prop) grob)
   (ly:event-property (event-cause grob) prop))
 
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; fret boards
 
 (define-public (fret-board::calc-stencil grob)
-    (grob-interpret-markup 
-      grob
-      (make-fret-diagram-verbose-markup
-        (ly:grob-property grob 'dot-placement-list))))
+  (grob-interpret-markup
+   grob
+   (make-fret-diagram-verbose-markup
+    (ly:grob-property grob 'dot-placement-list))))
+
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; scripts
@@ -706,20 +651,118 @@ centered, X==1 is at the right, X == -1 is at the left."
 (define-public (script-interface::calc-x-offset grob)
   (ly:grob-property grob 'positioning-done)
   (let* ((shift (ly:grob-property grob 'toward-stem-shift 0.0))
-        (note-head-location (ly:self-alignment-interface::centered-on-x-parent grob))
+        (note-head-location
+         (ly:self-alignment-interface::centered-on-x-parent grob))
         (note-head-grob (ly:grob-parent grob X))
         (stem-grob (ly:grob-object note-head-grob 'stem)))
+
     (+ note-head-location
-       ;; If the property 'toward-stem-shift is defined and the script has the
-       ;; same direction as the stem, move the script accordingly. Since scripts can
-       ;; also be over skips, we need to check whether the grob has a stem at all.
+       ;; If the property 'toward-stem-shift is defined and the script
+       ;; has the same direction as the stem, move the script accordingly.
+       ;; Since scripts can also be over skips, we need to check whether
+       ;; the grob has a stem at all.
        (if (ly:grob? stem-grob)
           (let ((dir1 (ly:grob-property grob 'direction))
                 (dir2 (ly:grob-property stem-grob 'direction)))
             (if (equal? dir1 dir2)
                 (let* ((common-refp (ly:grob-common-refpoint grob stem-grob X))
-                       (stem-location (ly:grob-relative-coordinate stem-grob common-refp X)))
-                  (* shift (- stem-location
-                              note-head-location)))
+                       (stem-location
+                        (ly:grob-relative-coordinate stem-grob common-refp X)))
+                  (* shift (- stem-location note-head-location)))
                 0.0))
           0.0))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; instrument names
+
+(define-public (system-start-text::print grob)
+  (let* ((left-bound (ly:spanner-bound grob LEFT))
+        (left-mom (ly:grob-property left-bound 'when))
+        (name (if (moment<=? left-mom ZERO-MOMENT)
+                  (ly:grob-property grob 'long-text)
+                  (ly:grob-property grob 'text))))
+
+    (if (and (markup? name)
+            (!= (ly:item-break-dir left-bound) CENTER))
+
+       (grob-interpret-markup grob name)
+       (ly:grob-suicide! grob))))
+
+(define-public (system-start-text::calc-x-offset grob)
+  (let* ((left-bound (ly:spanner-bound grob LEFT))
+        (left-mom (ly:grob-property left-bound 'when))
+        (layout (ly:grob-layout grob))
+        (indent (ly:output-def-lookup layout
+                                      (if (moment<=? left-mom ZERO-MOMENT)
+                                          'indent
+                                          'short-indent)
+                                      0.0))
+        (system (ly:grob-system grob))
+        (my-extent (ly:grob-extent grob system X))
+        (elements (ly:grob-object system 'elements))
+        (common (ly:grob-common-refpoint-of-array system elements X))
+        (total-ext empty-interval)
+        (align-x (ly:grob-property grob 'self-alignment-X 0))
+        (padding (min 0 (- (interval-length my-extent) indent)))
+        (right-padding (- padding
+                          (/ (* padding (1+ align-x)) 2))))
+
+    ;; compensate for the variation in delimiter extents by
+    ;; calculating an X-offset correction based on united extents
+    ;; of all delimiters in this system
+    (let unite-delims ((l (ly:grob-array-length elements)))
+      (if (> l 0)
+         (let ((elt (ly:grob-array-ref elements (1- l))))
+
+           (if (grob::has-interface elt 'system-start-delimiter-interface)
+               (let ((dims (ly:grob-extent elt common X)))
+                 (if (interval-sane? dims)
+                     (set! total-ext (interval-union total-ext dims)))))
+           (unite-delims (1- l)))))
+
+    (+
+     (ly:side-position-interface::x-aligned-side grob)
+     right-padding
+     (- (interval-length total-ext)))))
+
+(define-public (system-start-text::calc-y-offset grob)
+
+  (define (live-elements-list me)
+    (let* ((elements (ly:grob-object me 'elements))
+          (elts-length (ly:grob-array-length elements))
+          (live-elements '()))
+
+      (let get-live ((len elts-length))
+       (if (> len 0)
+           (let ((elt (ly:grob-array-ref elements (1- len))))
+
+             (if (grob::is-live? elt)
+                 (set! live-elements (cons elt live-elements)))
+             (get-live (1- len)))))
+      live-elements))
+
+  (let* ((left-bound (ly:spanner-bound grob LEFT))
+        (live-elts (live-elements-list grob))
+        (system (ly:grob-system grob))
+        (extent empty-interval))
+
+    (if (and (pair? live-elts)
+            (interval-sane? (ly:grob-extent grob system Y)))
+       (let get-extent ((lst live-elts))
+         (if (pair? lst)
+             (let ((axis-group (car lst)))
+
+               (if (and (ly:spanner? axis-group)
+                        (equal? (ly:spanner-bound axis-group LEFT)
+                                left-bound))
+                   (set! extent (add-point extent
+                                           (ly:grob-relative-coordinate
+                                            axis-group system Y))))
+               (get-extent (cdr lst)))))
+       ;; no live axis group(s) for this instrument name -> remove from system
+       (ly:grob-suicide! grob))
+
+    (+
+     (ly:self-alignment-interface::y-aligned-on-self grob)
+     (interval-center extent))))
index c916067bdfa38986141752fb193873d6af62e54f..0d5dda4e95e19d43cf118f8225b99b40ced64459 100644 (file)
@@ -5,14 +5,6 @@
 ;;;; (c) 2002--2009 Jan Nieuwenhuizen <janneke@gnu.org>
 ;;;;                Patrick McCarty <pnorcks@gmail.com>
 
-;;;; Recommendations:
-;;;; http://www.w3.org/TR/SVG11/
-;;;; http://www.w3.org/TR/SVGTiny12/
-;;;; http://www.w3.org/TR/SVGPrint/ -- page, pageSet in draft
-
-;;;; TODO:
-;;;;  * inkscape page/pageSet support
-
 (define-module (scm output-svg))
 (define this-module (current-module))
 
 
 (define (dispatch expr)
   (let ((keyword (car expr)))
-    (cond
-     ((eq? keyword 'some-func) "")
-     (else
-      (if (module-defined? this-module keyword)
-         (apply (eval keyword this-module) (cdr expr))
-         (begin
-           (ly:warning (_ "undefined: ~S") keyword)
-           ""))))))
+    (cond ((eq? keyword 'some-func) "")
+         (else (if (module-defined? this-module keyword)
+                   (apply (eval keyword this-module) (cdr expr))
+                   (begin (ly:warning (_ "undefined: ~S") keyword)
+                          ""))))))
 
 ;; Helper functions
 (define-public (attributes attributes-alist)
   (define alist '())
   (define (set-attribute attr val)
     (set! alist (assoc-set! alist attr val)))
-  (let*
-    ((match-1 (regexp-exec pango-description-regexp-comma str))
-     (match-2 (regexp-exec pango-description-regexp-nocomma str))
-     (match (if match-1
-               match-1
-               match-2)))
+  (let* ((match-1 (regexp-exec pango-description-regexp-comma str))
+        (match-2 (regexp-exec pango-description-regexp-nocomma str))
+        (match (if match-1 match-1 match-2)))
 
     (if (regexp-match? match)
        (begin
 
 (define (circle radius thick is-filled)
   (entity
-   'circle ""
-   '(stroke-linejoin . "round")
-   '(stroke-linecap . "round")
-   `(fill . ,(if is-filled "currentColor" "none"))
-   `(stroke . "currentColor")
-   `(stroke-width . ,thick)
-   `(r . ,radius)))
+    'circle ""
+    '(stroke-linejoin . "round")
+    '(stroke-linecap . "round")
+    `(fill . ,(if is-filled "currentColor" "none"))
+    `(stroke . "currentColor")
+    `(stroke-width . ,thick)
+    `(r . ,radius)))
 
 (define (dashed-line thick on off dx dy phase)
   (draw-line thick 0 0 dx dy
 (define (draw-line thick x1 y1 x2 y2 . alist)
   (apply entity 'line ""
         (append
-         `((stroke-linejoin . "round")
-           (stroke-linecap . "round")
-           (stroke-width . ,thick)
-           (stroke . "currentColor")
-           (x1 . ,x1)
-           (y1 . ,(- y1))
-           (x2 . ,x2)
-           (y2 . ,(- y2)))
-         alist)))
+          `((stroke-linejoin . "round")
+            (stroke-linecap . "round")
+            (stroke-width . ,thick)
+            (stroke . "currentColor")
+            (x1 . ,x1)
+            (y1 . ,(- y1))
+            (x2 . ,x2)
+            (y2 . ,(- y2)))
+          alist)))
 
 (define (ellipse x-radius y-radius thick is-filled)
   (entity
-   'ellipse ""
-   '(stroke-linejoin . "round")
-   '(stroke-linecap . "round")
-   `(fill . ,(if is-filled "currentColor" "none"))
-   `(stroke . "currentColor")
-   `(stroke-width . ,thick)
-   `(rx . ,x-radius)
-   `(ry . ,y-radius)))
+    'ellipse ""
+    '(stroke-linejoin . "round")
+    '(stroke-linecap . "round")
+    `(fill . ,(if is-filled "currentColor" "none"))
+    `(stroke . "currentColor")
+    `(stroke-width . ,thick)
+    `(rx . ,x-radius)
+    `(ry . ,y-radius)))
 
 (define (embedded-svg string)
   string)
 
 (define (oval x-radius y-radius thick is-filled)
   (let ((x-max x-radius)
-        (x-min (- x-radius))
-        (y-max y-radius)
-        (y-min (- y-radius)))
+       (x-min (- x-radius))
+       (y-max y-radius)
+       (y-min (- y-radius)))
     (entity
-     'path ""
-     '(stroke-linejoin . "round")
-     '(stroke-linecap . "round")
-     `(fill . ,(if is-filled "currentColor" "none"))
-     `(stroke . "currentColor")
-     `(stroke-width . ,thick)
-     `(d . ,(ly:format "M~4f ~4fC~4f ~4f ~4f ~4f ~4f ~4fS~4f ~4f ~4f ~4fz"
-               x-max 0
-               x-max y-max
-               x-min y-max
-               x-min 0
-               x-max y-min
-               x-max 0)))))
+      'path ""
+      '(stroke-linejoin . "round")
+      '(stroke-linecap . "round")
+      `(fill . ,(if is-filled "currentColor" "none"))
+      `(stroke . "currentColor")
+      `(stroke-width . ,thick)
+      `(d . ,(ly:format "M~4f ~4fC~4f ~4f ~4f ~4f ~4f ~4fS~4f ~4f ~4f ~4fz"
+                       x-max 0
+                       x-max y-max
+                       x-min y-max
+                       x-min 0
+                       x-max y-min
+                       x-max 0)))))
 
 (define (path thick commands)
   (define (convert-path-exps exps)
                                  (closepath . z))
                                "")))
 
-         (cons (format "~a~a"
-                       svg-head (number-list->point args))
+         (cons (format "~a~a" svg-head (number-list->point args))
                (convert-path-exps (drop rest arity))))
        '()))
 
 
 (define (polygon coords blot-diameter is-filled)
   (entity
-   'polygon ""
-   '(stroke-linejoin . "round")
-   '(stroke-linecap . "round")
-   `(stroke-width . ,blot-diameter)
-   `(fill . ,(if is-filled "currentColor" "none"))
-   '(stroke . "currentColor")
-   `(points . ,(string-join
-               (map offset->point (ly:list->offsets '() coords))))))
+    'polygon ""
+    '(stroke-linejoin . "round")
+    '(stroke-linecap . "round")
+    `(stroke-width . ,blot-diameter)
+    `(fill . ,(if is-filled "currentColor" "none"))
+    '(stroke . "currentColor")
+    `(points . ,(string-join
+                 (map offset->point (ly:list->offsets '() coords))))))
 
 (define (repeat-slash width slope thickness)
   (define (euclidean-length x y)
   "</g>\n")
 
 (define (round-filled-box breapth width depth height blot-diameter)
-  (entity 'rect ""
-         ;; The stroke will stick out.  To use stroke,
-         ;; the stroke-width must be subtracted from all other dimensions.
-         ;;'(stroke-linejoin . "round")
-         ;;'(stroke-linecap . "round")
-         ;;`(stroke-width . ,blot)
-         ;;'(stroke . "red")
-         ;;'(fill . "orange")
-
-         `(x . ,(- breapth))
-         `(y . ,(- height))
-         `(width . ,(+ breapth width))
-         `(height . ,(+ depth height))
-         `(ry . ,(/ blot-diameter 2))
-         '(fill . "currentColor")))
+  (entity
+    'rect ""
+    ;; The stroke will stick out.  To use stroke,
+    ;; the stroke-width must be subtracted from all other dimensions.
+    ;;'(stroke-linejoin . "round")
+    ;;'(stroke-linecap . "round")
+    ;;`(stroke-width . ,blot)
+    ;;'(stroke . "red")
+    ;;'(fill . "orange")
+
+    `(x . ,(- breapth))
+    `(y . ,(- height))
+    `(width . ,(+ breapth width))
+    `(height . ,(+ depth height))
+    `(ry . ,(/ blot-diameter 2))
+    '(fill . "currentColor")))
 
 (define (setcolor r g b)
   (format "<g color=\"rgb(~a%, ~a%, ~a%)\">\n"
index 3d897c1465919af7bdd1359334460978d4eba690..ca4e0d8659ddeba0b1f2bcb26cb05aab2f9303bd 100644 (file)
@@ -88,8 +88,8 @@
 (define (annotate-top-space first-system layout header-stencil stencil)
   (let* ((top-margin (ly:output-def-lookup layout 'top-margin))
         (sym (if (paper-system-title? first-system)
-                 'first-system-title-spacing
-                 'first-system-spacing))
+                 'top-title-spacing
+                 'top-system-spacing))
         (spacing-spec (ly:output-def-lookup layout sym))
         (X-offset (ly:prob-property first-system 'X-offset 5))
         (header-extent (ly:stencil-extent header-stencil Y)))
                                                       system-separator-markup)
                                     #f))
        
-       (head-height (if (ly:stencil? (prop 'head-stencil))
-                       (interval-length (ly:stencil-extent (prop 'head-stencil) Y))
-                       0.0))
-
        (page-stencil (ly:make-stencil '()))
 
        (last-system #f)
         (ly:stencil? head)
         (not (ly:stencil-empty? head)))
        (begin
+         ;; Ensure that the top of the header just touches the top margin.
          (set! head (ly:stencil-translate-axis head
-                                               (- 0 head-height (prop 'top-margin)) Y))
+                                               (- 0 (cdr (ly:stencil-extent head Y)) (prop 'top-margin)) Y))
          (set! page-stencil (ly:stencil-add page-stencil head))))
 
     (if (and
index a4625c1e926aac6c0bf9169b66ddeb2ac051db41..1793003de29f8dfb50eb7a015814910e765fd829 100644 (file)
    ly:multi-measure-rest::print
    ly:multi-measure-rest::set-spacing-rods
    ly:note-head::print
-;;   ly:note-head::brew-ez-stencil
    ly:ottava-bracket::print
    ly:paper-column::print
    ly:percent-repeat-item-interface::beat-slash
index 3d92e76d6560bbc2f46ab0bf2b7ad26f8ba3e688..d28f2fc4831c84048de4771db531d07d838e1532 100644 (file)
 ;; which will ignore 'style = 'do
 (define-public (tab-note-head::calc-glyph-name grob)
   (let ((style (ly:grob-property grob 'style)))
-   (case style
+
+    (case style
       ((cross) "2cross"))))
 
 ;; ensure we only call notehead callback when
 ;; 'style = 'cross
 (define-public (tab-note-head::whiteout-if-style-set grob)
   (let ((style (ly:grob-property grob 'style)))
-       (if (and (symbol? style)
-                (eq? style 'cross))
-           (stencil-whiteout (ly:note-head::print grob))
-           (ly:text-interface::print grob))))
+
+    (if (and (symbol? style)
+             (eq? style 'cross))
+        (stencil-whiteout (ly:note-head::print grob))
+        (ly:text-interface::print grob))))
 
 ;; definitions for the "moderntab" clef:
 ;; the "moderntab" clef will be added to the list of known clefs,
@@ -51,7 +53,8 @@
 (add-new-clef "moderntab" "markup.moderntab" 0 0 0)
 
 ;; define sans serif-style tab-Clefs as a markup:
-(define-builtin-markup-command (customTabClef layout props num-strings staff-space)
+(define-builtin-markup-command (customTabClef
+                                layout props num-strings staff-space)
   (integer? number?)
   music
   ()
          (font-size (- (* num-strings 1.5 scale-factor) 7))
          (base-skip (* (square (+ (* num-strings 0.195) 0.4)) scale-factor)))
 
-        (interpret-markup layout props
-           (markup #:vcenter #:bold
-                   #:override (cons 'font-family 'sans)
-                   #:fontsize font-size
-                   #:override (cons 'baseline-skip base-skip)
-                   #:left-align #:center-column ("T" "A" "B")))))
+    (interpret-markup layout props
+                      (markup #:vcenter #:bold
+                              #:override (cons 'font-family 'sans)
+                              #:fontsize font-size
+                              #:override (cons 'baseline-skip base-skip)
+                              #:left-align #:center-column ("T" "A" "B")))))
 
 ;; this function decides which clef to take
 (define-public (clef::print-modern-tab-if-set grob)
   (let ((glyph (ly:grob-property grob 'glyph)))
-       ;; which clef is wanted?
-       (if (string=? glyph "markup.moderntab")
-           ;; if it is "moderntab", we'll draw it
-           (let* ((staff-symbol (ly:grob-object grob 'staff-symbol))
-                  (line-count   (ly:grob-property staff-symbol 'line-count))
-                  (staff-space  (ly:grob-property staff-symbol 'staff-space 1)))
-                 (grob-interpret-markup grob (make-customTabClef-markup line-count staff-space)))
-           ;; otherwise, we simply use the default printing routine
-           (ly:clef::print grob))))
+
+    ;; which clef is wanted?
+    (if (string=? glyph "markup.moderntab")
+        ;; if it is "moderntab", we'll draw it
+        (let* ((staff-symbol (ly:grob-object grob 'staff-symbol))
+               (line-count (ly:grob-property staff-symbol 'line-count))
+               (staff-space (ly:staff-symbol-staff-space grob)))
+
+          (grob-interpret-markup grob (make-customTabClef-markup line-count
+                                                                 staff-space)))
+        ;; otherwise, we simply use the default printing routine
+        (ly:clef::print grob))))
 
 ;; if stems are drawn, it is nice to have a double stem for
 ;; (dotted) half notes to distinguish them from quarter notes:
 (define-public (tabvoice::draw-double-stem-for-half-notes grob)
   (let ((stem (ly:stem::print grob)))
 
-       ;; is the note a (dotted) half note?
-       (if (= 1 (ly:grob-property grob 'duration-log))
-           ;; yes -> draw double stem
-           (ly:stencil-combine-at-edge stem X RIGHT stem 0.5)
-           ;; no -> draw simple stem
-           stem)))
+    ;; is the note a (dotted) half note?
+    (if (= 1 (ly:grob-property grob 'duration-log))
+        ;; yes -> draw double stem
+        (ly:stencil-combine-at-edge stem X RIGHT stem 0.5)
+        ;; no -> draw simple stem
+        stem)))
 
 ;; as default, the glissando line between fret numbers goes
 ;; upwards, here we have a function to correct this behavior:
 
     (if (< (ly:pitch-semitones right-pitch) (ly:pitch-semitones left-pitch))
         -0.75
-         0.75)))
+        0.75)))
 
 ;; for ties in tablature, fret numbers that are tied to should be invisible,
 ;; except for 'tied to' numbers after a line break;; these will be
   ;; in accidental.cc, converted to Scheme
   (let* ((font (ly:grob-default-font grob))
          (open (stencil-whiteout
-                 (ly:font-get-glyph font "accidentals.leftparen")))
+                (ly:font-get-glyph font "accidentals.leftparen")))
          (close (stencil-whiteout
-                  (ly:font-get-glyph font "accidentals.rightparen")))
+                 (ly:font-get-glyph font "accidentals.rightparen")))
          (me (ly:text-interface::print grob)))
-        (ly:stencil-combine-at-edge
-         (ly:stencil-combine-at-edge
-          me
-          X
-          LEFT
-          open)
-         X
-         RIGHT
-         close)))
+
+    (ly:stencil-combine-at-edge
+     (ly:stencil-combine-at-edge me X LEFT open) X RIGHT close)))
 
 ;; ParenthesesItem doesn't work very well for TabNoteHead, since
 ;; the parentheses are too small and clash with the staff-lines
 ;; Define a callback for the 'stencils property which will tweak
 ;; the parentheses' appearance for TabNoteHead
 (define-public (parentheses-item::calc-tabstaff-parenthesis-stencils grob)
-   ;; the grob we want to parenthesize
-   (let ((victim (ly:grob-array-ref (ly:grob-object grob 'elements) 0)))
-     ;; check whether it's a notehead
-     (if (grob::has-interface victim 'note-head-interface)
-         (begin
-           ;; tweak appearance before retrieving
-           ;; list of stencils '(left-paren right-paren)
-           ;; get the font-size from victim (=TabNoteHead) to handle
-           ;; grace notes properly
-           (ly:grob-set-property! grob 'font-size
-                                  (ly:grob-property victim 'font-size))
-           (ly:grob-set-property! grob 'padding 0)
-           ;; apply whiteout to each element of the list
-           (map stencil-whiteout
-                (parentheses-item::calc-parenthesis-stencils grob)))
-         (parentheses-item::calc-parenthesis-stencils grob))))
+  ;; the grob we want to parenthesize
+  (let ((victim (ly:grob-array-ref (ly:grob-object grob 'elements) 0)))
+
+    ;; check whether it's a note head
+    (if (grob::has-interface victim 'note-head-interface)
+        (begin
+          ;; tweak appearance before retrieving
+          ;; list of stencils '(left-paren right-paren)
+          ;; get the font-size from victim (=TabNoteHead) to handle
+          ;; grace notes properly
+          (ly:grob-set-property! grob 'font-size
+                                 (ly:grob-property victim 'font-size))
+          (ly:grob-set-property! grob 'padding 0)
+          ;; apply whiteout to each element of the list
+          (map stencil-whiteout
+               (parentheses-item::calc-parenthesis-stencils grob)))
+        (parentheses-item::calc-parenthesis-stencils grob))))
 
 ;; the handler for ties in tablature;; split ties yield in a parenthesized
 ;; fret number, otherwise the fret number will be invisible.
 (define-public (tie::handle-tab-tie grob)
-   (let* ((original (ly:grob-original grob))
-          (tied-tab-note-head (ly:spanner-bound grob RIGHT))
-          (siblings (if (ly:grob? original)
-                        (ly:spanner-broken-into original) '())))
+  (let* ((original (ly:grob-original grob))
+         (tied-tab-note-head (ly:spanner-bound grob RIGHT))
+         (siblings (if (ly:grob? original)
+                       (ly:spanner-broken-into original) '())))
 
-     (if (and (>= (length siblings) 2)
-              (eq? (car (last-pair siblings)) grob))
-         ;; tie is split -> parenthesize
-         (ly:grob-set-property! tied-tab-note-head 'stencil
-                                (lambda (grob) (parenthesize-tab-note-head grob)))
+    (if (and (>= (length siblings) 2)
+             (eq? (car (last-pair siblings)) grob))
+        ;; tie is split -> parenthesize
+        (ly:grob-set-property! tied-tab-note-head 'stencil
+                               (lambda (grob)
+                                 (parenthesize-tab-note-head grob)))
 
-         ;; tie is not split -> make fret number invisible
-         (ly:grob-set-property! tied-tab-note-head 'transparent #t))))
+        ;; tie is not split -> make fret number invisible
+        (ly:grob-set-property! tied-tab-note-head 'transparent #t))))
 
 ;; repeat ties occur within alternatives in a repeat construct;
 ;; the correspondig fret numbers are shown in parentheses:
 (define-public (repeat-tie::parenthesize-tab-note-head grob)
   (let ((tied-tab-note-head (ly:grob-object grob 'note-head)))
 
-        (ly:grob-set-property! tied-tab-note-head 'stencil
-                               (lambda (grob) (parenthesize-tab-note-head grob)))))
\ No newline at end of file
+    (ly:grob-set-property! tied-tab-note-head 'stencil
+                           (lambda (grob) (parenthesize-tab-note-head grob)))))
index eefa9c0806a3b18088219b88cf413e7bccf45e5f..fb8ccac3c5b1dde2bfd8d812659144391005a9c2 100644 (file)
@@ -5,7 +5,10 @@
 ;;;; (c) 1998--2009 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                Jan Nieuwenhuizen <janneke@gnu.org>
 
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; metronome marks
+
 (define-public (format-metronome-markup text dur count context)
   (let* ((hide-note (eq? #t (ly:context-property context 'tempoHideNote))))
     (metronome-markup text dur count hide-note)))
@@ -80,7 +83,6 @@
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; Bass figures.
-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 (define-public (format-bass-figure figure event context)
   (let* ((fig (ly:event-property event 'figure))
 
     ))
 
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; fret diagrams
 
    (sort notes note-pitch>?))
 
   string-fret-fingering-tuples)
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; tablature
+
+;; The TabNoteHead tablatureFormat callback.
+;; Compute the text grob-property
+(define-public (fret-number-tablature-format string context event)
+  (let* ((tuning (ly:context-property context 'stringTunings))
+        (pitch (ly:event-property event 'pitch))
+        (is-harmonic (apply
+                      functional-or
+                      (map
+                       (lambda (ev)
+                         (eq? 'harmonic-event (ly:event-property ev 'class)))
+                       (ly:event-property event 'articulations)))))
+
+    (make-whiteout-markup
+     (make-vcenter-markup
+      (format
+       "~a"
+       (- (ly:pitch-semitones pitch)
+         (list-ref tuning
+                   ;; remove 1 because list index starts at 0
+                   ;;and guitar string at 1.
+                   (1- string))))))))
+
+;; The 5-string banjo has got a extra string, the fifth (duh), which
+;; starts at the fifth fret on the neck.  Frets on the fifth string
+;; are referred to relative to the other frets:
+;;   the "first fret" on the fifth string is really the sixth fret
+;;   on the banjo neck.
+;; We solve this by defining a new fret-number-tablature function:
+(define-public (fret-number-tablature-format-banjo string context event)
+  (let* ((tuning (ly:context-property context 'stringTunings))
+        (pitch (ly:event-property event 'pitch)))
+
+    (make-whiteout-markup
+     (make-vcenter-markup
+      (let ((fret (- (ly:pitch-semitones pitch) (list-ref tuning (1- string)))))
+       (number->string (cond
+                        ((and (> fret 0) (= string 5))
+                         (+ fret 5))
+                        (else fret))))))))
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; bar numbers
+
+(define-public ((every-nth-bar-number-visible n) barnum)
+  (= 0 (modulo barnum n)))
+
+(define-public ((modulo-bar-number-visible n m) barnum)
+  (and (> barnum 1) (= m (modulo barnum n))))
+
+(define-public ((set-bar-number-visibility n) tr)
+  (let ((bn (ly:context-property tr 'currentBarNumber)))
+    (ly:context-set-property! tr 'barNumberVisibility
+                             (modulo-bar-number-visible n (modulo bn n)))))
+
+(define-public (first-bar-number-invisible barnum) (> barnum 1))
+
+(define-public (all-bar-numbers-visible barnum) #t)
+
+
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; percent repeat counters
+
+(define-public ((every-nth-repeat-count-visible n) count context)
+  (= 0 (modulo count n)))
+
+(define-public (all-repeat-counts-visible count context) #t)
index dff7e334f1ccc45d9e2ab039ef8b222ef8443a48..cf046dddf6a6a0bc7f2bae20a9cb823919d8a4af 100755 (executable)
@@ -144,7 +144,7 @@ else:
 
 
 ref_re = re.compile \
-    ('@(ref|ruser|rlearning|rprogram|rglos)(?:\\{(?P<ref>[^,\\\\\\}]+?)|\
+    ('@((?:ressay|rgloss|rinternals|rlearning|rslr|rprogram|ruser|ref)|named)(?:\\{(?P<ref>[^,\\\\\\}]+?)|\
 named\\{(?P<refname>[^,\\\\]+?),(?P<display>[^,\\\\\\}]+?))\\}(?P<last>.)',
      re.DOTALL)
 node_include_re = re.compile (r'(?m)^@(node|include)\s+(.+?)$')
index b2729489bb964888d8de941653670496c064b864..870a10e97f9fa504fb970f11e97dca49d671af47 100755 (executable)
@@ -22,7 +22,7 @@ _doc = langdefs.translation[lang]
 
 include_re = re.compile (r'@include (.*?)$', re.M)
 whitespaces = re.compile (r'\s+')
-ref_re = re.compile (r'(?ms)@(ruser|rprogram|ref|rlearning)\{(.*?)\}')
+ref_re = re.compile (r'(?ms)@((?:ressay|rgloss|rinternals|rlearning|rslr|rprogram|ruser|ref)|named)\{(.*?)\}')
 node_section_re = re.compile (r'@node (.*?)\n@((?:unnumbered|appendix)(?:(?:sub){0,2}sec)?|top|chapter|(?:sub){0,2}section|(?:major|chap|(?:sub){0,2})heading) (.*?)\n')
 section_only_re = re.compile (r'@((?:unnumbered|appendix)(?:(?:sub){0,2}sec)?|top|chapter|(?:sub){0,2}section|(?:major|chap|(?:sub){0,2})heading) (.*?)\n')
 menu_entry_re = re.compile (r'\* (.*?)::')
index d5666becf85552028d93fd0132fd77f7270a1637..24cb2ecec9a6f9e69e7127c333228498b6de8f7a 100755 (executable)
@@ -32,7 +32,7 @@ node_blurb = '''@untranslated
 '''
 doclang = ''
 head_committish = read_pipe ('git rev-parse HEAD')
-intro_blurb = '''@c -*- coding: utf-8; mode: texinfo%(doclang)s -*-
+intro_blurb = '''\\input texinfo @c -*- coding: utf-8; mode: texinfo%(doclang)s -*-
 @c This file is part of %(topfile)s
 @ignore
     Translation of GIT committish: %(head_committish)s
@@ -49,6 +49,8 @@ for x in optlist:
     if x[0] == '-o': # -o NAME   set PO output file name to NAME
         output_name = x[1]
     elif x[0] == '-d': # -d DIR    set working directory to DIR
+        print 'FIXME: this is evil.  use cd DIR && texi-langutils ...'
+        # even better, add a sane -o option
         os.chdir (x[1])
     elif x[0] == '-b': # -b BLURB  set blurb written at each node to BLURB
         node_blurb = x[1]
@@ -57,7 +59,7 @@ for x in optlist:
     elif x[0] == '-l': # -l ISOLANG  set documentlanguage to ISOLANG
         doclang = '; documentlanguage: ' + x[1]
 
-texinfo_with_menus_re = re.compile (r"^(\*) +([^:\n]+)::.*?$|^@(include|menu|end menu|node|(?:unnumbered|appendix)(?:(?:sub){0,2}sec)?|top|chapter|(?:sub){0,2}section|(?:major|chap|(?:sub){0,2})heading) *(.*?)$|@(rglos){(.+?)}", re.M)
+texinfo_with_menus_re = re.compile (r"^(\*) +([^:\n]+)::.*?$|^@(afourpaper|author|bye|contents|copying|end copying|divClass|divEnd|divId|documentencoding|documentlanguage|finalout|ifnottex|end ifnottex|imageClickable|imageFloat|imageId|image|include|menu|end menu|node|quotation|end quotation|ref|rgloss|setfilename|settitle|set|(?:unnumbered|appendix)(?:(?:sub){0,2}sec)?|titlefont|titlepage|end titlepage|title|sourceimage|subtitle|top|vskip|chapter|(?:sub){0,2}section|(?:major|chap|(?:sub){0,2})heading|c) *(([^ \n].*)|$)", re.M)
 
 texinfo_re = re.compile (r"^@(include|node|(?:unnumbered|appendix)(?:(?:sub){0,2}sec)?|top|chapter|(?:sub){0,2}section|(?:major|chap|(?:sub){0,2})heading) *(.+?)$|@(rglos){(.+?)}", re.M)
 
@@ -118,8 +120,13 @@ def process_texi (texifilename, i_blurb, n_blurb, write_skeleton, topfile, outpu
                     g.write ('@menu\n')
                 elif item[2] == 'end menu':
                     g.write ('@end menu\n\n')
+                elif item[2] == 'documentlanguage':
+                    g.write ('@documentlanguage ' + doclang + '\n')
                 else:
-                    g.write ('@' + item[2] + ' ' + item[3] + '\n')
+                    space = ' '
+                    if item[3].startswith ('{') or not item[3].strip ():
+                        space = ''
+                    g.write ('@' + item[2] + space + item[3] + '\n')
                     if node_trigger:
                         g.write (n_blurb)
                         node_trigger = False
@@ -162,7 +169,15 @@ if make_gettext:
     node_list.write ('# -*- coding: utf-8 -*-\n')
     for texi_file in texi_files:
         # Urgly: scan ly comments and variable names only in English doco
-        is_english_doc = 'Documentation/user' in texi_file
+        is_english_doc = (
+            True
+            and not 'Documentation/de/' in texi_file
+            and not 'Documentation/es/' in texi_file
+            and not 'Documentation/fr/' in texi_file
+            and not 'Documentation/ja/' in texi_file
+            and not 'Documentation/nl/' in texi_file
+            and not 'Documentation/po/' in texi_file
+            )
         process_texi (texi_file, intro_blurb, node_blurb, make_skeleton,
                       os.path.basename (texi_file), node_list,
                       scan_ly=is_english_doc)
index 25b6f25a06520bf4710e610712481cada45c84a3..557db4f967de6fb22534121f6064f03e64a6beca 100755 (executable)
@@ -1,14 +1,21 @@
 #! /usr/bin/env python
-
+#
+#  yyout2grammar.py
+#
+#  Auxiliary script of the GNU LilyPond music engraver
+#
 #  Convert from bison output file parser.output to
 #  Grammar and index.
 #  Drops all of the state information.
 #  Converts \\ to \
-#  Eliminates the @ variables created when {} is placed in the middle of a rule##  all of the c-code stuff
-#
+#  Eliminates the @ variables created when {} is placed
+#        in the middle of a rule
+#  Eliminates all of the c-code stuff
+#  Wraps lines that are longer than 78 characters for improved
+#        formatting
 #
 #  Copyright 2005 by Carl D. Sorensen
-#
+#  Licensed under the GPL, version 2 or any later version
 
 # to create input file, run
 #   bison -v parser.yy
@@ -22,12 +29,46 @@ import re
 
 atre = re.compile('(@\d+):')
 
+intro_re = re.compile (r'(.*[:|])\s')
+keyword_re = re.compile (r'(\S+)\s')
+
+# strip extra backslashes that are inserted by the python
+# string handling routines
+def strip_backslash(input_string):
+    i=input_string.find(r'"\\')
+    while i > -1 :
+        input_string = input_string[:i+1]+input_string[i+2:]
+        i = input_string.find(r'"\\')
+    return  input_string
+
+#  write an output line, adjusting to make sure that max_line_length
+#  is not exceeded
+def write_line (output_line, output_file):
+    max_line_length = 78
+    indent_value = 3
+    if len(output_line) > max_line_length:
+        intro = intro_re.match(output_line)
+        if intro:
+            output_file.write(intro.group(1)+" ")
+            indent_column = len(intro.group(1))
+            output_line = output_line[indent_column:]
+            keyword = keyword_re.search(output_line)
+            while keyword:
+                output_file.write(strip_backslash(keyword.group(1))+" \n")
+                output_line = output_line[keyword.end(1):]
+                keyword = keyword_re.search(output_line)
+                if keyword:
+                    output_file.write("".rjust(indent_column + indent_value))
+    else:
+        output_file.write(strip_backslash(output_line))
+    return
+
 write_me = True
 
 if len(sys.argv)!=3:
     print "Usage: yyout2grammar.py parser_output_file grammar_file."
 else:
-    in_name = sys.argv[1] 
+    in_name = sys.argv[1]
     out_name = sys.argv[2]
 
     print "input file name",in_name
@@ -37,10 +78,14 @@ else:
 
     at_items=[]
     inline = in_file.readline()
+
+    ## skip header material from file
     while inline != '' and not(inline.startswith("Grammar")):
         inline = in_file.readline()
+
+    ## process the Grammar lines
     if inline != '':
-        out_file.write(inline)
+        write_line(inline, out_file)
         inline = in_file.readline()
         while inline != '' and not(inline.startswith("Terminals")):
             i = inline.find("$accept:")
@@ -50,27 +95,26 @@ else:
             atfound = re.findall(atre,inline)
             if len(atfound) > 0:
                 at_items.extend(atfound)
-                print at_items
+                #  print at_items
                 write_me = False
                 inline=in_file.readline()
             else:
                 for at_item in at_items:
                     i=inline.find(at_item)
+                    ## remove @ item
                     if i >= 0:
                         inline=inline[:i] + inline[i+len(at_item):]
-                    i=inline.find('"\\\\')
-                    while i > -1 :
-                        inline = inline[:i+1]+inline[i+2:]
-                        i = inline.find('"\\\\')
+
             if write_me:
-                out_file.write(inline)
+                write_line(inline, out_file)
             inline = in_file.readline()
             write_me = True
     index_items = []
+
     #  Write the Terminals header line and the following blank line
-    out_file.write(inline)
+    write_line(inline, out_file)
     inline = in_file.readline()
-    out_file.write(inline)
+    write_line(inline, out_file)
     inline = in_file.readline()
     while inline != '' and not(inline.startswith("Nonterminals")):
         i=inline.find('"\\\\')
@@ -81,12 +125,13 @@ else:
         inline = in_file.readline()
     index_items.sort(lambda x,y:cmp(x.lower(),y.lower()))
     for index_item in index_items:
-        out_file.write(index_item)
-    out_file.write('\n')
+        write_line (index_item, out_file)
+    write_line ('\n', out_file)
+
     # Write the Nonterminals header and the blank line
-    out_file.write(inline)
+    write_line(inline, out_file)
     inline = in_file.readline()
-    out_file.write(inline)
+    write_line(inline, out_file)
     index_items = []
     index_item=in_file.readline()
     inline=in_file.readline()
@@ -101,4 +146,4 @@ else:
         inline=in_file.readline()
     index_items.sort(lambda x,y:cmp(x.lower(),y.lower()))
     for index_item in index_items:
-        out_file.write(index_item)
+        write_line (index_item, out_file)
index 36adb50ea215946209e7734f2fe8f080115d105a..61f6014e160894808a8c1cde678b0e24b861abfa 100644 (file)
@@ -49,7 +49,7 @@ def help (text):
 
 outdir = '.'
 split = "custom"
-include_path = []
+include_path = ['.',]
 master_map_file = ''
 initial_map = {}
 for opt in options_list:
@@ -60,6 +60,8 @@ for opt in options_list:
     if o == '-I' or o == '--include':
         if os.path.isdir (a):
             include_path.append (a)
+        else:
+            print 'NOT A DIR from: ', os.getcwd (), a
     elif o == '-o' or o == '--output':
         outdir = a
     elif o == '-s' or o == '--split':
@@ -85,15 +87,17 @@ section_translation_re = re.compile ('^@(node|(?:unnumbered|appendix)\
 external_node_re = re.compile (r'\s+@c\s+external.*')
 
 def expand_includes (m, filename):
-    filepath = os.path.join (os.path.dirname (filename), m.group(1))
+    include_name = m.group (1)
+    filepath = os.path.join (os.path.dirname (filename), include_name)
     if os.path.exists (filepath):
         return extract_sections (filepath)[1]
     else:
         for directory in include_path:
-            filepath = os.path.join (directory, m.group(1))
+            filepath = os.path.join (directory, include_name)
             if os.path.exists (filepath):
                 return extract_sections (filepath)[1]
-        print "Unable to locate include file " + filepath
+        print 'No such file: ' + include_name
+        print 'Search path: ' + ':'.join (include_path)
         return ''
 
 lang_re = re.compile (r'^@documentlanguage (.+)', re.M)
@@ -181,6 +185,7 @@ def process_sections (filename, lang_suffix, page):
     sections = section_translation_re.findall (page)
     basename = os.path.splitext (os.path.basename (filename))[0]
     p = os.path.join (outdir, basename) + lang_suffix + '.xref-map'
+    print 'writing:', p
     f = open (p, 'w')
 
     this_title = ''
index b329390a5deab9dd7c5675d68a67490e184f36ea..61ce1cbd0e0abba205a0c8f123006e161a05b2cf 100644 (file)
@@ -39,9 +39,9 @@ dirs, symlinks, files = mirrortree.walk_tree (
     tree_roots = doc_dirs,
     process_dirs = outdir,
     exclude_dirs = '(^|/)((' + \
-        r'po|out|out-test|out-cov|.*?[.]t2d|\w*?-root)|^Documentation/(' + \
+        r'po|xref-maps|out|out-test|out-cov|.*?[.]t2d|\w*?-root)|^Documentation/(' + \
         '|'.join ([l.code for l in langdefs.LANGUAGES]) + '))(/|$)',
-    find_files = r'.*?\.(?:midi|html|pdf|png|txt|i?ly|signature|css|zip)$|VERSION',
+    find_files = r'.*?\.(?:midi|html|pdf|png|jpe?g|txt|i?ly|signature|css|zip)$|VERSION',
     exclude_files = r'lily-[0-9a-f]+.*\.(pdf|txt)')
 
 # actual mirrorring stuff
index 37bf7fe34f9f20451db7a37beddadff098359541..83c07c3a2ddc549c012917841ce641fc9a0122fe 100644 (file)
@@ -163,8 +163,7 @@ AC_DEFUN(STEPMAKE_BISON, [
     fi
 ])
 
-
-AC_DEFUN(STEPMAKE_COMPILE, [
+AC_DEFUN(STEPMAKE_COMPILE_BEFORE, [
     # -O is necessary to get inlining
     CFLAGS=${CFLAGS-""}
     CXXFLAGS=${CXXFLAGS-$CFLAGS}
@@ -204,8 +203,13 @@ AC_DEFUN(STEPMAKE_COMPILE, [
     if test $debug_b = yes; then
        OPTIMIZE="$OPTIMIZE -g"
     fi
-    AC_PROG_CC
+])
+
+AC_DEFUN(STEPMAKE_COMPILE, [
+
+    AC_REQUIRE([STEPMAKE_COMPILE_BEFORE])
+    AC_REQUIRE([AC_PROG_CC])
+
     STEPMAKE_OPTIONAL_REQUIRED(CC, cc, $1)
     LD='$(CC)'
     AC_SUBST(LD)
index 97256f4c626177be069f7577722062e50f087d21..ce6c647792b10c2fb34562f2e90f7978c438e0c1 100644 (file)
@@ -23,32 +23,29 @@ ifneq ($(INFO_IMAGES_DIR),)
 endif
        touch $@
 
-$(outdir)/%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
-       $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
-
-$(outdir)/lilypond-%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
-       $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
+$(outdir)/%.texi: %.texi
+       cp -p $< $@
 
-$(outdir)/lilypond.info: general.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
+$(outdir)/%.info: $(outdir)/%.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
        $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
 
 $(outdir)/%-big-page.html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map $(outdir)/version.itexi
-       $(TEXI2HTML) --I=$(src-dir) --I=$(outdir) -D bigpage --output=$@ $(TEXI2HTML_INIT) $<
+       $(TEXI2HTML) $(TEXI2HTML_FLAGS) -D bigpage --output=$@ $<
 
 $(outdir)/%.html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map $(outdir)/version.itexi
-       $(TEXI2HTML) --I=$(src-dir) --I=$(outdir) --output=$@ $(TEXI2HTML_INIT) $<
+       $(TEXI2HTML) $(TEXI2HTML_FLAGS) --output=$@ $<
 
 $(outdir)/%/index.html: $(outdir)/%.texi $(XREF_MAPS_DIR)/%.xref-map $(outdir)/version.itexi $(outdir)/%.html.omf
        mkdir -p $(dir $@)
-       $(TEXI2HTML) --I=$(src-dir) --I=$(outdir) --output=$(dir $@) --prefix=index --split=section $(TEXI2HTML_INIT) $<
+       $(TEXI2HTML) $(TEXI2HTML_FLAGS) --output=$(dir $@) $(TEXI2HTML_SPLIT) $<
        cp $(top-src-dir)/Documentation/css/*.css $(dir $@)
 
+$(XREF_MAPS_DIR)/%.xref-map: $(outdir)/%.texi
+       $(buildscript-dir)/extract_texi_filenames $(XREF_MAP_FLAGS) -o $(XREF_MAPS_DIR) $<
+       touch -r $< $@
 
-$(outdir)/%.html.omf: %.texi
-       $(call GENERATE_OMF,html)
-
-$(outdir)/%.pdf.omf: %.texi
-       $(call GENERATE_OMF,pdf)
+$(outdir)/%.info: %.texi $(outdir)/$(INFO_IMAGES_DIR).info-images-dir-dep $(outdir)/version.itexi
+       $(MAKEINFO) -I$(src-dir) -I$(outdir) --output=$@ $<
 
 $(outdir)/%.pdf: $(outdir)/%.texi $(outdir)/version.itexi $(outdir)/%.pdf.omf
        cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) -I $(abs-src-dir) --batch $(TEXINFO_PAPERSIZE_OPTION) $(<F)
@@ -56,11 +53,11 @@ $(outdir)/%.pdf: $(outdir)/%.texi $(outdir)/version.itexi $(outdir)/%.pdf.omf
 $(outdir)/%.txt: $(outdir)/%.texi $(outdir)/version.itexi
        $(MAKEINFO) -I$(src-dir) -I$(outdir) --no-split --no-headers --output $@ $<
 
-$(XREF_MAPS_DIR)/%.xref-map: $(outdir)/%.texi
-       $(buildscript-dir)/extract_texi_filenames $(XREF_MAP_FLAGS) -o $(XREF_MAPS_DIR) $<
+$(outdir)/%.html.omf: %.texi
+       $(call GENERATE_OMF,html)
 
-$(outdir)/%.texi: %.texi
-       cp -f $< $@
+$(outdir)/%.pdf.omf: %.texi
+       $(call GENERATE_OMF,pdf)
 
 $(outdir)/version.%: $(top-src-dir)/VERSION
        echo '@macro version'> $@
index 1db4b06ef598d39e398b84fa961400712a4edffb..90b985069e15eb1cfc2577df220ca9f83c4f088a 100644 (file)
@@ -16,18 +16,33 @@ MAKEINFO_FLAGS += --enable-encoding $(DOCUMENTATION_INCLUDES)
 MAKEINFO = LANG= $(MAKEINFO_PROGRAM) $(MAKEINFO_FLAGS)
 
 # texi2html xref map files
-XREF_MAPS_DIR = $(top-build-dir)/out/xref-maps
+# FIXME: duplicated in stepake/texinfo-vars.make make/doc-i18n-root-vars.make
+XREF_MAPS_DIR = $(top-build-dir)/$(outbase)/xref-maps
 XREF_MAPS_FILES += $(TEXI_FILES:%.texi=$(XREF_MAPS_DIR)/%.xref-map) \
  $(TELY_FILES:%.tely=$(XREF_MAPS_DIR)/%.xref-map)
 XREF_MAP_FLAGS += -I $(outdir)
 
-# texi2html flags
+###########
 ifneq ($(ISOLANG),)
 TEXI2HTML_LANG = --lang=$(ISOLANG)
 endif
-TEXI2HTML_FLAGS += $(DOCUMENTATION_INCLUDES) --I=$(XREF_MAPS_DIR)
-TEXI2HTML_INIT = --init-file=$(top-src-dir)/Documentation/lilypond-texi2html.init
-TEXI2HTML = PERL_UNICODE=SD $(TEXI2HTML_PROGRAM) $(TEXI2HTML_FLAGS) $(TEXI2HTML_LANG)
+
+DOC_TEXI2HTML_INIT = --init-file=$(top-src-dir)/Documentation/lilypond-texi2html.init
+WEB_TEXI2HTML_INIT =--init-file=$(top-src-dir)/Documentation/web-texi2html.init
+TEXI2HTML_INIT = $(DOC_TEXI2HTML_INIT)
+
+DOC_TEXI2HTML_SPLIT = --prefix=index --split=section
+# --split=node --node-files makes that translated pages have
+# translated file names, that breaks.
+## WEB_TEXI2HTML_SPLIT = --prefix=index --split=node --node-files
+WEB_TEXI2HTML_SPLIT = $(DOC_TEXI2HTML_SPLIT)
+TEXI2HTML_SPLIT = $(DOC_TEXI2HTML_SPLIT)
+
+TEXI2HTML_INCLUDES += --I=. --I=$(src-dir) --I=$(outdir) $(DOCUMENTATION_INCLUDES) --I=$(XREF_MAPS_DIR)
+TEXI2HTML_FLAGS += $(TEXI2HTML_INCLUDES) $(TEXI2HTML_INIT) $(TEXI2HTML_LANG)
+TEXI2HTML = PERL_UNICODE=SD $(TEXI2HTML_PROGRAM)
+###########
+
 
 TEXI2PDF_FLAGS += $(DOCUMENTATION_INCLUDES)