]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'lilypond/translation'
authorJean-Charles Malahieude <lilyfan@orange.fr>
Wed, 25 Aug 2010 12:04:25 +0000 (14:04 +0200)
committerJean-Charles Malahieude <lilyfan@orange.fr>
Wed, 25 Aug 2010 12:04:25 +0000 (14:04 +0200)
493 files changed:
Documentation/GNUmakefile
Documentation/changes.tely
Documentation/contributor/administration.itexi
Documentation/contributor/doc-translation-list.itexi
Documentation/contributor/doc-work.itexi
Documentation/contributor/issues.itexi
Documentation/contributor/lsr-work.itexi
Documentation/contributor/programming-work.itexi
Documentation/contributor/regressions.itexi
Documentation/contributor/release-work.itexi
Documentation/contributor/source-code.itexi
Documentation/contributor/website-work.itexi
Documentation/css/lilypond-web.css
Documentation/de/texidocs/vocal-ensemble-template.texidoc
Documentation/es/texidocs/vocal-ensemble-template.texidoc
Documentation/essay/computer-notation.bib
Documentation/essay/engraving.itely
Documentation/essay/engravingbib.bib
Documentation/essay/html-long.bst [deleted file]
Documentation/essay/texi-long.bst [new file with mode: 0644]
Documentation/extending/programming-interface.itely
Documentation/extending/scheme-tutorial.itely
Documentation/fr/learning/common-notation.itely
Documentation/fr/learning/fundamental.itely
Documentation/fr/learning/introduction.itely [deleted file]
Documentation/fr/learning/preface.itely
Documentation/fr/learning/templates.itely
Documentation/fr/learning/tutorial.itely
Documentation/fr/learning/tweaks.itely
Documentation/fr/learning/working.itely [deleted file]
Documentation/fr/macros.itexi
Documentation/fr/texidocs/hymn-template.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/vocal-ensemble-template.texidoc
Documentation/fr/web.texi
Documentation/fr/web/community.itexi
Documentation/fr/web/download.itexi
Documentation/fr/web/introduction.itexi
Documentation/fr/web/manuals.itexi
Documentation/included/authors.itexi
Documentation/included/chord-names-jazz.ly
Documentation/included/compile.itexi
Documentation/included/generating-output.itexi
Documentation/ja/texidocs/vocal-ensemble-template.texidoc
Documentation/learning/common-notation.itely
Documentation/learning/fundamental.itely
Documentation/learning/templates.itely
Documentation/learning/tweaks.itely
Documentation/music-glossary.tely
Documentation/notation/ancient.itely
Documentation/notation/changing-defaults.itely
Documentation/notation/chords.itely
Documentation/notation/editorial.itely
Documentation/notation/expressive.itely
Documentation/notation/fretted-strings.itely
Documentation/notation/input.itely
Documentation/notation/keyboards.itely
Documentation/notation/notation-appendices.itely
Documentation/notation/percussion.itely
Documentation/notation/pitches.itely
Documentation/notation/repeats.itely
Documentation/notation/rhythms.itely
Documentation/notation/simultaneous.itely
Documentation/notation/spacing.itely
Documentation/notation/staff.itely
Documentation/notation/text.itely
Documentation/notation/vocal.itely
Documentation/notation/wind.itely
Documentation/notation/world.itely
Documentation/snippets.tely
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-an-extra-staff-at-a-line-break.ly
Documentation/snippets/adding-an-extra-staff.ly
Documentation/snippets/adding-bar-lines-to-chordnames-context.ly
Documentation/snippets/adding-beams,-slurs,-ties-etc.-when-using-tuplet-and-non-tuplet-rhythms.ly
Documentation/snippets/adding-drum-parts.ly
Documentation/snippets/adding-fingerings-to-a-score.ly
Documentation/snippets/adding-fingerings-to-tablatures.ly
Documentation/snippets/adding-indicators-to-staves-which-get-split-after-a-break.ly
Documentation/snippets/adding-parentheses-around-an-expressive-mark-or-chordal-note.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-grace-note-spacing.ly
Documentation/snippets/adjusting-lyrics-vertical-spacing.ly
Documentation/snippets/adjusting-the-shape-of-falls-and-doits.ly
Documentation/snippets/aligning-and-centering-instrument-names.ly
Documentation/snippets/aligning-bar-numbers.ly
Documentation/snippets/aligning-marks-with-various-notation-objects.ly
Documentation/snippets/aligning-objects-created-with-the--mark-command.ly
Documentation/snippets/allowing-fingerings-to-be-printed-inside-the-staff.ly
Documentation/snippets/altering-the-length-of-beamed-stems.ly
Documentation/snippets/ambitus-with-multiple-voices.ly
Documentation/snippets/ambitus.ly
Documentation/snippets/analysis-brackets-above-the-staff.ly
Documentation/snippets/ancient-fonts.ly
Documentation/snippets/ancient-headword.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/ancient-time-signatures.ly
Documentation/snippets/applying-note-head-styles-depending-on-the-step-of-the-scale.ly
Documentation/snippets/arabic-improvisation.ly
Documentation/snippets/asymmetric-slurs.ly
Documentation/snippets/automatic-beam-subdivisions.ly
Documentation/snippets/avoiding-collisions-with-chord-fingerings.ly
Documentation/snippets/bar-chords-notation-for-guitar--with-text-spanner.ly
Documentation/snippets/beam-endings-in-score-context.ly
Documentation/snippets/beam-grouping-in-7-8-time.ly
Documentation/snippets/beams-across-line-breaks.ly
Documentation/snippets/blanking-staff-lines-using-the--whiteout-command.ly
Documentation/snippets/book-parts.ly
Documentation/snippets/breathing-signs.ly
Documentation/snippets/broken-crescendo-hairpin.ly
Documentation/snippets/caesura-railtracks-with-fermata.ly
Documentation/snippets/center-text-below-hairpin-dynamics.ly
Documentation/snippets/centering-markup-on-note-heads-automatically.ly
Documentation/snippets/changing--flageolet-mark-size.ly
Documentation/snippets/changing-a-single-notes-size-in-a-chord.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-fret-orientations.ly
Documentation/snippets/changing-midi-output-to-one-channel-per-voice.ly
Documentation/snippets/changing-partcombine-texts.ly
Documentation/snippets/changing-properties-for-individual-grobs.ly
Documentation/snippets/changing-stanza-fonts.ly
Documentation/snippets/changing-text-and-spanner-styles-for-text-dynamics.ly
Documentation/snippets/changing-the-ambitus-gap.ly
Documentation/snippets/changing-the-appearance-of-a-slur-from-solid-to-dotted-or-dashed.ly
Documentation/snippets/changing-the-breath-mark-symbol.ly
Documentation/snippets/changing-the-chord-names-to-german-or-semi-german-notation.ly
Documentation/snippets/changing-the-default-text-font-family.ly
Documentation/snippets/changing-the-interval-of-lines-on-the-stave.ly
Documentation/snippets/changing-the-number-of-augmentation-dots-per-note.ly
Documentation/snippets/changing-the-number-of-lines-in-a-staff.ly
Documentation/snippets/changing-the-positions-of-figured-bass-alterations.ly
Documentation/snippets/changing-the-size-of-woodwind-diagrams.ly [new file with mode: 0644]
Documentation/snippets/changing-the-staff-size.ly
Documentation/snippets/changing-the-tempo-without-a-metronome-mark.ly
Documentation/snippets/changing-the-text-for-sustain-markings.ly
Documentation/snippets/changing-the-time-signature-without-affecting-the-beaming.ly
Documentation/snippets/changing-the-tuplet-number.ly
Documentation/snippets/changing-time-signatures-inside-a-polymetric-section-using--scaledurations.ly
Documentation/snippets/chant-or-psalms-notation.ly
Documentation/snippets/chord-name-exceptions.ly
Documentation/snippets/chord-name-major7.ly
Documentation/snippets/chordchanges-for-fretboards.ly
Documentation/snippets/chords-headword.ly
Documentation/snippets/clefs-can-be-transposed-by-arbitrary-amounts.ly
Documentation/snippets/clip-systems.ly
Documentation/snippets/clusters.ly
Documentation/snippets/coloring-notes-depending-on-their-pitch.ly
Documentation/snippets/combining-dynamics-with-markup-texts.ly
Documentation/snippets/combining-two-parts-on-the-same-staff.ly
Documentation/snippets/compound-time-signatures.ly
Documentation/snippets/conducting-signs,-measure-grouping-signs.ly
Documentation/snippets/contemporary-glissando.ly
Documentation/snippets/controlling-spanner-visibility-after-a-line-break.ly
Documentation/snippets/controlling-the-placement-of-chord-fingerings.ly
Documentation/snippets/controlling-the-vertical-ordering-of-scripts.ly
Documentation/snippets/controlling-tuplet-bracket-visibility.ly
Documentation/snippets/creating-a-delayed-turn.ly
Documentation/snippets/creating-a-sequence-of-notes-on-various-pitches.ly
Documentation/snippets/creating-arpeggios-across-notes-in-different-voices.ly
Documentation/snippets/creating-blank-staves.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/creating-simultaneous-rehearsal-marks.ly
Documentation/snippets/creating-slurs-across-voices.ly
Documentation/snippets/creating-text-spanners.ly
Documentation/snippets/cross-staff-tremolos.ly
Documentation/snippets/custodes.ly
Documentation/snippets/customizing-fretboard-fret-diagrams.ly
Documentation/snippets/customizing-markup-fret-diagrams.ly
Documentation/snippets/default-direction-of-stems-on-the-center-line-of-the-staff.ly
Documentation/snippets/defining-an-engraver-in-scheme-ambitus-engraver.ly
Documentation/snippets/defining-predefined-fretboards-for-other-instruments.ly
Documentation/snippets/demo-midiinstruments.ly
Documentation/snippets/demonstrating-all-headers.ly
Documentation/snippets/display-bracket-with-only-one-staff-in-a-system.ly
Documentation/snippets/displaying-complex-chords.ly
Documentation/snippets/displaying-grob-ancestry.ly
Documentation/snippets/dodecaphonic-style-accidentals-for-each-note-including-naturals.ly
Documentation/snippets/dotted-harmonics.ly
Documentation/snippets/double-glissando.ly
Documentation/snippets/drawing-boxes-around-grobs.ly
Documentation/snippets/drawing-circles-around-various-objects.ly
Documentation/snippets/dynamics-custom-text-spanner-postfix.ly
Documentation/snippets/dynamics-text-spanner-postfix.ly
Documentation/snippets/editorial-headword.ly
Documentation/snippets/embedding-native-postscript-in-a--markup-block.ly
Documentation/snippets/engravers-one-by-one.ly
Documentation/snippets/engraving-ties-manually.ly
Documentation/snippets/engraving-tremolos-with-floating-beams.ly
Documentation/snippets/entering-several-tuplets-using-only-one--times-command.ly
Documentation/snippets/expressive-headword.ly
Documentation/snippets/expressive-marks.snippet-list
Documentation/snippets/faking-a-hammer-in-tablatures.ly
Documentation/snippets/figured-bass-headword.ly
Documentation/snippets/fine-tuning-pedal-brackets.ly
Documentation/snippets/fingering-symbols-for-wind-instruments.ly
Documentation/snippets/fingerings,-string-indications,-and-right-hand-fingerings.ly
Documentation/snippets/flamenco-notation.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/forcing-hyphens-to-be-shown.ly
Documentation/snippets/forcing-measure-width-to-adapt-to-metronomemarks-width.ly
Documentation/snippets/forcing-rehearsal-marks-to-start-from-a-given-letter-or-number.ly
Documentation/snippets/formatting-lyrics-syllables.ly
Documentation/snippets/fret-diagrams-explained-and-developed.ly
Documentation/snippets/fretted-headword.ly
Documentation/snippets/generating-random-notes.ly
Documentation/snippets/graphical-and-text-woodwind-diagrams.ly [new file with mode: 0644]
Documentation/snippets/grid-lines--changing-their-appearance.ly
Documentation/snippets/grid-lines--emphasizing-rhythms-and-notes-synchronization.ly
Documentation/snippets/grouping-beats.ly
Documentation/snippets/guitar-slides.ly
Documentation/snippets/guitar-strum-rhythms.ly
Documentation/snippets/hairpins-with-different-line-styles.ly
Documentation/snippets/heavily-customized-polymetric-time-signatures.ly
Documentation/snippets/hiding-accidentals-on-tied-notes-at-the-start-of-a-new-system.ly
Documentation/snippets/hiding-the-extender-line-for-text-dynamics.ly
Documentation/snippets/horizontally-aligning-custom-dynamics-e.g.-sempre-pp,-piu-f,-subito-p.ly
Documentation/snippets/how-to-change-fret-diagram-position.ly
Documentation/snippets/how-to-put-ties-between-syllables-in-lyrics.ly
Documentation/snippets/hymn-template.ly [new file with mode: 0644]
Documentation/snippets/incipit.ly
Documentation/snippets/indicating-cross-staff-chords-with-arpeggio-bracket.ly
Documentation/snippets/inserting-a-caesura.ly
Documentation/snippets/inserting-score-fragments-above-a-staff,-as-markups.ly
Documentation/snippets/isolated-percent-repeats.ly
Documentation/snippets/jazz-combo-template.ly
Documentation/snippets/keep-change-clefs-full-sized.ly
Documentation/snippets/keyboard-headword.ly
Documentation/snippets/laissez-vibrer-ties.ly
Documentation/snippets/letter-tablature-formatting.ly
Documentation/snippets/line-arrows.ly
Documentation/snippets/lyrics-alignment.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/manually-break-figured-bass-extenders-for-only-some-numbers.ly
Documentation/snippets/manually-controlling-beam-positions.ly
Documentation/snippets/marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly
Documentation/snippets/markup-lines.ly
Documentation/snippets/measure-counter.ly
Documentation/snippets/mensurstriche-layout-bar-lines-between-the-staves.ly
Documentation/snippets/merging-multi-measure-rests-in-a-polyphonic-part.ly
Documentation/snippets/modern-tab-text-clef.ly
Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly
Documentation/snippets/modifying-tuplet-bracket-length.ly
Documentation/snippets/moving-dotted-notes-in-polyphony.ly
Documentation/snippets/moving-slur-positions-vertically.ly
Documentation/snippets/multi-measure-rest-markup.ly
Documentation/snippets/nesting-staves.ly
Documentation/snippets/new/changing-the-size-of-woodwind-diagrams.ly [new file with mode: 0644]
Documentation/snippets/new/graphical-and-text-woodwind-diagrams.ly [new file with mode: 0644]
Documentation/snippets/new/hymn-template.ly [new file with mode: 0644]
Documentation/snippets/new/partcombine-and-autobeamoff.ly [new file with mode: 0644]
Documentation/snippets/new/vocal-ensemble-template.ly [new file with mode: 0644]
Documentation/snippets/new/woodwind-diagrams-key-lists.ly [new file with mode: 0644]
Documentation/snippets/new/woodwind-diagrams-listing.ly [new file with mode: 0644]
Documentation/snippets/non-default-tuplet-numbers.ly
Documentation/snippets/non-traditional-key-signatures.ly
Documentation/snippets/numbers-as-easy-note-heads.ly
Documentation/snippets/orchestra,-choir-and-piano-template.ly
Documentation/snippets/ottava-text.ly
Documentation/snippets/outputting-the-version-number.ly
Documentation/snippets/page-label.ly
Documentation/snippets/partcombine-and-autobeamoff.ly [new file with mode: 0644]
Documentation/snippets/percent-repeat-count-visibility.ly
Documentation/snippets/percent-repeat-counter.ly
Documentation/snippets/percussion-beaters.ly
Documentation/snippets/permitting-line-breaks-within-beamed-tuplets.ly
Documentation/snippets/piano-template-simple.ly
Documentation/snippets/piano-template-with-centered-dynamics.ly
Documentation/snippets/piano-template-with-centered-lyrics.ly
Documentation/snippets/piano-template-with-melody-and-lyrics.ly
Documentation/snippets/pitches-headword.ly
Documentation/snippets/placement-of-right-hand-fingerings.ly
Documentation/snippets/polyphony-in-tablature.ly
Documentation/snippets/positioning-arpeggios.ly
Documentation/snippets/positioning-fingering-indications-precisely.ly
Documentation/snippets/positioning-grace-note-beams-at-the-height-of-normal-note-beams.ly
Documentation/snippets/positioning-grace-notes-with-floating-space.ly
Documentation/snippets/positioning-multi-measure-rests.ly
Documentation/snippets/positioning-segno-and-coda-with-line-break.ly
Documentation/snippets/positioning-text-markups-inside-slurs.ly
Documentation/snippets/preventing-extra-naturals-from-being-automatically-added.ly
Documentation/snippets/preventing-final-mark-from-removing-final-tuplet.ly [new file with mode: 0644]
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.ly
Documentation/snippets/printing-marks-on-every-staff.ly
Documentation/snippets/printing-metronome-and-rehearsal-marks-below-the-staff.ly
Documentation/snippets/printing-music-with-different-time-signatures.ly
Documentation/snippets/printing-note-names-with-and-without-an-octave-marker.ly
Documentation/snippets/printing-text-from-right-to-left.ly
Documentation/snippets/printing-the-bar-number-for-the-first-measure.ly
Documentation/snippets/proportional-strict-notespacing.ly
Documentation/snippets/quoting-another-voice-with-transposition.ly
Documentation/snippets/quoting-another-voice.ly
Documentation/snippets/recorder-fingering-chart.ly
Documentation/snippets/redefining-grace-note-global-defaults.ly
Documentation/snippets/removing-bar-numbers-from-a-score.ly
Documentation/snippets/removing-connecting-bar-lines-on-staffgroup,-pianostaff,-or-grandstaff.ly
Documentation/snippets/removing-the-first-empty-line.ly
Documentation/snippets/repeats-headword.ly
Documentation/snippets/rest-styles.ly
Documentation/snippets/reverting-default-beam-endings.ly
Documentation/snippets/rhythmic-slashes.ly
Documentation/snippets/rhythms-headword.ly
Documentation/snippets/rhythms.snippet-list
Documentation/snippets/satb-choir-template---four-staves.ly [new file with mode: 0644]
Documentation/snippets/score-for-diatonic-accordion.ly
Documentation/snippets/screech-boink.ly
Documentation/snippets/separating-key-cancellations-from-key-signature-changes.ly
Documentation/snippets/setting-hairpin-behavior-at-bar-lines.ly
Documentation/snippets/setting-system-separators.ly
Documentation/snippets/setting-the-double-repeat-default-for-volte.ly
Documentation/snippets/setting-the-minimum-length-of-hairpins.ly
Documentation/snippets/shortening-volta-brackets.ly
Documentation/snippets/showing-chords-at-changes.ly
Documentation/snippets/showing-the-same-articulation-above-and-below-a-note-or-chord.ly
Documentation/snippets/simple-lead-sheet.ly
Documentation/snippets/simultaneous-headword.ly
Documentation/snippets/single-staff-template-with-notes,-lyrics,-and-chords.ly
Documentation/snippets/single-staff-template-with-notes,-lyrics,-chords-and-frets.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/skips-in-lyric-mode.ly
Documentation/snippets/snap-pizzicato-bartok-pizzicato.ly
Documentation/snippets/staff-headword.ly
Documentation/snippets/stand-alone-two-column-markup.ly
Documentation/snippets/stem-and-beam-behavior-in-tablature.ly
Documentation/snippets/stemlets.ly
Documentation/snippets/string-number-extender-lines.ly
Documentation/snippets/string-quartet-template-simple.ly
Documentation/snippets/string-quartet-template-with-separate-parts.ly
Documentation/snippets/subdividing-beams.ly
Documentation/snippets/suppressing-warnings-for-clashing-note-columns.ly
Documentation/snippets/table-of-contents.ly
Documentation/snippets/template.snippet-list
Documentation/snippets/text-headword.ly
Documentation/snippets/three-sided-box.ly
Documentation/snippets/tick-bar-lines.ly
Documentation/snippets/time-signature-in-parentheses.ly
Documentation/snippets/time-signature-printing-only-the-numerator-as-a-number-instead-of-the-fraction.ly
Documentation/snippets/transcription-of-ancient-music-with-incipit.ly
Documentation/snippets/transposing-pitches-with-minimum-accidentals-smart-transpose.ly
Documentation/snippets/tweaking-clef-properties.ly
Documentation/snippets/tweaking-grace-layout-within-music.ly
Documentation/snippets/unfretted-headword.ly
Documentation/snippets/use-square-bracket-at-the-start-of-a-staff-group.ly
Documentation/snippets/using-alternative-flag-styles.ly
Documentation/snippets/using-arpeggiobracket-to-make-divisi-more-visible.ly [new file with mode: 0644]
Documentation/snippets/using-double-slurs-for-legato-chords.ly
Documentation/snippets/using-grace-note-slashes-with-normal-heads.ly
Documentation/snippets/using-ly-grob-object-to-access-grobs-with--tweak.ly
Documentation/snippets/using-postscript-to-generate-special-note-head-shapes.ly
Documentation/snippets/using-the--tweak-command-to-tweak-individual-grobs.ly
Documentation/snippets/using-the-whiteout-property.ly
Documentation/snippets/using-ties-with-arpeggios.ly
Documentation/snippets/utf-8.ly
Documentation/snippets/vertical-line-as-a-baroque-articulation-mark.ly
Documentation/snippets/vertically-aligned-dynamics-and-textscripts.ly
Documentation/snippets/vertically-aligning-dynamics-across-multiple-notes.ly
Documentation/snippets/vertically-aligning-ossias-and-lyrics.ly
Documentation/snippets/vertically-centered-common-lyrics.ly
Documentation/snippets/vertically-centering-paired-figured-bass-extenders.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-with-verse-and-refrain.ly
Documentation/snippets/vocal-ensemble-template.ly
Documentation/snippets/vocal-music.snippet-list
Documentation/snippets/volta-below-chords.ly
Documentation/snippets/volta-multi-staff.ly
Documentation/snippets/volta-text-markup-using-repeatcommands.ly
Documentation/snippets/wind-headword.ly
Documentation/snippets/winds.snippet-list
Documentation/snippets/woodwind-diagrams-key-lists.ly [new file with mode: 0644]
Documentation/snippets/woodwind-diagrams-listing.ly [new file with mode: 0644]
Documentation/topdocs/README.texi
Documentation/usage/latex-lilypond-example.latex
Documentation/usage/lilypond-book.itely
Documentation/usage/running.itely
Documentation/usage/suggestions.itely
Documentation/web/GNUmakefile
Documentation/web/community.itexi
Documentation/web/download.itexi
Documentation/web/introduction.itexi
Documentation/web/manuals.itexi
Documentation/web/news-front.itexi
Documentation/web/news.itexi
Documentation/web/others-did.bib [new file with mode: 0644]
Documentation/web/texi-web.bst [new file with mode: 0644]
Documentation/web/we-wrote.bib [new file with mode: 0644]
VERSION
input/regression/center-title.ly [new file with mode: 0644]
input/regression/fret-diagrams-xo-label.ly
input/regression/hara-kiri-alive-with.ly [new file with mode: 0644]
input/regression/hara-kiri-pianostaff.ly [deleted file]
input/regression/hara-kiri-staff.ly [new file with mode: 0644]
input/regression/markup-path-fill.ly [new file with mode: 0644]
input/regression/markup-path-linecap.ly [new file with mode: 0644]
input/regression/markup-path-linejoin.ly [new file with mode: 0644]
input/regression/markup-path.ly [new file with mode: 0644]
input/regression/nested-fill-lines.ly [new file with mode: 0644]
input/regression/nested-property-revert.ly [new file with mode: 0644]
input/regression/page-breaking-rehearsal-mark.ly [new file with mode: 0644]
input/regression/page-turn-page-breaking-auto-first-page2.ly
input/regression/partial-polymetric.ly [new file with mode: 0644]
input/regression/woodwind-diagrams-empty.ly
input/regression/woodwind-diagrams-key-lists.ly
lily/bar-line.cc
lily/constrained-breaking.cc
lily/context-mod-scheme.cc
lily/directional-element-interface.cc
lily/engraver-scheme.cc
lily/general-scheme.cc
lily/grob-scheme.cc
lily/hara-kiri-group-spanner.cc
lily/include/hara-kiri-group-spanner.hh
lily/include/page-breaking.hh
lily/include/page-spacing.hh
lily/keep-alive-together-engraver.cc [new file with mode: 0644]
lily/ligature-engraver.cc
lily/mensural-ligature.cc
lily/minimal-page-breaking.cc
lily/music-function-scheme.cc
lily/nested-property.cc
lily/optimal-page-breaking.cc
lily/page-breaking.cc
lily/page-layout-problem.cc
lily/page-spacing.cc
lily/page-turn-page-breaking.cc
lily/parser.yy
lily/scheme-engraver.cc
lily/script-engraver.cc
lily/spacing-spanner.cc
lily/tie-column.cc
lily/vaticana-ligature-engraver.cc
ly/engraver-init.ly
ly/init.ly
make/website.make
mf/feta-accordion.mf
ps/music-drawing-routines.ps
python/auxiliar/postprocess_html.py
python/book_snippets.py
python/convertrules.py
scm/define-grob-interfaces.scm
scm/define-grob-properties.scm
scm/define-grobs.scm
scm/define-markup-commands.scm
scm/define-music-callbacks.scm [new file with mode: 0644]
scm/define-music-display-methods.scm
scm/define-music-properties.scm
scm/define-music-types.scm
scm/define-stencil-commands.scm
scm/define-woodwind-diagrams.scm
scm/display-woodwind-diagrams.scm
scm/lily.scm
scm/ly-syntax-constructors.scm
scm/markup.scm
scm/music-functions.scm
scm/output-ps.scm
scm/output-svg.scm
scm/page.scm
scm/stencil.scm
scripts/auxiliar/GNUmakefile
scripts/auxiliar/cg-section.sh [new file with mode: 0755]
scripts/auxiliar/doc-section.sh [new file with mode: 0755]
scripts/auxiliar/makelsr.py
scripts/auxiliar/node-menuify.py [new file with mode: 0755]
scripts/auxiliar/ref_check.py [new file with mode: 0755]
scripts/auxiliar/ref_check.tely [new file with mode: 0644]
scripts/auxiliar/update-patch-version.sh [new file with mode: 0755]
scripts/build/bib2html.py [deleted file]
scripts/build/bib2texi.py [new file with mode: 0644]
scripts/build/create-weblinks-itexi.py
scripts/build/website_post.py
scripts/musicxml2ly.py

index 62db037332336bcf2913b3df2896d1345be9ae85..e061e629c836bf98e3cb1764c98069d62820746d 100644 (file)
@@ -111,24 +111,37 @@ $(outdir)/ROADMAP:
 $(outdir)/contributor.texi: $(outdir)/ROADMAP
 
 ### bad hack for badly-integrated bibliography
-$(outdir)/engravingbib.itexi:
-       BSTINPUTS=$(src-dir)/essay $(buildscript-dir)/bib2html \
-               -o $(outdir)/colorado.html \
+$(outdir)/colorado.itexi:
+       BSTINPUTS=$(src-dir)/essay $(buildscript-dir)/bib2texi \
+               -o $(outdir)/colorado.itexi \
                $(src-dir)/essay/colorado.bib
-       $(buildscript-dir)/html-to-texi \
-               < $(outdir)/colorado.html > $(outdir)/colorado.itexi
-       BSTINPUTS=$(src-dir)/essay $(buildscript-dir)/bib2html \
-               -o $(outdir)/computer-notation.html \
+
+$(outdir)/computer-notation.itexi:
+       BSTINPUTS=$(src-dir)/essay $(buildscript-dir)/bib2texi \
+               -o $(outdir)/computer-notation.itexi \
                $(src-dir)/essay/computer-notation.bib
-       $(buildscript-dir)/html-to-texi \
-               < $(outdir)/computer-notation.html > $(outdir)/computer-notation.itexi
-       BSTINPUTS=$(src-dir)/essay $(buildscript-dir)/bib2html \
-               -o $(outdir)/engravingbib.html \
+
+$(outdir)/engravingbib.itexi:
+       BSTINPUTS=$(src-dir)/essay $(buildscript-dir)/bib2texi \
+               -o $(outdir)/engravingbib.itexi \
                $(src-dir)/essay/engravingbib.bib
-       $(buildscript-dir)/html-to-texi \
-               < $(outdir)/engravingbib.html > $(outdir)/engravingbib.itexi
 
-$(outdir)/essay.texi: $(outdir)/engravingbib.itexi
+$(outdir)/essay.texi: \
+  $(outdir)/colorado.itexi \
+  $(outdir)/computer-notation.itexi \
+  $(outdir)/engravingbib.itexi
+
+$(outdir)/others-did.itexi:
+       BSTINPUTS=$(src-dir)/web/ $(buildscript-dir)/bib2texi \
+               -s web \
+               -o $(outdir)/others-did.itexi \
+               $(src-dir)/web/others-did.bib
+
+$(outdir)/we-wrote.itexi:
+       BSTINPUTS=$(src-dir)/web/ $(buildscript-dir)/bib2texi \
+               -s web \
+               -o $(outdir)/we-wrote.itexi \
+               $(src-dir)/web/we-wrote.bib
 
 
 ###########
@@ -206,13 +219,19 @@ $(outdir)/pictures:
        $(MAKE) -C pictures WWW-1
        ln -sf ../pictures/$(outdir) $@
 
-$(outdir)/web.texi: $(outdir)/ly-examples
-
 $(outdir)/ly-examples:
        $(MAKE) -C web/ly-examples
        ln -sf ../web/ly-examples/$(outdir) $@
 endif
 
+ifeq ($(out),www)
+$(outdir)/web.texi: $(outdir)/ly-examples $(outdir)/we-wrote.itexi $(outdir)/others-did.itexi
+else
+# duplicate (without ly-examples)
+$(outdir)/web.texi: $(outdir)/we-wrote.itexi $(outdir)/others-did.itexi
+endif
+
+
 # Ugh, using '%' twice not possible
 $(outdir)/notation/notation.xml: $(outdir)/notation.texi
        mkdir -p $(dir $@)
index 76ba8b56d1678b37db6048ab093314fa79bc14eb..7941e85c2762acbd7328ebca349e1a357c75572f 100644 (file)
@@ -66,6 +66,14 @@ which scares away people.
 
 @end ignore
 
+@item
+New option @code{-dinclude-settings=INCLUDEFILE.ly}, which causes lilypond
+to include the given file before the score is processed. This allows the
+user to change global settings without the need to change the score itself.
+That way, several different editions/version (e.g. different page sizes)
+can be generated from a file without having to modify the score for each 
+version.
+
 @item
 The autobeaming settings syntax has been changed.  beatLength,
 beatGrouping, beamSettings, and measureGrouping have all been eliminated.
index 54bd3c2cfeed6cf8c81c6754427a8be0d3222071..ecdb3469dd8db4bb4bb609274daa78a43edb4c11 100644 (file)
@@ -87,7 +87,7 @@ Bug Meister: trains new Bug Squad volunteers, organizes who works
 on which part of their job, checks to make sure that everything is
 running smoothly, and has final say on our policy for Issues.
 
-Currently: Graham
+Currently: Phil
 
 @item
 Doc Meister: trains new doc editors/writers, organizes who works
index 8a259bf079d22ddae17f4571a0a8ce71ab9702ef..a72560c967bbf369ab45fd9f18273d36b16cbe19 100644 (file)
@@ -16,7 +16,7 @@ Priorities:
 Files of priority 1 should be submitted along all files generated by
 starting a new language in the same commit and thus a unique patch, and
 the translation of files marked with priority 2 should be committed to
-Git at the same time and thus sent in a single patch. Files
+Git at the same time and thus sent in a single patch.  Files
 marked with priority 3 or more may be submitted individually.  Word
 counts (excluding LilyPond snippets) are given for each file.  For
 knowing how to commit your work to Git, then make patches of your new
index 3cc7de0e293a5915b2ec19c2141337376183dd94..cab96b90a405ed5831f84a8a5c5d666637c4c38c 100644 (file)
@@ -76,7 +76,7 @@ For additions to the documentation,
 @enumerate
 
 @item
-Tell us where the addition should be placed. Please include both
+Tell us where the addition should be placed.  Please include both
 the section number and title (i.e. "LM 2.13 Printing lyrics").
 
 @item
@@ -84,7 +84,7 @@ Please write exact changes to the text.
 
 @item
 A formal patch to the source code is @emph{not} required; we can
-take care of the technical details. Here is an example of a
+take care of the technical details.  Here is an example of a
 perfect documentation report:
 
 @verbatim
@@ -122,7 +122,7 @@ Helpful User
 @subheading Larger contributions
 
 To replace large sections of the documentation, the guidelines are
-stricter. We cannot remove parts of the current documentation
+stricter.  We cannot remove parts of the current documentation
 unless we are certain that the new version is an improvement.
 
 @enumerate
@@ -141,7 +141,7 @@ Please prepare a formal git patch.
 @end enumerate
 
 Once you have followed these guidelines, please send a message to
-lilypond-devel with your documentation submissions. Unfortunately
+lilypond-devel with your documentation submissions.  Unfortunately
 there is a strict “no top-posting” check on the mailing list; to avoid
 this, add:
 
@@ -369,7 +369,7 @@ excepted in Templates, where `doctitle' may be omitted.
 
 @item
 Avoid long stretches of input code.  Nobody is going to read
-them in print.  Create small examples. However, this does not mean
+them in print.  Create small examples.  However, this does not mean
 it has be minimal.
 
 @item
@@ -1294,6 +1294,65 @@ the difficulty.
 @node Scripts to ease doc work
 @section Scripts to ease doc work
 
+@subheading Building only one section of the documentation
+
+In order to save build time, a script is available to build only
+one section of the documentation in English with a default html
+appearance.
+
+The script is available as:
+
+@example
+scripts/auxiliar/doc-section.sh
+@end example
+
+This script will require customization for your site if your
+LilyPond git repository is anyplace but @code{$HOME/lilypond}.
+
+Assuming that no customization is required, you can setup the
+single section build with:
+
+@example
+mkdir $HOME/lilypond/tempdocs
+cp $HOME/lilypond/Documentation/out/version.itexi $HOME/lilypond/tempdocs
+@end example
+
+You can then build a section of the documentation with:
+
+@example
+scripts/auxiliar/doc-section.sh MANUAL SECTION
+@end example
+
+@noindent
+where @code{SECTION} is the name of the file containing the section
+to be build, and @code{MANUAL} isc replaced by the name of the directory
+containing the section.  So, for example, to build section 1.1 of the
+Notation Reference, use the command:
+
+@example
+scripts/auxiliar/doc-section.sh notation pitches
+@end example
+
+This script will not work for building sections of the
+Contributors' guide.  For building sections of the Contributors'
+Guide, use:
+
+@example
+scripts/auxiliar/cg-section.sh SECTION
+@end example
+
+@noindent
+where @code{SECTION} is the name of the file containing the sections
+to be built.  For example, to build section 4 of the Contributors' guide,
+use:
+
+@example
+scripts/auxiliar/cg-section.sh doc-work
+@end example
+
+Like @code{doc-section.sh}, @code{cg-section.sh} may need to be customized
+for your installation.
+
 @subheading Stripping whitespace
 
 @c TODO: should this be documented elsewhere?  It's useful for
@@ -1353,7 +1412,7 @@ to work on them, please ask for help.
 
 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,
+get support from the Translations Meister and experienced translators,
 and we regularly discuss translation issues common to all languages.
 All people interested in LilyPond translations are invited to subscribe
 to this list regardless of the amount of their contribution, by sending
@@ -1361,7 +1420,7 @@ an email to @code{translations-request@@lilynet.net} with subject
 @code{subscribe} and an empty message body.  Unless mentioned explicitly,
 or except if a translations coordinator contacts you privately, you
 should send questions, remarks and patches to the list
-@code{translations@@lilynet.net}. Please note that traffic is high
+@code{translations@@lilynet.net}.  Please note that traffic is high
 on the English-speaking list @code{lilypond-user@@gnu.org}, so it may
 take some time before your request or contribution is handled.
 
@@ -1527,7 +1586,7 @@ should at least write the node definition (that is, the @code{@@node
 @@@var{section_commmand} @@translationof} trio mentioned above) in the
 expected source file and define all its parent nodes; for each node you
 have defined this way but have not translated, insert a line that
-contains @code{@@untranslated}. That is, you should end up
+contains @code{@@untranslated}.  That is, you should end up
 for each untranslated node with something like
 
 @example
@@ -1577,7 +1636,7 @@ from the direct translation of a piece of English translation, using
 comments i.e. lines starting with @q{@code{@@c}}.
 
 Finally, press in Emacs @key{C-c C-u C-a} to update or generate
-menus. This process should be made easier in the future, when the helper
+menus.  This process should be made easier in the future, when the helper
 script @command{texi-langutils.py} and the makefile target are updated.
 
 Some pieces of text manipulated by build scripts that appear in the
index b3c8404d8c0a29845ccc102224cf074acaf811cd..df1a6cb2bc371548fd99347b231be35178850004 100644 (file)
@@ -91,6 +91,10 @@ Configure your email client:
 Any email sent with your gmail address in the @code{To:} or
 @code{CC:} fields should go to a @code{bug-answers} folder.
 
+When setting up your filtering rules, be aware that Google Code
+might use different versions of your email address, such as ones
+ending in @code{@@googlemail.com} or @code{@@gmail.com}.
+
 @item
 Any other email either from, or CC'd to,
 
@@ -143,13 +147,15 @@ the currently-active Bug Squad member(s) can handle the message.
 
 @subsubheading Daily schedule
 
+The Bug Meister is omitted from the daily schedule.
+
 @example
 Sunday: Valentin
 Monday: Dmytro
 Tuesday: James Bailey
 Wednesday: Ralph
-Thursday: Phil Holmes
-Friday: Urs Liska, Patrick
+Thursday: Patrick
+Friday: Urs
 Saturday: Kieren
 @end example
 
@@ -372,7 +378,7 @@ information is available from in @ref{Regression tests}.
 @item
 Checking all issues: we try to mark each Issue @q{fixed} when we
 fix it, but occasionally one or two issues will slip through the
-cracks.  It is therefore good to check all Issues. If you see the
+cracks.  It is therefore good to check all Issues.  If you see the
 same (broken) output as the initial report, then simply post a
 @qq{Problem still exists in 2.x.y} message to the issue.
 
index e1e770a560c59f9bb898d2735070bdc9483543bb..85afbc6357a1fff9d7be71d982e57dd05a946526 100644 (file)
@@ -8,6 +8,7 @@
 * Approving snippets::
 * LSR to Git::
 * Fixing snippets in LilyPond sources::
+* Renaming a snippet::
 * Updating LSR to a new version::
 @end menu
 
@@ -80,11 +81,16 @@ When adding a file to this directory, please start the file with
 @example
 \version "2.x.y"
 \header @{
-  lsrtags = "rhythms,expressive-marks"  % use existing LSR tags other than
-%   'docs'; see makelsr.py for the list of tags used to sort snippets.
-  texidoc = "This code demonstrates ..."  % this will be formated by Texinfo
-  doctitle = "Snippet title"  % please put this at the end so that
-    the '% begin verbatim' mark is added correctly by makelsr.py.
+% Use existing LSR tags other than 'docs'; see makelsr.py for
+% the list of tags used to sort snippets.  E.g.:
+  lsrtags = "rhythms,expressive-marks"
+% This texidoc string will be formatted by Texinfo
+  texidoc = "
+This code demonstrates ...
+"
+% Please put doctitle last so that the '% begin verbatim'
+% mark will be added correctly by makelsr.py.
+  doctitle = "Snippet title"
 @}
 @end example
 
@@ -218,6 +224,31 @@ In any case, commit all changes to Git.
 @end enumerate
 
 
+@node Renaming a snippet
+@section Renaming a snippet
+
+Due to the potential duality of snippets (i.e. they may exist both
+in the LSR database, and in @code{Documentation/snippets/new/}),
+this process is a bit more involved than we might like.
+
+@enumerate
+@item
+Send an email LSR editor, requesting the renaming.
+
+@item
+The LSR editor does the renaming (or debates the topic with you),
+then warns the LSR-to-git person (wanted: better title) about the
+renaming.
+
+@item
+LSR-to-git person does his normal job, but then also renames any
+copies of the snippets in @code{Documentation/snippets/new/}, and
+any instances of the snippet name in the documentation.
+
+@code{git grep} is highly recommended for this task.
+
+@end enumerate
+
 
 @node Updating LSR to a new version
 @section Updating LSR to a new version
index ddf57c9a5e7d389f4dbc7350c6623c85f7d47abe..ef917b5afcd41ec39e22f77f8ef51ae916f535ca 100644 (file)
@@ -48,7 +48,7 @@ music event is assigned a moment, or a time in the music when the event
 begins.
 
 Each type of music event has an associated iterator.  Iterators are defined in
-*-iterator.cc. During iteration, an
+*-iterator.cc.  During iteration, an
 event's iterator is called to deliver that music event to the appropriate
 context(s).
 
@@ -194,7 +194,7 @@ in the documentation.  You can find these guidelines at
 When making changes or fixing bugs in LilyPond, one of the initial
 challenges is finding out where in the code tree the functions to
 be modified live.  With nearly 3000 files in the source tree,
-trial-and-error searching is generally ineffective. This section
+trial-and-error searching is generally ineffective.  This section
 describes a process for finding interesting code.
 
 @subsection Using the ROADMAP
@@ -317,7 +317,7 @@ The class Class_name is coded in @q{class-name.*}
 @node Indentation
 @subsection Indentation
 
-Standard GNU coding style is used. In emacs:
+Standard GNU coding style is used.  In emacs:
 
 @verbatim
              (add-hook 'c++-mode-hook
@@ -556,7 +556,7 @@ future.  Even better would be to have an English (en_BR, en_AM)
 guide helping programmers writing consistent messages for all GNU
 programs.
 
-Non-preferred messages are marked with `+'. By convention,
+Non-preferred messages are marked with `+'.  By convention,
 ungrammatical examples are marked with `*'.  However, such ungrammatical
 examples may still be preferred.
 
@@ -564,7 +564,7 @@ examples may still be preferred.
 
 @item
 Every message to the user should be localized (and thus be marked
-for localization). This includes warning and error messages.
+for localization).  This includes warning and error messages.
 
 @item
 Do not localize/gettextify:
@@ -593,10 +593,10 @@ warning (_ ("need music in a score"));
 error (_f ("cannot open file: `%s'", file_name));
 @end example
 
-In some rare cases you may need to call `gettext ()' by hand. This
+In some rare cases you may need to call `gettext ()' by hand.  This
 happens when you pre-define (a list of) string constants for later
-use. In that case, you'll probably also need to mark these string
-constants for translation, using `_i (STRING)'. The `_i' macro is
+use.  In that case, you'll probably also need to mark these string
+constants for translation, using `_i (STRING)'.  The `_i' macro is
 a no-op, it only serves as a marker for `xgettext'.
 
 @example
@@ -616,7 +616,7 @@ foo (int i)
 See also `flower/getopt-long.cc' and `lily/main.cc'.
 
 @item
-Do not use leading or trailing whitespace in messages. If you need
+Do not use leading or trailing whitespace in messages.  If you need
 whitespace to be printed, prepend or append it to the translated
 message
 
@@ -633,7 +633,7 @@ foo.ly: 12: not a duration: 3
 @end example
 
 Messages containing a final verb, or a gerund (`-ing'-form) always
-start with a capital. Other (simpler) messages start with a
+start with a capital.  Other (simpler) messages start with a
 lowercase letter
 
 @example
@@ -647,7 +647,7 @@ Avoid abbreviations or short forms, use `cannot' and `do not'
 rather than `can't' or `don't'
 To avoid having a number of different messages for the same
 situation, well will use quoting like this `"message: `%s'"' for all
-strings. Numbers are not quoted:
+strings.  Numbers are not quoted:
 
 @example
 _f ("cannot open file: `%s'", name_str)
@@ -655,9 +655,9 @@ _f ("cannot find character number: %d", i)
 @end example
 
 @item
-Think about translation issues. In a lot of cases, it is better to
-translate a whole message. English grammar must not be imposed on the
-translator. So, instead of
+Think about translation issues.  In a lot of cases, it is better to
+translate a whole message.  English grammar must not be imposed on the
+translator.  So, instead of
 
 @example
 stem at  + moment.str () +  does not fit in beam
@@ -670,7 +670,7 @@ _f ("stem at %s does not fit in beam", moment.str ())
 @end example
 
 @item
-Split up multi-sentence messages, whenever possible. Instead of
+Split up multi-sentence messages, whenever possible.  Instead of
 
 @example
 warning (_f ("out of tune!  Can't find: `%s'", "Key_engraver"));
@@ -688,7 +688,7 @@ warning (_f ("Loading default font"));
 
 @item
 If you must have multiple-sentence messages, use full punctuation.
-Use two spaces after end of sentence punctuation. No punctuation
+Use two spaces after end of sentence punctuation.  No punctuation
 (esp. period) is used at the end of simple messages.
 
 @example
@@ -699,14 +699,14 @@ _f ("Huh?  Not a Request: `%s'.  Ignoring.", request)
 
 @item
 Do not modularize too much; words frequently cannot be translated
-without context. It is probably safe to treat most occurrences of
+without context.  It is probably safe to treat most occurrences of
 words like stem, beam, crescendo as separately translatable words.
 
 @item
 When translating, it is preferable to put interesting information
 at the end of the message, rather than embedded in the middle.
 This especially applies to frequently used messages, even if this
-would mean sacrificing a bit of eloquency. This holds for original
+would mean sacrificing a bit of eloquency.  This holds for original
 messages too, of course.
 
 @example
@@ -719,7 +719,7 @@ niet te openen: `foo.ly'*    (3)
 
 The first nl message, although grammatically and stylistically
 correct, is not friendly for parsing by humans (even if they speak
-dutch). I guess we would prefer something like (2) or (3).
+dutch).  I guess we would prefer something like (2) or (3).
 
 @item
 Do not run make po/po-update with GNU gettext < 0.10.35
@@ -1026,7 +1026,7 @@ performs in evaluating the procedure.
 @section Tracing object relationships
 
 Understanding the LilyPond source often boils down to figuring out what
-is happening to the Grobs. Where (and why) are they being created,
+is happening to the Grobs.  Where (and why) are they being created,
 modified and destroyed? Tracing Lily through a debugger in order to
 identify these relationships can be time-consuming and tedious.
 
@@ -1758,7 +1758,7 @@ pipeline, is it not too late??
 Joe Neeman answered:
 
 We create lots of extra grobs (eg. a BarNumber at every bar line) but
-most of them are not drawn. See the break-visibility property in
+most of them are not drawn.  See the break-visibility property in
 item-interface.
 
 
@@ -1775,7 +1775,7 @@ the body text are Han-Wen's answers.
 @subheading Figuring out how things work.
 
 I must admit that when I want to know how a program works, I use grep
-and emacs and dive into the source code. The comments and the code
+and emacs and dive into the source code.  The comments and the code
 itself are usually more revealing than technical documents.
 
 @subheading What's a grob, and how is one used?
@@ -1786,7 +1786,7 @@ class) -notes, clefs, etc.
 
 There are two other derived classes System (derived from Spanner,
 containing a "line of music") and Paper_column (derived from Item, it
-contains all items that happen at the same moment). They are separate
+contains all items that happen at the same moment).  They are separate
 classes because they play a special role in the linebreaking process.
 
 @subheading What's a smob, and how is one used?
@@ -1812,7 +1812,7 @@ Constructed during "interpreting" phase.
 Engravers
 
 Executive branch of Contexts, plugins that create grobs, usually one
-engraver per grob type. Created  together with context.
+engraver per grob type.  Created  together with context.
 
 @item
 Layout Objects
@@ -1822,9 +1822,9 @@ Layout Objects
 @item
 Grob Interfaces
 
-These are not C++ classes per se. The idea of a Grob interface hasn't
-crystallized well. ATM, an interface is a symbol, with a bunch of grob
-properties. They are not objects that are created or destroyed.
+These are not C++ classes per se.  The idea of a Grob interface hasn't
+crystallized well.  ATM, an interface is a symbol, with a bunch of grob
+properties.  They are not objects that are created or destroyed.
 
 @item
 Iterators
@@ -1843,20 +1843,20 @@ BTW, the entry point for interpreting is ly:run-translator
 @subheading Can you get to Context properties from a Music object?
 
 You can create music object with a Scheme function that reads context
-properties (the \applycontext syntax). However, that function is
+properties (the \applycontext syntax).  However, that function is
 executed during Interpreting, so you can not really get Context
 properties from Music objects, since music objects are not directly
-connected to Contexts. That connection is made by the  Music_iterators
+connected to Contexts.  That connection is made by the  Music_iterators
 
 @subheading Can you get to Music properties from a Context object?
 
 Yes, if you are given the music object within a Context
-object. Normally, the music objects enter Contexts in synchronized
+object.  Normally, the music objects enter Contexts in synchronized
 fashion, and the synchronization is done by Music_iterators.
 
 @subheading What is the relationship between C++ classes and Scheme objects?
 
-Smobs are C++ objects in Scheme. Scheme objects (lists, functions) are
+Smobs are C++ objects in Scheme.  Scheme objects (lists, functions) are
 manipulated from C++ as well using the GUILE C function interface
 (prefix: scm_)
 
@@ -1873,11 +1873,11 @@ Export a C++ function to Scheme with LY_DEFINE.
 
 Good question.  Things used to be clear-cut, but we have Scheme
 and SMOBs now, which means that interactions do not follow a very
-rigid format anymore. See below for an overview, though.
+rigid format anymore.  See below for an overview, though.
 
 @subheading Does the parser make Scheme procedure calls or C++ function calls?
 
-Both. And the Scheme calls can call C++ and vice versa. It's nested,
+Both.  And the Scheme calls can call C++ and vice versa.  It's nested,
 with the SCM datatype as lubrication between the interactions
 
 (I think the word "lubrication" describes the process better than the
@@ -1885,7 +1885,7 @@ traditional word "glue")
 
 @subheading How do the front-end and back-end get started?
 
-Front-end: a file is parsed, the rest follows from that. Specifically,
+Front-end: a file is parsed, the rest follows from that.  Specifically,
 
 Parsing leads to a Music + Music_output_def object (see parser.yy,
 definition of toplevel_expression )
@@ -1894,15 +1894,15 @@ A Music + Music_output_def object leads to a Global_context object (see
 ly_run_translator ())
 
 During interpreting, Global_context + Music leads to a bunch of
-Contexts. (see Global_translator::run_iterator_on_me () )
+Contexts (see Global_translator::run_iterator_on_me ()).
 
 After interpreting, Global_context contains a Score_context (which
-contains staves, lyrics etc.) as a child. Score_context::get_output ()
+contains staves, lyrics etc.) as a child.  Score_context::get_output ()
 spews a Music_output object (either a Paper_score object for notation
 or Performance object for MIDI).
 
-The Music_output object is the entry point for the backend. (see
-ly_render_output () )
+The Music_output object is the entry point for the backend (see
+ly_render_output ()).
 
 The main steps of the backend itself are in
 
@@ -1924,14 +1924,14 @@ to produce TeX and PS.
 @end itemize
 
 Interactions between grobs and putting things into .tex and .ps files
-have gotten a little more complex lately. Jan has implemented
+have gotten a little more complex lately.  Jan has implemented
 page-breaking, so now the backend also involves Paper_book,
-Paper_lines and other things. This area is still heavily in flux, and
+Paper_lines and other things.  This area is still heavily in flux, and
 perhaps not something you should want to look at.
 
 @subheading How do the front-end and back-end communicate?
 
-There is no communication from backend to front-end. From front-end to
+There is no communication from backend to front-end.  From front-end to
 backend is simply the program flow: music + definitions gives
 contexts, contexts yield output, after processing, output is written
 to disk.
@@ -1958,7 +1958,7 @@ Music_iterators can set and read context properties, idem for
 Engravers and Contexts
 
 Music_iterators can send "synthetic" music events (which aren't in
-the input) to a context. These are caught by Engravers. This is
+the input) to a context.  These are caught by Engravers.  This is
 mostly a one way communication channel.
 
 part-combine-status is part of such a synthetic event, used by
@@ -1973,14 +1973,14 @@ procedure has a Music argument.  Does this mean I should use
 a Music property?
 
 \autochange is one of these extra strange beasts: it requires
-look-ahead to decide when to change staves. This is achieved by
+look-ahead to decide when to change staves.  This is achieved by
 running the interpreting step twice (see scm/part-combiner.scm , at
 the bottom), and storing the result of the first step (where to switch
 staves) in a Music property.  Since you want to influence that
 where-to-switch list, your must affect the code in
-make-autochange-music (scm/part-combiner.scm). That code is called
+make-autochange-music (scm/part-combiner.scm).  That code is called
 directly from the parser and there are no official "parsing
-properties" yet, so there is no generic way to tune \autochange. We
+properties" yet, so there is no generic way to tune \autochange.  We
 would have to invent something new for this, or add a separate
 argument,
 
@@ -2065,8 +2065,8 @@ while to figure that out, and I still didn't know who did the calling in the
 first place.  I only know a little bit about Flex and Bison, so reading those
 files helped only a little bit.
 
-@emph{Han-Wen:} GDB can be of help here. Set a breakpoint in C++, and run. When you
-hit the breakpoint, do a backtrace. You can inspect Scheme objects
+@emph{Han-Wen:} GDB can be of help here.  Set a breakpoint in C++, and run.  When you
+hit the breakpoint, do a backtrace.  You can inspect Scheme objects
 along the way by doing
 
 @example
index f421a007d92ef2f79e4917968f8fcb8ba2824571..e1bbe3d464579e3f7706a354b2ae0aa00d38a949 100644 (file)
@@ -80,28 +80,52 @@ comparisons is archived online:
 @uref{http://lilypond.org/test/}
 @end example
 
-The test comparison shows all of the changes that occurred between
-the current release and the prior release.  Each test that has
-a significant difference in output is displayed, with the old
-version on the left and the new version on the right.  Blurs
-in the regression tests for the new version show the approximate
-location of elements in the old version.
-
-Regression tests whose output is the same for both versions are not
-shown in the test comparison.
-
 Checking these pages is a very important task for the LilyPond project.
 You are invited to report anything that looks broken, or any case
 where the output quality is not on par with the previous release,
 as described in @rweb{Bug reports}.
 
+@warning{ The special regression test
+@file{test@/-output@/-distance@/.ly} will always show up as a
+regression.  This test changes each time it is run, and serves to
+verify that the regression tests have, in fact, run.}
+
+
+@subheading What to look for
+
+The test comparison shows all of the changes that occurred between
+the current release and the prior release.  Each test that has a
+significant difference in output is displayed, with the old
+version on the left and the new version on the right.
+
+Regression tests whose output is the same for both versions are
+not shown in the test comparison.
+
+@itemize
+@item
+Images: green blurs in the new version show the approximate
+location of elements in the old version.
+
+There are often minor adjustments in spacing which do not indicate
+any problem.
+
+@item
+Log files: show the difference in command-line output.
+
+The main thing to examine are any changes in page counts -- if a
+file used to fit on 1 page but now requires 4 or 5 pages,
+something is suspicious!
+
+@item
+Profile files: give information about
+TODO?  I don't know what they're for.
+
+@end itemize
+
 @warning{
-The automatic comparison of the regtests checks the
-LilyPond bounding boxes and the log files.  This means that
-Ghostscript changes and changes in
-lyrics or text are not found.  However, errors and warnings that
-are printed to the log file but
-do not change the graphical layout are also identified.
+The automatic comparison of the regtests checks the LilyPond
+bounding boxes.  This means that Ghostscript changes and changes
+in lyrics or text are not found.
 }
 
 @node Compiling regression tests
index 10bf481b362020139b447833825b020483885e80..bc75eaf62301f4b021024acdc0198b674f8fbabb 100644 (file)
 @node Development phases
 @section Development phases
 
-There are 2.5 states of development for LilyPond.
+There are 2 states of development on @code{master}:
 
-@itemize
+@enumerate
+
+@item @strong{Normal development}:
+Any commits are fine.
 
-@item @strong{Stable phase}:
-Starting from the release of a new major version @code{2.x.0}, the
-following patches @strong{MAY NOT} be merged with master:
+@item @strong{Build-frozen}:
+Do not require any additional or updated libraries or make
+non-trivial changes to the build process.  Any such patch (or
+branch) may not be merged with master during this period.
+
+This should occur approximately 1 month before any alpha version
+of the next stable release, and ends when the next unstable branch
+begins.
+
+@end enumerate
+
+
+After announcing a beta release, branch @code{stable/2.x}.  There
+are 2 states of development for this branch:
+
+@enumerate
+@item @strong{Normal maintenance}:
+The following patches @strong{MAY NOT} be merged with this branch:
 
 @itemize
 @item Any change to the input syntax.  If a file compiled with a
-previous @code{2.x} version, then it must compile in the new
-version.
+previous @code{2.x} (beta) version, then it must compile in the
+new version.
+
+Exception: any bugfix to a Critical issue.
 
 @item New features with new syntax @emph{may be committed},
 although once committed that syntax cannot change during the
@@ -38,38 +58,10 @@ version.
 
 @end itemize
 
-@item @strong{Development phase}:
-Any commits are fine.  Readers may be familiar with the term
-@qq{merge window} from following Linux kernel news.
-
-
-@item @strong{Release prep phase}:
-TODO: I don't like that name.
-
-A new git branch @code{stable/2.x} is created, and a major release
-is made in two weeks.
-
-@itemize
-
-@item @code{stable/2.x branch}:
-Only translation updates and important bugfixes are allows.
-
-@item @code{master}:
-Normal @qq{stable phase} development occurs.
-
-@end itemize
-
-If we discover the need to change the syntax or build system, we
-will apply it and re-start the release prep phase.
-
-@end itemize
-
-This marks a radical change from previous practice in LilyPond.
-However, this setup is not intended to slow development -- as a
-rule of thumb, the next development phase will start within a
-month of somebody wanting to commit something which is not
-permitted during the stable phase.
+@item @strong{Release prep}:
+Only translation updates and important bugfixes are allowed.
 
+@end enumerate
 
 
 @node Minor release checklist
@@ -99,9 +91,6 @@ git commit -m "Release: update news." Documentation/web/
 git push origin
 @end example
 
-@item (optional) Check that lilypond builds from scratch in an
-out-of-tree build.
-
 @item
 If you do not have the previous release test-output tarball, download
 it and put it in @code{regtests/}
@@ -121,13 +110,13 @@ make LILYPOND_BRANCH=stable/2.12 lilypond
 
 @item Check the regtest comparison in @file{uploads/@/webtest/} for
 any unintentional breakage.  More info in
-@ref{Precompiled regression tests}
+@ref{Precompiled regression tests}.
 
 @item If any work was done on GUB since the last release, upload
 binaries to a temporary location, ask for feedback, and wait a day
-or two in case there's any major problems.  Or live dangerously
-and just add a sentence to the release notes.  Or live even more
-dangerously, and don't tell anybody anything.
+or two in case there's any major problems.
+
+@warning{Always do this for a stable release.}
 
 @end enumerate
 
@@ -136,23 +125,31 @@ dangerously, and don't tell anybody anything.
 
 @enumerate
 
-@item If you're not right user on the webserver, remove the "t"
-from the rsync command in @file{test@/-lily/@/rsync@/-lily@/-doc@/.py} and
-@file{test@/-lily/@/rsync@/-test@/.py}
+@item If you're not the right user on the webserver, remove the
+@code{t} from the rsync command in:
+
+@example
+test-lily/rsync-lily-doc.py
+test-lily/rsync-test.py
+@end example
 
 @code{graham} owns v2.13; @code{han-wen} owns v2.12.
 
 @item Upload GUB by running:
 
 @example
-make lilypond-upload LILYPOND_BRANCH=release/unstable LILYPOND_REPO_URL=git://git.sv.gnu.org/lilypond.git
+make lilypond-upload \
+  LILYPOND_REPO_URL=git://git.sv.gnu.org/lilypond.git \
+  LILYPOND_BRANCH=release/unstable
 @end example
 
 @noindent
 or something like:
 
 @example
-make lilypond-upload LILYPOND_BRANCH=stable/2.12 LILYPOND_REPO_URL=git://git.sv.gnu.org/lilypond.git
+make lilypond-upload \
+  LILYPOND_REPO_URL=git://git.sv.gnu.org/lilypond.git \
+  LILYPOND_BRANCH=stable/2.12
 @end example
 
 @end enumerate
@@ -221,112 +218,153 @@ rsync -a $EXAMPLES graham@@lilypond.org:media/ly-examples
 
 A @qq{major release} means an update of @code{x} in @code{2.x.0}.
 
-- happens when we have 0 Critical issues for two weeks (14 days).
+@subheading Main requirements
 
+This is the current official guidelines.
 
-Before release:
+@itemize
+@item
+0 Critical issues for two weeks (14 days) after the latest release
+candidate.
 
-* write release notes. note: stringent size requirements for
- various websites, so be brief.
+@end itemize
 
-* write preface section for manual.
 
-* submit pots for translation : send url of tarball to
-translation@@iro.umontreal.ca, mentioning lilypond-VERSION.pot
+@subheading Potential requirements
+
+These might become official guidelines in the future.
+
+@itemize
+@item
+Check reg test
+
+@item
+Check all 2ly scripts
+
+@item
+Check for emergencies the docs:
 
-* Check reg test
+@example
+grep FIXME --exclude "misc/*" --exclude "*GNUmakefile" \
+  --exclude "snippets/*" ????*/*
+@end example
 
-* Check all 2ly scripts.
+@item
+Check for altered regtests, and document as necessary.  (update
+numbers in the following command as appropriate)
 
-* Run convert-ly on all files, bump parser minimum version.
+@example
+git diff -u -r release/2.12.0-1 -r release/2.13.13-1 input/regression/
+@end example
 
-* update links to distros providing lilypond packages?  link in
-Documentation/web/download.itexi .  This has nothing to do with
-the release, but I'm dumping this here so I'll find it when I
-reorganize this list later.  -gp
+@end itemize
 
-* Make FTP directories on lilypond.org
 
-* website:
-  - Make new table in download.html
+@subheading Housekeeping requirements
 
-  - add to documentation list
+Before the release:
+
+@itemize
+@item
+write release notes.  note: stringent size requirements for
+various websites, so be brief.
 
-  - revise examples tour.html/howto.html
+@item
+Run convert-ly on all files, bump parser minimum version.
 
-  - add to front-page quick links
+@item
+Make FTP directories on lilypond.org
 
-  - change all links to the stable documentation
+@item
+Website:
 
-  - make a link from the old unstable to the next stable in
-    lilypond.org's /doc/ dir.  Keep all previous unstable->stable
-    doc symlinks.
+@itemize
+@item
+make a link from the old unstable to the next stable in
+lilypond.org's /doc/ dir.  Keep all previous unstable->stable doc
+symlinks.
 
-  - doc auto redirects  to v2.LATEST-STABLE
+@item
+doc auto redirects  to v2.LATEST-STABLE
 
-  - add these two lines to http://www.lilypond.org/robots.txt:
+@item
+add these two lines to http://www.lilypond.org/robots.txt:
 
 @example
 Disallow: /doc/v2.PREVIOUS-STABLE/
 Disallow: /doc/v2.CURRENT-DEVELOPMENT/
 @end example
 
-- check for emergencies the docs:
+@end itemize
 
-@example
-grep FIXME --exclude "misc/*" --exclude "*GNUmakefile" \
-  --exclude "snippets/*" ????*/*
-@end example
+@end itemize
 
-- check for altered regtests, and document as necessary.  (update
-  tags as appropriate)
+@subheading Unsorted
 
-@example
-git diff -u -r release/2.12.0-1 -r release/2.13.13-1 input/regression/
-@end example
+@itemize
+@item
+submit pots for translation: send url of tarball to
+translation@@iro.umontreal.ca, mentioning lilypond-VERSION.pot
+
+@item
+update links to distros providing lilypond packages?  link in:
+@file{Documentation@/web@/download.itexi}
 
+This has nothing to do with the release, but it's a "periodic
+maintenance" task that might make sense to include with releases.
+
+@item
+Send announcements to...
 
 News:
 
-        comp.music.research
-        comp.os.linux.announce
+@example
+comp.music.research
+comp.os.linux.announce
 
-        comp.text.tex
-        rec.music.compose
+comp.text.tex
+rec.music.compose
+@end example
 
 Mail:
 
-        info-lilypond@@gnu.org
+@example
+info-lilypond@@gnu.org
 
 linux-audio-announce@@lists.linuxaudio.org
 linux-audio-user@@lists.linuxaudio.org
 linux-audio-dev@@lists.linuxaudio.org
 
-        tex-music@@icking-music-archive.org
+tex-music@@icking-music-archive.org
 
-   --- non-existant?
-        abcusers@@blackmill.net
+--- non-existant?
+abcusers@@blackmill.net
 
-        rosegarden-user@@lists.sourceforge.net
-        info-gnu@@gnu.org
-        noteedit-user@@berlios.de
+rosegarden-user@@lists.sourceforge.net
+info-gnu@@gnu.org
+noteedit-user@@berlios.de
 
-        gmane.comp.audio.fomus.devel
-        gmane.linux.audio.users
-        gmane.linux.audio.announce
-        gmane.comp.audio.rosegarden.devel
+gmane.comp.audio.fomus.devel
+gmane.linux.audio.users
+gmane.linux.audio.announce
+gmane.comp.audio.rosegarden.devel
+@end example
 
 Web:
 
-        lilypond.org
-        freshmeat.net
-        linuxfr.com
-        http://www.apple.com/downloads
-        harmony-central.com (news@@harmony-central.com)
-        versiontracker.com [auto]
-        hitsquad.com [auto]
-        http://www.svgx.org
-        https://savannah.gnu.org/news/submit.php?group_id=1673  @c => planet.gnu.org
+@example
+lilypond.org
+freshmeat.net
+linuxfr.com
+http://www.apple.com/downloads
+harmony-central.com (news@@harmony-central.com)
+versiontracker.com [auto]
+hitsquad.com [auto]
+http://www.svgx.org
+https://savannah.gnu.org/news/submit.php?group_id=1673  @c => planet.gnu.org
+@end example
+
+@end itemize
 
 
 @node Release extra notes
@@ -346,7 +384,7 @@ take lilypond-book and any related makefile updates from the
 latest git.
 
 @item
-configure; make; make test
+configure; make; make test
 
 @item
 tar -cjf lilypond-X.Y.Z-A.test-output.tar.bz2 input/regression/out-test/
index ac3ccc0674acb1f28294bd0d3c6ee24c4a0cfe79..e266036f4da6e9b32b750360a0a7d8581c3fb11b 100644 (file)
@@ -883,7 +883,7 @@ that looks like this:
 
 @example
 
-# Please enter the commit message for your changes. Lines starting
+# Please enter the commit message for your changes.  Lines starting
 # with '#' will be ignored, and an empty message aborts the commit.
 # On branch master
 # Changes to be committed:
@@ -1637,7 +1637,7 @@ clicking on the usual Windows close-window widget.
 @subsection Git GUI
 
 Almost all subsequent work will use the Git Graphical User
-Interface, which avoids having to type command line commands. To
+Interface, which avoids having to type command line commands.  To
 start Git GUI first start the Git bash shell by clicking on the
 desktop icon, and type
 
index 427feac96d354546863926922653e451470fc69c..4d71c32e97e2400b18f00b751c7797f186517889 100644 (file)
@@ -16,10 +16,10 @@ The website is @emph{not} written directly in HTML;
 instead, the source is Texinfo, which is then generated into HTML,
 PDF, and Info formats.  The sources are
 
-@verbatim
+@example
 Documentation/web.texi
 Documentation/web/*.texi
-@end verbatim
+@end example
 
 Unless otherwise specified, follow the instructions and policies
 given in @ref{Documentation work}.  That chapter also contains a
@@ -43,7 +43,7 @@ the IR or certain NR appendices.
 
 @item
 For anything not listed here, just follow the same style as the
-existing texinfo files.
+existing website texinfo files.
 
 @end itemize
 
@@ -77,6 +77,32 @@ chgrp lilypond ~graham/lilypond/ -R
 chmod 775 ~graham/lilypond/ -R
 @end example
 
+To reduce the CPU burden on the shared host (as well as some
+security concerns), the @file{Documentation/@/pictures/} and
+@file{Documentation/@/web/@/ly-examples/} directories are
+@strong{not} compiled.  You need to upload them, and if they ever
+change, a user in the @code{lilypond} group must upload them to
+@file{~graham/@/media} on the host.
+
+Upload latest pictures/ and ly-examples/ (local script):
+
+@warning{You may need to change a number of items in the below
+script.}
+
+@verbatim
+### upload-lily-web-media.sh
+#!/bin/sh
+BUILD_DIR=$HOME/src/build-lilypond
+
+PICS=$BUILD_DIR/Documentation/pictures/out-www/
+EXAMPLES=$BUILD_DIR/Documentation/web/ly-examples/out-www/
+
+cd $BUILD_DIR
+rsync -a $PICS graham@lilypond.org:media/pictures
+rsync -a $EXAMPLES graham@lilypond.org:ly-examples
+@end verbatim
+
+
 
 @subheading Normal maintenance
 
@@ -104,6 +130,7 @@ diff -u $DEST/create-version-itexi.py $GIT/scripts/build/create-version-itexi.py
 diff -u $DEST/create-weblinks-itexi.py $GIT/scripts/build/create-weblinks-itexi.py
 diff -u $DEST/mass-link.py $GIT/scripts/build/mass-link.py
 diff -u $DEST/website_post.py $GIT/scripts/build/website_post.py
+diff -u $DEST/bib2texi.py $GIT/scripts/build/bib2texi.py
 diff -u $DEST/lilypond.org.htaccess $GIT/Documentation/web/server/lilypond.org.htaccess
 diff -u $DEST/website-dir.htaccess $GIT/Documentation/web/server/website-dir.htaccess
 @end verbatim
@@ -122,6 +149,7 @@ cp $GIT/scripts/build/create-version-itexi.py $DEST/create-version-itexi.py
 cp $GIT/scripts/build/create-weblinks-itexi.py $DEST/create-weblinks-itexi.py
 cp $GIT/scripts/build/mass-link.py $DEST/mass-link.py
 cp $GIT/scripts/build/website_post.py $DEST/website_post.py
+cp $GIT/scripts/build/bib2texi.py $DEST/bib2texi.py
 cp $GIT/Documentation/web/server/lilypond.org.htaccess $DEST/lilypond.org.htaccess
 cp $GIT/Documentation/web/server/website-dir.htaccess $DEST/website-dir.htaccess
 @end verbatim
@@ -152,29 +180,6 @@ Cronjob to automate the trusted portions:
 @end verbatim
 
 
-To reduce the CPU burden on the shared host (as well as some
-security concerns), the @file{Documentation/@/pictures/} and
-@file{Documentation/@/web/@/ly-examples/} directories are @strong{not}
-compiled.  If you modify any files in those directories, a user in
-the @code{lilypond} group must upload them to @file{~graham/@/media}
-on the host.
-
-Upload latest pictures/ and ly-examples/ (local script):
-
-@verbatim
-### upload-lily-web-media.sh
-#!/bin/sh
-BUILD_DIR=$HOME/src/build-lilypond
-
-PICS=$BUILD_DIR/Documentation/pictures/out-www/
-EXAMPLES=$BUILD_DIR/Documentation/web/ly-examples/out-www/
-
-cd $BUILD_DIR
-rsync -a $PICS graham@lilypond.org:media/pictures
-rsync -a $EXAMPLES graham@lilypond.org:ly-examples
-@end verbatim
-
-
 @subsubheading Additional information
 
 Some information about the website is stored in
index fd883b5b51bebdbf77e6b49d6c7fc24dc303f645..0ed563b4d1215ad4025ec82d3337f65ae5c21804 100644 (file)
@@ -891,6 +891,18 @@ div.color4 h3 {
   line-height: 0.8;
 }
 
+.example {
+  position: relative;
+  left: -2.5em;
+}
+
+.h-scroll-auto {
+  position: relative;
+  left: 1em;
+  width: 250px;
+  overflow: auto;
+}
+
 .warning {
   background: #eef;
   text-align: left;
@@ -929,10 +941,17 @@ div.color4 h3 {
   font-size: 0.6em;
 }
 
+.link-headings a {
+  font-weight: bold;
+}
+
 .detail {
   font-size: 0.8em;
 }
 
+.detail a {
+  font-weight: normal;
+}
 
 /* kill title, probably best done in the init file, though */
 h1.settitle {
index 0c2a80e64ea0f050e122aebf57b98ed74be1dd59..6802397adbddbbfcfb548bc28f39f0c2d879a291 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
+%% Translation of GIT committish: bfc88203ac2572737480e78ef2635ed35b458441
   texidocde = "
 Dieses Beispiel ist für vierstimmigen Gesang (SATB). Bei größeren
 Stücken ist es oft sinnvoll, eine allgemeine Variable zu bestimmen,
index c8ed9c529d196046fec1b264408e6c6111387d90..75c2728cfb094f6fe1d70de94d3915b1dcd451fc 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
+%% Translation of GIT committish: bfc88203ac2572737480e78ef2635ed35b458441
   texidoces = "
 He aquí una partitura vocal estándar para cuatro voces SATB. Con
 grupos mayores, suele ser útil incluir una sección que aparezca en
index 5ad0888b474ab44602917898f048ea77b9b5c3f5..59dd6458b9441b2e1fc829922630f2baa04ac54c 100644 (file)
@@ -16,7 +16,7 @@
   volume={17},
   pages ={292-309},
 
-  note = {Gourlay\cite{gourlay86} writes: A discussion of Smith's
+  note = {Gourlay [gourlay86] writes: A discussion of Smith's
 music-printing system SCORE}
 
 }
@@ -39,7 +39,7 @@ music-printing system SCORE}
   volume =      9,
   number =      6,
   pages =       {291--298},
-  note = {Gourlay\cite{gourlay86} writes: A discussion of the design
+  note = {Gourlay [gourlay86] writes: A discussion of the design
   and potential uses of the DARMS music-description language.}
 }
 
@@ -60,7 +60,7 @@ music-printing system SCORE}
   year = {1977},
   pages = {63-80},
 
-  note = {Gourlay \cite{gourlay86} writes: "A discussion of the
+  note = {Gourlay [gourlay86] writes: "A discussion of the
   problems of representing the conventions of musical notation in
   computer algorithms."}
 }
@@ -393,10 +393,10 @@ The Ohio State University},
   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
+  note = {Describes the "parser" which converts MusiCopy MDL to
   MusiCopy Simultaneities and columns.
 
-MDL is short for Music Description Language\cite{gourlay86}. It
+MDL is short for Music Description Language [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,
@@ -478,7 +478,7 @@ note = {This note discusses
 
 
 @Article {gourlay86,
-  note = {This paper describes the {MusiCopy} musicsetting system and an input language to go with it.},
+  note = {This paper describes the MusiCopy musicsetting system and an input language to go with it.},
 
   year =  {1986},
   title = {A language for music printing},
@@ -529,7 +529,7 @@ starts with a verbose description of music symbols.
 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}} }
+formulated by eg. [wanske]} }
 
 @TechReport{grover89-twovoices,
   author =      {John Gr\/over},
@@ -543,7 +543,7 @@ formulated by eg. \cite{wanske}} }
 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}},
+general rules, similar to [parrish87-simultaneities]},
 }
 
 @TechReport{grover89-accidentals,
@@ -554,7 +554,7 @@ general rules, similar to\cite{parrish87-simultaneities}},
   number =      135,
 
 note = {Placement of accidentals crystallised in an enormous set of
-rules.  Same remarks as for \cite{grover89-twovoices} applies} }
+rules.  Same remarks as for [grover89-twovoices] applies} }
 
 
 @PhdThesis{mueller90:_inter_bearb_musik,
index 225170c131702e8a7cd7d093463ede5040a1134b..61795e1a73ad3d949d34542602f7cffc6807d834 100644 (file)
@@ -83,9 +83,9 @@ and movement, and it feels like a living, breathing piece of music,
 while the newer edition seems cold and mechanical.
 
 It is hard to immediately see what makes the difference with the newer
-edition. Everything looks neat and tiny, possibly even @qq{better}
-because it looks more computerized and uniform. This really puzzled us
-for quite a while. We wanted to improve computer notation, but we first
+edition.  Everything looks neat and tiny, possibly even @qq{better}
+because it looks more computerized and uniform.  This really puzzled us
+for quite a while.  We wanted to improve computer notation, but we first
 had to figure out what was wrong with it.
 
 The answer lies in the precise, mathematical uniformity of the newer
@@ -112,9 +112,9 @@ into a rigid grid of musical markings.
 
 There are other differences as well: in the hand-engraved edition the
 vertical lines are all stronger, the slurs lie closer to the note heads,
-and there is more variety in the slopes of the beams. Although such
+and there is more variety in the slopes of the beams.  Although such
 details may seem like nitpicking, the result is a score that is easier
-to read. In the computer-generated output, each line is nearly identical
+to read.  In the computer-generated output, each line is nearly identical
 and if the musician looks away for a moment she will be lost on the
 page.
 
@@ -370,7 +370,7 @@ the eye.
 The spacing algorithms in LilyPond even take the barlines into account,
 which is why the final up-stem in the properly spaced example has been
 given a little more space before the barline to keep it from looking
-crowded. A down-stem would not need this adjustment.
+crowded.  A down-stem would not need this adjustment.
 
 @node Ledger lines
 @unnumberedsubsec Ledger lines
@@ -595,7 +595,7 @@ for each possible configuration we compute an ugliness score and we
 choose the least ugly configuration.
 
 For example, here are three possible slur configurations, and LilyPond
-has given each one a score in @q{ugly points}. The first example gets
+has given each one a score in @q{ugly points}.  The first example gets
 15.39 points for grazing one of the noteheads:
 
 @lilypond
@@ -757,10 +757,10 @@ We made our comparison by engraving the last seven measures of the piece
 the subject returns in a three-part stretto and leads into the closing
 section.  In the Finale version, we have resisted the temptation to make
 any adjustments to the default output because we are trying to show the
-things that each software package gets right without assistance. The
+things that each software package gets right without assistance.  The
 only major edits that we made were adjusting the page size to match this
 essay and forcing the music onto two systems to make the comparison
-easier. By default Finale would have engraved two systems of three
+easier.  By default Finale would have engraved two systems of three
 measures each and a final, full-width system containing a single
 measure.
 
@@ -869,8 +869,8 @@ collision than Finale does.
 @end itemize
 
 This example is not intended to suggest that Finale cannot be used to
-produce publication-quality output. On the contrary, in the hands of a
-skilled user it can and does, but it requires skill and time. One of the
+produce publication-quality output.  On the contrary, in the hands of a
+skilled user it can and does, but it requires skill and time.  One of the
 fundamental differences between LilyPond and commercial scorewriters is
 that LilyPond hopes to reduce the amount of human intervention to an
 absolute minimum, while other packages try to provide an attractive
@@ -898,9 +898,9 @@ engraving error.
 
 If you are interested in examining these examples in more detail, the
 full seven-measure excerpt can be found at the end of this essay along
-with four different published engravings. Close examination reveals that
+with four different published engravings.  Close examination reveals that
 there is some acceptable variation among the hand-engravings, but that
-LilyPond compares reasonably well to that acceptable range. There are
+LilyPond compares reasonably well to that acceptable range.  There are
 still some shortcomings in the LilyPond output, for example, it appears
 a bit too aggressive in shortening some of the stems, so there is room
 for further development and fine-tuning.
@@ -1026,7 +1026,7 @@ components: parsing and representation take up less than 10% of
 the source code.
 
 When designing the structures used in LilyPond, we made some different
-decisions than are apparent in other software. Consider the hierarchical
+decisions than are apparent in other software.  Consider the hierarchical
 nature of music notation:
 
 @lilypond[quote,fragment]
index cf4ec305a2ae7087fc7109f9683353bdab7e397f..8b2b667fb43a530fe024a95c6133f21d7f66813f 100644 (file)
@@ -48,8 +48,8 @@
 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}.   }
+content has nothing you won't find in other books like [read] or
+[heussenstamm].   }
 }
 
 @Book{ross,
@@ -136,7 +136,7 @@ of print. }
   year =        1923,
   note = {This patriotic 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
+  book [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
@@ -193,7 +193,7 @@ of print. }
   author = {Glen Rosecrans},
   publisher={Passantino},
   address={New York},
-  note={Heussenstamm writes: Limited in scope, similar to \cite{Roemer84}}
+  note={Heussenstamm writes: Limited in scope, similar to [Roemer84]}
 }
 
 @Book {donemus1982,
diff --git a/Documentation/essay/html-long.bst b/Documentation/essay/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/essay/texi-long.bst b/Documentation/essay/texi-long.bst
new file mode 100644 (file)
index 0000000..a240648
--- /dev/null
@@ -0,0 +1,1376 @@
+% 18/aug/2010:
+%    - changed into texi-long.bst by Graham Percival for GNU LilyPond
+%    - only a minimum of changes were made; some html remains in
+%      this file, but it does not appear in our output
+% BibTeX bibliography style `html-long'
+%   spits out texinfo-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 texinfo, and use URL to make cite key a link
+FUNCTION {output.bibitem}
+{ newline$
+  URL empty$
+    { "@item @code{[" cite$ * "]} " * write$ newline$
+    }
+    { "" quote$ * cite$ * quote$ * " HREF=" * quote$ *
+       URL * quote$ * "> " * cite$ * ":</A></DT>" * write$
+    }
+  if$
+  newline$
+%  "" 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$
+%  "" 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 texinfo
+FUNCTION {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "@emph{" swap$ * "}" * }
+  if$
+}
+
+% DFK added for texinfo strong emphasis
+FUNCTION {strong}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "@strong{" swap$ * "}" * }
+  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 author.title.purify
+      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 * "}" *
+  " [" * 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 * "}" *
+  " [" * 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 * "}" *
+  " [" * 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 texinfo
+FUNCTION {begin.bib}
+{ "@c bib -> itexi intro" write$ newline$
+  "@itemize" write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+% DFK changed to texinfo
+FUNCTION {end.bib}
+{ newline$
+  "@end itemize" write$ newline$
+  "@c bib -> itexi end" write$ newline$
+}
+
+EXECUTE {end.bib}
index 7b1637e564ba4ceeb4c78f63ecff15d5aabf73f7..ed3e496991081b29135a9b31cb81404390230407 100644 (file)
@@ -415,8 +415,8 @@ a type predicate for the i@var{th} argument
 @end table
 
 If the command uses properties from the @var{props} arguments, the
-@code{#:properties} keyword can be used, to specify which properties are
-used, and their default values.
+@code{#:properties} keyword can be used to specify which properties are
+used along with their default values.
 
 Arguments are distinguished according to their type:
 @itemize
@@ -530,8 +530,8 @@ It would be nice to make the @code{double-box} command customizable:
 here, the @code{box-padding} values are hard coded, and cannot be
 changed by the user.  Also, it would be better to distinguish the
 padding between the two boxes, from the padding between the inner box
-and the text. So we will introduce a new property,
-@code{inter-box-padding}, for the padding between the two boxes. The
+and the text.  So we will introduce a new property,
+@code{inter-box-padding}, for the padding between the two boxes.  The
 @code{box-padding} will be used for the inner padding.  The new code is
 now as follows:
 
index c1d5858203cdf46636b292393ac1882ee2bfa94d..c9be04076bff5fa67be6cc47498e8b04baa4f095 100644 (file)
@@ -28,9 +28,9 @@ Scheme.  If you want to know more about Scheme, see
 @uref{http://@/www@/.schemers@/.org}.
 
 LilyPond uses the GNU Guile implementation of Scheme, which is
-based on the Scheme @qq{R5RS} standard. If you are learning Scheme
+based on the Scheme @qq{R5RS} standard.  If you are learning Scheme
 to use with LilyPond, working with a different implementation (or
-referring to a different standard) is not recommended. Information
+referring to a different standard) is not recommended.  Information
 on guile can be found at @uref{http://www.gnu.org/software/guile/}.
 The @qq{R5RS} Scheme standard is located at
 @uref{http://www.schemers.org/Documents/Standards/R5RS/}.
@@ -68,7 +68,7 @@ Scheme.  On most systems you can experiment in a Scheme sandbox by
 opening a terminal window and typing @q{guile}.  On some systems,
 notably Windows, you may need to set the environment variable
 @code{GUILE_LOAD_PATH} to the directory @code{../usr/shr/guile/1.8}
-in the LilyPond installation. For the full path to this directory
+in the LilyPond installation.  For the full path to this directory
 see @rlearning{Other sources of information}.  Alternatively, Windows
 users may simply choose @q{Run} from the Start menu and enter
 @q{guile}.
index ec6fc83bd8bcff03fbf4b049a46f6f410a0341f0..d665dff797000d53178e999ff256637f339fa80f 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-   Translation of GIT committish: 68cf70682a542701a918f8bfff50f2b8b85f84e2
+   Translation of GIT committish: 26375d5016d8d180fc914bfd07cf76f4168f2e37
 
    When revising a translation, copy the HEAD committish of the
    version that you are working on.  For details, see the Contributors'
@@ -39,10 +39,10 @@ Suite au premier contact avec le @ref{Tutoriel}, voyons comment
 créer de belles partitions utilisant une notation musicale courante
 
 @menu
-* Notation sur une seule portée::  
-* Notes simultanées::           
-* Chansons::                    
-* Dernières précisions::        
+* Notation sur une seule portée::
+* Notes simultanées::
+* Chansons::
+* Dernières précisions::
 @end menu
 
 @node Notation sur une seule portée
@@ -54,12 +54,12 @@ Cette section présente la notation courante dont on a besoin pour
 
 @menu
 * Contrôle de mesure::
-* Altérations et armure::       
-* Liaisons::                    
-* Articulations et nuances::    
-* Ajout de texte::              
-* Barres de ligature automatiques et manuelles::  
-* Commandes rythmiques avancées::  
+* Altérations et armure::
+* Liaisons::
+* Articulations et nuances::
+* Ajout de texte::
+* Barres de ligature automatiques et manuelles::
+* Commandes rythmiques avancées::
 @end menu
 
 
@@ -110,8 +110,9 @@ si vous n'avez jamais fait de solfège@tie{}!}
 @funindex isis
 
 Glossaire musicologique :
-@rglos{sharp}, @rglos{flat}, @rglos{double sharp},
-@rglos{double flat}, @rglos{accidental}.
+@rglosnamed{sharp,dièse}, @rglosnamed{flat,bémol},
+@rglosnamed{double sharp,double dièse},
+@rglosnamed{double flat,double bémol}, @rglosnamed{accidental,altération}.
 
 Dans la notation par défaut, on obtient un @notation{dièse} en
 ajoutant @code{is} au nom de la note, et un @notation{bémol} en
@@ -151,8 +152,8 @@ cis1 ees fisis, aeses
 @funindex minor
 
 Glossaire musicologique :
-@rglos{key signature}, @rglos{major},
-@rglos{minor}.
+@rglosnamed{key signature,armure}, @rglosnamed{major,majeur},
+@rglosnamed{minor,mineur}.
 
 L'armure est déterminée par la commande @code{\key}, suivie d'une
 hauteur puis de @code{\major} (majeur) ou @code{\minor} (mineur).
@@ -169,9 +170,10 @@ a
 @subheading Attention aux armures et aux hauteurs
 
 Glossaire musicologique :
-@rglos{accidental}, @rglos{key signature},
-@rglos{pitch}, @rglos{flat}, @rglos{natural}, @rglos{sharp},
-@rglos{transposition}, @rglos{Pitch names}.
+@rglosnamed{accidental,altération}, @rglosnamed{key signature,armure},
+@rglosnamed{pitch,hauteur}, @rglosnamed{flat,bémol},
+@rglosnamed{natural,bécarre}, @rglosnamed{sharp,dièse},
+@rglos{transposition}, @rglosnamed{Pitch names,Noms de note}.
 
 La combinaison de l'@notation{armure} et des hauteurs de note -- y
 compris les altérations -- permet à LilyPond de déterminer dans quel
@@ -188,9 +190,9 @@ accidentelle -- un @emph{signe} bémol, bécarre ou dièse -- devant la
 note correspondante est une question qui relève de la mise en forme.
 La gravure d'une partition suit des règles, en particulier des règles
 d'indication des altérations accidentelles.  Les hauteurs de note, en
-revanche, relèvent de ce que vous voulez entendre ; et, dans la mesure
-où la musique que vous entrez est censée être celle que vous voulez
-entendre, LilyPond, qui n'est chargé que de la gravure, ne les
+revanche, relèvent de ce que vous voulez entendre@tie{}; et, dans la
+mesure où la musique que vous entrez est censée être celle que vous
+voulez entendre, LilyPond, qui n'est chargé que de la gravure, ne les
 choisira pas à votre place.
 
 Dans cet exemple,
@@ -205,7 +207,7 @@ aucune note n'a d'altération accidentelle, et pourtant vous devrez
 entrer le @code{is} pour les notes @code{cis} et @code{fis}.
 
 Le code @code{b} ne veut pas dire @qq{Imprimez-moi un point noir sur
-la troisième ligne de la portée.}  Cela signifie plutôt : @qq{Ici se
+la troisième ligne de la portée.}  Cela signifie plutôt@tie{}: @qq{Ici se
 trouve une note dont la hauteur est un si naturel.}  Avec une armure
 de la bémol majeur, ce @code{si} est flanqué d'un bécarre
 accidentel@tie{}:
@@ -224,7 +226,7 @@ d'effort dans la phase de saisie, mais cela facilite grandement la
 @notation{transposition}.  De plus, les altérations accidentelles
 peuvent ainsi être imprimées suivant plusieurs conventions.  Pour
 connaître les différentes manières dont les altérations accidentelles
-peuvent être imprimées, consultez 
+peuvent être imprimées, consultez
 @ruser{Altérations accidentelles automatiques}.
 
 
@@ -253,7 +255,7 @@ Manuel de notation :
 @subheading Liaisons de prolongation
 
 Glossaire musicologique :
-@rglos{tie}.
+@rglosnamed{tie,liaison de tenue}.
 
 Pour créer une liaison de prolongation -- parfois aussi appelée
 liaison de tenue --, on ajoute un tilde @code{~} à la première note
@@ -275,7 +277,7 @@ g4~ g c2~ | c4 ~ c8 a8 ~ a2 |
 @c phrasing slur = "ils ont des chapeaux ronds" (phrase). jcm
 
 Glossaire musicologique :
-@rglos{slur}, @rglos{phrasing}.
+@rglosnamed{slur,liaison}, @rglosnamed{phrasing,phrasé}.
 
 Une liaison d'articulation ou @emph{legato} peut englober
 plusieurs notes.  Les notes de départ et d'arrivée sont suivies
@@ -290,9 +292,10 @@ d4( c16) cis( d e c cis d) e( d4)
 @cindex legato
 @subheading Liaisons de phrasé
 
-De plus longues liaisons, dites de phrasé, sont délimitées par @code{\(} et
-@code{\)}.  Il est possible d'avoir en même temps des legatos et des
-phrasés, mais pas plusieurs liaisons de phrasé ou de @emph{legato} à la fois.
+De plus longues liaisons, dites de phrasé, sont délimitées par @code{\(}
+et @code{\)}.  Il est possible d'avoir en même temps des legatos et des
+phrasés, mais pas plusieurs liaisons de phrasé ou de @emph{legato} à la
+fois.
 
 @lilypond[verbatim,quote,relative=2]
 g4\( g8( a) b( c) b4\)
@@ -304,13 +307,14 @@ g4\( g8( a) b( c) b4\)
 @subheading Attention aux types de liaison
 
 Glossaire musicologique :
-@rglos{articulation}, @rglos{slur}, @rglos{tie}.
+@rglos{articulation}, @rglosnamed{slur,liaison},
+@rglosnamed{tie,liaison de tenue}.
 
 Une liaison d'articulation ou de phrasé ressemble à une liaison de
 prolongation, mais n'a pas la même signification.  Alors qu'une
 liaison de prolongation ne peut relier que deux notes de même hauteur,
-le @emph{legato} indique une articulation de plusieurs notes, 
-éventuellement en grand nombre.  Les liaisons de tenue peuvent être 
+le @emph{legato} indique une articulation de plusieurs notes,
+éventuellement en grand nombre.  Les liaisons de tenue peuvent être
 enchâssées dans un @emph{legato} ou un phrasé.
 
 @lilypond[verbatim,quote,relative=2]
@@ -319,8 +323,8 @@ c4~( c8 d~ d4 e)
 
 
 @seealso
-Manuel de notation : 
-@ruser{Liaisons de prolongation}, 
+Manuel de notation :
+@ruser{Liaisons de prolongation},
 @ruser{Liaisons d'articulation},
 @ruser{Liaisons de phrasé}.
 
@@ -354,7 +358,7 @@ c4-> c-. c2-_
 @funindex _
 
 Glossaire musicologique :
-@rglos{fingering}.
+@rglosnamed{fingering,doigté}.
 
 De même, des indications de doigté peuvent être ajoutées à une note en
 utilisant un tiret (@samp{-}) et le chiffre à écrire@tie{}:
@@ -394,7 +398,7 @@ c4_-^1 d^. f^4_2-> e^-_+
 @funindex !
 
 Glossaire musicologique :
-@rglos{dynamics}, 
+@rglosnamed{dynamics,nuances},
 @rglos{crescendo},
 @rglos{decrescendo}.
 
@@ -423,7 +427,7 @@ c4\< c\ff\> c c\!
 
 
 @seealso
-Manuel de notation : 
+Manuel de notation :
 @ruser{Articulations et ornements},
 @ruser{Doigtés},
 @ruser{Nuances}.
@@ -446,7 +450,8 @@ On peut ajouter du texte à une partition :
 c2^"espr" a_"legato"
 @end lilypond
 
-Pour mettre en forme du texte, on utilise la commande @code{\markup}@tie{}:
+Pour mettre en forme du texte, on utilise la commande
+@code{\markup}@tie{}:
 
 @lilypond[verbatim,quote,relative=2]
 c2^\markup{ \bold espr}
@@ -480,9 +485,9 @@ Manuel de notation :
 @funindex autoBeamOn
 
 Glossaire musicologique :
-@rglos{beam}.
+@rglosnamed{beam,ligature}.
 
-Toutes les barres de ligature sont dessinées automatiquement :
+Toutes les barres de ligature sont dessinées automatiquement@tie{}:
 
 @lilypond[verbatim,quote,relative=2]
 a8 ais d ees r d c16 b a8
@@ -512,7 +517,7 @@ a8 c b4 d8. c16 b4 |
 
 @seealso
 Manuel de notation :
-@ruser{Barres de ligature automatiques}, 
+@ruser{Barres de ligature automatiques},
 @ruser{Barres de ligature manuelles}.
 
 
@@ -529,11 +534,11 @@ Manuel de notation :
 @funindex \partial
 @funindex partial
 
-Glossaire musicologique : @rglos{anacrusis}.
+Glossaire musicologique : @rglosnamed{anacrusis,anacrouse}.
 
 On crée une levée (ou anacrouse) avec la commande @code{\partial},
-suivie d'une durée@tie{}: @code{\partial 4} produit une levée d'une
-noire et @code{\partial 8} d'une croche.
+suivie d'une durée@tie{}: @code{\partial@tie{}4} produit une levée d'une
+noire et @code{\partial@tie{}8} d'une croche.
 
 @lilypond[verbatim,quote,relative=2]
 \partial 8 f8 |
@@ -548,7 +553,8 @@ c2 d |
 @funindex \times
 @funindex times
 
-Glossaire musicologique : @rglos{note value}, @rglos{triplet}.
+Glossaire musicologique : @rglosnamed{note value,valeur d'une note},
+@rglosnamed{triplet,triolet}.
 
 Les @notation{nolets} sont créés avec la commande @code{\times}, qui
 prend deux arguments@tie{}: une fraction et une expression musicale.  La
@@ -578,8 +584,9 @@ donc de 2/3 pour les triolets@tie{}:
 @funindex \appoggiatura
 @funindex acciaccatura
 
-Glossaire musicologique : @rglos{grace notes}, @rglos{acciaccatura},
-@rglos{appoggiatura}.
+Glossaire musicologique :
+@rglosnamed{grace notes,ornements}, @rglosnamed{acciaccatura,acciacature},
+@rglosnamed{appoggiatura,appogiature}.
 
 Des @notation{notes d'ornement} s'obtiennent en appliquant la commande
 @code{\grace}, @code{\appoggiatura} ou @code{\acciaccatura} à une
@@ -612,11 +619,11 @@ plusieurs voix@tie{}; dans LilyPond, ce terme désigne les situations où
 il y a plus d'une voix sur une même portée.
 
 @menu
-* Les expressions musicales en clair::  
-* Plusieurs portées::           
-* Regroupements de portées::    
-* Combinaison de notes en accords::  
-* Polyphonie sur une portée::   
+* Les expressions musicales en clair::
+* Plusieurs portées::
+* Regroupements de portées::
+* Combinaison de notes en accords::
+* Polyphonie sur une portée::
 @end menu
 
 
@@ -657,7 +664,7 @@ combinée à deux notes@tie{}:
 
 @cindex expression
 
-Ce mécanisme est similaire aux formules mathématiques : une grosse
+Ce mécanisme est similaire aux formules mathématiques@tie{}: une grosse
 formule est créée en assemblant plusieurs petites formules.  De telles
 formules sont appelées expressions, elles ont une définition
 récursive, de telle sorte que vous pouvez fabriquer des expressions
@@ -699,7 +706,7 @@ de la musique polyphonique.
 @funindex >>
 @funindex << ... >>
 
-Glossaire musicologique : @rglos{polyphony}.
+Glossaire musicologique : @rglosnamed{polyphony,polyphonie}.
 
 Cette technique est utile pour de la musique @notation{polyphonique}.
 Pour entrer une musique avec plusieurs voix ou plusieurs portées, nous
@@ -841,7 +848,7 @@ fréquente que la musique polyrythmique.
 @funindex GrandStaff
 @funindex ChoirStaff
 
-Glossaire musicologique : @rglos{brace}.
+Glossaire musicologique : @rglosnamed{brace,accolade}.
 
 La musique pour piano s'écrit sur deux portées reliées par une
 @notation{accolade}.  La gravure de ce type de portée est semblable à
@@ -867,8 +874,8 @@ Voici un bref exemple :
 }
 @end lilypond
 
-Vous pouvez générer d'autres formes de regroupement, avec 
-@w{@code{\new GrandStaff}} pour une partition d'orchestre, ou 
+Vous pouvez générer d'autres formes de regroupement, avec
+@w{@code{\new GrandStaff}} pour une partition d'orchestre, ou
 @w{@code{\new ChoirStaff}} qui sied particulièrement aux partitions
 chorales.  Chacun de ces regroupements constitue un contexte à part
 entière, avec ses particularités, tant au niveau du signe qui regroupe
@@ -893,7 +900,7 @@ Manuel de notation :
 @funindex >
 @funindex < ... >
 
-Glossaire musicologique : @rglos{chord}.
+Glossaire musicologique : @rglosnamed{chord,accord}.
 
 Nous avons vu précédemment comment combiner des notes simultanément,
 en les encadrant par des chevrons doubles @code{<<} et @code{>>}.  Pour
@@ -913,7 +920,7 @@ durée, donc @emph{à l'extérieur} des chevrons.
 
 @lilypond[verbatim,quote,relative=2]
 r4 <c e g>~ <c f a>2 |
-<c e g>8[ <c f a> <c e g> <c f a>] <c e g>\>[ <c f a> <c   f a> <c e g>]\! | 
+<c e g>8[ <c f a> <c e g> <c f a>] <c e g>\>[ <c f a> <c   f a> <c e g>]\! |
 r4 <c e g>8.\p <c f a>16( <c e g>4-. <c f a>) |
 @end lilypond
 
@@ -941,7 +948,7 @@ Bien que LilyPond gère la musique polyphonique sans difficulté, cela
 fait appel à des concepts que nous n'avons pas encore abordés.  C'est la
 raison pour laquelle nous ne nous étendrons pas tout de suite sur ce
 sujet et préférons vous inciter à consulter les chapitres dédiés à
-l'étude de ces concepts. 
+l'étude de ces concepts.
 
 @seealso
 Manuel d'initiation :
@@ -958,9 +965,9 @@ Manuel de notation :
 Cette section présente l'écriture vocale et les partitions de variété.
 
 @menu
-* Écriture de chants simples::  
-* Alignement des paroles sur une mélodie::  
-* Paroles pour plusieurs portées::  
+* Écriture de chants simples::
+* Alignement des paroles sur une mélodie::
+* Paroles pour plusieurs portées::
 @end menu
 
 
@@ -1006,7 +1013,7 @@ séparant chaque syllable par une espace@tie{}:
 
 @warning{Il est primordial de séparer l'accolade fermant les
 paroles de la dernière syllabe -- par une espace ou un saut de ligne --
-au risque de voir apparaître une 
+au risque de voir apparaître une
 @rprogram{Erreur renvoyant à ../ly/init.ly}.}
 
 
@@ -1026,7 +1033,8 @@ paroles se produisent en même temps.
 @cindex alignement des paroles
 @cindex paroles, mot de plusieurs syllabes
 
-Glossaire musicologique : @rglos{melisma}, @rglos{extender line}.
+Glossaire musicologique : @rglosnamed{melisma,mélisme},
+@rglosnamed{extender line,ligne d'extension}.
 
 La deuxième ligne de la comptine précédente est @emph{The moon doth
 shine as bright as day}.  Ajoutons-la au code.
@@ -1046,7 +1054,7 @@ shine as bright as day}.  Ajoutons-la au code.
 >>
 @end lilypond
 
-Si vous compilez ce code en l'état, vous verrez apparaître :
+Si vous compilez ce code en l'état, vous verrez apparaître@tie{}:
 
 @example
 song.ly:12:29: Avertissement : échec du contrôle de mesure (barcheck) à : 5/8
@@ -1083,7 +1091,7 @@ lier les notes du mélisme.  Pour les détails, consultez @ref{Liaisons}.
 Les paroles sont maintenant correctement alignées, mais les liens de
 croche automatiques ne conviennent pas pour les notes au-dessus de
 @emph{shine as}.  On peut les corriger en ajoutant des liens de croche
-manuels@tie{}; pour ceci consultez 
+manuels@tie{}; pour ceci consultez
 @ref{Barres de ligature automatiques et manuelles}.
 
 @lilypond[verbatim,quote]
@@ -1250,10 +1258,10 @@ finale à des morceaux simples, et constitue une introduction au reste
 du manuel.
 
 @menu
-* Organisation du code source avec des variables::  
-* Ajout de titres::             
-* Noms de note absolus::        
-* Après le tutoriel::           
+* Organisation du code source avec des variables::
+* Ajout de titres::
+* Noms de note absolus::
+* Après le tutoriel::
 @end menu
 
 
@@ -1484,10 +1492,10 @@ Après avoir parcouru ce tutoriel, vous devriez essayer d'écrire un
 morceau ou deux.  Commencez par copier l'un des modèles types et
 ajoutez-y des notes -- consultez les @ref{Modèles}.  Si vous voulez
 employer une notation que vous n'avez pas trouvé dans le tutoriel,
-consultez le manuel de notation, en commençant par la 
+consultez le manuel de notation, en commençant par la
 @ruser{Notation musicale générale}.  Si vous désirez écrire pour un
 ensemble instrumental non couvert par les modèles, lisez la section
-@ref{Extension des modèles}. 
+@ref{Extension des modèles}.
 
 Après avoir écrit quelques pièces courtes, lisez les chapitres 3 à 5
 du manuel d'initiation.  Rien ne s'oppose à ce que vous consultiez dès
@@ -1504,9 +1512,9 @@ première lecture@tie{}; lorsque vous aurez lu l'ensemble du manuel
 d'initiation, vous pourrez en relisant certaines sections suivre ces
 références pour approfondir certains aspects.
 
-Si vous ne l'avez pas encore fait, lisez 
-@ref{À propos de la documentation}.  Les sources de documentation et
-d'information sur LilyPond sont vastes, il est normal pour un débutant
-de ne pas savoir où chercher@tie{}; si vous passez quelques minutes à
-lire attentivement cette section, vous vous épargnerez certainement la
-frustration causée par des heures de recherches infructueuses.
+Si vous ne l'avez pas encore fait, lisez @ref{Vue d'ensemble des
+manuels}.  Les sources de documentation et d'information sur LilyPond
+sont vastes, il est normal pour un débutant de ne pas savoir où
+chercher@tie{}; si vous passez quelques minutes à lire attentivement
+cette section, vous vous épargnerez certainement la frustration causée
+par des heures de recherches infructueuses.
index d3291dfda566467bf7305c6e7fe1bb9b8dddc39a..0d2473acac2ca2f845b92a9241f3cc33851f9db3 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: a042d99cd2251b2b9121e1b8ad30307c4ce28863
+    Translation of GIT committish: 26375d5016d8d180fc914bfd07cf76f4168f2e37
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -24,10 +24,10 @@ partie aux concepts et techniques qui permettent d'obtenir des
 partitions complexes de même qualité.
 
 @menu
-* Organisation des fichiers LilyPond::  
-* Les voix contiennent la musique::        
-* Contextes et graveurs::      
-* Extension des modèles::     
+* Organisation des fichiers LilyPond::
+* Les voix contiennent la musique::
+* Contextes et graveurs::
+* Extension des modèles::
 @end menu
 
 @node Organisation des fichiers LilyPond
@@ -44,10 +44,10 @@ la simplicité au détriment de certains détails.  Vous trouverez une
 description plus complète dans @ruser{Structure de fichier}.
 
 @menu
-* Introduction à la structure de fichier LilyPond::  
-* La partition est une (unique) expression musicale composée::  
-* Expressions musicales imbriquées::   
-* Non-imbrication des crochets et liaisons::  
+* Introduction à la structure de fichier LilyPond::
+* La partition est une (unique) expression musicale composée::
+* Expressions musicales imbriquées::
+* Non-imbrication des crochets et liaisons::
 @end menu
 
 @node Introduction à la structure de fichier LilyPond
@@ -57,7 +57,7 @@ description plus complète dans @ruser{Structure de fichier}.
 @cindex format d'entrée
 @cindex structure de ficher
 
-Un fichier d'entrée LilyPond ressemble à :
+Un fichier d'entrée LilyPond ressemble à@tie{}:
 
 @example
 \version @w{"@version{}"}
@@ -148,11 +148,11 @@ quoi, d'une note isolée à un gigantesque
 @end example
 
 @noindent
-Dès lors que tout cela est entre accolades : @code{@{ @dots{} @}},
+Dès lors que tout cela est entre accolades@tie{}: @code{@{ @dots{} @}},
 LilyPond le considère comme une et une seule expression musicale.
 
 Comme nous l'avons vu précédemment, un bloc @code{\score} peut contenir
-d'autres informations :
+d'autres informations@tie{}:
 
 @example
 \score @{
@@ -177,7 +177,7 @@ d'autres informations :
 
 @noindent
 Gardez à l'esprit que ces trois commandes -- @code{\header},
-@code{\layout} et @code{\midi} -- sont spécifiques : à l'inverse de
+@code{\layout} et @code{\midi} -- sont spécifiques@tie{}: à l'inverse de
 toutes les commandes débutant par une oblique inversée @code{\}
 (@emph{backslash} en anglais), @strong{elles ne constituent pas} des
 expressions musicales et ne peuvent pas faire partie d'expressions
@@ -191,8 +191,8 @@ Les deux autres commandes -- @code{\layout @{@}} et @code{\midi @{@}}
 -- que nous n'avons pas détaillées pour l'instant, auront respectivement
 pour effet, lorsqu'elles interviennent, de produire une sortie
 imprimable et un fichier MIDI.  Nous nous y intéressons plus
-particulièrement dans le manuel de notation, aux chapitres 
-@ruser{Mise en forme de la partition} et 
+particulièrement dans le manuel de notation, aux chapitres
+@ruser{Mise en forme de la partition} et
 @ruser{Création de fichiers MIDI}.
 
 @cindex partitions multiples
@@ -203,7 +203,7 @@ particulièrement dans le manuel de notation, aux chapitres
 
 Vous pouvez tout à fait mentionner plusieurs blocs @code{\score}.  Ils
 seront traités comme autant de partitions indépendantes qui seront
-regroupées dans un seul fichier résultant.  La commande @code{\book} 
+regroupées dans un seul fichier résultant.  La commande @code{\book}
 (@emph{recueil} ou @emph{ouvrage}) n'est pas obligatoire -- elle sera
 créée implicitement.  Néanmoins, le recours à la commande @code{\book}
 vous permettra d'obtenir des fichiers résultants distincts à partir
@@ -222,13 +222,13 @@ fragment de musique.
 @cindex layout, effets selon l'emplacement
 
 Tout bloc @code{\layout} affecte le bloc @code{\score} ou @code{\book}
-au sein duquel il intervient : si c'est à l'intérieur d'un bloc
+au sein duquel il intervient@tie{}: si c'est à l'intérieur d'un bloc
 @code{\score}, seul celui-ci en sera affecté.  Dans le cas où le bloc
 @code{\layout} se trouve à l'extérieur du bloc @code{\score}, que le
 bloc @code{\book} soit explicite ou non, il affectera chacun des
 @code{\score} compris dans ce @code{\book}.
 
-Pour plus de détail à ce sujet, consultez 
+Pour plus de détail à ce sujet, consultez
 @ruser{Plusieurs partitions dans un même ouvrage}.
 
 @cindex variables
@@ -237,7 +237,7 @@ Pour plus de détail à ce sujet, consultez
 Un autre raccourci pratique est la possibilité de définir
 des variables, également appelées @qq{identificateurs} -- voir
 @ref{Organisation du code source avec des variables} à ce sujet.  Dans
-tous les modèles, vous trouverez :
+tous les modèles, vous trouverez@tie{}:
 
 @example
 melodie = \relative c' @{
@@ -254,15 +254,15 @@ variable @code{melodie}, c'est-à-dire tout ce qui suit le signe @code{=},
 et l'insérer partout où il rencontrera @code{\melodie}.  Vous êtes
 libre de choisir comment dénommer vos variables@footnote{Les noms de
 variables sont sensibles à la casse, et ne peuvent contenir ni
-chiffre, ni ponctuation, ni caractère accentué, ni espace.} ; ce peut être
-@code{melodie}, @code{global}, @code{maindroitepiano}, ou
+chiffre, ni ponctuation, ni caractère accentué, ni espace.}@tie{}; ce
+peut être @code{melodie}, @code{global}, @code{maindroitepiano}, ou
 @code{laTeteAToto}, tant qu'il ne s'agit pas de @qq{mot réservé}.  Pour
-plus de détails, voir 
-@ref{Économie de saisie grâce aux identificateurs et fonctions}. 
+plus de détails, voir
+@ref{Économie de saisie grâce aux identificateurs et fonctions}.
 
 
 @seealso
-Pour une description complète du format des fichiers d'entrée, voir 
+Pour une description complète du format des fichiers d'entrée, voir
 @ruser{Structure de fichier}.
 
 
@@ -276,15 +276,15 @@ Pour une description complète du format des fichiers d'entrée, voir
 @cindex bloc score, contenu
 @cindex expression musicale composite
 
-Dans la section précédente, 
+Dans la section précédente,
 @ref{Introduction à la structure de fichier LilyPond},  nous
 avons vu l'organisation générale des fichiers d'entrée de LilyPond.
-Mais c'est comme si nous avions éludé la question essentielle : comment
-diable peut-on savoir quoi mettre après @code{\score} ?
+Mais c'est comme si nous avions éludé la question essentielle@tie{}:
+comment diable peut-on savoir quoi mettre après @code{\score}@tie{}?
 
-En fait, nous ne l'avons pas éludée du tout : le grand mystère est
+En fait, nous ne l'avons pas éludée du tout@tie{}: le grand mystère est
 tout simplement qu'@strong{il n'y a pas} de mystère.  Allez,
-expliquons-le en une ligne :
+expliquons-le en une ligne@tie{}:
 
 @quotation
 @emph{Un bloc @code{\score} doit commencer par une et une seule
@@ -301,7 +301,7 @@ et remonter la pente.  Pour rester simple, nous nous contenterons d'un
 chanteur accompagné au piano.  On n'a pas besoin d'une partition
 d'orchestre -- c.-à-d. des portées regroupées en @code{StaffGroup} --
 donc laissons cela de côté.  Par contre, nous voulons bien une voix et
-une double portée de piano. 
+une double portée de piano.
 
 @example
 \score @{
@@ -318,22 +318,22 @@ une double portée de piano.
 @end example
 
 Nous avons ici attribué des noms aux portées -- @qq{chanteur} et
-@qq{piano}.  Bien que cela ne soit pas primordial, c'est une 
-habitude qu'il est bon d'adopter dès le départ : vous saurez au premier
-coup d'œil à quoi correspond chaque portée.
+@qq{piano}.  Bien que cela ne soit pas primordial, c'est une
+habitude qu'il est bon d'adopter dès le départ@tie{}: vous saurez au
+premier coup d'œil à quoi correspond chaque portée.
 
-Vous vous souvenez que nous avons recours à @code{<<} et @code{>>} 
+Vous vous souvenez que nous avons recours à @code{<<} et @code{>>}
 en lieu et place de @code{@{ @dots{} @}} pour gérer des musiques
 simultanées.  Et, pour le coup, on aimerait @emph{vraiment} que la
-partie vocale et l'accompagnement soient imprimés ensemble@dots{}  Bien que
-faire appel à @code{<< ... >>} ne soit pas réellement nécessaire pour la
-portée du chanteur, dans la mesure où elle ne contient qu'une seule
-expression musicale, nous vous recommandons de prendre l'habitude de
-l'encadrer ainsi plutôt que par de simples accolades -- une portée peut
-en effet contenir plusieurs voix, ou bien des notes @strong{et} des
+partie vocale et l'accompagnement soient imprimés ensemble@dots{}  Bien
+que faire appel à @code{<< ... >>} ne soit pas réellement nécessaire
+pour la portée du chanteur, dans la mesure où elle ne contient qu'une
+seule expression musicale, nous vous recommandons de prendre l'habitude
+de l'encadrer ainsi plutôt que par de simples accolades -- une portée
+peut en effet contenir plusieurs voix, ou bien des notes @strong{et} des
 paroles.  Dans la mesure où nous y ajouterons des paroles, les chevrons
 sont donc obligatoires.  Si vous avez oublié comment ajouter des
-paroles à l'aide de la commande @code{\addlyrics}, relisez le chapitre 
+paroles à l'aide de la commande @code{\addlyrics}, relisez le chapitre
 @ref{Écriture de chants simples}.
 
 @lilypond[verbatim,quote,ragged-right]
@@ -358,9 +358,9 @@ LilyPond correspond à une voix, au sens de voix d'une polyphonie plutôt
 que de voix chantée -- ce pourrait être une partie de violon par
 exemple --, et des paroles.
 
-Nous avons également une partie de piano, qui contient deux portées :
-une pour la main droite, une autre pour la main gauche.  Il nous faudra
-d'ailleurs ajouter une clef de fa à cette dernière.
+Nous avons également une partie de piano, qui contient deux
+portées@tie{}: une pour la main droite, une autre pour la main gauche.
+Il nous faudra d'ailleurs ajouter une clef de fa à cette dernière.
 
 
 À ce point, on pourrait commencer à ajouter les notes.  Dans les
@@ -382,9 +382,10 @@ préfixons d'un @code{\lyricmode}.  Sans cette précaution, LilyPond
 tenterait d'interpréter le contenu de cette variable comme des notes, ce
 qui déclencherait immanquablement des erreurs.  LilyPond dispose de
 différents types de données -- voir @ruser{Modes de saisie} pour plus de
-détails. 
+détails.
 
-Avec quelques notes de plus et une clef de fa, nous pourrions avoir :
+Avec quelques notes de plus et une clef de fa, nous pourrions
+avoir@tie{}:
 
 @lilypond[verbatim,quote,ragged-right]
 melody = \relative c'' { r4 d8\noBeam g, c4 r }
@@ -413,13 +414,13 @@ lower  = \relative c { b2 e2 }
 Quand on écrit, ou que l'on lit, une section @code{\score}, mieux vaut
 y aller lentement et soigneusement. Commencez par le niveau le plus
 large, puis travaillez sur chaque niveau plus détaillé.  À ce propos,
-une indentation stricte et propre est vraiment d'une aide précieuse :
-assurez-vous que chaque élément d'un même niveau a le même décalage
-horizontal dans votre éditeur de texte !
+une indentation stricte et propre est vraiment d'une aide
+précieuse@tie{}: assurez-vous que chaque élément d'un même niveau a le
+même décalage horizontal dans votre éditeur de texte@tie{}!
 
 
 @seealso
-Manuel de notation : 
+Manuel de notation :
 @ruser{Structure d'une partition}.
 
 
@@ -430,11 +431,11 @@ Manuel de notation :
 @cindex portées, temporaires
 @cindex ossias
 
-Déclarer toutes les portées dès le départ n'est pas une obligation ;
-elles peuvent intervenir temporairement n'importe où dans la partition.
-Ceci est tout à fait indiqué pour créer des sections @rglos{ossia}.
-L'exemple suivant illustre la manière de créer temporairement une
-nouvelle portée, l'espace de trois notes :
+Déclarer toutes les portées dès le départ n'est pas une
+obligation@tie{}; elles peuvent intervenir temporairement n'importe où
+dans la partition.  Ceci est tout à fait indiqué pour créer des sections
+@rglos{ossia}.  L'exemple suivant illustre la manière de créer
+temporairement une nouvelle portée, l'espace de trois notes@tie{}:
 
 @lilypond[verbatim,quote,ragged-right]
 \new Staff {
@@ -459,7 +460,8 @@ celle imprimée en tête de ligne.
 
 @cindex portée, positionnement
 
-Une section ossia se placera au dessus de la portée en procédant ainsi :
+Une section ossia se placera au dessus de la portée en procédant
+ainsi@tie{}:
 
 @lilypond[verbatim,quote,ragged-right]
 \new Staff = "main" {
@@ -498,7 +500,7 @@ parlé.  Voir @ref{Taille des objets} et @ruser{Portées d'ossia}.
 Nous avons déjà rencontré plusieurs types de crochets au fil de nos
 fichiers LilyPond.  Ils obéissent à des règles différentes qui peuvent
 paraître déroutantes de prime abord.  Avant d'examiner ces règles, voici
-une liste des différents types de crochet :
+une liste des différents types de crochet@tie{}:
 
 @c attempt to force this onto a new page
 @need 50
@@ -520,29 +522,29 @@ une liste des différents types de crochet :
 @end multitable
 
 D'autres constructions permettent d'obtenir des lignes regroupant ou en
-travers des notes :  les liaisons de prolongation indiquées par un
-tilde (@code{~}), les marques de nolet avec 
+travers des notes@tie{}:  les liaisons de prolongation indiquées par un
+tilde (@code{~}), les marques de nolet avec
 @w{@code{\times x/y @{..@}}}, ou
 encore les notes d'ornement avec @code{\grace@{..@}}.
 
 En dehors de LilyPond, l'imbrication correcte de différents types de
-crochets exige un strict respect des conventions, telles que 
+crochets exige un strict respect des conventions, telles que
 @code{<<@tie{}[@tie{}@{@tie{}(@tie{}..@tie{})@tie{}@}@tie{}]@tie{}>>},
-où les marques de fermeture interviennent 
+où les marques de fermeture interviennent
 obligatoirement dans l'ordre exactement inverse à celles d'ouverture.
 Ceci @strong{doit} être rigoureusement respecté pour les trois
 types de crochets utilisés pour @strong{délimiter} comme l'indique le
-tableau ci-dessus.  
+tableau ci-dessus.
 Une telle rigueur dans l'imbrication n'est @strong{pas} requise pour les
 types de crochets dont la fonction est de @strong{marquer}, selon le
 tableau ci-dessus, lorsqu'il sont utilisés en combinaison avec des
 liaisons de prolongation ou des nolets.  En effet, il ne s'agit pas
-de crochets ayant pour fonction de borner quelque chose ; ils agissent
-plutôt comme marquant le début de quelque chose et sa fin.
+de crochets ayant pour fonction de borner quelque chose@tie{}; ils
+agissent plutôt comme marquant le début de quelque chose et sa fin.
 
 Ainsi, et bien que ce ne soit pas très musical, une liaison de phrasé
 peut débuter avant l'insertion d'une ligature manuelle et s'arrêter
-avant la fin de la ligature :
+avant la fin de la ligature@tie{}:
 
 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
  { g8\( a b[ c b\) a] }
@@ -570,15 +572,15 @@ d'une liaison de phrasé se poursuivant (lignes 3 et 4).
 @section Les voix contiennent la musique
 @translationof Voices contain music
 
-Les chanteurs utilisent leur voix pour chanter ; il en va de même pour 
-LilyPond.  En fait, la musique de chacun des instruments d'une partition
-est contenue dans des voix (@emph{Voices} en anglais) et qui se trouvent
-être le concept fondamental de LilyPond.
+Les chanteurs utilisent leur voix pour chanter@tie{}; il en va de même
+pour LilyPond.  En fait, la musique de chacun des instruments d'une
+partition est contenue dans des voix (@emph{Voices} en anglais) et qui
+se trouvent être le concept fondamental de LilyPond.
 
 @menu
-* J'entends des Voix::          
-* Instanciation explicite des voix::  
-* Voix et paroles::           
+* J'entends des Voix::
+* Instanciation explicite des voix::
+* Voix et paroles::
 @end menu
 
 @node J'entends des Voix
@@ -611,24 +613,25 @@ de recourir à plusieurs voix pour gérer efficacement l'alignement des
 notes et rythmes différents.
 
 Si une voix unique peut tout à fait contenir plusieurs notes dans un
-accord, à partir de quand aurons-nous vraiment besoin de plusieurs 
-voix ?  Considérons déjà ces quatre accords :
+accord, à partir de quand aurons-nous vraiment besoin de plusieurs
+voix@tie{}?  Considérons déjà ces quatre accords@tie{}:
 
 @lilypond[quote,verbatim,fragment,ragged-right,relative=1]
 \key g \major
 <d g>4 <d fis> <d a'> <d g>
 @end lilypond
 
-Nous exprimons ici chacun des accords par l'utilisation de 
+Nous exprimons ici chacun des accords par l'utilisation de
 chevrons gauche et droite simples, @w{@code{< ... >}}, puisque nous
 n'avons besoin que d'une seule voix.  Supposons maintenant que le fa
 dièse soit une croche, suivie d'un sol croche -- une note de passage
-vers le la ?  Nous avons alors deux notes qui débutent au même moment,
-mais dont la durée est différente : un ré noire et un fa dièse croche.
-Comment coder cela ?  Dans la mesure où toutes les notes d'un accord
-doivent avoir la même durée, nous ne pouvons pas écrire un accord.  Nous
-ne pouvons pas non plus écrire deux notes séparées, puisqu'elles
-débutent en même temps.  Nous avons alors besoin de deux voix.
+vers le la@tie{}?  Nous avons alors deux notes qui débutent au même
+moment, mais dont la durée est différente@tie{}: un ré noire et un fa
+dièse croche. Comment coder cela@tie{}?  Dans la mesure où toutes les
+notes d'un accord doivent avoir la même durée, nous ne pouvons pas
+écrire un accord.  Nous ne pouvons pas non plus écrire deux notes
+séparées, puisqu'elles débutent en même temps.  Nous avons alors besoin
+de deux voix.
 
 Voyons comment cela se pratique selon la grammaire de LilyPond.
 
@@ -646,7 +649,7 @@ erreurs.  Cette manière de procéder est tout à fait indiquée dans le cas
 d'une pièce ne comportant que quelques courts passages de polyphonie.
 
 Voici comment éclater les accords en deux voix, avec la note de passage
-et la liaison :
+et la liaison@tie{}:
 
 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
 \key g \major
@@ -669,7 +672,7 @@ Autre exemple :
 Le recours à une construction @code{<< \\ >>} particulière à chaque
 mesure n'est pas nécessaire.  Bien qu'on y gagne en lisibilité si chaque
 mesure ne contient que quelques notes, il est plus judicieux de
-carrément séparer chaque voix :
+carrément séparer chaque voix@tie{}:
 
 @lilypond[quote,verbatim,fragment,ragged-right,relative=2]
 \key d \minor
@@ -713,7 +716,7 @@ Ces voix sont séparées de la voix principale, laquelle contient les
 notes en dehors de la construction @code{<<...>>} -- que nous
 appellerons @emph{construction simultanée}.  Les liaisons, de
 prolongation ou non, ne peuvent relier des notes que si elles
-appartiennent à la même voix ; elles ne peuvent ni pénétrer une
+appartiennent à la même voix@tie{}; elles ne peuvent ni pénétrer une
 contruction simultanée, ni en sortir.  Inversement, les voix parallèles
 issues de constructions simultanées apparaissant sur une même portée
 appartiennent à la même voix.  Les autres propriétés liées au contexte
@@ -766,9 +769,9 @@ couleur des hampes et ligatures et le style de tête des note, pour
 permettre une meilleure distinction entre les différentes voix.   La
 première voix comporte des têtes en losange rouge, la deuxième en
 triangle bleu, la troisième en cercle barré vert, la quatrième (non
-utilisée ici) en croix magenta ;  @code{\voiceNeutralStyle} (non utilisé
-ici) revient au style par défaut.  Nous verrons plus tard comment créer
-de telles commandes.
+utilisée ici) en croix magenta@tie{};  @code{\voiceNeutralStyle} (non
+utilisé ici) revient au style par défaut.  Nous verrons plus tard
+comment créer de telles commandes.
 Voir @ref{Visibilité et couleur des objets} et
 @ref{Utilisation de variables dans les retouches}.
 
@@ -791,9 +794,9 @@ de l'accord qui précède.  Ainsi, dans
 @code{noteC}                                                    @*
 @code{noteE} est relative à @code{noteD}, pas à @code{noteA}
 
-Une méthode alternative, et qui peut simplifier les choses si les notes 
+Une méthode alternative, et qui peut simplifier les choses si les notes
 des différentes voix sont espacées, consiste à placer une commande
-@code{\relative} au début de chacune des voix :
+@code{\relative} au début de chacune des voix@tie{}:
 
 @example
 \relative c' @{ noteA ... @}
@@ -839,21 +842,21 @@ les voix -- ce qui est plus compliqué sera décortiqué plus tard.
 La direction des hampes sert souvent à indiquer dans la continuité deux
 lignes mélodiques simultanées.  Ici, les hampes des notes les plus
 hautes vont vers le haut, et celles des notes plus basses vers le
-bas.  C'est une première indication de ce que nous avons eu recours à plus
-d'une voix.
+bas.  C'est une première indication de ce que nous avons eu recours à
+plus d'une voix.
 
 Mais le réel besoin de multiples voix se fait sentir dès lors que
 plusieurs notes qui débutent en même temps ont des durées différentes.
-C'est évident au troisième temps de la première mesure : le la bémol est
-une noire pointée, le fa une noire, et le ré bémol une blanche.  On ne
-peut les grouper dans un accord, puisque toutes les notes composant un
-accord doivent être de même durée.  On ne peut non plus les écrire
-séquentiellement, puisqu'elles débutent toutes au même instant.  Ce
-fragment de mesure nécessite trois voix, et une bonne pratique voudrait
-que l'intégralité de la mesure soit sur trois voix, comme ci-dessous où
-nous avons une allure et une couleur différentes aux notes de chacune
-d'entre elles.  Une fois de plus, nous reviendrons plus tard sur le code
-que vous ne comprendriez pas.
+C'est évident au troisième temps de la première mesure@tie{}: le la
+bémol est une noire pointée, le fa une noire, et le ré bémol une
+blanche.  On ne peut les grouper dans un accord, puisque toutes les
+notes composant un accord doivent être de même durée.  On ne peut non
+plus les écrire séquentiellement, puisqu'elles débutent toutes au même
+instant.  Ce fragment de mesure nécessite trois voix, et une bonne
+pratique voudrait que l'intégralité de la mesure soit sur trois voix,
+comme ci-dessous où nous avons une allure et une couleur différentes aux
+notes de chacune d'entre elles.  Une fois de plus, nous reviendrons plus
+tard sur le code que vous ne comprendriez pas.
 
 @c The following should appear as music without code
 @c The three voice styles should be defined in -init
@@ -885,8 +888,9 @@ que vous ne comprendriez pas.
 
 Essayons à présent de coder cette musique en partant de zéro.  Comme
 nous le verrons, certaines difficultés vont se présenter.  Partons de ce
-que nous avons appris : utilisons la construction @code{<< \\ >>} pour
-saisir la première mesure dans trois voix :
+que nous avons appris@tie{}: utilisons la construction
+@code{<<@tie{}\\@tie{}>>} pour saisir la première mesure dans trois
+voix@tie{}:
 
 @lilypond[quote,verbatim,fragment,ragged-right]
 \new Staff \relative c'' {
@@ -905,12 +909,13 @@ saisir la première mesure dans trois voix :
 @cindex voix et direction des hampes
 @cindex direction des hampes et voix
 
-La direction des hampes est attribuée automatiquement : les voix
+La direction des hampes est attribuée automatiquement@tie{}: les voix
 impaires portent des hampes vers le haut, les voix paires des hampes
 vers le bas.  Les hampes des voix 1 et 2 sont orientées comme il faut
 mais celles de la voix 3 devraient, dans le cas qui nous occupe, aller
 vers le bas.  Nous pouvons corriger cela en sautant la voix 3 et en
-plaçant la musique dans la voix 4 grâce à un @code{\\} supplémentaire :
+plaçant la musique dans la voix 4 grâce à un @code{\\}
+supplémentaire@tie{}:
 
 @lilypond[quote,verbatim,fragment,ragged-right]
 \new Staff \relative c'' {
@@ -934,7 +939,7 @@ voix, à savoir que les hampes d'une voix peuvent chevaucher les têtes de
 note des autres voix.  En matière de mise en forme des notes, LilyPond
 tolère que des notes ou accords appartenant à deux voix se retrouvent
 dans le même empilement de notes (@emph{note column} en anglais) si tant
-est que ces hampes vont dans des directions opposées ; néanmoins les
+est que ces hampes vont dans des directions opposées@tie{}; néanmoins les
 notes des troisième et quatrième voix seront décalées si nécessaire pour
 éviter que les têtes ne se chevauchent.  Cela marche plutôt bien mais,
 dans notre exemple, les notes de la voix la plus basse ne sont vraiment
@@ -946,7 +951,8 @@ examinerons ce problème dans un autre chapitre (voir la propriété
 
 
 @seealso
-Manuel de notation : @ruser{Plusieurs voix}.
+Manuel de notation :
+@ruser{Plusieurs voix}.
 
 
 @node Instanciation explicite des voix
@@ -975,7 +981,7 @@ plus importantes puisqu'elle permet de bien séparer les voix et de leur
 affecter un nom plus parlant.
 
 En particulier, la construction @code{<< \\ >>} que nous avons vue
-précédemment :
+précédemment@tie{}:
 
 @example
 \new Staff @{
@@ -1094,7 +1100,7 @@ permet d'ajouter une liaison de phrasé à l'ensemble.
 
 Dans certaines circonstances de polyphonie complexe, vous pourrez être
 amené à recourir à une voix temporaire, ce qui peut être une manière
-plus naturelle de saisir la musique :
+plus naturelle de saisir la musique@tie{}:
 
 @lilypond[quote,ragged-right,verbatim]
 \new Staff \relative c' {
@@ -1121,9 +1127,9 @@ plus naturelle de saisir la musique :
 Cette manière de brièvement imbriquer des voix est bien utile pour de
 courts fragments de musique polyphonique.  Mais lorsqu'une portée est
 très souvent polyphonique, on peut y gagner en clarté si l'on utilise
-plusieurs voix sur l'ensemble de cette portée et que l'on positionne des 
+plusieurs voix sur l'ensemble de cette portée et que l'on positionne des
 silences invisibles pour sauter les moments où il n'y a rien dans cette
-voix. 
+voix.
 
 @lilypond[quote,ragged-right,verbatim]
 \new Staff \relative c' <<
@@ -1167,15 +1173,15 @@ voix.
 Les notes rapprochées d'un accord, ou des notes de différentes voix qui
 tombent ensemble, seront rangées sur deux colonnes, voire plus, pour
 palier d'éventuels chevauchements des têtes.  On appelle cela des
-empilements de notes.  Chaque voix dispose de plusieurs empilements, et 
+empilements de notes.  Chaque voix dispose de plusieurs empilements, et
 l'attribution d'un décalage à une voix en particulier s'appliquera à
 l'empilement en question s'il y avait risque de collision.
 Nous en avons une illustration à la deuxième mesure de l'exemple
-ci-dessus : le do de la deuxième voix est décalé à droite du ré de la
-première voix et, dans l'accord final, le do de la troisième voix est
+ci-dessus@tie{}: le do de la deuxième voix est décalé à droite du ré de
+la première voix et, dans l'accord final, le do de la troisième voix est
 lui aussi décalé à droite des autres notes.
 
-Les commandes @code{\shiftOn}, @code{\shiftOnn}, @code{\shiftOnnn}, et 
+Les commandes @code{\shiftOn}, @code{\shiftOnn}, @code{\shiftOnnn}, et
 @code{\shiftOff} spécifient le degré nécessaire de décalage qui sera
 appliqué aux notes ou accords de la voix en question afin d'éviter une
 collision.  Par défaut, les voix extérieures -- normalement les
@@ -1198,14 +1204,15 @@ d'empilements en conflit}.
 
 
 @seealso
-Manuel de notation : @ruser{Plusieurs voix}.
+Manuel de notation :
+@ruser{Plusieurs voix}.
 
 
 @node Voix et paroles
 @subsection Voix et paroles
 @translationof Voices and vocals
 
-La musique vocale est une gageure en soi : il nous faut combiner deux
+La musique vocale est une gageure en soi@tie{}: il nous faut combiner deux
 expressions différentes -- des notes et des paroles.
 
 @funindex \new Lyrics
@@ -1219,9 +1226,9 @@ Nous avons déjà abordé la commande @code{\addlyrics@{@}}, qui permet de
 gérer des partitions simples.  Cette technique est cependant
 relativement limitée.  Pour de la musique un peu plus compliquée, il
 vous faudra contenir les paroles dans un contexte @code{Lyrics}, créé
-par la commande @code{\new Lyrics} ; vous relierez ensuite ces paroles
-aux notes grâce à la commande @code{\lyricsto@{@}} et au nom assigné à
-la voix en question.
+par la commande @code{\new Lyrics}@tie{}; vous relierez ensuite ces
+paroles aux notes grâce à la commande @code{\lyricsto@{@}} et au nom
+assigné à la voix en question.
 
 @lilypond[quote,verbatim,fragment]
 <<
@@ -1250,7 +1257,7 @@ Si la ligature automatique que LilyPond applique par défaut
 est pleinement adaptée en matière de musique instrumentale, il
 n'en va pas de même dans le cas d'une musique associée à des paroles,
 et pour laquelle soit les ligatures sont carrément absentes, soit elles
-servent à indiquer un mélisme -- plusieurs notes pour une même syllabe.  
+servent à indiquer un mélisme -- plusieurs notes pour une même syllabe.
 Dans l'exemple qui suit, nous utilisons la commande @code{\autoBeamOff}
 afin de désactiver les ligatures automatiques.
 
@@ -1263,7 +1270,7 @@ afin de désactiver les ligatures automatiques.
 
 Nous allons reprendre un extrait de Judas Maccabæus pour illustrer ce
 que cette technique apporte en flexibilité.  Nous commençons par
-utiliser des variables afin de séparer de la structure de la portée 
+utiliser des variables afin de séparer de la structure de la portée
 aussi bien la musique que les paroles.  Nous ajoutons par la même
 occasion un crochet spécifique aux portées pour chœur
 (@code{ChoirStaff}).  Quant aux blocs de paroles, nous les faisons
@@ -1309,7 +1316,7 @@ Voici donc la structure de base valable pour toute partition vocale.  On
 peut y ajouter d'autres portées si besoin est, d'autres voix à
 chaque portée, plusieurs couplets aux paroles, et les variables
 contenant la musique peuvent même être stockées dans des fichiers
-indépendants dès lors que leur longueur devient conséquente. 
+indépendants dès lors que leur longueur devient conséquente.
 
 @cindex structure d'hymne
 @cindex SATB, structure
@@ -1371,13 +1378,13 @@ quelque peu tirés par les cheveux.
 Commençons par ouvrir un bloc @code{score} qui contiendra un
 @code{ChoirStaff}, puisque nous aimerions voir un crochet au début du
 système choral.  Nous devrions avoir, après @code{\new ChoirStaff}, un
-double chevron gauche pour synchroniser les portées ; mais comme nous
+double chevron gauche pour synchroniser les portées@tie{}; mais comme nous
 reportons le parallélisme après le solo, nous utilisons des accolades --
 un double chevron ne serait cependant pas génant.  À l'intérieur du
 @code{ChoirStaff}, nous voulons en premier la portée avec le couplet.
 Puisqu'elle englobe parallèlement des notes et des paroles, nous devons
 encadrer les @code{\new Voice} et @code{\new Lyrics} de doubles
-chevrons gauche/droite pour les faire démarrer de concert : 
+chevrons gauche/droite pour les faire démarrer de concert@tie{}:
 
 @lilypond[quote,verbatim,ragged-right]
 versenotes = \relative c'' {
@@ -1410,7 +1417,7 @@ qu'une deuxième portée s'amorce en parallèle pour contenir
 la suite du @code{\break} de la voix contenant le couplet -- il s'agit
 bien de la @emph{même} voix.  Voici cette section parallèle.  On
 pourrait tout à fait ajouter encore d'autres portées ici, toujours de la
-même manière. 
+même manière.
 
 @example
 <<
@@ -1431,7 +1438,7 @@ même manière.
 
 Et voici le résultat final, avec ses deux portées pour la partie
 chorale, et qui montre comment la section en parallèle s'enchaîne avec
-la voix du couplet :
+la voix du couplet@tie{}:
 
 @lilypond[quote,verbatim, ragged-right]
 versenotes = \relative c'' {
@@ -1493,7 +1500,7 @@ refrainwordsB = \lyricmode {
 Bien que ce que nous venons de voir constitue un exercice intéressant et
 fort utile pour comprendre comment s'articulent des blocs séquentiels et
 simultanés, nous aurions aussi pu coder notre exemple sous la forme de
-deux blocs @code{\score} au sein d'un bloc @code{\book} implicite :
+deux blocs @code{\score} au sein d'un bloc @code{\book} implicite@tie{}:
 
 @lilypond[quote,verbatim,ragged-right]
 versenotes = \relative c'' {
@@ -1554,7 +1561,8 @@ refrainwordsB = \lyricmode {
 
 
 @seealso
-Manuel de notation : @ruser{Musique vocale}.
+Manuel de notation :
+@ruser{Musique vocale}.
 
 
 @node Contextes et graveurs
@@ -1562,15 +1570,15 @@ Manuel de notation : @ruser{Musique vocale}.
 @translationof Contexts and engravers
 
 Nous avons évoqué rapidement les contextes et graveurs dans les chapitres
-précédents ; examinons en détail ces concepts essentiels à la
+précédents@tie{}; examinons en détail ces concepts essentiels à la
 maîtrise de LilyPond.
 
 @menu
-* Tout savoir sur les contextes::          
-* Création d'un contexte::           
-* Tout savoir sur les graveurs::         
-* Modification des propriétés d'un contexte::  
-* Ajout et suppression de graveurs::  
+* Tout savoir sur les contextes::
+* Création d'un contexte::
+* Tout savoir sur les graveurs::
+* Modification des propriétés d'un contexte::
+* Ajout et suppression de graveurs::
 @end menu
 
 @node Tout savoir sur les contextes
@@ -1581,7 +1589,7 @@ maîtrise de LilyPond.
 
 Imprimer de la musique impose d'ajouter un certain nombre d'éléments de
 notation.  Par exemple, voici un fragment de partition, précédé du code
-qui l'engendre :
+qui l'engendre@tie{}:
 
 @lilypond[quote,verbatim,relative=2,fragment]
 cis4 cis2. g4
@@ -1589,20 +1597,20 @@ cis4 cis2. g4
 
 Si le code est assez austère, dans la partition ont été ajoutés un
 chiffre de mesure, des barres de mesure, des altérations et une clé.
-Pour une bonne raison : LilyPond @emph{interprète} le code.  Il le
+Pour une bonne raison@tie{}: LilyPond @emph{interprète} le code.  Il le
 compulse dans l'ordre chronologique, de même qu'on lit une partition de
-gauche à droite ; et pendant ce traitement, le logiciel garde en
+gauche à droite@tie{}; et pendant ce traitement, le logiciel garde en
 mémoire les limites des mesures, ou encore quelles hauteurs de note
 demandent des altérations accidentelles.  Ces informations se présentent
-à plusieurs niveaux : ainsi, une altération n'a d'effet que sur une
+à plusieurs niveaux@tie{}: ainsi, une altération n'a d'effet que sur une
 seule portée, tandis qu'une barre de mesure doit être synchronisée sur
 toute l'étendue verticale de la partition.
 
 LilyPond regroupe ces règles et ces fragments d'information dans des
 @emph{Contextes}.  Certains contextes sont les voix (contexte @code{Voice}),
 les portées (contexte @code{Staff}), ou la partition dans son ensemble
-(contexte @code{Score}).  Ils sont ordonnés hiérarchiquement : ainsi un
-contexte @code{Staff} peut contenir plusieurs contextes
+(contexte @code{Score}).  Ils sont ordonnés hiérarchiquement@tie{}:
+ainsi un contexte @code{Staff} peut contenir plusieurs contextes
 @code{Voice}, et un contexte @code{Score} peut contenir plusieurs
 contextes @code{Staff}.
 
@@ -1610,17 +1618,18 @@ contextes @code{Staff}.
 @sourceimage{context-example,5cm,,}
 @end quotation
 
-Chaque contexte est chargé de faire appliquer certaines règles de gravure,
-de créer certains objets, et de prendre en compte les propriétés qui leur
-sont associées.  Ainsi, le contexte @code{Voice} peut faire intervenir une
-altération accidentelle, puis le contexte @code{Staff} devra déterminer s'il
-faudra imprimer ou non cette dernière dans la suite de la mesure.
+Chaque contexte est chargé de faire appliquer certaines règles de
+gravure, de créer certains objets, et de prendre en compte les
+propriétés qui leur sont associées.  Ainsi, le contexte @code{Voice}
+peut faire intervenir une altération accidentelle, puis le contexte
+@code{Staff} devra déterminer s'il faudra imprimer ou non cette dernière
+dans la suite de la mesure.
 
-Les barres de mesure, quant à elles, sont alignées verticalement grâce au
-contexte @code{Score} par défaut. 
+Les barres de mesure, quant à elles, sont alignées verticalement grâce
+au contexte @code{Score} par défaut.
 En revanche, dans une musique polymétrique, par exemple mêlant une
 portée à 3/4 et une autre à 4/4, les barres de mesures n'ont plus à être
-alignées : il faut alors modifier les comportement par défaut des
+alignées@tie{}: il faut alors modifier les comportement par défaut des
 contextes @code{Score} et @code{Staff}.
 
 Dans une partition très simple, les contextes sont créés implicitement
@@ -1632,7 +1641,7 @@ une notation spéciale, modifier les contextes ou en créer de nouveaux
 devient extrêment utile.
 
 En plus des contextes @code{Score}, @code{Staff} et @code{Voice} sont
-disponibles d'autres contextes intermédiaires entre les niveaux 
+disponibles d'autres contextes intermédiaires entre les niveaux
 partition et portée, chargés de gérer certains regroupement, tels que
 @code{PianoStaff} ou @code{ChoirStaff}.  Vous disposez aussi d'autres
 contextes de portée ou de voix alternatifs, ainsi que des contextes
@@ -1645,7 +1654,8 @@ ponctuation, comme par exemple @code{GregorianTranscriptionStaff}.
 
 
 @seealso
-Manuel de notation : @ruser{Tout savoir sur les contextes}.
+Manuel de notation :
+@ruser{Tout savoir sur les contextes}.
 
 
 @node Création d'un contexte
@@ -1658,7 +1668,7 @@ Manuel de notation : @ruser{Tout savoir sur les contextes}.
 @cindex nouveaux contextes
 @cindex contextes, création de
 
-Il en va des contextes comme de toute hiérarchie : il faut un sommet -- 
+Il en va des contextes comme de toute hiérarchie@tie{}: il faut un sommet --
 le contexte @code{Score} en l'occurence.  La commande @code{\score} est
 chargée de le créer, mais pour des partitions simples, il le sera
 automatiquement.  Le bloc @code{score} contient donc une expression
@@ -1666,11 +1676,11 @@ musicale unique ainsi que la définition des supports à produire --
 @code{\layout} pour du visuel ou @code{\midi} pour de l'acoustique.
 
 Lorsqu'une partition ne comporte qu'une voix et une seule portée, vous
-pouvez laisser LilyPond créer automatiquement les contextes @code{Voice} 
-et @code{Staff} ; mais leur présence explicite devient indispensable dès
-que la situation se complique.  
+pouvez laisser LilyPond créer automatiquement les contextes @code{Voice}
+et @code{Staff}@tie{}; mais leur présence explicite devient indispensable dès
+que la situation se complique.
 Le moyen le plus simple est d'utiliser la commande @code{\new}.  Elle
-doit intervenir avant une expression musicale, ainsi :
+doit intervenir avant une expression musicale, ainsi@tie{}:
 
 @example
 \new @var{type} @var{expression-musicale}
@@ -1678,9 +1688,9 @@ doit intervenir avant une expression musicale, ainsi :
 
 @noindent
 où @var{type} correspond au nom du contexte (tels @code{Staff} ou
-@code{Voice}).  Cette commande crée un nouveau contexte, puis 
+@code{Voice}).  Cette commande crée un nouveau contexte, puis
 interprète l'@var{expression-musicale} contenue dans ledit
-contexte.  
+contexte.
 
 Notez bien que la commande @code{\new Score} n'est pas obligatoire,
 puisque le contexte premier que constitue @code{Score} est créé
@@ -1690,13 +1700,13 @@ explicitement un contexte @code{Score} à l'aide de la commande
 @code{\new score} est lorsqu'il comprendra un bloc @code{\with} aux fins
 de stipuler les propriétés de certains contextes qui s'appliqueront à
 l'ensemble de la partition.  Vous trouverez plus dinformation sur
-l'utilisation des blocs @code{\with} au chapitre 
-@ref{Modification des propriétés d'un contexte}. 
+l'utilisation des blocs @code{\with} au chapitre
+@ref{Modification des propriétés d'un contexte}.
 
 Nous avons déjà vu au cours des chapitres précédents de nombreux
 exemples où des contextes @code{Staff} ou @code{Voice} étaient créés au
 besoin.  Dans un but didactique, voici maintenant une application
-complète et abondamment commentée : 
+complète et abondamment commentée@tie{}:
 
 @lilypond[quote,verbatim,ragged-right]
 \score {  % start of single compound music expression
@@ -1750,7 +1760,7 @@ qu'une voix -- bornée par des accolades simples.
 @cindex nommage des contextes
 
 La commande @code{\new} peut aussi permettre de nommer le contexte créé,
-et ainsi le distinguer des autres contextes déjà existants :
+et ainsi le distinguer des autres contextes déjà existants@tie{}:
 
 @example
 \new @var{type} = @var{"UnNom"} @var{expression-musicale}
@@ -1761,15 +1771,16 @@ Vous noterez la distinction entre le nom du type de contexte,
 lettres au bon gré de l'utilisateur -- permettant d'identifier une
 instance particulière du type en question.  Vous pouvez utiliser des
 chiffres et espaces, à la stricte condition d'englober le tout dans des
-guillemets ; l'identificateur suivant est tout à fait valide :
-@w{@code{\new Staff = "MaPortee 1" @var{expression-musicale}}}.  
-Comme nous l'avons déjà vu dans le chapitre consacré aux paroles 
+guillemets@tie{}; l'identificateur suivant est tout à fait valide@tie{}:
+@w{@code{\new Staff = "MaPortee 1" @var{expression-musicale}}}.
+Comme nous l'avons déjà vu dans le chapitre consacré aux paroles
 (@ref{Voix et paroles}), cet identifiant permettra ensuite de se
-référer à ce contexte particulier. 
+référer à ce contexte particulier.
 
 
 @seealso
-Manuel de notation : @ruser{Création d'un contexte}.
+Manuel de notation :
+@ruser{Création d'un contexte}.
 
 
 @node Tout savoir sur les graveurs
@@ -1783,17 +1794,17 @@ Tout point qui compose une partition générée par LilyPond est
 produit par un graveur (@emph{engraver} en anglais).   Ainsi, il y en a
 un qui imprime les portées, un autre les têtes de note, un autre les
 hampes, un autre encore pour les ligatures, etc.  LilyPond dispose de
-plus de 120 graveurs ! La plupart des partitions ne requièrent de
+plus de 120 graveurs@tie{}! La plupart des partitions ne requièrent de
 s'intéresser qu'à quelques-uns seulement, et pour des partitions
 simples, vous n'aurez même pas à vous en préoccuper.
 
 Les graveurs résident et opèrent au sein des contextes.
-Les graveurs tels que le @code{Metronome_mark_engraver}, dont les effets 
+Les graveurs tels que le @code{Metronome_mark_engraver}, dont les effets
 s'appliquent à la partition dans son intégralité, opèrent au sein du
-contexte de plus haut niveau -- le contexte @code{Score}. 
+contexte de plus haut niveau -- le contexte @code{Score}.
 
 Les graveurs @code{Clef_engraver} et @code{Key_engraver} seront logés
-dans chacun des contextes @code{Staff} ; deux portées peuvent requérir
+dans chacun des contextes @code{Staff}@tie{}; deux portées peuvent requérir
 des clefs et des armures différentes.
 
 Les graveurs @code{Note_heads_engraver} et @code{Stem_engraver} résident
@@ -1854,7 +1865,7 @@ lorsqu'on modifie l'action des graveurs.
 
 
 @seealso
-Référence des propriétés internes : 
+Référence des propriétés internes :
 @rinternals{Engravers and Performers}.
 
 
@@ -1873,8 +1884,8 @@ Référence des propriétés internes :
 Les contextes gèrent les différentes valeurs des nombreuses
 @emph{propriétés} qui leur sont attachées.  Beaucoup d'entre elles
 sont susceptibles d'être modifiées afin d'influer sur l'interprétation
-de l'input et ainsi changer l'apparence du résultat.  On les modifie 
-grâce à la commande @code{\set}, qui s'utilise ainsi :
+de l'input et ainsi changer l'apparence du résultat.  On les modifie
+grâce à la commande @code{\set}, qui s'utilise ainsi@tie{}:
 
 @example
 \set @emph{ContexteNommé}.@emph{propriétéNommée} = #@emph{valeur}
@@ -1928,7 +1939,7 @@ anglais) ou faux (@code{#f} pour @emph{False} en anglais), un entier est
 un nombre entier positif, un réel est un nombre décimal positif ou
 négatif, et texte correspond à une suite de caractères encadrée par des
 apostrophes doubles.  Attention à la présence des signes dièse
-(@code{#}) dans deux cas particuliers : ils sont partie intégrante des
+(@code{#}) dans deux cas particuliers@tie{}: ils sont partie intégrante des
 valeurs boléennes et précèdent les @code{t} ou @code{f}, mais doivent
 aussi précéder @emph{valeur} dans le libellé de la commande @code{\set}.
 Il faudra donc, dans le cas d'une valeur boléenne, ne pas oublier de
@@ -1966,7 +1977,7 @@ deuxième commande @code{\set} a défini @qq{Alto} comme propriété
 @code{instrumentName} du contexte de voix.  Puisque LilyPond n'ira pas
 chercher une telle propriété dans le contexte @code{Voice}, celle-ci ne
 sera pas interprétée.  Il ne s'agit pas d'une erreur, aucun message
-d'erreur ne sera ni émis ni enregistré. 
+d'erreur ne sera ni émis ni enregistré.
 
 De la même manière, une faute d'orthographe dans le nom de la propriété
 ne génèrera aucun message d'erreur et l'action escomptée ne se produira
@@ -1976,24 +1987,24 @@ dans n'importe lequel des contextes disponibles.  Mais tant que ce nom
 est inconnu de LilyPond, rien ne se passera.  Certains éditeurs de texte
 disposent d'une prise en charge spécifique aux fichiers source LilyPond,
 à l'instar de LilyPondTool couplé à JEdit et qui documente les noms des
-propriétés dans une infobulle lorsque vous les survolez à la souris, ou 
+propriétés dans une infobulle lorsque vous les survolez à la souris, ou
 les souligne différemment s'ils sont inconnus, comme ConTEXT.  Dans le
 cas où votre éditeur ne dispose pas de ces fonctionnalités, nous vous
 recommandons de vérifier le nom des propriétés que vous manipulez dans
-le Manuel de références internes -- voir 
+le Manuel de références internes -- voir
 @rinternals{Tunable context properties}, ou @rinternals{Contexts}.
 
 La propriété @code{instrumentName} ne sera prise en compte que si elle
-est définie dans un contexte @code{Staff} ; d'autres propriétés peuvent
+est définie dans un contexte @code{Staff}@tie{}; d'autres propriétés peuvent
 par contre être définies dans plusieurs contextes différents.  C'est le
 cas de la propriété @code{extraNatural} qui est définie par défaut à
 @code{##t} (vrai) pour toutes les portées.  Si vous lui attribuez la
 valeur @code{##f} (faux) dans un contexte @code{Staff} particulier, elle
-ne s'appliquera qu'aux altérations de la portée en question ; si vous
+ne s'appliquera qu'aux altérations de la portée en question@tie{}; si vous
 lui attribuez la valeur @qq{faux} au niveau du contexte @code{Score},
 cela s'appliquera alors à toutes les portées.
 
-Voici comment supprimer les bécarres supplémentaires pour une portée :
+Voici comment supprimer les bécarres supplémentaires pour une portée@tie{}:
 
 @lilypond[quote,verbatim,ragged-right]
 <<
@@ -2024,11 +2035,11 @@ et pour toutes les portées :
 
 Autre exemple, si la propriété @code{clefOctavation} est déterminée au
 niveau du contexte @code{Score}, elle modifiera la valeur de l'octave en
-cours pour toutes les portées actives ; cette valeur sera considérée
+cours pour toutes les portées actives@tie{}; cette valeur sera considérée
 comme étant la nouvelle valeur par défaut pour toutes les portées à
 venir.
 
-La commande opposée, @code{\unset}, efface la propriété du contexte ; la
+La commande opposée, @code{\unset}, efface la propriété du contexte@tie{}; la
 plupart des propriétés reviennent de ce fait à leur valeur par défaut.
 En règle générale, la commande @code{\unset} n'est pas nécessaire dès
 lors que vous faites appel à une nouvelle commande @code{\set} pour
@@ -2077,7 +2088,7 @@ contexte.  Lorsque vous créez un contexte à l'aide de la commande
 @code{\new}, vous pouvez la faire suivre immédiatement d'un bloc
 @w{@code{\with @{ .. @}}} qui contiendra les réglages des différentes
 propriétés.  Ainsi, si nous voulions par exemple annuler l'impression des
-bécarres supplémentaires sur la durée d'une portée, nous écririons :
+bécarres supplémentaires sur la durée d'une portée, nous écririons@tie{}:
 
 @example
 \new Staff \with @{ extraNatural = ##f @}
@@ -2101,7 +2112,7 @@ ce qui donnerait :
 
 Dans le cas où ces ajustements de propriété doivent affecter
 toutes les portées de la partition, nous utiliserons alors
-l'instruction @code{\new Score}, comme ici :
+l'instruction @code{\new Score}, comme ici@tie{}:
 
 @lilypond[quote,verbatim,ragged-right]
 \score {
@@ -2121,12 +2132,12 @@ l'instruction @code{\new Score}, comme ici :
 @end lilypond
 
 Les propriétés réglées de cette manière peuvent néanmoins être modifiées
-de façon dynamique grâce à @code{\set} ; un @code{\unset} les ramènera à
+de façon dynamique grâce à @code{\set}@tie{}; un @code{\unset} les ramènera à
 leur valeur par défaut.
 
 @cindex fontSize, valeur par défaut et réglage
 
-La propriété @code{fontSize} constitue une exception : lorsqu'elle est
+La propriété @code{fontSize} constitue une exception@tie{}: lorsqu'elle est
 déterminée au sein d'un bloc @code{\with}, cela redéfinit la valeur par
 défaut de la taille de fonte.  Une modification est possible par la
 commande @code{\set}, mais la commande @code{\unset fontSize} fera
@@ -2148,7 +2159,7 @@ avec la commande @code{\with}, puisqu'on se place dans un bloc
 @code{\context} inclus dans un bloc @code{\layout}.  Chaque bloc
 @code{\context} affectera tous les contextes concernés par le bloc
 @code{\score} ou @code{\book} au sein duquel apparaît ce bloc
-@code{\layout}.  Voici comment le mettre en place :
+@code{\layout}.  Voici comment le mettre en place@tie{}:
 
 @lilypond[verbatim,quote]
 \score {
@@ -2173,12 +2184,12 @@ une commande @code{\set} au fil des notes.
 
 
 @seealso
-Manuel de notation : 
+Manuel de notation :
 @ruser{Modification des réglages par défaut d'un contexte},
 @c uncomment when backslash-node-name issue is resolved -pm
 @c @ruser{La commande de fixation (set)}.
 
-Référence des propriétés internes : 
+Référence des propriétés internes :
 @rinternals{Contexts},
 @rinternals{Tunable context properties}.
 
@@ -2231,7 +2242,7 @@ lignes d'une portée sont générées par le @code{Staff_symbol_engraver}.
 @cindex ambitus, graveur
 
 Vous pouvez aussi ajouter individuellement un graveur à un contexte. La
-commande se formule ainsi :
+commande se formule ainsi@tie{}:
 
 @code{\consists @var{Nom_du_graveur}}
 
@@ -2241,7 +2252,7 @@ font apparaître un @rglos{ambitus} au début de la portée, afin
 d'indiquer ses notes extrêmes.  L'ambitus est généré par
 l'@code{Ambitus_engraver}, que l'on peut adjoindre à n'importe quel
 contexte.  Si nous l'ajoutons au contexte @code{Voice}, seule la
-tessiture de cette voix sera calculée :
+tessiture de cette voix sera calculée@tie{}:
 
 @lilypond[quote,verbatim,ragged-right]
 \new Staff <<
@@ -2263,7 +2274,7 @@ tessiture de cette voix sera calculée :
 @noindent
 alors que si nous l'ajoutons au contexte @code{Staff},
 l'@code{Ambitus_engraver} calculera l'écart maximal à partir de toutes
-les notes de toutes les voix de la portée :
+les notes de toutes les voix de la portée@tie{}:
 
 @lilypond[quote,verbatim,ragged-right]
 \new Staff \with {
@@ -2293,7 +2304,7 @@ graveurs à des contextes individuels.  Nous pourrions aussi ajouter ou
 supprimer des graveurs à tous les contextes d'un même type en insérant
 les commandes pour le contexte approprié au sein d'un bloc
 @code{\layout}.  Si nous voulions afficher un ambitus pour chacune des
-portées d'un système à quatre portées, il nous suffirait d'écrire :
+portées d'un système à quatre portées, il nous suffirait d'écrire@tie{}:
 
 @lilypond[quote,verbatim,ragged-right]
 \score {
@@ -2329,7 +2340,8 @@ bloc @code{\context}.
 
 
 @seealso
-Manuel de notation : @ruser{Modification des greffons de contexte}, 
+Manuel de notation :
+@ruser{Modification des greffons de contexte},
 @ruser{Modification des réglages par défaut d'un contexte}.
 
 
@@ -2338,19 +2350,19 @@ Manuel de notation : @ruser{Modification des greffons de contexte},
 @translationof Extending the templates
 
 Bon, vous avez lu le tutoriel, vous savez écrire de la musique.  Mais
-comment obtenir les portées que vous voulez ?  Les @ref{Modèles},
+comment obtenir les portées que vous voulez@tie{}?  Les @ref{Modèles},
 c'est bien beau, mais que faire quand ils ne traitent pas ce que l'on
-veut précisément ?
+veut précisément@tie{}?
 
 Les exemples qui suivent vous donneront des méthodes générales pour
 adapter des modèles.
 
 @menu
-* Soprano et violoncelle::           
-* Partition pour chœur à quatre voix mixtes::  
-* Écriture d'une partition à partir de zéro::  
-* Économie de saisie grâce aux identificateurs et fonctions::  
-* Conducteurs et parties::            
+* Soprano et violoncelle::
+* Partition pour chœur à quatre voix mixtes::
+* Écriture d'une partition à partir de zéro::
+* Économie de saisie grâce aux identificateurs et fonctions::
+* Conducteurs et parties::
 @end menu
 
 @node Soprano et violoncelle
@@ -2361,7 +2373,7 @@ adapter des modèles.
 
 Commencez par le modèle qui vous semblera le plus proche de ce à quoi
 vous voulez aboutir.  Disons par exemple que vous voulez écrire une pièce
-pour soprano et violoncelle : dans ce cas, on pourrait commencer par les
+pour soprano et violoncelle@tie{}: dans ce cas, on pourrait commencer par les
 @qq{notes et paroles}, pour la partie de soprano.
 
 @example
@@ -2392,7 +2404,7 @@ texte = \lyricmode @{
 @end example
 
 Maintenant, on veut ajouter une partie de violoncelle.
-Jetons un coup d'œil sur l'exemple avec les notes seules :
+Jetons un coup d'œil sur l'exemple avec les notes seules@tie{}:
 
 @example
 \version @w{"@version{}"}
@@ -2414,18 +2426,18 @@ melodie = \relative c' @{
 On n'a pas besoin de deux commandes @code{\version}.  Ce dont on a
 besoin, c'est de la section @code{melodie}. De même, on n'a pas besoin
 de deux sections @code{\score} -- si nous les gardions toutes les deux,
-on obtiendrait deux parties séparées ; mais nous voulons un vrai duo,
+on obtiendrait deux parties séparées@tie{}; mais nous voulons un vrai duo,
 avec les deux parties ensemble.  Dans la section @code{\score}, on n'a
 pas besoin non plus de deux @code{\layout} ni de deux @code{\midi}.
 
 Si on se contente de couper et coller les sections @code{melodie}, on se
-retrouvera avec deux sections de ce nom ; il nous faut donc les renommer.
+retrouvera avec deux sections de ce nom@tie{}; il nous faut donc les renommer.
 Appelons la section pour la soprano @code{sopranoMusique} et celle pour le
-violoncelle @code{violoncelleMusique}.  Tant qu'on y est, renommons 
+violoncelle @code{violoncelleMusique}.  Tant qu'on y est, renommons
 @code{texte} en @code{sopranoParoles}.  Attention à bien renommer les
-deux occurrences de chacune de ces dénominations : c'est-à-dire la
+deux occurrences de chacune de ces dénominations@tie{}: c'est-à-dire la
 définition de départ, où l'on trouve @w{@code{melodie = \relative c' @{ }},
-et l'endroit où cette dénomination est utilisée, dans la section 
+et l'endroit où cette dénomination est utilisée, dans la section
 @code{\score}.
 
 Et puis, toujours tant qu'on y est, mettons le violoncelle en clé de fa,
@@ -2469,7 +2481,7 @@ violoncelleMusique = \relative c @{
 Voilà qui est mieux, mais la partie de violoncelle n'apparaît pas sur
 la partition -- en effet, nous n'y avons pas fait appel dans la section
 @code{\score}.  Si l'on veut que la partie de violoncelle s'imprime sous
-la partie de soprano, on va devoir ajouter :
+la partie de soprano, on va devoir ajouter@tie{}:
 
 @example
 \new Staff \musiqueVioloncelle
@@ -2500,9 +2512,9 @@ se déroulent en même temps.  Le bloc @code{\score} ressemble maintenant à
 @end example
 
 @noindent
-C'est un peu le bazar dans tout ça ; mais il vous sera facile de
+C'est un peu le bazar dans tout ça@tie{}; mais il vous sera facile de
 mettre un peu d'ordre dans l'indentation.  Voici le modèle pour
-soprano et violoncelle au complet :
+soprano et violoncelle au complet@tie{}:
 
 @lilypond[quote,verbatim,ragged-right,addversion]
 sopranoMusic = \relative c' {
@@ -2542,7 +2554,7 @@ celloMusic = \relative c {
 
 @seealso
 Les patrons originaux sont disponibles à l'annexe @qq{Modèles}, voir
-@ref{Portée unique}. 
+@ref{Portée unique}.
 
 
 @node Partition pour chœur à quatre voix mixtes
@@ -2557,7 +2569,7 @@ orchestre, comme Elias de Mendelssohn ou le Messie de Haendel, disposent
 la musique et les paroles du chœur sur quatre portées -- soprano, alto,
 ténor et basse -- surmontant une réduction pour piano de
 l'accompagnement orchestral.  En voici un exemple, tiré du Messie de
-Haendel :
+Haendel@tie{}:
 
 @c The following should appear as music without code
 @lilypond[quote,ragged-right]
@@ -2646,13 +2658,13 @@ L'ordre dans lequel apparaissent les contextes dans le @code{ChoirStaff}
 du modèle ne correspond pas à ce que nous voyons ci-dessus.  Il nous
 faudra y revenir pour obtenir quatre portées avec des paroles en dessous
 de chacune d'elles.  Toutes les voix devraient être @code{\voiceOne},
-ce qui est la position par défaut ; il nous faudra donc éliminer toutes
+ce qui est la position par défaut@tie{}; il nous faudra donc éliminer toutes
 les commandes @code{\voiceXXX}.  Les ténors auront besoin d'une clé
 spécifique.  Enfin, nous n'avons pas encore abordé la façon dont les
-paroles sont présentées dans le modèle ; nous procèderons donc comme
+paroles sont présentées dans le modèle@tie{}; nous procèderons donc comme
 nous en avons l'habitude.  Il faudra aussi ajouter un nom à chaque portée.
 
-Une fois tout ceci accompli, voici notre @code{ChoirStaff} :
+Une fois tout ceci accompli, voici notre @code{ChoirStaff}@tie{}:
 
 @example
     \new ChoirStaff <<
@@ -2681,7 +2693,7 @@ Une fois tout ceci accompli, voici notre @code{ChoirStaff} :
 
 Il nous faut maintenant nous occuper de la partie de piano.  Nous allons
 nous contenter de récupérer la partie de piano du modèle
-@qq{Solo piano} :
+@qq{Solo piano}@tie{}:
 
 @example
 \new PianoStaff <<
@@ -2692,10 +2704,10 @@ nous contenter de récupérer la partie de piano du modèle
 @end example
 
 puis d'ajouter les définitions de variable pour @code{superieur} et
-@code{inferieur}. 
+@code{inferieur}.
 
 Les systèmes pour chœur et pour piano doivent être combinés à l'aide de
-doubles chevrons gauche/droite puisqu'ils doivent s'empiler :
+doubles chevrons gauche/droite puisqu'ils doivent s'empiler@tie{}:
 
 @example
 <<  % combine ChoirStaff et PianoStaff l'un au-dessus de l'autre
@@ -2729,7 +2741,7 @@ doubles chevrons gauche/droite puisqu'ils doivent s'empiler :
 @end example
 
 Une fois tout cela mis en place, et après avoir ajouté les notes et les
-paroles de ces trois mesures du Messie, nous obtenons :
+paroles de ces trois mesures du Messie, nous obtenons@tie{}:
 
 @lilypond[quote,verbatim,ragged-right,addversion]
 global = { \key d \major \time 4/4 }
@@ -2820,18 +2832,18 @@ propres patrons selon le type de musique que vous affectionnez plus
 particulièrement.  Pour voir comment procéder, nous allons monter la
 partition d'un prélude pour orgue.
 
-Nous débutons par une section d'en-tête ; nous y mettrons entre autres
+Nous débutons par une section d'en-tête@tie{}; nous y mettrons entre autres
 le titre et le nom du compositeur.  Puis viennent toutes les définitions
 de toutes les variables. Nous terminons par le bloc @code{\score}.
 Attelons-nous pour cette aventure, en gardant bien à l'esprit ce que
-nous venons de dire ; nous nous occuperons des détails en temps voulu.
+nous venons de dire@tie{}; nous nous occuperons des détails en temps voulu.
 
 Nous nous appuyons sur les deux premières mesures du prélude sur
 @emph{Jesu, meine Freude}, écrit pour orgue avec pédalier.  Vous pouvez
 voir ces deux mesures au bas de cette page.  La main droite comporte
 deux voix, la main gauche et le pédalier une seule.  Il nous faut donc
 quatre définitions de musique, plus une qui contiendra la métrique et
-l'armure :
+l'armure@tie{}:
 
 @example
 \version @w{"@version{}"}
@@ -2867,20 +2879,20 @@ première partie du manuel requiert deux voix et la seconde une seule.
     >>  % fin du contexte de portée ManuelUn
     \new Staff = "ManuelDeux" <<
       \new Voice @{ \ManuelDeuxMusique @}
-    >>  % fin du contexte de portée ManuelDeux 
-  >>  % fin du contexte PianoStaff 
+    >>  % fin du contexte de portée ManuelDeux
+  >>  % fin du contexte PianoStaff
 @end example
 
 Il nous faut ajouter à cela une portée pour le pédalier.  Elle se place
 sous le système de piano, mais puisqu'elle doit rester synchrone avec
 lui, nous utilisons des doubles chevrons pour les regrouper.
 Négliger ceci nous renverrait une erreur, et personne n'est à l'abri de
-cette faute ! Pour preuve, il vous suffit de copier l'exemple complet en
-fin de chapitre, de supprimer ces @code{<<} et @code{>>}, et de le
-compiler, pour voir de quoi il retourne.
+cette faute@tie{}! Pour preuve, il vous suffit de copier l'exemple
+complet en fin de chapitre, de supprimer ces @code{<<} et @code{>>}, et
+de le compiler, pour voir de quoi il retourne.
 
 @example
-<<  % Système pianistique et portée de pédalier sont synchrones 
+<<  % Système pianistique et portée de pédalier sont synchrones
   \new PianoStaff <<
     \new Staff = "ManuelUn" <<
       \new Voice @{ \ManuelUnVoixUnMusique @}
@@ -2888,8 +2900,8 @@ compiler, pour voir de quoi il retourne.
     >>  % fin du contexte de portée ManuelUn
     \new Staff = "ManualDeux" <<
       \new Voice @{ \ManuelDeuxMusique @}
-    >>  % fin du contexte de portée ManuelDeux 
-  >>  % fin du contexte PianoStaff 
+    >>  % fin du contexte de portée ManuelDeux
+  >>  % fin du contexte PianoStaff
   \new Staff = "PedalierOrgue" <<
     \new Voice @{ \PedalierOrgueMusique @}
   >>
@@ -2898,11 +2910,11 @@ compiler, pour voir de quoi il retourne.
 
 La construction en simultané -- @code{<<...>>} -- n'est pas strictement
 obligatoire pour les portées manuel deux et pédalier, qui ne contiennent
-chacune qu'une seule expression musicale ; mais cela ne mange pas de
+chacune qu'une seule expression musicale@tie{}; mais cela ne mange pas de
 pain, et c'est une bonne habitude que de toujours encadrer par des
 doubles chevrons gauche/droite ce qui suit une commande @code{\new
 Staff} au cas où il y aurait plusieurs voix.  Il en va autrement pour
-les contextes @code{Voice} : ils doivent être toujours suivis
+les contextes @code{Voice}@tie{}: ils doivent être toujours suivis
 d'accolades --  @code{@{...@}} --  au cas où vous auriez employé
 plusieurs variables qui doivent intervenir consécutivement.
 
@@ -2911,11 +2923,11 @@ l'indentation.  Nous en profitons pour ajouter les clés appropriées,
 effectuer les réglages concernant les hampes et liaisons de la portée
 supérieure grâce à @code{\voiceOne} et @code{\voiceTwo}, et mettre en
 place la métrique et l'armure de chaque portée grâce à notre variable
-@code{\MetriqueArmure}. 
+@code{\MetriqueArmure}.
 
 @example
 \score @{
-  <<  % Système pianistique et portée de pédalier sont synchrones 
+  <<  % Système pianistique et portée de pédalier sont synchrones
     \new PianoStaff <<
       \new Staff = "ManuelUn" <<
         \TimeKey  % définition de la métrique et de l'armure
@@ -2997,7 +3009,7 @@ PedalOrganMusic = \relative c {
 @cindex variables
 @cindex identificateurs
 
-Jusqu'à maintenant, vous avez vu ce type de code :
+Jusqu'à maintenant, vous avez vu ce type de code@tie{}:
 
 @lilypond[quote,verbatim,ragged-right]
 hornNotes = \relative c'' { c4 b dis c }
@@ -3009,7 +3021,7 @@ hornNotes = \relative c'' { c4 b dis c }
 @end lilypond
 
 Vous comprendrez combien cela peut être utile pour écrire de la
-musique minimaliste :
+musique minimaliste@tie{}:
 
 @lilypond[quote,verbatim,ragged-right]
 fragmentA = \relative c'' { a4 a8. b16 }
@@ -3024,7 +3036,7 @@ violin = \new Staff { \fragmentA \fragmentA \fragmentB \fragmentA }
 
 Néanmoins vous pouvez aussi utiliser ces identificateurs
 -- aussi connus sous le nom de variables, macros, ou commandes
-(définies par l'utilisateur) -- pour des retouches :
+(définies par l'utilisateur) -- pour des retouches@tie{}:
 
 @c TODO Avoid padtext - not needed with skylining
 @lilypond[quote,verbatim,ragged-right]
@@ -3049,7 +3061,7 @@ violin = \relative c'' {
 
 Ces identificateurs sont évidemment utiles pour économiser de la
 frappe.  Mais ils peuvent l'être même si vous ne les utilisez qu'une
-seule fois : ils réduisent la complexité.  Regardons l'exemple
+seule fois@tie{}: ils réduisent la complexité.  Regardons l'exemple
 précédent sans aucun identificateur.  C'est beaucoup plus laborieux à
 lire, et particulièrement la dernière ligne.
 
@@ -3068,7 +3080,7 @@ violin = \relative c'' @{
 @c TODO Replace the following with a better example  -td
 @c Skylining handles this correctly without padText
 
-Jusqu'ici nous avons vu des substitutions statiques : quand LilyPond
+Jusqu'ici nous avons vu des substitutions statiques@tie{}: quand LilyPond
 rencontre @code{\padText}, il le remplace par le contenu que nous lui
 avons défini -- c'est-à-dire le contenu à droite de @code{padText=}.
 
@@ -3093,7 +3105,7 @@ padText =
 
 Utiliser des identificateurs est aussi un bon moyen pour vous épargner
 du travail si la syntaxe de LilyPond change un jour -- voir
-@rprogram{Mise à jour d'anciens avec convert-ly}.  Si vous avez une seule
+@rprogram{Mise à jour avec convert-ly}.  Si vous avez une seule
 définition, par exemple @code{\dolce}, pour tous vos fichiers (voir
 @ref{Feuilles de style}), et que la syntaxe change, alors vous n'aurez
 qu'à mettre à jour votre seule définition @code{\dolce}, au lieu de
@@ -3123,7 +3135,7 @@ notesCor = \relative c @{
 @end example
 
 @noindent
-On établira alors une partie séparée en constituant un nouveau fichier :
+On établira alors une partie séparée en constituant un nouveau fichier@tie{}:
 
 @example
 \include "musique-Cor.ly"
@@ -3146,9 +3158,9 @@ On établira alors une partie séparée en constituant un nouveau fichier :
 sera substitué le contenu du fichier @code{musique-Cor.ly}, et de ce
 fait la variable @code{notesCor} se trouvera définie.  La commande
 @w{@code{\transpose f c'}} indique que son argument @code{\notesCor}
-sera transposé à la quinte supérieure : le son réel @code{f} s'écrit
+sera transposé à la quinte supérieure@tie{}: le son réel @code{f} s'écrit
 @code{c'}, ce qui est la caractéristique d'un Cor en fa.  La
-transposition est visible comme suit :
+transposition est visible comme suit@tie{}:
 
 @lilypond[quote,ragged-right]
 \transpose f c' \relative c {
@@ -3160,7 +3172,7 @@ transposition est visible comme suit :
 Dans les pièces d'ensemble, il arrive souvent qu'une voix ne joue pas
 pendant plusieurs mesures.  Un silence spécial, appelé silence
 multimesures, l'indique alors.  On l'obtient par un @code{R} majuscule,
-suivi d'une durée : @code{1}@tie{}pour une pause, @code{2}@tie{}pour une
+suivi d'une durée@tie{}: @code{1}@tie{}pour une pause, @code{2}@tie{}pour une
 demi-pause, etc.  Cette durée peut être multipliée pour établir de plus
 longs silences. Par exemple, le silence suivant dure 3@tie{}mesures à 2/4.
 
@@ -3169,7 +3181,7 @@ R2*3
 @end example
 
 Dans une partie séparée, les silences multimesure sont compressés.
-Il faut pour cela définir la propriété @code{skipBars} à @qq{vrai} :
+Il faut pour cela définir la propriété @code{skipBars} à @qq{vrai}@tie{}:
 
 @example
 \set Score.skipBars = ##t
@@ -3179,7 +3191,7 @@ Il faut pour cela définir la propriété @code{skipBars} à @qq{vrai} :
 Cette commande assigne la valeur @qq{vrai} -- @emph{true} en anglais, et
 @code{#t} dans le langage Scheme -- à cette propriété dans le
 contexte @code{Score}.  Si l'on ajoute dans la musique ci-dessus le
-silence multimesure et cette option, on obtient le résultat suivant :
+silence multimesure et cette option, on obtient le résultat suivant@tie{}:
 
 @lilypond[quote,ragged-right]
 \transpose f c' \relative c {
diff --git a/Documentation/fr/learning/introduction.itely b/Documentation/fr/learning/introduction.itely
deleted file mode 100644 (file)
index 6d58044..0000000
+++ /dev/null
@@ -1,1199 +0,0 @@
-@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
-@ignore
-    Translation of GIT committish: e3f4b2ada78eb676d4a07abb8affdd5ef3fd90b1
-
-    When revising a translation, copy the HEAD committish of the
-    version that you are working on.  For details, see the Contributors'
-    Guide, node Updating translation committishes..
-@end ignore
-
-@c \version "2.13.4"
-
-@c Translators: Ludovic Sardain, John Mandereau
-@c Translation checkers: Jean-Charles Malahieude, Jean-Yves Baudais, Damien Heurtebise
-@c Translation status: post-GDP
-
-
-@node Introduction
-@chapter Introduction
-@translationof Introduction
-
-Ce chapitre constitue une première présentation de LilyPond et de sa 
-documentation.
-
-@menu
-* Contexte::                  
-* À propos de la documentation::     
-@end menu
-
-
-@node Contexte
-@section Contexte
-@translationof Background
-
-Cette partie présente les objectifs de LilyPond ainsi que son 
-architecture.
-
-@menu
-* Gravure::                   
-* Gravure automatisée::         
-* Gravure des symboles musicaux::    
-* Représentation de la musique::        
-* Exemples d'application::        
-@end menu
-
-
-@node Gravure
-@unnumberedsubsec Gravure
-@translationof Engraving
-
-
-@cindex gravure
-@cindex typographie musicale
-@cindex musique et typographie
-
-L'art de la typographie musicale se nomme la @emph{gravure}.  Ce terme
-est issu du processus traditionnel d'impression musicale.  Il y a
-seulement quelques dizaines d'années, on faisait les partitions en
-coupant et en embossant une plaque de zinc ou d'étain en image miroir.
-Cette plaque était ensuite encrée, les dépressions créées par les
-creux et les bosses retenant l'encre.  Une image était formée en
-pressant du papier sur la plaque.  La découpe et l'embossage étaient
-entièrement faits à la main.  Il était pénible d'appliquer une
-correction, quand celle-ci n'était pas impossible ; la gravure devait
-donc être parfaite du premier coup.  La gravure demandait une
-qualification hautement spécialisée : un artisan devait accomplir
-environ cinq ans de formation avant de mériter le titre de maître
-graveur, et il lui fallait cinq années d'expérience supplémentaires
-pour devenir vraiment habile.
-
-De nos jours, toutes les partitions récentes sont produites avec des
-ordinateurs.  Ceci a des avantages évidents : le coût des impressions
-a diminué, et le travail d'édition peut être envoyé par courriel.
-Malheureusement, l'utilisation dominante des ordinateurs a également
-diminué la qualité graphique des partitions.  L'impression
-informatisée leur donne un aspect fade et mécanique qui les rend
-désagréables à jouer.
-
-@c introduce illustrating aspects of engraving, font...
-Les images ci-dessous illustrent la différence entre la gravure
-traditionelle et l'impression typique par ordinateur, et la troisième
-image montre comment LilyPond mime l'aspect traditionnel.  L'image de
-gauche est une numérisation d'un symbole bémol d'une édition publiée
-en 2000.  Celle du centre montre un bémol d'une gravure à la main de
-l'édition Bärenreiter de la même musique.  L'image de gauche illustre
-des défauts typiques de l'impression informatique : les lignes de
-portée sont minces, l'épaisseur de trait du bémol est la même que les
-lignes fines, et il y a un aspect rigide avec des angles pointus.  Par
-contraste, le bémol Bärenreiter possède un aspect gras et arrondi,
-presque voluptueux.  Notre symbole bémol est créé, entre autres, à
-partir de celui-là.  Il est arrondi, et son épaisseur de trait
-s'harmonise avec nos lignes de portée, lesquelles sont également plus
-épaisses que celles de l'édition informatique.
-
-@multitable @columnfractions .125 .25 .25 .25 .125
-@item @tab
-@ifnotinfo
-@iftex
-@image{pictures/henle-flat-gray,,4cm}
-@end iftex
-@ifnottex
-@image{pictures/henle-flat-gray,,,png}
-@end ifnottex
-
-@tab
-@iftex
-@image{pictures/baer-flat-gray,,4cm}
-@end iftex
-@ifnottex
-@image{pictures/baer-flat-gray,,,png}
-@end ifnottex
-
-@tab
-@iftex
-@image{pictures/lily-flat-bw,,4cm}
-@end iftex
-@ifnottex
-@image{pictures/lily-flat-bw,,,png}
-@end ifnottex
-@end ifnotinfo
-@ifinfo
-@image{lilypond/pictures/henle-flat-bw,,,png} @image{lilypond/pictures/baer-flat-bw,,,png}
-@image{lilypond/pictures/lily-flat-bw,,,png}
-@end ifinfo
-
-@item @tab
-Henle (2000)
-@tab
-Bärenreiter (1950)
-@tab
-Fonte Feta de LilyPond (2003)
-
-@end multitable
-
-
-@cindex symboles musicaux
-@cindex fonte
-@cindex police
-@cindex épaisseur des caractères
-@cindex équilibre
-
-@c introduce illustrating aspects of engraving, spacing...
-En matière d'espacement, la répartition de l'espace devrait refléter
-les durées entre les notes.  Cependant, beaucoup de partitions
-modernes se contentent des durées avec une précision mathématique, ce
-qui mène à de mauvais résultats.  Dans l'exemple suivant, un motif est
-imprimé deux fois : une fois en utilisant un espacement mathématique
-exact, et une autre fois avec des corrections.  Pouvez-vous les
-repérer ?
-
-@cindex espacement optique
-@c file spacing-optical.
-@c need to include it here,  because we want two images.
-@lilypond
-\paper {
-  ragged-right = ##t
-  indent = #0.0
-}
-
-music = {
-   c'4 e''4 e'4 b'4 |
-   \stemDown
-   b'8[ e'' a' e'']
-   \stemNeutral
-   e'8[ e'8 e'8 e'8]
-}
-
-\score
-{
-  \music
-  \layout {
-    \context {
-      \Staff
-      \override NoteSpacing #'stem-spacing-correction = #0.6
-    }
-  }
-}
-@end lilypond
-
-@lilypond
-\paper {
-  ragged-right = ##t
-  indent = #0.0
-}
-
-music = {
-   c'4 e''4 e'4 b'4 |
-   \stemDown
-   b'8[ e'' a' e'']
-   \stemNeutral
-   e'8[ e'8 e'8 e'8]
-}
-\score
-{
-  \music
-  \layout {
-    \context {
-      \Staff
-      \override NoteSpacing #'stem-spacing-correction = #0.0
-      \override NoteSpacing #'same-direction-correction = #0.0
-      \override StaffSpacing #'stem-spacing-correction = #0.0
-    }
-  }
-}
-@end lilypond
-
-@cindex régulier, rythme
-@cindex régulier, espacement
-@cindex espacement régulier
-
-L'extrait n'utilise que des notes de même durée ; l'espacement devrait
-le refléter.  Malheureusement, notre oeil nous trompe quelque peu ; il
-ne se contente pas de remarquer la distance entre les têtes de notes,
-il prend en compte également la distance entre les hampes
-consécutives.  Ainsi, par compensation, les notes avec une combinaison
-@qq{hampe vers le haut}/@/@qq{hampe vers le bas} doivent être éloignées
-l'une de l'autre, et les notes avec une combinaison @qq{hampe vers le
-bas}/@/@qq{hampe vers le haut} rapprochées, le tout dépendant de la
-position verticale des notes.  Les deux premières mesures sont
-imprimées avec cette correction, les deux suivantes sans.  Les notes
-dans les deux dernières mesures forment des blocs de notes @qq{hampe
-vers le bas}/@/@qq{hampe vers le haut}.
-
-@cindex typographie
-
-Les musiciens sont généralement plus absorbés par l'exécution que par
-l'étude de l'aspect graphique d'une partition, donc discutailler sur
-les détails typographiques peut paraître peu important.  Il n'en est
-rien.  Dans de longues pièces avec des rythmes monotones, les
-corrections d'espacement engendrent de subtiles variations dans la
-mise en forme de chaque ligne, donnant à chacune une signature
-visuelle distincte.  Sans cette signature, toutes les lignes auraient
-le même aspect, et ressembleraient à un labyrinthe.  Si un musicien
-regarde ailleurs un instant ou se déconcentre momentanement, il peut
-avoir du mal à se retrouver sur la page.
-
-De même, l'aspect robuste des symboles sur d'épaisses lignes de
-portée ressort mieux quand la partition est éloignée du lecteur,
-comme sur un pupitre par exemple.  Une organisation minutieuse des
-espaces vides permet de minimiser l'espace qu'occupe la musique, tout
-en évitant que les symboles s'amassent les uns contre les autres.  Le
-résultat permet de réduire le nombre de pages à tourner, ce qui est un
-grand avantage.
-
-Ceci est une caractéristique commune à toute typographie.  La
-disposition doit être belle, non seulement pour des raisons
-esthétiques, mais également pour l'aide apportée au lecteur dans la
-tâche qu'il doit accomplir.  Pour du matériel d'exécution comme les
-partitions de musique, cela prend une double importance : les
-musiciens ont une quantité limitée d'attention.  Moins ils en ont
-besoin pour lire, plus ils peuvent se concentrer sur la musique
-elle-même.  Autrement dit, une meilleure typographie permet une
-meilleure interprétation.
-
-Ces exemples démontrent que la typographie musicale est un art subtil
-et complexe, et que la produire demande une expertise considérable,
-que les musiciens ne possèdent généralement pas.  LilyPond est le
-fruit de nos efforts pour restaurer l'excellence graphique de la
-gravure à la main à l'ère de l'ordinateur, et la rendre accessible à
-tous les musiciens.  Nous avons conçu nos algorithmes, fontes et
-paramètres de programme pour retrouver la qualité d'édition des
-anciennes partitions que nous aimons tant lire et jouer.
-
-
-@node Gravure automatisée
-@unnumberedsubsec Gravure automatisée
-@translationof Automated engraving
-
-@cindex gravure automatisée
-@cindex automatisée, gravure
-
-Comment pouvons-nous implémenter la typographie ? Si les artisans ont
-besoin de plus de dix ans pour devenir de vrais maîtres, comment nous,
-simples programmeurs, pourrions-nous jamais écrire un programme pour
-faire leur travail ?
-
-La réponse est : nous ne le pouvons pas.  La typographie se base sur
-le jugement visuel humain, donc les humains ne peuvent pas être
-complètement remplacés.  Si LilyPond arrive à traiter la plupart des
-situations correctement, ce sera déjà une grande avancée sur les
-logiciels existants.  Les problèmes restants peuvent être résolus à la
-main.  Au fil des ans, le logiciel peut être affiné pour faire de plus
-en plus de choses automatiquement, pour que les ajustements manuels
-soient de moins en moins nécessaires.
-
-Quand nous avons commencé, nous avons écrit le programme Lilypond
-entièrement dans le language de programmation C++ ; les fonctions du
-programme étaient figées par les développeurs.  Ceci s'est avéré
-insatisfaisant pour plusieurs raisons :
-
-@itemize 
-
-@item Quand Lilypond fait des erreurs,
-les utilisateurs ont besoin de contredire les décisions de formatage.
-Les utilisateurs doivent donc avoir accès au moteur de formatage.  Par
-conséquent, les règles et les propriétés ne peuvent pas être fixées
-par nous au moment de la compilation, mais doivent être accessibles
-aux utilisateurs au moment de l'exécution.
-
-@item La gravure est une question de jugement visuel, et donc de goût.
-Aussi bien informés que nous le sommes, les utilisateurs peuvent être
-en désaccord avec nos décisions personnelles.  Par conséquent, les
-définitions du modèle typographique doivent également être accessibles
-à l'utilisateur.
-
-@item Enfin, nous affinons continuellement les algorithmes de formatage,
-donc nous avons besoin d'une approche souple des règles.  Le langage
-C++ oblige à une certaine méthode de groupage des règles qui ne
-convient pas bien au fonctionnement de la notation musicale.
-@end itemize
-
-@cindex langage de programmation Scheme
-
-Ces problèmes ont été résolus en intégrant un interpréteur pour le
-langage de programmation Scheme, et en réécrivant des parties de
-LilyPond en Scheme.  L'architecture actuelle de formatage est
-construite autour de la notion d'objets graphiques, décrits par des
-fonctions et des variables Scheme.  Cette architecture comprend les
-règles de formatage, le style typographique, et des décisions
-individuelles de formatage.  L'utilisateur a un accès direct à la
-plupart de ces contrôles.
-
-Les variables Scheme contrôlent les décisions de mise en page.  Par
-exemple, beaucoup d'objets graphiques ont une variable de direction
-qui encode le choix entre haut et bas (ou gauche et droite).  Vous
-pouvez voir ici deux accords, avec des accents, et des arpèges.  Dans
-le premier accord, les objets graphiques sont tous dirigés vers le bas
-(ou la gauche).  Dans le second accord ils sont tous dirigés vers le
-haut (droite).
-
-@lilypond[quote,ragged-right]
-\new Score \with {
-   \override SpacingSpanner #'spacing-increment = #3
-   \override TimeSignature #'transparent = ##t
-} \relative c' {
-   \stemDown <e g b>4_>-\arpeggio
-   \override Arpeggio #'direction = #RIGHT
-   \stemUp <e g b>4^>-\arpeggio
-}
-@end lilypond
-
-@cindex partition, formatage
-@cindex formatage d'une partition
-@cindex formatage, règles de
-
-@noindent
-Le processus de formatage d'une partition consiste à lire et écrire
-les variables d'objets graphiques.  Certaines variables ont une valeur
-prédéfinie.  Par exemple, l'épaisseur d'un grand nombre de lignes --
-une caractéristique du style typographique -- est une variable avec
-une valeur prédéfinie.  Vous êtes libres d'altérer cette valeur, ce
-qui vous donne une partition avec une impression typographique
-différente.
-
-@lilypond[quote,ragged-right]
-fragment = {
-   \clef bass f8 as8
-   c'4-~ c'16 as g f e16 g bes c' des'4
-}
-<<
-   \new Staff \fragment
-   \new Staff \with {
-      \override Beam #'beam-thickness = #0.3
-      \override Stem #'thickness = #0.5
-      \override Bar #'thickness = #3.6
-      \override Tie #'thickness = #2.2
-      \override StaffSymbol #'thickness = #3.0
-      \override Tie #'extra-offset = #'(0 .  0.3)
-      }
-      \fragment
->>
-@end lilypond
-
-Les règles de formatage ont aussi des variables prédéfinies : chaque
-objet possède des variables contenant des procédures.  Ces procédures
-exécutent le formatage, et en les substituant par d'autres, nous
-pouvons changer l'apparence des objets.  Dans l'exemple suivant, la
-règle du choix de têtes de notes est changée au cours de l'extrait de
-musique.
-
-@lilypond[quote,ragged-right]
-#(set-global-staff-size 30)
-
-#(define (mc-squared grob orig current)
-  (let* ((interfaces (ly:grob-interfaces grob))
-         (pos (ly:grob-property grob 'staff-position)))
-    (if (memq 'note-head-interface interfaces)
-        (begin
-          (ly:grob-set-property! grob 'stencil
-            (grob-interpret-markup grob
-              (make-lower-markup 0.5
-                (case pos
-                  ((-5) "m")
-                  ((-3) "c ")
-                  ((-2) (make-smaller-markup (make-bold-markup "2")))
-                  (else "bla")))))))))
-
-\new Voice \relative c' {
-  \stemUp
-  \set autoBeaming = ##f
-  \time 2/4
-  <d f g>4
-  \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
-  <d f g>4
-  \once \override NoteHead #'style = #'cross
-  <d f g>4
-  \applyOutput #'Voice #mc-squared
-  <d f g>4
-  <<
-    { d8[ es-( fis^^ g] fis2-) }
-    \repeat unfold 5 { \applyOutput #'Voice #mc-squared s8 }
-  >>
-}
-@end lilypond
-
-
-
-@node Gravure des symboles musicaux
-@unnumberedsubsec Gravure des symboles musicaux
-@translationof What symbols to engrave?
-
-@cindex gravure
-@cindex typographie
-@cindex graveur
-@cindex greffon
-
-Le processus de formatage décide où placer les symboles.  Cependant,
-cela ne peut être fait qu'à partir du moment où il a été décidé
-@emph{quels} symboles doivent être imprimés, c'est-à-dire quelle
-notation utiliser.
-
-La notation musicale usuelle est un système d'écriture qui a évolué à
-travers les dix derniers siècles.  La forme qui est aujourd'hui
-communément utilisée date du début de la Renaissance.  Bien que la forme
-basique --- les têtes de notes sur une portée de cinq lignes --- n'ait pas
-changé, les détails continuent d'évoluer pour exprimer les innovations
-de la notation contemporaine.  Par conséquent, elle comprend quelque 500
-ans de musique, avec des applications allant des mélodies monodiques à
-de monstrueux contrepoints pour grand orchestre.
-
-Comment pouvons nous appréhender un tel monstre à plusieurs têtes, et le
-confiner dans l'espace réduit d'un programme informatique ?  Notre
-solution consiste à diviser le problème de la notation --- par
-opposition à la gravure, ou typographie --- en morceaux digestes et
-programmables : chaque type de symbole est géré par un module séparé,
-couramment appelé greffon@footnote{traduction de l'anglais
-@emph{plug-in}.}.  Chaque greffon est entièrement modulaire et
-indépendant, et donc peut être développé et amélioré séparément.  De
-tels greffons sont nommés @code{graveur}s@footnote{@code{engraver}s en
-anglais.}, par analogie avec les artisans qui traduisent les idées
-musicales en symboles graphiques.
-
-Dans l'exemple suivant, voyons comment nous commençons avec un greffon
-pour les têtes de notes, le graveur de têtes de note
-(@code{Note_heads_engraver}) :
-
-@lilypond[quote,ragged-right]
-\include "engraver-example.ily"
-
-\score {
-  \topVoice
-  \layout {
-    \context {
-      \Voice
-      \remove "Stem_engraver"
-      \remove "Phrasing_slur_engraver"
-      \remove "Slur_engraver"
-      \remove "Script_engraver"
-      \remove "Beam_engraver"
-      \remove "Auto_beam_engraver"
-    }
-    \context {
-      \Staff
-      \remove "Accidental_engraver"
-      \remove "Key_engraver"
-      \remove "Clef_engraver"
-      \remove "Bar_engraver"
-      \remove "Time_signature_engraver"
-      \remove "Staff_symbol_engraver"
-      \consists "Pitch_squash_engraver"
-    }
-  }
-}
-@end lilypond
-
-@noindent
-Ensuite, le graveur du symbole de portée
-(@code{Staff_symbol_engraver}) ajoute la portée
-
-@lilypond[quote,ragged-right]
-\include "engraver-example.ily"
-
-\score {
-  \topVoice
-  \layout {
-    \context {
-      \Voice
-      \remove "Stem_engraver"
-      \remove "Phrasing_slur_engraver"
-      \remove "Slur_engraver"
-      \remove "Script_engraver"
-      \remove "Beam_engraver"
-      \remove "Auto_beam_engraver"
-    }
-    \context {
-      \Staff
-      \remove "Accidental_engraver"
-      \remove "Key_engraver"
-      \remove "Clef_engraver"
-      \remove "Bar_engraver"
-      \consists "Pitch_squash_engraver"
-      \remove "Time_signature_engraver"
-    }
-  }
-}
-@end lilypond
-
-@noindent
-le graveur de clef (@code{Clef_engraver}) définit un point de
-référence pour la portée
-
-@lilypond[quote,ragged-right]
-\include "engraver-example.ily"
-
-\score {
-  \topVoice
-  \layout {
-    \context {
-      \Voice
-      \remove "Stem_engraver"
-      \remove "Phrasing_slur_engraver"
-      \remove "Slur_engraver"
-      \remove "Script_engraver"
-      \remove "Beam_engraver"
-      \remove "Auto_beam_engraver"
-    }
-    \context {
-      \Staff
-      \remove "Accidental_engraver"
-      \remove "Key_engraver"
-      \remove "Bar_engraver"
-      \remove "Time_signature_engraver"
-    }
-  }
-}
-@end lilypond
-
-@noindent
-et le graveur de hampes (@code{Stem_engraver}) ajoute les hampes :
-
-@lilypond[quote,ragged-right]
-\include "engraver-example.ily"
-
-\score {
-  \topVoice
-  \layout {
-    \context {
-      \Voice
-      \remove "Phrasing_slur_engraver"
-      \remove "Slur_engraver"
-      \remove "Script_engraver"
-      \remove "Beam_engraver"
-      \remove "Auto_beam_engraver"
-    }
-    \context {
-      \Staff
-      \remove "Accidental_engraver"
-      \remove "Key_engraver"
-      \remove "Bar_engraver"
-      \remove "Time_signature_engraver"
-    }
-  }
-}
-@end lilypond
-
-@noindent
-Le graveur de hampe est informé de chaque tête de note qui survient.
-Chaque fois qu'une tête de note --- plusieurs pour un accord --- est
-rencontrée, un objet hampe est créé et connecté à la tête de note.  En
-ajoutant des graveurs pour les barres de ligature, les liaisons, les
-accents, les altérations accidentelles, les barres de mesure, la
-métrique, et les armures, nous obtenons un jeu de notation complet.
-
-@lilypond[quote,ragged-right]
-\include "engraver-example.ily"
-\score { \topVoice }
-@end lilypond
-
-@cindex polyphonie
-@cindex graver plusieurs voix
-@cindex contextes
-
-Ce système fonctionne bien pour de la musique monodique, mais qu'en
-est-il de la polyphonie ? En notation polyphonique, plusieurs voix
-peuvent partager une portée.
-
-@lilypond[quote,ragged-right]
-\include "engraver-example.ily"
-\new Staff << \topVoice \\ \botVoice >>
-@end lilypond
-
-Dans cette situation, la portée et les altérations accidentelles sont
-partagées, mais les hampes, liaisons etc., sont spécifiques à chaque
-voix.  Par conséquent, les graveurs doivent être groupés.  Les
-graveurs des têtes de notes, hampes, liaisons etc., vont dans un
-groupe appelé @qq{contexte de Voix} @footnote{@q{Voice context} en
-anglais, @q{Voice} commence par une majuscule comme tous les noms de
-contexte dans le programme LilyPond.}, alors que les graveurs des clés,
-altérations accidentelles, barres de mesure etc., vont dans un groupe
-appelé @qq{contexte de Portée}. Dans le cas de la polyphonie, un seul
-contexte de Portée contient plusieurs contextes de Voix.  De même,
-plusieurs contextes de Portée peuvent être inclus dans un seul
-contexte de Partition.  Le contexte de Partition est le contexte de
-notation de plus haut niveau.
-
-
-@seealso
-Référence du programme: @rinternals{Contexts}.
-
-
-@lilypond[quote,ragged-right]
-\include "engraver-example.ily"
-\score {
-   <<
-      \new Staff << \topVoice \\ \botVoice >>
-      \new Staff << \pah \\ \hoom >>
-   >>
-}
-@end lilypond
-
-@node Représentation de la musique
-@unnumberedsubsec Représentation de la musique
-@translationof Music representation
-
-@cindex syntaxe
-@cindex structures récursives
-
-Idéalement, le format d'entrée pour n'importe quel système de
-formatage est une description abstraite du contenu.  Dans ce cas-ci,
-ce serait la musique elle-même.  Cela pose un formidable problème :
-comment pouvons-nous définir ce qu'est réellement la musique ? Plutôt
-que d'essayer de trouver une réponse, nous avons renversé la question.
-Nous écrivons un logiciel capable de produire de la musique écrite, et
-adaptons le format pour atteindre la plus grande concision possible.
-Quand le format ne peut plus être simplifé, il nous reste par
-définition le contenu lui-même.  Notre logiciel sert de définition
-formelle d'un document de musique.
-
-Pour LilyPond, la syntaxe est également l'interface utilisateur ; par
-conséquent il est facile de saisir
-
-@example
-@{
-c'4 d'8
-@}
-@end example
-
-@noindent
-c'est-à-dire un do central noire et, juste au-dessus, un ré croche
-
-@lilypond[quote]
-{
-  c'4 d'8
-}
-@end lilypond
-
-Sur une échelle microscopique, une telle syntaxe est facile à
-utiliser.  À plus grande échelle, la syntaxe a besoin aussi de
-structure.  Comment serait-il possible autrement de rentrer des
-pièces complexes comme des symphonies ou des opéras ? La structure
-est formée par le concept d'expression musicale : en combinant
-de petits fragments de musique pour en former de plus grands, on peut
-exprimer de la musique plus complexe.  Par exemple
-
-@lilypond[quote,verbatim,fragment,relative=1]
-f4
-@end lilypond
-
-@noindent
-Des accord peuvent être construits avec @code{<<} et @code{>>} autour
-des notes.
-
-@example
-<<c4 d4 e4>>
-@end example
-
-@lilypond[quote,fragment,relative=1]
-\new Voice { <<c4 d4 e>> }
-@end lilypond
-
-@noindent
-On met cette expression dans une séquence en l'encadrant par
-des accolades @code{@{@tie{}@dots{}@tie{}@}}
-
-@example
-@{ f4 <<c4 d4 e4>> @}
-@end example
-
-@lilypond[quote,relative=1,fragment]
-{ f4 <<c d e4>> }
-@end lilypond
-
-@noindent
-Ceci est également une expression, et peut donc encore une fois
-être combiné avec d'autres expressions simultanées (une blanche)
-en utilisant @code{<<}, @code{\\}, et @code{>>}.
-
-@example
-<< g2 \\ @{ f4 <<c4 d4 e4>> @} >>
-@end example
-
-@lilypond[quote,fragment,relative=2]
-\new Voice { << g2 \\ { f4 <<c d e>> } >> }
-@end lilypond
-
-De telles structures récursives peuvent être spécifiées formellement
-et de manière ordonnée dans une grammaire indépendante de tout
-contexte.  Le code d'analyse est aussi généré à partir de cette
-grammaire.  Autrement dit, la syntaxe de LilyPond est définie
-clairement et sans ambiguité.
-
-L'interface utilisateur et la syntaxe sont ce que les gens voient et
-manipulent le plus.  Elles sont en partie une affaire de goût, et
-aussi sujettes à beaucoup de discussions.  Même si ces discussions sur
-les goûts ont leur mérite, elles ne sont pas très productives.  D'un
-point de vue plus large sur LilyPond, l'importance de la syntaxe est
-minime : il est facile d'inventer une syntaxe concise, alors qu'écrire
-un code de formatage décent est beaucoup plus difficile.  Ceci est
-également illustré par le nombre de lignes de codes pour les
-composants respectifs : l'analyse et la représentation constituent
-moins de 10% du code source.
-
-@node Exemples d'application
-@unnumberedsubsec Exemples d'application
-@translationof Example applications
-
-@cindex exemples simples
-
-Nous avons conçu LilyPond comme une expérimentation visant à
-concentrer l'art de la gravure musicale dans un logiciel.  Grâce à
-tout ce dur labeur, le programme peut maintenant être utilisé pour
-accomplir des travaux utiles.  L'application la plus simple est
-d'imprimer des notes :
-
-@lilypond[quote,relative=1]
-{
-  \time 2/4
-  c4 c g'4 g a4 a g2
-}
-@end lilypond
-
-@noindent
-En ajoutant des noms d'accords et des paroles, nous obtenons
-une partition de chanson :
-
-@lilypond[quote,ragged-right]
-<<
-   \chords { c2 c f2 c }
-   \new Staff
-   \relative c' {
-     \time 2/4
-     c4 c g' g a a g2
-   }
-   \addlyrics { twin -- kle twin -- kle lit -- tle star }
->>
-@end lilypond
-
-La notation polyphonique et la musique pour piano peuvent également
-être générées.  L'exemple suivant associe quelques constructions
-plus exotiques :
-
-@lilypond[quote]
-\header {
-  title = "Screech and boink"
-  subtitle = "Random complex notation"
-  composer = "Han-Wen Nienhuys"
-}
-
-\score {
-  \context PianoStaff <<
-    \new Staff = "up" {
-      \time 4/8
-      \key c \minor
-      << {
-        \revert Stem #'direction
-        \change Staff = down
-        \set subdivideBeams = ##t
-        g16.[
-          \change Staff = up
-          c'''32
-          \change Staff = down
-          g32
-          \change Staff = up
-          c'''32
-          \change Staff = down
-          g16]
-        \change Staff = up
-        \stemUp
-        \set followVoice = ##t
-        c'''32([ b''16 a''16 gis''16 g''32)]
-      } \\ {
-        s4 \times 2/3 { d'16[ f' g'] } as'32[ b''32 e'' d'']
-      } \\ {
-        s4 \autoBeamOff d''8.. f''32
-      } \\ {
-        s4 es''4
-      } >>
-    }
-
-    \new Staff = "down" {
-      \clef bass
-      \key c \minor
-      \set subdivideBeams = ##f
-      \override Stem  #'french-beaming = ##t
-      \override Beam  #'beam-thickness = #0.3
-      \override Stem  #'thickness = #4.0
-      g'16[ b16 fis16 g16]
-      << \makeClusters {
-        as16 <as b>
-        <g b>
-        <g cis>
-      } \\ {
-        \override Staff.Arpeggio  #'arpeggio-direction =#down
-        <cis, e, gis, b, cis>4\arpeggio
-      }
-    >> }
-  >>
-  \midi {
-    \context {
-      \Score
-      tempoWholesPerMinute = #(ly:make-moment 60 8)
-    }
-  }
-  \layout {
-    \context {
-      \Staff
-      \consists Horizontal_bracket_engraver
-    }
-  }
-}
-@end lilypond
-
-Les extraits exposés ici ont tous été écrits à la main, mais ce n'est
-pas une obligation.  Puisque le moteur de formatage est en grande
-partie automatique, il peut servir de sortie pour d'autres programmes
-qui manipulent la musique.  Par exemple, il peut être utilisé pour
-convertir des bases de données d'extraits musicaux en images pour des
-sites Internet et des présentations multimédias.
-
-Ce manuel montre également une application : le format d'entrée est du
-texte, et peut donc facilement être intégré dans d'autres formats
-basés sur le texte comme @LaTeX{}, HTML, ou dans le cas de ce manuel,
-Texinfo.  À l'aide d'un programme spécial, les extraits de code
-peuvent être remplacés par des images de musiques dans les fichiers de
-sortie PDF ou HTML.  Cela donne la possibilité de mélanger de la
-musique et du texte dans les documents.
-
-
-@node À propos de la documentation
-@section À propos de la documentation
-@translationof About the documentation
-
-Cette partie présente les différents volumes de la documentation.
-
-@cindex Manuel d'initiation
-@cindex Glossaire musical
-@cindex Manuel de notation
-@cindex Utilisation des programmes
-@cindex Exemples de code
-@cindex Référence des propriétés internes
-
-@c leave these lines wrapping around.  It's some texinfo 4.12 thing. -gp
-@c This is actually a limitation of texi2html. -jm
-@menu
-* À propos du manuel d'initiation::   introduction à LilyPond, ce manuel explique aux débutants la création de partitions.
-* À propos du glossaire musicologique::    ce document explique de nombreux termes musicaux et en donne la traduction dans d'autres langues.
-* À propos du manuel de notation::  ce manuel représente la partie la plus volumineuse de la documentation.  Il fournit tous les détails sur la création de notation musicale.  La lecture de cet ouvrage requiert une bonne compréhension des concepts exposés dans le manuel d'initiation.
-* À propos du manuel d'utilisation:: ce manuel aborde l'exécution des programmes LilyPond et les particularités dépendant du système d'exploitation.
-* À propos des morceaux choisis::      ce document rassemble une collection d'extraits de code LilyPond.
-* À propos des références du programme:: ce manuel constitue une source d'information sur le fonctionnement interne de LilyPond.  C'est une référence complète pour l'élaboration de retouches.
-* Autres sources de documentation::         d'autres sources de documentation sont disponibles, telles que les notes de nouveautés et les archives des listes de diffusion.
-@end menu
-
-
-@node À propos du manuel d'initiation
-@unnumberedsubsec À propos du manuel d'initiation
-@translationof About the Learning Manual
-
-Ce manuel explique comment débuter avec LilyPond, et expose de manière
-simple quelques concepts clés.  Il est conseillé de lire ces chapitres
-de manière linéaire.
-
-Dans ce manuel se trouve à chaque section un paragraphe @strong{Voir
-aussi} contenant des références vers d'autres sections : il est
-conseillé de ne pas les suivre en première lecture ; lorsque vous
-aurez lu l'ensemble du manuel d'initiation, vous pourrez en relisant
-certaines sections suivre ces références pour approfondir certains
-aspects.
-
-@itemize
-
-@item
-@ref{Introduction} : le pourquoi du comment de LilyPond.
-
-@item
-@ref{Tutoriel} : introduction en douceur à la typographie musicale.
-Les utilisateurs débutants sont invités à commencer par ce chapitre.
-
-@item
-@ref{Concepts fondamentaux} : concepts généraux du format de fichier
-@code{ly} spécifique à LilyPond.  Si vous n'êtes pas certain de
-l'endroit où placer une commande, lisez ce chapitre !
-
-@item
-@ref{Retouche de partition} : introduction aux retouches de gravure avec
-LilyPond.
-
-@item
-@ref{Travail sur des projets LilyPond} : utilisation pratique de LilyPond,
-conseils généraux, prévention et résolution des problèmes les plus
-courants.  À lire avant de se lancer dans des travaux d'envergure !
-
-@end itemize
-
-Ce volume contient aussi des annexes que vous pouvez consulter au gré de
-vos besoins :
-
-@itemize
-
-@item
-@ref{Modèles} de pièces LilyPond.  Copiez et collez un modèle dans
-un fichier, ajoutez les notes, et c'est prêt !
-
-@item
-@ref{Tutoriel Scheme} : courte introduction à Scheme, le langage de
-programmation utilisé dans les fonctions de musique.  Ces quelques
-lignes vous aideront à construire des retouches avancées ; nombre
-d'utilisateurs ne touchent jamais à Scheme.
-
-@end itemize
-
-
-@node À propos du glossaire musicologique
-@unnumberedsubsec À propos du glossaire musicologique
-@translationof About the Music Glossary
-
-@cindex Glossaire musical
-@cindex jargon
-@cindex terminologie
-@cindex langues étrangères
-@cindex langue
-@cindex langage
-
-@rglosnamed{Top,Glossaire musical} : ce document explique en anglais
-des termes musicaux, et donne leur traduction dans diverses langues.
-Si vous n'êtes pas familier avec la notation et la terminologie
-musicales, il est conseillé de consulter le glossaire, notamment pour
-les parties non encore traduites de la documentation.
-
-
-@node À propos du manuel de notation
-@unnumberedsubsec À propos du manuel de notation
-@translationof About the Notation Reference
-
-@cindex Manuel de notation
-@cindex annexes
-@cindex références, tables de
-@cindex tables de références
-
-Ce manuel détaille toutes les commandes LilyPond produisant une notation
-musicale.  La lecture de cet ouvrage requiert une bonne compréhension des
-concepts exposés dans le manuel d'initiation.
-
-@itemize
-
-@c Normalement, il est impossible d'utiliser deux points en français,
-@c car une référence externe doit se terminer par un signe de
-@c ponctuation dans le format Info.  Cependant, Info
-@c n'internationalise pas encore des documents Info, donc nous n'en
-@c avons rien à faire pour l'instant. -jm
-@item
-@ruser{Notation musicale générale} : cette partie décrit la notation de base,
-qui sera utile dans la plupart des projets de partition.  Les sujets
-sont groupés par type de notation.
-
-@item
-@ruser{Notation spécialisée} : cette partie détaille des éléments de
-notation spécifiques à certains instruments ou styles.  Les sujets
-sont groupés par type de notation.
-
-@item
-@ruser{Généralités en matière d'entrée et sortie} : informations générales sur les
-fichiers source LilyPond et le contrôle des sorties.
-
-@item
-@ruser{Gestion de l'espace} : différents aspects de l'espacement selon les
-axes et échelles, par exemple la sélection de la taille de papier, ou
-la gestion des sauts de page.
-
-@item
-@ruser{Modification des réglages prédéfinis} : ce chapitre est une référence des
-différentes formes de retouches, qui permettent d'obtenir de Lilypond
-(presque) tout ce que vous désirez.
-
-@item
-@ruser{Interfaces pour les programmeurs} : création de fonctions de musique
-à l'aide de Scheme.
-
-@end itemize
-
-Les annexes de ce manuel contiennent entre autres des tableaux de
-référence pratiques.
-
-@itemize
-
-@item
-@ruser{Bibliographie} : choix de livres de référence, pour en savoir
-plus sur la notation et la gravure.
-
-@item
-@ruser{Tables du manuel de notation} : tableaux montrant les noms d'accord,
-les instruments MIDI, les noms de couleur, et la police Feta.
-
-@item
-@ruser{Aide-mémoire} : référence pratique des commandes LilyPond les
-plus courantes.
-
-@item
-@ruser{Index des commandes LilyPond} : index de toutes les @code{\commandes}
-LilyPond.
-
-@item
-@ruser{Index de LilyPond} : un index complet.
-
-@end itemize
-
-
-@node À propos du manuel d'utilisation
-@unnumberedsubsec À propos du manuel d'utilisation
-@translationof About the Application Usage
-
-@cindex Utilisation des programmes
-@cindex intégration de LilyPond avec d'autres programmes
-
-Ce manuel explique l'exécution des programmes et l'intégration de
-partitions LilyPond dans d'autres programmes.
-
-@itemize
-
-@item
-@rprogram{Installation} : installation --- et éventuellement compilation ---
-de LilyPond.
-
-@item
-@rprogram{Environnement de travail} : configuration de votre système pour une utilisation
-optimale de LilyPond, comprenant l'utilisation d'environnements
-adaptés pour certains éditeurs de tecte.
-
-@item
-@rprogram{Exécution de LilyPond} : exécution de LilyPond et de ses
-programmes auxiliaires.  De plus, cette partie explique comment
-effectuer la mise à jour de fichiers source écrits avec d'anciennes
-versions de LilyPond.
-
-@item
-@rprogram{LilyPond-book} : création de documents intégrant des
-extraits musicaux, comme ce manuel.
-
-@item
-@rprogram{Conversion à partir d'autres formats} : utilisation des programmes
-de conversion.  Ces programmes sont livrés avec le paquetage LilyPond,
-et convertissent divers formats de musique vers le format @code{.ly}.
-
-@end itemize
-
-
-@node À propos des morceaux choisis
-@unnumberedsubsec À propos des morceaux choisis
-@translationof About the Snippet List
-
-@cindex snippets
-@cindex extraits de code
-@cindex morceaux choisis
-@cindex LSR
-@cindex LilyPond Snippet Repository
-
-@rlsrnamed{Top,Exemples de code} :
-il s'agit d'une sélection de petits exemples montrant des trucs,
-astuces et fonctionnalités particulières de LilyPond, issus de
-@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}
-(LSR).  Tous ces exemples sont dans le domaine public.
-
-Notez bien que cette annexe n'est en aucune manière un miroir ou même
-une partie du LSR.  Dans la mesure où le LSR repose sur une version
-stable de LilyPond, les exemples illustrant des fonctionnalités
-introduites dans la dernière version de développement ne peuvent y
-figurer ; c'est pourquoi vous les trouverez dans le répertoire
-@file{input/new/} des sources de LilyPond.
-
-La liste des exemples correspondant à chacun des sous-chapitres du
-manuel de notation est accessible par des liens dans le paragraphe
-@strong{Voir aussi}.
-
-
-@node À propos des références du programme
-@unnumberedsubsec À propos des références du programme
-@translationof About the Internals Reference
-
-@cindex retoucher
-@cindex variables
-@cindex propriétés
-@cindex lilypond-internals
-@cindex documentation du fonctionnement interne
-@cindex Scheme
-@cindex étendre lilypond
-@cindex index
-
-@rinternalsnamed{Top,Référence des propriétés internes} : c'est un
-ensemble de pages HTML étroitement liées entre elles, qui documente
-les moindres petits détails de chaque classe, objet et fonction de
-LilyPond.  Cette documentation est produite directement à partir des
-définitions de formatage utilisées.
-
-Presque toutes les fonctions de formatage utilisées en interne sont
-directement disponibles pour l'utilisateur.  Par exemple, toutes les
-variables qui contrôlent les épaisseurs, les distances etc., peuvent
-être modifiées dans les fichiers d'entrée.  Il y a un grand nombre
-d'options de formatage, et elles sont toutes décrites dans ce
-document.  Chaque section du manuel de notation a un paragraphe @b{Voir
-aussi}, qui renvoie à la documentation générée automatiquement.  Dans la
-documentation au format HTML, ces paragraphes disposent de liens
-cliquables.
-
-
-@node Autres sources de documentation
-@unnumberedsubsec Autres sources de documentation
-@translationof Other documentation
-
-Pour finir, présentons d'autres précieuses sources de documentation.
-
-@itemize
-
-@item
-@ifhtml
-@ifset bigpage
-@uref{../topdocs/NEWS.html,Nouveautés} :
-@end ifset
-@ifclear bigpage
-@uref{../../topdocs/NEWS.html,Nouveautés} :
-@end ifclear
-@end ifhtml
-@ifnothtml
-Nouveautés :
-@end ifnothtml
-ce document résume les changements importants et les nouvelles
-fonctionalités de LilyPond depuis la dernière version stable.
-
-@item @uref{http://lists.gnu.org/archive/html/lilypond-user/, Les
-archives de la liste lilypond-user} : c'est un dépôt archivant les
-courriels qui ont été envoyés à la liste anglophone des utilisateurs.
-Beaucoup de questions sont apparues plusieurs fois sur la liste, il y
-a donc des chances que si vous avez une question, la réponse puisse
-être dans ces archives.
-@c DIV specific
-@uref{http://lists.gnu.org/archive/html/lilypond-user-fr/,Les archives
-de la liste francophone} ne sont pas aussi bien fournies, mais vous
-pouvez toujours y chercher des conversations passées sur les
-traductions, et si vous avez de la chance une réponse à une question.
-@c END DIV
-
-@item @uref{http://lists.gnu.org/archive/html/lilypond-devel/, Les
-archives de la liste lilypond-devel} : les courriels envoyés à la
-liste des développeurs y sont archivés.  Les sujets de discussion sont
-plus techniques ; si vous voulez vous renseigner sur l'histoire du
-développement ou si vous avez une question très technique, tentez
-votre chance en cherchant dans ces archives.
-
-@item Fragments de musique au cours du texte : dans tous les documents
-HTML qui incluent des fragments musicaux, le code LilyPond utilisé
-pour produire l'image est accessible par un clic sur l'image.
-
-@item L'emplacement des fichiers de documentation mentionnés ici peut varier
-d'un système à l'autre.  De temps en temps, ce manuel fait référence
-aux fichiers d'exemple et d'initialisation.  Tout au long de ce
-manuel, nous donnons les emplacements des fichiers d'entrée
-relativement au répértoire racine de l'archive source.  Par exemple,
-@file{input/@/test/@/bla@/.ly} peut référer au fichier
-@file{lilypond@/2.x.y/@/input/@/test/@/bla@/.ly}.  Dans les paquets
-binaires pour les plateformes Unix, la documentation et les exemples
-se trouvent généralement sous @file{/usr/@/share/@/doc/@/lilypond/}.
-Les fichiers d'initialisation, par exemple @file{scm/@/lily@/.scm}, ou
-@file{ly/@/engraver@/-init@/.ly}, se trouvent généralement dans le
-répertoire @file{/usr/@/share/@/lilypond/}. @c pas encore en français -jm.
-@c Pour plus de détails, consultez @ref{Autres sources de documentation}.
-
-@end itemize
index 6b344ec573b9a445a89473a65e1125e4d75d8835..4a2c4d731e2fcef45b0d35e56662e26ef725bbea 100644 (file)
@@ -21,9 +21,9 @@ Ce doit être pendant une répétition de l'Orchestre des Jeunes
 d'Eindhoven, un jour de 1995, que Jan, du pupitre des altistes tordus,
 aborda Han-Wen, un corniste déjanté, pour lui parler d'un mirifique
 projet dans lequel il venait de se lancer.  Il s'agissait d'un système
-automatisé de gravure musicale --- le préprocesseur MPP pour MusiXTeX
+automatisé de gravure musicale -- le préprocesseur MPP pour MusiXTeX
 pour être précis.  Han-Wen, qui voulait justement imprimer certaines
-parties d'une oeuvre, jeta un premier coup d'oeil à ce programme, et
+parties d'une œuvre, jeta un premier coup d'œil à ce programme, et
 devint très vite accro.  Le MPP s'avéra bientôt une voie sans issue.
 Après avoir ratiociné et échangé un grand nombre de courriels
 enflammés, Han-Wen lança le projet LilyPond en 1996, dans lequel,
@@ -35,7 +35,7 @@ découvre comment ça fonctionne, et on aborde tout ce qu'on n'arrive
 pas encore à faire comme autant de défis.  L'exaltation de la
 nouveauté s'estompant, on doit s'entraîner encore et encore.  Les
 gammes, les études deviennent vite ennuyeuses, et peuvent, si l'on
-n'est pas encouragé par d'autres --- professeurs, chefs ou public ---
+n'est pas encouragé par d'autres -- professeurs, chefs ou public --
 en décourager plus d'un.  Pourtant, pour peu que l'on persévère,
 l'instrument devient progressivement une partie de notre vie.  Si
 certains jours il semble naturel d'en jouer, c'est un vrai bonheur.
@@ -48,10 +48,10 @@ il fait maintenant partie de notre vie, et nous nous accrochons.
 Notre principale motivation vient sans doute de l'utilité réelle de
 notre logiciel.  En flânant sur Internet, nous trouvons beaucoup de
 gens qui utilisent LilyPond pour réaliser d'impressionnantes
-partitions : c'est incroyable, mais en même temps très flatteur.
+partitions@tie{}: c'est incroyable, mais en même temps très flatteur.
 
 Les utilisateurs ne se contentent pas de nous encourager en utilisant
-notre logiciel ; nombre d'entre eux nous aident aussi en faisant des
+notre logiciel@tie{}; nombre d'entre eux nous aident aussi en faisant des
 suggestions et en signalant des bogues.  Aussi, nous voudrions
 remercier ici tous les utilisateurs qui nous ont signalé des bugs, ont
 fait des suggestions ou ont contribué d'une façon ou d'une autre au
@@ -62,7 +62,7 @@ séduisante.  Même si l'on s'amuse beaucoup en programmant tous
 ensemble, et qu'on éprouve une satisfaction profonde à aider les gens,
 au bout du compte, notre travail sur LilyPond est avant tout une
 manière d'exprimer notre amour sincère de la musique.  Puisse-t-il
-vous aider à créer de nombreuses et belles oeuvres !
+vous aider à créer de nombreuses et belles œuvres@tie{}!
 
 Han-Wen et Jan
 
index f1f8118bef856d75cad538bb539adc2dfb6fbca7..9684a9203f3e16688e865bf062dacece59e96ee5 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
+    Translation of GIT committish: 26375d5016d8d180fc914bfd07cf76f4168f2e37
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -21,17 +21,17 @@ de lancer LilyPond, et d'aprécier le résultat.
 
 @menu
 * Portée unique::
-* Modèles pour claviers::
+* Modèles pour piano::
 * Quatuor à cordes::
 * Ensemble vocal::
+* Orchestre::
 * Exemples de notation ancienne::
-* Symboles de jazz::
-* Squelettes pour lilypond-book::
+* Autres modèles::
 @end menu
 
 @node Portée unique
 @appendixsec Portée unique
-@translationof Single staff 
+@translationof Single staff
 
 @appendixsubsec Notes seules
 
@@ -54,8 +54,8 @@ de lancer LilyPond, et d'aprécier le résultat.
 {single-staff-template-with-notes,-lyrics,-and-chords.ly}
 
 
-@node Modèles pour claviers
-@appendixsec Modèles pour claviers
+@node Modèles pour piano
+@appendixsec Modèles pour piano
 @translationof Piano templates
 
 @appendixsubsec Piano seul
@@ -81,7 +81,7 @@ de lancer LilyPond, et d'aprécier le résultat.
 
 @node Quatuor à cordes
 @appendixsec Quatuor à cordes
-@translationof String quartet 
+@translationof String quartet
 
 @appendixsubsec Quatuor à cordes
 
@@ -96,7 +96,7 @@ de lancer LilyPond, et d'aprécier le résultat.
 
 @node Ensemble vocal
 @appendixsec Ensemble vocal
-@translationof Vocal ensembles 
+@translationof Vocal ensembles
 
 @appendixsubsec Partition pour chœur à quatre voix mixtes
 
@@ -113,6 +113,16 @@ de lancer LilyPond, et d'aprécier le résultat.
 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
 {vocal-ensemble-template-with-lyrics-aligned-below-and-above-the-staves.ly}
 
+@appendixsubsec Couplet pour solo et refrain à deux voix
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{vocal-ensemble-template-with-verse-and-refrain.ly}
+
+@appendixsubsec Hymnes et cantiques
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{hymn-template.ly}
+
 
 @node Orchestre
 @appendixsec Orchestre
@@ -124,9 +134,10 @@ de lancer LilyPond, et d'aprécier le résultat.
 {orchestra,-choir-and-piano-template.ly}
 
 
+@c bad node name to avoid node name conflict
 @node Exemples de notation ancienne
 @appendixsec Exemples de notation ancienne
-@translationof Ancient notation templates 
+@translationof Ancient notation templates
 
 @appendixsubsec Transcription de musique mensurale
 
@@ -139,127 +150,13 @@ de lancer LilyPond, et d'aprécier le résultat.
 {ancient-notation-template----modern-transcription-of-gregorian-music.ly}
 
 
-@node Symboles de jazz
-@appendixsec Symboles de jazz
-@translationof Jazz combo 
+@node Autres modèles
+@appendixsec Autres modèles
+@translationof Other templates
+
+@appendixsubsec Symboles de jazz
+@translationof Jazz combo
 
 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
 {jazz-combo-template.ly}
 
-
-@node Squelettes pour lilypond-book
-@appendixsec Squelettes pour lilypond-book
-@translationof lilypond-book templates 
-
-Les exemples qui suivent sont destinés à des travaux gérés avec
-@code{lilypond-book}.  Pour plus d'information sur ce programme,
-consultez @rprogram{LilyPond-book}.
-
-
-@appendixsubsec LaTeX
-Vous pouvez inclure des fragments de LilyPond dans un document @LaTeX{}. 
-
-@example
-\documentclass[]@{article@}
-
-\begin@{document@}
-
-Des banalités en LaTeX.
-
-\begin@{lilypond@}
-\relative c'' @{
-a4 b c d
-@}
-\end@{lilypond@}
-
-D'autres banalités en LaTeX.
-
-\begin@{lilypond@}
-\relative c'' @{
-d4 c b a
-@}
-\end@{lilypond@}
-\end@{document@}
-@end example
-
-@appendixsubsec Texinfo
-
-Vous pouvez insérer des fragments de LilyPond dans des documents
-Texinfo.  C'est d'ailleurs comme ceci qu'est construite cette
-documentation. 
-
-@example
-\input texinfo
-@@node Accueil
-
-Du texte Texinfo
-
-@@lilypond[verbatim,fragment,ragged-right]
-a4 b c d
-@@end lilypond
-
-Un peu plus de texte en Texinfo
-
-@@lilypond[verbatim,fragment,ragged-right]
-d4 c b a
-@@end lilypond
-
-@@bye
-@end example
-
-
-@appendixsubsec xelatex
-
-@verbatim
-\documentclass{article}
-\usepackage{ifxetex}
-\ifxetex
-%quelques commandes spécifiques à xetex
-\usepackage{xunicode,fontspec,xltxtra}
-\setmainfont[Numbers=OldStyle]{Times New Roman}
-\setsansfont{Arial}
-\else
-%Cette section n'est nécessaire que si vous utilisez pdftex
-\usepackage[T1]{fontenc}
-\usepackage[utf8]{inputenc}
-\usepackage{mathptmx}%Times
-\usepackage{helvet}%Helvetica
-\fi
-%Vous pouvez inclure ici tous les paquetages gérés par pdftex 
-\usepackage[french,ngerman,finnish,english]{babel}
-\usepackage{graphicx}
-
-\begin{document}
-\title{Un document succint utilisant LilyPond et xelatex}
-\maketitle
-
-Les commandes habituelles de \textbf{fonte} au fil du \emph{texte}
-sont opérationnelles dans la mesure où elles \textsf{sont supportées
-par \LaTeX{} et XeteX.}
-Pour des commandes du type \verb+\XeTeX+, elles doivent être icluses
-dans un environnement \verb+\ifxetex+. Ceci peut vous servir à imprimer
-la commande \ifxetex \XeTeX{} \else XeTeX \fi qui n'est pas reconnue en
-\LaTeX pur.
-
-Vous pouvez facilement insérer des commandes LilyPond comme ici :
-
-\begin{lilypond}
-{a2 b c'8 c' c' c'}
-\end{lilypond}
-
-\noindent
-et reprendre le fil de votre propos.
-
-Les fontes des inclusions de partition avec LilyPond doivent être
-spacifiées dans le code même de l'extrait. A cet effet, consultez le
-manuel d'utilisation des programmes pour savoir comment utiliser
-lilypond-book. 
-
-\selectlanguage{ngerman}
-Auch Umlaute funktionieren ohne die \LaTeX -Befehle, wie auch alle
-anderen
-seltsamen Zeichen: ß,ł,ã,č,я,щ, wenn sie von der Schriftart
-unterstützt werden.
-\end{document}
-@end verbatim
-
index 975edce4e13e2fd1360b3cb5df733c8058eaedb6..d3292b444e53de54226880c101700a4226141dbb 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-   Translation of GIT committish: 7ae8371e16d414819ac7d9a4d0abd8370c5f3d8f
+   Translation of GIT committish: 26375d5016d8d180fc914bfd07cf76f4168f2e37
 
    When revising a translation, copy the HEAD committish of the
    version that you are working on.  For details, see the Contributors'
@@ -224,9 +224,13 @@ explicitement.
 @funindex '
 @funindex ,
 
-Glossaire musicologique : @rglos{pitch}, @rglos{interval},
-@rglos{scale}, @rglos{middle C}, @rglos{octave},
-@rglos{accidental}.
+Glossaire musicologique :
+@rglosnamed{pitch,hauteur},
+@rglosnamed{interval,intervalle},
+@rglosnamed{scale,gamme},
+@rglosnamed{middle C,do central},
+@rglos{octave},
+@rglosnamed{accidental,altération}.
 
 Le moyen le plus simple d'entrer des notes est d'utiliser le mode
 d'octaves relatives, ou mode @code{\relative}.  Dans ce mode, l'octave
@@ -332,9 +336,13 @@ peut modifier la valeur de départ de @w{@code{\relative c'}}.
 @cindex note pointée
 @cindex spécification des durées
 
-Glossaire musicologique : @rglos{beam}, @rglos{duration},
-@rglos{whole note}, @rglos{half note}, @rglos{quarter note},
-@rglos{dotted note}.
+Glossaire musicologique :
+@rglosnamed{beam,ligature},
+@rglosnamed{duration,durée},
+@rglosnamed{whole note,ronde},
+@rglosnamed{half note,blanche},
+@rglosnamed{quarter note,noire},
+@rglosnamed{dotted note,note pointée}.
 
 La @notation{durée} d'une note est indiquée par un nombre qui suit sa
 hauteur@tie{}: @code{1} pour une @notation{ronde}, @code{2} pour une
@@ -371,7 +379,8 @@ la durée de base.
 @cindex silences
 @cindex notation des silences
 
-Glossaire musicologique : @rglos{rest}.
+Glossaire musicologique :
+@rglosnamed{rest,silence}.
 
 On saisit un @notation{silence} tout comme une note, mais avec la
 lettre @code{r} (pour @emph{rest}).
@@ -392,7 +401,7 @@ lettre @code{r} (pour @emph{rest}).
 @funindex \time
 @funindex time
 
-Glossaire musicologique : @rglos{time signature}.
+Glossaire musicologique : @rglosnamed{time signature,métrique}.
 
 La @notation{métrique}, aussi appelée @notation{chiffre de mesure},
 peut être définie à l'aide de la commande @code{\time}@tie{}:
@@ -419,7 +428,9 @@ peut être définie à l'aide de la commande @code{\time}@tie{}:
 @funindex \tempo
 @funindex tempo
 
-Glossaire musicologique : @rglos{tempo indication}, @rglos{metronome}.
+Glossaire musicologique :
+@rglosnamed{tempo indication,indication de tempo},
+@rglosnamed{metronome,métronome}.
 
 La commande @code{\tempo} permet de stipuler aussi bien le @emph{tempo}
 que le métronome@tie{}:
@@ -489,7 +500,7 @@ vus@tie{}:
 @seealso
 Manuel de notation : @ruser{Écriture des hauteurs de note},
 @ruser{Écriture du rythme}, @ruser{Écriture des silences},
-@ruser{Métrique}, @ruser{Clefs}.
+@ruser{Gravure du rythme}, @ruser{Gravure des hauteurs}.
 
 
 @node Travail sur les fichiers d'entrée
index 587fc0ee70a738d782ea202a7c775c812f73a7c2..fc388267e42c51d23061c80902167bf57d1e1c19 100644 (file)
@@ -1,4 +1,4 @@
-@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
+r@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
        Translation of GIT committish: 11b44eeed204540f7a4e638f12afe5a9f5466ca8
 
@@ -1811,7 +1811,7 @@ signification est précisée.
 @item @code{\phrasingSlurDown}
   @tab @code{\phrasingSlurUp}
   @tab @code{\phrasingSlurNeutral}
-  @tab Attention : à distinguer des commandes de liaison ci-dessous
+  @tab Attention@tie{}: à distinguer des commandes de liaison ci-dessous
 @item @code{\slurDown}
   @tab @code{\slurUp}
   @tab @code{\slurNeutral}
@@ -2356,7 +2356,7 @@ indications de nuances est@tie{}:
 @end example
 
 @noindent
-Voyons si ça marche sur notre exemple précédent :
+Voyons si ça marche sur notre exemple précédent@tie{}:
 
 @cindex DynamicText, exemple de dérogation
 @cindex extra-spacing-width, exemple d'utilisation de la propriété
@@ -3237,7 +3237,7 @@ demi-intervalles de lignes au-dessus de la ligne médiane@tie{}:
 
 @code{\once \override Tie #'staff-position = #3.5}
 
-Cela s'adjoint à la deuxième mesure, pour donner :
+Cela s'adjoint à la deuxième mesure, pour donner@tie{}:
 
 @c line-width ensures no break
 @lilypond[quote,verbatim,ragged-right,line-width=6\in]
diff --git a/Documentation/fr/learning/working.itely b/Documentation/fr/learning/working.itely
deleted file mode 100644 (file)
index ed1f641..0000000
+++ /dev/null
@@ -1,1132 +0,0 @@
-@c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
-@ignore
-   Translation of GIT committish: 60c59602bb30b60154a2310ebf0c88036eca71b2
-
-   When revising a translation, copy the HEAD committish of the
-   version that you are working on.  For details, see the Contributors'
-    Guide, node Updating translation committishes..
-@end ignore
-
-@c \version "2.12.0"
-
-@c Translators: Ludovic Sardain, Jean-Charles Malahieude
-@c Translation checkers: Jean-Yves Baudais, Valentin Villenave, John Mandereau, Jean-Charles Malahieude
-
-@node Travail sur des projets LilyPond
-@chapter Travail sur des projets LilyPond
-@translationof Working on LilyPond projects
-
-Cette section explique comment résoudre ou éviter certains problèmes
-courants.  Si vous avez de l'expérience en programmation, beaucoup de
-ces astuces peuvent vous paraître évidentes, mais vous ne perdrez tout
-de même pas votre temps à lire ce chapitre.
-
-@menu
-* Suggestions pour la saisie de fichiers LilyPond::
-* Quand ça ne fonctionne pas::      
-* De la commande @command{make} et des fichiers @code{Makefile}::
-@end menu
-
-@node Suggestions pour la saisie de fichiers LilyPond
-@section Suggestions pour la saisie de fichiers LilyPond
-@translationof Suggestions for writing LilyPond input files
-
-Maintenant vous êtes prêt à travailler sur de plus gros fichiers
-LilyPond -- des pièces entières, et plus seulement les petits
-exemples du tutoriel.  Mais comment devriez-vous vous y prendre ?
-
-Tant que LilyPond parvient à comprendre vos fichiers et produit le
-résultat que vous souhaitez, peu importe la manière dont le code est
-organisé.  Néanmoins, quelques critères doivent être pris en compte
-lorsque l'on écrit un fichier LilyPond.
-
-@itemize
-@item Si vous faites une erreur, la structure même du fichier LilyPond
-peut permettre de la localiser plus ou moins facilement.
-
-@item Et si vous souhaitez partager vos fichiers avec quelqu'un
-d'autre, ou si vous souhaitez modifier vos propres fichiers dans
-quelques années ?  Si certains fichiers LilyPond sont compréhensibles
-au premier coup d'oeil, d'autres vous feront vous arracher les cheveux
-pendant une heure.
-
-@item Et si vous souhaitez mettre à jour votre fichier pour
-l'utiliser avec une version plus récente de LilyPond ?  La syntaxe du
-langage d'entrée change parfois lorsque LilyPond s'améliore.  La
-plupart des changements peuvent être appliqués automatiquement avec
-@code{convert-ly}, mais quelques-uns peuvent requérir une intervention
-manuelle.  Vos fichiers LilyPond peuvent être structurés de manière à
-faciliter leur mise à jour.
-@end itemize
-
-@menu
-* Suggestions générales::         
-* Gravure de musique existante::  
-* Projets d'envergure::              
-* Feuilles de style::                
-@end menu
-
-@node Suggestions générales
-@subsection Suggestions générales
-@translationof General suggestions
-
-Voici quelques conseils qui peuvent vous éviter certains problèmes ou
-en résoudre d'autres.
-
-@itemize
-@item @strong{Ajoutez le numéro de version dans chaque fichier}.
-Notez que chaque fichier modèle contient une ligne @w{@code{\version
-"@version{}"}}.  Nous vous conseillons fortement d'inclure cette ligne,
-même pour de petits fichiers.  Par expérience, il est très difficile
-de se rappeler quelle version de LilyPond on utilisait quelques
-années auparavant.  L'utilitaire @command{convert-ly} demande que vous
-spécifiiez la version de LilyPond vous utilisiez alors.
-
-@item @strong{Ajoutez des contrôles} : @ruser{Vérifications d'octave}
-et @ruser{Vérification des limites et numéros de mesure}.  Si vous avez
-ajouté des contrôles de loin en loin, et que vous faites une erreur,
-vous pourrez la retrouver plus rapidement.  @qq{De loin en loin},
-qu'est-ce à dire ?  Cela dépend de la complexité de la musique.  Pour de
-la musique très simple, peut-être une ou deux fois.  Pour de la musique
-très complexe, peut-être à chaque mesure.
-
-@item @strong{Une mesure par ligne de texte}.  Si la musique en
-elle-même ou le résultat que vous désirez contient quelque chose de
-compliqué, il est souvent bon de n'écrire qu'une seule mesure par ligne.
-Économiser de la place en tassant huit mesures par ligne, ça ne vaut pas
-vraiment le coup si l'on doît corriger vos fichiers.
-
-@item @strong{Ajoutez des commentaires}.  Utilisez soit des
-numéros de mesure (assez souvent), soit des références au contenu
-musical -- @qq{second thème des violons}, @qq{quatrième variation}, etc.
-Vous pouvez ne pas avoir besoin des commentaires lorsque vous écrivez
-une pièce pour la première fois, mais si vous souhaitez y revenir deux
-ou trois ans plus tard pour changer quelque chose, ou si vous donnez
-le fichier source à un ami, ce sera beaucoup plus difficile de
-déterminer vos intentions ou la manière dont votre fichier est
-structuré si vous n'y avez pas adjoint de commentaires.
-
-@item @strong{Indentez les accolades}.  Beaucoup de problèmes
-viennent d'un défaut de parité entre @code{@{} et @code{@}}.
-
-@item @strong{Mentionnez les durées} au début de chaque section ou
-variable.  Si vous saisissez @code{c4 d e} au début d'une phrase, vous
-vous épargnerez des problèmes si, plus tard, vous modifiez votre musique.
-
-@item @strong{Séparez les affinages de mise en forme} de la musique
-elle-même.  Voyez 
-@ref{Économie de saisie grâce aux identificateurs et fonctions} et
-@ref{Feuilles de style}.
-
-@end itemize
-
-
-@node Gravure de musique existante
-@subsection Gravure de musique existante
-@translationof Typesetting existing music
-
-Si vous saisissez de la musique à partir d'une partition existante,
-c'est-à-dire de la musique déjà écrite,
-
-@itemize
-
-@item n'entrez qu'un seul système de la partition originale
-à la fois -- mais toujours une seule mesure par ligne de texte --,
-et vérifiez chaque système lorsqu'il est terminé.  Vous pouvez
-utiliser les commandes @code{showLastLength} et @code{showFirstLength}
-pour accélérer la compilation -- voir 
-@ruser{Ignorer des passages de la partition} ;
-
-@item définissez @code{mBreak = @{\break @}} et insérez
-@code{\mBreak} dans le fichier d'entrée pour obtenir des sauts de
-ligne identiques à la partition originale.  Cela facilite la
-comparaison entre la partition originale et la partition de 
-LilyPond.  Lorsque vous avez fini de relire votre musique, vous pouvez
-définir @code{mBreak = @{ @}} pour enlever tous ces sauts de ligne, et
-laisser LilyPond placer les sauts de ligne selon son propre algorithme.
-
-@item encadrez les notes d'une partie pour instrument transpositeur
-dans un 
-
-@example
-\transpose c @var{tonalité-naturelle} @{...@}
-@end example
-(où @var{tonalité-naturelle} correspond à celle de l'instrument en
-question) de telle sorte que la musique comprise dans cette variable se
-retrouve en ut.  Vous pourrez toujours transposer à l'inverse si besoin
-lorsque vous ferez appel à cette variable.  Des erreurs de transposition
-seront moins susceptibles de se produire si la musique de toutes les
-variables est dans la même et unique tonalité.
-
-De la même manière, prenez toujours le do comme note de départ ou
-d'arrivée.  Ceci aura pour simple conséquence que les autres tonalités
-que vous utiliserez seront celles propres à chacun des instruments --
-sib pour une trompette en si bémol, ou lab pour une clarinette en la bémol.
-
-@end itemize
-
-
-@node Projets d'envergure
-@subsection Projets d'envergure
-@translationof Large projects
-
-Lorsque l'on travaille sur un gros projet, il devient vital
-de structurer clairement ses fichiers LilyPond.
-
-@itemize @bullet
-
-@item @strong{Utilisez un identificateur pour chaque voix},
-avec un minimum de structure dans la définition.  La structure de la
-section @code{\score} est la plus susceptible de changer, notamment
-dans une nouvelle version de LilyPond, alors que la définition du
-@code{violon} l'est beaucoup moins.
-
-@example
-violin = \relative c'' @{
-g4 c'8. e16
-@}
-...
-\score @{
- \new GrandStaff @{
-   \new Staff @{
-     \violin
-   @}
- @}
-@}
-@end example
-
-@item @strong{Séparez les retouches} des définitions de
-musique.  Nous vous avons déjà invité à adopter une telle pratique, qui 
-par ailleurs devient vitale pour des projets d'importance.  Nous
-pouvons avoir besoin de changer la définition de
-@code{fpuisp}, mais dans ce cas nous n'aurons besoin de le faire
-qu'une seule fois, et nous pourrons encore éviter de
-modifier quoi que ce soit à l'intérieur de la définition
-du @code{violon}.
-
-@example
-fpuisp = _\markup@{
- \dynamic f \italic \small @{ 2nd @} \hspace #0.1 \dynamic p @}
-violin = \relative c'' @{
-g4\fpuisp c'8. e16
-@}
-@end example
-
-@end itemize
-
-
-@node Feuilles de style
-@subsection Feuilles de style
-@translationof Style sheets
-
-La sortie que produit LilyPond peut être largement modifiée -- voir
-@ref{Retouche de partition} pour plus de détails.  Mais que faire si
-vous avez beaucoup de fichiers auxquels vous souhaitez appliquer vos
-retouches ?  Ou si vous souhaitez simplement séparer les retouches de
-la musique elle-même ?  Rien de plus facile.
-
-Prenons un exemple.  Ne vous inquiétez pas si vous ne comprenez pas
-les parties avec tous les @code{#()}.  Celles-ci sont expliquées dans
-@ref{Retouches avancées avec Scheme}.
-
-@lilypond[quote,verbatim,ragged-right]
-mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
-  #:line(#:dynamic "mp" #:text #:italic "dolce" )))
-
-inst = #(define-music-function (parser location string) (string?)
-  (make-music
-    'TextScriptEvent
-    'direction UP
-    'text (markup #:bold (#:box string))))
-
-\relative c'' {
-  \tempo 4=50
-  a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
-  \inst "Clarinet"
-  cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
-}
-@end lilypond
-
-Il y a quelques problèmes de chevauchement ; nous allons arranger
-cela en utilisant les techniques de @ref{Déplacement d'objets}.  On peut 
-aussi faire quelque chose pour les définitions de @code{mpdolce}
-et @code{inst}.  Elles produisent le résultat que nous désirons,
-mais nous pourrions aussi vouloir les utiliser dans une autre pièce.
-Il suffirait de les copier et coller au début de chaque
-fichier, mais c'est fastidieux.  De plus, cela laisse les définitions
-dans nos fichiers de musique, et je trouve personnellement tous ces
-@code{#()} assez laids.  Stockons-les dans un autre fichier :
-
-@example
-%%% enregistrez ceci dans un fichier nommé "definitions.ily"
-mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
-  #:line(#:dynamic "mp" #:text #:italic "dolce" )))
-
-inst = #(define-music-function (parser location string) (string?)
-  (make-music
-    'TextScriptEvent
-    'direction UP
-    'text (markup #:bold (#:box string))))
-@end example
-
-Nous rappellerons ce fichier par une simple commande @code{\include} au
-début de notre fichier de musique.  Lui attribuer l'extension
-@code{.ily} nous permet de distinguer aisément qu'il s'agit d'un fichier
-voué à être inclus dans un fichier maître ; il n'est pas destiné à être
-compilé isolément.
-Maintenant, modifions notre musique (enregistrez ce fichier
-sous @code{musique.ly}).
-
-@c  We have to do this awkward example/lilypond-non-verbatim
-@c  because we can't do the \include stuff in the manual.
-
-@example
-\include "definitions.ily"
-
-\relative c'' @{
-  \tempo 4=50
-  a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
-  \inst "Clarinet"
-  cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
-@}
-@end example
-
-@lilypond[quote,ragged-right]
-mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
-  #:line(#:dynamic "mp" #:text #:italic "dolce" )))
-
-inst = #(define-music-function (parser location string) (string?)
-  (make-music
-    'TextScriptEvent
-    'direction UP
-    'text (markup #:bold (#:box string))))
-
-\relative c'' {
-  \tempo 4=50
-  a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
-  \inst "Clarinet"
-  cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
-}
-@end lilypond
-
-C'est mieux, mais effectuons encore quelques retouches.  Le glissando
-est peu visible, c'est pourquoi nous allons l'épaissir et le
-rapprocher des têtes de note.  Déplaçons l'indication métronomique
-au-dessus de la clef, au lieu de la laisser au-dessus de la première
-note.  Et pour finir, mon professeur de composition déteste les
-chiffrages de mesure en @qq{C}, nous allons donc le transformer en
-@qq{4/4}. 
-
-Cependant, ne changez pas le fichier @file{musique.ly}.  Remplacez le
-fichier @file{definitions.ily} par ceci :
-
-@example
-%%%  definitions.ily
-mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
-  #:line( #:dynamic "mp" #:text #:italic "dolce" )))
-
-inst = #(define-music-function (parser location string) (string?)
-  (make-music
-    'TextScriptEvent
-    'direction UP
-    'text (markup #:bold (#:box string))))
-
-\layout@{
-  \context @{ \Score
-    \override MetronomeMark #'extra-offset = #'(-9 . 0)
-    \override MetronomeMark #'padding = #'3
-  @}
-  \context @{ \Staff
-    \override TimeSignature #'style = #'numbered
-  @}
-  \context @{ \Voice
-    \override Glissando #'thickness = #3
-    \override Glissando #'gap = #0.1
-  @}
-@}
-@end example
-
-@lilypond[quote,ragged-right]
-mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
-  #:line( #:dynamic "mp" #:text #:italic "dolce" )))
-
-inst = #(define-music-function (parser location string) (string?)
-  (make-music
-    'TextScriptEvent
-    'direction UP
-    'text (markup #:bold (#:box string))))
-
-\layout{
-  \context { \Score
-    \override MetronomeMark #'extra-offset = #'(-9 . 0)
-    \override MetronomeMark #'padding = #'3
-  }
-  \context { \Staff
-    \override TimeSignature #'style = #'numbered
-  }
-  \context { \Voice
-    \override Glissando #'thickness = #3
-    \override Glissando #'gap = #0.1
-  }
-}
-
-\relative c'' {
-  \tempo 4=50
-  a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
-  \inst "Clarinet"
-  cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
-}
-@end lilypond
-
-C'est encore mieux !  Mais supposons maintenant que je veuille publier
-cette pièce.  Mon professeur de composition n'aime pas les chiffrages
-de mesure en @qq{C}, mais moi je les aime bien.  Copions l'actuel
-@file{definitions.ily} dans le fichier @file{publication-web.ily}, et
-modifions ce dernier.  Puisque la musique est destinée à produire un
-fichier PDF affiché sur écran, nous allons aussi augmenter la taille
-globale de police.
-
-@example
-%%%  definitions.ily
-mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
-  #:line( #:dynamic "mp" #:text #:italic "dolce" )))
-
-inst = #(define-music-function (parser location string) (string?)
-  (make-music
-    'TextScriptEvent
-    'direction UP
-    'text (markup #:bold (#:box string))))
-
-#(set-global-staff-size 23)
-\layout@{
-  \context @{ \Score
-    \override MetronomeMark #'extra-offset = #'(-9 . 0)
-    \override MetronomeMark #'padding = #'3
-  @}
-  \context @{ \Staff
-  @}
-  \context @{ \Voice
-    \override Glissando #'thickness = #3
-    \override Glissando #'gap = #0.1
-  @}
-@}
-@end example
-
-@lilypond[quote,ragged-right]
-mpdolce = #(make-dynamic-script (markup #:hspace 0 #:translate '(5 . 0)
-  #:line( #:dynamic "mp" #:text #:italic "dolce" )))
-
-inst = #(define-music-function (parser location string) (string?)
-  (make-music
-    'TextScriptEvent
-    'direction UP
-    'text (markup #:bold (#:box string))))
-
-#(set-global-staff-size 23)
-\layout{
-  \context { \Score
-    \override MetronomeMark #'extra-offset = #'(-9 . 0)
-    \override MetronomeMark #'padding = #'3
-  }
-  \context { \Voice
-    \override Glissando #'thickness = #3
-    \override Glissando #'gap = #0.1
-  }
-}
-
-\relative c'' {
-  \tempo 4=50
-  a4.\mpdolce d8 cis4--\glissando a | b4 bes a2
-  \inst "Clarinet"
-  cis4.\< d8 e4 fis | g8(\! fis)-. e( d)-. cis2
-}
-@end lilypond
-
-Il ne nous reste plus qu'à remplacer @code{\include "definitions.ily"}
-par @code{\include "publication-web.ily"} dans notre fichier de musique.
-
-Il est possible, bien sûr, de rendre cela encore plus pratique.  Nous
-pourrions créer un fichier @file{definitions.ily} qui ne contiendrait
-que les définitions de @code{mpdolce} et de @code{inst}, un
-fichier @file{publication-web.ily} qui ne contiendrait que la section
-@code{layout} décrite ci-dessus et un fichier @file{universite.ily} qui
-ne contiendrait que les retouches pour produire le résultat que mon
-professeur préfère.  Le début du fichier @file{musique.ly} ressemblerait
-alors à
-
-@example
-\include "definitions.ily"
-
-%%%  Décommentez seulement une de ces deux lignes !
-\include "publication-web.ily"
-%\include "universite.ily"
-@end example
-
-Cette approche peut être utile même si vous ne produisez qu'un seul
-jeu de partitions.  J'utilise personnellement une demi-douzaine de
-fichiers de @qq{feuille de style} pour mes projets.  Je commence
-chaque fichier de musique par @code{\include "../global.ily"} qui contient :
-
-@example
-%%%   global.ily
-\version @w{"@version{}"}
-#(ly:set-option 'point-and-click #f)
-\include "../init/init-defs.ly"
-\include "../init/init-mise-en-page.ly"
-\include "../init/init-en-tetes.ly"
-\include "../init/init-papier.ly"
-@end example
-
-@node Quand ça ne fonctionne pas
-@section Quand ça ne fonctionne pas
-@translationof When things don't work
-
-@menu
-* Mise à jour d'anciens fichiers::          
-* Résolution de problèmes -- tout remettre à plat::  
-* Exemples minimalistes::            
-@end menu
-
-@node Mise à jour d'anciens fichiers
-@subsection Mise à jour d'anciens fichiers
-@translationof Updating old input files
-
-@cindex convert-ly
-@cindex mise à jour d'anciens fichiers
-
-La syntaxe de LilyPond change de temps en temps.  Ces changements de
-syntaxe du langage d'entrée accompagnent les améliorations du
-logiciel.  Ces changements sont parfois destinés à rendre les fichiers
-plus faciles à lire et à écrire, ou permettent d'intégrer de nouvelles
-fonctionnalités.
-
-LilyPond est fourni avec un utilitaire qui facilite cette mise à
-jour : @command{convert-ly}.  Pour savoir comment utiliser ce programme,
-voir @rprogram{Mise à jour des fichiers avec convert-ly}.
-
-Malheureusement, @command{convert-ly} ne peut pas réaliser toutes les
-modifications.  Il s'occupe des changements qui ne requièrent qu'une
-simple substitution de texte -- comme @code{raggedright} devenant
-@code{ragged-right} --, les autres étant trop compliqués à effectuer.
-Les changements de syntaxe qui ne sont pas gérés par
-@command{convert-ly} sont énumérés dans 
-@rprogram{Mise à jour des fichiers avec convert-ly}.
-
-Par exemple, dans les versions 2.4 et antérieures de LilyPond,
-les accents et les lettres non anglaises étaient entrées en
-utilisant LaTeX -- par exemple, @code{No\"el}.  À partir de la
-version 2.6, le caratère @code{ë} doit être entré directement
-dans le fichier LilyPond comme caractère UTF-8.
-@code{convert-ly} ne peut pas changer tous les caractères
-LaTeX en caractères UTF-8 ; vous devez mettre à jour vos vieux
-fichiers LilyPond manuellement.
-
-
-
-@node Quelques erreurs des plus courantes
-@subsection Quelques erreurs des plus courantes
-@translationof Common errors
-
-Les conditions amenant aux erreurs qui suivent sont fréquentes, bien
-qu'elles ne soient pas évidentes ni facilement localisables.  Nous
-espérons que ces explications vous aideront à les résoudre plus
-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
-
-@node La musique déborde de la page
-@unnumberedsubsubsec La musique déborde de la page
-@translationof Music runs off the page
-
-Lorsque la musique s'épanche au delà de la marge droite ou bien semble
-anormalement comprimée, la raison en est le plus souvent une note à la
-durée erronée ; cela finit par provoquer le débordement de la dernière
-note d'une mesure.  Rien ne s'oppose à ce que la dernière note d'une
-mesure ne s'arrête avant la barre de mesure ; on considère simplement
-qu'elle se prolonge sur la mesure suivante.  Des débordements à
-répétition finissent par générer une musique comprimée ou qui sort de la
-page, pour la simple et bonne raison que les sauts de ligne automatiques
-ne peuvent intervenir qu'à la fin d'une mesure complète, autrement dit
-lorsque toutes les notes sont terminées avant la fin de la mesure.
-
-@warning{Une durée erronée peut empêcher les sauts de ligne, ce qui
-conduit à une musique compressée, voire à un débordement de la page.}
-
-Une erreur de durée sera bien plus facilement localisable si vous
-positionnez régulièrement des contrôles de barre de mesure -- voir 
-@ruser{Vérification des limites et numéros de mesure}.
-
-Si vous tenez absolument à enchainer de tels débordements, vous devrez
-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
-
-Certains messages d'erreur relatifs à une erreur de syntaxe dans le
-fichier @code{../ly/init.ly} peuvent survenir lorsque le fichier est mal
-formaté.  Cela se produit notamment lors d'un défaut de parité de
-bornages ou de guillemets.
-
-L'erreur la plus courante est la simple omission d'une accolade
-fermante (@code{@}} à la fin du bloc @code{Score}.  La solution est
-évidente en pareil cas : il suffit de vérifier que le bloc @code{Score}
-est bien clôturé.  La structure des fichiers LilyPond est abordée plus
-en détails au chapitre @ref{Organisation des fichiers LilyPond}.  C'est la
-raison pour laquelle nous vous invitons à utiliser un éditeur de texte
-qui prenne en charge le contrôle de parité des parenthèses, crochets et
-accolades afin de vous éviter de telles erreurs.
-
-Lorsqu'il s'agit d'un guillemet fermant (@code{"}) omis, le message
-d'erreur devrait vous indiquer un numéro de ligne avoisinant.  L'erreur
-se situe la plupart du temps une ou deux lignes au-dessus de celle
-indiquée. 
-
-
-@node Message d'erreur « Unbound variable % »
-@unnumberedsubsubsec Message d'erreur « Unbound variable % »
-@translationof Error message Unbound variable %
-
-Ce message d'erreur, qu'il apparaisse sur le terminal ou en fin de
-fichier journal, est associé à un message du type @qq{GUILE a signalé
-une erreur @dots{}}, survient à chaque fois qu'un commentaire
-@emph{LilyPond} est indûment placé dans une routine @emph{Scheme}.
-
-Un commentaire LilyPond est introduit par le signe pourcent (@code{%})
-et ne doit en aucun cas se trouver dans une routine Scheme.  En Scheme,
-les commentaires s'introduisent par un point-virgule (@code{;}).
-
-
-@node Résolution de problèmes -- tout remettre à plat
-@subsection Résolution de problèmes -- tout remettre à plat
-@translationof Troubleshooting (taking it all apart)
-
-Tôt ou tard, vous écrirez un fichier que LilyPond ne peut pas
-compiler.  Les messages que LilyPond affiche peuvent vous aider à
-trouver l'erreur, mais dans beaucoup de cas vous aurez besoin de faire
-quelques recherches pour déterminer la source du problème.
-
-Pour ce faire, les outils les plus puissants sont le commentaire de
-fin de ligne, indiqué par @code{%}, et le commentaire multilignes (ou
-bloc de commentaire), indiqué par @code{%@{ ... %@}}.  Si vous ne
-pouvez localiser le problème, commencez par mettre en commentaire de
-grandes parties de votre fichier source.  Après avoir mis en
-commentaire une section, essayez de compiler à nouveau.  Si cela
-fonctionne, c'est que le problème se situe dans cette partie du
-fichier.  Si cela ne fonctionne pas, continuez à mettre en commentaire
-d'autres sections, jusqu'à ce que vous ayez quelque chose qui compile.
-
-Dans un cas extrême, vous pourriez en arriver à
-
-@example
-\score @{
-  <<
-    % \melodie
-    % \harmonie
-    % \basse
-  >>
-  \layout@{@}
-@}
-@end example
-
-@noindent
-c'est-à-dire un fichier sans aucune musique.
-
-Si cela se produit, ne vous découragez pas.  Décommentez un peu, la
-partie de basse par exemple, et voyez si ça fonctionne.  Si ce n'est pas
-le cas, placez en commentaire toute la partie de basse, mais laissez
-@code{\basse} décommenté dans le bloc @code{\score}.
-
-@example
-basse = \relative c' @{
-%@{
-  c4 c c c
-  d d d d
-%@}
-@}
-@end example
-
-Maintenant commencez à décommenter petit à petit le partie de
-@code{basse} jusqu'à ce que vous localisiez la ligne qui pose
-problème.
-
-Une autre technique de déboguage très utile est la construction
-d'@ref{Exemples minimalistes}.
-
-
-@node Exemples minimalistes
-@subsection Exemples minimalistes
-@translationof Minimal examples
-
-Un exemple minimal est un exemple de code aussi court que possible.
-De tels exemples sont bien plus compréhensibles que des exemples
-longs.  Les exemples minimalises sont utilisés pour
-
-@itemize
-@item les rapports de bogue,
-@item les demandes d'aide sur les listes de diffusion,
-@item un ajout au
-@uref{http://lsr.dsi.unimi.it/,LilyPond Snippet Repository}.
-@end itemize
-
-Pour construire un exemple minimal, la règle est très simple : enlevez
-tout ce qui n'est pas nécessaire.  Il est préférable de commenter les
-lignes non nécessaires plutôt que de les effacer : ainsi, si vous vous
-apercevez que certaines étaient @emph{réellement} nécessaires, vous
-pouvez les décommenter au lieu de les resaisir.
-
-Il y a deux exceptions à cette règle du strict nécessaire :
-
-@itemize
-@item incluez le numéro de @code{\version} en début de fichier
-@item si possible, utilisez @code{\paper@{ ragged-right=##t @}} au
-début de votre exemple.
-@end itemize
-
-Tout l'intérêt d'un exemple minimal réside dans sa facilité de lecture :
-
-@itemize
-@item évitez d'utiliser des notes, armures ou métriques compliquées, à
-moins que vous ne vouliez montrer quelque chose en rapport avec
-celles-ci,
-@item n'utilisez pas de commandes @code{\override} sauf si elles font
-l'intérêt de l'exemple.
-@end itemize
-
-
-
-
-
-@node De la commande @command{make} et des fichiers @code{Makefile}
-@section De la commande @command{make} et des fichiers @code{Makefile}
-@translationof Make and Makefiles
-
-@cindex makefiles
-@cindex make
-
-La plupart des plates-formes sur lesquelles tourne LilyPond disposent
-d'un logiciel appelé @code{make}.  Ce logiciel va lire un fichier
-spécial, nommé de @code{Makefile}, qui contient tout ce qu'il
-faut -- les dépendances entre certains fichiers, les instructions
-successives à traiter par le système -- pour aboutir au fichier que
-vous désirez obtenir.  Il pourrait par exemple contenir tout ce qu'il
-faut pour produire @code{ballade.pdf} et @code{ballade.midi} à partir de 
-@code{ballade.ly} en lançant LilyPond.
-
-La création d'un @code{Makefile} peut se révéler pertinente pour
-certains projets, que ce soit par simple goût personnel ou bien par
-respect de ceux qui pourront accéder à vos sources.  Cette manière de
-procéder est particulièrement indiquée lorsque vous travaillez sur un
-projet de grande envergure impliquant de nombreuses inclusions de
-fichiers et différentes éditions -- par exemple un conducteur et un
-matériel d'orchestre complet avec la partition pour le chef et une
-partition séparée pour chacun des pupitres -- ou bien si votre projet
-requiert certaines commandes particulières comme @code{lilypond-book}.
-Les @emph{Makefiles} varient tant en complexité qu'en flexibilité selon
-les besoin et les aptitudes de celui qui les crée.  Le programme GNU Make
-est installé par défaut sur les distributions Linux et sur MacOS@tie{}X,
-et il en existe une version pour les environnements Windows.
-
-Consultez le @strong{GNU Make Manual} pour plus de détails sur ce dont 
-@code{make} est capable -- vous pourrez même en trouver des versions
-françaises à l'aide des moteurs de recherche --, dans la mesure où ce
-qui suit ne donne qu'un bref apperçu de ses possibilités.
-
-Les commandes permettant de définir les règles diffèrent selon la
-plate-forme : si les différents Linux et MacOS@tie{}X utilisent
-@code{bash}, Windows utilise @code{cmd}.  Dans le cas de MacOS@tie{}X,
-vous devrez toutefois configurer votre système de telle sorte qu'il
-utilise l'interpréteur en ligne de commande.  Voici quelques exemples de
-fichier @emph{Makefile}, avec une version pour Linux ou MacOS et une
-pour Windows.
-
-Pour commencer, une pièce à quatre mouvements pour orchestre et dont les 
-fichiers sont répartis selon l'arborescence suivante :
-
-@example
-Symphonie/
-|-- MIDI/
-|-- Makefile
-|-- Notes/
-|   |-- alto.ily
-|   |-- cor.ily
-|   |-- cello.ily
-|   |-- figures.ily
-|   |-- hautbois.ily
-|   |-- trioCordes.ily
-|   |-- violonOne.ily
-|   `-- violonTwo.ily
-|-- Partitions/
-|   |-- symphonie.ly
-|   |-- symphonieI.ly
-|   |-- symphonieII.ly
-|   |-- symphonieIII.ly
-|   `-- symphonieIV.ly
-|-- PDF/
-|-- Pupitres/
-|   |-- symphon-alto.ly
-|   |-- symphonie-cello.ly
-|   |-- symphonie-cor.ly
-|   |-- symphonie-hautbois.ly
-|   |-- symphonie-violonUn.ly
-|   `-- symphonie-violonDeux.ly
-`-- symphonieDefs.ily
-@end example
-
-Les fichiers @code{.ly} des répertoires @code{Partitions} et
-@code{Pupitres} récupèreront la notation des fichiers @code{.ily}
-contenus dans le répertoire @code{Notes} :
-
-@example
-%%% début du fichier "symphone-cello.ly"
-\include ../symphonieDefs.ily
-\include ../Notes/cello.ily
-@end example
-
-Le @emph{Makefile} répertorie des cibles correspondant à @code{score}
-(l'intégrale au format conducteur), @code{mouvements} (chacun des
-mouvements au format conducteur) et @code{pupitres} (une partition par
-pupitre).  Il contient aussi une cible @code{archive} chargée de générer
-une archive des fichiers source qui pourra être diffusée sur la toile ou
-transmise par courriel.  Voici ce que contiendrait ce @emph{Makefile}
-pour Linux ou MacOS@tie{}X.  Ce fichier doit être enregistré sous le nom
-de @code{Makefile} à la racine du projet -- ici @code{Symphonie}.
-
-@warning{Lorsque vous définissez une cible ou une règle sur plusieurs
-lignes, les lignes à partir de la deuxième @strong{doivent} débuter par
-une tabulation, non pas par des espaces.}
-
-@example
-# Le préfixe au nom des fichiers résultants
-piece = symphonie
-# Détermination du nombre de processeurs
-CPU_CORES=`cat /proc/cpuinfo | grep -m1 "cpu cores" | sed s/".*: "//`
-# La commande d'appel à lilypond
-LILY_CMD = lilypond -ddelete-intermediate-files \
-                    -dno-point-and-click -djob-count=$(CPU_CORES)
-
-# Les suffixes utilisés dans ce Makefile
-.SUFFIXES: .ly .ily .pdf .midi
-
-# Les fichiers sources et résultants sont recherchés dans les répertoires
-# listés dans la variable VPATH.  Ceux-ci sont tous des sous-répertoires
-# du répertoire courant (fourni par la variable de GNU make `CURDIR').
-VPATH = \
-  $(CURDIR)/Partitions \
-  $(CURDIR)/PDF \
-  $(CURDIR)/Pupitres \
-  $(CURDIR)/Notes
-
-# La règle type pour créer un PDF et un MIDI à partir d'un fichier
-# source LY.
-# Les .pdf résultants iront dans le sous-répertoire "PDF" et les fichiers
-# .midi dans le sous-répertoire "MIDI".
-%.pdf %.midi: %.ly
-        $(LILY_CMD) $<; \           # cette ligne commence par une tabulation
-        if test -f "$*.pdf"; then \
-            mv "$*.pdf" PDF/; \
-        fi; \
-        if test -f "$*.midi"; then \
-            mv "$*.midi" MIDI/; \
-        fi
-
-notes = \
-  alto.ily \
-  cello.ily \
-  cor.ily \
-  hautbois.ily \
-  violonUn.ily \
-  violonDeux.ily
-
-# Les dépendances selon le mouvement.
-$(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)
-
-# Les dépendances pour la partition intégrale.
-$(piece).pdf: $(piece).ly $(notes)
-
-# Les dépendances pour les pupitres.
-$(piece)-alto.pdf: $(piece)-alto.ly alto.ily
-$(piece)-cello.pdf: $(piece)-cello.ly cello.ily
-$(piece)-cor.pdf: $(piece)-cor.ly cor.ily
-$(piece)-hautbois.pdf: $(piece)-hautbois.ly hautbois.ily
-$(piece)-violonUn.pdf: $(piece)-violonUn.ly violonUn.ily
-$(piece)-violonDeux.pdf: $(piece)-violonDeux.ly violonDeux.ily
-
-# Lancer `make score' pour générer l'intégrale des quatre mouvements en
-# un seul fichier.
-.PHONY: score
-score: $(piece).pdf
-
-# Lancer `make parties' pour obtenir tous les pupitres.
-# Lancer `make toto.pdf' pour obtenir la partie instrumentale de toto.
-# Par exemple : `make symphonie-cello.pdf'.
-.PHONY: parties
-parties: $(piece)-cello.pdf \
-         $(piece)-violonUn.pdf \
-         $(piece)-violonDeux.pdf \
-         $(piece)-alto.pdf \
-         $(piece)-hautbois.pdf \
-         $(piece)-cor.pdf
-
-# Lancer `make mouvements' pour générer un fichier séparé pour chacun
-# des mouvements.
-.PHONY: mouvements
-mouvements: $(piece)I.pdf \
-            $(piece)II.pdf \
-            $(piece)III.pdf \
-            $(piece)IV.pdf
-
-all: score parties mouvements
-
-archive:
-        tar -cvvf symphonie.tar \      # cette ligne commence par une tabulation
-        --exclude=*pdf --exclude=*~ \
-        --exclude=*midi --exclude=*.tar \
-        ../Symphonie/*
-@end example
-
-
-Les choses se compliquent sous Windows.  Une fois GNU Make pour Windows
-téléchargé et installé, il vous faudra correctement définir le chemin
-d'accès au programme @emph{Make} -- dans les variables d'environnement
-du système --  afin que l'interpréteur de commandes DOS puisse le
-localiser.  Pour cela, faites un clic droite sur @qq{Poste de travail},
-choisissez @code{Propriétés} puis @code{Avancées}.  Cliquez sur
-@code{Variables d'environnement} puis, dans l'onglet @w{@code{Variables
-système}}, mettez @code{path} en surbrillance et cliquez sur
-@code{Modifier}.  Ajoutez alors le chemin d'accès complet à l'exécutable
-de GNU Make, qui devrait ressembler à :
-
-@example
-C:\Program Files\GnuWin32\bin
-@end example
-
-Il va également falloir adapter le @emph{makefile} aux particularités de
-l'interpréteur de commandes et à la présence d'espaces dans le nom de
-certains répertoire de ce système.
-La cible @code{archive} est tout bonnement supprimée, puisque Windows ne
-dispose pas de la commande @code{tar}.  Enfin, les fichiers MIDI ont une
-extension par défaut propre à Windows.
-
-
-@example
-## VERSION POUR WINDOWS
-##
-piece = symphonie
-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)/Partitions \
-  $(workdir)/PDF \
-  $(workdir)/Pupitress \
-  $(workdir)/Notes
-
-%.pdf %.mid: %.ly
-        $(LILY_CMD) $<      # cette ligne commence par une tabulation
-        if exist "$*.pdf"  move /Y "$*.pdf"  PDF/ # tabulation au début
-        if exist "$*.mid" move /Y "$*.mid" MIDI/  # tabulation au début
-
-notes = \
-  cello.ily \
-  figures.ily \
-  cor.ily \
-  hautbois.ily \
-  trioCordes.ily \
-  alto.ily \
-  violonUn.ily \
-  violonDeux.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)-cor.pdf: $(piece)-cor.ly cor.ily
-$(piece)-hautbois.pdf: $(piece)-hautbois.ly hautbois.ily
-$(piece)-alto.pdf: $(piece)-alto.ly alto.ily
-$(piece)-violonUn.pdf: $(piece)-violonUn.ly violonUn.ily
-$(piece)-violonDeux.pdf: $(piece)-violonDeux.ly violonDeux.ily
-
-.PHONY: score
-score: $(piece).pdf
-
-.PHONY: parties
-parties: $(piece)-cello.pdf \
-         $(piece)-violonUn.pdf \
-         $(piece)-violonDeux.pdf \
-         $(piece)-alto.pdf \
-         $(piece)-hautbois.pdf \
-         $(piece)-cor.pdf
-
-.PHONY: mouvements
-mouvements: $(piece)I.pdf \
-           $(piece)II.pdf \
-           $(piece)III.pdf \
-           $(piece)IV.pdf
-
-all: score parties mouvements
-@end example
-
-
-Le @emph{Makefile} suivant convient pour un document
-@command{lilypond-book} réalisé avec @LaTeX{}.  Ce projet contiendra un
-index, ce qui nécessitera de lancer une deuxième fois @command{latex}
-pour mettre à jour les liens.  Les fichiers résultants iront dans le
-répertoire @code{out} pour ce qui est des .pdf et dans le répertoire
-@code{htmlout} pour ce qui est du html.
-
-@example
-SHELL=/bin/sh
-FILE=monprojet
-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)  # tabulation en début de ligne
-        $(PDF)           # tabulation en début de ligne
-        $(INDEX)         # tabulation en début de ligne
-        $(PDF)           # tabulation en début de ligne
-        $(PREVIEW)       # tabulation en début de ligne
-
-web:
-        $(LILYBOOK_HTML) # tabulation en début de ligne
-        $(HTML)          # tabulation en début de ligne
-        cp -R $(WEBDIR)/$(FILE)/ ./  # tabulation en début de ligne
-        $(BROWSER) $(FILE)/$(FILE).html &  # tabulation en début de ligne
-
-keep: pdf
-        cp $(OUTDIR)/$(FILE).pdf $(FILE).pdf  # tabulation en début de ligne
-
-clean:
-        rm -rf $(OUTDIR) # tabulation en début de ligne
-
-web-clean:
-        rm -rf $(WEBDIR) # tabulation en début de ligne
-
-archive:
-        tar -cvvf monprojet.tar \ # tabulation en début de ligne
-        --exclude=out/* \
-        --exclude=htmlout/* \
-        --exclude=monprojet/* \
-        --exclude=*midi \
-        --exclude=*pdf \
-        --exclude=*~ \
-        ../MonProjet/*
-@end example
-
-AVENIR: faire que ça marche sous Windows
-
-Ce @emph{makefile} n'est malheureusement pas opérationnel sous Windows.
-La seule alternative qui s'offre aux utilisateurs de Windows consiste à
-créer un fichier de traitement par lot (@code{.bat}) qui contienne les
-différentes commandes successives.  Bien que cette manière de procéder
-ne tienne aucun compte des dépendances entre fichiers, elle permet de
-réduire le nombre de processus à lancer dans une seule commande.  Vous
-devrez enregistrer les lignes suivantes dans un fichier
-@code{construire.bat} ou @code{construire.cmd}.  Ce fichier pourra être
-exécuté soit en ligne de commande, soit par un double clic sur son
-icone. 
-
-@example
-lilypond-book --output=out --pdf monprojet.lytex
-cd out
-pdflatex monprojet
-makeindex monprojet
-pdflatex monprojet
-cd ..
-copy out\monprojet.pdf MonProjet.pdf
-@end example
-
-
-@seealso
-Manuel d'utilisation :
-@rprogram{Spécificités pour MacOS X},
-@rprogram{Utilisation en ligne de commande},
-@rprogram{LilyPond-book}
index 2fac04da6968cf6aa6d9da448fda9ab264025d20..1070dd893db33cefd3662fa846b9f2023f53d7b3 100644 (file)
@@ -432,12 +432,12 @@ Pour LilyPond version @version{}
 
 @macro rcontrib{TEXT}
 @vindex \TEXT\
-@ref{\TEXT\,,,contributor,Guide des contributeurs}
+@ref{\TEXT\,,,contributor,Guide du contributeur}
 @end macro
 
 @macro rcontribnamed{TEXT,DISPLAY}
 @vindex \TEXT\
-@ref{\TEXT\,,\DISPLAY\,contributor,Guide des contributeurs}
+@ref{\TEXT\,,\DISPLAY\,contributor,Guide du contributeur}
 @end macro
 
 @macro rweb{TEXT}
@@ -544,12 +544,12 @@ Pour LilyPond version @version{}
 
 @macro rcontrib{TEXT}
 @vindex \TEXT\
-@ref{\TEXT\,,,lilypond-contributor,Guide des contributeurs}
+@ref{\TEXT\,,,lilypond-contributor,Guide du contributeur}
 @end macro
 
 @macro rcontribnamed{TEXT,DISPLAY}
 @vindex \TEXT\
-@ref{\TEXT\,,\DISPLAY\,lilypond-contributor,Guide des contributeurs}
+@ref{\TEXT\,,\DISPLAY\,lilypond-contributor,Guide du contributeur}
 @end macro
 
 @macro rweb{TEXT}
@@ -673,12 +673,12 @@ Pour LilyPond version @version{}
 
 @macro rcontrib{TEXT}
 @vindex{\TEXT\}
-@ref{\TEXT\,,,contributor,Guide des contributeurs}
+@ref{\TEXT\,,,contributor,Guide du contributeur}
 @end macro
 
 @macro rcontribnamed{TEXT,DISPLAY}
 @vindex{\TEXT\}
-@ref{\TEXT\,,\DISPLAY\,contributor,Guide des contributeurs}
+@ref{\TEXT\,,\DISPLAY\,contributor,Guide du contributeur}
 @end macro
 
 @macro rweb{TEXT}
diff --git a/Documentation/fr/texidocs/hymn-template.texidoc b/Documentation/fr/texidocs/hymn-template.texidoc
new file mode 100644 (file)
index 0000000..602fa6e
--- /dev/null
@@ -0,0 +1,10 @@
+%% Translation of GIT committish: 26375d5016d8d180fc914bfd07cf76f4168f2e37
+
+  texidocfr = "
+Le code ci-dessous illustre la manière d'agencer un cantique liturgique
+dans lequel chaque ligne débute et se termine par une mesure incomplète.
+Vous noterez par ailleurs l'affichage des paroles indépendamment de la
+musique.
+
+"
+  doctitlefr = "Modèle pour cantique"
diff --git a/Documentation/fr/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc b/Documentation/fr/texidocs/vocal-ensemble-template-with-verse-and-refrain.texidoc
new file mode 100644 (file)
index 0000000..3bd9398
--- /dev/null
@@ -0,0 +1,10 @@
+%% Translation of GIT committish: 26375d5016d8d180fc914bfd07cf76f4168f2e37
+
+  texidocfr = "
+Ce canevas illustre la manière d'agencer une œuvre vocale où le couplet
+est chanté en solo et le refrain à deux voix.  Vous noterez le recours
+aux silences invisibles dans la variable @code{\global}@tie{}; ils
+permettent de positionner les changements de métrique et autres éléments
+communs à toutes les parties et pour l'intégralité du morceau.
+"
+  doctitlefr = "Ensemble vocal avec couplet et refrain"
index d3138a227b0aa1277a2c65d75cc97f75ef717863..f3393b8381d707a7c072aed83e04c9c1369e1bd1 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
+%% Translation of GIT committish: bfc88203ac2572737480e78ef2635ed35b458441
   texidocfr = "
 Ce fichier constitue un canevas standard de partition pour chœur à
 quatre voix mixtes.  Lorsque les ensembles s'étoffent, il est judicieux
index 852b22189cfebef44e7eb2a6dabf8c5e5ea2974d..7f2d02129e78f6538224ad7a1ff42e667917e85c 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-    Translation of GIT committish: 20c486ef2a4e98030fa128052d7257b66bc1599c
+    Translation of GIT committish: 7e4dc7d03c5bc354f343550f313a10f857367556
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -56,6 +56,26 @@ License''.
 @end copying
 
 
+@c Info files are no longer installed in a subdirectory, images are
+@c expected to be found in lilypond/ subdirectory.
+@dircategory GNU LilyPond -- le typographe de musique
+@direntry
+* Manuel d'initiation à LilyPond: (lilypond-learning).        Les premiers pas.
+* Glossaire musicologique: (music-glossary).                  Pour l'utilisateur non anglophone.
+* Manuel de notation: (lilypond-notation).                    Gravure de musique avec LilyPond.
+* Morceaux choisis de LilyPond: (lilypond-snippets).          Petits trucs, astuces et exemples.
+* Références des propriétés internes: (lilypond-internals).   Définitions pour les retouches.
+* Utilisation des programmes: (lilypond-usage).               Installation et exécution des programmes.
+* LilyPond Website: (lilypond-web).                           Prévisualisation du site.
+* abc2ly: (lilypond-usage) Lancement de abc2ly.               Import de fichier ABC.
+* convert-ly: (lilypond-usage) Mise à jour de fichiers.       Pour d'anciens fichiers LilyPond.
+* etf2ly: (lilypond-usage) Lancement de etf2ly.               Import de fichier Finale.
+* lilypond-book: (lilypond-usage) LilyPond-book.              Association musique-texte.
+* midi2ly: (lilypond-usage) Lancement de midi2ly.             Import de fichier MIDI.
+* musicxml2ly: (lilypond-usage) Lancement de musicxml2ly.     Import de fichier MusicXML.
+@end direntry
+
+
 @c TITLE PAGE
 @ifnottex
 @node Top
@@ -185,30 +205,8 @@ Distributions will want to install lilypond.info in postinstall, doing:
 
   * List all commands in direntry.
 
-@c  * lilypond: (lilypond-application)Running LilyPond.      Invoking the
-@c    LilyPond  program.
 @end ignore
 
-@c Info files are no longer installed in a subdirectory, images are
-@c expected to be found in lilypond/ subdirectory.
-@dircategory GNU LilyPond -- le typographe de musique
-@direntry
-* Manuel d'initiation à LilyPond: (lilypond-learning).        Les premiers pas.
-* Glossaire musicologique: (music-glossary).                  Pour l'utilisateur non anglophone.
-* Manuel de notation: (lilypond-notation).                    Gravure de musique avec LilyPond.
-* Morceaux choisis de LilyPond: (lilypond-snippets).          Petits trucs, astuces et exemples.
-* Références des propriétés internes: (lilypond-internals).   Définitions pour les retouches.
-* Utilisation des programmes: (lilypond-application).         Installation et exécution des programmes.
-* LilyPond Website: (lilypond-general).                       Prévisualisation du site.
-* abc2ly: (lilypond-application)lancement de abc2ly.          Import de fichier ABC.
-* convert-ly: (lilypond-application)Mise à jour de fichiers.  Pour d'anciens fichiers LilyPond.
-* etf2ly: (lilypond-application)Lancement de etf2ly.          Import de fichier Finale.
-* lilypond-book: (lilypond-application)LilyPond-book.         Association musique-texte.
-* midi2ly: (lilypond-application)Lancement de midi2ly.        Import de fichier MIDI.
-* musicxml2ly: (lilypond-application)Lancement de musicxml2ly.  Import de fichier MusicXML.
-@end direntry
-
-
 @c FIXME: this still doesn't solve the broken links in pdf and big
 @c        html; we'll need a bunch of @iftext and stuff in here. -gp
 @c ****************** SPECIAL MACROS FOR WEB MANUAL ************
index 70064277043d2215e207a25775998a9091489d62..d8063e4cf9e100d24ecf94d5c29b8c71f4c23074 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage : fr -*-
 @ignore
-    Translation of GIT committish: 7c9a0da142b6037180d557f12ba1ada366226606
+    Translation of GIT committish: 0ab366a101ef8c3439dd8d6ff6c634f70fa5f63b
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -18,6 +18,8 @@
 @unnumbered Communauté
 @translationof Community
 
+@divClass{link-headings}
+
 @divClass{column-center-top}
 @subheading Échanger avec la communauté
 @translationof Interacting with the community
@@ -70,6 +72,7 @@ aujourd'hui.
 @end itemize
 @divEnd
 
+@divEnd
 
 @divClass{hide}
 @menu
@@ -89,6 +92,7 @@ aujourd'hui.
 @unnumberedsec Contact
 @translationof Contact
 
+
 @divClass{column-left-bottom}
 @subheading Discuter entre utilisateurs et demander de l'aide
 @translationof Discussions and Help
@@ -103,9 +107,9 @@ utilisateurs pour discuter et s'entraider.
 page de souscription à lilypond-user}
 
 @uref{http://lists.gnu.org/archive/html/lilypond-user/,
-archive1 de la liste}, 
+archive1 de la liste},
 @uref{http://www.mail-archive.com/lilypond-user@@gnu.org/,
-archive2}, 
+archive2},
 @uref{http://dir.gmane.org/gmane.comp.gnu.lilypond.general,
 archive3}.
 
@@ -117,6 +121,22 @@ poster sur lilypond-user à l'aide de gmane}
 @ref{Exemples minimaux}@tie{}!}
 
 
+@subsubheading LilyPond Snippet Repository
+
+Le LilyPond Snippet Repository regroupe des exemples de situations
+particulières auxquelles ont été confontés les utilisateurs de LilyPond.
+Ils sont librement réutilisables dans vos propres travaux.  N'hésitez
+pas à apporter votre concours à cette banque de trucs et astuces@tie{}!
+
+@example
+@uref{http://lsr.dsi.unimi.it}
+@end example
+
+Un certain nombre d'exemples issus du LSR et particulièrement pertinents
+sont directement inclus dans la documentation, volume
+@ref{Morceaux choisis}.
+
+
 @subsubheading IRC
 
 Vous pouvez obtenir quelque support au travers de notre canal IRC@tie{}:
@@ -421,11 +441,12 @@ sans oublier le @code{>} au tout début de votre message@tie{}; c'est
 @end itemize
 @divEnd
 
-Une fois le message reçu, notre @qq{responsable des bogues} analysera
-votre rapport et vous demandera peut-être des informations
-supplémentaires avant de l'ajouter au traceur.  Il vous transmettra
-ensuite le numéro de référence de votre signalement une fois qu'il
-l'aura ajouté.
+Une fois le message reçu, nos @qq{exterminateurs de bogues} analyseront
+votre rapport et vous demanderont peut-être des informations
+supplémentaires avant de l'ajouter au traceur.  Dans la mesure où
+l'équipe est réduite, merci de leur laisser une bonne journée avant
+qu'ils ne vous transmettent le numéro de référence de votre signalement
+une fois qu'il aura été ajouté à la base.
 
 Vous serez automatiquement notifié du traitement apporté à ce bogue, dès
 lors que vous avez une compte chez google.
@@ -543,7 +564,7 @@ sur la planète, il n'est pas prévu que ce document soit un jour
 traduit@dots{}}
 
 @docLinksBare{Guide du contributeur, contributor,
-  @rcontribnamed{Top,Guide du Contributeur},
+  @rcontribnamed{Top,Guide du contributeur},
   @manualDevelContributorSplit,
   @manualDevelContributorBig, 500 kB,
   @manualDevelContributorPdf, 2.8 MB}
@@ -555,10 +576,10 @@ traduit@dots{}}
 @subheading Tests de régression
 
 @divClass{keep-bullets}
-@itemize
 
 @ifclear web_version
 
+@itemize
 @item
 @uref{../../input/regression/collated-files.html, Tests de régression}
 relatifs à ce niveau de mise à jour
@@ -568,23 +589,55 @@ relatifs à ce niveau de mise à jour
 @uref{../../input/regression/musicxml/collated-files.html, Tests de MusicXML}
 relatifs à ce niveau de mise à jour
 (@uref{../../input/regression/musicxml/collated-files.pdf, version pdf}).
+
+@item
+@uref{../../input/regression/abc2ly/collated-files.html, Test de abc2ly}
+relatifs à ce niveau de mise à jour
+(@uref{../../input/regression/abc2ly/collated-files.pdf, version pdf}).
+
+@item
+@uref{../../input/regression/lilypond-book/collated-files.html,
+Test de lilypond-book} relatifs à ce niveau de mise à jour
+(@uref{../../input/regression/lilypond-book/collated-files.pdf, versionpdf}).
+@end itemize
+
 @end ifclear
 
 @ifset web_version
+@subsubheading Version de développement
+
+@itemize
 @item @regtestDevel (@regtestDevelPdf{})
 
 @item @regtestDevelXml (@regtestDevelXmlPdf{})
 
+@item @regtestDevelAbc (@regtestDevelAbcPdf{})
+
+@item @regtestDevelLilypondBook (@regtestDevelLilypondBookPdf{})
+@end itemize
+
+@subsubheading Version stable
+
+@itemize
 @item @regtestStable (@regtestStablePdf{})
 
 @item @regtestStableXml (@regtestStableXmlPdf{})
+
+@item @regtestStableAbc (@regtestStableAbcPdf{})
+
+@item @regtestStableLilypondBook (@regtestStableLilypondBookPdf{})
+@end itemize
 @end ifset
 
 
+@subsubheading Toutes versions
+
+@itemize
 @item @uref{http://lilypond.org/test, Archives des tests de régression} :
 Comparaisons entre différentes versions.
 
 @end itemize
+
 @divEnd
 @divEnd
 
@@ -804,7 +857,7 @@ PDF 750k})
 @item
 Han-Wen Nienhuys et Jan Nieuwenhuizen, @emph{LilyPond, un système de
 gravure musicale automatisée}.  Actes du 14e Colloque d'informatique
-musicale (XIV CIM 2003), Florence, Itale, mai@tie{}2003. 
+musicale (XIV CIM 2003), Florence, Itale, mai@tie{}2003.
 (@uref{ http://lilypond.org/web/images/xivcim.pdf, PDF 95k})
 
 @end itemize
@@ -839,7 +892,6 @@ Alberto Simões, Anália Lourenço et José João Almeida,
 New Trends in Artificial Intelligence, 2007 J. Neves et al ed.
 
 @item
-
 Kevin C. Baird 2005,
 @emph{Real-time generation of music notation via audience interaction using
 python and GNU lilypond}. Proceedings of the 2005 Conference on New interfaces
@@ -861,4 +913,3 @@ Singapore, 240-241.
 
 @include web/news.itexi
 
-
index fa9aca18b42199a5bfa18057bb2ddd43155f80fa..70c6e786af872d71401d87c77a7836aa5b516d19 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @c This file is part of web.texi
 @ignore
-    Translation of GIT committish: 68cf70682a542701a918f8bfff50f2b8b85f84e2
+    Translation of GIT committish: 0ab366a101ef8c3439dd8d6ff6c634f70fa5f63b
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -41,6 +41,8 @@ lire @ref{Entrée sous forme de texte}.}
 
 @divEnd
 
+@divClass{link-headings}
+
 @divClass{column-left-top}
 @subheading Pour l'utilisateur
 
@@ -77,13 +79,14 @@ pour les empaqueteurs
 @ref{Anciennes versions} :
 versions antérieures
 
-@item 
+@item
 @ref{Development} :
 version instable la plus récente
 
 @end itemize
 @divEnd
 
+@divEnd
 
 @divClass{column-center-bottom}
 
@@ -348,11 +351,11 @@ cd ~/bin
 @item
 Créez un fichier @command{lilypond} qui contiendra
 
-@help défaut évident de css à régler.  :(
-@c we need a small font here to fit.  -gp
-@smallexample
+@divClass{h-scroll-auto}
+@example
 exec @var{RÉP}/LilyPond.app/Contents/Resources/bin/lilypond "$@@"
-@end smallexample
+@end example
+@divEnd
 
 @warning{@var{RÉP} sera en règle générale @code{/Applications/}}
 
@@ -394,9 +397,11 @@ fichier @code{.app} pour MacOS@tie{}X.
 
 Ces scripts peuvent se lancer directement en ligne de commande :
 
+@divClass{h-scroll-auto}
 @example
 @var{chemin/vers}/LilyPond.app/Contents/Resources/bin/lilypond
 @end example
+@divEnd
 
 Il en va de même pour les autres scripts de ce répertoire, tels que
 @command{lilypond-book} et @command{convert-ly}.
@@ -567,7 +572,7 @@ utilisateur a besoin.}
 
 L'intégralité des versions, récentes ou non, est accessible sur notre
 @uref{http://download.linuxaudio.org/lilypond/source/?C=N;O=D, site de
-téléchargement}. 
+téléchargement}.
 
 @divEnd
 
@@ -605,7 +610,7 @@ téléchargement}.
 @subheading Licence logicielle
 @translationof GPL
 
-GNU LilyPond est distribué selon la 
+GNU LilyPond est distribué selon la
 @ref{GPL,Licence Publique Générale GNU GPL}.  Pour une introduction à
 cette licence, et les raisons qui nous ont fait l'adopter, lisez
 @ref{Liberté}.
index 3ba9edc3ec8c8f432a253042b9d6b228cbb4ba3a..d3b8675a3c64a0d552ce017ce603cca0498cc311 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @c This file is part of web.texi
 @ignore
-    Translation of GIT committish: 7c9a0da142b6037180d557f12ba1ada366226606
+    Translation of GIT committish: 0ab366a101ef8c3439dd8d6ff6c634f70fa5f63b
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -31,8 +31,11 @@ selon le meilleur de la tradition typographique avec un minimum de
 bricolage.  Ne perdez pas de temps à ajuster l'espacement, déplacer des
 symboles un par un ou remodeler des liaisons.  Vous impressionnerez vos
 amis et collègues avec des partitions soignées@tie{}!
+
 @divEnd
 
+@divClass{link-headings}
+
 @divClass{column-left-top}
 @subheading Ce que LilyPond sait faire
 
@@ -82,6 +85,8 @@ amis et collègues avec des partitions soignées@tie{}!
 @end itemize
 @divEnd
 
+@divEnd
+
 @c Les traductions ne se compilent pas encore au format Info, il est
 @c donc inutile de traduire la colonne de droite du menu suivant. -JM
 @divClass{hide}
index f22bfd4a5a58f9e1e3b737efc3189895558e5a66..ab5056255a31526f15b37644a00c150872b1a356 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @c This file is part of web.texi
 @ignore
-    Translation of GIT committish: 3c3484ad3caf94656ee05aa601cb041426530d57
+    Translation of GIT committish: 0ab366a101ef8c3439dd8d6ff6c634f70fa5f63b
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -17,8 +17,7 @@
 
 @macro details{reference}
 @spanClass{detail}
-(@ref{\reference\, détails de \reference\})
-@spanEnd
+(@ref{\reference\, détails de \reference\}) @spanEnd
 @end macro
 
 
 
 @divEnd
 
-@c TODO: do we want these links to be in larger text / bold ?   CSS.
+@divClass{link-headings}
 
 @divClass{column-center-top}
 @subheading Introduction
 
 @itemize
 
-@item @ref{Entrée sous forme de texte} :
+@item
+@ref{Entrée sous forme de texte}@tie{}:
 LilyPond est un système de gravure musicale @strong{en mode texte}.  Si
-vous ne savez pas du tout ce que ça veut dire, lisez tout d'abord ceci !
+vous ne savez pas du tout ce que ça veut dire, lisez tout d'abord
+ceci@tie{}!
 
 @item
 @ifWebLinks{@manualStableLearningSplitNoName-fr,@rlearningnamed{Top,Initiation}}
 une introduction pas-à-pas à LilyPond.
 @details{Initiation}
 
-@item @ifWebLinks{@manualStableGlossarySplitNoName,@rglosnamed{Top,Glossaire}}
-@emph{(lecture optionnelle)}
-répertoire de définition et de traduction de termes musicaux, utile en
-particulier pour connaître les termes musicaux en anglais.
+@item
+@ifWebLinks{@manualStableGlossarySplitNoName,@rglosnamed{Top,Glossaire}}
+@emph{(lecture optionnelle)} répertoire de définition et de traduction
+de termes musicaux, utile en particulier pour connaître les termes
+musicaux en anglais.
 @details{Glossaire}
 
-@item @ifWebLinks{@manualStableEssaySplitNoName-fr,@ressaynamed{Top,Essai}}
-@emph{(lecture optionnelle)}
-essai sur la conception des processus de gravure d'après l'esthétique et
-la technique de la gravure traditionnelle avec poinçons et plaques de plomb.
+@item
+@ifWebLinks{@manualStableEssaySplitNoName-fr,@ressaynamed{Top,Essai}}
+@emph{(lecture optionnelle)} essai sur la conception des processus de
+gravure d'après l'esthétique et la technique de la gravure
+traditionnelle avec poinçons et plaques de plomb.
 @details{Essai}
 
-
 @end itemize
 
 @divEnd
@@ -70,12 +72,14 @@ la technique de la gravure traditionnelle avec poinçons et plaques de plomb.
 
 @itemize
 
-@item @ifWebLinks{@manualStableNotationSplitNoName-fr,@rusernamed{Top,Notation}}
+@item
+@ifWebLinks{@manualStableNotationSplitNoName-fr,@rusernamed{Top,Notation}}
 partie la plus importante de la documentation, ce manuel fournit toutes
 les informations détaillées dont vous aurez besoin en matière de notation.
 @details{Notation}
 
-@item @ifWebLinks{@manualStableUsageSplitNoName-fr,@rprogramnamed{Top,Utilisation}}
+@item
+@ifWebLinks{@manualStableUsageSplitNoName-fr,@rprogramnamed{Top,Utilisation}}
 présentation des différentes composantes de LilyPond, ainsi que les
 particularités de certains systèmes d'exploitation.
 @details{Utilisation}
@@ -95,23 +99,27 @@ courts extraits, trucs, modèles et autres exemples.
 
 @itemize
 
-@item @ref{FAQ} :
+@item
+@ref{FAQ}@tie{}:
 la Foire Aux Questions.
 
-@item @ref{Web} :
+@item
+@ref{Web}@tie{}:
 ce document.
 @details{Web}
 
-@item 
+@item
 @ifWebLinks{@manualStableChangesSplitNoName,@rchangesnamed{Top,Nouveautés}}
 changements depuis la dernière version stable.
 @details{Nouveautés}
 
-@item @ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Top,Extension}}
+@item
+@ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Top,Extension}}
 programmation avancée d'ajustements et retouches dans LilyPond.
 @details{Extension}
 
-@item @ifWebLinks{@manualStableInternalsSplitNoName,@rinternalsnamed{Top,Propriétés internes}}
+@item
+@ifWebLinks{@manualStableInternalsSplitNoName,@rinternalsnamed{Top,Propriétés internes}}
 information sur les structures internes de LilyPond, nécessaire en
 particulier pour élaborer des retouches.
 @details{Propriétés internes}
@@ -126,23 +134,29 @@ particulier pour élaborer des retouches.
 
 @itemize
 
-@item @ref{Traductions} :
+@item
+@ref{Traductions}@tie{}:
 état des traductions pour les lecteurs non anglophones.
 
-@item @ref{Tous} :
+@item
+@ref{Tous}@tie{}:
 liens rapides, manuels téléchargeables, et documentation des anciennes
 versions.
 
-@item @ref{Développement} :
+@item
+@ref{Développement}@tie{}:
 manuels pour la version de développement.
 
-@item @ref{FDL} :
+@item
+@ref{FDL}@tie{}:
 ces manuels sont publiés sous la licence GNU de documentation libre FDL.
 
 @end itemize
 
 @divEnd
 
+@divEnd
+
 
 @divClass{hide}
 @menu
@@ -153,12 +167,12 @@ ces manuels sont publiés sous la licence GNU de documentation libre FDL.
 * Utilisation::         Les différentes composantes de LilyPond
 * Morceaux choisis::    Exemples de code, trucs et astuces
 * FAQ::                 Foire aux questions
-* Web::                 
-* Nouveautés::
-* Extension::
-* Propriétés internes::
-* Traductions::
-* Tous::
+* Web::                 Le site de LilyPond
+* Nouveautés::          Ce qui change au fil des versions
+* Extension::           Programmation au sein de LilyPond
+* Propriétés internes:: Références du programme
+* Traductions::         État d'avancement des différentes traductions
+* Tous::                Tous les manuels
 * FDL::                 Licence.
 @end menu
 
@@ -181,8 +195,8 @@ simple quelques concepts clés.  Il est conseillé de lire ces chapitres
 de manière linéaire.
 
 Dans ce manuel se trouve à chaque section un paragraphe @strong{Voir
-aussi} contenant des références vers d'autres sections : il est
-conseillé de ne pas les suivre en première lecture ; lorsque vous
+aussi} contenant des références vers d'autres sections@tie{}: il est
+conseillé de ne pas les suivre en première lecture@tie{}; lorsque vous
 aurez lu l'ensemble du manuel d'initiation, vous pourrez en relisant
 certaines sections suivre ces références pour approfondir certains
 aspects.
@@ -324,7 +338,7 @@ Notez bien que cette annexe n'est en aucune manière un miroir ou même
 une partie du LSR.  Dans la mesure où le LSR repose sur une version
 stable de LilyPond, les exemples illustrant des fonctionnalités
 introduites dans la dernière version de développement ne peuvent y
-figurer ; c'est pourquoi vous les trouverez dans le répertoire
+figurer@tie{}; c'est pourquoi vous les trouverez dans le répertoire
 @file{Documentation/snippets/new/} des sources de LilyPond.
 
 La liste des exemples correspondant à chacun des sous-chapitres du
@@ -365,7 +379,7 @@ rapport avec la notation musicale que vous voulez produire.
 
 @subsubheading Ça fait encore beaucoup à lire !  Ai-je besoin de lire tout cela ?
 
-C'est vous qui voyez ; les raisons pour lesquelles vous souhaitez
+C'est vous qui voyez@tie{}; les raisons pour lesquelles vous souhaitez
 utiliser LilyPond se trouvent peut-être dans l'@ref{Introduction}.
 
 @divEnd
index c384ccc65276b9f06d47330eee72145467f70d32..e7609345d3035f6107045d8249731d37aae1a43a 100644 (file)
@@ -41,6 +41,7 @@
 Support guru
 
 @item Trevor Daniels:
+@email{t.daniels@@treda.co.uk},
 Assistant documentation editor
 
 @item Reinhold Kainhofer:
@@ -414,5 +415,3 @@ Olcay Yıldırım
 @c no comma for last entry
 
 @end macro
-
-
index d71422c40509d19108eb12eaf7a7d8101ef20718..79573df63cbb6bb558f9c53e76034e6171a570a8 100644 (file)
@@ -2,7 +2,7 @@
 \header {
 
 texidoc = " Chord names are generated from a list pitches.  The
-functions which construct these names can be customised. Here are shown
+functions which construct these names can be customised.  Here are shown
 Jazz chords, following Ignatzek (pp. 17-18, 1995) and
 an alternative Jazz  chord notation.
 
index e36661d259b39cd141b71658d20925671d534e17..498bbfd33875d0984011b5ec268743491f43e7c2 100644 (file)
@@ -188,6 +188,8 @@ LilyPond}
 
 @item @uref{http://netpbm.sourceforge.net/, Netpbm}
 
+@item @uref{http://gzip.org/, gzip}
+
 @item @uref{http://rsync.samba.org/, rsync}
 
 @item @uref{http://www.nongnu.org/texi2html/, Texi2HTML} (1.82)
@@ -858,7 +860,7 @@ exec /opt/local/bin/pngtopnm "$@"
 
 
 LilyPond comes with an extensive suite that exercises the entire
-program.   This suite can be used to test that the binary has
+program.  This suite can be used to test that the binary has
 been built correctly.
 
 The test suite can be executed with:
@@ -906,7 +908,7 @@ been tested using OS X 10.5 (Leopard).
 First, install the relevant dependencies using MacPorts.
 
 Next, add the following to your relevant shell initialization
-files. This is @code{~/.profile} by default. You should create
+files.  This is @code{~/.profile} by default.  You should create
 this file if it does not exist.
 
 @example
@@ -928,7 +930,7 @@ FLEXLEXER_FILE = /opt/local/include/FlexLexer.h
 @end example
 
 At this point, you should verify that you have the appropriate
-fonts installed with your ghostscript installation. Check @code{ls
+fonts installed with your ghostscript installation.  Check @code{ls
 /opt/local/share/ghostscript/fonts} for: 'c0590*' files (.pfb,
 .pfb and .afm).  If you don't have them, run the following
 commands to grab them from the ghostscript SVN server and install
@@ -940,7 +942,7 @@ sudo mv urw-fonts-1.0.7pre44/* /opt/local/share/ghostscript/fonts/
 rm -rf urw-fonts-1.07pre44
 @end example
 
-Now run the @code{./configure} script. To avoid complications with
+Now run the @code{./configure} script.  To avoid complications with
 automatic font detection, add
 
 @example
@@ -1024,9 +1026,9 @@ installation directory structure.
 
 
 It can be useful to have both the stable and the development versions
-of Lilypond available at once. One way to do this on GNU/Linux is to
+of Lilypond available at once.  One way to do this on GNU/Linux is to
 install the stable version using the precompiled binary, and run the
-development version from the source tree. After running @command{make
+development version from the source tree.  After running @command{make
 all} from the top directory of the Lilypond source files, there will
 be a binary called @code{lilypond} in the @code{out} directory:
 
@@ -1035,7 +1037,7 @@ be a binary called @code{lilypond} in the @code{out} directory:
 @end example
 
 This binary can be run without actually doing the @code{make
-install} command. The advantage to this is that you can have all
+install} command.  The advantage to this is that you can have all
 of the latest changes available after pulling from git and running
 @code{make all}, without having to uninstall the old version and
 reinstall the new.
@@ -1082,8 +1084,8 @@ TODO: rewrite for lily-git.tcl !!!  do before GOP!  -gp
 
 Since it is not possible to compile Lilypond on Windows, some
 developers may find it useful to install a GNU/Linux virtual
-machine. A disk image with a special remix of @strong{Ubuntu}
-has been created for this purpose. It has all of the Lilypond
+machine.  A disk image with a special remix of @strong{Ubuntu}
+has been created for this purpose.  It has all of the Lilypond
 build dependencies in place, so that once installed, it is
 ready to compile both Lilypond and the Documentation.
 The @code{lilybuntu} remix is available for download here:
@@ -1095,7 +1097,7 @@ The @code{lilybuntu} remix is available for download here:
 We do not necessarily recommend any one virtualization tool,
 however the @code{lilybuntu} remix is known to work well on
 @uref{http://www.virtualbox.org/wiki/Downloads, Sun VirtualBox},
-which is a free download. Consult your virtualization software's
+which is a free download.  Consult your virtualization software's
 documentation for instructions on setting up the software and
 for general instructions on installing a virtual machine.
 
@@ -1104,12 +1106,12 @@ Steps to setting up @code{lilybuntu} in a virtual machine:
 @enumerate
 @item Download the @code{lilybuntu} disk image.
 
-@item Install @code{lilybuntu}. You will use the @code{.iso}
-file as the boot disk. It should not be necessary to burn it
+@item Install @code{lilybuntu}.  You will use the @code{.iso}
+file as the boot disk.  It should not be necessary to burn it
 to a DVD, but consult the documentation for your virtualization
-software for specific instructions. If possible, use at least
-the recommended amount of RAM for the virtual machine (384 MB on
-VirtualBox), and use a dynamically expanding virtual hard drive.
+software for specific instructions.  If possible, use at least 500
+MB of RAM (1GB would be better!) for the virtual machine, and use
+a dynamically expanding virtual hard drive.
 A virtual hard drive with 6 GB will be enough to compile LilyPond,
 but if you intend to build the docs and run the regression tests
 the virtual hard drive should be at least 10 GB.
@@ -1144,8 +1146,8 @@ Contributor's Guide}.
 
 @item To retrieve the Lilypond source code from @code{git},
 copy-and-paste each command from the CG @qq{Main source code}
-section into the terminal. (paste into the terminal with keystroke
-@code{CTRL+SHIFT+V})
+section into the terminal (paste into the terminal with keystroke
+@code{CTRL+SHIFT+V}).
 
 @item Prepare to build Lilypond by running the configuration script.
 Type
@@ -1166,7 +1168,7 @@ Type:
 Edit local.make for local Makefile overrides.
 @end example
 
-@item First type @code{make all} to build Lilypond. This will take
+@item First type @code{make all} to build Lilypond.  This will take
 a while.
 
 @item When Lilypond is finished building, build the documentation
index bea5144f3077963571049c46bcb1487e65f4d9f9..1d9de533d3cc5f668e5129d5a771d9e6f3f26ab4 100644 (file)
@@ -91,7 +91,7 @@ Double-click the LilyPond icon on your desktop, an example file will open.
 @sourceimage{Learning_Win7_Welcome_File_Whole,,,}
 
 From the menus that appear along the top of the example file,
-select @w{@code{File > Save as}}. Do not use the @w{@code{File > Save}}
+select @w{@code{File > Save as}}.  Do not use the @w{@code{File > Save}}
 for the example file as this will not work until you have given it a
 valid LilyPond file name.
 
@@ -124,7 +124,7 @@ Or simply double-click the @file{test.ly}.
 @subsubheading Step 3. View output
 
 During the compilation of the @file{test.ly} file, a command window
-will, very briefly open and then close. Three additional files will
+will, very briefly open and then close.  Three additional files will
 have been created during this process.
 
 @sourceimage{Learning_Win7_All_Files_Created,,,}
@@ -156,7 +156,7 @@ during the compilation attempt, for any errors.
 This log file is overwritten each time you compile your LilyPond file.
 
 The PS file is used internally by LilyPond to create the PDF file and
-can be ignored. It also gets overwritten each time you compile your
+can be ignored.  It also gets overwritten each time you compile your
 file.
 
 If you are viewing your file in a PDF viewer, then you must close the
index d65ffef5743699391c3a9302ffae7885d723871c..0273fc12e2d2d98bb4191f133fd444f518bcc86e 100644 (file)
@@ -1,4 +1,4 @@
-%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
+%% Translation of GIT committish: bfc88203ac2572737480e78ef2635ed35b458441
   texidocja = "
 これは標準の 4 パート SATB (ソプラノ、アルト、テナー、バス) ボーカル譜です。@c
 もっと大きな合唱では、すべてのパートで使用されるセクションをインクルードすると@c
index 0c374e4df01f265a492057844b63c06e0cf2af2d..a7faab25041a6567fa01d35a6bc0e85ba2cd780e 100644 (file)
@@ -872,7 +872,7 @@ Notation Reference:
 
 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
+them here.  Instead, the following sections introduce these concepts
 and explain them thoroughly.
 
 @seealso
index 10d0d8f8bdb1f3deecbb8aacb9282b803024529b..811b1dc49360beb33ead9c29f56053401676828c 100644 (file)
@@ -643,7 +643,7 @@ Here's another simple example:
 @end lilypond
 
 It is not necessary to use a separate @code{<< \\ >>} construct
-for each bar. For music with few notes in each bar this layout
+for each bar.  For music with few notes in each bar this layout
 can help the legibility of the code, but if there are many
 notes in each bar it may be better to split out each voice
 separately, like this:
@@ -889,7 +889,7 @@ odd-numbered voices taking upward stems and the even-numbered
 voices downward ones.  The stems for voices 1 and 2 are right,
 but the stems in voice 3 should go down in this particular piece
 of music.  We can correct this by skipping voice three
-and placing the music in voice four. This is done by simply
+and placing the music in voice four.  This is done by simply
 adding another pair of @code{\\}.
 
 @lilypond[quote,verbatim,fragment,ragged-right]
@@ -916,7 +916,7 @@ voices to occupy the same vertical note column provided the stems are
 in opposite directions, but the notes from the third and fourth voices
 are displaced, if necessary, to avoid the note heads colliding.  This
 usually works well, but in this example the notes of the lowest voice
-are clearly not well placed by default. LilyPond provides several ways
+are clearly not well placed by default.  LilyPond provides several ways
 to adjust the horizontal placing of notes.  We are not quite ready yet
 to see how to correct this, so we shall leave this problem until a
 later section --- see the @code{force-hshift} property in @ref{Fixing
@@ -1149,7 +1149,7 @@ relative to the other notes.
 The @code{\shiftOn}, @code{\shiftOnn}, @code{\shiftOnnn}, and
 @code{\shiftOff} commands specify the degree to which notes and
 chords of the voice should be shifted if a collision
-would otherwise occur. By default, the outer voices (normally
+would otherwise occur.  By default, the outer voices (normally
 voices one and two) have @code{\shiftOff} specified, while the
 inner voices (three and four) have @code{\shiftOn} specified.
 When a shift is applied, voices one and three are shifted to
index 2940a0d88f54e6d4bd009f5208e8b568de228819..b7ceef9fe2f7fc0ecb389dceea2e3a006befc2b8 100644 (file)
@@ -115,6 +115,11 @@ beautiful printed scores!
 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
 {vocal-ensemble-template-with-verse-and-refrain.ly}
 
+@appendixsubsec Hymn tunes
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc]
+{hymn-template.ly}
+
 
 @node Orchestral templates
 @appendixsec Orchestral templates
index daeb0d4736037603ed067e90c9e7c0ee1e27657e..2d3d46e7a3d4216ab965d1105c24b88195782db5 100644 (file)
@@ -562,7 +562,7 @@ should find
      Line thickness, generally measured in @code{line-thickness}
 @end example
 
-This looks a good bet to change the heaviness. It tells us that
+This looks a good bet to change the heaviness.  It tells us that
 the value of @code{thickness} is a simple @emph{number},
 that the default value is 1.2, and that the units are
 in another property called @code{line-thickness}.
@@ -1632,7 +1632,7 @@ Then it sorts the outside-staff objects according to their
 @code{outside-staff-priority}.  The outside-staff objects are
 taken one by one, beginning with the object with the lowest
 @code{outside-staff-priority}, and placed so that they do not
-collide with any objects that have already been placed. That is,
+collide with any objects that have already been placed.  That is,
 if two outside-staff grobs are competing for the same space, the
 one with the lower @code{outside-staff-priority} will be placed
 closer to the staff.  If two objects have the same
@@ -2033,7 +2033,7 @@ It also shows how ottava brackets are created.
 @cindex rehearsal marks, tweaking placement
 
 Note that bar numbers, metronome marks and rehearsal marks are not
-shown. By default these are created in the @code{Score} context and
+shown.  By default these are created in the @code{Score} context and
 their @code{outside-staff-priority} is ignored relative to the layout
 objects which are created in the @code{Staff} context.  If you wish to
 place bar numbers, metronome marks or rehearsal marks in accordance
@@ -2518,7 +2518,7 @@ affecting anything else.
 @cindex positions property
 
 This is most useful for manually adjusting the slope and height
-of beams, slurs, and tuplets.   It takes a pair of numbers
+of beams, slurs, and tuplets.  It takes a pair of numbers
 giving the position of the left and right ends of the beam, slur,
 etc. relative to the center line of the staff.  Units are
 staff-spaces.  Note, though, that slurs and phrasing slurs cannot
@@ -3720,7 +3720,7 @@ inst =
 @end example
 
 We will refer to this file using the @code{\include} command near
-the top of the music file. (The extension @code{.ily} is used to
+the top of the music file.  (The extension @code{.ily} is used to
 distinguish this included file, which is not meant to be compiled
 on its own, from the main file.)
 Now let's modify our music (let's save this file as @file{"music.ly"}).
index ef649b2996249a125455f63b52971884989db4c5..def4471db9cf2521500f07368b6d8dbaa876e514 100644 (file)
@@ -818,7 +818,7 @@ S: upptakt,
 FI: kohotahti.
 
 An anacrusis (also known as pickup or upbeat) is an incomplete measure
-of music before a section of music. It also refers to the initial
+of music before a section of music.  It also refers to the initial
 note(s) of a melody occurring in that incomplete measure.
 
 @lilypond[quote,relative=1]
@@ -1027,22 +1027,6 @@ A distance between a starting lower note and a higher ending note.
 No cross-references.
 
 
-@node augmented interval
-@section augmented interval
-
-ES: intervalo aumentado,
-I: intervallo aumentato,
-F: intervalle augmenté,
-D: übermäßiges Intervall,
-NL: overmatig interval,
-DK: forstørret interval,
-S: överstigande intervall,
-FI: ylinouseva intervalli.
-
-@seealso
-@ref{interval}.
-
-
 @node augmentation
 @section augmentation
 
@@ -1063,6 +1047,22 @@ This is a placeholder for augmentation (wrt mensural notation).
 @ref{diminution}, @ref{mensural notation}.
 
 
+@node augmented interval
+@section augmented interval
+
+ES: intervalo aumentado,
+I: intervallo aumentato,
+F: intervalle augmenté,
+D: übermäßiges Intervall,
+NL: overmatig interval,
+DK: forstørret interval,
+S: överstigande intervall,
+FI: ylinouseva intervalli.
+
+@seealso
+@ref{interval}.
+
+
 @node autograph
 @section autograph
 
@@ -1081,7 +1081,7 @@ FI: käsinkirjoitettu nuotti.
 
 @item Music prepared for photoreproduction by freehand drawing, with
 the aid of a straightedge ruler and T-square only, which attempts to
-emulate engraving. This required more skill than did engraving.
+emulate engraving.  This required more skill than did engraving.
 
 @end itemize
 
@@ -1235,7 +1235,7 @@ DK: bjælke,
 S: balk,
 FI: palkki.
 
-Line connecting a series of notes (shorter than a quarter note). The
+Line connecting a series of notes (shorter than a quarter note).  The
 number of beams determines the note value of the connected notes.
 
 @lilypond[quote,notime,relative=2,line-width=13\cm]
@@ -1602,9 +1602,9 @@ S: ackord,
 FI: sointu.
 
 Three or more tones sounding simultaneously.  In traditional European music
-the base chord is a @emph{triad} consisting of two thirds. @emph{Major}
+the base chord is a @emph{triad} consisting of two thirds.  @emph{Major}
 (major + minor third) as well as @emph{minor} (minor + major third) chords
-may be extended with more thirds. Four-tone @emph{seventh chords} and
+may be extended with more thirds.  Four-tone @emph{seventh chords} and
 five-tone @emph{ninth} major chords are most often used as dominants
 (functional harmony).  Chords having no third above the lower notes to
 define their mood are a special case called @q{open chords}.  The lack of
@@ -1792,7 +1792,7 @@ the top line high F:
 
 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
+staff}.  For example, the treble or G clef indicates that the top five lines
 have been selected:
 
 @lilypond[quote]
@@ -2562,7 +2562,7 @@ DK: diatonisk skala,
 S: diatonisk skala,
 FI: diatoninen asteikko.
 
-A scale consisting of 5@w{ }whole tones and 2@w{ }semitones (S). Scales
+A scale consisting of 5@w{ }whole tones and 2@w{ }semitones (S).  Scales
 played on the white keys of a piano keyboard are diatonic.  These scales
 are sometimes called, somewhat inaccurately, @q{church modes}).
 
@@ -4411,28 +4411,28 @@ S: ?,
 FI: käännös.
 
 When a chord sounds with a bass note that differs from the root of the
-chord, it is said to be @emph{inverted}. The number of inversions that a
+chord, it is said to be @emph{inverted}.  The number of inversions that a
 chord can have is one fewer than the number of constituent notes.  For
 example, triads (which have three constituent notes) can have three
 positions, two of which are inversions:
 
 @table @dfn
 @item Root position
-The root note is in the bass, and above that are the third and the fifth. A
+The root note is in the bass, and above that are the third and the fifth.  A
 triad built on the first scale degree, for example, is marked @notation{I}.
 
 @item First inversion
-The third is in the bass, and above it are the fifth and the root. This
+The third is in the bass, and above it are the fifth and the root.  This
 creates an interval of a sixth and a third above the bass note, and so is
-marked in figured Roman notation as @notation{6/3}. This is commonly
+marked in figured Roman notation as @notation{6/3}.  This is commonly
 abbreviated to @notation{I6} (or @notation{Ib}) since the sixth is the
 characteristic interval of the inversion, and so always implies
 @notation{6/3}.
 
 @item Second inversion
-The fifth is in the bass, and above it are the root and the third. This
+The fifth is in the bass, and above it are the root and the third.  This
 creates an interval of a sixth and a fourth above the bass note, and so is
-marked as @notation{I6/4} or @notation{Ic}. Second inversion is the most
+marked as @notation{I6/4} or @notation{Ic}.  Second inversion is the most
 unstable chord position.
 @end table
 
@@ -4534,7 +4534,7 @@ S: ?,
 FI: antaa väristä.
 
 [French: @q{Let vibrate}]  Most frequently associated with harp
-parts. Marked @notation{l.v.} in the score.
+parts.  Marked @notation{l.v.} in the score.
 
 @seealso
 No cross-references.
@@ -4553,7 +4553,7 @@ S: largo,
 FI: largo, hitaasti, leveästi.
 
 [Italian: @q{wide}.] Very slow in tempo, usually combined with great
-expressiveness. @emph{Larghetto} is less slow than largo.
+expressiveness.  @emph{Larghetto} is less slow than largo.
 
 
 @node leading note
@@ -5603,7 +5603,7 @@ FI: usean tahdin mittainen tauko.
 Multi-measure rests are conventionally typeset with a combination of
 longa, breve and whole rests for shorter and a long horizontal bar for
 longer spans of rest, with a number above to indicate the duration (in
-measures) of the rest. The former style is called @q{Kirchenpausen} in
+measures) of the rest.  The former style is called @q{Kirchenpausen} in
 German, as a reminiscence of its use in Renaissance vocal polyphony.
 
 @lilypond[quote,relative=2]
@@ -6318,7 +6318,7 @@ of a more or less pronounced individuality.
 [Italian: past participle of @emph{portare}, @q{to carry}]
 
 A stroke in which each of several notes is separated slightly within a slur,
-without changing the bow's direction. It is used for passages of a
+without changing the bow's direction.  It is used for passages of a
 @notation{cantabile} character.
 
 @seealso
@@ -6506,7 +6506,7 @@ The quality of a triad is determined by the precise arrangement of its
 intervals.  Tertian triads can be described as a series of three notes.  The
 first element is the root note (or simply @q{root}) of the chord, the second
 note is the @q{third} of the chord, and the last note is the @q{fifth} of
-the chord. These are described below:
+the chord.  These are described below:
 
 @multitable {Chord name} {Component intervals} {Example} {C, CM, Cma, Cmaj, CΔ}
 @headitem Chord name
@@ -6530,9 +6530,9 @@ the chord. These are described below:
 There are various types of seventh chords depending on the quality of the
 original chord and the quality of the seventh added.
 
-Five common types of seventh chords have standard symbols. The chord quality
+Five common types of seventh chords have standard symbols.  The chord quality
 indications are sometimes superscripted and sometimes not (e.g. Dm7, Dm^7,
-and D^m7 are all identical). The last three chords are not commonly used
+and D^m7 are all identical).  The last three chords are not commonly used
 except in jazz.
 
 @seealso
index c2a4c072c59ee41a656235f398c2362a4d61894e..106e68d656843b2e0c2256301cd504b0b9b1b4c6 100644 (file)
@@ -699,7 +699,7 @@ scope for mensural notation).
 @cindex rests, ancient
 
 Use the @code{style} property of grob @code{Rest} to select
-ancient rests.   Supported styles are @code{classical},
+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
 like a horizontally mirrored 8th rest.  The @code{mensural} and
index a0dfd6182f8347408f5c45ac5af65b50a4480c9a..6c4e96aadfd36c427bee129ab8b35be4bc8fc48f 100644 (file)
@@ -123,8 +123,8 @@ Contexts are arranged hierarchically:
 @node Score - the master of all contexts
 @unnumberedsubsubsec Score - the master of all contexts
 
-This is the top level notation context. No other context can
-contain a Score context. By default the Score context handles
+This is the top level notation context.  No other context can
+contain a Score context.  By default the Score context handles
 the administration of time signatures and makes sure that items
 such as clefs, time signatures, and key-signatures are aligned
 across staves.
@@ -140,7 +140,7 @@ executed.
 @strong{@emph{StaffGroup}}
 
 Groups staves while adding a bracket on the left side, grouping
-the staves together. The bar lines of the contained staves are
+the staves together.  The bar lines of the contained staves are
 connected vertically.  @code{StaffGroup} only consists of a collection
 of staves, with a bracket in front and spanning bar lines.
 
@@ -2401,7 +2401,7 @@ a
 For some layout objects, the @code{minimum-length} property becomes
 effective only if the @code{set-spacing-rods} procedure is called
 explicitly.  To do this, the @code{springs-and-rods} property should
-be set to @code{ly:spanner::set-spacing-rods}.   For example,
+be set to @code{ly:spanner::set-spacing-rods}.  For example,
 the minimum length of a glissando has no effect unless the
 @code{springs-and-rods} property is set:
 
index acbb4252d558a0be173c22482b0fd2fadef9d48c..4b122bc5bfb9874b4c47a57ec2f5e8d92b43b7f9 100644 (file)
@@ -63,7 +63,7 @@ found at @ref{Input modes}.
 Chords entered using chord mode are music elements, and can be
 transposed just like chords entered using simultaneous music.
 @code{\chordmode} is absolute, as @code{\relative} has no effect
-on @code{chordmode} blocks. However, in @code{\chordmode} the
+on @code{chordmode} blocks.  However, in @code{\chordmode} the
 absolute pitches are one octave higher than in note mode.
 
 Chord mode and note mode can be mixed in sequential music:
@@ -552,7 +552,7 @@ properly if entered using simultaneous music.
 
 There is no unique system for naming chords.  Different musical
 traditions use different names for the same set of chords.  There
-are also different symbols displayed for a given chord name.   The
+are also different symbols displayed for a given chord name.  The
 names and symbols displayed for chord names are customizable.
 
 @cindex jazz chords
@@ -612,7 +612,7 @@ this property.
 @item majorSevenSymbol
 
 This property contains the markup object used to follow the output
-of @code{chordRootNamer} to identify a major 7 chord. Predefined
+of @code{chordRootNamer} to identify a major 7 chord.  Predefined
 options are @code{whiteTriangleMarkup} and
 @code{blackTriangleMarkup}.
 
@@ -623,7 +623,7 @@ options are @code{whiteTriangleMarkup} and
 When the chord name contains additional pitches other than the root
 (e.g., an added bass note), this function is used to print the
 additional pitch.  By default the pitch is printed using
-@code{chordRootNamer}. The @code{chordNoteNamer} property can be set
+@code{chordRootNamer}.  The @code{chordNoteNamer} property can be set
 to a specialized function to change this behavior.  For example, the
 bass note can be printed in lower case.
 
index a673cdd184bd9e53472b6f857be551a310237184..4301839fa55984c728d86f520c76fb17eb91e605 100644 (file)
@@ -412,7 +412,7 @@ c2 \parenthesize <c e g>
 c2 <c \parenthesize e g>
 @end lilypond
 
-Non-note objects may be parenthesized as well. For articulations,
+Non-note objects may be parenthesized as well.  For articulations,
 a hyphen is needed before the @code{\parenthesize} command.
 
 @lilypond[verbatim,quote,relative=2]
index 072aa2e402ec9904bc17014f33fd1561de6aaaf8..897a5c38459363ee479473f3c2c10f9dfd570c5a 100644 (file)
@@ -200,7 +200,6 @@ Music Glossary:
 Learning Manual:
 @rlearning{Placement of objects}.
 
-
 Notation Reference:
 @ref{Text scripts},
 @ref{Direction and placement},
@@ -311,10 +310,33 @@ d2\> d\>
 c1\!
 @end lilypond
 
-Spacer rests are needed to engrave multiple marks on one note.
+A hairpin that is terminated with @code{\!} will end at the
+right edge of the note that has the @code{\!} assigned to it.  In the
+case where it is terminated with the start of another @notation{crescendo}
+or @notation{decrescendo} mark, it will end at the centre of the note
+that has the next @code{\<} or @code{\>} assigned to it.  The next
+hairpin will then start at the right edge of the same note
+instead of the usual left edge had it been terminated with @code{\!}
+before.
+
+@lilypond[verbatim,quote,relative=2]
+c1\< | c4 a c\< a | c4 a c\! a\< | c4 a c a\!
+@end lilypond
+
+Hairpins that are terminated with absolute dynamic marks instead of
+@code{\!} will also be engraved in a similar way.  However, the length
+of the absolute dynamic itself can alter where the preceding hairpin
+ends.
+
+@lilypond[verbatim,quote,relative=2]
+c1\< | c4 a c\mf a | c1\< | c4 a c\ffff a
+@end lilypond
 
 @cindex multiple dynamic marks on one note
 @cindex dynamic marks, multiple on one note
+Spacer rests are needed to engrave multiple marks on one note.
+This is particularly useful when adding a @notation{crescendo} and
+@notation{decrescendo} to the same note:
 
 @lilypond[verbatim,quote,relative=2]
 c4\< c\! d\> e\!
@@ -326,9 +348,9 @@ c4\< c\! d\> e\!
 @funindex \espressivo
 @funindex espressivo
 
-In some situations the @code{\espressivo} articulation mark may be
-the appropriate choice to indicate a crescendo and decrescendo on
-one note:
+The @code{\espressivo} command can be used to indicate a crescendo
+and decrescendo on the same note.  However, be warned that this is
+implemented as an articulation, not a dynamic.
 
 @lilypond[verbatim,quote,relative=2]
 c2 b4 a
index 2626c0cfb72d5e5456e30274ee1bf37fe120dc3f..fdc61caa237bac07beb4ad311fb9ffbc20f727f1 100644 (file)
@@ -226,7 +226,7 @@ If you would like a certain pitch to be played on a specific string
 you can add a string number indication to the pitch name.  If you
 define pitch names and string numbers without a chord construct
 (@code{<>}) the string number indications do not appear in traditional
-notation. It is much more comfortable to define the playing position
+notation.  It is much more comfortable to define the playing position
 by using the value of @code{minimumFret}.  The default value for
 minimumFret is 0.
 
@@ -1536,8 +1536,8 @@ music = \relative c' {
 @end lilypond
 
 Another playing technique (especially used on electric guitars) is
-called @notation{palm mute}. The string is hereby partly muted by the
-palm of the striking hand (hence the name). Lilypond supports
+called @notation{palm mute}.  The string is hereby partly muted by the
+palm of the striking hand (hence the name).  Lilypond supports
 the notation of palm mute-style notes by changing the note head to a
 triangle shape.
 
index 15ad7b4826689de35c6bd04e9d9f45335f1970e3..08d4bf82ba80cb8c714eb6a68c87aea6f1d9c64b 100644 (file)
@@ -34,6 +34,8 @@ these files end with @code{.ly}.
 @menu
 * Structure of a score::
 * Multiple scores in a book::
+* Multiple output files from one input file::
+* Output file names::
 * File structure::
 @end menu
 
@@ -100,6 +102,16 @@ input file.  They may be placed inside or outside a @code{\score}
 block, and inside or outside the single music expression within a
 @code{\score} block.
 
+Remember that even in a file containing only a @code{\score} block, it
+is implicitly enclosed in a \book block.  A \book block in a source
+file produces at least one output file, and by default the name of the
+output file produced is derived from the name of the input file, so
+@file{fandangoforelephants.ly} will produce
+@file{fandangoforelephants.pdf}.
+
+(For more details  about @code{\book} blocks, see
+@ref{Multiple scores in a book},
+@ref{Multiple output files from one input file} @ref{File structure}.)
 
 @seealso
 Learning Manual:
@@ -149,12 +161,7 @@ will normally be typeset in the form of a single output file.
 @}
 @end example
 
-However, if you want multiple output files from the same @code{.ly}
-file, then you can add multiple @code{\book} blocks, where each such
-@code{\book} block will result in a separate output.  If you do not
-specify any @code{\book} block in the file, LilyPond will implicitly
-treat the full file as a single @code{\book} block, see @ref{File
-structure}.  One important exception is within lilypond-book documents,
+One important exception is within lilypond-book documents,
 where you explicitly have to add a @code{\book} block, otherwise only
 the first @code{\score} or @code{\markup} will appear in the output.
 
@@ -209,6 +216,122 @@ title, like the book itself, by specifying a @code{\header} block.
 @}
 @end example
 
+@node Multiple output files from one input file
+@subsection Multiple output files from one input file
+
+If you want multiple output files from the same .ly file, then you can
+add multiple @code{\book} blocks, where each such \book block will
+result in a separate output file. If you do not specify any
+@code{\book} block in the input file, LilyPond will implicitly treat
+the whole file as a single \book block, see @ref{File structure}.
+
+When producing multiple files from a single source file, Lilypond
+ensures that none of the output files from any @code{\book} block
+overwrites the output file produced by a preceding @code{\book} from
+the same input file.
+
+It does this by adding a suffix to the output name for each
+@code{\book} which uses the default output file name derived from the
+input source file.
+
+The default behaviour is to append a version-number suffix for each
+name which may clash, so
+
+@example
+\book @{
+  \score @{ @dots{} @}
+  \layout @{ @dots{} @}
+@}
+\book @{
+  \score @{ @dots{} @}
+  \layout @{ @dots{} @}
+@}
+\book @{
+  \score @{ @dots{} @}
+  \layout @{ @dots{} @}
+@}
+@end example
+
+in source file @file{eightminiatures.ly}
+will produce
+
+@itemize
+@item
+@file{eightminiatures.pdf},
+@item
+@file{eightminiatures-1.pdf} and
+@item
+@file{eightminiatures-2.pdf}.
+@end itemize
+
+@node Output file names
+@subsection Output file names
+
+@funindex \bookOutputSuffix
+@funindex \bookOutputName
+
+Lilypond provides facilities to allow you to control what file names
+are used by the various back-ends when producing output files.
+
+In the previous section, we saw how Lilypond prevents name-clashes when
+producing several ouputs from a single source file.  You also have the
+ability to specify your own suffixes for each @code{\book} block, so
+for example you can produce files called
+@file{eightminiatures-Romanze.pdf}, @file{eightminiatures-Menuetto.pdf}
+and @file{eightminiatures-Nocturne.pdf} by adding a
+@code{\bookOutputSuffix} declaration inside each @code{\book} block.
+
+@example
+\book @{
+  \bookOutputSuffix "Romanze"
+  \score @{ @dots{} @}
+  \layout @{ @dots{} @}
+@}
+\book @{
+  \bookOutputSuffix "Menuetto"
+  \score @{ @dots{} @}
+  \layout @{ @dots{} @}
+@}
+\book @{
+  \bookOutputSuffix "Nocturne"
+  \score @{ @dots{} @}
+  \layout @{ @dots{} @}
+@}
+@end example
+
+You can also specify a different output filename for @code{book} block,
+by using @code{\bookOutputName} declarations
+
+@example
+\book @{
+  \bookOutputName "Romanze"
+  \score @{ @dots{} @}
+  \layout @{ @dots{} @}
+@}
+\book @{
+  \bookOutputName "Menuetto"
+  \score @{ @dots{} @}
+  \layout @{ @dots{} @}
+@}
+\book @{
+  \bookOutputName "Nocturne"
+  \score @{ @dots{} @}
+  \layout @{ @dots{} @}
+@}
+@end example
+
+The file above will produce these output files:
+
+@itemize
+@item
+@file{Romanze.pdf},
+@item
+@file{Menuetto.pdf} and
+@item
+@file{Nocturne.pdf}.
+@end itemize
+
+
 @node File structure
 @subsection File structure
 
@@ -223,7 +346,7 @@ title, like the book itself, by specifying a @code{\header} block.
 A @code{.ly} file may contain any number of toplevel expressions, where a
 toplevel expression is one of the following:
 
-@itemize @bullet
+@itemize
 @item
 An output definition, such as @code{\paper}, @code{\midi}, and
 @code{\layout}.  Such a definition at the toplevel changes the default
@@ -876,13 +999,13 @@ statements of their own.  By default, these second-level
 @code{\include} statements are not interpreted until they have
 been brought into the main file, so the file names they specify
 must all be relative to the directory containing the main file,
-not the directory containing the included file. However,
+not the directory containing the included file.  However,
 this behavior can be changed by passing the option
 @code{-drelative-includes} option at the command line
 (or by adding @code{#(ly:set-option 'relative-includes #t)}
-at the top of the main input file). With @code{relative-includes}
+at the top of the main input file).  With @code{relative-includes}
 set, the path for each @code{\include} command will be taken
-relative to the file containing that command. This behavior is
+relative to the file containing that command.  This behavior is
 recommended and it will become the default behavior in a future
 version of lilypond.
 
@@ -1544,8 +1667,8 @@ of specifying the initial or overall MIDI tempo is described below,
 see @ref{MIDI block}.
 
 Due to some limitations on Windows, the default extension for
-MIDI files on Windows is @code{.mid}. Other operating systems still
-use the extension @code{.midi}. If a different extension is preferred,
+MIDI files on Windows is @code{.mid}.  Other operating systems still
+use the extension @code{.midi}.  If a different extension is preferred,
 insert the following line at the top-level of the input file,
 before the start of any @code{\book}, @code{\bookpart} or @code{\score} blocks:
 
@@ -1719,7 +1842,7 @@ The following items of notation are reflected in the MIDI output:
 
 @itemize
 @item Pitches
-@item Microtones (See @ref{Accidentals}. Rendering needs a
+@item Microtones (See @ref{Accidentals}.  Rendering needs a
 player that supports pitch bend.)
 @item Chords entered as chord names
 @item Rhythms entered as note durations, including tuplets
index b2989fa70ea4031f29c1771734f69ff7c9b29c29..d073804d2b7ec537e013bef59422e6134f99cc31 100644 (file)
@@ -620,9 +620,9 @@ Notation Reference:
 @cindex pedal diagrams, harp
 
 Harps have seven strings per octave that may be sounded at the natural,
-flattened, or sharpened pitch. In lever harps, each string is adjusted
+flattened, or sharpened pitch.  In lever harps, each string is adjusted
 individually, but in pedal harps every string with the same pitch name
-is controlled by a single pedal. From the player's left to right, the
+is controlled by a single pedal.  From the player's left to right, the
 pedals are D, C, and B on the left and E, F, G, and A on the right.
 The position of the pedals may be indicated with text marks:
 
@@ -645,7 +645,7 @@ c!1_\markup { \harp-pedal #"^o--|vv-^" }
 The @code{\harp-pedal} command accepts a string of characters, where
 @code{^} is the highest pedal position (flattened pitch), @code{-} is
 the middle pedal position (natural pitch), @code{v} is the lowest pedal
-position (sharpened pitch), and @code{|} is the divider. A prefixed
+position (sharpened pitch), and @code{|} is the divider.  A prefixed
 @code{o} will circle the following pedal symbol.
 
 @seealso
index 6b58d17b656dd69d4785a64e42d452e0c8d725a4..7fdbe53ae5678b0d7c5b00c5eab17cc2a5dc3fb9 100644 (file)
@@ -18,7 +18,7 @@
 Note for editors and translators: In the following menu, two entries
 are needed to link to a pair of automatically generated sections.
 Please keep them and, if using emacs, do not run
-texinfo-all-menus-update without manually restoring them back. These
+texinfo-all-menus-update without manually restoring them back.  These
 menu entries are:
 
 * Text markup commands::
index dd26226af78447f56b963ea5daa0e78f7fc04d2b..f61283f10ff5c7f3942477c5009cf6ae2f7a310e 100644 (file)
@@ -94,7 +94,7 @@ note names may be found in @ref{Percussion notes}.
 @cindex percussion clef
 
 Note that the normal notation of pitches (such as @code{cis4}) in a
-@code{DrumStaff} context will cause an error message. Percussion clefs
+@code{DrumStaff} context will cause an error message.  Percussion clefs
 are added automatically to a @code{DrumStaff} context but they can also
 be set explicitly.  Other clefs may be used as well.
 
index 527eaa4a6fdcb6b3c96c6d10a0d002a5ca6f472a..793144df09fa76b71f9debe47cce394f74bbe97a 100644 (file)
@@ -916,7 +916,7 @@ This section discusses how to alter the output of pitches.
 @funindex \clef
 @funindex clef
 
-The clef may be altered.  Middle C is shown in every example. The
+The clef may be altered.  Middle C is shown in every example.  The
 following clef names can (but do not need to) be enclosed in quotes.
 
 @lilypond[verbatim,quote,relative=1]
@@ -2625,7 +2625,6 @@ Internals Reference:
 @cindex practice note heads
 @cindex note heads, easy notation
 @cindex easy notation
-@cindex Hal Leonard
 @cindex beginners' music
 @cindex music, beginners'
 @cindex easy play note heads
index 7ffba85d30770dba82a7677ec260d5b18385b487..46726cd0521e7f63fba2f6594f7aad151b7d7028 100644 (file)
@@ -640,7 +640,7 @@ durations, are supported.
 @funindex tremolo
 
 Tremolos can take two forms: alternation between two chords or two
-notes, and rapid repetition of a single note or chord. Tremolos
+notes, and rapid repetition of a single note or chord.  Tremolos
 consisting of an alternation are indicated by adding beams between the
 notes or chords being alternated, while tremolos consisting of the
 rapid repetition of a single note are indicated by adding beams or
index 5bd9010b96759d0eb30573bef5042761a11330ed..9cbad9fba738f1ba65d8f797534eb62336c7dfd6 100644 (file)
@@ -1666,6 +1666,9 @@ c16 c8
 automatic beaming should be switched off with @code{\autoBeamOff}
 and the beams indicated manually.}
 
+@warning{Using @code{@bs{}partcombine} with @code{@bs{}autoBeamOff} can
+produce unintended results.  See the snippet below for more information.}
+
 Beaming patterns that differ from the automatic defaults can be
 created; see @ref{Setting automatic beam behavior}.
 
@@ -1678,6 +1681,7 @@ created; see @ref{Setting automatic beam behavior}.
 
 @snippets
 
+
 @cindex line breaks and beams
 @cindex beams and line breaks
 
@@ -1689,6 +1693,13 @@ created; see @ref{Setting automatic beam behavior}.
 @lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
 {changing-beam-knee-gap.ly}
 
+@cindex \partcombine and \autoBeamOff
+@cindex \autoBeamOff and \partcombine
+
+
+@lilypondfile [verbatim, lilyquote, ragged-right, texidoc, doctitle]
+{partcombine-and-autobeamoff.ly}
+
 
 @seealso
 Notation Reference:
@@ -2726,7 +2737,7 @@ Internals Reference:
 @funindex \grace
 @funindex grace
 
-Grace notes are ornaments that are written out. Grace notes
+Grace notes are ornaments that are written out.  Grace notes
 are printed in a smaller font and take up no logical time
 in a measure.
 
@@ -2795,7 +2806,7 @@ finally at 1/2 of the main note.
 @end lilypond
 
 The space between the main note and the grace note may also be
-specified using spacers. The following example places the grace
+specified using spacers.  The following example places the grace
 note after a space lasting 7/8 of the main note.
 
 @lilypond[quote,verbatim,relative=2]
index bbe2b7ce3c71ed21c81f4376ba38e92444435fbc..529b588522923568eb46ac23ad64c7b83dcf1cb1 100644 (file)
@@ -283,7 +283,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
+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
 voices get stems down, third and fourth voice note heads are
@@ -791,7 +791,7 @@ be ignored.  Likewise, partcombining isn't designed to work with lyrics;
 when one of the voices is explicitly named in order to attach lyrics to
 it, the partcombining stops working.
 
-@code{\partcombine} only observes onset times of notes. It cannot
+@code{\partcombine} only observes onset times of notes.  It cannot
 determine whether a previously started note is playing or not, leading
 to various problems.
 
index d8b2eb703121b56d7e9397ae001b89aa08ebf031..da64448d74b78b10036a5651d65b70cf716b0426 100644 (file)
@@ -38,10 +38,10 @@ staff lines accordingly."
 
 Actually I found, that the @internalsref{StaffSymbol} at line 481
 sends to an incomplete
-documentation. The property staff-space is not explained here. I
+documentation.  The property staff-space is not explained here.  I
 thought Y-extent might be of
 help, but it is in turn explained by x-space which again is
-missing from the list. Who has the
+missing from the list.  Who has the
 knowledge to fix this?
 
 
@@ -216,7 +216,7 @@ present between a title and the staff that follows it;
 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
+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}).
@@ -229,7 +229,7 @@ after-title-spacing = #'((space . 2) (padding . 0.5))
 @end example
 
 
-If a page has a ragged bottom, @var{space} is not stretched. In particular, the
+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},
@@ -249,7 +249,7 @@ the baseline of the title that follows it.  See @var{after-title-spacing}.
 @funindex between-scores-system-spacing
 
 Specifies the spacing between two systems if they are in different scores, but
-there is no title between them. See @var{after-title-spacing}.
+there is no title between them.  See @var{after-title-spacing}.
 
 @item between-system-spacing
 @funindex between-system-spacing
@@ -466,7 +466,7 @@ first system.  Default: @code{0}.
 
 @end table
 
-If some values are not set, defaults will be taken. Their exact
+If some values are not set, defaults will be taken.  Their exact
 value is adjusted, depending on the paper size specified.  Currently,
 the following values are affected by this scaling:
 
@@ -587,7 +587,7 @@ never consider blank pages in the middle of a score.  Default:
 @funindex check-consistency
 
 If set to true, check whether @code{left-margin}, @code{right-margin} and
-@code{line-width} fit each other. Also make sure that their combination
+@code{line-width} fit each other.  Also make sure that their combination
 does not exceed the available @code{paper-width}.  Default: @code{##t}.
 
 @item first-page-number
@@ -597,13 +597,13 @@ The value of the page number on the first page.  Default:
 @code{#1}.
 
 @item max-systems-per-page
-The maximum number of systems that will be placed on a page. This
+The maximum number of systems that will be placed on a page.  This
 is currently supported only by the @code{ly:optimal-breaking} algorithm.
 Default: unset.
 
 @item min-systems-per-page
-The minimum number of systems that will be placed on a page. This
-may cause pages to be overfilled if it is made too large. This is
+The minimum number of systems that will be placed on a page.  This
+may cause pages to be overfilled if it is made too large.  This is
 currently supported only by the @code{ly:optimal-breaking} algorithm.
 Default: unset.
 
@@ -930,11 +930,11 @@ Snippets:
 @cindex line breaks
 @cindex breaking lines
 
-Line breaks are normally determined automatically. They are chosen
+Line breaks are normally determined automatically.  They are chosen
 so that lines look neither cramped nor loose, and consecutive
 lines have similar density.  Occasionally you might want to
 override the automatic breaks; you can do this by specifying
-@code{\break}. This will force a line break at this point.  However,
+@code{\break}.  This will force a line break at this point.  However,
 line breaks can only occur at the end of @q{complete} bars, i.e.,
 where there are no notes or tuplets left @q{hanging} over the bar
 line.  If you want to have a line break where there is no bar line,
@@ -946,13 +946,13 @@ The opposite command, @code{\noBreak}, forbids a line break at the
 bar line where it is inserted.
 
 The most basic settings influencing line spacing are @code{indent}
-and @code{line-width}. They are set in the @code{\layout} block.
+and @code{line-width}.  They are set in the @code{\layout} block.
 They control the indentation of the first line of music, and the
 lengths of the lines.
 
 If @code{ragged-right} is set to true in the @code{\layout} block,
 then systems end at their natural horizontal length, instead of
-being spread horizontally to fill the whole line. This is useful
+being spread horizontally to fill the whole line.  This is useful
 for short fragments, and for checking how tight the natural
 spacing is.
 
@@ -1559,7 +1559,7 @@ to which it does not belong.
 \layout {
   \context {
     \Lyrics
-    % By default, Lyrics are placed close together. Here, we allow them to
+    % By default, Lyrics are placed close together.  Here, we allow them to
     % be stretched more widely.
     \override VerticalAxisGroup
       #'inter-loose-line-spacing #'stretchability = #1000
@@ -1638,7 +1638,7 @@ variables.
 There are two more @code{\paper} block variables that affect vertical
 spacing: if @var{ragged-bottom} is set to @code{##t} then no pages will
 be stretched (which means that neither the space between systems nor the
-space within systems will be stretched). If @var{ragged-last-bottom}
+space within systems will be stretched).  If @var{ragged-last-bottom}
 is set to @code{##t} then the last page will not be stretched.
 
 @seealso
@@ -2480,14 +2480,14 @@ timeline or graphic if we want.
 
 Note that the LilyPond's proportional notation package expects
 that all proportional scores set the SpacingSpanner's
-'uniform-stretching attribute to ##t. Setting
+'uniform-stretching attribute to ##t.  Setting
 proportionalNotationDuration without also setting the
 SpacingSpanner's 'uniform-stretching attribute to ##t will, for
 example, cause Skips to consume an incorrect amount of horizontal
 space.
 
 The SpacingSpanner is an abstract grob that lives in the Score
-context. As with our settings of proportionalNotationDuration,
+context.  As with our settings of proportionalNotationDuration,
 overrides to the SpacingSpanner can occur in any of three
 different places in our input file – in the Score \with block, in
 a Score \context block, or in note entry directly.
@@ -2578,14 +2578,14 @@ property of @code{SpacingSpanner}.  Compare the two scores below:
 @end lilypond
 
 Both scores are proportional, but the spacing in the first score
-is too loose because of the clef change. The spacing of the second
+is too loose because of the clef change.  The spacing of the second
 score remains strict, however, because strict-note-spacing is
 turned on.  Turning on strict-note-spacing causes the width of
 time signatures, key signatures, clefs and accidentals to play no
 part in the spacing algorithm.
 
 In addition to the settings given here, there are other settings
-that frequently appear in proportional scores. These include:
+that frequently appear in proportional scores.  These include:
 
 @itemize
 @item @code{\override SpacingSpanner #'strict-grace-spacing = ##t}
@@ -2654,7 +2654,7 @@ All layout dimensions are displayed in staff-spaces, regardless
 of the units specified in the @code{\paper} or @code{\layout} block.
 In the above example, @code{paper-height} has a value of 59.75
 @code{staff-spaces}, and the @code{staff-size} is 20 points (the
-default value). Note that:
+default value).  Note that:
 
 @multitable {1 staff-space} {staff-size)/4 * (25.4/72.27) mm}
 
@@ -2670,7 +2670,7 @@ default value). Note that:
 
 @noindent
 In this case, one @code{staff-space} is approximately equal to
-1.757mm. Thus the @code{paper-height} measurement of 59.75
+1.757mm.  Thus the @code{paper-height} measurement of 59.75
 @code{staff-spaces} is equivalent to 105 millimeters, the height
 of @code{a6} paper in landscape orientation.  The pairs
 (@var{a},@var{b}) are intervals, where @var{a} is the lower
@@ -2714,7 +2714,7 @@ setting a value, even the same value as the number of systems
 being typeset by default, will sometimes cause more systems to
 be fitted onto each page, as an estimation step is then bypassed,
 giving a more accurate fit to each page.  Also, forcing an actual
-reduction in the number of systems may save a further page. For
+reduction in the number of systems may save a further page.  For
 example, if the default layout has 11 systems, the following
 assignment will force a layout with 10 systems.
 
index 8d37fe33fa1c8b2f83e27c2f98a9c1deaaff2e25..dca7d4245a982c496a0402501a84d3627971632f 100644 (file)
@@ -88,7 +88,7 @@ For details, see @ref{Percussion staves}.
 
 @code{RhythmicStaff} creates a single-line staff that only
 displays the rhythmic values of the input.  Real durations are
-preserved. For details, see @ref{Showing melody rhythms}.
+preserved.  For details, see @ref{Showing melody rhythms}.
 
 @lilypond[verbatim,quote,relative=2]
 \new RhythmicStaff { c4 d e f }
index cdef0fd8413e8ed7f91416fa9937700c3c31c480..09337c43f07d9c44b337c5ec3b48c54301493292 100644 (file)
@@ -167,6 +167,8 @@ e,\stopTextSpan
 
 The line style, as well as the text string, can be defined as an
 object property.  This syntax is described in @ref{Line styles}.
+Text spanners are part of the @code{Dynamics} context; see
+@rinternals{Dynamics}.
 
 
 @funindex \textSpannerUp
@@ -186,16 +188,26 @@ object property.  This syntax is described in @ref{Line styles}.
 @knownissues
 LilyPond is only able to handle one text spanner per voice.
 
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{dynamics-text-spanner-postfix.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{dynamics-custom-text-spanner-postfix.ly}
+
 @seealso
 Notation Reference:
 @ref{Line styles},
 @ref{Dynamics}.
 
 Snippets:
-@rlsr{Text}.
+@rlsr{Text},
+@rlsr{Expressive marks}.
 
 Internals Reference:
-@rinternals{TextSpanner}.
+@rinternals{TextSpanner},
+@rinternals{Dynamics}.
 
 
 @node Text marks
@@ -607,7 +619,7 @@ or dynamics, do not provide all characters, as mentioned in @ref{New
 dynamic marks} and @ref{Manual repeat marks}.
 
 @c \concat is actually documented in Align (it is not
-@c a font-switching command). But we need it here. -vv
+@c a font-switching command).  But we need it here. -vv
 
 When used inside a word, some font-switching or formatting commands
 may produce an unwanted blank space.  This can easily be solved by
@@ -892,7 +904,7 @@ as shown in the following example.
     \line \bold { Acto I }
     \wordwrap \italic {
       (La escena representa el corral de una casa de
-      gitanos en el Albaicín de Granada. Al fondo una
+      gitanos en el Albaicín de Granada.  Al fondo una
       puerta por la que se ve el negro interior de
       una Fragua, iluminado por los rojos resplandores
       del fuego.)
@@ -902,7 +914,7 @@ as shown in the following example.
     \line \bold { Acto II }
     \override #'(line-width . 50)
     \justify \italic {
-      (Calle de Granada. Fachada de la casa de Carmela
+      (Calle de Granada.  Fachada de la casa de Carmela
       y su hermano Manuel con grandes ventanas abiertas
       a través de las que se ve el patio
       donde se celebra una alegre fiesta)
index 86a71118a59faa39a15daa25b38e468d1051ad38..0b2e0b075d2b4d84828bee0c5ba5dc1207763a3e 100644 (file)
@@ -21,36 +21,37 @@ that the lyrics will be aligned with the notes of their melody.
 * Common notation for vocal music::
 * Entering lyrics::
 * Aligning lyrics to a melody::
-* Specific uses of lyrics::
+* Techniques specific to lyrics::
 * Stanzas::
+* Songs::
+* Choral::
+* Opera and stage musicals::
+* Chants psalms and hymns::
+* Ancient vocal music::
+
 @end menu
 
 
 @node Common notation for vocal music
 @subsection Common notation for vocal music
 
-This section discusses issues related to vocal music in general, and
-to some particular styles of vocal music.
+This section and sections 2.1.2 to 2.1.5 discuss issues common to
+all types of vocal music.  Issues specific to certain types of
+vocal music are covered in section 2.1.6 on.
 
 @menu
-* References for vocal music and lyrics::
-* Opera::
-* Song books::
-* Spoken music::
-* Chants::
-* Ancient vocal music::
+* Common references for vocal music::
 @end menu
 
 
-@node References for vocal music and lyrics
-@unnumberedsubsubsec References for vocal music and lyrics
-
-@c TODO: split this section in two parts? -vv
+@node Common references for vocal music
+@unnumberedsubsubsec Common references for vocal music
 
-Various issues may arise when engraving vocal music.  Some of these
-are discussed in this section, while others are explained elsewhere:
+This section indicates where to find details of notation issues
+that may arise in any type of vocal music.
 
 @itemize
+
 @item
 Most styles of vocal music use written text as lyrics.  An introduction
 to this notation is to be found in @rlearning{Setting simple songs}.
@@ -60,89 +61,21 @@ Vocal music is likely to require the use of @code{markup} mode, either
 for lyrics of for other text elements (character's names, etc.).
 This syntax is described in @ref{Text markup introduction}.
 
-@item
-Lead sheets may be printed by combining vocal parts and @q{chord mode};
-this syntax is explained in @ref{Chord notation}.
-
 @item
 @q{Ambitus} may be added at the beginning of vocal staves, as explained
 in @ref{Ambitus}.
 
-@item
-Vocal parts may be printed using traditional clefs, as shown in @ref{Clef}.
-
-@item
-Ancient vocal music is supported, as explained in @ref{Ancient notation}.
 @end itemize
 
 
-@node Opera
-@unnumberedsubsubsec Opera
-
-@c TODO
-TBC
-
-@c add characters names snippet -vv
-
-@node Song books
-@unnumberedsubsubsec Song books
-
-@c TODO
-TBC
-
-@snippets
-@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
-{simple-lead-sheet.ly}
-
-
-@seealso
-Notation Reference:
-@ref{Chord notation}.
-
-
-@node Spoken music
-@unnumberedsubsubsec Spoken music
-@cindex parlato
-@cindex Sprechgesang
-Such effects as @q{parlato} or @q{Sprechgesang} require performers to speak
-without pitch but still with rhythm; these are notated by cross
-note heads, as demonstrated in @ref{Special note heads}.
-
-@c TODO add "marking-notes-on-spoken-parts" snippet -vv
-@c add "showing the rhythm of a melody" snip
-@c add "one staff-line notation"
-@c add "improvisation" ref
-@c add "lyrics independents of notes" ref
-
-@node Chants
-@unnumberedsubsubsec Chants
-
-@c TODO Add text from lsr and -user
-TBC
-
-@node Ancient vocal music
-@unnumberedsubsubsec Ancient vocal music
-
-@c TODO
-TBC
-
-@c Add "Printing both the ancient and the modern clef in vocal music" snippet,
-@c and "Transcription of Ancient music with incipit" snippet. -vv
-
-
-@seealso
-Notation Reference:
-@ref{Ancient notation}.
-
-
 @node Entering lyrics
 @subsection Entering lyrics
 
-@c TODO add one sentence here. -vv
+Lyrics are entered in lyric mode.  This section explains how this
+done.
 
 @menu
 * Lyrics explained::
-* Setting simple songs::
 * Working with lyrics and variables::
 @end menu
 
@@ -301,45 +234,6 @@ Internals Reference:
 @rinternals{LyricSpace}.
 
 
-@c TODO: this title has to be changed (possible confusion with LM) -vv
-@node Setting simple songs
-@unnumberedsubsubsec Setting simple songs
-
-@cindex \addlyrics
-
-The easiest way to add lyrics to a melody is to append
-
-@example
-\addlyrics @{ @var{the lyrics} @}
-@end example
-
-@noindent
-to a melody.  Here is an example,
-
-@lilypond[ragged-right,verbatim,fragment,quote]
-\time 3/4
-\relative c' { c2 e4 g2. }
-\addlyrics { play the game }
-@end lilypond
-
-More stanzas can be added by adding more
-@code{\addlyrics} sections
-
-@lilypond[ragged-right,verbatim,fragment,quote]
-\time 3/4
-\relative c' { c2 e4 g2. }
-\addlyrics { play the game }
-\addlyrics { speel het spel }
-\addlyrics { joue le jeu }
-@end lilypond
-
-The command @code{\addlyrics} cannot handle polyphony settings.  For these
-cases you should use @code{\lyricsto} and @code{\lyricmode}, as will be
-introduced in @ref{Lyrics explained}.
-
-@c TODO: one additional section may be needed here,
-@c such as "advanced lyric syntax" or whatever -vv
-
 @node Working with lyrics and variables
 @unnumberedsubsubsec Working with lyrics and variables
 
@@ -403,7 +297,7 @@ A comment is in tracker waiting for response ---FV
 
 
 Be careful when defining a variable with lyrics that creates a new
-context, for example, using the deprecated @code{\lyrics} command. See
+context, for example, using the deprecated @code{\lyrics} command.  See
 the next erroneous example:
 
 @example
@@ -532,6 +426,8 @@ The following example uses different commands for entering lyrics.
 The second stanza is not properly aligned because the durations
 were not specified.  A solution for that would be to use @code{\lyricsto}.
 
+@cindex \addlyrics
+
 The @code{\addlyrics} command is actually just a convenient way
 to write a more complicated LilyPond structure that sets up the
 lyrics.
@@ -549,6 +445,29 @@ is the same as
 \new Lyrics \lyricsto "blah" @{ LYRICS @}
 @end example
 
+Here is an example,
+
+@lilypond[ragged-right,verbatim,fragment,quote]
+\time 3/4
+\relative c' { c2 e4 g2. }
+\addlyrics { play the game }
+@end lilypond
+
+More stanzas can be added by adding more
+@code{\addlyrics} sections
+
+@lilypond[ragged-right,verbatim,fragment,quote]
+\time 3/4
+\relative c' { c2 e4 g2. }
+\addlyrics { play the game }
+\addlyrics { speel het spel }
+\addlyrics { joue le jeu }
+@end lilypond
+
+The command @code{\addlyrics} cannot handle polyphony settings.
+For these cases you should use @code{\lyricsto} and
+@code{\lyricmode}, for details see@ref{Lyrics explained}.
+
 @node Manual syllable durations
 @unnumberedsubsubsec Manual syllable durations
 
@@ -653,12 +572,12 @@ for every extra note that has to be added to the melisma.
 @c duplicated: TODO fix
 Additionally, you can make an extender line to be typeset to indicate
 the melisma in the score, writing a double underscore next to the
-first syllable of the melisma. This example shows the three elements
+first syllable of the melisma.  This example shows the three elements
 that are used for this purpose (all of them surrounded by spaces):
 double hyphens to separate syllables in a word, underscores to add
 notes to a melisma, and a double underscore to put an extender line.
 
-@c wrong: extender line only on last syllable of a word. Change example
+@c wrong: extender line only on last syllable of a word.  Change example
 @lilypond[relative=1,verbatim,fragment,quote]
 { \set melismaBusyProperties = #'()
  c d( e) f f( e) e e  }
@@ -801,8 +720,8 @@ Internals Reference:
 TBC
 
 
-@node Specific uses of lyrics
-@subsection Specific uses of lyrics
+@node Techniques specific to lyrics
+@subsection Techniques specific to lyrics
 
 @c TODO This whole section is to be reorganized. -vv
 
@@ -814,7 +733,7 @@ differing ways.  Such variations can still be captured with
 * Divisi lyrics::
 * Lyrics independent of notes::
 * Spacing out syllables::
-* Centering lyrics between staves::
+* Placement of lyrics between staves::
 @end menu
 
 
@@ -897,7 +816,7 @@ lyr = \lyricmode { I like my cat! }
 
 This method is recommended only if the music in the @code{Devnull}
 context does not contain melismata.  Melismata are defined by the
-@code{Voice} context. Connecting lyrics to a @code{Devnull} context
+@code{Voice} context.  Connecting lyrics to a @code{Devnull} context
 makes the voice/lyrics links to get lost, and so does the info on
 melismata.  Therefore, if you link lyrics to a @code{Devnull} context,
 the implicit melismata get ignored.
@@ -992,10 +911,11 @@ To make lyrics avoid bar lines as well, use
 @end ignore
 
 
-@node Centering lyrics between staves
-@unnumberedsubsubsec Centering lyrics between staves
+@node Placement of lyrics between staves
+@unnumberedsubsubsec Placement of lyrics between staves
 
 @c TODO Add text from -user
+@c TODO Add new spacing properties, centering lyrics, etc
 TBC
 
 @node Stanzas
@@ -1403,5 +1323,349 @@ Internals Reference:
 @rinternals{StanzaNumber}.
 
 
+@node Songs
+@subsection Songs
+
+@menu
+* References for songs::
+* Lead sheets::
+@end menu
+
+@node References for songs
+@unnumberedsubsubsec References for songs
+
+@c TODO chords, setting simple songs (LM), stanzas
+TBC
+
+@node Lead sheets
+@unnumberedsubsubsec Lead sheets
+
+Lead sheets may be printed by combining vocal parts and @q{chord mode};
+this syntax is explained in @ref{Chord notation}.
+
+@snippets
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{simple-lead-sheet.ly}
+
+@seealso
+Notation Reference:
+@ref{Chord notation}.
+
+
+@node Choral
+@subsection Choral
+
+@cindex anthems
+@cindex part songs
+@cindex oratorio
+@cindex SATB
+
+This section discusses notation issues that relate most directly
+to choral music.  This includes anthems, part songs, oratorio,
+etc.
+
+@menu
+* References for choral::
+* Score layouts for choral::
+@end menu
+
+@node References for choral
+@unnumberedsubsubsec References for choral
+
+Choral music is usually notated on two, three or four staves within
+a @code{ChoirStaff} group.  Accompaniment, if required, is placed
+beneath in a @code{PianoStaff} group, which is usually reduced in
+size for @emph{a capella} choral works.  The notes for each vocal
+part are placed in a @code{Voice} context, with each either on a
+staff of its own or grouped in pairs on a single staff.
+
+Words are placed in @code{Lyrics} contexts, either underneath each
+corresponding music staff, or one above and one below the music
+staff if this contains the music for two parts.
+
+Several common topics in choral music are described fully elsewhere:
+
+@itemize
+
+@item
+An introduction to creating an SATB vocal score can be found in
+the Learning Manual, see @rlearning{Four-part SATB vocal score}.
+
+@item
+Several templates suitable for various styles of choral music can
+also be found in the Learning Manual, see
+@rlearning{Vocal ensembles}.
+
+@item
+For information about @code{ChoirStaff} and @code{PianoStaff} see
+@ref{Grouping staves}.
+
+@item
+General information about entering the words (i.e. @qq{lyrics}) to
+vocal music is described in sections 2.1.2 to 2.1.5 of this manual.
+All these sections are relevant to choral music.
+
+@item
+Shape noteheads, as used in Sacred Harp and similar notation, are
+described in @ref{Shape note heads}.
+
+@end itemize
+
+@seealso
+Learning Manual:
+@rlearning{Four-part SATB vocal score},
+@rlearning{Vocal ensembles}.
+
+Notation Reference:
+@ref{Grouping staves},
+@ref{Context layout order},
+@ref{Shape note heads}.
+
+Internals Reference:
+@rinternals{ChoirStaff},
+@rinternals{Lyrics},
+@rinternals{PianoStaff}.
+
+@node Score layouts for choral
+@unnumberedsubsubsec Score layouts for choral
+
+Choral music containing four staves, with or without piano
+accompaniment, is usually laid out with two systems per page.
+Depending on the page size, achieving this may require changes
+to several default settings.  The following settings should be
+considered:
+
+@itemize
+
+@item
+The global staff size can be modified to change the overall size
+of the elements of the score.  See @ref{Setting the staff size}.
+
+@item
+The distances between the systems, the staves and the lyrics can
+all be adjusted independently.  See @ref{Vertical spacing}.
+
+@item
+Setting @code{annotate-spacing = ##t} in the layout block will
+display the dimensions of the vertical layout variables.  This
+may help in adjusting them.  For details, see
+@ref{Displaying spacing}.
+
+@item
+Other possibilities for fitting the music onto fewer pages are
+described in @ref{Changing spacing}.
+
+@end itemize
+
+If the number of systems per page changes from one to two it is
+customary to indicate this with a system separator mark between
+the two systems.  By default the system separator is blank.  It
+may be activated with
+
+@example
+\paper @{
+  system-separator-markup = \slashSeparator
+@}
+@end example
+
+@noindent
+For details of this and other page formatting properties, see
+@ref{Page formatting}.
+
+Dynamic markings by default are placed below the staff, but in
+choral music they are often placed above the staff in order to
+avoid the lyrics.  The predefined command @code{\dynamicUp} does
+this for the dynamic markings in a single @code{Voice} context.
+To place all dynamic markings in the score above their respective
+staves use the following in a @code{\layout} block within the
+@code{\score} block:
+
+@example
+\layout @{
+  \context @{
+    \Score
+    \override DynamicText #'direction = #UP
+    \override DynamicLineSpanner #'direction = #UP
+  @}
+@}
+@end example
+
+@predefined
+@code{\dynamicUp}.
+
+@seealso
+Notation Reference:
+@ref{Setting the staff size},
+@ref{Vertical spacing},
+@ref{Displaying spacing},
+@ref{Changing spacing},
+@ref{Score layout},
+@ref{Using an extra voice for breaks},
+@ref{Page formatting}.
+
+Internals Reference:
+@rinternals{VerticalAxisGroup},
+@rinternals{StaffGrouper}.
+
+
+@node Opera and stage musicals
+@subsection Opera and stage musicals
+
+@menu
+* References for opera and stage musicals::
+* Spoken music::
+* Dialogue over music::
+@end menu
+
+@node References for opera and stage musicals
+@unnumberedsubsubsec References for opera and stage musicals
+
+@c TODO Choral, cues, character names, French staves
+@c vocal/conductor scores
+@c add characters names snippet -vv
+
+TBC
+
+@node Spoken music
+@unnumberedsubsubsec Spoken music
+
+@cindex parlato
+@cindex Sprechgesang
+Such effects as @q{parlato} or @q{Sprechgesang} require performers to speak
+without pitch but still with rhythm; these are notated by cross
+note heads, as demonstrated in @ref{Special note heads}.
+
+@c TODO add "marking-notes-on-spoken-parts" snippet -vv
+@c add "showing the rhythm of a melody" snip
+@c add "one staff-line notation"
+@c add "improvisation" ref
+@c add "lyrics independents of notes" ref
+
+@node Dialogue over music
+@unnumberedsubsubsec Dialogue over music
+
+TBC
+
+
+@node Chants psalms and hymns
+@subsection Chants psalms and hymns
+
+@cindex chants
+@cindex psalms
+@cindex hymns
+@cindex religious music
+
+The music and words for chants, psalms and hymns usually follow a
+well-established format in any particular church.  Although the
+formats may differ from church to church the type-setting problems
+which arise are broadly similar, and are covered in this section.
+
+@menu
+* References for chants and psalms::
+* Setting a chant::
+* Pointing a psalm::
+* Partial measures in hymn tunes::
+@end menu
+
+@node References for chants and psalms
+@unnumberedsubsubsec References for chants and psalms
+
+Typesetting Gregorian chant in various styles of ancient notation
+is described in @ref{Ancient notation}.
+
+Modern chant settings use modern notation with varying numbers of
+elements taken from ancient notation.  Some of the elements and
+methods to consider are these:
+
+@itemize
+
+@item
+Chants often use quarter notes without stems to indicate the pitch,
+with the rhythm being taken from the spoken rhythm of the words.  To
+remove the stem set the @code{transparent} property of the
+@code{Stem} grob to @code{#t}.  See
+@rlearning{Visibility and color of objects} and
+@ref{Visibility of objects}.  An alternative is set the
+@code{length} property to @code{0}.
+
+@item
+Chants usually omit the bar lines or use shortened or dotted bar
+lines to indicate pauses in the music.  To omit bar lines
+completely use @code{\cadenzaOn} or remove the @code{Bar_engraver}.
+See @ref{Unmetered music} and @ref{Modifying context plug-ins}.
+
+@item
+To use modified bar lines see the @emph{Bar lines} section in
+@ref{Bars}.  Alternatively, the correct Gregorian chant notation
+for pauses or rests in the music are described in @emph{Divisiones}
+in @ref{Typesetting Gregorian chant}.
+
+@item
+Chants usually omit the time signature and often omit the clef too.
+To omit these remove the @code{Time_signature_engraver} and
+@code{Clef_engraver} from the @code{Staff} context respectively.
+For details, see @ref{Modifying context plug-ins}.
+
+@end itemize
+
+@seealso
+Learning Manual:
+@rlearning{Visibility and color of objects}.
+
+Notation reference:
+@ref{Ancient notation},
+@ref{Visibility of objects},
+@ref{Bars},
+@ref{Unmetered music},
+@ref{Modifying context plug-ins},
+@ref{Typesetting Gregorian chant}.
+
+@node Setting a chant
+@unnumberedsubsubsec Setting a chant
+
+Some approaches to setting a chant are shown in the following
+snippets.
+
+@snippets
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{chant-or-psalms-notation.ly}
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{ancient-notation-template----modern-transcription-of-gregorian-music.ly}
+
+
+@node Pointing a psalm
+@unnumberedsubsubsec Pointing a psalm
+
+TBC
+
+@node Partial measures in hymn tunes
+@unnumberedsubsubsec Partial measures in hymn tunes
+
+Hymn tunes frequently start and end every line of music with
+partial measures so that each line of music corresponds exactly
+with a line of text.  This requires a @code{\partial} command at
+the start of the music and @code{\bar "|"} or @code{\bar "||"}
+commands at the end of each line.
+
+@lilypondfile[verbatim,lilyquote,ragged-right,texidoc,doctitle]
+{hymn-template.ly}
+
+
+@node Ancient vocal music
+@subsection Ancient vocal music
+
+Ancient vocal music is supported, as explained in @ref{Ancient notation}.
+
+@c TODO
+
+@c Add "Printing both the ancient and the modern clef in vocal music" snippet,
+@c and "Transcription of Ancient music with incipit" snippet. -vv
+
+@seealso
+Notation Reference:
+@ref{Ancient notation}.
+
+
 
 
index f7d6b8b05a7ae18d6195630d140a1e746213e1fb..3ad57d712a63fec76ed3a22c1b5eba769a644400 100644 (file)
@@ -20,6 +20,7 @@ writing for winds.
 @menu
 * Common notation for wind instruments::
 * Bagpipes::
+* Woodwinds::
 @end menu
 
 @node Common notation for wind instruments
@@ -48,7 +49,7 @@ staccato are usually shown by articulation marks, sometimes combined
 with slurs, see @ref{Articulations and ornamentations} and @ref{List of
 articulations}.
 @item Flutter tonguing is usually indicated by placing a tremolo mark
-and a text markup on the note. See @ref{Tremolo repeats}.
+and a text markup on the note.  See @ref{Tremolo repeats}.
 @end itemize
 
 There are also other aspects of musical notation that can apply to wind
@@ -58,7 +59,7 @@ instruments:
 @item Many wind instruments are transposing instruments, see
 @ref{Instrument transpositions}.
 @item The slide glissando are characteristic of the trombone, but other
-winds may perform keyed or valved glissandi. See @ref{Glissando}.
+winds may perform keyed or valved glissandi.  See @ref{Glissando}.
 @item Harmonic series glissandi, which are possible on all brass
 instruments but common for French Horns, are usually written out as
 @ref{Grace notes}.
@@ -66,11 +67,11 @@ instruments but common for French Horns, are usually written out as
 and doits}.
 @item Key slaps or valve slaps are often shown by the @code{cross} style
 of @ref{Special note heads}.
-@item Woodwinds can overblow low notes to sound harmonics. These are
-shown by the @code{flageolet} articulation. See @ref{List of articulations}.
+@item Woodwinds can overblow low notes to sound harmonics.  These are
+shown by the @code{flageolet} articulation.  See @ref{List of articulations}.
 @item The use of brass mutes is usually indicated by a text markup, but
 where there are many rapid changes it is better to use the
-@code{stopped} and @code{open} articulations. See @ref{Articulations and
+@code{stopped} and @code{open} articulations.  See @ref{Articulations and
 ornamentations} and @ref{List of articulations}.
 @item Stopped horns are indicated by the @code{stopped} articulation.
 See @ref{Articulations and ornamentations}.
@@ -103,7 +104,11 @@ Snippets:
 @unnumberedsubsubsec Fingerings
 
 All wind instruments other than the trombone require the use of several
-fingers to produce each pitch.
+fingers to produce each pitch.  Some fingering helps are shown in
+the snippets below.
+
+Woodwind diagrams can be produced and are described in
+@ref{Woodwind diagrams}.
 
 @snippets
 
@@ -115,6 +120,9 @@ fingers to produce each pitch.
 
 @seealso
 
+Notation Reference:
+@ref{Woodwind diagrams}.
+
 Snippets:
 @rlsr{Winds}.
 
@@ -233,3 +241,170 @@ notation.
 
 @seealso
 @rlsr{Winds}.
+
+@node Woodwinds
+@subsection Woodwinds
+
+This section describes notation specifically for woodwinds.
+
+@menu
+* Woodwind diagrams::
+@end menu
+
+@node Woodwind diagrams
+@subsubsection Woodwind diagrams
+
+Woodwind diagrams can be used to indicate the fingering to be used
+to play specific notes.  Woodwind diagrams are available for most woodwind
+instruments.
+
+Woodwind diagrams are available for the following instruments:
+
+@itemize
+@item piccolo
+@item flute
+@item oboe
+@item clarinet
+@item bass clarinet
+@item saxophone
+@item basson
+@item contrabassoon
+@end itemize
+
+@noindent
+The diagrams and the scheme instrument names are shown in the snippet below.
+
+Woodwind diagrams are created as markups:
+
+
+@lilypond[verbatim, quote, relative=2]
+c1^ \markup \woodwind-diagram #'piccolo #'((lh . (gis))
+                                           (cc . (one three))
+                                           (rh . (ees)))
+@end lilypond
+
+Keys can be open, partially-covered, ring-depressed, or fully covered:
+
+@lilypond [verbatim, quote, relative=2]
+\textLengthOn
+c1^ \markup \center-column {
+  "one quarter"
+  \woodwind-diagram #'flute #'((cc . (one1q))
+                                  (lh . ())
+                                  (rh . ()))
+}
+c1^ \markup \center-column {
+  "one half"
+  \woodwind-diagram #'flute #'((cc . (one1h))
+                                  (lh . ())
+                                  (rh . ()))
+}
+c1^ \markup \center-column {
+  "three quarter"
+  \woodwind-diagram #'flute #'((cc . (one3q))
+                                  (lh . ())
+                                  (rh . ()))
+}
+c1^ \markup \center-column {
+  "ring"
+  \woodwind-diagram #'flute #'((cc . (oneR))
+                                  (lh . ())
+                                  (rh . ()))
+}
+c1^ \markup \center-column {
+  "full"
+  \woodwind-diagram #'flute #'((cc . (oneF two))
+                                  (lh . ())
+                                  (rh . ()))
+}
+@end lilypond
+
+Trills are indicated in the woodwind diagrams as shaded keys:
+
+@lilypond [verbatim, quote, relative=2]
+c1^ \markup \woodwind-diagram #'bass-clarinet
+                              #'((cc . (threeT four))
+                                 (lh . ())
+                                 (rh . (b fis)))
+@end lilypond
+
+A variety of trills can be displayed:
+
+@lilypond [verbatim, quote, relative=2]
+\textLengthOn
+c1^ \markup \center-column {
+  "one quarter to ring"
+  \woodwind-diagram #'flute #'((cc . (one1qTR))
+                                  (lh . ())
+                                  (rh . ()))
+}
+c1^ \markup \center-column {
+  "ring to shut"
+  \woodwind-diagram #'flute #'((cc . (oneTR))
+                                  (lh . ())
+                                  (rh . ()))
+}
+c1^ \markup \center-column {
+  "ring to open"
+  \woodwind-diagram #'flute #'((cc . (oneRT))
+                                  (lh . ())
+                                  (rh . ()))
+}
+c1^ \markup \center-column {
+  "open to shut"
+  \woodwind-diagram #'flute #'((cc . (oneT))
+                                  (lh . ())
+                                  (rh . ()))
+}
+c1^ \markup \center-column {
+  "one quarter to three quarters"
+  \woodwind-diagram #'flute #'((cc . (one1qT3q))
+                                  (lh . ())
+                                  (rh . ()))
+}
+@end lilypond
+
+The list of all possible keys and settings for a given instrument
+can be displayed on the console or in the log file, although they
+will not show up in the music output:
+
+@lilypond[verbatim, quote]
+
+#(print-keys-verbose 'flute)
+
+@end lilypond
+
+New diagrams can be created by following the patterns in
+@file{scm/define-woodwind-diagrams.scm} and
+@file{scm/display-woodwind-diagrams.scm}.  However, this will
+require Scheme ability and may not be accessible to all users.
+
+@predefined
+@endpredefined
+
+@snippets
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{woodwind-diagrams-listing.ly}
+
+@lilypondfile[verbatim, lilyquote, texidoc, doctitle]
+{graphical-and-text-woodwind-diagrams.ly}
+
+@lilypondfile[verbatim, lilyquote, texidoc, doctitle]
+{changing-the-size-of-woodwind-diagrams.ly}
+
+@lilypondfile[verbatim, lilyquote, texidoc, doctitle]
+{woodwind-diagrams-key-lists.ly}
+
+@seealso
+
+Installed Files:
+@file{scm/define-woodwind-diagrams.scm},
+@file{scm/display-woodwind-diagrams.scm}.
+
+Snippets: @rlsr{Winds}.
+
+Internals Reference:
+@rinternals{TextScript},
+@rinternals{instrument-specific-markup-interface}.
+
+@knownissues
index 00a46bb6d18abd19b7c476209d3686358535a8a6..c2fe01d4f2d0846603ce024935c6110bb648de1e 100644 (file)
@@ -28,7 +28,7 @@ music.
 
 @menu
 * References for Arabic music::
-* Arabic note names ::
+* Arabic note names::
 * Arabic key signatures::
 * Arabic time signatures::
 * Arabic music example::
@@ -367,7 +367,7 @@ related through common lower tetra chords, or through modulation.
 @item
 There is not a complete consistency, sometimes even in the same
 text on how key signatures for particular maqams should be
-specified. It is common, however, to use a key signature per
+specified.  It is common, however, to use a key signature per
 group, rather than a different key signature for each different
 maqam.
 
index 258a35882c4ae5294f9cee18cae60e6c3a12225d..b44f4c5a901963b59f290a0e8f4680305461e5c1 100644 (file)
@@ -9,7 +9,7 @@
 @macro manualIntro
 This document shows a selected set of LilyPond snippets from the
 @uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}
-(LSR). It is in the public domain.
+(LSR).  It is in the public domain.
 
 We would like to address many thanks to Sebastiano Vigna for maintaining
 LSR web site and database, and the University of Milano for hosting LSR.
index 887d00f9fcdb1b340c15102aebf1b053f62ec4c0..36127b7cfcb8b1c024a345f40e74d4e1e2d04b6b 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "keyboards"
@@ -15,6 +15,7 @@ símbolos modificando los argumentos de @code{\\raise}.
 "
   doctitlees = "Símbolos de acordeón discanto"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   doctitlede = "Symbole für Akkordeon-Diskantregister"
   texidocde = "
@@ -35,10 +36,10 @@ vertical placement of the symbols can be tweaked by changing the
 } % begin verbatim
 
 discant = \markup {
-  \musicglyph #"accordion.accDiscant"
+  \musicglyph #"accordion.discant"
 }
 dot = \markup {
-  \musicglyph #"accordion.accDot"
+  \musicglyph #"accordion.dot"
 }
 
 \layout { ragged-right = ##t }
index fedd7cbdce28ab18f7eee6d92d9fc9be832032ac..c80acd4ce39eaa828ae080e502504a4c02678905 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "chords, ancient-notation, contexts-and-engravers"
@@ -23,6 +23,7 @@ truco se aplique a toda la partitura.
 "
   doctitlees = "Añadir un bajo cifrado encima o debajo de las notas"
 
+
 %% Translation of GIT committish: 05624d5147843d2fcbd6e4e126f1fd43142ac6e5
   doctitlefr = "Ajout d'une basse chiffrée au-dessus ou au-dessous des notes"
 
index e8dcbda5ef50268c950fbab8255e8f98078b6b73..8ea0118ded66a3eaa59c270dd8836f5251bc4284 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches, staff-notation, vocal-music"
@@ -13,6 +13,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Ambitus können pro Stimme gesetzt werden. In diesem Fall müssen sie
@@ -20,6 +21,7 @@ manual verschoben werden, um Zusammenstöße zu verhindern.
 
 "
 doctitlede = "Ambitus pro Stimme hinzufügen"
+
 %% Translation of GIT committish: 58a29969da425eaf424946f4119e601545fb7a7e
   texidocfr = "
 L'@code{ambitus} peut être individualisé par voix.  Il faut en pareil
index 68ddedbf01357974a16547e22dca01ba7af3bd73..9f3e5babeccc3c54171bdadb0b1b8b65c318084d 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation, contexts-and-engravers, breaks"
index 991673629d7b5b4d8b8b7b522ffff9f5dcb89d0c..f1643c939817723a4b3dd71f2009318126914f24 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation, contexts-and-engravers"
@@ -24,14 +24,19 @@ piece.
 
 \score {
   <<
-    \new Staff \relative c'' { c1 | c | c | c | c }
+    \new Staff \relative c'' {
+      c1 | c | c | c | c
+    }
     \new StaffGroup \relative c'' {
       \new Staff {
-        c1 | c <<
-          c1
+        c1 | c
+        <<
+          {
+            c1 | d
+          }
           \new Staff {
             \once \override Staff.TimeSignature #'stencil = ##f
-            c1
+            c1 | b
           }
         >>
         c1
index efb573f26a5587c0c1c271ebe3fe1dd5e7848cc0..dd1ef9db88060e02aa7a978ff64ff872f3328341 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "chords"
@@ -15,6 +15,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Um Taktstriche in einem @code{ChordNames}-Kontext anzeigen zu lassen, muss der
index f3eaba662394de1e29a61cbef6866a01691a6918..dd247f279641c3656c6e8812337b1f17d29737d6 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, expressive-marks"
index 6c874ea684122ad5d902fe0efa0fbf80dee5213a..75a2cffa41b868cb3b0ec56c14cf08cb6bc47068 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, percussion"
@@ -19,6 +19,7 @@ de líneas.
 "
   doctitlees = "Escritura de partes de percusión"
 
+
 %% Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea
   texidocfr = "
 Grâce à la puissance des outils préconfigurés tels que la fonction
index c6eb77d4e298b10fce3ee2891ce1e42310ca87db..41dabea5a661b457cea0a47632e05a728cf75493 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "editorial-annotations, fretted-strings"
index 9444de62d720996fe96bb35d22d3fbbe65b3ac9c..d6a5253b9e0d06839e0fbe9bb0388c174dbdb729 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.17
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 1f01fcf6776132edb0a85efcd773d0901170ecd6..8ace4e152e877c52d2862d933df231886bdc5c65 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation, vocal-music"
index 1d3dfe58b5f84c675f8b4fe6010786393bd98154..95ffb0955f1350cb23652342e0db86b613fc59a4 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks"
index e163f342ecfaa66b03baabac315843b59d34cbc6..ebacb4be4b7f42c5d40617357547fb1d1ecd8c69 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text, titles"
@@ -13,6 +13,7 @@ actual a una partitura.
 "
   doctitlees = "Añadir la fecha actual a una partitura"
 
+
 %% Translation of GIT committish: 05624d5147843d2fcbd6e4e126f1fd43142ac6e5
   texidocfr = "
 Avec un peu de code Scheme, voici comment ajouter facilement
index 20233e538619c9ad2a46a275c4c9ed50c21f1dd0..d0eab4521e8cd5b0fde811c710c212730155dcff 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "repeats"
@@ -18,6 +18,7 @@ también el fragmento de código @qq{Volta multi staff}.
 "
   doctitlees = "Añadir corchetes de primera y segunda vez a más pentagramas"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Der @code{Volta_engraver} befindet sich im @code{Score}-Kontext und Klammern
@@ -28,6 +29,7 @@ das \"Volta multi staff\"-Schnipsel.
 
 "
   doctitlede = "Volta-Klammern zu zusätzlichen Systemen hinzufügen"
+
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 D'ordinaire, le graveur @code{Volta_engraver} réside dans le contexte
index 1f6b3cdbef0d7163698f8adaebda27440306ed96..3d8255ecb31e175adb3ddd5066506557e9492762 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "simultaneous-notes"
@@ -16,6 +16,7 @@ variable que utiliza la función de Scheme @code{context-spec-music}.
 
 "
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Ein einigen Fällen von sehr komplexer polyphoner Musik sind zusätzliche
@@ -26,6 +27,7 @@ Stimmen definiert werden, indem eine Variable mit der Funktion
 
 "
   doctitlede = "Zusätzliche Stimmen um Zusammenstöße zu vermeiden"
+
 %% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c
   texidocfr = "
 Dans certains cas de musique polyphonie complexe, une voix
index 6fcda7b6c825422b916000baa638c8b4a12ee699..e23c509c8cba9de1a27399308f5f0b87f4c55f58 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
index 9d55482f52ac0daa72b1a81d1ebab2f6c4e03a01..3055669397d75046a9cf121ed932df659f9c11e8 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.16
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 5791469ba7db68058b058653eba2f18c7293b338..23e2331288ae7956d81addaa4b570e0285164ca1 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks"
@@ -15,6 +15,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Die @code{shortest-duration-space}-Eigenschaft kann verändert werden, um
@@ -22,6 +23,7 @@ das Aussehen von unbestimmten Glissandi anzupassen.
 
 "
   doctitlede = "Das Aussehen von unbestimmten Glissandi anpassen"
+
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 La propriété @code{shortest-duration-space} peut devoir être retouchée
index b7f9371b6c37cfbe2f51e915d036c4c66ea8fefd..7c61ae7576a00d1417ef18591fab593a9a4c28f9 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text, paper-and-layout, titles"
index c38600502a6d8fa5b502b0bb38833bb06dd78312..6cae9d078ff3198cd465e9fec2ba3894fb93942d 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
@@ -20,6 +20,7 @@ alineados por la izquierda con ella.
 
   doctitlees = "Alineación de los números de compás"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Taktnummern sind standardmäßig links an ihrem Ursprungsobjet
@@ -33,6 +34,7 @@ Taktstrich gesetzt werden.
   doctitlede = "Taktnummern ausrichten"
 
 
+
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Les numéros de mesure s'alignent en principe sur la droite de l'objet
index fa12277de1085c4a7e78bdcd0d03e766c52c3151..ea6114978fc566525582a511dc434a53edabe8b1 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text"
@@ -22,6 +22,7 @@ debe hacer este ajuste para todos los pentagramas).
 "
   doctitlees = "Alinear marcas con varios objetos de notación"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Wenn angegeben, können Textzeichen auch an anderen Objekten als Taktstrichen
@@ -38,6 +39,7 @@ diese Einstellung für alle Systeme gemacht werden.
 "
 
   doctitlede = "Zeichen an verschiedenen Notationsobjekten ausrichten"
+
 %% Translation of GIT committish: 548ef200973bd3d46ea75c5498461d9e5f168334
   texidocfr = "
 Les indications textuelles peuvent s'aligner par rapport à d'autres
index df164c069c598891f54aeb814193253b9d6ca351..2e467c5d650cadf43158176f40723dd8f026a83e 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text"
index 8de9ebf7aa7fa6763d049b2147295f213ab813b3..4fa4f6940ddd36146c0387f844725e85af112ec1 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "editorial-annotations, fretted-strings, spacing"
@@ -18,6 +18,7 @@ aunque sea una sola nota.
 "
   doctitlees = "Permitir que las digitaciones se impriman dentro del pentagrama"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Normalerweise werden vertikal orientierte Fingersatzzahlen außerhalb des Systems
@@ -25,6 +26,7 @@ gesetzt.  Das kann aber verändert werden.
 
 "
   doctitlede = "Fingersatz auch innerhalb des Systems setzen"
+
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 L'empilement des indications de doigté se fait par défaut à l'extérieur
index d8cc5a864356e1a2c42b222021e834d84466f502..36c5bf0b9539ea1e176a2edee0f280c7f38dfa1c 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches, tweaks-and-overrides"
index 3330230c41c6541bdad3c5349de2372bb1edec24..b0c9cf070de2eab0f5181f4c6b76749421f820e3 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches, vocal-music"
@@ -15,6 +15,7 @@ pentagramas con varias voces.
 
 "
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Indem man den @code{Ambitus_engraver} im @code{Staff}-Kontext
@@ -22,6 +23,7 @@ hinzufügt, erhält man einen einzigen Ambitus pro System, auch in dem
 Fall, dass mehrere Stimmen sich im gleichen System befinden.
 "
   doctitlede = "Ambitus mit vielen Stimmen"
+
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Si plusieurs voix se trouvent sur une même portée, on peut attribuer le
index 9e0586b32dc6e351fe2f37d52253ce7c3ed6628f..eb8c490a9edf0f4aeff5de94eb3bb9593a9f4dcf 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches, vocal-music"
index 641ab3b3f7fc813c9743cbe4df0f6ca8df3c2967..17df87595483b92baf13bb25b36ad8ac6e91fb90 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "editorial-annotations, tweaks-and-overrides"
index 5f326a9dec3f5c3b056cd3bb5f68b297cf4adc53..ba15affcd63f2fe6e9ce6272b7ea77e8cd3d3126 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "ancient-notation"
@@ -15,6 +15,7 @@ antigua.
 
   doctitlees = "Tipografía de música antigua"
 
+
 %% Translation of GIT committish: 9a65042d49324f2e3dff18c4b0858def81232eea
   texidocfr ="
 Voici comment graver la plupart, sinon tous les symboles que
index 72ad5d5ae6a7d51516d9aba5878262abbb97304a..947721650423ccb85b67f9de1bf38495c7f452c4 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.29"
+\version "2.13.31"
 
 #(set-global-staff-size 15)
 \paper {
index e4e49b53cb28e20169bf821c6fe26ff284aa6bcd..ffab5846d108d2342f8f7882e1c31fb5fe89e85e 100644 (file)
@@ -1,10 +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.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
-  lsrtags = "ancient-notation, template"
+  lsrtags = "vocal-music, ancient-notation, template"
 
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
   texidoces = "
@@ -16,6 +16,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
 
   texidocde = "
@@ -26,6 +27,7 @@ Länge von Pausen an.
 "
 
  doctitlede = "Vorlage für Alte Notation -- moderne Transkription des gregorianischen Chorals"
+
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Voici comment vous pourriez transcrire du grégorien.  Pour mémoire, il
index 7fd16ef5e91bda98cdc10b81c7dbb30bdb037478..b188492205d94f35f61c9e5a1be0ff5599fdd480 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "ancient-notation, template"
@@ -21,6 +21,7 @@ encima de ellos.
 "
   doctitlees = "Plantilla de notación de música antigua (transcripción moderna de música mensural)"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Bei der Transkription von Mensuralmusik ist es oft erwünscht, ein
@@ -35,6 +36,7 @@ zwischen den Systemen geschrieben.
 
 doctitlede = "Vorlage für Alte Notation -- moderne Transkription von Mensuralmusik"
 
+
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Lorsque l'on transcrit de la musique mensurale, un @emph{incipit} permet
index 28744a26ef9d8541af61c2510ce500cb1dcbb951..338b18d1c283913d8fbe482cf04bccb90e3a2fe5 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "ancient-notation"
index bed17a3372e16ff0e35ec855517afa74e1c50a4b..aa69dff71e877dc1103ec6a30aa6ec4188b2b1dd 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches, editorial-annotations"
@@ -30,6 +30,7 @@ nota.
 
 "
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   doctitlede = "Notenkopfstile basierend auf der Tonleiterstufe erstellen"
   texidocde = "
@@ -51,6 +52,7 @@ eine Melodie transponieren kann, ohne dass das Verhältnis zwischen den
 harmonischen Funktionen und dem Notenstil verloren geht.
 
 "
+
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 La propriété @code{shapeNoteStyles} permet d'affecter un profil
index 82d59b7ae84c8bbee43ba7babdd9e6b658fa50b9..c03319e7d2f931dc890caa1d5cd2fd332b2b3bd2 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "world-music"
@@ -18,6 +18,7 @@ cómo podría ser el comienzo de una improvisación @emph{hijaz}:
 "
 doctitlees = "Improvisación de música árabe"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Bei Improvisation oder @emph{taqasim}, die zeitlich frei gespielt
index f84eca92936b6dde72ebd50cdd229872ea2664bf..e7c9b66623ab2b552df7435cedaa15e52cbf218c 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index d77e6e1c20cc88e4947be1dbe98928414efb0221..a08bd6b1523cc1555e47558c29da7c3f1383c2f4 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.29
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 21f62b97ca082ab9adbe479c0d3a4ba191917bea..ecf971d9ec0392f9eddfecce20a3e7f3017db5b7 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, editorial-annotations, chords, tweaks-and-overrides"
index 80f7385fa3094617696e4e95dbe71ba5cfc38ecc..e02ccf632b5745b443b0f6eb5b5586fdbe33f822 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "chords, fretted-strings"
index f6f73315afc70321e88f68167ffa645576a00a64..1c340524c452037fa648a8e4d7767baa4afdc8bf 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.29
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index d7ffd2df8db54c314a04fb183a38fdeceabe71ad..d478bdc5c2f3233a50f4a27612f98741271ca37c 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.29
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 913976e8ebb254908fec187c04ca1dbc4d319d24..4f4a308fa7089270ecbbd53f356ca4e07f2875a3 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
@@ -15,6 +15,7 @@ comportamiento como se muestra aquí:
 "
   doctitlees = "Barras que atraviesan saltos de línea"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Zeilenumbrüche sind normalerweise während Balken verboten.  Das kann geändert
@@ -24,6 +25,7 @@ werden.
   doctitlede = "Balken über Zeilenumbrüche"
 
 
+
 %% Translation of GIT committish: 708e0d9c660856b19929736ca18a6f9d68539c60
 
   texidocfr = "
index af52177f35573339635be84f4c2c9cc49db36e0e..7657a4038e9472cf28119e8c60fc3b3808575eba 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "editorial-annotations, text"
index c88a25077bf24520acc641244914302f802f96e7..7a05b7dbae9b3d182b6355f54f6c1f9413b89019 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "paper-and-layout"
index 34c65ce3c5c21248bfc2cbed1456c6cd3e8fc973..91040135745109873642a74cd2bfb73e7f5ccd32 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks"
index 3c5443ad719cd31ecfcdf7c77a6850d84fdc0012..60d43218c1b0a6e780ce5bdf4d2e566131790f47 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks"
index 5db21902439d65effb82872466cfcb34b7e8614c..7331af6000cc7f0b15f7691a65dc501449800fa0 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index 80da185f47162dd8d3759046ca9e1b33f65a3cbd..8c51f8bf150e04db87624a61400d53faa3fb95f6 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, text"
index 36fb7ffc4980efdb14d7c8fb4fa0455741aa829b..f76a23e5da9c11b94beec73e24ad7c0f0d717b52 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.15
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text, tweaks-and-overrides, contexts-and-engravers"
index 7ded19fdb440e80ae0ec61babd2c54a283402523..0f007d74c76732fc8d44a3591adc83dbe39309fe 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, unfretted-strings"
@@ -14,6 +14,7 @@ utilice la siguiente función de Scheme.
 "
   doctitlees = "Cambiar el tamaño de la marca de \\flageolet"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Um den @code{\\flageolet}-Kreis kleiner zu machen, kann diese
@@ -21,6 +22,7 @@ Scheme-Funktion eingesetzt werden.
 
 "
   doctitlede = "\\flageolet-Zeichen verkleinern"
+
 %% Translation of GIT committish: 5b980ee07bba23d3633de1d371fb2926f164e295
 
   texidocfr = "
index 4dba7d59300bff5eea1e258f644b31ee3fd3b3ac..ce419d83b917de6ad1bcd5ffcc0bca220a23a13d 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "simultaneous-notes, editorial-annotations, tweaks-and-overrides"
index 554f900d457113ebb2f4bffd59358fb0a8c12ea0..785b8482081d4b6ce47fad3eecf2535cdbcef8d1 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
@@ -20,6 +20,7 @@ establecido a 5.5 espacios de pentagrama.
 "
   doctitlees = "Cambiar el salto de las barras en ángulo"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Balken mit Hälsen in unterschiedliche Richtungen werden automatisch
@@ -34,6 +35,7 @@ Standardwert von @code{auto-knee-gap} ist 5.5 Notensystemabstände.
   doctitlede = "Balken für weit auseinander liegende Noten ändern"
 
 
+
 %% Translation of GIT committish: 708e0d9c660856b19929736ca18a6f9d68539c60
   texidocfr = "
 LilyPond insère automatiquement des ligatures coudées --- certaines
index f4592e30e31d3886862ea08c9829605ff347138d..21af4907a4fa05073c4874df247062e1f5350eff 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "chords"
@@ -14,6 +14,7 @@ nombre de un acorde para que sea cualquier elemento de marcado.
 "
   doctitlees = "Modificación del separador de acordes"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Der Trenner zwischen unterschiedlichen Teilen eines Akkordsymbols kann
index bbe8c40e7d09065e2e191601f02558a1a6667e6d..407a97a34a53607d01911f7a65206f3772cead01 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
@@ -17,6 +17,7 @@ puede cambiar sobreescribiendo la propiedad @code{expand-limit}:
 
 "
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Wenn zehn oder weniger Pausentakte vorkommen, wird eine Reihe von Longa-
@@ -28,6 +29,7 @@ setzt:
   doctitlede = "Die Erscheinung von Pausentakten ändern"
 
 
+
 %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685
 texidocfr = "
 Dans le cas où ce silence dure moins de dix mesures, LilyPond imprime sur
index 93a7e6f03c327f35a12e8d9d695b200746eb5fbc..7603b4db09f4e16c57de8f6d0b4823c7a017b32e 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "fretted-strings"
index a10d558423759fc75bf39d69bf8b954b64aff2b3..07156528ad09a3cdcc7ce23bf6c49a770bd6f47f 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "contexts-and-engravers, midi"
index 02fa9fd41df31073a25dcfb9312db6edb8278192..7301639feaf3c1673ea69b61533fa5f54c1be39a 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "simultaneous-notes"
@@ -15,6 +15,7 @@ y de unísono:
 "
   doctitlees = "Cambiar los textos de partcombine"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Wenn Stimmen automatisch kombiniert werden, kann der Text, der für
@@ -22,6 +23,7 @@ Solo- und Unisono-Stellen ausgegeben wird, geändert werden:
 
 "
   doctitlede = "Partcombine-Text ändern"
+
 %% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c
   texidocfr = "
 Lorsque vous regroupez automatiquement des parties, vous pouvez
index 39dc4fd6307b3c64d89d37a86f6ce774561a4fdc..8e53a1ede81077284bbb157a0970b24daf048af0 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "tweaks-and-overrides"
index 140cacf3c9f3689ec1adca71f4774ed9a0e3037b..45b62754fdd69e42952bf3bccfcf905d0679325d 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "vocal-music"
index 86d4eeaaa8032e741198aef5bb4f70eb5afc2632..56c81e085ac701271d752389300af8d95f2f157d 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks"
@@ -21,6 +21,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Der Text, der für Crescendo und Decrescendo gestzt wird, kann geändert
@@ -32,6 +33,7 @@ geändert werden, indem die @code{'style}-Eigenschaft des
 und @code{'dotted-line}.
 "
   doctitlede = "Text und Strecker-Stile für Dynamik-Texte ändern"
+
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Le texte par défaut des crescendos et decrescendos se change en
index 3cc767fb40c8aab74c5c1fdb9993ae5ca6976e84..0e23f839312a03c5285dd610b9cdfe0b3e62d080 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.26
-\version "2.13.29"
+\version "2.13.31"
 \header {
   lsrtags = "pitches"
   texidoc = "It is possible to change the default gap setting for
index 5d03e91a6a998511983142cad6c06b1db4485cd1..25952470847e77836c41c47208a19724171af37e 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, editorial-annotations"
index 5d4e50f549193c350734c8d69dcb6272363a32f3..d58206a1fcfe96a5b2459ce4a203d1ff78269904 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks"
@@ -15,6 +15,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Das Schriftzeichen für das Atemzeichen kann verändert werden, indem
@@ -23,6 +24,7 @@ beliebigen Textbeschriftung definiert wird.
 
 "
   doctitlede = "Das Atemzeichen-Symbol verändern"
+
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 On peut choisir le glyphe imprimé par cette commande, en modifiant la
index 7c7f00de05de0b2fb68d1d7b3e1887f2a1e19235..4211d2046a2f651f49d46473287eb5c54178e509 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "chords"
index 348aee50aba4b5c612ba4f9b1cb4a5a99ed81993..fdf766e58dc8108059ed686307a33cd18ac0eb4f 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text, tweaks-and-overrides"
index b7a3538581680fa691adf61cd9e5ec8c01b15819..8c6ec3a63c6a0a1f0bfa0350ded0b36329d4bc79 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches"
index 71455ded2a7099f9deb82d3d564cedf7904f7b5f..72598af1aa69885998dfc124cf1320016e397062 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.26
-\version "2.13.29"
+\version "2.13.31"
 \header {
 %% Translation of GIT committish: 190a067275167c6dc9dd0afef683d14d392b7033
 
index 2b883a6fa6e82695e37bf55d166863eebc4aabe3..5844f597eff6e041aaf056bac12ccda8a9613075 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation"
index fd69695e2a1e4744015b9bfafce9108122fb5bb8..c58c6b754f25f05a21cc374143b87ccf93c4c20a 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "chords"
@@ -16,6 +16,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Versetzungszeichen und Pluszeichen können vor oder nach den Ziffern erscheinen,
diff --git a/Documentation/snippets/changing-the-size-of-woodwind-diagrams.ly b/Documentation/snippets/changing-the-size-of-woodwind-diagrams.ly
new file mode 100644 (file)
index 0000000..f5321e1
--- /dev/null
@@ -0,0 +1,36 @@
+% 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.31
+\version "2.13.31"
+
+\header {
+  lsrtags="winds"
+  texidoc="
+The size and thickness of woodwind diagrams can be changed.
+"
+
+  doctitle = "Changing the size of woodwind diagrams"
+} % begin verbatim
+
+
+\relative c'' {
+  \textLengthOn
+  c1^\markup
+    \woodwind-diagram
+      #'piccolo
+      #'()
+
+  c^\markup
+    \override #'(size . 1.5) {
+      \woodwind-diagram
+        #'piccolo
+        #'()
+    }
+  c^\markup
+    \override #'(thickness . 0.15) {
+      \woodwind-diagram
+        #'piccolo
+        #'()
+    }
+}
index 71a7a9d11eff2baba1e12744a834ac596f9c5960..0122225b4ba16ee93aedcac94e9e6f6b0e62d572 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation, tweaks-and-overrides, paper-and-layout"
index c63d59a43d8d938ac5e5968c20326467b881b662..c70e8b3cbc3ae22132f13e62e1d680e438a4aea0 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation, midi"
@@ -15,6 +15,7 @@ imprimir nada, hacemos invisible la indicación metronómica:
 
   doctitlees = "Cambiar el tempo sin indicación metronómica"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Um das Tempo für die MIDI-Ausgabe zu ändern, ohne eine Tempoangabe in den
@@ -23,6 +24,7 @@ Noten auszugeben, kann die Metronombezeichnung unsichtbar gemacht werden:
 "
 
   doctitlede = "Das Tempo ohne Metronom-Angabe verändern"
+
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Vous pouvez indiquer un changement de tempo pour le fichier MIDI sans
index eb8fa70d03f4655482b398159a7f74b5d04d14bb..6c82f573665537d9396511911310272631eede7c 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "keyboards, tweaks-and-overrides"
index ed0cd298aacc372ae85d96c0d97866e922a5a651..8a444bb2dad90fcaf6dc11b5a535cbcc8692d2ca 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.5
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 58a51e4c13908ec548497d3d2b3b595b5272e0ec..c664dcc1ae9d4644e544b1c4f6f863ac9af0c590 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
@@ -18,6 +18,7 @@ del grupo, o eliminar el número.
 
 "
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Standardmäßig wird nur der Zähler des N-tolen-Bruchs über der Klammer
@@ -29,6 +30,7 @@ vollständig unterdrücken.
   doctitlede = "Die Zahl der N-tole verändern"
 
 
+
 %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685
   texidocfr = "
 L'apparence du chiffre est déterminée par la propriété @code{text} dans
index 3bc0d614ddba59da9bebf14ac357a55b1b6a118d..5fdcb19150e934d9da91dcc12a13a041023b9fc6 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, contexts-and-engravers"
index a37962f3929dd018dad9143957b1d3fc553fe443..eb0f43e83cc401fadba2e61a7c575057e7df1ec5 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, vocal-music, ancient-notation, contexts-and-engravers"
index a30f8b730e18b2f7b4b33c695ad99f738da10338..4679d3b5abcc9c9b06b1352d386b50dad8b09f51 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "chords"
@@ -15,6 +15,7 @@ específicos.
 "
   doctitlees = "Excepciones para los nombres de acorde"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die Eigenschaft @code{chordNameExceptions} kann benutzt werden, um eine
index 147054fe8115c08d8d104a58483ac150ddb1ffc4..d68f5ba14f76a11c65ec3798a2701a60ad3607d4 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "chords"
@@ -14,6 +14,7 @@ puede ajustar mediante majorSevenSymbol.
 "
   doctitlees = "Nombre de acorde maj7"
 
+
 %% Translation of GIT committish: 134d9cb2e14ae624aec6fa2dd1630e284807dc42
  texidocde = "
 Das Aussehen des großen Septakkords kann mit @code{majorSevenSymbol} verändert werden.
index 2ba6b2f5bee62e391b6624a8e60ec9790039b7bb..80e6b2c2309662c23d539ef9acc3c2f9fa883e93 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.0
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 71702df05c2cd7f668dae19b9c5fee3344d32214..fd71dc59024b2dbebb934d1aa2e56a6d62a81d74 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.29"
+\version "2.13.31"
 #(set-global-staff-size 15)
 \paper {
   ragged-right = ##f
index 31c55abb6aa00a421701946ba4a98ae93165c46d..ab1cb5505aa899a51f03c6ecf1fee1b27e117650 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches"
index ed9b437efdac89dc13a5b02715d7daac284bf471..b004980c4175ef7808523009d36896a95c538294 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index b468ed1fd4c76dba2c1e4f649ee51872992816fc..24443c9c3f6c720e8db75453bb81f4a4eee85685 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "simultaneous-notes, chords, keyboards"
index f41f8c8543273811a3c87dba293d70a073be6cef..4d3c7a66aea894aee48a41111666779609d67b41 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches, editorial-annotations"
index 46de57ef04e7290fbca240a480502766227ef0c5..7845a379e01c6293925a26b9c6cf038c4c3e78aa 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, text"
index 2030427c71dace657006d611bb912e482eaf9d1a..e2d558977e955f1b7c7753e1a3e0defb5b3f0055 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "simultaneous-notes, text"
@@ -28,6 +28,7 @@ textos.
 "
   doctitlees = "Combinar dos partes sobre el mismo pentagrama"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die Funktion, die Stimmen kombiniert (also der @code{\\partcombine}-Befehl)
@@ -47,6 +48,7 @@ kombinieren: Standardpolyphonie, @code{\\partcombine} ohne Text und
 
 "
   doctitlede = "Zwei Stimmen auf einem System kombinieren"
+
 %% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c
   texidocfr = "
 L'outil de combinaison de parties (la commande @code{\\partcombine})
index bd00f68e295998fdd58f1f0d867dd24060bb5461..a12c86d65014f0b11729c6de149ba982c8e534ba 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.29
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index f8656df04b83f0423245eec637f5fe9452b9ed44..e97f90672207abd967cfa2ce71c2c25a7dda40fa 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.29
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index a12f5855edcc56297156fe30b8c41e9c14732363..ae1a7e45d2506d4be8a056f95f8875975e8232bd 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks"
@@ -14,6 +14,7 @@ utilizando una nota oculta y temporalización de cadenza.
 "
   doctitlees = "Glissando contemporáneo"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Ein modernes Glissando ohne eine Endnote kann gesetzt werden, indem
@@ -21,6 +22,7 @@ eine Kadenz eingesetzt wird und die Endnote unsichtbar gemacht wird.
 
 "
   doctitlede = "Moderne Glissandi"
+
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 De nos jours, il peut arriver que la note d'arrivée d'un glissando soit
index fdcc88444e21b195e90ad841baad0ea48a4eec69..e532cc7a0a4443d9ff047ca5527571c94ca26f10 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.1
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 0e81b09d42b68781becb58d3ab8e949d0c020c39..bfdc4b8fa191e747eb329c011e5d94a718dde64c 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "editorial-annotations, chords, keyboards, fretted-strings"
@@ -18,12 +18,14 @@ sea una sola nota.
   doctitlees = "Controlar la colocación de las digitaciones de acordes"
 
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die Position von Fingersatzzahlen kann exakt kontrolliert werden.
 
 "
   doctitlede = "Position von Fingersatz in Akkorden kontrollieren"
+
 %% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b
 
   texidocfr = "
index 674c11744f2c6b009836bb4b05ac21d9d7e96788..b7b4940d82e83fadb15178e92adc81fdca9c1d77 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
@@ -22,6 +22,7 @@ lugar.
 "
   doctitlees = "Controlar la ordenación vertical de las inscripciones"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Die vertikale Anordnung von Beschriftungen wird mit der
@@ -36,6 +37,7 @@ anhand ihres Auftretens in der Quelldatei entschieden.
 
 "
   doctitlede = "Die vertikale Anordnung von Beschriftungen kontrollieren"
+
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Les symboles s'ordonnent verticalement suivant la propriété
index f8366b0c6c12e6311cb40c936fd2d362c8fcc360..98af6eb714de8f5ad21e6b70519ab6030af664e1 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
index d4e5c326eb21b9556cdc10e74e4d3bc23f22a113..84d16a387358aa37e96b09f19609418d9c132cfe 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides"
@@ -21,6 +21,7 @@ grupeto horizontalmente.
 doctitlees = "Crear un grupeto de anticipación"
 
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Einen Doppelschlag mit Vorhalt zu erstellen, wobei die untere Note das
@@ -32,6 +33,7 @@ wird benutzt, um den Doppelschlag horizontal zu positionieren.
 "
 
   doctitlede = "Einen  Doppelschlag mit Vorhalt erstellen"
+
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Obtenir un @emph{grupetto} retardé et dans lequel la note la plus basse
index fc9b3680ad8c5eff5b6b451f0e4906f1b4aea1dd..c95a0bfac039eb99561d59097f2a934aa25e2de4 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches"
index 26bf08a7735a26468ad41086bd261331246e1826..2c792c6343ac7200bc3949dc1a3b169cd6a6dec4 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks"
@@ -16,6 +16,7 @@ voces que están sobre el mismo pentagrama si el grabador
 "
   doctitlees = "Crear arpegios entre notas de voces distintas"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Ein Arpeggio kann zwischen Noten aus unterschidlichen Stimmen auf demselben
@@ -24,6 +25,7 @@ System gezogen werden, wenn der @code{Span_arpeggio_engraver} in den
 
 "
   doctitlede = "Arpeggios zwischen unterschiedlichen Stimmen erzeugen"
+
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Affecter le graveur @code{Span_arpeggio_engraver} au contexte de la
index 9117b13a30f0e0e4ddc335ef3db6881f80463f4c..f55d31a8e169ceeb5408dfb9487cd330689f2c11 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation, editorial-annotations, contexts-and-engravers, paper-and-layout"
index 5d964842ae8f7d1effc5ff7a4b9d84d1947b5a18..fb970b4d18b73dc1a09358a58daf016e9fd7de9e 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks"
@@ -15,6 +15,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Arpeggio über mehrere Systeme können in anderen Kontexten als dem
@@ -23,6 +24,7 @@ in den @code{Score}-Kontext eingefügt wird.
 
 "
   doctitlede = "Arpeggio über mehrere Systeme in anderen Kontexten"
+
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Dans une double portée pour piano (@code{PianoStaff}), un arpège peut
index 380732323119cbe222f8bba4b61facb1569b5ed6..041695521d4af69fd0bf0fd97973fad1930b638d 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks"
@@ -16,6 +16,7 @@ contextos distintos a @code{GrandStaff}, @code{PianoStaff} y
 "
   doctitlees = "Creación de arpegios que se cruzan entre pentagramas dentro de otros contextos"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
  texidocde = "
 In einem Klaviersystem (@code{PianoStaff}) ist es möglich, ein Arpeggio
@@ -25,6 +26,7 @@ zwischen beiden Systemen zu verbinden, indem die
 
 "
   doctitlede = "Arpeggio zwischen Systemen in einem Klaviersystem erstellen"
+
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Il est possible de distribuer un arpège sur plusieurs portées d'un
index 2ac4b540361dc0e715de9cfbd2356b10dba578c5..ee658bdc523aa647cc2648fce2b680a8446e23cb 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation"
@@ -14,6 +14,7 @@ marcado, pero no cambian el tempo en la salida MIDI.
 "
   doctitlees = "Crear indicaciones metronómicas en modo de marcado"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Neue Metronombezeichnungen können als Textbeschriftung erstellt werden,
@@ -22,6 +23,7 @@ aber sie ändern nicht das Tempo für die MIDI-Ausgabe.
 "
 
   doctitlede = "Eine Metronombezeichnung als Textbeschriftung erstellen"
+
 %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6
   texidocfr = "
 Vous pouvez créer des indications de tempo sous la forme d'étiquettes
index 9f3952ab2227a63ebc1d39f52118dc100ffe8212..d5b8f2006e4860697db34758e0c04480bd9cc7e7 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, text"
index 98e9dfc3b340df812fbaf57a5addd651921cdbae..236bb9c27a7b533266fb78eb700951d0f1177846 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, text, tweaks-and-overrides"
index 6ba8968640833286d2000ab46fc65b7c2dbc1828..fbd46ceaf4cac32ed1a6f2e25fd1a0e84e9f15e8 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, keyboards, unfretted-strings"
index 32a58405498b7f1599b73941b58de9e1b9c23b8a..e6670dddc63bb9292c50b6abcd5cac86c046e997 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, text, tweaks-and-overrides"
index e490287182c0d9ac56d40c2a852ba25437c3dfab..ffb323d32494821c6350802755914540118beb7a 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "repeats, keyboards"
index 0e5fcbc88b204f83c34774b00f801c899185efea..c43d834aef6100e5ed93a64917222cb2696b51e6 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "ancient-notation, tweaks-and-overrides"
index 17056045c4904b218b5a1e77407db3ae716c60e9..158364022cf52bfe44a77666f3fe144e17997137 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "fretted-strings, tweaks-and-overrides"
@@ -19,6 +19,7 @@ sobreescritura de propiedades.
 "
   doctitlees = "Personalizar los diagramas de posiciones"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Eigenschaften von Bunddiagrammen können in
index 5458e1483f5895b7c9520efe54274510f74b3c0f..936c7335090def902ce0dc8b5bd7ab90f9108810 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "fretted-strings, tweaks-and-overrides"
@@ -16,6 +16,7 @@ diagramas de posiciones de marcado, se pueden aplicar overrides
 "
  doctitlees = "Personalizar diagramas de posiciones de marcado"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Bunddiagramme können mit der Eigenschaft @code{'fret-diagram-details}
@@ -25,6 +26,7 @@ Beschriftung vorgenommen werden.
 
 "
   doctitlede = "Anpassung von Beschriftungs-Bunddiagrammen"
+
 %% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b
 
   texidocfr = "
index fe19a011b701e4c4e7a666f3d6bca947c6695b3f..6c62cf9da9b83faf77873b2be8680c00c73b4418 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "editorial-annotations"
@@ -15,6 +15,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die Richtung von Hälsen auf der mittleren Linie kann mit der @code{Stem}-Eigenschaft
index 50d6c675c029f18e78a4d6b89c4426e56fbf75d1..b54d3f601b46f0435ca3893fbdb43436c9d138f0 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.15
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 8c67cf4b45819bf5198bce427b179a71bac7f78b..9029b0f398f2b0ba57f7468798361f744fbe6f9e 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "fretted-strings"
@@ -25,6 +25,7 @@ de las cuerdas.  Hay planes para corregir esto en un futuro.
 "
   doctitlees = "Definición de posiciones predefinidas para otros instrumentos"
 
+
 %% Translation of GIT committish: f23429bc5cfa9d141ef7b4509afc46c140308a1e
   texidocde = "
 Vordefinierte Bunddiagramme können für neue Instrumente hinzugefügt werden
@@ -42,6 +43,7 @@ enthalten.  Das soll in der Zukunft verbessert werden.
 
 "
   doctitlede = "Eigene vordefinierte Bunddiagramme für andere Instrumente erstellen"
+
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
 
   texidocfr = "
index 7fcdbe2ae7eb1f53c99ba820f2313b3a15af6a32..b282d481949bf2d6095bae5eadd0a08a2304f9e7 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "midi"
index c9d07153d06b716756d6e5c64360e7fc9b400a0b..4db4865c4df1e8aad71096e8704da7bee9f9aab6 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text, paper-and-layout, titles"
index 739c64f69ef10b7a30b49bdc7796d4a7b77333df..7b9ad9aa29e1fb57132b105918b17a124f05dc2a 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation, tweaks-and-overrides"
@@ -22,6 +22,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Wenn nur ein System einer Systemgruppe vom Typ @code{ChoirStaff} oder
@@ -35,6 +36,7 @@ wie das zweite Beispiel zeigt.
 
 "
   doctitlede = "Klammer anzeigen wenn nur ein System gesetzt wird"
+
 %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6
   texidocfr = "
 Lorsque, dans des regoupements de type @code{ChoirStaff} ou
index 72a57588436226e29dd11636d0618f6a43b79a20..61bcfd6f35e0237eef12a036f35dd0231b8b3367 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.1
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 4254e0a34c12f6696464e7b2610d200171723c40..a13e95523076ba8c793960de077766e35d07aae3 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.10
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index ccbbe5901dcc650cb798e637789a9ad5fa61a9e3..8cc1200e6289c9583ddfcb1fdcf9943c3f0f69d6 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 3d5c6b410d6c9c97863d8249a8112d131ed3fa9a..8de8d01f4d7f1a57c2ae6737ceead12fc96947b1 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "unfretted-strings, tweaks-and-overrides"
index 3e7abe79e2ebb17472d695b3f9f56547bc3aa2ed..200d0de0d586cd45d34ccb97f97dac2ffde81899 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, simultaneous-notes"
index b6903d16384d81226157b2044c05535a1ea3b0f0..8fd0c0c69034eed4402d5fd1bb3bdff97ae9493a 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "editorial-annotations, tweaks-and-overrides"
index a6911ce37f1645f4000ed41961afc72bf4155778..25d25dd18720126c69dc503e77f6d5830707f45c 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "editorial-annotations, tweaks-and-overrides"
index b3c97576a29c21e1ec84189a4aa36d8c71a39e19..676a76c8ae4e1590313481441542759ee2e36f4b 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.8
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index f847cf07cff4cbff11bd9e73a4728c952c419c7f..34b54b1206105e7481e33c142db972f8e4aa1daa 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.20
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index ed285dbf64213354573cf414c4e0a196b336a86c..6efcdb489d65124c341025ba94d6e3c6e843deba 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.29"
+\version "2.13.31"
 \include "english.ly"
 #(set-global-staff-size 15)
 \paper {
index 4a28dc2a139e15a6e6c4d39139843ef7a2047c05..275181734a5a36b11b06afe15c03dfc03911e2e1 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "editorial-annotations, text"
index a0b4cd3a3dbf6d174efa0d3272bf263731533bb4..ab13df1e79147883eb5c4867eb0bd98eff2b9536 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "contexts-and-engravers"
index 2e98a1b7c1314195b073f8eb74264c733ce7b2f7..c9cc746e1da2774630d6394dde71454d75f6a303 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
@@ -17,6 +17,7 @@ hacia arriba, -1 = hacia abajo).
 
 "
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Überbindungen können manuell gesetzt werden, indem man die
@@ -29,6 +30,7 @@ Notensystemabständen an, die zweite Zahl zeigt die Richtung an (1 = nach oben,
   doctitlede = "Bindebögen manuell setzen"
 
 
+
 %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685
   texidocfr = "
 Il est possible de graver manuellement les liaisons de tenue, en
index 2e743e22f05286d0ad24f9c7081b414e9989af5d..a270b4512331eb88c24ee8379c1354669a802d3b 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, repeats"
index 6d07bdc9c259336a44faae3c0d20d1c43e1baa69..e668cce3d786c3686f81d27670c25378b2df9d88 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
@@ -24,6 +24,7 @@ correspondiente del manual de Referencia de la Notación.
 
 "
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die Eigenschaft @code{tupletSpannerDuration} bestimmt, wie lange jede
@@ -40,6 +41,7 @@ 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: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 La propriété @code{tupletSpannerDuration} spécifie la longueur voulue de
index 5b887eea2cc9fc733b7537ac6e63cdd22b3cbe62..b7bbe4d9ae9deed2849ae279ef40b631a847f3ad 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.29"
+\version "2.13.31"
 \include "english.ly"
 #(set-global-staff-size 15)
 \paper {
index d8d9ba3be6cb1840622c576f6bad68d7f20e00bc..4e3e7fb50ffcf2ead1f60e5c2e993b032fcba906 100644 (file)
@@ -44,6 +44,7 @@ setting-hairpin-behavior-at-bar-lines.ly
 setting-the-minimum-length-of-hairpins.ly
 showing-the-same-articulation-above-and-below-a-note-or-chord.ly
 snap-pizzicato-bartok-pizzicato.ly
+using-arpeggiobracket-to-make-divisi-more-visible.ly
 using-double-slurs-for-legato-chords.ly
 using-the-whiteout-property.ly
 vertical-line-as-a-baroque-articulation-mark.ly
index d984633376cd8fc199479a12ebe3c0fe1fa69cf4..e2933839644d3e313a21795c0e2e992878042cbe 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 4203bf7cdd6963710426757a1d832b38718522e2..7b05b2990b7cde42553af2bef624a4d2282e1a94 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.29"
+\version "2.13.31"
 #(set-global-staff-size 15)
 \paper {
   ragged-right = ##f
index 4dabd82d792f241c94ba7a0bc10f9a5c4246d08e..ca2655b590b33182d39d6a0de56538d6989bd635 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "keyboards, tweaks-and-overrides"
index 74ff18283452fadf330de38e67e9bc6f191abcf2..785a9f8d5a4324016600b8a3fb2499313da27701 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "winds"
index c7ec27d755da4763367ae875a9374d3f3d63dfda..e6fde26f49e99b9b2fa1ed035c4afaf84b00b6be 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "fretted-strings"
@@ -15,6 +15,7 @@ derecha.
 "
   doctitlees = "Digitaciones - indicación del número de cuerda y digitaciones de mano derecha"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Dieses Beispiel kombiniert Fingersatz für die linke Hand, Saitennummern
@@ -22,6 +23,7 @@ und Fingersatz für die rechte Hand.
 
 "
   doctitlede = "Fingersatz Saitennummern und Fingersatz für die rechte Hand"
+
 %% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b
 
   texidocfr = "
index fa1b55cea342ad97d87f378f8bda73cf7bb7f445..e10b507039f07840f0e56036a14675a05fac251c 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.10
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 9bec826ba6db1ca8527c6c4f8ce6ef8558bc7e6d..ddeeb8a7adc7d94372e4c82e61b5025649d0b16b 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
@@ -41,6 +41,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Gerade Fähnchen an einzelnen Noten und überstehende Balkenenden bei
@@ -71,6 +72,7 @@ Beispiel haben nichts mit dem @code{\\set}-Befehl zwei Noten vorher zu tun.)
   doctitlede = "Gerade Fähnchen und überstehende Balkenenden"
 
 
+
 %% Translation of GIT committish: 190a067275167c6dc9dd0afef683d14d392b7033
   texidocfr = "
 En combinant @code{stemLeftBeamCount}, @code{stemRightBeamCount} et des
index 44190e28b3cda0eb7299a16c51974e6bbfbda120..9d5842a451962fc4e7f377d394bd87ee433cafd2 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "winds"
index ab7792c3ba853e90923e8db4d6d936e62793f224..f033d57fecaefd33ca3572d752c7db44c4fcb53a 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "simultaneous-notes, tweaks-and-overrides"
@@ -17,6 +17,7 @@ texidoces = "
 
 "
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Wenn es zu Zusammenstößen kommt, kann mit folgender Lösung eine andere
@@ -25,6 +26,7 @@ Notenlinienzwischenräume.
 
 "
   doctitlede = "Horizontale Verschiebung von Noten erzwingen"
+
 %% Translation of GIT committish: 1baa2adf57c84e8d50e6907416eadb93e2e2eb5c
   texidocfr = "
 Quand LilyPond est dépassé, la propriété @code{force-hshift} de l'objet
index a408ece8497e86b1ceda407f4a4930d22c6d7d94..3514068946560b3f092b0a8e525bdf5ef9786933 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "vocal-music"
index a30e4ae404761109c0708469128cdf3fa76c6806..4ff880d2b7224bc9e7ae062f359476dbda3b1d35 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation"
index 543bf35311a3318f505057ad25988e9c97d59d0d..872f9554017d3c6d5d759b4de5c48157251d69d2 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
index d23c0cb559aa5c0de09654e8abf411adba435515..6e89fc7ab249b6cae49d946e9b3db25e234cc514 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text, vocal-music"
index 040df74b8d4a809c68b7b8949071b5e365a845fd..7b5f61573cdc7fe007675b988e5bfb95117f1309 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "fretted-strings, tweaks-and-overrides"
index 30888bd24914faa77f5de9378578998c84664f5b..3c96cf7dc67eac8e9a5d1f4ebd1d4975845e2499 100644 (file)
@@ -7,7 +7,7 @@
 % on melodies from Bellini's "Norma"                              %
 %*****************************************************************%
 
-\version "2.13.29"
+\version "2.13.31"
 
 #(set-global-staff-size 15)
 \paper {
index d901a3c10d1b01bfa9c9884f30db851e78ffa0f2..1e0b9058743bc47d1cc8d3543e9ee6bab385bf05 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches"
diff --git a/Documentation/snippets/graphical-and-text-woodwind-diagrams.ly b/Documentation/snippets/graphical-and-text-woodwind-diagrams.ly
new file mode 100644 (file)
index 0000000..82c20b5
--- /dev/null
@@ -0,0 +1,35 @@
+% 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.31
+\version "2.13.31"
+
+\header {
+  lsrtags="winds"
+  texidoc="
+In may cases, the keys other than the central column can be
+displayed by key name as well as by graphical means.
+"
+
+  doctitle = "Graphical and text woodwind diagrams"
+} % begin verbatim
+
+
+\relative c'' {
+  \textLengthOn
+  c1^\markup
+    \woodwind-diagram
+      #'piccolo
+      #'((cc . (one three))
+         (lh . (gis))
+         (rh . (ees)))
+
+  c^\markup
+    \override #'(graphical . #f) {
+      \woodwind-diagram
+        #'piccolo
+        #'((cc . (one three))
+           (lh . (gis))
+           (rh . (ees)))
+    }
+}
index e95ce6cf24a3f777d86353b7b50551b2ce3b23c6..f8db68760ab63a3d5f511b6472925d3f6650d0a4 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "editorial-annotations"
@@ -14,6 +14,7 @@ sobreescribiendo algunas de sus propiedades.
 "
   doctitlees = "Líneas de rejilla: modificar su aspecto"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die Erscheinung der Gitternetzlinien kann durch einige Eigenschaften
@@ -21,6 +22,7 @@ geändert werden.
 
 "
   doctitlede = "Gitternetzlinien: Aussehen verändern"
+
 %% Translation of GIT committish: 9ccf7f0f5e52e074f3b7852416ad5b78718395c8
   texidocfr = "
 Modifier certaines des propriétés du cadrillage temporel aura pour effet
index 0450c827f29f03ca9626deb86fb49f62cb9251a1..f99911e000a435f8815c157a3b42e3fa4ffa2c09 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "editorial-annotations"
index e1abd6d0a96c5834c0077e48bebe99e3a7af25b7..9b1ac2276db14b8f3c5e35844ced7c161a0faf2b 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 74d0533dcc16a8197cba782e4a637589d02689b7..5fd9890013b056b506b88f66b7e64d499ea9b777 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 98ae0cca257b791928daae89554bb6c019e97d33..04131f5c0bfbbf395cf295851d122f2ea0a976cb 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, fretted-strings"
@@ -14,6 +14,7 @@ además de las notas de la melodía, acordes y diagramas de posiciones.
 "
   doctitlees = "Ritmos rasgueados de guitarra"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 In Guitarrennotation kann neben Melodie, Akkordbezeichnungen und
@@ -23,6 +24,7 @@ Bunddiagrammen auch der Schlagrhythmus angegeben werden.
   doctitlede = "Schlagrhythmus für Guitarren"
 
 
+
 %% Translation of GIT committish: 015b8e65e5e9a74cea1618b597402b5b74f89b89
   texidocfr = "
 En matière de notation pour guitare, il arrive que soient indiqués les
index 413ba644122070bdb5ec56215466ec95b62d85f5..4b7fb5e02836bf85083fa5766f1d5ec7150230ba 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index 84a75105b9582818b42361dac01eb1d806e0c02b..ab6121087a768eb4aac799b76d6f4ae035af2721 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, percussion"
index 2a73426403ccf7badaf4a3b1b51b1e9426900482..3034b53b37b361d3328b2c79d0f65597f838e55f 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.26
-\version "2.13.29"
+\version "2.13.31"
 \header {
   lsrtags = "pitches"
   texidoc = "This shows how to hide accidentals on tied notes at the beginning of a
index 2532fb7ee942b6511730250f84bb2448182d26b9..02a4049efd440b6bf0dd1d7dba7865b49aee897d 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks"
@@ -15,6 +15,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Dynamik-Texte (wie cresc. und dim.) werden mit einer gestrichelten Linie
@@ -23,6 +24,7 @@ unterdrückt werden:
 
 "
   doctitlede = "Crescendo-Linien von Dynamik-Texten unterdrücken"
+
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Les crescendos et decrescendos indiqués textuellement -- tels que
@@ -43,7 +45,7 @@ following way:
 } % begin verbatim
 
 \relative c'' {
-  \override DynamicTextSpanner #'dash-period = #-1.0
+  \override DynamicTextSpanner #'style = #'none
   \crescTextCresc
   c1\< | d | b | c\!
 }
index 2cade1482af747c944e3438742a94152b99217e9..8b6c7490c47759db26a1a05d5d52f3dbe9150f19 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index c9408384c40ca99484d69edc493d1da67a359d1c..0cf18e12462ebcacbb70aaa56eb78fc1bf57c7ac 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "fretted-strings, tweaks-and-overrides"
index 02a4376a3e16eb238c23ee27ea7805dbfe76cea2..230180158ecc1c27cec5b04ef71945640e4ce6bc 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text, vocal-music"
diff --git a/Documentation/snippets/hymn-template.ly b/Documentation/snippets/hymn-template.ly
new file mode 100644 (file)
index 0000000..8aa3e12
--- /dev/null
@@ -0,0 +1,105 @@
+% 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.31
+\version "2.13.31"
+\header {
+  lsrtags = "vocal-music, template"
+  texidoc = "
+This code shows one way of setting out a hymn tune when each line
+starts and ends with a partial measure.  It also shows how to add
+the verses as stand-alone text under the music.
+
+"
+  doctitle = "Hymn template"
+} % begin verbatim
+
+
+Timeline = {
+  \time 4/4
+  \tempo 4=96
+  \partial 2
+  s2 | s1 | s2 \breathe s2 | s1 | s2 \bar "||" \break
+  s2 | s1 | s2 \breathe s2 | s1 | s2 \bar "||"
+}
+
+SopranoMusic = \relative g' {
+  g4 g | g g g g | g g g g | g g g g | g2
+  g4 g | g g g g | g g g g | g g g g | g2
+}
+
+AltoMusic = \relative c' {
+  d4 d | d d d d | d d d d | d d d d | d2
+  d4 d | d d d d | d d d d | d d d d | d2
+}
+
+TenorMusic = \relative a {
+  b4 b | b b b b | b b b b | b b b b | b2
+  b4 b | b b b b | b b b b | b b b b | b2
+}
+
+BassMusic =  \relative g {
+  g4 g | g g g g | g g g g | g g g g | g2
+  g4 g | g g g g | g g g g | g g g g | g2
+}
+
+global = {
+ \key g \major
+}
+
+\score {  % Start score
+  <<
+    \new PianoStaff <<  % Start pianostaff
+      \new Staff <<  % Start Staff = RH
+        \global
+        \clef "treble"
+        \new Voice = "Soprano" <<  % Start Voice = "Soprano"
+          \Timeline
+          \voiceOne
+          \SopranoMusic
+        >>  % End Voice = "Soprano"
+        \new Voice = "Alto" <<  % Start Voice = "Alto"
+          \Timeline
+          \voiceTwo
+          \AltoMusic
+        >>  % End Voice = "Alto"
+      >>  % End Staff = RH
+      \new Staff <<  % Start Staff = LH
+        \global
+        \clef "bass"
+        \new Voice = "Tenor" <<  % Start Voice = "Tenor"
+          \Timeline
+          \voiceOne
+          \TenorMusic
+        >>  % End Voice = "Tenor"
+        \new Voice = "Bass" <<  % Start Voice = "Bass"
+          \Timeline
+          \voiceTwo
+          \BassMusic
+        >>  % End Voice = "Bass"
+      >>  % End Staff = LH
+    >>  % End pianostaff
+  >>
+}  % End score
+
+\markup {
+  \fill-line {
+    ""
+    {
+      \column {
+        \left-align {
+          "This is line one of the first verse"
+          "This is line two of the same"
+          "And here's line three of the first verse"
+          "And the last line of the same"
+        }
+      }
+    }
+    ""
+  }
+}
+
+\paper {  % Start paper block
+  indent = 0     % don't indent first system
+  line-width = 130   % shorten line length to suit music
+}  % End paper block
index 60c8336fb790e6c34619f47526000dc67a608682..27d526d1fa671861415439fad1769925d94b04a0 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 99d3927671fd95000306fa3eb9dd4826ff4c7482..99437379db70c3c77b3d45b1d5597a3e03329d73 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "keyboards"
@@ -19,6 +19,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Eine Arpeggioklammer kann anzeigen, dass Noten auf zwei unterschiedlichen
index 0f82566d74dec494a1121025a4d68f5fdf240c3f..99094ca10be4d9cfa8fd65089f44f7d00cc4bdb6 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
@@ -15,6 +15,7 @@ una marca de cesura curva.
 "
   doctitlees = "Insertar una cesura"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
  texidocde = "
 Zäsurzeichen können erstellt werden, indem die @code{'text}-Eigenschaft
@@ -22,6 +23,7 @@ des @code{BreathingSign}-Objektes verändert wird.  Ein gekrümmtes
 Zäsurzeichen ist auch möglich.
 "
   doctitlede = "Eine Zäsur einfügen"
+
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Une surcharge de la propriété @code{'text} de l'objet
index e68c6d9f776faaf58671d21688c89e7dea4283d1..11c00fbcaaffee3f1b23c913761810ad7642f39a 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation"
index 556c9e4c27783ea6287054eb96dc8710d2e9dcd4..8fa1e8c5f03ebb33e5719087f57798497ab651ce 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "repeats"
@@ -15,6 +15,7 @@ impresión distinta:
 "
   doctitlees = "Símbolos de porcentaje sueltos"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Isolierte Prozentwiederholungen können auch ausgegeben werden.  Das wird
@@ -23,6 +24,7 @@ erreicht, indem man eine Ganztaktpause notiert und ihre Ausgabeform
 
 "
   doctitlede = "Isolierte Prozentwiederholungen"
+
 %% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441
   texidocfr = "
 Des symboles de pourcentage isolés peuvent aussi être obtenus, au
@@ -33,17 +35,19 @@ moyen d'un silence multi-mesures dont on modifie l'aspect :
 
 
   texidoc = "
-Isolated percents can also be printed.  This is done by entering a
-multi-measure rest with a different print function:
+Isolated percents can also be printed.
 
 "
   doctitle = "Isolated percent repeats"
 } % begin verbatim
 
+makePercent =
+#(define-music-function (parser location note) (ly:music?)
+   "Make a percent repeat the same length as NOTE."
+   (make-music 'PercentEvent
+               'length (ly:music-length note)))
+
 \relative c'' {
-  \override MultiMeasureRest #'stencil
-    = #ly:multi-measure-rest::percent
-  \override MultiMeasureRest #'thickness = #0.48
-  R1
+  \makePercent s1
 }
 
index ff4ab26e4bb4b65ef2a2fcc137f5d2d327d8b1c8..1749f1ba020d4c06e8bfb697c7c03f82692234c5 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "keyboards, percussion, fretted-strings, template"
@@ -17,6 +17,7 @@ dentro de una sección @code{\\transpose}.
 "
   doctitlees = "Plantilla para combo de jazz"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Hier ist ein ziemlich kompliziertes Beispiel für ein Jazz-Ensemble. Achtung:
@@ -27,6 +28,7 @@ sich die Noten innerhalb eines @code{\transpose}-Abschnitts befinden.
 "
 
   doctitlede = "Vorlage für Jazz-Combo"
+
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Bien que compliqué de prime abord, voici un canevas tout à fait indiqué
index c1d9e3b27fe981d50c3dceb9d0a8b3874022ab8c..d74d0626915ea99e7adcaf287f0744f104128498 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches, tweaks-and-overrides"
index 5cb297204354d28141773477bccef28864ab8cfa..97f405b56c786c11b96e5f505f56dc6ec87c5350 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.29"
+\version "2.13.31"
 \include "english.ly"
 
 #(set-global-staff-size 15)
index 2f74627c26ef7879c869476d2c18727f2d9b0a5d..aeb4f2fc6618f420a4f1e9b38ae2613b6e2d5ea0 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, keyboards, fretted-strings"
index 974b5c79b415d45f1540e9a4ba918400db061267..4e277e4c6b1a0146ea3f810a98f42f9158fcb0c0 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.10
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 1e594b6d5601a81366af94cba739951b4741a159..e8cd2a33a28722e7716a0802cf4cd42b97a7443a 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index 1a8664662b16c3dc2f206cdb719c77b0925bebe5..2fcfec919bc4415f63566ed34f04a11c1387f606 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text, vocal-music"
index eb58f15b8aad324f506a5fe422a455b58dd65d08..916c5a71986fbd60300f7ee3dfb20d58fe899548 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.0
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index c9db53c898075ad5c4f7c3dcc8b146793c49d036..7a6a27fdb280b0da32f11c6c1acc070d91ce5a01 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, simultaneous-notes, tweaks-and-overrides"
index 72a9fc9bff1db9c630fcaaa7f4052f88986dcd5e..cec17e80ec3979c198c9cc75ff039cbc92172ad3 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.1
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 10da8793027b426c26f91625f8fd2f3d299deeb8..466118b4f67964d5e7cd9b1ca2b697414f4a6cc1 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation, editorial-annotations"
@@ -17,6 +17,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Für den pädagogischen Einsatz kann eine Linie des Notensystems dicker
@@ -27,6 +28,7 @@ herangezogen.
 
 "
   doctitlede = "Eine Linie des Notensystems dicker als die anderen machen"
+
 %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6
   texidocfr = "
 Vous pourriez avoir envie, dans un but pédagogique, de rendre certaines
index d661bcbad3da4eec34e787c5eebc5e37bb967018..4e4fafddd3bc5106c0548f311deea0b2b2ae6d9b 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "chords"
index 1cf855001e66d9df89fcd3436de86dd13c601d99..5bd7000637fde64ed66a6154bd05911ee8053c62 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
index 7cdc0462e6bb63a76edafd9e631b35f5727f5f1b..2c8a6d3e4c746ae6d5f1ce9af0cbbf8ebbb74d4f 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "editorial-annotations, vocal-music"
index 71d4bf8c649f8d17f9b15c94111b3cf7156b56fb..5185ea4e9f593649670b20aff5987519db156452 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text"
index eff76d668087f354f4654ac9dab710b014544086..bee37cd337a43cbaf899032e4c512e1127e8386f 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "repeats, staff-notation, editorial-annotations"
index 3d5d641b058586e085addac94c3089d2944a5485..00bd8a6b6b68c545578b13e372435ff231ae5289 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation, ancient-notation, contexts-and-engravers, tweaks-and-overrides"
@@ -18,6 +18,7 @@ propiedad @code{transparent}.
 
   doctitlees = "Disposición Mensurstriche (líneas divisorias entre pentagramas)"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Das Mensurstiche-Layout, in welchem die Taktlinien nicht auf den Systemen,
@@ -27,6 +28,7 @@ Systemen werden mit der the @code{transparent}-Eigenschaft ausgelöscht.
 
 "
   doctitlede = "Mensurstriche-Layout (Taktstriche zwischen den Systemen"
+
 %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6
   texidocfr = "
 En musique mensurale, les barres de mesure ne traversent pas les
index d44221e5d3deaf3d872fb1569c82e97f49454933..4f94c717791a0be6679870f055ccd46728ffd72f 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
index 9a39949aebf07f590038d42320bb989f883bf629..caf014be42a4783e5dcf6044493c405207bbc7ac 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 661eb62e6c072ba7443dafdc5b0402b53c6ab5c1..c593d71cd1a331c71f6e405a25f171fdabf89e41 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks"
@@ -21,6 +21,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
  texidocde = "
 Die Abkürzungen sind in der Datei @samp{ly/script-init.ly} definiert, wo
@@ -34,6 +35,7 @@ assoziieren, muss der Wert @code{trill} der Variable
 
 "
   doctitlede = "Die Standardwerte der Abkürzungen von Artikulationen verändern"
+
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Les raccourcis sont répertoriés dans le fichier
index f9e9220cb4232b54b7ec41944488a4fc79cc6fc4..c4f0d2349886c4b5c0d0d1322bf294b6cff7724d 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
index 07dbf6fcae4e178c19267de031dd232652af03c8..d3cfb319217fcb7954a673e2545ded6db1d827b0 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, simultaneous-notes, tweaks-and-overrides"
index 1eb6e22964f2564ff1277e51d4209777b02fd890..7fe14ba019df2eff0c046a2672a8f0bc997e1889 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index d0b0b6d98778030f25615d75f18dc7fcf1c530b2..d5b4d16094d0589a56595bf77f658bb7fcb95909 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, text"
@@ -25,6 +25,7 @@ longitud del texto, éste aparecerá centrado.
 
 doctitlees = "Marcado de silencios multicompás"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "Textbeschriftungen, die an Mehrtaktpausen gehängt wird,
 wird über oder unter der Pause zentriert.  Lange Beschriftungen
@@ -42,6 +43,7 @@ ist."
   doctitlede = "Textbeschriftung und Mehrtaktpausen"
 
 
+
 %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685
   texidocfr = "
 Lorsque du texte est attaché à un silence multi-mesures, il sera centré
index 5853c1267f951e750dce53ae186f50fb25bbe400..1799dfe6380cb52ca57958b81a902afcb497105f 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation, contexts-and-engravers, tweaks-and-overrides"
@@ -24,6 +24,7 @@ todos los pentagramas. Las posibilidades son
 "
   doctitlees = "Anidado de grupos de pentagramas"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die Eigenschaft @code{systemStartDelimiterHierarchy} kann eingesetzt
@@ -39,6 +40,7 @@ die gesamte Gruppe.  Die Möglichkeiten der Anfangsklammer sind: @code{SystemSta
 
 "
   doctitlede = "Systeme schachteln"
+
 %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6
   texidocfr = "
 La propriété @code{systemStartDelimiterHierarchy} permet de créer des
diff --git a/Documentation/snippets/new/changing-the-size-of-woodwind-diagrams.ly b/Documentation/snippets/new/changing-the-size-of-woodwind-diagrams.ly
new file mode 100644 (file)
index 0000000..f70aebc
--- /dev/null
@@ -0,0 +1,31 @@
+\version "2.13.31"
+
+\header {
+  lsrtags="winds"
+  texidoc="
+The size and thickness of woodwind diagrams can be changed.
+"
+
+  doctitle = "Changing the size of woodwind diagrams"
+}
+
+\relative c'' {
+  \textLengthOn
+  c1^\markup
+    \woodwind-diagram
+      #'piccolo
+      #'()
+
+  c^\markup
+    \override #'(size . 1.5) {
+      \woodwind-diagram
+        #'piccolo
+        #'()
+    }
+  c^\markup
+    \override #'(thickness . 0.15) {
+      \woodwind-diagram
+        #'piccolo
+        #'()
+    }
+}
diff --git a/Documentation/snippets/new/graphical-and-text-woodwind-diagrams.ly b/Documentation/snippets/new/graphical-and-text-woodwind-diagrams.ly
new file mode 100644 (file)
index 0000000..91d1d44
--- /dev/null
@@ -0,0 +1,30 @@
+\version "2.13.31"
+
+\header {
+  lsrtags="winds"
+  texidoc="
+In may cases, the keys other than the central column can be
+displayed by key name as well as by graphical means.
+"
+
+  doctitle = "Graphical and text woodwind diagrams"
+}
+
+\relative c'' {
+  \textLengthOn
+  c1^\markup
+    \woodwind-diagram
+      #'piccolo
+      #'((cc . (one three))
+         (lh . (gis))
+         (rh . (ees)))
+
+  c^\markup
+    \override #'(graphical . #f) {
+      \woodwind-diagram
+        #'piccolo
+        #'((cc . (one three))
+           (lh . (gis))
+           (rh . (ees)))
+    }
+}
diff --git a/Documentation/snippets/new/hymn-template.ly b/Documentation/snippets/new/hymn-template.ly
new file mode 100644 (file)
index 0000000..89527f6
--- /dev/null
@@ -0,0 +1,100 @@
+\version "2.13.31"
+\header {
+  lsrtags = "vocal-music, template"
+  texidoc = "
+This code shows one way of setting out a hymn tune when each line
+starts and ends with a partial measure.  It also shows how to add
+the verses as stand-alone text under the music.
+
+"
+  doctitle = "Hymn template"
+}
+
+Timeline = {
+  \time 4/4
+  \tempo 4=96
+  \partial 2
+  s2 | s1 | s2 \breathe s2 | s1 | s2 \bar "||" \break
+  s2 | s1 | s2 \breathe s2 | s1 | s2 \bar "||"
+}
+
+SopranoMusic = \relative g' {
+  g4 g | g g g g | g g g g | g g g g | g2
+  g4 g | g g g g | g g g g | g g g g | g2
+}
+
+AltoMusic = \relative c' {
+  d4 d | d d d d | d d d d | d d d d | d2
+  d4 d | d d d d | d d d d | d d d d | d2
+}
+
+TenorMusic = \relative a {
+  b4 b | b b b b | b b b b | b b b b | b2
+  b4 b | b b b b | b b b b | b b b b | b2
+}
+
+BassMusic =  \relative g {
+  g4 g | g g g g | g g g g | g g g g | g2
+  g4 g | g g g g | g g g g | g g g g | g2
+}
+
+global = {
+ \key g \major
+}
+
+\score {  % Start score
+  <<
+    \new PianoStaff <<  % Start pianostaff
+      \new Staff <<  % Start Staff = RH
+        \global
+        \clef "treble"
+        \new Voice = "Soprano" <<  % Start Voice = "Soprano"
+          \Timeline
+          \voiceOne
+          \SopranoMusic
+        >>  % End Voice = "Soprano"
+        \new Voice = "Alto" <<  % Start Voice = "Alto"
+          \Timeline
+          \voiceTwo
+          \AltoMusic
+        >>  % End Voice = "Alto"
+      >>  % End Staff = RH
+      \new Staff <<  % Start Staff = LH
+        \global
+        \clef "bass"
+        \new Voice = "Tenor" <<  % Start Voice = "Tenor"
+          \Timeline
+          \voiceOne
+          \TenorMusic
+        >>  % End Voice = "Tenor"
+        \new Voice = "Bass" <<  % Start Voice = "Bass"
+          \Timeline
+          \voiceTwo
+          \BassMusic
+        >>  % End Voice = "Bass"
+      >>  % End Staff = LH
+    >>  % End pianostaff
+  >>
+}  % End score
+
+\markup {
+  \fill-line {
+    ""
+    {
+      \column {
+        \left-align {
+          "This is line one of the first verse"
+          "This is line two of the same"
+          "And here's line three of the first verse"
+          "And the last line of the same"
+        }
+      }
+    }
+    ""
+  }
+}
+
+\paper {  % Start paper block
+  indent = 0     % don't indent first system
+  line-width = 130   % shorten line length to suit music
+}  % End paper block
diff --git a/Documentation/snippets/new/partcombine-and-autobeamoff.ly b/Documentation/snippets/new/partcombine-and-autobeamoff.ly
new file mode 100644 (file)
index 0000000..ffefba8
--- /dev/null
@@ -0,0 +1,52 @@
+\version "2.13.31"
+
+\header {
+  lsrtags = "rhythms"
+
+  texidoc = "
+The function of @code{@bs{}autoBeamOff} when used with
+@code{@bs{}partcombine} can be difficult to understand.  It may
+be preferable to use
+
+@example
+\set Staff.autobeaming = ##f
+@end example
+
+@noindent
+instead, to ensure that autobeaming will be turned off for the entire
+staff.
+
+@code{\partcombine} apparently works with 3 voices -- stem up single,
+stem down single, stem up combined.
+
+An @code{\autoBeamOff} call in the first argument to partcombine will
+apply to the voice that is active at the time the call is processed,
+either stem up single or stem up combined.
+An @code{\autoBeamOff} call in the second argument will apply to the
+voice that is stem down single.
+
+In order to use @code{\autoBeamOff} to stop all autobeaming when used
+with @code{\partcombine},
+it will be necessary to use @emph{three} calls to @code{\autoBeamOff}.
+
+"
+doctitle = "Partcombine and autoBeamOff"
+}
+
+{
+  %\set Staff.autoBeaming = ##f % turns off all autobeaming
+  \partcombine
+      {
+        \autoBeamOff % applies to split up stems
+        \repeat unfold 4 a'16
+        %\autoBeamOff % applies to combined up stems
+        \repeat unfold 4 a'8
+        \repeat unfold 4 a'16
+      }
+      {
+        \autoBeamOff % applies to down stems
+        \repeat unfold 4 f'8
+        \repeat unfold 8 f'16 |
+      }
+}
+
diff --git a/Documentation/snippets/new/vocal-ensemble-template.ly b/Documentation/snippets/new/vocal-ensemble-template.ly
new file mode 100644 (file)
index 0000000..4f656b9
--- /dev/null
@@ -0,0 +1,81 @@
+\version "2.13.31"
+
+\header {
+  lsrtags = "vocal-music, template"
+  texidoc = "
+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 @qq{Hymn} template, the four voices are
+regrouped on only two staves.
+
+"
+  doctitle = "Vocal ensemble template"
+} % begin verbatim
+
+global = {
+  \key c \major
+  \time 4/4
+}
+
+sopMusic = \relative c'' {
+  c4 c c8[( b)] c4
+}
+sopWords = \lyricmode {
+  hi hi hi hi
+}
+
+altoMusic = \relative c' {
+  e4 f d e
+}
+altoWords = \lyricmode {
+  ha ha ha ha
+}
+
+tenorMusic = \relative c' {
+  g4 a f g
+}
+tenorWords = \lyricmode {
+  hu hu hu hu
+}
+
+bassMusic = \relative c {
+  c4 c g c
+}
+bassWords = \lyricmode {
+  ho ho ho ho
+}
+
+\score {
+  \new ChoirStaff <<
+    \new Lyrics = "sopranos"
+    \new Staff = "women" <<
+      \new Voice = "sopranos" {
+        \voiceOne
+        << \global \sopMusic >>
+      }
+      \new Voice = "altos" {
+        \voiceTwo
+        << \global \altoMusic >>
+      }
+    >>
+    \new Lyrics = "altos"
+    \new Lyrics = "tenors"
+    \new Staff = "men" <<
+      \clef bass
+      \new Voice = "tenors" {
+        \voiceOne
+        << \global \tenorMusic >>
+      }
+      \new Voice = "basses" {
+        \voiceTwo << \global \bassMusic >>
+      }
+    >>
+    \new Lyrics = "basses"
+    \context Lyrics = "sopranos" \lyricsto "sopranos" \sopWords
+    \context Lyrics = "altos" \lyricsto "altos" \altoWords
+    \context Lyrics = "tenors" \lyricsto "tenors" \tenorWords
+    \context Lyrics = "basses" \lyricsto "basses" \bassWords
+  >>
+}
+
diff --git a/Documentation/snippets/new/woodwind-diagrams-key-lists.ly b/Documentation/snippets/new/woodwind-diagrams-key-lists.ly
new file mode 100644 (file)
index 0000000..6a2d21c
--- /dev/null
@@ -0,0 +1,25 @@
+\version "2.13.24"
+
+\header {
+  lsrtags = "winds"
+
+  texidoc="
+The snippet below produces a list of all possible keys and key
+settings for woodwind diagrams as defined in
+@file{scm/define-woodwind-diagrams.scm}.  The list will be displayed
+on the console and in the log file, but not in the music.
+"
+  doctitle = "Woodwind diagrams key lists"
+}
+
+#(print-keys-verbose 'piccolo)
+#(print-keys-verbose 'flute)
+#(print-keys-verbose 'flute-b-extension)
+#(print-keys-verbose 'oboe)
+#(print-keys-verbose 'clarinet)
+#(print-keys-verbose 'bass-clarinet)
+#(print-keys-verbose 'low-bass-clarinet)
+#(print-keys-verbose 'saxophone)
+#(print-keys-verbose 'baritone-saxophone)
+#(print-keys-verbose 'bassoon)
+#(print-keys-verbose 'contrabassoon)
diff --git a/Documentation/snippets/new/woodwind-diagrams-listing.ly b/Documentation/snippets/new/woodwind-diagrams-listing.ly
new file mode 100644 (file)
index 0000000..9425e12
--- /dev/null
@@ -0,0 +1,95 @@
+\version "2.13.31"
+
+\header {
+  lsrtags="winds"
+  texidoc="
+The following music shows all of the woodwind diagrams currently
+defined in LilyPond.
+"
+  doctitle = "Woodwind diagrams listing"
+
+}
+
+\relative c' {
+  \textLengthOn
+  c1^
+  \markup {
+    \center-column {
+      'piccolo
+      " "
+       \woodwind-diagram
+                  #'piccolo
+                  #'()
+    }
+  }
+
+  c1^
+  \markup {
+    \center-column {
+       'flute
+       " "
+       \woodwind-diagram
+          #'flute
+          #'()
+    }
+  }
+  c1^\markup {
+    \center-column {
+      'oboe
+      " "
+      \woodwind-diagram
+        #'oboe
+        #'()
+    }
+  }
+
+  c1^\markup {
+    \center-column {
+      'clarinet
+      " "
+      \woodwind-diagram
+        #'clarinet
+        #'()
+    }
+  }
+
+  c1^\markup {
+    \center-column {
+      'bass-clarinet
+      " "
+      \woodwind-diagram
+        #'bass-clarinet
+        #'()
+    }
+  }
+
+  c1^\markup {
+    \center-column {
+      'saxophone
+      " "
+      \woodwind-diagram
+        #'saxophone
+        #'()
+    }
+  }
+
+  c1^\markup {
+    \center-column {
+      'bassoon
+      " "
+      \woodwind-diagram
+        #'bassoon
+        #'()
+    }
+  }
+
+  c1^\markup {
+    \center-column {
+      'contrabassoon
+      " "
+      \woodwind-diagram
+        #'contrabassoon
+        #'()
+    }
+  }
+}
index 909f9b938e217a60045e402f2900a9784c318e10..302820e731daea7601c8ffa9a38099921beca250 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.1
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index df9a8b630d9a51ad2a0e7c1577a1231f402aeab2..a140ee0c30d34dbc4dc0a4d15cfa5989080550d9 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.0
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index bfeaa9d433c20f20cf21a3a3522d1a629cfaffe8..c1ea51e7cf3fdb5dcf05307f7dda85a237ebf0e0 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.11
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 0cd919316296d6b70dd5702721f9fde2e47c32e8..141cccca8434f0e8871ab872adfa36979234c8a6 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "template"
@@ -19,6 +19,22 @@ a Do antes de ser asignada a una variable.
 
 "
   doctitlees = "Plantilla de orquesta con coro y piano"
+
+%% Translation of GIT committish: 64feeff58e5ce3397de87188a08ac99f7ef8e37b
+
+  texidocde = "
+Diese Vorlage zeigt die Benutzung von geschachtelten
+@code{StaffGroup}- und @code{GrandStaff}-Kontexte, um
+Instrumente in Untergruppen zu unterteilen, und die
+Benutzung von @code{\\transpose} für transponierende
+Instrumente.  Alle Noten werden in C geschrieben.  Noten
+können in C eingegeben werden, oder auch in der Tonart
+des Instrumentes: dann müssen sie zuerst nach C transponiert
+werden, bevor sie einer Variable zugewiesen werden.
+
+"
+  doctitlede = "Orchester Chor und Klavier"
+
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Ce canevas illustre l'utilisation de contextes @code{StaffGroup} pour
index 4ae8e6853acdf585890c521e5469fd8fec724398..647f51149176f0a7a794478b5f0ea2e60bb15a5d 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches, text"
@@ -19,6 +19,7 @@ ajuste @code{ottavation} después de invocar la instrucción
 
   doctitlees = "Texto de octava alta y baja"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Intern setzt die @code{set-octavation}-Funktion die Eigenschaften
@@ -30,6 +31,7 @@ und @code{middleCPosition}.  Um den Text der Oktavierungsklammer zu
 "
 
 doctitlede = "Ottava-Text"
+
 %% Translation of GIT committish: 58a29969da425eaf424946f4119e601545fb7a7e
   texidocfr = "
 En interne, la fonction @code{\\ottava} détermine les
index 9dc45f52c106934605b16e894e9a33c6ca7a6840..4af357c65c12cfc18421a32f011a910f8527985c 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text, titles"
index 7e7d7c1031a36b108e0867d7077c7fcb0c2bd93e..94b09852b0c8b637f6d6069eb63dd57e9ced1125 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "spacing"
diff --git a/Documentation/snippets/partcombine-and-autobeamoff.ly b/Documentation/snippets/partcombine-and-autobeamoff.ly
new file mode 100644 (file)
index 0000000..acd4270
--- /dev/null
@@ -0,0 +1,57 @@
+% 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.31
+\version "2.13.31"
+
+\header {
+  lsrtags = "rhythms"
+
+  texidoc = "
+The function of @code{@bs{}autoBeamOff} when used with
+@code{@bs{}partcombine} can be difficult to understand.  It may
+be preferable to use
+
+@example
+\set Staff.autobeaming = ##f
+@end example
+
+@noindent
+instead, to ensure that autobeaming will be turned off for the entire
+staff.
+
+@code{\partcombine} apparently works with 3 voices -- stem up single,
+stem down single, stem up combined.
+
+An @code{\autoBeamOff} call in the first argument to partcombine will
+apply to the voice that is active at the time the call is processed,
+either stem up single or stem up combined.
+An @code{\autoBeamOff} call in the second argument will apply to the
+voice that is stem down single.
+
+In order to use @code{\autoBeamOff} to stop all autobeaming when used
+with @code{\partcombine},
+it will be necessary to use @emph{three} calls to @code{\autoBeamOff}.
+
+"
+doctitle = "Partcombine and autoBeamOff"
+} % begin verbatim
+
+
+{
+  %\set Staff.autoBeaming = ##f % turns off all autobeaming
+  \partcombine
+      {
+        \autoBeamOff % applies to split up stems
+        \repeat unfold 4 a'16
+        %\autoBeamOff % applies to combined up stems
+        \repeat unfold 4 a'8
+        \repeat unfold 4 a'16
+      }
+      {
+        \autoBeamOff % applies to down stems
+        \repeat unfold 4 f'8
+        \repeat unfold 8 f'16 |
+      }
+}
+
index fcb9e75e47e86ec00ea1f86eb74fbc180cbb19a5..adc3422be23174e310f6b846271501508aa9cb8d 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "repeats, tweaks-and-overrides"
@@ -15,12 +15,14 @@ la propiedad de contexto @code{repeatCountVisibility}.
 "
   doctitlees = "Visibilidad del contador de repeticiones de tipo porcentaje"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Prozentwiederholungszähler können in regelmäßigen Intervallen angezeigt
 werden, indem man die Eigenschaft @code{repeatCountVisibility} beeinflusst.
 "
   doctitlede = "Sichtbarkeit von Prozent-Wiederholungen"
+
 %% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441
   texidocfr = "
 Le numéro de mesure répétée sera imprimé à intervalle régulier si vous
index 98946c5372367927b9aee09579de64731d56f163..369fa5b17d0a4233c0e7797ab17543b8d13cad72 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "repeats"
@@ -15,6 +15,7 @@ ve en este ejemplo:
 "
   doctitlees = "Percent repeat counter"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Ganztaktwiederholungen mit mehr als zwei Wiederholungen erhalten einen
@@ -22,6 +23,7 @@ Zähler, wenn man die entsprechende Eigenschaft einsetzt:
 
 "
   doctitlede = "Prozent-Wiederholungen zählen"
+
 %% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441
   texidocfr = "
 Les répétitions de plus de 2 mesures sont surmontées d'un compteur,
index 2c3486324e55a0a41a96614434119efd875c4c34..88ad3a56eaea198440134fae0ff3dd868a7f7edd 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "percussion"
index f417e8b267d6533556ceb7af1bd8befef4582eb2..ef732372f5f685cde2675b7e2bf7ba5ceaaa478c 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
@@ -16,6 +16,7 @@ sincopados se deben barrar manualmente.
 
 "
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Dieses künstliche Beispiel zeigt, wie sowohl automatische als auch
@@ -27,6 +28,7 @@ gesetzt werden.
   doctitlede = "Zeilenumbrüche bei N-tolen mit Balken erlauben"
 
 
+
 %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685
   texidocfr = "
 Cet exemple peu académique démontre comment il est possible d'insérer un saut
index 9b80fdeba17ce56b67b1f053bbf519c73e82f4be..1483584ee5de352860992fc5fc3b4ed4f43b0c2d 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "keyboards, template"
@@ -14,12 +14,14 @@ notas.
 "
   doctitlees = "Plantilla de piano (sencilla)"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Hier ein einfaches Klaviersystem.
 
 "
   doctitlede = "Vorlage für einfache Klaviernotation"
+
 %% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16
   texidocfr = "
 Voici une simple partition pour piano avec quelques notes.
index a1843fbd44a69a2a1c8a7a7c33293dd272d63743..56e2b7aee2a2858862e8d6b4fbbd68547e99d716 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index a843e140169f55b523de11d79138c7c4fd4f66a9..c79c46a4cdfd7f896ccd877bd645a948031ab0ac 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text, keyboards, template"
@@ -14,10 +14,12 @@ se puede centrar entre los pentagramas de un sistema de piano.
 "
   doctitlees = "Plantilla de piano con letra centrada"
 
+
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 旋律と歌詞のための譜表を持つ代わりに、歌詞をピアノ譜の 2 つの譜の間に置くことができます。
 "
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Anstatt ein eigenes System für Melodie und Text zu schreiben, können
@@ -25,6 +27,7 @@ Sie den Text auch zwischen die beiden Klaviersysteme schreiben
 (und damit das zusätzliche System für die Gesangstimme auslassen).
 "
 
+
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Lorsque la mélodie est doublée au piano, cela ne nécessite pas forcément
index 629b32ff8d9d60aad8833e0a6874bfbde8da7d94..2fc6138fd865b7345177e2d8ea320810966cdcf0 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "vocal-music, keyboards, template"
@@ -14,10 +14,12 @@ 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: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 これは一般的な歌曲のフォーマットです: 旋律と歌詞を持つ譜表と、その下にピアノ伴奏譜があります。
 "
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Das nächste Beispiel ist typisch für ein Lied: Im oberen System die
@@ -26,6 +28,7 @@ Melodie mit Text, darunter Klavierbegleitung.
 
   doctitlede = "Vorlage für Klavier und Gesangsstimme"
 
+
 %% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16
   texidocfr = "
 Il s'agit du format classique pour le chant : une portée pour la mélodie
index ef3b20a1360222d11a7bd5a2e31e712168a256d3..e81b0c119683659b93b28e1bc691b489013ac1a6 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.29"
+\version "2.13.31"
 \include "english.ly"
 #(set-global-staff-size 15)
 \paper {
index 0c131246445f2f95769de2c831e57c57aea6cf9b..0743c024466c80bb2e2a51a042d15e2a89a9019f 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "fretted-strings"
@@ -16,6 +16,7 @@ se debe usar una construcción de acorde.
 "
   doctitlees = "Posicionamiento de digitaciones de mano derecha"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Man kann die Positionierung von Fingersatz der rechten Hand besser
@@ -24,6 +25,7 @@ das folgende Beispiel zeigt:
 
 "
   doctitlede = "Positionierung von Fingersatz der rechten Hand"
+
 %% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b
 
   texidocfr = "
index 7dc44cd75c257410c30f794680ce880b8a8680c9..d869914ae1528562311f0929077a467f669c1a17 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "fretted-strings"
@@ -14,6 +14,7 @@ en una pauta normal.
 "
   doctitlees = "Polifonía en tablaturas"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Polyphonie kann in einer Tabulatur (@code{TabStaff}) genauso wie in einem
@@ -21,6 +22,7 @@ normalen Notensystem erstellt werden.
 
 "
   doctitlede = "Polyphonie in einer Tabulatur"
+
 %% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b
 
   texidocfr = "
index b808d48a0d710cdd1ec9473869791d6d1c2a253d..ff736800490bed59a28a84bcdb5d7d021d20ef6d 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index e9b4afd96b45f58893e9072ce4a75c3609fb2d66..48e32a2cb9fd2d1c80e577a22f6f89f7fed33a75 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "editorial-annotations"
index edb182683de292dead6758f755ae8bca1e65b83a..ee2893c3d4d953df6f95223c58addb2da313683f 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
index c053678bf001e511a0fe98a138160584d0963532..d9f7b29f2d98be0d2f9598841e2f2e14698b8eb3 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
@@ -21,6 +21,7 @@ columnas musicales de las notas principales.
   doctitlees = "Posicionamiento de las notas de adorno con espacio flotante"
 
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Wenn man die Eigenschaft @code{'strict-grace-spacing} aktiviert,
@@ -33,6 +34,7 @@ Hauptnote gesetzt.
   doctitlede = "Positionierung von Verzierungen mit verschiebbarem Platz"
 
 
+
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Lorsque vous activez la propriété @code{'strict-grace-spacing},
index 5eb9e53ef7bdd4e3c9e43aa10eb32a6f4d1c98ee..3bd979aeaeca5cd9fcf19d41d8055857a3a1c74b 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
@@ -19,6 +19,7 @@ colocación de los silencios multicompás se puede controlar como se
 ve a continuación:
 
 "
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Anders als bei normalen Pausen gibt es keinen direkten Befehl, um die
@@ -31,6 +32,7 @@ werden:
   doctitlede = "Positionierung von Ganztaktpausen"
 
 
+
 %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685
   texidocfr = "
 Si l'on peut positionner verticalement un silence simple en le
index c4cdc2b38400e8326a4b302899f1745de73a4128..b5306d05532e435e40d9718bbba19e50199e10a7 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "repeats, breaks"
index eece3a41b642c6b00cfbd96f034ac5851fa0732f..f6e2e2f1236e48dc46667061f3bfbb1b3b08980b 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, editorial-annotations, tweaks-and-overrides"
@@ -16,6 +16,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Textbeschriftung kann innerhalb von Bögen gesetzt werden, wenn die
@@ -23,6 +24,7 @@ Textbeschriftung kann innerhalb von Bögen gesetzt werden, wenn die
 
 "
   doctitlede = "Textbeschriftung innerhalb von Bögen positionieren"
+
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Lorsqu'il vous faut inscrire une annotation à l'intérieur d'une liaison,
index 2935da57740c0ed009717b0e625ef8c5f311b96b..a83be09a05f2e1289e0d94c7b55011738090f338 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches"
@@ -19,6 +19,7 @@ dentro del contexto de @code{Staff}.
 
 "
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   doctitlede = "Verhindern, dass zusätzliche Auflösungszeichen automatisch
 hinzugefügt werden"
@@ -29,6 +30,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: 58a29969da425eaf424946f4119e601545fb7a7e
   texidocfr = "
 En accord avec les règles standards de l'écriture musicale, on grave
diff --git a/Documentation/snippets/preventing-final-mark-from-removing-final-tuplet.ly b/Documentation/snippets/preventing-final-mark-from-removing-final-tuplet.ly
new file mode 100644 (file)
index 0000000..44bd404
--- /dev/null
@@ -0,0 +1,47 @@
+%% Do not edit this file; it is automatically
+%% generated from LSR http://lsr.dsi.unimi.it
+%% This file is in the public domain.
+\version "2.13.31"
+
+\header {
+  lsrtags = "rhythms"
+
+  texidoc = "
+The addition of a final @code{mark} can result in the loss of a final
+tuplet marking.  This can be overcome by setting @code{TupletBracket
+#'full-length-to-extent} to @code{false}.
+
+"
+  doctitle = "Preventing final mark from removing final tuplet"
+} % begin verbatim
+
+\new Staff {
+   \set tupletFullLength = ##t
+   \time 1/8
+   \times 2/3 { c'16 c'16 c'16 }
+   \times 2/3 { c'16 c'16 c'16 }
+   \times 2/3 { c'16 c'16 c'16 }
+   \override Score.RehearsalMark #'break-visibility = ##(#t #t #t)
+   \override Score.RehearsalMark #'direction = #down
+   \override Score.RehearsalMark #'break-align-symbol =  #'clef
+   \override Score.RehearsalMark #'self-alignment-X = #right
+   \mark "Composed Feb 2007 - Feb 2008"
+}
+
+\new Staff {
+   \set tupletFullLength = ##t
+
+   \override TupletBracket #'full-length-to-extent = ##f
+
+   \time 1/8
+   \times 2/3 { c'16 c'16 c'16 }
+   \times 2/3 { c'16 c'16 c'16 }
+   \times 2/3 { c'16 c'16 c'16 }
+   \override Score.RehearsalMark #'break-visibility = ##(#t #t #t)
+   \override Score.RehearsalMark #'direction = #down
+   \override Score.RehearsalMark #'break-align-symbol =  #'clef
+   \override Score.RehearsalMark #'self-alignment-X = #right
+   \mark "Composed Feb 2007 - Feb 2008"
+}
+
+
index d8e0ce826c0e0a25dfcbad9e47e7e658c4eda904..258958a5cdb452668562601c91873c05e52b762c 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches"
@@ -18,6 +18,7 @@ propiedad @code{printKeyCancellation} del contexto @code{Staff}.
 
 "
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 doctitlede = "Auflösungzeichen nicht setzen wenn die Tonart wechselt"
 
@@ -27,6 +28,7 @@ um Versetzungszeichen der vorherigen Tonart aufzulösen.  Das kann
 verhindert werden, indem die @code{printKeyCancellation}-Eigenschaft
 im @code{Staff}-Kontext auf \"false\" gesetzt wird.
 "
+
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Après un changement de tonalité, un bécarre est imprimé pour annuler
index db3762e8f5986af77edc646b2d213602ef8bcea1..ac94d2e94afe1d454765e2cdaae72839edc9ca12 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "repeats, tweaks-and-overrides"
@@ -14,6 +14,7 @@ principio de la pieza, sobreescribiendo la propiedad correspondiente:
 "
   doctitlees = "Imprimir puntos de repetición al prinicpio de la pieza"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Ein @code{|:}-Taktstrich kann auch zu Beginn eines Stückes ausgegeben werden, indem
@@ -21,6 +22,7 @@ man die entsprechende Eigenschaft verändert:
 
 "
   doctitlede = "Ein Wiederholungszeichen zu Beginn eines Stückes ausgeben"
+
 %% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441
   texidocfr = "
 Bien qu'allant à l'encontre des usages en matière de gravure, vous
index e634911ff9fd767dd64754e034c9baf021e4d669..57aa1dd3a795d837f97603ff42cca5bb9f4b84d9 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
@@ -19,6 +19,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Taktnummern können in regelmäßigen Intervallen gesetzt werden, indem
@@ -30,6 +31,7 @@ am Ende einer Zeile.
   doctitlede = "Setzen der Taktnummern in regelmäßigen Intevallen"
 
 
+
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Vous pouvez imprimer un numéro de mesure à intervalle régulier plutôt
index 49813be5f2a0db45970b1066c27a058dcaaf0daa..b470e056ca5056f214e5b8dc46d1e424df2b7538 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
@@ -15,6 +15,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Taktnummern können auch in Boxen oder Kreisen gesetzt werden.
@@ -23,6 +24,7 @@ Taktnummern können auch in Boxen oder Kreisen gesetzt werden.
   doctitlede = "Setzen von Taktnummern in Kästen oder Kreisen"
 
 
+
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Les numéros de mesures peuvent être encadrés ou entourés d'un cercle.
index acaeb05607e274ee763d66561d72361678d925b6..cc3f8e24321f7c7c27dfa1b1686a7385e9e2cce4 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks"
@@ -15,6 +15,7 @@ Se pueden imprimir reguladores con un círculo en la punta (notación
 "
   doctitlees = "Impresión de reguladores utilizando la notación «al niente»"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
  texidocde = "
  Crescendo-Klammern können mit einem kleinen Kreis vor der Spitze
@@ -24,6 +25,7 @@ Se pueden imprimir reguladores con un círculo en la punta (notación
 
 "
   doctitlede = "Crescendo Klammern al niente schreiben"
+
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Des crescendos ou decrescendos @emph{al niente} peuvent être indiqués de
index ff63b9688c65b79951b128384f5307a74160d302..a6cea07f35494e64de3305e53cca804270627579 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text"
index 6c52ce56361af23e2c7060c457cd161cfba55287..812186d01d5877be4cc1c5543a8ae058f75ec781 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text"
@@ -15,6 +15,7 @@ cualquiera.
 "
   doctitlees = "Imprimir marcas en cualquier pentagrama"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Normalerweise werden Textzeichen nur über dem obersten Notensystem gesetzt.  Sie
@@ -22,6 +23,7 @@ können aber auch über jedem System ausgegeben werden.
 
 "
   doctitlede = "Zeichen über jedem System ausgeben"
+
 %% Translation of GIT committish: 548ef200973bd3d46ea75c5498461d9e5f168334
   texidocfr = "
 Bien que ces indications textuelles ne soient habituellement imprimées
index 19b57ab12b1f316584c7cae533d99d2eba9da77f..95af261835da3e73f231683470d48bbad6fa7a98 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, expressive-marks, staff-notation, tweaks-and-overrides"
@@ -19,6 +19,7 @@ adecuadamente la propiedad @code{direction} de
   doctitlees = "Impresión de indicaciones metronómicas y letras de ensayo debajo del pentagrama"
 
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Normalerweise werden Metronom- und Übungszeichen über dem Notensystem ausgegeben.
@@ -27,6 +28,7 @@ von @code{MetronomeMark} oder @code{RehearsalMark} entsprechend verändert werde
 
 "
   doctitlede = "Metronom- und Übungszeichen unter das System setzen"
+
 %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6
   texidocfr = "
 Les indications de tempo et les marques de repère s'impriment par défaut
index 93801706758d7858c2a6b689079f02829814b3a3..f4f5ec1cadcbbe65bb3bb6a800e471ba0700b950 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, percussion"
index c91706ebe0df7e7e0282ee8aa0c3d0ec9bde99b7..fa806890d97cc8db245230ed988a9524355cdcc6 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "tweaks-and-overrides"
index afe9b83e83dc54b3d3282988edd67a74e908cb05..bf7177c49f35567bbcd6935596649a9c3dabbef9 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "editorial-annotations, text, world-music"
index 73631624d96feeeae3ba0127b253d859864d4f21..743b9b2f834869795bd3ff9c78cdf6a23dce084d 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
@@ -21,6 +21,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Standardmäßig wird die erste Taktzahl einer Paritur nicht gesetzt,
@@ -34,6 +35,7 @@ werden, damit das funktioniert.
   doctitlede = "Setzen der Taktnummer für den ersten Takt"
 
 
+
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Par défaut, LilyPond n'affiche pas le premier numéro de mesure s'il est
index 010220aa250f1399c22b0c272085fe3417ccd640..89517ada1a18b7b450d50b3803abc9696ce330f5 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "tweaks-and-overrides, spacing"
index f7278abb13194ae59eec230275980aebf7316741..5dc74ff4a06e22485be0a81a2f99a67e886bb429 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches, staff-notation"
@@ -19,6 +19,7 @@ se transportan todas las notas (incluidas las citadas).
 
 doctitlees = "Citar otra voz con transposición"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Zitate berücksichtigen sowohl die Transposition der Quelle als auch
@@ -29,6 +30,7 @@ in diesem Fall werden alle Noten (auch die zitierten) transponiert.
 
 "
   doctitlede = "Eine Stimme mit Transposition zitieren"
+
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Les citations tiennent compte de la transposition, aussi bien celle de
index 585c0563cc87756bdb91e92d547683c8ccd6d86b..5e262fc8d6354f29aad134625e57efeda39e76d3 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation"
@@ -25,6 +25,7 @@ Para ver una lista de los tipos de evento, consulte la sección
 "
   doctitlees = "Citar otra voz"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die @code{quotedEventTypes}-Eigenschaft bestimmt die
@@ -38,6 +39,7 @@ sich @code{rest-event} nicht in @code{quotedEventTypes} befindet.
 "
 
   doctitlede = "Eine andere Stimme zitieren"
+
 %% Translation of GIT committish: 99dc90bbc369722cf4d3bb9f30b7288762f2167f6
   texidocfr = "
 Les types d'événement pris en charge pour la citation peuvent se régler
index e0ecc616e2ff1ce1c9eb74662e5ebba375e26c8d..5e0327cab66589192a829d6e9783863517c7f94b 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "winds"
index 02a121e2cc954fd7329d9141478889fc425cef3b..811798f2608ccea2e50d4f333459bcb01cd7ff98 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
@@ -22,6 +22,7 @@ efectos.
   doctitlees = "Redefinición de los valores globales predeterminados para notas de adorno"
 
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die globalen Standardeinstellungen für Verzierungsnoten werden in
@@ -36,6 +37,7 @@ werden.
   doctitlede = "Globale Umdefinition von Verzierungsnoten"
 
 
+
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Vous pouvez modifier les valeurs des variables @code{startGraceMusic},
index 89c6ec34303749a15876bc205696ddcccd12313e..744b59b9c9eb314759a3591d61b1eca220eb6382 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, contexts-and-engravers"
@@ -17,6 +17,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Taktnummern können vollkommen aus den Noten entfernt werden, indem
@@ -27,6 +28,7 @@ entfernt.
   doctitlede = "Entfernung von Taktnummern in einer Partitur"
 
 
+
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Désactiver le graveur concerné --- @code{Bar_number_engraver} ---
index 17aed3cfc7d7b61910a7c1021f6660d66f024208..274de89b55a1a6a3770a7b60a4e407e0ef875c52 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
index 6805426f56e54f2ee019a8a03960c8bb8080849b..46c6471ff8d6fe3bb78d128a44f87523829a330c 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation, tweaks-and-overrides, breaks"
@@ -23,6 +23,7 @@ escribe.
 "
   doctitlees = "Quitar la primera línea vacía"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Ein leeres Notensystem kann auch aus der ersten Zeile einer Partitur
@@ -38,6 +39,7 @@ gültig sind.
 
 "
   doctitlede = "Die erste leere Notenzeile auch entfernen"
+
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Par défaut, le premier système comportera absolument toutes les portées.
index 1e50a53aa1d5f2f8abc5e7b3b552ccedd2a4bd81..e703c067d36c3bd407cc7d1cb0c68caf0c4dbbed 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.29"
+\version "2.13.31"
 \include "english.ly"
 #(set-global-staff-size 15)
 \paper {
index 43f12c6d23d992fb368514c809d56793ca6a33d7..b33d63c596e73d905e7d15f11d2cf94e5b119903 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, ancient-notation, tweaks-and-overrides"
@@ -11,6 +11,7 @@
   texidoces = "
 Los silencios se pueden imprimir en distintos estilos.
 "
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 
   doctitlede = "Pausenstile"
@@ -19,6 +20,7 @@ Pausen können in verschiedenen Stilen dargestellt werden.
 "
 
 
+
 %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685
   texidocfr = "
 Les silences peuvent être gravés selon différents styles.
index c0d974719f04fefc16f2d9558a10774b1ca1bbb6..4e3cc2271a535d3d36bb61b00b0a6617a3ea7f4e 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.29
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 9160497ffe45d15a961004ca76d0c04f4d5b3047..d40b745501579e05a47021f61429374e4b7729c0 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
index b703d9d0c496104bf4bd7942481e08e706d93fb8..1fea62052f8a120c2e3699788d2686af739e27b9 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.29"
+\version "2.13.31"
 \include "english.ly"
 #(set-global-staff-size 15)
 \paper {
index d0c909cda624168eb033dec435f62276b482a587..0b9ee61b80cbaab87f090a06baff6c8946a094c9 100644 (file)
@@ -33,10 +33,12 @@ modifying-tuplet-bracket-length.ly
 moving-dotted-notes-in-polyphony.ly
 multi-measure-rest-markup.ly
 non-default-tuplet-numbers.ly
+partcombine-and-autobeamoff.ly
 permitting-line-breaks-within-beamed-tuplets.ly
 positioning-grace-note-beams-at-the-height-of-normal-note-beams.ly
 positioning-grace-notes-with-floating-space.ly
 positioning-multi-measure-rests.ly
+preventing-final-mark-from-removing-final-tuplet.ly
 printing-bar-numbers-at-regular-intervals.ly
 printing-bar-numbers-inside-boxes-or-circles.ly
 printing-metronome-and-rehearsal-marks-below-the-staff.ly
diff --git a/Documentation/snippets/satb-choir-template---four-staves.ly b/Documentation/snippets/satb-choir-template---four-staves.ly
new file mode 100644 (file)
index 0000000..09ecf70
--- /dev/null
@@ -0,0 +1,53 @@
+%% Do not edit this file; it is automatically
+%% generated from LSR http://lsr.dsi.unimi.it
+%% This file is in the public domain.
+\version "2.13.31"
+
+\header {
+  lsrtags = "vocal-music, template"
+
+  texidoc = "
+SATB choir template (four staves)
+
+"
+  doctitle = "SATB Choir template - four staves"
+} % begin verbatim
+
+global = {
+  \key c \major
+  \time 4/4
+}
+sopranonotes = \relative c'' {c2 d2}
+sopranowords = \lyricmode { do do }
+altonotes = \relative c'' {c2 d2}
+altowords = \lyricmode { re re }
+tenornotes = {
+  \clef "G_8" c2 d2}
+tenorwords = \lyricmode { mi mi }
+bassnotes = {
+  \clef bass c2 d2}
+basswords = \lyricmode { mi mi }
+
+\score{
+  \context ChoirStaff
+  <<
+    \context Staff = soprano <<
+      \context Voice = sop { << \global \sopranonotes >> }
+      \lyricsto "sop" \new Lyrics \sopranowords
+    >>
+    \context Staff = alto <<
+      \context Voice = alt { << \global \altonotes >> }
+      \lyricsto "alt" \new Lyrics \altowords
+    >>
+    \context Staff = tenor <<
+      \context Voice = ten { << \global \tenornotes >> }
+      \lyricsto "ten" \new Lyrics \tenorwords
+    >>
+    \context Staff = bass <<
+      \context Voice = bas { << \global \bassnotes >> }
+      \lyricsto "bas" \new Lyrics \basswords
+    >>
+  >>
+}
+
+
index 64c68633f39916bcecb1f93dee1420aa748641b7..b346ae31842adf5fb4f82f435933879df016c6b7 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "template"
index 33fb3e1fea928df9e5bc3e1c5241841123813c1c..536429d37804510940c4e147cb43e6e360d3728d 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.29"
+\version "2.13.31"
 \header {
   lsrtags = "headwords"
   texidoc = "Random complex notation"
index 5a39c1a8c26862fd185653647122379318b458ef..b599999a2f5b6ec3d6c1e1b87d8075775c1edd15 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches, tweaks-and-overrides"
index d1645a8aaf87bf3779bc4b99a70fc8848733e50f..c46cf2c124a2d8c4223ec0219b3d835c9b112d21 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
@@ -16,6 +16,7 @@ sobreescribiendo la propiedad @code{'to-barline}.
 "
   doctitlees = "Establecer el comportamiento de los reguladores en las barras de compás"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Wenn die Note, an welcher eine Crescendo-Klammer endet, die erste Note
@@ -24,6 +25,7 @@ beendet.  Dieses Verhalten kann auch mit der Eigenschaft
 @code{'to-barline} geändert werden:
 "
   doctitlede = "Das Verhalten von Crescendo-Klammern an Taktlinien beeinflussen"
+
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 En principe, un soufflet -- (de)crescendo imprimé sous forme graphique --
index 6bdb179ecc6942939d85aa2012a33f5b4890e88e..65d4c5912e6bc2b0dcc5054704afe4e26a5da9ca 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "tweaks-and-overrides, paper-and-layout"
index e9afa80598afc2bc7946ed7f4351a0bc60ddebaf..910a603c6f234ec70135fd8f624eedc051901be8 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.26
-\version "2.13.29"
+\version "2.13.31"
 \header {
 %% Translation of GIT committish: 158658dc75b6f6553e77ff53119ac802eb91f50c
   texidocfr = "LilyPond dispose de trois styles de barre différents
index df0bf6c9bbbe1a867ebfbda647c2197b6a573e54..c1fc671781fcd6bdcc90aa7b0903fca5dbe037b6 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks"
@@ -15,6 +15,7 @@ modificando la propiedad @code{minimum-length} del objeto
 "
   doctitlees = "Ajustar la longitud mínima de los reguladores"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Wenn Crescendo-Klammern zu kurz sind, können sie verlängert werden, indem
@@ -23,6 +24,7 @@ verändert wird.
 
 "
   doctitlede = "Die Mindestlänge von Crescendo-Klammern bestimmen"
+
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Si un soufflet est trop court, il suffit d'ajuster la propriété
index 33e609f8f8e7f75a2389226c49fe41845e6b0ef0..505285f62b3454b45805873edccf3be88d8562ec 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "repeats"
@@ -17,6 +17,7 @@ sólo dura un compás, que corresponde a una duración de 3/4.
 "
   doctitlees = "Shortening volta brackets"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Volta-Klammern werden normalerweise über alle Noten der Klammer gezogen, aber
@@ -26,6 +27,7 @@ es ist möglich sie zu verkürzen.  Hierzu muss
 
 "
   doctitlede = "Volta-Klammern verkürzen"
+
 %% Translation of GIT committish: a5bde6d51a5c88e952d95ae36c61a5efc22ba441
   texidocfr = "
 Les crochets indiquant les fins alternatives s'étalent tout au long ce
index 24e38f367671354272330f7c3ca0dcf97d756abc..fc753f89473a1c4369c19f589f66b5925cfde492 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "chords"
@@ -14,6 +14,7 @@ líneas y cuando cambia el acorde.
 "
   doctitlees = "Imprimir los acordes cuando se produce un cambio"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Akkordsymbole können so eingestellt werden, dass sie nur zu Beginn der Zeile
index 370cd3b3c14b1d5626e2f94c18b66f518e0d3460..b92baa87775368356b931d4ade868ee10306a270 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.27
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, tweaks-and-overrides"
index c8556a70be1672fb641020198cda5c87fe860412..ab4f8802974cdcd83041f80f891ddd03d783bd1c 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "chords"
@@ -14,12 +14,14 @@ obtenemos una hoja guía de acordes o «lead sheet»:
 "
   doctitlees = "Hoja guía de acordes o «lead sheet» sencilla"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
  texidocde = "
 Ein Liedblatt besteht aus Akkordbezeichnungen, einer Melodie und dem Liedtext:
 
 "
   doctitlede = "Ein einfaches Liedblatt"
+
 %% Translation of GIT committish: 9594a4569164407a146bbc4aad8be3a60a4725cf
   texidocfr = "
 Assembler des noms d'accords, une mélodie et des paroles permet
index cf5460e6dc01e1cacc50ec37815d9d6b0ba1eabd..d81490500ab0b851da825f180b7a12561bb449ab 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.29"
+\version "2.13.31"
 \include "english.ly"
 #(set-global-staff-size 15)
 \paper {
index 618d283585004b84004c92e82d173f7e7c5acb2e..6f3e043911a43f9dd01e4a62629e7bf20a161629 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "vocal-music, chords, template"
@@ -14,10 +14,12 @@ letra y acordes.
 "
   doctitlees = "Plantilla de pentagrama único con música letra y acordes"
 
+
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 これは旋律、単語、コードを持つ歌曲の楽譜のためのテンプレートです。
 "
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Mit diesem Beispiel können Sie einen Song mit Melodie,
@@ -26,6 +28,7 @@ Text und Akkorden schreiben.
 
   doctitlede = "Vorlage für eine Notenzeile mit Noten Text und Akkorden"
 
+
 %% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16
   texidocfr = "
 Ce cannevas comporte tous les éléments d'une chanson : la mélodie,
index 53ce5205a7d2a93492bca0c1da324bf18c63e523..a6b6450fef4f255f8734c84d849ce8fe0e73bdfc 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "vocal-music, chords, template"
index 27da77cb030b5afa7049aa73cc039c4e7a69e101..81333dd9b3697b6d0aabd83f37f3d385200233b7 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "chords, template"
@@ -15,10 +15,12 @@ melodía y acordes?  ¡No busque más!
 
 doctitlees = "Plantilla de pentagrama único con música y acordes"
 
+
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 旋律とコードを持つリード譜を欲しくはありませんか?他を見る必要はありません!
 "
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Wollen Sie ein Liedblatt mit Melodie und Akkorden schreiben?  Hier ist
@@ -27,6 +29,7 @@ das richtige Beispiel für Sie!
 
   doctitlede = "Vorlage für eine Notenzeile mit Akkorden"
 
+
 %% Translation of GIT committish: ceb0afe7d4d0bdb3d17b9d0bff7936bb2a424d16
   texidocfr = "
 Vous avez besoin de la partition d'une mélodie avec les accords ?
index a08dba46a159fb74110da365de4b9b9fddfd7922..4deb03de35f9eac86195c3d7a3315b8f693abf86 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "vocal-music, template"
@@ -17,6 +17,7 @@ comentario la línea correspondiente.
 "
   doctitlees = "Plantilla de pentagrama único don notas y letra"
 
+
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 この小さなテンプレートは歌詞を持つ簡単な旋律を表しています。カット&ペーストして、音符@c
@@ -25,6 +26,7 @@ comentario la línea correspondiente.
 行を変更するか、コメント アウトしてください。
 "
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Das nächste Beispiel zeigt eine einfache Melodie mit Text. Kopieren
@@ -38,6 +40,7 @@ entsprechende Zeile entweder ändern oder auskommentieren.
 
   doctitlede = "Vorlage für ein Notensystem mit Noten und Gesangstext"
 
+
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
 
   texidocfr = "
index fe56e6b25a18cb01955957ae8d0cc26257cb975b..ee88a2b3ef598f693bc70e712a0be5424235cde2 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "template"
@@ -15,12 +15,14 @@ un archivo, escriba las notas y ¡ya está!
 "
   doctitlees = "Plantilla de un solo pentagrama con notas únicamente"
 
+
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 これは音符を持つ譜表を提供するとても簡単なテンプレートであり、ソロの楽器や旋律に適しています。@c
 これをファイルにカット&ペーストして、音符を付け加えれば完了です!
 "
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Das erste Beispiel zeigt ein Notensystem mit Noten, passend für ein
@@ -31,6 +33,7 @@ eine vollständige Notationsdatei.
 
   doctitlede = "Vorlage für ein Notensystem"
 
+
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Cet exemple simpliste se compose d'une portée agrémentée de quelques
index 4837a5ca7372ba4dffa2a175ec342d23e1ca448f..b2cf74836582447b688688dda2b72faed7efda0b 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, vocal-music"
index cfb95bc480dd483116f210c401ea85dfc3fd9278..f427a46ffc8bb2af1943c8f0421fabde18bbb1be 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, vocal-music"
index b7adc7ae2cb1903ca68c8b29e9142273a438a8c9..86887461697e9dabfac04ae68151077699e0dea6 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 230c7532ce2fac46ce40d2cdce789d248c9cf0d7..d450fd03573cbcbb4cc47bb1c19ee33451dd0a61 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.29"
+\version "2.13.31"
 \include "catalan.ly"
 #(set-global-staff-size 15)
 \paper{
index 813758df036982e6bfd0bbacdfc803c5ecc514eb..198b1c0b8bfaa3be1a3cfddd84b147b85635784f 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text"
@@ -14,6 +14,7 @@ utilizando instrucciones @code{\\markup}:
 "
   doctitlees = "Elemento de marcado de texto independiente en dos columnas"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Isolierter Text kann in mehreren Spalten mit @code{\\markup}-Befehlen
@@ -21,6 +22,7 @@ angeordnet werden:
 
 "
   doctitlede = "Isolierter Text in zwei Spalten"
+
 %% Translation of GIT committish: 548ef200973bd3d46ea75c5498461d9e5f168334
   texidocfr = "
 L'utilisation de la commande @code{\\markup} permet de distribuer un bloc
index 6bbd767ad3a0c21218c88e2d7740814a21289b68..c21d261d144009e37510946dab06eb4d5b3d80a5 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.4
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index c01c454502e9a8a184801a1ad303fcb038cf6e48..bb804fc862034c920f9a9f915a543ca7f882deda 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
index 60b9fb589c263c6badca885d213b028fb9f2aa90..c2da70bda19fb97462f9b656d51ec1a753054d11 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "editorial-annotations, text, fretted-strings, tweaks-and-overrides"
index db2ca7ed917193c6943acea18815c2f9ad2bc120..57e26c7cc07c60c603776c17cb8ffd37c12aeb7b 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "unfretted-strings, template"
@@ -14,11 +14,13 @@ una sección @code{\\global} para el compás y la armadura
 "
   doctitlees = "Plantilla de cuarteto de cuerda (sencilla)"
 
+
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 これは簡単な弦楽四重奏のためのテンプレートです。これは拍子記号と調号のために
 @code{@bs{}global} セクションを使っています。
 "
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Dieses Beispiel demonstriert die Partitur für ein Streichquartett. Hier
@@ -28,6 +30,7 @@ Vorzeichen benutzt.
 
   doctitlede = "Vorlage für Streichquartett (einfach)"
 
+
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Voici un canevas pour quatuor à cordes.  Notez l'utilisation de la
index 7758e4247b62ec4fba642b4da6ac789b88b60ad6..d9b537cd0b5c5741410ae8c9d4b7e80030e58ec0 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "unfretted-strings, template"
@@ -27,6 +27,7 @@ los archivos independientes!
 "
   doctitlees = "Plantilla de cuarteto de cuerda con particellas independientes"
 
+
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 \"弦楽四重奏テンプレート\" は適切な弦楽四重奏の楽譜を作り出しますが、個々の@c
@@ -41,6 +42,7 @@ los archivos independientes!
 
 別々のファイルに分ける場合は、指定されたコメントを外すことを忘れないでください!
 "
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Mit diesem Beispiel können Sie ein schönes Streichquartett notieren,
@@ -60,6 +62,7 @@ zugewiesen, auf den zurückgegriffen werden kann.
 
   doctitlede = "Vorlage für Streichquartett mit einzelnen Stimmen"
 
+
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Grâce à ce canevas, vous pouvez obtenir une partition d'excellente
index 3de0b7c7d2c2bcafd3e2a4590c22370792db58e4..c96569bdc86413da43706e97590dd10a92326dbb 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.29
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 190a067275167c6dc9dd0afef683d14d392b7033
index d58e306849183164447cd9ad1b6a051fbdc43c5d..882fad9e569e2a63b3b8c9d2d550afb80f173101 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "simultaneous-notes, tweaks-and-overrides"
index 7a428bf4a5b5a98343dfccbe4afd9a877189d5c5..ae9bde8d6dcc7f8f8af94204af985e677a1cc9ab 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "paper-and-layout"
index 0532ea5e549563998fbf99232f7519e03f5facec..d6219307a6820f3d6f3edecb7d4c6b9e2a368bb9 100644 (file)
@@ -1,11 +1,13 @@
 ancient-notation-template----modern-transcription-of-gregorian-music.ly
 ancient-notation-template----modern-transcription-of-mensural-music.ly
+hymn-template.ly
 jazz-combo-template.ly
 orchestra,-choir-and-piano-template.ly
 piano-template-simple.ly
 piano-template-with-centered-dynamics.ly
 piano-template-with-centered-lyrics.ly
 piano-template-with-melody-and-lyrics.ly
+satb-choir-template---four-staves.ly
 score-for-diatonic-accordion.ly
 single-staff-template-with-notes,-lyrics,-and-chords.ly
 single-staff-template-with-notes,-lyrics,-chords-and-frets.ly
index 45e4c64b7b4773eeb438a2ae69b9ff2b5ae807ce..6f96e8f774a81073b7784901c4432c4ce0835877 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.29"
+\version "2.13.31"
 \include "english.ly"
 #(set-global-staff-size 15)
 \paper {
index 9e8d81e26a4570d053124392d5cff58749a84d2f..ccf1668de022c97f2e25cc79950785c05736a59a 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, text"
index 7dfeb6f6349b05ed53477ea171034cc5694f0706..9375fb7e641b1dd9657e7cbc0c23348dd1cdcb10 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation"
index 8de3da9e41bc46ec0e6ee0202996802ea9f3bfe1..140448af495144cb7b242ba49aefaca83f62f9f3 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation, tweaks-and-overrides"
index a166fc8c6583d5a8659c3671c5a0b2a5cd9785a4..f0c119b24a3e85296dadd4dfe7dd89c4a34c7019 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
index 6efcc99fc1f9408165cbc0672f0a2d3188966378..990637a94dbfee85b2db14b69feb2f0794aad640 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "ancient-notation, tweaks-and-overrides"
index bcc1c4f5613c3c87c81bc6f9a7bc03ff3f6ec7b9..53fd25b9a51747055dee1f9bcbb46d6cef36fadc 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches"
@@ -37,6 +37,7 @@ naturales.
 
 "
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   doctitlede = "Noten mit minimaler Anzahl an Versetzungszeichen transponieren."
   texidocde = "Dieses Beispiel benutzt Scheme-Code, um enharmonische
@@ -66,6 +67,7 @@ Auf diese Art werden am meisten natürliche Tonhöhen als enharmonische
 Variante gewählt.
 "
 
+
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Cet exemple, grâce à un peu de code Scheme, donne la priorité aux
index c5c0e2b2ab0ce8701c7c13024966b0c6e62c27f3..0dbac3aa45918059f883f44be078bd40dabe9550 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "pitches, staff-notation, tweaks-and-overrides"
@@ -41,6 +41,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
   doctitlede = "Eigenschaften des Schlüssels optimieren"
   texidocde = "
@@ -73,6 +74,7 @@ Eigenschaften manuell setzt.  Auf der ersten Zeile erhalten die manuellen
 Änderungen die ursprüngliche relative Positionierung von Schlüssel und
 Noten, auf der zweiten Zeile nicht.
 "
+
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 La commande @code{\\clef \"treble_8\"} équivaut à définir @code{clefGlyph},
index b1bffb1884d2f1aeba871e3b074162df21c1cede..ea885ab546cea53576cfaf31514f8d0080ae8e17 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
@@ -22,6 +22,7 @@ cabezas a aspas.
   doctitlees = "Trucar la disposición de las notas de adorno dentro de la música"
 
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Das Layout von Verzierungsausdrücken kann in der Musik verändert
@@ -34,6 +35,7 @@ in ein Kreuz.
   doctitlede = "Veränderung des Layouts von Verzierungen innerhalb der Noten"
 
 
+
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Il est possible de changer globalement la mise en forme des petites
index aab47c5bd3f23399bd8a1420ec0c67fe77bb8b54..137c1bddf72b101adfa218a17a4da9e6096752b0 100644 (file)
@@ -33,7 +33,7 @@
 
 
 
-\version "2.13.29"
+\version "2.13.31"
 #(set-global-staff-size 15)
 
 %%%
index 8609d3c37630b95fd698b261083c2a67c0cb4527..34529e31679afd5ffab8cb7ca72ea245e5c78b70 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "staff-notation, contexts-and-engravers"
@@ -15,6 +15,7 @@ un contexto @code{StaffGroup} o @code{ChoirStaffGroup}.
 "
   doctitlees = "Uso del corchete recto al comienzo de un grupo de pentagramas"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Die Klammer zu Beginn von Systemgruppen kann auch in eine eckige Klammer
@@ -23,6 +24,7 @@ im @code{StaffGroup}- oder @code{ChoirStaffGroup}-Kontext setzt.
 
 "
   doctitlede = "Eine eckige Klammer zu Beginn von Systemgruppen benutzen"
+
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Un regroupement de portées sera indiqué par un simple rectangle
index 9190729f127c9608f1e46b163b6825afab89dd43..4704ac6048f177347f9bb3d57f89bc0a2ef738ae 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms, tweaks-and-overrides"
diff --git a/Documentation/snippets/using-arpeggiobracket-to-make-divisi-more-visible.ly b/Documentation/snippets/using-arpeggiobracket-to-make-divisi-more-visible.ly
new file mode 100644 (file)
index 0000000..3e2f3dc
--- /dev/null
@@ -0,0 +1,46 @@
+%% Do not edit this file; it is automatically
+%% generated from LSR http://lsr.dsi.unimi.it
+%% This file is in the public domain.
+\version "2.13.31"
+
+\header {
+  lsrtags = "expressive-marks, vocal-music"
+
+  texidoc = "
+The @code{arpeggioBracket} can be used to indicate the division of
+voices where there are no stems to provide the information. This is
+often seen in choral music.
+
+"
+  doctitle = "Using arpeggioBracket to make divisi more visible"
+} % begin verbatim
+
+\include "english.ly"
+
+\score {
+  \relative c'' {
+    \key a \major
+    \time 2/2
+    <<
+      \new Voice = "upper"
+      <<
+        { \voiceOne \arpeggioBracket
+          a2( b2
+          <b d>1\arpeggio)
+          <cs e>\arpeggio ~
+          <cs e>4
+        }
+        \addlyrics { \lyricmode { A -- men. } }
+      >>
+      \new Voice = "lower"
+      { \voiceTwo
+        a1 ~
+        a
+        a ~
+        a4 \bar "|."
+      }
+    >>
+  }
+  \layout { ragged-right = ##t }
+}
+
index 117036c444db8bed83867ec305e9587c005b152b..2a257da4248204e6100ecef665799cb1279a730c 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks"
@@ -14,6 +14,7 @@ legato.  Esto se puede conseguir estableciendo @code{doubleSlurs}.
 "
   doctitlees = "Utilizar ligaduras dobles para acordes legato"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Einige Komponisten schreiben doppelte Bögen, wenn Legato-Akkorde notiert
@@ -21,6 +22,7 @@ werden.  Das kann mit der Eigenschaft @code{doubleSlurs} erreicht werden.
 
 "
   doctitlede = "Doppelte Bögen für Legato-Akkorde benutzen"
+
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Certains auteurs utilisent deux liaisons lorsqu'ils veulent
index 96a132a00a6f8dff917556520d2a1190b95bff4b..048438665917e334527dacb4b18356fc09d6572b 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
@@ -17,6 +17,7 @@ acciaccaturas, en otras situaciones.
   doctitlees = "Utilizar la barra que tacha las notas de adorno con notas normales"
 
 
+
 %% Translation of GIT committish: 374d57cf9b68ddf32a95409ce08ba75816900f6b
   texidocfr = "
 Le trait que l'on trouve sur les hampes des acciaccatures peut
index 4ec260377f4da490616c7e619b89d5481cb7972b..4061da16f0956f38b530b9f3d212d73b03084f8b 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.10
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
index 2731034c4b5f982d20d2ccac68e9a923c8ef3a3c..100fe2639560bb88a95fcecb7b4017d339f82a70 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "editorial-annotations, tweaks-and-overrides"
index 820aeaf031980452c6114082b0001bcc235a63c1..3f844580d3ac43cc19a63c1edac5e87c026f174f 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "tweaks-and-overrides"
index 90e84446b1ece58fd7c0f1717900d29ce5e20d5d..c0ba9a9db30a239f927bce8ee9095f640f5382dd 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.10
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
@@ -32,7 +32,7 @@ enmascarada.
 
   lsrtags = "expressive-marks, editorial-annotations"
   texidoc = "
-Any graphical object can be printed over a white backgound to
+Any graphical object can be printed over a white background to
 mask parts of objects that lie beneath.  This can be useful to
 improve the appearance of collisions in complex situations when
 repositioning objects is impractical.  It is necessary to explicitly
index d49ff9b2a46894c245e8cceff7e72ea28c285da1..06808e3456924045baee52c92d656b4c2908f7af 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "rhythms"
@@ -18,6 +18,7 @@ en principio también se puede usar para notas normales consecutivas.
 
 "
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
  texidocde = "
  Überbindungen werden teilweise benutzt, um Arpeggios zu notieren.  In
@@ -30,6 +31,7 @@ für normale Überbindungen eingesetzt werden
   doctitlede = "Überbingungen für Arpeggio genutzen"
 
 
+
 %% Translation of GIT committish: 4da4307e396243a5a3bc33a0c2753acac92cb685
   texidocfr = "
 Les liaisons de tenue servent parfois à rendre un accord arpégé. Dans
index 73c64b0656af2713dccd85a4042389e8ffbd55d0..0cd3aa4966d0bd23006d7ddd5c67b9b89a8980cf 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text"
index 5a6524dd589b3779b13d555ff3dd1a0522860d68..dc371855c741e1996e50ae3c60552fa094cc91e8 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks, ancient-notation"
index 0b4595ba44eafec543a09828757bb043f96b6913..65d0f951f9944e3bbea90fd83fdf92d960a6f297 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "tweaks-and-overrides, spacing"
@@ -21,6 +21,7 @@ largo de su línea de base.
 "
   doctitlees = "Indicaciones dinámicas y textuales alineadas verticalmente"
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
 texidocde = "
 Indem man die @code{'Y-extent}-Eigenschaft auf einen passenden Wert setzt,
@@ -35,6 +36,7 @@ Grundlinie auszurichten.
 
 "
   doctitlede = "Vertikale Ausrichtung von Dynamik und Textbeschriftung beeinflussen"
+
 %% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
   texidocfr = "
 Vous pourrez, en jouant sur la propriété @code{'Y-extent}, aligner les
index 12376f4fd22a57806e52f4d5e14172b0797466e4..a2f5efd13f87f2414f096e07eee5277d1682be7e 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "expressive-marks"
index 61e8cf2bb0e245188c1151752a8941cd8c0e0a16..a19710874f90717df0fd51c92c2185285783793a 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "vocal-music, tweaks-and-overrides, spacing"
@@ -15,6 +15,7 @@ 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: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Dieser Schnipsel zeigt, wie man die Kontexteigenschaften
@@ -23,6 +24,7 @@ die Positionierung von Gesangstext und Ossia-Abschnitten zu kontrollieren.
 
 "
   doctitlede = "Gesangstext und Ossia vertikal ausrichten"
+
 %% Translation of GIT committish: 4ab2514496ac3d88a9f3121a76f890c97cedcf4e
   texidocfr = "
 Cet exemple illustre la manière de positionner une portée d'ossia et
index 07d8d1e631008e5caf63bd7fda68128fe98d278f..bc1ca27ef692b16426d6bbcad8f186ac32216b29 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "vocal-music"
index 298d60819057fa303999f67d9998bdfd4185dc9f..966e42f0d8267daf8a1bc457bd4afac8f68f8022 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "chords, tweaks-and-overrides"
index a2099ba6f06324c779054d35a7d54b8424fc9645..f81577a8296b66dd4dd253ff340548e2d8263007 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "vocal-music, keyboards, template"
@@ -19,6 +19,7 @@ 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: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 このテンプレートは、\"合唱テンプレート\"で示された標準の SATB ボーカル譜に自動@c
@@ -26,6 +27,7 @@ entonces los cambios se aplicarán también a la reducción de piano.
 定義を何回も使用することができます。ボーカルの音符 (例えば、@code{tenorMusic}
 の音符) に変更が加えられた場合、その変更はピアノ譜にも適用されます。
 "
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 In diesem Beispiel wird ein automatischer Klavierauszug zu der
@@ -35,6 +37,7 @@ irgendeine Änderung an einer Chorstimme vornehmen, (etwa
 tenorMusic), verändert sich auch der Klavierauszug entsprechend.
 "
 
+
 %% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Ce canevas ajoute une réduction pour piano à une partition standard pour
@@ -94,23 +97,23 @@ bassWords = \lyricmode {
 \score {
   <<
     \new ChoirStaff <<
-      \new Lyrics = sopranos { s1 }
-      \new Staff = women <<
-        \new Voice = sopranos { \voiceOne << \global \sopMusic >> }
-        \new Voice = altos { \voiceTwo << \global \altoMusic >> }
+      \new Lyrics = "sopranos"
+      \new Staff = "women" <<
+        \new Voice = "sopranos" { \voiceOne << \global \sopMusic >> }
+        \new Voice = "altos" { \voiceTwo << \global \altoMusic >> }
       >>
-      \new Lyrics = altos { s1 }
-      \new Lyrics = tenors { s1 }
-      \new Staff = men <<
+      \new Lyrics = "altos"
+      \new Lyrics = "tenors"
+      \new Staff = "men" <<
         \clef bass
-        \new Voice = tenors { \voiceOne <<\global \tenorMusic >> }
-        \new Voice = basses { \voiceTwo <<\global \bassMusic >> }
+        \new Voice = "tenors" { \voiceOne << \global \tenorMusic >> }
+        \new Voice = "basses" { \voiceTwo << \global \bassMusic >> }
       >>
-      \new Lyrics = basses { s1 }
-      \context Lyrics = sopranos \lyricsto sopranos \sopWords
-      \context Lyrics = altos \lyricsto altos \altoWords
-      \context Lyrics = tenors \lyricsto tenors \tenorWords
-      \context Lyrics = basses \lyricsto basses \bassWords
+      \new Lyrics = "basses"
+      \context Lyrics = "sopranos" \lyricsto "sopranos" \sopWords
+      \context Lyrics = "altos" \lyricsto "altos" \altoWords
+      \context Lyrics = "tenors" \lyricsto "tenors" \tenorWords
+      \context Lyrics = "basses" \lyricsto "basses" \bassWords
     >>
     \new PianoStaff <<
       \new Staff <<
@@ -128,13 +131,5 @@ bassWords = \lyricmode {
       >>
     >>
   >>
-  \layout {
-    \context {
-      % a little smaller so lyrics
-      % can be closer to the staff
-      \Staff
-      \override VerticalAxisGroup #'minimum-Y-extent = #'(-3 . 3)
-    }
-  }
 }
 
index a98cf4f4b5448f739c88bc7e9cc56a8d4ab17cf4..0c80dcf5ff3f3975fb118e777660274337edb12f 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "text, vocal-music, contexts-and-engravers, template"
@@ -16,11 +16,13 @@ colocan utilizando @code{alignAboveContext} y
 "
   doctitlees = "Plantilla para conjunto vocal con letras alineadas encima y debajo de los pentagramas"
 
+
 %% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
   texidocja = "
 このテンプレートは基本的に単純な \"合唱\" テンプレートと同じですが、歌詞が
 @code{alignAboveContext} と @code{alignBelowContext} を用いて配置されています。
 "
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 In diesem Beispiel werden die Texte mit den Befehlen
@@ -30,6 +32,7 @@ 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: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
   texidocfr = "
 Ce canevas ressemble beaucoup à celui pour chœur à quatre voix mixtes.
@@ -83,33 +86,25 @@ bassWords = \lyricmode {
 
 \score {
   \new ChoirStaff <<
-    \new Staff = women <<
+    \new Staff = "women" <<
       \new Voice = "sopranos" { \voiceOne << \global \sopMusic >> }
       \new Voice = "altos" { \voiceTwo << \global \altoMusic >> }
     >>
-    \new Lyrics \with { alignAboveContext = women } \lyricsto sopranos \sopWords
-    \new Lyrics \with { alignBelowContext = women } \lyricsto altos \altoWords
+    \new Lyrics \with { alignAboveContext = #"women" } \lyricsto "sopranos" \sopWords
+    \new Lyrics \with { alignBelowContext = #"women" } \lyricsto "altos" \altoWords
     % we could remove the line about this with the line below, since we want
     % the alto lyrics to be below the alto Voice anyway.
-    % \new Lyrics \lyricsto altos \altoWords
+    % \new Lyrics \lyricsto "altos" \altoWords
 
-    \new Staff = men <<
+    \new Staff = "men" <<
       \clef bass
       \new Voice = "tenors" { \voiceOne << \global \tenorMusic >> }
       \new Voice = "basses" { \voiceTwo << \global \bassMusic >> }
     >>
-    \new Lyrics \with { alignAboveContext = men } \lyricsto tenors \tenorWords
-    \new Lyrics \with { alignBelowContext = men } \lyricsto basses \bassWords
+    \new Lyrics \with { alignAboveContext = #"men" } \lyricsto "tenors" \tenorWords
+    \new Lyrics \with { alignBelowContext = #"men" } \lyricsto "basses" \bassWords
     % again, we could replace the line above this with the line below.
-    % \new Lyrics \lyricsto basses \bassWords
+    % \new Lyrics \lyricsto "basses" \bassWords
   >>
-  \layout {
-    \context {
-      % a little smaller so lyrics
-      % can be closer to the staff
-      \Staff
-      \override VerticalAxisGroup #'minimum-Y-extent = #'(-3 . 3)
-    }
-  }
 }
 
index 63e69207d1c5d6511dfa228f9d9c2c679917073a..67bb73d50bbc0b75520ef500eb0fba673dd14cf6 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.13.21
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
 %% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
@@ -18,6 +18,18 @@ todas las partes) a lo largo de toda la partitura.
 
   doctitlees = "Estrofa para solista y estribillo a dos voces"
 
+%% Translation of GIT committish: 64feeff58e5ce3397de87188a08ac99f7ef8e37b
+
+  texidocde = "
+Diese Vorlage erstellt eine Partitur, die mit Sologesang beginnt und einen
+Refrain für zwei Stimmen enthält.  Sie zeigt auch die Benutzung von
+Platzhalter-Pausen innerhalb der @code{\global}-Variable, um Taktwechsel
+(und andere Elemente, die für alle Stimmen gleich sind) für das gesamte
+Stück zu definieren.
+
+"
+  doctitlede = "Sologesang und zweistimmiger Refrain"
+
   lsrtags = "vocal-music, contexts-and-engravers, template"
   texidoc = "
 This template creates a score which starts with a solo verse and
index a7834cb5d3a324c4bca9696fd09f961c6cc0a523..e255d782b05cae06bcd18e79b0513fb283f818d0 100644 (file)
@@ -1,12 +1,11 @@
-%% Do not edit this file; it is automatically
-%% generated from LSR http://lsr.dsi.unimi.it
-%% This file is in the public domain.
-\version "2.13.29"
+% 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.31
+\version "2.13.31"
 
 \header {
-  lsrtags = "vocal-music, template"
-
-%% Translation of GIT committish: 0b55335aeca1de539bf1125b717e0c21bb6fa31b
+%% Translation of GIT committish: bfc88203ac2572737480e78ef2635ed35b458441
   texidoces = "
 He aquí una partitura vocal estándar para cuatro voces SATB. Con
 grupos mayores, suele ser útil incluir una sección que aparezca en
@@ -17,13 +16,15 @@ voces se reagrupan en sólo dos pentagramas.
 "
   doctitlees = "Plantilla de conjunto vocal"
 
-%% Translation of GIT committish: fa1aa6efe68346f465cfdb9565ffe35083797b86
+
+%% Translation of GIT committish: bfc88203ac2572737480e78ef2635ed35b458441
   texidocja = "
 これは標準の 4 パート SATB (ソプラノ、アルト、テナー、バス) ボーカル譜です。@c
 もっと大きな合唱では、すべてのパートで使用されるセクションをインクルードすると@c
 便利です。例えば、拍子記号と調号はほとんど常にすべてのパートで同じです。\"賛美@c
 歌\" テンプレートのように、4 つのボイスは 2 つの譜にグループ分けされています。"
-%% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
+
+%% Translation of GIT committish: bfc88203ac2572737480e78ef2635ed35b458441
   texidocde = "
 Dieses Beispiel ist für vierstimmigen Gesang (SATB). Bei größeren
 Stücken ist es oft sinnvoll, eine allgemeine Variable zu bestimmen,
@@ -33,7 +34,8 @@ sind fast immer gleich in allen Stimmen.
 
   doctitlede = "Vorlage für Vokalensemble"
 
-%% Translation of GIT committish: bdfe3dc8175a2d7e9ea0800b5b04cfb68fe58a7a
+
+%% Translation of GIT committish: bfc88203ac2572737480e78ef2635ed35b458441
   texidocfr = "
 Ce fichier constitue un canevas standard de partition pour chœur à
 quatre voix mixtes.  Lorsque les ensembles s'étoffent, il est judicieux
@@ -46,6 +48,7 @@ portées.
 "
   doctitlefr = "Ensemble vocal (simple)"
 
+  lsrtags = "vocal-music, template"
   texidoc = "
 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.
@@ -60,7 +63,8 @@ regrouped on only two staves.
 global = {
   \key c \major
   \time 4/4
-}
+} % begin verbatim
+
 
 sopMusic = \relative c'' {
   c4 c c8[( b)] c4
@@ -92,8 +96,8 @@ bassWords = \lyricmode {
 
 \score {
   \new ChoirStaff <<
-    \new Lyrics = sopranos { s1 }
-    \new Staff = women <<
+    \new Lyrics = "sopranos"
+    \new Staff = "women" <<
       \new Voice = "sopranos" {
         \voiceOne
         << \global \sopMusic >>
@@ -103,9 +107,9 @@ bassWords = \lyricmode {
         << \global \altoMusic >>
       }
     >>
-    \new Lyrics = "altos" { s1 }
-    \new Lyrics = "tenors" { s1 }
-    \new Staff = men <<
+    \new Lyrics = "altos"
+    \new Lyrics = "tenors"
+    \new Staff = "men" <<
       \clef bass
       \new Voice = "tenors" {
         \voiceOne
@@ -115,19 +119,11 @@ bassWords = \lyricmode {
         \voiceTwo << \global \bassMusic >>
       }
     >>
-    \new Lyrics = basses { s1 }
-    \context Lyrics = sopranos \lyricsto sopranos \sopWords
-    \context Lyrics = altos \lyricsto altos \altoWords
-    \context Lyrics = tenors \lyricsto tenors \tenorWords
-    \context Lyrics = basses \lyricsto basses \bassWords
+    \new Lyrics = "basses"
+    \context Lyrics = "sopranos" \lyricsto "sopranos" \sopWords
+    \context Lyrics = "altos" \lyricsto "altos" \altoWords
+    \context Lyrics = "tenors" \lyricsto "tenors" \tenorWords
+    \context Lyrics = "basses" \lyricsto "basses" \bassWords
   >>
-  \layout {
-    \context {
-      % a little smaller so lyrics
-      % can be closer to the staff
-      \Staff
-      \override VerticalAxisGroup #'minimum-Y-extent = #'(-3 . 3)
-    }
-  }
 }
 
index f9e651937e474bf79f3069f9717ee46885db17fe..029d06709a92d906cc1f16715fbdb3226ce9f9c7 100644 (file)
@@ -3,19 +3,23 @@ adding-indicators-to-staves-which-get-split-after-a-break.ly
 adjusting-lyrics-vertical-spacing.ly
 ambitus-with-multiple-voices.ly
 ambitus.ly
+ancient-notation-template----modern-transcription-of-gregorian-music.ly
 changing-stanza-fonts.ly
 chant-or-psalms-notation.ly
 forcing-hyphens-to-be-shown.ly
 formatting-lyrics-syllables.ly
 how-to-put-ties-between-syllables-in-lyrics.ly
+hymn-template.ly
 lyrics-alignment.ly
 marking-notes-of-spoken-parts-with-a-cross-on-the-stem.ly
 piano-template-with-melody-and-lyrics.ly
+satb-choir-template---four-staves.ly
 single-staff-template-with-notes,-lyrics,-and-chords.ly
 single-staff-template-with-notes,-lyrics,-chords-and-frets.ly
 single-staff-template-with-notes-and-lyrics.ly
 skips-in-lyric-mode-2.ly
 skips-in-lyric-mode.ly
+using-arpeggiobracket-to-make-divisi-more-visible.ly
 vertically-aligning-ossias-and-lyrics.ly
 vertically-centered-common-lyrics.ly
 vocal-ensemble-template-with-automatic-piano-reduction.ly
index c9395fd666206e5fc340d792a278cdbd067eecc4..a118e243ce3438a671c82eaa0d3960eee0b6d5b0 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "repeats, staff-notation, chords"
@@ -16,6 +16,7 @@ segunda vez debajo de los acordes.
   doctitlees = "Corchetes de primera y segunda vez debajo de los acordes"
 
 
+
 %% Translation of GIT committish: 0a868be38a775ecb1ef935b079000cebbc64de40
   texidocde = "
 Indem man den @code{Volta_engraver} zu dem entsprechenden Notensystem
index 2c9044590bb25db3c18c1ec483e1ec66b2dc5e19..5a36390c73f6e39cbc871207deeb98f95c6710f3 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "repeats, staff-notation"
index 0f18baff1a4fd81522ae0d207ff66d02b85e6dd5..64a39c4ef99aeb9f81cff0334c1084594d55a53d 100644 (file)
@@ -1,7 +1,7 @@
 %% Do not edit this file; it is automatically
 %% generated from LSR http://lsr.dsi.unimi.it
 %% This file is in the public domain.
-\version "2.13.29"
+\version "2.13.31"
 
 \header {
   lsrtags = "repeats, text"
index fbeea97088eabe4da2878622696c691e58659ee2..b6fa2bd14c55ee54adc7340ebb4a198784415bb6 100644 (file)
@@ -2,7 +2,7 @@
 % generated from Documentation/snippets/new
 % This file is in the public domain.
 %% Note: this file works from version 2.12.0
-\version "2.13.29"
+\version "2.13.31"
 #(set-global-staff-size 15)
 \paper {
   line-width = 16\cm
index c0de6281708c987bbde518dcb5d9a81276cd317e..aca4d07fe380342a3f02e150fef6d88ca12f6fae 100644 (file)
@@ -1,3 +1,7 @@
+changing-the-size-of-woodwind-diagrams.ly
 fingering-symbols-for-wind-instruments.ly
 flute-slap-notation.ly
+graphical-and-text-woodwind-diagrams.ly
 recorder-fingering-chart.ly
+woodwind-diagrams-key-lists.ly
+woodwind-diagrams-listing.ly
diff --git a/Documentation/snippets/woodwind-diagrams-key-lists.ly b/Documentation/snippets/woodwind-diagrams-key-lists.ly
new file mode 100644 (file)
index 0000000..343caa6
--- /dev/null
@@ -0,0 +1,30 @@
+% 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.24
+\version "2.13.31"
+
+\header {
+  lsrtags = "winds"
+
+  texidoc="
+The snippet below produces a list of all possible keys and key
+settings for woodwind diagrams as defined in
+@file{scm/define-woodwind-diagrams.scm}.  The list will be displayed
+on the console and in the log file, but not in the music.
+"
+  doctitle = "Woodwind diagrams key lists"
+} % begin verbatim
+
+
+#(print-keys-verbose 'piccolo)
+#(print-keys-verbose 'flute)
+#(print-keys-verbose 'flute-b-extension)
+#(print-keys-verbose 'oboe)
+#(print-keys-verbose 'clarinet)
+#(print-keys-verbose 'bass-clarinet)
+#(print-keys-verbose 'low-bass-clarinet)
+#(print-keys-verbose 'saxophone)
+#(print-keys-verbose 'baritone-saxophone)
+#(print-keys-verbose 'bassoon)
+#(print-keys-verbose 'contrabassoon)
diff --git a/Documentation/snippets/woodwind-diagrams-listing.ly b/Documentation/snippets/woodwind-diagrams-listing.ly
new file mode 100644 (file)
index 0000000..a77328e
--- /dev/null
@@ -0,0 +1,100 @@
+% 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.31
+\version "2.13.31"
+
+\header {
+  lsrtags="winds"
+  texidoc="
+The following music shows all of the woodwind diagrams currently
+defined in LilyPond.
+"
+  doctitle = "Woodwind diagrams listing"
+
+} % begin verbatim
+
+
+\relative c' {
+  \textLengthOn
+  c1^
+  \markup {
+    \center-column {
+      'piccolo
+      " "
+       \woodwind-diagram
+                  #'piccolo
+                  #'()
+    }
+  }
+
+  c1^
+  \markup {
+    \center-column {
+       'flute
+       " "
+       \woodwind-diagram
+          #'flute
+          #'()
+    }
+  }
+  c1^\markup {
+    \center-column {
+      'oboe
+      " "
+      \woodwind-diagram
+        #'oboe
+        #'()
+    }
+  }
+
+  c1^\markup {
+    \center-column {
+      'clarinet
+      " "
+      \woodwind-diagram
+        #'clarinet
+        #'()
+    }
+  }
+
+  c1^\markup {
+    \center-column {
+      'bass-clarinet
+      " "
+      \woodwind-diagram
+        #'bass-clarinet
+        #'()
+    }
+  }
+
+  c1^\markup {
+    \center-column {
+      'saxophone
+      " "
+      \woodwind-diagram
+        #'saxophone
+        #'()
+    }
+  }
+
+  c1^\markup {
+    \center-column {
+      'bassoon
+      " "
+      \woodwind-diagram
+        #'bassoon
+        #'()
+    }
+  }
+
+  c1^\markup {
+    \center-column {
+      'contrabassoon
+      " "
+      \woodwind-diagram
+        #'contrabassoon
+        #'()
+    }
+  }
+}
index a2876c957d7bc131911f3b39e3ce5cf4f2f0b078..20a051f983d79a0c86d19e5eac90a962acdcf9bb 100644 (file)
@@ -30,7 +30,7 @@ The primary download site for sourcecode is
 
 For compiling and running LilyPond see the installation instructions.
 These instructions can be found when you unpack lilypond, as
-@file{lilypond-x.y.z/INSTALL.txt}. They are also available on the web
+@file{lilypond-x.y.z/INSTALL.txt}.  They are also available on the web
 at
 @uref{http://lilypond.org/doc/v2.12/Documentation/topdocs/INSTALL.html}.
 
index bd278d3dcaaaf66cb44591c43856bec96512049e..812574836001bc8a9767818687887abdbd3661e0 100644 (file)
@@ -21,8 +21,8 @@
 
 \section{LilyPond-book + LaTeX}
 
-This is an examplefile for mixing LilyPond and Latex. It is also
-used to test lilypond-book. View the source to see how it is done.
+This is an examplefile for mixing LilyPond and Latex.  It is also
+used to test lilypond-book.  View the source to see how it is done.
 
 A simple scale:
 
@@ -33,7 +33,7 @@ A simple scale:
 \end{lilypond}
 
 LilyPond-book search for the \verb|\score| command when it decides
-if the code is only a fragment. Thus, in the following code, you have
+if the code is only a fragment.  Thus, in the following code, you have
 to use \verb|fragment| option, because the comment confuses lilypond-book.
 
 \begin{lilypond}[fragment]
@@ -116,9 +116,9 @@ c' e'
 \end{lilypond}
 
 has also the \verb|eps| options, but is not floating because there
-are an empty line before and after the lilypond block. That is
+are an empty line before and after the lilypond block.  That is
 correct behaviour because it follows La\TeX{} convention that an
-empty line signals a new paragraph. The \verb|eps| option
+empty line signals a new paragraph.  The \verb|eps| option
 is not necessary when you want the music in a paragraph on its own.
 
 \subsection{More examples}
@@ -155,7 +155,7 @@ Tables\footnote{ and footnote:
 
 \pagebreak
 
-Testing of spacing. The next music is surrounded by an empty line.
+Testing of spacing.  The next music is surrounded by an empty line.
 text text text text text text text text text text text text
 text text text text text text text text text text text text
 
index daf9b4dcfde9e22a73f2188f4039e6dd9d50d768..ed386b77682a704a2125dcfd4526c759eed96097 100644 (file)
@@ -326,7 +326,7 @@ the number of systems you want in the output.
 
 @example
 \def\betweenLilyPondSystem#1@{
-    \ifnum##1<2\else\expandafter\endinput\fi
+    \ifnum#1<2\else\expandafter\endinput\fi
 @}
 @end example
 
@@ -488,7 +488,7 @@ of lilypond.
 
 For inserting LilyPond snippets it is good to keep the conformity of our
 DocBook document, thus allowing us to use DocBook editors, validation
-etc. So we don't use custom tags, only specify a convention based on the
+etc.  So we don't use custom tags, only specify a convention based on the
 standard DocBook elements.
 
 @subheading Common conventions
@@ -618,7 +618,7 @@ Since this is the default, @code{nofragment} is redundant normally.
 
 @item indent=@var{size}\@var{unit}
 Set indentation of the first music system to @var{size}, using
-@var{unit} as units. @var{unit} is one of the following strings:
+@var{unit} as units.  @var{unit} is one of the following strings:
 @code{cm}, @code{mm}, @code{in}, or @code{pt}.  This option affects
 LilyPond, not the text layout.
 
@@ -847,7 +847,7 @@ See the documentation of Texinfo for further details.
 Specify the document type to process: @code{html}, @code{latex},
 @code{texi} (the default) or @code{docbook}.  If this option is missing,
 @command{lilypond-book} tries to detect the format automatically, see
-@ref{Filename extensions}. Currently, @code{texi} is the same as
+@ref{Filename extensions}.  Currently, @code{texi} is the same as
 @code{texi-html}.
 
 @c This complicated detail is not implemented, comment it out -jm
@@ -915,7 +915,7 @@ useful if your document is processed with @command{xelatex}, for
 example.
 
 @itemx --left-padding=@var{amount}
-Pad EPS boxes by this much. @var{amount} is measured in millimeters,
+Pad EPS boxes by this much.  @var{amount} is measured in millimeters,
 and is 3.0 by default.  This option should be used if the lines of
 music stick out of the right margin.
 
@@ -1127,7 +1127,7 @@ and so on.
 
 The fonts of snippets set with LilyPond will have to be set from
 inside
-of the snippet. For this you should read the AU on how to use
+of the snippet.  For this you should read the AU on how to use
 lilypond-book.
 
 \selectlanguage{ngerman}
index e6d83537d2c6bdada0d940697364b09d6b713181..3fe520836e386053c4e7af471ba02f0beae1af5c 100644 (file)
@@ -97,6 +97,30 @@ will output @var{base}@file{-violin.pdf} and
 @var{base}@file{-cello-1.pdf}.
 
 
+@unnumberedsubsubsec Standard shell commands
+
+If your shell (i.e. command window) supports normal redirects,
+then you might find it useful to use the following commands to
+redirect console output to a file:
+
+@itemize
+
+@item
+@code{lilypond file.ly 1>stdout.log} to redirect normal output
+
+@item
+@code{lilypond file.ly 2>stderr.log} to redirect error messages
+
+@item
+@code{lilypond file.ly &>all.log} to redirect all output
+
+@end itemize
+
+Consult the documentation for your shell to see if it supports these
+options, or if the syntax is different.  Note that these are shell
+commands and have nothing to do with lilypond.
+
+
 @node Command line options for lilypond
 @unnumberedsubsec Command line options for @command{lilypond}
 
@@ -289,17 +313,27 @@ Show a summary of usage.
 @item -H,--header=@var{FIELD}
 Dump a header field to file @file{BASENAME.@var{FIELD}}.
 
-@item --include, -I=@var{directory}
-Add @var{directory} to the search path for input files.
 @cindex file searching
 @cindex search path
+@item --include, -I=@var{directory}
+Add @var{directory} to the search path for input files.
+
+Multiple -I options may be given.  The search will start in the
+first defined directory, and if the file to be included is not
+found the search will continue in subsequent directories.
 
 @item -i,--init=@var{file}
 Set init file to @var{file} (default: @file{init.ly}).
 
-@item -o,--output=@var{FILE}
-Set the default output file to @var{FILE}.  The appropriate
-suffix will be added (e.g. @code{.pdf} for pdf)
+@cindex folder, directing output to
+@cindex output filename, setting
+
+@item -o,--output=@var{FILE} or @var{FOLDER}
+Set the default output file to @var{FILE} or, if a folder with
+that name exists, direct the output to @var{FOLDER}, taking the
+file name from the input file.  The appropriate suffix will be
+added (e.g. @code{.pdf} for pdf) in both cases.
+
 
 @cindex PostScript output
 
@@ -389,7 +423,7 @@ Be verbose: show full paths of all files read, and give timing
 information.
 
 @item -w,--warranty
-Show the warranty with which GNU LilyPond comes. (It comes with
+Show the warranty with which GNU LilyPond comes.  (It comes with
 @strong{NO WARRANTY}!)
 @end table
 
@@ -473,7 +507,10 @@ You can use @code{sed} to create the necessary copy commands for a given
 executable:
 
 @example
-for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/; do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done
+for i in "/usr/local/lilypond/usr/bin/lilypond" "/bin/sh" "/usr/bin/;  \
+  do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\&  \
+    cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p  \
+      \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done
 @end example
 
 @end itemize
@@ -514,18 +551,25 @@ cp -L /usr/bin/convert /usr/bin/gs usr/bin
 cp -L /usr/share/fonts/truetype usr/share/fonts
 
 # Now the library copying magic
-for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh" "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=> \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed 's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed '/.*=>.*/d'; done | sh -s
+for i in "$lilydir/usr/bin/lilypond" "$lilydir/usr/bin/guile" "/bin/sh"  \
+  "/bin/rm" "/usr/bin/gs" "/usr/bin/convert"; do ldd $i | sed 's/.*=>  \
+    \/\(.*\/\)\([^(]*\).*/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/' | sed  \
+      's/\t\/\(.*\/\)\(.*\) (.*)$/mkdir -p \1 \&\& cp -L \/\1\2 \1\2/'  \
+        | sed '/.*=>.*/d'; done | sh -s
 
 # The shared files for ghostscript...
       cp -L -r /usr/share/ghostscript usr/share
 # The shared files for ImageMagick
       cp -L -r /usr/lib/ImageMagick* usr/lib
 
-### Now, assuming that you have test.ly in /mnt/lilyloop/lilyhome, you should be able to run:
-### Note that /$lilyprefix/bin/lilypond is a script, which sets the LD_LIBRARY_PATH - this is crucial
+### Now, assuming that you have test.ly in /mnt/lilyloop/lilyhome,
+### you should be able to run:
+### Note that /$lilyprefix/bin/lilypond is a script, which sets the
+### LD_LIBRARY_PATH - this is crucial
       /$lilyprefix/bin/lilypond -jlily,lily,/mnt/lilyloop,/lilyhome test.ly
 @end example
 
+@c " keep quote signs balanced for context-sensitive editors
 
 @node Error messages
 @section Error messages
@@ -618,6 +662,7 @@ are easily handled.
 * Apparent error in ../ly/init.ly::
 * Error message Unbound variable %::
 * Error message FT_Get_Glyph_Name::
+* Warning staff affinities should only decrease::
 @end menu
 
 @node Music runs off the page
@@ -751,4 +796,18 @@ an input file contains a non-ASCII character and was not saved in
 UTF-8 encoding.  For details, see @ruser{Text encoding}.
 
 
+@node Warning staff affinities should only decrease
+@unnumberedsubsec Warning staff affinities should only decrease
+This warning can appear if there are no staves in the printed
+output, for example if there are just a @code{ChordName} context
+and a @code{Lyrics} context as in a lead sheet.  The warning
+messages can be avoided by making one of the contexts behave as a
+staff by inserting
 
+@example
+\override VerticalAxisGroup #'staff-affinity = ##f
+@end example
+
+@noindent
+at its start.  For details, see @qq{Spacing of non-staff lines} in
+@ruser{Vertical spacing inside a system}.
index 74833b69606b0524be65bc4589f96b5727831e6d..9abc1712dfd66ed9e79d689b44d3ca28c63e9626 100644 (file)
@@ -257,10 +257,10 @@ Another very useful debugging technique is constructing
 @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
+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
+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.
 
@@ -271,9 +271,9 @@ 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
+@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
+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
@@ -282,9 +282,9 @@ 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 use @code{bash}, while Windows uses @code{cmd}.  Note that on
 MacOS X, you need to configure the system to use the command-line
-interpreter. Here are some example makefiles, with versions for both
+interpreter.  Here are some example makefiles, with versions for both
 Linux/MacOS and Windows.
 
 The first example is for an orchestral work in four
@@ -332,10 +332,10 @@ files in the @code{Notes} directory:
 
 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
+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
+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
@@ -433,12 +433,12 @@ archive:
 @end example
 
 
-There are special complications on the Windows platform. After
+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
+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
+@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:
@@ -449,7 +449,7 @@ C:\Program Files\GnuWin32\bin
 
 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
+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.
 
@@ -525,8 +525,8 @@ all: score parts movements
 
 
 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
+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.
 
@@ -581,11 +581,11 @@ archive:
 
 TODO: make this thing work on Windows
 
-The previous makefile does not work on Windows. An alternative
+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
+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
+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.
index a8e0f49e0c900f9de4de85f04268c02d4bc69740..0435d9170299dacafee7d6e87c87d79ca81d588c 100644 (file)
@@ -1,4 +1,11 @@
 depth = ../..
+
 LOCALSTEPMAKE_TEMPLATES = ly
+
 SUBDIRS = ly-examples server
 include $(depth)/make/stepmake.make
+
+#OUT_BIB_FILES = $(addprefix $(outdir)/, $(BIB_FILES))
+BIB_FILES = $(call src-wildcard,*.bib)
+EXTRA_DIST_FILES += $(BIB_FILES) $(call src-wildcard,*.bst)
+
index d4772ef58bdc7f00bea935608cb6b6138ae2f223..88f4eadd1747ccb6a968b67b4464120ac33f0a3c 100644 (file)
@@ -13,6 +13,7 @@
 @node Community
 @unnumbered Community
 
+@divClass{link-headings}
 
 @divClass{column-center-top}
 @subheading Interacting with the community
@@ -63,6 +64,7 @@ discussing LilyPond.
 @end itemize
 @divEnd
 
+@divEnd
 
 @divClass{hide}
 @menu
@@ -538,10 +540,10 @@ stable, we have written a manual for development tasks.
 @subheading Regression tests
 
 @divClass{keep-bullets}
-@itemize
 
 @ifclear web_version
 
+@itemize
 @item
 @uref{../../input/regression/collated-files.html, Regression tests}:
 This release's regtests.
@@ -551,23 +553,54 @@ This release's regtests.
 @uref{../../input/regression/musicxml/collated-files.html, MusicXML tests}:
 This release's musicXML tests.
 (@uref{../../input/regression/musicxml/collated-files.pdf, pdf version})
+
+@item
+@uref{../../input/regression/abc2ly/collated-files.html, abc2ly tests}:
+This release's abc2ly tests.
+(@uref{../../input/regression/abc2ly/collated-files.pdf, pdf version})
+
+@item
+@uref{../../input/regression/lilypond-book/collated-files.html, lilypond-book tests}:
+This release's lilypond-book tests.
+(@uref{../../input/regression/lilypond-book/collated-files.pdf, pdf version})
+@end itemize
+
 @end ifclear
 
 @ifset web_version
+@subsubheading Development version
+
+@itemize
 @item @regtestDevel (@regtestDevelPdf{})
 
 @item @regtestDevelXml (@regtestDevelXmlPdf{})
 
+@item @regtestDevelAbc (@regtestDevelAbcPdf{})
+
+@item @regtestDevelLilypondBook (@regtestDevelLilypondBookPdf{})
+@end itemize
+
+@subsubheading Stable version
+
+@itemize
 @item @regtestStable (@regtestStablePdf{})
 
 @item @regtestStableXml (@regtestStableXmlPdf{})
+
+@item @regtestStableAbc (@regtestStableAbcPdf{})
+
+@item @regtestStableLilypondBook (@regtestStableLilypondBookPdf{})
+@end itemize
 @end ifset
 
 
+@subsubheading All versions
+
+@itemize
 @item @uref{http://lilypond.org/test, Archive of regression tests}:
 Comparisons between versions.
-
 @end itemize
+
 @divEnd
 @divEnd
 
@@ -766,28 +799,8 @@ manuals can be found at @url{http://lilypond.org}}
 @subheading What we wrote about LilyPond
 
 @divClass{keep-bullets}
-@itemize
-
-@item
-Han-Wen Nienhuys, @emph{LilyPond, Automated music formatting and
-the Art of Shipping}.  Forum Internacional Software Livre 2006
-(FISL7.0) (@uref{http://lilypond.org/web/images/FISL7-slides.pdf,
-PDF 1095k})
 
-@item
-Erik Sandberg, @emph{Separating input language and formatter in
-GNU LilyPond}. Master's Thesis, Uppsala University, Department of
-Information Technology March 2006.
-(@uref{http://lilypond.org/web/images/thesis-erik-sandberg.pdf,
-PDF 750k})
-
-@item
-Han-Wen Nienhuys and Jan Nieuwenhuizen, @emph{LilyPond, a system
-for automated music engraving}.  Proceedings of the XIV Colloquium
-on Musical Informatics (XIV CIM 2003), Firenze, Italy, May 2003.
-(@uref{ http://lilypond.org/web/images/xivcim.pdf, PDF 95k})
-
-@end itemize
+@include we-wrote.itexi
 
 @divEnd
 @divEnd
@@ -799,34 +812,8 @@ on Musical Informatics (XIV CIM 2003), Firenze, Italy, May 2003.
 
 
 @divClass{keep-bullets}
-@itemize
-
-@item
-Graham Percival, Tosten Anders, and George Tzanetakis,
-@emph{Generating Targeted Rhythmic Exercises for Music Students
-with Constraint Satisfaction Programming}, International Computer
-Music Conference 2008.
 
-@item
-Alexandre Tachard Passos, Marcos Sampaio, Pedro Kröger, Givaldo de Cidra,
-@emph{Functional Harmonic Analysis and Computational Musicology
-in Rameau}, Proceedings of the 12th Brazilian Symposium on Computer
-Music, 2009, pp. 207-210.
-
-@item
-Alberto Simões, Anália Lourenço and José João Almeida,
-@emph{Using Text Mining Techniques for Classical Music Scores Analysis},
-New Trends in Artificial Intelligence, 2007 J. Neves et al ed.
-
-@item
-
-Kevin C. Baird 2005,
-@emph{Real-time generation of music notation via audience interaction using
-python and GNU lilypond}. Proceedings of the 2005 Conference on New interfaces
-For Musical Expression (Vancouver, Canada, May 26 - 28, 2005).
-
-
-@end itemize
+@include others-did.itexi
 
 @divEnd
 @divEnd
@@ -838,5 +825,3 @@ For Musical Expression (Vancouver, Canada, May 26 - 28, 2005).
 @include web/news-front.itexi
 
 @include web/news.itexi
-
-
index 3dab2a81695ced4cdae459c6d419fa4eb6e24785..e83587dedde2d02abc30b360bc09b6bf1bf44f9b 100644 (file)
@@ -36,13 +36,15 @@ our @ref{Text input}.}
 
 @divEnd
 
+@divClass{link-headings}
+
 @divClass{column-left-top}
 @subheading For users
 
 @itemize
 
 @item
-@c TODO: duplicate to avoid underlined refs in HTML?  icky.
+@c ref is duplicated to avoid underlining ref as image.
 @ref{Unix, @sourceimage{logo-linux,,,}
 @sourceimage{logo-freebsd,,,}}
 @ref{Unix, Unix (Linux and FreeBSD)}
@@ -78,6 +80,7 @@ latest unstable version
 @end itemize
 @divEnd
 
+@divEnd
 
 @divClass{column-center-bottom}
 
@@ -339,11 +342,11 @@ cd ~/bin
 @item
 Create a file called @command{lilypond} which contains
 
-@help obvious css issue to be dealt with.  :(
-@c we need a small font here to fit.  -gp
-@smallexample
+@divClass{h-scroll-auto}
+@example
 exec @var{DIR}/LilyPond.app/Contents/Resources/bin/lilypond "$@@"
-@end smallexample
+@end example
+@divEnd
 
 @warning{@var{DIR} will generally be @code{/Applications/}}
 
@@ -386,9 +389,11 @@ inside the @code{.app} file for MacOS@tie{}X.
 Scripts can also be run from the command line by invoking them
 directly:
 
+@divClass{h-scroll-auto}
 @example
 @var{path/to}/LilyPond.app/Contents/Resources/bin/lilypond
 @end example
+@divEnd
 
 The same is true for all other scripts in that directory, such as
 @command{lilypond-book} and @command{convert-ly}.
@@ -437,10 +442,10 @@ For Windows 2000, XP, Vista and Windows 7.
 
 @item
 Locate the downloaded file and double-click on it to start the
-installer. Follow the instructions given to you by the installer;
+installer.  Follow the instructions given to you by the installer;
 we recommend that you leave all the install options checked and
-use the default installation location. Click the @q{Finish} button
-when the installer has completed. LilyPond is now installed.
+use the default installation location.  Click the @q{Finish} button
+when the installer has completed.  LilyPond is now installed.
 
 @end enumerate
 
@@ -452,12 +457,12 @@ To uninstall LilyPond either:
 
 @item
 Locate the LilyPond folder from the @q{Start} menu and click on the
-@q{Uninstall} icon. Click the @q{Finish} button when the uninstaller
+@q{Uninstall} icon.  Click the @q{Finish} button when the uninstaller
 has completed.
 
 @item
 Or from within the Control Panel, locate and select LilyPond and then
-choose the option to uninstall/remove the software. Click the @q{Finish}
+choose the option to uninstall/remove the software.  Click the @q{Finish}
 button when the uninstaller has completed.
 
 @end enumerate
@@ -606,6 +611,3 @@ is given in @ref{Freedom}.
 @include gpl.itexi
 
 @divEnd
-
-
-
index 58c933efde9ea3bfbd66395bce51f1139c411ff8..410f330e46b39a5a28722d9d5bc3c9af325cf66e 100644 (file)
@@ -27,6 +27,8 @@ traditions of classical music engraving.
 
 @divEnd
 
+@divClass{link-headings}
+
 @divClass{column-left-top}
 @subheading What LilyPond does
 
@@ -73,6 +75,8 @@ traditions of classical music engraving.
 @end itemize
 @divEnd
 
+@divEnd
+
 @c TRANSLATORS, translations are not yet compiled in Info format, so
 @c it's not worth translating the right column of the following
 @c menu. -JM
@@ -139,7 +143,7 @@ simply save a file for later reference.
 
 Put fragments of music into texts without cutting and pasting
 pictures.  Integrate music into @LaTeX{} or HTML seamlessly, or add
-music to OpenOffice.org with OOoLilyPond. Plugins are also available
+music to OpenOffice.org with OOoLilyPond.  Plugins are also available
 to allow LilyPond code in various blogs and wikis, making online
 collaboration possible.
 
@@ -195,7 +199,7 @@ team makes sure that problems are solved quickly.
 
 Several developers, themselves active LilyPond users, have also
 written tools specifically aimed at making the process of editing
-LilyPond files faster and more effective. For some examples, see
+LilyPond files faster and more effective.  For some examples, see
 @ref{Easier editing}.
 
 @divEnd
@@ -213,7 +217,7 @@ already decided to try LilyPond, first read about our
 @unnumberedsec Examples
 
 LilyPond is a powerful and flexible tool for engraving tasks of
-all kinds. Please browse our gallery of examples and be inspired!
+all kinds.  Please browse our gallery of examples and be inspired!
 
 
 @newsItem
@@ -285,7 +289,7 @@ staff.
 @newsItem
 @subsubheading Schenker Graphs
 
-Standard output can be modified heavily. Here is an impressive
+Standard output can be modified heavily.  Here is an impressive
 Schenkerian analysis, created by Kris Schaffer, for an article
 in @uref{http://www.linuxjournal.com/article/8364 , Linux Journal.}.
 The colors have been added for better visibility.
@@ -631,7 +635,7 @@ Software authors in an article titled
 Delen van KENNIS zonder WINSTBEJAG} (Non-profit sharing of
 knowlegde) in its @q{DS2 bijlage}.  LilyPond is used as an example
 and the article is interspersed with quotes from an email
-interview with Jan Nieuwenhuizen. This marks LilyPond's first
+interview with Jan Nieuwenhuizen.  This marks LilyPond's first
 appearance in mainstream printed press.
 
 @item
@@ -1006,7 +1010,7 @@ systems.
 
 Denemo is a graphical editor which generates LilyPond source code,
 and also allows audio playback.  It allows users to view the
-LilyPond source code in parallel to the graphical view. Extra
+LilyPond source code in parallel to the graphical view.  Extra
 LilyPond tweaks can be attached to notes, chords etc. and are stored
 with the Denemo file, so that users can continue to edit graphically.
 
@@ -1015,7 +1019,7 @@ view, and any syntax errors in your LilyPond tweaks are highlighted in
 the text view when printed from there.
 
 @warning{Denemo officially supports an outdated Lilypond version 2.8.7,
-which lacks many of the features added since then. The Denemo developers
+which lacks many of the features added since then.  The Denemo developers
 are actively working to bring it up to our present stable version, 2.12.}
 @divEnd
 
@@ -1033,9 +1037,10 @@ Emacs is a text editor with language-sensitive capabilities for
 many different computer languages.  Emacs is a highly extensible
 editor and can be used as an Integrated Development Environment.
 There is a @q{lilypond mode} which supplies the language
-definitions for working with LilyPond source files. As well, one of
-our developers has written @uref{http://nicolas.sceaux.free.fr/
-lilypond/lyqi.html,lyqi}, an Emacs major mode.
+definitions for working with LilyPond source files.  As well, one of
+our developers has written
+@uref{http://nicolas.sceaux.free.fr/lilypond/lyqi.html,lyqi}, an
+Emacs major mode.
 
 @uref{http://www.vim.org}
 
@@ -1101,7 +1106,7 @@ export but is being actively developed.
 
 @item
 @uref{http://canorus.org,Canorus} can also export to LilyPond, but
-is still beta-software. Testers are welcome, though.
+is still beta-software.  Testers are welcome, though.
 
 @item
 @uref{http://www.volny.cz/smilauer/rumor/rumor.html,Rumor}, a realtime
index 9676aff04968ad21173d06ddfa489aeeb88d0801..fddd09ad6a4aa232aa71b12434d998ef1fbbd2f2 100644 (file)
@@ -16,7 +16,6 @@
 @spanEnd
 @end macro
 
-
 @divClass{heading-center}
 @ifclear web_version
   @heading Manuals for LilyPond @version
 
 @divEnd
 
-@c TODO: do we want these links to be in larger text / bold ?   CSS.
+@divClass{link-headings}
 
 @divClass{column-center-top}
 @subheading Introduction
 
 @itemize
 
-@item @ref{Text input}:
-LilyPond is a @strong{text-based} music engraver.  Read this
-first!
+@item
+@ref{Text input}:
+LilyPond is a @strong{text-based} music engraver.  Read this first!
 
-@item @ifWebLinks{@manualStableLearningSplitNoName,@rlearningnamed{Top,Learning}}
+@item
+@ifWebLinks{@manualStableLearningSplitNoName,@rlearningnamed{Top,Learning}}
 a @qq{must-read} gentle introduction to LilyPond.
 @details{Learning}
 
-@item @ifWebLinks{@manualStableGlossarySplitNoName,@rglosnamed{Top,Glossary}}
-@emph{(optional reading)}
-musical terms and translations.
+@item
+@ifWebLinks{@manualStableGlossarySplitNoName,@rglosnamed{Top,Glossary}}
+@emph{(optional reading)} musical terms and translations.
 @details{Glossary}
 
-@item @ifWebLinks{@manualStableEssaySplitNoName,@ressaynamed{Top,Essay}}
-@emph{(optional reading)}
-background information about computer engraving.
+@item
+@ifWebLinks{@manualStableEssaySplitNoName,@ressaynamed{Top,Essay}}
+@emph{(optional reading)} background information about computer engraving.
 @details{Essay}
 
-
 @end itemize
 
 @divEnd
@@ -62,15 +61,18 @@ background information about computer engraving.
 
 @itemize
 
-@item @ifWebLinks{@manualStableNotationSplitNoName,@rusernamed{Top,Notation}}
+@item
+@ifWebLinks{@manualStableNotationSplitNoName,@rusernamed{Top,Notation}}
 syntax reference.
 @details{Notation}
 
-@item @ifWebLinks{@manualStableUsageSplitNoName,@rprogramnamed{Top,Usage}}
+@item
+@ifWebLinks{@manualStableUsageSplitNoName,@rprogramnamed{Top,Usage}}
 running the programs.
 @details{Usage}
 
-@item @ifWebLinks{@manualStableSnippetsSplitNoName,@rlsrnamed{Top,Snippets}}
+@item
+@ifWebLinks{@manualStableSnippetsSplitNoName,@rlsrnamed{Top,Snippets}}
 short tricks and tips.
 @details{Snippets}
 
@@ -84,22 +86,27 @@ short tricks and tips.
 
 @itemize
 
-@item @ref{FAQ}:
+@item
+@ref{FAQ}:
 Frequently Asked Questions.
 
-@item @ref{Top, Web}:
+@item
+@ref{Top, Web}:
 this document.
 @details{Web}
 
-@item @ifWebLinks{@manualStableChangesSplitNoName,@rchangesnamed{Top,Changes}}
+@item
+@ifWebLinks{@manualStableChangesSplitNoName,@rchangesnamed{Top,Changes}}
 what's new?
 @details{Changes}
 
-@item @ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Top,Extending}}
+@item
+@ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Top,Extending}}
 fancy tweaks.
 @details{Extending}
 
-@item @ifWebLinks{@manualStableInternalsSplitNoName,@rinternalsnamed{Top,Internals}}
+@item
+@ifWebLinks{@manualStableInternalsSplitNoName,@rinternalsnamed{Top,Internals}}
 tweaks reference.
 @details{Internals}
 
@@ -113,23 +120,28 @@ tweaks reference.
 
 @itemize
 
-@item @ref{Translated}:
+@item
+@ref{Translated}:
 translation status for non-English readers.
 
-@item @ref{All}:
+@item
+@ref{All}:
 downloadable and old manuals.
 
-@item @ref{Development}:
+@item
+@ref{Development}:
 manuals for the unstable version.
 
-@item @ref{FDL}:
-these manuals are published under the GNU Free Documentation
-License.
+@item
+@ref{FDL}:
+these manuals are published under the GNU Free Documentation License.
 
 @end itemize
 
 @divEnd
 
+@divEnd
+
 
 @divClass{hide}
 @menu
@@ -559,5 +571,3 @@ reasons for choosing it, is given in @ref{Freedom}.
 @include fdl.itexi
 
 @divEnd
-
-
index e62cc33f4754f085b49b429f0dec86cfc75d1169..24c0bf236ea0b42cc089632bd2cf15eff888bbc6 100644 (file)
 
 @c keep two blank lines between news entries
 
-@c FIXME: fill in number
-@c used for news about the upcoming release; see CG x.y
+@c used for news about the upcoming release; see CG 10.2
 
 @newsItem
-@subsubheading LilyPond 2.13.29 released!  @emph{July 13, 2010}
+@subsubheading LilyPond 2.13.31 released!  @emph{Aug 24, 2010}
 
-We are happy to announce the release of LilyPond 2.13.29.  This
+We are happy to announce the release of LilyPond 2.13.31.  This
 release contains the usual number of bugfixes.  However, a number
 of critical issues still remain, so this release is intended for
 developers only.
 
-This release includes some major untested changes to the windows
-lilypad editor.  Windows users should not be using this release
-because it is intended for developers only, but you ignore these
-warnings and try it anyway, use extra caution.
 @newsEnd
 
 @newsItem
-@subsubheading LilyPond 2.13.27 released!  @emph{July 5, 2010}
+@subsubheading LilyPond 2.13.30 released!  @emph{Aug 13, 2010}
 
-We are happy to announce the release of LilyPond 2.13.27.  This
+We are happy to announce the release of LilyPond 2.13.30.  This
 release contains the usual number of bugfixes.  However, a number
 of critical issues still remain, so this release is intended for
 developers only.
-@newsEnd
-
-
-@newsItem
-@subsubheading Testing our new website!  @emph{June 29, 2010}
-
-We're testing our new website!  For the next 24 hours, the new
-website will be the default website; after that, we will switch
-back to the old website while we examine feedback and make
-improvements to the new website.
-
-Please send feedback to @code{lilypond-user}; you can find more
-information on our page about @ref{Contact}.
-
-@warning{There are a few known problems with translations.  If you
-are a non-English speaker, you may prefer to view the old lilypond
-website at:
-@uref{http://lilypond.org/web/}}
-
-@newsEnd
-
-
-@newsItem
-@subsubheading LilyPond 2.13.26 released!  @emph{June 26, 2010}
-
-We are happy to announce the release of LilyPond 2.13.26.  This
-release contains the usual number of bugfixes.  However, a number
-of critical issues still remain, so this release is intended for
-developers only.
-@newsEnd
-
-@newsItem
-@subsubheading LilyPond 2.13.25 released!  @emph{June 20, 2010}
-
-We are happy to announce the release of LilyPond 2.13.25.  This
-release contains the usual number of bugfixes.  However, a number
-of critical issues still remain, so this release is intended for
-developers only.
-@newsEnd
-
-
-@newsItem
-@subsubheading LilyPond 2.13.24 released!  @emph{June 14, 2010}
 
-We are happy to announce the release of LilyPond 2.13.24.  This
-release contains the usual number of bugfixes.  However, a number
-of critical issues still remain, so this release is intended for
-developers only.
 @newsEnd
 
 
 @newsItem
-@subsubheading LilyPond 2.13.23 released!  @emph{June 3, 2010}
-
-We are happy to announce the release of LilyPond 2.13.23.  This
-release contains the usual number of bugfixes.  However, a number
-of critical issues still remain, so this release is intended for
-developers only.
-@newsEnd
-
-@newsItem
-@subsubheading LilyPond 2.13.22 released!  @emph{May 27, 2010}
-
-We are happy to announce the release of LilyPond 2.13.22.  This
-release contains the usual number of bugfixes.  However, a number
-of critical issues still remain, so this release is intended for
-developers only.
-@newsEnd
-
-@newsItem
-@subsubheading LilyPond 2.13.21 released!  @emph{May 12, 2010}
-
-We are happy to announce the release of LilyPond 2.13.21.  This
-release contains the usual number of bugfixes.  However, a number
-of critical issues still remain, so this release is intended for
-developers only.
-
-This release should be of particular interest to package
-maintainers: we have made a few changes to the configure script
-and the required libraries.  Barring any urgent bug reports, this
-is the build system and libraries that will be used for the next
-stable release.
-@newsEnd
-
-
-@newsItem
-@subsubheading LilyPond Report #18.  @emph{May 11, 2010}
+@subsubheading LilyPond Report #19.  @emph{Aug 9, 2010}
 
 The @emph{LilyPond Report} is back, with its two
-@qq{grumpy-and-fluffy} editors! This issue will be filled
-with emotion and coolness, paper bags and zigzag-ending
-staves, plus the usual Frogs and Bugs.
+@qq{grumpy-and-fluffy} editors! This issue contains some
+conference news, along with the regular release news, snippet of
+the report, news from the frog pond, and the bug report of the
+report!
 
 Come
-@uref{http://news.lilynet.net/The-LilyPond-Report-18, read
-LilyPond Report 18} now; comments and contributions are
+@uref{http://news.lilynet.net/The-LilyPond-Report-19, read
+LilyPond Report 19} now; comments and contributions are
 warmly encouraged!
 @newsEnd
 
 
+
index c357dc56da3bba999e3383713cf222b10fc125de..2d553d80ec11126fcf3237a3ea31fa4814835219 100644 (file)
@@ -27,6 +27,142 @@ NOTE:
 @end ignore
 
 
+@newsItem
+@subsubheading LilyPond 2.13.29 released!  @emph{Aug 4, 2010}
+
+We are happy to announce the release of LilyPond 2.13.29.  This
+release contains the usual number of bugfixes.  However, a number
+of critical issues still remain, so this release is intended for
+developers only.
+
+This release radically changes the autobeaming rules, so use extra
+caution and expect breakage.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.13.28 released!  @emph{July 13, 2010}
+
+We are happy to announce the release of LilyPond 2.13.28.  This
+release contains the usual number of bugfixes.  However, a number
+of critical issues still remain, so this release is intended for
+developers only.
+
+This release includes some major untested changes to the windows
+lilypad editor.  Windows users should not be using this release
+because it is intended for developers only, but you ignore these
+warnings and try it anyway, use extra caution.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.13.27 released!  @emph{July 5, 2010}
+
+We are happy to announce the release of LilyPond 2.13.27.  This
+release contains the usual number of bugfixes.  However, a number
+of critical issues still remain, so this release is intended for
+developers only.
+@newsEnd
+
+
+@newsItem
+@subsubheading Testing our new website!  @emph{June 29, 2010}
+
+We're testing our new website!  For the next 24 hours, the new
+website will be the default website; after that, we will switch
+back to the old website while we examine feedback and make
+improvements to the new website.
+
+Please send feedback to @code{lilypond-user}; you can find more
+information on our page about @ref{Contact}.
+
+@warning{There are a few known problems with translations.  If you
+are a non-English speaker, you may prefer to view the old lilypond
+website at:
+@uref{http://lilypond.org/web/}}
+
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.13.26 released!  @emph{June 26, 2010}
+
+We are happy to announce the release of LilyPond 2.13.26.  This
+release contains the usual number of bugfixes.  However, a number
+of critical issues still remain, so this release is intended for
+developers only.
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.13.25 released!  @emph{June 20, 2010}
+
+We are happy to announce the release of LilyPond 2.13.25.  This
+release contains the usual number of bugfixes.  However, a number
+of critical issues still remain, so this release is intended for
+developers only.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.13.24 released!  @emph{June 14, 2010}
+
+We are happy to announce the release of LilyPond 2.13.24.  This
+release contains the usual number of bugfixes.  However, a number
+of critical issues still remain, so this release is intended for
+developers only.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond 2.13.23 released!  @emph{June 3, 2010}
+
+We are happy to announce the release of LilyPond 2.13.23.  This
+release contains the usual number of bugfixes.  However, a number
+of critical issues still remain, so this release is intended for
+developers only.
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.13.22 released!  @emph{May 27, 2010}
+
+We are happy to announce the release of LilyPond 2.13.22.  This
+release contains the usual number of bugfixes.  However, a number
+of critical issues still remain, so this release is intended for
+developers only.
+@newsEnd
+
+@newsItem
+@subsubheading LilyPond 2.13.21 released!  @emph{May 12, 2010}
+
+We are happy to announce the release of LilyPond 2.13.21.  This
+release contains the usual number of bugfixes.  However, a number
+of critical issues still remain, so this release is intended for
+developers only.
+
+This release should be of particular interest to package
+maintainers: we have made a few changes to the configure script
+and the required libraries.  Barring any urgent bug reports, this
+is the build system and libraries that will be used for the next
+stable release.
+@newsEnd
+
+
+@newsItem
+@subsubheading LilyPond Report #18.  @emph{May 11, 2010}
+
+The @emph{LilyPond Report} is back, with its two
+@qq{grumpy-and-fluffy} editors! This issue will be filled
+with emotion and coolness, paper bags and zigzag-ending
+staves, plus the usual Frogs and Bugs.
+
+Come
+@uref{http://news.lilynet.net/The-LilyPond-Report-18, read
+LilyPond Report 18} now; comments and contributions are
+warmly encouraged!
+@newsEnd
+
+
+
 @newsItem
 @subsubheading LilyPond 2.13.20 released!  @emph{May 5, 2010}
 
diff --git a/Documentation/web/others-did.bib b/Documentation/web/others-did.bib
new file mode 100644 (file)
index 0000000..996c1da
--- /dev/null
@@ -0,0 +1,40 @@
+# use two {{ for title, but one { for all others.
+
+@inproceedings{percival08,
+  title={{Generating Targeted Rhythmic Exercises for Music Students
+with Constraint Satisfaction Programming}},
+  author={Graham Percival and Tosten Anders and George Tzanetakis},
+  booktitle={International Computer Music Conference},
+  year=2008,
+}
+
+@inproceedings{passos09,
+  title={{Functional Harmonic Analysis and Computational Musicology
+in Rameau}},
+  author={Alexandre Tachard Passos and Marcos Sampaio and Pedro
+Kröger and Givaldo de Cidra},
+  booktitle={Proceedings of the 12th Brazilian Symposium on Computer
+Music},
+  year=2009,
+  pages={207--210},
+}
+
+@inproceedings{simoes07,
+  title={{Using Text Mining Techniques for Classical Music Scores
+Analysis}},
+  author={Alberto Simões and Anália Lourenço and José João Almeida},
+  booktitle={New Trends in Artificial Intelligence},
+  editor={J. Neves et al.},
+  year=2007,
+}
+
+@inproceedings{baird05,
+  title={{Real-time generation of music notation via audience interaction using
+python and GNU LilyPond}},
+  author={Kevin C. Baird},
+  booktitle={New Interfaces for Music Expression},
+  year=2005,
+  month="May",
+  location="Vancouver, Canada"
+}
+
diff --git a/Documentation/web/texi-web.bst b/Documentation/web/texi-web.bst
new file mode 100644 (file)
index 0000000..32fe613
--- /dev/null
@@ -0,0 +1,1373 @@
+% 18/aug/2010:
+%    - changed into texi-long.bst by Graham Percival for GNU LilyPond
+%    - only a minimum of changes were made; some html remains in
+%      this file, but it does not appear in our output
+% BibTeX bibliography style `html-long'
+%   spits out texinfo-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 texinfo, and use URL to make cite key a link
+FUNCTION {output.bibitem}
+{ newline$
+  URL empty$
+    { "@item " write$
+    }
+    { "" quote$ * cite$ * quote$ * " HREF=" * quote$ *
+       URL * quote$ * "> " * cite$ * ":</A></DT>" * write$
+    }
+  if$
+  newline$
+%  "" 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$
+%  "" 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 texinfo
+FUNCTION {emphasize}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "@emph{" swap$ * "}" * }
+  if$
+}
+
+% DFK added for texinfo strong emphasis
+FUNCTION {strong}
+{ duplicate$ empty$
+    { pop$ "" }
+    { "@strong{" swap$ * "}" * }
+  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 author.title.purify
+      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 texinfo
+FUNCTION {begin.bib}
+{ "@c bib -> itexi intro" write$ newline$
+  "@itemize" write$ newline$
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+% DFK changed to texinfo
+FUNCTION {end.bib}
+{ newline$
+  "@end itemize" write$ newline$
+  "@c bib -> itexi end" write$ newline$
+}
+
+EXECUTE {end.bib}
diff --git a/Documentation/web/we-wrote.bib b/Documentation/web/we-wrote.bib
new file mode 100644 (file)
index 0000000..4599e87
--- /dev/null
@@ -0,0 +1,31 @@
+# use two {{ for title, but one { for all others.
+
+@inproceedings{hanwen06,
+  title={{LilyPond, Automated music formatting and the Art of Shipping}},
+  author={Han-Wen Nienhuys},
+  booktitle={Forum Internacional Software Livre 2006 (FISL7.0)},
+  year=2006,
+  note={(@uref{http://lilypond.org/web/images/FISL7-slides.pdf, PDF 1095k})}
+}
+
+@mastersthesis{sandberg06,
+  title={{Separating input language and formatter in GNU LilyPond}},
+  author={Erik Sandberg},
+  year=2006,
+  month="March",
+  school={Uppsala University, Department of Information Technology},
+  note={(@uref{http://lilypond.org/web/images/thesis-erik-sandberg, PDF 750k})}
+}
+
+@inproceedings{hanwen03,
+  title={{LilyPond, a system for automated music engraving}},
+  author={Han-Wen Nienhuys and Jan Nieuwenhuizen},
+  booktitle={Colloquium on Musical Informatics (XIV CIM 2003)},
+  year=2003,
+  month=May,
+  location={Firenze, Italy},
+  note={(@uref{http://lilypond.org/web/images/xivcim.pdf, PDF 95k})}
+}
+
+
+
diff --git a/VERSION b/VERSION
index b1ac8cbd0d400c9faf7973ed4b0fc09c4cec6c6a..8deae24697fd3128d66dcc0a97862056dd541faa 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=13
-PATCH_LEVEL=29
+PATCH_LEVEL=32
 MY_PATCH_LEVEL=
 VERSION_STABLE=2.12.3
-VERSION_DEVEL=2.13.29
+VERSION_DEVEL=2.13.31
diff --git a/input/regression/center-title.ly b/input/regression/center-title.ly
new file mode 100644 (file)
index 0000000..e67c5d6
--- /dev/null
@@ -0,0 +1,17 @@
+\version "2.13.31"
+
+\header {
+
+  texidoc = "
+Long titles should be properly centered.
+
+"
+
+  title = \markup \center-column {
+    "How Razorback Jumping Frogs Level Six Piqued Gymnasts"
+  }
+}
+
+\score {
+  s1
+}
index df97be4c49e52ece1df6e94142cbf64b9be1b71d..caac906bd040a59fba0288df1d4975bdf96c2664 100644 (file)
@@ -2,8 +2,8 @@
 
 \header {
   texidoc="
-The label for the lowest fret can be changed in location,
-size, and number type.
+The size, spacing, and symbols used to indicate open and muted strings
+can be changed.
 
 "
 }
@@ -20,24 +20,24 @@ size, and number type.
   \new Voice {
     \textLengthOn
 
-     %% D major for guitar, terse style 
+     %% D major for guitar, terse style
     d'1 ^\markup {
             \fret-diagram-terse #"x;x;o;2-1;3-2;2-3;"}
 
-     %% D major for guitar, terse style 
-    \once \override TextScript #'fret-diagram-details 
-        #'top-fret-thickness = #5 
-    \once \override TextScript #'fret-diagram-details 
+     %% D major for guitar, terse style
+    \once \override TextScript #'fret-diagram-details
+        #'top-fret-thickness = #5
+    \once \override TextScript #'fret-diagram-details
         #'xo-font-magnification = #0.3
     d'1 ^\markup {
             \fret-diagram-terse #"x;x;o;2-1;3-2;2-3;"}
 
-     %% D major for guitar, terse style 
-    \override TextScript #'fret-diagram-details 
-        #'mute-string = #"M" 
-    \override TextScript #'fret-diagram-details 
+     %% D major for guitar, terse style
+    \override TextScript #'fret-diagram-details
+        #'mute-string = #"M"
+    \override TextScript #'fret-diagram-details
         #'open-string = #"*"
-    \override TextScript #'fret-diagram-details 
+    \override TextScript #'fret-diagram-details
         #'xo-padding = #0.5
     d'1 ^\markup {
             \fret-diagram-terse #"x;x;o;2-1;3-2;2-3;"}
diff --git a/input/regression/hara-kiri-alive-with.ly b/input/regression/hara-kiri-alive-with.ly
new file mode 100644 (file)
index 0000000..a916c01
--- /dev/null
@@ -0,0 +1,23 @@
+\version "2.13.29"
+
+\header {
+  texidoc = "Staves in a PianoStaff remain alive as long as any of
+the staves has something interesting."
+}
+
+\layout {
+  \context {
+    \Staff
+    \RemoveEmptyStaves
+    \override VerticalAxisGroup #'remove-first = ##t
+  }
+}
+
+<<
+  \new Staff { c'1 \break c'1 \break c'1 }
+  \new PianoStaff
+  <<
+    \new Staff { d'1 R1 R1 }
+    \new Staff { R1 e'1 R1 }
+  >>
+>>
diff --git a/input/regression/hara-kiri-pianostaff.ly b/input/regression/hara-kiri-pianostaff.ly
deleted file mode 100644 (file)
index e19aa4f..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-\version "2.13.18"
-
-\header { texidoc =
-
-         " Hara-kiri staves kill themselves if they are empty.  This
-example really contains three staves, but as they progress, empty ones
-are removed: this example has three staves, but some of them
-disappear: note how the 2nd line only has the bar number 2. (That the
-bar number is printed might be considered a bug, however, the scenario
-of all staves disappearing does not happen in practice.)
-
-Any staff brackets and braces are removed, both in the single staff
-and no staff case.
-
-This example was done with a pianostaff, which has fixed distance
-alignment; this should not confuse the mechanism.
-"
-         
-}
-
-\layout {
-  ragged-right= ##t
-  \context {
-    \Staff
-    \RemoveEmptyStaves
-  }
-}
-
-\transpose c c''
-\context PianoStaff <<
-  \new Staff {  c4 c c c \break s1 \break c4 c c c \break c c c c}
-  \new Staff {  d4 d d d        s1        s1              s1 }
-  \new Staff {  e4 e e e        s1        e4 e e e        s1 }
->>
-
-
-
diff --git a/input/regression/hara-kiri-staff.ly b/input/regression/hara-kiri-staff.ly
new file mode 100644 (file)
index 0000000..17ad993
--- /dev/null
@@ -0,0 +1,34 @@
+\version "2.13.18"
+
+\header { texidoc =
+
+         " Hara-kiri staves kill themselves if they are empty.  This
+example really contains three staves, but as they progress, empty ones
+are removed: this example has three staves, but some of them
+disappear: note how the 2nd line only has the bar number 2. (That the
+bar number is printed might be considered a bug, however, the scenario
+of all staves disappearing does not happen in practice.)
+
+Any staff brackets and braces are removed, both in the single staff
+and no staff case.
+"
+         
+}
+
+\layout {
+  ragged-right= ##t
+  \context {
+    \Staff
+    \RemoveEmptyStaves
+  }
+}
+
+\transpose c c''
+\context GrandStaff <<
+  \new Staff {  c4 c c c \break s1 \break c4 c c c \break c c c c}
+  \new Staff {  d4 d d d        s1        s1              s1 }
+  \new Staff {  e4 e e e        s1        e4 e e e        s1 }
+>>
+
+
+
diff --git a/input/regression/markup-path-fill.ly b/input/regression/markup-path-fill.ly
new file mode 100644 (file)
index 0000000..e4c9a03
--- /dev/null
@@ -0,0 +1,17 @@
+\version "2.13.31"
+
+\header {
+  texidoc = "
+The @code{\\path} markup command supports the @code{filled}
+property to toggle its fill.
+"
+}
+
+\markup {
+  \override #'(filled . #t) {
+    \path #0.2 #'((moveto 1 1)
+                 (lineto 1 6)
+                 (curveto 3 8 5 6 1 1)
+                 (closepath))
+  }
+}
diff --git a/input/regression/markup-path-linecap.ly b/input/regression/markup-path-linecap.ly
new file mode 100644 (file)
index 0000000..7ed4e62
--- /dev/null
@@ -0,0 +1,26 @@
+\version "2.13.31"
+
+\header {
+  texidoc = "
+The @code{\\path} markup command supports the
+@code{line-cap-style} property with values of @code{butt},
+@code{round}, and @code{square}.
+"
+}
+
+myPath =
+#'((moveto 0 0) (lineto 5 0))
+
+\markup {
+  \column {
+    \override #'(line-cap-style . butt) {
+      \path #1 #myPath
+    }
+    \override #'(line-cap-style . round) {
+      \path #1 #myPath
+    }
+    \override #'(line-cap-style . square) {
+      \path #1 #myPath
+    }
+  }
+}
diff --git a/input/regression/markup-path-linejoin.ly b/input/regression/markup-path-linejoin.ly
new file mode 100644 (file)
index 0000000..37ef039
--- /dev/null
@@ -0,0 +1,26 @@
+\version "2.13.31"
+
+\header {
+  texidoc = "
+The @code{\\path} markup command supports the
+@code{line-join-style} property with values of @code{bevel},
+@code{round}, and @code{miter}.
+"
+}
+
+myPath =
+#'((moveto 0 0) (rlineto 2 5) (rlineto 2 -5))
+
+\markup {
+  \column {
+    \override #'(line-join-style . bevel) {
+      \path #1 #myPath
+    }
+    \override #'(line-join-style . round) {
+      \path #1 #myPath
+    }
+    \override #'(line-join-style . miter) {
+      \path #1 #myPath
+    }
+  }
+}
diff --git a/input/regression/markup-path.ly b/input/regression/markup-path.ly
new file mode 100644 (file)
index 0000000..deedf54
--- /dev/null
@@ -0,0 +1,23 @@
+\version "2.13.31"
+
+\header {
+  texidoc = "
+The @code{\\path} markup command allows the user to draw
+arbitrary paths using a simple syntax.  The two paths below
+should be identical.
+"
+}
+
+\markup {
+  \column {
+    \path #0.2 #'((moveto 1 1)
+                 (lineto 1 6)
+                 (curveto 3 8 5 6 1 1)
+                 (closepath))
+
+    \path #0.2 #'((rmoveto 1 1)
+                 (rlineto 0 5)
+                 (rcurveto 2 2 4 0 0 -5)
+                 (closepath))
+  }
+}
diff --git a/input/regression/nested-fill-lines.ly b/input/regression/nested-fill-lines.ly
new file mode 100644 (file)
index 0000000..5927326
--- /dev/null
@@ -0,0 +1,16 @@
+\version "2.13.31"
+
+\header
+{
+
+  texidoc = "
+Nested fill-lines should work properly.  In this example, both occurences
+of FOO should be centered.
+
+"
+  title = \markup \column {
+    \fill-line { "|FOO|" }
+    \fill-line { \fill-line { "|FOO|" } }
+  }
+}
+\score {c''}
diff --git a/input/regression/nested-property-revert.ly b/input/regression/nested-property-revert.ly
new file mode 100644 (file)
index 0000000..aee39dc
--- /dev/null
@@ -0,0 +1,18 @@
+\version "2.13.30"
+
+\header {
+  texidoc = "
+If a nested property revert follows an override in the same grob for
+a different property, the nested property's default setting should not
+be evicted from the property alist.
+"
+}
+
+\relative c' {
+  c1\startTrillSpan
+  c1\stopTrillSpan
+  \override TrillSpanner #'color =  #red
+  \revert TrillSpanner #'(bound-details left text)
+  c1\startTrillSpan
+  c1\stopTrillSpan
+}
diff --git a/input/regression/page-breaking-rehearsal-mark.ly b/input/regression/page-breaking-rehearsal-mark.ly
new file mode 100644 (file)
index 0000000..a5a81fb
--- /dev/null
@@ -0,0 +1,13 @@
+\version "2.13.27"
+
+\header {
+  texidoc = "The height of RehearsalMarks is taken into account during page
+breaking."
+}
+
+#(set-default-paper-size "a6")
+
+\book {
+  \repeat unfold 2
+  { \mark \markup \column {A B C D E F G H I J K L M N O P Q R S T U V W X Y Z} c1 \break }
+}
\ No newline at end of file
index a71c222e6377ecce466474e0bf4006292395726b..d67541beabeb8976dea866e591d227b42550d970 100644 (file)
@@ -3,8 +3,8 @@
 \header {
   texidoc = "By default, we start with page 1, which is on the right hand side
 of a double page. In this example, auto-first-page-number is set to ##t.
-ALthough the music will fit on a single page, it would require stretching the
-first page badly, so we should automatically set the first page
+Although the first measure could go on a page by itself, this would require
+stretching the first page badly, so we should automatically set the first page
 number to 2 in order to avoid a bad page turn."
 }
 
@@ -27,7 +27,7 @@ number to 2 in order to avoid a bad page turn."
   \score {
     {
       a b c d R1
-      \repeat unfold 26 {a4 b c d}
+      \repeat unfold 30 {a4 b c d}
     }
   }
 }
diff --git a/input/regression/partial-polymetric.ly b/input/regression/partial-polymetric.ly
new file mode 100644 (file)
index 0000000..e284103
--- /dev/null
@@ -0,0 +1,33 @@
+\version "2.13.31"
+
+\header {
+  texidoc = "@code{\partial} works with polymetric staves."
+}
+
+\score {
+  \relative c' <<
+    \new Staff {
+      \partial 4
+      c4 |
+      c4 c c c |
+    }
+    \new Staff {
+      \time 3/4
+      \partial 2
+      c4 c |
+      c4 c c |
+    }
+  >>
+  \layout {
+    \context {
+      \Score
+      \remove "Timing_translator"
+      \remove "Default_bar_line_engraver"
+    }
+    \context {
+      \Staff
+      \consists "Timing_translator"
+      \consists "Default_bar_line_engraver"
+    }
+  }
+}
index b534b634fa98a6a733c0ed0face9ee6f162335ee..a58009adbb58367bb62804936e8bd335e0b1b2ef 100644 (file)
@@ -9,7 +9,7 @@ in woodwind-diagrams.scm."
   c1^\markup {
     \woodwind-diagram
       #'piccolo
-      #'(1.0 0.1 #t ())
+      #'()
   }
 }
 
@@ -17,7 +17,7 @@ in woodwind-diagrams.scm."
   c1^\markup {
     \woodwind-diagram
       #'flute
-      #'(1.0 0.1 #t ())
+      #'()
   }
 }
 
@@ -25,7 +25,7 @@ in woodwind-diagrams.scm."
   c1^\markup {
     \woodwind-diagram
       #'oboe
-      #'(1.0 0.1 #t ())
+      #'()
   }
 }
 
@@ -33,7 +33,7 @@ in woodwind-diagrams.scm."
   c1^\markup {
     \woodwind-diagram
       #'clarinet
-      #'(1.0 0.1 #t ())
+      #'()
   }
 }
 
@@ -41,7 +41,7 @@ in woodwind-diagrams.scm."
   c1^\markup {
     \woodwind-diagram
       #'bass-clarinet
-      #'(1.0 0.1 #t ())
+      #'()
   }
 }
 
@@ -49,7 +49,7 @@ in woodwind-diagrams.scm."
   c1^\markup {
     \woodwind-diagram
       #'saxophone
-      #'(1.0 0.1 #t ())
+      #'()
   }
 }
 
@@ -57,7 +57,7 @@ in woodwind-diagrams.scm."
   c1^\markup {
     \woodwind-diagram
       #'bassoon
-      #'(1.0 0.1 #t ())
+      #'()
   }
 }
 
@@ -65,6 +65,6 @@ in woodwind-diagrams.scm."
   c1^\markup {
     \woodwind-diagram
       #'contrabassoon
-      #'(1.0 0.1 #t ())
+      #'()
   }
-}
\ No newline at end of file
+}
index d5bfd54950074f4fa468fc0a3a9875a878e58571..1105010e62bbcfe61c1171c526609310e2af2230 100644 (file)
@@ -15,4 +15,4 @@ woodwind-diagrams.scm"
 #(print-keys-verbose 'saxophone)
 #(print-keys-verbose 'baritone-saxophone)
 #(print-keys-verbose 'bassoon)
-#(print-keys-verbose 'contrabassoon)
\ No newline at end of file
+#(print-keys-verbose 'contrabassoon)
index 34e2e166229d99c56ba5604814da32ad2a43910c..2a9cf9d17dd21819dc981c576f81ce5d75983a43 100644 (file)
@@ -441,9 +441,9 @@ ADD_INTERFACE (Bar_line,
               " line without special bar lines.\n"
               "\n"
               "@code{S|:} and @code{:|S} are used for repeat/segno combinations that are"
-              " separated at line breaks. Alternatively, @code{.S|:} and @code{:|S.}"
+              " separated at line breaks.  Alternatively, @code{.S|:} and @code{:|S.}"
               " may be used which combine repeat signs and segno at the same line in"
-              " case of a line break. @code{:|S|:} is a combination of a left repeat"
+              " case of a line break.  @code{:|S|:} is a combination of a left repeat"
               " (@code{:|}), a segno (@code{S}) and a right repeat @code{|:} which"
               " splits before the segno at line breaks; @code{:|S.|:} splits after"
               " the segno sign.\n"
index 0779c133a1d807e73ad3a3485ce0165f4cfb39b1..a7fac5a30d4146f1d9f868146524e077e6aa7241 100644 (file)
@@ -531,6 +531,8 @@ Line_details::Line_details (Prob *pb, Output_def *paper)
   SCM title_spec = paper->c_variable ("between-title-spacing");
   padding_ = 0;
   title_padding_ = 0;
+  min_distance_ = 0;
+  title_min_distance_ = 0;
   Page_layout_problem::read_spacing_spec (spec, &padding_, ly_symbol2scm ("padding"));
   Page_layout_problem::read_spacing_spec (title_spec, &title_padding_, ly_symbol2scm ("padding"));
   Page_layout_problem::read_spacing_spec (spec, &min_distance_, ly_symbol2scm ("minimum-distance"));
index 245749604af8e65c7d818f83a0c1c5ba836396f6..f63d02887f195b4d1a9354657f6b113369a530a5 100644 (file)
@@ -24,7 +24,8 @@
 LY_DEFINE (ly_get_context_mods,
           "ly:get-context-mods",
           1, 0, 0, (SCM contextmod),
-          "Returns the list of context modifications stored in @var{contextmod}.")
+          "Returns the list of context modifications stored in"
+          " @var{contextmod}.")
 {
   Context_mod *tr = unsmob_context_mod (contextmod);
   LY_ASSERT_SMOB (Context_mod, contextmod, 1);
@@ -34,7 +35,8 @@ LY_DEFINE (ly_get_context_mods,
 LY_DEFINE (ly_add_context_mod,
           "ly:add-context-mod",
           2, 0, 0, (SCM contextmods, SCM modification),
-          "Adds the given context @var{modification} to the list @var{contextmods} of context modifications.")
+          "Adds the given context @var{modification} to the list"
+          " @var{contextmods} of context modifications.")
 {
   Context_mod *ctxmod = unsmob_context_mod (contextmods);
   LY_ASSERT_SMOB (Context_mod, contextmods, 1);
index befbc29d7e5e9df693a714074c65f3e17ba72023..2c6ae06185eb140a95bf895ef80afc2c70831680 100644 (file)
@@ -27,7 +27,8 @@ get_grob_direction (Grob *me)
   SCM d = me->get_property ("direction");
   if (d == ly_symbol2scm ("calculation-in-progress"))
     {
-      programming_error ("Grob direction requested while calculation in progress. ");
+      programming_error ("Grob direction requested while calculation in"
+                         " progress. ");
       return UP;
     }
   if (!is_direction (d))
index c2cbe1ace4ee3642df487fbb7e1ee75a7a468e26..409831e8804e55a92770742d4a2c26379f63fd05 100644 (file)
 
 LY_DEFINE (ly_engraver_make_grob, "ly:engraver-make-grob",
           3, 0, 0, (SCM engraver, SCM grob_name, SCM cause),
-          "Creates a grob originating from given engraver instance, "
-          "with give @code{grob_name}, a symbol.  "
-          "@code{cause} should either be another grob "
-          "or a music event.")
+          "Create a grob originating from given @var{engraver} instance,"
+          " with given @var{grob-name}, a symbol."
+          "  @var{cause} should either be another grob"
+          " or a music event.")
 {
   LY_ASSERT_TYPE (unsmob_engraver, engraver, 1);
   LY_ASSERT_TYPE (ly_is_symbol, grob_name, 2);
@@ -38,3 +38,19 @@ LY_DEFINE (ly_engraver_make_grob, "ly:engraver-make-grob",
   return g->self_scm ();
 }
 
+LY_DEFINE (ly_engraver_announce_end_grob, "ly:engraver-announce-end-grob",
+          3, 0, 0, (SCM engraver, SCM grob, SCM cause),
+          "Announce the end of a grob (i.e., the end of a spanner)"
+          " originating from given @var{engraver} instance, with"
+          " @var{grob} being a grob.  @var{cause} should either"
+          " be another grob or a music event.")
+{
+  LY_ASSERT_TYPE (unsmob_engraver, engraver, 1);
+  LY_ASSERT_SMOB (Grob, grob, 2);
+  LY_ASSERT_TYPE (ly_is_grob_cause, cause, 3);
+
+  unsmob_engraver (engraver)->
+    announce_end_grob (unsmob_grob (grob), cause);
+
+  return SCM_UNSPECIFIED;
+}
index c8816b43a7902350c91fb7ddac2a146f7402e5c3..53b0564ceb812133b8b5405b328a56df727d4d08 100644 (file)
@@ -146,8 +146,8 @@ LY_DEFINE (ly_programming_error, "ly:programming-error",
 
 LY_DEFINE (ly_success, "ly:success",
           1, 0, 1, (SCM str, SCM rest),
-          "A Scheme callable function to issue a success message @code{str}."
-          "  The message is formatted with @code{format} and @code{rest}.")
+          "A Scheme callable function to issue a success message @var{str}."
+          "  The message is formatted with @code{format} and @var{rest}.")
 {
   LY_ASSERT_TYPE (scm_is_string, str, 1);
   str = scm_simple_format (SCM_BOOL_F, str, rest);
@@ -157,8 +157,8 @@ LY_DEFINE (ly_success, "ly:success",
 }
 LY_DEFINE (ly_warning, "ly:warning",
           1, 0, 1, (SCM str, SCM rest),
-          "A Scheme callable function to issue the warning @code{str}."
-          "  The message is formatted with @code{format} and @code{rest}.")
+          "A Scheme callable function to issue the warning @var{str}."
+          "  The message is formatted with @code{format} and @var{rest}.")
 {
   LY_ASSERT_TYPE (scm_is_string, str, 1);
   str = scm_simple_format (SCM_BOOL_F, str, rest);
@@ -574,8 +574,8 @@ format_single_argument (SCM arg, int precision, bool escape = false)
 
 LY_DEFINE (ly_format, "ly:format",
           1, 0, 1, (SCM str, SCM rest),
-          "LilyPond specific format, supporting @code{~a} and @code{~[0-9]f}. "
-          "Basic support for @code{~s} is also provided.")
+          "LilyPond specific format, supporting @code{~a} and @code{~[0-9]f}."
+          "  Basic support for @code{~s} is also provided.")
 {
   LY_ASSERT_TYPE (scm_is_string, str, 1);
 
@@ -644,7 +644,7 @@ LY_DEFINE (ly_format, "ly:format",
 
   if (scm_is_pair (rest))
     programming_error (string (__FUNCTION__)
-                      + ": too many  arguments");
+                      + ": too many arguments");
 
   vsize len = 0;
   for (vsize i = 0; i < results.size (); i++)
index 199e6fb9b3410da8d6355aaea07782577f170223..c27a9ee8bdab5ff3dbe941a0e9bc6533857ca264 100644 (file)
@@ -402,3 +402,20 @@ LY_DEFINE (ly_grob_common_refpoint_of_array, "ly:grob-common-refpoint-of-array",
   Grob *refp = common_refpoint_of_array (ga->array (), gr, Axis (scm_to_int (axis)));
   return refp ? refp->self_scm () : SCM_BOOL_F;
 }
+
+LY_DEFINE (ly_grob_chain_callback, "ly:grob-chain-callback",
+          3, 0, 0, (SCM grob, SCM proc, SCM sym),
+          "Find the callback that is stored as property"
+          " @var{sym} of grob @var{grob} and chain @var{proc}"
+          " to the head of this, meaning that it is called"
+          " using @var{grob} and the previous callback's result.")
+{
+  Grob *gr = unsmob_grob (grob);
+
+  LY_ASSERT_SMOB (Grob, grob, 1);
+  LY_ASSERT_TYPE (ly_is_procedure, proc, 2);
+  LY_ASSERT_TYPE (ly_is_symbol, sym, 3);
+
+  chain_callback (gr, proc, sym);
+  return SCM_UNSPECIFIED;
+}
index 395bcdb553931e0db85b9b0ca7266318e5d09b0a..8f007197cd2bb7f3d10ddfff2a2f2318f4e4604f 100644 (file)
@@ -76,6 +76,20 @@ bool find_in_range (SCM vector, int low, int hi, int min, int max)
 
 bool
 Hara_kiri_group_spanner::request_suicide (Grob *me, int start, int end)
+{
+  if (!request_suicide_alone (me, start, end))
+    return false;
+
+  extract_grob_set (me, "keep-alive-with", friends);
+  for (vsize i = 0; i < friends.size (); ++i)
+    if (friends[i]->is_live () && !request_suicide_alone (friends[i], start, end))
+      return false;
+
+  return true;
+}
+
+bool
+Hara_kiri_group_spanner::request_suicide_alone (Grob *me, int start, int end)
 {
   if (!to_boolean (me->get_property ("remove-empty")))
     return false;
@@ -172,6 +186,7 @@ ADD_INTERFACE (Hara_kiri_group_spanner,
               /* properties */
               "items-worth-living "
               "important-column-ranks "
+              "keep-alive-with "
               "remove-empty "
               "remove-first "
               );
index bdc2cf36fff3d9fff90f15e50ef5e4c9ee7906d9..bea7c3a2210591ab6fca068808e90aabfa2d2008 100644 (file)
@@ -34,6 +34,7 @@ public:
   DECLARE_SCHEME_CALLBACK (after_line_breaking, (SCM));
   DECLARE_GROB_INTERFACE();
   static bool request_suicide (Grob *me, int start, int end);
+  static bool request_suicide_alone (Grob *me, int start, int end);
   static void consider_suicide (Grob *me);
   static void add_interesting_item (Grob *me, Grob *n);
 };
index 3c4076c0daa79ae9d63afa1c015f9870b5b4015a..d34534c1ca4eb462b6c1fb9ff4f1bd8ce270d10e 100644 (file)
@@ -99,6 +99,7 @@ class Page_breaking
 {
 public:
   typedef bool (*Break_predicate) (Grob *);
+  typedef bool (*Prob_break_predicate) (Prob *);
   typedef vector<vsize> Line_division;
   
   /*
@@ -109,7 +110,7 @@ public:
    */
   virtual SCM solve () = 0;
 
-  Page_breaking (Paper_book *pb, Break_predicate);
+  Page_breaking (Paper_book *pb, Break_predicate, Prob_break_predicate);
   virtual ~Page_breaking ();
 
   bool ragged () const;
@@ -195,6 +196,9 @@ private:
   vector<Line_details> cached_line_details_;
   vector<Line_details> uncompressed_line_details_;
 
+  mutable vector<Real> page_height_cache_;
+  mutable vector<Real> last_page_height_cache_;
+
   vector<Break_position> chunk_list (vsize start, vsize end);
   Line_division system_count_bounds (vector<Break_position> const &chunks, bool min);
   void line_breaker_args (vsize i,
@@ -213,7 +217,7 @@ private:
   Page_spacing_result space_systems_on_2_pages (vsize configuration_index, vsize first_page_num);
   Page_spacing_result finalize_spacing_result (vsize configuration_index, Page_spacing_result);
   void create_system_list ();
-  void find_chunks_and_breaks (Break_predicate);
+  void find_chunks_and_breaks (Break_predicate, Prob_break_predicate);
   SCM make_page (int page_num, bool last) const;
   SCM get_page_configuration (SCM systems, int page_num, bool ragged, bool last);
   SCM draw_page (SCM systems, SCM config, int page_num, bool last);
index b670387ad691a1375c7002633d2832ace33dded2..f57060a647cde67ec15f6eb39e2cfceb16d210d8 100644 (file)
@@ -53,6 +53,7 @@ class Page_spacer
 public:
   Page_spacer (vector<Line_details> const &lines, vsize first_page_num, Page_breaking const*);
   Page_spacing_result solve (vsize page_count);
+  Page_spacing_result solve ();
 
 private:
   struct Page_spacing_node
@@ -64,19 +65,27 @@ private:
       penalty_ = infinity_f;
       prev_ = VPOS;
       system_count_status_ = SYSTEM_COUNT_OK;
+      page_ = 0;
     }
 
     Real demerits_;
     Real force_;
     Real penalty_;
     vsize prev_;
+    vsize page_;
     int system_count_status_;
   };
 
   Page_breaking const *breaker_;
   vsize first_page_num_;
   vector<Line_details> lines_;
+
+  // If a page-count is requested, we use state_, which
+  // is indexed by page*system, for our dynamic programming
+  // intermediate storage.  Otherwise, we use simple_state_,
+  // which is indexed only by system.
   Matrix<Page_spacing_node> state_;
+  vector<Page_spacing_node> simple_state_;
   vsize max_page_count_;
 
   bool ragged_;
diff --git a/lily/keep-alive-together-engraver.cc b/lily/keep-alive-together-engraver.cc
new file mode 100644 (file)
index 0000000..f4240cd
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+  This file is part of LilyPond, the GNU music typesetter.
+
+  Copyright (C) 2010 Joe Neeman <joeneeman@gmail.com>
+
+  LilyPond is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  LilyPond is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "context.hh"
+#include "dispatcher.hh"
+#include "engraver.hh"
+#include "grob.hh"
+#include "grob-array.hh"
+
+#include "translator.icc"
+
+class Keep_alive_together_engraver: public Engraver
+{
+  vector<Grob*> group_spanners_;
+
+public:
+  TRANSLATOR_DECLARATIONS (Keep_alive_together_engraver);
+  DECLARE_ACKNOWLEDGER (hara_kiri_group_spanner);
+
+  virtual void finalize ();
+};
+
+Keep_alive_together_engraver::Keep_alive_together_engraver ()
+{
+}
+
+void
+Keep_alive_together_engraver::acknowledge_hara_kiri_group_spanner (Grob_info i)
+{
+  group_spanners_.push_back (i.grob ());
+}
+
+void
+Keep_alive_together_engraver::finalize ()
+{
+  for (vsize i = 0; i < group_spanners_.size (); ++i)
+    {
+      SCM grob_array_scm = Grob_array::make_array ();
+      Grob_array *ga = unsmob_grob_array (grob_array_scm);
+
+      // It would make Hara_kiri_group_spanner::request_suicide a _little_
+      // faster if we removed each grob from its own array. It seems
+      // unnecessary for now, though.
+      ga->set_array (group_spanners_);
+      group_spanners_[i]->set_object ("keep-alive-with", grob_array_scm);
+    }
+}
+
+ADD_ACKNOWLEDGER (Keep_alive_together_engraver, hara_kiri_group_spanner);
+
+ADD_TRANSLATOR (Keep_alive_together_engraver,
+               /* doc */
+               "This engraver collects all @code{Hara_kiri_group_spanner}s "
+               "that are created in contexts at or below its own.  "
+               "These spanners are then tied together so that one will "
+               "be removed only if all are removed.  For example, "
+               "if a @code{StaffGroup} uses this engraver, then the staves "
+               "in the group will all be visible as long as there is a note "
+               "in at least one of them.",
+
+               /* create */
+               "",
+
+               /* read */
+               "",
+
+               /* write */
+               ""
+               );
index 25194a4b1365c9bc5971f0baadb4385cc37dbe35..509ecd2df3755cc4d842450264eff6b81f1d7705 100644 (file)
@@ -155,8 +155,9 @@ Ligature_engraver::stop_translation_timestep ()
     {
       if (!finished_primitives_.size ())
        {
-         finished_ligature_->programming_error ("Ligature_engraver::stop_translation_timestep (): "
-                                                "junking empty ligature");
+         finished_ligature_->programming_error (
+           "Ligature_engraver::stop_translation_timestep ():"
+           " junking empty ligature");
        }
       else
        {
index 09e89e3a5ef1977b90f70fdcf99595894474fd69..ca0fe9b039174c2131c2b9f244e22ad6576cfa6b 100644 (file)
@@ -105,8 +105,8 @@ internal_brew_primitive (Grob *me)
   SCM primitive_scm = me->get_property ("primitive");
   if (primitive_scm == SCM_EOL)
     {
-      programming_error ("Mensural_ligature: "
-                        "undefined primitive -> ignoring grob");
+      programming_error ("Mensural_ligature:"
+                        " undefined primitive -> ignoring grob");
       return Lookup::blank (Box (Interval (0, 0), Interval (0, 0)));
     }
   int primitive = scm_to_int (primitive_scm);
@@ -149,8 +149,8 @@ internal_brew_primitive (Grob *me)
       out = brew_flexa (me, delta_pitch, false, width, thickness);
       break;
     default:
-      programming_error (_ ("Mensural_ligature: "
-                           "unexpected case fall-through"));
+      programming_error (_ ("Mensural_ligature:"
+                           " unexpected case fall-through"));
       return Lookup::blank (Box (Interval (0, 0), Interval (0, 0)));
     }
 
index 1f4cb4d686cbb92d9d8142aba3a588dea7791d90..2e612185e5d27ae8492a6f50cc91b6606dfa0c08 100644 (file)
 #include "page-spacing.hh"
 #include "paper-book.hh"
 
-static bool
-is_break (Grob *)
-{
-  return false;
-}
-
 Minimal_page_breaking::Minimal_page_breaking (Paper_book *pb)
-  : Page_breaking (pb, is_break)
+  : Page_breaking (pb, 0, 0)
 {
 }
 
index c22634f1522d370fd5fd099a1c4485c01f35291a..b6473b19d190395c80030a1addb5c2dec702d364 100644 (file)
@@ -19,8 +19,8 @@ LY_DEFINE (ly_music_function_extract, "ly:music-function-extract", 1, 0, 0,
 LY_DEFINE (ly_make_music_function, "ly:make-music-function", 2, 0, 0,
           (SCM signature, SCM func),
           "Make a function to process music, to be used for the"
-          " parser.  @code{func} is the function, and @code{signature}"
-          " describes its arguments.  @code{signature} is a list"
+          " parser.  @var{func} is the function, and @var{signature}"
+          " describes its arguments.  @var{signature} is a list"
           " containing either @code{ly:music?} predicates or other type"
           " predicates.")
 {
index fb62c7d80ad08196313ad8c2a4d6509369037524..db897d3fd847d60cce195e926889eced04c9ec23 100644 (file)
@@ -31,7 +31,7 @@ evict_from_alist (SCM symbol, SCM alist, SCM alist_end)
 /*
   PROP_PATH should be big-to-small ordering
  */
-SCM 
+SCM
 nested_property_alist (SCM alist, SCM prop_path, SCM value)
 {
   SCM new_value = SCM_BOOL_F;
@@ -52,17 +52,19 @@ nested_property_alist (SCM alist, SCM prop_path, SCM value)
   Recursively purge alist of prop_path:
 
   revert ((sym, val) : L, [sym]) = L
-  revert ((sym, val) : L, sym : props) = 
+  revert ((sym, val) : L, sym : props) =
     (sym, revert (val, rest-props)) ++ L
   revert ((sym, val) : L, p ++ rest-props) =
     (sym, val) : revert (L, p ++ rest-props)
 
  */
-SCM 
+SCM
 nested_property_revert_alist (SCM alist, SCM prop_path)
 {
+  int copy_count = 0;
+  bool drop = false;
   assert(scm_is_pair (prop_path));
-  
+
   SCM wanted_sym = scm_car (prop_path);
 
   SCM new_list = SCM_EOL;
@@ -71,6 +73,7 @@ nested_property_revert_alist (SCM alist, SCM prop_path)
     {
       SCM sub_sym = scm_caar (s);
       SCM old_val = scm_cdar (s);
+      drop = false;
 
       if (sub_sym == wanted_sym)
        {
@@ -81,25 +84,48 @@ nested_property_revert_alist (SCM alist, SCM prop_path)
              /* nothing changed: drop newly constructed list. */
              if (old_val == new_val)
                return alist;
-             
+
              *tail = scm_acons (sub_sym, new_val, SCM_EOL);
              tail = SCM_CDRLOC(*tail);
+              *tail = scm_cdr (s);
+              return new_list;
            }
          else
            {
-             /* old value is dropped. */
+              /* old value should be dropped only if we have another copy of it in the alist */
+              copy_count++;
+              /*
+                Only drop the first instance found.
+                the overridden value is always the first
+                if this was the only copy, we will return
+                the original list anyways so it is not relevant
+                if we drop this pair
+              */
+              if (copy_count == 1)
+                drop = true;
            }
-         
-         *tail = scm_cdr (s);
-         return new_list;
+         /* we now iterate over every item */
        }
-
-      *tail = scm_acons (sub_sym, old_val, SCM_EOL);
-      tail = SCM_CDRLOC (*tail);
+      /*
+        Make a new list with every item
+        except for the eventual dropped one
+      */
+      if (!drop)
+        {
+          *tail = scm_acons (sub_sym, old_val, SCM_EOL);
+          tail = SCM_CDRLOC (*tail);
+        }
     }
 
-  /* Wanted symbol not found: drop newly constructed list. */
-  return alist;
+  /*
+    If we find more than one copy of the property
+    push the new list, else it means we are trying to
+    revert the original value
+  */
+  if (copy_count > 1)
+    return new_list;
+  else
+    return alist;
 }
 
 
@@ -109,7 +135,7 @@ set_nested_property (Grob *me, SCM big_to_small, SCM value)
   SCM alist = me->get_property (scm_car (big_to_small));
 
   alist = nested_property_alist (alist, scm_cdr (big_to_small), value);
-  
+
   me->set_property (scm_car (big_to_small), alist);
 }
 
index 29d5ee63e99ac2c2bfbda26bcd8383b79e61ad0d..e9010aec09345ef715d247a20a0a854d34bc5956 100644 (file)
 #include "prob.hh"
 #include "system.hh"
 
-static bool
-is_break (Grob *)
-{
-  return false;
-}
-
 Optimal_page_breaking::Optimal_page_breaking (Paper_book *pb)
-  : Page_breaking (pb, is_break)
+  : Page_breaking (pb, 0, 0)
 {
 }
 
@@ -108,13 +102,12 @@ Optimal_page_breaking::solve ()
 
       for (vsize i = 0; i < current_configuration_count (); i++)
        {
-         vsize min_p_count = min_page_count (i, first_page_num);
          Page_spacing_result cur;
 
-         if (min_p_count == page_count || scm_is_integer (forced_page_count))
+         if (scm_is_integer (forced_page_count))
            cur = space_systems_on_n_pages (i, page_count, first_page_num);
          else
-           cur = space_systems_on_n_or_one_more_pages (i, page_count-1, first_page_num, 0);
+           cur = space_systems_on_best_pages (i, first_page_num);
 
          if (cur.demerits_ < best_for_this_sys_count.demerits_)
            {
@@ -168,8 +161,10 @@ Optimal_page_breaking::solve ()
 
          if (min_p_count > page_count)
            continue;
-         else
+         else if (scm_is_integer (forced_page_count))
            cur = space_systems_on_n_pages (i, page_count, first_page_num);
+         else
+           cur = space_systems_on_best_pages (i, first_page_num);
 
          if (cur.demerits_ < best.demerits_)
            {
index aeeb7bb1b7eb555db4f37ea162524178d72c8050..4ac005461c68d66a5e187b8f58138c7a371423f0 100644 (file)
@@ -173,7 +173,7 @@ Page_breaking::next_system (Break_position const &break_pos) const
   return sys + 1; /* this page starts with a new System_spec */
 }
 
-Page_breaking::Page_breaking (Paper_book *pb, Break_predicate is_break)
+Page_breaking::Page_breaking (Paper_book *pb, Break_predicate is_break, Prob_break_predicate prob_break)
 {
   book_ = pb;
   system_count_ = 0;
@@ -196,7 +196,7 @@ Page_breaking::Page_breaking (Paper_book *pb, Break_predicate is_break)
     }
 
   create_system_list ();
-  find_chunks_and_breaks (is_break);
+  find_chunks_and_breaks (is_break, prob_break);
 }
 
 Page_breaking::~Page_breaking ()
@@ -368,13 +368,33 @@ Page_breaking::make_page (int page_num, bool last) const
 Real
 Page_breaking::page_height (int page_num, bool last) const
 {
-  SCM mod = scm_c_resolve_module ("scm page");
-  SCM page = make_page (page_num, last);
-  SCM calc_height = scm_c_module_lookup (mod, "calc-printable-height");
-  calc_height = scm_variable_ref (calc_height);
+  // The caches allow us to store the page heights for any
+  // non-negative page numbers.  We use a negative value in the
+  // cache to signal that that position has not yet been initialized.
+  // This means that we won't cache properly if page_num is negative or
+  // if calc_height returns a negative number.  But that's likely to
+  // be rare, so it shouldn't affect performance.
+  vector<Real>& cache = last ? last_page_height_cache_ : page_height_cache_;
+  if (page_num >= 0 && (int) cache.size () > page_num && cache[page_num] >= 0)
+    return cache[page_num];
+  else
+    {
+      SCM mod = scm_c_resolve_module ("scm page");
+      SCM page = make_page (page_num, last);
+      SCM calc_height = scm_c_module_lookup (mod, "calc-printable-height");
+      calc_height = scm_variable_ref (calc_height);
 
-  SCM height = scm_apply_1 (calc_height, page, SCM_EOL);
-  return scm_to_double (height);
+      SCM height_scm = scm_apply_1 (calc_height, page, SCM_EOL);
+      Real height = scm_to_double (height_scm);
+
+      if (page_num >= 0)
+       {
+         if ((int) cache.size () <= page_num)
+           cache.resize (page_num + 1, -1);
+         cache[page_num] = height;
+       }
+      return height;
+    }
 }
 
 SCM
@@ -523,7 +543,7 @@ Page_breaking::create_system_list ()
 }
 
 void
-Page_breaking::find_chunks_and_breaks (Break_predicate is_break)
+Page_breaking::find_chunks_and_breaks (Break_predicate is_break, Prob_break_predicate prob_is_break)
 {
   SCM force_sym = ly_symbol2scm ("force");
 
@@ -567,7 +587,7 @@ Page_breaking::find_chunks_and_breaks (Break_predicate is_break)
                }
 
              bool last = (j == cols.size () - 1);
-             bool break_point = is_break (cols[j]);
+             bool break_point = is_break && is_break (cols[j]);
              bool chunk_end = cols[j]->get_property ("page-break-permission") == force_sym;
              Break_position cur_pos = Break_position (i,
                                                       line_breaker_columns.size (),
@@ -598,8 +618,8 @@ Page_breaking::find_chunks_and_breaks (Break_predicate is_break)
        }
       else
        {
-         /* TODO: we want some way of applying Break_p to a prob? */
-         if (i == system_specs_.size () - 1)
+         bool break_point = prob_is_break && prob_is_break (system_specs_[i].prob_);
+         if (break_point || i == system_specs_.size () - 1)
            breaks_.push_back (Break_position (i));
 
          chunks_.push_back (Break_position (i));
@@ -802,6 +822,7 @@ Page_breaking::cache_line_details (vsize configuration_index)
            }
        }
       cached_line_details_ = compress_lines (uncompressed_line_details_);
+      compute_line_heights ();
     }
 }
 
@@ -904,7 +925,6 @@ Page_breaking::min_page_count (vsize configuration, vsize first_page_num)
   int line_count = 0;
 
   cache_line_details (configuration);
-  compute_line_heights ();
 
   if (cached_line_details_.size ())
     cur_page_height -= min_whitespace_at_top_of_page (cached_line_details_[0]);
@@ -1088,21 +1108,10 @@ Page_breaking::space_systems_on_n_or_one_more_pages (vsize configuration, vsize
 Page_spacing_result
 Page_breaking::space_systems_on_best_pages (vsize configuration, vsize first_page_num)
 {
-  vsize min_p_count = min_page_count (configuration, first_page_num);
-
   cache_line_details (configuration);
   Page_spacer ps (cached_line_details_, first_page_num, this);
-  Page_spacing_result best = ps.solve (min_p_count);
 
-  for (vsize i = min_p_count+1; i <= cached_line_details_.size (); i++)
-    {
-      Page_spacing_result cur = ps.solve (i);
-      if (cur.demerits_ < best.demerits_)
-       best = cur;
-    }
-
-  Page_spacing_result ret = finalize_spacing_result (configuration, best);
-  return ret;
+  return finalize_spacing_result (configuration, ps.solve ());
 }
 
 Page_spacing_result
@@ -1166,7 +1175,6 @@ Page_breaking::pack_systems_on_least_pages (vsize configuration, vsize first_pag
   Page_spacing space (page_height (first_page_num, false), this);
 
   cache_line_details (configuration);
-  compute_line_heights ();
   for (vsize line = 0; line < cached_line_details_.size (); line++)
     {
       Real prev_force = space.force_;
index 38a7548f3b785fbdbfd0ad83bea6a910a60a9cd1..23069add37372d4d1040923e9cab4ec83541a1f4 100644 (file)
@@ -305,7 +305,8 @@ Page_layout_problem::solve_rod_spring_problem (bool ragged)
   solution_ = spacer.spring_positions ();
 
   if (!spacer.fits ())
-    warning (_ ("couldn't fit music on page"));
+    warning (_f ("couldn't fit music on page: overflow is %f",
+                spacer.configuration_length(spacer.force()) - page_height_));
 }
 
 // The solution_ vector stores the position of every live VerticalAxisGroup
index 33cf18a3fe8a64f52821229f96a3bd73e407ab1c..1a3c39cfbf709d88de4725c6238fe8636141eb15 100644 (file)
@@ -100,6 +100,34 @@ Page_spacer::Page_spacer (vector<Line_details> const &lines, vsize first_page_nu
   ragged_last_ = breaker->is_last () && breaker->ragged_last ();
 }
 
+Page_spacing_result
+Page_spacer::solve ()
+{
+  if (simple_state_.empty ())
+    {
+      simple_state_.resize (lines_.size ());
+      for (vsize i = 0; i < lines_.size (); ++i)
+       calc_subproblem (VPOS, i);
+    }
+
+  Page_spacing_result ret;
+  vsize system = lines_.size () - 1;
+  while (system != VPOS)
+    {
+      Page_spacing_node const& cur = simple_state_[system];
+      vsize system_count = (cur.prev_ == VPOS) ? system + 1 : system - cur.prev_;
+
+      ret.force_.push_back (cur.force_);
+      ret.systems_per_page_.push_back (system_count);
+      ret.demerits_ += cur.force_ * cur.force_;
+      system = cur.prev_;
+    }
+
+  reverse (ret.force_);
+  reverse (ret.systems_per_page_);
+  return ret;
+}
+
 Page_spacing_result
 Page_spacer::solve (vsize page_count)
 {
@@ -203,19 +231,44 @@ Page_spacer::resize (vsize page_count)
 // we have previously called calc_subproblem(page-1, k) for every k < LINE.
 //
 // This algorithm is similar to the constrained-breaking algorithm.
+//
+// If page == VPOS, we act on simple_state_ instead of state_.  This is useful if
+// we don't want to constrain the number of pages that the solution has.  In this
+// case, the algorithm looks more like the page-turn-page-breaking algorithm.  But
+// the subproblems look similar for both, so we reuse this method.
 bool
 Page_spacer::calc_subproblem (vsize page, vsize line)
 {
   bool last = line == lines_.size () - 1;
-  Page_spacing space (breaker_->page_height (page + first_page_num_, last),
+
+  // Note: if page == VPOS then we don't actually know yet which page number we're
+  // working on, so we have to recalculate the page height in the loop.  In that case,
+  // the algorithm may not be optimal: if our page has a very large header then perhaps
+  // we need to look ahead a few systems in order to find the best solution.  But
+  // we won't, because we stop once we overfill the page with the large header.
+  vsize page_num = page == VPOS ? 0 : page;
+  Page_spacing space (breaker_->page_height (page_num + first_page_num_, last),
                      breaker_);
-  Page_spacing_node &cur = state_.at (line, page);
+  Page_spacing_node &cur = page == VPOS ? simple_state_[line] : state_.at (line, page);
   bool ragged = ragged_ || (ragged_last_ && last);
   int line_count = 0;
 
-  for (vsize page_start = line+1; page_start > page && page_start--;)
+  for (vsize page_start = line+1; page_start > page_num && page_start--;)
     {
-      Page_spacing_node const *prev = page > 0 ? &state_.at (page_start-1, page-1) : 0;
+      Page_spacing_node const *prev = 0;
+
+      if (page == VPOS)
+       {
+         if (page_start > 0)
+           {
+             prev = &simple_state_[page_start-1];
+             space.resize (breaker_->page_height (prev->page_ + 1, last));
+           }
+         else
+           space.resize (breaker_->page_height (first_page_num_, last));
+       }
+      else if (page > 0)
+       prev = &state_.at (page_start-1, page-1);
 
       space.prepend_system (lines_[page_start]);
 
@@ -270,6 +323,7 @@ Page_spacer::calc_subproblem (vsize page, vsize line)
              cur.system_count_status_ = breaker_->line_count_status (line_count)
                | (prev ? prev->system_count_status_ : 0);
              cur.prev_ = page_start - 1;
+             cur.page_ = prev ? prev->page_ + 1 : first_page_num_;
            }
        }
 
index 281a7056e0e4de91876f0fc12ae1990b464da773..9338a38bfc4a38acefaeda217c3e89f69514fb65 100644 (file)
@@ -29,8 +29,9 @@
 #include "system.hh"
 #include "warn.hh"
 
+template<typename T>
 static bool
-is_break (Grob *g)
+is_break (T *g)
 {
   bool turnable = scm_is_symbol (g->get_property ("page-turn-permission"));
 
@@ -46,7 +47,7 @@ is_break (Grob *g)
 }
 
 Page_turn_page_breaking::Page_turn_page_breaking (Paper_book *pb)
-  : Page_breaking (pb, is_break)
+  : Page_breaking (pb, is_break<Grob>, is_break<Prob>)
 {
 }
 
@@ -213,8 +214,8 @@ Page_turn_page_breaking::calc_subproblem (vsize ending_breakpoint)
       if (start == 0 && end == 1
          && this_start_best.first_page_number_ == 1
          && this_start_best.page_count_ > 1)
-       warning (_ ("cannot fit the first page turn onto a single page.  "
-                   "Consider setting first-page-number to an even number."));
+       warning (_ ("cannot fit the first page turn onto a single page."
+                   "  Consider setting first-page-number to an even number."));
 
       if (this_start_best.demerits_ < best.demerits_)
        best = this_start_best;
index a9d8938889185e76b9b8c1537e0f9ef4555f3aaf..fcde80ea58e6e9c1d08a280fd77d77a14adf0a37 100644 (file)
@@ -1631,9 +1631,7 @@ command_element:
 
        }
        | PARTIAL duration_length       {
-               Moment m = - unsmob_duration ($2)->get_length ();
-               $$ = MAKE_SYNTAX ("property-operation", @$, SCM_BOOL_F, ly_symbol2scm ("Timing"), ly_symbol2scm ("PropertySet"), ly_symbol2scm ("measurePosition"), m.smobbed_copy ());
-               $$ = MAKE_SYNTAX ("context-specification", @$, ly_symbol2scm ("Score"), SCM_BOOL_F, $$, SCM_EOL, SCM_BOOL_F);
+               $$ = MAKE_SYNTAX ("partial", @$, $2);
        }
 
        | TIME_T fraction  {
@@ -1642,9 +1640,7 @@ command_element:
                $$ = scm_apply_2   (proc, scm_car ($2), scm_cdr ($2), SCM_EOL);
        }
        | MARK scalar {
-               SCM proc = ly_lily_module_constant ("make-mark-set");
-
-               $$ = scm_call_1 (proc, $2);
+               $$ = MAKE_SYNTAX ("make-mark-set", @$, $2);
        }
        ;
 
index 476f6d4dea610e2efb532373884047d77917bd8e..eeddec74de821c7df8fddb81553c22e8cca023e4 100644 (file)
@@ -242,8 +242,8 @@ ADD_END_ACKNOWLEDGER (Scheme_engraver, grob);
 
 ADD_TRANSLATOR (Scheme_engraver,
                /* doc */
-               "Implement engravers in Scheme.  Interprets arguments to @code{\\consists} "
-               "as callbacks. ",
+               "Implement engravers in Scheme.  Interprets arguments to"
+               " @code{\\consists} as callbacks.",
 
                /* create */
                "",
index dde8831a31641683a7fb3df64317bc0295be6d31..1c8e74f95491d70f7b8ec00633dcfc7da4d32acb 100644 (file)
@@ -110,8 +110,8 @@ make_script_from_event (Grob *p,  Context *tg,
   if (art == SCM_BOOL_F)
     {
       /* FIXME: */
-      warning (_ ("do not know how to interpret articulation: "));
-      warning (_ ("scheme encoding: "));
+      warning (_ ("do not know how to interpret articulation:"));
+      warning (_ (" scheme encoding: "));
       scm_write (art_type, scm_current_error_port ());
       message ("");
       return;
index 783946eb10de5a30e3f3b95ab98e0d445fcda98a..e1d454816b895ddbb4290ec69b66f671912b1919 100644 (file)
@@ -271,7 +271,7 @@ set_column_rods (vector<Grob*> const &cols, Real padding)
              bool touches = right_stickout - left_stickout + cur_dist[d] < 0.0;
              Real dist = 0.0;
 
-             /* we set a distance for the line-starter column even if it's non-broken counterpart
+             /* we set a distance for the line-starter column even if its non-broken counterpart
                 doesn't touch the right column. */
              if (lb)
                Separation_item::set_distance (lb, r_col, padding);
@@ -285,6 +285,7 @@ set_column_rods (vector<Grob*> const &cols, Real padding)
              if (j == i-1)
                cur_dist[d] = distances[j];
 
+             cur_dist[d] = max (cur_dist[d], dist);
              done = done && !touches;
            }
          while (flip (&d) != LEFT && rb);
index 60cd300affa21c5513e1886af8ab3532b3ea3b5e..3c4ddae5045c33c20cf15e564929a81fbb90ca09 100644 (file)
@@ -122,7 +122,8 @@ Tie_column::calc_positioning_done (SCM smob)
 
 
 ADD_INTERFACE (Tie_column,
-              "Object that sets directions of multiple ties in a tied chord.",
+              "Object that sets directions of multiple ties in a tied"
+              " chord.",
 
               /* properties */
               "positioning-done "
index 0de6a6b29687e855305cb492e055d77d86db039b..4e0181e9f4d3c46a5886a491f757bdd8843b46d7 100644 (file)
@@ -205,8 +205,8 @@ Vaticana_ligature_engraver::align_heads (vector<Grob_info> primitives,
 {
   if (!primitives.size ())
     {
-      programming_error ("Vaticana_ligature: "
-                        "empty ligature [ignored]");
+      programming_error ("Vaticana_ligature:"
+                        " empty ligature [ignored]");
       return 0.0;
     }
 
@@ -330,8 +330,8 @@ Vaticana_ligature_engraver::align_heads (vector<Grob_info> primitives,
        {
          if (!prev_primitive)
            {
-             primitive->programming_error ("vaticana ligature: add-join: "
-                                           "missing previous primitive");
+             primitive->programming_error ("Vaticana ligature: add-join:"
+                                           " missing previous primitive");
            }
          else
            {
@@ -397,8 +397,9 @@ Vaticana_ligature_engraver::check_for_prefix_loss (Item *primitive)
   if (prefix_set & ~PES_OR_FLEXA)
     {
       string prefs = Gregorian_ligature::prefixes_to_str (primitive);
-      primitive->warning (_f ("ignored prefix (es) `%s' of this head according "
-                             "to restrictions of the selected ligature style",
+      primitive->warning (_f ("ignored prefix(es) `%s' of this head"
+                             " according to restrictions of the selected"
+                             " ligature style",
                              prefs.c_str ()));
     }
 }
@@ -462,9 +463,9 @@ Vaticana_ligature_engraver::check_for_ambiguous_dot_pitch (Grob_info primitive)
       if (pitch == new_pitch)
        {
          primitive.grob ()->
-           warning ("Ambiguous use of dots in ligature: there are "
-                    "multiple dotted notes with the same pitch.  "
-                    "The ligature should be split.");
+           warning ("Ambiguous use of dots in ligature: there are"
+                    " multiple dotted notes with the same pitch."
+                    "  The ligature should be split.");
          return; // supress multiple identical warnings
        }
     }
@@ -520,10 +521,10 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
        }
       else if (augmented_primitives_.size () > 0)
        {
-         primitive->warning ("This ligature has a dotted head followed by "
-                             "a non-dotted head.  The ligature should be "
-                             "split after the last dotted head before "
-                             "this head.");
+         primitive->warning ("This ligature has a dotted head followed by"
+                             " a non-dotted head.  The ligature should be"
+                             " split after the last dotted head before"
+                             " this head.");
        }
 
       if (is_stacked_head (prefix_set, context_info))
@@ -732,8 +733,8 @@ Vaticana_ligature_engraver::transform_heads (Spanner *ligature,
      voices/staves also may want to set this property. */
   Item *first_primitive = dynamic_cast<Item *> (primitives[0].grob ());
   Paper_column *paper_column = first_primitive->get_column ();
-  paper_column->warning (_f ("Vaticana_ligature_engraver: "
-                            "setting `spacing-increment = %f': ptr =%ul",
+  paper_column->warning (_f ("Vaticana_ligature_engraver:"
+                            " setting `spacing-increment = %f': ptr =%ul",
                             ligature_width, paper_column));
   paper_column->
     set_property ("forced-spacing", scm_from_double (ligature_width));
@@ -744,7 +745,8 @@ ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, rest);
 ADD_ACKNOWLEDGER (Vaticana_ligature_engraver, note_head);
 ADD_TRANSLATOR (Vaticana_ligature_engraver,
                /* doc */
-               "Handle ligatures by glueing special ligature heads together.",
+               "Handle ligatures by glueing special ligature heads"
+               " together.",
 
                /* create */
                "VaticanaLigature "
index 7b21ff2fef8c43de6195bc6c016d5b6447dc3781..6ecba2ddf4d372cd8ce1663e3b474ea0215c2cd7 100644 (file)
@@ -316,6 +316,7 @@ instrument names at the start of each system."
 
   \consists "Instrument_name_engraver"
   \consists "Vertical_align_engraver"
+  \consists "Keep_alive_together_engraver"
   topLevelAlignment = ##f
 
   \override StaffGrouper #'between-staff-spacing #'stretchability = #5
index 20416624c2f54c73ab03b9ef4246d42571f3d914..fa1dbe5993eba6d25504d600865e1c5f91d85617 100644 (file)
 #(define book-filename #f)
 #(define book-output-suffix #f)
 #(use-modules (scm clip-region))
+
+#(if (ly:get-option 'include-settings)
+  (ly:parser-include-string parser
+    (format "\\include \"~a\"" (ly:get-option 'include-settings))))
+
 \maininput
 %% there is a problem at the end of the input file
 
index 7cd3d91936adf1c206ae028e3e41304ac1dc9ebd..c6c2c3e343b826e7004847d029a5b3bc64fef201 100644 (file)
@@ -45,6 +45,7 @@ CREATE_VERSION=python $(script-dir)/create-version-itexi.py
 CREATE_WEBLINKS=python $(script-dir)/create-weblinks-itexi.py
 MASS_LINK=python $(script-dir)/mass-link.py
 WEB_POST=python $(script-dir)/website_post.py
+WEB_BIBS=python $(script-dir)/bib2texi.py
 
 SERVER_FILES=$(top-src-dir)/Documentation/web/server/
 
@@ -81,9 +82,18 @@ website-xrefs: website-version
                done; \
        done;
 
+website-bibs: website-version
+       BSTINPUTS=$(top-src-dir)/Documentation/web/ \
+               $(WEB_BIBS) -s web \
+               -o $(OUT)/others-did.itexi \
+               $(top-src-dir)/Documentation/web/others-did.bib
+       BSTINPUTS=$(top-src-dir)/Documentation/web/ \
+               $(WEB_BIBS) -s web \
+               -o $(OUT)/we-wrote.itexi \
+               $(top-src-dir)/Documentation/web/we-wrote.bib
 
 
-website-texinfo: website-version website-xrefs
+website-texinfo: website-version website-xrefs website-bibs
        for l in '' $(WEB_LANGS); do \
                if test -n "$$l"; then \
                        langopt=--lang="$$l"; \
index 1a9e3625d984b73c31526796a5acb82c8936d599..3920e36c4d4458fd2c526b41738cc53b062b919c 100644 (file)
@@ -30,7 +30,7 @@ accreg_lh# := 1.0 staff_space#;
 define_pixels (accreg_dot_size, accreg_linethickness, accreg_lh);
 
 
-fet_beginchar ("accDiscant", "accDiscant")
+fet_beginchar ("accordion register discant", "discant")
        save r, pat, lh, lt;
        path pat;
 
@@ -101,7 +101,7 @@ fet_beginchar ("accDiscant", "accDiscant")
 fet_endchar;
 
 
-fet_beginchar ("accDot", "accDot")
+fet_beginchar ("accordion register dot", "dot")
        set_char_box (accreg_dot_size# / 2, accreg_dot_size# / 2,
                      accreg_dot_size# / 2, accreg_dot_size# / 2);
 
@@ -114,7 +114,7 @@ fet_beginchar ("accDot", "accDot")
 fet_endchar;
 
 
-fet_beginchar ("accFreebase", "accFreebase")
+fet_beginchar ("accordion register freebass", "freebass")
        save r, lh, lt;
 
        r# = accreg_lh#;
@@ -171,7 +171,7 @@ fet_beginchar ("accFreebase", "accFreebase")
 fet_endchar;
 
 
-fet_beginchar ("accStdbase", "accStdbase")
+fet_beginchar ("accordion register stdbass", "stdbass")
        save r, p, lh, lt;
        path pat;
 
@@ -244,7 +244,7 @@ fet_beginchar ("accStdbase", "accStdbase")
 fet_endchar;
 
 
-fet_beginchar ("accBayanbase", "accBayanbase")
+fet_beginchar ("accordion register bayanbass", "bayanbass")
        save lh, lt;
 
        lh = vround accreg_lh;
@@ -372,7 +372,7 @@ def def_some_vars =
 enddef;
 
 
-fet_beginchar ("accOldEE", "accOldEE")
+fet_beginchar ("accordion oldEE", "oldEE")
        save r, pp, ir, lh, lt, stroke_width;
 
        r# = staff_space#;
@@ -452,7 +452,7 @@ fet_beginchar ("accOldEE", "accOldEE")
        fi;
 fet_endchar;
 
-fet_beginchar ("Accordion push", "push");
+fet_beginchar ("accordion push", "push");
        save width, height;
 
        height# := 2.0 staff_space# + 3.0 stafflinethickness#;
@@ -489,7 +489,7 @@ fet_beginchar ("Accordion push", "push");
 
 fet_endchar;
 
-fet_beginchar ("Accordion pull", "pull");
+fet_beginchar ("accordion pull", "pull");
        save width, height;
 
        height# := 2.0 staff_space# + 3.0 stafflinethickness#;
index 7ea8c0fb90a5e33fe1eda30984b06a9187f4f461..ccaf6b3dcc55195fcfe5fc0172f3300801108653 100644 (file)
@@ -232,24 +232,6 @@ bind def
   grestore
 } bind def
 
-/draw_connected_shape
-{
-  gsave
-  currentpoint translate
-  /filled exch def
-  /connect exch def
-  /savematrix matrix currentmatrix def
-  setlinewidth
-  scale
-  /arlen exch def
-  arlen {
-    /shlen exch def
-    shlen { } repeat shlen 2 eq { lineto } { curveto } ifelse
-  } repeat connect { closepath } if
-  savematrix setmatrix filled { stroke_and_fill } { stroke } ifelse
-  grestore
-} bind def
-
 /draw_line % dx dy x1 y1 thickness draw_line
 {
        setlinewidth % dx dy x1 y1
index f327e4e393a474d2155e54fb7b8d4f026d0e6b21..9f25418cb02c9d5b6b36403de835cf8d1daf57ac 100644 (file)
@@ -345,6 +345,16 @@ def process_html_files (package_name = '',
             s = s.replace ('%', '%%')
             s = hack_urls (s, prefix)
             s = add_header (s, prefix)
+            # make the "return to doc index" work with the online website.
+            if target == 'online':
+                if 'Documentation/contributor' in prefix:
+                    s = s.replace (
+                        'href=\"../..//Documentation/web/manuals.html\"',
+                        'href=\"../../../../website/development.html\"')
+                else:
+                    s = s.replace (
+                        'href=\"../..//Documentation/web/manuals.html\"',
+                        'href=\"../../../../website/manuals.html\"')
 
             ### add footer
             if footer_tag_re.search (s) == None:
index fa4d97ccec6bb4d82db7ae96f7db30dbafdc2862..a19a5796d7e330eb74ab87053791963b6d40450d 100644 (file)
@@ -6,7 +6,11 @@ global _;_=ly._
 import re
 import os
 import copy
-from subprocess import Popen, PIPE
+# TODO: We are using os.popen3, which has been deprecated since python 2.6. The
+# suggested replacement is the Popen function of the subprocess module.
+# Unfortunately, on windows this needs the msvcrt module, which doesn't seem
+# to be available in GUB?!?!?!
+# from subprocess import Popen, PIPE
 
 progress = ly.progress
 warning = ly.warning
@@ -597,11 +601,12 @@ left-margin-default right-margin-default)"
             os.makedirs (directory)
         filename = path + '.ly'
         if os.path.exists (filename):
-            diff_against_existing = self.filter_pipe (self.full_ly (), 'diff -u %s -' % filename)
-            if diff_against_existing:
+            existing = open (filename, 'r').read ()
+
+            if self.relevant_contents (existing) != self.relevant_contents (self.full_ly ()):
                 warning ("%s: duplicate filename but different contents of orginal file,\n\
 printing diff against existing file." % filename)
-                ly.stderr_write (diff_against_existing)
+                ly.stderr_write (self.filter_pipe (self.full_ly (), 'diff -u %s -' % filename))
         else:
             out = file (filename, 'w')
             out.write (self.full_ly ())
@@ -716,10 +721,10 @@ printing diff against existing file." % filename)
         if self.global_options.verbose:
             progress (_ ("Opening filter `%s'\n") % cmd)
 
-        #(stdin, stdout, stderr) = os.popen3 (cmd)
-
-        p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
-        (stdin, stdout, stderr) = (p.stdin, p.stdout, p.stderr)
+        # TODO: Use Popen once we resolve the problem with msvcrt in Windows:
+        (stdin, stdout, stderr) = os.popen3 (cmd)
+        p = Popen(cmd, shell=True, stdin=PIPE, stdout=PIPE, stderr=PIPE, close_fds=True)
+        (stdin, stdout, stderr) = (p.stdin, p.stdout, p.stderr)
         stdin.write (input)
         status = stdin.close ()
 
@@ -734,8 +739,8 @@ printing diff against existing file." % filename)
         signal = 0x0f & status
         if status or (not output and error):
             exit_status = status >> 8
-            error (_ ("`%s' failed (%d)") % (cmd, exit_status))
-            error (_ ("The error log is as follows:"))
+            ly.error (_ ("`%s' failed (%d)") % (cmd, exit_status))
+            ly.error (_ ("The error log is as follows:"))
             ly.stderr_write (error)
             ly.stderr_write (stderr.read ())
             exit (status)
index 673d04d478091097bf5daf543d230c038a44be15..063da1f4f9ca6d35f184b975cf2cff62d6ab5d0d 100644 (file)
@@ -3006,8 +3006,22 @@ def conv (str):
     return str
 
 @rule ((2, 13, 29),
-       _ ("Eliminate beamSettings, beatLength, \setBeatGrouping, \overrideBeamSettings and \revertBeamSettings"))
+       _ ("Eliminate beamSettings, beatLength, \setBeatGrouping, \overrideBeamSettings and \revertBeamSettings\n\
+\"accordion.accEtcbase\" -> \"accordion.etcbass\""))
 def conv(str):
+    def sub_acc (m):
+       d = {
+            'Dot': 'dot',
+            'Discant': 'discant',
+            'Bayanbase': 'bayanbass',
+            'Stdbase': 'stdbass',
+            'Freebase': 'freebass',
+            'OldEE': 'oldEE'
+            }
+       return '"accordion.%s"' %  d[m.group (1)]
+
+    str = re.sub (r'"accordion\.acc([a-zA-Z]+)"',
+                 sub_acc, str)
     if re.search(r'overrideBeamSettings', str):
         stderr_write("\n")
         stderr_write(NOT_SMART % _("\overrideBeamSettings.  Use \set beamExceptions or \overrideTimeSignatureSettings.\n"))
@@ -3030,6 +3044,18 @@ def conv(str):
         stderr_write(UPDATE_MANUALLY)
     return str
 
+@rule ((2, 13, 31),
+    _ ("Woodwind diagrams: Move size, thickness, and graphic from argument list to properties.\n\
+Deprecate negative dash-period for hidden lines: use #'style = #'none instead."))
+def conv(str):
+    if re.search(r'woodwind-diagram', str):
+        stderr_write("\n")
+        stderr_write(NOT_SMART % _("woodwind-diagrams.  Move size, thickness, and graphic to properties.  Argument should be just the key list.\n"))
+        stderr_write(UPDATE_MANUALLY)
+    str = re.sub (r"dash-period\s+=\s*#\s*-[0-9.]+",
+                  r"style = #'none",
+                  str);
+    return str
 # Guidelines to write rules (please keep this at the end of this file)
 #
 # - keep at most one rule per version; if several conversions should be done,
index 2949afcfbc3b30bd9742019be0f8bc328bd9648b..22316b5886f760532ba7bba88ad8aa8e25c2aea3 100644 (file)
@@ -90,7 +90,7 @@ note)."
 (ly:add-interface
  'instrument-specific-markup-interface
  "Instrument-specific markup (like fret boards or harp pedal diagrams)."
- '(fret-diagram-details harp-pedal-details size thickness))
+ '(fret-diagram-details graphical harp-pedal-details size thickness))
 
 (ly:add-interface
  'key-cancellation-interface
index b4952e2a498a78bff07dda94c8bd59ac85e99ec8..59b50a8b9eae3166df976dc9d489dd02eb50a164 100644 (file)
@@ -411,6 +411,7 @@ typeset.  Valid choices depend on the function that is reading this
 property.")
      (glyph-name ,string? "The glyph name within the font.")
      (glyph-name-alist ,list? "An alist of key-string pairs.")
+     (graphical ,boolean? "Display in graphical (vs. text) form.")
      (grow-direction ,ly:dir? "Crescendo or decrescendo?")
 
 
@@ -950,6 +951,9 @@ in addition to notes and stems.")
      (items-worth-living ,ly:grob-array? "An array of interesting items.  If
 empty in a particular staff, then that staff is erased.")
 
+     (keep-alive-with ,ly:grob-array? "An array of other
+@code{VerticalAxisGroup}s.  If any of them are alive, then we will stay alive.")
+
      (left-items ,ly:grob-array? "DOCME")
      (left-neighbor ,ly:grob? "The right-most column that has a spacing-wish
 for this column.")
index c13e099a0a4e5a2f7bc2e2fb458ad387f8ff9ec0..2860bc3e6aaa0925f6e12136b1e382733c068ca5 100644 (file)
    ly:clef::print
    ly:percent-repeat-item-interface::beat-slash
    ly:text-interface::print
-   ly:script-interface::print))
+   ly:script-interface::print
+   ly:sustain-pedal::print))
 
 ;; Sometimes we have grobs with (Y-extent . ,ly:grob::stencil-height)
 ;; and the print function is not pure, but there is a easy way to
index cc2d232754370f4f00adf5ab7da2e3068f0d8378..5dc3f420e70031854b85cc87380629518a7d1f09 100644 (file)
@@ -277,30 +277,31 @@ Create a beam with the specified parameters.
 (define-markup-command (underline layout props arg)
   (markup?)
   #:category font
-  #:properties ((thickness 1))
+  #:properties ((thickness 1) (offset 2))
   "
 @cindex underlining text
 
 Underline @var{arg}.  Looks at @code{thickness} to determine line
-thickness and y-offset.
+thickness, and @code{offset} to determine line y-offset.
 
 @lilypond[verbatim,quote]
-\\markup {
-  default
-  \\hspace #2
-  \\override #'(thickness . 2)
-  \\underline {
-    underline
-  }
+\\markup \\fill-line {
+  \\underline \"underlined\"
+  \\override #'(offset . 5)
+  \\override #'(thickness . 1)
+  \\underline \"underlined\"
+  \\override #'(offset . 1)
+  \\override #'(thickness . 5)
+  \\underline \"underlined\"
 }
 @end lilypond"
-  (let* ((thick (* (ly:output-def-lookup layout 'line-thickness)
-                   thickness))
+  (let* ((thick (ly:output-def-lookup layout 'line-thickness))
+         (underline-thick (* thickness thick))
          (markup (interpret-markup layout props arg))
          (x1 (car (ly:stencil-extent markup X)))
          (x2 (cdr (ly:stencil-extent markup X)))
-         (y (* thick -2))
-         (line (make-line-stencil thick x1 y x2 y)))
+         (y (* thick (- offset)))
+         (line (make-line-stencil underline-thick x1 y x2 y)))
     (ly:stencil-add markup line)))
 
 (define-markup-command (box layout props arg)
@@ -620,6 +621,137 @@ grestore
                 str))
    '(0 . 0) '(0 . 0)))
 
+(define-markup-command (path layout props thickness commands) (number? list?)
+  #:category graphic
+  #:properties ((line-cap-style 'round)
+               (line-join-style 'round)
+               (filled #f))
+  "
+@cindex paths, drawing
+@cindex drawing paths
+Draws a path with line thickness @var{thickness} according to the
+directions given in @var{commands}.  @var{commands} is a list of
+lists where the @code{car} of each sublist is a drawing command and
+the @code{cdr} comprises the associated arguments for each command.
+
+Line-cap styles and line-join styles may be customized by
+overriding the @code{line-cap-style} and @code{line-join-style}
+properties, respectively.  Available line-cap styles are
+@code{'butt}, @code{'round}, and @code{'square}.  Available
+line-join styles are @code{'miter}, @code{'round}, and
+@code{'bevel}.
+
+The property @code{filled} specifies whether or not the path is
+filled with color.
+
+There are seven commands available to use in the list
+@code{commands}: @code{moveto}, @code{rmoveto}, @code{lineto},
+@code{rlineto}, @code{curveto}, @code{rcurveto}, and
+@code{closepath}.  Note that the commands that begin with @emph{r}
+are the relative variants of the other three commands.
+
+The commands @code{moveto}, @code{rmoveto}, @code{lineto}, and
+@code{rlineto} take 2 arguments; they are the X and Y coordinates
+for the destination point.
+
+The commands @code{curveto} and @code{rcurveto} create cubic
+Bézier curves, and take 6 arguments; the first two are the X and Y
+coordinates for the first control point, the second two are the X
+and Y coordinates for the second control point, and the last two
+are the X and Y coordinates for the destination point.
+
+The @code{closepath} command takes zero arguments and closes the
+current subpath in the active path.
+
+Note that a sequence of commands @emph{must} begin with a
+@code{moveto} or @code{rmoveto} to work with the SVG output.
+
+@lilypond[verbatim,quote]
+samplePath =
+  #'((moveto 0 0)
+     (lineto -1 1)
+     (lineto 1 1)
+     (lineto 1 -1)
+     (curveto -5 -5 -5 5 -1 0)
+     (closepath))
+
+\\markup {
+  \\path #0.25 #samplePath
+}
+@end lilypond"
+  (let* ((half-thickness (/ thickness 2))
+        (current-point '(0 . 0))
+        (set-point (lambda (lst) (set! current-point lst)))
+        (relative? (lambda (x)
+                     (string-prefix? "r" (symbol->string (car x)))))
+        ;; For calculating extents, we want to modify the command
+        ;; list so that all coordinates are absolute.
+        (new-commands (map (lambda (x)
+                             (cond
+                               ;; for rmoveto, rlineto
+                               ((and (relative? x) (eq? 3 (length x)))
+                                (let ((cp (cons
+                                            (+ (car current-point)
+                                               (second x))
+                                            (+ (cdr current-point)
+                                               (third x)))))
+                                  (set-point cp)
+                                  (list (car cp)
+                                        (cdr cp))))
+                               ;; for rcurveto
+                               ((and (relative? x) (eq? 7 (length x)))
+                                (let* ((old-cp current-point)
+                                       (cp (cons
+                                             (+ (car old-cp)
+                                                (sixth x))
+                                             (+ (cdr old-cp)
+                                                (seventh x)))))
+                                  (set-point cp)
+                                  (list (+ (car old-cp) (second x))
+                                        (+ (cdr old-cp) (third x))
+                                        (+ (car old-cp) (fourth x))
+                                        (+ (cdr old-cp) (fifth x))
+                                        (car cp)
+                                        (cdr cp))))
+                               ;; for moveto, lineto
+                               ((eq? 3 (length x))
+                                (set-point (cons (second x)
+                                                 (third x)))
+                                (drop x 1))
+                               ;; for curveto
+                               ((eq? 7 (length x))
+                                (set-point (cons (sixth x)
+                                                 (seventh x)))
+                                (drop x 1))
+                               ;; keep closepath for filtering;
+                               ;; see `without-closepath'.
+                               (else x)))
+                           commands))
+        ;; path-min-max does not accept 0-arg lists,
+        ;; and since closepath does not affect extents, filter
+        ;; out those commands here.
+        (without-closepath (filter (lambda (x)
+                                     (not (equal? 'closepath (car x))))
+                                   new-commands))
+        (extents (path-min-max
+                   ;; set the origin to the first moveto
+                   (list (list-ref (car without-closepath) 0)
+                         (list-ref (car without-closepath) 1))
+                   without-closepath))
+        (X-extent (cons (list-ref extents 0) (list-ref extents 1)))
+        (Y-extent (cons (list-ref extents 2) (list-ref extents 3)))
+        (command-list (fold-right append '() commands)))
+
+    ;; account for line thickness
+    (set! X-extent (interval-widen X-extent half-thickness))
+    (set! Y-extent (interval-widen Y-extent half-thickness))
+
+    (ly:make-stencil
+      `(path ,thickness `(,@',command-list)
+            ',line-cap-style ',line-join-style ,filled)
+      X-extent
+      Y-extent)))
+
 (define-markup-command (score layout props score)
   (ly:score?)
   #:category music
@@ -753,14 +885,16 @@ Like simple-markup, but use tie characters for @q{~} tilde symbols.
   (make-simple-markup ""))
 
 ;; helper for justifying lines.
-(define (get-fill-space word-count line-width text-widths)
+(define (get-fill-space word-count line-width word-space text-widths)
   "Calculate the necessary paddings between each two adjacent texts.
-       The lengths of all texts are stored in @var{text-widths}.
-       The normal formula for the padding between texts a and b is:
-       padding = line-width/(word-count - 1) - (length(a) + length(b))/2
-       The first and last padding have to be calculated specially using the
-       whole length of the first or last text.
-       Return a list of paddings."
+  The lengths of all texts are stored in @var{text-widths}.
+  The normal formula for the padding between texts a and b is:
+  padding = line-width/(word-count - 1) - (length(a) + length(b))/2
+  The first and last padding have to be calculated specially using the
+  whole length of the first or last text.
+  All paddings are checked to be at least word-space, to ensure that
+  no texts collide.
+  Return a list of paddings."
   (cond
    ((null? text-widths) '())
 
@@ -769,23 +903,27 @@ Like simple-markup, but use tie characters for @q{~} tilde symbols.
     (cons
      (- (- (/ line-width (1- word-count)) (car text-widths))
        (/ (car (cdr text-widths)) 2))
-     (get-fill-space word-count line-width (cdr text-widths))))
+     (get-fill-space word-count line-width word-space (cdr text-widths))))
    ;; special case last padding
    ((= (length text-widths) 2)
     (list (- (/ line-width (1- word-count))
             (+ (/ (car text-widths) 2) (car (cdr text-widths)))) 0))
    (else
-    (cons
-     (- (/ line-width (1- word-count))
-       (/ (+ (car text-widths) (car (cdr text-widths))) 2))
-     (get-fill-space word-count line-width (cdr text-widths))))))
+    (let ((default-padding
+            (- (/ line-width (1- word-count))
+               (/ (+ (car text-widths) (car (cdr text-widths))) 2))))
+      (cons
+       (if (> word-space default-padding)
+           word-space
+           default-padding)
+       (get-fill-space word-count line-width word-space (cdr text-widths)))))))
 
 (define-markup-command (fill-line layout props args)
   (markup-list?)
   #:category align
   #:properties ((text-direction RIGHT)
-               (word-space 1)
-               (line-width #f))
+                (word-space 0.6)
+                (line-width #f))
   "Put @var{markups} in a horizontal line of width @var{line-width}.
 The markups are spaced or flushed to fill the entire line.
 If there are no arguments, return an empty stencil.
@@ -808,55 +946,58 @@ If there are no arguments, return an empty stencil.
 }
 @end lilypond"
   (let* ((orig-stencils (interpret-markup-list layout props args))
-        (stencils
-         (map (lambda (stc)
-                (if (ly:stencil-empty? stc)
-                    point-stencil
-                    stc)) orig-stencils))
-        (text-widths
-         (map (lambda (stc)
-                (if (ly:stencil-empty? stc)
-                    0.0
-                    (interval-length (ly:stencil-extent stc X))))
-              stencils))
-        (text-width (apply + text-widths))
-        (word-count (length stencils))
-        (line-width (or line-width (ly:output-def-lookup layout 'line-width)))
-        (fill-space
-               (cond
-                       ((= word-count 1)
-                               (list
-                                       (/ (- line-width text-width) 2)
-                                       (/ (- line-width text-width) 2)))
-                       ((= word-count 2)
-                               (list
-                                       (- line-width text-width)))
-                       (else
-                               (get-fill-space word-count line-width text-widths))))
-        (fill-space-normal
-         (map (lambda (x)
-                (if (< x word-space)
-                    word-space
-                    x))
-              fill-space))
-
-        (line-stencils (if (= word-count 1)
-                           (list
-                            point-stencil
-                            (car stencils)
-                            point-stencil)
-                           stencils)))
-
-    (if (= text-direction LEFT)
-       (set! line-stencils (reverse line-stencils)))
+         (stencils
+          (map (lambda (stc)
+                 (if (ly:stencil-empty? stc)
+                     point-stencil
+                     stc)) orig-stencils))
+         (text-widths
+          (map (lambda (stc)
+                 (if (ly:stencil-empty? stc)
+                     0.0
+                     (interval-length (ly:stencil-extent stc X))))
+               stencils))
+         (text-width (apply + text-widths))
+         (word-count (length stencils))
+         (line-width (or line-width (ly:output-def-lookup layout 'line-width)))
+         (fill-space
+          (cond
+           ((= word-count 1)
+            (list
+             (/ (- line-width text-width) 2)
+             (/ (- line-width text-width) 2)))
+           ((= word-count 2)
+            (list
+             (- line-width text-width)))
+           (else
+            (get-fill-space word-count line-width word-space text-widths))))
+
+         (line-contents (if (= word-count 1)
+                            (list
+                             point-stencil
+                             (car stencils)
+                             point-stencil)
+                            stencils)))
 
     (if (null? (remove ly:stencil-empty? orig-stencils))
-       empty-stencil
-       (ly:stencil-translate-axis
-         (stack-stencils-padding-list X
-                                      RIGHT fill-space-normal line-stencils)
-         (- (car (ly:stencil-extent (car stencils) X)))
-         X))))
+        empty-stencil
+        (begin
+          (if (= text-direction LEFT)
+              (set! line-contents (reverse line-contents)))
+          (set! line-contents
+                (stack-stencils-padding-list
+                 X RIGHT fill-space line-contents))
+          (if (> word-count 1)
+              ;; shift s.t. stencils align on the left edge, even if
+              ;; first stencil had negative X-extent (e.g. center-column)
+              ;; (if word-count = 1, X-extents are already normalized in
+              ;; the definition of line-contents)
+              (set! line-contents
+                    (ly:stencil-translate-axis
+                     line-contents
+                     (- (car (ly:stencil-extent (car stencils) X)))
+                     X)))
+          line-contents))))
 
 (define-markup-command (line layout props args)
   (markup-list?)
@@ -2627,25 +2768,28 @@ figured bass notation.
   (slashed-digit-internal layout props num #f font-size thickness))
 
 ;; eyeglasses
-(define eyeglassesps
-     "0.15 setlinewidth
-      -0.9 0 translate
-      1.1 1.1 scale
-      1.2 0.7 moveto
-      0.7 0.7 0.5 0 361 arc
-      stroke
-      2.20 0.70 0.50 0 361 arc
-      stroke
-      1.45 0.85 0.30 0 180 arc
-      stroke
-      0.20 0.70 moveto
-      0.80 2.00 lineto
-      0.92 2.26 1.30 2.40 1.15 1.70 curveto
-      stroke
-      2.70 0.70 moveto
-      3.30 2.00 lineto
-      3.42 2.26 3.80 2.40 3.65 1.70 curveto
-      stroke")
+(define eyeglassespath
+  '((moveto 0.42 0.77)
+    (rcurveto 0 0.304 -0.246 0.55 -0.55 0.55)
+    (rcurveto -0.304 0 -0.55 -0.246 -0.55 -0.55)
+    (rcurveto 0 -0.304 0.246 -0.55 0.55 -0.55)
+    (rcurveto 0.304 0 0.55 0.246 0.55 0.55)
+    (closepath)
+    (moveto 2.07 0.77)
+    (rcurveto 0 0.304 -0.246 0.55 -0.55 0.55)
+    (rcurveto -0.304 0 -0.55 -0.246 -0.55 -0.55)
+    (rcurveto 0 -0.304 0.246 -0.55 0.55 -0.55)
+    (rcurveto 0.304 0 0.55 0.246 0.55 0.55)
+    (closepath)
+    (moveto 1.025 0.935)
+    (rcurveto 0 0.182 -0.148 0.33 -0.33 0.33)
+    (rcurveto -0.182 0 -0.33 -0.148 -0.33 -0.33)
+    (moveto -0.68 0.77)
+    (rlineto 0.66 1.43)
+    (rcurveto 0.132 0.286 0.55 0.44 0.385 -0.33)
+    (moveto 2.07 0.77)
+    (rlineto 0.66 1.43)
+    (rcurveto 0.132 0.286 0.55 0.44 0.385 -0.33)))
 
 (define-markup-command (eyeglasses layout props)
   ()
@@ -2655,8 +2799,8 @@ figured bass notation.
 \\markup { \\eyeglasses }
 @end lilypond"
   (interpret-markup layout props
-    (make-with-dimensions-markup '(-0.61 . 3.22) '(0.2 . 2.41)
-      (make-postscript-markup eyeglassesps))))
+    (make-override-markup '(line-cap-style . butt)
+      (make-path-markup 0.15 eyeglassespath))))
 
 (define-markup-command (left-brace layout props size)
   (number?)
diff --git a/scm/define-music-callbacks.scm b/scm/define-music-callbacks.scm
new file mode 100644 (file)
index 0000000..a691c00
--- /dev/null
@@ -0,0 +1,89 @@
+;;;; This file is part of LilyPond, the GNU music typesetter.
+;;;;
+;;;; Copyright (C) 1998--2010 Han-Wen Nienhuys <hanwen@xs4all.nl>
+;;;;                Jan Nieuwenhuizen <janneke@gnu.org>
+;;;;                 Neil Puttock <n.puttock@gmail.com>
+;;;;                 Carl Sorensen <c_sorensen@byu.edu>
+;;;;
+;;;; LilyPond is free software: you can redistribute it and/or modify
+;;;; it under the terms of the GNU General Public License as published by
+;;;; the Free Software Foundation, either version 3 of the License, or
+;;;; (at your option) any later version.
+;;;;
+;;;; LilyPond is distributed in the hope that it will be useful,
+;;;; but WITHOUT ANY WARRANTY; without even the implied warranty of
+;;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+;;;; GNU General Public License for more details.
+;;;;
+;;;; You should have received a copy of the GNU General Public License
+;;;; along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
+
+;; TODO: should link back into user manual.
+
+(define (mm-rest-child-list music)
+  "Generate events for multimeasure rests,
+to be used by the sequential-iterator"
+  (let ((location (ly:music-property music 'origin))
+       (duration (ly:music-property music 'duration)))
+    (list (make-music 'BarCheck
+                     'origin location)
+         (make-event-chord (cons (make-music 'MultiMeasureRestEvent
+                                             'origin location
+                                             'duration duration)
+                                 (ly:music-property music 'articulations)))
+         (make-music 'BarCheck
+                     'origin location))))
+
+(define (make-ottava-set music)
+  "Set context properties for an ottava bracket."
+  (let ((octavation (ly:music-property music 'ottava-number)))
+
+    (list (context-spec-music
+          (make-apply-context
+           (lambda (context)
+             (let ((offset (* -7 octavation))
+                   (string (assoc-get octavation '((2 . "15ma")
+                                                   (1 . "8va")
+                                                   (0 . #f)
+                                                   (-1 . "8vb")
+                                                   (-2 . "15mb")))))
+               (set! (ly:context-property context 'middleCOffset) offset)
+               (set! (ly:context-property context 'ottavation) string)
+               (ly:set-middle-C! context))))
+          'Staff))))
+
+(define (make-time-signature-set music)
+  "Set context properties for a time signature."
+  (let* ((num (ly:music-property music 'numerator))
+         (den (ly:music-property music 'denominator))
+         (structure (ly:music-property music 'beat-structure))
+         (fraction (cons num den)))
+    (list (descend-to-context
+            (context-spec-music
+              (make-apply-context
+                (lambda (context)
+                  (let* ((time-signature-settings
+                          (ly:context-property context 'timeSignatureSettings))
+                         (my-base-fraction
+                           (base-fraction fraction time-signature-settings))
+                         (my-beat-structure
+                           (if (null? structure)
+                               (beat-structure my-base-fraction
+                                               fraction
+                                               time-signature-settings)
+                               structure))
+                         (beaming-exception
+                           (beam-exceptions fraction time-signature-settings))
+                         (new-measure-length (ly:make-moment num den)))
+                     (ly:context-set-property!
+                       context 'timeSignatureFraction fraction)
+                     (ly:context-set-property!
+                       context 'baseMoment (fraction->moment my-base-fraction))
+                     (ly:context-set-property!
+                       context 'beatStructure my-beat-structure)
+                     (ly:context-set-property!
+                       context 'beamExceptions beaming-exception)
+                     (ly:context-set-property!
+                       context 'measureLength new-measure-length))))
+                'Timing)
+            'Score))))
index 0ee424018b9d6ad0a2f1077608e28ef499df5404..03df67ab82a71efc5697b41115870e0c6f22780b 100644 (file)
@@ -883,6 +883,20 @@ Otherwise, return #f."
                properties)
            (new-line->lily-string))))
 
+(define-display-method TimeSignatureMusic (expr parser)
+  (let* ((num (ly:music-property expr 'numerator))
+         (den (ly:music-property expr 'denominator))
+         (structure (ly:music-property expr 'beat-structure)))
+    (if (null? structure)
+        (format #f
+                "\\time ~a/~a~a"
+                num den
+                (new-line->lily-string))
+        (format #f
+                "#(set-time-signature ~a ~a '~a)~a"
+                num den structure
+                (new-line->lily-string)))))
+
 ;;; \melisma and \melismaEnd
 (define-extra-display-method ContextSpeccedMusic (expr parser)
   "If expr is a melisma, return \"\\melisma\", otherwise, return #f."
@@ -987,41 +1001,6 @@ Otherwise, return #f."
                  (new-line->lily-string))
          #f))))
 
-;;; \time
-(define-extra-display-method ContextSpeccedMusic (expr parser)
-  "If `expr' is a time signature set, return \"\\time ...\".
-Otherwise, return #f.  Note: default grouping is not available."
-  (with-music-match
-   (expr (music
-           'ContextSpeccedMusic
-          element (music
-                   'ContextSpeccedMusic
-                   context-type 'Timing
-                   element (music
-                            'SequentialMusic
-                            elements ?elts))))
-   (and
-    (> (length ?elts) 2)
-    (with-music-match ((cadr ?elts)
-                       (music 'PropertySet
-                              symbol 'baseMoment))
-       #t)
-    (with-music-match ((caddr ?elts)
-                       (music 'PropertySet
-                              symbol 'measureLength))
-       #t)
-    (with-music-match ((car ?elts)
-                       (music 'PropertySet
-                              value ?num+den
-                              symbol 'timeSignatureFraction))
-       (if (eq? (length ?elts) 3)
-           (format
-             #f "\\time ~a/~a~a"
-             (car ?num+den) (cdr ?num+den) (new-line->lily-string))
-           (format
-             #f "#(set-time-signature ~a ~a '(<grouping-specifier>))~a"
-             (car ?num+den) (cdr ?num+den)  (new-line->lily-string)))))))
-
 ;;; \bar
 (define-extra-display-method ContextSpeccedMusic (expr parser)
   "If `expr' is a bar, return \"\\bar ...\".
index 2694e48ec5c7c61d389f1d67a17fd91a96f91d04..ebd48794ba1162441695fa696dc17804d53fbe2f 100644 (file)
@@ -43,6 +43,7 @@ this @code{\\lyricsto} section.")
 (back-slashed number).")
 
      (bass ,boolean? "Set if this note is a bass note in a chord.")
+     (beat-structure ,list? "A beatStructure to be used in autobeaming.")
      (bracket-start ,boolean? "Start a bracket here.
 
 TODO: Use SpanEvents?")
index d9a5f09ac872f35ada7bd598e54115864cf53d73..7f4525e0013b7a3f42017c5e0d01bd81b1fc2763 100644 (file)
 
 ;; TODO: should link back into user manual.
 
-(define (mm-rest-child-list music)
-  "Generate events for multimeasure rests,
-to be used by the sequential-iterator"
-  (let ((location (ly:music-property music 'origin))
-       (duration (ly:music-property music 'duration)))
-    (list (make-music 'BarCheck
-                     'origin location)
-         (make-event-chord (cons (make-music 'MultiMeasureRestEvent
-                                             'origin location
-                                             'duration duration)
-                                 (ly:music-property music 'articulations)))
-         (make-music 'BarCheck
-                     'origin location))))
-
-(define (make-ottava-set music)
-  "Set context properties for an ottava bracket."
-  (let ((octavation (ly:music-property music 'ottava-number)))
-
-    (list (context-spec-music
-          (make-apply-context
-           (lambda (context)
-             (let ((offset (* -7 octavation))
-                   (string (assoc-get octavation '((2 . "15ma")
-                                                   (1 . "8va")
-                                                   (0 . #f)
-                                                   (-1 . "8vb")
-                                                   (-2 . "15mb")))))
-               (set! (ly:context-property context 'middleCOffset) offset)
-               (set! (ly:context-property context 'ottavation) string)
-               (ly:set-middle-C! context))))
-          'Staff))))
-
 (define-public music-descriptions
   `(
     (AbsoluteDynamicEvent
@@ -623,6 +591,13 @@ Syntax: @code{\\times @var{fraction} @var{music}}, e.g.,
        (types . (time-scaled-music music-wrapper-music general-music))
        ))
 
+    (TimeSignatureMusic
+     . ((description . "Set a new time signature")
+        (iterator-ctor . ,ly:sequential-iterator::constructor)
+        (elements-callback . ,make-time-signature-set)
+        (types . (general-music time-signature-music))
+        ))
+
     (TransposedMusic
      . ((description . "Music that has been transposed.")
        (iterator-ctor . ,ly:music-wrapper-iterator::constructor)
index c1452128af49a92e27067064d42ef54c03589a25..07f3463828fc9552bc3b184c57d074ef6c42214e 100644 (file)
@@ -27,7 +27,6 @@ defined in the output modules (output-*.scm)"
     bracket
     char
     circle
-    connected-shape
     dashed-line
     dashed-slur
     dot
index 604395e4deabf1911dbc8d912b087918d97e9ec9..c74d63853e3e5b3d242a32d89cb61d5226bb584e 100644 (file)
   (reduce + 0 (map (lambda (x) (if x 1 0)) input-list)))
 
 (define (bezier-head-for-stencil bezier cut-point)
-  "Prepares a split-bezier to be used in a connected shape stencil."
+  "Prepares a split-bezier to be used in a connected path stencil."
   (list-tail (flatten-list (car (split-bezier bezier cut-point))) 2))
 
 ;; Translators for keys
 (define (gray-colorize stencil)
   (apply ly:stencil-in-color (cons stencil (x11-color 'grey))))
 
-; A connected shape stencil that is surrounded by proc
-(define (rich-mcs-stencil ls x-stretch y-stretch proc)
+; A connected path stencil that is surrounded by proc
+(define (rich-path-stencil ls x-stretch y-stretch proc)
   (lambda (radius thick fill layout props)
     (let*
       ((fill-translate (key-fill-translate fill))
      (ly:stencil-add
       ((if gray? gray-colorize identity)
       (proc
-        (make-connected-shape-stencil
+        (make-connected-path-stencil
         ls
         thick
         (* x-stretch radius)
         (if gray? #t fill-translate))))
       (if (not gray?)
           empty-stencil
-          ((rich-mcs-stencil ls x-stretch y-stretch proc)
+          ((rich-path-stencil ls x-stretch y-stretch proc)
            radius
            thick
            1
            layout
            props))))))
 
-; A connected shape stencil without a surrounding proc
-(define (standard-mcs-stencil ls x-stretch y-stretch)
-  (rich-mcs-stencil ls x-stretch y-stretch identity))
+; A connected path stencil without a surrounding proc
+(define (standard-path-stencil ls x-stretch y-stretch)
+  (rich-path-stencil ls x-stretch y-stretch identity))
 
 ; An ellipse stencil that is surrounded by a proc
 (define (rich-pe-stencil x-stretch y-stretch start end proc)
   (let*
    ((xmove (lambda (x) (+ tailw (+ 0.2 (* bodyw (- x 0.2))))))
     (ymove (lambda (x) (+ (- tailh) (+ -0.05 (* bodyh (+ x 0.05)))))))
-  (standard-mcs-stencil
+  (standard-path-stencil
     `((,(xmove 0.7)
        ,(ymove -0.2)
        ,(xmove 1.0)
 ;;; Flute family stencils
 
 (define flute-lh-b-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     '((0 1.3)
       (0 1.625 -0.125 1.75 -0.25 1.75)
       (-0.55 1.75 -0.55 0.95 -0.25 0.7)
     1.55))
 
 (define flute-lh-bes-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     '((0 1.3)
       (0 1.625 -0.125 1.75 -0.25 1.75)
       (-0.55 1.75 -0.55 0.95 -0.25 0.7)
     1.3))
 
 (define (flute-lh-gis-rh-bes-key-stencil deg)
-  (rich-mcs-stencil
+  (rich-path-stencil
     '((0.1 0.1 0.2 0.4 0.3 0.6)
       (0.3 1.0 0.8 1.0 0.8 0.7)
       (0.8 0.3 0.5 0.3 0 0))
 (define flute-rh-dis-key-stencil little-elliptical-key-stencil)
 
 (define flute-rh-ees-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     '((0.8 0) (1.1 0 1.1 0.75 0.7 0.75) (0.5 0.75) (0.15 0.75 0.1 0.2 0 0))
     -2.38
     1.4))
 (define flute-lower-row-stretch 1.4)
 
 (define flute-rh-cis-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     '((0 0.75) (-0.8 0.75 -0.8 0 0 0))
     flute-lower-row-stretch
     flute-lower-row-stretch))
 
 (define flute-rh-c-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     '((0 0.75) (0.4 0.75) (0.4 0) (0 0))
     flute-lower-row-stretch
     flute-lower-row-stretch))
 
 (define flute-rh-b-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     '((0 0.75) (0.25 0.75) (0.25 0) (0 0))
     flute-lower-row-stretch
     flute-lower-row-stretch))
 
 (define flute-rh-gz-key-stencil
-  (rich-mcs-stencil
+  (rich-path-stencil
       '((0.1 0.1 0.4 0.2 0.6 0.3)
         (1.0 0.3 1.0 0.8 0.7 0.8)
         (0.3 0.8 0.3 0.5 0 0))
            `((,x . 0.0) (,x . ,(- y)) (0.0 . ,(- y)) (0.0 . 0.0))
            0.2))))
     (if gis?
-      (standard-mcs-stencil
+      (standard-path-stencil
         (append
           (append
             `((0.25 ,(/ y -2) 0.75 ,(/ y -2) 1.0 0.0))
           `((0.75 ,(/ y -2) 0.25 ,(/ y -2) 0.0 0.0)))
         scaling-factor
         scaling-factor)
-      (standard-mcs-stencil
+      (standard-path-stencil
         (map (lambda (l)
                (flatten-list
                  (map (lambda (x)
 (define oboe-lh-low-b-key-stencil (oboe-lh-gis-lh-low-b-key-stencil #f))
 
 (define (oboe-lh-ees-lh-bes-key-stencil ees?)
-  (standard-mcs-stencil
+  (standard-path-stencil
     `((0 1.5)
       (0 1.625 -0.125 1.75 -0.25 1.75)
       (-0.5 1.75 -0.5 0.816 -0.25 0.5)
 
 (define (oboe-lh-octave-key-stencil long?)
   (let* ((h (if long? 1.4 1.2)))
-    (standard-mcs-stencil
+    (standard-path-stencil
     `((-0.4 0 -0.4 1.0 -0.1 1.0)
       (-0.1 ,h)
       (0.1 ,h)
 (define oboe-rh-f-key-stencil little-elliptical-key-stencil)
 
 (define (oboe-rh-c-rh-ees-key-stencil c?)
-  (rich-mcs-stencil
+  (rich-path-stencil
     '((1.0 0.0 1.0 0.70 1.5 0.70)
       (2.25 0.70 2.25 -0.4 1.5 -0.4)
       (1.0 -0.4 1.0 0 0 0)
 (define oboe-rh-c-key-stencil (oboe-rh-c-rh-ees-key-stencil #t))
 
 (define oboe-rh-cis-key-stencil
-  (rich-mcs-stencil
+  (rich-path-stencil
     '((0.6 0.0 0.6 0.50 1.25 0.50)
       (2.25 0.50 2.25 -0.4 1.25 -0.4)
       (0.6 -0.4 0.6 0 0 0))
     (height (*
       halfbase
       (/ (sin (/ (* 4 PI) 10)) (cos (/ (* 4 PI) 10))))))
-   (standard-mcs-stencil
+   (standard-path-stencil
       `(
         (0 ,(/ -4.0 3.0) -2.0 ,(/ -4.0 3.0) -2.0 0.0)
         (-1.5 ,(* 0.5 height) -1.25 ,(* 0.75 height) -1.0 ,height)
 (define clarinet-lh-d-key-stencil (standard-e-stencil 1.0 0.4))
 
 (define clarinet-rh-low-c-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     '((0.0 1.5)
       (0.0 2.5 -1.0 2.5 -1.0 0.75)
       (-1.0 0.1 0.0 0.25 0.0 0.3)
     0.8))
 
 (define clarinet-rh-low-cis-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     '((0.0 1.17)
       (0.0 1.67 -1.0 1.67 -1.0 0.92)
       (-1.0 0.47 0.0 0.52 0.0 0.62)
     0.8))
 
 (define clarinet-rh-low-d-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     '((0.0 1.05)
       (0.0 1.55 -1.0 1.55 -1.0 0.8)
       (-1.0 0.35 0.0 0.4 0.0 0.5)
 ; changes, all change...
 
 (define clarinet-rh-fis-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     `(,(bezier-head-for-stencil
         '((0.0 . 0.0) (0.0 . -1.0) (1.0 . -1.0) (1.0 . 0.0))
         0.5)
       CL-RH-V-STRETCH))
 
 (define clarinet-rh-e-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     '((0.0 1.0 1.0 1.0 1.0 0.0) (1.0 -1.0 0.0 -1.0 0.0 0.0))
     CL-RH-H-STRETCH
     CL-RH-V-STRETCH))
 
 (define clarinet-rh-ees-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     `(,(bezier-head-for-stencil
         '((0.0 .  0.0) (0.0 . -1.0) (1.0 . -1.0) (1.0 . 0.0))
         0.5)
 (define clarinet-rh-gis-key-stencil clarinet-rh-e-key-stencil)
 
 (define bass-clarinet-rh-f-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     `(,(bezier-head-for-stencil
         '((0.0 . 0.0) (0.0 . -1.0) (1.0 . -1.0) (1.0 . 0.0))
         0.5)
 (define saxophone-lh-T-key-stencil (standard-e-stencil 0.75 0.75))
 
 (define saxophone-lh-gis-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     '((0.0 0.4)
       (0.0 0.8 3.0 0.8 3.0 0.4)
       (3.0 0.0)
     0.8))
 
 (define (saxophone-lh-b-cis-key-stencil flip?)
-  (standard-mcs-stencil
+  (standard-path-stencil
     '((0.0 1.0)
       (0.4 1.0 0.8 0.9 1.35 0.8)
       (1.35 0.0)
 (define saxophone-lh-b-key-stencil (saxophone-lh-b-cis-key-stencil #f))
 
 (define saxophone-lh-low-bes-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     '((3.0 0.0) (3.0 -1.5 0.0 -1.5 0.0 0.0))
     0.8
     0.8))
 
 (define (saxophone-rh-side-key-stencil width height)
-  (standard-mcs-stencil
+  (standard-path-stencil
     `((0.0 ,height)
     (0.05 ,(+ height 0.05) 0.1 ,(+ height 0.1) 0.15 ,(+ height 0.15))
     (,(- width 0.15) ,(+ height 0.15))
 (define saxophone-rh-bes-key-stencil (saxophone-rh-side-key-stencil 0.9 0.45))
 
 (define saxophone-rh-high-fis-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     (append
       '((0.0 1.0) (0.0 1.4 0.6 1.4 0.6 1.0) (0.6 0.0))
       (map (lambda (l)
 (define saxophone-rh-ees-key-stencil (standard-e-stencil 1.2 0.5))
 
 (define saxophone-rh-low-c-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     '((3.0 0.0) (3.0 -1.5 0.0 -1.5 0.0 0.0))
     0.8
     0.8))
    (second-bezier (cadr info-list))
    (slope-offset1 (caddr info-list))
    (slope-offset2 (cadddr info-list)))
-  (rich-mcs-stencil
+  (rich-path-stencil
     (append
       `((0.0 ,(+ height gap))
       ,(list-tail first-bezier 2))
   (rich-pe-stencil 1.0 1.0 135 315 identity))
 
 (define bassoon-lh-ld-key-stencil
-  (standard-mcs-stencil
+  (standard-path-stencil
     '((-0.8 4.0 1.4 4.0 0.6 0.0)
       (0.5 -0.5 0.5 -0.8 0.6 -1.0)
       (0.7 -1.2 0.8 -1.3 0.8 -1.8)
 
 (define bassoon-lh-d-flick-key-stencil
   (let ((height 3.0))
-    (standard-mcs-stencil
+    (standard-path-stencil
       `((0.0 ,height)
        (0.2 ,(+ height 1.6) 0.8 ,(+ height 1.8) 1.0 ,(+ height 1.8))
        (1.4 ,(+ height 1.8) 1.9 ,(+ height 1.3) 1.9 ,(+ height 1.0))
 
 (define bassoon-lh-c-flick-key-stencil
   (let ((height 3.0))
-    (standard-mcs-stencil
+    (standard-path-stencil
       `((0.0 ,height)
          (0.0 ,(+ height 1.6) 0.4 ,(+ height 1.8) 0.5 ,(+ height 1.8))
          (0.7 ,(+ height 1.8) 0.9 ,(+ height 1.3) 0.9 ,(+ height 1.0))
     (second-bezier (cadr info-list))
     (slope-offset1 (caddr info-list))
     (slope-offset2 (cadddr info-list)))
-  (standard-mcs-stencil
+  (standard-path-stencil
     (append
       (map
         (lambda (l)
   (bassoon-uber-key-stencil 1.0 1.2 0.9 1.0 0.7 0.7))
 
 (define bassoon-rh-thumb-gis-key-stencil
-  (bassoon-uber-key-stencil 1.2 0.8 0.9 0.4 0.7 0.7))
\ No newline at end of file
+  (bassoon-uber-key-stencil 1.2 0.8 0.9 0.4 0.7 0.7))
index 51e239235ebd1ab2db1bdfd46b9d66e7e0252aed..3468e863e9839259f6125deb111535b20d64d68f 100644 (file)
   (key-list-loop key-list)))
 
 (define-markup-command
-  (woodwind-diagram layout props instrument input-list)
+  (woodwind-diagram layout props instrument user-draw-commands)
   (symbol? list?)
   #:category instrument-specific-markup ; markup category
+  #:properties ((size 1)
+                (thickness 0.1)
+                (graphical #t))
   "Make a woodwind-instrument diagram.  For example, say
 
 @example
-\\markup \\woodwind-diagram #'oboe #'(1.4 0.1 #t ((lh . (d ees)) (cc . (five3qT1q)) (rh . (gis))))
+\\markup \\woodwind-diagram #'oboe #'((lh . (d ees)) (cc . (five3qT1q)) (rh . (gis)))
 @end example
 
 @noindent
@@ -1944,44 +1947,43 @@ Lastly, substituting an empty list for the pressed-key alist will result in
 a diagram with all of the keys drawn but none filled. ie...
 
 @example
-\\markup \\woodwind-diagram #'oboe #'(1.4 0.1 #t ())
+\\markup \\woodwind-diagram #'oboe #'()
 @end example"
-  (let*  ((radius (car input-list))
-    (thick (cadr input-list))
-    (display-graphic (caddr input-list))
-    (xy-stretch `(1.0 . 2.5))
-    (chosen-instrument (assoc-get instrument woodwind-data-alist))
-    (chosen-instrument
-      (if (not chosen-instrument)
-          (ly:error "~a is not a valid woodwind instrument."
-                    instrument)
-          chosen-instrument))
-    (stencil-info
-      (assoc-get
-        (if display-graphic 'graphical-commands 'text-commands)
-        chosen-instrument))
-    (user-draw-commands (cadddr input-list))
-    (pressed-info
-      (if (null? user-draw-commands)
-        (uniform-draw-instructions (assoc-get 'keys chosen-instrument))
-        (translate-draw-instructions
-          (append '((hd . ())) user-draw-commands)
-          (assoc-get 'keys chosen-instrument))))
-    (draw-info
-      (function-chain
-        pressed-info
-        (assoc-get 'draw-instructions stencil-info)))
-    (extra-offset-info
-      (function-chain
-        pressed-info
-        (assoc-get 'extra-offset-instructions stencil-info))))
-   (assemble-stencils
-     (assoc-get 'stencil-alist stencil-info)
-     (assoc-get 'keys chosen-instrument)
-     draw-info
-     extra-offset-info
-     radius
-     thick
-     xy-stretch
-     layout
-     props)))
\ No newline at end of file
+  (let*  ((radius size)
+          (thick (* size thickness))
+          (display-graphic graphical)
+          (xy-stretch `(1.0 . 2.5))
+          (chosen-instrument (assoc-get instrument woodwind-data-alist))
+          (chosen-instrument
+            (if (not chosen-instrument)
+                (ly:error "~a is not a valid woodwind instrument."
+                          instrument)
+                chosen-instrument))
+          (stencil-info
+            (assoc-get
+              (if display-graphic 'graphical-commands 'text-commands)
+              chosen-instrument))
+          (pressed-info
+            (if (null? user-draw-commands)
+                (uniform-draw-instructions (assoc-get 'keys chosen-instrument))
+                (translate-draw-instructions
+                  (append '((hd . ())) user-draw-commands)
+                  (assoc-get 'keys chosen-instrument))))
+          (draw-info
+            (function-chain
+              pressed-info
+              (assoc-get 'draw-instructions stencil-info)))
+          (extra-offset-info
+            (function-chain
+              pressed-info
+              (assoc-get 'extra-offset-instructions stencil-info))))
+    (assemble-stencils
+      (assoc-get 'stencil-alist stencil-info)
+      (assoc-get 'keys chosen-instrument)
+      draw-info
+      extra-offset-info
+      radius
+      thick
+      xy-stretch
+      layout
+      props)))
index 332f816b9030665775312557be792a822708eb11..4a00ab66e4e73730284336cd6eb74b8c6a2dd2a6 100644 (file)
@@ -104,6 +104,8 @@ a log file.")
 "Include book titles in preview images.")
     (include-eps-fonts #t
 "Include fonts in separate-system EPS files.")
+    (include-settings #f
+"Include file for global settings, included before the score is processed.")
     (job-count #f
 "Process in parallel, using the given number of
 jobs.")
@@ -362,6 +364,7 @@ LilyPond safe mode.  The syntax is the same as `define*-public'."
   '("lily-library.scm"
     "file-cache.scm"
     "define-event-classes.scm"
+    "define-music-callbacks.scm"
     "define-music-types.scm"
     "output-lib.scm"
     "c++.scm"
index 2a2629fab3247a5a495164d43a082b275fb918f0..decc5153616f5d87c5b92df9584fc09abf161223 100644 (file)
   (make-repeat type num body alts))
 
 (define (script-to-mmrest-text music)
-  "Extract 'direction and 'text from SCRIPT-MUSIC, and transform MultiMeasureTextEvent"
+  "Extract @code{'direction} and @code{'text} from @var{music}, and transform
+into a @code{MultiMeasureTextEvent}."
 
   (if (memq 'script-event (ly:music-property music 'types))
-      
-      (let*
-         ((dir (ly:music-property music 'direction))
-          (tags (ly:music-property music 'tags))
-          (p   (make-music 'MultiMeasureTextEvent
-                            'tags tags
-                            'text (ly:music-property music 'text))))
+      (let* ((location (ly:music-property music 'origin))
+            (dir (ly:music-property music 'direction))
+            (tags (ly:music-property music 'tags))
+            (p (make-music 'MultiMeasureTextEvent
+                           'origin location
+                           'tags tags
+                           'text (ly:music-property music 'text))))
        (if (ly:dir? dir)
            (set! (ly:music-property p 'direction) dir))
        p)
                                         'origin loc)))
                         addlyrics-list)))
     (make-simultaneous-music (cons voice lyricstos))))
+
+(define-ly-syntax (make-mark-set parser location label)
+  "Make the music for the \\mark command."
+  (let* ((set (and (integer? label)
+                  (context-spec-music (make-property-set 'rehearsalMark label)
+                                     'Score)))
+        (ev (make-music 'MarkEvent))
+        (ch (make-event-chord (list ev))))
+
+    (set! (ly:music-property ev 'origin) location)
+    (if set
+       (make-sequential-music (list set ch))
+       (begin
+         (set! (ly:music-property ev 'label) label)
+         ch))))
+
+(define-ly-syntax-simple (partial dur)
+  "Make a partial measure."
+  (let ((mom (ly:moment-sub ZERO-MOMENT (ly:duration-length dur))))
+
+    ;; We use `descend-to-context' here instead of `context-spec-music' to
+    ;; ensure \partial still works if the Timing_translator is moved
+    (descend-to-context
+     (context-spec-music (make-property-set 'measurePosition mom) 'Timing)
+     'Score)))
index 92ffaf47c5b42e928696e3700b2d0151c6cb143b..7b7e2838eb5242e5d895e8b7580df357aa779a78 100644 (file)
@@ -73,60 +73,60 @@ register COMMAND-markup and its signature,
 Syntax:
   (define-markup-command (COMMAND layout props . arguments)
                                  argument-types
-                                 [ #:category category ]
                                  [ #:properties properties ]
     \"documentation string\"
     ...command body...)
- or:
-  (define-markup-command COMMAND
-                                 argument-types
-                                 [ #:category category ]
-                                 function)
 
 where:
-  argument-types is a list of type predicates for arguments
-  category is either a symbol or a symbol list
-  properties a list of (property default-value) lists or COMMANDx-markup elements
-    (when a COMMANDx-markup is found, the properties of the said commandx are
-    added instead). No check is performed against cyclical references!
-
-  The specified properties are available as let-bound variables in the
-  command body.
+  `argument-types' is a list of type predicates for arguments
+  `properties' a list of (property default-value) lists
+
+The specified properties are available as let-bound variables in the
+command body, using the respective `default-value' as fallback in case
+`property' is not found in `props'.  `props' itself is left unchanged:
+if you want defaults specified in that manner passed down into other
+markup functions, you need to adjust `props' yourself.
+
+The autogenerated documentation makes use of some optional
+specifications that are otherwise ignored:
+
+After `argument-types', you may also specify
+                                 [ #:category category ]
+where:
+  `category' is either a symbol or a symbol list specifying the
+             category for this markup command in the docs.
+
+As an element of the `properties' list, you may directly use a
+COMMANDx-markup symbol instead of a `(prop value)' list to indicate
+that this markup command is called by the newly defined command,
+adding its properties to the documented properties of the new
+command.  There is no protection against circular definitions.
 "
-  (let* ((command (if (pair? command-and-args) (car command-and-args) command-and-args))
-         (args (if (pair? command-and-args) (cdr command-and-args) '()))
+  (let* ((command (car command-and-args))
+         (args (cdr command-and-args))
          (command-name (string->symbol (format #f "~a-markup" command)))
          (make-markup-name (string->symbol (format #f "make-~a-markup" command))))
     (while (and (pair? body) (keyword? (car body)))
           (set! body (cddr body)))
     `(begin
        ;; define the COMMAND-markup function
-       ,(if (pair? args)
-            (let* ((documentation (if (string? (car body))
-                                     (list (car body))
-                                     '()))
-                  (real-body (if (or (null? documentation)
-                                     (null? (cdr body)))
-                                 body (cdr body))))
-              `(define-public (,command-name ,@args)
-                 ,@documentation
-                 (let ,(filter identity
-                               (map (lambda (prop-spec)
-                                      (if (pair? prop-spec)
-                                          (let ((prop (car prop-spec))
-                                                (default-value (if (null? (cdr prop-spec))
-                                                                   #f
-                                                                   (cadr prop-spec)))
-                                                (props (cadr args)))
-                                            `(,prop (chain-assoc-get ',prop ,props ,default-value)))
-                                          #f))
-                                    properties))
-                   ,@real-body)))
-            (let ((args (gensym "args"))
-                  (markup-command (car body)))
-              `(define-public (,command-name . ,args)
-                 ,(format #f "Copy of the ~a command." markup-command)
-                 (apply ,markup-command ,args))))
+       ,(let* ((documentation (if (string? (car body))
+                                 (list (car body))
+                                 '()))
+              (real-body (if (or (null? documentation)
+                                 (null? (cdr body)))
+                             body (cdr body))))
+         `(define-public (,command-name ,@args)
+            ,@documentation
+            (let ,(map (lambda (prop-spec)
+                         (let ((prop (car prop-spec))
+                               (default-value (if (null? (cdr prop-spec))
+                                                  #f
+                                                  (cadr prop-spec)))
+                               (props (cadr args)))
+                           `(,prop (chain-assoc-get ',prop ,props ,default-value))))
+                       (filter pair? properties))
+              ,@real-body)))
        (set! (markup-command-signature ,command-name) (list ,@signature))
        ;; Register the new function, for markup documentation
        ,@(map (lambda (category)
@@ -140,99 +140,90 @@ where:
              (if (list? category) category (list category)))
        ;; Used properties, for markup documentation
        (hashq-set! markup-functions-properties
-                   ,command-name
-                   (list ,@(map (lambda (prop-spec)
-                                  (cond ((symbol? prop-spec)
-                                         prop-spec)
-                                         ((not (null? (cdr prop-spec)))
-                                          `(list ',(car prop-spec) ,(cadr prop-spec)))
-                                         (else
-                                          `(list ',(car prop-spec)))))
-                                (if (pair? args)
-                                    properties
-                                    (list)))))
+                  ,command-name
+                  (list ,@(map (lambda (prop-spec)
+                                 (cond ((symbol? prop-spec)
+                                        prop-spec)
+                                        ((not (null? (cdr prop-spec)))
+                                         `(list ',(car prop-spec) ,(cadr prop-spec)))
+                                        (else
+                                         `(list ',(car prop-spec)))))
+                               (if (pair? args)
+                                   properties
+                                   (list)))))
        ;; define the make-COMMAND-markup function
        (define-public (,make-markup-name . args)
-         (let ((sig (list ,@signature)))
-           (make-markup ,command-name ,(symbol->string make-markup-name) sig args))))))
+        (let ((sig (list ,@signature)))
+          (make-markup ,command-name ,(symbol->string make-markup-name) sig args))))))
 
 (defmacro*-public define-markup-list-command
   (command-and-args signature #:key (properties '()) #:rest body)
-  "Same as `define-markup-command, but defines a command that, when
-interpreted, returns a list of stencils instead os a single one"
-  (let* ((command (if (pair? command-and-args) (car command-and-args) command-and-args))
-         (args (if (pair? command-and-args) (cdr command-and-args) '()))
+  "Same as `define-markup-command', but defines a command that, when
+interpreted, returns a list of stencils instead of a single one"
+  (let* ((command (car command-and-args))
+         (args (cdr command-and-args))
          (command-name (string->symbol (format #f "~a-markup-list" command)))
          (make-markup-name (string->symbol (format #f "make-~a-markup-list" command))))
     (while (and (pair? body) (keyword? (car body)))
           (set! body (cddr body)))
     `(begin
        ;; define the COMMAND-markup-list function
-       ,(if (pair? args)
-            (let* ((documentation (if (string? (car body))
-                                     (list (car body))
-                                     '()))
-                  (real-body (if (or (null? documentation)
-                                     (null? (cdr body)))
-                                 body (cdr body))))
-              `(define-public (,command-name ,@args)
-                 ,@documentation
-                 (let ,(filter identity
-                               (map (lambda (prop-spec)
-                                      (if (pair? prop-spec)
-                                          (let ((prop (car prop-spec))
-                                                (default-value (if (null? (cdr prop-spec))
-                                                                   #f
-                                                                   (cadr prop-spec)))
-                                                (props (cadr args)))
-                                            `(,prop (chain-assoc-get ',prop ,props ,default-value)))
-                                          #f))
-                                    properties))
-                   ,@real-body)))
-            (let ((args (gensym "args"))
-                  (markup-command (car body)))
-            `(define-public (,command-name . ,args)
-               ,(format #f "Copy of the ~a command." markup-command)
-               (apply ,markup-command ,args))))
+       ,(let* ((documentation (if (string? (car body))
+                                 (list (car body))
+                                 '()))
+              (real-body (if (or (null? documentation)
+                                 (null? (cdr body)))
+                             body (cdr body))))
+         `(define-public (,command-name ,@args)
+            ,@documentation
+            (let ,(map (lambda (prop-spec)
+                         (let ((prop (car prop-spec))
+                               (default-value (if (null? (cdr prop-spec))
+                                                  #f
+                                                  (cadr prop-spec)))
+                               (props (cadr args)))
+                           `(,prop (chain-assoc-get ',prop ,props ,default-value))))
+                       (filter pair? properties))
+              ,@real-body)))
        (set! (markup-command-signature ,command-name) (list ,@signature))
        ;; add the command to markup-list-function-list, for markup documentation
        (hashq-set! markup-list-functions ,command-name #t)
        ;; Used properties, for markup documentation
        (hashq-set! markup-functions-properties
-                   ,command-name
-                   (list ,@(map (lambda (prop-spec)
-                                  (cond ((symbol? prop-spec)
-                                         prop-spec)
-                                         ((not (null? (cdr prop-spec)))
-                                          `(list ',(car prop-spec) ,(cadr prop-spec)))
-                                         (else
-                                          `(list ',(car prop-spec)))))
-                                (if (pair? args)
-                                    properties
-                                    (list)))))
+                  ,command-name
+                  (list ,@(map (lambda (prop-spec)
+                                 (cond ((symbol? prop-spec)
+                                        prop-spec)
+                                        ((not (null? (cdr prop-spec)))
+                                         `(list ',(car prop-spec) ,(cadr prop-spec)))
+                                        (else
+                                         `(list ',(car prop-spec)))))
+                               (if (pair? args)
+                                   properties
+                                   (list)))))
        ;; it's a markup-list command:
        (set-object-property! ,command-name 'markup-list-command #t)
        ;; define the make-COMMAND-markup-list function
        (define-public (,make-markup-name . args)
-         (let ((sig (list ,@signature)))
-           (list (make-markup ,command-name
-                              ,(symbol->string make-markup-name) sig args)))))))
+        (let ((sig (list ,@signature)))
+          (list (make-markup ,command-name
+                             ,(symbol->string make-markup-name) sig args)))))))
 
 (define-public (make-markup markup-function make-name signature args)
   " Construct a markup object from MARKUP-FUNCTION and ARGS. Typecheck
 against SIGNATURE, reporting MAKE-NAME as the user-invoked function.
 "
   (let* ((arglen (length args))
-         (siglen (length signature))
-         (error-msg (if (and (> siglen 0) (> arglen 0))
-                        (markup-argument-list-error signature args 1)
-                        #f)))
+        (siglen (length signature))
+        (error-msg (if (and (> siglen 0) (> arglen 0))
+                       (markup-argument-list-error signature args 1)
+                       #f)))
     (if (or (not (= arglen siglen)) (< siglen 0) (< arglen 0))
-        (ly:error (string-append make-name ": "
-                   (_ "Wrong number of arguments.  Expect: ~A, found ~A: ~S"))
+       (ly:error (string-append make-name ": "
+                  (_ "Wrong number of arguments.  Expect: ~A, found ~A: ~S"))
                  siglen arglen args))
     (if error-msg
-        (ly:error
+       (ly:error
         (string-append
          make-name ": "
          (_ "Invalid argument in position ~A.  Expect: ~A, found: ~S."))
index 40c68c0c7d3942b002a0325604086f7aab665dcc..a9f54cd443765c9bd0041594ace63c5a47223d5b 100644 (file)
@@ -279,7 +279,7 @@ through MUSIC."
                             1))
               ;; # of dots is equal to the 1 in bitwise representation (minus 1)!
               (dots (1- (logcount (* times children))))
-              ;; The remaining missing multiplicator to scale the notes by 
+              ;; The remaining missing multiplicator to scale the notes by
               ;; times * children
               (mult (/ (* times children (ash 1 dots)) (1- (ash 2 dots))))
               (shift (- (ly:intlog2 (floor mult))))
@@ -494,60 +494,21 @@ i.e.  this is not an override"
 ;;; Need to keep this definition for \time calls from parser
 (define-public (make-time-signature-set num den)
   "Set properties for time signature NUM/DEN."
-  (make-beam-rule-time-signature-set num den '()))
+  (make-music 'TimeSignatureMusic
+              'numerator num
+              'denominator den
+              'beat-structure '()))
 
 ;;; Used for calls that include beat-grouping setting
 (define-public (set-time-signature num den . rest)
   "Set properties for time signature @var{num/den}.
 If @var{rest} is present, it is used to set
 @code{beatStructure}."
- (ly:export (apply make-beam-rule-time-signature-set
-                    (list num den rest))))
-
-(define-public (make-beam-rule-time-signature-set num den rest)
-  "Implement settings for new time signature.  Can be
-called from either make-time-signature-set (used by \time
-in parser) or set-time-signature (called from scheme code
-included in .ly file)."
-
-  (let ((m (make-music 'ApplyContext)))
-    (define (make-time-settings context)
-      (let* ((fraction (cons num den))
-             (time-signature-settings (ly:context-property context 'timeSignatureSettings))
-             (my-base-fraction (base-fraction fraction time-signature-settings))
-             (my-beat-structure (if (null? rest)
-                                    (beat-structure my-base-fraction
-                                                    fraction
-                                                    time-signature-settings)
-                                    (car rest)))
-             (beaming-exception
-               (beam-exceptions fraction time-signature-settings))
-            (new-measure-length (ly:make-moment num den)))
-         (ly:context-set-property! context 'timeSignatureFraction fraction)
-         (ly:context-set-property!
-           context 'baseMoment (fraction->moment my-base-fraction))
-         (ly:context-set-property! context 'beatStructure my-beat-structure)
-         (ly:context-set-property! context 'beamExceptions beaming-exception)
-         (ly:context-set-property! context 'measureLength new-measure-length)))
-     (set! (ly:music-property m 'procedure) make-time-settings)
-     (descend-to-context
-      (context-spec-music m 'Timing)
-      'Score)))
-
-
-(define-public (make-mark-set label)
-  "Make the music for the \\mark command."
-  (let* ((set (if (integer? label)
-                 (context-spec-music (make-property-set 'rehearsalMark label)
-                                     'Score)
-                 #f))
-        (ev (make-music 'MarkEvent))
-        (ch (make-event-chord (list ev))))
-    (if set
-       (make-sequential-music (list set ch))
-       (begin
-         (set! (ly:music-property ev 'label) label)
-         ch))))
+  (ly:export
+   (make-music 'TimeSignatureMusic
+              'numerator num
+              'denominator den
+              'beat-structure (if (null? rest) rest (car rest)))))
 
 (define-safe-public (make-articulation name)
   (make-music 'ArticulationEvent
index 128b1d410424ea26db70b68255b4f2d285638deb..723a616369bd5f7a4b37243c30dc4506a9f05e2e 100644 (file)
@@ -29,6 +29,7 @@
 
 (use-modules (guile)
             (ice-9 regex)
+            (ice-9 optargs)
             (srfi srfi-1)
             (srfi srfi-13)
             (scm framework-ps)
          (- x2 x1) (- y2 y1)
          x1 y1 thick))
 
-(define (connected-shape pointlist thick x-scale y-scale connect fill)
-  (ly:format "~a~4f ~4f ~4f ~4f ~a ~a draw_connected_shape"
-    (string-concatenate
-      (map (lambda (x)
-             (apply (if (eq? (length x) 6)
-                        (lambda (x1 x2 x3 x4 x5 x6)
-                          (ly:format "~4f ~4f ~4f ~4f ~4f ~4f 6 "
-                                     x1
-                                     x2
-                                     x3
-                                     x4
-                                     x5
-                                     x6))
-                        (lambda (x1 x2)
-                           (ly:format "~4f ~4f 2 " x1 x2)))
-                    x))
-           (reverse pointlist)))
-      (length pointlist)
-      x-scale
-      y-scale
-      thick
-      (if connect "true" "false")
-      (if fill "true" "false")))
-
 (define (partial-ellipse x-radius y-radius start-angle end-angle thick connect fill)
   (ly:format "~a ~a ~4f ~4f ~4f ~4f ~4f draw_partial_ellipse"
         (if fill "true" "false")
             (cdr y)
             url))
 
-(define (path thickness exps)
+(define* (path thickness exps #:optional (cap 'round) (join 'round) (fill? #f))
   (define (convert-path-exps exps)
     (if (pair? exps)
        (let*
                (convert-path-exps (drop rest arity))))
        '()))
 
-
-  (ly:format
-   "gsave currentpoint translate 1 setlinecap ~a setlinewidth\n~l stroke grestore"
-   thickness
-   (convert-path-exps exps)))
+  (let ((cap-numeric (case cap ((butt) 0) ((round) 1) ((square) 2)
+                      (else (begin
+                              (ly:warning (_ "unknown line-cap-style: ~S")
+                                          (symbol->string cap))
+                              1))))
+       (join-numeric (case join ((miter) 0) ((round) 1) ((bevel) 2)
+                       (else (begin
+                               (ly:warning (_ "unknown line-join-style: ~S")
+                                           (symbol->string join))
+                               1)))))
+    (ly:format
+     "gsave currentpoint translate
+~a setlinecap ~a setlinejoin ~a setlinewidth
+~l gsave stroke grestore ~a grestore"
+     cap-numeric
+     join-numeric
+     thickness
+     (convert-path-exps exps)
+     (if fill? "fill" ""))))
index 3a82c6f81507750df8fe9a639919acf19bcd2062..238819552866dd420a54b5c0d1876444e87b2d8b 100644 (file)
@@ -29,6 +29,7 @@
   (guile)
   (ice-9 regex)
   (ice-9 format)
+  (ice-9 optargs)
   (lily)
   (srfi srfi-1)
   (srfi srfi-13))
                            (- (* start-radius (sin new-start-angle))))
                 "")))))))
 
-(define (connected-shape pointlist thick x-scale y-scale connect fill)
-  (entity
-    'path ""
-    `(fill . ,(if fill "currentColor" "none"))
-    `(stroke . "currentColor")
-    `(stroke-width . ,thick)
-    '(stroke-linejoin . "round")
-    '(stroke-linecap . "round")
-    (cons
-      'd
-      (ly:format
-        "M0 0~a ~a"
-        (string-concatenate
-          (map (lambda (x)
-                 (apply
-                   (if (eq? (length x) 6)
-                       (lambda (x1 x2 x3 x4 x5 x6)
-                         (ly:format "C~4f ~4f ~4f ~4f ~4f ~4f"
-                                    (* x1 x-scale)
-                                    (- (* x2 y-scale))
-                                    (* x3 x-scale)
-                                    (- (* x4 y-scale))
-                                    (* x5 x-scale)
-                                    (- (* x6 y-scale))))
-                       (lambda (x1 x2)
-                         (ly:format "L~4f ~4f"
-                                    (* x-scale x1)
-                                    (- (* y-scale x2)))))
-                   x))
-               pointlist))
-        (if connect "z " "")))))
-
 (define (embedded-svg string)
   string)
 
                        x-max y-min
                        x-max 0)))))
 
-(define (path thick commands)
+(define* (path thick commands #:optional (cap 'round) (join 'round) (fill? #f))
   (define (convert-path-exps exps)
     (if (pair? exps)
        (let*
                (convert-path-exps (drop rest arity))))
        '()))
 
-  (entity 'path ""
-         `(stroke-width . ,thick)
-         '(stroke-linejoin . "round")
-         '(stroke-linecap . "round")
-         '(stroke . "currentColor")
-         '(fill . "none")
-         `(d . ,(apply string-append (convert-path-exps commands)))))
+  (let* ((line-cap-styles '(butt round square))
+        (line-join-styles '(miter round bevel))
+        (cap-style (if (not (memv cap line-cap-styles))
+                       (begin
+                         (ly:warning (_ "unknown line-cap-style: ~S")
+                                     (symbol->string cap))
+                         'round)
+                       cap))
+        (join-style (if (not (memv join line-join-styles))
+                        (begin
+                          (ly:warning (_ "unknown line-join-style: ~S")
+                                      (symbol->string join))
+                          'round)
+                        join)))
+    (entity 'path ""
+           `(stroke-width . ,thick)
+           `(stroke-linejoin . ,(symbol->string join-style))
+           `(stroke-linecap . ,(symbol->string cap-style))
+           '(stroke . "currentColor")
+           `(fill . ,(if fill? "currentColor" "none"))
+           `(d . ,(apply string-append (convert-path-exps commands))))))
 
 (define (placebox x y expr)
   (if (string-null? expr)
index 2da0142d09a5fa2296b53de3237313156841e14f..6be4d6450d1ba063ea8e18a33d75be3529ecbd5f 100644 (file)
@@ -23,7 +23,6 @@
            page-prev
            page-printable-height
            layout->page-init
-           page-lines
            page-force
            page-penalty
            page-configuration
index 7ac43c10290b304d0eaf62e5aed6e607ce62e255..4a0a26bd6cd342186fc6150e679d5e69bc541071 100644 (file)
@@ -291,63 +291,55 @@ the more angular the shape of the parenthesis."
       (cons (min-max-crawler min cddr possible-extrema)
             (min-max-crawler max cddr possible-extrema)))))
 
-(define-public
-  (make-connected-shape-stencil pointlist
-                                thickness
-                                x-scale
-                                y-scale
-                                connect
-                                fill)
-
-  (define (connected-shape-min-max pointlist)
-
-    (define (line-part-min-max x1 x2)
-      (list (min x1 x2) (max x1 x2)))
-
-    (define (bezier-part-min-max x1 x2 x3 x4)
-      ((lambda (x) (list (reduce min 10000 x) (reduce max -10000 x)))
-        (map
-          (lambda (x)
-            (+ (* x1 (expt (- 1 x) 3))
-               (+ (* 3 (* x2 (* (expt (- 1 x) 2) x)))
-                  (+ (* 3 (* x3 (* (- 1 x) (expt x 2))))
-                     (* x4 (expt x 3))))))
-          (if (< (+ (expt x2 2) (+ (expt x3 2) (* x1 x4)))
-                 (+ (* x1 x3) (+ (* x2 x4) (* x2 x3))))
-              (list 0.0 1.0)
-              (filter
-                (lambda (x) (and (>= x 0) (<= x 1)))
-                (append
-                  (list 0.0 1.0)
-                  (map (lambda (op)
-                         (if (not (eqv? 0.0
-                                        (- (+ x1 (* 3 x3)) (+ x4 (* 3 x2)))))
-                             ;; Zeros of the bezier curve
-                             (/ (+ (- x1 (* 2 x2))
-                                   (op x3
-                                       (sqrt (- (+ (expt x2 2)
-                                                   (+ (expt x3 2) (* x1 x4)))
-                                                (+ (* x1 x3)
-                                                   (+ (* x2 x4) (* x2 x3)))))))
-                                (- (+ x1 (* 3 x3)) (+ x4 (* 3 x2))))
-                             ;; Apply L'hopital's rule to get the zeros if 0/0
-                             (* (op 0 1)
-                                (/ (/ (- x4 x3) 2)
-                                   (sqrt (- (+ (* x2 x2)
-                                               (+ (* x3 x3) (* x1 x4)))
-                                            (+ (* x1 x3)
-                                               (+ (* x2 x4) (* x2 x3)))))))))
-                       (list + -))))))))
+(define (path-min-max origin pointlist)
+
+  (define (line-part-min-max x1 x2)
+    (list (min x1 x2) (max x1 x2)))
+
+  (define (bezier-part-min-max x1 x2 x3 x4)
+    ((lambda (x) (list (reduce min 10000 x) (reduce max -10000 x)))
+      (map
+       (lambda (x)
+         (+ (* x1 (expt (- 1 x) 3))
+            (+ (* 3 (* x2 (* (expt (- 1 x) 2) x)))
+               (+ (* 3 (* x3 (* (- 1 x) (expt x 2))))
+                  (* x4 (expt x 3))))))
+       (if (< (+ (expt x2 2) (+ (expt x3 2) (* x1 x4)))
+              (+ (* x1 x3) (+ (* x2 x4) (* x2 x3))))
+           (list 0.0 1.0)
+           (filter
+             (lambda (x) (and (>= x 0) (<= x 1)))
+             (append
+               (list 0.0 1.0)
+               (map (lambda (op)
+                      (if (not (eqv? 0.0
+                                     (- (+ x1 (* 3 x3)) (+ x4 (* 3 x2)))))
+                          ;; Zeros of the bezier curve
+                          (/ (+ (- x1 (* 2 x2))
+                                (op x3
+                                    (sqrt (- (+ (expt x2 2)
+                                                (+ (expt x3 2) (* x1 x4)))
+                                             (+ (* x1 x3)
+                                                (+ (* x2 x4) (* x2 x3)))))))
+                             (- (+ x1 (* 3 x3)) (+ x4 (* 3 x2))))
+                          ;; Apply L'hopital's rule to get the zeros if 0/0
+                          (* (op 0 1)
+                             (/ (/ (- x4 x3) 2)
+                                (sqrt (- (+ (* x2 x2)
+                                            (+ (* x3 x3) (* x1 x4)))
+                                         (+ (* x1 x3)
+                                            (+ (* x2 x4) (* x2 x3)))))))))
+                    (list + -))))))))
 
   (define (bezier-min-max x1 y1 x2 y2 x3 y3 x4 y4)
     (map (lambda (x)
-           (apply bezier-part-min-max x))
-         `((,x1 ,x2 ,x3 ,x4) (,y1 ,y2 ,y3 ,y4))))
+          (apply bezier-part-min-max x))
+        `((,x1 ,x2 ,x3 ,x4) (,y1 ,y2 ,y3 ,y4))))
 
   (define (line-min-max x1 y1 x2 y2)
     (map (lambda (x)
-           (apply line-part-min-max x))
-         `((,x1 ,x2) (,y1 ,y2))))
+          (apply line-part-min-max x))
+        `((,x1 ,x2) (,y1 ,y2))))
 
   ((lambda (x)
      (list
@@ -356,23 +348,57 @@ the more angular the shape of the parenthesis."
        (reduce min +inf.0 (map caadr x))
        (reduce max -inf.0 (map cadadr x))))
     (map (lambda (x)
-           (if (eq? (length x) 8)
-               (apply bezier-min-max x)
-               (apply line-min-max x)))
-         (map (lambda (x y)
-                (append (list (cadr (reverse x)) (car (reverse x))) y))
-              (append (list (list 0 0))
-                      (reverse (cdr (reverse pointlist)))) pointlist))))
-
-  (let* ((boundlist (connected-shape-min-max pointlist)))
+          (if (eq? (length x) 8)
+              (apply bezier-min-max x)
+              (apply line-min-max x)))
+        (map (lambda (x y)
+               (append (list (cadr (reverse x)) (car (reverse x))) y))
+             (append (list origin)
+                     (reverse (cdr (reverse pointlist)))) pointlist))))
+
+(define-public (make-connected-path-stencil pointlist thickness
+                                           x-scale y-scale connect fill)
+  "Make a connected path described by the list @var{pointlist}, with
+thickness @var{thickness}, and scaled by @var{x-scale} in the X direction
+and @var{y-scale} in the Y direction.  @var{connect} and @var{fill} are
+boolean arguments that specify if the path should be connected or filled,
+respectively."
+
+  ;; paths using this routine are designed to begin at point '(0 . 0)
+  (let* ((origin (list 0 0))
+        (boundlist (path-min-max origin pointlist))
+        ;; modify pointlist to scale the coordinates
+        (path (map (lambda (x)
+                     (apply
+                       (if (eq? 6 (length x))
+                           (lambda (x1 x2 x3 x4 x5 x6)
+                             (list 'curveto
+                                   (* x1 x-scale)
+                                   (* x2 y-scale)
+                                   (* x3 x-scale)
+                                   (* x4 y-scale)
+                                   (* x5 x-scale)
+                                   (* x6 y-scale)))
+                           (lambda (x1 x2)
+                             (list 'lineto
+                                   (* x1 x-scale)
+                                   (* x2 y-scale))))
+                       x))
+                   pointlist))
+        ;; a path must begin with a `moveto'
+        (prepend-origin (apply list (cons 'moveto origin) path))
+        ;; if this path is connected, add closepath to the end
+        (final-path (if connect
+                        (append prepend-origin (list 'closepath))
+                        prepend-origin))
+        (command-list (fold-right append '() final-path)))
+
   (ly:make-stencil
-    `(connected-shape
-      ',pointlist
-      ',thickness
-      ',x-scale
-      ',y-scale
-      ',connect
-      ',fill)
+    `(path ,thickness
+          `(,@',command-list)
+          'round
+          'round
+          ,(if fill #t #f))
     (coord-translate
       ((if (< x-scale 0) reverse-interval identity)
         (cons (* x-scale (list-ref boundlist 0))
index 4ac41794bac106751aefeb6a53886b3dd594fada..d70ff71da46feb717b88792fab30ffa6384e0e80 100644 (file)
@@ -3,6 +3,7 @@ depth=../..
 EXTRA_DIST_FILES = $(call src-wildcard,*.sh) $(call src-wildcard,*.py)
 EXTRA_DIST_FILES += pfx2ttf.fontforge
 EXTRA_DIST_FILES += lily-git.tcl
+EXTRA_DIST_FILES += ref_check.tely
 
 include $(depth)/make/stepmake.make
 
diff --git a/scripts/auxiliar/cg-section.sh b/scripts/auxiliar/cg-section.sh
new file mode 100755 (executable)
index 0000000..272260c
--- /dev/null
@@ -0,0 +1,73 @@
+#!/bin/sh
+
+#  Build html versions of sections of lilypond Contributors' Guide
+#
+#  Usage:  cg-section.sh SECTION
+#
+#   where SECTION is the section to be built.
+#
+#   For example, CG 4 would be built by
+#       cg-section.sh doc-work
+#
+#   At the end of the run, the user is prompted whether or not to remove files
+#
+#  Before first use, the following must be done:
+#     * Set FROMDIR, DOCDIR, TODIR, LILYPONDBOOK, and TEXI2HTML for your system
+#     * Create $DOCDIR
+#     * Copy version.itexi from somewhere in your Documentation tree
+#         (probably Documentation/out) to $DOCDIR
+#
+#  Known limitations:
+#
+#     * Doesn't use website css files
+#     * Bitmap images aren't loaded properly
+#
+
+#
+#  Customize the file here
+#
+FROMDIR="$HOME/lilypond"
+DOCDIR="$HOME/lilypond/tempdocs"
+TODIR="$DOCDIR/contributor"
+TEXI2HTML="texi2html"
+REFCHECK="$FROMDIR/scripts/auxiliar/ref_check.py"
+
+NAME=$1
+
+if test ! -d $TODIR; then
+  mkdir $TODIR
+fi
+if test ! -d $TODIR/out; then
+  mkdir $TODIR/out
+fi
+
+cp $FROMDIR/Documentation/common-macros.itexi $TODIR/common-macros.itexi
+cp $FROMDIR/Documentation/macros.itexi $DOCDIR/macros.itexi
+cp $DOCDIR/version.itexi $TODIR/version.itexi
+
+if test -e $TODIR/$NAME.html; then
+  rm $TODIR/$NAME.html
+fi
+
+if test -e $TODIR/out/$NAME.texi; then
+  rm $TODIR/out/$NAME.texi
+fi
+
+echo Running RefCheck
+python $REFCHECK
+
+cd $DOCDIR
+echo Running texi2html
+cat $DOCDIR/macros.itexi $FROMDIR/Documentation/contributor/$NAME.itexi > $TODIR/$NAME.texi
+$TEXI2HTML \
+  --no-validate \
+  --output=$TODIR/out/$NAME.html \
+  --I=$FROMDIR/Documentation \
+  --I=$TODIR/out \
+  $TODIR/$NAME.texi
+
+read -p "delete files? (y/n): "
+if [ "$REPLY" = "y" ]; then
+  echo "deleting files"
+  rm -rf $TODIR
+fi
diff --git a/scripts/auxiliar/doc-section.sh b/scripts/auxiliar/doc-section.sh
new file mode 100755 (executable)
index 0000000..763b173
--- /dev/null
@@ -0,0 +1,96 @@
+#!/bin/sh
+
+#  Build html versions of sections of lilypond documentation
+#
+#  Usage:  doc-section.sh MANUAL SECTION
+#
+#   where MANUAL is the manual and SECTION is the section to be built.
+#
+#   For example, NR 1.2 would be built by
+#       doc-section.sh notation rhythms
+#
+#     and LM 1 would be built by
+#       doc-section.sh learning tutorial
+#
+#   At the end of the run, the user is prompted whether or not to remove files
+#
+#  Before first use, the following must be done:
+#     * Set FROMDIR, DOCDIR, TODIR, LILYPONDBOOK, and TEXI2HTML for your system
+#     * Create $DOCDIR
+#     * Copy version.itexi from somewhere in your Documentation tree
+#         (probably Documentation/out) to $DOCDIR
+#
+#  Known limitations:
+#
+#     * Doesn't use website css files
+#     * Bitmap images aren't loaded properly
+#     * Won't build Contributors' Guide; see scripts/auxiliar/cg-section.sh
+#
+
+#
+#  Customize the file here
+#
+FROMDIR="$HOME/lilypond"
+DOCDIR="$HOME/lilypond/tempdocs"
+LILYPONDBOOK="lilypond-book"
+TEXI2HTML="texi2html"
+REFCHECK="$FROMDIR/scripts/auxiliar/ref_check.py"
+
+DIRECTORY=$1
+NAME=$2
+TODIR=$DOCDIR/$NAME
+
+if test ! -d $TODIR; then
+  mkdir $TODIR
+fi
+if test ! -d $TODIR/out; then
+  mkdir $TODIR/out
+fi
+
+cp $FROMDIR/Documentation/common-macros.itexi $TODIR/common-macros.itexi
+cp $FROMDIR/Documentation/macros.itexi $DOCDIR/macros.itexi
+cp $DOCDIR/version.itexi $TODIR/version.itexi
+
+if test -e $TODIR/$NAME.html; then
+  rm $TODIR/$NAME.html
+fi
+
+if test -e $TODIR/out/$NAME.texi; then
+  rm $TODIR/out/$NAME.texi
+fi
+
+echo "Running lilypond-book"
+$LILYPONDBOOK \
+        -f texi-html \
+        -I $FROMDIR/Documentation/snippets \
+        -I $FROMDIR/Documentation/snippets/new \
+        -I $FROMDIR/input/manual \
+        -I $FROMDIR/Documentation \
+        -I $FROMDIR/Documentation/included  \
+        -o $TODIR/out \
+        $FROMDIR/Documentation/$DIRECTORY/$NAME.itely
+BOOKRC=$?
+if [ $BOOKRC != 0 ]; then
+  echo "Lilypond-book returned code $BOOKRC"
+  exit $BOOKRC
+fi
+
+echo Running RefCheck
+python $REFCHECK
+
+cd $DOCDIR
+if test -f $TODIR/out/$NAME.texi; then
+  echo Running texi2html
+  cat $DOCDIR/macros.itexi $TODIR/out/$NAME.texi > $TODIR/$NAME.texi
+  $TEXI2HTML \
+    --no-validate \
+    --output=$TODIR/out/$NAME.html \
+    --I=$TODIR/out \
+    $TODIR/$NAME.texi
+fi
+
+read -p "delete files? (y/n): "
+if [ "$REPLY" = "y" ]; then
+  echo "deleting files"
+  rm -rf $TODIR
+fi
index 1c671178d76b8c60c505a1d6f6d681512dd8a54a..d012f1faca4a1e9b4460036cea3909771dbf78d7 100755 (executable)
@@ -210,6 +210,7 @@ def update_ly_in_place (snippet_path):
                                               snippet_path,
                                               visited_languages),
          contents)
+    need_line_break_workaround = False
     for language_code in langdefs.LANGDICT:
         if not language_code in visited_languages:
             base = os.path.splitext (os.path.basename (snippet_path))[0]
@@ -219,7 +220,16 @@ def update_ly_in_place (snippet_path):
                 texidoc_translation = open (texidoc_path).read ()
                 texidoc_translation = texidoc_translation.replace ('\\', '\\\\')
                 contents = begin_header_re.sub ('\\g<0>\n' + texidoc_translation, contents, 1)
+        else:
+            need_line_break_workaround = True
     contents = doctitle_re.sub (doctitle_sub, contents)
+    # workaround for a bug in the regex's that I'm not smart
+    # enough to figure out.  -gp
+    if need_line_break_workaround:
+        first_translated = contents.find('%% Translation of')
+        keep = contents[:first_translated+5]
+        contents = keep + contents[first_translated+5:].replace('%% Translation of', '\n%% Translation of')
+
     open (snippet_path, 'w').write (contents)
 
 if in_dir:
diff --git a/scripts/auxiliar/node-menuify.py b/scripts/auxiliar/node-menuify.py
new file mode 100755 (executable)
index 0000000..0d5ed7f
--- /dev/null
@@ -0,0 +1,82 @@
+#!/usr/bin/env python
+import sys
+
+try:
+    infile = sys.argv[1]
+    lines = open(infile).readlines()
+except:
+    print "ERROR: need a filename"
+    sys.exit(1)
+
+nodes = []
+
+# Generate TOC
+for i in range(len(lines)):
+    line = lines[i]
+    if line.startswith('@node '):
+        node_name = line[6:].rstrip()
+        # ASSUME: the last line of the file is not @node
+        section_line = lines[i+1]
+        if (section_line.startswith('@chapter ') or
+              section_line.startswith('@unnumbered ') or
+              section_line.startswith('@appendix ')):
+            section_type = 1
+        elif (section_line.startswith('@section ') or
+              section_line.startswith('@unnumberedsec ') or
+              section_line.startswith('@appendixsec ')):
+            section_type = 2
+        elif (section_line.startswith('@subsection ') or
+              section_line.startswith('@unnumberedsubsec ') or
+              section_line.startswith('@appendixsubsec ')):
+            section_type = 3
+        elif (section_line.startswith('@subsubsection ') or
+              section_line.startswith('@unnumberedsubsubsec ') or
+              section_line.startswith('@appendixsubsubsec ')):
+            section_type = 4
+        else:
+            print "ERROR: unknown sectioning command"
+            print section_line
+            sys.exit(1)
+        nodes.append( (section_type, node_name) )
+
+# rewrite file with new menus from TOC
+outfile = open(infile, 'w')
+line_index = 0
+toc_index = 0
+while line_index < len(lines):
+    line = lines[ line_index ]
+    if line.startswith('@menu'):
+        outfile.write('@menu\n')
+        # ASSUME: every @menu has a proper @end menu
+        while not lines[line_index].startswith('@end menu'):
+            line_index += 1
+
+        # write new menu entries
+        menu_type = nodes[toc_index][0]
+        i = toc_index
+        while nodes[i][0] == menu_type:
+            i += 1
+            if i >= len(nodes):
+                break
+        added = 0
+        while True:
+            if i >= len(nodes):
+                added = 1
+                break
+            section_type = nodes[i][0]
+            if section_type == menu_type+1:
+                node_name = nodes[i][1]
+                node_formatted = '* ' + node_name + '::\n'
+                outfile.write( node_formatted )
+                added += 1
+            if section_type == menu_type:
+                added += 1
+                break
+            i += 1
+        toc_index += added
+        line = lines[line_index]
+    line_index += 1
+    # write normal line.  Removes tabs and spaces; leaves EOL
+    outfile.write(line.rstrip('\t '))
+outfile.close()
+
diff --git a/scripts/auxiliar/ref_check.py b/scripts/auxiliar/ref_check.py
new file mode 100755 (executable)
index 0000000..48bc4d6
--- /dev/null
@@ -0,0 +1,188 @@
+
+"""
+*** RefCheck
+
+Flow
+  Read files
+    On @defManual manual refManual eg @defManual LM rlearning
+      Associate manual name 'manual' with reference @'refManual'{ ... }
+      Add 'refManual' to list of keywords
+    On @setManual manual set current manual name to 'manual'
+    On @include open and process new file
+    On @node add node to Nodes list with current manual name and current file name
+    On @ref add contents to References list with refManual, current manual name and current file name
+    On one of refManual keywords add contents to References list with ditto
+  Match refs and nodes
+    Process References list:
+      Check reference is contained in Nodes list with refManual in Nodes = refManual in References
+    Print results
+    
+Known issues
+  Node names containing commas are only checked up to the comma
+  Spurious warnings "Xref should be internal" for files in /included
+
+"""
+
+
+##################################################
+class CrossRefs:
+  """ Holds References and Nodes """
+  def __init__(self):
+    self.Manuals = {}
+    self.Nodes = {}
+    self.nodeNames = {}  # used to check for duplicates only
+    self.Refs = []
+    self.nodeCount = 0
+
+  def addManual(self, manualName, refManual):
+    self.Manuals[refManual] = manualName
+
+  def getRefManuals(self):
+    return self.Manuals.keys()
+
+  def getManualName(self, refManual):
+    return self.Manuals[refManual]
+
+  def addNode(self, nodeName, manualName, fileName):
+    global returnCode
+#    print "Node: ", nodeName, " in ", manualName, " found in ", fileName
+    if manualName+"/"+nodeName in self.Nodes.keys():
+      print "Error: Duplicate nodename ",nodeName, " in ", fileName, " and ", self.Nodes[manualName+nodeName]
+      returnCode=1
+    self.Nodes[manualName + "/" + nodeName] = [manualName, fileName]
+    self.nodeNames[nodeName] = fileName
+
+  def addRef(self, toManualName, toHeading, inFileName):
+#    if inFileName == "notation/vocal.itely":
+#      print "Ref to ", toManualName, "/",toHeading, " found in ", inFileName
+    self.Refs.append([toManualName + "/" + toHeading, inFileName])
+
+  def check(self):
+    noErrors = True
+    for [refHeading, refFileName] in self.Refs:
+      try:
+        targetFileName = self.Nodes[refHeading]
+#        if refFileName == "notation/vocal.itely":
+#          print "ref to: ", refHeading, " in ", refFileName, " found in ", targetFileName
+      except KeyError:
+        noErrors = False
+        print "ref to: ", refHeading, " in ", refFileName, " not found"
+    if noErrors:
+      print " All references satisfied"
+    else:
+      returnCode=1
+
+##################################################
+class File:
+  """ Process an included file """
+
+  # Class variables
+  CurrentManualName = ""
+  DefaultPath = ""
+  Excludes = []
+  Paths = {}
+
+  # Methods
+  def __init__(self, fileName):
+    self.fileName = fileName
+    try:
+      self.fullFileName = File.Paths[fileName] + fileName
+    except KeyError:
+      self.fullFileName = File.DefaultPath + fileName
+
+  def read(self, crossRefs):
+    """ Process File """
+
+    skip = False
+    try:
+      myfile = open(self.fullFileName, 'r')
+    except IOError:
+      print "File ", self.fullFileName, " referenced in ", File.CurrentManualName, " but not found"
+      return
+    remainderLine = ""
+    lineNo = 0
+    for line in myfile:
+      lineNo += 1
+      words = line.split()
+      if len(words) > 0:
+        if words[0] == "@ignore" or words[0] == "@macro":
+          skip = True
+        if skip and len(words) > 1:
+          if words[0] == "@end" and (words[1].find("ignore") >= 0 or words[1].find("macro") >= 0):
+            skip = False
+
+        if not skip and words[0].find("@c") < 0:
+          if words[0].find("@defManual") >= 0:
+            # Manual definition found - extract manual name and refManual string
+            manualName = words[1]
+            refManual = words[2]
+            crossRefs.addManual(manualName, refManual)
+#            print manualName, refManual
+
+          elif words[0].find("@defaultPath") >=0:
+            File.DefaultPath = words[1]
+
+          elif words[0].find("@path") >=0:
+            File.Paths[words[1]] = words[2]
+
+          elif words[0].find("@setManual") >= 0:
+            File.CurrentManualName = words[1]
+#            print " Checking ", File.CurrentManualName
+
+          elif words[0].find("@exclude") >=0:
+            File.Excludes.append(words[1])
+
+          elif words[0].find("@include") >= 0:
+            if words[1] not in File.Excludes:
+              currentFileName = words[1]
+#              print "  File: ", currentFileName
+              currentFile = File(currentFileName)
+              currentFile.read(crossRefs)
+
+          elif words[0] == "@node":
+            nodeName = line[6:-1]
+            crossRefs.addNode(nodeName, File.CurrentManualName, self.fileName)
+
+          # Find references
+
+          twoLines = remainderLine + ' ' + line.strip()
+          manualRefStrings = crossRefs.getRefManuals()
+          refFound = False
+          for manualRefString in manualRefStrings:
+            toManualName = crossRefs.getManualName(manualRefString)
+            actualToManualName = toManualName
+            if toManualName == "this":
+              toManualName = File.CurrentManualName
+            refString = "@" + manualRefString + "{"
+            refStart = twoLines.find(refString)
+            if refStart >= 0:
+              refFound = True
+              if actualToManualName == File.CurrentManualName:
+                print "Warning: xref should be internal around line ", lineNo, " in ", self.fileName
+              twoLines = twoLines[refStart:]
+              refNodeStart = twoLines.find("{") + 1
+              # TODO Need to check here for nested {}
+              refNodeEnd = twoLines.find("}")
+              refNodeEndComma = twoLines.find(",")
+              if refNodeEndComma > 0:
+                refNodeEnd = min(refNodeEnd, refNodeEndComma)
+              if refNodeEnd >= 0:
+                crossRefs.addRef(toManualName, twoLines[refNodeStart:refNodeEnd], self.fileName)
+                remainderLine=twoLines[refNodeEnd+1:]
+            if refFound:
+              refFound = False
+              break
+          if not refFound:
+              remainderLine = ""
+
+    myfile.close()
+    return
+
+topFile = File("scripts/auxiliar/ref_check.tely") # TODO get from input params
+print "RefCheck ver 0.1"
+returnCode=0
+crossRefs = CrossRefs()
+topFile.read(crossRefs)
+crossRefs.check()
+if returnCode > 0:
+  print "Errors found: status code: ",returnCode
\ No newline at end of file
diff --git a/scripts/auxiliar/ref_check.tely b/scripts/auxiliar/ref_check.tely
new file mode 100644 (file)
index 0000000..960f092
--- /dev/null
@@ -0,0 +1,71 @@
+
+Manual names and reference keywords:
+(refs to IR not checked)
+@defManual this ref
+@defManual CH rchanges
+@defManual EL rextend
+@defManual WE rgeneral
+@defManual ES ressay
+@defManual LM rlearning
+@defManual MG rgloss
+@defManual NR ruser
+@defManual AU rprogram
+@defManual CG rcontrib
+
+Files to be excluded (not available in git):
+@exclude colorado.itexi
+@exclude computer-notation.itexi
+@exclude context-properties.tely
+@exclude engravingbib.itexi
+@exclude identifiers.tely
+@exclude layout-properties.tely
+@exclude macros.itexi
+@exclude markup-commands.tely
+@exclude markup-list-commands.tely
+@exclude scheme-functions.tely
+@exclude type-predicates.tely
+@exclude version.itexi
+@exclude weblinks.itexi
+
+@defaultPath Documentation/
+
+Learning Manual
+@setManual LM
+@include learning.tely
+
+Music Glossary
+@setManual MG
+@include music-glossary.tely
+
+Notation Reference
+@setManual NR
+@include notation.tely
+Dummy nodes to satisfy refs to text markup
+@node Text markup commands
+@node Font
+@node Align
+@node Graphic
+@node Instrument Specific Markup
+@node Music
+@node Text markup list commands
+
+Application Usage
+@setManual AU
+@include usage.tely
+
+Contributors Guide
+@setManual CG
+@include contributor.texi
+
+Extending Lilypond
+@setManual EL
+@include extending.tely
+
+Essay
+@setManual ES
+@include essay.tely
+
+General (web)
+@setManual WE
+@include web.texi
+
diff --git a/scripts/auxiliar/update-patch-version.sh b/scripts/auxiliar/update-patch-version.sh
new file mode 100755 (executable)
index 0000000..ac30788
--- /dev/null
@@ -0,0 +1,21 @@
+#! /bin/bash
+#
+#  Update the version number in lilypond snippets without running convert-ly
+#   on the snippets
+#  Note: this does not change anything but the version number, and it will only
+#   change the specified version number
+#
+#  This is useful when a patch containing a number of snippets (due to a change
+#   in syntax) has not completed review before a new development release
+#   is made.
+#
+#  Usage: update-patch-version old-version new-version
+
+if [ $# -ne 2 ] # need exactly 2 arguments
+then
+  echo "Usage:  update-patch-version old-version new-version"
+  exit 1
+fi
+
+git grep --name-only $1 | xargs sed -i -e s/$1/$2/g
+
diff --git a/scripts/build/bib2html.py b/scripts/build/bib2html.py
deleted file mode 100644 (file)
index 8434cbf..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-#!@PYTHON@
-import os
-import sys
-import getopt
-import tempfile
-
-# usage:
-def usage ():
-    print 'usage: %s [-s style] [-o <outfile>] BIBFILES...'
-
-(options, files) = getopt.getopt (sys.argv[1:], 's:o:', [])
-
-output = 'bib.html'
-style = 'long'
-
-for (o,a) in options:
-    if o == '-h' or o == '--help':
-        usage ()
-        sys.exit (0)
-    elif o == '-s' or o == '--style':
-        style = a
-    elif o == '-o' or o == '--output':
-        output = a
-    else:
-        raise Exception ('unknown option: %s' % o)
-
-
-if style not in ['alpha','index','long','longp','long-pario','short','short-pario','split']:
-    sys.stderr.write ("Unknown style \`%s'\n" % style)
-
-if not files:
-   usage ()
-   sys.exit (2)
-
-
-def strip_extension (f, ext):
-    (p, e) = os.path.splitext (f)
-    if e == ext:
-        e = ''
-    return p + e
-
-nf = []
-for f in files:
-    nf.append (strip_extension (f, '.bib'))
-
-files = ','.join (nf)
-
-tmpfile = tempfile.mkstemp ('bib2html')[1]
-
-open (tmpfile + '.aux', 'w').write (r'''
-\relax 
-\citation{*}
-\bibstyle{html-%(style)s}
-\bibdata{%(files)s}''' % vars ()) 
-
-tmpdir = tempfile.gettempdir ()
-
-cmd = "TEXMFOUTPUT=%s bibtex %s" % (tmpdir, tmpfile)
-
-sys.stdout.write ("Invoking `%s'\n" % cmd)
-stat = os.system (cmd)
-if stat <> 0:
-    sys.exit(1)
-
-
-#TODO: do tex -> html on output 
-
-bbl = open (tmpfile + '.bbl').read ()
-
-open (output, 'w').write  (bbl)
-
-
-def cleanup (tmpfile):
-    for a in ['aux','bbl', 'blg']:
-        os.unlink (tmpfile + '.' + a)
-
-cleanup (tmpfile)
-
diff --git a/scripts/build/bib2texi.py b/scripts/build/bib2texi.py
new file mode 100644 (file)
index 0000000..51b7d7b
--- /dev/null
@@ -0,0 +1,78 @@
+#!@PYTHON@
+import os
+import sys
+import getopt
+import tempfile
+
+# usage:
+def usage ():
+    print 'usage: %s [-s style] [-o <outfile>] BIBFILES...'
+
+(options, files) = getopt.getopt (sys.argv[1:], 's:o:', [])
+
+output = 'bib.itexi'
+style = 'long'
+
+for (o,a) in options:
+    if o == '-h' or o == '--help':
+        usage ()
+        sys.exit (0)
+    elif o == '-s' or o == '--style':
+        style = a
+    elif o == '-o' or o == '--output':
+        output = a
+    else:
+        raise Exception ('unknown option: %s' % o)
+
+
+if style not in ['alpha','index','long','longp','long-pario','short','short-pario','split']:
+    sys.stderr.write ("Unknown style \`%s'\n" % style)
+
+if not files:
+   usage ()
+   sys.exit (2)
+
+
+def strip_extension (f, ext):
+    (p, e) = os.path.splitext (f)
+    if e == ext:
+        e = ''
+    return p + e
+
+nf = []
+for f in files:
+    nf.append (strip_extension (f, '.bib'))
+
+files = ','.join (nf)
+
+tmpfile = tempfile.mkstemp ('bib2texi')[1]
+
+open (tmpfile + '.aux', 'w').write (r'''
+\relax
+\citation{*}
+\bibstyle{texi-%(style)s}
+\bibdata{%(files)s}''' % vars ())
+
+tmpdir = tempfile.gettempdir ()
+
+cmd = "TEXMFOUTPUT=%s bibtex %s" % (tmpdir, tmpfile)
+
+sys.stdout.write ("Invoking `%s'\n" % cmd)
+stat = os.system (cmd)
+if stat <> 0:
+    sys.exit(1)
+
+
+#TODO: do tex -> itexi on output
+
+bbl = open (tmpfile + '.bbl').read ()
+
+open (output, 'w').write  (bbl)
+
+
+def cleanup (tmpfile):
+    for a in ['aux','bbl', 'blg']:
+        os.unlink (tmpfile + '.' + a)
+
+cleanup (tmpfile)
+
index d354f7cabdf03b4c55d44957d822c11cf55eb00d..40df423e95ad8b47ddb78966c0798460bafc1b45 100644 (file)
@@ -376,24 +376,35 @@ def make_manual_links(name, version, lang):
                 "http://lilypond.org",
                 mshort+getTrans(" (did not exist in 2.12)",lang))
             continue
-        make_ver_link(macroLang("manual"+name+mshort+'Pdf',lang),
-                  url + '.pdf',
-                  getTrans(manual.capitalize(),lang) + '.pdf')
-        make_ver_link(macroLang("manual"+name+mshort+'Split',lang),
-                  url + '/index.html',
-                  getTrans(manual.capitalize(),lang) +
-                  getTrans(' (split HTML)',lang))
-        make_ver_link(macroLang("manual"+name+mshort+'Big',lang),
-                  url + '-big-page.html',
-                  getTrans(manual.capitalize(),lang) +
-                  getTrans(' (big HTML)',lang))
        # this is stupid and I shouldn't have bothered trying
        # to support the 2.12 docs and it will be deleted once
        # 2.14 is out and the website won't be visible to users
         # until 2.14 is out.  -gp
         if (url.endswith('.html')):
+            make_ver_link(macroLang("manual"+name+mshort+'Pdf',lang),
+                      url,
+                      getTrans(manual.capitalize(),lang) + '.pdf')
+            make_ver_link(macroLang("manual"+name+mshort+'Split',lang),
+                      url,
+                      getTrans(manual.capitalize(),lang) +
+                      getTrans(' (split HTML)',lang))
+            make_ver_link(macroLang("manual"+name+mshort+'Big',lang),
+                      url,
+                      getTrans(manual.capitalize(),lang) +
+                      getTrans(' (big HTML)',lang))
             newurl = url
         else:
+            make_ver_link(macroLang("manual"+name+mshort+'Pdf',lang),
+                      url + '.pdf',
+                      getTrans(manual.capitalize(),lang) + '.pdf')
+            make_ver_link(macroLang("manual"+name+mshort+'Split',lang),
+                      url + '/index.html',
+                      getTrans(manual.capitalize(),lang) +
+                      getTrans(' (split HTML)',lang))
+            make_ver_link(macroLang("manual"+name+mshort+'Big',lang),
+                      url + '-big-page.html',
+                      getTrans(manual.capitalize(),lang) +
+                      getTrans(' (big HTML)',lang))
             newurl = url + '/index.html'
         make_ver_link(macroLang("manual"+name+mshort+'SplitNoName',lang),
                   newurl,
@@ -413,9 +424,21 @@ def make_regtest_links(name, version, lang):
     make_ver_link(macroLang("regtest"+name+"Xml", lang),
         url+"musicxml/collated-files.html",
         getTrans("MusicXML Regression tests for ", lang)+version)
+    make_ver_link(macroLang("regtest"+name+"Abc", lang),
+        url+"abc2ly/collated-files.html",
+        getTrans("abc2ly Regression tests for ", lang)+version)
+    make_ver_link(macroLang("regtest"+name+"LilypondBook", lang),
+        url+"lilypond-book/collated-files.html",
+        getTrans("lilypond-book Regression tests for ", lang)+version)
     make_ver_link(macroLang("regtest"+name+"XmlPdf", lang),
          url+"musicxml/collated-files.html",
         getTrans("PDF of MusicXML regtests for ", lang)+version)
+    make_ver_link(macroLang("regtest"+name+"AbcPdf", lang),
+         url+"abc2ly/collated-files.html",
+        getTrans("PDF of abc2ly regtests for ", lang)+version)
+    make_ver_link(macroLang("regtest"+name+"LilypondBookPdf", lang),
+         url+"lilypond-book/collated-files.html",
+        getTrans("PDF of lilypond-book regtests for ", lang)+version)
 
 def make_doctarball_links(name, version, lang):
     url = depth + "download/binaries/documentation/lilypond-"
index f2d7931a000b321921788121af02877e548ba24c..5267a8582807ae4f5df29d494d0511922382df6b 100644 (file)
@@ -188,6 +188,13 @@ _uacct = "UA-68969-1";
 urchinTracker();
 </script>
 """);
+        #### add google tracker goals
+        if (line.find("href=\"http://download.linuxaudio.org") >= 0):
+            # TODO: more ugly hardcoding to make releases hard. :(
+            if (line.find('2.12') >= 0):
+                line = line.replace('a href=', 'a onClick=\"javascript:urchinTracker(\'/download/v2.12\');\" href=')
+            elif (line.find('2.13') >= 0):
+                line = line.replace('a href=', 'a onClick=\"javascript:urchinTracker(\'/download/v2.13\');\" href=')
         ### add language selection footer
         if (line.find("<div id=\"verifier_texinfo\">") >= 0):
             outfile.write("<div id=\"footer\">\n")
index 7e8dbbae023eb40083e442800ccf8fc37b168798..2f4b807080b82b615973bef22e00988dd4697d24 100644 (file)
@@ -1409,7 +1409,7 @@ def musicxml_accordion_to_markup (mxl_event):
     if high:
         commandname += "H"
         command += """\\combine
-          \\raise #2.5 \\musicglyph #\"accordion.accDot\"
+          \\raise #2.5 \\musicglyph #\"accordion.dot\"
           """
     middle = mxl_event.get_maybe_exist_named_child ('accordion-middle')
     if middle:
@@ -1423,32 +1423,32 @@ def musicxml_accordion_to_markup (mxl_event):
         if txt == 3:
             commandname += "MMM"
             command += """\\combine
-          \\raise #1.5 \\musicglyph #\"accordion.accDot\"
+          \\raise #1.5 \\musicglyph #\"accordion.dot\"
           \\combine
-          \\raise #1.5 \\translate #(cons 1 0) \\musicglyph #\"accordion.accDot\"
+          \\raise #1.5 \\translate #(cons 1 0) \\musicglyph #\"accordion.dot\"
           \\combine
-          \\raise #1.5 \\translate #(cons -1 0) \\musicglyph #\"accordion.accDot\"
+          \\raise #1.5 \\translate #(cons -1 0) \\musicglyph #\"accordion.dot\"
           """
         elif txt == 2:
             commandname += "MM"
             command += """\\combine
-          \\raise #1.5 \\translate #(cons 0.5 0) \\musicglyph #\"accordion.accDot\"
+          \\raise #1.5 \\translate #(cons 0.5 0) \\musicglyph #\"accordion.dot\"
           \\combine
-          \\raise #1.5 \\translate #(cons -0.5 0) \\musicglyph #\"accordion.accDot\"
+          \\raise #1.5 \\translate #(cons -0.5 0) \\musicglyph #\"accordion.dot\"
           """
         elif not txt <= 0:
             commandname += "M"
             command += """\\combine
-          \\raise #1.5 \\musicglyph #\"accordion.accDot\"
+          \\raise #1.5 \\musicglyph #\"accordion.dot\"
           """
     low = mxl_event.get_maybe_exist_named_child ('accordion-low')
     if low:
         commandname += "L"
         command += """\\combine
-          \\raise #0.5 \musicglyph #\"accordion.accDot\"
+          \\raise #0.5 \musicglyph #\"accordion.dot\"
           """
 
-    command += "\musicglyph #\"accordion.accDiscant\""
+    command += "\musicglyph #\"accordion.discant\""
     command = "\\markup { \\normalsize %s }" % command
     # Define the newly built command \accReg[H][MMM][L]
     additional_definitions[commandname] = "%s = %s" % (commandname, command)