]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge remote branch 'origin' into release/unstable
authorGraham Percival <graham@percival-music.ca>
Tue, 30 Aug 2011 05:39:16 +0000 (06:39 +0100)
committerGraham Percival <graham@percival-music.ca>
Tue, 30 Aug 2011 05:39:16 +0000 (06:39 +0100)
194 files changed:
Documentation/changes.tely
Documentation/contributor/website-work.itexi
Documentation/de/essay/engraving.itely
Documentation/de/essay/literature.itely
Documentation/de/extending/programming-interface.itely
Documentation/de/extending/scheme-tutorial.itely
Documentation/de/included/authors.itexi
Documentation/de/included/generating-output.itexi
Documentation/de/included/helpus.itexi
Documentation/de/learning/common-notation.itely
Documentation/de/learning/fundamental.itely
Documentation/de/learning/preface.itely
Documentation/de/learning/templates.itely
Documentation/de/learning/tutorial.itely
Documentation/de/learning/tweaks.itely
Documentation/de/notation/ancient.itely
Documentation/de/notation/changing-defaults.itely
Documentation/de/notation/cheatsheet.itely
Documentation/de/notation/chords.itely
Documentation/de/notation/contemporary.itely
Documentation/de/notation/editorial.itely
Documentation/de/notation/expressive.itely
Documentation/de/notation/keyboards.itely
Documentation/de/notation/notation.itely
Documentation/de/notation/percussion.itely
Documentation/de/notation/repeats.itely
Documentation/de/notation/rhythms.itely
Documentation/de/notation/spacing.itely
Documentation/de/notation/specialist.itely
Documentation/de/notation/text.itely
Documentation/de/notation/unfretted-strings.itely
Documentation/de/notation/vocal.itely
Documentation/de/notation/wind.itely
Documentation/de/notation/world.itely
Documentation/de/search-box.ihtml
Documentation/de/texidocs/alternative-breve-note.texidoc
Documentation/de/usage/external.itely
Documentation/de/usage/lilypond-book.itely
Documentation/de/usage/running.itely
Documentation/de/usage/suggestions.itely
Documentation/de/usage/updating.itely
Documentation/de/web/community.itexi
Documentation/de/web/download.itexi
Documentation/de/web/introduction.itexi
Documentation/de/web/manuals.itexi
Documentation/es/notation/ancient.itely
Documentation/es/notation/keyboards.itely
Documentation/extending/programming-interface.itely
Documentation/fr/essay/engraving.itely
Documentation/fr/essay/literature.itely
Documentation/fr/included/generating-output.itexi
Documentation/fr/included/helpus.itexi
Documentation/fr/learning/common-notation.itely
Documentation/fr/learning/fundamental.itely
Documentation/fr/learning/preface.itely
Documentation/fr/learning/templates.itely
Documentation/fr/learning/tutorial.itely
Documentation/fr/learning/tweaks.itely
Documentation/fr/notation/ancient.itely
Documentation/fr/notation/cheatsheet.itely
Documentation/fr/notation/editorial.itely
Documentation/fr/notation/expressive.itely
Documentation/fr/notation/fretted-strings.itely
Documentation/fr/notation/input.itely
Documentation/fr/notation/keyboards.itely
Documentation/fr/notation/notation-appendices.itely
Documentation/fr/notation/notation.itely
Documentation/fr/notation/spacing.itely
Documentation/fr/notation/specialist.itely
Documentation/fr/notation/unfretted-strings.itely
Documentation/fr/notation/wind.itely
Documentation/fr/texidocs/changing-fret-orientations.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/chord-glissando-in-tablature.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/chordchanges-for-fretboards.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/customizing-fretboard-fret-diagrams.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/dynamics-custom-text-spanner-postfix.texidoc
Documentation/fr/texidocs/fingerings,-string-indications,-and-right-hand-fingerings.texidoc
Documentation/fr/texidocs/fretboards-alternate-tables.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/fretted-string-harmonics-in-tablature.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/modifying-default-values-for-articulation-shorthand-notation.texidoc
Documentation/fr/texidocs/open-string-harmonics-in-tablature.texidoc [new file with mode: 0644]
Documentation/fr/texidocs/slides-in-tablature.texidoc [new file with mode: 0644]
Documentation/fr/usage/external.itely
Documentation/fr/usage/running.itely
Documentation/fr/usage/suggestions.itely
Documentation/fr/usage/updating.itely
Documentation/fr/web/community.itexi
Documentation/fr/web/download.itexi
Documentation/fr/web/introduction.itexi
Documentation/fr/web/manuals.itexi
Documentation/it/included/generating-output.itexi [new file with mode: 0644]
Documentation/it/included/helpus.itexi [new file with mode: 0644]
Documentation/it/web.texi
Documentation/it/web/community.itexi
Documentation/it/web/download.itexi
Documentation/it/web/introduction.itexi
Documentation/it/web/manuals.itexi
Documentation/it/web/news-front.itexi [deleted file]
Documentation/learning/tweaks.itely
Documentation/notation/ancient.itely
Documentation/notation/changing-defaults.itely
Documentation/notation/keyboards.itely
Documentation/snippets/adding-a-figured-bass-above-or-below-the-notes.ly
Documentation/snippets/adding-orchestral-cues-to-a-vocal-score.ly
Documentation/snippets/ancient-fonts.ly
Documentation/snippets/changing-a-single-notes-size-in-a-chord.ly
Documentation/snippets/clip-systems.ly
Documentation/snippets/controlling-tuplet-bracket-visibility.ly
Documentation/snippets/displaying-complex-chords.ly
Documentation/snippets/dynamics-custom-text-spanner-postfix.ly
Documentation/snippets/guitar-slides.ly
Documentation/snippets/lyrics-alignment.ly
Documentation/snippets/modifying-default-values-for-articulation-shorthand-notation.ly
Documentation/snippets/new/ancient-fonts.ly [new file with mode: 0644]
Documentation/snippets/new/displaying-complex-chords.ly
Documentation/snippets/new/guitar-slides.ly
Documentation/snippets/new/unfretted-headword.ly
Documentation/snippets/preventing-extra-naturals-from-being-automatically-added.ly
Documentation/snippets/unfretted-headword.ly
Documentation/web/ly-examples/granados.ly
input/regression/ambitus-with-ligature.ly [deleted file]
input/regression/beam-skip.ly [deleted file]
input/regression/book-label-no-segfault.ly [deleted file]
input/regression/bookpart-variable.ly [deleted file]
input/regression/color.ly
input/regression/display-lily-tests.ly
input/regression/flags-default.ly
input/regression/flags-in-scheme.ly
input/regression/flags-straight-stockhausen-boulez.ly
input/regression/flags-straight.ly
input/regression/footnote-auto-numbering-page-reset.ly
input/regression/footnote-auto-numbering.ly
input/regression/footnote-break-visibility.ly
input/regression/footnote-footer-padding.ly
input/regression/footnote-spanner.ly
input/regression/footnote.ly
input/regression/graphviz.ly
input/regression/grid-lines.ly
input/regression/les-nereides.ly
input/regression/metronome-multimeasure-rest-no-segfault.ly [deleted file]
input/regression/mozart-hrn3-defs.ily
input/regression/page-breaking-end-of-score.ly [new file with mode: 0644]
input/regression/quote-overrides.ly
input/regression/segfaults-fixed.ly [new file with mode: 0644]
input/regression/skiptypesetting-all-true.ly [deleted file]
input/regression/skiptypesetting-multimeasurerest.ly [deleted file]
input/regression/stem-length-estimation.ly
input/regression/stem-length-override.ly [new file with mode: 0644]
input/regression/stem-pure-height-beamed.ly [new file with mode: 0644]
lily/beam-quanting.cc
lily/beam.cc
lily/constrained-breaking.cc
lily/dot-column.cc
lily/flag.cc [new file with mode: 0644]
lily/include/item.hh
lily/include/lily-lexer.hh
lily/include/lily-parser.hh
lily/include/paper-column-engraver.hh
lily/include/stem-tremolo.hh
lily/include/stem.hh
lily/item.cc
lily/lexer.ll
lily/lily-parser-scheme.cc
lily/lily-parser.cc
lily/note-spacing.cc
lily/page-breaking.cc
lily/page-layout-problem.cc
lily/paper-column-engraver.cc
lily/parser.yy
lily/rhythmic-column-engraver.cc
lily/staff-spacing.cc
lily/stem-engraver.cc
lily/stem-tremolo.cc
lily/stem.cc
lily/tie-formatting-problem.cc
lily/tuplet-bracket.cc
ly/engraver-init.ly
ly/grace-init.ly
ly/gregorian.ly
ly/music-functions-init.ly
ly/paper-defaults-init.ly
ly/property-init.ly
ly/string-tunings-init.ly
mf/feta-scripts.mf
scm/define-grob-interfaces.scm
scm/define-grob-properties.scm
scm/define-grobs.scm
scm/define-markup-commands.scm
scm/define-music-properties.scm
scm/flag-styles.scm
scm/music-functions.scm
scm/output-lib.scm
scm/parser-ly-from-scheme.scm
scripts/build/lys-to-tely.py

index f5e4f151d20f1aa5ac265c57e2ae204137f15365..2d8a66eb2363653f5439210f689f603b87e3b6da 100644 (file)
@@ -61,6 +61,16 @@ which scares away people.
 
 @end ignore
 
+@item
+The construct @code{#@{ @dots{} #@}} can now be used not just for
+constructing sequential music lists, but also for single music events,
+void music expressions, post events, markups (mostly freeing users from
+having to use the @code{markup} macro), markup lists, number
+expressions, context definitions and modifications, and a few other
+things.  If it encloses nothing or only a single music event, it no
+longer returns a sequential music list but rather a void music
+expression or just the music event itself, respectively.
+
 @item
 New command-line option @option{--loglevel=@var{level}} to control how much output
 LilyPond creates. Possible values are ERROR, WARN, BASIC_PROGRESS, PROGRESS, DEBUG.
index c356e1146bd5be4aa5918507cdcae1ffc83ee5b2..4e70880e9daadc9e6e0180c020098bd89abf05fe 100644 (file)
@@ -58,6 +58,86 @@ existing website texinfo files.
 @node Uploading and security
 @section Uploading and security
 
+@subheading Building the website from scratch for local checking
+
+Initial setup:
+
+Create directories:
+
+@example
+$HOME/lilypond/
+$HOME/lilypond/media/
+$HOME/lilypond/trusted-scripts/
+@end example
+
+To reduce the CPU burden on the shared host (as well as some
+security concerns), the 'Documentation/pictures/' and
+'Documentation/web/ly-examples/' directories are **not** compiled.
+We will do this ourselves right now.
+
+Go to your lilypond build directory.  make doc.
+
+Set up some variables (you'll only do this once:)
+
+@example
+BUILD_DIR=$HOME/lilypond-git
+PICS=$BUILD_DIR/Documentation/pictures/
+EXAMPLES=$BUILD_DIR/Documentation/web/ly-examples/
+@end example
+
+Copy files over:
+
+@example
+cp -r $PICS $HOME/lilypond/media/pictures
+cp -r $EXAMPLES $HOME/lilypond/media/ly-examples
+@end example
+
+Get the scripts you need.  First define these variables:
+
+@example
+GIT=$HOME/lilypond-git
+DEST=$HOME/lilypond/trusted-scripts
+@end example
+
+Then do the copying:
+
+@smallexample
+cp $GIT/make/website.make $DEST/website.make
+cp $GIT/Documentation/lilypond-texi2html.init $DEST/lilypond-texi2html.init
+cp $GIT/scripts/build/extract_texi_filenames.py  $DEST/extract_texi_filenames.py
+cp $GIT/scripts/build/create-version-itexi.py $DEST/create-version-itexi.py
+cp $GIT/scripts/build/create-weblinks-itexi.py $DEST/create-weblinks-itexi.py
+cp $GIT/scripts/build/mass-link.py $DEST/mass-link.py
+cp $GIT/scripts/build/website_post.py $DEST/website_post.py
+cp $GIT/scripts/build/bib2texi.py $DEST/bib2texi.py
+cp $GIT/Documentation/web/server/lilypond.org.htaccess $DEST/lilypond.org.htaccess
+cp $GIT/Documentation/web/server/website-dir.htaccess $DEST/website-dir.htaccess
+@end smallexample
+
+Delete your build directory (or maybe just rename your build
+directory to build-old).
+
+@example
+cd $HOME/lilypond
+@end example
+
+Run
+
+@example
+make -f ../lilypond-git/make/website.make WEBSITE_ONLY_BUILD=1 \
+  TOP_SRC_DIR=$HOME/lilypond-git/ \
+  TEXI2HTML_PROGRAM=texi2html \
+  website
+@end example
+
+The website should be at:
+
+@example
+$HOME/lilypond/out-website/website/index.html
+@end example
+
+@subheading Building the online website
+
 The website is generated hourly by user @code{graham} the host
 @code{lilypond.org}.  For security reasons, we do not use the
 makefiles and scripts directly from git; copies of the relevant
index 501ea1820a03d3bca91f1db1b3db7c07c3bacaeb..2e3c1a4c3cf5220405e6590d3ddc9089cad19c86 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 
 @ignore
-    Translation of GIT committish: a463d80d4be008ce05b12de86fc21f2b7c1c120f
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
 
     When revising a translation, copy the HEAD committish of the
index 0bfaeb9e4a324d3e89b4f3aa5eb667954c20f6c4..aa1910317b1b579c3a62e679bb38e2154495a3e2 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index cc2d364fe2e243458c46d46efdd177120a347a22..257ec972a64fb0d90f1dbfe8503dbbb25cbfe992 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 
 @ignore
-    Translation of GIT committish: a463d80d4be008ce05b12de86fc21f2b7c1c120f
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -72,7 +72,17 @@ wobei
 
 @item @var{TypN?}
 @tab ein Scheme-Typenprädikat (engl. type predicate), für welches
-@code{@var{ArgN}} @code{#t} ausgeben muss
+@code{@var{ArgN}} @code{#t} ausgeben muss.  Einige dieser Prädikate
+werden durch den Parser gesondert erkannt, sodass die entsprechenden
+Werte als LilyPond-Syntx gelesen werden und nicht als Scheme-Syntax.
+Diese Prädikate sind gegenwärtig @code{ly:music?}, @code{markup?}, @code{ly:pitch?}
+und @code{ly:duration?}.  Nicht alle Kombinationen sind erlaubt:
+man kann z. B. nicht eine Dauer nach den Noten suchen, denn Noten
+können @emph{optional} mit einer Dauer enden.
+
+Wenn Sie wirklich einige dieser Elemente als Scheme- und nicht als
+LilyPond-Ausdruck einsetzen wollen, können Sie sie in einen Aufruf
+von @code{ly:export} einfügen.
 
 @item @var{...Noten...}
 @tab ein musikalischer Ausdruck, optional in Scheme geschrieben, mit allem
index 4e1a55f8e401f41fb1c0f0f7ed4f206061e10985..af64437be2c8e2d5fc063015b79b36b0650a3ae5 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: 70aaf0159410169678942abd39eb13c876521437
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index a589dca895bddf6693068cf879c560fcbf57ef31..540ecb3bd3f0fa5c3054b12de9e766a13ae5b4ad 100644 (file)
@@ -1,13 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @c This file is part of community.itexi and ../topdocs/AUTHORS.itexi
-@ignore
-    Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422
-
-    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.
-
 
+@ignore
 
   This file lists authors of LilyPond, and what they wrote.  Each
   list is sorted alphabetically by surname.  This file lists people
 
 @itemize
 
+@item Bertrand Bordage:
+@email{bordage.bertrand@@gmail.com},
+Core developer, font designer
+
 @item Trevor Daniels:
 @email{t.daniels@@treda.co.uk},
 Assistant documentation editor
@@ -154,29 +152,8 @@ Core developer, Schemer extraordinaire
 
 @c use commas not colons
 
-Sven Axelsson,
-Pál Benkő,
-Frédéric Bron,
-Hajo Dezelski,
-Richard Gay,
-Keith OHara,
-Andrew Hawryluk,
-Christian Hitz,
-Marc Hohl,
-Henning Hraban Ramm,
-Ian Hulin,
-Michael Käppler,
-Marek Klein,
-Kieren MacMillan,
-Thomas Morgan,
-Benjamin Peterson,
-Nathan Reed,
-Julien Rioux,
-Boris Shingarov,
-Patrick Schmidt,
-Owen Tuz,
-Andrew Wilson,
-Rodolfo Zitellini
+Karin Hoethker,
+Jan Warchoł
 
 @c no comma for last entry
 
@@ -188,11 +165,6 @@ Rodolfo Zitellini
 
 @c use commas not colons
 
-Keith OHara,
-Marc Hohl,
-Alexander Kobel,
-Carsten Steger
-
 @c no comma for last entry
 
 @end macro
@@ -203,13 +175,7 @@ Carsten Steger
 
 @c use commas not colons
 
-Colin Campbell,
-Andrew Hawryluk,
-James Lowe,
-Mike Moral,
-Ralph Palmer,
-David Pounder,
-Patrick Schmidt
+James Lowe
 
 @c no comma for last entry
 
@@ -218,12 +184,9 @@ Patrick Schmidt
 
 @macro bugsquadCurrent
 
-James E. Bailey,
 Colin Campbell,
 Phil Holmes,
-Urs Liska,
-Ralph Palmer,
-Kieren MacMillan,
+Derek Klinge,
 Dmytro O. Redchuk
 
 @c no comma for last entry
@@ -235,7 +198,9 @@ Dmytro O. Redchuk
 
 @c use commas not colons
 
-Christian Hitz
+Colin Campbell,
+Christian Hitz,
+Phil Holmes
 
 @c no comma for last entry
 
@@ -247,14 +212,6 @@ Christian Hitz
 
 @c use commas not colons
 
-Federico Bruni,
-Dénes Harmath,
-Jean-Charles Malahieude,
-@c @email{lolyfan@@wanadoo.fr},
-Tineke de Munnik,
-Till Paala,
-Ralf Wildenhues,
-Yoshiki Sawada
 
 @c no comma for last entry
 
@@ -270,51 +227,67 @@ Yoshiki Sawada
 Erlend Aasland,
 Maximilian Albert,
 Guido Amoruso,
+Sven Axelsson,
 Kristof Bastiaensen,
 Pál Benkő,
-@c @email{benkop@@freestart.hu},
+Bertrand Bordage,
+Frédéric Bron,
 Juliusz Chroboczek,
-@c @email{jch@@pps.jussieu.fr},
+Peter Chubb,
 Angelo Contardi,
+Vicente Solsona Della,
+Hajo Dezelski,
+Michael Welsh Duggan,
 David Feuer,
-@c @email{david.feuer@@gmail.com},
 Bertalan Fodor,
+Richard Gay,
 Mathieu Giraud,
+Lisa Opus Goldstein,
 Yuval Harel,
+Andrew Hawryluk,
+Christian Hitz,
+Marc Hohl,
+Ian Hulin,
 Bernard Hurley,
-@c @email{bernard@@fong-hurley.org.uk},
 Yoshinobu Ishizaki,
 Chris Jackson,
-@c @email{chris@@fluffhouse.org.uk},
 David Jedlinsky,
 Heikki Junes,
-@c @email{heikki.junes@@hut.fi},
+Michael Käppler,
+Marek Klein,
 Michael Krause,
-@c @email{m.krause@@tu-harburg.de},
 Jean-Baptiste Lamy,
-@c @email{jiba@@tuxfamily.org},
 Jonatan Liljedahl,
 Peter Lutek,
+Kieren MacMillan,
 Hendrik Maryns,
+Thomas Morgan,
 Joe Neeman,
-@c @email{joeneeman@@gmail.com},
 Matthias Neeracher,
+Keith OHara,
 Tatsuya Ono,
-Lisa Opus Goldstein,
+Benjamin Peterson,
 Guy Gascoigne-Piggford,
+Henning Hraban Ramm,
+Nathan Reed,
+Julien Rioux,
 Stan Sanderson,
-Edward Sanford Sutton,
 Andreas Scherer,
 Johannes Schindelin,
+Patrick Schmidt,
+Boris Shingarov,
 Kim Shrier,
-Vicente Solsona Della,
+Edward Sanford Sutton,
 David Svoboda,
+Owen Tuz,
 Sebastiano Vigna,
+Jan Warchoł,
 Arno Waschk,
-Michael Welsh Duggan,
 John Williams,
+Andrew Wilson,
 Milan Zamazal,
-Rune Zedeler
+Rune Zedeler,
+Rodolfo Zitellini
 
 @c no comma for last entry
 
@@ -327,11 +300,12 @@ Rune Zedeler
 @c use commas not colons
 
 Tom Cato Amundsen,
-@c @email{tca@@gnu.org},
+Marc Hohl,
 Chris Jackson,
-@c @email{chris@@fluffhouse.org.uk},
+Alexander Kobel,
+Keith OHara,
+Carsten Steger
 Arno Waschk,
-@c @email{arno@@arnowaschk.de},
 Rune Zedeler
 
 @c no comma for last entry
@@ -345,31 +319,34 @@ Rune Zedeler
 @c use commas not colons
 
 Erlend Aasland,
-Trevor Bača,
+Trevor Bača
 Alard de Boer,
+Colin Campbell,
 Jay Hamilton,
-Andrew Hawryluk,
 Joseph Harfouch,
+Andrew Hawryluk,
+Andrew Hawryluk,
 Cameron Horsburgh,
 Geoff Horton,
 Ian Hulin,
 Heikki Junes,
-@c @email{heikki.junes@@hut.fi},
 Kurtis Kroon,
+James Lowe,
 Dave Luttinen,
 Kieren MacMillan,
 Christian Mondrup,
-@c @email{scancm@@biobase.dk},
+Mike Moral,
 Eyolf Østrem,
 Ralph Palmer,
+Ralph Palmer,
 François Pinard,
-@c @email{pinard@@iro.umontreal.ca},
-@c @uref{http://pinard.progiciels-bpi.ca/},
-Eduardo Vieira,
+David Pounder,
 Michael Rasmussen,
 Till Rettig,
+Patrick Schmidt,
 Carl D. Sorensen,
 Anh Hai Trinh,
+Eduardo Vieira,
 Rune Zedeler
 
 @c no comma for last entry
@@ -379,7 +356,11 @@ Rune Zedeler
 
 @macro bugsquadPrevious
 
-@c nobody here yet
+@c use commas not colons
+James E. Bailey,
+Urs Liska,
+Kieren MacMillan,
+Ralph Palmer
 
 @c no comma for last entry
 @end macro
@@ -389,13 +370,10 @@ Rune Zedeler
 @c use commas not colons
 
 Anthony Fok,
-@c @email{foka@@debian.org},
+Christian Hitz,
 Chris Jackson,
-@c @email{chris@@fluffhouse.org.uk},
 Heikki Junes,
-@c @email{heikki.junes@@hut.fi},
 David Svoboda
-@c @email{svoboda@@cmu.edu}
 
 @c no comma for last entry
 
@@ -407,44 +385,42 @@ David Svoboda
 
 @c use commas not colons
 
-Frédéric Chiasson,
-Abel Cheung,
 Alard de Boer,
+Federico Bruni,
+Abel Cheung,
+Frédéric Chiasson,
 Simon Dahlbacka,
 Orm Finnendahl,
 David González,
 Nicolas Grandclaude,
-@c @email{ngclaude@@123mail.org},
+Dénes Harmath,
 Damien Heurtebise,
-Matthieu Jacquot,
 Bjoern Jacke,
-@c @email{bjoern.jacke@@gmx.de},
+Matthieu Jacquot,
 Neil Jerram,
-@c @email{nj104@@cus.cam.ac.uk},
 Heikki Junes,
-@c @email{heikki.junes@@hut.fi},
 Nicolas Klutchnikoff,
 Jean-Charles Malahieude,
-@c @email{lolyfan@@wanadoo.fr},
+Jean-Charles Malahieude,
 Adrian Mariano,
 Christian Mondrup,
 Tineke de Munnik,
-@c @email{tdm@@dds.nl},
+Tineke de Munnik,
 Steven Michael Murphy,
+Till Paala,
 François Pinard,
 Gauvain Pocentek,
-@c @email{gauvainpocentek@@yahoo.fr},
 Till Rettig,
 Ludovic Sardain,
-@c @email{ludovicsardain@@gmail.com},
+Yoshiki Sawada
 Yoshiki Sawada,
 Thomas Scharkowski,
 Clytie Siddall,
 August S. Sigov,
-@c @email{august@@infran.ru},
 Roland Stigge,
 Risto Vääräniemi,
 Andrea Valle,
+Ralf Wildenhues,
 Olcay Yıldırım
 
 @c no comma for last entry
index 52a41af797a282a3b42cf7b8d36a7b48a5abb51a..1eff41a4a8bb70f747576948a18196105f274715 100644 (file)
@@ -3,7 +3,7 @@
 @c learning/tutorial.itely
 
 @ignore
-    Translation of GIT committish: ab9e3136d78bfaf15cc6d77ed1975d252c3fe506
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -197,7 +197,9 @@ eine Datei zu kompilieren.}
 Erstellen Sie eine Text-Datei mit dem Namen @file{test.ly} und
 geben Sie folgenden Text ein:
 
+@c double \\ required because this is inside a macro!
 @example
+\\version "@w{@versionStable{}}"
 @{
   c' e' g' e'
 @}
@@ -218,7 +220,7 @@ Sie werden ungefähr folgende Meldungen sehen:
 
 @example
 lilypond test.ly
-GNU LilyPond @version{}
+GNU LilyPond  @w{@versionStable{}}
 »test.ly« wird verarbeitet
 Analysieren...
 Interpretation der Musik...
index 0b61134a94a9ad913f9ba38021095ec9b40d340c..b64ae2f4a42b8742b1921fc355bfe4492ddca1f4 100644 (file)
@@ -3,7 +3,7 @@
 @c contributor/introduction.itely
 
 @ignore
-    Translation of GIT committish:  a463d80d4be008ce05b12de86fc21f2b7c1c120f
+    Translation of GIT committish:  8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -141,7 +141,7 @@ angepasste) Syntax für die absehbare Zukunft unverändert bleiben.
 Es wird eine Zeit der ausführlichen Diskussionen geben, damit
 die endgültigen Eingabespezifikationen festgelegt werden können.
 
-@warning{GLISS beginnt kurz nachdem 2.14 veröffentlicht wird.}
+@warning{GLISS beginnt kurz nach der Veröffentlichung von 2.16.}
 
 
 @subsubheading GOP (Grand Organizing Project)
@@ -162,8 +162,6 @@ völlig umzugestalten.  Das Ziel ist es vielmehr, uns eine stabile
 Basis zu geben, sodass große Änderungen in der Zukunft einfacher
 bewerkstelligt werden können.
 
-@warning{GOP beginnt kurz nachdem 2.14 veröffentlicht wird.}
-
 @end macro
 
 
index c0dc4dfdea42babdd8f73ee497802e31272cd90e..2bd5c8b8dedef6992c290ed0299a88156d569ec2 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: 3c814eb917c15f6f0d64f64f58046dd7b119e359
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 7cdb97f2e5486a5317327e6a97abd6ccd1c4a319..49edb6e90e51c1576a5f2fdfb1d3665733706981 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: a463d80d4be008ce05b12de86fc21f2b7c1c120f
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index fd3370e16e5d30358bd8fb311e32535d5b9012bc..dc02543c7b5032fc7db920b8d2fef389eb0cbfe7 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 30e430238502d5528994309b5d591712abeda748..c09b31d07cb89de3467a9bf861225c61f1ccf766 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 843d8b29b355b2986ff74a057a8bed52d951de93..98bee1c2eb651460a657df21ec354ac93459abda 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 93fd3a75e23b5b5b27a38d8fc2cbc0e9c830a781..d7706a10e75fc7ac996d08c64e16e87e7011f142 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -3093,22 +3093,29 @@ r4
 \acciaccatura e8\( d8 c~ c d c d\)
 @end lilypond
 
-Hier noch ein weiteres Beispiel aus der Einleitung von Chopins
-Prelude Op. 28 Nr. 2, das untere System.  Wie zu sehen ist,
-stößt der Balken mit den oberen Noten zusammen:
+Hier noch ein weiteres Beispiel.  Wie zu sehen ist,
+stößt der Balken mit den oberen Bögen zusammen:
 
 @lilypond[quote,verbatim,fragment,ragged-right]
 {
-  \clef "bass"
-  << { b,8 ais, b, g, } \\ { e, g e, g } >>
-  << { b,8 ais, b, g, } \\ { e, g e, g } >>
+  \time 4/2
+  <<
+    { c'1 ~ c'2. e'8 f' }
+    \\
+    { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
+  >>
+  <<
+    { c'1 ~ c'2. e'8 f' }
+    \\
+    { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
+  >>
 }
 @end lilypond
 
 @noindent
 Das kann manuell gelöst werden, indem beide Enden des Balkens
-von ihrer Position 2 Notenlinienabstände über der Mittellinie
-hochgeschoben werden, etwa auf 3:
+von ihrer Position 1.81 Notenlinienabstände unter der Mittellinie
+hochgeschoben werden, etwa auf 1:
 
 @cindex Balken, Beispiel zur Veränderung
 @cindex positions-Eigenschaft, Beispiel
@@ -3116,20 +3123,26 @@ hochgeschoben werden, etwa auf 3:
 
 @lilypond[quote,verbatim,fragment,ragged-right]
 {
-  \clef "bass"
+  \time 4/2
   <<
-    \override Beam #'positions = #'(3 . 3)
-    { b,8 ais, b, g, }
-  \\
-    { e, g e, g }
+    { c'1 ~ c'2. e'8 f' }
+    \\
+    {
+      \override Beam #'positions = #'(-1 . -1)
+      e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g''
+    }
+  >>
+  <<
+    { c'1 ~ c'2. e'8 f' }
+    \\
+    { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
-  << { b,8 ais, b, g, } \\ { e, g e, g } >>
 }
 @end lilypond
 
 @noindent
-Hier ist zu beobachten, dass die Veränderung sich auch auf die
-weiteren Achtelbalken der ersten Stimme auswirkt, während sie keine
+Hier ist zu beobachten, dass die Veränderung sich auch auf den
+die erste Stimme des weiteren Taktes mit Achtelnoten auswirkt, während sie keine
 Auswirkung auf die Balken der zweiten Stimme hat.
 
 @subheading force-hshift (vertikale Verschiebunseigenschaft)
index cf5452d03d7389b847d401d726ae8ddd1b12173c..185c2b1267bb89807362bd540a8239624f25a38a 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -762,7 +762,7 @@ werden.  Neben dem Standardstil (@code{default}) ist
 nur (@code{mensural}) unterstützt.
 
 @lilypond[quote,fragment,ragged-right,verbatim]
-\override Stem #'flag-style = #'mensural
+\override Flag #'style = #'mensural
 \override Stem #'thickness = #1.0
 \override NoteHead #'style = #'mensural
 \autoBeamOff
index b0c6af9e1f18689edf4506b66f812845dd9d851c..a2e5c99273c6361a40d719a08fdd7d2f33fff292 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index d9bc02f8c3da4712209e07321d41dd1ea3a1695e..f8c9e10d9798b21ba58abd865f7e43c4ae67c5c5 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: 70aaf0159410169678942abd39eb13c876521437
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 6fc6c6b7f0eda823674e2183e4f71f23806f743e..2a293342be1f98130a737a16155bafba2bfde9ea 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 4bde7645c9735ba334b2be6744f5399c3e3cbf2b..6c0d1192974de5352713595586b0cc16b4fd9d7a 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 767ce1e99686c028b4dad3835ded78864430f405..994a8372f57caeb718b3413fcfd76f1d6ac623d2 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @ignore
-    Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 7fe74cf40c77d6e2435eec2f9dc500bd0d1bdc8a..72f940356e8ba40417564e30fb68ea7af0065683 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @ignore
-    Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index ba7f8924e7f3704c07a963a6a8e697b3e55c1fc1..6032d2eb4904d4008522d62e8bb449f245b62b42 100644 (file)
@@ -462,7 +462,7 @@ Hälsen, die nach unten zeigen.
         % extend the stems to reach the other staff
         \override Stem #'length = #12
         % do not print extra flags
-        \override Stem #'flag-style = #'no-flag
+        \override Flag #'style = #'no-flag
         % prevent beaming as needed
         a8 g4 f8 f bes\noBeam g4
       }
index 6e629c02d517cc6a2c052174cb6e44e96be7d1b7..4e097a49d2f5df4aeb19fef29839d3c02df129e2 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @ignore
-    Translation of GIT committish: 70aaf0159410169678942abd39eb13c876521437
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index a6272a937b41b5512a6dab7f86501fde9f90f181..9842e8b167671b861a26fa5ca5ad2bdb6617b63b 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 44cc2e5d2014430ba1e5197b0825be0d61eaa9c2..c3515bdf9cb824c9de4350345c0ff157fd9bfc70 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @ignore
-    Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 3c186e57316acf858c59daadd132af838cc42fdb..df3ed39b8c97d377fc0d9e4332bf9bcc98bc76b1 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @ignore
-    Translation of GIT committish: ac3dd3ad38528113d97f6a8a7b81751c328f1c36
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -1633,7 +1633,7 @@ auswirkt.
     \time 3/4
     \set Staff.timeSignatureFraction = #'(9 . 8)
     \scaleDurations #'(2 . 3)
-    \repeat unfold 6 { c8[ c c] }
+      \repeat unfold 6 { c8[ c c] }
   }
   \new Staff {
     \time 3/4
index 240cadc278e3ad8e46b5e9a52d42b524796f3071..d2b00f8f8c30208a7394a08ceb2370ce3b07c575 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: ac3dd3ad38528113d97f6a8a7b81751c328f1c36
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 5e4fc84f7b8fb541af786d7843a8805f4f7c90e0..aacdc0ee2f031b69b632b89f84471af98a4675e0 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @ignore
-    Translation of GIT committish: 70aaf0159410169678942abd39eb13c876521437
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 1075b871e022107a8470f294a75eba8e7bb091e4..fa93bdb9be5058633e38d596c36a5a7dc3406089 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 749130d2dc859551d1aefece2cf84f2a7c65e1b1..6a98f1f2454c6c50a8ed55267468e0957c1ae8eb 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: aa632c095138aaaa0f50f73c90e72efb4b61d745
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 71af9dd1eb6c800819eed046ac6af906089be874..de89ba6848cca863b0d2d079d58ef896ace3150e 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @ignore
-    Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index b155de2142b1881baf3b0c1ef652f838806844ae..5e966e7709c622ad1d11faa383eadb0530960a8e 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: f86f00c1a8de0f034ba48506de2801c074bd5422
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 82f5c5f09f274260bc66133279dd3d8e45c037ed..bc898dad78afc992430d5e761f9952d36311ff0f 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: 42ae342ba877dc8f26cabb5cc3937a6d3cdb4066
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 694200e8b52e117d1e371ab4f8c45e8b7732c304..487372ad39c819b87e4f438106979c6e20090d7f 100644 (file)
@@ -1,5 +1,5 @@
 <!--
-    Translation of GIT committish: 4f7427e7a314a71bde16559247885544256b8213
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -9,11 +9,11 @@
 <form action="http://google.com/search"
       method="get"
       name="search"
-      onSubmit="search.q.value='site:lilypond.org +v2.12 '
+      onSubmit="search.q.value='site:lilypond.org +v2.14 '
                + search.brute_query.value"
-      onMouseMove="search.q.value='site:lilypond.org +v2.12 '
+      onMouseMove="search.q.value='site:lilypond.org +v2.14 '
                   + search.brute_query.value"
-      onKeyUp="search.q.value='site:lilypond.org +v2.12 '
+      onKeyUp="search.q.value='site:lilypond.org +v2.14 '
               + search.brute_query.value">
   <input type="hidden" name="btnG" value="Mit Google suchen">
   <input type="text" name="brute_query" onfocus="this.value=''" value="Suche">
index cbc4da138c338ad0def95383e49cd4231c427555..5799aab20b2396c4fa6109deaf8ed777e0f1762c 100644 (file)
@@ -1,3 +1,5 @@
+%% Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
+
 
   texidocde = "Dieses Schnipsel zeigt, wie man die alternative Brevis mit zwei
 vertikalen Linien an jeder Seite des Notenkopfes benutzt."
index f7a4df4018e0275c03e4e8d06d13098e2c750371..bc3edb36eb5ba079a4d116ebf349c1269c3acbcd 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 
 @ignore
-    Translation of GIT committish: 0764a50d470cab82ca29da30298dacd333d3da12
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -602,17 +602,21 @@ Einstellungen benutzt werden:
 @{ c1 @}
 @end example
 
-Eine @file{EPS}-Datei kann mit folgendem Befehl erzeugt werden:
+Benutzbare Bilddateien können mit folgendem Befehl erzeugt werden:
 
 @example
+EPS
+
 lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts   Dateiname.ly
-@end example
 
-@noindent
-eine @file{PNG}-Datei mittels:
+PNG
 
-@example
 lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts --png Dateiname.ly
+
+Ein transparentes PNG
+
+lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts \
+  -dpixmap-format=pngalpha --png myfile.ly
 @end example
 
 
index 6433dee7f7ccd5de9711841d13b180d0c0a32e25..8f3eb32756751e1939f0592f8a63394e5802e18b 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index db77ef97f0f2c790a78e8750a70c39d8b0ab821b..9df05196d858c3211e0f53f94dc6c3d61ac646b7 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 
 @ignore
-    Translation of GIT committish: bf45bed3887f818f2d99756e6b92c77a8698be92
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index f1a041833c01c99479fbac07ed49fda345981140..49f92b58f6b2c4f56d66a328bcee12dc74df26e6 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 
 @ignore
-    Translation of GIT committish: 0764a50d470cab82ca29da30298dacd333d3da12
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -352,7 +352,7 @@ sich im @file{Notes}-Verzeichnis befinden:
 
 @example
 %%% Kopfzeile der Datei "symphony-cello.ly"
-\include ../definitions.ily
+\include ../symphonyDefs.ily
 \include ../Notes/cello.ily
 @end example
 
index 0d81dca29254d141d1fed6c7e5ce81bfb1c76ec8..1cf799017ade9efa10266b811c4e92dbde094bee 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 
 @ignore
-    Translation of GIT committish: 0764a50d470cab82ca29da30298dacd333d3da12
+    Translation of GIT committish: 8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index e05836d39cb9588b8da64ab8b61ef8b5e56a2a91..90d260109f6d68793f3b56d8aaebcc8b42786a01 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish:  42ae342ba877dc8f26cabb5cc3937a6d3cdb4066
+    Translation of GIT committish:  8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -281,7 +281,7 @@ lesen Sie bitte unsere Richtlinien für @ref{Fehlerberichte}.}
 @divClass{column-center-top}
 @subheading Was sind @qq{Minimalbeispiele}?
 
-Ein kleines Beispiel ist ein Beispiel, von dem nichts mehr entfernt
+Ein Minimalbeispiel ist ein Beispiel, von dem @strong{nichts} mehr entfernt
 werden kann.
 @divEnd
 
@@ -296,13 +296,13 @@ Je einfacher ein Beispiel ist, um so schneller können mögliche
 Hilfeleistende es verstehen und Ihnen helfen.
 
 @item
-Ein einfaches Beispiel zeigt, dass Sie sich zuerst Mühe gegeben
+Ein kleines Beispiel zeigt, dass Sie sich zuerst Mühe gegeben
 haben, das Problem selber zu lösen.  Wenn Leute große Abschnitte
 an Code einschicken, sieht es so aus, dass sie sich auch nicht
 interessieren, ob ihnen geholfen wird oder nicht.
 
 @item
-Ein Minimalbeispiel zu erstellen zwingt Sie dazu zu verstehen,
+Ein Minimalbeispiel zu erstellen hilft Ihnen zu verstehen,
 was vorgeht.  Viele falsche Problemberichte können vermieden werden,
 wenn man versucht, erst einmal ein Minimalbeispiel zu erstellen.
 Wenn Sie einen @qq{Bug} in Ihrem Minimalbeispiel nicht reproduzieren
@@ -316,18 +316,18 @@ LilyPond, nicht jedoch ein Fehler.
 
 
 @divClass{column-right-bottom}
-@subheading Wie soll ich sie erstellen?
+@subheading Wie werden sie erstellt?
 
 @divClass{keep-bullets}
 @itemize
 
 @item
-Immer die \version -Nummer einfügen.
+Immer die @code{\version}-Nummer einfügen.
 
 @item
 Machen Sie es klein!  Beispiele zur Platzverteilung oder dem
 Seitenlayout können viele Notentakte erfordern, aber die meisten
-Probleme können in einem einzigen Takt gezeigt werden.
+Probleme können in weniger als einem einzigen Takt gezeigt werden.
 
 @item
 Wenn Sie versuchen, ein Beispiel zu erstellen, versuchen Sie
@@ -343,11 +343,54 @@ Vermeiden Sie komplizierte Noten, Tonarten, Schlüssel oder Taktarten, es sei de
 Benutzen Sie nicht @code{\override} oder @code{\set}, es sei denn,
 der Fehler zeigt sich im Zusammenhang mit diesen Befehlen.
 
+@item
+Sie können auch zusätzlich ein Bild anhängen, welches die gewünschte graphische
+Darstellung zeigt.
+
 @end itemize
 @divEnd
 
 @divEnd
 
+@divClass{column-center-bottom}
+@subheading Wie klein sollten sie sein?
+@c How tiny should they be?
+
+Ist der Code unten ein Minimalbeispiel?
+
+@example
+\version "2.14.1"
+\include "english.ly"
+
+\score @{
+  \new Staff @{
+    \key d \major
+    \numericTimeSignature
+    \time 2/4
+    <cs' d'' b''>16 <cs' d'' b''>8.
+    %% Here: the tie on the D's looks funny
+    %% Too tall? Left-hand endpoint is not aligned with the B tie?
+    ~
+    <cs' d'' b''>8 [ <b d'' a''> ]
+  @}
+@}
+@end example
+
+Das ist zwar kein langer Code, aber ein wirkliches Minimalbeispiel ist
+folgendes:
+
+@example
+\version "2.14.1"
+@{
+  % middle tie looks funny here:
+  <c' d'' b''>8. ~ <c' d'' b''>8
+@}
+@end example
+
+Wenige Minimalbeispiele brauchen mehr als 10 Zeilen,
+meistens kann das Problem mit vier Zeilen gezeigt werden!
+
+@divEnd
 
 
 
index f2d1980f208123fe9e36f6d29dd000c4b2fe12d1..843f61bffd928cc6f66449e32005f2139d17c6a1 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish:  aa632c095138aaaa0f50f73c90e72efb4b61d745
+    Translation of GIT committish:  8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -210,8 +210,19 @@ Auf der Kommandozeile schreiben Sie
 uninstall-lilypond
 @end example
 
+@subsubheading Hilfe
+
+Auf der Kommandozeile schreiben Sie
+
+@example
+sh lilypond-@versionStable{}-OS-TYPE.sh --help
+@end example
+
 @divEnd
 
+
+
+
 @divClass{column-right-top}
 @subheading Eine Datei kompilieren
 
@@ -231,22 +242,22 @@ Versionen zu installieren oder zu aktualisieren.
 @item
 @sourceimage{logo-fedora,,,}
 @uref{http://koji.fedoraproject.org/koji/packageinfo?packageID=2447,
-Fedora: LilyPond 2.12.2}
+Fedora: LilyPond 2.14.1}
 
 @item
 @sourceimage{logo-ubuntu,,,}
 @uref{http://packages.ubuntu.com/search?keywords=lilypond,
-Ubuntu: LilyPond 2.12.2}
+Ubuntu: LilyPond 2.12.3}
 
 @item
 @sourceimage{logo-slackware,,,}
 @uref{http://www.johannes-schoepfer.de/lilypond/,
-Slackware: LilyPond 2.12.2}
+Slackware: LilyPond 2.14.1}
 
 @item
 @sourceimage{logo-debian,,,}
 @uref{http://packages.debian.org/search?keywords=lilypond,
-Debian: LilyPond 2.12.2}
+Debian: LilyPond 2.12.3}
 
 @item
 @sourceimage{logo-suse,,,}
index 53b1344c23e59921133a0e021d6749557dc09c2b..ba8fc7497481dd82f077998a034549e4cf22a1e4 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish:  ac3dd3ad38528113d97f6a8a7b81751c328f1c36
+    Translation of GIT committish:  8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 1bef25084be98eaec42ae5bb2df6200506cb512f..a31b7b52fe964182dc668152e1f2ade52e002908 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish:  ac3dd3ad38528113d97f6a8a7b81751c328f1c36
+    Translation of GIT committish:  8cbb38db1591ab95a178643e7bf41db018aa22c0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -133,8 +133,8 @@ Referenz für Anpassungen.
 der Übersetzungsstatus für nicht Nicht-Englischsprachige.
 
 @item
-@ref{Alles}:
-Handbücher zum Herunterladen und alte Handbücher.
+@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}:
+Beispiele, Tricks und Tipps, von LilyPond-Benutzern erstellt.
 
 @item
 @ref{Entwicklung}:
index 822f1ae16b8d48bb4c8aa80331bdee60ef4f5e96..cfde2c3de823292a174106c5967275e1c9c8e85d 100644 (file)
@@ -759,7 +759,7 @@ Aparte del estilo de corchete por defecto @code{default}, sólo está
 contemplado el estilo @code{mensural}
 
 @lilypond[quote,fragment,ragged-right,verbatim]
-\override Stem #'flag-style = #'mensural
+\override Flag #'style = #'mensural
 \override Stem #'thickness = #1.0
 \override NoteHead #'style = #'mensural
 \autoBeamOff
index dda15e148ed53bb39ada1913820f132ec814b5db..47dc5d61b4af21279e168e5b160a0f88abe13131 100644 (file)
@@ -460,7 +460,7 @@ Se pueden hacer acordes que cruzan los pentagramas:
         % extend the stems to reach the other staff
         \override Stem #'length = #12
         % do not print extra flags
-        \override Stem #'flag-style = #'no-flag
+        \override Flag #'style = #'no-flag
         % prevent beaming as needed
         a8 g4 f8 f bes\noBeam g4
       }
index 71865e7788d009dbe7bfe55f25f539128fb3cf39..130ea01ab7acb6b70177d06730449aeebea121f4 100644 (file)
@@ -76,7 +76,11 @@ LilyPond code enclosed in hashed braces
 (@tie{}@w{@code{#@{@dots{}#@}}}@tie{}).  Within LilyPond code
 blocks, use @code{$} to reference function arguments (eg.,
 @samp{$arg1}) or to start an inline scheme expression containing
-function arguments (eg., @w{@samp{$(cons arg1 arg2)}}).
+function arguments (eg., @w{@samp{$(cons arg1 arg2)}}).  A LilyPond code
+block may contain anything that you can use on the right side of an
+assignment.  In addition, an empty LilyPond block corresponds to a void
+music expression, and a LilyPond block containing multiple music events
+gets turned into a sequential music expression.
 
 @end multitable
 
@@ -117,9 +121,7 @@ compatible with the context in which it is called.
 @itemize
 @item
 At top level in a music expression.  There are no special restrictions
-on the argument list.  Using the @code{#@{}@dots{}@code{#@}} construct
-produces a sequential music expression and consequently can only applied
-in this context.
+on the argument list.
 
 @item
 As a post-event.  All trailing arguments of the music function with the
@@ -295,12 +297,9 @@ may want to have a function that does not involve music (such as
 turning off Point and Click).  To do this, we return a @code{void}
 music expression.
 
-That is why the form that is returned is the
-@w{@code{(make-music @dots{})}}.  With the @code{'void} property
-set to @code{#t}, the parser is told to actually disregard this
-returned music expression.  Thus the important part of the void
-music function is the processing done by the function, not the
-music expression that is returned.
+Using the form @code{#@{ #@}} will actually achieve that.  If you for
+some reason really need an empty sequential music expression, you would
+have to write @code{#@{ @{ @} #@}} instead.
 
 @example
 noPointAndClick =
@@ -308,7 +307,7 @@ noPointAndClick =
      (parser location)
      ()
    (ly:set-option 'point-and-click #f)
-   (make-music 'SequentialMusic 'void #t))
+   #@{ #@})
 ...
 \noPointAndClick   % disable point and click
 @end example
@@ -343,13 +342,16 @@ providing a LilyPond-like syntax.  For example,
 @noindent
 is equivalent to:
 @example
-\markup \column @{ \line @{ \bold \italic "hello" \raise #0.4 "world" @}
-                  \larger \line @{ foo bar baz @} @}
+#@{ \markup \column @{ \line @{ \bold \italic "hello" \raise #0.4 "world" @}
+                  \larger \line @{ foo bar baz @} @} #@}
 @end example
 
 @noindent
 This example demonstrates the main translation rules between regular
-LilyPond markup syntax and Scheme markup syntax.
+LilyPond markup syntax and Scheme markup syntax.  Using @code{#@{
+@dots{} #@}} for entering in Lilypond syntax will often be most
+convenient, but we explain how to use the @code{markup} macro to get a
+Scheme-only solution.
 
 @quotation
 @multitable @columnfractions .3 .3
@@ -560,6 +562,16 @@ command is needed.  Thus, we write a @code{double-box} markup command,
 taking one argument (the text).  This draws the two boxes, with some
 padding.
 
+@lisp
+#(define-markup-command (double-box layout props text) (markup?)
+  "Draw a double box around text."
+  (interpret-markup layout props
+    #@{\markup \override #'(box-padding . 0.4) \box
+            \override #'(box-padding . 0.6) \box @{ $text @}#@}))
+@end lisp
+
+or, equivalently 
+
 @lisp
 #(define-markup-command (double-box layout props text) (markup?)
   "Draw a double box around text."
@@ -571,10 +583,10 @@ padding.
 @code{text} is the name of the command argument, and @code{markup?} its
 type: it identifies it as a markup.  The @code{interpret-markup}
 function is used in most of markup commands: it builds a stencil, using
-@code{layout}, @code{props}, and a markup.  Here, this markup is built
-using the @code{markup} scheme macro, see @ref{Markup construction in Scheme}.
-The transformation from @code{\markup} expression to scheme
-markup expression is straight-forward.
+@code{layout}, @code{props}, and a markup.  In the second case, this
+markup is built using the @code{markup} scheme macro, see @ref{Markup
+construction in Scheme}.  The transformation from @code{\markup}
+expression to scheme markup expression is straight-forward.
 
 The new command can be used as follow:
 
@@ -591,6 +603,19 @@ and the text.  So we will introduce a new property,
 @code{box-padding} will be used for the inner padding.  The new code is
 now as follows:
 
+@lisp
+#(define-markup-command (double-box layout props text) (markup?)
+  #:properties ((inter-box-padding 0.4)
+                (box-padding 0.6))
+  "Draw a double box around text."
+  (interpret-markup layout props
+    #@{\markup \override #`(box-padding . ,$inter-box-padding) \box
+               \override #`(box-padding . ,$box-padding) \box
+               @{ $text @} #@}))
+@end lisp
+
+Again, the equivalent version using the markup macro would be:
+
 @lisp
 #(define-markup-command (double-box layout props text) (markup?)
   #:properties ((inter-box-padding 0.4)
@@ -620,8 +645,9 @@ customized:
                 (box-padding 0.6))
   "Draw a double box around text."
   (interpret-markup layout props
-    (markup #:override `(box-padding . ,inter-box-padding) #:box
-            #:override `(box-padding . ,box-padding) #:box text)))
+    #{\markup \override #`(box-padding . ,$inter-box-padding) \box
+              \override #`(box-padding . ,$box-padding) \box
+              { $text } #}))
 
 \markup \double-box A
 \markup \override #'(inter-box-padding . 0.8) \double-box A
@@ -722,6 +748,16 @@ a single stencil, the former returns a list of stencils.
 In the following example, a @code{\paragraph} markup list command is
 defined, which returns a list of justified lines, the first one being
 indented.  The indent width is taken from the @code{props} argument.
+
+@example
+#(define-markup-list-command (paragraph layout props args) (markup-list?)
+   #:properties ((par-indent 2))
+   (interpret-markup-list layout props
+     #@{\markuplines \justified-lines @{ \hspace #$par-indent $args @} #@}))
+@end example
+
+
+The version using just Scheme is more complex:
 @example
 #(define-markup-list-command (paragraph layout props args) (markup-list?)
    #:properties ((par-indent 2))
@@ -737,11 +773,11 @@ Besides the usual @code{layout} and @code{props} arguments, the
 First, the function gets the indent width, a property here named
 @code{par-indent}, from the property list @code{props}.  If the
 property is not found, the default value is @code{2}.  Then, a
-list of justified lines is made using the
-@code{make-justified-lines-markup-list} function, which is related
-to the @code{\justified-lines} built-in markup list command.  A
-horizontal space is added at the beginning using the
-@code{make-hspace-markup} function.  Finally, the markup list is
+list of justified lines is made using the built-in markup list command
+@code{\justified-lines}, which is related to the
+@code{make-justified-lines-markup-list} function.  A
+horizontal space is added at the beginning using @code{\hspace} (or the
+@code{make-hspace-markup} function).  Finally, the markup list is
 interpreted using the @code{interpret-markup-list} function.
 
 This new markup list command can be used as follows:
index 7768d643655cd4935acae576d2764c9389441fe5..2d4664b179d9d2cb30776d1df7bd10637711e077 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: ec35c10a93b45b1f0dd721c54197a79d4207a92c
+    Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 6473fba5ef849bbee130dff836456115aa85c718..dab36e14016177fe3b2da72a0f6652fb6accab36 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+    Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -99,7 +99,7 @@ de notation.
 @c Better left untranslated -vv
 
 @ignore
-@subheading Colorado
+@subheading University of Colorado Engraving music bibliography
 
 @include colorado.itexi
 
index 04a34169db15ac6275d1086bb9bdb02b72a7657b..233cab4e29204b74bfebfa3920223c6802f39f9f 100644 (file)
@@ -2,7 +2,7 @@
 @c This file is part of web/download.itexi and
 @c learning/tutorial.itely
 @ignore
-    Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+    Translation of GIT committish: 72ffce252ed4be33c47b925ff2d79428a9367056
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -189,7 +189,7 @@ Créez un fichier texte du nom de @file{test.ly} et saisissez@tie{}:
 
 @c double \\ required because this is inside a macro!
 @example
-\\version "@w{@version{}}"
+\\version "@w{@versionStable{}}"
 @{
   c' e' g' e'
 @}
@@ -209,7 +209,7 @@ lilypond test.ly
 Vous verrez alors quelque chose qui ressemblera à@tie{}:
 
 @example
-GNU LilyPond @w{@version{}}
+GNU LilyPond @w{@versionStable{}}
 Traitement de « test.ly »
 Analyse...
 Interprétation en cours de la musique...
index b9cc0d5b9587ba9da9c41e3ba5f40a61020d6e47..fdff27314614aae257d26f20d83c15885ab8293d 100644 (file)
@@ -3,7 +3,7 @@
 @c contributor/introduction.itely
 
 @ignore
-    Translation of GIT committish: 46ec3bd9ded640faef62938929a0af97345cf955
+    Translation of GIT committish: 72ffce252ed4be33c47b925ff2d79428a9367056
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -145,7 +145,7 @@ Nous prendrons le temps de discuter la spécification de ce
 format de saisie définitif.
 
 
-@warning{Le GLISS commencera peu après la sortie de la version 2.14.}
+@warning{Le GLISS commencera peu après la sortie de la version 2.16.}
 
 
 @subsubheading Projet GOP d'organisation de LilyPond
@@ -165,8 +165,6 @@ repenser complètement quoi que ce soit.  L'objectif est plutôt de
 nous donner une base bien plus stable pour pouvoir entreprendre
 de grands travaux à l'avenir.
 
-@warning{Le GOP commencera peu après la sortie de la version 2.14.}
-
 @end macro
 
 
index 6b589f3ebc567199b97e570800d2836e968e0c04..da3d3f59dca53dbf04534aedc02cee9be30c0650 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-   Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+   Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7
 
    When revising a translation, copy the HEAD committish of the
    version that you are working on.  For details, see the Contributors'
index 62903c106eae809673ee0fbb3e05b06b01e6b671..fc9dd365fa36aff3c813aa2e396ec4989ed81a42 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+    Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 59f4fcd8b73a7d79543b507601a5fdec83971207..b93faadec6b55fda28153e64cc161c7c51ba67fa 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+    Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index a84d6802833cc2b6110fe0c01f8ab8676eabea38..cb4e030f278678ea1e7e868ea7d670de814b925e 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+    Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 84064ef3c608477b697dadd39e319ebaf4f215d1..136419bdff73f74b62a4bbf60556da83bf25eb5c 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-   Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+   Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7
 
    When revising a translation, copy the HEAD committish of the
    version that you are working on.  For details, see the Contributors'
index 485babb114bd9f152dcfb5abb083feb7882eb442..8060e7c69f87e8f91639301c9165581407cfa4b1 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-       Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+       Translation of GIT committish: a6cd9e45dcb86a249936f174403c9f8bc8afebc0
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -2001,9 +2001,7 @@ les objets de rendu.  Par défaut, elle est réglée sur @code{#f} pour
 tous les objets de la portée, et porte une valeur numérique appropriée à
 chacun des objets extérieurs à la portée, à mesure qu'ils sont créés.
 Le tableau suivant montre la valeur numérique par défaut pour
-quelques-uns des objets extérieurs à la portée les plus courants qui
-sont placés, par défaut, dans les contextes @code{Staff} ou
-@code{Voice}.
+quelques-uns des objets extérieurs à la portée les plus courant.
 
 @cindex spanners
 @cindex bandeaux
@@ -2026,12 +2024,21 @@ plusieurs soufflets ou indications de nuance.
 @headitem Objet de rendu
   @tab Priorité
   @tab Contrôle la position de :
-@item @code{MultiMeasureRestText}
-  @tab @code{450}
-  @tab Texte sur les silences qui couvrent des mesures entières
+@item @code{RehearsalMark}
+  @tab @code{1500}
+  @tab Repère
+@item @code{MetronomeMark}
+  @tab @code{1000}
+  @tab Indication métronomique
+@item @code{VoltaBracketSpanner}
+  @tab @code{600}
+  @tab Bandeau de répétition
 @item @code{TextScript}
   @tab @code{450}
   @tab Texte des @emph{markup} (ou étiquettes)
+@item @code{MultiMeasureRestText}
+  @tab @code{450}
+  @tab Texte sur les silences qui couvrent des mesures entières
 @item @code{OttavaBracket}
   @tab @code{400}
   @tab Indication d'octaviation
@@ -2041,9 +2048,9 @@ plusieurs soufflets ou indications de nuance.
 @item @code{DynamicLineSpanner}
   @tab @code{250}
   @tab Toutes les marques de nuances
-@item @code{VoltaBracketSpanner}
+@item @code{BarNumber}
   @tab @code{100}
-  @tab Bandeau de répétition
+  @tab Numéro de mesure
 @item @code{TrillSpanner}
   @tab @code{50}
   @tab Bandeau de trille
@@ -2102,35 +2109,15 @@ Il montre aussi comment créer des marques d'octaviation.
 @cindex modification du positionnement des marques de repère
 @cindex marques de repère, modification du positionnement
 
-Vous aurez remarqué que les numéros de mesure, l'indication métronomique
-et les marques de répétition n'apparaissent pas.  Par défaut, ils sont
-créés dans le contexte @code{Score} et leur
-@code{outside-staff-priority} est ignorée face aux objets qui sont créés
-dans le contexte @code{Staff}.  Si vous voulez faire apparaître les
-numéros de mesure, l'indication métronomique ou les marques de
-répétition conformément à la valeur de leur
-@code{outside-staff-priority}, il vous faudra retirer respectivement le
-@code{Bar_number_engraver}, le @code{Metronome_mark_engraver} ou le
-@code{Mark_engraver} du contexte @code{Score} et les placer en tête du
-contexte @code{Staff}.  Après quoi ces marques porteront les valeurs de
-@code{outside-staff-priority} par défaut suivantes@tie{}:
-
-@multitable @columnfractions .3 .3
-@headitem Objet de rendu          @tab Priorité
-@item @code{RehearsalMark}        @tab @code{1500}
-@item @code{MetronomeMark}        @tab @code{1000}
-@item @code{BarNumber}            @tab @code{ 100}
-@end multitable
-
 Si les valeurs de @code{outside-staff-priority} par défaut ne donnent
 pas les résultats escomptés, il suffit de modifier la priorité
 de l'un de ces objets.  Supposons que vous vouliez placer l'indication
 d'octaviation sous le bandeau de texte, dans l'exemple précédent.  Tout
 ce que nous devons faire, c'est regarder la priorité de
-@code{OttavaBracket} dans la RPI ou dans le tableau plus haut, et la
-ramener à une valeur plus basse que celle de @code{TextSpanner}, en
-gardant à l'esprit que @code{OttavaBracket} est créé dans le contexte
-@code{Staff}@tie{}:
+@code{OttavaBracket} dans la Référence des propriétés internes ou dans
+le tableau plus haut, et la ramener à une valeur plus basse que celle de
+@code{TextSpanner}, en gardant à l'esprit que @code{OttavaBracket} est
+créé dans le contexte @code{Staff}@tie{}:
 
 @cindex TextSpanner, exemple de dérogation
 @cindex bound-details, exemple d'utilisation de la propriété
@@ -2194,9 +2181,9 @@ contrôler le positionnement vertical des objets individuels, quoique le
 résultat ne soit pas toujours formidable.  Imaginons que nous voulions
 placer @qq{Text3} au-dessus de @qq{Text4} dans l'exemple de la section
 @ref{Comportement automatique}, plus haut.  Il nous suffit pour cela de
-regarder dans la RPI ou dans le tableau plus haut la priorité de
-@code{TextScript}, et d'augmenter la priorité de @qq{Text3} jusqu'à une
-valeur très haute@tie{}:
+regarder dans la Référence des propriétés internes ou dans le tableau
+plus haut la priorité de @code{TextScript}, et d'augmenter la priorité
+de @qq{Text3} jusqu'à une valeur très haute@tie{}:
 
 @cindex TextScript, exemple de dérogation
 @cindex outside-staff-priority, exemple d'utilisation de la propriété
@@ -2910,44 +2897,56 @@ r4
 \acciaccatura e8\( d8 c~ c d c d\)
 @end lilypond
 
-Voici un autre exemple, tiré du début de la partie de main gauche
-du Prélude de Chopin, Op. 28, No 2. Comme nous pouvons le
-constater, les barres de ligature chevauchent les notes les plus
-hautes@tie{}:
+Voici un autre exemple. Comme nous pouvons le constater, les barres de
+ligature chevauchent les liaisons de tenue@tie{}:
 
 @lilypond[quote,verbatim,fragment,ragged-right]
 {
-  \clef "bass"
-  << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
-  << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
+  \time 4/2
+  <<
+    { c'1 ~ c'2. e'8 f' }
+    \\
+    { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
+  >>
+  <<
+    { c'1 ~ c'2. e'8 f' }
+    \\
+    { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
+  >>
 }
 @end lilypond
 
 @noindent
 On peut y remédier en déplaçant manuellement vers le haut les deux
-extrémités des ligatures de croches, non plus à 2 intervalles au-dessus
-de la ligne médiane mais, disons, à 3@tie{}:
+extrémités des ligatures de croches, non plus à 1,81 intervalle
+au-dessous de la ligne médiane mais, disons, à 1@tie{}:
 
 @cindex Beam, exemple de dérogation
 @cindex positions, exemple d'utilisation de la propriété
 
 @lilypond[quote,verbatim,fragment,ragged-right]
 {
-  \clef "bass"
+  \time 4/2
   <<
-    \override Beam #'positions = #'(3 . 3)
-    { b,8 ais, b, g, }
-  \\
-    { e,8 g e, g }
+    { c'1 ~ c'2. e'8 f' }
+    \\
+    {
+      \override Beam #'positions = #'(-1 . -1)
+      e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g''
+    }
+  >>
+  <<
+    { c'1 ~ c'2. e'8 f' }
+    \\
+    { e''8 e'' e'' e''  e'' e'' e'' e''  f''2 g'' }
   >>
-  << { b,8 ais, b, g, } \\ { e,8 g e, g } >>
 }
 @end lilypond
 
 @noindent
 Vous remarquerez que la retouche continue de s'appliquer au
 second bloc de croches de la première voix mais qu'il ne s'applique
-à aucune barre de la deuxième voix.
+à aucune mesure de la deuxième voix.
 
 @subheading la propriété force-hshift
 
@@ -3542,7 +3541,6 @@ lhMusic = \relative c' {
 * Utilisation de variables dans les retouches::
 * Feuilles de style::
 * Autres sources de documentation::
-* Options ralentissant le traitement::
 * Retouches avancées avec Scheme::
 @end menu
 
@@ -4248,38 +4246,6 @@ sont@tie{}:
 
 
 
-@node Options ralentissant le traitement
-@subsection Options ralentissant le traitement
-@translationof Avoiding tweaks with slower processing
-
-LilyPond peut effectuer des vérifications supplémentaires lors du
-traitement des fichiers@tie{}; cependant, le rendu nécessitera alors
-plus de temps.  En contrepartie, il y aura moins d'ajustements manuels à
-réaliser.  Si une indication textuelle ou des paroles débordent dans la
-marge, ces vérifications auront pour effet de resserrer la ligne
-suffisamment pour faire tenir le texte entre les marges.
-
-Pour pouvoir fonctionner en toutes circonstances, ces vérifications
-doivent être activées@tie{}; il faut pour cela placer les retouches dans
-un @code{\context} à l'intérieur d'un bloc @code{\layout}, plutôt que
-directement dans le fragment musical, comme ceci@tie{}:
-
-@example
-\score @{
-  @{ @dots{}notes@dots{} @}
-  \layout @{
-    \context @{
-      \Score
-      % Pour s'assurer que les indications textuelles et paroles
-      % seront à l'intérieur des marges de la page.
-      \override PaperColumn #'keep-inside-line = ##t
-      \override NonMusicalPaperColumn #'keep-inside-line = ##t
-    @}
-  @}
-@}
-@end example
-
-
 @node Retouches avancées avec Scheme
 @subsection Retouches avancées avec Scheme
 @translationof Advanced tweaks with Scheme
index f62408459bef060331385baaeccf1457a783d5ec..c149225e9b4e0f1a7198def8eeee4004fa677365 100644 (file)
@@ -551,7 +551,7 @@ seuls styles actuellement pris en charge sont @code{default} et
 @code{mensural}.
 
 @lilypond[quote,fragment,ragged-right,verbatim]
-\override Stem #'flag-style = #'mensural
+\override Flag #'style = #'mensural
 \override Stem #'thickness = #1.0
 \override NoteHead #'style = #'mensural
 \autoBeamOff
index 587ec08f714f2b658399ebb79581e9fcb5ed80d4..b821d5533ce12b1260be25ec33573a50ae4d173e 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+    Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 58ed26b71e7473bade9f257bbecb112ad2977dc6..e94a8278deafb99b6f78321dbf4c4bdaf689b534 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-    Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+    Translation of GIT committish: a6b5eea83ddcdd8e1fd0760db385176ff9b2b1cd
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -213,10 +213,10 @@ la portée -- voir @ref{Direction et positionnement} à ce sujet.
 
 @seealso
 Manuel de notation :
-@ref{Direction et positionnement}
+@ref{Direction et positionnement}.
 
 Morceaux choisis :
-@rlsrnamed{Editorial annotations,Annotations éditoriales}.
+@rlsrnamed{Editorial annotations, Annotations éditoriales}.
 
 Référence des propriétés internes :
 @rinternals{FingeringEvent},
@@ -225,6 +225,10 @@ Référence des propriétés internes :
 @rinternals{New_fingering_engraver},
 @rinternals{Fingering}.
 
+@knownissues
+La syntaxe @samp{@var{note}-@var{digit}} ne prend pas en charge, par
+défaut, les chiffres supérieurs à 9.
+
 
 @node Dictée à trous
 @unnumberedsubsubsec Dictée à trous
@@ -401,8 +405,8 @@ normale ayant un nom similaire.
 
 Les couleurs de X11 ne sont pas toutes perceptibles dans un navigateur
 internet.  Aussi nous vous recommandons, dans le cadre d'une
-présentation multimedia, d'utiliser des couleurs de base @code{#blue},
-@code{#green}, @code{#red} -- bleu, vert, rouge.
+présentation multimedia, d'utiliser des couleurs de base @code{blue},
+@code{green}, @code{red} -- bleu, vert, rouge.
 
 
 Vous ne pouvez pas coloriser des notes à l'intérieur d'un accord avec
index 25db5c3efd9e9c7b7bc515460da9d035e7eb7140..5f1a6cb44f8a91a8540ee7364d1f56bbc1f801da 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-    Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+    Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index cf663fcee4211b54788f0e7e60cda489677e2fb4..07f36ff58741cd01176c293c86db7e6d78853e5a 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: 3f4496001441e0b1b27d7bc5395c4520f4f2088c
+    Translation of GIT committish: 40bf2b38d674c43f38058494692d1a0993fad0bd
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -62,7 +62,8 @@ d'utiliser des diagrammes d'accord au-dessus de la portée
 traditionnelle.  La guitare et le banjo sont des instruments
 transpositeurs, sonnant une octave au-dessous de ce qui est écrit.  Les
 partitions pour ces instruments utilisent donc la clé de sol ottava
-bassa @code{"treble_8"}.  Vous pourrez trouver ailleurs dans la
+bassa @code{"treble_8"} -- ou une instruction @code{\transposition c}
+pour un rendu MIDI correct.  Vous pourrez trouver ailleurs dans la
 documentation d'autres éléments aussi utilisés par les instruments à
 cordes frettées@tie{}:
 
@@ -162,17 +163,16 @@ Référence des propriétés internes :
 La notation en tablature est utilisée pour certains instruments à cordes
 pincées.  Les hauteurs n'y sont pas indiquées par des têtes de note,
 mais par des chiffres ou autres symboles, qui indiquent sur quelle
-corde, et à quelle case chaque note doit être jouée.  Dans certaines
-limites, LilyPond vous permet d'écrire des tablatures.
-
-Chaque numéro de corde associé à une note doit être précédé d'une barre
-oblique inverse (ou @qq{antislash}) suivi d'un nombre.  Par défaut, la
-première corde est la plus aiguë, et les cordes suivent l'accordage
-traditionnel d'une guitare (à six cordes).  Les notes sont imprimées
-sous forme de tablature, dans les contextes @code{TabStaff} et
+corde et à quelle case chaque note doit être jouée.  Des notes devant
+être jouées simultanément seront alors alignées verticalement.
+
+Par défaut, la première corde est la plus aiguë et correspond à la ligne
+supérieure du @code{TabStaff}.  Les cordes suivent par défaut
+l'accordage traditionnel d'une guitare (à six cordes).  Les notes sont
+imprimées sous forme de tablature, dans les contextes @code{TabStaff} et
 @code{TabVoice}.
 
-@lilypond[quote,ragged-right,fragment,verbatim]
+@lilypond[quote,ragged-right,verbatim]
 \new TabStaff \relative c' {
        a,8 a' <c e> a
        d, a' <d f> a
@@ -226,16 +226,17 @@ symbols = {
 }
 @end lilypond
 
-@funindex minimumFret
-
 @cindex cases
 @cindex frets
 
-Quand aucune corde n'est précisée, LilyPond choisit automatiquement la
-corde pour laquelle la position est la moins élevée et qui donne un
-numéro de case supérieur ou égal à la valeur de la propriété
-@code{minimumFret}.  La valeur par défaut de cette propriété est fixée à
-0, ce qui correspond aux cordes à vide.
+@funindex minimumFret
+
+Quand aucune corde n'est précisée -- à l'aide d'une barre oblique
+inverse (ou @qq{antislash}) précédant son  numéro --, LilyPond choisit
+automatiquement la corde pour laquelle la position est la moins élevée
+et qui donne un numéro de case supérieur ou égal à la valeur de la
+propriété @code{minimumFret}.  La valeur par défaut de cette propriété
+est fixée à 0, ce qui correspond aux cordes à vide.
 
 
 @lilypond[quote,ragged-right,verbatim]
@@ -256,9 +257,36 @@ numéro de case supérieur ou égal à la valeur de la propriété
 >>
 @end lilypond
 
-Lorsqu'un liaison de prolongation intervient lors d'un saut de ligne, la
-note est répétée, entre parenthèses.  Il en va de même pour la seconde
-alternative d'une répétition.
+@funindex \tabChordRepetition
+
+La répétition d'une construction en accord s'indique par un @code{q}.
+Cette fonctionnalité est opérationnelle en mode tablature dès lors que
+vous aurez préalablement fait appel à la commande
+@code{\tabChordRepetition}.  Les numéros de corde indiqués dans votre
+accord seront alors préservés et reproduits à chaque répétition.
+
+@lilypond[quote,verbatim]
+\tabChordRepetition
+
+guitar = \relative c' {
+  r8 <gis\4 cis\3 b\2>~ q4 q8~ q q4
+}
+
+\new StaffGroup <<
+  \new Staff {
+    \clef "treble_8"
+    \override Voice.StringNumber #'transparent = ##t
+    \guitar
+  }
+  \new TabStaff {
+    \guitar
+  }
+>>
+@end lilypond
+
+Lorsqu'une liaison de prolongation intervient à l'occasion d'un saut de
+ligne, la note est répétée, entre parenthèses.  Il en va de même pour la
+seconde alternative d'une répétition.
 
 @lilypond[quote,ragged-right,verbatim]
 ties = \relative c' {
@@ -335,15 +363,62 @@ ties = \relative c' {
 @cindex glissando, indication en tablature
 @cindex tablature et glissando
 
+@funindex \harmonic
+@funindex \harmonicByFret
+@funindex \harmonicByRatio
+
 Les indications de sons harmoniques ainsi que les glissandi
 peuvent être ajoutés aux tablatures.
 
+@lilypond[verbatim,quote]
+firstHarmonic = {
+  <d'\4\harmonic>4
+  <g'\3\harmonic>4
+  <b'\2\harmonic>2
+}
+\score {
+  <<
+    \new Staff { \firstHarmonic }
+    \new TabStaff { \firstHarmonic }
+  >>
+}
+@end lilypond
+
+Vous noterez que la commande @code{\harmonic} intervient toujours dans
+une construction d'accord.  Ceci ne fonctionne donc que pour une
+harmonique au douzième fret d'une corde à vide.  Toute autre harmonique
+devrait être définie directement par LilyPond.  Vous pouvez l'y aider en
+indiquant la case où le doigt viendrait se placer sur le manche.
+
+@lilypond[verbatim,quote]
+fretHarmonics = {
+  \harmonicByFret #5 d16\4
+  \harmonicByFret #4 d16\4
+  \harmonicByFret #3 d8\4
+  \harmonicByFret #5 <g\3 b\2>2.
+}
+\score {
+  <<
+    \new Staff { \fretHarmonics }
+    \new TabStaff { \fretHarmonics }
+  >>
+}
+@end lilypond
 
-@lilypond[fragment, verbatim, quote, relative=1]
-\new TabStaff {
-  \new TabVoice {
-    <c g'\harmonic> d\2\glissando e\2
-  }
+Une harmonique peut accessoirement se calculer à partir de la longueur
+de corde par rapport au doigté de cette harmonique.
+
+@lilypond[verbatim,quote]
+ratioHarmonics = {
+  \harmonicByRatio #1/2 <g\3 b\2 e'\1>4
+  \harmonicByRatio #1/3 <g\3 b\2 e'\1>4
+  \harmonicByRatio #1/4 { g8\3 b8\2 e'4\1 }
+}
+\score {
+  <<
+    \new Staff { \ratioHarmonics }
+    \new TabStaff { \ratioHarmonics }
+  >>
 }
 @end lilypond
 
@@ -356,10 +431,24 @@ peuvent être ajoutés aux tablatures.
 @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
 {polyphony-in-tablature.ly}
 
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{open-string-harmonics-in-tablature.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{fretted-string-harmonics-in-tablature.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{slides-in-tablature.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{chord-glissando-in-tablature.ly}
+
 
 @seealso
 Manuel de notation :
-@ref{Hampes}.
+@ref{Hampes},
+@ref{Harmoniques},
+@ref{Glissando}.
 
 Morceaux choisis :
 @rlsrnamed{Fretted strings,Cordes frettées}.
@@ -442,35 +531,105 @@ l'accordage standard d'une guitare@tie{}: mi la ré sol si mi (EADGBE).
 D'autres accordages prédéfinis sont disponibles@tie{}:
 @code{guitar-open-g-tuning}, @code{mandolin-tuning} et
 @code{banjo-open-g-tuning}.  Les accordages prédéfinis sont répertoriés
-dans le fichier @file{scm/output-lib.scm}.
+dans le fichier @file{ly/string-tuning-init.ly}.
+
+@funindex contextStringTunings
+@funindex \contextStringTunings
 
-L'accordage est constitué par une liste Scheme des hauteurs de notes
+LilyPond vous permet de créer n'importe quel accordage.  L'accordage du
+contexte en cours se détermine à l'aide de la fonction
+@code{\contextStringTuning}.  Celle-ci prend deux arguments@tie{}: une
+représentation symbolique qui gardera l'accordage en mémoire, et une
+construction d'accord définissant la hauteur des différentes cordes.
+Les hauteurs fournies s'expriment impérativement en mode absolu -- voir
+@ref{Hauteurs avec octave absolue}.  La corde ayant le numéro le plus
+élevé (généralement la note la plus basse) est mentionnée en premier.
+
+L'accordage est constitué par une liste Scheme des hauteurs de note
 correspondant aux cordes à vide, une note pour chaque corde, classée par
 numéro de corde de 1 à n, où la corde 1 est la plus haute dans la
 tablature et n la plus basse.  Cela revient généralement à classer les
 cordes de la plus aiguë à la plus grave, mais certains instruments
 (comme le ukulele) n'ont pas les cordes classées par hauteur.
 
-Dans cette liste, la hauteur des notes est représentée par l'intervalle,
-exprimé en demi-tons, du do central jusqu'à la note de la corde à vide.
-Elle doit donc être représentée par un nombre entier.  LilyPond calcule
-la note correspondant à chaque corde en ajoutant cet intervalle au do
-central.
 
-Lilypond calcule automatiquement le nombre de cordes à représenter dans
-la tablature (@code{TabStaff}) en comptant le nombre d'éléments définis
-dans le @code{stringTunings}.
+Nous pouvons ainsi définir par exemple l'accordage d'un instrument à
+quatre cordes accordées do sol ré la, et en anglais@tie{}:
+@code{a''}, @code{d''}, @code{g'}, et @code{c'}@tie{}:
+
+
+@lilypond[quote,verbatim]
+mynotes = {
+  c'4 e' g' c'' |
+  e''4 g'' b'' c'''
+}
+
+<<
+  \new Staff {
+    \clef treble
+    \mynotes
+  }
+  \new TabStaff {
+    \contextStringTuning #'custom-tuning <c' g' d'' a''>
+    \mynotes
+  }
+>>
+@end lilypond
+
+
+La propriété @code{stringTuning} permet aussi au @code{FretBoards} de
+calculer automatiquement les diagrammes de frets.
+
+@funindex makeStringTuning
+@funindex \makeStringTuning
 
-N'importe quel accordage peut donc être créé.  Par exemple, nous pouvons
-définir l'accordage d'un instrument à quatre cordes accordées do sol ré
-la, donc de la plus aiguë à la plus grave et en anglais@tie{}:
-@code{a''},  @code{d''},  @code{g'}, et @code{c'}@tie{}:
+L'accordage fait partie de la clé permettant d'identifier les 
+diagrammes prédéfinis -- voir @ref{Tablatures prédéfinies}.  La fonction
+@code{\makeStringTuning} permet d'établir un accordage sans pour autant
+définir la propriété @code{stringTunings} dans le contexte en cours.
+Les arguments à fournir à la commande @code{\makeStringTuning} sont
+l'identifiant de ce nouvel accordage et l'accord dont il est constitué.
+Nous pourrions donc écrire l'exemple précédent ainsi@tie{}:
 
+@lilypond[quote,verbatim]
+\makeStringTuning #'custom-tuning <c' g' d'' a''>
+
+mynotes = {
+  c'4 e' g' c'' |
+  e''4 g'' b'' c'''
+}
+
+<<
+  \new Staff {
+    \clef treble
+    \mynotes
+  }
+  \new TabStaff {
+    \set TabStaff.stringTunings = #custom-tuning
+    \mynotes
+  }
+>>
+@end lilypond
+
+L'accordage est constitué, en interne, par une liste Scheme des hauteurs
+de notes correspondant aux cordes à vide, une note pour chaque corde,
+classée par numéro de corde de 1 à n, où la corde 1 est la plus haute
+dans la tablature et n la plus basse.  Cela revient généralement à
+classer les cordes de la plus aiguë à la plus grave, mais certains
+instruments (comme le ukulele) n'ont pas les cordes classées par hauteur.
+
+Chaque hauteur de corde incluse dans un accordage est un objet LilyPond
+de type @emph{pitch}.  Les objets @emph{pitch} sont créés par la fonction
+@code{ly:make-pitch} -- voir @ref{Fonctions Scheme}.
+
+En cas de besoin, vous pouvez créer un accordage en Scheme pur.  Notez
+bien qu'il ne sera pas enregistré comme objet.  Voici comment recréer
+l'accordage des exemples précédents@tie{}:
 
 @lilypond[quote,verbatim]
 mynotes = {
-    c'4 e' g' c'' |
-    e'' g'' b'' c'''
+  c'4 e' g' c'' |
+  e''4 g'' b'' c'''
 }
 
 <<
@@ -488,10 +647,34 @@ mynotes = {
 >>
 @end lilypond
 
+Lilypond calcule automatiquement le nombre de cordes à représenter dans
+la tablature (@code{TabStaff}) ainsi que dans le @code{FretBoard} en
+comptant le nombre d'éléments définis dans le @code{stringTunings}.
+@cindex moderntab clef
+@cindex clef, moderntab
+@cindex clef, tab
+@cindex tab clef
+
+LilyPond dispose d'une clef de tablature moderne.
+
+@lilypond[quote,ragged-right,verbatim]
+\new TabStaff {
+  \clef moderntab
+  <a, e a>1
+  \break
+  \clef tab
+  <a, e a>1
+}
+@end lilypond
+
+Cette clef moderne prend en charge les tablatures de quatre à sept cordes.
+
 
 @seealso
 Fichiers d'initialisation :
-@file{scm/output-lib.scm}.
+@file{ly/string-tuning-init.ly},
+@file{scm/tablature.scm}.
 
 Morceaux choisis :
 @rlsrnamed{Fretted strings,Cordes frettées}.
@@ -516,7 +699,7 @@ hauteurs, comme le ukulele.
 @cindex fret, diagrammes personnalisés
 @cindex diagrammes personnalisés de fret
 
-On peut ajouter des diagrammes d'accords au-dessus de n'importe quelle
+On peut ajouter des diagrammes d'accord au-dessus de n'importe quelle
 note, en tant qu'objets @code{\markup}.  Ces objets contiennent toutes
 les informations du diagramme d'accord.  Il y a pour les définir trois
 interfaces "diagramme d'accord" (@emph{fret-diagram} en anglais)@tie{}:
@@ -524,9 +707,9 @@ interfaces "diagramme d'accord" (@emph{fret-diagram} en anglais)@tie{}:
 Ces trois interfaces produiront des diagrammes similaires mais
 permettent des niveaux de personnalisation différents.  Des détails à
 propos des interfaces de type @code{\markup}
-peuvent être trouvés dans @ref{Text markup commands}.
+peuvent être trouvés à l'annexe @ref{Instrument Specific Markup}.
 
-Dans l'interface standard des diagrammes d'accords, on indiquera le
+Dans l'interface standard des diagrammes d'accord, on indiquera le
 numéro de corde et le numéro de case pour chaque point placé sur une corde.
 Les cordes à vide et étouffées peuvent aussi être indiquées.
 
@@ -659,8 +842,8 @@ l'interface standard.
 @funindex fret-diagram-terse
 @funindex \fret-diagram-terse
 
-Dans l'interface @code{fret-diagram-terse}, les numéros de cordes sont
-omis@tie{}; les numéros de cordes sont induits par la présence de
+Dans l'interface @code{fret-diagram-terse}, les numéros de corde sont
+omis@tie{}; les numéros de corde sont induits par la présence de
 points-virgules.  Il y a un point-virgule pour chaque corde du
 diagramme.  Le premier point-virgule correspondant au plus haut numéro
 de corde, le dernier à la première corde.  Les cordes étouffées, les
@@ -731,6 +914,7 @@ utilisant la commande @code{\override} dans l'interface
 @code{fret-diagram-terse}.
 
 @cindex fret-diagram-verbose markup
+@cindex capo
 
 @funindex fret-diagram-verbose
 @funindex \fret-diagram-verbose
@@ -875,13 +1059,16 @@ un diagramme d'accord, les propriétés de l'interface dépendent de
 
 @snippets
 
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{changing-fret-orientations.ly}
+
 @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
 {customizing-markup-fret-diagrams.ly}
 
 
 @seealso
 Manuel de notation :
-@ref{Text markup commands}.
+@ref{Instrument Specific Markup}.
 
 Morceaux choisis :
 @rlsrnamed{Fretted strings,Cordes frettées}.
@@ -894,16 +1081,15 @@ Référence des propriétés internes :
 @unnumberedsubsubsec Tablatures prédéfinies
 @translationof Predefined fret diagrams
 
-
 @cindex fret, diagrammes
 @cindex accord, diagrammes
 
 @funindex FretBoards
 @funindex stringTunings
 
-Les diagrammes d'accords peuvent être affichés en utilisant le contexte
+Les diagrammes d'accord peuvent être affichés en utilisant le contexte
 @code{FretBoards}.  Par défaut le contexte @code{FretBoards} affichera
-des diagrammes d'accords stockés dans une table de correspondance@tie{}:
+des diagrammes d'accord stockés dans une table de correspondance@tie{}:
 
 @lilypond[verbatim, ragged-right, quote]
 \include "predefined-guitar-fretboards.ly"
@@ -942,6 +1128,24 @@ myChords = \chordmode { a1 a:m a:aug }
 }
 @end lilypond
 
+Les diagrammes de fret propres à la mandoline se trouvent dans le
+fichier @file{predefined-mandolin-fretboards.ly}.
+
+@lilypond[verbatim, ragged-right, quote]
+\include "predefined-mandolin-fretboards.ly"
+
+myChords = \chordmode { c1 c:m7.5- c:aug }
+
+\new ChordNames {
+  \myChords
+}
+
+\new FretBoards {
+  \set stringTunings = #mandolin-tuning
+  \myChords
+}
+@end lilypond
+
 Les notes des accords peuvent être entrées aussi bien comme musique
 simultanée qu'en utilisant le mode accord (voir
 @ref{Généralités sur le mode accords}).
@@ -962,9 +1166,9 @@ simultanée qu'en utilisant le mode accord (voir
 @funindex \chordmode
 
 Il est courant d'afficher simultanément le nom des accords et les
-diagrammes d'accords correspondants.
-Ceci s'obtient en mettant en parallèle un contexte @code{ChordNames} avec
-un contexte @code{FretBoards} et en affectant aux deux la même musique.
+diagrammes d'accord correspondants.  Ceci s'obtient en mettant en
+parallèle un contexte @code{ChordNames} et un contexte
+@code{FretBoards}, tout en affectant aux deux la même musique.
 
 @lilypond[verbatim, ragged-right, quote]
 \include "predefined-guitar-fretboards.ly"
@@ -986,9 +1190,9 @@ mychords = \chordmode{
 @cindex fret et transposition
 @cindex diagrammes de fret et transposition
 
-Les diagrammes d'accords prédéfinis sont transposables tant qu'il y a
+Les diagrammes d'accord prédéfinis sont transposables tant qu'il y a
 un diagramme correspondant à l'accord transposé dans la base des
-diagrammes d'accords.
+diagrammes d'accord.
 
 @lilypond[verbatim, ragged-right, quote]
 \include "predefined-guitar-fretboards.ly"
@@ -1013,7 +1217,7 @@ mychordlist = {
 La table des diagrammes d'accord contient sept types d'accord (majeur,
 mineur, augmenté, diminué, septième de dominante, majeur sept, mineur
 sept) pour chacune des 17 fondamentales possibles.  Une liste complète
-des diagrammes d'accords prédéfinis se trouve dans
+des diagrammes d'accords prédéfinis se trouve à l'annexe
 @ref{Tablatures prédéfinies}.   S'il n'y a pas d'entrée dans la table
 pour un accord donné, le graveur @code{Fretboard_engraver} calculera le
 diagramme d'accord en utilisant la fonctionnalité automatique  décrite
@@ -1047,12 +1251,13 @@ aussi bien de type @var{terse} que @var{verbose}.
 @lilypond[verbatim, ragged-right, quote]
 \include "predefined-guitar-fretboards.ly"
 
-\storePredefinedDiagram #default-fret-table \chordmode {c:9}
+\storePredefinedDiagram #default-fret-table
+                        \chordmode { c:maj9 }
                         #guitar-tuning
-                        #"x;3-2;2-1;3-3;3-4;x;"
+                        #"x;3-2;o;o;o;o;"
 
-mychords = \chordmode{
-  c1 c:9
+mychords = \chordmode {
+  c1 c:maj9
 }
 
 <<
@@ -1072,7 +1277,8 @@ intervalle de deux octaves, le premier servant à la transposition.
 @lilypond[verbatim, ragged-right, quote]
 \include "predefined-guitar-fretboards.ly"
 
-\storePredefinedDiagram #default-fret-table \chordmode { c'' }
+\storePredefinedDiagram #default-fret-table
+                        \chordmode { c'' }
                         #guitar-tuning
                         #(offset-fret 2 (chord-shape 'bes guitar-tuning))
 
@@ -1113,21 +1319,23 @@ définies grâce aux interfaces @code{fret-diagram-terse} ou
 @lilypond[verbatim, ragged-right, quote]
 \include "predefined-guitar-fretboards.ly"
 
-% add a new chord shape
+% Add a new chord shape
 
 \addChordShape #'powerf #guitar-tuning #"1-1;3-3;3-4;x;x;x;"
 
 % add some new chords based on the power chord shape
 
-\storePredefinedDiagram #default-fret-table \chordmode {f'}
+\storePredefinedDiagram #default-fret-table
+                        \chordmode { f'' }
                         #guitar-tuning
                         #(chord-shape 'powerf guitar-tuning)
-\storePredefinedDiagram #default-fret-table \chordmode {g'}
+\storePredefinedDiagram #default-fret-table
+                        \chordmode { g'' }
                         #guitar-tuning
                         #(offset-fret 2 (chord-shape 'powerf guitar-tuning))
 
 mychords = \chordmode{
-  f1 f' g g'
+  f1 f'' g g''
 }
 
 <<
@@ -1155,6 +1363,12 @@ d'accord donné, les propriétés de l'interface dépendent de
 @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
 {defining-predefined-fretboards-for-other-instruments.ly}
 
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{chordchanges-for-fretboards.ly}
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{fretboards-alternate-tables.ly}
+
 
 @seealso
 Manuel de notation :
@@ -1165,7 +1379,9 @@ Manuel de notation :
 
 Fichiers d'initialisation :
 @file{ly/predefined-guitar-fretboards.ly},
-@file{ly/predefined-guitar-ninth-fretboards.ly}.
+@file{ly/predefined-guitar-ninth-fretboards.ly},
+@file{ly/predefined-ukulele-fretboards.ly},
+@file{ly/predefined-mandolin-fretboards.ly}.
 
 Morceaux choisis :
 @rlsrnamed{Fretted strings,Cordes frettées}.
@@ -1220,36 +1436,36 @@ automatique peut être activé ou désactivé par des commandes
 prédéfinies@tie{}:
 
 @lilypond[quote,ragged-right,verbatim]
-
-\storePredefinedDiagram #default-fret-table <c e g c' e'>
+\storePredefinedDiagram #default-fret-table
+                        <c e g c' e'>
                         #guitar-tuning
-                        #"x;3-1-(;5-2;5-3;5-4;3-1-1);"
+                        #"x;3-1-(;5-2;5-3;5-4;3-1-1-);"
 <<
   \context ChordNames {
-     \chordmode {
-       c1 c c
-     }
+    \chordmode {
+      c1 c c
+    }
   }
   \context FretBoards {
     <c e g c' e'>1
     \predefinedFretboardsOff
-    <c e g c' e'>
+    <c e g c' e'>1
     \predefinedFretboardsOn
-    <c e g c' e'>
+    <c e g c' e'>1
   }
   \context Staff {
     \clef "treble_8"
     <c e g c' e'>1
-    <c e g c' e'>
-    <c e g c' e'>
+    <c e g c' e'>1
+    <c e g c' e'>1
   }
 >>
 @end lilypond
 
-Parfois le calculateur se trouvera incapable de trouver un diagramme
+Le calculateur se trouvera parfois incapable de trouver un diagramme
 d'accord convenable.  On peut souvent y remédier en assignant les notes
 aux cordes.  Dans bien des cas, il suffit de placer manuellement une
-seule note pour que les autres soient alors placées de maniére
+seule note pour que les autres soient alors placées de manière
 appropriée par le contexte @code{FretBoards}.
 
 @cindex fret, ajout de doigtés aux diagrammes
@@ -1261,9 +1477,9 @@ fret.
 @lilypond[quote, verbatim]
 <<
   \context ChordNames {
-     \chordmode {
-       c1 d:m
-     }
+    \chordmode {
+      c1 d:m
+    }
   }
   \context FretBoards {
     < c-3 e-2 g c'-1 e' > 1
@@ -1283,9 +1499,9 @@ servira à calculer les cordes et les cases du contexte @code{FretBoard}.
 @lilypond[quote, verbatim]
 <<
   \context ChordNames {
-     \chordmode {
-       d1:m d:m
-     }
+    \chordmode {
+      d1:m d:m
+    }
   }
   \context FretBoards {
     < d a d' f'>
@@ -1349,7 +1565,8 @@ hauteurs.
 Les doigtés de main droite @var{p-i-m-a} doivent être entrés dans une
 construction de type accord @code{<>} même s'il n'y a qu'une seule note.
 
-@warning{Un trait d'union @strong{doit} suivre la note et une espace
+@warning{Un trait d'union @strong{doit} s'insérer entre la note et
+l'instruction @code{@bs{}rightHandFinger}, et une espace
 @strong{doit} précéder la fermeture de la construction par un @code{>}.}
 
 
@@ -1406,6 +1623,7 @@ utilisateurs experimentés, un logiciel typographique tel que GuitarTex.
 @menu
 * Indication de la position et du barré::
 * Indication des harmoniques et notes étouffées::
+* Indication de power chord::
 @end menu
 
 @node Indication de la position et du barré
@@ -1417,7 +1635,7 @@ utilisateurs experimentés, un logiciel typographique tel que GuitarTex.
 
 Cet exemple montre comment indiquer les positions et les barrés@tie{}:
 
-@lilypond[quote,ragged-right,fragment,verbatim,relative=0]
+@lilypond[quote,ragged-right,verbatim,relative=0]
 \clef "treble_8"
 b16 d g b e
 \textSpannerDown
@@ -1450,16 +1668,63 @@ Des têtes de note spéciales peuvent servir à indiquer les
 notes étouffées et les sons harmoniques.  Les sons harmoniques sont
 souvent détaillés grâce à des indications textuelles.
 
-@lilypond[quote,ragged-right,fragment,verbatim]
+@lilypond[quote,ragged-right,verbatim]
 \relative c' {
   \clef "treble_8"
-  \override Staff.NoteHead #'style = #'cross
-  g8 a b c b4
   \override Staff.NoteHead #'style = #'harmonic-mixed
   d^\markup { \italic { \fontsize #-2 { "harm. 12" }}} <g b>1
 }
 @end lilypond
 
+Les notes étouffées, ou @notation{notes fantômes} se recontrent aussi
+bien sur une portée normale que dans une tablature@tie{}:
+
+@lilypond[quote,ragged-right,verbatim]
+music = \relative c' {
+  < a\3 \deadNote c\2 a'\1 >4
+  < b\3 \deadNote d\2 b'\1 >
+  < c\3 \deadNote e\2 c'\1 >
+  \deadNotesOn
+  \times 2/3 { g8 b e }
+  \deadNotesOff
+  < a,\3 c\2 e\1 >1
+}
+\new StaffGroup <<
+  \new Staff {
+    \clef "treble_8"
+    \music
+  }
+  \new TabStaff {
+    \music
+  }
+>>
+@end lilypond
+
+Le @emph{palm mute}, appelé aussi parfois @emph{chop}, est une technique
+de jeu pour la guitare électrique@tie{}; elle est connue sous le nom de
+pizzicato par les joueurs de guitare classique.  Elle consiste à poser
+la main droite sur les cordes juste au-dessus du chevalet, de façon à
+étouffer plus ou moins légèrement les notes.  LilyPond permet d'indiquer
+ce style de jeu en affectant un profil spécifique aux têtes de notes.
+
+@lilypond[quote,ragged-right,verbatim]
+\new Voice { % Warning: explicit Voice instantiation is
+             %    required to have palmMuteOff work properly
+             %    when palmMuteOn comes at the beginning of
+             %    the piece.
+  \relative c, {
+    \clef "G_8"
+    \palmMuteOn
+    e8^\markup { \musicglyph #"noteheads.u2do"  = palm mute }
+    < e b' e > e
+    \palmMuteOff
+    e e  \palmMute e e e |
+    e8 \palmMute { e e e } e e e e |
+    < \palmMute e b' e >8 \palmMute { e e e } < \palmMute e b' e >2
+  }
+}
+@end lilypond
+
 
 @seealso
 Morceaux choisis :
@@ -1470,6 +1735,89 @@ Manuel de notation :
 @ref{Têtes de note}.
 
 
+@node Indication de power chord
+@unnumberedsubsubsec Indication de @emph{power chord}
+@translationof Indicating power chords
+
+@funindex powerChords
+@funindex \powerChords
+
+@cindex power chords
+@cindex chords, power
+
+Les @emph{power chords} -- terme anglais signifiant littéralement
+@qq{accords de puissance} -- s'indiquent aussi bien en mode accord que
+dans une construction en accord@tie{}:
+
+@lilypond[quote,ragged-right,verbatim]
+ChordsAndSymbols = {
+  \chordmode {
+    \powerChords
+    e,,1:1.5
+    a,,1:1.5.8
+    \set minimumFret = #8
+    c,1:1.5
+    f,1:1.5.8
+  }
+  \set minimumFret = #5
+  <a, e>1
+  <g d' g'>1
+}
+\score {
+  <<
+    \new ChordNames {
+    \ChordsAndSymbols
+    }
+    \new Staff {
+      \clef "treble_8"
+      \ChordsAndSymbols
+    }
+    \new TabStaff {
+      \ChordsAndSymbols
+    }
+  >>
+}
+@end lilypond
+
+Le symbole de @emph{power chord} est désactivé dès lors que survient un
+accord traditionnel@tie{}:
+
+@lilypond[quote,ragged-right,verbatim]
+mixedChords = \chordmode {
+  c,1
+  \powerChords
+  b,,1:1.5
+  fis,,1:1.5.8
+  g,,1:m
+}
+\score {
+  <<
+    \new ChordNames {
+      \mixedChords
+    }
+    \new Staff {
+      \clef "treble_8"
+      \mixedChords
+    }
+    \new TabStaff {
+      \mixedChords
+    }
+  >>
+}
+@end lilypond
+
+@seealso
+Glossaire musicologique :
+@rglos{power chord}.
+
+Manuel de notation :
+@ref{Extensions et altération d'accords},
+@ref{Impression des noms d'accord}.
+
+Morceaux choisis :
+@rlsrnamed{Fretted strings, Cordes frettées}.
+
+
 @node Banjo
 @subsection Banjo
 @translationof Banjo
@@ -1531,5 +1879,6 @@ moyen de la fonction @code{four-string-banjo}@tie{}:
 Morceaux choisis :
 @rlsrnamed{Fretted strings,Cordes frettées}.
 
+Fichiers d'initialisation :
 Les accordages prédéfinis du banjo sont contenus dans le fichier
-@file{scm/output-lib.scm}.
+@file{scm/string-tunings-init.scm}.
index 5945efc821de89e36877afbbb61e11f289124221..9cf94f6a23ff49522ef51a700b9720fc950f9b77 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: f77212d801fa4603bf596a19cecf5a068f1d9d85
+    Translation of GIT committish: d0c96d3f0b1dca7df98ef5586059965dd46ab16f
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -27,6 +27,7 @@ LilyPond.
 * Travail sur des fichiers texte::
 * Contrôle des sorties::
 * Sortie MIDI::
+* Extraction d'information musicale::
 @end menu
 
 @node Agencement du code
@@ -36,7 +37,6 @@ LilyPond.
 LilyPond traite des fichiers textuels.  Ces fichiers portent par
 convention une extension @code{.ly}.
 
-
 @menu
 * Structure d'une partition::
 * Plusieurs partitions dans un même ouvrage::
@@ -45,6 +45,7 @@ convention une extension @code{.ly}.
 * Structure de fichier::
 @end menu
 
+
 @node Structure d'une partition
 @subsection Structure d'une partition
 @translationof Structure of a score
@@ -114,8 +115,9 @@ implicitement inclus dans un bloc @code{\book}.  Le bloc @code{\book}
 d'un fichier source permet la production d'au moins un fichier dont le
 nom sera, par défaut, déduit du fichier source@tie{}: le traitement de
 @file{fandangopourelephants.ly} produira donc
-@file{fandangopourelephants.pdf}.  Pour de plus amples informations à
-propos du bloc @code{\book}, lisez
+@file{fandangopourelephants.pdf}.
+
+Pour de plus amples informations à propos du bloc @code{\book}, lisez
 @ref{Plusieurs partitions dans un même ouvrage},
 @ref{Plusieurs éditions pour une même source} et
 @ref{Structure de fichier}.
@@ -208,9 +210,9 @@ au sein du bloc @code{\book}.  Dans le cas contraire, le contenu du bloc
 @funindex \bookpart
 
 Plusieurs pièces seront regroupées dans un même @qq{chapitre} à l'aide
-d'un bloc @code{\bookpart}.  Les différentes parties sont séparées par
-un saut de page et peuvent comporter un titre à l'instar de l'ouvrage
-dès lors que vous y insérez un bloc @code{\header}.
+d'un bloc @code{\bookpart}.  Ces différents @qq{chapitres} sont séparés
+par un saut de page et peuvent comporter un titre à l'instar de
+l'ouvrage dès lors que vous y insérez un bloc @code{\header}.
 
 @example
 \bookpart @{
@@ -399,7 +401,7 @@ différents documents à partir d'une même source.  La présence explicite
 d'un bloc @code{\book} est aussi nécessaire lorsque vous travaillez sur
 un document lilypond-book qui reprendrait plusieurs @code{\score}s ou
 @code{\markup}s dans un même extrait.  Vous pouvez modifier ce
-comportement à l'aide de la variable @code{toplevel-score-handler}
+comportement à l'aide de la variable @code{toplevel-book-handler}
 placée en tête.
 @ignore
 @c FIXME - I cannot read "toplevel-book-handler" in scm/lily.scm -jcm
@@ -529,7 +531,7 @@ Pour séparer les éléments d'une expression Scheme ;
 En mode parole -- @code{lyricmode} -- pour séparer les termes des
 commandes @code{\override} et @code{\set}.  Précisons à ce sujet qu'en
 plus d'ajouter une espace avant et après l'intégralité de la commande,
-vous devrez encadrer d'espace le point et le signe égal qu'elle peut
+vous devrez encadrer d'espaces le point et le signe égal qu'elle peut
 contenir, comme dans
 @w{@code{\override Score . LyricText #'font-size = #5}}.
 
@@ -549,306 +551,549 @@ La plupart de la musique qui est éditée comporte un titre et le nom de
 son compositeur@tie{}; certains ouvrages divulguent beaucoup plus
 d'information.
 
-
 @menu
-* Création de titres::
+* Création de titres et entête ou pied de page::
 * Titrages personnalisés::
 * Référencement des numéros de page::
 * Table des matières::
 @end menu
 
-@node Création de titres
-@subsection Création de titres
-@translationof Creating titles
-
-Des éléments de titrage peuvent s'attacher à un bloc @code{\score}, une
-partie -- créée par un bloc @code{\bookpart} -- ou bien un ouvrage
-entier créé par un bloc @code{\book}.
-
-Les différents éléments du titrage sont contenus dans un bloc
-@code{\header}.  Un ouvrage complet peut comporter@tie{}:
 
+@node Création de titres et entête ou pied de page
+@subsection Création de titres et entête ou pied de page
+@translationof Creating titles headers and footers
 
-@table @code
-@funindex dedication
-@item dedication
-Le dédicataire de l'œuvre, centré en haut de la première page.
-
-@funindex title
-@item title
-Le titre de l'œuvre, centré en dessous de la dédicace.
+@menu
+* Contenu des blocs de titrage::
+* Mise en forme par défaut des titrages::
+* Mise en forme par défaut des entête et pied de page::
+@end menu
 
-@funindex subtitle
-@item subtitle
-Le sous-titre, centré sous le titre.
 
-@funindex subsubtitle
-@item subsubtitle
-Un niveau supplémentaire de sous-titre, centré en dessous du sous-titre.
+@node Contenu des blocs de titrage
+@unnumberedsubsubsec Contenu des blocs de titrage
+@translationof Title blocks explained
 
-@funindex poet
-@item poet
-Le poète, parolier ou librétiste, aligné à gauche en dessous du
-deuxième sous-titre.
+@c TODO: figure out how \bookpart titles work
 
-@funindex instrument
-@item instrument
-L'instrument, centré en dessous du deuxième sous-titre.  Il sera rappelé
-sur les pages suivant la première, centré sur la ligne d'entête.
+Il existe en fait deux types de blocs de titrage@tie{}: un bloc pour
+contenir le titre principal qui doit apparaître avant le tout premier
+@code{\score} d'un ouvrage, et un autre attaché à chacun des blocs
+@code{\score} qui le composent.  Dans les deux cas, les champs qui
+composent un bloc de titrage se saisissent dans un bloc @code{\header}.
 
-@funindex composer
-@item composer
-Le compositeur, aligné à droite en dessous du deuxième sous-titre.
+Lorsque l'ouvrage ne comporte qu'un seul morceau, le bloc @code{\header}
+peut se placer en dehors ou au sein même du bloc @code{\score}.
 
-@funindex meter
-@item meter
-Le libellé du tempo, aligné à gauche sous le poète.
+Dans le cas où le bloc @code{\header} est défini à l'intérieur du bloc
+@code{\score}, seuls les champs @code{piece} et @code{opus} seront
+imprimés.
 
-@funindex arranger
-@item arranger
-L'arrangeur, aligné à droite sous le compositeur.
+@lilypond[papersize=a5,quote,verbatim,noragged-right]
+\score {
+  { c'4 }
+  \header {
+    title = "title"  % not printed
+    piece = "piece"
+    opus = "opus"
+  }
+}
+@end lilypond
 
-@funindex piece
-@item piece
-La pièce ou le mouvement, aligné à gauche sous le tempo.
+@funindex print-all-headers
+@noindent
+Vous pouvez modifer ce comportement et imprimer tous les champs d'un
+bloc @code{\header} défini dans un bloc @code{\score} en ajoutant
 
-@funindex opus
-@item opus
-L'opus ou le numéro au catalogue, aligné à droite sous l'arrangeur.
+@example
+\paper@{
+  print-all-headers = ##t
+@}
+@end example
 
-@cindex page breaks, forcing
-@funindex breakbefore
-@item breakbefore
-Ce commutateur (activé par ##t@tie{}; ##f pour le désactiver) permet de
-forcer le saut de page avant d'afficher les titres.
+@warning{N'oubliez pas que lorsqu'il est placé à l'intérieur d'un bloc
+@code{@bs{}score}, le bloc @code{@bs{}header} doit impérativement se
+trouver @strong{à la suite} de l'expression musicale.}
 
-@funindex copyright
-@item copyright
-La notice de droits d'auteur, centrée en pied de la première page.  Pour
-imprimer le symbole @emph{copyright}, consultez la rubrique
-@ref{Codage du texte}.
+@lilypond[papersize=a5,quote,verbatim,noragged-right]
+\header {
+  title = "SUITE I."
+  composer = "J. S. Bach."
+}
 
-@funindex tagline
-@item tagline
-Mention spéciale imprimée en pied de la dernière page.
+\score {
+  \new Staff \relative g, {
+    \clef bass
+    \key g \major
+    \repeat unfold 2 { g16( d' b') a b d, b' d, } |
+    \repeat unfold 2 { g,16( e' c') b c e, c' e, } |
+  }
+  \header {
+    piece = "Prélude."
+  }
+}
 
-@end table
+\score {
+  \new Staff \relative b {
+    \clef bass
+    \key g \major
+    \partial 16 b16 |
+    <g, d' b'~>4 b'16 a( g fis) g( d e fis) g( a b c) |
+    d16( b g fis) g( e d c) b(c d e) fis( g a b) |
+  }
+  \header {
+    piece = "Allemande."
+  }
+}
+@end lilypond
 
-Voici ce que cela peut donner lorsque tout ces champs sont utilisés.  
-Les différentes commandes mentionnées à la rubrique
-@ref{Mise en forme du texte} sont opérationnelles pour tous ces
-éléments.
+Tous les champs appartenant au titrage principal d'un ouvrage peuvent se
+reporter dans chaque bloc @code{\score} ou être supprimés
+manuellement@tie{}:
 
 @c KEEP LY
-@lilypond[quote,verbatim,line-width=11.0\cm]
-\paper {
-  line-width = 9.0\cm
-  paper-height = 10.0\cm
-}
-
+@lilypond[papersize=a5,quote,verbatim,noragged-right]
 \book {
+  \paper {
+    print-all-headers = ##t
+  }
   \header {
-    dedication = "dédié à moi-même"
-    title = \markup \center-column { "Première ligne de titre" "Deuxième
-  ligne de titre, plus longue" }
-    subtitle = "un sous-titre,"
-    subsubtitle = #(string-append "sous-sous-titre LilyPond version "
-(lilypond-version))
-    poet = "Auteur"
-    composer =  \markup \center-column { "compositeur" \small "(1847-1973)" }
-    texttranslator = "Traduit par"
-    meter = \markup { \teeny "m" \tiny "e" \normalsize "t" \large "e" \huge
-"r" }
-    arranger = \markup { \fontsize #8.5 "a" \fontsize #2.5 "r" \fontsize
-#-2.5 "r" \fontsize #-5.3 "a" \fontsize #7.5 "ngeur" }
-    instrument = \markup \bold \italic "instrument"
-    piece = "Pièce"
+    title = "DAS WOHLTEMPERIRTE CLAVIER"
+    subtitle = "TEIL I"
+    % Pas de pied en dernière page pour ce livret
+    tagline = ##f
   }
-
+  \markup { \vspace #1 }
   \score {
-    { c'1 }
+    \new PianoStaff <<
+      \new Staff { s1 }
+      \new Staff { \clef "bass" s1 }
+    >>
     \header {
-      piece = "pièce1"
-      opus = "opus1"
+      title = "PRAELUDIUM I"
+      opus = "BWV 846"
+      % Pas de sous-titre pour ce morceau
+      subtitle = ##f
     }
   }
-  \markup {
-      et puis...
-  }
   \score {
-    { c'1 }
+    \new PianoStaff <<
+      \new Staff { s1 }
+      \new Staff { \clef "bass" s1 }
+    >>
     \header {
-      piece = "pièce2"
-      opus = "opus2"
+      title = "FUGA I"
+      subsubtitle = "A 4 VOCI"
+      opus = "BWV 846"
+      % Pas de sous-titre pour ce morceau
+      subtitle = ##f
     }
   }
 }
 @end lilypond
 
-Comme nous venons de la voir, vous pouvez multiplier les blocs
-@code{\header}.  Lorsqu'un même champ apparaît dans plusieurs blocs,
-LilyPond utilisera le dernier mentionné@tie{}:
+@seealso
+Manuel de notation :
+@ref{Structure de fichier},
+@ref{Mise en forme personnalisée des blocs de titrage}.
 
-@example
-\header @{
-  composer = "Compositeur"
-@}
-\header @{
-  piece = "Morceau"
-@}
-\score @{
-  \new Staff @{ c'4 @}
-  \header @{
-    piece = "Nouveau morceau"  % remplace le précédent
-  @}
-@}
-@end example
 
-Lorsque le bloc @code{\header} est défini à l'intérieur du bloc
-@code{\score}, seul les champs @code{piece} et @code{opus} seront
-imprimés.  Attention cependant à toujours placer le bloc @code{\header}
-après l'expression musicale.
+@node Mise en forme par défaut des titrages
+@unnumberedsubsubsec Mise en forme par défaut des titrages
+@translationof Default layout of book and score title blocks
+
+La mise en forme des blocs de titrage est contrôlée par deux variables
+attachées au bloc @code{\paper}@tie{}: @code{bookTitleMarkup} pour le
+bloc @code{\header} principal, et @code{scoreTitleMarkup} pour les blocs
+@code{\header} relevant des blocs @code{\score}.
+
+@c KEEP LY
+@lilypond[papersize=a6,quote,verbatim,noragged-right]
+\header {
+  % Les champs suivants sont centrés
+  dedication = "Dédice"
+  title = "Titre"
+  subtitle = "Sous-titre"
+  subsubtitle = "Sous-sous-titre"
+  instrument = "Instrument"
+
+  % Les champs suivants sont alignés sur le bord gauche
+  poet = "Librettiste"
+  meter = "Tempo"
+
+  % Les champs suivants sont alignés sur le bord droit
+  composer = "Compositeur"
+  arranger = "Arrangeur"
+}
 
-@lilypond[quote,verbatim,line-width=11.0\cm]
 \score {
-  { c'4 }
+  { s1 }
   \header {
-    title = "title"  % not printed
-    piece = "piece"
-    opus = "opus"
+    % Les champs suivants sont en opposition sur la même ligne
+    piece = "Pièce"
+    opus = "Opus"
   }
 }
 @end lilypond
 
-@funindex print-all-headers
-@noindent
-Vous pouvez modifer ce comportement et imprimer tous les champs d'un
-bloc @code{\header} défini dans un bloc @code{\score} en ajoutant
+@c Is the bit about \null markups true? -mp
 
-@example
-\paper@{
-  print-all-headers = ##t
-@}
-@end example
+Les champs d'un bloc @code{\header} qui n'auront pas été alimentés
+seront remplacés par un @emph{markup} @code{\null} de façon à ne pas
+gaspiller d'espace.
 
-@cindex copyright
-@cindex tagline
+Par défaut, @code{scoreTitleMarkup} place les champs @code{piece} et
+@code{opus} de part et d'autre sur une même ligne.
 
-Les pieds de page sont vides, hormis pour la première page qui portera
-la champ @code{copyright} du @code{\header}, et pour la dernière page où
-apparaîtra le @code{tagline}.  Celui-ci est par défaut @qq{Music
-engraving by LilyPond (@var{version})}.@footnote{Afin que l'on sache qui
-est capable d'une telle qualité, nous vous saurons gré de ne pas
-suprimer cette mention spéciale, autant que faire se peut.}
+@cindex breakbefore
 
-Un champ de titrage peut être désactivé@tie{}:
+La variable @code{breakbefore} activée dans un bloc @code{\header} situé
+dans un bloc @code{\score} force le saut de page avant le morceau
+contenu dans ce @code{\score}.  Vous pourrez ainsi séparer le titre
+principal de la musique.
 
-@example
-\header @{
-  tagline = ##f
-  composer = ##f
-@}
-@end example
+@lilypond[papersize=a8landscape,verbatim,noragged-right]
+\book {
+  \header {
+    title = "This is my Title"
+    subtitle = "This is my Subtitle"
+    copyright = "This is the bottom of the first page"
+  }
+  \score {
+    \repeat unfold 4 { e'' e'' e'' e'' }
+    \header {
+      piece = "This is the Music"
+      breakbefore = ##t
+    }
+  }
+}
+@end lilypond
+
+@seealso
+Manuel d'initiation :
+@rlearning{Organisation des fichiers LilyPond}.
+
+Manuel de notation :
+@ref{Structure de fichier}.
+
+Fichiers d'initialisation :
+@file{ly/titling-init.ly}.
+
+
+@node Mise en forme par défaut des entête et pied de page
+@unnumberedsubsubsec Mise en forme par défaut des entête et pied de page
+@translationof Default layout of headers and footers
+
+Les entête et pied -- @emph{headers} et @emph{footers} -- sont des
+lignes de textes qui apparaîssent en haut et en bas de chaque page,
+indépendamment du texte de l'ouvrage.  Ils sont contrôlés par les
+variables suivantes, attachées au bloc @code{\paper}@tie{}:
+
+@itemize
+@item @code{oddHeaderMarkup} -- entête de page impaire
+@item @code{evenHeaderMarkup} -- entête de page paire
+@item @code{oddFooterMarkup} -- pied de page impaire
+@item @code{evenFooterMarkup} -- pied de page paire
+@end itemize
+
+Ces variables @emph{markup} n'accèdent qu'au contenu des champs du bloc
+@code{\header} principal, celui qui s'appliquera à tous les blocs
+@code{\score} du document.  Ces variables sont définies dans le fichier
+@file{ly/titling-init.ly}, et sont par défaut@tie{}:
+
+@itemize
+
+@item
+les numéros sont placés en haut à gauche (si pair) ou à droite (si
+impair) de chaque page à compter de la deuxième@tie{};
+
+@item
+le contenu du champ @code{instrument} est centré en haut de chaque page
+à compter de la deuxième@tie{};
+
+@item
+le texte du @code{copyright} est centré au bas de la première
+page@tie{};
+
+@item
+le @code{tagline} -- mention spéciale -- se place au bas de la dernière
+page, ou bien sous le @code{copyright} s'il n'y a qu'une seule page.
+
+@end itemize
+
+@lilypond[papersize=a8landscape]
+\book {
+  \score {
+    \relative c' {
+      c4 d e f
+    }
+  }
+}
+@end lilypond
+
+La mention spéciale se modifie en alimentant le champ @code{tagline} au
+niveau du bloc @code{\header} principal.
+
+@lilypond[papersize=a8landscape,verbatim]
+\book {
+  \header {
+    tagline = "... music notation for Everyone"
+  }
+  \score {
+    \relative c' {
+      c4 d e f
+    }
+  }
+}
+@end lilypond
+
+Pour supprimer le @code{tagline}, il suffit de lui assigner la valeur
+@code{##f}.
 
 
 @node Titrages personnalisés
 @subsection Titrages personnalisés
 @translationof Custom headers footers and titles
 
-Vous pouvez personnaliser, dans le bloc @code{\paper}, la définition des
-variables listées ci-dessous.  Leur mise en forme par défaut est
-inscrite dans le fichier d'initialisation @file{../ly/titling-init.ly}.
+@c TODO: somewhere put a link to header spacing info
+@c       (you'll have to explain it more in NR 4).
 
-@table @code
-@funindex bookTitleMarkup
-@item bookTitleMarkup
-Ce titre est apposé au début du document final.  Il comprend normalement
-le compositeur et le titre de l'œuvre.
+@menu
+* Mise en forme personnalisée des champs de titrage::
+* Mise en forme personnalisée des blocs de titrage::
+* Mise en forme personnalisée des entête et pied de page::
+@end menu
 
-@funindex scoreTitleMarkup
-@item scoreTitleMarkup
-Ce titre est attaché à un bloc @code{\score}.  Il comprend normalement
-le nom du mouvement -- le champ @code{piece}.
 
-@funindex oddHeaderMarkup
-@item oddHeaderMarkup
-L'entête des pages impaires.
+@node Mise en forme personnalisée des champs de titrage
+@unnumberedsubsubsec Mise en forme personnalisée des champs de titrage
+@translationof Custom text formatting for title blocks
 
-@funindex evenHeaderMarkup
-@item evenHeaderMarkup
-L'entête des pages paires.  Lorsqu'il n'est pas défini, LilyPond utilise
-celui des pages impaires.
+Toutes les commandes de mise en forme d'un @code{\markup} permettent de
+personnaliser le texte des entête, pied de page et éléments de titre
+contenus dans un bloc @code{\header}.
 
-Les entêtes comportent par défaut le nom de l'instrument, au centre, et
-le numéro de page, sur le bord extérieur de la page.
+@lilypond[quote,verbatim,noragged-right]
+\score {
+  { s1 }
+  \header {
+    piece = \markup { \fontsize #4 \bold "PRAELUDIUM I" }
+    opus = \markup { \italic "(Excerpt)" }
+  }
+}
+@end lilypond
 
-@funindex oddFooterMarkup
-@item oddFooterMarkup
-Le pied de page impaire.
+@seealso
+Manuel de notation :
+@ref{Mise en forme du texte}.
 
-@funindex evenFooterMarkup
-@item evenFooterMarkup
-Le pied de page paire.  Lorsqu'il n'est pas défini, LilyPond utilise
-celui des pages impaires.
 
-Par défaut, le pied de la première page comporte la notice de droits
-d'auteur, et celui de la dernière page la @qq{mention spéciale} -- le
-@code{tagline}.
-@end table
+@node Mise en forme personnalisée des blocs de titrage
+@unnumberedsubsubsec Mise en forme personnalisée des blocs de titrage
+@translationof Custom layout for title blocks
 
+L'utilisation de commandes @code{\markup} au sein d'un bloc
+@code{\header} permet de modifier aisément l'apparence du texte,
+mais n'influence en rien le positionnement précis des éléments de
+titrage.  L'accès au positionnement des champs de titrage est géré par
+les deux variables suivantes, attachées au bloc @code{\paper}@tie{}:
 
-@cindex \paper
-@cindex header
-@cindex entête
-@cindex footer
-@cindex pied de page
-@cindex mise en page
-@cindex titres
+@itemize
+@item @code{bookTitleMarkup}
+@item @code{scoreTitleMarkup}
+@end itemize
+
+Ces variables sont abordées à la rubrique
+@ref{Mise en forme par défaut des titrages}.
 
-La définition suivante permt d'obtenir, sur la même ligne, le titre
-aligné à gauche et le compositeur aligné à droite.
+Voici les réglages par défaut de @code{scoreTitleMarkup}, tels que
+définis dans le fichier @file{ly/titling-init.ly}@tie{}:
 
 @example
-\paper @{
-  bookTitleMarkup = \markup @{
-   \fill-line @{
-     \fromproperty #'header:title
-     \fromproperty #'header:composer
-   @}
+scoreTitleMarkup = \markup @{ \column @{
+  \on-the-fly #print-all-headers @{ \bookTitleMarkup \hspace #1 @}
+  \fill-line @{
+    \fromproperty #'header:piece
+    \fromproperty #'header:opus
   @}
 @}
+@}
 @end example
 
-Les entêtes et pieds de page sont créés respectivement par les fonctions
-@code{make-header} and @code{make-footer}, que vous pouvez définir au
-sein du bloc @code{\paper}.  Leur implémentation est contenue dans les
-fichiers d'initialisation @file{ly/paper-defaults-init.ly} et
-@file{ly/titling-init.ly}.
+Ceci aura donc pour effet de positionner les champs @code{piece} et
+@code{opus} sur la même ligne, en opposition@tie{}:
 
-Voici comment centrer le numéro en pied de chaque page@tie{}:
+@lilypond[quote,verbatim,noragged-right]
+\score {
+  { s1 }
+  \header {
+    piece = "PRAELUDIUM I"
+    opus = "BWV 846"
+  }
+}
+@end lilypond
 
-@example
-\paper @{
-  print-page-number = ##t
-  print-first-page-number = ##t
-  oddHeaderMarkup = \markup \fill-line @{ " " @}
-  evenHeaderMarkup = \markup \fill-line @{ " " @}
-  oddFooterMarkup = \markup @{
-    \fill-line @{
-      \bold \fontsize #3
-      \on-the-fly #print-page-number-check-first
-      \fromproperty #'page:page-number-string
-    @}
-  @}
-  evenFooterMarkup = \markup @{
-    \fill-line @{
-      \bold \fontsize #3
-      \on-the-fly #print-page-number-check-first
-      \fromproperty #'page:page-number-string
-    @}
-  @}
-@}
-@end example
+Voici comment positionner le champ @code{piece}, dont nous modifions
+la taille et la graisse, au centre de cette ligne@tie{}:
+
+@lilypond[papersize=a5,quote,verbatim,noragged-right]
+\book {
+  \paper {
+    indent = 0\mm
+    scoreTitleMarkup = \markup {
+      \fill-line {
+        \null
+        \fontsize #4 \bold \fromproperty #'header:piece
+        \fromproperty #'header:opus
+      }
+    }
+  }
+  \header { tagline = ##f }
+  \score {
+    { s1 }
+    \header {
+      piece = "PRAELUDIUM I"
+      opus = "BWV 846"
+    }
+  }
+}
+@end lilypond
+
+Les champs normalement réservés au bloc de titrage principal seront
+reportés au niveau au niveau inférieur dès lors que vous aurez activé
+l'instruction @code{print-all-headers} au sein du bloc @code{\paper}.
+Le principal inconvénient de cette fonction réside dans le fait que les
+champs réservés au bloc @code{\header} principal devront être supprimés
+dans chacun des blocs @code{\score} de votre fichier source -- voir
+@ref{Contenu des blocs de titrage}.
+
+Afin d'éviter ce désagrément, ajoutez le champ que vous désirez voir
+apparaître à la définition de @code{scoreTitleMarkup}.  Nous allons,
+dans l'exemple suivant, ajouter au @code{scoreTitleMarkup} le champ
+@code{composer}, normalement associé au @code{bookTitleMarkup}@tie{};
+chaque @code{\score} pourra mentionner un compositeur différent.
+
+@lilypond[papersize=a5,quote,verbatim,noragged-right]
+\book {
+  \paper {
+    indent = 0\mm
+    scoreTitleMarkup = \markup {
+      \fill-line {
+        \null
+        \fontsize #4 \bold \fromproperty #'header:piece
+        \fromproperty #'header:composer
+      }
+    }
+  }
+  \header { tagline = ##f }
+  \score {
+    { s1 }
+    \header {
+      piece = "MENUET"
+      composer = "Christian Petzold"
+    }
+  }
+  \score {
+    { s1 }
+    \header {
+      piece = "RONDEAU"
+      composer = "François Couperin"
+    }
+  }
+}
+@end lilypond
+
+Rien ne vous empêche de créer votre propre champ personnalisé, puis d'y
+faire référence dans la définition du @emph{markup}.
+
+@lilypond[papersize=a5,quote,verbatim,noragged-right]
+\book {
+  \paper {
+    indent = 0\mm
+    scoreTitleMarkup = \markup {
+      \fill-line {
+        \null
+        \override #`(direction . ,UP) {
+          \dir-column {
+            \center-align \fontsize #-1 \bold
+              \fromproperty #'header:mycustomtext %% User-defined field
+            \center-align \fontsize #4 \bold
+              \fromproperty #'header:piece
+          }
+        }
+        \fromproperty #'header:opus
+      }
+    }
+  }
+  \header { tagline = ##f }
+  \score {
+    { s1 }
+    \header {
+      piece = "FUGA I"
+      mycustomtext = "A 4 VOCI" %% User-defined field
+      opus = "BWV 846"
+    }
+  }
+}
+@end lilypond
+
+@seealso
+Manuel de notation :
+@ref{Contenu des blocs de titrage}.
+
+
+@node Mise en forme personnalisée des entête et pied de page
+@unnumberedsubsubsec Mise en forme personnalisée des entête et pied de page
+@translationof Custom layout for headers and footers
+
+@c can make-header and make-footer be removed from
+@c paper-defaults-init.ly? -mp
+
+L'utilisation de commandes @code{\markup} au sein d'un bloc
+@code{\header} permet de modifier aisément l'apparence du texte,
+mais n'influence en rien le positionnement précis des entête et pied
+de page.  L'accès au positionnement des champs concernés est géré par
+les quatre variables suivantes, attachées au bloc @code{\paper}@tie{}:
+
+@itemize
+@item @code{oddHeaderMarkup}
+@item @code{evenHeaderMarkup}
+@item @code{oddFooterMarkup}
+@item @code{evenFooterMarkup}
+@end itemize
+
+L'exemple suivant illustre  la manière de centrer son numéro au bas de
+chaque page.  Il nous faut tout d'abord annuler la définition de
+@code{oddHeaderMarkup} et @code{evenHeaderMarkup} à l'aide d'un
+@emph{markup} @code{\null}. Nous redéfinissons ensuite
+@code{oddFooterMarkup} pour qu'il contienne le numéro de page, centré.
+Enfin, nous appliquons le même paramétrage au @code{\oddFooterMarkup}.
+
+@lilypond[papersize=a8,quote,verbatim,noragged-right]
+\book {
+  \paper {
+    print-page-number = ##t
+    print-first-page-number = ##t
+    oddHeaderMarkup = \markup \null
+    evenHeaderMarkup = \markup \null
+    oddFooterMarkup = \markup {
+      \fill-line {
+        \on-the-fly #print-page-number-check-first
+        \fromproperty #'page:page-number-string
+      }
+    }
+    evenFooterMarkup = \oddFooterMarkup
+  }
+  \score {
+    \new Staff { s1 \break s1 \break s1 }
+  }
+}
+@end lilypond
+
+@seealso
+Manuel de notation :
+@ref{Contenu des blocs de titrage},
+@ref{Mise en forme par défaut des titrages}.
 
 
 @node Référencement des numéros de page
@@ -862,7 +1107,7 @@ l'intérieur d'un @emph{markup}@tie{}; vous pourrez même y ajouter le
 numéro de page grâce à la commande de @emph{markup} @code{\page-ref}.
 
 @c KEEP LY
-@lilypond[verbatim,line-width=11.0\cm]
+@lilypond[verbatim]
 \header { tagline = ##f }
 \book {
   \label #'firstScore
@@ -1058,7 +1303,6 @@ Fichiers d'initialisation :
 * Insertion de fichiers LilyPond::
 * Différentes éditions à partir d'une même source::
 * Codage du texte::
-* Affichage de notation au format LilyPond::
 @end menu
 
 @node Insertion de fichiers LilyPond
@@ -1092,12 +1336,12 @@ répertoire, donner seulement son nom en argument à la commande
 @code{\include} suffit.  S'il se trouve ailleurs, vous devrez indiquer
 le chemin d'accès, absolu ou relatif, en respectant toutefois la syntaxe
 UNIX -- autrement dit, le séparateur de répertoire est une oblique
-normale @code{/} et non l'oblique inverse @code{\} de DOS/Windows.  Par
-exemple, si le fichier @file{truc.ly} se trouve dans le répertoire
+normale @code{/} et non l'oblique inverse @code{\} de DOS ou Windows.
+Par exemple, si le fichier @file{truc.ly} se trouve dans le répertoire
 supérieur au répertoire de travail, la ligne devra être
 
 @example
-\include "../stuff.ly"
+\include "../truc.ly"
 @end example
 
 @noindent
@@ -1115,14 +1359,15 @@ Les fichiers à inclure peuvent eux-même contenir des instructions
 @code{\include}.  Ces instructions @code{\include} de second niveau ne
 pourront, par défaut, être interprétées qu'une fois intégrées dans le
 fichier principal@tie{}; leur argument doit donc comporter le chemin
-relativement au fichier principal et non par rapport au fichier dan
-lesquel cette inclusion est mentionnée.  Vous pouvez toutefois influer
-sur ce comportement à l'aide de l'option @code{-drelative-includes} en
-ligne de commande ou en ajoutant une clause
+relativement au fichier principal et non par rapport au fichier dans
+lequel cette inclusion est mentionnée.  Vous pouvez toutefois influer
+sur ce comportement à l'aide de l'option @w{@code{-drelative-includes}}
+en ligne de commande ou en ajoutant une clause
 @code{@w{#(ly:set-option 'relative-includes #t)}} en tête du fichier
 principal.  Une fois @code{relative-include} activé, le chemin à suivre
 pour chacune des commandes @code{\include} sera pris relativement au
-fichier qui la contient.
+fichier qui la contient.  Cette option est vouée à être activée par
+défaut dans une future version de LilyPond.
 
 Vous pouvez inclure des fichiers dont vous spécifierez le chemin d'accès
 sur la ligne de commande au moment de lancer la compilation. L'appel à
@@ -1153,9 +1398,9 @@ fichier de définition particulier @file{gregorian.ly}.
 
 Au moment où vous lancez LilyPond, un certain nombre de fichiers se
 retrouvent inclus par défaut@tie{}; il suffit d'activer le mode verbeux
-en faisant @code{lilypond --verbose} pour s'en rendre compte.  Vous
+en faisant @w{@code{lilypond --verbose}} pour s'en rendre compte.  Vous
 verrez ainsi défiler, en plus de nombreuses informations, le nom d'un
-certain nombre de fichier et de chemins d'accès.  Les fichiers les plus
+certain nombre de fichiers et de chemins d'accès.  Les fichiers les plus
 important sont mentionnés au chapitre
 @rlearning{Autres sources de documentation}.  Si vous venez à les
 modifier, rappelez-vous qu'ils seront écrasés à l'installation d'une
@@ -1287,8 +1532,8 @@ manière suivante@tie{}:
 
 @item
 Musique balisée précédée de @code{\keepWithTag #'@var{nom}}
 @tab Musique non balisée et musique balisée par @var{nom} seront
 incluses@tie{}; la musique balisée autrement est exclue.
+ @tab Musique non balisée et musique balisée par @var{nom} seront
+ incluses@tie{}; la musique balisée autrement est exclue.
 
 @item
 Musique balisée précédée de @code{\removeWithTag #'@var{nom}}
@@ -1296,7 +1541,7 @@ Musique balisée précédée de @code{\removeWithTag #'@var{nom}}
  seront inclus@tie{}; la musique balisée par @var{nom} est exclue.
 
 @item
-Musiqeu balisée non précédée de @code{\keepWithTag} ou
+Musique balisée non précédée de @code{\keepWithTag} ou
 @code{\removeWithTag}
  @tab Musique balisée et non balisée seront incluses.
 
@@ -1483,7 +1728,7 @@ la bibliothèque Pango pour assurer le rendu des textes multilingues.
 
 LilyPond n'effectue aucune conversion d'encodage que ce soit.  Ceci
 implique donc que tout texte, qu'il s'agisse d'un titre, de paroles ou
-même d'instruction musicale, comportant des caractères non ASCII soit
+même d'instruction musicale, comportant des caractères non ASCII, soit
 codé en UTF-8.  Le plus sûr moyen de saisir du texte de la sorte
 consiste à utiliser un éditeur supportant l'unicode et à enregistrer vos
 fichier en UTF-8.  C'est le cas pour la plupart des éditeurs actuels,
@@ -1578,38 +1823,6 @@ la manière suivante@tie{}:
 @end example
 
 
-@node Affichage de notation au format LilyPond
-@subsection Affichage de notation au format LilyPond
-@translationof Displaying LilyPond notation
-
-@funindex \displayLilyMusic
-
-La fonction musicale @code{\displayLilyMusic}, disponible uniquement
-pour un traitement en ligne de commande, permet d'afficher en
-notation LilyPond une expression musicale.  Par exemple,
-
-@example
-@{
-  \displayLilyMusic \transpose c a, @{ c4 e g a bes @}
-@}
-@end example
-
-affichera
-
-@example
-@{ a,4 cis e fis g @}
-@end example
-
-LilyPond affichera le résultat sous forme de message en console, au
-milieu de toutes les informations de compilation.  Afin d'isoler ces
-messages et enregistrer le résultat de la fonction
-@code{\display@{STUFF@}}, pensez à rediriger la sortie vers un fichier.
-
-@example
-lilypond fichier.ly >display.txt
-@end example
-
-
 @node Contrôle des sorties
 @section Contrôle des sorties
 @translationof Controlling output
@@ -1653,9 +1866,9 @@ Rien ne vous empêche d'extraire plusieurs fragments, dès lors que vous
 définissez dans la liste d'autres paires d'emplacements ryhtmiques.
 
 Cette fonctionnalité n'est toutefois effective que lorsque vous lancez
-LilyPond avec l'option @code{-dclip-systems}.  Les @qq{coupures} seront
-générées sous la forme de fichiers EPS, convertis en PDF ou PNG selon le
-format que vous aurez stipulé.
+LilyPond avec l'option @w{@code{-dclip-systems}}.  Les @qq{coupures}
+seront générées sous la forme de fichiers EPS, convertis en PDF ou PNG
+selon le format que vous aurez stipulé.
 
 Pour de plus amples informations quant au format des résultats,
 consultez le chapitre @rprogram{Lancement de lilypond}.
@@ -1689,7 +1902,7 @@ générer.  Vous pourriez aussi être amené à retravailler le début d'une
 œuvre, pour y ajouter une partie par exemple, auquel cas c'est la
 propriété @code{showFirstLength} que vous utiliserez.
 
-Vous pouvez contrôler très finement les parties à escamoter, grâce u
+Vous pouvez contrôler très finement les parties à escamoter, grâce au
 commutateur @code{Score.skipTypesetting}@tie{}: lorsqu'il est activé,
 aucune gravure n'est réalisée.
 
@@ -1720,7 +1933,7 @@ de temps.
 @cindex EPS, format de sortie
 
 En matière de partition imprimable, LilyPond génère par défaut des
-documents au format PstScript (PS) et Portable Document Format (PDF).
+documents au format PostScript (PS) et Portable Document Format (PDF).
 Vous pouvez aussi obtenir des documents au format Scalable Vector
 Graphics (SVG), Encapsulated PostScript (EPS) ou Portable Network
 Graphics (PNG) dès lors que vous aurez lancé LilyPond en ligne de
@@ -1755,7 +1968,7 @@ Et ces même mesures avec la police de LilyPond, Feta@tie{}:
 Téléchargez puis décompressez l'archive zip.  Recopiez le répertoire
 @code{lilyfonts} dans  @file{@var{SHARE_DIR}/lilypond/current} -- voir
 @rlearning{Autres sources de documentation} à ce sujet.  Renommez le
-répertoire @code{fonts} qui s'y trouve en @code{fonts_orig}, puis les
+répertoire @code{fonts} qui s'y trouve en @code{fonts_orig}, puis le
 répertoire @code{lilyfonts} en @code{fonts}.  Il vous suffira, pour
 retrouver la fonte Feta, de renommer @code{fonts_orig} en @code{fonts}.
 
@@ -1766,26 +1979,33 @@ Manuel d'initiation :
 
 @knownissues
 
-Gonville ne permet pas de générer de la notation ancienne.  Consultez le
-site de l'auteur pour de plus amples informations ainsi qu'à propos des
-conditions d'utilisation.
+Gonville ne permet pas de générer de la notation ancienne, et certains
+glyphes ajoutés depuis lors aux jeux de caractères en soient absent.
+Consultez le site de l'auteur pour de plus amples informations ainsi
+qu'à propos des conditions d'utilisation.
 
 
 @node Sortie MIDI
 @section Sortie MIDI
 @translationof MIDI output
 
+@cindex son
+@cindex MIDI
+
 MIDI (Musical Instrument Digital Interface) constitue un standard en
 matière de connexion et de contrôle des instruments électroniques.  Un
 fichier MIDI contient une série de notes réparties dans différentes
 pistes.  Il ne s'agit en rien d'un fichier sonore@tie{}; il vous faudra
-un logiciel capable de traduire ces séries de notes en sons.
+un logiciel capable de traduire ces séries de notes en sons réels.
 
 Vous pouvez convertir vos partition en fichier MIDI de manière à
 entendre ce que vous avez saisi.  Ceci vous permet de contrôler aisément
 ce que vous avez saisi@tie{}: octaves et altérations erronées heuteront
 votre oreille avertie grâce au MIDI.
 
+Le fichier MIDI généré par LilyPond est relativement brut.  Vous pouvez
+cependant obtenir un meilleur rendu avec @ref{Le script Articulate}.
+
 @c TODO Check this
 Dans une sortie MIDI, LilyPond alloue un canal à chaque portée, plus un
 pour les réglages globaux.  Par voie de conséquence, un fichier MIDI ne
@@ -1800,6 +2020,7 @@ silencieuses.
 * Répétitions et MIDI::
 * Gestion des nuances en MIDI::
 * MIDI et percussions::
+* Le script Articulate::
 @end menu
 
 
@@ -1941,7 +2162,7 @@ est comparable à ce lui du bloc @code{\layout}, voire plus simple.  Si
 le bloc @code{\midi} est la plupart du temps laissé vide, il peut
 contenir des aménagements pour certains contextes, la définition de
 contextes particuliers ou du code permettant de déterminer la valeur de
-certianes propriétés.  L'exemple suivant détermine le tempo initial du
+certaines propriétés.  L'exemple suivant détermine le tempo initial du
 fichier MIDI tout en se passant de son indication sur la partition
 imprimée.
 
@@ -2023,6 +2244,10 @@ commande @code{\score}.
 @cindex MIDI, accords nommés
 @cindex Rythme en MIDI
 @cindex MIDI, Rythme
+@cindex articulations et MIDI
+@cindex MIDI et articulations
+@cindex trilles et MIDI
+@cindex MIDI et trilles
 @c TODO etc
 
 Un fichier MIDI généré par LilyPond comprendra les éléments de notation
@@ -2050,7 +2275,7 @@ les tremolos, exceptés ceux utilisant la syntaxe
 les liaisons de prolongation ;
 
 @item
-les indications de nuance
+les indications de nuance ;
 
 @item
 les crescendos et decrescendos s'étalant sur plusieurs notes@tie{};
@@ -2062,6 +2287,15 @@ les changements de tempo indiqués par un @code{\tempo}@tie{};
 les paroles.
 @end itemize
 
+Si vous utilisez @ref{Le scrip Articulate}, d'autres éléments seront
+alors inclus@tie{}:
+
+@itemize
+@item articulations (lié, staccato, etc.),
+@item trilles et groupettos,
+@item rallentando et accelerando.
+@end itemize
+
 
 @unnumberedsubsubsec Éléments non pris en compte dans le MIDI
 @translationof Unsupported in MIDI
@@ -2069,7 +2303,7 @@ les paroles.
 @c TODO index as above
 
 LilyPond ne peut générer d'événement MIDI pour les éléments
-suivant@tie{}:
+suivant, sauf à utiliser @ref{Le scrip Articulate}@tie{}:
 
 @itemize
 @item
@@ -2104,6 +2338,7 @@ les accords en microtonalité.
 @translationof Repeats in MIDI
 
 @cindex reprises développées
+@cindex MIDI et reprises
 @funindex \unfoldRepeats
 
 Au prix de quelques réglages, les reprises de toutes sortes peuvent être
@@ -2126,6 +2361,10 @@ en reprises de type @code{unfold}.
 \bar "|."
 @end lilypond
 
+Dans une partition comportant plusieurs voix, le développement des
+reprises ne sera effectif en MIDI qu'à la condition que ces reprises
+soient mentionnée correctement dans @strong{toutes} les voix.
+
 Lorsque l'on veut utiliser @code{\unfoldRepeats} seulement pour le rendu
 MIDI, il faut établir deux blocs @code{\score}@tie{}: un pour le MIDI,
 avec des reprises explicites, et l'autre pour la partition, avec des
@@ -2172,7 +2411,7 @@ que vous avez indiqué par @code{\rfz}.  Cette indication de nuance
 n'étant pas répertoriée dans le jeu par défaut, elle ne produira aucun
 effet en MIDI.  Il en sera d'ailleurs de même pour toute indication
 créée de toute pièce à l'aide de l'instruction
-@code{make-dynamic-script}.  Voici comment procéder pour ajuster le
+@w{@code{make-dynamic-script}}.  Voici comment procéder pour ajuster le
 volume MIDI de ce @notation{rinforzando} que le compositeur a indiqué.
 La fonction Scheme définit une fraction de 0,9 en cas de @notation{rfz},
 et demande d'utiliser la fonction par défaut dans les autre cas.
@@ -2445,3 +2684,154 @@ son le plus proche dans la banque standard.
 Le standard @emph{general MIDI} ne dispose pas du @emph{rim shot}@tie{};
 LilyPond lui subtitue un @emph{sidestick}.
 
+
+@node Le script Articulate
+@subsection Le script Articulate
+@translationof The Articulate script
+
+Vous obtiendrez un rendu MIDI plus @qq{réaliste} grâce au script
+@code{articulate}.  Celui-ci va tout faire pour d'une part prendre en
+compte les articulations (liaisons, staccato, etc.) -- en ajoutant un
+blanc aux notes raccourcies -- et, d'autre part, développer les trilles
+ou groupettos ainsi que tenir compte des éventuels rallentando et
+accelerando.
+
+L'utilisation du script @code{articulate} se fait en deux temps.  Vous
+devez dans un premier temps inclure son fichier d'initialisation en
+ajoutant en tête de votre fichier la ligne
+
+@example
+\include "articulate.ly"
+@end example
+
+puis, dans le bloc @code{\score}, indiquer que toutes les répétitions
+seront développées et appliquer la commande à votre musique@tie{}:
+
+@example
+\unfoldRepeats \articulate <<
+       tout le reste du bloc contenant la partition...
+>>
+@end example
+
+Une fois votre fichier modifié de la sorte, vous constaterez que la
+version imprimable aura été modifiée en profondeur.  Le bloc
+@code{\midi} produira par contre un fichier MIDI de bien meilleure
+qualité.
+
+Bien que cela ne gène en rien le fonctionnement du script
+@code{articulate}, lui adjoindre la commande @code{\unfoldRepeats} comme
+illustré ci-dessus permettra le rendu d'un certain nombre
+d'articulations tels les trilles.
+
+@knownissues
+
+Dans la mesure où la script @code{articulate} tend à raccourcir les
+accords, certaines musiques, notamment pour l'orgue, paraîtront de moins
+bonne qualité.
+
+
+@node Extraction d'informations musicales
+@section Extraction d'informations musicales
+@translationof Extracting musical information
+
+En plus de générer du graphisme et du MIDI, LilyPond peut présenter
+l'information musicale sous forme textuelle.
+
+@menu
+* Affichage de notation au format LilyPond::
+* Affichage de la musique sous forme d'expression scheme::
+* Enregistrement d'événements musicaux dans un fichier::
+@end menu
+
+
+@node Affichage de notation au format LilyPond
+@subsection Affichage de notation au format LilyPond
+@translationof Displaying LilyPond notation
+
+@funindex \displayLilyMusic
+
+La fonction musicale @code{\displayLilyMusic}, disponible uniquement
+pour un traitement en ligne de commande, permet d'afficher en
+notation LilyPond une expression musicale.  Par exemple,
+
+@example
+@{
+  \displayLilyMusic \transpose c a, @{ c4 e g a bes @}
+@}
+@end example
+
+affichera
+
+@example
+@{ a,4 cis e fis g @}
+@end example
+
+LilyPond affichera le résultat sous forme de message en console, au
+milieu de toutes les informations de compilation.  Afin d'isoler ces
+messages et enregistrer le résultat de la fonction
+@code{\display@{MATÉRIAU@}}, pensez à rediriger la sortie vers un
+fichier.
+
+@example
+lilypond fichier.ly >display.txt
+@end example
+
+
+@node Affichage de la musique sous forme d'expression scheme
+@subsection Affichage de la musique sous forme d'expression scheme
+@translationof Displaying scheme music expressions
+
+Voir @rextend{Displaying music expressions}.
+
+
+@node Enregistrement d'événements musicaux dans un fichier
+@subsection Enregistrement d'événements musicaux dans un fichier
+@translationof Saving music events to a file
+
+LilyPond vous permet de sauvegarder dans un fichier séparé, sur la base
+de la portée, les événements musicaux.  Vous devrez pour ce faire
+inclure dans votre fichier maître un fichier d'initialisation
+spécifique@tie{}:
+
+@example
+\include "event-listener.ly"
+@end example
+
+Pour chaque portée que comporte votre partition, vous obtiendrez un
+fichier @file{NOMFICHIER-PORTÉENOMMÉE.notes} ou
+@file{NOMFICHIER-unnamed-staff.notes}.  Notez bien que si plusieurs
+portées ne sont pas explicitement nomées, tous leurs événements seront
+regroupés et mélangés dans le même fichier.  Le résultat ressemblera à
+ceci@tie{}:
+
+@example
+0.000   note     57       4   p-c 2 12
+0.000   dynamic  f
+0.250   note     62       4   p-c 7 12
+0.500   note     66       8   p-c 9 12
+0.625   note     69       8   p-c 14 12
+0.750   rest     4
+0.750   breathe
+@end example
+
+Il s'agit d'un tableau dont les colonnes sont délimitées par une
+tabulation.  Chaque ligne comporte deux champs fixes suivis d'un certain
+nombre de paramètres optionnels.
+
+@example
+@var{temps}  @var{type}  @var{...paramètres...}
+@end example
+
+Ces informations peuvent faire l'objet d'un retraîtement par d'autres
+programmes, comme des scripts python, aux fins de recherche en analyse
+musicologique ou des expériences à partir du rendu de LilyPond.
+
+
+@knownissues
+
+Tous les événements ne sont pas pris en charge par
+@file{event-listener.ly}.  Il s'agit en premier lieu d'une
+démonstration, un @qq{proof of concept} du potentiel de LilyPond.  Si
+certains des éléments que vous cherchez à obtenir n'apparaîssent pas,
+recopiez le fichier @file{event-listener.ly} dans votre répoertoire et
+modifiez-le de telle sorte qu'il travaille selon vos attentes.
index 9a0ed9e98794fd8bc8e4ed543407a964a7593255..9a5623913d0f20c15a6f96af75bdf8bcda150ab9 100644 (file)
@@ -457,7 +457,7 @@ celle de l'autre portée.
         % extend the stems to reach the other staff
         \override Stem #'length = #12
         % do not print extra flags
-        \override Stem #'flag-style = #'no-flag
+        \override Flag #'style = #'no-flag
         % prevent beaming as needed
         a8 g4 f8 f bes\noBeam g4
       }
index 980ce5bc126c97ee9ae8c2ccf6bd1c8e2f01562e..7fa677c7434d230ba76d9e4231614b1263cf39f6 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+    Translation of GIT committish: a6b5eea83ddcdd8e1fd0760db385176ff9b2b1cd
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -19,6 +19,7 @@
 @menu
 * Table des noms d'accord::
 * Modificateurs d'accord usuels::
+* Accordages prédéfinis::
 * Diagrammes d'accord prédéfinis::
 * Instruments MIDI::
 * Liste des couleurs::
@@ -32,6 +33,7 @@
 * Liste des propriétés de contexte::
 * Propriétés de mise en forme::
 * Fonctions musicales::
+* Identificateurs de modification de contexte::
 * Types de prédicats prédéfinis::
 * Fonctions Scheme::
 @end menu
@@ -396,6 +398,16 @@ Quarte juste et quqinte juste
 @end multitable
 
 
+@node Accordages prédéfinis
+@appendixsec Accordages prédéfinis
+@translationof Predefined string tunings
+
+La liste suivante répertorie les différents accordages dont LilyPond
+dispose.
+
+@lilypondfile{display-predefined-string-tunings.ly}
+
+
 @node Diagrammes d'accord prédéfinis
 @appendixsec Diagrammes d'accord prédéfinis
 @translationof Predefined fretboard diagrams
@@ -408,6 +420,11 @@ La liste suivante répertorie les tablatures prédéfinies pour le ukulele.
 
 @lilypondfile{display-predefined-ukulele-fretboards.ly}
 
+La liste suivante répertorie les tablatures prédéfinies pour la
+mandoline.
+
+@lilypondfile{display-predefined-mandolin-fretboards.ly}
+
 
 @node Instruments MIDI
 @appendixsec Instruments MIDI
@@ -1068,6 +1085,16 @@ attacher à une note (p.ex. @code{c\accent})@tie{}:
 @include identifiers.tely
 
 
+@node Identificateurs de modification de contexte
+@appendixsec Identificateurs de modification de contexte
+@translationof Context modification identifiers
+
+Les commandes suivantes permettent de modifier des contextes au sein
+d'un bloc @code{\layout} ou @code{\with}.
+
+@include context-mod-identifiers.tely
+
+
 @node Types de prédicats prédéfinis
 @appendixsec Types de prédicats prédéfinis
 @translationof Predefined type predicates
index eefb9d653d607fbac438477a03ef4d582ed2e92a..87501e1a0899d6580b94a9306f030500421c2595 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-    Translation of GIT committish: 531484474ef15eb237ae185373bc95c37d0c0127
+    Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 9b1796b10ee93ccb3500459e1c30ae9be22cf42a..5d15218fe1af9416b302e5e5e7959a504b16ac0e 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: 657b89ab28b463ccda7991070242353cf38dc25d
+    Translation of GIT committish: f93e4199873c91ae32f0e84a610d14853dc379df
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -61,7 +61,7 @@ L'agencement général d'une partition dépend de trois facteurs
 interdépendants@tie{}: la mise en page, les sauts de ligne et
 l'espacement.  Les choix faits en matière d'espacement détermineront la
 densité de chacun des systèmes, ce qui influera sur le positionnement
-des sauts de lignes et, par voie de conséquence, sur le nombre de pages
+des sauts de ligne et, par voie de conséquence, sur le nombre de pages
 de la partition.
 
 En pratique, cette procédure comporte quatre étapes.  Dans un premier
@@ -143,7 +143,7 @@ mise en page, et
 
 @item
 la définition des différents @emph{markups} qui personnaliseront la mise
-en forme des entêtes, pied de page et titrages.
+en forme des entêtes et pieds de page ainsi que des titrages.
 
 @end itemize
 
@@ -245,8 +245,8 @@ Le format du papier est déterminé par deux fonctions différentes@tie{}:
 La seule restriction à l'utilisation isolée de la fonction
 @code{set-default-paper-size} est qu'elle doit intervenir avant le
 premier bloc @code{\paper}.  À l'intérieur d'un bloc @code{\paper}, il
-vaut mieux utiliser la fonction @code{set-paper-size}, avant toute autre
-variables.  Les raisons à ceci sont abordées dans la rubrique
+vaut mieux utiliser la fonction @code{set-paper-size} avant toute autre
+variable.  Les raisons à ceci sont abordées dans la rubrique
 @ref{Adaptation automatique au format}.
 
 @code{set-default-paper-size} fixe le format pour toutes les pages,
@@ -354,8 +354,8 @@ Les valeurs par défaut (avant étalonnage) sont définies dans le fichier
 
 La hauteur de la feuille.  Il s'agit par défaut de la dimension du
 papier utilisé.  Notez bien que cette variable n'affectera pas
-l'ajustement automatique d'un certain nombre de dimmensionnement
-vertical.
+l'ajustement automatique d'un certain nombre de dimmensionnements
+verticaux.
 
 @item top-margin
 @funindex top-margin
@@ -613,7 +613,7 @@ Manuel de notation :
 Morceaux choisis :
 @rlsrnamed{Spacing,Espacements}.
 
-Snippets:
+Morceaux choisis :
 @rlsrnamed{Spacing,Espacements}.
 
 
@@ -837,8 +837,8 @@ Manuel de notation :
 Fichiers d'initialisation :
 @file{ly/paper-defaults-init.ly}.
 
-Snippets:
-@rlsr{Spacing}.
+Morceaux choisis :
+@rlsrnamed{Spacing, Espacements}.
 
 
 @node Autres variables du bloc \paper
@@ -911,7 +911,7 @@ Les valeurs par défaut sont définies dans le fichier
 
 Pénalité pour apparition d'une page blanche entre deux partitions.  Sa
 valeur est par défaut inférieure à celle de
-@code{blank-page-force}@tie{}; nous préférons q'une page blanche
+@code{blank-page-force}@tie{}; nous préférons qu'une page blanche
 s'insère après la fin de la partition plutôt qu'au milieu.
 
 @item blank-last-page-force
@@ -1104,14 +1104,14 @@ concerner toutes les partitions d'un même ouvrage, auquel cas un bloc
 @code{\layout} indépendant se placera en tête de fichier.  Dans le cas
 où la mise en forme concerne une partition en particulier, un bloc
 @code{\layout} se placera au sein du bloc @code{\score} en question.
-Sont susceptibles d'apparître dans un bloc @code{\layout}@tie{}:
+Sont susceptibles d'apparaître dans un bloc @code{\layout}@tie{}:
 
 @itemize
 @item
 la fonction scheme @code{layout-set-staff-size},
 
 @item
-dans des blocs @code{\contexte}, les  modifications apportées aux
+dans des blocs @code{\context}, les  modifications apportées aux
 différents contextes, et
 
 @item
@@ -1408,7 +1408,7 @@ ailleurs@tie{}:
     s1 \noBreak s1 \noBreak
     s1 \noBreak s1 \break
   @}
-  @{ @var{the actual music@dots{}} @}
+  @{ @var{et ici la musique@dots{}} @}
 >>
 @end example
 
@@ -1486,7 +1486,7 @@ Lorsqu'un ouvrage contient plusieurs partitions et un certain nombre de
 pages, la gestion des sauts de page finit par devenir très gourmande,
 tant au niveau du processeur que de la mémoire.  Vous pouvez cependant
 alléger la charge en recourant à des blocs @code{\bookpart} afin de
-sectionner l'ouvrage que vous traitez@tie{}; les sauts de pages seront
+sectionner l'ouvrage que vous traitez@tie{}; les sauts de page seront
 alors gérés individuellement au niveau de chacune des parties.  Par
 ailleurs, cela vous autorisera une gestion différente selon les
 sections.
@@ -1578,7 +1578,7 @@ de l'œuvre.  Vous pouvez alors recourir au @code{Page_turn_engraver} que
 vous mentionnerez dans un contexte de voix ou de portée.  Ce graveur de
 tournes recherchera dans le contexte en question les passages sans note.
 Notez bien qu'il ne recherche pas des silences, mais l'absence de
-notes@tie{}; autrement dit, il ne restera pas inactif dans la cadre
+notes@tie{}; autrement dit, il ne restera pas inactif dans le cadre
 d'une portée polyphonique dont l'une des parties contiendrait des
 silences.  Lorsqu'il rencontre un fragment suffisamment long ne
 contenant aucune note, il insère un @code{\allowPageTurn} à la barre
@@ -1911,13 +1911,13 @@ la distance entre une ligne de non-portée alors que sa
 @code{staff-affinity} a été déterminée à @code{#UP}.
 
 Toutes ces distances sont mesurées entre les points de référence
-respectifs de éléments considérés.
+respectifs des éléments considérés.
 Le @i{point de référence} d'une portée est le centre vertical du
 @code{StaffSymbol} -- la ligne médiane si @code{line-count} est impair,
 l'interligne médian si @code{line-count} est pair.
 Quant aux lignes rattachées à des portées -- lignes de non-portée -- le
-tableau suivant présente le @i{point de référence} pour chacun d'entre
-eux@tie{}:
+tableau suivant présente le @i{point de référence} pour chacune
+d'elles@tie{}:
 
 @multitable {Non-staff line} {Reference point}
 @headitem Ligne de non-portée @tab Point de référence
@@ -1955,8 +1955,10 @@ labelContext =
   \context { \Dynamics    \alignToZero }
   \context { \FiguredBass \alignToZero }
   \context { \Lyrics      \alignToZero }
-  \context { \NoteNames   \alignToZero }
-  \context { \ChordNames  \alignToZero \lowerCaseChords }
+  \context { \NoteNames   \alignToZero \staffAffinityDown }
+  \context { \ChordNames  \alignToZero
+                          \staffAffinityDown
+                          \lowerCaseChords }
   \context { \FretBoards  \alignToZero \staffAffinityDown }
   \context { \Score
     \override BarLine #'stencil = ##f
@@ -1990,7 +1992,7 @@ labelContext =
     \set RhythmicStaff.instrumentName = #"centre vertical "
     \labelContext "Dynamics" s1*3
   }
-  \new Dynamics { s2\mp s\fp }
+  \new Dynamics { s1\mp s\fp }
 >>
 
 %% Le point de référence de FiguredBass est son point le plus haut
@@ -2083,13 +2085,13 @@ d'un @code{VerticalAxisGroup} affectera les propriétés du
 elle s'appliquera au @code{default-staff-staff-spacing} en l'absence de
 regroupement.  Les portées peuvent donc s'aligner différemment selon
 qu'elles sont ou non regroupées.  Pour obtenir le même espacement sans
-tenir compte dees éventuels regroupements, cette fonction peut faire
+tenir compte des éventuels regroupements, cette fonction peut faire
 place à une complète redéfinition des espacements fluctuants à l'aide de
 règles dérogatoires comme vu précédemment.
 
 @item default-staff-staff-spacing
 Il s'agit de la distance qui s'appliquera par défaut aux portées
-isolées, à loins que @code{staff-staff-spacing} n'ait été redéfini
+isolées, à moins que @code{staff-staff-spacing} n'ait été redéfini
 explicitement par un @code{\override}.
 
 @item staff-affinity
@@ -2105,7 +2107,7 @@ Une ligne de non-portée en dessous d'un système devrait avoir sa
 @code{staff-affinity} définie à @code{UP}.  De la même manière, lorsque
 cette ligne surplombe un système, sa @code{staff-affinity} devrait être
 définie à @code{DOWN}.  Prenez garde à la valeur que vous affectez à
-@code{staff-affinity}@tie{}: si vous lui affectez la valeur @code{#f} à
+@code{staff-affinity}@tie{}: si vous affectez la valeur @code{#f} à
 une ligne de non-portée, cette ligne sera considérée comme étant une
 portée@tie{}; à l'inverse, utiliser la propriété @code{staff-affinity}
 pour une portée lui fera perdre cette qualité.
@@ -2124,9 +2126,9 @@ non-portée est présente (quelque soit le côté).
 
 @item nonstaff-nonstaff-spacing
 Il s'agit de la distance entre deux lignes de non-portée selon
-l'orientation définie par @code{staff-affinity} et qu'elles ont la même
-orientation.  Bien entendu, ceci ne peut concerner que les valeurs
-@code{UP} et @code{DOWN} de @code{staff-affinity}.
+l'orientation définie par @code{staff-affinity} et dès lors qu'elles ont
+la même orientation.  Bien entendu, ceci ne peut concerner que les
+valeurs @code{UP} et @code{DOWN} de @code{staff-affinity}.
 
 @item nonstaff-unrelatedstaff-spacing
 Il s'agit de la distance entre une ligne de non-portée et la portée à
@@ -2149,7 +2151,7 @@ d'un @code{\override} au niveau d'un contexte @code{StaffGroup} (ou son
 @item staff-staff-spacing
 Il s'agit de la distance entre deux portées consécutives d'un même
 système.  La propriété @code{staff-staff-spacing} de l'objet
-@code{VerticalAxisGroup} d'un portée en particulier peut se redéfinir à
+@code{VerticalAxisGroup} d'une portée en particulier peut se redéfinir à
 l'aide de règles dérogatoires.
 
 @item staffgroup-staff-spacing
@@ -2203,8 +2205,8 @@ ces portées sont regroupées -- voir
 L'exemple suivant illustre la manière de gérer l'espacement de portées
 isolées à l'aide de la propriété @code{default-staff-staff-spacing}.
 Les mêmes règles appliquées de manière dérogatoire au
-@code{staff-staff-spacing} produiront les mêmes effets, y comris au sein
-de regroupements.
+@code{staff-staff-spacing} produiront les mêmes effets, y compris au
+sein de regroupements.
 
 @lilypond[verbatim,quote,staffsize=16]
 \layout {
@@ -2261,7 +2263,7 @@ souvent que des portées soient regroupées.  L'espacement est alors plus
 important entre deux regroupements qu'entre les portées d'un même
 groupe.  
 
-Les @i{regroupement de portées} tels le @code{StaffGroup} ou le
+Les @i{regroupements de portées} tels le @code{StaffGroup} ou le
 @code{ChoirStaff} sont des contextes qui peuvent contenir simultanément
 une ou plusieurs portées.
 
@@ -2284,7 +2286,7 @@ Ces propriétés d'objet graphique sont expliquées une à une au chapitre
 @ref{Propriétés d'espacement au sein d'un système}.
 
 L'exemple suivant illustre la manière de gérer l'espacement de portées
-regroupes, à l'aide des propriétés de l'objet graphique
+regroupées, à l'aide des propriétés de l'objet graphique
 @code{StaffGrouper}@tie{}:
 
 @lilypond[verbatim,quote,staffsize=16]
@@ -2632,7 +2634,7 @@ Dans la mesure où @code{NonMusicalPaperColumn
 #'line-break-system-details} permet de positionner systèmes et portées
 n'importe où sur une page, vous pourriez être en contradiction avec les
 dimensionnements de la feuille ou bien aboutir à des surimpressions.
-Soyez donc raisonnables quant aux différentes valeurs que vous affectez
+Soyez donc raisonnable quant aux différentes valeurs que vous affectez
 à ces réglages.
 
 @end itemize
@@ -2656,7 +2658,7 @@ matière de notation musicale appartiennent à la portée, et que
 d'autres se placent en dehors de la portée.  Entre autres objets
 externes, nous avons les marques repères, les textes et les
 nuances@tie{}; nous les appellerons @qq{objets extérieurs à la portée}.
-La règle qu'applique LilyPond pour positionner verticalement ces
+La règle adoptée par LilyPond pour positionner verticalement ces
 objets extérieurs consiste à les placer au plus près de la portée
 tout en prenant garde d'éviter qu'il y ait chevauchement.
 
@@ -2759,7 +2761,7 @@ la note un espace fixé d'après la propriété @code{spacing-increment}.
 
 L'exemple suivant comporte des blanches, des noires et un certain nombre
 de croches.  La croche est suivie d'un espace de la largeur d'une tête
-de note@tie{}; pour la noire , cette espace est de deux têtes@tie{}; il
+de note@tie{}; pour la noire , cet espace est de deux têtes@tie{}; il
 est de trois pour la blanche.
 
 @lilypond[quote,verbatim,relative=1]
@@ -3019,7 +3021,7 @@ lignes et l'indentation de la première.
 L'activation du commutateur @code{ragged-right} au sein du bloc
 @code{\layout} permet de terminer les systèmes naturellement plutôt que
 de les voir s'étirer sur toute la largeur de la page.  Cette option est
-particulièrement utile lorsque vous traitez de courts fragment, ou bien
+particulièrement utile lorsque vous traitez de courts fragments, ou bien
 pour vérifier ce que donnerait l'espacement naturel.  Bien qu'il soit
 désactivé par défaut, il sera activé si la partition ne comporte qu'un
 seul système.
@@ -3109,7 +3111,7 @@ n'en occupent pas la moitié de l'espace horizontal.
 
 En matière de gravure traditionnelle, cet espacement correspond tout à
 fait à nos attentes, puisque nous pouvons rogner l'espace sur la
-blanche et ainsi en gagner en largeur sur toute la mesure qui fait une
+blanche et ainsi gagner en largeur sur toute la mesure qui fait une
 ronde.
 
 Par contre, si nous avons besoin d'insérer une indication temporelle ou
@@ -3149,7 +3151,7 @@ propriétés d'un contexte à trois différents endroits de votre
 fichier@tie{}: dans un bloc @code{\with}, dans un bloc @code{\context}
 ou au beau milieu de la musique à l'aide de la commande @code{\set}.
 Vous pouvez donc définir @code{proportionalNotationDuration} selon l'une
-de ces trois façons, à l'instar de n'importe quel définition de
+de ces trois façons, à l'instar de n'importe quelle définition de
 contexte.
 
 La propriété @code{proportionalNotationDuration} prend en unique
@@ -3228,7 +3230,7 @@ une durée de référence élevée produira une musique resserrée.
 Vous ne manquerez pas de noter qu'une durée de référence trop grande,
 comme la croche pour la première ligne, a pour conséquence de resserrer
 la musique, ce qui peut aboutir à des chevauchements de têtes.  Vous
-remarquez aussi que , par principe, la notation proportionnelle occupe
+remarquez aussi que, par principe, la notation proportionnelle occupe
 beaucoup plus d'espace horizontal que l'espacement traditionnel.  La
 notation proportionnelle met en évidence le rythme au détriment de
 l'espacement horizontal.
@@ -3440,8 +3442,8 @@ pouvez le constater, l'activation de @code{strict-note-spacing} a pour
 conséquence que l'algorithme d'espacement ignore tout bonnement la
 largeur des métriques, armures, clefs et altérations.
 
-En plus ceux que nous venons de voir, vous trouverez d'autres réglages
-en usage dans la notation proportionnelle comme, entre autres,
+En plus de ceux que nous venons de voir, vous trouverez d'autres
+réglages en usage dans la notation proportionnelle comme, entre autres,
 
 @itemize
 @item @code{\override SpacingSpanner #'strict-grace-spacing = ##t}
@@ -3471,13 +3473,13 @@ Morceaux choisis :
 @section Réduction du nombre de pages de la partition
 @translationof Fitting music onto fewer pages
 
-Vous pourriez un jour être confronté au problème suiven@tie{}: l'une
+Vous pourriez un jour être confronté au problème suivant@tie{}: l'une
 des pages de votre partition ne comporte que deux portées alors que --
 ce qui est d'autant plus frustrant -- l'espace libre sur les autres
 pages aurait permis une distribution différente.
 
 L'instruction @code{annotate-spacing} se révèle être un outil
-indispensable pour pour l'analyse des problèmes de mise en forme.  Cette
+indispensable pour l'analyse des problèmes de mise en forme.  Cette
 commande met en surimpression la valeur des différentes variables
 d'espacement et de mise en forme, comme nous allons le voir dans la
 rubrique @ref{Mise en évidence de l'espacement}.
index 864be49f6c7af20d45b8d7c2032e0401a80cdba8..e0553937ca460101c2df8ae9e7e965e5de736cd2 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+    Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 0988fd9ea187f4555a9e3cd53a96c16d35bcc6a1..36e3bc57bc33d246d9a252ddbac6e2728513d381 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+    Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 0dcc91e68e6d8dabee69e3b6cf06b8e3a540df18..3ac73a8e7cd8d3f29518039fc9156f631a7e7468 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+    Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
diff --git a/Documentation/fr/texidocs/changing-fret-orientations.texidoc b/Documentation/fr/texidocs/changing-fret-orientations.texidoc
new file mode 100644 (file)
index 0000000..428036f
--- /dev/null
@@ -0,0 +1,11 @@
+%% Translation of GIT committish: 40bf2b38d674c43f38058494692d1a0993fad0bd
+
+  texidocfr = "
+Les diagrammes de fret peuvent s'orienter de trois manières différentes.
+Ils s'aligneront par défaut sur la corde du haut ou le sommet du fret.
+
+
+"
+
+  doctitlefr = "Orientation des diagrammes de fret"
+
diff --git a/Documentation/fr/texidocs/chord-glissando-in-tablature.texidoc b/Documentation/fr/texidocs/chord-glissando-in-tablature.texidoc
new file mode 100644 (file)
index 0000000..a27af09
--- /dev/null
@@ -0,0 +1,12 @@
+%% Translation of GIT committish: 40bf2b38d674c43f38058494692d1a0993fad0bd
+
+  texidocfr = "
+Un glissando sur des accords s'indique dans un @code{TabStaff} de la
+même manière que dans un @code{Staff}, à ceci près que nous aurons
+besoin des numéros de corde afin de déterminer correctement les frets
+d'arrivée.
+
+"
+
+  doctitlefr = "Glissando d'accords et tablature"
+
diff --git a/Documentation/fr/texidocs/chordchanges-for-fretboards.texidoc b/Documentation/fr/texidocs/chordchanges-for-fretboards.texidoc
new file mode 100644 (file)
index 0000000..8ef85c4
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: 40bf2b38d674c43f38058494692d1a0993fad0bd
+  texidocfr = "
+Vous pouvez opter pour n'imprimer les diagrammes de fret qu'à l'occasion
+d'un changement d'accord ou de saut de ligne.
+
+"
+
+  doctitlefr = "Changement d'accord et diagramme de fret"
+
diff --git a/Documentation/fr/texidocs/customizing-fretboard-fret-diagrams.texidoc b/Documentation/fr/texidocs/customizing-fretboard-fret-diagrams.texidoc
new file mode 100644 (file)
index 0000000..af95d01
--- /dev/null
@@ -0,0 +1,12 @@
+%% Translation of GIT committish: 40bf2b38d674c43f38058494692d1a0993fad0bd
+  texidocfr = "
+Les propriétés d'un diagramme de fret sont définies par les
+@code{fret-diagram-details}.  En matière de diagramme FretBoards, les
+adaptations s'appliquent à l'objet @code{FretBoards.FretBoard}.  Un
+@code{FretBoard} est comparable à un @code{Voice}@tie{}: il s'agit
+d'un contexte du plus bas niveau, et il n'est donc pas primordial de
+l'instancier de manière explicite pour adapter ses propriétés.
+
+"
+  doctitlefr = "Personnalisation de diagrammes de fret"
+
index 41eb5941256fdcde3eddd4edb4cb7fbabbfec6f5..41fab7a2e605633043bb2cecafe59eac492fcd50 100644 (file)
@@ -1,9 +1,9 @@
-%% Translation of GIT committish: a06cb0b0d9593ba110e001f2b0f44b8bef084693
+%% Translation of GIT committish: a6b5eea83ddcdd8e1fd0760db385176ff9b2b1cd
 
   texidocfr = "
 Il s'agit de fonctions postfix pour personnaliser l'extension des
 crescendos textuels.  L'extension devrait débuter sur la première notte
-de la mesure.  Il faut utiliser @code{-\mycresc} -- comme une
+de la mesure.  Il faut utiliser @w{@code{-\mycresc}} -- comme une
 articulation -- sous peine que le départ de l'extension n'apparaisse
 qu'à la note suivante.
 "
index 80b093819eb927676d2bddab0f086abe17b346fc..5cecca96fa1371ddd0dff9a9aa22f7ffe6922d30 100644 (file)
@@ -1,9 +1,9 @@
-%% Translation of GIT committish: ac6297e4fa174ac5759cc450ad085c2fac9ba00b
+%% Translation of GIT committish: 40bf2b38d674c43f38058494692d1a0993fad0bd
 
   texidocfr = "
 L'exemple suivant illustre comment combiner des doigtés pour la main
-gauche, des indications de corrde et des doigtés pour la main droite.
+gauche, des indications de corde et des doigtés pour la main droite.
 
 "
-  doctitlefr = "Doigtés, indications de cordeet doigtés main droite"
+  doctitlefr = "Doigtés, indications de cordeet doigtés main droite"
 
diff --git a/Documentation/fr/texidocs/fretboards-alternate-tables.texidoc b/Documentation/fr/texidocs/fretboards-alternate-tables.texidoc
new file mode 100644 (file)
index 0000000..6a67efa
--- /dev/null
@@ -0,0 +1,21 @@
+%% Translation of GIT committish: 40bf2b38d674c43f38058494692d1a0993fad0bd
+
+  texidocfr = "
+Vous pouvez tout à fait créer des tables de diagrammes de fret
+supplémentaires, notamment dans l'optique d'un fret alternatif pour un
+accord donné.
+
+Avant de pouvoir utiliser un diagramme alternatif, vous devrez alimenter
+une table à cet effet.  Les différents diagrammes seront ajoutés à cette
+table.
+
+Il peut aussi bien s'agir d'une table vide, que de la recopie d'une
+table existante.
+
+La table servant de base pour les diagrammes prédéfinis est sélectionnée
+par la propriété @code{\\predefinedDiagramTable}.
+
+"
+
+  doctitlefr = "Diagrammes de fret alternatifs"
+
diff --git a/Documentation/fr/texidocs/fretted-string-harmonics-in-tablature.texidoc b/Documentation/fr/texidocs/fretted-string-harmonics-in-tablature.texidoc
new file mode 100644 (file)
index 0000000..aab0d4c
--- /dev/null
@@ -0,0 +1,6 @@
+%% Translation of GIT committish: 40bf2b38d674c43f38058494692d1a0993fad0bd
+  texidocfr = "
+Harmoniques et tablature (harmoniques artificielles)
+"
+  doctitlefr = "Harmoniques et tablature"
+
index ef5a60788f30f975e0b15edeb08c7548b6abee18..f1d48bf23f742c86f82c2a1213cb9c77c8ddd06f 100644 (file)
@@ -1,11 +1,11 @@
-%% Translation of GIT committish: 217cd2b9de6e783f2a5c8a42be9c70a82195ad20
+%% Translation of GIT committish: a6b5eea83ddcdd8e1fd0760db385176ff9b2b1cd
   texidocfr = "
 Les raccourcis sont répertoriés dans le fichier
 @file{ly/script-init.ly}, dans lequel on retrouve les variables
 @code{dashHat}, @code{dashPlus}, @code{dashDash}, @code{dashBar},
 @code{dashLarger}, @code{dashDot}, et @code{dashUnderscore} ainsi que
 leur valeur par défaut.  Ces valeurs peuvent être modifiées selon vos
-besoins.  Il suffit par exemple, pour affecter au raccourci @code{-+}
+besoins.  Il suffit par exemple, pour affecter au raccourci @w{@code{-+}}
 (@code{dashPlus}) le symbole du trille en lieu et place du @code{+}
 (caractère plus), d'assigner la valeur @code{trill} à la variable
 @code{dashPlus} :
diff --git a/Documentation/fr/texidocs/open-string-harmonics-in-tablature.texidoc b/Documentation/fr/texidocs/open-string-harmonics-in-tablature.texidoc
new file mode 100644 (file)
index 0000000..24c2b7d
--- /dev/null
@@ -0,0 +1,8 @@
+%% Translation of GIT committish: 40bf2b38d674c43f38058494692d1a0993fad0bd
+  texidocfr = "
+Table des harmoniques sur corde à vide (harmoniques naturelles):
+
+"
+  doctitlefr = "Table des harmoniques sur corde à vide"
+
+
diff --git a/Documentation/fr/texidocs/slides-in-tablature.texidoc b/Documentation/fr/texidocs/slides-in-tablature.texidoc
new file mode 100644 (file)
index 0000000..e29091d
--- /dev/null
@@ -0,0 +1,9 @@
+%% Translation of GIT committish: 40bf2b38d674c43f38058494692d1a0993fad0bd
+  texidocfr = "
+Un glissando s'indique dans un @code{TabStaff} tout comme dans un
+@code{Staff}. 
+
+"
+
+  doctitlefr = "Glissando et tablature"
+
index 597bba44130a6e9fd464aa543a6275aaf1b94c7b..ff39d2889949436b5ae81731595496a27b48989c 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+    Translation of GIT committish: ada15837e81a658a807d004b18877ba67a136fa3
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -604,16 +604,21 @@ contours de l'image LilyPond@tie{}:
 @{ c1 @}
 @end example
 
-En procédant comme ci-après, vous obtiendrez un fichier @file{EPS}@tie{}:
+En procédant comme ci-après, vous obtiendrez des fichiers images@tie{}:
 
 @example
+EPS
+
 lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts monfichier.ly
-@end example
 
-ou @file{PNG} :
+PNG
 
-@example
 lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts --png monfichier.ly
+
+PNG avec transparence
+
+lilypond -dbackend=eps -dno-gs-load-fonts -dinclude-eps-fonts \
+  -dpixmap-format=pngalpha --png monfichier.ly
 @end example
 
 
index 17b7f4d5af544a1a1e8a15716a439872d774a316..dc3b10fd5729bd8ed274f280373b1444c8c4f052 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: 79165c00e7aadfefb0748ff55b29a1927cb87acd
+    Translation of GIT committish: ada15837e81a658a807d004b18877ba67a136fa3
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -266,7 +266,7 @@ que mémoire.
 
 Notez bien que l'utilisation du mode sécuritaire empêchera aussi la
 compilation d'un certain nombre de fragments LilyPond.  L'option
-@code{--jail} est dans ce cas une excellente alternative en terme de
+@option{--jail} est dans ce cas une excellente alternative en terme de
 sécurité, même si elle requiert plus de temps à mettre en place.
 
 
@@ -311,11 +311,11 @@ lisibles par votre éditeur SVG habituel.
 
 @item scm
 @cindex Scheme dump
- pour une recopie brute des commandes Scheme internes de formatage.
+pour une recopie brute des commandes Scheme internes de formatage.
 
 @item null
- permet de ne pas générer de partition imprimable.  Cette option est
- équivalente à @code{-dno-print-pages}.
+permet de ne pas générer de partition imprimable.  Cette option est
+équivalente à @code{-dno-print-pages}.
 
 @end table
 
@@ -331,6 +331,18 @@ option fonctionne pour les moteurs de traitement @code{ps}, @code{eps}
 et @code{svg}.
 
 
+@item gui
+Travaille silencieusement, et redirige tout le verbiage dans un fichier
+journal.
+
+Note à l'attention des utilisateurs de Windows@tie{}: toutes les
+informations concernant le traitement apparaissent au fur et à mesure
+dans l'interpréteur de commandes lorsque vous lancez le programme
+@code{lilypond.exe}, à l'inverse de @w{@code{lilypond-windows.exe}} qui
+vous renvoie simplement la main.  L'option @option{-dgui} vous permettra
+alors de rediriger ces informations dans un fichier journal.
+
+
 @item print-pages
 Génère l'intégralité des pages de la partition.  L'option
 @code{-dno-print-pages} est particulièrement utile lorsqu'utilisée
index 11f6441b94065a34cd8a9c42d1c325193a640a9c..b69be67f36757899dd168a031d0d71351c37e455 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-   Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+   Translation of GIT committish: ada15837e81a658a807d004b18877ba67a136fa3
 
    When revising a translation, copy the HEAD committish of the
    version that you are working on.  For details, see the Contributors'
index 0a34fa8f0d874c5d47ca56835d26d3919672a161..c628bb6dd6d4cd902d707e6234cbcae56c238c17 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 
 @ignore
-    Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+    Translation of GIT committish: 5f722f1688eff7436789f8ca011205bdb16c04b7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
index 04904918cef69569a2bbbd16ab57c94efeb10a0f..edbd968985a9a2ace1f6d12d53a83af7fb32cb47 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage : fr -*-
 @ignore
-    Translation of GIT committish: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+    Translation of GIT committish: ca62336a8f9ccb00fe4d81bcb8c88ad40ef9e2ae
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -30,7 +30,8 @@
 @ref{Contact} : obtenir de l'aide, discuter et rester en contact.
 
 @item
-@ref{Exemples minimaux} : une nécessité lorsque l'on discute de LilyPond.
+@ref{Exemples minimaux} : une nécessité lorsque l'on discute de
+LilyPond.
 
 @item
 @ref{Signalement de bogue} : disfonctionnement du programme.
@@ -45,7 +46,8 @@
 @itemize
 
 @item
-@ref{Participation} : pour les bonnes volontés qui se sentent concernées.
+@ref{Participation} : pour les bonnes volontés qui se sentent
+concernées.
 
 @item
 @ref{Développement} : pour ceux qui veulent contribuer et tester.
@@ -64,7 +66,8 @@ aujourd'hui.
 @itemize
 
 @item
-@ref{Publications} : ce que nous avons écrit, et ce que l'on dit de nous.
+@ref{Publications} : ce que nous avons écrit, et ce que l'on dit de
+nous.
 
 @item
 @ref{Archives} : archives des dépèches.
@@ -283,7 +286,8 @@ liste sont répertoriées dans @ref{Signalement de bogue}.}
 @divClass{column-center-top}
 @subheading Exemple minimal@dots{} mais qu'est-ce donc que cela ?
 
-Un exemple minimal est un bout de code duquel plus rien ne peut être retiré.
+Un exemple minimal est un bout de code duquel @strong{plus rien} ne peut
+être retiré.
 @divEnd
 
 @divClass{column-left-bottom}
@@ -299,7 +303,8 @@ aider comprendront votre propos et vous apporteront une réponse.
 @item
 Réduire l'exemple à sa plus simple expression indique que vous avez déjà
 tenté par vous-même de trouver une solution.  Des tonnes de lignes
-laissent à penser que celui qui les envoie se soucie peu de ce qui arrive.
+laissent à penser que celui qui les envoie se soucie peu de ce qui
+arrive.
 
 @item
 La génération d'un exemple minimaliste permet de comprendre ce qui se
@@ -322,12 +327,14 @@ LilyPond plutôt que réellement d'un @qq{bogue}.
 @itemize
 
 @item
-Inclure une mention \version pour indiquer le numéro de version utilisée.
+Inclure une mention @code{\version} pour indiquer le numéro de version
+utilisée.
 
 @item
 Être aussi bref et concis que possible.  Si des problèmes concernant les
 espacements ou la mise en page peuvent nécessiter un certain nombre de
-mesures, la plupart des litiges peuvent se cantonner à une seule mesure.
+mesures, la plupart des litiges peuvent se cantonner à moins d'une
+mesure.
 
 @item
 Lorsque vous créez un exemple minimal à partir de votre code, commencez
@@ -345,12 +352,51 @@ litige.
 N'utilisez pas les commandes @code{\override} ou @code{\set} à moins que
 le problème ne soit directement lié à leur utilisation.
 
+@item
+Le cas échéant, joignez une image de ce à quoi vous voulez arriver.
 @end itemize
 @divEnd
 
 @divEnd
 
+@divClass{column-center-bottom}
+@subheading Jusqu'où pousser le minimalisme@tie{}?
+
+En voici un exemple@tie{}:
 
+@example
+\version "2.14.1"
+\include "english.ly"
+
+\score @{
+  \new Staff @{
+    \key d \major
+    \numericTimeSignature
+    \time 2/4
+    <cs' d'' b''>16 <cs' d'' b''>8.
+    %% Ici : la liaison des ré est bizarre.
+    %% Trop haute ? Extrémité gauche décalée par rapport à celle du si ?
+    ~
+    <cs' d'' b''>8 [ <b d'' a''> ]
+  @}
+@}
+@end example
+
+C'est vrai, ce n'est pas très long.  Mais on peut encore le
+réduire@tie{}:
+
+@example
+\version "2.14.1"
+@{
+  % la liaison du milieu est bizarre :
+  <c' d'' b''>8. ~ <c' d'' b''>8
+@}
+@end example
+
+Les exemples minimaux dépassant les dix lignes de code ne sont pas
+légion -- quatre lignes suffisent bien souvent à indiquer le problème.
+
+@divEnd
 
 
 @node Signalement de bogue
@@ -440,7 +486,8 @@ sans oublier le @code{>} au tout début de votre message@tie{}; c'est
 
 Si vous ne voulez ou ne pouvez pas envoyer un rapport de bogue selon les
 instructions et en anglais, envoyez votre rapport ou posez votre
-question sur la @uref{http://lists.gnu.org/mailman/listinfo/lilypond-user-fr,
+question sur la
+@uref{http://lists.gnu.org/mailman/listinfo/lilypond-user-fr,
 liste francophone}@tie{}; nous nous chargerons de transmettre un rapport
 à la liste anglophone et assurerons le suivi.
 
@@ -896,8 +943,8 @@ 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
+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, p. 207-210.
 
@@ -908,11 +955,11 @@ 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).
-New Interfaces For Musical Expression. National University of Singapore,
-Singapore, 240-241.
+@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).  New Interfaces For Musical Expression. National University of
+Singapore, Singapore, 240-241.
 
 @end itemize
 
index 5d10ed714891994488d87a3918b2d31abd4557a5..61cd88223f795a2ce51e0c65eed12b0d593a7c29 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: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+    Translation of GIT committish: ca62336a8f9ccb00fe4d81bcb8c88ad40ef9e2ae
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -214,6 +214,14 @@ Dans un terminal, tapez :
 uninstall-lilypond
 @end example
 
+@subsubheading Aide
+
+Dans un terminal, tapez :
+
+@example
+sh lilypond-@versionStable{}-OS-TYPE.sh --help
+@end example
+
 @divEnd
 
 
@@ -236,22 +244,22 @@ mettre à jour ces versions.
 @item
 @sourceimage{logo-fedora,,,}
 @uref{http://koji.fedoraproject.org/koji/packageinfo?packageID=2447,
-Fedora: LilyPond 2.12.3}
+Fedora: LilyPond 2.14.1}
 
 @item
 @sourceimage{logo-ubuntu,,,}
 @uref{http://packages.ubuntu.com/search?keywords=lilypond,
-Ubuntu: LilyPond 2.12.2}
+Ubuntu: LilyPond 2.12.3}
 
 @item
 @sourceimage{logo-slackware,,,}
 @uref{http://www.johannes-schoepfer.de/lilypond/,
-Slackware: LilyPond 2.12.3}
+Slackware: LilyPond 2.14.1}
 
 @item
 @sourceimage{logo-debian,,,}
 @uref{http://packages.debian.org/search?keywords=lilypond,
-Debian: LilyPond 2.12.2}
+Debian: LilyPond 2.12.3}
 
 @item
 @sourceimage{logo-suse,,,}
index 03152e23d206c2ba9e84b9b370cdc02106c65f3e..e89764aa7d4e47767e2a55e3f01c6b03ed9fa631 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: 057106293b07b74b00553fe4dc3dfac5c1f3b682
+    Translation of GIT committish: ca62336a8f9ccb00fe4d81bcb8c88ad40ef9e2ae
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -24,7 +24,7 @@ L'inspiration pour LilyPond provient de deux musiciens qui s'étaient
 lassés de l'aspect fade et ennuyeux des partitions musicales produites
 avec un ordinateur.  Tous les musiciens préfèrent lire de belles
 partitions de musique, pourquoi donc les programmeurs ne
-développeraient-ils pas un logiciel pouvant en produire@tie{}?
+développeraient-ils pas un logiciel capable d'en produire@tie{}?
 
 C'est justement ce que fait LilyPond : ce logiciel grave de la musique
 selon le meilleur de la tradition typographique avec un minimum de
@@ -624,6 +624,18 @@ utiliser LilyPond, nous vous recommandons de lire d'abord
 @divClass{keep-bullets}
 @itemize
 
+ @item
+Avril 2011
+
+@uref{http://www.linux-magazine.com,Linux Magazine} publie un
+article sur trois projets en pleine évolution,
+@uref{http://www.linux-magazine.com/w3/issue/126/088-090_projects.pdf,
+Projects on the Move}.  Dans cette présentation de MuseScore, LilyPond
+et Chordii, Carla Schroder indique que @qq{même si LilyPond se base sur
+la ligne de commande, l'absence d'interface graphique n'est en rien
+rebutante@tie{}; son langage est agréable et facile à apprendre}, et
+fournit un exemple simple et concret.
+
 @item
 Mai 2010
 
index def0a2e94b73be81d5e9252e28b3cb72c5337c7e..7e69d75ab74ba16b8dd4273ff693eeb75b92e603 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: 0ab366a101ef8c3439dd8d6ff6c634f70fa5f63b
+    Translation of GIT committish: ca62336a8f9ccb00fe4d81bcb8c88ad40ef9e2ae
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -135,14 +135,18 @@ particulier pour élaborer des retouches.
 
 @itemize
 
+@item
+@ref{Tous}@tie{}:
+liens rapides, manuels téléchargeables, et documentation des anciennes
+versions.
+
 @item
 @ref{Traductions}@tie{}:
 état des traductions pour les lecteurs non anglophones.
 
 @item
-@ref{Tous}@tie{}:
-liens rapides, manuels téléchargeables, et documentation des anciennes
-versions.
+@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}@tie{}:
+user-created examples, hints and tips.
 
 @item
 @ref{Développement}@tie{}:
@@ -317,8 +321,8 @@ recommandée avant d'aborder de grands projets.
 @docLinks{Utilisation des programmes, usage,
   @rprogramnamed{Top,Utilisation des programmes},
   @manualStableUsageSplit-fr,
-  @manualStableUsageBig-fr, 300 KB,
-  @manualStableUsagePdf-fr, 400 KB}
+  @manualStableUsageBig-fr, 400 KB,
+  @manualStableUsagePdf-fr, 600 KB}
 
 @divEnd
 
diff --git a/Documentation/it/included/generating-output.itexi b/Documentation/it/included/generating-output.itexi
new file mode 100644 (file)
index 0000000..45d34ee
--- /dev/null
@@ -0,0 +1,226 @@
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
+@c This file is part of web/download.itexi and
+@c learning/tutorial.itely
+@ignore
+    Translation of GIT committish: 8f02aa6516b3cfe16b2c145142ea652cbc3b8970
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  For details, see the Contributors'
+    Guide, node Updating translation committishes..
+@end ignore
+
+@c This is about "compiling" a lilypond file
+@c (Learning 1 Tutorial), **not** compiling the
+@c source code.
+
+@macro lilypadOSX
+@warning{Queste istruzioni presumono che tu stia usando il programma
+LilyPond.  Se stai usando uno dei programmi descritti in
+@rweb{Editing facilitato}, in caso di problemi consulta la documentazione
+di quei programmi.}
+
+
+@subsubheading Passo 1. Crea il tuo file @file{.ly}
+
+Clicca due volte su @command{LilyPond.app}, si aprirà un file di esempio.
+
+@sourceimage{Learning_Macos_welcome,,,}
+
+Dai menu in cima a sinistra dello schermo seleziona
+@w{@code{File > Save}}.
+
+@sourceimage{Learning_Macos_Save_menu,,,}
+
+Scegli un nome per il tuo file, ad esempio @file{test.ly}.
+
+@sourceimage{Learning_Macos_Save_file_with_name,,,}
+
+
+@subsubheading Passo 2. Compila (con LilyPad)
+
+Dagli stessi menu seleziona
+@w{@code{Compile > Typeset}}.
+
+@sourceimage{Learning_Macos_Typeset_menu,,,}
+
+Si aprirà una nuova finestra che mostra i messaggi di log della compilazione
+del file che hai appena salvato.
+
+@sourceimage{Learning_Macos_Compiling_log,,,}
+
+
+@subsubheading Passo 3. Visualizza l'output
+
+Quando la compilazione è finita, un file PDF con lo stesso nome del file
+originale viene creato e automaticamente aperto nel visualizzatore
+PDF predefinito, che lo mostrerà sullo schermo.
+
+@sourceimage{Learning_Macos_pdf_output,,,}
+
+
+@subsubheading Altri comandi
+
+Per creare nuovi file per LilyPond, comincia col selezionare
+@w{@code{File > New}}
+
+@sourceimage{Learning_Macos_New_menu,,,}
+
+oppure @w{@code{File > Open}} per aprire e modificare file esistenti che
+hai salvato precedentemente.
+
+@sourceimage{Learning_Macos_Open_menu,,,}
+
+Devi salvare qualsiasi nuova modifica fatta al file prima di cliccare
+@w{@code{Compile > Typeset}} e se il file PDF non compare controlla se
+ci sono degli errori nella finestra dei messaggi di log.
+
+Se non stai usando il visualizzatore d'anteprima PDF incluso nel sistema
+operativo del Mac e un file PDF generato da una compilazione precedente
+è aperto, qualsiasi compilazione successiva potrebbe non riuscire a
+generare un PDF aggiornato finché non chiudi l'originale.
+
+
+
+@end macro
+
+
+@macro lilypadWindows
+@warning{Queste istruzioni presumono che tu stia usando l'editor LilyPad
+incluso nel programma.  Se stai usando uno dei programmi descritti in
+@rweb{Editing facilitato}, in caso di problemi nel compilare un file consulta
+la documentazione di quei programmi.}
+
+
+@subsubheading Passo 1. Crea il tuo file @file{.ly}
+
+Clicca due volte sull'icona di LilyPond sulla scrivania, si aprirà un file di esempio.
+
+@sourceimage{Learning_Win7_Welcome_File_Whole,,,}
+
+Dai menu che appaiono in cima al file di esempio seleziona
+@w{@code{File > Save as}}.  Non usare @w{@code{File > Save}}
+per il file di esempio perché non funzionerà finché non gli darai
+un nome di file valido per LilyPond.
+
+@sourceimage{Learning_Win7_Save_Menu,,,}
+
+Scegli un nome per il tuo file, ad esempio @file{test.ly}.
+
+@sourceimage{Learning_Win7_Save_File_With_Name,,,}
+
+
+@subsubheading Passo 2a. Compila (con drag-and-drop)
+
+A seconda di quel che preferisci, per compilare il file puoi:
+
+Trascinare e rilasciare (drag-and-drop) il file direttamente sull'icona di LilyPond.
+
+@sourceimage{Learning_Win7_Open_Dragndrop,,,}
+
+Cliccare col tasto destro sul file e dal menu contestuale a comparsa scegliere
+@w{@code{Open with > LilyPond}}.
+
+@sourceimage{Learning_Win7_Open_Context_Menu,,,}
+
+
+@subsubheading Passo 2b. Compilare (con doppio clic)
+
+O semplicemente clicca due volte su @file{test.ly}.
+
+
+@subsubheading Passo 3. Visualizza l'output
+
+Durante la compilazione del file @file{test.ly}, una finestra dei comandi
+si aprirà per breve tempo e poi si chiuderà.  Nel corso di questo processo
+verranno creati tre ulteriori file.
+
+@sourceimage{Learning_Win7_All_Files_Created,,,}
+
+Il file PDF contiene il file @file{test.ly} compilato.
+
+@sourceimage{Learning_Win7_Pdf_Output,,,}
+
+
+@subsubheading Altri comandi
+
+Per creare un nuovo file, per prima cosa seleziona @w{@code{File > New}} se
+hai aperto un file creato in precedenza.
+
+@sourceimage{Learning_Win7_New_Menu,,,}
+
+@noindent
+oppure @w{@code{File > Open}} per aprire e modificare i file che hai
+salvato prima.
+
+@sourceimage{Learning_Win7_Open_Menu,,,}
+
+Devi salvare qualsiasi nuovo modifica prima di compilare.  Se il file
+PDF non viene creato, controlla se ci sono degli errori nel file di log che
+sarà stato creato durante il tentativo di compilazione.
+
+@sourceimage{Learning_Win7_Log_File,,,}
+
+Questo file di log viene sovrascritto ogni volta che compili il file LilyPond.
+
+Il file PS viene usato da LilyPond per creare il file PDF e può essere
+ignorato.  Anch'esso viene sovrascritto ogni volta che compili il file.
+
+Se visualizzi il file in un lettore PDF, devi chiudere il PDF se desideri
+fare una nuova compilazione, perché potrebbe non riuscire a creare il
+nuovo file PDF mentre è ancora aperto per la visualizzazione.
+
+
+@end macro
+
+
+@c not lilypad at all, but I ran out of names.  :(
+@macro lilypadCommandLine
+@warning{Queste istruzioni presumono che tu abbia familiarità con i
+programmi a linea di comando.  Se stai usando uno dei programmi descritti in
+@rweb{Editing facilitato}, in caso di problemi nel compilare un file consulta
+la documentazione di quei programmi.}
+
+
+@subsubheading Passo 1. Crea il tuo file @file{.ly}
+
+Crea un file di testo chiamato @file{test.ly} e scrivi:
+
+@c double \\ required because this is inside a macro!
+@example
+\\version "@w{@versionStable{}}"
+@{
+  c' e' g' e'
+@}
+@end example
+
+
+@subsubheading Passo 2. Compila (da linea di comando)
+
+Per elaborare @file{test.ly}, scrivi il seguente comando nel terminale:
+
+@example
+lilypond test.ly
+@end example
+
+@noindent
+Vedrai qualcosa di simile a questo:
+
+@example
+GNU LilyPond @w{@versionStable{}}
+Processing `test.ly'
+Parsing...
+Interpreting music...
+Preprocessing graphical objects...
+Solving 1 page-breaking chunks...[1: 1 pages]
+Drawing systems...
+Layout output to `test.ps'...
+Converting to `./test.pdf'...
+@end example
+
+@subsubheading Passo 3. Visualizza l'output
+
+Puoi visualizzare o stampare il file @file{test.pdf}.
+
+@end macro
+
+
diff --git a/Documentation/it/included/helpus.itexi b/Documentation/it/included/helpus.itexi
new file mode 100644 (file)
index 0000000..a077b8d
--- /dev/null
@@ -0,0 +1,145 @@
+@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
+@c This file is part of web/community.itexi and
+@c contributor/introduction.itely
+
+@ignore
+    Translation of GIT committish: 66e5185e494d29c40ec25d5f71326836204cd680
+
+    When revising a translation, copy the HEAD committish of the
+    version that you are working on.  For details, see the Contributors'
+    Guide, node Updating translation committishes..
+@end ignore
+
+@macro helpusNeed
+@subheading Abbiamo bisogno di te!
+
+Il team di sviluppo di LilyPond è piuttosto piccolo; desideriamo davvero
+coinvolgere nuove persone.  Prendi in considerazione l'idea di aiutare i
+tuoi compagni utenti di LilyPond diventando un collaboratore!
+
+Anche lavorare su piccoli compiti può avre un grande impatto: occuparsi di
+questi compiti permette agli sviluppatori esperti di lavorare sui compiti
+complessi, invece di impiegare il tempo in quelli semplici.
+
+@end macro
+
+
+@macro helpusTasks
+@subheading Compiti semplici
+
+Non è richiesto compilare o lavorare sul codice sorgente!
+
+@itemize
+@item
+Supporto nelle mailing list: rispondi alle domande degli utenti.
+
+@item
+Segnalazione bug: aiuta gli utenti a creare una @rweb{Segnalazione bug}
+corretta e/o entra nel Bug Squad per l'organizzazione dei @rcontribnamed{Issues, Problemi}.
+
+@item
+Documentazione: puoi proporre piccole modifiche seguendo le linee
+guida per i @rcontribnamed{Documentation suggestions,Consigli per la documentazione}.
+
+@item
+LilyPond Snippet Repository (LSR): crea e correggi i frammenti di codice
+seguendo le linee guida in
+@rcontribnamed{Adding and editing snippets, Aggiungere e modificare i frammenti di codice}.
+
+@item
+Discussioni, revisioni e prove: gli sviluppatori chiedono spesso
+delle opinioni sulla documentazione, possibili cambiamenti di sintassi
+e il test di nuove funzionalità.  Contribuisci a queste discussioni!
+
+@end itemize
+
+@subheading Compiti avanzati
+
+Questi compiti di solito richiedono il codice sorgente e la capacità di
+compilare LilyPond.
+
+@warning{Consigliamo ai collaboratori che usano Windows o MacOS X di
+@strong{non} cercare di configurare il proprio ambiente di sviluppo;
+si consiglia invece di usare Lilydev come spiegato in @rcontribnamed{Quick start,Avvio rapido}.}
+
+Anche i collaboratori che usano Linux o FreeBSD possono usare Lilydev, ma se
+preferiscono il proprio ambiente di sviluppo, devono leggere
+@rcontribnamed{Working with source code,Lavorare col codice sorgente} e
+@rcontribnamed{Compiling,Compilare}.
+
+@itemize
+@item
+Documentazione: per ampie modifiche si veda
+@rcontribnamed{Documentation work,Lavorare sulla documentazione}.
+
+@item
+Sito web: il sito web viene creato dai sorgenti della
+documentazione.  Si vedano le informazioni relative alla documentazione e anche
+@rcontribnamed{Website work,Lavorare sul sito web}.
+
+@item
+Traduzioni: si veda @rcontribnamed{Translating the documentation,Tradurre la documentazione}
+e @rcontribnamed{Translating the website,Tradurre il sito web}.
+
+@item
+Correzioni di bug o nuove funzionalità: il miglior modo per iniziare è unirsi
+ai Frogs e leggere @rcontribnamed{Programming work,Lavori di programmazione}.
+
+@end itemize
+
+@end macro
+
+
+@macro helpusProjects
+@subheading Progetti
+
+@subsubheading Frogs
+
+Sito web e mailing list:
+
+@example
+@uref{http://frogs.lilynet.net}
+@end example
+
+I Frogs sono comuni utenti LilyPond che hanno scelto di impegnarsi
+nello sviluppo del loro software preferito.  Correggere i bug,
+implementare nuove funzionalità, documentare il codice sorgente: c'è
+molto da fare.  Ma soprattutto si tratta di un'occasione per tutti
+per acquisire maggiori conoscenze su LilyPond, il Software Libero e
+la programmazione... e per divertirsi.  Se uno di questi punti
+ti incuriosisce, allora il monito è: @emph{Join the Frogs!}
+
+
+
+@subsubheading Grand LilyPond Input Syntax Standardization
+
+Sito web:
+@rcontrib{Grand LilyPond Input Syntax Standardization (GLISS)}.
+
+GLISS renderà stabile la sintassi di input (esclusi i tweak) per il futuro
+LilyPond 3.0.  Dopo l'aggiornamento alla versione 3.0, la sintassi di input per
+la musica senza tweak rimarrà stabile nell'immediato futuro.
+
+Ci sarà un ampio periodo di discussione per determinare la specifica finale
+per l'input.
+
+@warning{GLISS inizierà poco dopo il rilascio della versione 2.16.}
+
+@subsubheading Grand Organizing Project
+
+Sito web: @rcontrib{Grand Organization Project (GOP)}.
+
+GOP sarà la nostra grande iniziativa di reclutamento di nuovi collaboratori.  Abbiamo
+un disperato bisogno di distribuire tra più persone i compiti di sviluppo (inclusi
+i @qq{compiti semplici} che non richiedono di dover programmare o avere a che
+fare col codice sorgente!).  Abbiamo anche bisogno di documentare la conoscenza
+degli attuali sviluppatori in modo che non vada persa.
+
+Diversamente dalla maggior parte dei @qq{Grand Projects}, GOP non aggiungerà
+nuove funzionalità né riprogetterà completamente le cose.  Il suo scopo è darci
+delle fondamenta più stabili in modo da poter andare avanti con compiti più
+grandi in futuro.
+
+@end macro
+
+
index 2e9719de71fff089968d1eca3627549f0aa7cf95..73b0187be82bb297f6be47430daf811bc36f29d3 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: 4d852ef65fc654e4ed02413926fc0cb78a1da1be
+    Translation of GIT committish: 18e1018ce7446f2cb86990c31f112f6cf05ca371
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -23,7 +23,6 @@
 @include macros.itexi
 @include weblinks.itexi
 
-@afourpaper
 
 @c don't remove this comment.
 @ignore
@@ -217,7 +216,7 @@ Distributions will want to install lilypond.info in postinstall, doing:
 
 @macro docLinkSplit{name,base,webLink}
 @ifclear web_version
-  @uref{../\base\/index.html, \name\ (split HTML)}
+  @uref{../\base\/index.html, \name\ (HTML multipagina)}
 @end ifclear
 @ifset web_version
   \webLink\
@@ -226,7 +225,7 @@ Distributions will want to install lilypond.info in postinstall, doing:
 
 @macro docLinkBig{name,base,webLink}
 @ifclear web_version
-  @uref{../\base\-big-page.html, \name\ (big HTML)}
+  @uref{../\base\-big-page.html, \name\ (HTML pagina unica)}
 @end ifclear
 @ifset web_version
   \webLink\
@@ -250,15 +249,15 @@ Distributions will want to install lilypond.info in postinstall, doing:
 
 @item @docLinkSplit{\name\,\base\,\split\} @minus{}
   il manuale è diviso in tante pagine HTML.
-  @*@ @ @emph{(small download for each page)}
+  @*@ @ @emph{(piccolo download per ogni pagina)}
 
 @item @docLinkBig{\name\,\base\,\big\} @minus{}
   leggi questo manuale in un'unica grande pagina HTML.
-  @*@ @ @emph{(large single download, \bigsize\)}
+  @*@ @ @emph{(un solo grande download, \bigsize\)}
 
 @item @docLinkPdf{\name\,\base\,\pdf\} @minus{}
   scarica come file PDF.
-  @*@ @ @emph{(large single download, \pdfsize\)}
+  @*@ @ @emph{(un solo grande download, \pdfsize\)}
 
 @end itemize
 
index 476c897f12b1ca9f18d089031687ef2258e14321..db76efd04f0c9e72d850d02456046d8218d5c6e4 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: ee3a89f9f7289bcd90c5f27fd8f86400159088b2
+    Translation of GIT committish: 402e3b1ac8d0c65b63a992dfd1247ed058e69ff8
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -268,7 +268,7 @@ linee guida per la @ref{Segnalazione bug}.}
 @divClass{column-center-top}
 @subheading Cosa sono gli @qq{Esempi minimi}?
 
-Un esempio minimo è un esempio dal quale niente può essere tolto.
+Un esempio minimo è un esempio dal quale @strong{niente} può essere tolto.
 @divEnd
 
 @divClass{column-left-bottom}
@@ -282,12 +282,12 @@ Più l'esempio è semplice, più rapidamente potenziali solutori
 possono comprenderlo e aiutarti.
 
 @item
-Un esempio semplice dimostra che hai tentato di risolvere il problema
+Un esempio minimo dimostra che hai tentato di risolvere il problema
 da solo.  Quando le persone inviano grandi porzioni di input, sembra
 che non si preoccupino che noi li possiamo aiutare o no.
 
 @item
-Creare un esempio minimo ti spinge a capire cosa sta
+Creare un esempio minimo ti aiuta a capire cosa sta
 succedendo.  Molte segnalazioni di un falso problema possono essere
 evitate se si prova a creare un esempio minimo; se non riesci a ricreare
 un @qq{bug} in un esempio minimo, allora probabilmente il problema è
@@ -300,19 +300,18 @@ una comprensione di LilyPond insufficiente, non un vero bug!
 
 
 @divClass{column-right-bottom}
-@subheading Come li creo?
+@subheading Come crearli?
 
 @divClass{keep-bullets}
 @itemize
 
 @item
-Includi il numero di versione nel comando \version.
+Includi il numero di versione nel comando @code{\version}.
 
 @item
 Crea un esempio piccolo!  Gli esempi che riguardano la spaziatura o la
 formattazione di pagina potrebbero richiedere molte battute, ma la maggior
-parte dei problemi può essere ricreata in una singola
-battuta.
+parte dei problemi può essere ricreata in meno di una sola battuta.
 
 @item
 Durante la preparazione di un esempio, cerca di commentare @w{(@code{%}
@@ -321,19 +320,58 @@ commentare una porzione di codice riuscendo a mantenere chiara l'idea principale
 allora elimina il materiale commentato!
 
 @item
-Evita di usare note, tonalità, o segni di tempo complicati a meno che
+Evita di usare note, tonalità o segni di tempo complicati a meno che
 il malfunzionamento non riguardi proprio il comportamento di questi elementi.
 
 @item
 Non usare i comandi @code{\override} o @code{\set} a meno che il malfunzionamento
 non riguardi questi comandi in particolare.
 
+@item
+Eventualmente, allega un'immagine che mostri il risultato grafico desiderato.
+
 @end itemize
 @divEnd
 
 @divEnd
 
+@divClass{column-center-bottom}
+@subheading Quanto piccoli devono essere?
+
+Il codice seguente è un esempio minimo?
+
+@example
+\version "2.14.1"
+\include "english.ly"
+
+\score @{
+  \new Staff @{
+    \key d \major
+    \numericTimeSignature
+    \time 2/4
+    <cs' d'' b''>16 <cs' d'' b''>8.
+    %% Here: the tie on the D's looks funny
+    %% Too tall? Left-hand endpoint is not aligned with the B tie?
+    ~
+    <cs' d'' b''>8 [ <b d'' a''> ]
+  @}
+@}
+@end example
+
+Non è così grande, ma un vero esempio minimo è il seguente:
+
+@example
+\version "2.14.1"
+@{
+  % middle tie looks funny here:
+  <c' d'' b''>8. ~ <c' d'' b''>8
+@}
+@end example
+
+Sono pochi gli esempi minimi che superano 10 righe di codice -
+spesso 4 righe sono sufficienti per spiegare il problema!
 
+@divEnd
 
 
 @node Segnalazione bug
@@ -372,15 +410,14 @@ ogni bug può essere dimostrato con quattro note o meno!}
 Ecco un esempio di una valida segnalazione bug:
 
 @example
-%% il comando di ottavazione
-%% non modifica l'output!
-
-\version "2.10.0"
-\paper@{ ragged-right=##t @}
-\relative c''' @{
-  c1
-  #(set-octavation 1)
-  c1
+% Le alterazioni dovrebbero comparire solo nella
+% prima nota di una legatura di valore, ma questa
+% versione mostra il bemolle accanto a entrambe le note.
+\version "2.10.1"
+
+\relative c'' @{
+ bes1 ~
+ bes1
 @}
 @end example
 
@@ -418,6 +455,10 @@ Per evitarlo, aggiungi
 
 @end itemize
 @divEnd
+@divEnd
+
+@divClass{column-center-bottom}
+@subheading Passo 4: Attendi una risposta
 
 Una volta che il bug è stato inviato alla lista, la nostra Squadra Bug esaminerà
 la segnalazione.  Una risposta può richiedere fino a 24 ore, perché abbiamo
@@ -430,6 +471,17 @@ ogni volta capiti un'attività relativa al bug.  Per fare questo occorre
 avere un account google.
 @divEnd
 
+@divClass{column-center-bottom}
+@subheading Aiuto facoltativo: mostra il comportamento desiderato
+
+Dopo che il problema è stato aggiunto al tracker, può essere molto
+utile poter vedere l'output desiderato.  Aggiungi pure del codice di
+input e/o delle immagini (se possibile, create con altri strumenti) che
+mostrino come dovrebbe apparire secondo te!
+
+@divEnd
+
+
 
 @node Aiutaci
 @unnumberedsec Aiutaci
index 98d056084f6dbe86fae430e00631ac14ba18cd0a..4310b9e2cf121e1ec585306c57bc618310bdc6ac 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: ee3a89f9f7289bcd90c5f27fd8f86400159088b2
+    Translation of GIT committish: 12503a0c383617cd11fa0bba2836af6c0518ecf7
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -201,12 +201,20 @@ sh lilypond-@versionStable{}-SISTEMA-OPERATIVO.sh
 
 @subsubheading Disinstallazione
 
-Digita in un terminale:
+Digita nel terminale:
 
 @example
 uninstall-lilypond
 @end example
 
+@subsubheading Aiuto
+
+Digita nel terminale:
+
+@example
+sh lilypond-@versionStable{}-OS-TYPE.sh --help
+@end example
+
 @divEnd
 
 
@@ -230,22 +238,22 @@ aggiornare a queste versioni.
 @item
 @sourceimage{logo-fedora,,,}
 @uref{http://koji.fedoraproject.org/koji/packageinfo?packageID=2447,
-Fedora: LilyPond 2.12.3}
+Fedora: LilyPond 2.14.1}
 
 @item
 @sourceimage{logo-ubuntu,,,}
 @uref{http://packages.ubuntu.com/search?keywords=lilypond,
-Ubuntu: LilyPond 2.12.2}
+Ubuntu: LilyPond 2.12.3}
 
 @item
 @sourceimage{logo-slackware,,,}
 @uref{http://www.johannes-schoepfer.de/lilypond/,
-Slackware: LilyPond 2.12.3}
+Slackware: LilyPond 2.14.1}
 
 @item
 @sourceimage{logo-debian,,,}
 @uref{http://packages.debian.org/search?keywords=lilypond,
-Debian: LilyPond 2.12.2}
+Debian: LilyPond 2.12.3}
 
 @item
 @sourceimage{logo-suse,,,}
@@ -509,7 +517,7 @@ che contiene i file eseguibili di LilyPond, in questo modo:
 [@var{pre-set paths}];@var{DIR}\LilyPond\usr\bin
 @end example
 
-@warning{@var{DIR} generalmente è @code{C:\Program Files}.}
+@warning{@var{DIR} generalmente è @code{C:@bs{}Program Files}.}
 
 @noindent
 e clicca il bottone @qq{OK} per chiudere la finestra.
index d0fe234fa23a5a84538dc568faf83ae6cadeb707..81c1bfa05e1ef848ffb869193486725d4217cd88 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: cd0fa693cd2297298aabfdc2d2d9d8b0d7746a5c
+    Translation of GIT committish: d282588015bad1ed86833848a5bcbdc43cfdc9e5
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -576,7 +576,19 @@ nostro @ref{Input testuale}.
 @itemize
 
 @item
-May 2010
+Aprile 2011
+
+@uref{http://www.linux-magazine.com,Linux Magazine} pubblica un
+articolo intitolato
+@uref{http://www.linux-magazine.com/w3/issue/126/088-090_projects.pdf,
+Projects on the Move}.  È un articolo introduttivo a MuseScore,
+LilyPond e Chordii.  L'autrice Carla Schroder afferma @qq{LilyPond è un
+programma a linea di comando, ma non lasciatevi spaventare dalla mancanza
+dell'interfaccia grafica; LilyPond è facile da usare e da imparare}, e fornisce
+anche un esempio pratico.
+
+@item
+Maggio 2010
 
 Peter Kirn, sul sito Create Digital Music, pubblica una
 @uref{http://createdigitalmusic.com/2010/05/14/lilypond-free-beautiful-music-notation-engraving-for-anyone/,recensione
@@ -591,7 +603,7 @@ La rivista tedesca LinuxUser ha scritto un
 articolo su LilyPond}.
 
 @item
-August 2009
+Agosto 2009
 
 Ann Drinan, sul sito
 @uref{http://www.polyphonic.org/article.php?id=188, Polyphonic.org}, presenta
@@ -599,7 +611,7 @@ i commenti di due bibliotecari di un'orchestra che parlano dell'uso del
 software per gestire le loro biblioteche.
 
 @item
-June 2009
+Giugno 2009
 
 In un @uref{http://news.lilynet.net/Free-Music-Now, articolo}
 pubblicato nella rivista annuale francese @emph{National Conservatory Parent
@@ -639,7 +651,7 @@ Kris Shaffer commenta @qq{GNU Lilypond genera una grafica splendida
 che fa sembrare le alternative commerciali di second'ordine.}
 
 @item
-August 20, 2005
+20 Agosto 2005
 
 La rivista belga De Standaard fa un'indagine sulle motivazioni degli
 autori di Software Libero in un articolo intitolato
@@ -1044,17 +1056,17 @@ e attualmente gira su tutte le distro Linux e altri sistemi operativi UNIX.
 
 @uref{http://denemo.org}
 
-Denemo è un editor grafico che genera codice sorgente LilyPond,
-nella versione 2.8.7, e permette anche la riproduzione audio.  Consente
-agli utenti di vedere il codice sorgente LilyPond in parallelo alla
-visualizzazione grafica. Modifiche manuali del codice possono essere attaccate a note,
-accordi etc. e vengono salvate nel file di Denemo, così che gli utenti possano
-continuare a modificare il documento tramite l'interfaccia grafica.
+Denemo è un editor grafico che genera codice sorgente LilyPond
+e permette anche la riproduzione audio.  Consente agli utenti di vedere
+il codice sorgente LilyPond in parallelo alla visualizzazione grafica.  Modifiche
+manuali del codice possono essere attaccate a note, accordi etc. e vengono
+salvate nel file di Denemo, così che gli utenti possano continuare a
+modificare il documento tramite l'interfaccia grafica.
 
 Se si muove il cursore nel codice LilyPond si muove anche il cursore
 nella visualizzazione grafica, e qualsiasi errore di sintassi nelle tue modifiche
 manuali al codice LilyPond viene evidenziato nella visualizzazione testuale
-quando stampi da lì.
+quando elaborato da lì.
 
 
 @divEnd
@@ -1088,7 +1100,7 @@ Vim, allora probabilmente vorrai usare un editor diverso per scrivere
 i file di input di LilyPond.
 
 Puoi trovare maggiori informazioni sulla configurazione di Emacs e Vim in
-@rprogram{Text editor support}.
+@rprogram{LilyPond e gli editor di testo}.
 
 @sourceimage{logo-macosx,,,}
 
@@ -1189,8 +1201,8 @@ ambiente costruito sul linguaggio di programmazione a vincoli
 @itemize
 
 @item
-@uref{http://lilykde.googlecode.com/,LilyKDE} è stato sosituito da
-@uref{http://www.frescobaldi.org/,Frescobaldi}, e esiste soltanto come
+@uref{http://lilykde.googlecode.com/,LilyKDE} è stato sostituito da
+@uref{http://www.frescobaldi.org/,Frescobaldi}; esiste soltanto come
 LilyKDE3 per KDE 3.5 e lilypond-KDE4 per KDE 4.1.
 
 @item
index cae713fd7f53575f9c8923e4d7dbb01e736d7bc2..3852d1d0036014a29ecc64c42c2ae6edbf6cb66e 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; -*-
 @ignore
-    Translation of GIT committish: ee3a89f9f7289bcd90c5f27fd8f86400159088b2
+    Translation of GIT committish: c7175b7e8387655964d9c9a975e9789fe581043c
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -41,21 +41,21 @@ LilyPond è un compositore tipografico musicale @strong{basato su testo}.  Leggi
 prima questo!
 
 @item
-@ifWebLinks{@manualStableLearningSplitNoName,@rlearningnamed{Top,Learning}}
+@ifWebLinks{@manualStableLearningSplitNoName-it,@rlearningnamed{Top,Apprendimento}}
 un'introduzione a LilyPond leggera e @qq{imprescindibile}.
-@details{Learning}
+@details{Apprendimento}
 
 @item
-@ifWebLinks{@manualStableGlossarySplitNoName,@rglosnamed{Top,Glossary}}
+@ifWebLinks{@manualStableGlossarySplitNoName,@rglosnamed{Top,Glossario}}
 @emph{(lettura opzionale)}
 termini musicali e traduzioni.
-@details{Glossary}
+@details{Glossario}
 
 @item
-@ifWebLinks{@manualStableEssaySplitNoName,@ressaynamed{Top,Essay}}
+@ifWebLinks{@manualStableEssaySplitNoName,@ressaynamed{Top,Saggio}}
 @emph{(lettura opzionale)}
 informazioni sull'incisione realizzata dal computer.
-@details{Essay}
+@details{Saggio}
 
 
 @end itemize
@@ -67,17 +67,17 @@ informazioni sull'incisione realizzata dal computer.
 
 @itemize
 
-@item @ifWebLinks{@manualStableNotationSplitNoName,@rusernamed{Top,Notation}}
+@item @ifWebLinks{@manualStableNotationSplitNoName,@rusernamed{Top,Notazione}}
 guida alla sintassi.
-@details{Notation}
+@details{Notazione}
 
-@item @ifWebLinks{@manualStableUsageSplitNoName,@rprogramnamed{Top,Usage}}
+@item @ifWebLinks{@manualStableUsageSplitNoName-it,@rprogramnamed{Top,Uso}}
 eseguire i programmi.
-@details{Usage}
+@details{Uso}
 
-@item @ifWebLinks{@manualStableSnippetsSplitNoName,@rlsrnamed{Top,Snippets}}
+@item @ifWebLinks{@manualStableSnippetsSplitNoName,@rlsrnamed{Top,Frammenti}}
 brevi trucchi e consigli.
-@details{Snippets}
+@details{Frammenti}
 
 @end itemize
 
@@ -96,17 +96,17 @@ Domande frequenti (Frequently Asked Questions).
 questo documento.
 @details{Web}
 
-@item @ifWebLinks{@manualStableChangesSplitNoName,@rchangesnamed{Top,Changes}}
+@item @ifWebLinks{@manualStableChangesSplitNoName,@rchangesnamed{Top,Cambiamenti}}
 cosa c'è di nuovo?
-@details{Changes}
+@details{Cambiamenti}
 
-@item @ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Top,Extending}}
+@item @ifWebLinks{@manualStableExtendingSplitNoName,@rextendnamed{Top,Estendere}}
 tweak interessanti.
-@details{Extending}
+@details{Estendere}
 
-@item @ifWebLinks{@manualStableInternalsSplitNoName,@rinternalsnamed{Top,Internals}}
+@item @ifWebLinks{@manualStableInternalsSplitNoName,@rinternalsnamed{Top,Funzionamento interno}}
 guida ai tweak.
-@details{Internals}
+@details{Funzionamento interno}
 
 @end itemize
 
@@ -118,11 +118,16 @@ guida ai tweak.
 
 @itemize
 
+@item
+@ref{Tutti}:
+versioni stabili precedenti e quella attuale in un archivio compresso.
+
 @item @ref{Tradotti}:
 stato delle traduzioni per i lettori di lingua non inglese.
 
-@item @ref{Tutti}:
-manuali vecchi e scaricabili.
+@item
+@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}:
+esempi, consigli e trucchi creati dagli utenti.
 
 @item @ref{Sviluppo}:
 manuali per la versione non stabile.
@@ -145,11 +150,11 @@ License.
 * Saggio::                    Saggio.
 * Notazione::                 Riferimento.
 * Uso::                       Utilizzo.
-* Frammenti di codice::       Frammenti di codice.
+* Frammenti::                 Frammenti di codice.
 * FAQ::                       FAQ.
 * Web::                       Web.
 * Cambiamenti::               Novità.
-* Estensioni::                Programmazione.
+* Estendere::                 Programmazione.
 * Funzionamento interno::     Funzionamento interno.
 * Tradotti::                  Traduzione.
 * Tutti::                     Tutti i manuali.
@@ -183,8 +188,8 @@ e seguire questi riferimenti incrociati per maggiori informazioni.
 
 @divClass{column-right-bottom}
 
-@docLinks{Learning, learning,
-  @rlearningnamed{Top,Learning},
+@docLinks{Apprendimento, learning,
+  @rlearningnamed{Top,Apprendimento},
   @manualStableLearningSplit,
   @manualStableLearningBig, 1.5 MB,
   @manualStableLearningPdf, 3 MB}
@@ -208,8 +213,8 @@ si raccomanda vivamente di consultare il glossario.
 
 @divClass{column-right-bottom}
 
-@docLinks{Music glossary, music-glossary,
-  @rglosnamed{Top,Music glossary},
+@docLinks{Glossario musicale, music-glossary,
+  @rglosnamed{Top,Glossario musicale},
   @manualStableGlossarySplit,
   @manualStableGlossaryBig, 1 MB,
   @manualStableGlossaryPdf, 1.5 MB}
@@ -235,8 +240,8 @@ nella versione PDF a causa della sua maggiore risoluzione.}
 
 @divClass{column-right-bottom}
 
-@docLinks{Essay, essay,
-  @ressaynamed{Top,Essay},
+@docLinks{Saggio, essay,
+  @ressaynamed{Top,Saggio},
   @manualStableEssaySplit,
   @manualStableEssayBig, 2 MB,
   @manualStableEssayPdf, 2.5 MB}
@@ -262,8 +267,8 @@ musicali inglesi presentati nel Glossario.}
 
 @divClass{column-right-bottom}
 
-@docLinks{Notation, notation,
-  @rusernamed{Top,Notation},
+@docLinks{Notazione, notation,
+  @rusernamed{Top,Notazione},
   @manualStableNotationSplit,
   @manualStableNotationBig, 7 MB,
   @manualStableNotationPdf, 18 MB}
@@ -276,7 +281,7 @@ musicali inglesi presentati nel Glossario.}
 @translationof Usage
 
 @divClass{column-left-top}
-@subheading Usage manual
+@subheading Manuale d'uso
 
 Questo libro spiega come eseguire i programmi, come integrare la
 notazione di LilyPond in altri programmi, e suggerisce le @qq{migliori
@@ -287,21 +292,21 @@ intraprendere un progetto impegnativo.
 
 @divClass{column-right-bottom}
 
-@docLinks{Usage, usage,
-  @rprogramnamed{Top,Usage},
+@docLinks{Uso, usage,
+  @rprogramnamed{Top,Uso},
   @manualStableUsageSplit,
-  @manualStableUsageBig, 300 KB,
-  @manualStableUsagePdf, 400 KB}
+  @manualStableUsageBig, 400 KB,
+  @manualStableUsagePdf, 600 KB}
 
 @divEnd
 
 
-@node Frammenti di codice
-@unnumberedsec Frammenti di codice
+@node Frammenti
+@unnumberedsec Frammenti
 @translationof Snippets
 
 @divClass{column-left-top}
-@subheading Frammenti di codice
+@subheading Frammenti
 
 Questo manuale presenta una selezione di frammenti di codice LilyPond tratti dal
 @uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}
@@ -319,8 +324,8 @@ ha un collegamento alla lista dei relativi frammenti di codice.
 
 @divClass{column-right-bottom}
 
-@docLinks{Snippets, snippets,
-  @rlsrnamed{Top,Snippets},
+@docLinks{Frammenti, snippets,
+  @rlsrnamed{Top,Frammenti},
   @manualStableSnippetsSplit,
   @manualStableSnippetsBig, 2.5 MB,
   @manualStableSnippetsPdf, 8 MB}
@@ -343,7 +348,7 @@ Per usare LilyPond devi scrivere musica in formato testo.  Leggi cosa
 
 @subsubheading C'è un sacco di documentazione!  Devo leggerla?
 
-Devi leggere @ref{Learning, il Manuale di Apprendimento}.  Per quanto
+Devi leggere il @ref{Learning, Manuale di Apprendimento}.  Per quanto
 riguarda il resto della documentazione, puoi leggere solo le sezioni
 sul tipo di notazione che vuoi creare.
 
@@ -351,7 +356,7 @@ sul tipo di notazione che vuoi creare.
 @subsubheading C'è ancora molto da leggere!  Ne vale la pena?
 
 Tocca a te decidere; le ragioni per cui potresti voler usare
-LilyPond sono esposte nell' @ref{Introduzione}.
+LilyPond sono esposte nell'@ref{Introduzione}.
 
 @divEnd
 
@@ -360,12 +365,12 @@ LilyPond sono esposte nell' @ref{Introduzione}.
 
 @subsubheading Qualcosa non funziona!  Come posso risolvere?
 
-Questo viene spiegato in @rprogram{Troubleshooting}.
+Questo viene spiegato in @rprogram{Risoluzione dei problemi}.
 
 
 @subsubheading Perché cambiate la sintassi?
 
-Questo viene spiegato in @rprogram{Why does the syntax change?}.
+Questo viene spiegato in @rprogram{Perché la sintassi cambia?}.
 
 @divEnd
 
@@ -419,8 +424,8 @@ funzionalità di LilyPond rispetto alla versione stabile precedente.
 
 @divClass{column-right-bottom}
 
-@docLinks{Changes, changes,
-  @rchangesnamed{Top,Changes},
+@docLinks{Cambiamenti, changes,
+  @rchangesnamed{Top,Cambiamenti},
   @manualStableChangesSplit,
   @manualStableChangesBig, 6 KB,
   @manualStableChangesPdf, 200 KB}
@@ -428,8 +433,8 @@ funzionalità di LilyPond rispetto alla versione stabile precedente.
 @divEnd
 
 
-@node Estensioni
-@unnumberedsec Estensioni
+@node Estendere
+@unnumberedsec Estendere
 @translationof Extending
 
 @divClass{column-left-top}
@@ -442,8 +447,8 @@ funzionalità di LilyPond.
 
 @divClass{column-right-bottom}
 
-@docLinks{Extending, extending,
-  @rextendnamed{Top,Extending},
+@docLinks{Estendere, extending,
+  @rextendnamed{Top,Estendere},
   @manualStableExtendingSplit,
   @manualStableExtendingBig, 200 KB,
   @manualStableExtendingPdf, 400 KB}
@@ -475,8 +480,8 @@ che si riferisce alla documentazione generata.
 
 @divClass{column-right-bottom}
 
-@docLinks{Internals, internals,
-  @rinternalsnamed{Top,Internals},
+@docLinks{Funzionamento interno, internals,
+  @rinternalsnamed{Top,Funzionamento interno},
   @manualStableInternalsSplit,
   @manualStableInternalsBig, 2.5 MB,
   @manualStableInternalsPdf, 2.8 MB}
diff --git a/Documentation/it/web/news-front.itexi b/Documentation/it/web/news-front.itexi
deleted file mode 100644 (file)
index 4f31bd8..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-@c -*- coding: utf-8; mode: texinfo; documentlanguage: it -*-
-@ignore
-    Translation of GIT committish: 61fed596442d47e96c10ac3c9c0c696e5dfd22cf
-
-    When revising a translation, copy the HEAD committish of the
-    version that you are working on.  For details, see the Contributors'
-    Guide, node Updating translation committishes..
-@end ignore
-
-@c This file is part of lilypond-web.texi and community.itexi
-
-@c when you add a new item, consider moving the lowest item(s)
-@c into news-old.itexi.
-
-@c keep two blank lines between news entries
-
-@c used for news about the upcoming release; see CG 10.2
-
-
-@newsItem
-@subsubheading Rilasciato LilyPond 2.13.40!  @emph{21 Novembre 2010}
-
-Siamo felici di annunciare il rilascio di LilyPond 2.13.40.  Questo
-rilascio contiene come sempre un certo numero di correzioni.  Tuttavia rimangono
-ancora alcuni problemi critici: questo rilascio è dunque destinato solo
-agli sviluppatori.
-
-Si noti che questa @strong{non} è la seconda versione beta test.  A causa di
-varie modifiche non verificate al processo di compilazione, non possiamo essere
-del tutto sicuri della qualità di questo rilascio.
-
-@newsEnd
-
-
-@newsItem
-@subsubheading Prima versione beta test della 2.14 -- Rilasciato LilyPond 2.13.39! @emph{15 Novembre 2010}
-
-LilyPond 2.13.39 è disponibile; questa è la prima beta test della prossima
-versione stabile, la 2.14.  Si invitano gli utenti a provare questa
-versione.  Le nuove funzionalità introdotte rispetto alla versione 2.12.3 sono
-elencate nel manuale @qq{Changes} della sezione del sito sullo
-@ref{Sviluppo}.
-
-Ci sono ancora alcuni problemi critici in questo rilascio: la
-spaziatura verticale è sospetta in due casi, e lilypond può
-bloccarsi se l'input è strano.  Se decidi di provare la 2.13.39, non
-stupirti se incontrerai dei problemi, ma inviaci una cortese
-@ref{Segnalazione bug}.
-
-@newsEnd
-
-
-@newsItem
-@subsubheading LilyPond Report #22. @emph{3 Novembre 2010}
-
-Il @emph{LilyPond Report} è tornato, con alcune sorprese ed esaltanti
-notizie per tutta la comunità di LilyPond!  In questo numero troverete
-una lista completa e aggiornata di tutte le mailing list e i forum su
-LilyPond in tutto il mondo.  Inoltre, per la prima volta il nostro ospite
-speciale è il co-fondatore e sviluppatore principale di LilyPond,
-@strong{Jan Nieuwenhuizen}, che è stato impegnato negli ultimi tre mesi --
-continua a leggere per scoprire in cosa!
-
-@uref{http://news.lilynet.net/The-LilyPond-Report-22, Leggi il
-LilyPond Report 22} ora; commenti e contributi sono ben accetti!
-
-@newsEnd
-
-
-
index 9f1c5dd0b5d43c52a8746e7dbfc0a561a4286e8e..a13fff3fe00d44c8d13b86d672f8a860502d1ba1 100644 (file)
@@ -3466,6 +3466,7 @@ cross voices:
 <<
   {
     \once \override Stem #'transparent = ##t
+    \once \override Flag #'transparent = ##t
     b8~ b\noBeam
   }
 \\
@@ -3481,6 +3482,7 @@ too much, we can lengthen the stem by setting the
 <<
   {
     \once \override Stem #'transparent = ##t
+    \once \override Flag #'transparent = ##t
     \once \override Stem #'length = #8
     b8~ b\noBeam
   }
index fe835fd077a41a19c6415da7536d34f607ff3a4c..55b4aead72d46b0d83e6e6bbd0e268099d40dff0 100644 (file)
@@ -732,7 +732,7 @@ select ancient flags.  Besides the @code{default} flag style,
 only the @code{mensural} style is supported.
 
 @lilypond[quote,fragment,ragged-right,verbatim]
-\override Stem #'flag-style = #'mensural
+\override Flag #'style = #'mensural
 \override Stem #'thickness = #1.0
 \override NoteHead #'style = #'mensural
 \autoBeamOff
@@ -1116,6 +1116,7 @@ Editio Vaticana style do clef
   \override Staff.StaffSymbol #'color = #red
   \override Staff.LedgerLineSpanner #'color = #red
   \override Voice.Stem #'transparent = ##t
+  \override Voice.Flag #'transparent = ##t
   \override NoteHead #'style = #'vaticana.punctum
   \clef "vaticana-do2"
   c
@@ -1131,6 +1132,7 @@ Editio Vaticana style fa clef
   \override Staff.StaffSymbol #'color = #red
   \override Staff.LedgerLineSpanner #'color = #red
   \override Voice.Stem #'transparent = ##t
+  \override Voice.Flag #'transparent = ##t
   \override NoteHead #'style = #'vaticana.punctum
   \clef "vaticana-fa2"
   c
@@ -1147,6 +1149,7 @@ Editio Medicaea style do clef
   \override Staff.StaffSymbol #'color = #red
   \override Staff.LedgerLineSpanner #'color = #red
   \override Voice.Stem #'transparent = ##t
+  \override Voice.Flag #'transparent = ##t
   \override NoteHead #'style = #'medicaea.punctum
   \clef "medicaea-do2"
   c
@@ -1162,6 +1165,7 @@ Editio Medicaea style fa clef
   \override Staff.StaffSymbol #'color = #red
   \override Staff.LedgerLineSpanner #'color = #red
   \override Voice.Stem #'transparent = ##t
+  \override Voice.Flag #'transparent = ##t
   \override NoteHead #'style = #'medicaea.punctum
   \clef "medicaea-fa2"
   c
@@ -1178,6 +1182,7 @@ hufnagel style do clef
   \override Staff.StaffSymbol #'color = #red
   \override Staff.LedgerLineSpanner #'color = #red
   \override Voice.Stem #'transparent = ##t
+  \override Voice.Flag #'transparent = ##t
   \override NoteHead #'style = #'hufnagel.punctum
   \clef "hufnagel-do2"
   c
@@ -1193,6 +1198,7 @@ hufnagel style fa clef
   \override Staff.StaffSymbol #'color = #red
   \override Staff.LedgerLineSpanner #'color = #red
   \override Voice.Stem #'transparent = ##t
+  \override Voice.Flag #'transparent = ##t
   \override NoteHead #'style = #'hufnagel.punctum
   \clef "hufnagel-fa2"
   c
@@ -1207,6 +1213,7 @@ hufnagel style combined do/fa clef
   \override Staff.StaffSymbol #'color = #red
   \override Staff.LedgerLineSpanner #'color = #red
   \override Voice.Stem #'transparent = ##t
+  \override Voice.Flag #'transparent = ##t
   \override NoteHead #'style = #'hufnagel.punctum
   \clef "hufnagel-do-fa"
   c
@@ -2501,7 +2508,9 @@ single-tone recitative to a fixed melodic gesture.  In these cases,
 one can use either @code{\override Stem #'transparent = ##t} or
 @code{\override Stem #'length = #0} instead, and restore the stem
 when needed with the corresponding @code{\once \override Stem
-#'transparent = ##f} (see example below).
+#'transparent = ##f} (see example below).  When using stems that
+carry flags, make sure to set @code{\override Flag #'transparent
+= ##t} as well.
 
 @b{Timing.} For unmetered chant, there are several alternatives.
 
@@ -2638,6 +2647,7 @@ spirLyr = \lyricmode {
       \remove "Time_signature_engraver"
       \override BarLine #'X-extent = #'(-1 . 1)
       \override Stem #'transparent = ##t
+      \override Flag #'transparent = ##t
       \override Beam #'transparent = ##t
       \override BarLine #'transparent = ##t
       \override TupletNumber #'transparent = ##t
index 0cd9812606d6b7455564c2589abb6d4767a690ee..e10986e7cffeeed7861b6f56846269834d8872f4 100644 (file)
@@ -854,6 +854,7 @@ The notes look like a slash, and have no stem,
 @example
 \override NoteHead #'style = #'slash
 \override Stem #'transparent = ##t
+\override Flag #'transparent = ##t
 @end example
 
 All these plug-ins have to cooperate, and this is achieved with a
@@ -876,6 +877,7 @@ Put together, we get
   squashedPosition = #0
   \override NoteHead #'style = #'slash
   \override Stem #'transparent = ##t
+  \override Flag #'transparent = ##t
   \alias Voice
 @}
 @end example
index ef294318fbc5201e8a2b02329e12f4511d555d15..a7b3394417b9e13fd5b2afa3960d7efc1eb392e1 100644 (file)
@@ -437,7 +437,7 @@ Chords that cross staves may be produced:
         % extend the stems to reach the other staff
         \override Stem #'length = #12
         % do not print extra flags
-        \override Stem #'flag-style = #'no-flag
+        \override Flag #'style = #'no-flag
         % prevent beaming as needed
         a8 g4 f8 f bes\noBeam g4
       }
index 2e4f38445baea241aee2a30bdfe6cd4d6490c6b4..209ffa228d03b7f6eaeac0122050443a1fe29205 100644 (file)
@@ -15,9 +15,9 @@
 Al escribir un bajo cifrado, podemos situar las cifras encima o debajo
 de las notas del bajo, mediante la definición de la propiedad
 @code{BassFigureAlignmentPositioning #'direction} (exclusivamente
-dentro de un contexto @code{Staff}).  Se puede elegir entre @code{UP}
-(o @code{1}, arriba), @code{CENTER} (o @code{0}, centrado) y
-@code{DOWN} (o @w{@code{-1}}, abajo).
+dentro de un contexto @code{Staff}). Se puede elegir entre @code{#UP}
+(o @code{#1}, arriba), @code{#CENTER} (o @code{#0}, centrado) y
+@code{#DOWN} (o @code{#-1}, abajo).
 
 Esta propiedad se puede cambiar tantas veces como queramos.  Utilice
 @code{\\once \\override} si no quiere que la sobreescritura se aplique
index 6645f1e2aeda25c2fa7290fa1b7c6a310e0f5728..9168972a8e47c22bb12cd78a52d87c642305b9d2 100644 (file)
@@ -16,8 +16,8 @@
 notas guía orquestales a la reducción de piano en una partitura vocal.
 La función musical @code{\\cueWhile} toma cuatro argumentos: la música
 de la que se toma la cita, como viene definida por @code{\\addQuote},
-el nombre que insertar antes de las notas guía, y después @code{UP} o
-@code{DOWN} para especificar @code{\\voiceOne} con el nombre encima
+el nombre que insertar antes de las notas guía, y después @code{#UP} o
+@code{#DOWN} para especificar @code{\\voiceOne} con el nombre encima
 del pentagrama o bien @code{\\voiceTwo} con el nombre debajo del
 pentagrama, y finalmente la música de piano con la que las notas guía
 deben aparecer en paralelo.  El nombre del instrumento citado se
@@ -41,7 +41,7 @@ zu einem Klavierauszug hinzufügen kann.  Die musikalische Funktion
 @code{\\cueWhile} braucht vier Argumente:  Die Noten, von denen die
 Stichnoten formatiert werden sollen, definiert durch @code{\\addQuote},
 die Bezeichnung, die mit den Noten angegeben werden soll, dann entweder
-@code{UP} (hoch) oder @code{DOWN} (runter) zur Angabe von entweder
+@code{#UP} (hoch) oder @code{#DOWN} (runter) zur Angabe von entweder
 @code{\\voiceOne} mit der Bezeichnung über dem System oder @code{\\voiceTwo}
 mit der Bezeichnung unter dem System, und schließlich die Klaviermusik,
 die parallel zu den Stichnoten gespielt werden soll.  Die Bezeichnung des
@@ -60,7 +60,7 @@ multiplie, vous pourriez avoir intérêt à créer votre propre fonction
 pour gérer ces repères.  La fonction musicale @code{\\cueWhile} prend
 quatre arguments@tie{}: la musique d'où provient la citation, telle que
 définie par @code{\\addQuote}, le nom qui sera mentionné en regard de
-cette citation, son positionnement -- @code{UP} ou @code{DOWN} selon
+cette citation, son positionnement -- @code{#UP} ou @code{#DOWN} selon
 qu'il sera attribué à @code{\\voiceOne} et placé au-dessus ou
 @code{\\voiceTwo} et placé en dessous -- et enfin la musique du piano
 qui interviendra en parallèle.  Le nom de l'instrument en question
index 6e84c4050af681dfac664800cd6c4fc00db57532..9dd34ccd176aa15ce4ed89b6d4db33665ef4524b 100644 (file)
@@ -1,14 +1,14 @@
-%% DO NOT EDIT this file manually; it is automatically
-%% generated from LSR http://lsr.dsi.unimi.it
-%% Make any changes in LSR itself, or in Documentation/snippets/new/ ,
-%% and then run scripts/auxiliar/makelsr.py
-%%
+% DO NOT EDIT this file manually; it is automatically
+% generated from Documentation/snippets/new
+% Make any changes in Documentation/snippets/new/
+% and then run scripts/auxiliar/makelsr.py
+%
+% This file is in the public domain.
+%% Note: this file works from version 2.15.9
 %% This file is in the public domain.
-\version "2.15.7"
+\version "2.15.9"
 
 \header {
-  lsrtags = "ancient-notation"
-
 %% Translation of GIT committish: 70f5f30161f7b804a681cd080274bfcdc9f4fe8c
   texidoces = "
 Aquí se muestran muchos de (¿o quizá todos?) los símbolos que
@@ -27,12 +27,11 @@ LilyPond prend en charge en matière de musique ancienne.
 "
   doctitlefr = "Gravure de musique ancienne"
 
+  lsrtags = "ancient-notation"
+
   texidoc = "
 Shown here are many (all?) of the symbols that are included in
 LilyPond's support for ancient notation.
-
-
-
 "
   doctitle = "Ancient fonts"
 } % begin verbatim
@@ -130,7 +129,8 @@ upperStaff = \new VaticanaStaff = "upperStaff" <<
 
       s32*1
       % \break % 12 (32*1)
-    }
+    } % begin verbatim
+
   >>
 >>
 
@@ -230,7 +230,7 @@ lowerStaff = \new MensuralStaff = "lowerStaff" <<
       \MensuralVoice
       \override NoteHead #'style = #'neomensural
       \override Rest #'style = #'neomensural
-      \override Stem #'flag-style = #'mensural
+      \override Flag #'style = #'mensural
       \override Stem #'thickness = #1.0
     }
     \context {
index 5e968b7ee887ead8d6531c2f78cfa1f38cfecc4b..c16f3478f944bcebb03556d76d30d1cd5bf751bb 100644 (file)
@@ -16,8 +16,8 @@ Se pueden modificar notas individuales de un acorde con la instrucción
 
 Dentro de un acorde (entre ángulos simples @code{< >}), antes de la
 nota que queremos alterar, situamos la instrucción @code{\\tweak}
-seguida por @code{'font-size} y definimos el tamaño adecuado como
-@w{@code{-2}} (una cabeza pequeña).
+seguida por @code{#'font-size} y definimos el tamaño adecuado como
+@code{#-2} (una cabeza pequeña).
 
 "
   doctitlees = "Modificar el tamaño de una nota suelta de un acorde"
index 28e5180bd6fcdc975dac6031f079fa050151eea7..88037d14067c37b22fd50b3a39c89cfcb74f360d 100644 (file)
@@ -14,7 +14,7 @@ Este código muestra cómo recortar (extraer) fragmentos a partir de una
 partitura completa.
 
 Este archivo tiene que procesarse de forma separada con la opción
-@option{-dclip-systems}; la página de fragmentos de código podría no
+@code{-dclip-systems}; la página de fragmentos de código podría no
 mostrar el resultado adecuadamente.
 
 La salida consiste en archivos con los nombres
index aa13409c287ccc6613d12974e6e88b0d1f651ac3..ced08599f210cb5a746e1d5c23768ce36596c967 100644 (file)
@@ -17,7 +17,7 @@ grupo de valoración especial es imprimir el corchete a no ser que haya
 una barra de la misma longitud que el grupo especial.  Para controlar
 la visibilidad de los corchetes de grupo, establezca la propiedad
 @code{'bracket-visibility} a @code{#t} (imprimir el corchete siempre),
-@code{#f} (no imprimirlo nunca) o @code{'if-no-beam} (imprimir el
+@code{#f} (no imprimirlo nunca) o @code{#'if-no-beam} (imprimir el
 corchete solamente si no hay barra).
 
 "
@@ -33,7 +33,7 @@ ligature.  LilyPond permet, au travers de la propriété
 @code{'bracket-visibility}, de contôler précisément leur
 affichage@tie{}: déterminée à @code{#t}, ils seront toujours
 imprimés@tie{}; @code{#f} permet de ne jamais les imprimer, et
-@code{'if-no-beam} les imprimera en l'absence de ligature.
+@code{#'if-no-beam} les imprimera en l'absence de ligature.
 
 "
   doctitlefr = "Contrôle de l'impression des crochets de nolet"
index f3cae3839df8f6453a51cba6cb1dc0b870dc951f..c0c9819cede1e228a656c3a3efba168a0f535963 100644 (file)
@@ -33,7 +33,7 @@ fixB = {
   \once \override NoteHead #'X-offset = #1.7
   \once \override Stem #'rotation = #'(45 0 0)
   \once \override Stem #'extra-offset = #'(-0.2 . -0.2)
-  \once \override Stem #'flag-style = #'no-flag
+  \once \override Flag #'style = #'no-flag
   \once \override Accidental #'extra-offset = #'(4 . 0)
 }
 
index 6ce32b861ef16bdc6c732ca58a4bbedea0172b7e..fc4b01f2fb06235fd771390122bd00b155d982e9 100644 (file)
@@ -37,7 +37,7 @@ zugewiesen.
   texidocfr = "
 Il s'agit de fonctions postfix pour personnaliser l'extension des
 crescendos textuels.  L'extension devrait débuter sur la première notte
-de la mesure.  Il faut utiliser @w{@code{-\mycresc}} -- comme une
+de la mesure.  Il faut utiliser @code{-\mycresc} -- comme une
 articulation -- sous peine que le départ de l'extension n'apparaisse
 qu'à la note suivante.
 "
index a8946c23755c1ea30a9f1ba86ee44c93d5f07325..c24104630358478fce2c6c83600211ba03690906 100644 (file)
@@ -39,6 +39,7 @@ hideFretNumber = {
   \once \override TabNoteHead #'transparent = ##t
   \once \override NoteHead #'transparent = ##t
   \once \override Stem #'transparent = ##t
+  \once \override Flag #'transparent = ##t
   \once \override NoteHead #'no-ledgers = ##t
   \once \override Glissando #'(bound-details left padding) = #0.3
 }
index 723ff567b242d9693f72baeda84db168b6926f7e..0eac0a745bdfb312f2aa8bb613d914f038be3c03 100644 (file)
@@ -13,9 +13,9 @@
   texidoces = "
 La alineación horizontal de la letra se puede ajustar sobreescribiendo
 la propiedad @code{self-alignment-X} del objeto @code{LyricText}.
-@w{@code{-1}} es izquierda, @code{0} es centrado y @code{1} es derecha;
-sin embargo, puede usar también @code{LEFT}, @code{CENTER} y
-@code{RIGHT}.
+@code{#-1} es izquierda, @code{#0} es centrado y @code{#1} es derecha;
+sin embargo, puede usar también @code{#LEFT}, @code{#CENTER} y
+@code{#RIGHT}.
 
 "
   doctitlees = "Alineación de la letra"
@@ -25,9 +25,9 @@ sin embargo, puede usar también @code{LEFT}, @code{CENTER} y
   texidocde = "
 Die horizontale Ausrichtung von Gesangstext kann eingestellt werden, indem
 man die @code{self-alignment-X}-Eigenschaft des @code{LyricText}-Objekts
-verändert.  @w{@code{-1}} bedeutet links, @code{0} bedeutet mittig und @code{1}
-bedeutet rechts, man kann aber genauso gut auch @code{LEFT}, @code{CENTER}
-und @code{RIGHT} benutzen.
+verändert.  @code{#-1} bedeutet links, @code{#0} bedeutet mittig und @code{#1}
+bedeutet rechts, man kann aber genauso gut auch @code{#LEFT}, @code{#CENTER}
+und @code{#RIGHT} benutzen.
 
 "
   doctitlede = "Ausrichtung von Gesangstext"
@@ -37,9 +37,9 @@ und @code{RIGHT} benutzen.
   texidocfr = "
 L'alignement horizontal des paroles peut se gérer à l'aide de la
 propriété @code{self-alignment-X} de l'objet @code{LyricText}.
-Les valeurs @w{@code{-1}} ou @code{LEFT} produiront un alignement par la
-gauche, les valeurs @code{0} ou @code{CENTER} un alignement centré, et
-les valeurs @code{1} ou @code{RIGHT} un alignement par la droite.
+Les valeurs @code{#-1} ou @code{#LEFT} produiront un alignement par la
+gauche, les valeurs @code{#0} ou @code{#CENTER} un alignement centré, et
+les valeurs @code{#1} ou @code{#RIGHT} un alignement par la droite.
 
 "
   doctitlefr = "Alignement des syllabes"
index 8c5e12f72f5a740476d49b0212cac4627c026024..552259dff9d16ff61860a4186f0cd7f1a1659875 100644 (file)
@@ -17,7 +17,7 @@ Las abreviaturas se encuentran definidas dentro del archivo
 @code{dashLarger}, @code{dashDot} y @code{dashUnderscore} reciben
 valores predeterminados.  Se pueden modificar estos valores
 predeterminados para las abreviaturas. Por ejemplo, para asociar
-la abreviatura @w{@code{-+}} (@code{dashPlus}) con el símbolo del
+la abreviatura @code{-+} (@code{dashPlus}) con el símbolo del
 semitrino en lugar del símbolo predeterminado +, asigne el valor
 @code{trill} a la variable @code{dashPlus}:
 
@@ -32,7 +32,7 @@ den Variablen @code{dashHat}, @code{dashPlus}, @code{dashDash},
 @code{dashBar}, @code{dashLarger}, @code{dashDot} und
 @code{dashUnderscore} Standardwerte zugewiesen werden.  Diese Standardwerte
 können verändert werden.  Um zum Beispiel die Abkürzung
-@w{@code{-+}} (@code{dashPlus}) mit dem Triller anstatt mit dem +-Symbol zu
+@code{-+} (@code{dashPlus}) mit dem Triller anstatt mit dem +-Symbol zu
 assoziieren, muss der Wert @code{trill} der Variable
 @code{dashPlus} zugewiesen werden:
 
@@ -46,7 +46,7 @@ Les raccourcis sont répertoriés dans le fichier
 @code{dashHat}, @code{dashPlus}, @code{dashDash}, @code{dashBar},
 @code{dashLarger}, @code{dashDot}, et @code{dashUnderscore} ainsi que
 leur valeur par défaut.  Ces valeurs peuvent être modifiées selon vos
-besoins.  Il suffit par exemple, pour affecter au raccourci @w{@code{-+}}
+besoins.  Il suffit par exemple, pour affecter au raccourci @code{-+}
 (@code{dashPlus}) le symbole du trille en lieu et place du @code{+}
 (caractère plus), d'assigner la valeur @code{trill} à la variable
 @code{dashPlus} :
diff --git a/Documentation/snippets/new/ancient-fonts.ly b/Documentation/snippets/new/ancient-fonts.ly
new file mode 100644 (file)
index 0000000..c48cef3
--- /dev/null
@@ -0,0 +1,225 @@
+%% This file is in the public domain.
+\version "2.15.9"
+
+\header {
+  lsrtags = "ancient-notation"
+
+  texidoc = "
+Shown here are many (all?) of the symbols that are included in
+LilyPond's support for ancient notation.
+"
+  doctitle = "Ancient fonts"
+} % begin verbatim
+
+upperStaff = \new VaticanaStaff = "upperStaff" <<
+  \context VaticanaVoice <<
+    \transpose c c {
+
+      \override NoteHead #'style = #'vaticana.punctum
+      \key es \major
+      \clef "vaticana-fa2"
+      c1 des e f ges
+
+      \override NoteHead #'style = #'vaticana.inclinatum
+      a! b ces'
+      \bar "|"
+      % \break % 1 (8*1)
+
+      \override NoteHead #'style = #'vaticana.quilisma
+      b! des'! ges! fes!
+      \breathe
+      \clef "vaticana-fa1"
+      \override NoteHead #'style = #'vaticana.plica
+      es d
+      \override NoteHead #'style = #'vaticana.reverse.plica
+      c d
+      \bar "|"
+      % \break %2 (8*1)
+
+      \override NoteHead #'style = #'vaticana.punctum.cavum
+      es f
+      \override NoteHead #'style = #'vaticana.lpes
+      g as
+      \override NoteHead #'style = #'vaticana.upes
+      bes as
+      \override NoteHead #'style = #'vaticana.vupes
+      g f
+      \override NoteHead #'style = #'vaticana.linea.punctum
+      \once \override Staff.BarLine #'bar-extent = #'(-1 . 1) \bar "|"
+      % \break % 3 (8*1)
+
+      es d
+      \override NoteHead #'style = #'vaticana.epiphonus
+      c d
+      \override NoteHead #'style = #'vaticana.cephalicus
+      es f
+
+      \override Staff.KeySignature #'glyph-name-alist = #alteration-medicaea-glyph-name-alist
+      \override Staff.Accidental #'glyph-name-alist = #alteration-medicaea-glyph-name-alist
+      \override Staff.Custos #'style = #'medicaea
+      \override NoteHead #'style = #'medicaea.punctum
+      \clef "medicaea-fa2"
+      ces des
+      \bar "|"
+      % \break % 4 (8*1)
+
+      e! f! ges
+      \clef "medicaea-do2"
+      \override NoteHead #'style = #'medicaea.inclinatum
+      a! b! ces'
+      \override NoteHead #'style = #'medicaea.virga
+      b! a!
+      \bar "|"
+      % \break % 5 (8*1)
+
+      ges fes
+      \clef "medicaea-fa1"
+      \override NoteHead #'style = #'medicaea.rvirga
+      e des ces
+
+      \override Staff.KeySignature #'glyph-name-alist = #alteration-hufnagel-glyph-name-alist
+      \override Staff.Accidental #'glyph-name-alist = #alteration-hufnagel-glyph-name-alist
+      \override Staff.Custos #'style = #'hufnagel
+      \override NoteHead #'style = #'hufnagel.punctum
+      \clef "hufnagel-fa2"
+      ces des es
+      \bar "|"
+      % \break % 6 (8*1)
+
+      fes ges
+      \clef "hufnagel-do2"
+      \override NoteHead #'style = #'hufnagel.lpes
+      as! bes! ces'
+      \override NoteHead #'style = #'hufnagel.virga
+      bes! as!
+      \bar "|"
+      % \break % 7 (8*1)
+
+      ges! fes!
+      \clef "hufnagel-do-fa"
+      \override NoteHead #'style = #'hufnagel.punctum
+      es! des ces des! es! fes!
+      \bar "||"
+      % \break % 8 (8*1)
+
+      s32*1
+      % \break % 12 (32*1)
+    }
+  >>
+>>
+
+lowerStaff = \new MensuralStaff = "lowerStaff" <<
+  \context MensuralVoice <<
+    \transpose c c {
+
+      \key a \major
+      cis'1 d'\breve gis'\breve e'\breve \[ e'\longa fis'\longa \]
+      \set Staff.forceClef = ##t
+      \clef "neomensural-c2"
+      cis1
+      \bar "|"
+      % \break % 2 (16*1)
+
+      \[ g\breve dis''\longa \]
+      b\breve \[ a\longa d\longa \]
+      \clef "petrucci-c2"
+      % \break % 4 (16*1)
+
+      fis1 ces1
+      \clef "petrucci-c2"
+      r\longa
+      \set Staff.forceClef = ##t
+      \clef "mensural-c2"
+      r\breve
+      \bar "|"
+      % \break % 5 (8*1)
+
+      r2
+      \clef "mensural-g"
+      r4 r8 r16 r16
+      \override NoteHead #'style = #'mensural
+      \override Rest #'style = #'mensural
+      \clef "petrucci-f"
+      c8 b, c16 b, c32 b, c64 b, c64 b,
+      d8 e d16 e d32 e d64 e d64 e
+      r\longa
+      \set Staff.forceClef = ##t
+      \clef "petrucci-f"
+      r\breve
+      \bar "|"
+      % \break % 6 (8*1)
+
+      r\breve
+      \clef "mensural-f"
+      r2 r4 r8 r16 r16
+
+      \set Staff.forceClef = ##t
+      \clef "mensural-f"
+      e\breve f g a1
+      \clef "mensural-g"
+      % \break % 7 (8*1)
+
+      \[ bes'!\longa a'!\longa c''!\longa \]
+      e'1 d' c' d' \bar "|"
+      \bar "|"
+      % \break % 9 (16*1)
+
+      bes'!\longa fis'!1 as'!1 ges'!\longa % lig
+      \set Staff.forceClef = ##t
+      \clef "mensural-g"
+      e'2 d' c' \bar "|"
+      % \break % 11 (16*1)
+
+      \set Staff.forceClef = ##t
+      \clef "petrucci-g"
+      c'2 d' e' f'
+      \clef "petrucci-g"
+      g' as'! bes'! cis''!
+      bes'! as'! gis'! fis'!
+      \set Staff.forceClef = ##t
+      \clef "mensural-g"
+      es'! des'! cis'!1 \bar "||"
+      % \break % 12 (8*1)
+    }
+  >>
+>>
+
+\paper {
+  line-thickness = #(/ staff-space 5.0)
+}
+
+\score {
+  <<
+    \upperStaff
+    \lowerStaff
+  >>
+  \layout {
+    indent = 0.0
+    line-width = 17.25\cm
+    \context {
+      \Score
+      timing = ##f
+    }
+    \context {
+      \MensuralVoice
+      \override NoteHead #'style = #'neomensural
+      \override Rest #'style = #'neomensural
+      \override Flag #'style = #'mensural
+      \override Stem #'thickness = #1.0
+    }
+    \context {
+      \MensuralStaff
+      \revert  BarLine #'transparent
+      \override KeySignature #'glyph-name-alist = #alteration-mensural-glyph-name-alist
+      clefGlyph = #"clefs.petrucci.c2"
+    }
+    \context {
+      \VaticanaStaff
+      \revert  BarLine #'transparent
+      \override StaffSymbol #'thickness = #2.0
+      \override KeySignature #'glyph-name-alist = #alteration-vaticana-glyph-name-alist
+      \override Custos #'neutral-position = #4
+    }
+  }
+}
+
index f2426dcc4ce01a55047eb07af60b851946706d38..f3efe63b7c2d6f9a109eb1ca5b0ebed2c6b5416a 100644 (file)
@@ -16,7 +16,7 @@ fixB = {
   \once \override NoteHead #'X-offset = #1.7
   \once \override Stem #'rotation = #'(45 0 0)
   \once \override Stem #'extra-offset = #'(-0.2 . -0.2)
-  \once \override Stem #'flag-style = #'no-flag
+  \once \override Flag #'style = #'no-flag
   \once \override Accidental #'extra-offset = #'(4 . 0)
 }
 
index 4657d94b858b75b9c9e9c677cbccd0e2eb68744f..bf431fa9facab9c31fa4dfb6e54c082f8fd610ea 100644 (file)
@@ -18,6 +18,7 @@ hideFretNumber = {
   \once \override TabNoteHead #'transparent = ##t
   \once \override NoteHead #'transparent = ##t
   \once \override Stem #'transparent = ##t
+  \once \override Flag #'transparent = ##t
   \once \override NoteHead #'no-ledgers = ##t
   \once \override Glissando #'(bound-details left padding) = #0.3
 }
index 72ea357e5379016893d98533b969f658df80d5bf..b4d2729c1d7f63f98c70d675224edf67307459ba 100644 (file)
@@ -92,7 +92,7 @@ tupletbp       = \once \override Staff.TupletBracket #'padding = #2.25
 %% Flag [Note Head - Stem]
 %%
 
-noflag         = \once \override Stem #'flag-style = #'no-flag
+noflag         = \once \override Flag #'style = #'no-flag
 
 %%%
 %%% Functions
index 4ca35369d6ed81451dcf3eaf59e8400baffb09a5..be7c22d585dbd8eb4d7b984b21d33623fda7b176 100644 (file)
@@ -17,7 +17,7 @@ Según las reglas estándar de composición
 tipográfica, se imprime un becuadro antes de un sostenido o un
 bemol cuando se tiene que cancelar una alteración anterior en la
 misma nota.  Para modificar este comportamiento, establezca el
-valor de la propiedad @code{extraNatural} a @code{#f} (falso)
+valor de la propiedad @code{extraNatural} a @code{##f} (falso)
 dentro del contexto de @code{Staff}.
 
 "
@@ -39,7 +39,7 @@ soll.  Um dieses Verhalten zu ändern, muss die Eigenschaft
 En accord avec les règles standards de l'écriture musicale, on grave
 un bécarre avant un dièse ou un bémol si on a besoin d'annuler une
 altération précédente.  Pour modifier ce comportement, assignez la propriété
-@code{extraNatural} du contexte @code{Staff} à la valeur @code{#f} (faux).
+@code{extraNatural} du contexte @code{Staff} à la valeur @code{##f} (faux).
 "
 
   doctitlefr = "Suppression des bécarres superflus"
index 025767c8b0622adef9a6dccaad599487b8c1e1e5..709a3997c68dd916ae9ede517c791b84c0bcd0d1 100644 (file)
@@ -100,7 +100,7 @@ tupletbp       = \once \override Staff.TupletBracket #'padding = #2.25
 %% Flag [Note Head - Stem]
 %%
 
-noflag         = \once \override Stem #'flag-style = #'no-flag
+noflag         = \once \override Flag #'style = #'no-flag
 
 %%%
 %%% Functions
index 607732e3598f35e32e05a3509bf28c787d776027..4521e658d070b89168afe54b2cc9f1a3560a7fbf 100644 (file)
@@ -57,14 +57,14 @@ upperVoiceTwo = \relative c'' {
   s32 s32_\appassmolto s8. \voiceOne r8 <bes'' es bes'>-> s4
   \override Stem #'cross-staff = ##t
   \override Stem #'length = #28
-  \override Stem #'flag-style = #'no-flag
+  \override Flag #'style = #'no-flag
   s8 \voiceTwo g,8 aes4 s4
 }
 
 middleVoiceOne = \relative c' {
   \override Stem #'cross-staff = ##t
   \override Stem #'length = #32
-  \override Stem #'flag-style = #'no-flag
+  \override Flag #'style = #'no-flag
   d!8\noBeam s8 s8 s8_\crmolto s4  % 1
   s4 <g bes\arpeggio>8[ <es' g>] \voiceOne e,8( dis16 e) | % 2
   \revert Stem #'length
@@ -78,7 +78,7 @@ middleVoiceTwo = \relative c' {
   s2. | % 1
   \override Stem #'cross-staff = ##t
   \override Stem #'length = #24
-  \override Stem #'flag-style = #'no-flag
+  \override Flag #'style = #'no-flag
   s2 \voiceTwo e!4 | % 2
   s4 \voiceTwo <bes c es f>8 <f' aes es'>16 d' <bes, f' aes c>8 <bes' fis'> | % 3
 }
diff --git a/input/regression/ambitus-with-ligature.ly b/input/regression/ambitus-with-ligature.ly
deleted file mode 100644 (file)
index c82e51c..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-\version "2.14"
-
-\header {
-  texidoc = "
-A @code{\Voice} should be able to contain both an @code{Ambitus_engraver}
-and a @code{Mensural_ligature_engraver} without segfaulting.
-  "
-}
-
-\new Voice \with  {
-  \consists Ambitus_engraver
-  \consists Mensural_ligature_engraver
-} {
-  \[ c'\longa c''\longa \]
-}
diff --git a/input/regression/beam-skip.ly b/input/regression/beam-skip.ly
deleted file mode 100644 (file)
index 798eb88..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-
-\header {
-  texidoc = "Beams over skips do not cause a segfault."
-}
-
-\version "2.15.3"
-
-\new Voice << { c'4 c'8 c' } { s8[ s] s[ s] } >>
diff --git a/input/regression/book-label-no-segfault.ly b/input/regression/book-label-no-segfault.ly
deleted file mode 100644 (file)
index d011c4e..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-\version "2.14.0"
-
-\header {
-  texidoc = "
-A book(part) can contain only a label without causing a segfault.
-"
-}
-
-\book {\markup "foo"}   % necessary to produce some output
-\book { \label #'foo }
diff --git a/input/regression/bookpart-variable.ly b/input/regression/bookpart-variable.ly
deleted file mode 100644 (file)
index 992294c..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-\version "2.14.0"
-
-
-\header {
-  texidoc = "
-A @code{\bookpart} variable can be inserted in a @code{\book}.
-No segfault should occur in this case.
-"
-}
-
-mypart = \bookpart {
-  \relative c' {
-    c1
-  }
-}
-
-\book {
-  \mypart
-}
index 8403fddfe131ebb443737e770cd54b21321b23f7..20cbd145d8c1d16fc139c6e5519661df3f683227 100644 (file)
@@ -21,5 +21,6 @@ Use the @code{\\override} and @code{\\revert} expressions to set the
   b
   \override NoteHead #'color = #green
   \override Stem #'color = #blue
+  \override Flag #'color = #magenta
   e8 es d dis e4 r
 }
index a62cc103d31b6732c6d17d58e0a731f2e5e05e6d..848ff190d86b147cdbbc12fc207d40e6522dc59d 100644 (file)
@@ -17,9 +17,7 @@
                           (display c out))))))
     `(let* ((parser-clone (ly:parser-clone parser))
             (input-str (string-trim-both ,lily-string))
-            (music (car (ly:music-property (parse-string-result input-str
-                                                                parser-clone)
-                                           'elements)))
+            (music (ly:parse-string-expression parser-clone input-str))
             (result-str (string-trim-both (music->lily-string music parser-clone))))
        (cons input-str result-str))))
 
index c74e64e767b75457a3c5fcbafcff55b665bd2479..674ad78ed9fd1ee97bb33172b44da12e92112a9c 100644 (file)
@@ -3,8 +3,8 @@
 
 \header {
   texidoc = "Default flag styles: '(), 'mensural and 'no-flag.
-  Compare all three methods to print them: (1) C++ default implementation, 
-  (2) Scheme implementation using the 'flag-style grob property and 
+  Compare all three methods to print them: (1) C++ default implementation,
+  (2) Scheme implementation using the 'style grob property and
   (3) setting the 'flag property explicitly to the desired Scheme function.
   All three systems should be absolutely identical."
 }
@@ -19,7 +19,7 @@ testnotes = { \autoBeamOff
   c''8 d''16 c''32 d''64 \acciaccatura {c''8} d''64
 }
 
-% Old settings: flag-style set to default, 'mensural, 'no-flag; using the
+% Old settings: style set to default, 'mensural, 'no-flag; using the
 % default C++ function ly:stem::calc-stem
 {
   \override Score.RehearsalMark #'self-alignment-X = #LEFT
@@ -29,11 +29,11 @@ testnotes = { \autoBeamOff
   \testnotes
 
   \mark "Symbol: 'mensural (C++)"
-  \override Stem #'flag-style = #'mensural
+  \override Flag #'style = #'mensural
   \testnotes
 
   \mark "Symbol: 'no-flag (C++)"
-  \override Stem #'flag-style = #'no-flag
+  \override Flag #'style = #'no-flag
   \testnotes
 }
 
@@ -42,17 +42,17 @@ testnotes = { \autoBeamOff
   \override Score.RehearsalMark #'self-alignment-X = #LEFT
   \time 2/4
 
-  \override Stem #'flag = #default-flag
-  \revert Stem #'flag-style
+  \override Flag #'stencil = #default-flag
+  \revert Flag #'style
   \mark "Default flags (Scheme)"
   \testnotes
 
   \mark "Symbol: 'mensural (Scheme)"
-  \override Stem #'flag-style = #'mensural
+  \override Flag #'style = #'mensural
   \testnotes
 
   \mark "Symbol: 'no-flag (Scheme)"
-  \override Stem #'flag-style = #'no-flag
+  \override Flag #'style = #'no-flag
   \testnotes
 }
 
@@ -62,14 +62,14 @@ testnotes = { \autoBeamOff
   \time 2/4
 
   \mark "Function: normal-flag"
-  \override Stem #'flag = #normal-flag
+  \override Flag #'stencil = #normal-flag
   \testnotes
 
   \mark "Function: mensural-flag"
-  \override Stem #'flag = #mensural-flag
+  \override Flag #'stencil = #mensural-flag
   \testnotes
 
   \mark "Function: no-flag"
-  \override Stem #'flag = #no-flag
+  \override Flag #'stencil = #no-flag
   \testnotes
 }
index b26f9b71d66d2087fb710fcaae749a8bb89e440a..75248fbcb90b882e129b2fdf1b263b8ac084ef3d 100644 (file)
@@ -1,7 +1,7 @@
 \version "2.14.0"
 
 \header {
-  texidoc = "The 'flag property of the Stem grob can be set to a custom
+  texidoc = "The 'stencil property of the Flag grob can be set to a custom
 scheme function to generate the glyph for the flag."
 }
 
@@ -9,26 +9,28 @@ scheme function to generate the glyph for the flag."
 % test notes, which will be shown in different style:
 testnotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64 c''8 d''16 c''32 d''64 \acciaccatura {c''8} d''64  }
 
-#(define-public (weight-flag stem-grob)
-  (let* ((log (- (ly:grob-property stem-grob 'duration-log) 2))
+#(define-public (weight-flag grob)
+  (let* ((stem-grob (ly:grob-parent grob X))
+         (log (- (ly:grob-property stem-grob 'duration-log) 2))
          (is-up (eqv? (ly:grob-property stem-grob 'direction) UP))
          (yext (if is-up (cons (* log -0.8) 0) (cons 0 (* log 0.8))))
          (flag-stencil (make-filled-box-stencil '(-0.4 . 0.4) yext))
-         (stroke-style (ly:grob-property stem-grob 'stroke-style))
+         (stroke-style (ly:grob-property grob 'stroke-style))
          (stroke-stencil (if (equal? stroke-style "grace") (make-line-stencil 0.2 -0.9 -0.4 0.9 -0.4) empty-stencil)))
     (ly:stencil-add flag-stencil stroke-stencil)))
 
 
 % Create a flag stencil by looking up the glyph from the font
-#(define (inverted-flag stem-grob)
-  (let* ((dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "d" "u"))
-         (flag (retrieve-glyph-flag "" dir "" stem-grob))
-         (line-thickness (ly:staff-symbol-line-thickness stem-grob))
+#(define (inverted-flag grob)
+  (let* ((stem-grob (ly:grob-parent grob X))
+         (dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "d" "u"))
+         (flag (retrieve-glyph-flag "" dir "" grob))
+         (line-thickness (ly:staff-symbol-line-thickness grob))
          (stem-thickness (ly:grob-property stem-grob 'thickness))
          (stem-width (* line-thickness stem-thickness))
-         (stroke-style (ly:grob-property stem-grob 'stroke-style))
+         (stroke-style (ly:grob-property grob 'stroke-style))
          (stencil (if (null? stroke-style) flag
-                         (add-stroke-glyph flag stem-grob dir stroke-style "")))
+                         (add-stroke-glyph flag grob dir stroke-style "")))
          (rotated-flag (ly:stencil-rotate-absolute stencil 180 0 0)))
     (ly:stencil-translate rotated-flag (cons (- (/ stem-width 2))  0))))
 
@@ -36,11 +38,11 @@ testnotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64 c''8 d''1
   \override Score.RehearsalMark #'self-alignment-X = #LEFT
   \time 2/4
   \mark "Function: weight-flag (custom)"
-  \override Stem #'flag = #weight-flag
+  \override Flag #'stencil = #weight-flag
   \testnotes
 
   \mark "Function: inverted-flag (custom)"
-  \override Stem #'flag = #inverted-flag
+  \override Flag #'stencil = #inverted-flag
   \testnotes
 
 }
index 7a13d64bae81ad7304dfadf755ae035736fbcc5f..3190abd2fd69e14f2002d56c6ed99d9d72d4f9bb 100644 (file)
@@ -17,7 +17,7 @@ stemLength = #(define-music-function (parser location length) (number?)
 {
     \autoBeamOff
     \time 3/8
-    \override Stem #'flag = #modern-straight-flag
+    \override Flag #'stencil = #modern-straight-flag
     \override Stem #'length-fraction = #'1.5
     r8
     \acciaccatura {
index 918985e6ef9d12ba071964ab58edaf27d3b0951c..f4b7a51dac0a5427560b9324f53346eee6e9c486 100644 (file)
@@ -13,11 +13,11 @@ testnotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64
   \override Score.RehearsalMark #'self-alignment-X = #LEFT
   \time 2/4
   \mark "modern straight"
-  \override Stem #'flag = #modern-straight-flag
+  \override Flag #'stencil = #modern-straight-flag
   \testnotes
 
   \mark "old straight (large angles)"
-  \override Stem #'flag = #old-straight-flag
+  \override Flag #'stencil = #old-straight-flag
   \testnotes
 %
 %   \mark "custom slant"
@@ -25,6 +25,6 @@ testnotes = { \autoBeamOff c'8 d'16 c'32 d'64 \acciaccatura {c'8} d'64
 % %                flag thickness and spacing
 % %                up-flag angle and length
 % %               down-flag angle and length
-%   \override Stem #'flag = #(straight-flag 0.35 0.8 -5 0.5 60 2.0)
+%   \override Flag #'stencil = #(straight-flag 0.35 0.8 -5 0.5 60 2.0)
 %   \testnotes
 }
index dc3fa468b5c10de78b3391929d478e847ae9f8e2..0663f5e80a5e1b0b2ed5256d3273d78b45788da5 100644 (file)
@@ -16,9 +16,9 @@ have been reached.
 \book {
 
 \markup {
-  a \footnote b c
-  \footnote d e
-  \footnote f g
+  a \auto-footnote b c
+  \auto-footnote d e
+  \auto-footnote f g
 }
 
 \markup { h i }
@@ -29,7 +29,7 @@ a b c d }
 
 \pageBreak
 
-\markup { k \footnote l m }
+\markup { k \auto-footnote l m }
 
 \relative c' { a1 }
 
index 3c0b410956082d0ec5d38d124c942d6e14c37123..790278288b3f21a99f2b167aca8b55caa12648e2 100644 (file)
@@ -15,9 +15,9 @@ footnotes.
 \book {
 
 \markup {
-  a \footnote b c
-  \footnote d e
-  \footnote f g
+  a \auto-footnote b c
+  \auto-footnote d e
+  \auto-footnote f g
 }
 
 \markup { h i }
@@ -28,7 +28,7 @@ a b c d }
 
 \pageBreak
 
-\markup { k \footnote l m }
+\markup { k \auto-footnote l m }
 
 \relative c' { a1 }
 
index 6159b5dc5f35cf3ad6caaebd26ebc297dec71570..23e9035a7128688ffb8ab050ab39291fb6ed843c 100644 (file)
@@ -7,10 +7,6 @@ can be overrided."
 
 #(set-default-paper-size "a6")
 
-\paper {
-  footnote-auto-numbering = ##f
-}
-
 \book {
 
 \new Staff \with { \consists "Footnote_engraver" }
index ce37e71426ad0e6d053bbc25e3e47fdf04894bde..b0fd84a30987283e44df50226ff84a4d2252daf6 100644 (file)
@@ -5,10 +5,6 @@
 
 #(set-default-paper-size "a6")
 
-\paper {
-  footnote-footer-padding = 1\in
-}
-
 \book {
 
   \relative c' {
index 8129d6fd4b982e369d8c7aa83dcb0d96666cb8a3..ec27ba7f360f0e7d52a83b5c8e0d23ec9a6f43af 100644 (file)
@@ -8,7 +8,6 @@ annotation goes to the correct page."
 
 \paper {
   ragged-last-bottom = ##f
-  footnote-auto-numbering = ##f
 }
 
 \book {
index a2b1c658034654c93efb5a85e77b2e2bdd00595d..f13347d31aeb3f73ef988fa96ae59732bfe27357 100644 (file)
@@ -3,10 +3,6 @@
   texidoc = "Lilypond does footnotes."
 }
 
-\paper {
-  footnote-auto-numbering = ##f
-}
-
 #(set-default-paper-size "a6")
 \book {
 
index 42fab60ad331a0c058926c36bbcf85b657e1f547..d302a7d9910aae0eeb387ca9feed487ca0c74bd4 100644 (file)
@@ -8,8 +8,10 @@
 
 #(whitelist-grob 'NoteHead)
 #(whitelist-grob 'Stem)
+#(whitelist-grob 'Flag)
 #(whitelist-grob "NoteHead")
 #(whitelist-grob "Stem")
+#(whitelist-grob "Flag")
 
 #(map whitelist-symbol '(stencil style duration-log
                         stem-attachment end-position staff-position
index 57d1eaf372c3a78ac677fbf7baa9ec41c2771c35..c58d56ef6012752e2eeb1a0b3e01ce7c65d33e71 100644 (file)
@@ -74,6 +74,7 @@ skips =
     \override NoteHead #'transparent = ##t
     \override NoteHead #'no-ledgers = ##t
     \override Stem #'transparent = ##t
+    \override Flag #'transparent = ##t
     \override Beam #'transparent = ##t
     << \skips
 
index fad2500f5be59590e126c1804ad2d4356dd67e3e..6dc79306c8a3a1cbe28b7401325c929e864d570d 100644 (file)
@@ -154,7 +154,7 @@ bass = \new Voice \relative c{
     >>
 
     \grace {
-       \override Stem  #'stroke-style = #"grace"
+       \override Flag  #'stroke-style = #"grace"
 
         s8
         s16 s s
@@ -163,7 +163,7 @@ bass = \new Voice \relative c{
        \clef bass
        <e,,, e,>32(\sustainOff\sustainOn
 
-       \revert Stem #'stroke-style
+       \revert Flag #'stroke-style
     }
     <gis' e>2)
 
diff --git a/input/regression/metronome-multimeasure-rest-no-segfault.ly b/input/regression/metronome-multimeasure-rest-no-segfault.ly
deleted file mode 100644 (file)
index ceec61d..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-\version "2.14.0"
-\header {
-  texidoc = "
-A metronome marking can be added to a multimeasure rest whose
-engraver was moved to the Staff, without segfaulting.
-"
-}
-
-
-\score {
-  \new Staff {
-    \tempo 4=150
-    R1 |
-  }
-  \layout {
-    \context {
-      \Score
-      \remove "Metronome_mark_engraver"
-      \remove "Staff_collecting_engraver"
-    }
-    \context {
-      \Staff
-      \consists "Metronome_mark_engraver"
-    }
-  }
-}
-
index 78ef6ab122c9878b4fa1578af34f0a5c4d32b59f..fb87ca910758b1c0e8aa4f47d32f20c7515cd790 100644 (file)
@@ -1,7 +1,7 @@
 % 
 
-longgrace = \override Stem  #'stroke-style = #'()
-endlonggrace = \revert Stem #'stroke-style
+longgrace = \override Flag  #'stroke-style = #'()
+endlonggrace = \revert Flag #'stroke-style
 ritenuto = \markup { \italic  "rit." }
 
 \version "2.14.0"
diff --git a/input/regression/page-breaking-end-of-score.ly b/input/regression/page-breaking-end-of-score.ly
new file mode 100644 (file)
index 0000000..b949b02
--- /dev/null
@@ -0,0 +1,19 @@
+\version "2.14.1"
+
+\header {
+  texidoc = "Page breaks are allowed by default at the end of the score,
+but the user can override them.  There should be one line on the first
+page and two (colliding) lines on the second page."
+}
+
+\paper {
+  paper-height = 4\cm
+}
+
+\book {
+{ c'4 }
+
+{ c'4 } \noPageBreak
+
+{ c'4 }
+}
index 043864ed30b1c75d7e8e0f21033abc1258b3f4d6..be3dc3caf660292bcf1d157964def9ebe5eb14d2 100644 (file)
@@ -12,7 +12,7 @@
 }
 
 mus = \relative c' {
-  % Acciaccaturas contain a slur and  \override Stem #'stroke-style
+  % Acciaccaturas contain a slur and  \override Flag #'stroke-style
   % Thus, we're checking \override here
   c4 \acciaccatura d8 c4
   % Checking \set and \unset
@@ -23,12 +23,12 @@ mus = \relative c' {
   % Checking \once \override
   \once \override Stem #'thickness = #8.0 d8
   % Checking two overrides
-  \override Stem #'thickness = #8.0 \override Stem #'stroke-style = "grace"
+  \override Stem #'thickness = #8.0 \override Flag #'stroke-style = "grace"
   d8
   % reverting one of them
   \revert Stem #'thickness d8
   % and the other
-  \revert Stem #'stroke-style c8
+  \revert Flag #'stroke-style c8
 
   % checking tweaks
   c2-\tweak #'color #red ->
diff --git a/input/regression/segfaults-fixed.ly b/input/regression/segfaults-fixed.ly
new file mode 100644 (file)
index 0000000..c6749ed
--- /dev/null
@@ -0,0 +1,104 @@
+\version "2.15.9"
+
+\header {
+  texidoc = "
+This tests various segfault fixes from merging previously-separate
+regtests together.  The output is not important; all that matters
+is that it compiles.
+
+Hopefully we can separate the regtests again in the future.
+"
+}
+% merged to avoid
+% http://code.google.com/p/lilypond/issues/detail?id=1821
+
+
+%%% book-label-no-segfault.ly
+% A book(part) can contain only a label without causing a segfault.
+\book {\markup "foo"}   % necessary to produce some output
+\book { \label #'foo }
+
+
+%%% metronome-multimeasure-rest-no-segfault.ly
+% A metronome marking can be added to a multimeasure rest whose
+% engraver was moved to the Staff, without segfaulting.
+\score {
+  \new Staff {
+    \tempo 4=150
+    R1 |
+  }
+  \layout {
+    \context {
+      \Score
+      \remove "Metronome_mark_engraver"
+      \remove "Staff_collecting_engraver"
+    }
+    \context {
+      \Staff
+      \consists "Metronome_mark_engraver"
+    }
+  }
+}
+
+
+%%% ambitus-with-ligature.ly
+% A @code{\Voice} should be able to contain both an
+% @code{Ambitus_engraver} and a @code{Mensural_ligature_engraver}
+% without segfaulting.
+\new Voice \with  {
+  \consists Ambitus_engraver
+  \consists Mensural_ligature_engraver
+} {
+  \[ c'\longa c''\longa \]
+}
+
+
+%%% beam-skip.ly
+% Beams over skips do not cause a segfault.
+\new Voice << { c'4 c'8 c' } { s8[ s] s[ s] } >>
+
+
+%%% bookpart-variable.ly
+% A @code{\bookpart} variable can be inserted in a @code{\book}.
+% No segfault should occur in this case.
+mypart = \bookpart {
+  \relative c' {
+    c1
+  }
+}
+\book {
+  \mypart
+}
+
+
+%%% skiptypesetting-all-true.ly
+% A score with @code{skipTypesetting} set for the whole score
+% will not segfault.
+{
+  \set Score.skipTypesetting = ##t
+  c'4
+}
+
+
+%%% skiptypesetting-multimeasurerest.ly
+% When @code{skipTypesetting} is set during a
+% @code{skipBars}-induced @code{MultiMeasureRest} spanner, no
+% segfault occurs.
+<<
+  {
+    \time 3/4
+    \set Score.skipBars = ##t
+    a4 a a
+    R2.*2
+  }
+  \\
+  {
+    \set Score.skipTypesetting = ##t
+    s2. s4
+    \set Score.skipTypesetting = ##f
+  }
+>>
+
+
+
+
diff --git a/input/regression/skiptypesetting-all-true.ly b/input/regression/skiptypesetting-all-true.ly
deleted file mode 100644 (file)
index 0765480..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-\version "2.14.0"
-
-\header{
-  texidoc = "
-A score with @code{skipTypesetting} set for the whole score
-will not segfault.
-"
-}
-
-
-{
-  \set Score.skipTypesetting = ##t
-  c'4
-}
-
diff --git a/input/regression/skiptypesetting-multimeasurerest.ly b/input/regression/skiptypesetting-multimeasurerest.ly
deleted file mode 100644 (file)
index 2a27f63..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-\version "2.14.0"
-
-\header {
-  texidoc = "
-When @code{skipTypesetting} is set during a @code{skipBars}-induced
-@code{MultiMeasureRest} spanner, no segfault occurs.
-"
-}
-
-<<
-  {
-    \time 3/4
-    \set Score.skipBars = ##t
-    a4 a a
-    R2.*2
-  }
-  \\
-  {
-    \set Score.skipTypesetting = ##t
-    s2. s4
-    \set Score.skipTypesetting = ##f
-  }
->>
index fd3c194d7ca4f6cd43420433ad2ad0dfc2b8fafb..797fe160dd7baa5d11eb2e58f4be8cccaac02aee 100644 (file)
@@ -1,8 +1,9 @@
 \version "2.14.0"
 
 \header {
-  texidoc = "Stems with overridden 'length should not confuse height estimation.
-This example should fit snugly on one page.
+  texidoc = "Stems with overridden 'Y-extent should
+not confuse height estimation.  This example should fit snugly
+on one page.
 "
 }
 
@@ -25,7 +26,7 @@ This example should fit snugly on one page.
   \score {
     \new Voice {
       \voiceTwo
-      \override Stem #'length = #0
+      \override Stem #'Y-extent = #'(0.0 . 0.0)
       \repeat unfold 144 a4
     }
     \layout {
diff --git a/input/regression/stem-length-override.ly b/input/regression/stem-length-override.ly
new file mode 100644 (file)
index 0000000..7d0bc2d
--- /dev/null
@@ -0,0 +1,13 @@
+
+\version "2.15.9"
+
+\header {
+  texidoc = "Stem length can be overridden via the function
+stem::length
+"
+}
+
+\relative c' {
+  \override Stem #'Y-extent = #(stem::length 8)
+  e4 f'4
+}
diff --git a/input/regression/stem-pure-height-beamed.ly b/input/regression/stem-pure-height-beamed.ly
new file mode 100644 (file)
index 0000000..28cdc6d
--- /dev/null
@@ -0,0 +1,13 @@
+\version "2.15.9"
+
+\header {
+  texidoc = "Lilypond gets beamed stem pure heights correct
+to avoid outside staff collisions.
+"
+}
+
+{
+  \stemUp
+  gis''8 a bes'' a
+  bes''! a bes''! a
+}
index 8b0c9f2abc1facdfa332f4507102df9c0a31316c..106fffc74134713cbd74fc181ec48b7e44dd2857 100644 (file)
@@ -232,8 +232,7 @@ void Beam_scoring_problem::init_collisions (vector<Grob *> grobs)
                      - beam->relative_coordinate (common[Y_AXIS], Y_AXIS);
 
       Real factor = parameters.STEM_COLLISION_FACTOR;
-      if (!unsmob_grob (s->get_object ("beam"))
-          && !Stem::flag (s).is_empty ())
+      if (!unsmob_grob (s->get_object ("beam")))
         factor = 1.0;
       add_collision (x, y, factor);
     }
index 4acf18c1439f9aa5699e8d9c23dc68a8204b2c30..1ecd71a88ff5a87027c7aa987c67292a5954196d 100644 (file)
@@ -1549,10 +1549,10 @@ Beam::set_stem_lengths (SCM smob)
         stem_y += thick * 0.5 * get_grob_direction (s);
 
       /*
-        Do set_stemend for invisible stems too, so tuplet brackets
+        Do set_stem_positions for invisible stems too, so tuplet brackets
         have a reference point for sloping
        */
-      Stem::set_stemend (s, 2 * stem_y / staff_space);
+      Stem::set_stem_positions (s, 2 * stem_y / staff_space);
     }
 
   return posns;
index bff8e79df9dfee4e8e459da2fbe8876ea6f9d267..d269cff48571d91fcfda5bd25a8ade3a0863d86b 100644 (file)
@@ -554,7 +554,7 @@ Line_details::Line_details (Prob *pb, Output_def *paper)
 
   if (scm_is_pair (footnotes))
     for (SCM s = footnotes; scm_is_pair (s); s = scm_cdr (s))
-      footnotes_.push_back (unsmob_stencil (scm_cadar (s)));
+      footnotes_.push_back (unsmob_stencil (scm_caddar (s)));
 
   last_column_ = 0;
   force_ = 0;
index fff2359cc0376f774e46ab531798213e0dd62e40..46b13811be3c9c20c70826c9b13b195ee60064e0 100644 (file)
@@ -132,15 +132,12 @@ Dot_column::calc_positioning_done (SCM smob)
        i != stems.end (); i++)
     {
       Grob *stem = (*i);
-      Stencil flag = Stem::flag (stem);
-      if (!flag.is_empty ())
+      Grob *flag = Stem::flag (stem);
+      if (flag)
         {
-          Interval y = flag.extent (Y_AXIS)
-                       * (2 / ss)
-                       + Stem::stem_end_position (stem);
-
-          Interval x = stem->relative_coordinate (commonx, X_AXIS)
-                       + flag.extent (X_AXIS);
+          Grob *commony = stem->common_refpoint (flag, Y_AXIS);
+          Interval y = flag->extent (commony, Y_AXIS) * (2 / ss);
+          Interval x = flag->extent (commonx, X_AXIS);
 
           boxes.push_back (Box (x, y));
         }
diff --git a/lily/flag.cc b/lily/flag.cc
new file mode 100644 (file)
index 0000000..5aee4d9
--- /dev/null
@@ -0,0 +1,177 @@
+/*
+  This file is part of LilyPond, the GNU music typesetter.
+
+  Copyright (C) 1996--2011 Han-Wen Nienhuys <hanwen@xs4all.nl>
+  Jan Nieuwenhuizen <janneke@gnu.org>
+
+  LilyPond is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  LilyPond is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "stem.hh"
+
+#include "directional-element-interface.hh"
+#include "font-interface.hh"
+#include "grob.hh"
+#include "international.hh"
+#include "output-def.hh"
+#include "staff-symbol-referencer.hh"
+#include "stencil.hh"
+#include "warn.hh"
+
+class Flag
+{
+public:
+  DECLARE_SCHEME_CALLBACK (print, (SCM));
+  DECLARE_SCHEME_CALLBACK (width, (SCM));
+  DECLARE_SCHEME_CALLBACK (calc_y_offset, (SCM));
+  DECLARE_SCHEME_CALLBACK (calc_x_offset, (SCM));
+  DECLARE_GROB_INTERFACE ();
+};
+
+
+
+MAKE_SCHEME_CALLBACK (Flag, width, 1);
+SCM
+Flag::width (SCM smob)
+{
+  Grob *me = unsmob_grob (smob);
+  Stencil *sten = unsmob_stencil (me->get_property ("stencil"));
+  if (!sten)
+    return ly_interval2scm (Interval (0.0, 0.0));
+
+  Grob *stem = me->get_parent (X_AXIS);
+
+  /*
+    TODO:
+    This reproduces a bad hard-coding that has been in the code for quite some time:
+    the bounding boxes for the flags are slightly off and need to be fixed.
+  */
+
+  return ly_interval2scm (sten->extent (X_AXIS) - stem->extent (stem, X_AXIS)[RIGHT]);
+}
+MAKE_SCHEME_CALLBACK (Flag, print, 1);
+SCM
+Flag::print (SCM smob)
+{
+  Grob *me = unsmob_grob (smob);
+  Grob *stem = me->get_parent (X_AXIS);
+
+  Direction d = get_grob_direction (stem);
+  int log = Stem::duration_log (stem);
+  string flag_style;
+
+  SCM flag_style_scm = me->get_property ("style");
+  if (scm_is_symbol (flag_style_scm))
+    flag_style = ly_symbol2string (flag_style_scm);
+
+  if (flag_style == "no-flag")
+    return Stencil ().smobbed_copy ();
+
+  bool adjust = true;
+
+  string staffline_offs;
+  if (flag_style == "mensural")
+    /* Mensural notation: For notes on staff lines, use different
+       flags than for notes between staff lines.  The idea is that
+       flags are always vertically aligned with the staff lines,
+       regardless if the note head is on a staff line or between two
+       staff lines.  In other words, the inner end of a flag always
+       touches a staff line.
+    */
+    {
+      if (adjust)
+        {
+          Real ss = Staff_symbol_referencer::staff_space (me);
+          int p = (int) (rint (stem->extent (stem, Y_AXIS)[d] * 2 / ss));
+          staffline_offs
+            = Staff_symbol_referencer::on_line (stem, p) ? "0" : "1";
+        }
+      else
+        staffline_offs = "2";
+    }
+  else
+    staffline_offs = "";
+
+  char dir = (d == UP) ? 'u' : 'd';
+  string font_char = flag_style
+                     + to_string (dir) + staffline_offs + to_string (log);
+  Font_metric *fm = Font_interface::get_default_font (me);
+  Stencil flag = fm->find_by_name ("flags." + font_char);
+  if (flag.is_empty ())
+    me->warning (_f ("flag `%s' not found", font_char));
+
+  /*
+    TODO: maybe property stroke-style should take different values,
+    e.g. "" (i.e. no stroke), "single" and "double" (currently, it's
+    '() or "grace").  */
+  SCM stroke_style_scm = me->get_property ("stroke-style");
+  if (scm_is_string (stroke_style_scm))
+    {
+      string stroke_style = ly_scm2string (stroke_style_scm);
+      if (!stroke_style.empty ())
+        {
+          string font_char = flag_style + to_string (dir) + stroke_style;
+          Stencil stroke = fm->find_by_name ("flags." + font_char);
+          if (stroke.is_empty ())
+            {
+              font_char = to_string (dir) + stroke_style;
+              stroke = fm->find_by_name ("flags." + font_char);
+            }
+          if (stroke.is_empty ())
+            me->warning (_f ("flag stroke `%s' not found", font_char));
+          else
+            flag.add_stencil (stroke);
+        }
+    }
+
+  return flag.smobbed_copy ();
+}
+
+MAKE_SCHEME_CALLBACK (Flag, calc_y_offset, 1);
+SCM
+Flag::calc_y_offset (SCM smob)
+{
+  Grob *me = unsmob_grob (smob);
+  Grob *stem = me->get_parent (X_AXIS);
+  Direction d = get_grob_direction (stem);
+
+  Real blot
+    = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter"));
+
+  Real y2 = stem->extent (stem, Y_AXIS)[d];
+
+  return scm_from_double (y2 - d * blot / 2);
+}
+
+MAKE_SCHEME_CALLBACK (Flag, calc_x_offset, 1);
+SCM
+Flag::calc_x_offset (SCM smob)
+{
+  Grob *me = unsmob_grob (smob);
+  Grob *stem = me->get_parent (X_AXIS);
+  return scm_from_double (stem->extent (stem, X_AXIS)[RIGHT]);
+}
+
+ADD_INTERFACE (Flag,
+               "A flag that gets attached to a stem."
+               "The style property is  symbol determining"
+               " what style of flag glyph is typeset on a"
+               " @code{Stem}.  Valid options include @code{'()}"
+               " for standard flags, @code{'mensural} and"
+               " @code{'no-flag}, which switches off the flag.",
+
+               /* properties */
+               "style "
+               "stroke-style "
+              );
\ No newline at end of file
index 3fa1fcddc2324502317e95e313915af755e8b2a7..945866632e190866d86f3ef0d76ba5d9b62f1c2c 100644 (file)
@@ -52,6 +52,7 @@ public:
   virtual void handle_prebroken_dependencies ();
   virtual Interval_t<int> spanned_rank_interval () const;
   virtual Interval pure_height (Grob *ref, int start, int end);
+  virtual void cache_pure_height (Interval height);
   DECLARE_GROB_INTERFACE ();
 protected:
   virtual void discretionary_processing ();
index 72391a087748cdd676739a8ed2b3646547f077c7..b87188b4017630239fb923ee9a4e59e5de63d8da 100644 (file)
@@ -102,6 +102,7 @@ public:
   SCM lookup_identifier (string s);
   SCM lookup_identifier_symbol (SCM s);
   void push_extra_token (int token_type);
+  void push_embedded_token ();
   void push_chord_state (SCM tab);
   void push_figuredbass_state ();
   void push_lyric_state ();
index 0387e2efd71cfdec019c5c844072e7c0d2ba1ecd..9839d38f4d04e4e2d859172ba44f999a178bba87 100644 (file)
@@ -66,6 +66,7 @@ public:
   void include_string (string ly_code);
   void parse_file (string init, string name, string out_name);
   void parse_string (string ly_code);
+  SCM parse_string_expression (string ly_code);
   void parser_error (string);
   void parser_error (Input const &, string);
   void set_yydebug (bool);
index edb6ad8d59bbaab5cae97000772a2b3b370b1900..7b6690db8b74a650d8978eda4514f420ca3ddb05 100644 (file)
@@ -38,6 +38,7 @@ protected:
   void stop_translation_timestep ();
   void start_translation_timestep ();
   void process_music ();
+  void handle_manual_breaks (bool);
   virtual void initialize ();
   virtual void finalize ();
 
index a7e026a5704d04c0ea67ebfc9dede498466918bd..388dc01388f9a0ce60f5640861b3aba276f9d68b 100644 (file)
@@ -30,12 +30,14 @@ public:
   DECLARE_GROB_INTERFACE ();
   DECLARE_SCHEME_CALLBACK (calc_slope, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_width, (SCM));
+  DECLARE_SCHEME_CALLBACK (calc_y_offset, (SCM));
+  DECLARE_SCHEME_CALLBACK (pure_calc_y_offset, (SCM, SCM, SCM));
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (width, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_style, (SCM));
   DECLARE_SCHEME_CALLBACK (pure_height, (SCM, SCM, SCM));
   static Stencil raw_stencil (Grob *, Real slope, Direction stemdir);
-  static Stencil translated_stencil (Grob *, Real slope);
+  static Real y_offset (Grob *, bool pure);
   static Stencil untranslated_stencil (Grob *, Real slope);
   static Real get_beam_translation (Grob *me);
   static Real vertical_length (Grob *me);
index b18b39e53a0035769da90726590c3a631363d1b6..c8e0f6939c80a65c997ba4eea098fd82ef1d7591 100644 (file)
@@ -40,35 +40,42 @@ public:
   static void add_head (Grob *me, Grob *n);
   static Stem_info get_stem_info (Grob *);
   static Real chord_start_y (Grob *);
-  static void set_stemend (Grob *, Real);
+  static void set_stem_positions (Grob *, Real);
+  static void cache_pure_height (Grob *, Interval, Interval);
   static Slice beam_multiplicity (Grob *);
   static Direction get_default_dir (Grob *);
   static Real thickness (Grob *);
+  static Real beam_end_corrective (Grob *);
   static int head_count (Grob *);
   static bool is_invisible (Grob *);
   static bool is_normal_stem (Grob *);
   static bool is_cross_staff (Grob *);
   static Interval head_positions (Grob *);
-  static Real stem_end_position (Grob *);
-  static Stencil flag (Grob *);
-  static Stencil get_translated_flag (Grob *);
+  static Interval internal_pure_height (Grob *, bool);
+  static Interval internal_height (Grob *, bool);
+  static bool is_valid_stem (Grob *);
+  static Grob *get_reference_head (Grob *);
+  static Real internal_calc_stem_end_position (Grob *, bool);
+  static Real internal_calc_stem_begin_position (Grob *, bool);
+
   DECLARE_GROB_INTERFACE ();
   static void set_spacing_hints (Grob *);
+  static Grob *flag (Grob *);
 
   DECLARE_SCHEME_CALLBACK (print, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_default_direction, (SCM));
   DECLARE_SCHEME_CALLBACK (offset_callback, (SCM element));
   DECLARE_SCHEME_CALLBACK (calc_direction, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_beaming, (SCM));
-  DECLARE_SCHEME_CALLBACK (calc_length, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_stem_begin_position, (SCM));
+  DECLARE_SCHEME_CALLBACK (pure_calc_stem_begin_position, (SCM, SCM, SCM));
   DECLARE_SCHEME_CALLBACK (calc_stem_end_position, (SCM));
+  DECLARE_SCHEME_CALLBACK (pure_calc_stem_end_position, (SCM, SCM, SCM));
   DECLARE_SCHEME_CALLBACK (calc_stem_info, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM));
   DECLARE_SCHEME_CALLBACK (width, (SCM smob));
   DECLARE_SCHEME_CALLBACK (pure_height, (SCM, SCM, SCM));
   DECLARE_SCHEME_CALLBACK (height, (SCM));
   DECLARE_SCHEME_CALLBACK (calc_cross_staff, (SCM));
-  DECLARE_SCHEME_CALLBACK (calc_flag, (SCM));
 };
 #endif
index bf67f3c6dda4d578255a7a3f211c6e28d54c66c1..6a468a6830607f6522f786c7dc15cfefdebdd5b8 100644 (file)
@@ -245,11 +245,17 @@ Item::pure_height (Grob *g, int start, int end)
   if (cached_pure_height_valid_)
     return cached_pure_height_ + pure_relative_y_coordinate (g, start, end);
 
-  cached_pure_height_ = Grob::pure_height (this, start, end);
-  cached_pure_height_valid_ = true;
+  cache_pure_height (Grob::pure_height (this, start, end));
   return cached_pure_height_ + pure_relative_y_coordinate (g, start, end);
 }
 
+void
+Item::cache_pure_height (Interval height)
+{
+  cached_pure_height_ = height;
+  cached_pure_height_valid_ = true;
+}
+
 ADD_INTERFACE (Item,
                "Grobs can be distinguished in their role in the horizontal"
                " spacing.  Many grobs define constraints on the spacing by"
index 5743f44964d9e7ba99a393903d53dcd5a0faaeeb..a9b1d3980ebb4866967996a8c7ec108614aa45b7 100644 (file)
@@ -182,6 +182,18 @@ BOM_UTF8   \357\273\277
   return type;
 }
 
+<extratoken><<EOF>>    {
+  /* Generate a token without swallowing anything */
+
+  /* produce requested token */
+  int type = extra_token_types_.back ();
+  extra_token_types_.pop_back ();
+  if (extra_token_types_.empty ())
+    yy_pop_state ();
+
+  return type;
+}
+
    /* Use the trailing context feature. Otherwise, the BOM will not be
       found if the file starts with an identifier definition. */
 <INITIAL,chords,lyrics,figures,notes>{BOM_UTF8}/.* {
@@ -610,15 +622,14 @@ BOM_UTF8  \357\273\277
        }
 }
 
-<*><<EOF>> {
-       if (YY_START == longcomment)
-       {
+<longcomment><<EOF>> {
                LexerError (_ ("EOF found inside a comment").c_str ());
                is_main_input_ = false; // should be safe , can't have \include in --safe.
                if (!close_input ())
                  yyterminate (); // can't move this, since it actually rets a YY_NULL
        }
-       else if (is_main_input_)
+
+<<EOF>> { if (is_main_input_)
        {
                /* 2 = init.ly + current file.
                   > because we're before closing, but is_main_input_ should
@@ -730,6 +741,12 @@ Lily_lexer::push_extra_token (int token_type)
        extra_token_types_.push_back (token_type);
 }
 
+void
+Lily_lexer::push_embedded_token ()
+{
+       push_extra_token (EMBEDDED_LILY);
+}
+
 void
 Lily_lexer::push_chord_state (SCM tab)
 {
index 1107af999592991478f479aa8e2db8d3a46441ba..dc6b652b3d285503ff089ea1b587632868f5c80e 100644 (file)
@@ -207,6 +207,25 @@ LY_DEFINE (ly_parser_parse_string, "ly:parser-parse-string",
   return SCM_UNSPECIFIED;
 }
 
+LY_DEFINE (ly_parse_string_expression, "ly:parse-string-expression",
+           2, 0, 0, (SCM parser_smob, SCM ly_code),
+           "Parse the string @var{ly-code} with @var{parser-smob}."
+" Return the contained music expression.")
+{
+  LY_ASSERT_SMOB (Lily_parser, parser_smob, 1);
+  Lily_parser *parser = unsmob_lily_parser (parser_smob);
+  LY_ASSERT_TYPE (scm_is_string, ly_code, 2);
+
+  if (!parser->lexer_->is_clean ())
+    {
+      parser->parser_error (_ ("ly:parse-string-expression is only valid with a new parser."
+                              "  Use ly:parser-include-string instead."));
+      return SCM_UNSPECIFIED;
+    }
+
+  return parser->parse_string_expression (ly_scm2string (ly_code));
+}
+
 LY_DEFINE (ly_parser_include_string, "ly:parser-include-string",
            2, 0, 0, (SCM parser_smob, SCM ly_code),
            "Include the string @var{ly-code} into the input stream"
index ba3bd0f99be8c0f5a503d5dffe50d7cb007f047a..5c1a3d358d61f390212f14915fa60e1d5c3536ce 100644 (file)
@@ -163,6 +163,36 @@ Lily_parser::parse_string (string ly_code)
   error_level_ = error_level_ | lexer_->error_level_;
 }
 
+SCM
+Lily_parser::parse_string_expression (string ly_code)
+{
+  // TODO: use $parser
+  lexer_->set_identifier (ly_symbol2scm ("parser"),
+                          self_scm ());
+
+  lexer_->main_input_name_ = "<string>";
+  lexer_->is_main_input_ = true;
+  lexer_->new_input (lexer_->main_input_name_, ly_code, sources_);
+
+  SCM mod = lexer_->set_current_scope ();
+  lexer_->push_embedded_token ();
+  do_yyparse ();
+  SCM result = lexer_->lookup_identifier_symbol (ly_symbol2scm ("$parseStringResult"));
+  // $parseStringResult is set in the grammar rule for embedded_lilypond
+  
+  scm_set_current_module (mod);
+
+  if (!define_spots_.empty ())
+    {
+      if (define_spots_.empty ()
+          && !error_level_)
+        programming_error ("define_spots_ don't match, but error_level_ not set.");
+    }
+
+  error_level_ = error_level_ | lexer_->error_level_;
+  return result;
+}
+
 void
 Lily_parser::include_string (string ly_code)
 {
index 9a71c00a598b9bee8aa42cf8de12769fb6d0470e..5cffd5d2053333df09d6782217b10fff2eeb929a 100644 (file)
@@ -31,6 +31,7 @@
 #include "separation-item.hh"
 #include "spacing-interface.hh"
 #include "staff-spacing.hh"
+#include "staff-symbol-referencer.hh"
 #include "stem.hh"
 #include "warn.hh"
 
@@ -273,17 +274,8 @@ Note_spacing::stem_dir_correction (Grob *me, Item *rcolumn,
           Interval hp = Stem::head_positions (stem);
           if (!hp.is_empty ())
             {
-              Real chord_start = hp[stem_dir];
-
-              /*
-                can't look at stem-end-position, since that triggers
-                beam slope computations.
-              */
-              Real stem_end = hp[stem_dir]
-                              + stem_dir * robust_scm2double (stem->get_property ("length"), 7);
-
-              stem_posns[d] = Interval (min (chord_start, stem_end),
-                                        max (chord_start, stem_end));
+              Real ss = Staff_symbol_referencer::staff_space (stem);
+              stem_posns[d] = stem->pure_height (stem, 0, INT_MAX) * (2 / ss);
               head_posns[d].unite (hp);
             }
         }
index f81683a2573277f2de404409219cba8d31aef005..c46a04efa5c363b596da1fbf0ee83b91732cfa25 100644 (file)
@@ -265,9 +265,7 @@ Page_breaking::Page_breaking (Paper_book *pb, Break_predicate is_break, Prob_bre
   footnote_padding_ = robust_scm2double (pb->paper_->c_variable ("footnote-padding"), 0.0);
   footnote_footer_padding_ = robust_scm2double (pb->paper_->c_variable ("footnote-footer-padding"), 0.0);
 
-  footnote_number_raise_ = (to_boolean (pb->paper_->c_variable ("footnote-auto-numbering"))
-                            ? robust_scm2double (pb->paper_->c_variable ("footnote-number-raise"), 0.0)
-                            : 0.0);
+  footnote_number_raise_ = robust_scm2double (pb->paper_->c_variable ("footnote-number-raise"), 0.0);
 
   if (systems_per_page_ && (max_systems_per_page_ || min_systems_per_page_))
     {
index 2988a091b69436f377c54f4e618584703c9dbaff..82c0dc7181fd92893b4c73006d73f4344ed9dc51 100644 (file)
@@ -106,8 +106,6 @@ Page_layout_problem::get_footnotes_from_lines (SCM lines, int counter, Paper_boo
   // now, make the footnote stencils with the numbering function
   SCM numbers = SCM_EOL;
   SCM in_text_numbers = SCM_EOL;
-  bool do_numbering = to_boolean (paper->c_variable ("footnote-auto-numbering"));
-  // if there's no numbering, skip all this
   /*
     TODO: This recalculates numbering every time this function is called, including once
     after the balloon prints are called.  Although it is not a huge computational drain,
@@ -118,45 +116,42 @@ Page_layout_problem::get_footnotes_from_lines (SCM lines, int counter, Paper_boo
     in duplicated work, either by making this process less complicated or (preferably)
     by passing its results downstream.
   */
-  if (do_numbering)
+  vector<SCM> footnote_number_markups; // Holds the numbering markups.
+  vector<Stencil *> footnote_number_stencils; // Holds translated versions of the stencilized numbering markups.
+  for (vsize i = 0; i < fn_count; i++)
     {
-      vector<SCM> footnote_number_markups; // Holds the numbering markups.
-      vector<Stencil *> footnote_number_stencils; // Holds translated versions of the stencilized numbering markups.
-      for (vsize i = 0; i < fn_count; i++)
+      SCM markup = scm_call_1 (numbering_function, scm_from_int (counter));
+      Stencil *s = unsmob_stencil (Text_interface::interpret_markup (layout, props, markup));
+      if (!s)
         {
-          SCM markup = scm_call_1 (numbering_function, scm_from_int (counter));
-          Stencil *s = unsmob_stencil (Text_interface::interpret_markup (layout, props, markup));
-          if (!s)
-            {
-              programming_error ("Your numbering function needs to return a stencil.");
-              markup = SCM_EOL;
-              s = new Stencil (Box (Interval (0, 0), Interval (0, 0)), SCM_EOL);
-            }
-          footnote_number_markups.push_back (markup);
-          footnote_number_stencils.push_back (s);
-          counter++;
+          programming_error ("Your numbering function needs to return a stencil.");
+          markup = SCM_EOL;
+          s = new Stencil (Box (Interval (0, 0), Interval (0, 0)), SCM_EOL);
         }
+      footnote_number_markups.push_back (markup);
+      footnote_number_stencils.push_back (s);
+      counter++;
+    }
 
-      // find the maximum X_AXIS length
-      Real max_length = -infinity_f;
-      for (vsize i = 0; i < fn_count; i++)
-        max_length = max (max_length, footnote_number_stencils[i]->extent (X_AXIS).length ());
+  // find the maximum X_AXIS length
+  Real max_length = -infinity_f;
+  for (vsize i = 0; i < fn_count; i++)
+    max_length = max (max_length, footnote_number_stencils[i]->extent (X_AXIS).length ());
 
-      /*
-        translate each stencil such that it attains the correct maximum length and bundle the
-        footnotes into a scheme object.
-      */
-      SCM *tail = &numbers;
-      SCM *in_text_tail = &in_text_numbers;
+  /*
+    translate each stencil such that it attains the correct maximum length and bundle the
+    footnotes into a scheme object.
+  */
+  SCM *tail = &numbers;
+  SCM *in_text_tail = &in_text_numbers;
 
-      for (vsize i = 0; i < fn_count; i++)
-        {
-          *in_text_tail = scm_cons (footnote_number_markups[i], SCM_EOL);
-          in_text_tail = SCM_CDRLOC (*in_text_tail);
-          footnote_number_stencils[i]->translate_axis (max_length - footnote_number_stencils[i]->extent (X_AXIS).length (), X_AXIS);
-          *tail = scm_cons (footnote_number_stencils[i]->smobbed_copy (), SCM_EOL);
-          tail = SCM_CDRLOC (*tail);
-        }
+  for (vsize i = 0; i < fn_count; i++)
+    {
+      *in_text_tail = scm_cons (footnote_number_markups[i], SCM_EOL);
+      in_text_tail = SCM_CDRLOC (*in_text_tail);
+      footnote_number_stencils[i]->translate_axis (max_length - footnote_number_stencils[i]->extent (X_AXIS).length (), X_AXIS);
+      *tail = scm_cons (footnote_number_stencils[i]->smobbed_copy (), SCM_EOL);
+      tail = SCM_CDRLOC (*tail);
     }
   // build the footnotes
 
@@ -193,6 +188,13 @@ Page_layout_problem::get_footnotes_from_lines (SCM lines, int counter, Paper_boo
                                                                    props, footnote_markup);
 
               Stencil *footnote_stencil = unsmob_stencil (footnote_stl);
+              bool do_numbering = to_boolean (footnote->get_property ("automatically-numbered"));
+              if (Spanner *orig = dynamic_cast<Spanner *>(footnote))
+                {
+                  if (orig->is_broken ())
+                    for (vsize i = 0; i < orig->broken_intos_.size (); i++)
+                      do_numbering = do_numbering || to_boolean (orig->broken_intos_[i]->get_property ("automatically-numbered"));
+                }
               if (do_numbering)
                 {
                   SCM annotation_scm = scm_car (in_text_numbers);
@@ -226,21 +228,23 @@ Page_layout_problem::get_footnotes_from_lines (SCM lines, int counter, Paper_boo
           for (SCM st = stencils; scm_is_pair (st); st = scm_cdr (st))
             {
               Stencil mol;
-              Stencil *footnote = unsmob_stencil (scm_cadar (st));
+              Stencil *footnote = unsmob_stencil (scm_caddar (st));
               mol.add_stencil (*footnote);
+              bool do_numbering = to_boolean (scm_cadar (st));
+              SCM in_text_stencil = Stencil ().smobbed_copy ();
               if (do_numbering)
                 {
                   Stencil *annotation = unsmob_stencil (scm_car (numbers));
                   SCM in_text_annotation = scm_car (in_text_numbers);
-                  SCM in_text_stencil = Text_interface::interpret_markup (layout, props, in_text_annotation);
+                  in_text_stencil = Text_interface::interpret_markup (layout, props, in_text_annotation);
                   if (!unsmob_stencil (in_text_stencil))
                     in_text_stencil = SCM_EOL;
-                  number_footnote_table = scm_cons (scm_cons (scm_caar (st), in_text_stencil), number_footnote_table);
                   annotation->translate_axis (mol.extent (Y_AXIS)[UP] + number_raise - annotation->extent (Y_AXIS)[UP], Y_AXIS);
                   mol.add_at_edge (X_AXIS, LEFT, *annotation, 0.0);
                   numbers = scm_cdr (numbers);
                   in_text_numbers = scm_cdr (in_text_numbers);
                 }
+              number_footnote_table = scm_cons (scm_cons (scm_caar (st), in_text_stencil), number_footnote_table);
               footnote_stencil.add_at_edge (Y_AXIS, DOWN, mol, padding);
             }
           footnotes = scm_cons (footnote_stencil.smobbed_copy (), footnotes);
index 31b8023bef734caac6f4c4bfb3ee8281091b922a..3d4ee9fd95c8c59ed68f9893d38b2a8214a70cae 100644 (file)
@@ -61,8 +61,18 @@ Paper_column_engraver::finalize ()
 
   if (command_column_)
     {
+      // At the end of the score, allow page breaks and turns by default, but...
+      command_column_->set_property ("page-break-permission", ly_symbol2scm ("allow"));
+      command_column_->set_property ("page-turn-permission", ly_symbol2scm ("allow"));
+
+      // ...allow the user to override them.
+      handle_manual_breaks (true);
+
+      // On the other hand, line breaks are always allowed at the end of a score,
+      // even if they try to stop us.
       if (!scm_is_symbol (command_column_->get_property ("line-break-permission")))
         command_column_->set_property ("line-break-permission", ly_symbol2scm ("allow"));
+
       system_->set_bound (RIGHT, command_column_);
     }
 }
@@ -147,7 +157,7 @@ Paper_column_engraver::listen_label (Stream_event *ev)
 }
 
 void
-Paper_column_engraver::process_music ()
+Paper_column_engraver::handle_manual_breaks (bool only_do_permissions)
 {
   for (vsize i = 0; i < break_events_.size (); i++)
     {
@@ -170,7 +180,7 @@ Paper_column_engraver::process_music ()
       SCM pen = break_events_[i]->get_property ("break-penalty");
       SCM perm = break_events_[i]->get_property ("break-permission");
 
-      if (scm_is_number (pen))
+      if (!only_do_permissions && scm_is_number (pen))
         {
           Real new_pen = robust_scm2double (cur_pen, 0.0) + scm_to_double (pen);
           command_column_->set_property (pen_str.c_str (), scm_from_double (new_pen));
@@ -179,6 +189,12 @@ Paper_column_engraver::process_music ()
       else
         command_column_->set_property (perm_str.c_str (), perm);
     }
+}
+
+void
+Paper_column_engraver::process_music ()
+{
+  handle_manual_breaks (false);
 
   for (vsize i = 0; i < label_events_.size (); i++)
     {
index 201f04f1d036da86de78c491f81333c8a8dd99a0..a744ed71926b6bd43175d55457c0f6ad336a7ba2 100644 (file)
@@ -268,15 +268,18 @@ If we give names, Bison complains.
 %token <i> UNSIGNED
 
 /* Artificial tokens, for more generic function syntax */
-%token <i> EXPECT_MARKUP;
-%token <i> EXPECT_MUSIC;
-%token <i> EXPECT_PITCH;
-%token <i> EXPECT_DURATION;
-%token <i> EXPECT_SCM;
-%token <i> EXPECT_MARKUP_LIST
+%token <i> EXPECT_MARKUP "markup?"
+%token <i> EXPECT_MUSIC "ly:music?"
+%token <i> EXPECT_PITCH "ly:pitch?"
+%token <i> EXPECT_DURATION "ly:duration?"
+%token <i> EXPECT_SCM "scheme?"
+%token <i> EXPECT_MARKUP_LIST "markup-list?"
 /* After the last argument. */
 %token <i> EXPECT_NO_MORE_ARGS;
 
+/* An artificial token for parsing embedded Lilypond */
+%token <i> EMBEDDED_LILY "#{"
+
 %token <scm> BOOK_IDENTIFIER
 %token <scm> CHORDMODIFIER_PITCH
 %token <scm> CHORD_MODIFIER
@@ -343,6 +346,7 @@ If we give names, Bison complains.
 %type <scm> context_change
 %type <scm> direction_less_event
 %type <scm> direction_reqd_event
+%type <scm> embedded_lilypond
 %type <scm> event_chord
 %type <scm> gen_text_def
 %type <scm> music_property_def
@@ -352,6 +356,7 @@ If we give names, Bison complains.
 %type <scm> relative_music
 %type <scm> simple_element
 %type <scm> simple_music_property_def
+%type <scm> start_symbol
 %type <scm> string_number_event
 %type <scm> tempo_event
 
@@ -396,6 +401,7 @@ If we give names, Bison complains.
 %type <scm> closed_function_arglist
 %type <scm> open_function_arglist
 %type <scm> identifier_init
+%type <scm> lilypond
 %type <scm> lilypond_header
 %type <scm> lilypond_header_body
 %type <scm> lyric_element
@@ -458,7 +464,18 @@ prec levels in different prods */
 
 %%
 
-lilypond:      /* empty */
+start_symbol:
+       lilypond
+       | EMBEDDED_LILY {
+               SCM nn = PARSER->lexer_->lookup_identifier ("pitchnames");
+               PARSER->lexer_->push_note_state (alist_to_hashq (nn));
+       } embedded_lilypond {
+               PARSER->lexer_->pop_state ();
+               PARSER->lexer_->set_identifier (ly_symbol2scm ("$parseStringResult"), $3);
+       }
+       ;
+
+lilypond:      /* empty */ { }
        | lilypond toplevel_expression {
        }
        | lilypond assignment {
@@ -529,6 +546,21 @@ embedded_scm:
        | SCM_IDENTIFIER
        ;
 
+embedded_lilypond:
+       { $$ = MAKE_SYNTAX ("void-music", @$, SCM_UNDEFINED); }
+       | identifier_init
+       | music music music_list {
+               $$ = MAKE_SYNTAX ("sequential-music", @$,       
+                                 scm_cons2 ($1, $2, scm_reverse_x ($3, SCM_EOL)));
+       }
+       | error {
+               PARSER->error_level_ = 1;
+       }
+       | embedded_lilypond INVALID     {
+               PARSER->error_level_ = 1;
+       }
+       ;
+
 
 lilypond_header_body:
        {
index 985b7b08a76ba51e0c0748dc926c043133491af8..ca767cc7af5bbfd68468dc7adb41d6eb73b9b423 100644 (file)
@@ -55,6 +55,7 @@ class Rhythmic_column_engraver : public Engraver
 {
   vector<Grob *> rheads_;
   Grob *stem_;
+  Grob *flag_;
   Grob *note_column_;
   Grob *arpeggio_;
 
@@ -62,6 +63,7 @@ class Rhythmic_column_engraver : public Engraver
 protected:
 
   DECLARE_ACKNOWLEDGER (stem);
+  DECLARE_ACKNOWLEDGER (flag);
   DECLARE_ACKNOWLEDGER (rhythmic_head);
   DECLARE_ACKNOWLEDGER (arpeggio);
   void process_acknowledged ();
@@ -72,6 +74,7 @@ Rhythmic_column_engraver::Rhythmic_column_engraver ()
 {
 
   stem_ = 0;
+  flag_ = 0;
   note_column_ = 0;
   arpeggio_ = 0;
 }
@@ -105,6 +108,8 @@ Rhythmic_column_engraver::process_acknowledged ()
           Pointer_group_interface::add_grob (note_column_, ly_symbol2scm ("elements"), arpeggio_);
           note_column_->set_object ("arpeggio", arpeggio_->self_scm ());
         }
+      if (flag_)
+        Pointer_group_interface::add_grob (note_column_, ly_symbol2scm ("elements"), flag_);
     }
 }
 
@@ -114,6 +119,12 @@ Rhythmic_column_engraver::acknowledge_stem (Grob_info i)
   stem_ = i.grob ();
 }
 
+void
+Rhythmic_column_engraver::acknowledge_flag (Grob_info i)
+{
+  flag_ = i.grob ();
+}
+
 void
 Rhythmic_column_engraver::acknowledge_rhythmic_head (Grob_info i)
 {
@@ -132,9 +143,11 @@ Rhythmic_column_engraver::stop_translation_timestep ()
   note_column_ = 0;
   stem_ = 0;
   arpeggio_ = 0;
+  flag_ = 0;
 }
 
 ADD_ACKNOWLEDGER (Rhythmic_column_engraver, stem);
+ADD_ACKNOWLEDGER (Rhythmic_column_engraver, flag);
 ADD_ACKNOWLEDGER (Rhythmic_column_engraver, rhythmic_head);
 ADD_ACKNOWLEDGER (Rhythmic_column_engraver, arpeggio);
 
index 7c4ece46433c5f6be6477a52bc0d3d492d331f3f..6a509d391e2961d1f452588f1bc1c35eef1dee69 100644 (file)
@@ -56,17 +56,7 @@ Staff_spacing::optical_correction (Grob *me, Grob *g, Interval bar_height)
       Direction d = get_grob_direction (stem);
       if (Stem::is_normal_stem (stem) && d == DOWN)
         {
-
-          /*
-            can't look at stem-end-position, since that triggers
-            beam slope computations.
-          */
-          Real stem_start = Stem::head_positions (stem) [d];
-          Real stem_end = stem_start
-                          + d * robust_scm2double (stem->get_property ("length"), 7);
-
-          Interval stem_posns (min (stem_start, stem_end),
-                               max (stem_end, stem_start));
+          Interval stem_posns = stem->pure_height (stem, 0, INT_MAX);
 
           stem_posns.intersect (bar_height);
 
index 6890b5b041c410f56186d1c8733eb4613e313179..04184a90203891e73fd53086ce50c34b8938b981 100644 (file)
@@ -38,6 +38,7 @@ class Stem_engraver : public Engraver
 {
   Grob *stem_;
   Grob *tremolo_;
+  vector <Grob *> maybe_flags_;
   Stream_event *rhythmic_ev_;
   Stream_event *tremolo_ev_;
 
@@ -49,6 +50,8 @@ protected:
   DECLARE_TRANSLATOR_LISTENER (tremolo);
   DECLARE_ACKNOWLEDGER (rhythmic_head);
   void stop_translation_timestep ();
+  void finalize ();
+  void kill_unused_flags ();
 };
 
 Stem_engraver::Stem_engraver ()
@@ -65,7 +68,6 @@ Stem_engraver::make_stem (Grob_info gi)
   /* Announce the cause of the head as cause of the stem.  The
      stem needs a rhythmic structure to fit it into a beam.  */
   stem_ = make_item ("Stem", gi.grob ()->self_scm ());
-
   if (tremolo_ev_)
     {
       /* Stem tremolo is never applied to a note by default,
@@ -158,11 +160,37 @@ Stem_engraver::acknowledge_rhythmic_head (Grob_info gi)
     }
 
   Stem::add_head (stem_, gi.grob ());
+
+  if (Stem::is_normal_stem (stem_)
+      && Stem::duration_log (stem_) > 2)
+    {
+      Item *flag = make_item ("Flag", stem_->self_scm ());
+      flag->set_parent (stem_, X_AXIS);
+      stem_->set_object ("flag", flag->self_scm ());
+      maybe_flags_.push_back (flag);
+    }
+}
+
+void
+Stem_engraver::kill_unused_flags ()
+{
+  for (vsize i = 0; i < maybe_flags_.size (); i++)
+    if (unsmob_grob (maybe_flags_[i]->get_parent (X_AXIS)->get_object ("beam")))
+      maybe_flags_[i]->suicide ();
+}
+
+void
+Stem_engraver::finalize ()
+{
+  kill_unused_flags ();
 }
 
 void
 Stem_engraver::stop_translation_timestep ()
 {
+  if (scm_is_string (get_property ("whichBar")))
+    kill_unused_flags ();
+
   tremolo_ = 0;
   if (stem_)
     {
@@ -205,7 +233,8 @@ ADD_TRANSLATOR (Stem_engraver,
                 /* read */
                 "tremoloFlags "
                 "stemLeftBeamCount "
-                "stemRightBeamCount ",
+                "stemRightBeamCount "
+                "whichBar ",
 
                 /* write */
                 ""
index 2036d9a89072e2ef8019761674ebabd45b8d8c23..a45ae1182abee4b71c609842cc2c362a1e3f35ee 100644 (file)
@@ -147,14 +147,35 @@ MAKE_SCHEME_CALLBACK (Stem_tremolo, pure_height, 3);
 SCM
 Stem_tremolo::pure_height (SCM smob, SCM, SCM)
 {
-  Grob *me = unsmob_grob (smob);
+  Item *me = unsmob_item (smob);
 
   /*
     Cannot use the real slope, since it looks at the Beam.
    */
   Stencil s1 (untranslated_stencil (me, 0.35));
+  Item *stem = unsmob_item (me->get_object ("stem"));
+  if (!stem)
+    return ly_interval2scm (s1.extent (Y_AXIS));
+
+  Direction stemdir = get_grob_direction (stem);
+  if (stemdir == 0)
+    stemdir = UP;
+
+  Spanner *beam = Stem::get_beam (stem);
 
-  return ly_interval2scm (s1.extent (Y_AXIS));
+  if (!beam)
+    return ly_interval2scm (s1.extent (Y_AXIS));
+
+  Interval ph = stem->pure_height (stem, 0, INT_MAX);
+  Stem_info si = Stem::get_stem_info (stem);
+  ph[-stemdir] = si.shortest_y_;
+  int beam_count = Stem::beam_multiplicity (stem).length () + 1;
+  Real beam_translation = get_beam_translation (me);
+
+  ph = ph - stemdir * max (beam_count, 1) * beam_translation;
+  ph = ph - ph.center ();
+
+  return ly_interval2scm (ph);
 }
 
 MAKE_SCHEME_CALLBACK (Stem_tremolo, width, 1);
@@ -199,14 +220,30 @@ Stem_tremolo::untranslated_stencil (Grob *me, Real slope)
   return raw_stencil (me, slope, stencil_dir);
 }
 
-Stencil
-Stem_tremolo::translated_stencil (Grob *me, Real slope)
+MAKE_SCHEME_CALLBACK (Stem_tremolo, calc_y_offset, 1);
+SCM
+Stem_tremolo::calc_y_offset (SCM smob)
+{
+  Grob *me = unsmob_grob (smob);
+  return scm_from_double (y_offset (me, false));
+}
+
+MAKE_SCHEME_CALLBACK (Stem_tremolo, pure_calc_y_offset, 3);
+SCM
+Stem_tremolo::pure_calc_y_offset (SCM smob,
+                                  SCM, /* start */
+                                  SCM /* end */)
 {
-  Stencil mol = untranslated_stencil (me, slope);
+  Grob *me = unsmob_grob (smob);
+  return scm_from_double (y_offset (me, true));
+}
 
-  Grob *stem = unsmob_grob (me->get_object ("stem"));
+Real
+Stem_tremolo::y_offset (Grob *me, bool pure)
+{
+  Item *stem = unsmob_item (me->get_object ("stem"));
   if (!stem)
-    return Stencil ();
+    return 0.0;
 
   Direction stemdir = get_grob_direction (stem);
   if (stemdir == 0)
@@ -216,10 +253,18 @@ Stem_tremolo::translated_stencil (Grob *me, Real slope)
   Real beam_translation = get_beam_translation (me);
 
   int beam_count = beam ? (Stem::beam_multiplicity (stem).length () + 1) : 0;
-  Real ss = Staff_symbol_referencer::staff_space (me);
+
+  if (pure && beam)
+    {
+      Interval ph = stem->pure_height (stem, 0, INT_MAX);
+      Stem_info si = Stem::get_stem_info (stem);
+      ph[-stemdir] = si.shortest_y_;
+
+      return (ph - stemdir * max (beam_count, 1) * beam_translation)[stemdir] - stemdir * 0.5 * me->pure_height (me, 0, INT_MAX).length ();
+    }
 
   Real end_y
-    = Stem::stem_end_position (stem) * ss / 2
+    = stem->extent (stem, Y_AXIS)[stemdir]
       - stemdir * max (beam_count, 1) * beam_translation;
 
   if (!beam && Stem::duration_log (stem) >= 3)
@@ -234,13 +279,13 @@ Stem_tremolo::translated_stencil (Grob *me, Real slope)
     {
       /* we shouldn't position relative to the end of the stem since the stem
          is invisible */
+      Real ss = Staff_symbol_referencer::staff_space (me);
       vector<int> nhp = Stem::note_head_positions (stem);
       Real note_head = (stemdir == UP ? nhp.back () : nhp[0]) * ss / 2;
       end_y = note_head + stemdir * 1.5;
     }
-  mol.translate_axis (end_y, Y_AXIS);
 
-  return mol;
+  return end_y;
 }
 
 MAKE_SCHEME_CALLBACK (Stem_tremolo, print, 1);
@@ -249,7 +294,7 @@ Stem_tremolo::print (SCM grob)
 {
   Grob *me = unsmob_grob (grob);
 
-  Stencil s = translated_stencil (me, robust_scm2double (me->get_property ("slope"), 0.25));
+  Stencil s = untranslated_stencil (me, robust_scm2double (me->get_property ("slope"), 0.25));
   return s.smobbed_copy ();
 }
 
index e83ffd9893226a95672f70ebf284d7cd8d926733..7245e3c07fae7053aa0d4d9e0edf4378d42281d9 100644 (file)
   along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+/*
+  Note that several internal functions have a calc_beam bool argument.
+  This argument means: "If set, acknowledge the fact that there is a beam
+  and deal with it.  If not, give me the measurements as if there is no beam."
+  Most pure functions are called WITHOUT calc_beam, whereas non-pure functions
+  are called WITH calc_beam.
+
+  The only exception to this is ::pure_height, which calls internal_pure_height
+  with "true" for calc_beam in order to trigger the calculations of other
+  pure heights in case there is a beam.  It passes false, however, to
+  internal_height and internal_pure_height for all subsequent iterations.
+*/
+
 #include "stem.hh"
 #include "spanner.hh"
 
@@ -105,15 +118,46 @@ Stem::chord_start_y (Grob *me)
 }
 
 void
-Stem::set_stemend (Grob *me, Real se)
+Stem::set_stem_positions (Grob *me, Real se)
 {
   // todo: margins
   Direction d = get_grob_direction (me);
 
+  Grob *beam = unsmob_grob (me->get_object ("beam"));
   if (d && d * head_positions (me)[get_grob_direction (me)] >= se * d)
     me->warning (_ ("weird stem size, check for narrow beams"));
 
-  me->set_property ("stem-end-position", scm_from_double (se));
+  Interval height = me->pure_height (me, 0, INT_MAX);
+  Real half_space = Staff_symbol_referencer::staff_space (me) * 0.5;
+
+  height[d] = se * half_space + beam_end_corrective (me);
+
+  Real stemlet_length = robust_scm2double (me->get_property ("stemlet-length"),
+                                           0.0);
+  bool stemlet = stemlet_length > 0.0;
+
+  Grob *lh = get_reference_head (me);
+
+  if (!lh)
+    {
+      if (stemlet && beam)
+        {
+          Real beam_translation = Beam::get_beam_translation (beam);
+          Real beam_thickness = Beam::get_beam_thickness (beam);
+          int beam_count = beam_multiplicity (me).length () + 1;
+
+          height[-d] = (height[d] - d
+                        * (0.5 * beam_thickness
+                        + beam_translation * max (0, (beam_count - 1))
+                        + stemlet_length));
+        }
+      else if (!stemlet && beam)
+        height[-d] = height[d];
+      else if (stemlet && !beam)
+        me->programming_error ("Can't have a stemlet without a beam.");
+    }
+
+  me->set_property ("Y-extent", ly_interval2scm (height));
 }
 
 /* Note head that determines hshift for upstems
@@ -241,47 +285,60 @@ Stem::pure_height (SCM smob,
                    SCM /* end */)
 {
   Grob *me = unsmob_grob (smob);
-  Interval iv;
+  return ly_interval2scm (internal_pure_height (me, true));
+}
 
+Interval
+Stem::internal_pure_height (Grob *me, bool calc_beam)
+{
   if (!is_normal_stem (me))
-    return ly_interval2scm (iv);
+    return Interval (0.0, 0.0);
 
-  Real ss = Staff_symbol_referencer::staff_space (me);
-  Real rad = Staff_symbol_referencer::staff_radius (me);
+  Grob *beam = unsmob_grob (me->get_object ("beam"));
+
+  Interval iv = internal_height (me, false);
 
-  if (!to_boolean (me->get_property ("cross-staff")))
+  if (!beam)
+    return iv;
+  if (!to_boolean (me->get_property ("cross-staff")) && calc_beam)
     {
-      Real len_in_halfspaces;
-      SCM user_set_len_scm = me->get_property_data ("length");
-      if (scm_is_number (user_set_len_scm))
-        len_in_halfspaces = scm_to_double (user_set_len_scm);
-      else
-        len_in_halfspaces = scm_to_double (calc_length (smob));
-      Real len = len_in_halfspaces * ss / 2;
+      Interval overshoot;
       Direction dir = get_grob_direction (me);
+      Direction d = DOWN;
+      do
+        overshoot[d] = d == dir ? dir * infinity_f : iv[d];
+      while (flip (&d) != DOWN);
 
-      Interval hp = head_positions (me);
-      if (dir == UP)
-        iv = Interval (0, len);
-      else
-        iv = Interval (-len, 0);
+      vector<Interval> heights;
+      vector<Grob *> my_stems;
+      extract_grob_set (beam, "normal-stems", normal_stems);
+      for (vsize i = 0; i < normal_stems.size (); i++)
+        if (normal_stems[i] != me && get_grob_direction (normal_stems[i]) == dir)
+          {
+            heights.push_back (Stem::internal_pure_height (normal_stems[i], false));
+            my_stems.push_back (normal_stems[i]);
+            iv.unite (heights.back ());
+          }
+      for (vsize i = 0; i < my_stems.size (); i++)
+        cache_pure_height (my_stems[i], iv, heights[i]);
+      iv.intersect (overshoot);
+    }
 
-      if (!hp.is_empty ())
-        {
-          iv.translate (hp[dir] * ss / 2);
-          iv.add_point (hp[-dir] * ss / 2);
-        }
+  return iv;
+}
 
-      /* extend the stem (away from the head) to cover the staff */
-      if (dir == UP)
-        iv[UP] = max (iv[UP], rad * ss);
-      else
-        iv[DOWN] = min (iv[DOWN], -rad * ss);
-    }
-  else
-    iv = Interval (-rad * ss, rad * ss);
+void
+Stem::cache_pure_height (Grob *me, Interval iv, Interval my_iv)
+{
+  Interval overshoot;
+  Direction dir = get_grob_direction (me);
+  Direction d = DOWN;
+  do
+    overshoot[d] = d == dir ? dir * infinity_f : my_iv[d];
+  while (flip (&d) != DOWN);
 
-  return ly_interval2scm (iv);
+  iv.intersect (overshoot);
+  dynamic_cast<Item *> (me)->cache_pure_height (iv);
 }
 
 MAKE_SCHEME_CALLBACK (Stem, calc_stem_end_position, 1)
@@ -289,44 +346,39 @@ SCM
 Stem::calc_stem_end_position (SCM smob)
 {
   Grob *me = unsmob_grob (smob);
+  return scm_from_double (internal_calc_stem_end_position (me, true));
+}
 
+MAKE_SCHEME_CALLBACK (Stem, pure_calc_stem_end_position, 3)
+SCM
+Stem::pure_calc_stem_end_position (SCM smob,
+                                   SCM, /* start */
+                                   SCM /* end */)
+{
+  Grob *me = unsmob_grob (smob);
+  return scm_from_double (internal_calc_stem_end_position (me, false));
+}
+
+Real
+Stem::internal_calc_stem_end_position (Grob *me, bool calc_beam)
+{
   if (!head_count (me))
-    return scm_from_double (0.0);
+    return 0.0;
 
-  if (Grob *beam = get_beam (me))
+  Grob *beam = get_beam (me);
+  Real ss = Staff_symbol_referencer::staff_space (me);
+  if (beam && calc_beam)
     {
       (void) beam->get_property ("quantized-positions");
-      return me->get_property ("stem-end-position");
+      return me->extent (me, Y_AXIS)[get_grob_direction (me)] * ss * 2;
     }
 
   vector<Real> a;
 
   /* WARNING: IN HALF SPACES */
-  Real length = robust_scm2double (me->get_property ("length"), 7);
-
-  Direction dir = get_grob_direction (me);
-  Interval hp = head_positions (me);
-  Real stem_end = dir ? hp[dir] + dir * length : 0;
-
-  /* TODO: change name  to extend-stems to staff/center/'()  */
-  bool no_extend = to_boolean (me->get_property ("no-stem-extend"));
-  if (!no_extend && dir * stem_end < 0)
-    stem_end = 0.0;
-
-  return scm_from_double (stem_end);
-}
-
-/* Length is in half-spaces (or: positions) here. */
-MAKE_SCHEME_CALLBACK (Stem, calc_length, 1)
-SCM
-Stem::calc_length (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
-
   SCM details = me->get_property ("details");
   int durlog = duration_log (me);
 
-  Real ss = Staff_symbol_referencer::staff_space (me);
   Real staff_rad = Staff_symbol_referencer::staff_radius (me);
   Real length = 7;
   SCM s = ly_assoc_get (ly_symbol2scm ("lengths"), details, SCM_EOL);
@@ -370,7 +422,7 @@ Stem::calc_length (SCM smob)
 
   /* Tremolo stuff.  */
   Grob *t_flag = unsmob_grob (me->get_object ("tremolo-flag"));
-  if (t_flag && !unsmob_grob (me->get_object ("beam")))
+  if (t_flag && (!unsmob_grob (me->get_object ("beam")) || !calc_beam))
     {
       /* Crude hack: add extra space if tremolo flag is there.
 
@@ -398,8 +450,16 @@ Stem::calc_length (SCM smob)
       length = max (length, minlen + 1.0);
     }
 
-  return scm_from_double (length);
+  Real stem_end = dir ? hp[dir] + dir * length : 0;
+
+  /* TODO: change name  to extend-stems to staff/center/'()  */
+  bool no_extend = to_boolean (me->get_property ("no-stem-extend"));
+  if (!no_extend && dir * stem_end < 0)
+    stem_end = 0.0;
+
+  return stem_end;
 }
+
 /* The log of the duration (Number of hooks on the flag minus two)  */
 int
 Stem::duration_log (Grob *me)
@@ -557,29 +617,29 @@ Stem::calc_default_direction (SCM smob)
   return scm_from_int (dir);
 }
 
+// note - height property necessary to trigger quantized beam positions
+// otherwise, we could just use Grob::stencil_height_proc
 MAKE_SCHEME_CALLBACK (Stem, height, 1);
 SCM
 Stem::height (SCM smob)
 {
   Grob *me = unsmob_grob (smob);
-  if (!is_normal_stem (me))
-    return ly_interval2scm (Interval ());
-
-  Direction dir = get_grob_direction (me);
+  return ly_interval2scm (internal_height (me, true));
+}
 
-  Grob *beam = get_beam (me);
-  if (beam)
-    {
-      /* trigger set-stem-lengths. */
-      beam->get_property ("quantized-positions");
-    }
+Grob*
+Stem::get_reference_head (Grob *me)
+{
+  return to_boolean (me->get_property ("avoid-note-head"))
+         ? last_head (me)
+         : first_head (me);
+}
 
-  /*
-    Can't get_stencil (), since that would cache stencils too early.
-    This causes problems with beams.
-   */
-  Stencil *stencil = unsmob_stencil (print (smob));
-  Interval iv = stencil ? stencil->extent (Y_AXIS) : Interval ();
+Real
+Stem::beam_end_corrective (Grob *me)
+{
+  Grob *beam = unsmob_grob (me->get_object ("beam"));
+  Direction dir = get_grob_direction (me);
   if (beam)
     {
       if (dir == CENTER)
@@ -587,116 +647,36 @@ Stem::height (SCM smob)
           programming_error ("no stem direction");
           dir = UP;
         }
-      iv[dir] += dir * Beam::get_beam_thickness (beam) * 0.5;
+      return dir * Beam::get_beam_thickness (beam) * 0.5;
     }
-
-  return ly_interval2scm (iv);
+  return 0.0;
 }
 
-Real
-Stem::stem_end_position (Grob *me)
+Interval
+Stem::internal_height (Grob *me, bool calc_beam)
 {
-  return robust_scm2double (me->get_property ("stem-end-position"), 0);
-}
+  if (!is_valid_stem (me))
+    return Interval ();
 
-MAKE_SCHEME_CALLBACK (Stem, calc_flag, 1);
-SCM
-Stem::calc_flag (SCM smob)
-{
-  Grob *me = unsmob_grob (smob);
+  Direction dir = get_grob_direction (me);
 
-  int log = duration_log (me);
-  /*
-    TODO: maybe property stroke-style should take different values,
-    e.g. "" (i.e. no stroke), "single" and "double" (currently, it's
-    '() or "grace").  */
-  string flag_style;
-
-  SCM flag_style_scm = me->get_property ("flag-style");
-  if (scm_is_symbol (flag_style_scm))
-    flag_style = ly_symbol2string (flag_style_scm);
-
-  if (flag_style == "no-flag")
-    return Stencil ().smobbed_copy ();
-
-  bool adjust = true;
-
-  string staffline_offs;
-  if (flag_style == "mensural")
-    /* Mensural notation: For notes on staff lines, use different
-       flags than for notes between staff lines.  The idea is that
-       flags are always vertically aligned with the staff lines,
-       regardless if the note head is on a staff line or between two
-       staff lines.  In other words, the inner end of a flag always
-       touches a staff line.
-    */
-    {
-      if (adjust)
-        {
-          int p = (int) (rint (stem_end_position (me)));
-          staffline_offs
-            = Staff_symbol_referencer::on_line (me, p) ? "0" : "1";
-        }
-      else
-        staffline_offs = "2";
-    }
-  else
-    staffline_offs = "";
-
-  char dir = (get_grob_direction (me) == UP) ? 'u' : 'd';
-  string font_char = flag_style
-                     + to_string (dir) + staffline_offs + to_string (log);
-  Font_metric *fm = Font_interface::get_default_font (me);
-  Stencil flag = fm->find_by_name ("flags." + font_char);
-  if (flag.is_empty ())
-    me->warning (_f ("flag `%s' not found", font_char));
-
-  SCM stroke_style_scm = me->get_property ("stroke-style");
-  if (scm_is_string (stroke_style_scm))
+  Grob *beam = get_beam (me);
+  if (beam && calc_beam)
     {
-      string stroke_style = ly_scm2string (stroke_style_scm);
-      if (!stroke_style.empty ())
-        {
-          string font_char = flag_style + to_string (dir) + stroke_style;
-          Stencil stroke = fm->find_by_name ("flags." + font_char);
-          if (stroke.is_empty ())
-            {
-              font_char = to_string (dir) + stroke_style;
-              stroke = fm->find_by_name ("flags." + font_char);
-            }
-          if (stroke.is_empty ())
-            me->warning (_f ("flag stroke `%s' not found", font_char));
-          else
-            flag.add_stencil (stroke);
-        }
+      /* trigger set-stem-lengths. */
+      (void) beam->get_property ("quantized-positions");
+      return me->extent (me, Y_AXIS);
     }
 
-  return flag.smobbed_copy ();
-}
+  Real y2 = internal_calc_stem_end_position (me, calc_beam);
+  Real y1 = internal_calc_stem_begin_position (me, calc_beam);
 
-Stencil
-Stem::flag (Grob *me)
-{
-  int log = duration_log (me);
-  if (log < 3
-      || unsmob_grob (me->get_object ("beam")))
-    return Stencil ();
+  Real half_space = Staff_symbol_referencer::staff_space (me) * 0.5;
 
-  if (!is_normal_stem (me))
-    return Stencil ();
+  Interval stem_y  = Interval (min (y1, y2), max (y2, y1)) * half_space;
+  stem_y[dir] += beam_end_corrective (me);
 
-  // This get_property call already evaluates the scheme function with
-  // the grob passed as argument! Thus, we only have to check if a valid
-  // stencil is returned.
-  SCM flag_style_scm = me->get_property ("flag");
-  if (Stencil *flag = unsmob_stencil (flag_style_scm))
-    {
-      return *flag;
-    }
-  else
-    {
-      return Stencil ();
-    }
+  return stem_y;
 }
 
 MAKE_SCHEME_CALLBACK (Stem, width, 1);
@@ -709,17 +689,12 @@ Stem::width (SCM e)
 
   if (is_invisible (me))
     r.set_empty ();
-  else if (unsmob_grob (me->get_object ("beam"))
-           || abs (duration_log (me)) <= 2)
+  else
     {
       r = Interval (-1, 1);
       r *= thickness (me) / 2;
     }
-  else
-    {
-      r = Interval (-1, 1) * thickness (me) * 0.5;
-      r.unite (flag (me).extent (X_AXIS));
-    }
+
   return ly_interval2scm (r);
 }
 
@@ -735,12 +710,32 @@ SCM
 Stem::calc_stem_begin_position (SCM smob)
 {
   Grob *me = unsmob_grob (smob);
+  return scm_from_double (internal_calc_stem_begin_position (me, true));
+}
+
+MAKE_SCHEME_CALLBACK (Stem, pure_calc_stem_begin_position, 3);
+SCM
+Stem::pure_calc_stem_begin_position (SCM smob,
+                                     SCM, /* start */
+                                     SCM /* end */)
+{
+  Grob *me = unsmob_grob (smob);
+  return scm_from_double (internal_calc_stem_begin_position (me, false));
+}
+
+Real
+Stem::internal_calc_stem_begin_position (Grob *me, bool calc_beam)
+{
+  Grob *beam = get_beam (me);
+  Real ss = Staff_symbol_referencer::staff_space (me);
+  if (beam && calc_beam)
+    {
+      (void) beam->get_property ("quantized-positions");
+      return me->extent (me, Y_AXIS)[-get_grob_direction (me)] * ss * 2;
+    }
+
   Direction d = get_grob_direction (me);
-  Real half_space = Staff_symbol_referencer::staff_space (me) * 0.5;
-  Grob *lh
-    = to_boolean (me->get_property ("avoid-note-head"))
-      ? last_head (me)
-      : first_head (me);
+  Grob *lh = get_reference_head (me);
 
   Real pos = Staff_symbol_referencer::get_position (lh);
 
@@ -750,64 +745,51 @@ Stem::calc_stem_begin_position (SCM smob)
       Real y_attach = Note_head::stem_attachment_coordinate (head, Y_AXIS);
 
       y_attach = head_height.linear_combination (y_attach);
-      pos += d * y_attach / half_space;
+      pos += d * y_attach * 2 / ss;
     }
 
-  return scm_from_double (pos);
+  return pos;
 }
 
-MAKE_SCHEME_CALLBACK (Stem, print, 1);
-SCM
-Stem::print (SCM smob)
+bool
+Stem::is_valid_stem (Grob *me)
 {
-  Grob *me = unsmob_grob (smob);
-  Grob *beam = get_beam (me);
-
-  Stencil mol;
-  Direction d = get_grob_direction (me);
-
+  /* TODO: make the stem start a direction ?
+     This is required to avoid stems passing in tablature chords.  */
   Real stemlet_length = robust_scm2double (me->get_property ("stemlet-length"),
                                            0.0);
   bool stemlet = stemlet_length > 0.0;
 
-  /* TODO: make the stem start a direction ?
-     This is required to avoid stems passing in tablature chords.  */
-  Grob *lh
-    = to_boolean (me->get_property ("avoid-note-head"))
-      ? last_head (me)
-      : first_head (me);
+  Grob *lh = get_reference_head (me);
+  Grob *beam = unsmob_grob (me->get_object ("beam"));
 
   if (!lh && !stemlet)
-    return SCM_EOL;
+    return false;
 
   if (!lh && stemlet && !beam)
-    return SCM_EOL;
+    return false;
 
   if (lh && robust_scm2int (lh->get_property ("duration-log"), 0) < 1)
-    return SCM_EOL;
+    return false;
 
   if (is_invisible (me))
-    return SCM_EOL;
+    return false;
 
-  Real y2 = robust_scm2double (me->get_property ("stem-end-position"), 0.0);
-  Real y1 = y2;
-  Real half_space = Staff_symbol_referencer::staff_space (me) * 0.5;
+  return true;
+}
 
-  if (lh)
-    y2 = robust_scm2double (me->get_property ("stem-begin-position"), 0.0);
-  else if (stemlet)
-    {
-      Real beam_translation = Beam::get_beam_translation (beam);
-      Real beam_thickness = Beam::get_beam_thickness (beam);
-      int beam_count = beam_multiplicity (me).length () + 1;
-
-      y2 -= d
-            * (0.5 * beam_thickness
-               + beam_translation * max (0, (beam_count - 1))
-               + stemlet_length) / half_space;
-    }
+MAKE_SCHEME_CALLBACK (Stem, print, 1);
+SCM
+Stem::print (SCM smob)
+{
+  Grob *me = unsmob_grob (smob);
+  if (!is_valid_stem (me))
+    return SCM_EOL;
 
-  Interval stem_y (min (y1, y2), max (y2, y1));
+  Interval stem_y = me->extent (me, Y_AXIS);
+  Direction dir = get_grob_direction (me);
+
+  stem_y[dir] -= beam_end_corrective (me);
 
   // URG
   Real stem_width = thickness (me);
@@ -815,34 +797,15 @@ Stem::print (SCM smob)
     = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter"));
 
   Box b = Box (Interval (-stem_width / 2, stem_width / 2),
-               Interval (stem_y[DOWN] * half_space, stem_y[UP] * half_space));
+               stem_y);
 
+  Stencil mol;
   Stencil ss = Lookup::round_filled_box (b, blot);
   mol.add_stencil (ss);
 
-  mol.add_stencil (get_translated_flag (me));
-
   return mol.smobbed_copy ();
 }
 
-Stencil
-Stem::get_translated_flag (Grob *me)
-{
-  Stencil fl = flag (me);
-  if (!fl.is_empty ())
-    {
-      Direction d = get_grob_direction (me);
-      Real blot
-        = me->layout ()->get_dimension (ly_symbol2scm ("blot-diameter"));
-      Real stem_width = thickness (me);
-      Real half_space = Staff_symbol_referencer::staff_space (me) * 0.5;
-      Real y2 = robust_scm2double (me->get_property ("stem-end-position"), 0.0);
-      fl.translate_axis (y2 * half_space - d * blot / 2, Y_AXIS);
-      fl.translate_axis (stem_width / 2, X_AXIS);
-    }
-  return fl;
-}
-
 /*
   move the stem to right of the notehead if it is up.
 */
@@ -1070,6 +1033,12 @@ Stem::calc_cross_staff (SCM smob)
   return scm_from_bool (is_cross_staff (unsmob_grob (smob)));
 }
 
+Grob*
+Stem::flag (Grob *me)
+{
+  return unsmob_grob (me->get_object ("flag"));
+}
+
 /* FIXME:  Too many properties  */
 ADD_INTERFACE (Stem,
                "The stem represents the graphical stem.  In addition, it"
@@ -1108,9 +1077,7 @@ ADD_INTERFACE (Stem,
                "direction "
                "duration-log "
                "flag "
-               "flag-style "
                "french-beaming "
-               "length "
                "length-fraction "
                "max-beam-connect "
                "neutral-direction "
@@ -1118,11 +1085,8 @@ ADD_INTERFACE (Stem,
                "note-heads "
                "positioning-done "
                "rests "
-               "stem-begin-position "
-               "stem-end-position "
                "stem-info "
                "stemlet-length "
-               "stroke-style "
                "thickness "
                "tremolo-flag "
               );
index 3e76c120b1a0468cc15df15637202c80e098b5d9..098bf00a11bfd40f81651f845dbcc1e62a27fb3c 100644 (file)
@@ -149,8 +149,9 @@ Tie_formatting_problem::set_column_chord_outline (vector<Item *> bounds,
           else
             {
               if (use_horizontal_spacing_ || !Stem::get_beam (stem))
-                stem_end_position = Stem::stem_end_position (stem) * staff_space * .5;
+                stem_end_position = stem->extent (stem, Y_AXIS)[get_grob_direction (stem)];
               else
+                // May want to change this to the stem's pure height...
                 stem_end_position = Stem::note_head_positions (stem)[get_grob_direction (stem)]
                                     * staff_space * .5;
             }
@@ -170,9 +171,13 @@ Tie_formatting_problem::set_column_chord_outline (vector<Item *> bounds,
 
           if (dir == LEFT)
             {
-              Box flag_box = Stem::get_translated_flag (stem).extent_box ();
-              flag_box.translate ( Offset (x[RIGHT], X_AXIS));
-              boxes.push_back (flag_box);
+              Grob *flag = Stem::flag (stem);
+              if (flag)
+                {
+                  Grob* commony = stem->common_refpoint (flag, Y_AXIS);
+                  boxes.push_back (Box (flag->extent (x_refpoint_, X_AXIS),
+                                        flag->extent (commony, Y_AXIS)));
+                }
             }
         }
       else
index c6dfa799924a5c4b169406cf26854c1b865d0f24..627d6fcfb04a961e531e7ee9aabd6bc3ae2afc34 100644 (file)
@@ -553,23 +553,24 @@ Tuplet_bracket::calc_position_and_height (Grob *me_grob, Real *offset, Real *dy)
       && Note_column::get_stem (columns[0])
       && Note_column::get_stem (columns.back ()))
     {
-      /*
-        trigger set_stem_ends
-      */
-      (void) par_beam->get_property ("quantized-positions");
-
       Drul_array<Grob *> stems (Note_column::get_stem (columns[0]),
                                 Note_column::get_stem (columns.back ()));
 
-      Real ss = 0.5 * Staff_symbol_referencer::staff_space (me);
-      Real lp = ss * robust_scm2double (stems[LEFT]->get_property ("stem-end-position"), 0.0)
-                + stems[LEFT]->get_parent (Y_AXIS)->relative_coordinate (commony, Y_AXIS);
-      Real rp = ss * robust_scm2double (stems[RIGHT]->get_property ("stem-end-position"), 0.0)
-                + stems[RIGHT]->get_parent (Y_AXIS)->relative_coordinate (commony, Y_AXIS);
+      Interval poss;
+      Direction side = LEFT;
+      do
+        {
+          // Trigger setting of stem lengths if necessary.
+          if (Grob *beam = Stem::get_beam (stems[side]))
+            (void) beam->get_property ("quantized-positions");
+          poss[side] = stems[side]->extent (stems[side], Y_AXIS)[get_grob_direction (stems[side])]
+                       + stems[side]->get_parent (Y_AXIS)->relative_coordinate (commony, Y_AXIS);
+        }
+      while (flip (&side) != LEFT);
 
-      *dy = rp - lp;
-      points.push_back (Offset (stems[LEFT]->relative_coordinate (commonx, X_AXIS) - x0, lp));
-      points.push_back (Offset (stems[RIGHT]->relative_coordinate (commonx, X_AXIS) - x0, rp));
+      *dy = poss[RIGHT] - poss[LEFT];
+      points.push_back (Offset (stems[LEFT]->relative_coordinate (commonx, X_AXIS) - x0, poss[LEFT]));
+      points.push_back (Offset (stems[RIGHT]->relative_coordinate (commonx, X_AXIS) - x0, poss[RIGHT]));
     }
   else
     {
index badb701e08579e8aa7bb4f70ec8b027eaaae0380..a2ba6551f678d11061d13afae9d6bcc90a6946a1 100644 (file)
@@ -675,6 +675,7 @@ automatically when an output definition (a @code{\score} or
   graceSettings = #`(
     (Voice Stem direction ,UP)
     (Voice Stem font-size -3)
+    (Voice Flag font-size -3)
     (Voice NoteHead font-size -3)
     (Voice TabNoteHead font-size -4)
     (Voice Dots font-size -3)
@@ -781,9 +782,8 @@ context."
   \remove "Accidental_engraver"
   %% make the Stems as short as possible to minimize their influence
   %% on the slur::calc-control-points routine
-  \override Stem #'length = #0
   \override Stem #'no-stem-extend = ##t
-  \override Stem #'flag-style = #'no-flag
+  \override Flag #'style = #'no-flag
   \override Stem #'details = #'((lengths 0 0 0 0 0 0)
                                 (beamed-lengths 0 0 0)
                                 (beamed-minimum-free-lengths 0 0 0)
index 6850541afaeb1c8bb209c42208f0a68b1955ffdd..4ee3be0179e3a6c155d035eb557d19bc5f78bf8f 100644 (file)
@@ -21,18 +21,18 @@ stopAppoggiaturaMusic =  {
 
 startAcciaccaturaMusic =  {
     s1*0\startGraceSlur
-    \override Stem  #'stroke-style = #"grace"
+    \override Flag  #'stroke-style = #"grace"
 }
 
 stopAcciaccaturaMusic =  {
-    \revert Stem #'stroke-style
+    \revert Flag #'stroke-style
     s1*0\stopGraceSlur
 }
 
 startSlashedGraceMusic =  {
-  \override Stem  #'stroke-style = #"grace"
+  \override Flag #'stroke-style = #"grace"
 }
 
 stopSlashedGraceMusic =  {
-  \revert Stem #'stroke-style
+  \revert Flag #'stroke-style
 }
index 0b8e0680beb76ecb72f1d005b37b1c4921ba54f6..6475a719c1b1de20a6ed03fede4fffd224deb9dd 100644 (file)
@@ -301,6 +301,7 @@ neumeDemoLayout = \layout {
        \consists Vaticana_ligature_engraver
        \override NoteHead #'style = #'vaticana.punctum
        \override Stem #'transparent = ##t
+       \override Flag #'transparent = ##t
     }
 }
 
index e6b8a97f58eaf45b88b1496a44bfb80428b8562f..b3a009860753c54d7ab7549617ab4ba6f32d3ae5 100644 (file)
@@ -346,6 +346,7 @@ footnoteGrob =
    (_i "Attach @var{text} to @var{grob-name} at offset @var{offset},
 with @var{text} referring to @var{footnote} (use like @code{\\once})")
    (make-music 'FootnoteEvent
+               'automatically-numbered #f
               'symbol grob-name
               'X-offset (car offset)
               'Y-offset (cdr offset)
@@ -360,9 +361,14 @@ allowing for the footnote to be automatically numbered such that
 the number appears at @var{offset}.  Note that, for this to take effect,
 auto-numbering must be turned on in the paper block.  Otherwise, no
 number will appear.  Use like @code{\\once})")
-   #{
-     \footnoteGrob $grob-name $offset \markup { \null } $footnote
-   #})
+   (make-music 'FootnoteEvent
+               'automatically-numbered #t
+              'symbol grob-name
+              'X-offset (car offset)
+              'Y-offset (cdr offset)
+               'text (make-null-markup)
+              'footnote-text footnote))
+
 
 footnote =
 #(define-music-function (parser location offset text footnote)
@@ -370,14 +376,12 @@ footnote =
    (_i "Attach @var{text} at @var{offset} with @var{text} referring
 to @var{footnote} (use like @code{\\tweak})")
    (make-music 'FootnoteEvent
+               'automatically-numbered #f
               'X-offset (car offset)
               'Y-offset (cdr offset)
               'text text
               'footnote-text footnote))
 
-% this function can't be a simple copy and past of the above because
-% it needs to be encapsulated in a Sequential Music.
-% so, there's a code dup of above :-(
 autoFootnote =
 #(define-music-function (parser location offset footnote)
    (number-pair? markup?)
@@ -387,6 +391,7 @@ such that the number appears at @var{offset}.  Note that, for this to
 take effect, auto-numbering must be turned on in the paper block.
 Otherwise, no number will appear.  Use like @code{\\tweak})")
    (make-music 'FootnoteEvent
+               'automatically-numbered #t
               'X-offset (car offset)
               'Y-offset (cdr offset)
               'text (make-null-markup)
index c68652d8a403778c1c490e4a13672dd90de60190..d08c665f570767712e02f2dad6a836d0a8e82fea 100644 (file)
   footnote-padding = 0.5\mm
   footnote-footer-padding = 0.5\mm
   footnote-number-raise = 0.5\mm
-  footnote-auto-numbering = ##t
   footnote-numbering-function = #numbered-footnotes
   reset-footnotes-on-new-page = ##t
 
index 0175bb798fe405134afd05236f81f182001af729..02acc1b4e6c50f263e44496f6ba14b6a864265ac 100644 (file)
@@ -233,6 +233,7 @@ hideNotes = {
   \override NoteHead #'transparent = ##t
   \override NoteHead #'no-ledgers = ##t
   \override Stem #'transparent = ##t
+  \override Flag #'transparent = ##t
   \override Beam #'transparent = ##t
   \override Accidental #'transparent = ##t
 }
@@ -240,6 +241,7 @@ unHideNotes = {
   \revert Accidental #'transparent
   \revert Beam #'transparent
   \revert Stem #'transparent
+  \revert Flag #'transparent
   \revert NoteHead #'transparent
   \revert NoteHead #'no-ledgers
   \revert Dots #'transparent
@@ -424,7 +426,7 @@ tabFullNotation = {
   % stems (the half note gets a double stem)
   \revert TabVoice.Stem #'length
   \revert TabVoice.Stem #'no-stem-extend
-  \revert TabVoice.Stem #'flag-style
+  \revert TabVoice.Flag #'style
   \revert TabVoice.Stem #'details
   \revert TabVoice.Stem #'transparent
   \override TabVoice.Stem #'stencil = #tabvoice::draw-double-stem-for-half-notes
@@ -544,30 +546,35 @@ voiceOneStyle = {
   \override NoteHead #'style = #'diamond
   \override NoteHead #'color = #red
   \override Stem #'color = #red
+  \override Flag #'color = #red
   \override Beam #'color = #red
 }
 voiceTwoStyle = {
   \override NoteHead #'style = #'triangle
   \override NoteHead #'color = #blue
   \override Stem #'color = #blue
+  \override Flag #'color = #blue
   \override Beam #'color = #blue
 }
 voiceThreeStyle = {
   \override NoteHead #'style = #'xcircle
   \override NoteHead #'color = #green
   \override Stem #'color = #green
+  \override Flag #'color = #green
   \override Beam #'color = #green
 }
 voiceFourStyle = {
   \override NoteHead #'style = #'cross
   \override NoteHead #'color = #magenta
   \override Stem #'color = #magenta
+  \override Flag #'color = #magenta
   \override Beam #'color = #magenta
 }
 voiceNeutralStyle = {
   \revert NoteHead #'style
   \revert NoteHead #'color
   \revert Stem #'color
+  \revert Flag #'color
   \revert Beam #'color
 }
 
index 0edc1cb4248045ee675f8d4872586fbe5eeca0d2..5b2075db9613a4cd72851637fb951116166374c4 100644 (file)
@@ -57,12 +57,9 @@ newly-defined tuning.
 @{chord} must be in absolute pitches and should have the highest
 string number (generally the lowest pitch) first.  @code{tuning}
 should be a string that will be converted to a symbol.")
-   (begin
-     (chord->tuning parser tuning chord)
-     #{
-        \set TabStaff.stringTunings = $(ly:parser-lookup parser tuning)
-        \set FretBoards.stringTunings = $(ly:parser-lookup parser tuning)
-     #}))
+  (chord->tuning parser tuning chord)
+  #{ \set stringTunings (ly:parser-lookup $parser $tuning)
+  #})
 
 %% A music function for converting an alist to string-tunings
 makeDefaultStringTunings =
index d04ed18b7b5e99c2641079b77e6af9a459a634ad..e252d335e5661f116fb35fa2da43a823e1e5e979 100644 (file)
@@ -620,6 +620,44 @@ fet_beginchar ("halfopen (unstopped)", "halfopen");
 fet_endchar;
 
 
+fet_beginchar ("halfopen vertical", "halfopenvertical");
+       save thin, height, width, thick, factor, slash;
+
+       factor := 3/2;
+       height# = 5/4 width#;
+       height# = staff_space#;
+       thin = 0.6 linethickness + 0.06 staff_space;
+       slash# = 1.05 linethickness#;
+
+       set_char_box (width# / 2, width# / 2,
+                     height# / 2, height# / 2);
+
+       define_pixels (width, height, slash);
+
+       2 thick + 0.6 (height - 2 thin) = width;
+
+       penpos1 (thick, 0);
+       penpos2 (thin, 90);
+       penpos3 (thick, 180);
+       penpos4 (thin, 270);
+       z1r = (w, 0);
+       z2r = (0, h);
+       z3r = (-w, 0);
+       z4r = (0, -h);
+
+       penlabels (1, 2, 3, 4);
+
+       penstroke z1e{up}
+                 .. z2e{left}
+                 .. z3e{down}
+                 .. z4e{right}
+                 .. cycle;
+
+       draw_brush ((0, -h * factor), slash,
+                   (0, h * factor), slash);
+fet_endchar;
+
+
 fet_beginchar ("plus (stopped)", "stopped");
        save hthick, vthick, size, outer_hsize, outer_vsize;
 
index 735b9c78956e4e602f41478525379bb344880232..7b6535f1e38ef069e7464e32b856673f4df3b6cc 100644 (file)
@@ -84,7 +84,7 @@ note)."
 (ly:add-interface
  'footnote-interface
  "Make a footnote."
- '(footnote-text))
+ '(automatically-numbered footnote-text))
 
 (ly:add-interface
  'footnote-spanner-interface
index a45f1053d178aa69bee605845be3c4ca7a7931a0..cd3fd6ec979b2e4dde93ec2fb59aec8d1d19ef78 100644 (file)
@@ -58,6 +58,8 @@ arpeggio squiggly line.")
      (auto-knee-gap ,ly:dimension? "If a gap is found between note
 heads where a horizontal beam fits that is larger than this number,
 make a kneed beam.")
+     (automatically-numbered ,boolean? "Should a footnote be automatically
+numbered?")
      (average-spacing-wishes ,boolean? "If set, the spacing wishes are
 averaged over staves.")
      (avoid-note-head ,boolean? "If set, the stem of a chord does not
@@ -272,17 +274,7 @@ Y@tie{}dimension by this much.")
 ;;
 ;; f
 ;;
-     (flag ,ly:stencil? "A function returning the full flag stencil
-for the @code{Stem}, which is passed to the function as the only
-argument.  The default ly:stem::calc-stencil function uses the
-@code{flag-style} property to determine the correct glyph for the
-flag.  By providing your own function, you can create arbitrary
-flags.")
      (flag-count ,number? "The number of tremolo beams.")
-     (flag-style ,symbol? "A symbol determining what style of flag
-glyph is typeset on a @code{Stem}.  Valid options include @code{'()}
-for standard flags, @code{'mensural} and @code{'no-flag}, which
-switches off the flag.")
      (font-encoding ,symbol? "The font encoding is the broadest
 category for selecting a font.  Currently, only lilypond's system
 fonts (Emmentaler) are using this property.  Available
@@ -846,10 +838,6 @@ the @code{staff-staff-spacing} property of the staff's
 structure.")
      (stem-attachment ,number-pair? "An @code{(@var{x} . @var{y})}
 pair where the stem attaches to the notehead.")
-     (stem-begin-position ,number? "Where does the stem begin (the
-position of the support-head)?")
-     (stem-end-position ,number? "Where does the stem end (the end is
-opposite to the support-head)?")
      ;;[TODO: doco]
      (stem-spacing-correction ,number? "Optical correction amount for
 stems that are placed in tight configurations.  For opposite
@@ -1020,6 +1008,7 @@ the grob where this is set in.")
 in addition to notes and stems.")
 
      (figures ,ly:grob-array? "Figured bass objects for continuation line.")
+     (flag ,ly:grob? "A pointer to a @code{Flag} object.")
 
      (glissando-index ,integer? "The index of a glissando in its note
 column.")
index 3055af219bfb916547a7e1e1b9bad26fa48e2c4a..1591d108bbc813dbc488d6f08e3146d736084572 100644 (file)
        (clip-edges . #t)
        (collision-interfaces . (beam-interface
                                 clef-interface
+                                flag-interface
                                 inline-accidental-interface
                                 key-signature-interface
                                 note-head-interface
        ;; sync with TextScript (?)
 
        (avoid-slur . around)
-       (cross-staff . ,ly:side-position-interface::calc-cross-staff)
+       (cross-staff . ,script-or-side-position-cross-staff)
        (direction . ,ly:script-interface::calc-direction)
        (font-encoding . fetaText)
        (font-size . -5)                ; don't overlap when next to heads.
                                text-interface
                                text-script-interface))))))
 
+    (Flag
+     . (
+       (stencil . ,ly:flag::print)
+       (X-extent . ,ly:flag::width)
+       (X-offset . ,ly:flag::calc-x-offset)
+       (Y-offset . ,ly:flag::calc-y-offset)
+       (meta . ((class . Item)
+                (interfaces . (flag-interface
+                                font-interface))))))
+
     (FootnoteItem
      . (
        (annotation-balloon . #f)
        (annotation-line . #t)
+       (automatically-numbered . ,(grob::calc-property-by-copy 'automatically-numbered))
        (break-visibility . ,inherit-y-parent-visibility)
        (footnote-text . ,(grob::calc-property-by-copy 'footnote-text))
        (stencil . ,ly:balloon-interface::print)
      . (
        (annotation-balloon . #f)
        (annotation-line . #t)
+       (automatically-numbered . ,(grob::calc-property-by-copy 'automatically-numbered))
        (footnote-text . ,(grob::calc-property-by-copy 'footnote-text))
        (spanner-placement . ,LEFT)
        (stencil . ,ly:balloon-interface::print-spanner)
 
        (direction . ,ly:stem::calc-direction)
        (duration-log . ,stem::calc-duration-log)
-       (flag . ,ly:stem::calc-flag)
-       (length . ,ly:stem::calc-length)
        (neutral-direction . ,DOWN)
        (positioning-done . ,ly:stem::calc-positioning-done)
-       (stem-begin-position . ,ly:stem::calc-stem-begin-position)
-       (stem-end-position . ,ly:stem::calc-stem-end-position)
        (stem-info . ,ly:stem::calc-stem-info)
        (stencil . ,ly:stem::print)
        (thickness . 1.3)
        (Y-extent . ,ly:stem::height)
        (Y-offset . ,ly:staff-symbol-referencer::callback)
        (meta . ((class . Item)
-                (interfaces . (font-interface
-                               stem-interface))))))
+                (interfaces . (stem-interface))))))
 
     (StemTremolo
      . (
        (stencil . ,ly:stem-tremolo::print)
        (style . ,ly:stem-tremolo::calc-style)
        (X-extent . ,ly:stem-tremolo::width)
+       (Y-offset . ,ly:stem-tremolo::calc-y-offset)
        (meta . ((class . Item)
                 (interfaces . (stem-tremolo-interface))))))
 
     (StringNumber
      . (
        (avoid-slur . around)
+       (cross-staff . ,script-or-side-position-cross-staff)
        (font-encoding . fetaText)
        (font-size . -5)                ; don't overlap when next to heads.
        (padding . 0.5)
     (TextScript
      . (
        (avoid-slur . around)
-       (cross-staff . ,ly:script-interface::calc-cross-staff)
+       (cross-staff . ,script-or-side-position-cross-staff)
        (direction . ,DOWN)
        (extra-spacing-width . (+inf.0 . -inf.0))
        (outside-staff-priority . 450)
    ly:note-head::print
    ly:dots::print
    ly:clef::print
+   ly:flag::print
+   default-flag
+   normal-flag
+   mensural-flag
+   no-flag
+   modern-straight-flag
+   old-straight-flag
    ly:key-signature-interface::print
    ly:percent-repeat-item-interface::beat-slash
    ly:text-interface::print
     (,ly:side-position-interface::y-aligned-side . ,ly:side-position-interface::pure-y-aligned-side)
     (,ly:slur::height . ,ly:slur::pure-height)
     (,ly:slur::outside-slur-callback . ,ly:slur::pure-outside-slur-callback)
+    (,ly:stem::calc-stem-end-position . ,ly:stem::pure-calc-stem-end-position)
     (,ly:stem::height . ,ly:stem::pure-height)
+    (,ly:stem-tremolo::calc-y-offset . ,ly:stem-tremolo::pure-calc-y-offset)
     (,ly:system::height . ,ly:system::calc-pure-height)))
 
 (define pure-functions
   (list
    parenthesize-elements
    laissez-vibrer::print
+   ly:flag::calc-y-offset
    ly:rest::y-offset-callback
    ly:staff-symbol-referencer::callback
    ly:staff-symbol::height))
index cdfaf1f9f87d20687d0b0769857c32b5f8c39389..18728e57d9809de9b1865209cfb5e7677103b59d 100644 (file)
@@ -1900,6 +1900,29 @@ returns an empty markup.
     (interpret-markup layout props (list anonymous-with-signature arg))))
 
 (define-markup-command (footnote layout props mkup note)
+  (markup? markup?)
+  #:category other
+  "Have footnote @var{note} act as an annotation to the markup @var{mkup}.
+
+@lilypond[verbatim,quote]
+\\markup {
+  \\auto-footnote a b
+  \\override #'(padding . 0.2)
+  \\auto-footnote c d
+}
+@end lilypond
+The footnote will not be annotated automatically."
+  (ly:stencil-combine-at-edge
+    (interpret-markup layout props mkup)
+    X
+    RIGHT
+    (ly:make-stencil
+      `(footnote (gensym "footnote") #f ,(interpret-markup layout props note))
+      '(0 . 0)
+      '(0 . 0))
+    0.0))
+
+(define-markup-command (auto-footnote layout props mkup note)
   (markup? markup?)
   #:category other
   #:properties ((raise 0.5)
@@ -1908,11 +1931,12 @@ returns an empty markup.
 
 @lilypond[verbatim,quote]
 \\markup {
-  \\footnote a b
+  \\auto-footnote a b
   \\override #'(padding . 0.2)
-  \\footnote c d
+  \\auto-footnote c d
 }
-@end lilypond"
+@end lilypond
+The footnote will be annotated automatically."
   (let* ((markup-stencil (interpret-markup layout props mkup))
          (auto-numbering (ly:output-def-lookup layout
                                                'footnote-auto-numbering))
@@ -1970,7 +1994,7 @@ returns an empty markup.
   (ly:stencil-add
     main-stencil
     (ly:make-stencil
-      `(footnote ,footnote-hash ,(interpret-markup layout props note))
+      `(footnote ,footnote-hash #t ,(interpret-markup layout props note))
       '(0 . 0)
       '(0 . 0)))))
 
index 5e1159363654e42981a8677b67ff785cf91d3dc9..a6b910c7db6c60527c3ffeaef8bff2792696f211 100644 (file)
@@ -41,6 +41,8 @@ this @code{\\lyricsto} section.")
 (with @code{+} sign).")
      (augmented-slash ,boolean? "This figure is for an augmented figured bass
 (back-slashed number).")
+     (automatically-numbered ,boolean? "Should a footnote be automatically
+numbered?")
      (autosplit-end ,boolean? "Duration of event was truncated by automatic
 splitting in @code{Completion_heads_engraver}.")
 
index 9e1a268e4d54ca8e9f91fc2c9a67589467835cde..018ebf50748c76d052aff8ad87e7db91007311ed 100644 (file)
@@ -19,7 +19,7 @@
 ;;;;  notably the old-straight-flag and the modern-straight-flag styles.
 
 
-(define-public (no-flag stem-grob)
+(define-public (no-flag grob)
   "No flag: Simply return empty stencil."
   empty-stencil)
 
@@ -29,7 +29,7 @@
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
-(define-public (add-stroke-straight stencil stem-grob dir log stroke-style
+(define-public (add-stroke-straight stencil grob dir log stroke-style
                                     offset length thickness stroke-thickness)
   "Add the stroke for acciaccatura to the given flag stencil.
 The stroke starts for up-flags at `upper-end-of-flag + (0,length/2)'
@@ -39,7 +39,8 @@ whole length, while `flag-x-width' is just the x-extent and thus depends on
 the angle!  Other combinations don't look as good.
 
 For down-stems the y-coordinates are simply mirrored."
-  (let* ((start (offset-add offset (cons 0  (* (/ length 2) dir))))
+  (let* ((stem-grob (ly:grob-parent grob X))
+         (start (offset-add offset (cons 0  (* (/ length 2) dir))))
          (end (offset-add (cons 0 (cdr offset))
                           (cons (- (/ (car offset) 2)) (* (- (+ thickness (car offset))) dir))))
          (stroke (make-line-stencil stroke-thickness (car start) (cdr start) (car end) (cdr end))))
@@ -65,13 +66,14 @@ For down-stems the y-coordinates are simply mirrored."
 
 All lengths are scaled according to the font size of the note."
 
-  (lambda (stem-grob)
-    (let* ((log (ly:grob-property stem-grob 'duration-log))
+  (lambda (grob)
+    (let* ((stem-grob (ly:grob-parent grob X))
+           (log (ly:grob-property stem-grob 'duration-log))
            (dir (ly:grob-property stem-grob 'direction))
            (stem-up (eqv? dir UP))
-           (layout (ly:grob-layout stem-grob))
+           (layout (ly:grob-layout grob))
            ; scale with the note size (e.g. for grace notes)
-           (factor (magstep (ly:grob-property stem-grob 'font-size 0)))
+           (factor (magstep (ly:grob-property grob 'font-size 0)))
            (grob-stem-thickness (ly:grob-property stem-grob 'thickness))
            (line-thickness (ly:output-def-lookup layout 'line-thickness))
            (half-stem-thickness (/ (* grob-stem-thickness line-thickness) 2))
@@ -95,9 +97,9 @@ All lengths are scaled according to the font size of the note."
            (stencil (ly:round-filled-polygon points half-stem-thickness))
            ; Log for 1/8 is 3, so we need to subtract 3
            (flag-stencil (buildflag stencil (- log 3) stencil spacing))
-           (stroke-style (ly:grob-property stem-grob 'stroke-style)))
+           (stroke-style (ly:grob-property grob 'stroke-style)))
     (if (equal? stroke-style "grace")
-      (add-stroke-straight flag-stencil stem-grob
+      (add-stroke-straight flag-stencil grob
                            dir log
                            stroke-style
                            flag-end flag-length
@@ -105,16 +107,16 @@ All lengths are scaled according to the font size of the note."
                            (* half-stem-thickness 2))
       flag-stencil))))
 
-(define-public (modern-straight-flag stem-grob)
+(define-public (modern-straight-flag grob)
   "Modern straight flag style (for composers like Stockhausen, Boulez, etc.).
 The angles are 18 and 22 degrees and thus smaller than for the ancient style
 of Bach, etc."
-  ((straight-flag 0.55 1 -18 1.1 22 1.2) stem-grob))
+  ((straight-flag 0.55 1 -18 1.1 22 1.2) grob))
 
-(define-public (old-straight-flag stem-grob)
+(define-public (old-straight-flag grob)
   "Old straight flag style (for composers like Bach).  The angles of the
 flags are both 45 degrees."
-  ((straight-flag 0.55 1 -45 1.2 45 1.4) stem-grob))
+  ((straight-flag 0.55 1 -45 1.2 45 1.4) grob))
 
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
@@ -122,23 +124,24 @@ flags are both 45 degrees."
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 
 
-; NOTE: By default, lilypond uses the C++ method Stem::calc-flag
-; (ly:stem::calc-flag is the corresponding Scheme interface) to generate the
+; NOTE: By default, lilypond uses the C++ method Flag::stencil
+; (ly:flag::stencil is the corresponding Scheme interface) to generate the
 ; flag stencil. The following functions are simply a reimplementation in
 ; Scheme, so that one has that functionality available in Scheme, if one
 ; wants to write a flag style, which modifies one of the standard flags
 ; by some stencil operations.
 
 
-(define-public (add-stroke-glyph stencil stem-grob dir stroke-style flag-style)
+(define-public (add-stroke-glyph stencil grob dir stroke-style flag-style)
   "Load and add a stroke (represented by a glyph in the font) to the given
 flag stencil."
   (if (not (string? stroke-style))
     stencil
     ; Otherwise: look up the stroke glyph and combine it with the flag
-    (let* ((font-char (string-append "flags." flag-style dir stroke-style))
+    (let* ((stem-grob (ly:grob-parent grob X))
+           (font-char (string-append "flags." flag-style dir stroke-style))
            (alt-font-char (string-append "flags." dir stroke-style))
-           (font (ly:grob-default-font stem-grob))
+           (font (ly:grob-default-font grob))
            (tmpstencil (ly:font-get-glyph font font-char))
            (stroke-stencil (if (ly:stencil-empty? tmpstencil)
                                (ly:font-get-glyph font alt-font-char)
@@ -150,10 +153,11 @@ flag stencil."
         (ly:stencil-add stencil stroke-stencil)))))
 
 
-(define-public (retrieve-glyph-flag flag-style dir dir-modifier stem-grob)
+(define-public (retrieve-glyph-flag flag-style dir dir-modifier grob)
   "Load the correct flag glyph from the font."
-  (let* ((log (ly:grob-property stem-grob 'duration-log))
-         (font (ly:grob-default-font stem-grob))
+  (let* ((stem-grob (ly:grob-parent grob X))
+         (log (ly:grob-property stem-grob 'duration-log))
+         (font (ly:grob-default-font grob))
          (font-char (string-append "flags." flag-style dir dir-modifier (number->string log)))
          (flag (ly:font-get-glyph font font-char)))
     (if (ly:stencil-empty? flag)
@@ -161,18 +165,19 @@ flag stencil."
     flag))
 
 
-(define-public (create-glyph-flag flag-style dir-modifier stem-grob)
+(define-public (create-glyph-flag flag-style dir-modifier grob)
   "Create a flag stencil by looking up the glyph from the font."
-  (let* ((dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "u" "d"))
-         (flag (retrieve-glyph-flag flag-style dir dir-modifier stem-grob))
-         (stroke-style (ly:grob-property stem-grob 'stroke-style)))
+  (let* ((stem-grob (ly:grob-parent grob X))
+         (dir (if (eqv? (ly:grob-property stem-grob 'direction) UP) "u" "d"))
+         (flag (retrieve-glyph-flag flag-style dir dir-modifier grob))
+         (stroke-style (ly:grob-property grob 'stroke-style)))
     (if (null? stroke-style)
       flag
-      (add-stroke-glyph flag stem-grob dir stroke-style flag-style))))
+      (add-stroke-glyph flag grob dir stroke-style flag-style))))
 
 
 
-(define-public (mensural-flag stem-grob)
+(define-public (mensural-flag grob)
   "Mensural flags: Create the flag stencil by loading the glyph from the font.
 Flags are always aligned with staff lines, so we need to check the end point
 of the stem: For stems ending on staff lines, use different flags than for
@@ -181,48 +186,57 @@ aligned with the staff lines, regardless of whether the note head is on a
 staff line or between two staff lines.  In other words, the inner end of
 a flag always touches a staff line."
 
-  (let* ((adjust #t)
-         (stem-end (inexact->exact (round (ly:grob-property stem-grob 'stem-end-position))))
+  (let* ((stem-grob (ly:grob-parent grob X))
+         (adjust #t)
+         (d (ly:grob-property stem-grob 'direction))
+         (ss (ly:staff-symbol-staff-space stem-grob))
+         (stem-end (inexact->exact (round (* (index-cell
+                                               (ly:grob-extent stem-grob
+                                                               stem-grob
+                                                               Y)
+                                               d)
+                                             (/ 2 ss)))))
          ; For some reason the stem-end is a real instead of an integer...
          (dir-modifier (if (ly:position-on-line? stem-grob stem-end) "1" "0"))
          (modifier (if adjust dir-modifier "2")))
-    (create-glyph-flag "mensural" modifier stem-grob)))
+    (create-glyph-flag "mensural" modifier grob)))
 
 
 
-(define-public ((glyph-flag flag-style) stem-grob)
+(define-public ((glyph-flag flag-style) grob)
   "Simulatesthe default way of generating flags: Look up glyphs
 @code{flags.style[ud][1234]} from the feta font and use it for the flag
 stencil."
-  (create-glyph-flag flag-style "" stem-grob))
+  (create-glyph-flag flag-style "" grob))
 
 
 
-(define-public (normal-flag stem-grob)
+(define-public (normal-flag grob)
   "Create a default flag."
-  (create-glyph-flag "" "" stem-grob))
+  (create-glyph-flag "" "" grob))
 
 
 
-(define-public (default-flag stem-grob)
+(define-public (default-flag grob)
   "Create a flag stencil for the stem.  Its style will be derived from the
-@code{'flag-style} Stem property.  By default, @code{lilypond} uses a
+@code{'style} Flag property.  By default, @code{lilypond} uses a
 C++ Function (which is slightly faster) to do exactly the same as this
 function.  However, if one wants to modify the default flags, this function
 can be used to obtain the default flag stencil, which can then be modified
 at will.  The correct way to do this is:
 
 @example
-\\override Stem #'flag = #default-flag
-\\override Stem #'flag-style = #'mensural
+\\override Flag #'stencil = #default-flag
+\\override Flag #'style = #'mensural
 @end example
 "
-  (let* ((flag-style-symbol (ly:grob-property stem-grob 'flag-style))
+  (let* ((stem-grob (ly:grob-parent grob X))
+         (flag-style-symbol (ly:grob-property grob 'style))
          (flag-style (if (symbol? flag-style-symbol)
                          (symbol->string flag-style-symbol)
                          "")))
     (cond
-        ((equal? flag-style "") (normal-flag stem-grob))
-        ((equal? flag-style "mensural") (mensural-flag stem-grob))
-        ((equal? flag-style "no-flag") (no-flag stem-grob))
-        (else ((glyph-flag flag-style) stem-grob)))))
+        ((equal? flag-style "") (normal-flag grob))
+        ((equal? flag-style "mensural") (mensural-flag grob))
+        ((equal? flag-style "no-flag") (no-flag grob))
+        (else ((glyph-flag flag-style) grob)))))
index 8cdd53955f61790bd5e4b3378c7bcc6c74ac9f9b..d7fedb689d9cf3e69a445ec7c4731ce176fe75b0 100644 (file)
@@ -424,6 +424,7 @@ in @var{grob}."
      (make-property-set 'graceSettings
                        ;; TODO: take this from voicedGraceSettings or similar.
                        '((Voice Stem font-size -3)
+                         (Voice Flag font-size -3)
                          (Voice NoteHead font-size -3)
                          (Voice TabNoteHead font-size -4)
                          (Voice Dots font-size -3)
index 025590e5bae0e001db8f089a96b811485faa1198..5f257844542297c5924a0f8e12804310c3a6756f 100644 (file)
     (ly:text-interface::interpret-markup layout props text)))
 
 
+;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
+;; cross-staff stuff
+
+(define-public (script-or-side-position-cross-staff g)
+  (or
+   (ly:script-interface::calc-cross-staff g)
+   (ly:side-position-interface::calc-cross-staff g)))
+
+
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;; note heads
 
   (ly:duration-log
    (ly:event-property (event-cause grob) 'duration)))
 
+(define-public (stem::length val)
+  (lambda (grob)
+    (let* ((d (ly:grob-property grob 'direction))
+           (ss (ly:staff-symbol-staff-space grob))
+           (beg (ly:stem::calc-stem-begin-position grob))
+           (y1 (* beg (* 0.5 ss)))
+           (y2 (* ((if (eqv? d DOWN) - +) beg val) (* 0.5 ss))))
+      (if (eqv? d DOWN)
+          (cons y2 y1)
+          (cons y1 y2)))))
+
 (define-public (note-head::calc-duration-log grob)
   (min 2
        (ly:duration-log
index b86392623fddbf3b27ed5a4550e57b4aef5ad528..a17edb63f9e59ff2445734b5f38aa5b5b26267b2 100644 (file)
                                                                         (char->integer #\0)))))
                                                  (string->list (number->string var-idx)))))))))
 
-(define-public (parse-string-result str parser)
-  "Parse @var{str}, which is supposed to contain a music expression."
-
-  (ly:parser-parse-string
-   parser
-   (format #f "parseStringResult = \\notemode { ~a }" str))
-  (ly:parser-lookup parser 'parseStringResult))
-
 (define-public (read-lily-expression chr port)
   "Read a lilypond music expression enclosed within @code{#@}} and @code{#@}}
 from @var{port} and return the corresponding Scheme music expression.
@@ -93,6 +85,6 @@ symbols.  @code{$$} may be used to simply write a @samp{$} character itself."
          ,@(map (lambda (binding)
                   `(ly:parser-define! parser-clone ',(car binding) ,(cdr binding)))
                 (reverse bindings))
-         (parse-string-result ,lily-string parser-clone)))))
+         (ly:parse-string-expression parser-clone ,lily-string)))))
 
 (read-hash-extend #\{ read-lily-expression)
index 4b2e232053e8b6504f6f923df6d39ecabc10bbe9..6a2a05ed7df95cc524222b72f7c61e58fbe67b96 100644 (file)
@@ -6,6 +6,7 @@ TODO:
 
  * Add @nodes, split at sections?
 
+ * -o --output   listed in help is not implemented?!
 '''
 
 
@@ -13,6 +14,7 @@ import sys
 import os
 import getopt
 import re
+import glob
 
 program_name = 'lys-to-tely'
 
@@ -26,6 +28,8 @@ Options:
  -f, --fragment-options=OPTIONS use OPTIONS as lilypond-book fragment
    options
  -o, --output=NAME              write tely doc to NAME
+ -i, --input-filenames=NAME     read list of files from a file instead of stdin
+ -g, --glob-input=GLOB          a string which will be passed to glob.glob(GLOB)
  -t, --title=TITLE              set tely doc title TITLE
  -a, --author=AUTHOR            set tely author AUTHOR
      --template=TEMPLATE        use TEMPLATE as Texinfo template file,
@@ -39,11 +43,15 @@ def help (text):
     sys.exit (0)
 
 (options, files) = getopt.getopt (sys.argv[1:], 'f:hn:t:',
-                     ['fragment-options=', 'help', 'name=', 'title=', 'author=', 'template='])
+                     ['fragment-options=', 'help', 'name=',
+                     'title=', 'author=', 'template=',
+                     'input-filenames=', 'glob-input='])
 
 name = "ly-doc"
 title = "Ly Doc"
 author = "Han-Wen Nienhuys and Jan Nieuwenhuizen"
+input_filename = ""
+glob_input = ""
 template = '''\input texinfo
 @setfilename %%(name)s.info
 @settitle %%(title)s
@@ -83,6 +91,10 @@ for opt in options:
         title = a
     elif o == '-a' or o == '--author':
         author = a
+    elif o == '-i' or o == '--input-filenames':
+        input_filename = a
+    elif o == '-p' or o == '--glob-input':
+        glob_input = a
     elif o == '-f' or o == '--fragment-options':
         fragment_options = a
     elif o == '--template':
@@ -136,6 +148,11 @@ def name2line (n):
 """ % (os.path.basename (n), fragment_options, n)
     return s
 
+if glob_input:
+    files = glob.glob(glob_input)
+elif input_filename:
+    files = open(input_filename).read().splitlines()
+
 if files:
     dir = os.path.dirname (name) or "."
 # don't strip .tely extension, Documentation/snippets uses .itely