]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' into lilypond/translation
authorFrancisco Vila <francisco.vila@hispalinux.es>
Sun, 20 Jun 2010 15:56:02 +0000 (17:56 +0200)
committerFrancisco Vila <francisco.vila@hispalinux.es>
Sun, 20 Jun 2010 15:56:02 +0000 (17:56 +0200)
29 files changed:
Documentation/contributor/administration.itexi
Documentation/contributor/doc-work.itexi
Documentation/contributor/issues.itexi
Documentation/contributor/regressions.itexi
Documentation/contributor/release-work.itexi
Documentation/fr/learning.tely
Documentation/fr/notation/pitches.itely
Documentation/fr/notation/text.itely
Documentation/fr/web/introduction.itexi
Documentation/notation/changing-defaults.itely
Documentation/notation/pitches.itely
Documentation/notation/spacing.itely
Documentation/notation/text.itely
Documentation/web/community.itexi
Documentation/web/news-front.itexi
VERSION
input/regression/dot-rest-horizontal-spacing.ly [new file with mode: 0644]
lily/beam.cc
lily/dot-column.cc
lily/include/optimal-page-breaking.hh
lily/include/rest-collision.hh
lily/optimal-page-breaking.cc
lily/page-breaking.cc
lily/rest-collision.cc
lily/separation-item.cc
lily/staff-grouper-interface.cc
ly/gregorian.ly
scm/define-grobs.scm
scm/ps-to-png.scm

index b12dd777e2d9847bb5c3177ce4057470a1b7c2ac..b486257e1ca2ed3385810ca6dce43b84f3c2898b 100644 (file)
@@ -30,9 +30,6 @@ Do not change (other than spelling mistakes) without discussion:
 @item
 @ref{Working with source code}
 
-@item
-@ref{Issues}
-
 @end itemize
 
 Please dump info in an appropriate @@section within these manuals,
@@ -46,6 +43,9 @@ but discuss any large-scale reorganization:
 @item
 @ref{Documentation work}
 
+@item
+@ref{Issues}
+
 @item
 @ref{Regression tests}
 
index 16f9f0f7e6b53e66d0e034de5e486ebf6e74b098..c002698f1c1d19b56360aadef1f611dd8d9ac885 100644 (file)
@@ -284,14 +284,7 @@ construct.  These are easily constructed with automatic tools; see
 @itemize
 
 @item
-Use two spaces for indentation in lilypond examples.  (no
-tabs)
-
-@item
-All text strings should be prefaced with #.  LilyPond does
-not strictly require this, but it is helpful to get users
-accustomed to this scheme construct.  ie @code{\set
-Staff.instrumentName = #"cello"}
+Use two spaces for indentation in lilypond examples (no tabs).
 
 @item
 All engravers should have double-quotes around them:
@@ -300,8 +293,22 @@ All engravers should have double-quotes around them:
 \consists "Spans_arpeggio_engraver"
 @end example
 
-Again, LilyPond does not strictly require this, but it is a useful
-standard to follow.
+LilyPond does not strictly require this, but it is a useful
+convention to follow.
+
+@item
+All context or layout object strings should be prefaced with @code{#}.
+Again, LilyPond does not strictly require this, but it is helpful
+to get users accustomed to this scheme construct.  i.e. @code{\set
+Staff.instrumentName = #"cello"}
+
+@item
+Try to avoid using @code{#'} or @code{#`} within when describing
+context or layout properties outside of an @code{@@example} or @code{@@lilypond}, unless
+the description explicitly requires it.
+
+ie @qq{...setting the @code{transparent} property leaves the object where it
+is, but makes it invisible.}
 
 @item
 If possible, only write one bar per line.
index 4be817384d7d764df14bb5841b7a88a010acda27..72509d080f72c0172afe2166e7cce1b150f6c3b4 100644 (file)
@@ -7,6 +7,7 @@ miscellaneous development tasks.
 
 @menu
 * Introduction to issues::
+* Bug Squad setup::
 * Bug Squad checklists::
 * Issue classification::
 * Adding issues to the tracker::
@@ -38,34 +39,173 @@ New volunteers for the Bug Squad should contact the
 @ref{Meisters, Bug Meister}.
 
 
+@node Bug Squad setup
+@section Bug Squad setup
+
+We highly recommend that you configure your email to use effective
+sorting; this can reduce your workload @emph{immensely}.  The
+email folders names were chosen specifically to make them work if
+you sort your folders alphabetically.
+
+@enumerate
+
+@item
+Skim through every section of this chapter, @ref{Issues}.  Read in
+detail any sections called @qq{Bug Squad...}, or any page linked
+from @ref{Bug Squad checklists}.
+
+@item
+If you do not have one already, create a gmail account and send
+the email address to the @ref{Meisters, Bug Meister}.
+
+@item
+Configure your google code account:
+
+@enumerate
+
+@item
+Log in to:
+
+@example
+@uref{http://code.google.com}
+@end example
+
+@item
+Go to your @qq{Profile}, and select @qq{Settings}.
+
+@item
+Scroll down to @qq{Issue change notification}, and make sure that
+you have @emph{selected} @qq{If I starred the issue}.
+
+@end enumerate
+
+@item
+Configure your email client:
+
+@enumerate
+
+@item
+Any email sent with your gmail address in the @code{To:} or
+@code{CC:} fields should go to a @code{bug-answers} folder.
+
+@item
+Any other email either from, or CC'd to,
+
+@example
+lilypond@@googlecode.com
+@end example
+
+@noindent
+should go into a separate @code{bug-ignore} folder.  Alternately,
+you may automatically delete these emails.
+
+You will @strong{not read} these emails as part of your Bug Squad
+duties.  If you are curious, go ahead and read them later, but it
+does @strong{not} count as Bug Squad work.
+
+@item
+Any other email sent to (or CC'd to):
+
+@example
+bug-lilypond
+@end example
+
+@noindent
+should go into a separate @code{bug-current} folder.
+
+@end enumerate
+
+@end enumerate
+
+
 @node Bug Squad checklists
 @section Bug Squad checklists
 
-We highly recommend that you configure your email client to put
-messages from:
+When you do Bug Squad work, start at the top of this page and work
+your way down.  Stop when you've done 15 minutes.
+
+Please use the email sorting described in @ref{Bug Squad setup}.
+This means that (as Bug Squad members) you will only ever respond
+to emails sent or CC'd to the @code{bug-lilypond} mailing list.
+
+
+@subsubheading Emails to you personally
+
+You are not expected to work on Bug Squad matters outside of your
+15 minutes, but sometimes a confused user will send a bug report
+(or an update to a report) to you personally.  If that happens,
+please forward such emails to the @code{bug-lilypond} list so that
+the currently-active Bug Squad member(s) can handle the message.
+
+
+@subsubheading Daily schedule
 
 @example
-@@googlecode.com
+Sunday: Valentin
+Monday: Dmytro
+Tuesday: James Bailey
+Wednesday: Ralph
+Thursday: Phil Holmes
+Friday: Urs Liska, Patrick
+Saturday: Kieren
 @end example
 
-@noindent
-into a separate folder than other emails to @code{bug-lilypond}.
+
+@subsubheading Emails to @code{bug-answers}
+
+Some of these emails will be comments on issues that you added to
+the tracker.
+
+@itemize
+If they are asking for more information, give the additional
+information.
+
+@item
+If the email says that the issue was classified in some other
+manner, read the rationale given and take that into account for
+the next issue you add.
+
+@item
+Otherwise, move them to your @code{bug-ignore} folder.
+
+@end itemize
+
+Some of these emails will be discussions about Bug Squad work;
+read those.
 
 
-@subsubheading New emails to @code{bug-lilypond}
+@subsubheading Emails to @code{bug-current}
 
-Every new email to @code{bug-lilypond} should be handled within
-@strong{24 hours} in the first method which is applicable:
+Dealing with these emails is your main task.  Your job is to get
+rid of these emails in the first method which is applicable:
 
 @enumerate
+@item
+If the email has already been handled by a Bug Squad member (i.e.
+check to see who else has replied to it), delete it.
 
 @item
-If the email is a question about how to use LilyPond, direct them
-politely to @code{lilypond-user}.
+If the email is a question about how to use LilyPond, reply with
+this reponse:
+
+@example
+For questions about how to use LilyPond, please read our
+documentation available from:
+  @uref{http://lilypond.org/website/manuals.html}
+or ask the lilypond-user mailing list.
+@end example
 
 @item
 If a bug report is not in the form of a Tiny example, direct the
-user to resubmit the report after reading @rweb{Tiny examples}.
+user to resubmit the report with this response:
+
+@example
+I'm sorry, but due to our limited resources for handling bugs, we
+can only accept reports in the form of Tiny examples.  Please see
+step 2 in our bug reporting guidelines:
+  @uref{http://lilypond.org/website/bug-reports.html}
+@end example
+
 
 @item
 If anything is unclear, ask the user for more information.
@@ -79,12 +219,28 @@ problem, not your reponsibility to understand it.
 
 @item
 If the behavior is expected, the user should be told to read the
-documentation, or asked to clarify how he misread the docs and how
-the docs could be improved.
+documentation:
+
+@example
+I believe that this is the expected behaviour -- please read our
+documentation about this topic.  If you think that it really is a
+mistake, please explain in more detail.  If you think that the
+docs are unclear, please suggest an improvement as described by
+@qq{Simple tasks -- Documentation} on:
+  @uref{http://lilypond.org/website/help-us.html}
+@end example
 
 @item
 If the issue already exists in the tracker, send an email to that
-effect.
+effect:
+
+@example
+This issue has already been reported; you can follow the
+discussion and be notified about fixes here:
+@end example
+
+@noindent
+(copy+paste the google code issue URL)
 
 @item
 Accept the report as described in
@@ -100,6 +256,9 @@ you cannot find a reason to reject the report, you must accept
 it.}
 
 
+@ignore
+@c Try omitting this from Bug Squad duties
+
 @subheading Updates / discussion about issues
 
 We try to keep discussions about issues on the tracker, but
@@ -124,6 +283,7 @@ reports; it is @emph{perfectly acceptable} to not understand
 discussions between advanced users and/or developers.
 
 @end itemize
+@end ignore
 
 
 @subheading Regular maintenance
@@ -145,6 +305,7 @@ ask if it was deliberate.  The official comparison is online, at:
 More information is available from in
 @ref{Precompiled regression tests}.
 
+
 @item
 Issues to verify: try to reproduce the bug with the latest
 version; if you cannot reproduce the bug, mark the item
@@ -156,6 +317,10 @@ version; if you cannot reproduce the bug, mark the item
 
 @end itemize
 
+
+@ignore
+@c try omitting from daily tasks for now. -gp
+
 Once every @strong{two weeks} or so:
 
 @itemize
@@ -177,6 +342,7 @@ more work, then remove the @code{patch} label.
 
 @end itemize
 
+
 @subheading Irregular maintenance
 
 @warning{These tasks are a lot of work; gathering more volunteers
@@ -204,6 +370,8 @@ same (broken) output as the initial report, then simply post a
 
 @end itemize
 
+@end ignore
+
 
 @node Issue classification
 @section Issue classification
index 181b3a31a269c7b87eb819be09ad20ff5c3b9e69..77ebdaa7820062df87cb09001b55280722e89c16 100644 (file)
@@ -183,6 +183,31 @@ The special regression test @file{test-output-distance.ly} will always
 show up as a regression.  This test changes each time it is run, and
 serves to verify that the regression tests have, in fact, run.}
 
+Once @samp{make@tie{}test-baseline} and @samp{make@tie{}check} have been
+run, the files that differ between @samp{test-baseline} and @samp{check}
+can be repeatedly examined by doing:
+
+@example
+make test-redo
+@end example
+
+This updates the regression list at @file{out/test-results/index.html}.
+It does @emph{not} redo @file{test-output-distance.ly}.
+
+When all regressions have been resolved, the output list will be empty.
+
+Once all regressions have been resolved, a final check should be completed
+by running:
+
+@example
+make test-clean
+make check
+@end example
+
+This cleans the results of the previous @samp{make@tie{}check}, then does the
+automatic regression comparison again.  
+
+
 @node Memory and coverage tests
 @section Memory and coverage tests
 
index ad6a6f79e9fe5e40574349080d7ebc859dc85d05..35e07e595aaac2d071f6fde0dda41eee59fecdd7 100644 (file)
@@ -120,15 +120,14 @@ make LILYPOND_BRANCH=stable/2.12 lilypond
 @end example
 
 @item Check the regtest comparison in @file{uploads/webtest/} for
-any unintentional breakage.
-
-Note that this test uses the bounding boxes inside lilypond.
-Errors in ghostscript don't generate differences inside lilypond,
-so they are not registered in the regtest comparison.
+any unintentional breakage.  More info in
+@ref{Precompiled regression tests}
 
 @item If any work was done on GUB since the last release, upload
 binaries to a temporary location, ask for feedback, and wait a day
-or two in case there's any major problems.
+or two in case there's any major problems.  Or live dangerously
+and just add a sentence to the release notes.  Or live even more
+dangerously, and don't tell anybody anything.
 
 @end enumerate
 
@@ -172,16 +171,23 @@ git merge release/unstable
 
 @item Update @file{VERSION} in lilypond git and upload changes:
 
-@quotation
-@quotation
+@example
+vi VERSION
+@end example
+
+@itemize
+@item
 VERSION = what you just did +0.0.1
+
+@item
 DEVEL_VERSION = what you just did (i.e. is now online)
-STABLE_VERSION = what's online
-@end quotation
-@end quotation
+
+@item
+STABLE_VERSION = what's online (probably no change here)
+
+@end itemize
 
 @example
-vi VERSION
 git commit -m "Release: bump version." VERSION
 git push origin
 @end example
index 14165c5dfa2736e17f49a7b5114f49975438bfbb..612194cf5bd9665b0b6bd2e88b06fd09588af388 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-    Translation of GIT committish: a042d99cd2251b2b9121e1b8ad30307c4ce28863
+    Translation of GIT committish: 22b6ca7247b6f0d596934d38aa2c75d5e45206eb
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -71,8 +71,6 @@ Annexes
 
 @c INCLUDES
 
-@c include learning/preface.itely
-@c include learning/introduction.itely
 @include learning/tutorial.itely
 @include learning/common-notation.itely
 @include learning/fundamental.itely
index 7accb01a1b4f029cfe093b6e1e43b6c24b2b16f2..546c3d6e268f4aaca4e19752c01a8aff51bdc846 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-    Translation of GIT committish: 20858c6c9809c521d03576443dc8fa125e6f583b
+    Translation of GIT committish: 22b6ca7247b6f0d596934d38aa2c75d5e45206eb
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -19,8 +19,8 @@
 @lilypondfile[quote]{pitches-headword.ly}
 
 Cette section détaille la façon d'indiquer les hauteurs de notes, sous
-trois aspects : la saisie des hauteurs, la modification des hauteurs
-et les options de gravure.
+trois aspects@tie{}: la saisie des hauteurs, la modification des
+hauteurs et les options de gravure.
 
 @menu
 * Ã‰criture des hauteurs de note::             
@@ -35,7 +35,7 @@ et les options de gravure.
 @translationof Writing pitches
 
 Cette section explique la manière d'indiquer les hauteurs de note.  Deux 
-modes permettent d'indiquer l'octave des notes : le mode absolu, et le
+modes permettent d'indiquer l'octave des notes@tie{}: le mode absolu, et le
 mode relatif.  Ce dernier est le plus pratique lors de la saisie d'un
 fichier source au clavier de l'ordinateur.
 
@@ -75,9 +75,10 @@ d e f g
 @funindex '
 @funindex ,
 
-L'octave peut Ãªtre précisée sous forme d'une série d'apostrophes
-@code{'} ou d'une série de virgules @code{,}.  Chaque @code{'} hausse la
-note d'une octave, chaque @code{,} baisse la note d'une octave.
+L'octave peut Ãªtre précisée sous forme d'une série
+d'apostrophes@tie{}@code{'} ou d'une série de virgules@tie{}@code{,}.
+Chaque@tie{}@code{'} hausse la note d'une octave, chaque@tie{}@code{,}
+baisse la note d'une octave.
 
 @lilypond[verbatim,quote,fragment]
 \clef treble
@@ -107,13 +108,15 @@ Morceaux choisis :
 
 @funindex \relative
 @funindex relative
+@funindex \transpose
+@funindex transpose
 
-On spécifie les octaves en ajoutant @code{'} et @code{,} aux noms de
-hauteurs.  En recopiant de la musique, on a vite fait de mettre une note
-à la mauvaise octave, et ce genre d'erreur est difficile Ã  retrouver.
-Le mode d'écriture en octave relative prévient ces erreurs dans la
-mesure où elles deviennent beaucoup plus Ã©videntes : une seule erreur
-décale le reste de la pièce Ã  une mauvaise octave.
+On spécifie les octaves en ajoutant@tie{}@code{'} et@tie{}@code{,} aux
+noms de hauteurs.  En recopiant de la musique, on a vite fait de mettre
+une note Ã  la mauvaise octave, et ce genre d'erreur est difficile Ã 
+retrouver.  Le mode d'écriture en octave relative prévient ces erreurs
+dans la mesure où elles deviennent beaucoup plus Ã©videntes@tie{}: une
+seule erreur décale le reste de la pièce Ã  une mauvaise octave.
 
 
 @example
@@ -122,7 +125,7 @@ décale le reste de la pièce Ã  une mauvaise octave.
 
 En mode relatif, chaque note est considérée comme Ã©tant le plus proche
 possible de celle qui la précède.  L'octave des notes mentionnées dans
-@var{musicexpr} va Ãªtre calculée de la manière suivante : 
+@var{musicexpr} va Ãªtre calculée de la manière suivante@tie{}:
 
 @itemize
 @item
@@ -131,18 +134,19 @@ base entre la note actuelle et la précédente sera toujours au plus d'une
 quarte.  Cet intervalle est déterminé sans tenir compte des altérations. 
 
 @item
-Un signe de changement d'octave @code{'} ou @code{,} peut Ãªtre ajouté
-pour hausser ou baisser la note d'une octave par rapport Ã  la hauteur
-calculée sans spécification.
+Un signe de changement d'octave@tie{}@code{'} ou@tie{}@code{,} peut Ãªtre
+ajouté pour hausser ou baisser la note d'une octave par rapport Ã  la
+hauteur calculée sans spécification.
 
 @item
-Ces signes de changement d'octave peuvent Ãªtre multipliés. Par exemple,
+Ces signes de changement d'octave peuvent Ãªtre multipliés.  Par exemple,
 @code{''}@tie{}ou@tie{}@code{,,} ajouteront une octave supplémentaire.
 
 @item
 Lorsque l'on entre en mode @code{\relative}, une hauteur absolue de
 départ peut Ãªtre spécifiée, et agira dès lors comme si elle précédait la
-première note de @var{musicexpr}.
+première note de @var{musicexpr}.  Nous vous recommandons de faire
+référence Ã  un @code{c} (do).
 
 @end itemize
 
@@ -189,6 +193,9 @@ dernière clause @code{\relative} qui est prise en compte.
 }
 @end lilypond
 
+@funindex \chordmode
+@funindex chordmode
+
 @code{\relative} est sans effet sur un bloc @code{\chordmode}.
 
 @lilypond[verbatim,quote]
@@ -202,6 +209,12 @@ dernière clause @code{\relative} qui est prise en compte.
 
 @code{\relative} n'est pas permis au sein d'un bloc @code{\chordmode}.
 
+@cindex octave relative et transposition
+@cindex transposition et mode octave relative
+
+@funindex \transpose
+@funindex transpose
+
 Pour utiliser le mode d'octave relative dans de la musique transposée,
 une clause @code{\relative} additionnelle doit Ãªtre placée au sein du
 bloc @code{\transpose}. 
@@ -222,9 +235,10 @@ bloc @code{\transpose}.
 @cindex accords et octave relative
 @cindex octave relative et accords
 
+
 Si l'expression précédente est un accord, c'est la première note de
 l'accord qui détermine l'emplacement de la première note du prochain
-accord.  A l'intérieur de l'accord, les notes sont placées relativement
+accord.  Ã€ l'intérieur de l'accord, les notes sont placées relativement
 Ã  celle qui précède.  Examinez avec attention l'exemple suivant, et tout
 particulièrement le positionnement des do.
 
@@ -282,11 +296,11 @@ Référence des propriétés internes :
 @c duplicated in Key signature and in Accidentals
 @warning{Les nouveaux utilisateurs sont parfois déroutés par la gestion
 des altérations et de l'armure.  Pour LilyPond, une hauteur n'est que du
-matériau brut ; l'armure et la clef ne feront que déterminer comment ce
-matériau sera retranscrit.  Un simple @code{c} signifie tout bonnement 
-@w{@qq{ do naturel}} quels que soient l'armure et la clef en question.
-Pour plus d'information, reportez-vous au chapitre
-@rlearning{Altérations et armure}.} 
+matériau brut@tie{}; l'armure et la clef ne feront que déterminer
+comment ce matériau sera retranscrit.  Un simple@tie{}@code{c} signifie
+tout bonnement @w{@qq{do naturel}} quels que soient l'armure et la clef
+en question. Pour plus d'information, reportez-vous au chapitre
+ @rlearning{Altérations et armure}.}
 
 @cindex noms de note, hollandais
 @cindex noms de note, par défaut
@@ -299,9 +313,9 @@ Pour plus d'information, reportez-vous au chapitre
 @cindex bécarre
 
 Dans la notation par défaut, un @notation{dièse} est formé en ajoutant
-@code{-is} après le nom de note, un @notation{bémol} en ajoutant
-@code{-es}.  Les @notation{double-dièses} et @notation{double-bémols}
-sont obtenus en ajoutant @code{-isis} ou @code{-eses} au nom de note.
+@code{is} après le nom de note, un @notation{bémol} en ajoutant
+@code{es}.  Les @notation{double-dièses} et @notation{double-bémols}
+sont obtenus en ajoutant @code{isis} ou @code{eses} au nom de note.
 Ce sont les noms de note hollandais.  Pour les autres langues, consultez 
 @ref{Noms de note dans d'autres langues}.
 
@@ -311,7 +325,7 @@ ais1 aes aisis aeses
 
 Un bécarre annule l'effet d'une altération, qu'elle soit accidentelle
 ou Ã  l'armure.  Cependant, dans la syntaxe des noms de note, les
-bécarres ne s'écrivent pas avec un suffixe ; un simple nom de note
+bécarres ne s'écrivent pas avec un suffixe@tie{}; un simple nom de note
 donnera une note bécarre.
 
 @lilypond[verbatim,quote,relative=2]
@@ -323,8 +337,8 @@ a4 aes a2
 @cindex demi-dièses
 
 Les demi-bémols et demi-dièses s'écrivent en ajoutant respectivement
-@code{-eh} et @code{-ih}. Voici une série de dos altérés en hauteurs
-croissantes :
+@code{eh} et @code{ih}. Voici une série de dos altérés en hauteurs
+croissantes@tie{}:
 
 @lilypond[verbatim,quote,relative=2]
 ceseh1 ces ceh c cih cis cisih
@@ -343,11 +357,11 @@ Les micro-intervalles sont aussi exportés dans le fichier MIDI.
 
 Normalement, les altérations sont imprimées automatiquement, mais il se
 peut que vous vouliez les imprimer manuellement.  On peut forcer
-l'impression d'une altération , dite @qq{de précaution}, en ajoutant un
-point d'exclamation @code{!} après la hauteur de note.  Une altération
-entre parenthèses peut Ãªtre obtenue en ajoutant un point d'interrogation
-@code{?} après la hauteur de note.  Ces signes peuvent aussi Ãªtre
-utilisés pour imprimer des bécarres.
+l'impression d'une altération, dite @qq{de précaution}, en ajoutant un
+point d'exclamation@tie{}@code{!} après la hauteur de note.  Une
+altération entre parenthèses peut Ãªtre obtenue en ajoutant un point
+d'interrogation@tie{}@code{?} après la hauteur de note.  Ces signes
+peuvent aussi Ãªtre utilisés pour imprimer des bécarres.
 
 @lilypond[verbatim,quote,relative=2]
 cis cis cis! cis? c c c! c?
@@ -371,9 +385,6 @@ cis
 @lilypondfile[verbatim,lilyquote,texidoc, doctitle]
 {preventing-extra-naturals-from-being-automatically-added.ly}
 
-@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
-{makam-example.ly}
-
 
 @seealso
 Glossaire musicologique :
@@ -401,10 +412,6 @@ Références internes du programme :
 @rinternals{AccidentalCautionary},
 @rinternals{accidental-interface}.
 
-L'impression automatique des altérations peut Ãªtre affinée de plusieurs
-manières.  Pour plus d'information, voir 
-@ref{Altérations accidentelles automatiques}. 
-
 
 @cindex accidentel, quart de ton
 @cindex quart de ton
@@ -432,12 +439,12 @@ ajoutez @w{@code{\include "italiano.ly"}} au début du fichier source.
 
 @warning{Dans la mesure où certains fichiers d'initialisation, comme 
 @w{@code{predefined-fretboards.ly}}, utilisent les conventions bataves,
-la commande @code{\include} concernant la langue que vous décirez
+la commande @code{@bs{}include} concernant la langue que vous désirez
 utiliser doît intervenir après toutes les autres inclusions de fichier
 d'initialisation de LilyPond.}
 
 Les fichiers de langue disponibles ainsi que les noms de note utilisés
-sont les suivants :
+sont les suivants@tie{}:
 
 @quotation
 @multitable {@file{nederlands.ly}} {do re mi fa sol la sib si}
@@ -471,7 +478,7 @@ sont les suivants :
 @end quotation
 
 @noindent
-et les suffixes d'altération correspondants :
+et les suffixes d'altération correspondants@tie{}:
 
 @quotation
 @multitable {@file{nederlands.ly}} {-s/-sharp} {-ess/-es} {-ss/-x/-sharpsharp} {-essess/-eses}
@@ -528,7 +535,7 @@ a2 as e es a ases e eses
 Certaines musiques utilisent des microtonalités, pour lesquelles les
 altérations sont des fractions de dièse ou bémol @qq{normaux}.  Le
 tableau suivant répertorie les noms de note en quart de ton, tels que
-définis dans plusieurs fichiers linguistiques. Les préfixes @emph{semi-}
+définis dans plusieurs fichiers linguistiques.  Les préfixes @emph{semi-}
 et @emph{sesqui-} correspondent au @emph{demi-} et @emph{trois demis}.
 Ã€ noter qu'aucune définition n'existe Ã  ce jour pour le norvégien, le
 suédois, le catalan et l'espagnol.
@@ -653,15 +660,16 @@ Cette partie traite de la manière de modifier les hauteurs de note.
 
 
 Les tests d'octave rendent la correction d'erreurs d'octave plus facile
-dans le mode d'octave @code{relative} -- un @code{,} ou un @code{'}
-oublié, Ã§a n'arrive pas qu'aux autres ! : une note peut Ãªtre suivie de 
-@w{@code{=}@var{apostrophes/virgules}} pour indiquer Ã  quelle octave
-absolue elle devrait Ãªtre.  Dans l'exemple suivant, le @code{d} générera
-un avertissement, puisqu'on attend un @code{d''} mais qu'on obtient un
-@code{d'} -- il n'y a qu'une tierce entre @code{b'} et @code{d''}.  Sur
-la partition, l'octave sera corrigée pour donner un @code{d''} et la
-prochaine note sera calculée en fonction de @code{d''} et non de
-@code{d'}. 
+dans le mode d'octave @code{relative} -- un@tie{}@code{,} ou
+un@tie{}@code{'} oublié, Ã§a n'arrive pas qu'aux autres@tie{}!
+
+Une note peut Ãªtre suivie de  @w{@code{=}@var{apostrophes/virgules}}
+pour indiquer Ã  quelle octave absolue elle devrait Ãªtre.  Dans l'exemple
+suivant, le @code{d} générera un avertissement, puisqu'on attend un
+@code{d''} mais qu'on obtient un @code{d'} -- il n'y a qu'une tierce
+entre @code{b'} et @code{d''}.  Sur la partition, l'octave sera corrigée
+pour donner un @code{d''} et la prochaine note sera calculée en fonction
+de @code{d''} et non de @code{d'}.
 
 @lilypond[verbatim,quote]
 \relative c'' {
@@ -671,13 +679,14 @@ prochaine note sera calculée en fonction de @code{d''} et non de
 @end lilypond
 
 Il existe aussi une vérification d'octave qui ne produit pas de musique
-imprimée, ayant pour syntaxe @w{@code{\octaveCheck}
-@var{hauteur_référence}} -- @var{hauteur_référence} Ã©tant spécifiée en
-mode absolu.  Cette commande vérifie que l'intervalle entre la note qui
-précède et @var{hauteur_référence} est inférieure Ã  la quinte comme il
-se doît en mode relatif.  Dans le cas contraire, un message sera Ã©mis et
-la note précédente ne sera pas modifiée.  Les notes suivantes seront,
-par contre, positionnées relativement Ã  @var{hauteur_référence}.
+imprimée, ayant pour syntaxe
+@code{\octaveCheck}@tie{}@var{hauteur_référence} --
+@var{hauteur_référence} Ã©tant spécifiée en mode absolu.  Cette commande
+vérifie que l'intervalle entre la note qui précède et
+@var{hauteur_référence} est inférieure Ã  la quinte comme il se doît en
+mode relatif.  Dans le cas contraire, un message sera Ã©mis et la note
+précédente ne sera pas modifiée.  Les notes suivantes seront, par
+contre, positionnées relativement Ã  @var{hauteur_référence}.
 
 @lilypond[verbatim,quote]
 \relative c'' {
@@ -724,18 +733,17 @@ Référence des propriétés internes :
 @funindex transpose
 
 Une expression musicale peut Ãªtre transposée avec @code{\transpose}.
-Voici la syntaxe :
+Voici la syntaxe@tie{}:
 
 @example
 \transpose @var{note_de_départ} @var{note_d_arrivée} @var{musicexpr}
 @end example
 
 @noindent
-Cela signifie que @var{musicexpr} est transposé d'un intervalle entre
-les notes @var{note_de_départ} et @var{note_d_arrivée} : toute note
-dont la hauteur Ã©tait @code{note_de_départ} est changée en
-@code{note_d_arrivée} et les autres note seront changées selon le même
-intervalle. 
+Cela signifie que @var{musicexpr} est transposé de l'intervalle séparant
+@var{note_de_départ} et @var{note_d_arrivée}@tie{}: toute note dont la
+hauteur Ã©tait @code{note_de_départ} est changée en @code{note_d_arrivée}
+et les autres notes seront changées selon le même intervalle.
 
 @warning{La musique contenue dans un bloc @code{@bs{}transpose} est en
 octaves absolus, sauf Ã  inclure dans ce même bloc une clause
@@ -776,7 +784,7 @@ La présence de @w{@code{\key c \major}} s'explique par le fait que, bien
 que les notes soient effectivement transposées, l'armure ne sera
 imprimée que dans la mesure où elle est explicitement mentionnée.
 
-@code{\transpose} fait la distinction entre les notes enharmoniques :
+@code{\transpose} fait la distinction entre les notes enharmoniques@tie{}:
 @w{@code{\transpose c cis}} et @w{@code{\transpose c des}} transposeront
 la pièce un demi-ton plus haut.  Mais la première version Ã©crira des
 dièses et la deuxième des bémols.
@@ -802,9 +810,9 @@ musiqueEnSiBemol = @{ e4 @dots{} @}
 @end example
 
 @noindent
-Pour imprimer cette musique en si bémol Ã  nouveau -- et de ce fait
-produire une partie de trompette, au lieu d'un conducteur en notes
-réelles, on utilisera un deuxième @code{transpose}
+Pour imprimer cette musique en fa -- et de ce fait produire une partie
+de cor au lieu d'un conducteur en notes réelles -- on utilisera un
+deuxième @code{transpose}@tie{}:
 
 @example
 musiqueEnSiBemol = @{ e4 @dots{} @}
@@ -877,7 +885,7 @@ hauteurs.
 
 La clé indique quelles lignes de la portée correspondent Ã  quelles
 hauteurs.  Elle peut changer au fil du morceau, comme dans l'exemple
-suivant qui indique le do médium dans différentes clefs :
+suivant qui indique le do médium dans différentes clefs@tie{}:
 
 @lilypond[verbatim,quote,relative=1]
 \clef treble
@@ -890,7 +898,7 @@ c2 c
 c2 c
 @end lilypond
 
-LilyPond met Ã  votre disposition d'autres clefs supplémentaires :
+LilyPond met Ã  votre disposition d'autres clefs@tie{}:
 
 @lilypond[verbatim,quote,relative=1]
 \clef french
@@ -910,46 +918,50 @@ c2 c
 c2 c
 \clef percussion
 c2 c
-\clef tab
-c2 c
 
 \break
 
-\clef G
+\clef G   % synonym for treble
 c2 c
-\clef F
+\clef F   % synonym for bass
 c2 c
-\clef C
+\clef C   % synonym for alto
 c2 c
-
 @end lilypond
 
-Il esxiste d'autres clefs, qui sont plus particulièrement destinées Ã  la
-musique ancienne.  Voir Ã  ce sujet @ref{Clefs anciennes}.
-
-@cindex transposition et clefs
+@cindex transposition et clef
 @cindex clef et transposition
 @cindex octave et clef
 @cindex chorale, clef de tenor
 @cindex tenor, clef
 
-
 En ajoutant @code{_8} ou @code{^8} au nom de la clé, celle-ci est
 transposée Ã  l'octave respectivement inférieure ou supérieure, et
-@code{_15} ou @code{^15} la transpose de deux octaves.  L'argument
+@code{_15} ou @code{^15} la transpose de deux octaves.  D'autres nombres
+entiers peuvent Ãªtre utilisés selon les besoins.  L'argument
 @var{clefname} doit Ãªtre mis entre guillemets lorsqu'il contient des
 caractères supplémentaires.  Par exemple,
 
-
-@lilypond[verbatim,quote,relative=2]
+@lilypond[verbatim,quote,relative=1]
 \clef treble
 c2 c
 \clef "treble_8"
 c2 c
 \clef "bass^15"
 c2 c
+\clef "alto_2"
+c2 c
+\clef "G_8"
+c2 c
+\clef "F^5"
+c2 c
 @end lilypond
 
+Il existe d'autres clefs, destinées Ã  un usage particulier.  Voir Ã  ce
+sujet
+@c ref{Mensural clefs}, @c ref{Gregorian clefs},
+@ref{Tablatures par défaut} et @ref{Tablatures personnalisées}.
+
 
 @snippets
 
@@ -959,7 +971,10 @@ c2 c
 
 @seealso
 Manuel de notation :
-@ref{Clefs anciennes}.
+@ref{Mensural clefs},
+@ref{Gregorian clefs},
+@ref{Tablatures par défaut},
+@ref{Tablatures personnalisées}.
 
 Morceaux choisis:
 @rlsr{Pitches}.
@@ -984,9 +999,9 @@ Référence des propriétés internes :
 @warning{Les nouveaux utilisateurs sont parfois déroutés par la gestion
 des altérations et de l'armure.  Pour LilyPond, une hauteur n'est que du
 matériau brut ; l'armure et la clef ne feront que déterminer comment ce
-matériau sera retranscrit.  Un simple @code{c} signifie tout bonnement 
-@w{@qq{ do naturel}} quels que soient l'armure et la clef en question.
-Pour plus d'information, reportez-vous au chapitre
+matériau sera retranscrit.  Un simple@tie{}@code{c} signifie tout
+bonnement @w{@qq{do naturel}} quels que soient l'armure et la clef en
+question.  Pour plus d'information, reportez-vous au chapitre
 @rlearning{Altérations et armure}.} 
 
 L'armure indique la tonalité dans laquelle la pièce doit Ãªtre jouée.
@@ -1035,7 +1050,7 @@ Ici, @var{mode} doit Ãªtre @code{\major} ou @code{\minor} afin d'avoir
 respectivement @var{hauteur}-majeur ou @var{hauteur}-mineur.  Vous pouvez
 aussi avoir recours aux modes anciens que sont @code{\ionian},
 @code{\locrian}, @code{\aeolian}, @code{\mixolydian}, @code{\lydian},
-@code{\phrygian}, et @code{\dorian}.
+@code{\phrygian} et @code{\dorian}.
 
 @lilypond[verbatim,quote,relative=2]
 \key g \major
@@ -1094,18 +1109,19 @@ transposition spécifique d'une octave pour la portée en cours.  C'est
 la fonction @code{ottava} qui s'en charge.
 
 @lilypond[verbatim,quote,relative=2]
-a'2 b
-\ottava #1
-a b
+a2 b
+\ottava #-2
+a2 b
+\ottava #-1
+a2 b
 \ottava #0
-a b
+a2 b
+\ottava #1
+a2 b
+\ottava #2
+a2 b
 @end lilypond
 
-La fonction @code{ottava} peut aussi prendre en argument les
-valeurs -1@tie{}(pour 8va bassa), 2@tie{}(pour 15ma -- 2 octaves) ou
--2@tie{}(pour 15ma bassa).   
-
-
 @snippets
 
 @lilypondfile[verbatim,lilyquote,texidoc,doctitle]
@@ -1129,7 +1145,7 @@ Référence des propriétés internes :
 @unnumberedsubsubsec Instruments transpositeurs
 @translationof Instrument transpositions
 
-@cindex transposition, MIDI
+@cindex transposition et MIDI
 @cindex MIDI et transposition
 @cindex transposition, instrument
 
@@ -1153,8 +1169,8 @@ correspondre Ã  la note entendue lorsqu'un @code{do} Ã©crit sur la
 portée est joué par l'instrument transpositeur.  Cette hauteur doit Ãªtre
 mentionnée en @notation{mode absolu}.  Par exemple, lorsque
 vous saisissez une partition en notes réelles, toutes les voix
-devraient Ãªtre en ut ; si un instrument joue un ton au dessus, il faudra
-lui ajouter un @w{@code{\transposition d'}}.  La commande
+devraient Ãªtre en ut@tie{}; si un instrument joue un ton au dessus, il
+faudra lui ajouter un @w{@code{\transposition d'}}.  La commande
 @code{\transposition} s'utilise @strong{si et seulement si} les notes Ã 
 saisir @strong{ne sont pas} dans la tonalité de concert.
 
@@ -1223,14 +1239,13 @@ Morceaux choisis :
 @node Altérations accidentelles automatiques
 @unnumberedsubsubsec Altérations accidentelles automatiques
 @translationof Automatic accidentals
-@cindex Altérations accidentelles automatiques
 
 @cindex altération, style
 @cindex altération, style par défaut
 @cindex accidentelles, altérations
 @cindex accidentelles automatiques
 @cindex automatiques, altérations accidentelles
-@cindex default accidental style
+@cindex style d'accidentelle
 
 @funindex set-accidental-style
 @funindex voice
@@ -1239,12 +1254,11 @@ Morceaux choisis :
 
 LilyPond dispose d'une fonction chargée de regrouper les règles suivant 
 lesquelles s'impriment les altérations.  Elle s'invoque de la manière
-suivante : 
+suivante@tie{}:
 
-@funindex set-accidental-style
 @example
 \new Staff <<
-  #(set-accidental-style 'REGLE)
+  #(set-accidental-style 'voice)
   @{ @dots{} @}
 >>
 @end example
@@ -1253,9 +1267,9 @@ La règle de gestion des altérations s'applique par défaut au contexte
 @code{Staff} en cours, exception faite des styles @code{piano} et
 @code{piano-cautionary} comme nous allons le voir.  Cette fonction
 accepte un Ã©ventuel argument supplémentaire chargé de spécifier
-le champ d'action de la règle Ã  suivre.  A titre d'exemple, il faudra
+le champ d'action de la règle Ã  suivre.  Ã€ titre d'exemple, il faudra
 utiliser, pour que toutes les portées d'un même système -- contexte
-@code{StaffGroup} -- soient soumises Ã  la même règle :
+@code{StaffGroup} -- soient soumises Ã  la même règle@tie{}:
 
 @example
 #(set-accidental-style 'voice 'StaffGroup)
@@ -1263,7 +1277,7 @@ utiliser, pour que toutes les portées d'un même système -- contexte
 
 Nous vous présentons ci-après les différentes régles d'altération prises
 en charge.  Pour les besoins de la démonstration, nous partirons de
-l'exemple suivant :
+l'exemple suivant@tie{}:
 
 @lilypond[verbatim,quote]
 musicA = {
@@ -1341,7 +1355,7 @@ dernières lignes de cet exemple nous intéressent.
 @funindex default
 
 C'est la règle d'impression par défaut, qui se rapporte Ã  l'usage 
-en vigueur au XVIIIème siècle : les altérations accidentelles sont
+en vigueur au XVIIIe siècle@tie{}: les altérations accidentelles sont
 valables tout une mesure, et uniquement Ã  leur propre octave.  C'est la
 raison pour laquelle il n'y a pas de bécarre avant le @notation{si} de
 la deuxième mesure, ni avant le dernier @notation{do}.
@@ -1465,19 +1479,14 @@ musicB = {
 }
 @end lilypond
 
-
-
-
-
 @item modern
-@funindex modern style accidentals
 
 @cindex altération, style @emph{modern}
 @cindex @emph{modern}, style d'altération
 
 @funindex modern
 
-Cette règle est la plus courante au XXème siècle.  Les altérations
+Cette règle est la plus courante au XXe siècle.  Les altérations
 accidentelles sont imprimées comme avec le style @code{default}, mais
 lorsqu'une note non-altérée apparaît Ã  une octave différente, ou bien
 dans la mesure suivante, des bécarres de précaution sont ajoutés.  Dans
@@ -1542,7 +1551,7 @@ musicB = {
 
 Cette règle est Ã©quivalente Ã  @code{modern}, mais les bécarres de
 précaution (absents dans la règle @code{default}) sont imprimés de façon
-particulière : soit plus petits, soit (par défaut) entre parenthèses.
+particulière@tie{}: soit plus petits, soit (par défaut) entre parenthèses.
 Il est possible de le définir au moyen de la propriété
 @code{cautionary-style} pour l'objet @code{AccidentalSuggestion}. 
 
@@ -1729,7 +1738,7 @@ musicB = {
 @funindex piano accidentals
 
 Cette règle est communément employée pour les partitions de piano au
-XXème siècle.  Très similaire Ã  @code{modern} de par son comportement,
+XXe siècle.  Très similaire Ã  @code{modern} de par son comportement,
 elle s'en distingue en ce que les altérations tiennent compte des autre
 portées du contexte @code{GrandStaff} ou @code{PianoStaff}.
 
@@ -1846,7 +1855,7 @@ musicB = {
 
 @funindex neo-modern
 
-Cette règle suit les pratiques de la musique contemporaine : les
+Cette règle suit les pratiques de la musique contemporaine@tie{}: les
 altérations accidentelles apparaîssent comme dans le style
 @code{modern}, Ã  ceci près qu'elles sont répétées dans la même mesure -- 
 sauf si elles concernent deux notes consécutives.
@@ -2081,7 +2090,7 @@ musicB = {
 
 @funindex dodecaphonic
 
-Cette règle reproduit ce que certains compositeurs du début du XXème
+Cette règle reproduit ce que certains compositeurs du début du XXe
 siècle ont introduit dans leur désir d'abolir la distinction entre les
 notes naturelles ou non.  Ainsi, @emph{chaque} note est affublée d'une
 altération, même si elle est naturelle.
@@ -2141,9 +2150,9 @@ musicB = {
 
 @funindex teaching
 
-Cette règle est Ã  usage pédagogique : l'impression d'une simple gamme
-fera apparaître une altération de précaution pour toute note altérée.
-Les altérations accidentelles sont imprimées selon le style
+Cette règle est Ã  usage pédagogique@tie{}: l'impression d'une simple
+gamme fera apparaître une altération de précaution pour toute note
+altérée.  Les altérations accidentelles sont imprimées selon le style
 @code{modern}, et une altération de précaution est ajoutée pour chaque
 dièse ou bémol Ã  la clef -- sauf dans le cas de notes consécutives.
 
@@ -2260,10 +2269,10 @@ musicB = {
 
 @funindex forget
 
-Tout le contraire de @code{no-reset} : l'effet des altérations cesse
-aussitôt, et de ce fait, toutes les altérations, quelque soit leur place
-dans la mesure, sont imprimées en fonction de l'éventuelle armure.  A
-l'inverse du style @code{dodecaphonic}, aucun bécarre ne sera ici
+Tout le contraire de @code{no-reset}@tie{}: l'effet des altérations
+cesse aussitôt, et de ce fait, toutes les altérations, quelque soit leur
+place dans la mesure, sont imprimées en fonction de l'éventuelle armure.
+À l'inverse du style @code{dodecaphonic}, aucun bécarre ne sera ici
 imprimé. 
 
 @lilypond[quote]
@@ -2341,13 +2350,56 @@ Référence des propriétés internes :
 @knownissues
 
 Les notes simultanées sont considérées comme des Ã©vènements séquentiels. 
-Ce qui implique que, dans un accord, les altérations accidentelles
+Ceci implique que, dans un accord, les altérations accidentelles
 seront imprimées comme si les notes de l'accord apparaissaient une par
 une, en fonction de l'ordre dans lequel elles ont Ã©té saisies -- ce qui
 peut poser problème lorsqu'au sein d'un accord certaines altérations
 dépendent les unes des autres.  
-Ce problème est Ã  résoudre manuellement, en insérant des @code{!} et des 
-@code{?} après les notes concernées.
+Ce problème est Ã  résoudre manuellement, en insérant des@tie{}@code{!}
+et des@tie{}@code{?} après les notes concernées.
+
+L'absence d'altération de précaution est déterminée par l'examen de la
+mesure précédente.  Néanmoins, lorsqu'un bloc @code{\alternative} suit
+une section @code{\repeat@tie{}volta@tie{}N}, la logique voudrait que
+l'on regarde la dernière mesure @emph{jouée} plutôt que la dernière
+@emph{imprimée}.  Dans l'exemple qui suit, vous conviendrez que le do de
+la seconde alternative ne nécessite pas son bécarre.
+
+@lilypond[quote]
+{
+  #(set-accidental-style 'modern)
+  \time 2/4
+  \repeat volta 2 {
+    c'2
+  }
+  \alternative {
+     cis'
+     c'
+  }
+}
+@end lilypond
+
+L'astuce suivante, qui définit temporairement le recours au style
+@code{forget}, permet d'obtenir quelque chose de présentable.
+
+@lilypond[verbatim,quote]
+forget = #(define-music-function (parser location music) (ly:music?) #{
+  #(set-accidental-style 'forget)
+  $music
+  #(set-accidental-style 'modern)
+#})
+{
+  #(set-accidental-style 'modern)
+  \time 2/4
+  \repeat volta 2 {
+    c'2
+  }
+  \alternative {
+     cis'
+     \forget c'
+  }
+}
+@end lilypond
 
 
 @node Ambitus
@@ -2444,27 +2496,64 @@ note.
 
 @funindex cross
 
-Certains instruments utilisent des têtes de note différentes Ã  des
-fins spécifiques -- des croix pour le @emph{parlato} des chanteurs ou les
-notes Ã©touffées des guitares ; des losanges pour les harmoniques des
-cordes.  
+L'apparence des têtes de note peut Ã©voluer au cours de la partition@tie{}:
 
 @lilypond[verbatim,quote,relative=2]
-c4 b a b
+c4 b
 \override NoteHead #'style = #'cross
-c4 b a b
+c4 b
+\revert NoteHead #'style
+a b
+\override NoteHead #'style = #'harmonic
+a b
 \revert NoteHead #'style
 c4 d e f
 @end lilypond
 
-Il existe un raccourci pour les notes en losange :
+Pour une liste exhaustive des styles de tête de note, consultez
+@ref{Styles de tête de note}.
+
+Certains instruments utilisent des têtes de note différentes Ã  des
+fins spécifiques -- des croix pour le @emph{parlato} des chanteurs ou les
+notes Ã©touffées des guitares@tie{}:
+
+@lilypond[verbatim,quote,relative=2]
+c4 b
+\xNotesOn
+ a b c4 b
+\xNotesOff
+c4 d
+@end lilypond
+
+Cette commande opère aussi bien sur des notes isolées qu'au sein d'un
+accord, dans une portée traditionnelle ou dans un contexte de
+tablature@tie{}:
+
+@lilypond[verbatim,quote,relative=2]
+c4 b
+\xNote { e f }
+c b < g \xNote c f > b
+@end lilypond
+
+Vous pouvez utiliser, en lieu et place de @code{\xNote},
+@code{\xNotesOn} et @code{\xNotesOff}, les commandes
+@code{\deadNote}, @code{\deadNotesOn} et @code{\deadNotesOff}.
+
+
+Il existe un raccourci pour les notes en losange qui indiquent les
+harmoniques des cordes@tie{}:
 
 @lilypond[verbatim,quote,relative=2]
 <c f\harmonic>2 <d a'\harmonic>4 <c g'\harmonic>
 @end lilypond
 
-Pour une liste exhaustive des styles de tête de note, consultez 
-@ref{Têtes de note}.
+
+@predefined
+@code{\harmonic},
+@code{\xNotesOn},
+@code{\xNotesOff},
+@code{\xNote}.
+@endpredefined
 
 
 @seealso
@@ -2472,8 +2561,9 @@ Morceaux choisis :
 @rlsr{Pitches}.
 
 Manuel de notation :
-@ref{Têtes de note},
-@ref{Notes en accords}.
+@ref{Styles de tête de note},
+@ref{Notes en accords},
+@ref{Indication des harmoniques et notes Ã©touffées}.
 
 @seealso
 Référence des propriétés internes : 
@@ -2523,6 +2613,12 @@ Voir Ã  ce propos @ref{Définition de la taille de portée}.
 @endpredefined
 
 
+@snippets
+
+@lilypondfile[verbatim,lilyquote,texidoc,doctitle]
+{numbers-as-easy-note-heads.ly}
+
+
 @seealso
 Manuel de notation :
 @ref{Définition de la taille de portée}.
@@ -2554,26 +2650,48 @@ Référence des propriétés internes :
 @funindex aikenHeads
 @funindex \sacredHarpHeads
 @funindex sacredHarpHeads
+@funindex \southernHarmonyHeads
+@funindex southernHarmonyHeads
 
 En notation profilée, le profil d'une tête de note correspond Ã  la
 fonction harmonique de cette note dans la gamme.  Ce style de notation
 Ã©tait très en vogue dans les recueils de chansons américains du XIXe
-siècle.  Voici comment procéder :
+siècle.  Voici comment procéder@tie{}:
 
 @lilypond[verbatim,quote,relative=2]
 \aikenHeads
-c, d e f g a b c
+c, d e f g2 a b1 c \break
 \sacredHarpHeads
-c, d e f g a b c
+c,4 d e f g2 a b1 c \break
+\southernHarmonyHeads
+c,4 d e f g2 a b1 c \break
 @end lilypond
 
 Les profils sont déterminés par la hauteur dans la gamme, le premier
-degré Ã©tant défini par la commande @code{\key}.
+degré Ã©tant défini par la commande @code{\key}.  Pour une tonalité
+mineure, les degrés sont déterminés par rapport au relatif majeur@tie{}:
+
+@lilypond[verbatim,quote,relative=2]
+\key a \minor
+\aikenHeads
+a b c d e2 f g1 a \break
+\aikenHeadsMinor
+a,4 b c d e2 f g1 a \break
+\sacredHarpHeadsMinor
+a,2 b c d \break
+\southernHarmonyHeadsMinor
+a2 b c d \break
+@end lilypond
+
 
 
 @predefined
 @code{\aikenHeads},
+@code{\aikenHeadsMinor},
 @code{\sacredHarpHeads}.
+@code{\sacredHarpHeadsMinor},
+@code{\southernHarmonyHeads},
+@code{\southernHarmonyHeadsMinor}.
 @endpredefined
 
 
@@ -2583,7 +2701,7 @@ degré Ã©tant défini par la commande @code{\key}.
 {applying-note-head-styles-depending-on-the-step-of-the-scale.ly}
 
 Pour une liste exhaustive des styles de tête de note, consultez 
-@ref{Têtes de note}.
+@ref{Styles de tête de note}.
 
 
 @seealso
@@ -2591,7 +2709,7 @@ Morceaux choisis :
 @rlsr{Pitches}.
 
 Manuel de notation :
-@ref{Têtes de note}.
+@ref{Styles de tête de note}.
 
 Référence des propriétés internes :
 @rinternals{note-event},
@@ -2606,8 +2724,8 @@ Référence des propriétés internes :
 
 @cindex improvisation
 @cindex notes penchées
-@cindex note heads, improvisation
-@cindex note heads, slashed
+@cindex tête de note et improvisation
+@cindex tête de note allongée
 
 @funindex \improvisationOn
 @funindex improvisationOn
@@ -2617,7 +2735,7 @@ Référence des propriétés internes :
 L'improvisation peut quelquefois s'indiquer Ã  l'aide de notes de forme
 allongée (@emph{slash}).  L'interprète jouera alors les notes qu'il
 veut, en respectant toutefois le rythme affiché. Ces têtes de notes sont
-créées  ainsi :
+créées ainsi@tie{}:
 
 @lilypond[verbatim,quote,relative=2]
 \new Voice \with {
index 81f6b2adb1a8350e7bb9b1d6d92d9e933fa6320d..2ec913be9149529764ac41d912d9de27a71c9cdf 100644 (file)
@@ -1,6 +1,6 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-    Translation of GIT committish: 548ef200973bd3d46ea75c5498461d9e5f168334
+    Translation of GIT committish: 22b6ca7247b6f0d596934d38aa2c75d5e45206eb
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -80,8 +80,8 @@ a4_\markup { \tiny scherz. \bold molto } f
 @end lilypond
 
 Par défaut, ces indications n'affectent en rien l'espacement des
-notes.  Leur longueur peut néanmoins Ãªtre prise en considération : dans
-l'exemple qui suit, le premier commentaire n'influe pas sur
+notes.  Leur longueur peut néanmoins Ãªtre prise en considération@tie{}:
+dans l'exemple qui suit, le premier commentaire n'influe pas sur
 l'espacement, Ã  l'inverse du second.
 
 @lilypond[quote,verbatim,relative=2]
@@ -90,6 +90,12 @@ a8^"pizz." g f e
 a4_"scherzando" f
 @end lilypond
 
+En plus d'indications textuelles, les notes peuvent se voir attacher des
+articulations, comme indiqué au chapitre @ref{Articulations et ornements}.
+
+Pour de plus amples détails sur la manière de combiner indications
+textuelles et articulations, reportez-vous au chapitre
+@rlearning{Positionnement des objets}.
 
 @funindex \textLengthOn
 @funindex textLengthOn
@@ -103,6 +109,9 @@ a4_"scherzando" f
 
 
 @seealso
+Manuel d'initiation :
+@rlearning{Positionnement des objets}.
+
 Manuel de notation :
 @ref{Mise en forme du texte},
 @ref{Direction et positionnement}.
@@ -123,8 +132,8 @@ Référence des propriétés internes :
 @knownissues
 
 S'assurer que tous les Ã©léments textuels et les paroles respectent
-les marges du document requiert des calculs relativement lourds ; c'est 
-la raison pour laquelle LilyPond, par défaut, ne s'en préoccupe pas.
+les marges du document requiert des calculs relativement lourds@tie{};
+c'est la raison pour laquelle LilyPond, par défaut, ne s'en préoccupe pas.
 Vous pouvez cependant l'y forcer en définissant
 
 @example
@@ -144,7 +153,7 @@ Certaines indications d'interprétation comme @i{rallentando},
 @i{accelerando} ou @i{trilles}, s'incrivent textuellement et se
 prolongent sur plusieurs notes Ã  l'aide d'une ligne pleine, pointillée
 ou ondulée.  Ces objets, que l'on appelle @qq{extenseurs}, se dessinent
-entre deux notes Ã  l'aide de la syntaxe suivante :
+entre deux notes Ã  l'aide de la syntaxe suivante@tie{}:
 
 @lilypond[verbatim,quote,relative=2]
 \override TextSpanner #'(bound-details left text) = "rit."
@@ -158,9 +167,10 @@ e,\stopTextSpan
 
 @noindent
 Le texte Ã  imprimer est spécifié en tant que propriété de l'objet
-@code{TextSpanner}.  Il apparaîtra par défaut en italique ; cependant,
-rien ne s'oppose Ã  un autre graphisme dès lors que vous faites appel Ã 
-un bloc @code{\markup} -- voir @ref{Mise en forme du texte}.
+@code{TextSpanner}.  Il apparaîtra par défaut en italique@tie{};
+cependant, rien ne s'oppose Ã  un autre graphisme dès lors que vous
+faites appel Ã  un bloc @code{\markup} --
+voir @ref{Mise en forme du texte}.
 
 @lilypond[quote,relative=2,verbatim]
 \override TextSpanner #'(bound-details left text) =
@@ -188,6 +198,8 @@ Les détails concernant la syntaxe Ã  utiliser sont expliqués au chapitre
 @code{\textSpannerNeutral}.
 @endpredefined
 
+@knownissues
+LilyPond ne peut traiter qu'un seul extenseur Ã  la fois par voix.
 
 @seealso
 Manuel de notation :
@@ -299,12 +311,6 @@ Référence des propriétés internes :
 @rinternals{RehearsalMark}.
 
 
-@knownissues
-@c  To be removed when Issue 69 in the tracker gets fixed. -vv
-
-Au cas où il n'y aurait pas de ligne Ã  suivre, la marque ne sera pas imprimée.
-
-
 @node Texte indépendant
 @unnumberedsubsubsec Texte indépendant
 @translationof Separate text
@@ -384,7 +390,6 @@ Référence des propriétés internes :
 @rinternals{TextScript}.
 
 
-
 @node Mise en forme du texte
 @subsection Mise en forme du texte
 @translationof Formatting text
@@ -422,10 +427,10 @@ propre syntaxe que nous appellerons le @qq{mode @emph{markup}}.
 @cindex syntaxe du mode markup
 
 La syntaxe du mode @emph{markup} n'est pas différente de celle des
-autres modes de LilyPond : une expression @code{\markup} est bornée par
-des accolades @code{@{ @dots{} @}}.  Un mot unique sera considéré comme
-une expression minimale, et n'aura donc pas besoin d'être mis entre 
-accolades. 
+autres modes de LilyPond@tie{}: une expression @code{\markup} est bornée
+par des accolades @code{@{@tie{}@dots{}@tie{}@}}.  Un mot unique sera
+considéré comme une expression minimale, et n'aura donc pas besoin
+d'être mis entre accolades.
 
 Contrairement aux indications simples, du type "entre guillemets", les
 blocs @code{\markup} peuvent contenir des expressions imbriquées ou
@@ -453,8 +458,8 @@ c
 
 Un bloc @code{\markup} peut contenir du texte entre guillemets.  De
 telles chaines seront considérées comme des expressions textuelles
-minimales ; Ã  ce titre, toute commande de type @emph{markup} ou tout
-caractère spécial -- tel un @code{\} ou un @code{#} -- sera imprimé
+minimales@tie{}; Ã  ce titre, toute commande de type @emph{markup} ou
+tout caractère spécial -- tel un @code{\} ou un @code{#} -- sera imprimé
 littéralement et sans influer sur le formatage du texte.  Il est de ce
 fait possible d'imprimer des guillemets informatiques @code{"} dès lors
 qu'ils sont précédés d'une oblique inverse.
@@ -471,7 +476,7 @@ distincte, doit Ãªtre bornée par des @code{"} ou précédée d'une commande.
 La manière de définir les expressions @emph{markup} aura une influence
 sur la manière dont elles seront empilées, centrées ou alignées.  Dans
 l'exemple qui suit, la deuxième expression @code{\markup} est traitée
-tout comme la première :
+tout comme la première@tie{}:
 
 @lilypond[quote,verbatim,relative=2]
 c1^\markup { \center-column { a bbb c } }
@@ -481,7 +486,7 @@ c1^\markup { \center-column { a "bbb c" } }
 @end lilypond
 
 Vous pouvez stocker les Ã©tiquettes textuelles en tant que variables,
-et attacher ces identificateurs Ã  des notes, comme ici :
+et attacher ces identificateurs Ã  des notes, comme ici@tie{}:
 
 @lilypond[quote,verbatim]
 allegro = \markup { \bold \large Allegro }
@@ -531,7 +536,8 @@ Les erreurs de syntaxe en mode @emph{markup} sont peu loquaces.
 @funindex \underline
 @funindex underline
 
-Le mode @emph{markup} autorise des changements Ã©lémentaires de la fonte :
+Le mode @emph{markup} autorise des changements Ã©lémentaires de la
+fonte@tie{}:
 
 @lilypond[quote,verbatim,relative=2]
 d1^\markup {
@@ -568,7 +574,7 @@ en adoptant une valeur relative Ã  celle précédemment définie.
 @end itemize
 
 @noindent
-Voici une illustration de ces trois différentes méthodes :
+Voici une illustration de ces trois différentes méthodes@tie{}:
 
 @lilypond[quote,verbatim,relative=1]
 f1_\markup {
@@ -599,7 +605,7 @@ d c2 r8 c bes a g1
 
 Vous pouvez imprimer du texte en indice ou en exposant.  Celui-ci sera
 dans un taille plus petite, mais rien ne s'oppose Ã  ce que vous lui
-affectiez un taille normale :
+affectiez un taille normale@tie{}:
 
 @lilypond[quote,verbatim]
 \markup {
@@ -641,7 +647,7 @@ dans les chapitres @ref{Personnalisation des indications de nuance} et
 
 Lorsqu'un changement survient au milieu d'un mot, il se peut qu'un
 espacement supplémentaire apparaîsse.  Il suffit en pareil cas de
-concaténer les différents Ã©léments :
+concaténer les différents Ã©léments@tie{}:
 
 @lilypond[quote,verbatim]
 \markup {
@@ -756,7 +762,8 @@ d-\markup { \right-align poco }
 @funindex \halign
 @funindex halign
 
-L'alignement horizontal peut Ãªtre ajusté Ã  l'aide d'une valeur numérique :
+L'alignement horizontal peut Ãªtre ajusté Ã  l'aide d'une valeur
+numérique@tie{}:
 
 @lilypond[quote,verbatim,relative=2]
 a1-\markup { \halign #-1 poco }
@@ -920,7 +927,7 @@ texte multi-ligne ou une autre expression @emph{markup}.
 Les indications textuelles, lorsqu'elles sont relativement longues,
 peuvent se répartir sur plusieurs lignes en fonction de la largeur de 
 ligne.  Le texte sera alors soit aligné Ã  gauche, soit justifié, comme
-le montre l'exemple suivant :
+le montre l'exemple suivant@tie{}:
 
 @lilypond[quote,verbatim]
 \markup {
@@ -1006,7 +1013,7 @@ graphiques Ã  votre partition.
 @funindex hbracket
 
 Certaines commandes de @emph{markup} permettent d'ornementer des
-éléments textuels avec des graphismes, Ã  l'instar de l'exemple suivant :
+éléments textuels avec des graphismes, Ã  l'instar de l'exemple suivant@tie{}:
 
 @lilypond[quote,verbatim]
 \markup \fill-line {
@@ -1117,7 +1124,7 @@ dans une partition un fichier image converti au format PostScript
 encapsulé (extension @code{eps}), ou bien de tracer un graphique
 directement dans le fichier source Ã  partir d'instructions PostScript
 pures.  Nous vous conseillons, en pareil cas, de toujours spécifier les
-dimensions du dessin, comme dans ce qui suit :
+dimensions du dessin, comme dans ce qui suit@tie{}:
 
 @lilypond[quote,verbatim,relative=1]
 c1^\markup {
@@ -1170,7 +1177,8 @@ Fichiers d'initialisation :
 Divers Ã©léments de notation peuvent orner une partition, au moyen d'un
 objet @emph{markup}.
 
-Notes et altérations sont données Ã  l'aide d'instructions @emph{markup} :
+Notes et altérations sont données Ã  l'aide d'instructions
+@emph{markup}@tie{}:
 
 @lilypond[quote,verbatim,relative=2]
 a2 a^\markup {
@@ -1190,7 +1198,8 @@ a1_\markup {
 \glissando b
 @end lilypond
 
-Le mode @emph{markup} permet d'accéder Ã  d'autres objets de notation :
+Le mode @emph{markup} permet d'accéder Ã  d'autres objets de
+notation@tie{}:
 
 @lilypond[quote,verbatim,relative=1]
 g1 bes
@@ -1228,7 +1237,7 @@ informations sur l'impression de glyphes non alphabétiques, tels que des
 crochets ou accolades.
 
 Le mode @emph{markup} supporte aussi les diagrammes spécifiques Ã 
-certains instruments :
+certains instruments@tie{}:
 
 @lilypond[quote,verbatim,relative=2]
 c1^\markup {
@@ -1330,7 +1339,8 @@ sur plusieurs pages.
 }
 @end lilypond
 
-Cette syntaxe prend en charge une liste de @emph{markups} ; il peut s'agir
+Cette syntaxe prend en charge une liste de @emph{markups}@tie{}; il peut
+s'agir
 @itemize
 @item
 d'une suite de commandes générant Ã  leur tour des lignes de texte,
@@ -1396,10 +1406,10 @@ partition.
 
 @funindex font-interface
 
-La gestion des fontes est assurée par plusieurs bibliothèques :
+La gestion des fontes est assurée par plusieurs bibliothèques@tie{}:
 FontConfig se charge de répertorier les différentes fontes installées
-sur votre système ; quant Ã  Pango, elle se charge plus particulièrement
-de leur rendu. 
+sur votre système@tie{}; quant Ã  Pango, elle se charge plus
+particulièrement de leur rendu.
 
 Les fontes musicales peuvent se décrire comme un jeu de glyphes
 spécifiques regroupés dans plusieurs familles.  L'exemple qui suit
@@ -1427,8 +1437,8 @@ Tous ces glyphes, Ã  l'exception des accolades qui sont regroupées dans
 @ref{Notation musicale dans du texte formaté}.
 
 Une remarque s'impose au sujet des glyphes contenus dans
-@code{fetaBraces} : chacun d'eux est formé du mot @emph{brace} auquel
-est accolé un numéro d'ordre.  Lorsque vous désirez imprimer une
+@code{fetaBraces}@tie{}: chacun d'eux est formé du mot @emph{brace}
+auquel est accolé un numéro d'ordre.  Lorsque vous désirez imprimer une
 accolade, vous devez la @qq{chercher} par son numéro d'ordre -- d'où la
 fonction @code{\lookup} de l'exemple ci-dessus --, tout en sachant qu'il
 est compris entre @code{0} (la plus petite) et @code{575} (la plus
@@ -1438,7 +1448,7 @@ comporte que des accolades ouvrantes.  Pour obtenir une accolade
 fermante, il suffit d'appliquer une rotation au glyphe sélectionné,
 comme indiqué au chapitre @ref{Rotation des objets}. 
 
-Vous disposez de trois familles de fontes textuelles : @emph{roman}
+Vous disposez de trois familles de fontes textuelles@tie{}: @emph{roman}
 pour la police sérif ou avec empattement -- fixée par défaut Ã  New
 Century Schoolbook --, une police sans empattement (@emph{sans} sérif)
 et une Ã  chasse fixe (ou monospace) -- les deux dernières Ã©tant
@@ -1463,7 +1473,7 @@ c4^smaller
 @noindent
 Cette syntaxe s'applique aussi en mode @emph{markup}, bien que celui-ci
 dispose d'une syntaxe allégée comme nous l'avons vu dans
-@ref{Sélection de la fonte et de la taille}:
+@ref{Sélection de la fonte et de la taille}@tie{}:
 
 @lilypond[quote,verbatim]
 \markup {
@@ -1489,7 +1499,8 @@ dispose d'une syntaxe allégée comme nous l'avons vu dans
 
 En plus de pouvoir jongler entre les différentes fontes prédéfinies,
 LilyPond vous permet d'en utiliser d'autres, ce qui fait l'objet des
-deux prochaines parties : @ref{Attribution d'une fonte en particulier}
+deux prochaines parties@tie{}:
+@ref{Attribution d'une fonte en particulier}
 et @ref{Choix des fontes par défaut}.
 
 
@@ -1507,7 +1518,7 @@ Manuel de notation :
 
 Vous pouvez utiliser n'importe quelle police installée sur votre
 système, du moment où elle est accessible par Fontconfig, en respectant
-la syntaxe suivante :
+la syntaxe suivante@tie{}:
 
 @lilypond[quote,verbatim,relative=2]
 \override Staff.TimeSignature #'font-name = #"Bitstream Charter"
index 2ca3122e340b81ddbc83b705c8ef03d3a1256cc7..28e277f9849fe1a185f5558fbcd5e14a012fec59 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: 541f77187b475f4ea84ca36485d2255dd7db0437
+    Translation of GIT committish: 22b6ca7247b6f0d596934d38aa2c75d5e45206eb
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  For details, see the Contributors'
@@ -20,7 +20,7 @@
 
 @imageFloat{flat-design,png,right}
 
-L'inspiration pour LilyPond provint de deux musiciens qui s'étaient
+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
@@ -34,7 +34,7 @@ amis et collègues avec des partitions soignées@tie{}!
 @divEnd
 
 @divClass{column-left-top}
-@subheading Pourquoi utiliser LilyPond ?
+@subheading Ce que LilyPond sait faire
 
 @itemize
 
@@ -54,7 +54,7 @@ amis et collègues avec des partitions soignées@tie{}!
 @divEnd
 
 @divClass{column-right-top}
-@subheading Qui l'utilise ?
+@subheading Ceux qui utilisent LilyPond
 
 @itemize
 
@@ -68,7 +68,7 @@ amis et collègues avec des partitions soignées@tie{}!
 @divEnd
 
 @divClass{column-center-bottom}
-@subheading Pourquoi utiliser LilyPond ?
+@subheading LilyPond en action
 
 @itemize
 
@@ -154,7 +154,7 @@ ce que l'on a déjà réussi Ã  faire.
 Introduisez des fragments de partition musicale sans avoir besoin de
 copier-coller manuellement des images. Intégrez de façon transparente
 des partitions dans un document @LaTeX{} ou HTML, ou ajoutez des
-partitions dans un document OpenOffice.org avec OOoLilyPond.
+partitions dans un document OpenOffice.org.
 
 
 @subsubheading Accessibilité
@@ -208,7 +208,7 @@ anglophone et la liste francophone, tandis que l'équipe de développement
 assure une prompte résolution des problèmes.
 
 
-@subsubheading Enhanced editors
+@subsubheading Ã‰diteurs avancés
 
 Plusieurs développeurs, eux-même utilisateurs de LilyPond, ont créé des
 outils spécifiques dans le but de travailler plus rapidement et avec
@@ -537,7 +537,7 @@ mentionnons que quelques-uns.
 @emph{Affaire Ã‰trangère}, un opéra de
 @uref{http://valentin.villenave.net/,Valentin Villenave}, livret
 de @uref{http://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis Trondheim},
-dont la première a eu lieu le 1er@tie{}février@tie{}2009 Ã  
+dont la première a eu lieu le 1er@tie{}février@tie{}2009 en France Ã 
 @uref{http://www.orchestre-montpellier.com/, l'Opéra de Montpellier}.
 
 @item
@@ -922,7 +922,7 @@ Ajoutez des accords et des paroles pour obtenir une chanson :
 
 
 
-@subsubheading Pièces orchestrales
+@subsubheading Matériel d'orcheste
 
 Le fichier source contient les notes de la pièce.  Le conducteur et les
 parties séparées peuvent Ãªtre réalisés Ã  partir de la même source@tie{};
@@ -993,28 +993,9 @@ d'édition}.
 @unnumberedsec Facilités d'édition
 @translationof Easier editing
 
-@divClass{column-center-top}
-@subheading Environnement graphique : Denemo
-
-@imageClickable{screenshot-denemo-small,png,
-  (cliquez pour agrandir),screenshot-denemo,png,right}
-
-@sourceimage{logo-linux,,,}
-@sourceimage{logo-windows,,,}
-
-@uref{http://denemo.org}
-
-Denemo est un Ã©diteur graphique qui génère du code source LilyPond et
-peut jouer un rendu sonore.  Ce projet, actuellement en phase de
-développement, génère du code pour une version ancienne de LilyPond
-(2.8.7).  Il permet Ã  l'utilisateur de voir le code source LilyPond en
-même temps que la vue graphique.
-
-
-@divEnd
 
 @divClass{column-center-top}
-@subheading Environment intégré : LilyPondTool
+@subheading LilyPondTool
 
 @imageClickable{lilypondtool-2.12-screenshot-400wide,png,
   (cliquez pour agrandir),lilypondtool-2.12-screenshot,png,right}
@@ -1024,7 +1005,7 @@ même temps que la vue graphique.
 @sourceimage{logo-macosx,,,}
 @sourceimage{logo-windows,,,}
 
-@uref{http://lilypondtool@/.organum@/.hu}
+@uref{http://lilypondtool.organum.hu}
 
 Greffon de l'éditeur de texte @uref{http://www.jedit.org,jEdit},
 LilyPondTool est l'un des outils d'édition en mode texte le plus riche
@@ -1036,7 +1017,7 @@ visonneuse de PDF intégrée avec un excellent pointer-cliquer.
 @divEnd
 
 @divClass{column-center-top}
-@subheading Environnement intégré : Frescobaldi
+@subheading Frescobaldi
 
 @imageClickable{frescobaldi-lilypond-editor-small,png,
   (cliquez pour agrandir),frescobaldi-lilypond-editor,png,right}
@@ -1054,7 +1035,27 @@ fonctionne actuellement sur toutes les variantes d'Unix dont GNU/Linux.
 @divEnd
 
 @divClass{column-center-top}
-@subheading Environments texte : Emacs et Vim
+@subheading Denemo
+
+@imageClickable{screenshot-denemo-small,png,
+  (cliquez pour agrandir),screenshot-denemo,png,right}
+
+@sourceimage{logo-linux,,,}
+@sourceimage{logo-windows,,,}
+
+@uref{http://denemo.org}
+
+Denemo est un Ã©diteur graphique qui génère du code source LilyPond et
+peut jouer un rendu sonore.  Ce projet, actuellement en phase de
+développement, génère du code pour une version ancienne de LilyPond
+(2.8.7).  Il permet Ã  l'utilisateur de voir le code source LilyPond en
+même temps que la vue graphique.
+
+
+@divEnd
+
+@divClass{column-center-top}
+@subheading Emacs et Vim
 
 @sourceimage{logo-linux,,,}
 @sourceimage{logo-freebsd,,,}
@@ -1068,7 +1069,8 @@ un grand nombre de langages de programmation et de documents.  C'est un
 Ã©diteur très extensible, qui peut Ãªtre utilisé comme un environnement de
 développement intégré (IDE).  Il existe un @emph{mode LilyPond} qui offre
 quelques fonctionnalités spécifiques pour travailler avec des fichiers
-source LilyPond.
+source LilyPond.  L'un des développeurs a même Ã©crit un mode majeur pour
+Emacs, @uref{http://nicolas.sceaux.free.fr/lilypond/lyqi.html,lyqi}.
 
 @uref{http://www.vim.org}
 
@@ -1079,12 +1081,18 @@ En règle générale, si vous n'êtes pas déjà familier avec Emacs ou Vim,
 alors vous préfèrerez peut-être utiliser un autre Ã©diteur pour
 travailler sur des fichiers source LilyPond.
 
+Vous trouverez plus d'information quant au paramétrage d'Emacs et Vim au
+chapitre @rprogram{LilyPond et les Ã©diteurs de texte}.
+
 @divEnd
 
+@ignore these may not need to be here at all, as they are purely
+MacOS scripts.
+
 @divClass{column-center-top}
 @subheading Autres
 
-@subsubheading Environnement texte : TexShop
+@subsubheading TexShop
 
 @sourceimage{logo-macosx,,,}
 
@@ -1111,12 +1119,15 @@ svn co http://svn.textmate.org/trunk/Bundles/LilyPond.tmbundle/
 @end example
 
 @divEnd
+@end ignore
+
+
 
 @divClass{column-center-top}
 @subheading Autres programmes qui exportent du code LilyPond
 
 
-@subsubheading Environnements graphiques
+@subsubheading Ã‰diteurs de partition, tablature et MIDI
 
 @itemize
 @item
@@ -1142,23 +1153,27 @@ mais est encore au stade de développement beta.  Les testeurs sont les
 bienvenus.
 
 @item
-@uref{http://strasheela.sourceforge.net, Strasheela} est un système de
-composition musicale @qq{highly expressive constraint-based}.
+@uref{http://www.volny.cz/smilauer/rumor/rumor.html,Rumor}, un
+convertisseur monophonique temps-réel MIDI vers LilyPond.
 
 @end itemize
 
-@subsubheading Outils en ligne de commande
+@subsubheading Générateurs de code
 
 @itemize
+
 @item
-@uref{http://www.volny.cz/smilauer/rumor/rumor.html,Rumor}, un
-convertisseur monophonique temps-réel MIDI vers LilyPond.
+@uref{http://strasheela.sourceforge.net, Strasheela} est un système de
+composition musicale @qq{highly expressive constraint-based}.
 
 @item
-@uref{http://nicolas.sceaux.free.fr/lilypond/lyqi.html,lyqi}, un mode
-majeur pour Emacs.
+@uref{http://common-lisp.net/project/fomus/,FOMUS}, bibliothèque LISP
+qui permet de générer de la notation Ã  partir de logiciels de musique.
 
 @end itemize
+@divEnd
+
+@divClass{column-center-top}
 
 
 @subheading Autres programmes dont le développement est peu actif
@@ -1177,10 +1192,6 @@ KDE@tie{}4.1.
 @uref{http://vsr.informatik.tu-chemnitz.de/staff/jan/nted/nted.xhtml,NtEd}
 et @uref{http://canorus.org,Canorus}.
 
-@item
-@uref{http://common-lisp.net/project/fomus/,FOMUS}, constitue
-une bibliothèque LISP de génération de notation musicale.
-
 @item
 @uref{http://lilycomp.sourceforge.net, LilyComp} permet de saisir
 graphiquement des notes.  Il fonctionne comme un pavé numérique
index 95b394b93d99f8bfa1e47387b43c6dd116d81b6d..d33e06ecdc27530cbd7265980a9e2d439ae5f249 100644 (file)
@@ -3097,43 +3097,46 @@ Internals Reference:
 @node Aligning objects
 @subsection Aligning objects
 
-Graphical objects which support the @code{self-alignment-interface} and/or
-the @code{side-position-interface} can be
-aligned to a previously placed object in a variety of ways.  For a list of these objects, see
+Graphical objects which support the @code{self-alignment-interface}
+and/or the @code{side-position-interface} can be aligned to a previously
+placed object in a variety of ways.  For a list of these objects, see
 @rinternals{self-alignment-interface} and @rinternals{side-position-interface}.
 
 All graphical objects have a reference point, a horizontal extent and a
 vertical extent.  The horizontal extent is a pair of numbers
 giving the displacements from the reference point of the left and
-right edges, displacements to the left being negative.  The
-vertical extent is a pair of numbers giving the displacement from
-the reference point to the bottom and top edges, displacements down
-being negative.
+right edges, displacements to the left being negative.  The vertical
+extent is a pair of numbers giving the displacement from the reference
+point to the bottom and top edges, displacements down being negative.
 
 An object's position on a staff is given by the values of the
 @code{X-offset} and @code{Y-offset} properties.  The value of
-@code{X-offset} gives the displacement from the x coordinate of
+@code{X-offset} gives the displacement from the X coordinate of
 the reference point of the parent object, and the value of
 @code{Y-offset} gives the displacement from the center line of the
-staff.   The values of @code{X-offset} and
-@code{Y-offset} may be set directly or may be set to be calculated
-by procedures in order to achieve alignment with the parent object
-in several ways.
+staff.  The values of @code{X-offset} and @code{Y-offset} may
+be set directly or may be set to be calculated by procedures in order
+to achieve alignment with the parent object.
 
 @warning{Many objects have special positioning considerations which
 cause any setting of @code{X-offset} or @code{Y-offset} to be
 ignored or modified, even though the object supports the
-@code{self-alignment-interface}.}
+@code{self-alignment-interface}.  Overriding the @code{X-offset}
+or @code{Y-offset} properties to a fixed value causes the respective
+@code{self-alignment} property to be disregarded.}
 
-For example, an accidental can be repositioned
-vertically by setting @code{Y-offset} but any changes to
-@code{X-offset} have no effect.
+For example, an accidental can be repositioned vertically by setting
+@code{Y-offset} but any changes to @code{X-offset} have no effect.
 
-Rehearsal marks may be aligned with
-breakable objects such as bar lines, clef symbols, time signature
-symbols and key signatures.  There are special properties to be
-found in the @code{break-aligned-interface} for positioning rehearsal
-marks on such objects.
+Rehearsal marks may be aligned with breakable objects such as bar
+lines, clef symbols, time signature symbols and key signatures.  There
+are special properties to be found in the @code{break-aligned-interface}
+for positioning rehearsal marks on such objects.
+@ruser{Using the break-alignable-interface}
+
+@seealso
+@ruser{Using the break-alignable-interface},
+@rextend{Callback functions}.
 
 @menu
 * Setting X-offset and Y-offset directly::
index b7879061a4657878719c51616abaceced0b8b54a..8c238fd481f4655f0635f81f04c5dc48e7968bdf 100644 (file)
@@ -966,21 +966,23 @@ c2 c
 @cindex tenor clef, choral
 
 By adding@tie{}@code{_8} or@tie{}@code{^8} to the clef name, the
-clef is transposed one octave down or up, respectively,
+clef is transposed one octave down or up respectively,
 and@tie{}@code{_15} and@tie{}@code{^15} transpose by two octaves.
-Clef names containing non-alphabetic characters must be enclosed
-in quotes.
+Other integers can be used if required.  Clef names containing
+non-alphabetic characters must be enclosed in quotes
 
 @lilypond[verbatim,quote,relative=1]
 \clef treble
 c2 c
 \clef "treble_8"
 c2 c
-\clef "G_8"
-c2 c
 \clef "bass^15"
 c2 c
-\clef "F^15"
+\clef "alto_2"
+c2 c
+\clef "G_8"
+c2 c
+\clef "F^5"
 c2 c
 @end lilypond
 
index e4ed57b75a7356712d6118cb74fa94dd86eb2eec..bc6c7b1c957b52280a1ea171d2a932f7d2f42fb8 100644 (file)
@@ -222,6 +222,13 @@ the application of @var{minimum-distance} (whereas the height of a
 staff is crucial for @var{padding}).
 @end itemize
 
+For example, the default is:
+
+@example
+after-title-spacing = #'((space . 2) (padding . 0.5))
+@end example
+
+
 If a page has a ragged bottom, @var{space} is not stretched. In particular, the
 resulting distance on such a page is the largest of
 @itemize @bullet
index 93c45520ed3aa95114ac989f016b559f0e24af74..c622fb598ed7128d91b0a30e82af3e4e8084bd82 100644 (file)
@@ -183,6 +183,8 @@ object property.  This syntax is described in @ref{Line styles}.
 @code{\textSpannerNeutral}.
 @endpredefined
 
+@knownissues
+LilyPond is only able to handle one text spanner per voice.
 
 @seealso
 Notation Reference:
index c2bdce9685d41bf03204d97adb0a319b056219e4..2e73e1231755ce75312006f502adb39359adc031 100644 (file)
@@ -362,9 +362,9 @@ free to add more information to that report.}
 If you have discovered a bug which is not listed, please help us
 by creating a bug report.
 
-@warning{We only accept bug reports in the form of @ref{Tiny
-examples}.  We have very limited resources to deal with bug
-reports, so any non-minimal example will be rejected.  Almost
+@warning{We only accept bug reports in the form of
+@ref{Tiny examples}.  We have very limited resources to deal with
+bug reports, so any non-minimal example will be rejected.  Almost
 every bug can be demonstrated in four notes or less!}
 
 Here is an example of a good bug report:
@@ -404,10 +404,11 @@ To avoid this, please add
 Post with the gmane lilypond.bugs interface}, or send an email to
 @uref{mailto:bug-lilypond@@gnu.prg, bug-lilypond@@gnu.org}.
 
-Once your bug has been sent to the list, our Bug Meister will
-examine the report.  He may ask you for more information, or may
-add the report to the tracker and let you know what the issue
-number is.
+Once your bug has been sent to the list, our Bug Squad will
+examine the report.  Please allow up to 24 hours, as we have a
+limited number of volunteers for this task.  They may ask you for
+more information, or may add the report to the tracker and let you
+know what the issue number is.
 
 You may mark the bug so that you automatically receive emails when
 any activity on the bug occurs.  This requires you have a google
index e014e36f3053bfdf0b6eeefc094dc3cf1254e6f3..2d516dbf7710a75db64d706a05c135653de6a819 100644 (file)
@@ -9,6 +9,16 @@
 @c FIXME: fill in number
 @c used for news about the upcoming release; see CG x.y
 
+@newsItem
+@subsubheading LilyPond 2.13.24 released!  @emph{June 14, 2010}
+
+We are happy to announce the release of LilyPond 2.13.24.  This
+release contains the usual number of bugfixes.  However, a number
+of critical issues still remain, so this release is intended for
+developers only.
+@newsEnd
+
+
 @newsItem
 @subsubheading LilyPond 2.13.23 released!  @emph{June 3, 2010}
 
diff --git a/VERSION b/VERSION
index 769511fc4284d44fbd1eccb4690e93854c0c243c..a8e74cecabe71cff4777f37076ec78704a6ab7f9 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=13
-PATCH_LEVEL=24
+PATCH_LEVEL=25
 MY_PATCH_LEVEL=
 VERSION_STABLE=2.12.3
-VERSION_DEVEL=2.13.23
+VERSION_DEVEL=2.13.24
diff --git a/input/regression/dot-rest-horizontal-spacing.ly b/input/regression/dot-rest-horizontal-spacing.ly
new file mode 100644 (file)
index 0000000..b294ba2
--- /dev/null
@@ -0,0 +1,8 @@
+\version "2.13.24"
+
+\header {
+  texidoc = "The dots on a dotted rest are correctly accounted for
+in horizontal spacing."
+}
+
+{ r16. cis'' }
index 1cb48dade12133fa2e0dfc56ffe4a35d17014f3c..dfc33cbaa9d235d0391adfbd16733344b5d5401d 100644 (file)
@@ -1468,12 +1468,8 @@ Beam::rest_collision_callback (SCM smob, SCM prev_offset)
 
   Grob *common_y = rest->common_refpoint (beam, Y_AXIS);
 
-  /*
-    TODO: this is dubious, because this call needs the info we're
-    computing right now.
-   */
-  Interval rest_extent = rest->extent (common_y, Y_AXIS);
-  rest_extent.translate (offset);
+  Interval rest_extent = rest->extent (rest, Y_AXIS);
+  rest_extent.translate (offset + rest->get_parent (Y_AXIS)->relative_coordinate (common_y, Y_AXIS));
 
   Real rest_dim = rest_extent[d];
   Real minimum_distance
index e36980a92f3bc8d30dafea88c529c931ddece722..2951741fb60536ad783f27fcfb40c572759cbde7 100644 (file)
@@ -128,7 +128,7 @@ Dot_column::calc_positioning_done (SCM smob)
        stems.insert (stem);
     }
 
-  for (set<Grob*>::const_iterator i(stems.begin());
+  for (set<Grob*>::const_iterator i (stems.begin());
        i != stems.end (); i++)
     {
       Grob *stem = (*i);
@@ -148,8 +148,13 @@ Dot_column::calc_positioning_done (SCM smob)
              
   vector_sort (dots, position_less);
   for (vsize i = dots.size (); i--;)
-    if (!dots[i]->is_live ())
-      dots.erase (dots.begin () + i);
+    {
+      if (!dots[i]->is_live ())
+       dots.erase (dots.begin () + i);
+      else
+       // Undo any fake translations that were done in add_head.
+       dots[i]->translate_axis (-dots[i]->relative_coordinate (me, X_AXIS), X_AXIS);
+    }
 
   Dot_formatting_problem problem (boxes, base_x);
 
@@ -210,9 +215,14 @@ Dot_column::add_head (Grob *me, Grob *head)
 
       Pointer_group_interface::add_grob (me, ly_symbol2scm ("dots"), d);
       d->set_property ("Y-offset", Grob::x_parent_positioning_proc);
-      // Dot formatting requests the Y-offset, -which- for rests may
-      // trigger post-linebreak callbacks.
-      if (!Rest::has_interface (head))
+      // Dot formatting requests the Y-offset, which for rests may
+      // trigger post-linebreak callbacks.  On the other hand, we need the
+      // correct X-offset of the dots for horizontal collision avoidance.
+      // The translation here is undone in calc_positioning_done, where we
+      // do the X-offset properly.
+      if (Rest::has_interface (head))
+       d->translate_axis (head->extent (head, X_AXIS).length (), X_AXIS);
+      else
        d->set_property ("X-offset", Grob::x_parent_positioning_proc);
       Axis_group_interface::add_element (me, d);
     }
index 2c52fb974b849758aac4d6db93e84080c58472ef..6e39de2d45f1d7ce120e470c34e59b6050b24e17 100644 (file)
@@ -30,9 +30,6 @@ public:
 
   Optimal_page_breaking (Paper_book *pb);
   virtual ~Optimal_page_breaking ();
-
-private:
-  vector<vsize> solve_chunk (vsize);
 };
 
 #endif /* OPTIMAL_PAGE_BREAKING_HH */
index 6afe56826281e1db3382fa484d500e45da3fcd11..1064edf1bfcd9325f80fb888227219d27c6f294f 100644 (file)
@@ -29,7 +29,6 @@ public:
   static void add_column (Grob *me, Grob *);
 
   DECLARE_GROB_INTERFACE();
-  DECLARE_SCHEME_CALLBACK (force_shift_callback, (SCM element));
   DECLARE_SCHEME_CALLBACK (calc_positioning_done, (SCM element));
   DECLARE_SCHEME_CALLBACK (force_shift_callback_rest, (SCM element, SCM off));
   static SCM do_shift (Grob *);
index a043075d76b99c43ff2c5b290ef74c1e158c96fa..29d5ee63e99ac2c2bfbda26bcd8383b79e61ad0d 100644 (file)
@@ -27,9 +27,9 @@
 #include "system.hh"
 
 static bool
-is_break (Grob *g)
+is_break (Grob *)
 {
-  return g->get_property ("page-break-permission") == ly_symbol2scm ("force");
+  return false;
 }
 
 Optimal_page_breaking::Optimal_page_breaking (Paper_book *pb)
@@ -43,19 +43,17 @@ Optimal_page_breaking::~Optimal_page_breaking ()
 
 extern bool debug_page_breaking_scoring;
 
-// Solves the subproblem betwen the (END-1)th \pageBreak and the
-// ENDth \pageBreak.
-// Returns a vector of systems per page for the pages within this chunk.
-vector<vsize>
-Optimal_page_breaking::solve_chunk (vsize end)
+SCM
+Optimal_page_breaking::solve ()
 {
-  vsize max_sys_count = max_system_count (end-1, end);
+  vsize end = last_break_position ();
+  vsize max_sys_count = max_system_count (0, end);
   vsize first_page_num = robust_scm2int (book_->paper_->c_variable ("first-page-number"), 1);
-  SCM forced_page_count = book_->paper_->c_variable ("page-count");
 
-  set_to_ideal_line_configuration (end-1, end);
+  set_to_ideal_line_configuration (0, end);
 
   Page_spacing_result best;
+  SCM forced_page_count = book_->paper_->c_variable ("page-count");
   vsize page_count = robust_scm2int (forced_page_count, 1);
   Line_division ideal_line_division = current_configuration (0);
   Line_division best_division = ideal_line_division;
@@ -64,6 +62,9 @@ Optimal_page_breaking::solve_chunk (vsize end)
   
   if (!scm_is_integer (forced_page_count))
     {
+      /* find out the ideal number of pages */
+      message (_ ("Finding the ideal number of pages..."));
+  
       if (systems_per_page () > 0)
        best = space_systems_with_fixed_number_per_page (0, first_page_num);
       else
@@ -88,17 +89,19 @@ Optimal_page_breaking::solve_chunk (vsize end)
       min_sys_count = page_count;
     }
 
-  if (page_count == 1 || scm_is_integer (forced_page_count))
-    progress_indication (_f ("[%d: %d pages]", (int) end, (int) page_count));
+  if (page_count == 1)
+    message (_ ("Fitting music on 1 page..."));
+  else if (scm_is_integer (forced_page_count))
+    message (_f ("Fitting music on %d pages...", (int)page_count));
   else
-    progress_indication (_f ("[%d: %d or %d pages]", (int) end, (int) page_count-1, (int)page_count));
+    message (_f ("Fitting music on %d or %d pages...", (int)page_count-1, (int)page_count));
 
   /* try a smaller number of systems than the ideal number for line breaking */
   Line_division bound = ideal_line_division;
   for (vsize sys_count = ideal_sys_count; --sys_count >= min_sys_count;)
     {
       Page_spacing_result best_for_this_sys_count;
-      set_current_breakpoints (end-1, end, sys_count, Line_division (), bound);
+      set_current_breakpoints (0, end, sys_count, Line_division (), bound);
 
       if (debug_page_breaking_scoring)
        message (_f ("trying %d systems", (int)sys_count));
@@ -153,7 +156,7 @@ Optimal_page_breaking::solve_chunk (vsize end)
   for (vsize sys_count = ideal_sys_count+1; sys_count <= max_sys_count; sys_count++)
     {
       Real best_demerits_for_this_sys_count = infinity_f;
-      set_current_breakpoints (end-1, end, sys_count, bound);
+      set_current_breakpoints (0, end, sys_count, bound);
 
       if (debug_page_breaking_scoring)
        message (_f ("trying %d systems", (int)sys_count));
@@ -188,25 +191,10 @@ Optimal_page_breaking::solve_chunk (vsize end)
        && !(best.system_count_status_ & SYSTEM_COUNT_TOO_FEW))
        break;
     }
-  break_into_pieces (end-1, end, best_division);
-
-  return best.systems_per_page_;
-}
-
-SCM
-Optimal_page_breaking::solve ()
-{
-  vector<vsize> systems_per_page;
-
-  message (_f ("Solving %d page-breaking chunks...", last_break_position ()));
-  for (vsize end = 1; end <= last_break_position (); ++end)
-    {
-      vector<vsize> chunk_systems = solve_chunk (end);
-      systems_per_page.insert (systems_per_page.end (), chunk_systems.begin (), chunk_systems.end ());
-    }
 
   message (_ ("Drawing systems..."));
+  break_into_pieces (0, end, best_division);
   SCM lines = systems ();
-  return make_pages (systems_per_page, lines);
+  return make_pages (best.systems_per_page_, lines);
 }
 
index cf483bdcb3488e49fe22c1335dbc41a611feace1..9beeb54b659470292408b43da62676fd310e0e0a 100644 (file)
@@ -1287,6 +1287,7 @@ Page_breaking::space_systems_on_2_pages (vsize configuration, vsize first_page_n
        p1.systems_per_page_.push_back (p2.systems_per_page_[0]);
        p1.force_.push_back (p2.force_[0]);
        p1.penalty_ += p2.penalty_ - cached_line_details_[i].turn_penalty_;
+       p1.system_count_status_ |= p2.system_count_status_;
        return p1;
       }
 
index 1b5b2ee85a70eca7a178996103c05fd90f9f7ce2..079030bc883d640856da6dfce999c02620ecb26d 100644 (file)
@@ -36,23 +36,6 @@ using namespace std;
 #include "grob.hh"
 #include "warn.hh"
 
-MAKE_SCHEME_CALLBACK (Rest_collision, force_shift_callback, 1);
-SCM
-Rest_collision::force_shift_callback (SCM smob)
-{
-  Grob *them = unsmob_grob (smob);
-  if (Note_column::has_rests (them))
-    {
-      Grob *collision = unsmob_grob (them->get_object ("rest-collision"));
-
-      if (collision)
-       {
-         (void) collision->get_property ("positioning-done");
-       }
-    }
-  return scm_from_double (0.0);
-}
-
 MAKE_SCHEME_CALLBACK_WITH_OPTARGS (Rest_collision, force_shift_callback_rest, 2, 1, "");
 SCM
 Rest_collision::force_shift_callback_rest (SCM rest, SCM offset)
@@ -67,8 +50,13 @@ Rest_collision::force_shift_callback_rest (SCM rest, SCM offset)
   if (scm_is_number (offset))
     rest_grob->translate_axis (scm_to_double (offset), Y_AXIS);
   
-  if (Note_column::has_interface (parent))
-    force_shift_callback (parent->self_scm ());
+  if (Note_column::has_interface (parent) && Note_column::has_rests (parent))
+    {
+      Grob *collision = unsmob_grob (parent->get_object ("rest-collision"));
+
+      if (collision)
+       (void) collision->get_property ("positioning-done");
+    }
 
   return scm_from_double (0.0);
 }
@@ -78,13 +66,6 @@ Rest_collision::add_column (Grob *me, Grob *p)
 {
   Pointer_group_interface::add_grob (me, ly_symbol2scm ("elements"), p);
 
-  /*
-    only add callback for the rests, since we don't move anything
-    else.
-
-    (not?)
-  */
-  add_offset_callback (p, Rest_collision::force_shift_callback_proc, Y_AXIS);
   p->set_object ("rest-collision", me->self_scm ());
 
   Grob *rest = unsmob_grob (p->get_object ("rest"));
index 838e6dc6f829be86461d217cdd6635aa52f85f29..56ed817e170987566f4e31be1e70d22159260b86 100644 (file)
@@ -80,7 +80,7 @@ Skyline
 Separation_item::conditional_skyline (Grob *me, Grob *left)
 {
   vector<Box> bs = boxes (me, left);
-  return Skyline (bs, 0.1, Y_AXIS, LEFT);
+  return Skyline (bs, 0.0, Y_AXIS, LEFT);
 }
 
 
@@ -91,7 +91,7 @@ Separation_item::calc_skylines (SCM smob)
   Item *me = unsmob_item (smob);
   vector<Box> bs = boxes (me, 0);
   /* todo: the horizon_padding is somewhat arbitrary */
-  return Skyline_pair (bs, 0.1, Y_AXIS).smobbed_copy ();
+  return Skyline_pair (bs, 0.0, Y_AXIS).smobbed_copy ();
 }
 
 /* if left is non-NULL, get the boxes corresponding to the
@@ -149,13 +149,13 @@ Separation_item::boxes (Grob *me, Grob *left)
       Interval extra_width = robust_scm2interval (elts[i]->get_property ("extra-spacing-width"),
                                                  Interval (-0.1, 0.1));
       Interval extra_height = robust_scm2interval (elts[i]->get_property ("extra-spacing-height"),
-                                                  Interval (-0.1, 0.1));
+                                                  Interval (0.0, 0.0));
 
       x[LEFT] += extra_width[LEFT];
       x[RIGHT] += extra_width[RIGHT];
       y[DOWN] += extra_height[DOWN];
       y[UP] += extra_height[UP];
+
       if (!x.is_empty () && !y.is_empty ())
        out.push_back (Box (x, y));
     }
index 7366190524cda2a23413ce9e402c55ea00a72b1e..9a5d93da25a80ac998c82ccbf6a8a3821b86ee67 100644 (file)
@@ -20,6 +20,7 @@
 #include "staff-grouper-interface.hh"
 
 #include "hara-kiri-group-spanner.hh"
+#include "page-layout-problem.hh"
 #include "pointer-group-interface.hh"
 
 Grob*
@@ -27,8 +28,9 @@ Staff_grouper_interface::get_maybe_pure_last_grob (Grob *me, bool pure, int star
 {
   extract_grob_set (me, "elements", elts);
   for (vsize i = elts.size (); i--;)
-    if ((pure && !Hara_kiri_group_spanner::request_suicide (me, start, end))
-       || (!pure && elts[i]->is_live ()))
+    if (Page_layout_problem::is_spaceable (elts[i])
+       && ((pure && !Hara_kiri_group_spanner::request_suicide (me, start, end))
+           || (!pure && elts[i]->is_live ())))
       return elts[i];
 
   return 0;
index 367dbbf16b62d8e323b3c50df749c95bf38e2a2d..8fbc6fdee850924ec9bf67fc70989aaa9454ae20 100644 (file)
@@ -138,6 +138,7 @@ finalis = {
 
   % Workaround: add padding.  Correct fix would be spacing engine handle this.
   \once \override BreathingSign  #'extra-X-extent = #'(-1.0 . 0)
+  \once \override BreathingSign  #'extra-spacing-height = #'(-0.5 . 0.5)
 
   \breathe
 }
index aa761fce54ca5a3b51ea76ed390fbc0039f466b0..778c0cfdc12c3658925f0ae090b95901d385d5ba 100644 (file)
                        (next-note . (extra-space . 0.5))
                        (right-edge . (extra-space . 0.5))))
        (stencil . ,ly:clef::print)
+       (extra-spacing-height . (-0.5 . 0.5))
        (Y-offset . ,ly:staff-symbol-referencer::callback)
        (meta . ((class . Item)
                 (interfaces . (break-aligned-interface
        (dot-count . ,dots::calc-dot-count)
        (staff-position . ,dots::calc-staff-position)
        (stencil . ,ly:dots::print)
+       (extra-spacing-height . (-0.5 . 0.5))
        (meta . ((class . Item)
                 (interfaces . (dots-interface
                                font-interface
        (head-direction . ,LEFT)
        (stencil  . ,laissez-vibrer::print)
        (thickness . 1.0)
+       (extra-spacing-height . (-0.5 . 0.5))
        (meta . ((class . Item)
                 (interfaces . (semi-tie-interface))))))
 
        (head-direction . ,RIGHT)
        (stencil  . ,ly:tie::print)
        (thickness . 1.0)
+       (extra-spacing-height . (-0.5 . 0.5))
        (meta . ((class . Item)
                 (interfaces . (semi-tie-interface))))))
 
    ly:note-head::print
    ly:dots::print
    ly:clef::print
+   ly:percent-repeat-item-interface::beat-slash
    ly:text-interface::print
    ly:script-interface::print))
 
index f25f8cb7ff82338a4c8716a226c81cb40d18a904..cbe6d23e4bae71023f0a525a66ff1f69600ef8c4 100644 (file)
          (output-file (if multi-page? pngn png1))
 
          (gs-variable-options
-          (if multi-page?
-              (format #f "-dDEVICEWIDTHPOINTS=~,2f -dDEVICEHEIGHTPOINTS=~,2f"
-                      page-width page-height)
-              "-dEPSCrop"))
+           ;; ps-page-count returns 0 for EPS files
+           (if (zero? page-count)
+               "-dEPSCrop"
+               (format #f "-dDEVICEWIDTHPOINTS=~,2f -dDEVICEHEIGHTPOINTS=~,2f"
+                       page-width page-height)))
          (cmd (ly:format "~a\
  ~a\
  ~a\