]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' into jneeman
authorJoe Neeman <joeneeman@gmail.com>
Wed, 4 Jul 2007 09:32:22 +0000 (19:32 +1000)
committerJoe Neeman <joeneeman@gmail.com>
Wed, 4 Jul 2007 09:32:22 +0000 (19:32 +1000)
214 files changed:
Documentation/GNUmakefile
Documentation/TRANSLATION
Documentation/de/index.html.in
Documentation/de/user/advanced-notation.itely
Documentation/de/user/basic-notation.itely
Documentation/de/user/changing-defaults.itely
Documentation/de/user/converters.itely
Documentation/de/user/instrument-notation.itely
Documentation/de/user/introduction.itely
Documentation/de/user/lilypond-book.itely
Documentation/de/user/lilypond.tely
Documentation/de/user/literature.itely
Documentation/de/user/macros.itexi
Documentation/de/user/non-music.itely
Documentation/de/user/notation-appendices.itely
Documentation/de/user/programming-interface.itely
Documentation/de/user/running.itely
Documentation/de/user/scheme-tutorial.itely
Documentation/de/user/spacing.itely
Documentation/de/user/templates.itely
Documentation/es/index.html.in
Documentation/es/user/advanced-notation.itely
Documentation/es/user/basic-notation.itely
Documentation/es/user/changing-defaults.itely
Documentation/es/user/cheatsheet.itely
Documentation/es/user/converters.itely
Documentation/es/user/instrument-notation.itely
Documentation/es/user/lilypond-book.itely
Documentation/es/user/lilypond.tely
Documentation/es/user/literature.itely
Documentation/es/user/non-music.itely
Documentation/es/user/notation-appendices.itely
Documentation/es/user/programming-interface.itely
Documentation/es/user/running.itely
Documentation/es/user/scheme-tutorial.itely
Documentation/es/user/spacing.itely
Documentation/es/user/templates.itely
Documentation/fr/index.html.in
Documentation/fr/user/GNUmakefile
Documentation/fr/user/advanced-notation.itely
Documentation/fr/user/basic-notation.itely
Documentation/fr/user/changing-defaults.itely
Documentation/fr/user/converters.itely
Documentation/fr/user/instrument-notation.itely
Documentation/fr/user/introduction.itely
Documentation/fr/user/lilypond-book.itely
Documentation/fr/user/lilypond.tely
Documentation/fr/user/literature.itely
Documentation/fr/user/macros.itexi
Documentation/fr/user/non-music.itely
Documentation/fr/user/notation-appendices.itely
Documentation/fr/user/programming-interface.itely
Documentation/fr/user/running.itely
Documentation/fr/user/scheme-tutorial.itely
Documentation/fr/user/spacing.itely
Documentation/fr/user/templates.itely
Documentation/fr/user/tutorial.itely
Documentation/fr/user/working.itely
Documentation/po/de.po
Documentation/po/es.po
Documentation/po/fr.po
Documentation/po/lilypond-doc.pot
Documentation/user/basic-notation.itely
Documentation/user/instrument-notation.itely
Documentation/user/introduction.itely
Documentation/user/lilypond-book.itely
Documentation/user/lilypond.tely
Documentation/user/music-glossary.tely
Documentation/user/tutorial.itely
Documentation/user/tweaks.itely
GNUmakefile.in
THANKS
buildscripts/add_html_footer.py
buildscripts/makelsr.py
buildscripts/mass-link.py [new file with mode: 0644]
buildscripts/texi-gettext.py [new file with mode: 0644]
buildscripts/update-snippets.py [new file with mode: 0644]
buildscripts/www_post.py
input/lsr/GNUmakefile
input/lsr/LSR.ly
input/lsr/engravers/engravers-one-by-one.ly [new file with mode: 0644]
input/lsr/engravers/removing-time-signature-and-bar-lines.ly [new file with mode: 0644]
input/lsr/expressive/attaching-an-arpeggio-to-different-voices-inside-a-same-staff.ly [new file with mode: 0644]
input/lsr/instrument-specific/AAA-intro.ly [deleted file]
input/lsr/instrument-specific/GNUmakefile [deleted file]
input/lsr/instrument-specific/SConscript [deleted file]
input/lsr/instrument/AAA-intro.ly [new file with mode: 0644]
input/lsr/instrument/GNUmakefile [new file with mode: 0644]
input/lsr/instrument/SConscript [new file with mode: 0644]
input/lsr/instrument/adding-drum-parts.ly [new file with mode: 0644]
input/lsr/non-music/AAA-intro.ly [deleted file]
input/lsr/non-music/GNUmakefile [deleted file]
input/lsr/non-music/SConscript [deleted file]
input/lsr/non-music/clip-systems.ly [deleted file]
input/lsr/non-music/toc.ly [deleted file]
input/lsr/nonmusic/AAA-intro.ly [new file with mode: 0644]
input/lsr/nonmusic/GNUmakefile [new file with mode: 0644]
input/lsr/nonmusic/SConscript [new file with mode: 0644]
input/lsr/nonmusic/all-headers.ly [new file with mode: 0644]
input/lsr/nonmusic/clip-systems.ly [new file with mode: 0644]
input/lsr/nonmusic/toc.ly [new file with mode: 0644]
input/lsr/other/adding-drum-parts.ly [deleted file]
input/lsr/other/all-headers.ly [deleted file]
input/lsr/other/engravers-one-by-one.ly [deleted file]
input/lsr/other/removing-time-signature-and-bar-lines.ly [deleted file]
input/lsr/pitch/combining-two-parts-on-the-same-staff.ly [new file with mode: 0644]
input/lsr/pitch/forced-and-cautionary-accidentals.ly [new file with mode: 0644]
input/lsr/pitch/preventing-stem-extension.ly [new file with mode: 0644]
input/lsr/pitch/rest-styles.ly [new file with mode: 0644]
input/new/GNUmakefile
input/new/instrument-specific/AAA-intro.ly [deleted file]
input/new/instrument-specific/GNUmakefile [deleted file]
input/new/instrument-specific/SConscript [deleted file]
input/new/instrument/AAA-intro.ly [new file with mode: 0644]
input/new/instrument/GNUmakefile [new file with mode: 0644]
input/new/instrument/SConscript [new file with mode: 0644]
input/new/non-music/AAA-intro.ly [deleted file]
input/new/non-music/GNUmakefile [deleted file]
input/new/non-music/SConscript [deleted file]
input/new/non-music/clip-systems.ly [deleted file]
input/new/non-music/toc.ly [deleted file]
input/new/nonmusic/AAA-intro.ly [new file with mode: 0644]
input/new/nonmusic/GNUmakefile [new file with mode: 0644]
input/new/nonmusic/SConscript [new file with mode: 0644]
input/new/nonmusic/clip-systems.ly [new file with mode: 0644]
input/new/nonmusic/toc.ly [new file with mode: 0644]
input/regression/display-lily-tests.ly
input/regression/repeat-fold.ly [deleted file]
input/regression/repeat-unfold.ly
lily/all-font-metrics-scheme.cc
lily/axis-group-interface-scheme.cc
lily/book-scheme.cc
lily/context-scheme.cc
lily/dimensions-scheme.cc
lily/dispatcher-scheme.cc
lily/duration-scheme.cc
lily/engraver.cc
lily/fall-engraver.cc [deleted file]
lily/file-name-map.cc
lily/folded-repeat-iterator.cc [deleted file]
lily/font-config-scheme.cc
lily/font-metric-scheme.cc
lily/function-documentation.cc
lily/general-scheme.cc
lily/global-context-scheme.cc
lily/grob-array-scheme.cc
lily/grob-pq-engraver.cc
lily/grob-property.cc
lily/grob-scheme.cc
lily/identifier-smob.cc
lily/include/folded-repeat-iterator.hh [deleted file]
lily/include/grob-pitch-tuple.hh [deleted file]
lily/include/lily-proto.hh
lily/input-scheme.cc
lily/item-scheme.cc
lily/lily-lexer-scheme.cc
lily/lily-parser-scheme.cc
lily/lilypond-key.cc [deleted file]
lily/ly-module.cc
lily/module-scheme.cc
lily/moment-scheme.cc
lily/music-function-scheme.cc
lily/music-scheme.cc
lily/note-head-scheme.cc
lily/object-key.cc [deleted file]
lily/open-type-font-scheme.cc
lily/optimal-page-breaking.cc
lily/output-def-scheme.cc
lily/page-breaking-scheme.cc
lily/page-breaking.cc
lily/pango-font-scheme.cc
lily/pango-select-scheme.cc
lily/paper-book-scheme.cc
lily/paper-outputter-scheme.cc
lily/paper-score-scheme.cc
lily/performance-scheme.cc
lily/pfb-scheme.cc
lily/pitch-scheme.cc
lily/prob-scheme.cc
lily/profile.cc
lily/program-option-scheme.cc
lily/scale.cc
lily/scheme-listener-scheme.cc
lily/score-scheme.cc
lily/script-column.cc
lily/simple-closure.cc
lily/simple-spacer-scheme.cc
lily/smobs.cc
lily/source.cc [deleted file]
lily/spanner-scheme.cc
lily/stencil-scheme.cc
lily/stream-event-scheme.cc
lily/system-scheme.cc
lily/text-interface.cc
lily/text-metrics.cc
lily/translator-ctors.cc
lily/translator-scheme.cc
lily/translator.cc
make/doclang-rules.make
make/doclang-targets.make
make/doclang-vars.make
po/es.po
po/nl.po
scm/define-music-display-methods.scm
scm/define-music-properties.scm
scm/define-music-types.scm
scm/document-backend.scm
scm/document-functions.scm
scm/document-music.scm
scm/document-translation.scm
scm/documentation-generate.scm
scm/documentation-lib.scm
tex/texinfo.cnf [deleted file]
tex/texinfo.tex

index 84466887e07a1552f4e3dd56525fe101b94904ff..a2b1730e02d3c34b0c1d7deded1ff606de739a08 100644 (file)
@@ -30,6 +30,9 @@ txt-to-html:
 po-update:
        make -C po po-update
 
+all-translations-update: po-update
+       $(foreach lang, $(LANGS), make ISOLANG=$(lang) skeleton-update snippet-update &&) true
+
 ifneq ($(ISOLANG),)
 new-lang:
        @if (( $$(file -b $(ISOLANG)) == directory )) 2>/dev/null; \
@@ -52,4 +55,7 @@ check-translation:
 skeleton-update:
        $(PYTHON) $(buildscript-dir)/texi-langutils.py -d $(outdir) -b "UNTRANSLATED NODE: IGNORE ME" -l $(ISOLANG) --skeleton ../user/lilypond.tely
        $(PYTHON) $(buildscript-dir)/texi-skeleton-update.py $(ISOLANG)/user $(outdir)
+
+snippet-update:
+       $(PYTHON) $(buildscript-dir)/update-snippets.py user $(ISOLANG)/user '*.itely'
 endif
index a34cd4b0ecc48e63c0779fb2eef7b6ac4a10fbb2..54da776699b14016f993a0248041626ad38d4250 100644 (file)
@@ -5,7 +5,7 @@ SOURCES
 
 The sources live in a GIT repository.  Git 1.4.4.1 or newer is
 required, and Git 1.5.x is highly recommended.  To get a fresh version
-run
+of LilyPond sources run
 
     mkdir lily ; cd lily
     git init-db
@@ -29,6 +29,16 @@ Working on LilyPond documentation translations requires:
     * gettext
 
 
+WHICH DOCUMENTATION CAN BE TRANSLATED
+
+The makfiles and scripts infrastructure currently supports translation
+of the following documentation:
+
+    * documentation index (HTML)
+    * user manual -- Texinfo source, PDF and HTML output; Info output
+might be added if there is enough demand for it.
+
+
 STARTING A TRANSLATION IN A NEW LANGUAGE
 
 At top of the source directory, do
@@ -56,6 +66,7 @@ buildscripts/langdefs.py.
 See next section about what files to translate and the following
 detailed instructions after the next section.
 
+
 FILES TO BE TRANSLATED
 
 All the following files are in Documentation/
@@ -170,6 +181,8 @@ translated directly in the Texinfo source
 As a notable exception, the second argument 'Bar baz' of
 @ref{Foo,'Bar baz',,info-file} should be translated.
 
+@uref's names are to be translated.
+
 In any section which looks like
 
 @menu
@@ -181,13 +194,27 @@ In any section which looks like
 the node names (nodeN) are NOT to be translated, whereas extra title
 information (thingN) is.
 
-
 Every node name or section title must from now on be translated
 separately in a .po file (just as well as LilyPond output messages).
 This .po file should be in Documentation/po.
 
-Make sure to keep *verbatim* copies of music snippets (in @lilypond blocs).
-@example blocs do not have to be verbatim copies, e.g. variable names,
+
+Please keep verbatim copies of music snippets (in @lilypond blocs).
+However, some music snippets containing text that shows in the
+rendered music, and sometimes translating this text really helps the
+user to understand the documentation; in this case, and only in this
+case, you may as an exception translate text in the music snippet, and
+then you must add a line immediately before the @lilypond block,
+beginning with
+
+@c KEEP LY
+
+Otherwise the music snippet would be reset to the same contents as the
+English version at next 'make snippet-update' run (see UPDATING A
+TRANSLATION below).
+
+
+@example blocs need not be verbatim copies, e.g. variable names,
 file names and comments should be translated.
 
 Index entries (@cindex and so on) should be translated.
@@ -213,9 +240,9 @@ replace 'make' with 'make -C Documentation') and run
     make ISOLANG=<MY_LANGUAGE> check-translation
 
 This presents a diff of the original files since the most recent
-revision of the translation.  To check a single page, run
+revision of the translation.  To check a single file, run
 
-    buildscripts/check-translation.py Documentation/user/<MY-LANGUAGE>/foo/bar.itely
+    python buildscripts/check_translation.py Documentation/<MY-LANGUAGE>/user/foo.itely
 
 
 
@@ -223,7 +250,7 @@ UPDATE A TRANSLATION
 
 Texinfo skeleton files, i.e. .itely files not yet translated,
 containing only the Texinfo structure can be updated automatically:
-whenever 'make check-translation' shows that such files shouldbe
+whenever 'make check-translation' shows that such files should be
 updated, run from Documentation
 
     make ISOLANG=<MY_LANGUAGE> skeleton-update
@@ -233,6 +260,24 @@ Documentation or Documentation/po)
 
     make po-update
 
+Updating music snippets can quickly become cumbersome, as most
+snippets should be identical in all languages.  Fortunately, there is
+a script than can do this odd job for you (run from Documentation):
+
+    make ISOLANG=<MY_LANGUAGE> snippet-update
+
+This script overwrites music snippets in <MY_LANGUAGE>/user/every.itely
+with music snippets from user/every.itely.  It ignores skeleton files,
+and keeps intact music snippets preceded with a line starting with '@c
+KEEP LY'; it reports an error for each .itely that has not the same
+music snippet count in both languages.
+
+Finally, a command runs the three update processes above for all
+enabled languages (from Documentation):
+
+    make all-translations-update
+
+This command is mainly intended to be used by the Translation meister.
 
 
 TECHNICAL BACKGROUND
@@ -240,12 +285,18 @@ TECHNICAL BACKGROUND
 A number of Python scripts handle a part of the documentation
 translation process:
 
-langdefs.py  -- language definitions
-check_translation.py  -- show diff to update a translation
-texi-langutils.py  -- quickly and dirtily parse Texinfo files to
+langdefs.py  -- language definitions
+check_translation.py  -- show diff to update a translation
+texi-langutils.py  -- quickly and dirtily parse Texinfo files to
 make message catalogs and Texinfo skeleton files
-texi-skeleton-update.py -- update Texinfo skeleton files
-html-gettext.py -- translate node names, section titles and cross
+texi-skeleton-update.py -- update Texinfo skeleton files
+html-gettext.py -- translate node names, section titles and cross
 references in HTML files generated by makeinfo
-add_html_footer.py (module called by www_post.py) -- add footer and
+add_html_footer.py (module called by www_post.py) -- add footer and
 tweak links in HTML pages
+* texi-gettext.py -- gettext node names, section titles and references
+before calling texi2pdf
+* mass-link.py -- link or symlink files between English documentation
+and documentation in other languages
+* update-snippets.py -- synchronize ly snippets with those from
+English docs
index 72e2cf5267a5158cd755391b578d99b77cbd275c..12e9f775464ff4062d743f5c5f7080736ab765ae 100644 (file)
@@ -73,7 +73,7 @@
            <li>
 <a class="title" href="user/lilypond/index.html">Benutzerhandbuch</a>
 (auch auf <a class="title" href="user/lilypond-big-page.html">einer gro&szlig;en Seite</a>, ca. 4&thinsp;Mb, oder
-als <a class="title" href="user/lilypond.pdf">PDF</a>)
+als <a class="title" href="user/lilypond.de.pdf">PDF</a>)
 
      <br>(Alles &uuml;ber LilyPond)
      
index 62ade263b7c662dfc2c65dd9ef1fb1fc0f883878..79d2b615fd860e08155ff0b605dafc3994fe25a9 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c946d2870fa81d9f07f763762d512501273d65a6
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 46cfeb7e8f7cf51c78030f173d4f2a0e46dd55be..8dc746f5c6cd9dad931a57b6dae2b03ce3f65554 100644 (file)
@@ -1990,7 +1990,7 @@ die @internalsref{systemStartDelimiter}-Eigenschaft bestimmt.
 Anfangsklammern können tief einander verschachtelt werden.
 
 @lilypond[quote,ragged-right,verbatim]
-\new StaffGroup 
+\new StaffGroup
 \relative <<
   \set StaffGroup.systemStartDelimiterHierarchy
     = #'(SystemStartSquare (SystemStartBracket a (SystemStartSquare b)) d)
@@ -3531,9 +3531,8 @@ c4 c4
 
 Programmreferenz: @internalsref{VoltaBracket},
 @internalsref{RepeatedMusic},
-@internalsref{VoltaRepeatedMusic},
-@internalsref{UnfoldedRepeatedMusic} und
-@internalsref{FoldedRepeatedMusic}.
+@internalsref{VoltaRepeatedMusic} und
+@internalsref{UnfoldedRepeatedMusic}.
 
 
 @node Tremolo repeats
index e3d6cf7654f31f0be8a97fd7b376c2cfd86503d7..11b29f127567b4b870d73dfbc3943836b7900e0f 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c946d2870fa81d9f07f763762d512501273d65a6
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index fadf31af0f12bdfa5347a845b1cdae9b8182befb..d97c846b5134d016b9f4422dc37d08d91511db10 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c946d2870fa81d9f07f763762d512501273d65a6
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 6e05a22d63e5f2bfa98285c7fa634a31d43d7db4..4a467995d89f6e95e8522dfd5643294ebc9cf808 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c946d2870fa81d9f07f763762d512501273d65a6
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 2166ddd2cfee0112c0c9e71bec28aeab8a5e489b..be65ef5ffc3b087d7e7f0539400bfd9a327c6d32 100644 (file)
@@ -591,7 +591,7 @@ werden kann, haben wir per Definition nur noch den reinen Inhalt. Unser
 Format dient als die formale Definition eines Musiktextes.
 
 Die Syntax ist gleichzeitig die Benutzerschnittstelle bei LilyPond, 
-darum soll sie einfach zu schreiben sein; z.B. bedeutet
+darum soll sie einfach zu schreiben sein; z. B. bedeutet
 
 @example
 c'4 d'8
index d72b2b62ac9c17094530c1603a39f81e5385c559..7d76a01d433370e6bad05683f52827314e69c814 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c946d2870fa81d9f07f763762d512501273d65a6
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 9f18b005ff93648a560b2db315f8d044eb9b7ce6..27ebf9a6bbec3ed848def07f7be1b908dbbf4077 100644 (file)
@@ -7,8 +7,14 @@
 @end ignore
 @setfilename lilypond.info
 @settitle GNU LilyPond
+
 @iftex
 @afourpaper
+@c don't replace quotes with directed quotes
+@tex
+\gdef\SETtxicodequoteundirected{Foo}
+\gdef\SETtxicodequotebacktick{Bla}
+@end tex
 @end iftex
 
 @c  Keep this here, since it pertains to the direntry below.
@@ -55,9 +61,12 @@ Distributions will want to install lilypond.info in postinstall, doing:
 
 @ifhtml
 Dieses Dokument ist auch als
-@uref{source/Documentation/user/lilypond.pdf,PDF} verfügbar.
+@uref{source/Documentation/user/lilypond.de.pdf,PDF} verfügbar.
 @end ifhtml
 
+@documentlanguage de
+@documentencoding UTF-8
+
 
 @c  This produces the unified index
 @syncodeindex fn cp
@@ -66,9 +75,6 @@ Dieses Dokument ist auch als
 @syncodeindex tp cp
 @syncodeindex vr cp
 
-@documentlanguage de
-@documentencoding utf-8
-
 
 @finalout
 
@@ -81,6 +87,14 @@ Dieses Dokument ist auch als
 
 Copyright @copyright{} 1999--2007 bei den Autoren
 
+@emph{The translation of the following copyright notice is provided
+for courtesy to non-English speakers, but only the notice in English
+legally counts.}
+
+@emph{Die Übersetzung der folgenden Lizenzanmerkung ist zur Orientierung 
+für Leser, die nicht Englisch sprechen. Im rechtlichen Sinne ist aber 
+nur die englische Version gültig.}
+
 @quotation
 Es ist erlaubt, dieses Dokument unter den Bedingungen der
 GNU Free Documentation Lizenz (Version 1.1 oder
@@ -90,6 +104,15 @@ zu verändern. Eie Kopie der Lizenz ist im Abschnitt ``GNU
 Free Documentation License'' angefügt.
 @end quotation
 
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end quotation
+
 @vskip 20pt
 
 @lilypond[ragged-right]
index 00e6ab75d6c734049123042150180540d3747ffa..166f46002ab402e6b7d9935c3f615c5f78db29ea 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c946d2870fa81d9f07f763762d512501273d65a6
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 6aa222e3139d91969e190e7a8ba135c1aabda32b..bf7aa7ac00e586c43321b6afb2ff1ed8e80ee2ae 100644 (file)
@@ -250,6 +250,7 @@ internals document, @internalsref{\NAME\}
 user manual, @internalsref{\NAME\}
 @end macro
 
+@ignore
 @tex
 % from german.sty
 \def\allowhyphens{%
@@ -298,15 +299,17 @@ user manual, @internalsref{\NAME\}
     ``%
     \kern.07em}}
 @end tex
+@end ignore
 
+@c FIXME
 @c to get decent quotes in `foo'
 @macro q{TEXT}
-@glq\TEXT\@grq
+`\TEXT\'
 @end macro
 
 @c to get decent quotes in ``foo''
 @macro qq{TEXT}
-@glqq\TEXT\@grqq
+``\TEXT\''
 @end macro
 
 @end iftex
index b91f801f71a09bba335fe5cc0eff8757a29f1f2c..512786bc4e84a8c92d993efa2bf2ceea67ccfb35 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c946d2870fa81d9f07f763762d512501273d65a6
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
@@ -78,6 +78,7 @@ UNTRANSLATED NODE: IGNORE ME
 @menu 
 * Creating titles::
 * Custom titles::
+* Reference to page numbers::
 * Table of contents::
 @end menu 
 @node Creating titles
@@ -90,6 +91,11 @@ UNTRANSLATED NODE: IGNORE ME
 
 UNTRANSLATED NODE: IGNORE ME
 
+@node Reference to page numbers
+@subsection Reference to page numbers
+
+UNTRANSLATED NODE: IGNORE ME
+
 @node Table of contents
 @subsection Table of contents
 
index 9a0f9c409383ddcb1e59a2e1d0da02fd2bbb72e3..5cd75ae3e6c73adeb1a0f4782559fa4e8751840f 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c946d2870fa81d9f07f763762d512501273d65a6
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 06be6e0abc03e34800869a60f0a96beb0b0a5489..37c878434bb41196e9a8d539b566335fba3f0ab7 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c946d2870fa81d9f07f763762d512501273d65a6
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 49a6b7a2ea1f63b1cf6cf55932bfeccfdd57588b..59f3f1a548d7217ba9254c3032fc4609ebd0b93c 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c946d2870fa81d9f07f763762d512501273d65a6
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 9cd9fefe8e0c862d371fd1c6f5c3ba51e6b56efb..a34cd46cef79cbc9c40cdc8267b4fa4d6637ef41 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c946d2870fa81d9f07f763762d512501273d65a6
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 125eb905924ab8d120e515f6a05cb790ab2a3b3c..714804edad9ae202bec2c8358012955a4a715e25 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c946d2870fa81d9f07f763762d512501273d65a6
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index b0ff9516e24a4906ddaf390c98e80abb2814a854..83c09724ae5334e981cded0b246698d804c6a29c 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: de -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c946d2870fa81d9f07f763762d512501273d65a6
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 7821d3eee43405a4e112b5cc4007a07d0748d87f..f42dffde4f436beb5119fb278166dcab499609d8 100644 (file)
@@ -73,7 +73,7 @@
            <li>
 <a class="title" href="user/lilypond/index.es.html">Manual del usuario</a> [parcialmente traducido]<br>
 (en <a class="title" href="user/lilypond-big-page.html">una sola página</a> [en inglés] ~ 4 Mb, <br>
-y en <a class="title" href="user/lilypond.pdf">PDF</a> [en inglés])
+y en <a class="title" href="user/lilypond.es.pdf">PDF</a>)
 
      <br>(todo sobre LilyPond)
      
index ae79928a676d4a9b6919bf80921203dffc509316..9c0c603e18cacd9ab0426a009789e601d31081b1 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c9b08ba86f4c59228b92e2357b2a0bc1c62c29dc
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 7261394d362138b2367bcac62eb37e58d83dc272..301a3f0d6348046e95929736aafd4df8b9bcd21f 100644 (file)
@@ -3355,9 +3355,8 @@ c4 c4
 
 Referencia del programa: @internalsref{VoltaBracket},
 @internalsref{RepeatedMusic},
-@internalsref{VoltaRepeatedMusic},
-@internalsref{UnfoldedRepeatedMusic} y
-@internalsref{FoldedRepeatedMusic}.
+@internalsref{VoltaRepeatedMusic} y
+@internalsref{UnfoldedRepeatedMusic}.
 
 
 @node Tremolo repeats
index 43f4fe1e8a39793ade56bd1d394dddcdaa5a37c1..fc99a9c08a674e7a9c65911a5112c61175cc9885 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c9b08ba86f4c59228b92e2357b2a0bc1c62c29dc
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index e4704a195bf93aa51ad606d47a9bb819581ef78f..bd4d973672dbccc47d409e21b6ac5546974ce619 100644 (file)
@@ -155,8 +155,14 @@ a8-[ b-]
 @tab más pentagramas
 @tab
 @lilypond[fragment]
-<< \new Staff { c'1 }
-  \new Staff { c'1 } >>
+<< \new Staff {
+     \set Staff.implicitTimeSignatureVisibility = #all-invisible
+     c'1
+   }
+   \new Staff {
+     \set Staff.implicitTimeSignatureVisibility = #all-invisible
+     c'1
+   } >>
 @end lilypond
 
   
@@ -174,7 +180,7 @@ c-> c-.
 @tab
 @lilypond[fragment,relative=2]
 \set Staff.implicitTimeSignatureVisibility = #all-invisible
-c\mf c\sfz
+c2\mf c\sfz
 @end lilypond
 
 
@@ -203,6 +209,7 @@ a\> a a\!
 @tab acorde
 @tab
 @lilypond[fragment,relative=2]
+\set Staff.implicitTimeSignatureVisibility = #all-invisible
 <c e> 
 @end lilypond
 
@@ -220,6 +227,7 @@ f8 c2 d e
 @tab tresillos
 @tab
 @lilypond[relative=1,fragment]
+\set Staff.implicitTimeSignatureVisibility = #all-invisible
 \times 2/3 { f8 g a }
 @end lilypond
 
@@ -228,6 +236,7 @@ f8 c2 d e
 @tab mordentes
 @tab
 @lilypond[relative=2,fragment]
+\set Staff.implicitTimeSignatureVisibility = #all-invisible
 \context Voice { \grace b16 c4 }
 @end lilypond
 
@@ -248,6 +257,7 @@ twinkle
 @tab separador de sílabas
 @tab
 @lilypond[fragment,relative=2]
+\set Staff.implicitTimeSignatureVisibility = #all-invisible
 <<
    { g'1 g }
   \new Lyrics \lyricsto "" { twin -- kle }
@@ -258,6 +268,7 @@ twinkle
 @tab acordes
 @tab
 @lilypond[fragment,relative=2]
+\set Staff.implicitTimeSignatureVisibility = #all-invisible
 \chordmode { c:dim f:maj7 }
 @end lilypond
 
@@ -272,6 +283,7 @@ twinkle
 @tab polifonía
 @tab
 @lilypond[fragment,relative=2]
+\set Staff.implicitTimeSignatureVisibility = #all-invisible
 \context Staff <<{e f} \\ {c d}>>
 @end lilypond
 
index 210f7ad478a1452864775f134ca733f3feb359af..0629e9291b9ba9ebf9bdc82032c633aca777d5de 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c9b08ba86f4c59228b92e2357b2a0bc1c62c29dc
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 000b3670aea8562b243b001c40605af2b4bf28d0..3664cf2d3653cc9dcd245cb22230dde6a3c078a5 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c9b08ba86f4c59228b92e2357b2a0bc1c62c29dc
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 53775bf4cc88913c5e1a51910616d0dfb40f812d..3801b346e55015b9ff74f9a1b99a99c18a6cd920 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c9b08ba86f4c59228b92e2357b2a0bc1c62c29dc
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index ebce43de894ad8c7f8138a1aa8c3ca1dbf3b85bf..b13a611fb558e378a59a6b2210dacfd0531ba486 100644 (file)
@@ -7,8 +7,14 @@
 @end ignore
 @setfilename lilypond.info
 @settitle GNU LilyPond
+
 @iftex
 @afourpaper
+@c don't replace quotes with directed quotes
+@tex
+\gdef\SETtxicodequoteundirected{Foo}
+\gdef\SETtxicodequotebacktick{Bla}
+@end tex
 @end iftex
 
 @c  Keep this here, since it pertains to the direntry below.
@@ -56,9 +62,11 @@ Distributions will want to install lilypond.info in postinstall, doing:
 
 @ifhtml
 Este documento también está disponible como
-@uref{source/Documentation/user/lilypond.pdf,PDF}.
+@uref{source/Documentation/user/lilypond.es.pdf,PDF}.
 @end ifhtml
 
+@documentlanguage es
+@documentencoding UTF-8
 
 @c  This produces the unified index
 @syncodeindex fn cp
@@ -67,9 +75,6 @@ Este documento también está disponible como
 @syncodeindex tp cp
 @syncodeindex vr cp
 
-@documentlanguage es
-@documentencoding utf-8
-
 @finalout
 
 @titlepage
@@ -81,6 +86,14 @@ Este documento también está disponible como
 
 Copyright @copyright{} 1999--2007 por los autores
 
+@emph{The translation of the following copyright notice is provided
+for courtesy to non-English speakers, but only the notice in English
+legally counts.}
+
+@emph{La traducción de la siguiente nota de copyright se ofrece como
+cortesía para las personas de habla no inglesa, pero únicamente la
+nota en inglés tiene validez legal.}
+
 @quotation
 Se otorga permiso para copiar, distribuir y/o modificar este documento
 bajo los términos de la Licencia de Documentación Libre de GNU, versión 1.1
@@ -90,6 +103,15 @@ Se incluye una copia de esta licencia dentro de la sección titulada ``Licencia
 de Documentación Libre de GNU''.
 @end quotation
 
+@quotation
+Permission is granted to copy, distribute and/or modify this document
+under the terms of the GNU Free Documentation License, Version 1.1
+or any later version published by the Free Software Foundation;
+with no Invariant Sections.
+A copy of the license is included in the section entitled ``GNU
+Free Documentation License''.
+@end quotation
+
 @vskip 20pt
 
 @lilypond[ragged-right]
index ca05e82cf06cf6edc35e0749e458a71f648c8437..4fe257433a062edd91507c71fe75c964c6b5c7e1 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c9b08ba86f4c59228b92e2357b2a0bc1c62c29dc
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 44c1fe627edf58088e16aa6c8a9b009668930bd2..64e30e20a18363050f6442445e002a9d4542f757 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c9b08ba86f4c59228b92e2357b2a0bc1c62c29dc
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
@@ -78,6 +78,7 @@ UNTRANSLATED NODE: IGNORE ME
 @menu 
 * Creating titles::
 * Custom titles::
+* Reference to page numbers::
 * Table of contents::
 @end menu 
 @node Creating titles
@@ -90,6 +91,11 @@ UNTRANSLATED NODE: IGNORE ME
 
 UNTRANSLATED NODE: IGNORE ME
 
+@node Reference to page numbers
+@subsection Reference to page numbers
+
+UNTRANSLATED NODE: IGNORE ME
+
 @node Table of contents
 @subsection Table of contents
 
index 1d9c20fb21bae2ad951ad4a83e7052e2a5b796eb..108d3492fef700141dbbc21740c644e50899217d 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c9b08ba86f4c59228b92e2357b2a0bc1c62c29dc
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index b1ba88a65b3a3577e8a74d1e49f08dcade6489c4..821355af2aabaf872368c0d410f9870a6a714ab1 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c9b08ba86f4c59228b92e2357b2a0bc1c62c29dc
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 7746a346e4dd682dc0f463d8c58bf21669cbdf9a..cd8b12bf6ddb7b70ac757b1b272df0a2bfd666f1 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c9b08ba86f4c59228b92e2357b2a0bc1c62c29dc
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 03c02daa17e86f93f5bca8f0ad9c35f34f2dcec4..84ff8683d05e0523052b662f5d73764f1b7da176 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c9b08ba86f4c59228b92e2357b2a0bc1c62c29dc
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index bd0d32ba2c827ac6c8ecb6362655cbb2a0f2bd65..078df77e814ed730c9c20b43cbbd9121e38f939a 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c9b08ba86f4c59228b92e2357b2a0bc1c62c29dc
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 88e70044c008ce0b62896440bca934692134131b..ae75c6a5d9d15a55e1a20eb7ecb9c131eaded7e4 100644 (file)
@@ -1,7 +1,7 @@
 @c -*- coding: utf-8; mode: texinfo; documentlanguage: es -*-
 @c This file is part of lilypond.tely
 @ignore
-    Translation of GIT committish: c9b08ba86f4c59228b92e2357b2a0bc1c62c29dc
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 6c29d0dbaa70875e3810f65bba15049bb53ba233..795a15ec816c51d1418cca4850b70c2a61985f07 100644 (file)
@@ -1,6 +1,6 @@
 <html>
 <!--
-    Translation of GIT committish: 68bd4534efe807b8b7394290ba510e97e38909d4
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
            <a class="title"
              href="user/lilypond/Tutorial.fr.html">Tutoriel</a>
              <br>&mdash; commencer ici
+           <li><a class="title" href="user/music-glossary/index.html">Glossaire</a>
+             multilingue<br>(aussi en
+             <a class="title" href="user/music-glossary-big-page.html">page unique</a>
+             ~ 1 Mb ou <a class="title" href="user/music-glossary.pdf">au format PDF</a>)
+             <br>&mdash; pour les utilisateurs non anglophones
          </ul>
          </td>
          <td class="right-column">
          <ul>
-         
-            <li>
-           <a class="title" href="topdocs/NEWS.html">Nouveautés</a>
-           <br>&mdash; changements depuis la version majeure précédente
-
             <li>
            <a class="title" href="topdocs/INSTALL.html">Installation</a>
-           <br>&mdash; comment compiler
+             <br>&mdash; comment compiler
+           <li><a class="title" href="../examples.html">Exemples</a>
+             <br>&mdash; voir quelques exemples
          </ul>
          </td>
         </tr>
           &nbsp;
          <ul>
            <li>
-<a class="title" href="user/lilypond/index.fr.html">Manuel de l'utilisateur</a>
-(partiellement traduit,<br> aussi en <a class="title"
-           href="user/lilypond-big-page.html">page unique
-           en anglais</a> ~ 4 Mb,<br>
-ou <a class="title" href="user/lilypond.pdf">au format PDF en anglais</a>)
-
-     <br>&mdash; revue de détails
-     
-<li><a class="title" href="../examples.html">Exemples</a>
-
-     <br>&mdash; voir quelques exemples
-
-<li><a class="title" href="../input/lsr/collated-files.html">Extraits de code</a>
-     <br>&mdash; petits trucs, astuces et exemples
-
- <li><a class="title" href="user/music-glossary/index.html">Glossaire</a>
-multilingue<br>(aussi en <a class="title"
- href="user/music-glossary-big-page.html">page unique</a> ~ 1 Mb ou
-<a class="title" href="user/music-glossary.pdf">au format PDF</a>)
-
-     <br>&mdash; pour les utilisateurs non anglophones
+             <a class="title" href="user/lilypond/index.fr.html">Manuel de l'utilisateur</a>
+             (partiellement traduit, aussi<br>en <a class="title"
+                               href="user/lilypond-big-page.html">page unique
+               en anglais</a> ~ 4 Mb, ou
+               <a class="title" href="user/lilypond.fr.pdf">au format PDF</a>)
+               <br>&mdash; revue de détails
+           <li>
+             <a  class="title" href="user/lilypond-internals/index.html">Référence du programme</a>
+             (en anglais, en <a class="title" href="user/lilypond-internals-big-page.html">page
+               unique</a> ~ 1 Mb)
+             <br>&mdash; définitions pour les retouches
          </ul>
          </td>
          <td valign="baseline" class="right-column">
           &nbsp;
          <ul>
-           <li>
- <a  class="title" href="user/lilypond-internals/index.html">Référence du programme</a>
- (en anglais,<br> en <a class="title" href="user/lilypond-internals-big-page.html">page unique</a> ~ 1 Mb)
-
-     <br>&mdash; définitions pour les retouches
-
-           <li>
-     <a  class="title"
-     href="../input/regression/collated-files.html">Tests de régression</a> (~ 5 Mb, <a  class="title" href="../input/regression/collated-files.pdf">au format PDF</a>, <a href="../test-results.html">comparaison</a>)
-
-     <br>&mdash; pour les développeurs
-
-
-           <li><a  class="title" href="bibliography/index.html">Bibliographie</a>
-
-     <br>&mdash; informations complémentaires
-<li><a class="title"  href="THANKS.html">Remerciements</a>
-<br>&mdash; à nos contributeurs
-
-<li><a class="title"  href="DEDICATION.html">Dédicace</a>
-
-     <br>&mdash; par Jan et Han-Wen
-
+            <li><a class="title" href="topdocs/NEWS.html">Nouveautés</a>
+             <br>&mdash; changements depuis la version majeure précédente
+           <li><a class="title" href="../input/lsr/collated-files.html">Exemples de code</a>
+             <br>&mdash; petits trucs, astuces et exemples
          </ul>
          </td>
         </tr>
-        <tr>
+       <tr>
+          <td valign="baseline" class="left-column">
+         &nbsp;
+          <ul>
+           <li><a  class="title" href="bibliography/index.html">Bibliographie</a>
+             <br>&mdash; informations complémentaires
+           <li>
+             <a class="title" href="../input/regression/collated-files.html">Tests
+               de régression</a> (~ 5 Mb,
+             <a  class="title" href="../input/regression/collated-files.pdf">au format PDF</a>,
+             <a href="../test-results.html">comparaison</a>)
+             <br>&mdash; pour les développeurs
+          </ul>
+          </td>
+          <td valign="baseline" class="right-column">
+          &nbsp;
+          <ul>
+           <li><a class="title"  href="THANKS.html">Remerciements</a>
+             <br>&mdash; à nos contributeurs
+           <li><a class="title"  href="DEDICATION.html">Dédicace</a>
+             <br>&mdash; par Jan et Han-Wen
+          </ul>
+          </td>
+        </tr>
+         <tr>
           <td valign="baseline" class="left-column">
           &nbsp;
           <ul>
index df7535a6a8401171bde22f81d50bfc839ae7d512..e492cfeb9c1166f13a2e75d8c556133bb901fc49 100644 (file)
@@ -1,6 +1,5 @@
 ISOLANG = fr
 depth = ../../..
-#STEPMAKE_TEMPLATES=tex texinfo
 LOCALSTEPMAKE_TEMPLATES = lilypond ly doclang
 include $(depth)/make/stepmake.make
 
index 3a03ade6012aa1349c21860dff8131462fdd5aa4..612855d7fe6f9c4cc43785492b217643d461f9a2 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: c622e816e641f91a5592b302a926daaa17a995f5
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 24c39bdc7141432ab82c2b627f3963429af2ae27..0927beebff15389cc804179c4fc219692f059cc0 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: ef2a56348261c657e63bfea9341bfe8e2a22f486
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -50,12 +50,12 @@ De la manière de spécifier les hauteurs de notes.
 @node Normal pitches
 @subsection Normal pitches
 
-@cindex Pitch names
-@cindex pitches
+@cindex noms de note
+@cindex hauteurs
 
 La hauteur s'écrit --- à moins de préciser une autre langue --- avec la
 notation anglaise, en utilisant les lettres @code{a} à @code{g}.
-Une gamme ascendante de do majeur s'écrit avec
+Une gamme ascendante de do majeur s'écrit
 
 @lilypond[quote,fragment,verbatim,ragged-right]
 \clef bass
@@ -74,10 +74,9 @@ c1
 @funindex '
 @funindex ,
 
-L'octave précise peut être spécifiée sous forme d'une série
-d'apostrophes @samp{'} ou d'une série de virgules @samp{,}.  Chaque
-@samp{'} hausse la note d'une octave, chaque @samp{,} baisse la note
-d'une octave.
+L'octave peut être précisée sous forme d'une série d'apostrophes
+@samp{'} ou d'une série de virgules @samp{,}.  Chaque @samp{'} hausse la
+note d'une octave, chaque @samp{,} baisse la note d'une octave.
 
 @lilypond[quote,ragged-right,fragment,verbatim]
 \clef treble
@@ -86,16 +85,16 @@ c' c'' e' g d'' d' d c
 c, c,, e, g d,, d, d c
 @end lilypond
 
-Il existe une autre méthode pour déclarer à quelle octave se situe la
-note à graver ; cette méthode demande moins de spécifications
-d'octaves (@code{'} and @code{,}).  Voir @ref{Relative octaves}.
+Il existe une autre méthode pour préciser à quelle octave se situe la
+note à graver ; cette méthode demande moins d'indications d'octaves
+(@code{'} and @code{,}) --- voir @ref{Relative octaves}.
 
 
 @node Accidentals
 @subsection Accidentals
 
-@cindex note names, Dutch
-@cindex note names, default
+@cindex noms de note, hollandais
+@cindex noms de note, par défaut
 
 Dans la notation par défaut, un dièse est formé en ajoutant @code{-is}
 après le nom de note, un bémol en ajoutant @code{-es}.  Les
@@ -108,9 +107,9 @@ a2 aisis a aeses
 @end lilypond
 
 @noindent
-Ce sont les noms de note hollandais.  En hollandais, on élide
-@code{aes} pour écrire @code{as}, mais les deux formes sont acceptées.
- De manière similaire, on accepte autant @code{es} que @code{ees}.
+Ce sont les noms de note hollandais.  En hollandais, on élide @code{aes}
+pour écrire @code{as}, mais les deux formes sont acceptées.  De manière
+similaire, on accepte aussi bien @code{es} que @code{ees}.
 
 @lilypond[fragment,quote,ragged-right,verbatim,relative=2]
 a2 as e es
@@ -126,9 +125,9 @@ a4 aes a2
 @end lilypond
 
 LilyPond interprète l'entrée @code{d e f} comme @qq{imprimer un ré
-naturel, un mi naturel et un fa naturel}, sans tenir compte de
-l'armure.  Pour plus d'information à propos de la distinction entre le
-contenu musical et sa représentation, voir @ref{Accidentals and key signatures}.
+naturel, un mi naturel et un fa naturel}, sans tenir compte de l'armure.
+Pour plus d'information à propos de la distinction entre le contenu
+musical et sa représentation, voir @ref{Accidentals and key signatures}.
 
 @lilypond[fragment,quote,ragged-right,verbatim,relative]
 \key d \major
@@ -160,22 +159,20 @@ Référence du programme : @internalsref{LedgerLineSpanner},
 @node Cautionary accidentals
 @subsection Cautionary accidentals
 
-@cindex accidental, reminder
-@cindex accidental, cautionary
-@cindex accidental, parenthesized
-@cindex reminder accidental
+@cindex altération, de précaution
+@cindex altération, entre parenthèses
+@cindex altération de précaution
 @funindex ?
-@cindex cautionary accidental
-@cindex parenthesized accidental
+@cindex altération entre parenthèses
 @funindex !
 
-Normalement, les altérations sont imprimées automatiquement, mais il
-se peut que vous vouliez les imprimer manuellement.  On peut forcer
+Normalement, les altérations sont imprimées automatiquement, mais il se
+peut que vous vouliez les imprimer manuellement.  On peut forcer
 l'impression d'une altération , dite @qq{de précaution}, en ajoutant un
-point d'exclamation @samp{!} après la hauteur de note.  Une
-altération entre parenthèses peut être obtenue en ajoutant un point
-d'interrogation @samp{?} après la hauteur de note.  Ces signes
-peuvent aussi être utilisés pour imprimer des bécarres.
+point d'exclamation @samp{!} après la hauteur de note.  Une altération
+entre parenthèses peut être obtenue en ajoutant un point d'interrogation
+@samp{?} après la hauteur de note.  Ces signes peuvent aussi être
+utilisés pour imprimer des bécarres.
 
 @lilypond[quote,ragged-right,fragment,verbatim,relative=1]
 cis cis cis! cis? c c? c! c
@@ -184,20 +181,19 @@ cis cis cis! cis? c c? c! c
 
 @seealso
 
-L'impression automatique des altérations peut être affinée de
-plusieurs manières.  Pour plus d'information, voir @ref{Automatic
-accidentals}.
+L'impression automatique des altérations peut être affinée de plusieurs
+manières.  Pour plus d'information, voir @ref{Automatic accidentals}.
 
 
 @node Micro tones
 @subsection Micro tones
 
-@cindex quarter tones
-@cindex semi-flats, semi-sharps
+@cindex quarts de ton
+@cindex demi-bémols, demi-dièses
 
-Les demi-bémols et les demi-dièses s'écrivent en ajoutant @code{-eh} et
-@code{-ih} respectivement ; ce qui suit est une séries de dos altérés
-en hauteurs croissantes.
+Les demi-bémols et les demi-dièses s'écrivent en ajoutant respectivement
+@code{-eh} et @code{-ih}. Voici une séries de dos altérés en hauteurs
+croissantes :
 
 @lilypond[verbatim,ragged-right,quote,relative=2,fragment]
 \set Staff.extraNatural = ##f
@@ -208,9 +204,9 @@ Les micro-intervalles sont aussi exportés dans le fichier MIDI.
 
 @refbugs
 
-Il n'y a pas de standards universellement acceptés pour noter le bémol
-et demi (trois quarts de ton en-dessous), donc le symbole de LilyPond
-n'est conforme à aucun standard.
+Il n'y a pas de standard universellement accepté pour noter le bémol et
+demi (qui abaisse la hauteur trois quarts de ton), donc le symbole de
+LilyPond n'est conforme à aucun standard.
 
 
 @node Note names in other languages
@@ -219,11 +215,11 @@ n'est conforme à aucun standard.
 Vous disposez de jeux prédéfinis de noms de notes pour plusieurs autres
 langues.  Pour les utiliser, incluez le fichier d'initialisation
 spécifique à la langue voulue.  Par exemple, pour les langues romanes,
-ajoutez @code{\include "italiano.ly"} au début du fichier d'entrée.
-Les fichiers de langues disponibles ainsi que les noms de notes
-utilisés sont les suivants:
+ajoutez @code{\include "italiano.ly"} au début du fichier source.  Les
+fichiers de langues disponibles ainsi que les noms de notes utilisés
+sont les suivants :
 
-@cindex note names, other languages)
+@cindex noms de note, autres langues
 @example
                        Noms de note              dièse       bémol      double          double
                                                                         dièse           bémol
@@ -251,7 +247,7 @@ Certaines musiques utilisent des microtonalités, pour lesquelles les
 altérations sont des fractions de dièse ou bémol @qq{normaux}.  Le
 tableau suivant répertorie les noms de note en quart de ton, tels que
 définis dans plusieurs fichiers linguistiques. Les préfixes @q{semi-}
-et @q{sesqui-} correspondent au @q{demi-} et @q{trois quarts }.  
+et @q{sesqui-} correspondent au @q{demi-} et @q{trois demis}.  
 À noter qu'aucune définition n'existe à ce jour pour le norvégien, le
 suédois, le catalan et l'espagnol.
 
@@ -280,8 +276,8 @@ espanol.ly     do  re  mi  fa  sol la  sib si
 @node Relative octaves
 @subsection Relative octaves
 
-@cindex Relative
-@cindex Relative octave specification
+@cindex relatif
+@cindex indication d'octave relative
 @funindex \relative
 
 On spécifie les octaves en ajoutant @code{'} et @code{,} aux noms de
@@ -496,7 +492,7 @@ notes réelles), on utilisera un deuxième @code{transpose}
 
 Référence du programme : @internalsref{TransposedMusic}.
 
-Exemple : @inputfileref{input/@/test,smart@/-transpose@/.ly}.
+Exemple : @lsr{scheme,transpose-pitches-with-minimum-accidentals.ly}.
 
 
 @refbugs
@@ -963,7 +959,7 @@ combien de temps les mesures sont décalées.
 
 Si vous voulez permettre le saut de ligne aux barres de mesure où
 @internalsref{Completion_heads_engraver} divise les notes, vous devez
-aussi enlever @internalsref{Forbid_line_breaks_engraver}.
+aussi enlever @internalsref{Forbid_line_break_engraver}.
 
 
 @refbugs
@@ -1268,10 +1264,10 @@ croche, en définissant @code{merge-differently-headed}
 
 @lilypond[quote,ragged-right,fragment,relative=2,verbatim]
 \new Voice << {
- c8 c4.
- \override Staff.NoteCollision
-   #'merge-differently-headed = ##t
-c8 c4.  } \\ { c2 c2 } >>
 c8 c4.
 \override Staff.NoteCollision
+    #'merge-differently-headed = ##t
+c8 c4. } \\ { c2 c2 } >>
 @end lilypond
 
 LilyPond empile aussi les silences à l'opposé des
@@ -1647,7 +1643,7 @@ position.
 Référence du programme : @internalsref{TimeSignature}, and
 @internalsref{Timing_translator}.
 
-Exemples : @inputfileref{input/@/test,compound@/-time@/.ly}.
+Exemples : @lsr{contemporary,compound-time-signature.ly}.
 
 
 @refbugs
@@ -1768,7 +1764,7 @@ Dans une partition écrite sur plusieurs portées, la commande
 @code{\bar} placée sur une portée s'appliquera automatiquement à
 toutes les portées. Les barres de mesure que l'on obtient alors sont
 d'un seul tenant sur les portées d'un @code{StaffGroup}, d'un
-@code{PianoStaff}, ou d'un @code{ChoirStaff}.
+@code{PianoStaff}, ou d'un @code{GrandStaff}.
 
 @lilypond[quote,ragged-right,fragment,verbatim]
 <<
@@ -1927,13 +1923,30 @@ s'agit de l'assemblage par défaut.
 
 @seealso
 
-
 Pour les barres de mesure au début de chaque système, voir
 @internalsref{SystemStartBar}, @internalsref{SystemStartBrace}, et
 @internalsref{SystemStartBracket}.  Dans chaque contexte, seul l'un de
 ces styles est utilisé, et c'est la propriété
 @internalsref{systemStartDelimiter} qui détermine lequel.
 
+@commonprop
+
+Les accolades et crochets délimitant les systèmes peuvent être imbriqués
+en profondeur,
+
+@lilypond[quote,ragged-right,verbatim]
+\new StaffGroup
+\relative <<
+  \set StaffGroup.systemStartDelimiterHierarchy
+    = #'(SystemStartSquare (SystemStartBracket a (SystemStartSquare b)) d)
+  \new Staff { c1 }
+  \new Staff { c1 }
+  \new Staff { c1 }
+  \new Staff { c1 }
+  \new Staff { c1 }
+>>
+@end lilypond
+
 
 @node Staff symbol
 @subsection Staff symbol
@@ -1950,9 +1963,9 @@ nommé @code{staff symbol}.
 L'aspect du @code{staff symbol} peut être modifié selon différentes
 propriétés, telles que le nombre de lignes, leur épaisseur, ou leur
 éloignement. Vous en trouverez des exemples dans
-@inputfileref{input/@/test,staff@/-lines@/.ly}
+@lsr{staff,changing-the-number-of-lines-in-a-staff.ly}
 et
-@inputfileref{input/@/test,staff@/-size@/.ly}.
+@lsr{staff,changing-the-staff-size.ly}.
 
 
 De plus, les portées peuvent commencer et s'arrêter où l'on veut,
@@ -1986,10 +1999,7 @@ comme sur l'exemple suivant :
 
 Référence du programme : @internalsref{StaffSymbol}.
 
-D'autres exemples : @inputfileref{input/@/test,staff@/-lines@/.ly},
-@inputfileref{input/@/test@/,ossia.ly},
-@inputfileref{input/@/test,staff@/-size@/.ly},
-@lsr{staff,staff-line-positions.ly}
+D'autres exemples : @lsrdir{staff}.
 
 @node Writing music in parallel
 @subsection Writing music in parallel
@@ -2012,6 +2022,47 @@ On peut écrire plusieurs voix de façon entremêlée :
 >>
 @end lilypond
 
+Ceci fonctionne bien avec la musique pour piano :
+
+@lilypond[quote,verbatim]
+music = {
+  \key c \major
+  \time 4/4
+  \parallelMusic #'(voiceA voiceB voiceC voiceD) {
+    % Bar 1
+    r8  g'16[ c''] e''[ g' c'' e''] r8  g'16[ c''] e''[ g' c''
+e''] |
+    c'2                                 c'2 |
+    r8  a16[ d'] f'[ a d' f']       r8  a16[ d'] f'[ a d' f'] |
+    c2                                  c2 |
+
+    % Bar 2
+    a'8 b'      c'' d''    e'' f''    g'' a'' |
+    d'4         d'         d'         d' |
+    c16 d e f   d e f g    e f g a    f g a b |
+    a,4         a,4        a,4        a,4 |
+
+    % Bar 3 ...
+  }
+}
+
+\score {
+  \new PianoStaff <<
+    \music
+    \new Staff <<
+      \voiceA \\
+      \voiceB
+    >>
+    \new Staff {
+      \clef bass
+      <<
+        \voiceC \\
+        \voiceD
+      >>
+    }
+  >>
+}
+@end lilypond
 
 
 @node Connecting notes
@@ -2104,7 +2155,7 @@ r <c e g>\repeatTie
 @commonprop
 
 
-Les liaisons de tenues servent parfois à rendre un accord arpégé. Dans
+Les liaisons de tenue servent parfois à rendre un accord arpégé. Dans
 ce cas, les notes liées ne sont pas toutes l'une contre l'autre. Il
 faut alors définir comme vraie (@q{t} pour @q{true}) la propriété
 @code{tieWaitForNote}.  Cette même méthode peut servir, par exemple, à
@@ -2117,10 +2168,22 @@ lier un trémolo à un accord :
 e8~ c~ a~ f~ <e' c a f>2
 @end lilypond
 
+Il est possible de graver manuellement les liaisons de tenue, en
+changeant la propriété @code{tie-configuration}.  Pour chaque paire, le
+premier nombre indique la distance à la portée, en espaces de portée, et
+le deuxième nombre indique la direction --- 1 pour haut, @minus{}1 pour
+bas.
 
-@refcommands
+@lilypond[fragment,verbatim,relative=1,ragged-right,quote]
+<c e g>2~ <c e g> |
+\override TieColumn #'tie-configuration =
+  #'((0.0 . 1) (-2.0 . 1) (-4.0 . 1))
+<c e g>~ <c e g> |
+@end lilypond
 
 
+@refcommands
+
 @funindex \tieUp
 @code{\tieUp},
 @funindex \tieDown
@@ -2142,10 +2205,8 @@ Dans ce même manuel : @ref{Automatic note splitting}.
 Référence du programme : @internalsref{Tie}.
 
 
-
 @refbugs
 
-
 Un changement de portée, lorsqu'une liaison de tenue est active, ne
 peut produire une liaison oblique.
 
@@ -3334,19 +3395,13 @@ c1
 \alternative { {d2 d} {f f,} }
 @end lilypond
 
-
-Dans l'exemple qui suit, la première fin proposée n'occupe pas une 
-mesure complète --- il lui manque un temps.  Le quatrième temps
-manquant se trouve au début de la seconde fin, qui compte donc
-un temps en trop --- tout à fait indépendamment du fait que la mélodie
-commence par une anacrouse, comme l'indique la commande @code{\partial}
-au début de l'exemple.
+Il est possible de créer des répétitions avec une levée.
 
 @lilypond[quote,ragged-right,fragment,verbatim,relative=2]
 \new Staff {
-  \partial 4
-  \repeat volta 4 { e | c2 d2 | e2 f2 | }
-  \alternative { { g4 g g } { a | a a a a | b2. } }
+  \partial 4 e |
+  \repeat volta 4 { c2 d2 | e2 f2 | }
+  \alternative { { g4 g g e } { a a a a | b2. } }
 }
 @end lilypond
 
@@ -3376,6 +3431,14 @@ l'exemple suivant, le crochet ne se prolonge que sur une mesure
 }
 @end lilypond
 
+Si l'on souhaite à la fois terminer une ligne par une double barre et
+débuter la ligne suivante avec une section reprise, on peut utiliser
+@example
+@dots{} \bar "||:" \break
+\repeat volta 2 @{ @dots{}
+@end example
+
+Consultez @ref{Bar lines} pour plus d'informations.
 
 @seealso
 
@@ -3504,9 +3567,8 @@ c4 c4
 
 Référence du programme : @internalsref{VoltaBracket},
 @internalsref{RepeatedMusic},
-@internalsref{VoltaRepeatedMusic},
-@internalsref{UnfoldedRepeatedMusic}, et
-@internalsref{FoldedRepeatedMusic}.
+@internalsref{VoltaRepeatedMusic}, et
+@internalsref{UnfoldedRepeatedMusic}.
 
 
 @node Tremolo repeats
index 871584eaefde3c1466b724817b89c383f1a0acb1..a682095093ae3e2369693adcd6bd9a2d571260b4 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: c622e816e641f91a5592b302a926daaa17a995f5
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 3e1fc3d99fe62fd9dd92c419266dc71d75354467..d27280a7f11361ea78c1e2975ebfafe4625a8e7c 100644 (file)
@@ -77,8 +77,8 @@ midi2ly [@var{option}]@dots{} @var{midi-file}
 @end example
 
 Notez bien que, par @qq{ligne de commande}, nous parlons de la ligne de
-commande du système. Pour plus de détails, voir @ref{Converting from
-other formats}.
+commande du système. Pour plus de détails, voir
+@ref{Converting from other formats}.
 
 @command{midi2ly} accepte les options suivantes :
 
@@ -149,8 +149,8 @@ midi2ly [@var{option}]@dots{} @var{midi-file}
 @end example
 
 Notez bien que, par @qq{ligne de commande}, nous parlons de la ligne de
-commande du système. Pour plus de détails, voir @ref{Converting from
-other formats}.
+commande du système. Pour plus de détails, voir
+@ref{Converting from other formats}.
 
 @command{midi2ly} accepte les options suivantes :
 
@@ -183,8 +183,8 @@ et les écrit dans un fichier @var{.ly}.  Il se lance en ligne de
 commande.
 
 Notez bien que, par @qq{ligne de commande}, nous parlons de la ligne de
-commande du système. Pour plus de détails, voir @ref{Converting from
-other formats}.
+commande du système. Pour plus de détails, voir
+@ref{Converting from other formats}.
 
 @command{musicxml2ly} accepte les options suivantes :
 
index 24ca76f5eb47902a7b5f17bf03dbb937984986a3..8e42b889958d5abed9b4b2f1720b22e7cf6145a6 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: c622e816e641f91a5592b302a926daaa17a995f5
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index d7c4dc53ba132952cabd0f306bf108ee1b668234..6a8bf7ac980f215b047408aa79d4e0ec09f3bf28 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: ef2a56348261c657e63bfea9341bfe8e2a22f486
+    Translation of GIT committish: 8bf657e5c944bd8da26af01d6a021b48e74ff10a
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -183,13 +183,13 @@ le refléter.  Malheureusement, notre oeil nous trompe quelque peu ; il
 ne se contente pas de remarquer la distance entre les têtes de notes,
 il prend en compte également la distance entre les hampes
 consécutives.  Ainsi, par compensation, les notes avec une combinaison
-« hampe vers le haut »/@/« hampe vers le bas » doivent être éloignées
-l'une de l'autre, et les notes avec une combinaison « hampe vers le
-bas »/@/« hampe vers le haut » rapprochées, le tout dépendant de la
+@qq{hampe vers le haut}/@/@qq{hampe vers le bas} doivent être éloignées
+l'une de l'autre, et les notes avec une combinaison @qq{hampe vers le
+bas}/@/@qq{hampe vers le haut} rapprochées, le tout dépendant de la
 position verticale des notes.  Les deux premières mesures sont
 imprimées avec cette correction, les deux suivantes sans.  Les notes
-dans les deux dernières mesures forment des blocs de notes « hampe
-vers le bas »/@/« hampe vers le haut ».
+dans les deux dernières mesures forment des blocs de notes @qq{hampe
+vers le bas}/@/@qq{hampe vers le haut}.
 
 @cindex typography
 
@@ -239,7 +239,7 @@ aimons tant lire et jouer.
 Comment pouvons-nous implémenter la typographie ? Si les artisans ont
 besoin de plus de dix ans pour devenir de vrais maîtres, comment nous,
 simples programmeurs, pourrions-nous jamais écrire un programme pour
-faire leur travail?
+faire leur travail ?
 
 La réponse est : nous ne le pouvons pas.  La typographie se base sur
 le jugement visuel humain, donc les humains ne peuvent pas être
@@ -731,7 +731,13 @@ musique et du texte dans les documents.
 @node About this manual
 @section About this manual
 
-Le manuel est divisé en chapitres comme suit :
+Le manuel est divisé en quatres livres.
+
+@subsubheading Manuel d'apprentissage
+
+Ce livre explique comment débuter avec LilyPond, et expose de manière
+simple quelques concepts clés.
+
 @itemize @bullet
 
 @item
@@ -756,6 +762,17 @@ afin d'éviter les problèmes les plus courants.
 @emph{@ref{Tweaking output}}
 est une introduction aux retouches de gravure avec LilyPond.
 
+@end itemize
+
+
+@subsubheading Manuel de référence
+
+Ce livre détaille toutes les commandes LilyPond produisant une notation
+musicale.  La lecture de ce livre requiert une bonne compréhension des
+concepts exposés dans le manuel d'apprentissage.
+
+@itemize @bullet
+
 @item
 @emph{@ref{Basic notation}}
 traite de sujets groupés par type de notation.  Cette section
@@ -792,6 +809,16 @@ la taille de papier ou spécifier les sauts de page.
 @emph{@ref{Interfaces for programmers}}
 explique comment créer des fonctions de musique.
 
+@end itemize
+
+
+@subsubheading Utilisation du programme
+
+Ce livre explique comment exécuter le programme et comment intégrer les
+partitions LilyPond dans d'autres programmes.
+
+@itemize @bullet
+
 @item
 @emph{@ref{Running LilyPond}}
 montre comment lancer LilyPond et ses programmes auxiliaires.  De
@@ -809,6 +836,15 @@ explique comment exécuter les programmes de conversion.  Ces programmes
 sont livrés avec le paquetage Lilypond, et convertissent une variété
 de formats musicaux vers le format @code{.ly}.
 
+@end itemize
+
+
+@subsubheading Annexes
+
+Ce livre contient des tables de référence pratiques.
+
+@itemize @bullet
+
 @item
 @ifhtml
 La
@@ -821,7 +857,7 @@ en savoir plus sur la notation et la gravure.
 Le
 @emph{@ref{Scheme tutorial}}
 propose une courte introduction à Scheme, le langage de programmation
-utilisé par les fonctions de musique.
+utilisé dans les fonctions de musique.
 
 @item
 @ifhtml
@@ -835,12 +871,12 @@ instruments MIDI, les noms de couleur, et la police Feta.
 Les
 @emph{@ref{Templates}}
 de pièces LilyPond.  Copiez et collez un modèle
-dans un fichier, ajouter les notes, et c'est prêt !
+dans un fichier, ajoutez les notes, et c'est prêt !
 
 @item
 La
 @emph{@ref{Cheat sheet}}
-est une référence pratique des commandes LlyPond les plus courantes.
+est une référence pratique des commandes LilyPond les plus courantes.
 
 @item
 L'
@@ -854,63 +890,59 @@ est un index complet.
 
 @end itemize
 
-Une fois que vous êtes un utilisateur expérimenté, vous pouvez
-utiliser le manuel comme référence : il y a un index
-exhaustif@footnote{Si vous cherchez quelque chose, et que vous ne le
-trouvez pas dans le manuel, ceci est considéré comme un bogue ; dans
-ce cas, envoyez un rapport de bogue s'il-vous-plaît.}, mais ce
-document est aussi disponible en
-@iftex
-une seule grande page HTML,
-@end iftex
-@ifhtml
-@uref{source/Documentation/user/lilypond.html, une seule grande page},
-@end ifhtml
-dans laquelle la fonction recherche d'un navigateur Web est très utile
-pour trouver quelque chose. 
-@cindex search in manual
-@cindex using the manual
+@subsubheading Autre documentation
 
-@c FIXME:
-@c add/integrate glossary, put in list above
-Si vous n'êtes pas familier avec la notation musicale ou la
-terminologie, il est conseillé de consulter le glossaire, notamment
-pour les parties non encore traduites de la documentation.
+D'autres documents constituent de précieuses sources d'information.
+
+@itemize @bullet
+@cindex jargon
+@cindex terminologie
+@cindex langues étrangères
+@cindex langue
+@cindex langage
 @iftex
 Le glossaire de musique explique les termes musicaux, et inclut
 les traductions vers divers languages.  C'est un document séparé,
-disponible dans les formats HTML et PDF.
+disponible aux formats HTML et PDF.
 @end iftex
 @ifnottex
 Le @ref{Top,glossaire musical,,music-glossary} explique les termes
 musicaux et inclut les traductions vers divers languages.  Il est
 également disponible au format PDF. 
 @end ifnottex
-@cindex idiom
-@cindex jargon
-@cindex terminology
-@cindex foreign languages
-@cindex language
-
+Si vous n'êtes pas familier avec la notation musicale ou la
+terminologie, il est conseillé de consulter le glossaire, notamment
+pour les parties non encore traduites de la documentation.
 
-Ce manuel ne serait pas complet sans un certain nombre d'autres
-documents.  Ils ne sont pas tous disponibles au format papier, mais
-devraient être inclus dans le paquetage de documentation pour votre
-plateforme.
+@cindex exemples de code
+@cindex LSR
+@item
+Les
+@ifhtml
+@uref{source/input/lsr/collated-files.html,Exemples de code}
+@end ifhtml
+@ifnothtml
+Exemples de code
+@end ifnothtml
+sont une vaste sélection de petits exemples montrant des trucs, astuces
+et fonctionnalités particulières de LilyPond.  La plupart de ces
+exemples sont également disponibles sur le
+@uref{http://lsr.dsi.unimi.it/,LilyPond Snippet Repository}.  Ce site
+Web possède également le manuel de LilyPond avec une fonctionnalité de
+recherche.
 
-@itemize @bullet
 @item
+La
 @iftex
-Référence du programme
+référence du programme
 @end iftex
 @ifnottex
-@ref{Top,Référence du programme,,lilypond-internals}.
+@ref{Top,référence du programme,,lilypond-internals}.
 @end ifnottex
-
-La référence du programme est un groupe de pages HTML étroitement
-liées entre elles, qui documente tous les petits détails de chaque
-classe, objet et fonction de LilyPond.  Elle est produite directement
-à partir des définitions de formatage utilisées.
+est un ensemble de pages HTML étroitement liées entre elles, qui
+documente les moindres petits détails de chaque classe, objet et
+fonction de LilyPond.  Cette documentation est produite directement à
+partir des définitions de formatage utilisées.
 
 Presque toutes les fonctions de formatage utilisées en interne sont
 directement disponibles pour l'utilisateur.  Par exemple, toutes les
@@ -922,66 +954,50 @@ aussi} qui réfère à la documentation générée automatiquement.  Dans la
 documentation au format HTML, ces sous-sections ont des liens
 cliquables.
 
-@cindex snippets
-@item
-@ifnothtml
-Exemples de source divers.
-@end ifnothtml
-@ifhtml
-@c Works, but link name is not so nice; so write-out macro
-@c @inputfileref{input/test,Various input examples}.
-@uref{source/input/test/collated-files.html,Exemples de source divers}.
-@end ifhtml
-
-Cette ensemble de fichiers montre des trucs et astuces variés, sous
-la forme d'un large fichier HTML, avec des images et des textes
-explicatifs.
+@end itemize
 
-@item
-@ifnothtml
-Les tests de régression.
-@end ifnothtml
+Lorsque vous serez un utilisateur expérimenté, vous pourrez consulter le
+manuel comme une référence : il y a un index complet@footnote{Si vous
+cherchez quelque chose sans le trouver dans la documentation, c'est un
+bogue.  Dans ce cas, merci d'envoyer un rapport de bogue.}, mais le
+manuel est aussi disponible en
+@iftex
+une seule grande page,
+@end iftex
 @ifhtml
-@c Works, but link name is not so nice; so write-out macro
-@c @inputfileref{input/regression,The regression tests}.
-@uref{source/input/regression/collated-files.html,Les tests de régression}.
+@uref{source/Documentation/user/lilypond-big-page.html, une seule grande
+page},
 @end ifhtml
-
-Cet ensemble de fichiers teste chaque fonctionnalité de notation et de
-gravure de Lilypond en un seul fichier.  L'ensemble est surtout
-présent pour nous aider à deboguer les problèmes, mais peut également
-être instructif pour voir comment nous testons le logiciel.  Le format
-est identique au document de trucs et astuces.
-@end itemize
-
+ce qui facilite la recherche avec la fonction de recherche de votre
+navigateur.
 
 Dans tous les documents HTML qui incluent des fragments musicaux,
 le code Lilypond utilisé pour produire l'image peut être vu en
 cliquant l'image.
 
 L'emplacement des fichiers de documentation mentionné ici peut varier
-d'un système à l'autre.  De temps en temps, ce manuel fait référence
-aux fichiers d'exemple et d'initialisation.  Tout au long de ce
-manuel, nous donnons les emplacements des fichiers d'entrée
-relativement au répértoire racine de l'archive source.  Par exemple,
+d'un système à l'autre.  De temps en temps, ce manuel fait référence aux
+fichiers d'exemple et d'initialisation.  Tout au long de ce manuel, nous
+donnons les emplacements des fichiers d'entrée relativement au
+répértoire racine de l'archive source.  Par exemple,
 @file{input/@/test/@/bla@/.ly} peut référer au fichier
 @file{lilypond@/2.x.y/@/input/@/test/@/bla@/.ly}.  Dans les paquets
-binaires pour les plateformes Unix, la documentation et les exemples
-se trouvent généralement sous @file{/usr/@/share/@/doc/@/lilypond/}.
-Les fichiers d'initialisation, par exemple @file{scm/@/lily@/.scm}, ou
+binaires pour les plateformes Unix, la documentation et les exemples se
+trouvent généralement sous @file{/usr/@/share/@/doc/@/lilypond/}.  Les
+fichiers d'initialisation, par exemple @file{scm/@/lily@/.scm}, ou
 @file{ly/@/engraver@/-init@/.ly}, se trouvent généralement dans le
 répértoire @file{/usr/@/share/@/lilypond/}.
 
-@cindex adjusting output
+@cindex retoucher
 @cindex variables
-@cindex properties
+@cindex propriétés
 @cindex lilypond-internals
-@cindex internal documentation
+@cindex documentation du fonctionnement interne
 @cindex Scheme
-@cindex extending lilypond
+@cindex étendre lilypond
 @cindex index
 
 Pour finir, ce manuel et les autres sont disponibles en ligne, à la
-fois aux formats PDF et HTML, à partir du site de LilyPond, accessible
+fois aux formats PDF et HTML, à partir du site Web, accessible
 à l'adresse @uref{http://@/www@/.lilypond@/.org/}.
 
index d40177385bd1a1798c1990be2c9179c686cf165b..fd6adcac1993f888cd2e4cac69718e3cedd51656 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: c622e816e641f91a5592b302a926daaa17a995f5
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 1d3d3e5385d9aabfd8045d61f5d5416b8816a402..d9d0a73899b13773e61ebdbd98a4ecef050d1f2e 100644 (file)
@@ -1,6 +1,6 @@
 \input texinfo @c -*- coding: utf-8; mode: texinfo; documentlanguage: fr -*-
 @ignore
-    Translation of GIT committish: b40f25ec7472b855483b5eb9126747bfb9487fe1
+    Translation of GIT committish: 8791591cda0187e947fa6162ce261bc97df698ee
 
     When revising a translation, copy the HEAD committish of the
     version that you are working on.  See TRANSLATION for details.
@@ -8,8 +8,14 @@
 
 @setfilename lilypond.info
 @settitle GNU LilyPond
+
 @iftex
 @afourpaper
+@c don't replace quotes with directed quotes
+@tex
+\gdef\SETtxicodequoteundirected{Foo}
+\gdef\SETtxicodequotebacktick{Bla}
+@end tex
 @end iftex
 
 @c don't remove this comment.
 @omflanguage French
 @end ignore
 
+@ifhtml
+Ce document est également disponible au format
+@uref{source/Documentation/user/lilypond.fr.pdf,PDF}.
+@end ifhtml
+
 @documentlanguage fr
+@iftex
+@frenchspacing on
+@end iftex
 @documentencoding UTF-8
 
 @syncodeindex fn cp
-@syncodeindex ky cp
-@syncodeindex pg cp
-@syncodeindex tp cp
-@syncodeindex vr cp
+@c @syncodeindex ky cp
+@c @syncodeindex pg cp
+@c @syncodeindex tp cp
+@c @syncodeindex vr cp
 
 @finalout
 
 
 Copyright @copyright{} 1999--2007 by the authors
 
+@emph{The translation of the following copyright notice is provided
+for courtesy to non-English speakers, but only the notice in English
+legally counts.}
+
+@emph{La traduction de la notice de droits d'auteur ci-dessous vise à
+faciliter sa compréhension par le lecteur non anglophone, mais seule la
+notice en anglais a valeur légale.}
+
+@quotation
+Vous avez le droit de copier, distribuer et/ou modifier ce document
+selon les termes de la Licence GNU de documentation libre, version 1.1
+ou tout autre version ultérieure publiée par la Free Software
+Foundation, ``sans aucune section invariante''.
+Une copie de la licence est fournie à la section ``Licence GNU de documentation libre''.
+@end quotation
+
 @quotation
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.1
@@ -74,6 +104,22 @@ Ce fichier documente GNU LilyPond.
 
 Copyright @copyright{} 1999--2007 par les auteurs
 
+@emph{The translation of the following copyright notice is provided
+for courtesy to non-English speakers, but only the notice in English
+legally counts.}
+
+@emph{La traduction de la notice de droits d'auteur ci-dessous vise à
+faciliter sa compréhension par le lecteur non anglophone, mais seule la
+notice en anglais a valeur légale.}
+
+@quotation
+Vous avez le droit de copier, distribuer et/ou modifier ce document
+selon les termes de la Licence GNU de documentation libre, version 1.1
+ou tout autre version ultérieure publiée par la Free Software
+Foundation, ``sans aucune section invariante''.
+Une copie de la licence est fournie à la section ``Licence GNU de documentation libre''.
+@end quotation
+
 @quotation
 Permission is granted to copy, distribute and/or modify this document
 under the terms of the GNU Free Documentation License, Version 1.1
@@ -179,15 +225,11 @@ Annexes
 @node LilyPond command index
 @appendix LilyPond command index
 
-UNTRANSLATED NODE: IGNORE ME
-
 @printindex ky
 
 @node LilyPond index
 @appendix LilyPond index
 
-UNTRANSLATED NODE: IGNORE ME
-
 @printindex cp
 
 @bye
index f2b7e9ce85f6fad16ca11b32ceafeb93f2f28980..47084846aef451d7cd65acbd1db597882ee94c50 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: c622e816e641f91a5592b302a926daaa17a995f5
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index ab384d629e7106d01469e92ef452e9a5376f1726..aefd73f6bdb1c3d51ea30f395add12785ba83622 100644 (file)
@@ -257,7 +257,7 @@ user manual, @internalsref{\NAME\}
 
 @c to get decent French quotes in ``foo''
 @macro qq{TEXT}
-<< \TEXT\ >>
+``\TEXT\''
 @end macro
 
 @end iftex
index 55809b10320ec14fff4517ac254634888e96d047..4cf81e41cd9be66dde12cb78d39fa118b74c5b6c 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: c622e816e641f91a5592b302a926daaa17a995f5
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
@@ -78,6 +78,7 @@ UNTRANSLATED NODE: IGNORE ME
 @menu 
 * Creating titles::
 * Custom titles::
+* Reference to page numbers::
 * Table of contents::
 @end menu 
 @node Creating titles
@@ -90,6 +91,11 @@ UNTRANSLATED NODE: IGNORE ME
 
 UNTRANSLATED NODE: IGNORE ME
 
+@node Reference to page numbers
+@subsection Reference to page numbers
+
+UNTRANSLATED NODE: IGNORE ME
+
 @node Table of contents
 @subsection Table of contents
 
index 25d622cd8cc74516bff6f2285d7f937c00dca9eb..a8c2e3344417cd92d5eae2749e78f06e83eceab2 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: c622e816e641f91a5592b302a926daaa17a995f5
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 30f1ea056aceecc3547b8cb053c912b36a6ca897..2ff22337f1b501a096c5e3a06e74ad883707de49 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: c622e816e641f91a5592b302a926daaa17a995f5
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 62c754bf7429650fe66788aa6f016b5bd53abdc0..79eaab43d5730381a32b6088e268d1dd8dbc316f 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: c622e816e641f91a5592b302a926daaa17a995f5
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 219f075a8f5c8456a20a14129587f6dea06fb985..f21bae30dd58e8d5ed5f6eaa935c7e02769aff18 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: c622e816e641f91a5592b302a926daaa17a995f5
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 5774de1027ba69c8024924d14ea6ab911881f74b..3972bc371d353d4e52872855f689c2e3159686f8 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: c622e816e641f91a5592b302a926daaa17a995f5
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index 96496e9e1a30f9bbb1a9cf757d66844e56471d59..8c245ba9b5e2e054ea32cbed538ff1cbbba69e67 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: c622e816e641f91a5592b302a926daaa17a995f5
+    Translation of GIT committish: 9634340429eb0518432b152fe4aaf7471b67b013
 
 
     When revising a translation, copy the HEAD committish of the
index bdb50a5034267e76f0280df1722e12e47e6ff139..b98e5aa5d93813306d1d0d6e0133cb7b689bae3b 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: ef2a56348261c657e63bfea9341bfe8e2a22f486
+   Translation of GIT committish: 8bf657e5c944bd8da26af01d6a021b48e74ff10a
 
    When revising a translation, copy the HEAD committish of the
    version that you are working on.  See TRANSLATION for details.
@@ -50,18 +50,18 @@ verrez exactement le code LilyPond utilisé pour générer cette image.
 Essayez sur cette image :
 
 @c no verbatim here
+@c KEEP LY
 @lilypond[quote,ragged-right]
 \relative c'' {
-  c-\markup { \bold \huge { Click here.  } }
+  c-\markup { \bold \huge { Cliquez ici.  } }
 }
 @end lilypond
 
-En copiant et en collant tout le code @qq{ly snippet} dans un fichier test,
-vous aurez un modèle de base pour faire vos expériences.  Si vous
-apprenez de cette façon, vous aurez probablement envie d'imprimer ou
-de garder un lien vers la
-@ref{Cheat sheet}, tableau qui répertorie les commandes usuelles
-pour une consultation rapide.
+En copiant et en collant tout le code de l'extrait ly dans un fichier
+test, vous aurez un modèle de base pour faire vos expériences.  Si vous
+apprenez de cette façon, vous aurez probablement envie d'imprimer ou de
+garder un lien vers la @ref{Cheat sheet}, tableau qui répertorie les
+commandes usuelles pour une consultation rapide.
 @end ifhtml
 
 @menu
@@ -1066,7 +1066,7 @@ Ces éléments @code{Staff} sont ensuite combinés en parallèle avec
 @end lilypond
 
 
-La commande @code{\new} introduit un « contexte de notation ».  Un
+La commande @code{\new} introduit un @qq{contexte de notation}.  Un
 contexte de notation est un environnement dans lequel les événements
 musicaux --- comme les notes ou les commandes @code{\clef} --- sont
 interprétés.   Pour des pièces simples, ces contextes sont créés
@@ -1081,7 +1081,7 @@ notation de la mélodie, alors que @code{Lyrics} gère les paroles et
 
 En termes de syntaxe, faire précéder une expression musicale de
 @code{\new} crée une plus grosse expression musicale.  En reprenant la
-comparaison, cela ressemble au signe « moins » en mathématiques.  La
+comparaison, cela ressemble au signe @qq{moins} en mathématiques.  La
 formule @math{(4+5)} est une expression, donc @math{-(4+5)} est une
 plus grosse expression.
 
@@ -1264,7 +1264,7 @@ chaque syllable par un espace :
 @cindex melisma
 @cindex extender line
 Cette mélodie se termine sur un @rglos{melisma}, c'est-à-dire qu'une
-seule syllable (« free ») correspond à plus d'une note.  Ceci est
+seule syllable (@qq{free}) correspond à plus d'une note.  Ceci est
 indiqué avec une @emph{ligne d'extension}.  Elle est entrée avec deux
 caractères souligné (@code{_}), c'est-à-dire :
 
index 4dbb96d24d344e47a7e6bbdfa7bcad7dab1d1dcc..5b035614c13abc16bbc726c076a492d6e38b202d 100644 (file)
@@ -194,9 +194,9 @@ Jusqu'à maintenant, vous avez vu ce type de code :
 @lilypond[quote,verbatim,ragged-right]
 hornNotes = \relative c'' { c4 b dis c }
 \score {
- {
-   \hornNotes
- }
 {
+    \hornNotes
 }
 }
 @end lilypond
 
index e33639b1864bb8989e8b6137b04ebb4bea5f7f88..5a2ad1e7e2b6a91b39443d5096cc0144b7a7d500 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-17 23:05+0200\n"
+"POT-Creation-Date: 2007-07-04 00:04+0200\n"
 "PO-Revision-Date: 2007-05-12 18:41+0200\n"
 "Last-Translator: Till Rettig <till.rettig@gmx.de>\n"
 "Language-Team: de <LL@li.org>\n"
@@ -16,18 +16,25 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: add_html_footer.py:46
+#: add_html_footer.py:44
 #, python-format
 msgid "This page is for %(package_name)s-%(package_version)s (%(branch_str)s)."
 msgstr ""
 "Diese Seite ist für %(package_name)s-%(package_version)s (%(branch_str)s)."
 
-#: add_html_footer.py:47
+#: add_html_footer.py:45
 #, python-format
 msgid "Report errors to <a href=\"%(mail_address_url)s\">%(mail_address)s</a>."
 msgstr ""
 "Fehler bitte an <a href=\"%(mail_address_url)s\">%(mail_address)s</a> melden."
 
+#: add_html_footer.py:46
+#, python-format
+msgid ""
+"Your <a href=\"%(suggest_s_url)s\">suggestions for the documentation</a> are "
+"welcome."
+msgstr ""
+
 #: add_html_footer.py:54
 #, python-format
 msgid "Other languages: %s."
@@ -38,15 +45,15 @@ msgstr "Andere Sprachen: %s."
 msgid "About <A HREF=\"%s\">automatic language selection</A>."
 msgstr "Über die <A HREF=\"%s\">automatische Sprachauswahl</A>."
 
-#: add_html_footer.py:238
+#: add_html_footer.py:251
 msgid "stable-branch"
 msgstr "stabiler Zweig"
 
-#: add_html_footer.py:240
+#: add_html_footer.py:253
 msgid "development-branch"
 msgstr "Entwicklungszweig"
 
-#: texi-gettext.py:45
+#: texi-gettext.py:65
 msgid ""
 "This section has not been translated yet; please refer to the manual in "
 "English."
@@ -130,6 +137,29 @@ msgstr "Beispielanwendung"
 msgid "About this manual"
 msgstr "Über das Handbuch"
 
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+msgid "Learning manual"
+msgstr ""
+
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+#, fuzzy
+msgid "Notation reference"
+msgstr "Zurechtfinden in der Programmreferenz"
+
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+msgid "Program usage"
+msgstr ""
+
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+#, fuzzy
+msgid "Appendices"
+msgstr "Anhang"
+
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+#, fuzzy
+msgid "Other information"
+msgstr "Mehr Information"
+
 #. @node in ../../../Documentation/user/tutorial.itely
 #. @chapter in ../../../Documentation/user/tutorial.itely
 msgid "Tutorial"
@@ -1991,7 +2021,8 @@ msgid "Integrating LaTeX and music"
 msgstr "Noten in LaTeX integrieren"
 
 #. @section in ../../../Documentation/user/lilypond-book.itely
-msgid "Integrating La@TeX{} and music"
+#, fuzzy
+msgid "Integrating @LaTeX{} and music"
 msgstr "Noten in La@TeX{} integrieren"
 
 #. @node in ../../../Documentation/user/lilypond-book.itely
index 1202c0298e11e41d73847ed236b02bb97bba1e2e..8ac7db7284f10ab1e6a6c9779113bdaf16f57146 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-17 23:05+0200\n"
+"POT-Creation-Date: 2007-07-04 00:04+0200\n"
 "PO-Revision-Date: 2007-03-28 10:29+0200\n"
 "Last-Translator: Francisco Vila <francisco.vila@hispalinux.es>\n"
 "Language-Team: spanish <es@li.org>\n"
@@ -16,20 +16,27 @@ msgstr ""
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: add_html_footer.py:46
+#: add_html_footer.py:44
 #, python-format
 msgid "This page is for %(package_name)s-%(package_version)s (%(branch_str)s)."
 msgstr ""
 "Esta página corresponde a %(package_name)s-%(package_version)s (%(branch_str)"
 "s)."
 
-#: add_html_footer.py:47
+#: add_html_footer.py:45
 #, python-format
 msgid "Report errors to <a href=\"%(mail_address_url)s\">%(mail_address)s</a>."
 msgstr ""
 "Informe de los fallos a <a href=\"%(mail_address_url)s\">%(mail_address)s</"
 "a>."
 
+#: add_html_footer.py:46
+#, python-format
+msgid ""
+"Your <a href=\"%(suggest_s_url)s\">suggestions for the documentation</a> are "
+"welcome."
+msgstr ""
+
 #: add_html_footer.py:54
 #, python-format
 msgid "Other languages: %s."
@@ -40,15 +47,15 @@ msgstr "Otros idiomas: %s."
 msgid "About <A HREF=\"%s\">automatic language selection</A>."
 msgstr "Acerca de la <A HREF=\"%s\">selección automática del idioma</A>."
 
-#: add_html_footer.py:238
+#: add_html_footer.py:251
 msgid "stable-branch"
 msgstr "rama estable"
 
-#: add_html_footer.py:240
+#: add_html_footer.py:253
 msgid "development-branch"
 msgstr "rama de desarrollo"
 
-#: texi-gettext.py:45
+#: texi-gettext.py:65
 msgid ""
 "This section has not been translated yet; please refer to the manual in "
 "English."
@@ -132,6 +139,29 @@ msgstr "Aplicaciones de ejemplo"
 msgid "About this manual"
 msgstr "Sobre el presente manual"
 
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+msgid "Learning manual"
+msgstr ""
+
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+#, fuzzy
+msgid "Notation reference"
+msgstr "Navegar por la referencia del programa"
+
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+msgid "Program usage"
+msgstr ""
+
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+#, fuzzy
+msgid "Appendices"
+msgstr "Apéndice "
+
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+#, fuzzy
+msgid "Other information"
+msgstr "Más información"
+
 #. @node in ../../../Documentation/user/tutorial.itely
 #. @chapter in ../../../Documentation/user/tutorial.itely
 msgid "Tutorial"
@@ -2008,7 +2038,8 @@ msgid "Integrating LaTeX and music"
 msgstr "Integración de LaTeX y música"
 
 #. @section in ../../../Documentation/user/lilypond-book.itely
-msgid "Integrating La@TeX{} and music"
+#, fuzzy
+msgid "Integrating @LaTeX{} and music"
 msgstr "Integración de La@TeX{} y música"
 
 #. @node in ../../../Documentation/user/lilypond-book.itely
index 45d87bed300a058f3e68d5486629b782c31bdcfc..44b4d0756538a9f6999ed6fb77ce39b1a653f199 100644 (file)
@@ -8,8 +8,8 @@ msgid ""
 msgstr ""
 "Project-Id-Version: fr\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-17 23:05+0200\n"
-"PO-Revision-Date: 2007-03-27 23:06+0200\n"
+"POT-Creation-Date: 2007-07-04 00:04+0200\n"
+"PO-Revision-Date: 2007-06-30 14:29+0200\n"
 "Last-Translator: John Mandereau <john.mandereau@free.fr>\n"
 "Language-Team: Français <lilypond-user-fr@gnu.org>\n"
 "MIME-Version: 1.0\n"
@@ -17,13 +17,13 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.11.4\n"
 
-#: add_html_footer.py:46
+#: add_html_footer.py:44
 #, python-format
 msgid "This page is for %(package_name)s-%(package_version)s (%(branch_str)s)."
 msgstr ""
 "Cette page documente %(package_name)s-%(package_version)s (%(branch_str)s)."
 
-#: add_html_footer.py:47
+#: add_html_footer.py:45
 #, python-format
 msgid "Report errors to <a href=\"%(mail_address_url)s\">%(mail_address)s</a>."
 msgstr ""
@@ -31,6 +31,13 @@ msgstr ""
 "org\">lilypond-user-fr@gnu.org</a> ou en anglais à <a href=\"%"
 "(mail_address_url)s\">%(mail_address)s</a>"
 
+#: add_html_footer.py:46
+#, python-format
+msgid ""
+"Your <a href=\"%(suggest_s_url)s\">suggestions for the documentation</a> are "
+"welcome."
+msgstr ""
+
 #: add_html_footer.py:54
 #, python-format
 msgid "Other languages: %s."
@@ -41,19 +48,21 @@ msgstr "Autres langues&nbsp;: %s."
 msgid "About <A HREF=\"%s\">automatic language selection</A>."
 msgstr "À propos de la <A HREF=\"%s\">sélection automatique de la langue</A>."
 
-#: add_html_footer.py:238
+#: add_html_footer.py:251
 msgid "stable-branch"
 msgstr "branche stable"
 
-#: add_html_footer.py:240
+#: add_html_footer.py:253
 msgid "development-branch"
 msgstr "branche de développement"
 
-#: texi-gettext.py:45
+#: texi-gettext.py:65
 msgid ""
 "This section has not been translated yet; please refer to the manual in "
 "English."
 msgstr ""
+"Cette section n'est pas encore traduite ; reportez-vous à l'édition de ce "
+"manuel en anglais."
 
 #. @node in ../../../Documentation/user/lilypond.tely
 msgid "Top"
@@ -133,6 +142,26 @@ msgstr "Exemples d'applications"
 msgid "About this manual"
 msgstr "À propos de ce manuel"
 
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+msgid "Learning manual"
+msgstr "Manuel d'apprentissage"
+
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+msgid "Notation reference"
+msgstr "Manuel de référence"
+
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+msgid "Program usage"
+msgstr "Utilisation du programme"
+
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+msgid "Appendices"
+msgstr "Annexes"
+
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+msgid "Other information"
+msgstr "Autres sources de documentation"
+
 #. @node in ../../../Documentation/user/tutorial.itely
 #. @chapter in ../../../Documentation/user/tutorial.itely
 msgid "Tutorial"
@@ -767,7 +796,7 @@ msgstr "Notation couvrant plusieurs notes"
 #. @node in ../../../Documentation/user/basic-notation.itely
 #. @subsection in ../../../Documentation/user/basic-notation.itely
 msgid "Laissez vibrer ties"
-msgstr "Liaisons « laissez vibrer »"
+msgstr "Liaisons ``laissez vibrer''"
 
 #. @node in ../../../Documentation/user/basic-notation.itely
 #. @subsection in ../../../Documentation/user/basic-notation.itely
@@ -1231,9 +1260,8 @@ msgstr "Partitions emboîtées"
 
 #. @node in ../../../Documentation/user/advanced-notation.itely
 #. @subsection in ../../../Documentation/user/advanced-notation.itely
-#, fuzzy
 msgid "Page wrapping text"
-msgstr "Saut de page"
+msgstr "Texte avec sauts de page"
 
 #. @node in ../../../Documentation/user/advanced-notation.itely
 #. @subsection in ../../../Documentation/user/advanced-notation.itely
@@ -1242,9 +1270,8 @@ msgstr "Vue d'ensemble des commandes d'indication textuelle"
 
 #. @node in ../../../Documentation/user/advanced-notation.itely
 #. @subsection in ../../../Documentation/user/advanced-notation.itely
-#, fuzzy
 msgid "Overview of text markup list commands"
-msgstr "Vue d'ensemble des commandes d'indication textuelle"
+msgstr "Vue d'ensemble des commandes de listes d'indications textuelles"
 
 #. @node in ../../../Documentation/user/advanced-notation.itely
 #. @subsection in ../../../Documentation/user/advanced-notation.itely
@@ -1493,9 +1520,8 @@ msgstr "Aligner des contextes"
 
 #. @node in ../../../Documentation/user/changing-defaults.itely
 #. @subsection in ../../../Documentation/user/changing-defaults.itely
-#, fuzzy
 msgid "Vertical grouping of grobs"
-msgstr "Espacement vertical"
+msgstr "Groupement vertical d'objets graphiques"
 
 #. @node in ../../../Documentation/user/changing-defaults.itely
 msgid "The \\override command"
@@ -1614,11 +1640,10 @@ msgstr "Titres personnalisés"
 #. @node in ../../../Documentation/user/non-music.itely
 #. @subsection in ../../../Documentation/user/non-music.itely
 msgid "Reference to page numbers"
-msgstr ""
+msgstr "Référence de numéro de page"
 
 #. @node in ../../../Documentation/user/non-music.itely
 #. @subsection in ../../../Documentation/user/non-music.itely
-#, fuzzy
 msgid "Table of contents"
 msgstr "Table des matières"
 
@@ -1898,9 +1923,8 @@ msgstr "Définition d'une nouvelle commande de marqueur"
 
 #. @node in ../../../Documentation/user/programming-interface.itely
 #. @subsection in ../../../Documentation/user/programming-interface.itely
-#, fuzzy
 msgid "New markup list command definition"
-msgstr "Définition d'une nouvelle commande de marqueur"
+msgstr "Définition d'une nouvelle commande de liste de marqueurs"
 
 #. @node in ../../../Documentation/user/programming-interface.itely
 #. @section in ../../../Documentation/user/programming-interface.itely
@@ -1991,7 +2015,8 @@ msgid "Integrating LaTeX and music"
 msgstr "Intégrer de la musique dans LaTeX"
 
 #. @section in ../../../Documentation/user/lilypond-book.itely
-msgid "Integrating La@TeX{} and music"
+#, fuzzy
+msgid "Integrating @LaTeX{} and music"
 msgstr "Intégrer de la musique dans @LaTeX{}"
 
 #. @node in ../../../Documentation/user/lilypond-book.itely
index 29bed425d2494a1bc6c25ed82ac9da726831ae60..74b49de76be9bf31098ee1bc057b2679f3838990 100644 (file)
@@ -8,7 +8,7 @@ msgid ""
 msgstr ""
 "Project-Id-Version: PACKAGE VERSION\n"
 "Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-06-17 23:05+0200\n"
+"POT-Creation-Date: 2007-07-04 00:04+0200\n"
 "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
 "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
 "Language-Team: LANGUAGE <LL@li.org>\n"
@@ -16,16 +16,23 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: add_html_footer.py:46
+#: add_html_footer.py:44
 #, python-format
 msgid "This page is for %(package_name)s-%(package_version)s (%(branch_str)s)."
 msgstr ""
 
-#: add_html_footer.py:47
+#: add_html_footer.py:45
 #, python-format
 msgid "Report errors to <a href=\"%(mail_address_url)s\">%(mail_address)s</a>."
 msgstr ""
 
+#: add_html_footer.py:46
+#, python-format
+msgid ""
+"Your <a href=\"%(suggest_s_url)s\">suggestions for the documentation</a> are "
+"welcome."
+msgstr ""
+
 #: add_html_footer.py:54
 #, python-format
 msgid "Other languages: %s."
@@ -36,15 +43,15 @@ msgstr ""
 msgid "About <A HREF=\"%s\">automatic language selection</A>."
 msgstr ""
 
-#: add_html_footer.py:238
+#: add_html_footer.py:251
 msgid "stable-branch"
 msgstr ""
 
-#: add_html_footer.py:240
+#: add_html_footer.py:253
 msgid "development-branch"
 msgstr ""
 
-#: texi-gettext.py:45
+#: texi-gettext.py:65
 msgid ""
 "This section has not been translated yet; please refer to the manual in "
 "English."
@@ -128,6 +135,26 @@ msgstr ""
 msgid "About this manual"
 msgstr ""
 
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+msgid "Learning manual"
+msgstr ""
+
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+msgid "Notation reference"
+msgstr ""
+
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+msgid "Program usage"
+msgstr ""
+
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+msgid "Appendices"
+msgstr ""
+
+#. @subsubheading in ../../../Documentation/user/introduction.itely
+msgid "Other information"
+msgstr ""
+
 #. @node in ../../../Documentation/user/tutorial.itely
 #. @chapter in ../../../Documentation/user/tutorial.itely
 msgid "Tutorial"
@@ -1980,7 +2007,7 @@ msgid "Integrating LaTeX and music"
 msgstr ""
 
 #. @section in ../../../Documentation/user/lilypond-book.itely
-msgid "Integrating La@TeX{} and music"
+msgid "Integrating @LaTeX{} and music"
 msgstr ""
 
 #. @node in ../../../Documentation/user/lilypond-book.itely
index e33db9b3a0b56c854645a9695634d9ab86558ec3..96ade6e37ccd12b23c0ed6d45e537bad3039d9c1 100644 (file)
@@ -1054,7 +1054,7 @@ These voices are all separate from the voice that contains the notes just
 outside the @code{<< \\ >>} construct.  This should be noted when making
 changes at the voice level.  This also means that slurs and ties cannot go
 into or out of a @code{<< \\ >>} construct.  Conversely, parallel voices
-from separate @code{<< \\ >>} constructs on the same staff are the the
+from separate @code{<< \\ >>} constructs on the same staff are the
 same voice.  Here is the same example, with different noteheads for each
 voice.  Note that the change to the note-head style in the main voice does
 not affect
@@ -1873,7 +1873,7 @@ in every context, and that type is determined by the property
 System start delimiters may be deeply nested,
 
 @lilypond[quote,ragged-right,verbatim]
-\new StaffGroup 
+\new StaffGroup
 \relative <<
   \set StaffGroup.systemStartDelimiterHierarchy
     = #'(SystemStartSquare (SystemStartBracket a (SystemStartSquare b)) d)
@@ -3233,6 +3233,13 @@ bracket only lasts one measure, which is a duration of 3/4.
 }
 @end lilypond
 
+If you want to start a repeat at the beginning of a line and have a
+double bar at the end of the previous line, use
+@example
+@dots{} \bar "||:" \break 
+\repeat volta 2 @{ @dots{} 
+@end example
+see @ref{Bar lines} for more information.
 
 @seealso
 
@@ -3350,9 +3357,8 @@ c4 c4
 
 Program reference: @internalsref{VoltaBracket},
 @internalsref{RepeatedMusic},
-@internalsref{VoltaRepeatedMusic},
-@internalsref{UnfoldedRepeatedMusic}, and
-@internalsref{FoldedRepeatedMusic}.
+@internalsref{VoltaRepeatedMusic}, and
+@internalsref{UnfoldedRepeatedMusic}.
 
 
 @node Tremolo repeats
index 28fa837d7510ea90fa62a9375f3c10cc1be52566..8802245e2993adccf3b984b9c2667a5ec3d0bce6 100644 (file)
@@ -670,8 +670,8 @@ note@tie{}D.
 Song texts must be aligned with the notes of their melody.
 @end itemize
 
-There are a few different ways to define lyrics; the simplest
-way is to use the @code{\addlyrics} function.
+There are a few different ways to define lyrics; we shall begin
+by examining the simplest method, and gradually increase complexity.
 
 @menu
 * Setting simple songs::        
@@ -714,8 +714,10 @@ To make lyrics avoid barlines as well, use
 @node Setting simple songs
 @subsection Setting simple songs
 
-The easiest way to add lyrics to a melody is to append
 @cindex \addlyrics
+
+The easiest way to add lyrics to a melody is to append
+
 @example
 \addlyrics @{ @var{the lyrics} @}
 @end example
@@ -741,7 +743,8 @@ More stanzas can be added by adding more
 @end lilypond
 
 The command @code{\addlyrics} cannot handle polyphony settings.  For these
-cases you should use @code{\lyricsto} and @code{\lyricmode}.
+cases you should use @code{\lyricsto} and @code{\lyricmode}, as will be
+introduced in @ref{Entering lyrics}.
 
 
 
@@ -751,13 +754,16 @@ cases you should use @code{\lyricsto} and @code{\lyricmode}.
 @cindex lyrics
 @funindex \lyricmode
 @cindex punctuation
+@cindex spaces, in lyrics
+@cindex quotes, in lyrics
 
-Lyrics are entered in a special input mode.  This mode is introduced
+Lyrics are entered in a special input mode, which can be introduced
 by the keyword @code{\lyricmode}, or by using @code{\addlyrics} or
 @code{\lyricsto}.  In this mode you can enter lyrics,
 with punctuation and accents, and the input @code{d} is not parsed as
 a pitch, but rather as a one letter syllable.  Syllables are entered
 like notes, but with pitches replaced by text.  For example,
+
 @example
 \lyricmode @{ Twin-4 kle4 twin- kle litt- le star2 @}
 @end example
@@ -771,21 +777,35 @@ or @code{\lyricsto}.  For more details see @ref{The Lyrics context}.
 A word or syllable of lyrics begins with an alphabetic character, and ends
 with
 any space or digit.  The following characters can be any character
-that is not a digit or white space.  One important consequence of this
-is that a word can end with @code{@}}.  The following example is
-usually a mistake in the input file.  The syllable includes a @code{@}}, so
-the
-opening brace is not balanced
+that is not a digit or white space.
+
+Any character that is not a digit or white space will be regarded as
+part of the syllable; one important consequence of this is that a word
+can end with @code{@}}, which often leads to the following mistake:
+
 @example
-\lyricmode @{ twinkle@}
+\lyricmode @{ lah- lah@}
 @end example
 
+In this example, the @code{@}} is included in the final syllable, so the
+opening brace is not balanced and the input file will probably not
+compile.
+
+
 @funindex \property in \lyricmode
 
 @noindent
 Similarly, a period which follows an alphabetic sequence is included in
 the resulting string.  As a consequence, spaces must be inserted around
-property commands
+property commands: do @emph{not} write
+
+@example
+\override Score.LyricText #'font-shape = #'italic
+@end example
+
+@noindent
+but instead use
+
 @example
 \override Score . LyricText #'font-shape = #'italic
 @end example
@@ -840,7 +860,7 @@ any 8-bit character with ASCII code over 127, or a two-character
 combination of a backslash followed by one of @code{`}, @code{'},
 @code{"}, or @code{^}.
 
-To define indentifiers containing lyrics, the function @code{lyricmode}
+To define identifiers containing lyrics, the function @code{lyricmode}
 must be used.
 
 @example
@@ -1470,27 +1490,25 @@ text = \lyricmode {
 its fleece was white as snow.
 }
 
-\book{
-  \score{ <<
-    \new Voice = "one" { \melody }
-    \new Lyrics \lyricsto "one" \text
-       >>
-    \layout { }
-  }
-  \markup { \column{
-    \line{ Verse 2. }
-    \line{ All the children laughed and played }
-    \line{ To see a lamb at school. }
-    }
+\score{ <<
+  \new Voice = "one" { \melody }
+  \new Lyrics \lyricsto "one" \text
+>>
+  \layout { }
+}
+\markup { \column{
+  \line{ Verse 2. }
+  \line{ All the children laughed and played }
+  \line{ To see a lamb at school. }
   }
-  \markup{
-    \wordwrap-string #"
-    Verse 3.
+}
+\markup{
+  \wordwrap-string #"
+  Verse 3.
 
-    Mary took it home again,
+  Mary took it home again,
 
-    It was against the rule."
-  }
+  It was against the rule."
 }
 @end lilypond
 
@@ -4586,7 +4604,7 @@ figures below the notes, use
 When using figured bass above the staff with extender lines and
 @code{implicitBassFigures} the lines may become swapped around.
 Maintaining order consistently will be impossible when multiple figures
-have overlapping extender lines.  To avoid this problem, plese
+have overlapping extender lines.  To avoid this problem, please
 use @code{stacking-dir} on @code{BassFigureAlignment}.
 
 
index 87bb1851a3a45b725bf2e63828563472e3ff4bb8..e7531fa3440021ecaa10e07ce418ed25a7fddf61 100644 (file)
@@ -917,7 +917,7 @@ available in
 a big HTML page,
 @end iftex
 @ifhtml
-@uref{source/Documentation/user/lilypond.html, one big page},
+@uref{source/Documentation/user/lilypond-big-page.html, one big page},
 @end ifhtml
 which can be searched easily using the search facility of a web
 browser.
index 653a854b05ebf3dfc83c32cb4bd9f36048fe6e77..f424e502a4da9df2c4028322b341178061868e7e 100644 (file)
@@ -27,7 +27,7 @@ TODO: cleanup
 If you want to add pictures of music to a document, you can simply do it
 the way you would do with other types of pictures.  The pictures are
 created separately, yielding PostScript output or PNG images, and those
-are included into a La@TeX{} or HTML document.
+are included into a @LaTeX{} or HTML document.
 
 @command{lilypond-book} provides a way to automate this process: This
 program extracts snippets of music from your document, runs
@@ -35,7 +35,7 @@ program extracts snippets of music from your document, runs
 substituted for the music.  The line width and font size definitions for
 the music are adjusted to match the layout of your document.
 
-This procedure may be applied to La@TeX{}, HTML, Texinfo or DocBook documents.
+This procedure may be applied to @LaTeX{}, HTML, Texinfo or DocBook documents.
 
 @menu
 * An example of a musicological document::  
@@ -56,7 +56,7 @@ This procedure may be applied to La@TeX{}, HTML, Texinfo or DocBook documents.
 @section An example of a musicological document
 
 @cindex musicology
-@cindex La@TeX{}, music in
+@cindex @LaTeX{}, music in
 @cindex HTML, music in
 @cindex Texinfo, music in
 @cindex DocBook, music in
@@ -64,11 +64,11 @@ Some texts contain music examples.  These texts are musicological
 treatises, songbooks, or manuals like this.  Such texts can be made by
 hand, simply by importing a PostScript figure into the word processor.
 However, there is an automated procedure to reduce the amount of work
-involved in HTML, La@TeX{}, Texinfo and DocBook documents.
+involved in HTML, @LaTeX{}, Texinfo and DocBook documents.
 
 A script called @code{lilypond-book} will extract the music fragments,
 format them, and put back the resulting notation.  Here we show a small
-example for use with La@TeX{}.  The example also contains explanatory
+example for use with @LaTeX{}.  The example also contains explanatory
 text, so we will not comment on it further.
 
 @quotation
@@ -135,7 +135,7 @@ the files in a separate subdirectory @file{dir}.
 Running dvips will produce many warnings about fonts.  They are not
 harmful; please ignore them.
 
-Finally the result of the La@TeX{} example shown above.@footnote{This
+Finally the result of the @LaTeX{} example shown above.@footnote{This
 tutorial is processed with Texinfo, so the example gives slightly
 different results in layout.}  This finishes the tutorial section.
 
@@ -173,16 +173,16 @@ Larger examples can be put into a separate file, and introduced with
 
 
 @node Integrating LaTeX and music
-@section Integrating La@TeX{} and music
+@section Integrating @LaTeX{} and music
 
-La@TeX{} is the de-facto standard for publishing layouts in the exact
+@LaTeX{} is the de-facto standard for publishing layouts in the exact
 sciences.  It is built on top of the @TeX{} typesetting engine,
 providing the best typography available anywhere.
 
 See
 @uref{http://@/www@/.ctan@/.org/@/tex@/-archive/@/info/@/lshort/@/english/,
-@emph{The Not So Short Introduction to La@TeX{}}} for an overview on how
-to use La@TeX{}.
+@emph{The Not So Short Introduction to @LaTeX{}}} for an overview on how
+to use @LaTeX{}.
 
 Music is entered using
 
@@ -207,7 +207,7 @@ or
 @end example
 
 Running @command{lilypond-book} yields a file that can be further
-processed with La@TeX{}.
+processed with @LaTeX{}.
 
 We show some examples here.  The lilypond environment
 
@@ -243,13 +243,13 @@ Currently, you cannot include @code{@{} or @code{@}} within
 The default line width of the music will be adjusted by examining the
 commands in the document preamble, the part of the document before
 @code{\begin@{document@}}.  The @command{lilypond-book} command sends
-these to La@TeX{} to find out how wide the text is.  The line width for
+these to @LaTeX{} to find out how wide the text is.  The line width for
 the music fragments is then adjusted to the text width.  Note that this
 heuristic algorithm can fail easily; in such cases it is necessary to
 use the @code{line-width} music fragment option.
 
 @cindex titling and lilypond-book
-@funindex \header in La@TeX{} documents
+@funindex \header in @LaTeX{} documents
 
 Each snippet will call the following macros if they have been defined by
 the user:
@@ -299,7 +299,7 @@ kpsewhich feta20.tex
 @cindex dvips
 @cindex invoking dvips
 
-For printing the La@TeX{} document you need a DVI to PostScript
+For printing the @LaTeX{} document you need a DVI to PostScript
 translator like @command{dvips}.  To use @command{dvips} to produce
 a PostScript file, add the following options to the @command{dvips}
 command line:
@@ -327,7 +327,7 @@ as if they continued after the end of the fragment.  This can be done by
 breaking the staff and suppressing inclusion of the rest of the lilypond
 output.
 
-In La@TeX{}, define @code{\betweenLilyPondSystem} in such a way that
+In @LaTeX{}, define @code{\betweenLilyPondSystem} in such a way that
 inclusion of other systems is terminated once the required number of
 systems are included.  Since @code{\betweenLilypondSystem} is first
 called @b{after} the first system, including only the first system
@@ -352,7 +352,7 @@ the number of systems you want in the output,
 @end example
 
 Remember that the definition of @code{\betweenLilyPondSystem} is
-effective until @TeX{} quits the current group (such as the La@TeX{}
+effective until @TeX{} quits the current group (such as the @LaTeX{}
 environment) or is overridden by another definition (which is, in
 most cases, for the rest of the document).  To reset your
 definition, write
@@ -443,7 +443,7 @@ produces
 
 @lilypond[fragment,staffsize=11]{<c' e' g'>}
 
-Contrary to La@TeX{}, @code{@@lilypond@{...@}} does not generate an
+Contrary to @LaTeX{}, @code{@@lilypond@{...@}} does not generate an
 in-line image.  It always gets a paragraph of its own.
 
 When using the Texinfo output format, @command{lilypond-book} also
@@ -549,7 +549,7 @@ For HTML (HTML Help, JavaHelp etc.) generation you can use the official DocBook
 In the following, a @q{LilyPond command} refers to any command described
 in the previous sections which is handled by @command{lilypond-book} to
 produce a music snippet.  For simplicity, LilyPond commands are only
-shown in La@TeX{} syntax.
+shown in @LaTeX{} syntax.
 
 Note that the option string is parsed from left to right; if an option
 occurs multiple times, the last one is taken.
@@ -816,7 +816,7 @@ Print version information.
 @refbugs
 
 The Texinfo command @code{@@pagesizes} is not interpreted.  Similarly,
-La@TeX{} commands that change margins and line widths after the preamble
+@LaTeX{} commands that change margins and line widths after the preamble
 are ignored.
 
 Only the first @code{\score} of a LilyPond block is processed.
@@ -837,11 +837,11 @@ output format based on the input filename's extension.
 @item
 @item @file{.html} @tab HTML
 @item @file{.itely} @tab Texinfo
-@item @file{.latex} @tab La@TeX{}
-@item @file{.lytex} @tab La@TeX{}
+@item @file{.latex} @tab @LaTeX{}
+@item @file{.lytex} @tab @LaTeX{}
 @item @file{.lyxml} @tab DocBook
 @item @file{.tely} @tab Texinfo
-@item @file{.tex} @tab La@TeX{}
+@item @file{.tex} @tab @LaTeX{}
 @item @file{.texi} @tab Texinfo
 @item @file{.texinfo} @tab Texinfo
 @item @file{.xml} @tab HTML
index 7e5f04918588b0ece6e36d7d8edad6288f3684a3..27f7117a6621202e591360e7c394d21900600dac 100644 (file)
@@ -7,8 +7,14 @@
 @end ignore
 @setfilename lilypond.info
 @settitle GNU LilyPond
+
 @iftex
 @afourpaper
+@c don't replace quotes with directed quotes
+@tex
+\gdef\SETtxicodequoteundirected{Foo}
+\gdef\SETtxicodequotebacktick{Bla}
+@end tex
 @end iftex
 
 @c  Keep this here, since it pertains to the direntry below.
@@ -55,7 +61,8 @@ Distributions will want to install lilypond.info in postinstall, doing:
 
 @ifhtml
 This document is also available as a
-@uref{source/Documentation/user/lilypond.pdf,PDF}.
+@uref{source/Documentation/user/lilypond.pdf,PDF} and as
+@uref{source/Documentation/user/lilypond-big-page.html,one big page}.
 @end ifhtml
 
 
index 984aae2a14a357924c4773ff0a478f446a9263f4..edc9e653479feed88007c66407d091aa93866be1 100644 (file)
@@ -1,8 +1,8 @@
-\input texinfo @c -*- coding: utf8; mode: texinfo; -*-
+\input texinfo @c -*- coding: utf-8; mode: texinfo; -*-
 @setfilename music-glosssary.info
 @settitle Music Glossary
 
-@documentencoding utf-8
+@documentencoding UTF-8
 @documentlanguage en
 
 @c see lilypond.tely for info installation note
@@ -14,7 +14,7 @@
 @ifhtml
 This document is also available in
 @uref{source/Documentation/user/music-glossary.pdf,PDF}
-and as @uref{source/Documentation/user/music-glossary.html,one big page}.
+and as @uref{source/Documentation/user/music-glossary-big-page.html,one big page}.
 @end ifhtml
 
 @titlepage
index c54307dba0434ce293428af498eadbf366741bf2..5c8c2aaedf8e955df25320fe99dff0f133641121 100644 (file)
@@ -383,8 +383,8 @@ see @ref{Clef}.
 @node Working on text files
 @subsection Working on text files
 
-LilyPond input files are treated like files in most programming languages:
-they are case sensitive, white-space insensitive, expressions are
+LilyPond input files are similar to source files in many common programming languages.
+They are case sensitive, and white-space is generally equivalent.  Expressions are
 formed with curly braces @{ @}, and comments are denoted with @code{%} or
 @code{%@{ ... %@}}.
 
@@ -440,7 +440,7 @@ There are two types of comments.  The percent symbol @samp{%}
 introduces a line comment; anything after @samp{%} on that line is
 ignored.  A block comment marks a whole section of music
 input as a comment.  Anything that is enclosed in @code{%@{} and @code{%@}} is
-ignored.  The following fragment shows possible uses for comments
+ignored.  (Comments do not nest.)  The following fragment shows possible uses for comments
 
 @example
 % notes for twinkle twinkle follow
@@ -572,7 +572,7 @@ a
 @subheading Warning: key signatures and pitches
 
 To determine whether to print an accidental, LilyPond examines the
-pitches and the key signature.  The key signature only effects
+pitches and the key signature.  The key signature only affects
 the @emph{printed} accidentals, not the actual pitches!  This is a
 feature that often causes confusion to newcomers, so let us explain it
 in more detail.
@@ -1463,12 +1463,12 @@ piece or two.  Start with one of the @ref{Templates}, and
 add notes.  If you need any notation that was not covered in the
 tutorial, look at the Notation Reference, starting with
 @ref{Basic notation}.  If you want to write for an instrument
-ensemble which is not covered in the templates,
+ensemble that is not covered in the templates,
 take a look at @ref{Extending the templates}.
 
 Once you have written a few short pieces, read the rest of
 the Learning Manual (chapters 3-5).  There's nothing wrong
-with reading them now, of course!  However, the rest of the
+with reading it now, of course!  However, the rest of the
 Learning Manual assumes that you are familiar with
 LilyPond input.  You may wish to skim these chapters right
 now, and come back to them after you have more experience.
@@ -1483,7 +1483,7 @@ example.
 
 In the rest of the manual, we are much more lax about the
 printed examples: sometimes they may have omitted a
-@code{\relative c'' @{ ... @}}, but in other times a different initial
+@code{\relative c'' @{ ... @}}, but other times a different initial
 pitch may be used (such as @code{c'} or @code{c,,}), and in some cases
 the whole example is in absolute note mode!  However, ambiguities like
 this only exist where the pitches are not important.  In any example
index 8c681e5a61c89e8ece0e0ddd1bbdeb245b984c1a..eb03d1f6992525365b1e3b67755b6f11ae88f572 100644 (file)
@@ -307,8 +307,8 @@ voices:
 } >>
 @end lilypond
 
-To make sure that the just blanked stem doesn't squeeze the too much
-tie, we also lengthen the stem, by setting the @code{length} to
+To make sure that the just-blanked stem doesn't squeeze the tie too much,
+we also lengthen the stem, by setting the @code{length} to
 @code{8},
 
 @lilypond[quote,fragment,relative=2,verbatim]
index f821cc57d73a4fc8b5264ceacb03a4a16f3eb8c9..00345e39dc760f509f46524d42e724aed8d9697f 100644 (file)
@@ -99,6 +99,7 @@ local-WWW-post:
        rm -rf $(outdir)/online-root
        rm -rf $(outdir)/offline-root
        $(PYTHON) $(buildscript-dir)/www_post.py $(PACKAGE_NAME) $(TOPLEVEL_VERSION) $(buildscript-dir) $(top-build-dir)/Documentation/po/$(outdir) $(outdir) "$(WEB_TARGETS)"
+       find $(outdir)/offline-root -type l -delete
 
 
 tree-prefix = $(outdir)
diff --git a/THANKS b/THANKS
index c2b3ebe47834cc4082f0a3c3a251dad8c1075e5b..d81a5a6a0f51ccc2b96a88165c326f5bf44abd4b 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -66,6 +66,7 @@ Martijn Vromans
 Marnen Laibow-Koser
 Maximilian Albert
 Mirosław Doroszewski
+Mike Coleman
 Nicolas Mayencourt
 Nicolas Sceaux
 Orm Finnendahl
@@ -80,6 +81,7 @@ Steven Weber
 Tomas Sauer
 Thomas Scharkowski
 Trevor Bača
+Valentin Villenave
 Vivian Barty-Taylor
 Werner Lemberg
 Wilbert Berendsen
index 7e331ba710aec86a369c5809f567eb0a97c473ce..898d1a06e47c835151d7f737c4f361d90a6d65db 100644 (file)
@@ -15,15 +15,11 @@ non_copied_pages = ['Documentation/user/out-www/lilypond-big-page',
                     'Documentation/user/out-www/lilypond-internals-big-page',
                     'Documentation/user/out-www/music-glossary-big-page',
                     'out-www/examples',
-                    'Documentation/topdocs/out-www/NEWS',
-                    'Documentation/topdocs/out-www/INSTALL',
-                    'Documentation/bibliography/out-www/index',
-                    'Documentation/bibliography/out-www/engraving',
-                    'Documentation/bibliography/out-www/colorado',
-                    'Documentation/bibliography/out-www/computer-notation'
+                    'Documentation/topdocs',
+                    'Documentation/bibliography',
                     'Documentation/out-www/THANKS',
                     'Documentation/out-www/DEDICATION',
-                    'Documentation/topdocs/out-www/AUTHORS']
+                    'input/']
 
 def _doc (s):
     return s
@@ -37,16 +33,20 @@ footer = '''
 <font size="-1">
 %(footer_name_version)s
 <br>
+<address>
+%(footer_report_errors)s </address>
+<br>
+%(footer_suggest_docs)s
 </font>
-<address><font size="-1">
-%(footer_report_errors)s </font></address>
 </p>
 </div>
 '''
 footer_name_version = _doc ('This page is for %(package_name)s-%(package_version)s (%(branch_str)s).')
 footer_report_errors = _doc ('Report errors to <a href="%(mail_address_url)s">%(mail_address)s</a>.')
+footer_suggest_docs = _doc ('Your <a href="%(suggest_docs_url)s">suggestions for the documentation</a> are welcome.')
 
 mail_address = 'http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs'
+suggest_docs_url = 'http://lilypond.org/web/devel/participating/documentation-adding'
 
 header_tag = '<!-- header_tag -->'
 footer_tag = '<!-- footer_tag -->'
@@ -83,6 +83,23 @@ def build_pages_dict (filelist):
             else:
                 pages_dict[g[0]].append (e)
 
+def source_links_replace (m, source_val):
+    return 'href="' + os.path.join (source_val, m.group (1)) + '"'
+
+splitted_docs_re = re.compile ('Documentation/user/out-www/(lilypond|music-glossary)/')
+
+# On systems without symlinks (e.g. Windows), docs are not very usable
+# Get rid of symlinks references here
+# Get rid of symlinks in GNUmakefile.in (local-WWW-post)
+def replace_symlinks_urls (s, prefix):
+    if splitted_docs_re.match (prefix):
+        s = re.sub ('(href|src)="(lily-.*?|.*?-flat-.*?)"', '\\1="../\\2"', s)
+    source_path = os.path.join (os.path.dirname (prefix), 'source')
+    if not os.path.islink (source_path):
+        return s
+    source_val = os.readlink (source_path)
+    return re.sub ('href="source/(.*?)"', lambda m: source_links_replace (m, source_val), s)
+
 def add_header (s):
     """Add header (<BODY> and doctype)"""
     if re.search (header_tag, s) == None:
@@ -102,10 +119,6 @@ def add_header (s):
             s = doctype + s
         return s
 
-def info_external_ref_remove (s):
-    """Remove info's annoying's indication of referencing external document"""
-    return re.sub (' \((lilypond|lilypond-internals|music-glossary)\)</a>', '</a>', s)
-
 def add_title (s):
     # urg
     # maybe find first node?
@@ -149,7 +162,7 @@ def find_translations (prefix, lang_ext):
         if lang_ext != e:
             if e in pages_dict[prefix]:
                 available.append (l)
-            elif lang_ext == '' and l.enabled and not prefix in non_copied_pages:
+            elif lang_ext == '' and l.enabled and reduce (lambda x, y: x and y, [not prefix.startswith (s) for s in non_copied_pages]):
                 # English version of missing translated pages will be written
                 missing.append (e)
     return available, missing
@@ -247,9 +260,9 @@ def add_html_footer (translation,
             in_f.close()
 
             s = re.sub ('%', '%%', s)
+            if target == 'offline':
+                s = replace_symlinks_urls (s, prefix)
             s = add_header (s)
-            # seems to be no more needed
-            # s = info_external_ref_remove (s)
 
             ### add footer
             if re.search (footer_tag, s) == None:
@@ -259,11 +272,6 @@ def add_html_footer (translation,
                 page_flavors = process_links (s, prefix, lang_ext, file_name, missing, target)
                 # Add menu after stripping: must not have autoselection for language menu.
                 page_flavors = add_menu (page_flavors, prefix, available, target, translation)
-            # urg, this stuff is outdated and seems useless, let's disable it
-            #else:
-            #    for e in [l.webext for l in langdefs.LANGUAGES]:
-            #        if not e in pages_dict[prefix]:
-            #            page_flavors[langdefs.lang_file_name (prefix, e, '.html')] = s
             subst = dict ([i for i in globals().items() if type (i[1]) is str])
             subst.update (dict ([i for i in locals().items() if type (i[1]) is str]))
             for k in page_flavors.keys():
@@ -272,6 +280,7 @@ def add_html_footer (translation,
                         subst[name] = translation[page_flavors[k][0]] (subst[name])
                 subst['footer_name_version'] = subst['footer_name_version'] % subst
                 subst['footer_report_errors'] = subst['footer_report_errors'] % subst
+                subst['footer_suggest_docs'] = subst['footer_suggest_docs'] % subst
                 page_flavors[k][1] = page_flavors[k][1] % subst
                 out_f = open (name_filter (k), 'w')
                 out_f.write (page_flavors[k][1])
index cc79192bd85572e8398e44ff8b07c1a431c33d14..ab18da2ace687264a5fd2e9a9b7f1ae16d6467ed 100755 (executable)
@@ -4,7 +4,7 @@ import os
 import os.path
 import shutil
 
-dirs = ['ancient','chords','connecting','contemporary','expressive','education','guitar','parts','pitch','repeats','scheme','spacing','staff','text','vocal','other','non-music','engravers','instrument-specific']
+dirs = ['ancient','chords','connecting','contemporary','expressive','education','guitar','parts','pitch','repeats','scheme','spacing','staff','text','vocal','other','nonmusic','engravers','instrument']
 notsafe=[]
 
 try:
diff --git a/buildscripts/mass-link.py b/buildscripts/mass-link.py
new file mode 100644 (file)
index 0000000..1134955
--- /dev/null
@@ -0,0 +1,64 @@
+#!@PYTHON@
+# mass-link.py
+
+# USAGE:  mass-link.py  [--prepend-suffix SUFFIX]   symbolic | hard   SOURCEDIR DESTDIR FILES
+#
+# create hard or symbolic links to SOURCEDIR/FILES in DESTDIR
+#
+# If --prepend-suffix is specified, link to foo.bar will be called fooSUFFIX.bar.
+# Shell wildcards expansion is performed on FILES.
+
+import sys
+import os
+import glob
+import getopt
+
+print "mass-link.py"
+
+optlist, args = getopt.getopt (sys.argv[1:], '', ['prepend-suffix='])
+link_type, source_dir, dest_dir = args[0:3]
+files = args[3:]
+
+source_dir = os.path.normpath (source_dir)
+dest_dir = os.path.normpath (dest_dir)
+
+prepended_suffix = ''
+for x in optlist:
+    if x[0] == '--prepend-suffix':
+        prepended_suffix = x[1]
+
+if prepended_suffix:
+    def insert_suffix (p):
+        l = p.split ('.')
+        if len (l) >= 2:
+            l[-2] += prepended_suffix
+            return '.'.join (l)
+        return p + prepended_suffix
+else:
+    insert_suffix = lambda p: p
+
+if link_type == 'symbolic':
+    link = os.symlink
+elif link_type == 'hard':
+    link = os.link
+else:
+    sys.stderr.write(sys.argv[0] + ': ' + link_type + ": wrong argument, expected 'symbolic' or 'hard'\n")
+    sys.exit (1)
+
+sourcefiles = []
+for pattern in files:
+    sourcefiles += (glob.glob (os.path.join (source_dir, pattern)))
+
+def relative_path (f):
+    if source_dir == '.':
+        return f
+    return f[len (source_dir) + 1:]
+
+destfiles = map (lambda f: os.path.join (dest_dir, insert_suffix (relative_path (f))), sourcefiles)
+
+def force_link (src,dest):
+    if os.path.exists (dest):
+        os.system ('rm -rf ' + dest)
+    link (src, dest)
+
+map (force_link, sourcefiles, destfiles)
diff --git a/buildscripts/texi-gettext.py b/buildscripts/texi-gettext.py
new file mode 100644 (file)
index 0000000..0080740
--- /dev/null
@@ -0,0 +1,79 @@
+#!@PYTHON@
+# -*- coding: utf-8 -*-
+# texi-gettext.py
+
+# USAGE:  texi-gettext.py [-o OUTDIR] BUILDSCRIPT-DIR LOCALEDIR LANG FILES
+#
+# -o OUTDIR specifies that output files should rather be written in OUTDIR
+#
+
+print "texi_gettext.py"
+
+import sys
+import re
+import os
+import getopt
+import gettext
+
+optlist, args = getopt.getopt (sys.argv[1:],'o:')
+buildscript_dir, localedir, lang = args[0:3]
+
+outdir = '.'
+for x in optlist:
+       if x[0] == '-o':
+               outdir = x[1]
+
+sys.path.append (buildscript_dir)
+import langdefs
+
+double_punct_char_separator = langdefs.LANGDICT[lang].double_punct_char_sep
+t = gettext.translation('lilypond-doc', localedir, [lang])
+_doc = t.gettext
+
+include_re = re.compile (r'@include ((?!lily-).*?)\.texi$', re.M)
+whitespaces = re.compile (r'\s+')
+ref_re = re.compile (r'(?ms)@(rglos|ref)(\{)(.*?)(\})')
+node_section_re = re.compile (r'@(node|(?:unnumbered|appendix)(?:(?:sub){0,2}sec)?|top|chapter|(?:sub){0,2}section|(?:major|chap|(?:sub){0,2})heading)( )(.*?)(\n)')
+menu_entry_re = re.compile (r'\* (.*?)::')
+
+def title_gettext (m):
+       if m.group (2) == '{':
+               r = whitespaces.sub (' ', m.group (3))
+       else:
+               r = m.group (3)
+       return '@' + m.group (1) + m.group (2) + _doc (r) + m.group (4)
+
+def menu_entry_gettext (m):
+       return '* ' + _doc (m.group (1)) + '::'
+
+def include_replace (m, filename):
+       if os.path.exists (os.path.join (os.path.dirname (filename), m.group(1)) + '.texi'):
+               return '@include ' + m.group(1) + '.pdftexi'
+       return m.group(0)
+
+def process_file (filename):
+       print "Processing %s" % filename
+       f = open (filename, 'r')
+       page = f.read ()
+       f.close()
+       page = node_section_re.sub (title_gettext, page)
+       page = ref_re.sub (title_gettext, page)
+       page = menu_entry_re.sub (menu_entry_gettext, page)
+       page = page.replace ("""-- SKELETON FILE --
+When you actually translate this file, please remove these lines as
+well as all `UNTRANSLATED NODE: IGNORE ME' lines.""", '')
+       page = page.replace ('UNTRANSLATED NODE: IGNORE ME', _doc ("This section has not been translated yet; please refer to the manual in English."))
+       includes = include_re.findall (page)
+       page = include_re.sub (lambda m: include_replace (m, filename), page)
+       p = os.path.join (outdir, filename) [:-4] + 'pdftexi'
+       f = open (p, 'w')
+       f.write (page)
+       f.close ()
+       dir = os.path.dirname (filename)
+       for file in includes:
+               p = os.path.join (dir, file) + '.texi'
+               if os.path.exists (p):
+                       process_file (p)
+
+for filename in args[3:]:
+       process_file (filename)
diff --git a/buildscripts/update-snippets.py b/buildscripts/update-snippets.py
new file mode 100644 (file)
index 0000000..d5503c0
--- /dev/null
@@ -0,0 +1,102 @@
+#!@PYTHON@
+# update-snippets.py
+
+# USAGE:  update-snippets.py REFERENCE-DIR TARGET-DIR FILES
+#
+# update ly snippets in TARGET-DIR/FILES with snippets from REFERENCE-DIR/FILES
+#
+# More precisely, each existing FILE in TARGET-DIR is matched to the FILE in
+# REFERENCE-DIR (it the latter does not exist, a warning is given).
+#
+# Shell wildcards expansion is performed on FILES.
+# This script currently supports Texinfo format.
+# Ly snippets preceded with a line containing '@c KEEP LY' in TARGET-DIR/FILES
+# will not be updated.
+# An error occurs if REFERENCE-DIR/FILE and TARGET-DIR/FILE do not have the
+# same snippets count.
+
+import sys
+import os
+import glob
+import re
+
+print "update-snippets.py"
+
+comment_re = re.compile (r'(?<!@)(@c(?:omment)? .*?\n|^@ignore\n.*?\n@end ignore\n)', re.M | re.S)
+snippet_re = re.compile (r'(@lilypond(?:file)?(?:\[.*?\])?(?:\{.+?\}|(?:.|\n)+?@end lilypond))', re.M)
+
+
+def snippet_split (l):
+    r = []
+    for s in [s for s in l if s]:
+        if s.startswith ('@c ') or s.startswith ('@ignore\n') or s.startswith ('@comment '):
+            r.append(s)
+        else:
+            r += [t for t in snippet_re.split (s) if t]
+    return r
+
+def count_snippet (l):
+    k = 0
+    for s in l:
+        if s.startswith ('@lilypond'):
+            k += 1
+    return k
+
+def find_next_snippet (l, k):
+    while not l[k].startswith ('@lilypond'):
+        k += 1
+    return k
+
+exit_code = 0
+
+def update_exit_code (code):
+    global exit_code
+    exit_code = max (code, exit_code)
+
+ref_dir, target_dir = sys.argv [1:3]
+file_patterns = sys.argv[3:]
+
+total_snippet_count = 0
+changed_snippets_count = 0
+
+for pattern in file_patterns:
+    files = glob.glob (os.path.join (target_dir, pattern))
+    for file in files:
+        ref_file = os.path.join (ref_dir, os.path.basename (file))
+        if not os.path.isfile (ref_file):
+            sys.stderr.write ("Warning: %s: no such file.\nReference file for %s not found.\n" % (ref_file, file))
+            continue
+        f = open (file, 'r')
+        target_source = comment_re.split (f.read ())
+        f.close ()
+        if reduce (lambda x, y: x or y, ['-- SKELETON FILE --' in s for s in target_source]):
+            sys.stderr.write ("Skipping skeleton file %s\n" % file)
+            continue
+        g = open (ref_file, 'r')
+        ref_source = comment_re.split (g.read ())
+        target_source = snippet_split (target_source)
+        ref_source = snippet_split (ref_source)
+        if '' in target_source or '' in ref_source:
+            raise "AAAAARGH: unuseful empty string"
+        snippet_count = count_snippet (target_source)
+        if not snippet_count == count_snippet (ref_source):
+            update_exit_code (1)
+            sys.stderr.write ("Error: %s and %s have different snippet counts.\n\
+Update translation by at least adding a @lilypond block where necessary, then rerun this script.\n" % (ref_file, file))
+            continue
+        total_snippet_count += snippet_count
+        c = 0
+        k = -1
+        for j in range (len (target_source)):
+            if target_source[j].startswith ('@lilypond'):
+                k = find_next_snippet (ref_source, k+1)
+                if j > 0 and (not target_source[j-1].startswith ('@c KEEP LY')) and target_source[j] != ref_source[k]:
+                    target_source[j] = ref_source[k]
+                    c += 1
+                    changed_snippets_count += 1
+        f = open (file, 'w')
+        f.write (''.join (target_source))
+        sys.stderr.write ('%s: %d/%d snippets updated\n' % (file, c, snippet_count))
+
+sys.stderr.write ('\nTotal: %d snippets, %d updated snippets.\n' % (total_snippet_count, changed_snippets_count))
+sys.exit (exit_code)
index 39c0747d7e309ad19185765f1f823ddf6ae36e64..a61c75961bf29a08992c4c565eeb8f3a9a384ef4 100644 (file)
@@ -18,17 +18,21 @@ doc_dirs = ['input', 'Documentation', outdir]
 target_pattern = os.path.join (outdir, '%s-root')
 
 static_files = {
-    # ugly hack: the following overwrites HTML Info dir with a link to
-    # the (more useful) documentation index
-    os.path.join ('Documentation/user', outdir, 'index.html'):
-    '''<META HTTP-EQUIV="refresh" content="0;URL=../index.html">
-<html><body>Redirecting to the documentation index...</body></html>\n''',
     os.path.join (outdir, 'index.html'):
     '''<META HTTP-EQUIV="refresh" content="0;URL=Documentation/index.html">
 <html><body>Redirecting to the documentation index...</body></html>\n''',
     os.path.join (outdir, 'VERSION'):
     package_version + '\n' }
 
+import langdefs
+
+# ugly hack: the following overwrites HTML Info dir with a link to
+# the (more useful) documentation index
+for l in langdefs.LANGUAGES:
+    static_files[os.path.join ('Documentation/user', outdir, l.file_name ('index', '.html'))] = \
+                                  '<META HTTP-EQUIV="refresh" content="0;URL=../' + l.file_name ('index', '.html') + \
+                                  '">\n<html><body>Redirecting to the documentation index...</body></html>\n'
+
 for f, contents in static_files.items ():
     open (f, 'w').write (contents)
 
@@ -36,7 +40,6 @@ for f, contents in static_files.items ():
 sys.path.append (buildscript_dir)
 import mirrortree
 import add_html_footer
-import langdefs
 
 sys.stderr.write ("Mirrorring...\n")
 dirs, symlinks, files = mirrortree.walk_tree (
index 6cc66a8a50caff3f6205640a6270ada58bf0c0ca..0aedc718d6ea388218033e2dd4834e8998ea91e6 100644 (file)
@@ -2,7 +2,7 @@ depth = ../../
 
 SUBDIRS = ancient chords connecting contemporary education expressive
 SUBDIRS += guitar parts pitch repeats spacing staff text vocal scheme other 
-SUBDIRS += engravers non-music instrument-specific
+SUBDIRS += engravers nonmusic instrument
 
 STEPMAKE_TEMPLATES=documentation texinfo tex
 LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc
index a05842e207bc3dc168058a697f88e97c0e69c076..726c31e1209ce10feeed2154a27e135732cf5c77 100644 (file)
@@ -33,9 +33,9 @@ These pages show LilyPond examples (snippets) from the
 
 @strong{@uref{vocal/collated-files.html,Vocal music}}
 
-@strong{@uref{non-music/collated-files.html,Non-musical}}
+@strong{@uref{nonmusic/collated-files.html,Non-musical}}
 
-@strong{@uref{instrument-specific/collated-files.html,Instrument-specific}}
+@strong{@uref{instrument/collated-files.html,Instrument-specific}}
 
 @strong{@uref{engravers/collated-files.html,Engravers}}
 
diff --git a/input/lsr/engravers/engravers-one-by-one.ly b/input/lsr/engravers/engravers-one-by-one.ly
new file mode 100644 (file)
index 0000000..c950efe
--- /dev/null
@@ -0,0 +1,278 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+The notation problem, creating a certain symbol, is handled by plugins.
+Each plugin is called an Engraver. In this example, engravers are
+switched on one by one, in the following order:
+
+- note heads
+
+
+- staff symbol,
+
+
+- clef,
+
+
+- stem,
+
+
+- beams, slurs, accents,
+
+
+- accidentals, bar lines, time signature, and key signature.
+
+
+
+Engravers are grouped. For example, note heads, slurs, beams etc. form
+a Voice context. Engravers for key, accidental, bar, etc. form a Staff
+context.
+
+
+You may only see the first example in this document; please download
+this snippet and run it from your own computer. 
+" }
+
+%% sample music
+topVoice =  \relative c' {
+  \key d\major
+  es8([ g] a[ fis])
+  b4
+  b16[-. b-. b-. cis-.]
+  d4->
+}
+
+botVoice =  \relative c' {
+  \key d\major
+  c8[( f] b[ a)]
+  es4
+  es16[-. es-. es-. fis-.]
+  b4->
+}
+
+hoom =  \relative c {
+  \key d \major
+  \clef bass
+  g8-. r
+  r4 
+  fis8-.
+  r8
+  r4
+  b'4->
+}
+
+pah =  \relative c' {
+  r8 b-.
+  r4
+  r8 g8-.
+  r16 g-. r8
+  \clef treble
+  fis'4->
+}
+
+%
+% setup for Request->Element conversion. Guru-only
+%
+
+MyStaff =\context {
+  \type "Engraver_group"
+  \name Staff
+
+  \description "Handles clefs, bar lines, keys, accidentals.  It can contain
+@code{Voice} contexts."
+
+  
+  \consists "Output_property_engraver" 
+  
+  \consists "Font_size_engraver"
+
+  \consists "Volta_engraver"
+  \consists "Separating_line_group_engraver"   
+  \consists "Dot_column_engraver"
+
+  \consists "Ottava_spanner_engraver"
+  \consists "Rest_collision_engraver"
+  \consists "Piano_pedal_engraver"
+  \consists "Piano_pedal_align_engraver"
+  \consists "Instrument_name_engraver"
+  \consists "Grob_pq_engraver"
+  \consists "Forbid_line_break_engraver"
+  \consists "Axis_group_engraver"
+
+  \consists "Pitch_squash_engraver"
+
+  \override VerticalAxisGroup #'minimum-Y-extent = #'(-6 . 6)
+  extraVerticalExtent = ##f
+  verticalExtent = ##f 
+  localKeySignature = #'()
+
+                               % explicitly set instrument, so we don't get 
+                               % weird effects when doing instrument names for
+                               % piano staves
+
+  instrumentName = #'()
+  shortInstrumentName = #'()
+  
+  \accepts "Voice"
+}
+
+
+MyVoice = \context {
+  \type "Engraver_group"
+  \name Voice
+
+  \description "
+    Corresponds to a voice on a staff.  This context handles the
+    conversion of dynamic signs, stems, beams, super- and subscripts,
+    slurs, ties, and rests.
+
+    You have to instantiate this explicitly if you want to have
+    multiple voices on the same staff."
+
+  localKeySignature = #'()
+  \consists "Font_size_engraver"
+  
+                               % must come before all
+  \consists "Output_property_engraver" 
+  \consists "Arpeggio_engraver"
+  \consists "Multi_measure_rest_engraver"
+  \consists "Text_spanner_engraver"
+  \consists "Grob_pq_engraver"
+  \consists "Note_head_line_engraver"
+  \consists "Glissando_engraver"
+  \consists "Ligature_bracket_engraver"
+  \consists "Breathing_sign_engraver"
+                               % \consists "Rest_engraver"
+  \consists "Grace_beam_engraver"
+  \consists "New_fingering_engraver"
+  \consists "Chord_tremolo_engraver"
+  \consists "Percent_repeat_engraver"
+  \consists "Slash_repeat_engraver"
+
+%{
+  Must come before text_engraver, but after note_column engraver.
+
+%}
+  \consists "Text_engraver"
+  \consists "Dynamic_engraver"
+  \consists "Fingering_engraver"
+
+  \consists "Script_column_engraver"
+  \consists "Rhythmic_column_engraver"
+  \consists "Cluster_spanner_engraver"
+  \consists "Tie_engraver"
+  \consists "Tie_engraver"
+  \consists "Tuplet_engraver"
+  \consists "Note_heads_engraver"
+  \consists "Rest_engraver"
+
+  \consists "Skip_event_swallow_translator"
+}
+
+
+\score {
+  \topVoice
+  \layout {
+    \context { \MyStaff }
+    \context { \MyVoice }
+  }
+}
+
+
+MyStaff = \context {
+    \MyStaff
+    \consists "Staff_symbol_engraver"
+}
+
+\score {
+  \topVoice
+  \layout {
+      \context { \MyStaff }
+      \context { \MyVoice }
+            }
+}
+
+MyStaff = \context {
+    \MyStaff
+    \consists "Clef_engraver"
+    \remove "Pitch_squash_engraver"
+}
+
+\score {
+  \topVoice
+  \layout {
+    \context { \MyStaff }
+    \context { \MyVoice }
+  }
+}
+
+MyVoice = \context {
+  \MyVoice
+  \consists "Stem_engraver"
+}
+
+\score {
+  \topVoice
+  \layout {
+    \context { \MyStaff }
+    \context { \MyVoice }
+  }
+}
+
+MyVoice = \context {
+  \MyVoice
+  \consists "Beam_engraver"
+}
+
+\score {
+  \topVoice
+  \layout {
+    \context { \MyStaff }
+    \context { \MyVoice }
+  }
+}
+
+MyVoice= \context {
+  \MyVoice
+  \consists "Phrasing_slur_engraver"
+  \consists "Slur_engraver"
+  \consists "Script_engraver"
+}
+
+
+\score {
+  \topVoice
+  \layout {
+    \context { \MyStaff }
+    \context { \MyVoice }
+  }
+}
+
+MyStaff = \context {
+  \MyStaff
+  \consists "Bar_engraver"
+  \consists "Time_signature_engraver"
+}
+
+\score {
+  \topVoice
+  \layout {
+    \context { \MyStaff }
+    \context { \MyVoice }
+  }
+}
+
+MyStaff = \context {
+  \MyStaff
+  \consists "Accidental_engraver"    
+  \consists "Key_engraver"
+}
+\score {
+  \topVoice
+  \layout {
+    \context { \MyStaff }
+    \context { \MyVoice }
+  }
+}
+
diff --git a/input/lsr/engravers/removing-time-signature-and-bar-lines.ly b/input/lsr/engravers/removing-time-signature-and-bar-lines.ly
new file mode 100644 (file)
index 0000000..9d73b40
--- /dev/null
@@ -0,0 +1,27 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+Engravers can be removed one by one. Here, the time signature and bar
+lines  have been removed.
+
+
+" }
+
+\score {
+   \relative c'' {
+    a b c d
+    d c b a
+  }
+  \layout {
+    raggedright = ##t
+    \context {
+      \Staff
+      whichBar = #""
+      \remove "Time_signature_engraver"
+    }
+  }
+}
+
+
+
diff --git a/input/lsr/expressive/attaching-an-arpeggio-to-different-voices-inside-a-same-staff.ly b/input/lsr/expressive/attaching-an-arpeggio-to-different-voices-inside-a-same-staff.ly
new file mode 100644 (file)
index 0000000..0ad69b7
--- /dev/null
@@ -0,0 +1,32 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+If you've read the manual, you already know that an arpeggio can be
+drawn across to staves in PianoStaff context, if you set the
+connectArpeggios property.
+
+However, printing an arpeggio between two simultaneous chords inside a
+same staff (with more than one voice), is a bit more tricky. As the
+Span_arpeggio_engraver, which is in charge when arpeggios have to be
+connected, is not included by default in the Staff context, you have to
+add it by yourself using the \consists command.
+" }
+
+\layout {
+ \context {
+   \Staff
+   \consists Span_arpeggio_engraver
+ }
+}
+
+\new Staff
+ {
+ \set Staff.connectArpeggios = ##t
+ <<
+  {<e'' g''>4\arpeggio <d'' f''>4 <d'' f''>2 }
+    \\
+  {<d' f' >2\arpeggio  <g' b'>2  }
+ >>
+
+}
diff --git a/input/lsr/instrument-specific/AAA-intro.ly b/input/lsr/instrument-specific/AAA-intro.ly
deleted file mode 100644 (file)
index 4997892..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-%%  Do not edit this file; it is auto-generated from LSR!
-\version "2.11.23"
-
-\header{
-texidoc = "
-@unnumbered Introduction
-
-This document shows examples from the
-@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}.
-
-In the web version of this document, you can click on the file name
-or figure for each example to see the corresponding input file."
-}
-
-% make sure .png  is generated.
-\markup{ "This document is for LilyPond version" #(ly:export(lilypond-version)) }
-
diff --git a/input/lsr/instrument-specific/GNUmakefile b/input/lsr/instrument-specific/GNUmakefile
deleted file mode 100644 (file)
index 43325ab..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-
-depth = ../../../
-
-STEPMAKE_TEMPLATES=documentation texinfo tex
-LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc
-
-## Hmm, would this work?  No -- if we really want examples, move
-## to other dir (input/) comes to mind.
-## examples = font20 ancient-font
-## LOCALSTEPMAKE_TEMPLATES += ly mutopia
-
-EXTRA_DIST_FILES= 
-
-include $(depth)/make/stepmake.make
-
-TITLE=Advanced snippets
diff --git a/input/lsr/instrument-specific/SConscript b/input/lsr/instrument-specific/SConscript
deleted file mode 100644 (file)
index f72bfff..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# -*-python-*-
-
-Import ('env', 'collate')
-collate (title = 'Advanced snippets')
diff --git a/input/lsr/instrument/AAA-intro.ly b/input/lsr/instrument/AAA-intro.ly
new file mode 100644 (file)
index 0000000..4997892
--- /dev/null
@@ -0,0 +1,17 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header{
+texidoc = "
+@unnumbered Introduction
+
+This document shows examples from the
+@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}.
+
+In the web version of this document, you can click on the file name
+or figure for each example to see the corresponding input file."
+}
+
+% make sure .png  is generated.
+\markup{ "This document is for LilyPond version" #(ly:export(lilypond-version)) }
+
diff --git a/input/lsr/instrument/GNUmakefile b/input/lsr/instrument/GNUmakefile
new file mode 100644 (file)
index 0000000..43325ab
--- /dev/null
@@ -0,0 +1,16 @@
+
+depth = ../../../
+
+STEPMAKE_TEMPLATES=documentation texinfo tex
+LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc
+
+## Hmm, would this work?  No -- if we really want examples, move
+## to other dir (input/) comes to mind.
+## examples = font20 ancient-font
+## LOCALSTEPMAKE_TEMPLATES += ly mutopia
+
+EXTRA_DIST_FILES= 
+
+include $(depth)/make/stepmake.make
+
+TITLE=Advanced snippets
diff --git a/input/lsr/instrument/SConscript b/input/lsr/instrument/SConscript
new file mode 100644 (file)
index 0000000..f72bfff
--- /dev/null
@@ -0,0 +1,4 @@
+# -*-python-*-
+
+Import ('env', 'collate')
+collate (title = 'Advanced snippets')
diff --git a/input/lsr/instrument/adding-drum-parts.ly b/input/lsr/instrument/adding-drum-parts.ly
new file mode 100644 (file)
index 0000000..5bf80e3
--- /dev/null
@@ -0,0 +1,45 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+LilyPond makes drums input quite easy, with powerful pre-configured
+tools such as the \drummode function and the DrumStaff context:  drums
+are placed to their own staff positions (with a special clef symbol)
+and have note heads according to the drum. You can easily attach an
+extra symbol to the drum, and restrict the number of lines.
+" }
+
+drh = \drummode { cymc4.^"crash" hhc16^"h.h." hh \repeat "unfold" 5 {hhc8 hho hhc8 hh16 hh} hhc4 r4 r2 }
+drl = \drummode {\repeat "unfold" 3 {bd4 sn8 bd bd4 << bd ss >> } bd8 tommh tommh bd toml toml bd tomfh16 tomfh }
+timb = \drummode { \repeat "unfold" 2 {timh4 ssh timl8 ssh r timh r4 ssh8 timl r4 cb8 cb} }
+
+\score {
+  \repeat "volta" 2 {
+    <<
+      \new DrumStaff \with {
+       drumStyleTable = #timbales-style
+       \override StaffSymbol #'line-count = #2
+       \override BarLine #'bar-size = #2
+      } <<
+       \set Staff.instrumentName = "timbales"
+       \timb
+      >>
+      \new DrumStaff <<
+       \set Staff.instrumentName = "drums"
+       \new DrumVoice {\stemUp \drh }
+       \new DrumVoice {\stemDown \drl }
+      >>
+    >>
+  }
+  \layout {}
+
+  \midi {
+    \context {
+      \Score
+      tempoWholesPerMinute = #(ly:make-moment 120 4)
+      }
+    }
+
+
+}
+
diff --git a/input/lsr/non-music/AAA-intro.ly b/input/lsr/non-music/AAA-intro.ly
deleted file mode 100644 (file)
index 4997892..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-%%  Do not edit this file; it is auto-generated from LSR!
-\version "2.11.23"
-
-\header{
-texidoc = "
-@unnumbered Introduction
-
-This document shows examples from the
-@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}.
-
-In the web version of this document, you can click on the file name
-or figure for each example to see the corresponding input file."
-}
-
-% make sure .png  is generated.
-\markup{ "This document is for LilyPond version" #(ly:export(lilypond-version)) }
-
diff --git a/input/lsr/non-music/GNUmakefile b/input/lsr/non-music/GNUmakefile
deleted file mode 100644 (file)
index 43325ab..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-
-depth = ../../../
-
-STEPMAKE_TEMPLATES=documentation texinfo tex
-LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc
-
-## Hmm, would this work?  No -- if we really want examples, move
-## to other dir (input/) comes to mind.
-## examples = font20 ancient-font
-## LOCALSTEPMAKE_TEMPLATES += ly mutopia
-
-EXTRA_DIST_FILES= 
-
-include $(depth)/make/stepmake.make
-
-TITLE=Advanced snippets
diff --git a/input/lsr/non-music/SConscript b/input/lsr/non-music/SConscript
deleted file mode 100644 (file)
index f72bfff..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# -*-python-*-
-
-Import ('env', 'collate')
-collate (title = 'Advanced snippets')
diff --git a/input/lsr/non-music/clip-systems.ly b/input/lsr/non-music/clip-systems.ly
deleted file mode 100644 (file)
index 66e8e79..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-%%  Do not edit this file; it is auto-generated from LSR!
-\header {
-  texidoc = "Clipping snippets from a finished score
-
-Notes:
-
-@itemize @bullet
-@item If system starts and ends are included, they include extents of the System grob, eg. instrument names.
-@item Grace notes  at the end point of the region are not included
-@item Regions can span multiple systems. In this case, multiple EPS files are generated.
-@end itemize
-
-This file needs to be run separately with @code{-dclip-systems}; the
-collated-files.html of the regression test does not adequately show
-the results.
-
-The result will be files named
-@file{@var{base}-from-@var{start}-to-@var{end}[-@var{count}].eps}.
-"
-
-}
-
-\version "2.11.23"
-
-#(ly:set-option 'clip-systems)
-
-#(set! output-count 1)
-
-origScore = \score{
-    \relative {
-      \set Staff.instrumentName = #"bla"
-      c1
-      d
-      \grace c16
-      e1
-      \key d\major
-      
-      f
-      \break  \clef bass
-      g,
-      fis
-    }  
-}
-
-\book { 
-  \score {
-    \origScore
-    \layout {
-
-      %% each clip-region is a (START . END) pair
-      %% where both are rhythmic-locations.
-      
-      %% (make-rhythmic-locations BAR-NUMBER NUM DEN)
-      %% means NUM/DEN whole-notes into bar numbered BAR-NUMBER
-
-      clip-regions
-      = #(list
-         (cons
-          (make-rhythmic-location 2 0 1)
-          (make-rhythmic-location 4 0 1))
-
-         (cons
-          (make-rhythmic-location 0 0 1)
-          (make-rhythmic-location 4 0 1))
-         
-         (cons
-          (make-rhythmic-location 0 0 1)
-          (make-rhythmic-location 6 0 1))
-       )
-    }
-  }
-}
-
-#(set! output-count 0)
-#(ly:set-option 'clip-systems #f)
-
-\book {
-  \score { \origScore }
-  \markup { \bold \fontsize #6 clips }
-  \score {
-    \lyrics {
-      \markup { from-2.0.1-to-4.0.1-clip.eps }
-      \markup { \epsfile #X #30.0 #(format #f "~a-1-from-2.0.1-to-4.0.1-clip.eps" (ly:parser-output-name parser)) }
-    }
-  }
-}
diff --git a/input/lsr/non-music/toc.ly b/input/lsr/non-music/toc.ly
deleted file mode 100644 (file)
index 8b988ea..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-%%  Do not edit this file; it is auto-generated from LSR!
-\version "2.11.26"
-
-\header {
-  texidoc = "A table of contents is included using
-@code{\\markuplines \\table-of-contents}. The toc items are added with
-the @code{\\tocItem} command."
-}
-
-#(set-default-paper-size "a6")
-
-\book {
-  \markuplines \table-of-contents
-  \pageBreak
-
-  \tocItem \markup "The first score"
-  \score {
-    { 
-      c'1 \pageBreak
-      \mark "A" \tocItem \markup "Mark A"
-      d'
-    }
-  }
-  \pageBreak
-  \tocItem \markup "The second score"
-  \score {
-    { e' }
-    \header { piece = "Second score" }
-  }
-}
\ No newline at end of file
diff --git a/input/lsr/nonmusic/AAA-intro.ly b/input/lsr/nonmusic/AAA-intro.ly
new file mode 100644 (file)
index 0000000..4997892
--- /dev/null
@@ -0,0 +1,17 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header{
+texidoc = "
+@unnumbered Introduction
+
+This document shows examples from the
+@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}.
+
+In the web version of this document, you can click on the file name
+or figure for each example to see the corresponding input file."
+}
+
+% make sure .png  is generated.
+\markup{ "This document is for LilyPond version" #(ly:export(lilypond-version)) }
+
diff --git a/input/lsr/nonmusic/GNUmakefile b/input/lsr/nonmusic/GNUmakefile
new file mode 100644 (file)
index 0000000..43325ab
--- /dev/null
@@ -0,0 +1,16 @@
+
+depth = ../../../
+
+STEPMAKE_TEMPLATES=documentation texinfo tex
+LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc
+
+## Hmm, would this work?  No -- if we really want examples, move
+## to other dir (input/) comes to mind.
+## examples = font20 ancient-font
+## LOCALSTEPMAKE_TEMPLATES += ly mutopia
+
+EXTRA_DIST_FILES= 
+
+include $(depth)/make/stepmake.make
+
+TITLE=Advanced snippets
diff --git a/input/lsr/nonmusic/SConscript b/input/lsr/nonmusic/SConscript
new file mode 100644 (file)
index 0000000..f72bfff
--- /dev/null
@@ -0,0 +1,4 @@
+# -*-python-*-
+
+Import ('env', 'collate')
+collate (title = 'Advanced snippets')
diff --git a/input/lsr/nonmusic/all-headers.ly b/input/lsr/nonmusic/all-headers.ly
new file mode 100644 (file)
index 0000000..abfeee4
--- /dev/null
@@ -0,0 +1,48 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+A demonstration of all headers.
+" }
+
+\header {
+copyright = "copyright"
+title = "title"
+subtitle = "subtitle"
+composer = "composer"
+arranger = "arranger"
+instrument = "instrument"
+metre = "metre"
+opus = "opus"
+piece = "piece"
+poet = "poet"
+texidoc = "All header fields with special meanings."
+  copyright = "public domain"
+  enteredby = "jcn"
+  source = "urtext"
+
+}
+
+
+\score {
+  \relative c'' { c1 c1 c1 c1 }
+}
+
+\score {
+        \relative c'' { c1 c1 c1 c1 }
+       
+       \header {
+
+       title = "localtitle"
+       subtitle = "localsubtitle"
+       composer = "localcomposer"
+       arranger = "localarranger"
+       instrument = "localinstrument"
+       metre = "localmetre"
+       opus = "localopus"
+       piece = "localpiece"
+       poet = "localpoet"
+       copyright = "localcopyright"
+       }
+}
+
diff --git a/input/lsr/nonmusic/clip-systems.ly b/input/lsr/nonmusic/clip-systems.ly
new file mode 100644 (file)
index 0000000..66e8e79
--- /dev/null
@@ -0,0 +1,86 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\header {
+  texidoc = "Clipping snippets from a finished score
+
+Notes:
+
+@itemize @bullet
+@item If system starts and ends are included, they include extents of the System grob, eg. instrument names.
+@item Grace notes  at the end point of the region are not included
+@item Regions can span multiple systems. In this case, multiple EPS files are generated.
+@end itemize
+
+This file needs to be run separately with @code{-dclip-systems}; the
+collated-files.html of the regression test does not adequately show
+the results.
+
+The result will be files named
+@file{@var{base}-from-@var{start}-to-@var{end}[-@var{count}].eps}.
+"
+
+}
+
+\version "2.11.23"
+
+#(ly:set-option 'clip-systems)
+
+#(set! output-count 1)
+
+origScore = \score{
+    \relative {
+      \set Staff.instrumentName = #"bla"
+      c1
+      d
+      \grace c16
+      e1
+      \key d\major
+      
+      f
+      \break  \clef bass
+      g,
+      fis
+    }  
+}
+
+\book { 
+  \score {
+    \origScore
+    \layout {
+
+      %% each clip-region is a (START . END) pair
+      %% where both are rhythmic-locations.
+      
+      %% (make-rhythmic-locations BAR-NUMBER NUM DEN)
+      %% means NUM/DEN whole-notes into bar numbered BAR-NUMBER
+
+      clip-regions
+      = #(list
+         (cons
+          (make-rhythmic-location 2 0 1)
+          (make-rhythmic-location 4 0 1))
+
+         (cons
+          (make-rhythmic-location 0 0 1)
+          (make-rhythmic-location 4 0 1))
+         
+         (cons
+          (make-rhythmic-location 0 0 1)
+          (make-rhythmic-location 6 0 1))
+       )
+    }
+  }
+}
+
+#(set! output-count 0)
+#(ly:set-option 'clip-systems #f)
+
+\book {
+  \score { \origScore }
+  \markup { \bold \fontsize #6 clips }
+  \score {
+    \lyrics {
+      \markup { from-2.0.1-to-4.0.1-clip.eps }
+      \markup { \epsfile #X #30.0 #(format #f "~a-1-from-2.0.1-to-4.0.1-clip.eps" (ly:parser-output-name parser)) }
+    }
+  }
+}
diff --git a/input/lsr/nonmusic/toc.ly b/input/lsr/nonmusic/toc.ly
new file mode 100644 (file)
index 0000000..8b988ea
--- /dev/null
@@ -0,0 +1,30 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.26"
+
+\header {
+  texidoc = "A table of contents is included using
+@code{\\markuplines \\table-of-contents}. The toc items are added with
+the @code{\\tocItem} command."
+}
+
+#(set-default-paper-size "a6")
+
+\book {
+  \markuplines \table-of-contents
+  \pageBreak
+
+  \tocItem \markup "The first score"
+  \score {
+    { 
+      c'1 \pageBreak
+      \mark "A" \tocItem \markup "Mark A"
+      d'
+    }
+  }
+  \pageBreak
+  \tocItem \markup "The second score"
+  \score {
+    { e' }
+    \header { piece = "Second score" }
+  }
+}
\ No newline at end of file
diff --git a/input/lsr/other/adding-drum-parts.ly b/input/lsr/other/adding-drum-parts.ly
deleted file mode 100644 (file)
index 5bf80e3..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-%%  Do not edit this file; it is auto-generated from LSR!
-\version "2.11.23"
-
-\header { texidoc = "
-LilyPond makes drums input quite easy, with powerful pre-configured
-tools such as the \drummode function and the DrumStaff context:  drums
-are placed to their own staff positions (with a special clef symbol)
-and have note heads according to the drum. You can easily attach an
-extra symbol to the drum, and restrict the number of lines.
-" }
-
-drh = \drummode { cymc4.^"crash" hhc16^"h.h." hh \repeat "unfold" 5 {hhc8 hho hhc8 hh16 hh} hhc4 r4 r2 }
-drl = \drummode {\repeat "unfold" 3 {bd4 sn8 bd bd4 << bd ss >> } bd8 tommh tommh bd toml toml bd tomfh16 tomfh }
-timb = \drummode { \repeat "unfold" 2 {timh4 ssh timl8 ssh r timh r4 ssh8 timl r4 cb8 cb} }
-
-\score {
-  \repeat "volta" 2 {
-    <<
-      \new DrumStaff \with {
-       drumStyleTable = #timbales-style
-       \override StaffSymbol #'line-count = #2
-       \override BarLine #'bar-size = #2
-      } <<
-       \set Staff.instrumentName = "timbales"
-       \timb
-      >>
-      \new DrumStaff <<
-       \set Staff.instrumentName = "drums"
-       \new DrumVoice {\stemUp \drh }
-       \new DrumVoice {\stemDown \drl }
-      >>
-    >>
-  }
-  \layout {}
-
-  \midi {
-    \context {
-      \Score
-      tempoWholesPerMinute = #(ly:make-moment 120 4)
-      }
-    }
-
-
-}
-
diff --git a/input/lsr/other/all-headers.ly b/input/lsr/other/all-headers.ly
deleted file mode 100644 (file)
index abfeee4..0000000
+++ /dev/null
@@ -1,48 +0,0 @@
-%%  Do not edit this file; it is auto-generated from LSR!
-\version "2.11.23"
-
-\header { texidoc = "
-A demonstration of all headers.
-" }
-
-\header {
-copyright = "copyright"
-title = "title"
-subtitle = "subtitle"
-composer = "composer"
-arranger = "arranger"
-instrument = "instrument"
-metre = "metre"
-opus = "opus"
-piece = "piece"
-poet = "poet"
-texidoc = "All header fields with special meanings."
-  copyright = "public domain"
-  enteredby = "jcn"
-  source = "urtext"
-
-}
-
-
-\score {
-  \relative c'' { c1 c1 c1 c1 }
-}
-
-\score {
-        \relative c'' { c1 c1 c1 c1 }
-       
-       \header {
-
-       title = "localtitle"
-       subtitle = "localsubtitle"
-       composer = "localcomposer"
-       arranger = "localarranger"
-       instrument = "localinstrument"
-       metre = "localmetre"
-       opus = "localopus"
-       piece = "localpiece"
-       poet = "localpoet"
-       copyright = "localcopyright"
-       }
-}
-
diff --git a/input/lsr/other/engravers-one-by-one.ly b/input/lsr/other/engravers-one-by-one.ly
deleted file mode 100644 (file)
index c950efe..0000000
+++ /dev/null
@@ -1,278 +0,0 @@
-%%  Do not edit this file; it is auto-generated from LSR!
-\version "2.11.23"
-
-\header { texidoc = "
-The notation problem, creating a certain symbol, is handled by plugins.
-Each plugin is called an Engraver. In this example, engravers are
-switched on one by one, in the following order:
-
-- note heads
-
-
-- staff symbol,
-
-
-- clef,
-
-
-- stem,
-
-
-- beams, slurs, accents,
-
-
-- accidentals, bar lines, time signature, and key signature.
-
-
-
-Engravers are grouped. For example, note heads, slurs, beams etc. form
-a Voice context. Engravers for key, accidental, bar, etc. form a Staff
-context.
-
-
-You may only see the first example in this document; please download
-this snippet and run it from your own computer. 
-" }
-
-%% sample music
-topVoice =  \relative c' {
-  \key d\major
-  es8([ g] a[ fis])
-  b4
-  b16[-. b-. b-. cis-.]
-  d4->
-}
-
-botVoice =  \relative c' {
-  \key d\major
-  c8[( f] b[ a)]
-  es4
-  es16[-. es-. es-. fis-.]
-  b4->
-}
-
-hoom =  \relative c {
-  \key d \major
-  \clef bass
-  g8-. r
-  r4 
-  fis8-.
-  r8
-  r4
-  b'4->
-}
-
-pah =  \relative c' {
-  r8 b-.
-  r4
-  r8 g8-.
-  r16 g-. r8
-  \clef treble
-  fis'4->
-}
-
-%
-% setup for Request->Element conversion. Guru-only
-%
-
-MyStaff =\context {
-  \type "Engraver_group"
-  \name Staff
-
-  \description "Handles clefs, bar lines, keys, accidentals.  It can contain
-@code{Voice} contexts."
-
-  
-  \consists "Output_property_engraver" 
-  
-  \consists "Font_size_engraver"
-
-  \consists "Volta_engraver"
-  \consists "Separating_line_group_engraver"   
-  \consists "Dot_column_engraver"
-
-  \consists "Ottava_spanner_engraver"
-  \consists "Rest_collision_engraver"
-  \consists "Piano_pedal_engraver"
-  \consists "Piano_pedal_align_engraver"
-  \consists "Instrument_name_engraver"
-  \consists "Grob_pq_engraver"
-  \consists "Forbid_line_break_engraver"
-  \consists "Axis_group_engraver"
-
-  \consists "Pitch_squash_engraver"
-
-  \override VerticalAxisGroup #'minimum-Y-extent = #'(-6 . 6)
-  extraVerticalExtent = ##f
-  verticalExtent = ##f 
-  localKeySignature = #'()
-
-                               % explicitly set instrument, so we don't get 
-                               % weird effects when doing instrument names for
-                               % piano staves
-
-  instrumentName = #'()
-  shortInstrumentName = #'()
-  
-  \accepts "Voice"
-}
-
-
-MyVoice = \context {
-  \type "Engraver_group"
-  \name Voice
-
-  \description "
-    Corresponds to a voice on a staff.  This context handles the
-    conversion of dynamic signs, stems, beams, super- and subscripts,
-    slurs, ties, and rests.
-
-    You have to instantiate this explicitly if you want to have
-    multiple voices on the same staff."
-
-  localKeySignature = #'()
-  \consists "Font_size_engraver"
-  
-                               % must come before all
-  \consists "Output_property_engraver" 
-  \consists "Arpeggio_engraver"
-  \consists "Multi_measure_rest_engraver"
-  \consists "Text_spanner_engraver"
-  \consists "Grob_pq_engraver"
-  \consists "Note_head_line_engraver"
-  \consists "Glissando_engraver"
-  \consists "Ligature_bracket_engraver"
-  \consists "Breathing_sign_engraver"
-                               % \consists "Rest_engraver"
-  \consists "Grace_beam_engraver"
-  \consists "New_fingering_engraver"
-  \consists "Chord_tremolo_engraver"
-  \consists "Percent_repeat_engraver"
-  \consists "Slash_repeat_engraver"
-
-%{
-  Must come before text_engraver, but after note_column engraver.
-
-%}
-  \consists "Text_engraver"
-  \consists "Dynamic_engraver"
-  \consists "Fingering_engraver"
-
-  \consists "Script_column_engraver"
-  \consists "Rhythmic_column_engraver"
-  \consists "Cluster_spanner_engraver"
-  \consists "Tie_engraver"
-  \consists "Tie_engraver"
-  \consists "Tuplet_engraver"
-  \consists "Note_heads_engraver"
-  \consists "Rest_engraver"
-
-  \consists "Skip_event_swallow_translator"
-}
-
-
-\score {
-  \topVoice
-  \layout {
-    \context { \MyStaff }
-    \context { \MyVoice }
-  }
-}
-
-
-MyStaff = \context {
-    \MyStaff
-    \consists "Staff_symbol_engraver"
-}
-
-\score {
-  \topVoice
-  \layout {
-      \context { \MyStaff }
-      \context { \MyVoice }
-            }
-}
-
-MyStaff = \context {
-    \MyStaff
-    \consists "Clef_engraver"
-    \remove "Pitch_squash_engraver"
-}
-
-\score {
-  \topVoice
-  \layout {
-    \context { \MyStaff }
-    \context { \MyVoice }
-  }
-}
-
-MyVoice = \context {
-  \MyVoice
-  \consists "Stem_engraver"
-}
-
-\score {
-  \topVoice
-  \layout {
-    \context { \MyStaff }
-    \context { \MyVoice }
-  }
-}
-
-MyVoice = \context {
-  \MyVoice
-  \consists "Beam_engraver"
-}
-
-\score {
-  \topVoice
-  \layout {
-    \context { \MyStaff }
-    \context { \MyVoice }
-  }
-}
-
-MyVoice= \context {
-  \MyVoice
-  \consists "Phrasing_slur_engraver"
-  \consists "Slur_engraver"
-  \consists "Script_engraver"
-}
-
-
-\score {
-  \topVoice
-  \layout {
-    \context { \MyStaff }
-    \context { \MyVoice }
-  }
-}
-
-MyStaff = \context {
-  \MyStaff
-  \consists "Bar_engraver"
-  \consists "Time_signature_engraver"
-}
-
-\score {
-  \topVoice
-  \layout {
-    \context { \MyStaff }
-    \context { \MyVoice }
-  }
-}
-
-MyStaff = \context {
-  \MyStaff
-  \consists "Accidental_engraver"    
-  \consists "Key_engraver"
-}
-\score {
-  \topVoice
-  \layout {
-    \context { \MyStaff }
-    \context { \MyVoice }
-  }
-}
-
diff --git a/input/lsr/other/removing-time-signature-and-bar-lines.ly b/input/lsr/other/removing-time-signature-and-bar-lines.ly
deleted file mode 100644 (file)
index 9d73b40..0000000
+++ /dev/null
@@ -1,27 +0,0 @@
-%%  Do not edit this file; it is auto-generated from LSR!
-\version "2.11.23"
-
-\header { texidoc = "
-Engravers can be removed one by one. Here, the time signature and bar
-lines  have been removed.
-
-
-" }
-
-\score {
-   \relative c'' {
-    a b c d
-    d c b a
-  }
-  \layout {
-    raggedright = ##t
-    \context {
-      \Staff
-      whichBar = #""
-      \remove "Time_signature_engraver"
-    }
-  }
-}
-
-
-
diff --git a/input/lsr/pitch/combining-two-parts-on-the-same-staff.ly b/input/lsr/pitch/combining-two-parts-on-the-same-staff.ly
new file mode 100644 (file)
index 0000000..3569f3f
--- /dev/null
@@ -0,0 +1,74 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+The part combiner tool ( \partcombine command ) allows you to combine
+different parts on a same Staff. You can choose whether you want or
+don't want to add texts such as \"solo\" or \"a2\", by defining the
+printPartCombineTexts property.
+
+For vocal scores (hymns), there is no need to add solo/a2 texts, so
+they should be switched off. However, you'd better not use it if there
+are any solos, as they won't be indicated. In such cases, you may
+simply wan't to use standard LilyPond polyphony.
+
+This snippet presents the three ways two parts can be printed on a same
+staff : standard polyphony, \partcombine whitout texts, and
+\partcombine with texts.
+
+
+" }
+
+musicUp = {     \time 4/4
+                       \relative c'' {
+                               a4 c4.(g8) a4 |
+                               g4 e' g,( a8 b) | 
+                               c b a2.
+                       }
+}
+
+musicDown = {
+                       \relative c'' {
+                               g4 e4.(d8) c4 |
+                               r2 g'4( f8 e) |
+                               d2 a
+                       }
+}
+\score{
+       \new Staff {
+               \set Staff.instrumentName = "Standard polyphony  "
+               << \musicUp  \\ \musicDown >>
+       }
+       \layout{ 
+       indent = 6.0\cm 
+       }
+}
+
+\score{
+       \context Staff {
+                       \set Staff.instrumentName = "PartCombine without texts  "
+                       \partcombine \musicUp \musicDown
+       }
+       \layout{
+               indent = 6.0\cm
+               \context {
+                       \Voice
+                       printPartCombineTexts = ##f
+               }
+       }
+}
+
+\score{
+       \context Staff {
+                       \set Staff.instrumentName = "PartCombine with texts  "
+                       \partcombine \musicUp \musicDown
+       }
+       \layout{
+               indent = 6.0\cm
+               \context {
+                       \Voice
+                       printPartCombineTexts = ##t
+               }
+       }
+}
+
diff --git a/input/lsr/pitch/forced-and-cautionary-accidentals.ly b/input/lsr/pitch/forced-and-cautionary-accidentals.ly
new file mode 100644 (file)
index 0000000..1a29e94
--- /dev/null
@@ -0,0 +1,26 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+ Normally accidentals are printed automatically, but you may also print
+them manually. A reminder accidental can be forced by adding an
+exclamation mark ! after the pitch. A cautionary accidental (i.e., an
+accidental within parentheses) can be obtained by adding the question
+mark `?' after the pitch.
+
+
+
+Cautionary accidentals may be made smaller, or placed inside
+parentheses 
+" }
+
+{
+cis' cis' cis'! cis'?
+
+    c''4
+    cis''?4
+    \once \override Staff.AccidentalCautionary #'font-size = #-2
+    cis''?4
+    \once \override Staff.AccidentalCautionary #'parenthesized = ##t
+    cis''?4
+}
diff --git a/input/lsr/pitch/preventing-stem-extension.ly b/input/lsr/pitch/preventing-stem-extension.ly
new file mode 100644 (file)
index 0000000..731a76e
--- /dev/null
@@ -0,0 +1,30 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+Extending stems to the center line may be prevented using
+@code{no-stem-extend}.
+
+
+" }
+
+\score { 
+  \context Voice \relative c {
+       \context Staff <<
+               \new Voice { 
+                       f2 f8 g a b 
+                       \override Stem  #'no-stem-extend = ##t
+                       f2 f8 g a b
+               }
+               \new Voice { 
+                       c''2 c8 b a g
+                       \override Stem  #'no-stem-extend = ##t
+                       c2 c8 b a g
+               }
+       >>
+       
+  }
+
+}
+
+
diff --git a/input/lsr/pitch/rest-styles.ly b/input/lsr/pitch/rest-styles.ly
new file mode 100644 (file)
index 0000000..c14c927
--- /dev/null
@@ -0,0 +1,39 @@
+%%  Do not edit this file; it is auto-generated from LSR!
+\version "2.11.23"
+
+\header { texidoc = "
+Rests may be used in various styles.
+
+
+
+" }
+
+\layout {
+    indent = 0.0
+    raggedright = ##t
+}
+
+\context Staff \relative c {
+    \set Score.timing = ##f
+    \override Staff.Rest  #'style = #'mensural
+    r\maxima^\markup \typewriter { mensural }
+    r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 r128
+    \bar "" 
+
+    \override Staff.Rest  #'style = #'neomensural
+    r\maxima^\markup \typewriter { neomensural }
+    r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 r128
+    \bar "" 
+
+    \override Staff.Rest  #'style = #'classical
+    r\maxima^\markup \typewriter { classical }
+    r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 r128
+    \bar ""
+    
+    \override Staff.Rest  #'style = #'default
+    r\maxima^\markup \typewriter { default }
+    r\longa r\breve r1 r2 r4 r8 r16 r32 r64 r128 r128
+    
+}
+
+
index af209b82fe43f57eb8edbd4d94d37fb88b2b4421..d212c6cec87abe681d75dd0cf11adeb4804c8d36 100644 (file)
@@ -1,6 +1,9 @@
 depth = ../../
 
-SUBDIRS = ancient chords connecting contemporary guitar parts repeats spacing staff text vocal expressive scheme other education pitch
+SUBDIRS = ancient chords connecting contemporary education expressive
+SUBDIRS += guitar parts pitch repeats spacing staff text vocal scheme other 
+SUBDIRS += engravers nonmusic instrument
+
 
 STEPMAKE_TEMPLATES=documentation texinfo tex
 LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc
diff --git a/input/new/instrument-specific/AAA-intro.ly b/input/new/instrument-specific/AAA-intro.ly
deleted file mode 100644 (file)
index 93c62a9..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-\version "2.10.0"
-
-\header{
-texidoc = "
-@unnumbered Introduction
-
-This document shows examples from the
-@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}.
-
-In the web version of this document, you can click on the file name
-or figure for each example to see the corresponding input file."
-}
-
-% make sure .png  is generated.
-\markup{ "This document is for LilyPond version" #(ly:export(lilypond-version)) }
-
diff --git a/input/new/instrument-specific/GNUmakefile b/input/new/instrument-specific/GNUmakefile
deleted file mode 100644 (file)
index 43325ab..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-
-depth = ../../../
-
-STEPMAKE_TEMPLATES=documentation texinfo tex
-LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc
-
-## Hmm, would this work?  No -- if we really want examples, move
-## to other dir (input/) comes to mind.
-## examples = font20 ancient-font
-## LOCALSTEPMAKE_TEMPLATES += ly mutopia
-
-EXTRA_DIST_FILES= 
-
-include $(depth)/make/stepmake.make
-
-TITLE=Advanced snippets
diff --git a/input/new/instrument-specific/SConscript b/input/new/instrument-specific/SConscript
deleted file mode 100644 (file)
index f72bfff..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# -*-python-*-
-
-Import ('env', 'collate')
-collate (title = 'Advanced snippets')
diff --git a/input/new/instrument/AAA-intro.ly b/input/new/instrument/AAA-intro.ly
new file mode 100644 (file)
index 0000000..93c62a9
--- /dev/null
@@ -0,0 +1,16 @@
+\version "2.10.0"
+
+\header{
+texidoc = "
+@unnumbered Introduction
+
+This document shows examples from the
+@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}.
+
+In the web version of this document, you can click on the file name
+or figure for each example to see the corresponding input file."
+}
+
+% make sure .png  is generated.
+\markup{ "This document is for LilyPond version" #(ly:export(lilypond-version)) }
+
diff --git a/input/new/instrument/GNUmakefile b/input/new/instrument/GNUmakefile
new file mode 100644 (file)
index 0000000..43325ab
--- /dev/null
@@ -0,0 +1,16 @@
+
+depth = ../../../
+
+STEPMAKE_TEMPLATES=documentation texinfo tex
+LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc
+
+## Hmm, would this work?  No -- if we really want examples, move
+## to other dir (input/) comes to mind.
+## examples = font20 ancient-font
+## LOCALSTEPMAKE_TEMPLATES += ly mutopia
+
+EXTRA_DIST_FILES= 
+
+include $(depth)/make/stepmake.make
+
+TITLE=Advanced snippets
diff --git a/input/new/instrument/SConscript b/input/new/instrument/SConscript
new file mode 100644 (file)
index 0000000..f72bfff
--- /dev/null
@@ -0,0 +1,4 @@
+# -*-python-*-
+
+Import ('env', 'collate')
+collate (title = 'Advanced snippets')
diff --git a/input/new/non-music/AAA-intro.ly b/input/new/non-music/AAA-intro.ly
deleted file mode 100644 (file)
index 93c62a9..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-\version "2.10.0"
-
-\header{
-texidoc = "
-@unnumbered Introduction
-
-This document shows examples from the
-@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}.
-
-In the web version of this document, you can click on the file name
-or figure for each example to see the corresponding input file."
-}
-
-% make sure .png  is generated.
-\markup{ "This document is for LilyPond version" #(ly:export(lilypond-version)) }
-
diff --git a/input/new/non-music/GNUmakefile b/input/new/non-music/GNUmakefile
deleted file mode 100644 (file)
index 43325ab..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-
-depth = ../../../
-
-STEPMAKE_TEMPLATES=documentation texinfo tex
-LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc
-
-## Hmm, would this work?  No -- if we really want examples, move
-## to other dir (input/) comes to mind.
-## examples = font20 ancient-font
-## LOCALSTEPMAKE_TEMPLATES += ly mutopia
-
-EXTRA_DIST_FILES= 
-
-include $(depth)/make/stepmake.make
-
-TITLE=Advanced snippets
diff --git a/input/new/non-music/SConscript b/input/new/non-music/SConscript
deleted file mode 100644 (file)
index f72bfff..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-# -*-python-*-
-
-Import ('env', 'collate')
-collate (title = 'Advanced snippets')
diff --git a/input/new/non-music/clip-systems.ly b/input/new/non-music/clip-systems.ly
deleted file mode 100644 (file)
index 06247e7..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-\header {
-  texidoc = "Clipping snippets from a finished score
-
-Notes:
-
-@itemize @bullet
-@item If system starts and ends are included, they include extents of the System grob, eg. instrument names.
-@item Grace notes  at the end point of the region are not included
-@item Regions can span multiple systems. In this case, multiple EPS files are generated.
-@end itemize
-
-This file needs to be run separately with @code{-dclip-systems}; the
-collated-files.html of the regression test does not adequately show
-the results.
-
-The result will be files named
-@file{@var{base}-from-@var{start}-to-@var{end}[-@var{count}].eps}.
-"
-
-}
-
-\version "2.10.0"
-
-#(ly:set-option 'clip-systems)
-
-#(set! output-count 1)
-
-origScore = \score{
-    \relative {
-      \set Staff.instrumentName = #"bla"
-      c1
-      d
-      \grace c16
-      e1
-      \key d\major
-      
-      f
-      \break  \clef bass
-      g,
-      fis
-    }  
-}
-
-\book { 
-  \score {
-    \origScore
-    \layout {
-
-      %% each clip-region is a (START . END) pair
-      %% where both are rhythmic-locations.
-      
-      %% (make-rhythmic-locations BAR-NUMBER NUM DEN)
-      %% means NUM/DEN whole-notes into bar numbered BAR-NUMBER
-
-      clip-regions
-      = #(list
-         (cons
-          (make-rhythmic-location 2 0 1)
-          (make-rhythmic-location 4 0 1))
-
-         (cons
-          (make-rhythmic-location 0 0 1)
-          (make-rhythmic-location 4 0 1))
-         
-         (cons
-          (make-rhythmic-location 0 0 1)
-          (make-rhythmic-location 6 0 1))
-       )
-    }
-  }
-}
-
-#(set! output-count 0)
-#(ly:set-option 'clip-systems #f)
-
-\book {
-  \score { \origScore }
-  \markup { \bold \fontsize #6 clips }
-  \score {
-    \lyrics {
-      \markup { from-2.0.1-to-4.0.1-clip.eps }
-      \markup { \epsfile #X #30.0 #(format #f "~a-1-from-2.0.1-to-4.0.1-clip.eps" (ly:parser-output-name parser)) }
-    }
-  }
-}
diff --git a/input/new/non-music/toc.ly b/input/new/non-music/toc.ly
deleted file mode 100644 (file)
index e6164ea..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-\version "2.11.26"
-
-\header {
-  texidoc = "A table of contents is included using
-@code{\\markuplines \\table-of-contents}. The toc items are added with
-the @code{\\tocItem} command."
-}
-
-#(set-default-paper-size "a6")
-
-\book {
-  \markuplines \table-of-contents
-  \pageBreak
-
-  \tocItem \markup "The first score"
-  \score {
-    { 
-      c'1 \pageBreak
-      \mark "A" \tocItem \markup "Mark A"
-      d'
-    }
-  }
-  \pageBreak
-  \tocItem \markup "The second score"
-  \score {
-    { e' }
-    \header { piece = "Second score" }
-  }
-}
\ No newline at end of file
diff --git a/input/new/nonmusic/AAA-intro.ly b/input/new/nonmusic/AAA-intro.ly
new file mode 100644 (file)
index 0000000..93c62a9
--- /dev/null
@@ -0,0 +1,16 @@
+\version "2.10.0"
+
+\header{
+texidoc = "
+@unnumbered Introduction
+
+This document shows examples from the
+@uref{http://lsr@/.dsi@/.unimi@/.it,LilyPond Snippet Repository}.
+
+In the web version of this document, you can click on the file name
+or figure for each example to see the corresponding input file."
+}
+
+% make sure .png  is generated.
+\markup{ "This document is for LilyPond version" #(ly:export(lilypond-version)) }
+
diff --git a/input/new/nonmusic/GNUmakefile b/input/new/nonmusic/GNUmakefile
new file mode 100644 (file)
index 0000000..43325ab
--- /dev/null
@@ -0,0 +1,16 @@
+
+depth = ../../../
+
+STEPMAKE_TEMPLATES=documentation texinfo tex
+LOCALSTEPMAKE_TEMPLATES=lilypond ly lysdoc
+
+## Hmm, would this work?  No -- if we really want examples, move
+## to other dir (input/) comes to mind.
+## examples = font20 ancient-font
+## LOCALSTEPMAKE_TEMPLATES += ly mutopia
+
+EXTRA_DIST_FILES= 
+
+include $(depth)/make/stepmake.make
+
+TITLE=Advanced snippets
diff --git a/input/new/nonmusic/SConscript b/input/new/nonmusic/SConscript
new file mode 100644 (file)
index 0000000..f72bfff
--- /dev/null
@@ -0,0 +1,4 @@
+# -*-python-*-
+
+Import ('env', 'collate')
+collate (title = 'Advanced snippets')
diff --git a/input/new/nonmusic/clip-systems.ly b/input/new/nonmusic/clip-systems.ly
new file mode 100644 (file)
index 0000000..06247e7
--- /dev/null
@@ -0,0 +1,85 @@
+\header {
+  texidoc = "Clipping snippets from a finished score
+
+Notes:
+
+@itemize @bullet
+@item If system starts and ends are included, they include extents of the System grob, eg. instrument names.
+@item Grace notes  at the end point of the region are not included
+@item Regions can span multiple systems. In this case, multiple EPS files are generated.
+@end itemize
+
+This file needs to be run separately with @code{-dclip-systems}; the
+collated-files.html of the regression test does not adequately show
+the results.
+
+The result will be files named
+@file{@var{base}-from-@var{start}-to-@var{end}[-@var{count}].eps}.
+"
+
+}
+
+\version "2.10.0"
+
+#(ly:set-option 'clip-systems)
+
+#(set! output-count 1)
+
+origScore = \score{
+    \relative {
+      \set Staff.instrumentName = #"bla"
+      c1
+      d
+      \grace c16
+      e1
+      \key d\major
+      
+      f
+      \break  \clef bass
+      g,
+      fis
+    }  
+}
+
+\book { 
+  \score {
+    \origScore
+    \layout {
+
+      %% each clip-region is a (START . END) pair
+      %% where both are rhythmic-locations.
+      
+      %% (make-rhythmic-locations BAR-NUMBER NUM DEN)
+      %% means NUM/DEN whole-notes into bar numbered BAR-NUMBER
+
+      clip-regions
+      = #(list
+         (cons
+          (make-rhythmic-location 2 0 1)
+          (make-rhythmic-location 4 0 1))
+
+         (cons
+          (make-rhythmic-location 0 0 1)
+          (make-rhythmic-location 4 0 1))
+         
+         (cons
+          (make-rhythmic-location 0 0 1)
+          (make-rhythmic-location 6 0 1))
+       )
+    }
+  }
+}
+
+#(set! output-count 0)
+#(ly:set-option 'clip-systems #f)
+
+\book {
+  \score { \origScore }
+  \markup { \bold \fontsize #6 clips }
+  \score {
+    \lyrics {
+      \markup { from-2.0.1-to-4.0.1-clip.eps }
+      \markup { \epsfile #X #30.0 #(format #f "~a-1-from-2.0.1-to-4.0.1-clip.eps" (ly:parser-output-name parser)) }
+    }
+  }
+}
diff --git a/input/new/nonmusic/toc.ly b/input/new/nonmusic/toc.ly
new file mode 100644 (file)
index 0000000..e6164ea
--- /dev/null
@@ -0,0 +1,29 @@
+\version "2.11.26"
+
+\header {
+  texidoc = "A table of contents is included using
+@code{\\markuplines \\table-of-contents}. The toc items are added with
+the @code{\\tocItem} command."
+}
+
+#(set-default-paper-size "a6")
+
+\book {
+  \markuplines \table-of-contents
+  \pageBreak
+
+  \tocItem \markup "The first score"
+  \score {
+    { 
+      c'1 \pageBreak
+      \mark "A" \tocItem \markup "Mark A"
+      d'
+    }
+  }
+  \pageBreak
+  \tocItem \markup "The second score"
+  \score {
+    { e' }
+    \header { piece = "Second score" }
+  }
+}
\ No newline at end of file
index 5b2b4f198c0bdf6689966d489ddd69fa2dc459ba..434f76fa83600da06f150f5b2af8765e48fd2fbd 100644 (file)
@@ -187,7 +187,6 @@ stderr of this run."
 %% Repeats
 \test "" ##[ \repeat volta 2 { c d } #]                % VoltaRepeatedMusic
 \test "" ##[ \repeat unfold 2 { c d } #]               % UnfoldedRepeatedMusic
-\test "" ##[ \repeat fold 2 { c d } #]         % FoldedRepeatedMusic
 \test "" ##[ \repeat percent 2 { c d } #]              % PercentRepeatedMusic
 \test "" ##[ \repeat tremolo 4 { c16 d } #]            % TremoloRepeatedMusic
 \test "" ##[ \repeat volta 2 { c4 d } \alternative { { c d } { e f } } #] % 
diff --git a/input/regression/repeat-fold.ly b/input/regression/repeat-fold.ly
deleted file mode 100644 (file)
index 7a5f1c6..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-\version "2.10.0"
-
-\header{
-texidoc="
-Folded repeat may not make sense without alternatives, and there
-should not be more alternatives than repeats.
-"
-}
-
-\paper { ragged-right = ##t } 
-
-\context Staff  \relative c'' {
-    \repeat fold 3 { c^"3x 0alt" d }
-    % less alts than body
-    \repeat fold 4 { c^"4x 2alt" d } \alternative { e f }
-    % more alts than body
-    \repeat fold 2 { c^"2x 3alt" d } \alternative { e f g }
-  }
-
-
index 03ac55f35b974c09e33c61099739ef8dd41e113e..2ff7e2304add80949f714758ea831428af1c80ff 100644 (file)
@@ -1,22 +1,16 @@
-\version "2.10.0"
+\version "2.11.27"
 
 \header{
-  texidoc="
-LilyPond has three modes for repeats: folded, unfolded and
-semi-unfolded.  Unfolded repeats are fully written out. Semi unfolded
-repeats have the body written and all alternatives sequentially.
-Folded repeats have the body written and all alternatives
-simultaneo.ly.  If the number of alternatives is larger than the
-repeat count, the excess alternatives are ignored.  If the number of
-alternatives is smaller, the first alternative is multiplied to get to
-the number of repeats.
+  texidoc="LilyPond has two modes for repeats: unfolded and semi-unfolded. 
+Unfolded repeats are fully written out.  Semi unfolded repeats have the body
+written and all alternatives sequentially.  If the number of alternatives is
+larger than the repeat count, the excess alternatives are ignored.  If the
+number of alternatives is smaller, the first alternative is multiplied to
+get to the number of repeats.
 
-Unfolded behavior:
-"
+Unfolded behavior:"
 }
 
-
-
 \context Voice \relative c'' {
   \repeat unfold 3 { c^"3x 0a" d }
   %% less alts than body
@@ -24,5 +18,3 @@ Unfolded behavior:
   %% more alts than body
   \repeat unfold 2 { c^"2x 3a" d } \alternative { e f g } 
 }
-
-
index 793b4c58757f796f5ff6b07a4123139bf4c8c3dc..a3b19e468d2bf4ea6ad990bab60d55fa76fde6df 100644 (file)
@@ -13,7 +13,7 @@
 
 LY_DEFINE (ly_reset_all_fonts, "ly:reset-all-fonts", 0, 0, 0,
           (),
-          "Forget all about previously loaded fonts. ")
+          "Forget all about previously loaded fonts.")
 {
   delete all_fonts_global;
   all_fonts_global = new All_font_metrics (global_path.to_string ());
@@ -24,7 +24,7 @@ LY_DEFINE (ly_reset_all_fonts, "ly:reset-all-fonts", 0, 0, 0,
 
 LY_DEFINE (ly_font_load, "ly:font-load", 1, 0, 0,
           (SCM name),
-          "Load the font @var{name}. ")
+          "Load the font @var{name}.")
 {
   LY_ASSERT_TYPE (scm_is_string, name, 1);
   
index 3b529ed34e8b73a662081d204ba7b2001a63dd10..45236e6ca5a889efa7e05267315c99be7a4ff53f 100644 (file)
@@ -13,8 +13,8 @@
 
 LY_DEFINE (ly_relative_group_extent, "ly:relative-group-extent",
           3, 0, 0, (SCM elements, SCM common, SCM axis),
-          "Determine the extent of @var{elements} relative to @var{common} in the "
-          "@var{axis} direction.")
+          "Determine the extent of @var{elements} relative to @var{common} in the"
+          " @var{axis} direction.")
 {
   Grob_array *ga = unsmob_grob_array (elements);
 
index 567504cf070c739e21ecf1ab1fbcc5f18b8a3d30..e00f1ded496965f1882390f31976f613b26debb7 100644 (file)
@@ -15,8 +15,8 @@
 
 LY_DEFINE (ly_make_book, "ly:make-book",
           2, 0, 1, (SCM paper, SCM header, SCM scores),
-          "Make a \\book of @var{paper} and @var{header} (which may be #f as well)  "
-          "containing @code{\\scores}.")
+          "Make a @code{\\book} of @var{paper} and @var{header}"
+          " (which may be @code{#f} as well) containing @code{\\scores}.")
 {
   Output_def *odef = unsmob_output_def (paper);
   LY_ASSERT_SMOB (Output_def, paper, 1);
@@ -39,10 +39,9 @@ LY_DEFINE (ly_book_process, "ly:book-process",
                     SCM default_paper,
                     SCM default_layout,
                     SCM output),
-          "Print book. @var{output} is passed to the backend unchanged. "
-          "Eg. it may be "
-          "a string (for file based outputs) or a socket (for network based "
-          "output).")
+          "Print book.  @var{output} is passed to the backend unchanged."
+          "  For example, it may be a string (for file based outputs)"
+          " or a socket (for network based output).")
 {
   Book *book = unsmob_book (book_smob);
 
@@ -67,10 +66,9 @@ LY_DEFINE (ly_book_process_to_systems, "ly:book-process-to-systems",
                     SCM default_paper,
                     SCM default_layout,
                     SCM output),
-          "Print book. @var{output} is passed to the backend unchanged. "
-          "Eg. it may be "
-          "a string (for file based outputs) or a socket (for network based "
-          "output).")
+          "Print book.  @var{output} is passed to the backend unchanged."
+          "  For example, it may be a string (for file based outputs)"
+          " or a socket (for network based output).")
 {
   LY_ASSERT_SMOB (Book, book_smob, 1);
   LY_ASSERT_SMOB (Output_def, default_paper, 2);
@@ -91,7 +89,7 @@ LY_DEFINE (ly_book_process_to_systems, "ly:book-process-to-systems",
 
 LY_DEFINE (ly_book_add_score_x, "ly:book-add-score!",
           2, 0, 0, (SCM book_smob, SCM score),
-          "Add @var{score} to @var{book_smob} score list.")
+          "Add @var{score} to @var{book-smob} score list.")
 {
   LY_ASSERT_SMOB (Book, book_smob, 1);
   Book *book = unsmob_book (book_smob); 
index 4ff48155e3877de14239337a36ccbbc3eba1e66c..d4289d7bcc69550d018517d618e256ef1030863e 100644 (file)
@@ -13,9 +13,9 @@
 
 LY_DEFINE (ly_context_id, "ly:context-id",
           1, 0, 0, (SCM context),
-          "Return the id string of @var{context}, "
-          "i.e. for @code{\\context Voice = one .. } "
-          "return the string @code{one}.")
+          "Return the ID string of @var{context},"
+          " i.e., for @code{\\context Voice = one @dots{}}"
+          " return the string @code{one}.")
 {
   Context *tr = unsmob_context (context);
 
@@ -26,9 +26,9 @@ LY_DEFINE (ly_context_id, "ly:context-id",
 
 LY_DEFINE (ly_context_name, "ly:context-name",
           1, 0, 0, (SCM context),
-          "Return the name of @var{context}, "
-          "i.e. for @code{\\context Voice = one .. } "
-          "return the symbol @code{Voice}.")
+          "Return the name of @var{context},"
+          " i.e., for @code{\\context Voice = one @dots{}}"
+          " return the symbol @code{Voice}.")
 {
   LY_ASSERT_SMOB (Context, context, 1);
 
@@ -39,8 +39,8 @@ LY_DEFINE (ly_context_name, "ly:context-name",
 
 LY_DEFINE (ly_context_grob_definition, "ly:context-grob-definition",
           2, 0, 0, (SCM context, SCM name),
-          "Return the definition of @var{name} (a symbol) within @var{context} "
-          "as an alist")
+          "Return the definition of @var{name} (a symbol) within"
+          " @var{context} as an alist.")
 {
   Context *tr = unsmob_context (context);
   
@@ -52,10 +52,10 @@ LY_DEFINE (ly_context_grob_definition, "ly:context-grob-definition",
 
 LY_DEFINE (ly_context_pushpop_property, "ly:context-pushpop-property",
           3, 1, 0, (SCM context, SCM grob, SCM eltprop, SCM val),
-          "Do a single @code{\\override} or @code{\\revert} operation "
-          "in @var{context}.  The grob definition @code{grob} is extended "
-          "with @code{eltprop} (if @var{val} is specified) "
-          "or reverted (if  unspecified).")
+          "Do a single @code{\\override} or @code{\\revert} operation"
+          " in @var{context}.  The grob definition @var{grob} is extended"
+          " with @var{eltprop} (if @var{val} is specified) or reverted"
+          " (if unspecified).")
 {
   Context *tg = unsmob_context (context);
 
@@ -70,7 +70,7 @@ LY_DEFINE (ly_context_pushpop_property, "ly:context-pushpop-property",
 
 LY_DEFINE (ly_context_property, "ly:context-property",
           2, 0, 0, (SCM c, SCM name),
-          "Return the value of @var{name} from context @var{c}")
+          "Return the value of @var{name} from context @var{c}.")
 {
   LY_ASSERT_SMOB (Context, c, 1);
   LY_ASSERT_TYPE (ly_is_symbol, name, 2);
@@ -81,8 +81,8 @@ LY_DEFINE (ly_context_property, "ly:context-property",
 
 LY_DEFINE (ly_context_set_property_x, "ly:context-set-property!",
           3, 0, 0, (SCM context, SCM name, SCM val),
-          "Set value of property @var{name} in context @var{context} "
-          "to @var{val}.")
+          "Set value of property @var{name} in context @var{context}"
+          " to @var{val}.")
 {
   LY_ASSERT_SMOB (Context, context, 1);
   LY_ASSERT_TYPE (ly_is_symbol, name, 2);
@@ -96,8 +96,8 @@ LY_DEFINE (ly_context_set_property_x, "ly:context-set-property!",
 
 LY_DEFINE (ly_context_property_where_defined, "ly:context-property-where-defined",
           2, 0, 0, (SCM context, SCM name),
-          "Return the context above @var{context} "
-          "where @var{name} is defined.")
+          "Return the context above @var{context}"
+          " where @var{name} is defined.")
 {
   LY_ASSERT_SMOB (Context, context, 1);
   LY_ASSERT_TYPE (ly_is_symbol, name, 2);
@@ -141,8 +141,8 @@ LY_DEFINE (ly_context_parent, "ly:context-parent",
 /* FIXME: todo: should support translator IDs, and creation? */
 LY_DEFINE (ly_context_find, "ly:context-find",
           2, 0, 0, (SCM context, SCM name),
-          "Find a parent of @var{context} that has name or alias @var{name}. "
-          "Return @code{#f} if not found.")
+          "Find a parent of @var{context} that has name or alias @var{name}."
+          "  Return @code{#f} if not found.")
 {
   LY_ASSERT_SMOB (Context, context, 1);
   LY_ASSERT_TYPE (ly_is_symbol, name, 2);
@@ -160,7 +160,7 @@ LY_DEFINE (ly_context_find, "ly:context-find",
 
 LY_DEFINE (ly_context_now, "ly:context-now",
           1, 0, 0, (SCM context),
-          "Return now-moment of context CONTEXT")
+          "Return @code{now-moment} of context @var{context}.")
 {
   LY_ASSERT_SMOB (Context, context, 1);
   Context *ctx = unsmob_context (context);
@@ -169,7 +169,7 @@ LY_DEFINE (ly_context_now, "ly:context-now",
 
 LY_DEFINE (ly_context_event_source, "ly:context-event-source",
            1, 0, 0, (SCM context),
-           "Return event-source of context CONTEXT")
+           "Return @code{event-source} of context @var{context}.")
 {
   LY_ASSERT_SMOB (Context, context, 1);
   Context *ctx = unsmob_context (context);
@@ -178,7 +178,7 @@ LY_DEFINE (ly_context_event_source, "ly:context-event-source",
 
 LY_DEFINE (ly_context_events_below, "ly:context-events-below",
            1, 0, 0, (SCM context),
-           "Return a stream-distributor that distributes all events\n"
+           "Return a @code{stream-distributor} that distributes all events"
            " from @var{context} and all its subcontexts.")
 {
   LY_ASSERT_SMOB (Context, context, 1);
index 4025b4078a5d24be0d19db771153e42c2f8e987e..c64b901f8fe2d416b4a3f5c8a7a36dbfea071d32 100644 (file)
@@ -12,7 +12,7 @@
 
 LY_DEFINE (ly_pt, "ly:pt",
           1, 0, 0, (SCM num),
-          "@var{num} printer points")
+          "@var{num} printer points.")
 {
   LY_ASSERT_TYPE (scm_is_number, num, 1);
   return scm_from_double (point_constant
@@ -21,7 +21,7 @@ LY_DEFINE (ly_pt, "ly:pt",
 
 LY_DEFINE (ly_cm, "ly:cm",
           1, 0, 0, (SCM num),
-          "@var{num} cm")
+          "@var{num} cm.")
 {
   LY_ASSERT_TYPE (scm_is_number, num, 1);
   return scm_from_double (cm_constant
@@ -30,7 +30,7 @@ LY_DEFINE (ly_cm, "ly:cm",
 
 LY_DEFINE (ly_inch, "ly:inch",
           1, 0, 0, (SCM num),
-          "@var{num} inches")
+          "@var{num} inches.")
 {
   LY_ASSERT_TYPE (scm_is_number, num, 1);
   return scm_from_double (inch_constant
@@ -39,7 +39,7 @@ LY_DEFINE (ly_inch, "ly:inch",
 
 LY_DEFINE (ly_mm, "ly:mm",
           1, 0, 0, (SCM num),
-          "@var{num} mm")
+          "@var{num} mm.")
 {
   LY_ASSERT_TYPE (scm_is_number, num, 1);
   return scm_from_double (mm_constant
@@ -48,7 +48,7 @@ LY_DEFINE (ly_mm, "ly:mm",
 
 LY_DEFINE (ly_bp, "ly:bp",
           1, 0, 0, (SCM num),
-          "@var{num} bigpoints (1/72th inch)")
+          "@var{num} bigpoints (1/72th inch).")
 {
   LY_ASSERT_TYPE (scm_is_number, num, 1);
   return scm_from_double (bigpoint_constant
index e467064bf417080c6d364b55cf01a22982eaf673..5f0acb229d640caa60a8d3a292facc3468c5619d 100644 (file)
 
 LY_DEFINE (ly_make_dispatcher, "ly:make-dispatcher",
           0, 0, 0, (),
-          "Returns a newly created dispatcher.")
+          "Return a newly created dispatcher.")
 {
   return (new Dispatcher ())->unprotect ();
 }
 
 LY_DEFINE (ly_connect_dispatchers, "ly:connect-dispatchers",
           2, 0, 0, (SCM to, SCM from),
-          "Makes the dispatcher @var{to} listen to events from @var{from}." )
+          "Make the dispatcher @var{to} listen to events from @var{from}.")
 {
   Dispatcher *t = unsmob_dispatcher (to);
   Dispatcher *f = unsmob_dispatcher (from);
@@ -32,8 +32,9 @@ LY_DEFINE (ly_connect_dispatchers, "ly:connect-dispatchers",
 
 LY_DEFINE (ly_add_listener, "ly:add-listener",
           2, 0, 1, (SCM list, SCM disp, SCM cl),
-          "Adds the listener @var{list} to the dispatcher @var{disp}.\n"
-          " Whenever @var{disp} hears an event of class @var{cl}, it will be forwarded to @var{list}.\n" )
+          "Add the listener @var{list} to the dispatcher @var{disp}."
+          "  Whenever @var{disp} hears an event of class @var{cl},"
+          " it is forwarded to @var{list}.")
 {
   Listener *l = unsmob_listener (list);
   Dispatcher *d = unsmob_dispatcher (disp);
@@ -53,8 +54,7 @@ LY_DEFINE (ly_add_listener, "ly:add-listener",
 
 LY_DEFINE (ly_broadcast, "ly:broadcast",
           2, 0, 0, (SCM disp, SCM ev),
-          "Sends the stream event @var{ev} to the dispatcher\n"
-          "@var{disp}.")
+          "Send the stream event @var{ev} to the dispatcher @var{disp}.")
 {
   Dispatcher *d = unsmob_dispatcher (disp);
   Stream_event *e = unsmob_stream_event (ev);
index f62bba582a40ca02bcd7987e45e50ee2c31411a0..d37147558112e5d64442d7a2fa44b7538341fe07 100644 (file)
@@ -41,17 +41,17 @@ LY_DEFINE (ly_duration_less_p, "ly:duration<?",
 
 LY_DEFINE (ly_make_duration, "ly:make-duration",
           1, 3, 0, (SCM length, SCM dotcount, SCM num, SCM den),
-          "@var{length} is the negative logarithm (base 2) of the duration:\n"
-          "1 is a half note, 2 is a quarter note, 3 is an eighth\n"
-          "note, etc.  The number of dots after the note is given by\n"
-          "the optional argument @var{dotcount}.\n"
+          "@var{length} is the negative logarithm (base 2) of the duration:"
+          " 1@tie{}is a half note, 2@tie{}is a quarter note, 3@tie{}is an"
+          " eighth note, etc.  The number of dots after the note is given by"
+          " the optional argument @var{dotcount}.\n"
           "\n"
-          "The duration factor is optionally given by @var{num}\n"
-          "and @var{den}.\n\n"
-          "A duration is a musical duration, "
-          "i.e. a length of time described by a power of two "
-          "(whole, half, quarter, etc.) and a number of augmentation\n"
-          "dots. \n")
+          "The duration factor is optionally given by @var{num} and"
+          " @var{den}.\n"
+          "\n"
+          "A duration is a musical duration, i.e., a length of time"
+          " described by a power of two (whole, half, quarter, etc.) and a"
+          " number of augmentation dots.")
 {
   LY_ASSERT_TYPE (scm_is_integer, length, 1);
 
@@ -88,7 +88,7 @@ LY_DEFINE (ly_make_duration, "ly:make-duration",
 
 LY_DEFINE (ly_duration_log, "ly:duration-log",
           1, 0, 0, (SCM dur),
-          "Extract the duration log from @var{dur}")
+          "Extract the duration log from @var{dur}.")
 {
   LY_ASSERT_SMOB (Duration, dur, 1);
   return scm_from_int (unsmob_duration (dur)->duration_log ());
@@ -96,7 +96,7 @@ LY_DEFINE (ly_duration_log, "ly:duration-log",
 
 LY_DEFINE (ly_duration_dot_count, "ly:duration-dot-count",
           1, 0, 0, (SCM dur),
-          "Extract the dot count from @var{dur}")
+          "Extract the dot count from @var{dur}.")
 {
   LY_ASSERT_SMOB (Duration, dur, 1);
   return scm_from_int (unsmob_duration (dur)->dot_count ());
@@ -113,7 +113,7 @@ LY_DEFINE (ly_intlog2, "ly:intlog2",
 
 LY_DEFINE (ly_duration_length, "ly:duration-length",
           1, 0, 0, (SCM dur),
-          "The length of the duration as a Moment.")
+          "The length of the duration as a @code{moment}.")
 {
   LY_ASSERT_SMOB (Duration, dur, 1);
   return Moment (unsmob_duration (dur)->get_length ()).smobbed_copy ();
@@ -121,7 +121,7 @@ LY_DEFINE (ly_duration_length, "ly:duration-length",
 
 LY_DEFINE (ly_duration_2_string, "ly:duration->string",
           1, 0, 0, (SCM dur),
-          "Convert @var{dur} to string.")
+          "Convert @var{dur} to string.")
 {
   LY_ASSERT_SMOB (Duration, dur, 1);
   return ly_string2scm (unsmob_duration (dur)->to_string ());
@@ -129,7 +129,8 @@ LY_DEFINE (ly_duration_2_string, "ly:duration->string",
 
 LY_DEFINE (ly_duration_factor, "ly:duration-factor",
           1, 0, 0, (SCM dur),
-          "Extract the compression factor from @var{dur}. Return as a pair.")
+          "Extract the compression factor from @var{dur}."
+          "  Return it as a pair.")
 {
   LY_ASSERT_SMOB (Duration, dur, 1);
   Rational r = unsmob_duration (dur)->factor ();
index 84780dd0a2fc489997560a472ab67db2bb18fab3..70a8bf512fb51ae71e1a3e05627c1b00e04027a7 100644 (file)
@@ -90,11 +90,11 @@ Engraver::Engraver ()
 static SCM creation_callback = SCM_EOL;
 LY_DEFINE (ly_set_grob_creation_callback, "ly:set-grob-creation-callback",
           1, 0, 0, (SCM cb),
-          "Specify a procedure that will be called every time a new grob "
-          "is created. The callback will receive as arguments the grob "
-          "that was created, the name of the C++ source file that caused "
-          "the grob to be created and the corresponding line number in the "
-          "C++ source file.")
+          "Specify a procedure that will be called every time a new grob"
+          " is created.  The callback will receive as arguments the grob"
+          " that was created, the name of the C++ source file that caused"
+          " the grob to be created, and the corresponding line number in"
+          " the C++ source file.")
 {
   LY_ASSERT_TYPE (ly_is_procedure, cb, 1);
 
diff --git a/lily/fall-engraver.cc b/lily/fall-engraver.cc
deleted file mode 100644 (file)
index e69de29..0000000
index 3f6939c1ff191228ae01d72c3407cd8ae6ee36da..61bad6042331796e36cd8bc1166a87979e74f6b8 100644 (file)
@@ -24,7 +24,7 @@ map_file_name (string s)
 
 LY_DEFINE (ly_add_file_name_alist, "ly:add-file-name-alist",
           1, 0, 0, (SCM alist),
-          "Add mappings for error messages from specified alist")
+          "Add mappings for error messages from @var{alist}.")
 {
   for (SCM s = alist; scm_is_pair (s); s = scm_cdr (s))
     {
diff --git a/lily/folded-repeat-iterator.cc b/lily/folded-repeat-iterator.cc
deleted file mode 100644 (file)
index f22e8b8..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
-  folded-repeat-iterator.cc -- implement Folded_repeat_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1999--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
-*/
-
-#include "folded-repeat-iterator.hh"
-
-#include "context.hh"
-#include "input.hh"
-#include "international.hh"
-#include "repeated-music.hh"
-#include "simultaneous-music-iterator.hh"
-
-Folded_repeat_iterator::Folded_repeat_iterator ()
-{
-  main_iter_ = 0;
-  alternative_iter_ = 0;
-}
-
-bool
-Folded_repeat_iterator::ok () const
-{
-  return main_iter_ || alternative_iter_;
-}
-void
-Folded_repeat_iterator::do_quit ()
-{
-  if (main_iter_)main_iter_->quit ();
-  if (alternative_iter_)alternative_iter_->quit ();
-}
-
-Moment
-Folded_repeat_iterator::pending_moment () const
-{
-  if (main_iter_)
-    return main_iter_->pending_moment ();
-  else
-    return main_length_mom_ + alternative_iter_->pending_moment ();
-}
-
-void
-Folded_repeat_iterator::construct_children ()
-{
-  Music *mus = get_music ();
-  main_iter_ = unsmob_iterator (get_iterator (Repeated_music::body (mus)));
-  if (!main_iter_->ok ())
-    {
-      leave_body ();
-      enter_alternative ();
-    }
-}
-
-void
-Folded_repeat_iterator::process (Moment m)
-{
-  if (main_iter_)
-    {
-      main_iter_->process (m);
-      if (!main_iter_->ok ())
-       leave_body ();
-    }
-
-  if (!main_iter_ && !alternative_iter_)
-    enter_alternative ();
-
-  if (alternative_iter_)
-    {
-      alternative_iter_->process (m - main_length_mom_);
-      if (!alternative_iter_->ok ())
-       {
-         alternative_iter_->quit ();
-         alternative_iter_ = 0;
-       }
-    }
-}
-
-void
-Folded_repeat_iterator::leave_body ()
-{
-  Music *mus = get_music ();
-
-  main_iter_->quit ();
-  main_iter_ = 0;
-  main_length_mom_ += Repeated_music::body (mus)->get_length ();
-}
-
-void
-Folded_repeat_iterator::enter_alternative ()
-{
-  Music *mus = get_music ();
-  if (scm_is_pair (Repeated_music::alternatives (mus)))
-    {
-      /*
-       ugh.
-      */
-      Simultaneous_music_iterator *s = new Simultaneous_music_iterator;
-      s->create_separate_contexts_ = true;
-      s->init_context (mus, get_outlet ());
-
-      alternative_iter_ = s;
-      alternative_iter_->construct_children ();
-
-      s->unprotect ();
-    }
-}
-
-void
-Folded_repeat_iterator::derived_mark () const
-{
-  if (main_iter_)
-    scm_gc_mark (main_iter_->self_scm ());
-  if (alternative_iter_)
-    scm_gc_mark (alternative_iter_->self_scm ());
-}
-
-void
-Folded_repeat_iterator::derived_substitute (Context *f, Context *t)
-{
-  if (main_iter_)
-    main_iter_->substitute_outlet (f, t);
-  if (alternative_iter_)
-    alternative_iter_->substitute_outlet (f, t);
-}
-
-IMPLEMENT_CTOR_CALLBACK (Folded_repeat_iterator);
index 6ccc616793addc2e73ed3e30c7be7655393e6ad6..79f074cef8c3e090d10c5f67cfacbf9d6e2ffb27 100644 (file)
@@ -87,7 +87,7 @@ display_list (FcConfig *fcc)
 
 LY_DEFINE (ly_font_config_get_font_file, "ly:font-config-get-font-file", 1, 0, 0,
           (SCM name),
-          "Get the file for font @var{name}")
+          "Get the file for font @var{name}.")
 {
   LY_ASSERT_TYPE (scm_is_string, name, 1);
   
index aa49a29e23ee333607ae290880c0f69165469579..88cfc58e2b707662fd496719b98db9aaf8641d03 100644 (file)
@@ -15,9 +15,9 @@
 LY_DEFINE (ly_font_get_glyph, "ly:font-get-glyph",
           2, 0, 0,
           (SCM font, SCM name),
-          "Return a Stencil from @var{font} for the glyph named @var{name}.  "
-          "@var{font} must be available as an AFM file.  If the glyph "
-          "is not available, return @code{#f}.")
+          "Return a stencil from @var{font} for the glyph named @var{name}."
+          "  @var{font} must be available as an AFM file.  If the glyph"
+          " is not available, return @code{#f}.")
 {
   Font_metric *fm = unsmob_metrics (font);
   LY_ASSERT_SMOB (Font_metric, font, 1);
@@ -32,8 +32,8 @@ LY_DEFINE (ly_font_get_glyph, "ly:font-get-glyph",
 LY_DEFINE (ly_get_glyph, "ly:get-glyph",
           2, 0, 0,
           (SCM font, SCM index),
-          "Retrieve a Stencil for the glyph numbered @var{index} "
-          "in @var{font}.")
+          "Retrieve a stencil for the glyph numbered @var{index}"
+          " in @var{font}.")
 {
   Font_metric *fm = unsmob_metrics (font);
   LY_ASSERT_SMOB (Font_metric, font, 1);
@@ -57,7 +57,7 @@ LY_DEFINE (ly_font_glyph_name_to_index, "ly:font-glyph-name-to-index",
 LY_DEFINE (ly_font_index_to_charcode, "ly:font-index-to-charcode",
           2, 0, 0,
           (SCM font, SCM index),
-          "Return the character code for @var{index} @var{font}.")
+          "Return the character code for @var{index} in @var{font}.")
 {
   Font_metric *fm = unsmob_metrics (font);
   LY_ASSERT_SMOB (Font_metric, font, 1);
@@ -81,9 +81,9 @@ LY_DEFINE (ly_font_glyph_name_to_charcode, "ly:font-glyph-name-to-charcode",
 LY_DEFINE (ly_text_dimension, "ly:text-dimension",
           2, 0, 0,
           (SCM font, SCM text),
-          "Given the font metric in @var{font} and the string @var{text}, "
-          "compute the extents of that text in that font.  "
-          "The return value is a pair of number-pairs.")
+          "Given the font metric in @var{font} and the string @var{text},"
+          " compute the extents of that text in that font.  The return"
+          " value is a pair of number-pairs.")
 {
   Box b;
   Modified_font_metric *fm = dynamic_cast<Modified_font_metric *>
@@ -103,8 +103,8 @@ LY_DEFINE (ly_text_dimension, "ly:text-dimension",
 LY_DEFINE (ly_font_file_name, "ly:font-file-name",
           1, 0, 0,
           (SCM font),
-          "Given the font metric @var{font}, "
-          "return the corresponding file name.")
+          "Given the font metric @var{font},"
+          " return the corresponding file name.")
 {
   LY_ASSERT_SMOB (Font_metric, font, 1);
 
@@ -117,8 +117,8 @@ LY_DEFINE (ly_font_file_name, "ly:font-file-name",
 LY_DEFINE (ly_font_name, "ly:font-name",
           1, 0, 0,
           (SCM font),
-          "Given the font metric @var{font}, "
-          "return the corresponding name.")
+          "Given the font metric @var{font},"
+          " return the corresponding name.")
 {
   LY_ASSERT_SMOB (Font_metric, font, 1);
   Font_metric *fm = unsmob_metrics (font);
@@ -128,8 +128,8 @@ LY_DEFINE (ly_font_name, "ly:font-name",
 
 LY_DEFINE (ly_font_magnification, "ly:font-magnification", 1, 0, 0,
           (SCM font),
-          "Given the font metric @var{font}, return the "
-          "magnification, relative to the current output-scale.")
+          "Given the font metric @var{font}, return the"
+          " magnification, relative to the current output-scale.")
 {
   LY_ASSERT_SMOB (Font_metric, font, 1);
 
@@ -139,8 +139,8 @@ LY_DEFINE (ly_font_magnification, "ly:font-magnification", 1, 0, 0,
 
 LY_DEFINE (ly_font_design_size, "ly:font-design-size", 1, 0, 0,
           (SCM font),
-          "Given the font metric @var{font}, return the "
-          "design size, relative to the current output-scale.")
+          "Given the font metric @var{font}, return the"
+          " design size, relative to the current output-scale.")
 {
   LY_ASSERT_SMOB (Font_metric, font, 1);
 
index c5b1387726bf122feafda79a1d4be95f69bf74c6..909eb1030b50a9ffe2a7f104f4ab40f1b2272cd2 100644 (file)
@@ -50,7 +50,7 @@ ly_add_function_documentation (SCM func,
 
 LY_DEFINE (ly_get_all_function_documentation, "ly:get-all-function-documentation",
           0, 0, 0, (),
-          "Get a hash table with all lilypond Scheme extension functions.")
+          "Get a hash table with all LilyPond Scheme extension functions.")
 {
   return doc_hash_table;
 }
index 48ee4503b12f90d4478e60e65606f80ee390d21f..7d4b5c1c30999361db6d9ccfb58e360e61480d1c 100644 (file)
@@ -29,7 +29,8 @@ using namespace std;
 
 LY_DEFINE (ly_start_environment, "ly:start-environment",
           0, 0, 0, (),
-          "Return the environment, a list of strings, that was in effect at program start")
+          "Return the environment (a list of strings) that was in"
+          " effect at program start.")
 {
   SCM l = SCM_EOL;
   SCM *tail = &l;
@@ -47,8 +48,8 @@ LY_DEFINE (ly_start_environment, "ly:start-environment",
 
 LY_DEFINE (ly_find_file, "ly:find-file",
           1, 0, 0, (SCM name),
-          "Return the absolute file name of @var{name}, "
-          "or @code{#f} if not found.")
+          "Return the absolute file name of @var{name},"
+          " or @code{#f} if not found.")
 {
   LY_ASSERT_TYPE (scm_is_string, name, 1);
 
@@ -66,8 +67,8 @@ LY_DEFINE (ly_find_file, "ly:find-file",
 */
 LY_DEFINE (ly_gulp_file, "ly:gulp-file",
           1, 1, 0, (SCM name, SCM size),
-          "Read the file @var{name}, and return its contents in a string.  "
-          "The file is looked up using the search path. ")
+          "Read the file @var{name}, and return its contents in a string."
+          "  The file is looked up using the search path.")
 {
   LY_ASSERT_TYPE (scm_is_string, name, 1);
   int sz = INT_MAX;
@@ -83,8 +84,8 @@ LY_DEFINE (ly_gulp_file, "ly:gulp-file",
 
 LY_DEFINE (ly_error, "ly:error",
           1, 0, 1, (SCM str, SCM rest),
-          "Scheme callable function to issue the error @code{msg}. "
-          "The error is formatted with @code{format} and @code{rest}.")
+          "A Scheme callable function to issue the error @var{str}."
+          "  The error is formatted with @code{format} and @var{rest}.")
 {
   LY_ASSERT_TYPE (scm_is_string, str, 1);
   str = scm_simple_format (SCM_BOOL_F, str, rest);
@@ -94,8 +95,8 @@ LY_DEFINE (ly_error, "ly:error",
 
 LY_DEFINE (ly_message, "ly:message",
           1, 0, 1, (SCM str, SCM rest),
-          "Scheme callable function to issue the message @code{msg}. "
-          "The message is formatted with @code{format} and @code{rest}.")
+          "A Scheme callable function to issue the message @var{str}."
+          "  The message is formatted with @code{format} and @var{rest}.")
 {
   LY_ASSERT_TYPE (scm_is_string, str, 1);
   str = scm_simple_format (SCM_BOOL_F, str, rest);
@@ -105,8 +106,8 @@ LY_DEFINE (ly_message, "ly:message",
 
 LY_DEFINE (ly_progress, "ly:progress",
           1, 0, 1, (SCM str, SCM rest),
-          "Scheme callable function to print progress @code{str}. "
-          "The message is formatted with @code{format} and @code{rest}.")
+          "A Scheme callable function to print progress @var{str}."
+          "  The message is formatted with @code{format} and @var{rest}.")
 {
   LY_ASSERT_TYPE (scm_is_string, str, 1);
   str = scm_simple_format (SCM_BOOL_F, str, rest);
@@ -116,8 +117,9 @@ LY_DEFINE (ly_progress, "ly:progress",
 
 LY_DEFINE (ly_programming_error, "ly:programming-error",
           1, 0, 1, (SCM str, SCM rest),
-          "Scheme callable function to issue the warning @code{msg}. "
-          "The message is formatted with @code{format} and @code{rest}.")
+          "A Scheme callable function to issue the internal warning"
+          "  @var{str}.  The message is formatted with @code{format}"
+          " and @var{rest}.")
 {
   LY_ASSERT_TYPE (scm_is_string, str, 1);
   str = scm_simple_format (SCM_BOOL_F, str, rest);
@@ -127,8 +129,8 @@ LY_DEFINE (ly_programming_error, "ly:programming-error",
 
 LY_DEFINE (ly_warning, "ly:warning",
           1, 0, 1, (SCM str, SCM rest),
-          "Scheme callable function to issue the warning @code{str}. "
-          "The message is formatted with @code{format} and @code{rest}.")
+          "A Scheme callable function to issue the warning @code{str}."
+          "  The message is formatted with @code{format} and @code{rest}.")
 {
   LY_ASSERT_TYPE (scm_is_string, str, 1);
   str = scm_simple_format (SCM_BOOL_F, str, rest);
@@ -138,9 +140,9 @@ LY_DEFINE (ly_warning, "ly:warning",
 
 LY_DEFINE (ly_dir_p, "ly:dir?",
           1, 0, 0, (SCM s),
-          "type predicate. A direction is @code{-1}, @code{0} or "
-          "@code{1}, where @code{-1} represents "
-          "left or down and @code{1} represents right or up.")
+          "A type predicate.  The direction@tie{}@code{s} is @code{-1},"
+          " @code{0} or@tie{}@code{1}, where @code{-1} represents"
+          " left or down and @code{1} represents right or up.")
 {
   if (scm_is_number (s))
     {
@@ -153,8 +155,8 @@ LY_DEFINE (ly_dir_p, "ly:dir?",
 LY_DEFINE (ly_assoc_get, "ly:assoc-get",
           2, 1, 0,
           (SCM key, SCM alist, SCM default_value),
-          "Return value if KEY in ALIST, else DEFAULT-VALUE "
-          "(or #f if not specified).")
+          "Return value if @var{key} in @var{alist}, else @code{default-value}"
+          " (or @code{#f} if not specified).")
 {
   LY_ASSERT_TYPE(ly_cheap_is_list, alist, 2);
   
@@ -170,7 +172,8 @@ LY_DEFINE (ly_assoc_get, "ly:assoc-get",
 
 LY_DEFINE (ly_string_substitute, "ly:string-substitute",
           3, 0, 0, (SCM a, SCM b, SCM s),
-          "Replace string @var{a} by string @var{b} in string @var{s}.")
+          "Replace string@tie{}@var{a} by string@tie{}@var{b} in"
+          " string@tie{}@var{s}.")
 {
   LY_ASSERT_TYPE (scm_is_string, s, 1);
   LY_ASSERT_TYPE (scm_is_string, b, 2);
@@ -210,7 +213,8 @@ LY_DEFINE (ly_number_2_string, "ly:number->string",
 }
 
 LY_DEFINE (ly_version, "ly:version", 0, 0, 0, (),
-          "Return the current lilypond version as a list, e.g. @code{(1 3 127 uu1)}. ")
+          "Return the current lilypond version as a list, e.g.,"
+          " @code{(1 3 127 uu1)}.")
 {
   char const *vs = "\'(" MAJOR_VERSION " " MINOR_VERSION " " PATCH_LEVEL " " MY_PATCH_LEVEL ")";
 
@@ -224,8 +228,8 @@ LY_DEFINE (ly_unit, "ly:unit", 0, 0, 0, (),
 }
 
 LY_DEFINE (ly_dimension_p, "ly:dimension?", 1, 0, 0, (SCM d),
-          "Return @var{d} is a number. Used to distinguish length "
-          "variables from normal numbers.")
+          "Return @var{d} as a number.  Used to distinguish length"
+          " variables from normal numbers.")
 {
   return scm_number_p (d);
 }
@@ -242,7 +246,7 @@ LY_DEFINE (ly_protects, "ly:protects",
 
 LY_DEFINE (ly_gettext, "ly:gettext",
           1, 0, 0, (SCM string),
-          "Gettext wrapper.")
+          "A Scheme wrapper function for @code{gettext}.")
 {
   LY_ASSERT_TYPE (scm_is_string, string, 1);
   return ly_string2scm (_ (scm_i_string_chars (string)));
@@ -250,8 +254,8 @@ LY_DEFINE (ly_gettext, "ly:gettext",
 
 LY_DEFINE (ly_output_formats, "ly:output-formats",
           0, 0, 0, (),
-          "Formats passed to --format as a list of strings, "
-          "used for the output.")
+          "Formats passed to @option{--format} as a list of strings,"
+          " used for the output.")
 {
   vector<string> output_formats = string_split (output_format_global, ',');
 
@@ -265,7 +269,7 @@ LY_DEFINE (ly_output_formats, "ly:output-formats",
 
 LY_DEFINE (ly_wide_char_2_utf_8, "ly:wide-char->utf-8",
           1, 0, 0, (SCM wc),
-          "Encode the Unicode codepoint @var{wc}, an integer, as UTF-8")
+          "Encode the Unicode codepoint @var{wc}, an integer, as UTF-8.")
 {
   char buf[5];
 
@@ -307,9 +311,9 @@ LY_DEFINE (ly_effective_prefix, "ly:effective-prefix",
 
 LY_DEFINE (ly_chain_assoc_get, "ly:chain-assoc-get",
           2, 1, 0, (SCM key, SCM achain, SCM dfault),
-          "Return value for @var{key} from a list of alists @var{achain}.  "
-          "If no if no entry is found, return DFAULT, "
-          "or #f if no DFAULT not specified.")
+          "Return value for @var{key} from a list of alists @var{achain}."
+          "  If no entry is found, return @var{dfault} or @code{#f} if no"
+          " @var{dfault} is specified.")
 {
   if (scm_is_pair (achain))
     {
@@ -325,7 +329,7 @@ LY_DEFINE (ly_chain_assoc_get, "ly:chain-assoc-get",
 
 LY_DEFINE (ly_stderr_redirect, "ly:stderr-redirect",
           1, 1, 0, (SCM file_name, SCM mode),
-          "Redirect stderr to FILE-NAME, opened with MODE.")
+          "Redirect stderr to @var{file-name}, opened with @var{mode}.")
 {
   LY_ASSERT_TYPE (scm_is_string, file_name, 1);
 
@@ -349,7 +353,7 @@ accumulate_symbol (void *closure, SCM key, SCM val, SCM result)
 
 LY_DEFINE (ly_hash_table_keys, "ly:hash-table-keys",
          1,0,0, (SCM tab),
-         "return a list of keys in @var{tab}")
+         "Return a list of keys in @var{tab}.")
 {
   return scm_internal_hash_fold ((Hash_closure_function) & accumulate_symbol,
                                 NULL, SCM_EOL, tab);
@@ -357,7 +361,7 @@ LY_DEFINE (ly_hash_table_keys, "ly:hash-table-keys",
 
 LY_DEFINE (ly_camel_case_2_lisp_identifier, "ly:camel-case->lisp-identifier",
           1, 0, 0, (SCM name_sym),
-          "Convert FooBar_Bla to foo-bar-bla style symbol.")
+          "Convert @code{FooBar_Bla} to @code{foo-bar-bla} style symbol.")
 {
   LY_ASSERT_TYPE (ly_is_symbol, name_sym, 1);
   
@@ -373,7 +377,7 @@ LY_DEFINE (ly_camel_case_2_lisp_identifier, "ly:camel-case->lisp-identifier",
 
 LY_DEFINE (ly_expand_environment, "ly:expand-environment",
           1, 0, 0, (SCM str),
-          "Expand $VAR and $@{VAR@} in @var{str}.")
+          "Expand @code{$VAR} and @code{$@{VAR@}} in @var{str}.")
 {
   LY_ASSERT_TYPE (scm_is_string, str, 1);
 
@@ -383,7 +387,7 @@ LY_DEFINE (ly_expand_environment, "ly:expand-environment",
 
 LY_DEFINE (ly_truncate_list_x, "ly:truncate-list!",
           2, 0, 0, (SCM lst, SCM i),
-          "Take at most the first @var{i} of list @var{lst}")
+          "Take at most the first @var{i} of list @var{lst}.")
 {
   LY_ASSERT_TYPE (scm_is_integer, i, 1);
 
@@ -438,7 +442,7 @@ format_single_argument (SCM arg, int precision)
 
 LY_DEFINE (ly_format, "ly:format",
           1, 0, 1, (SCM str, SCM rest),
-          "LilyPond specific format, supporting ~a ~[0-9]f.")
+          "LilyPond specific format, supporting @code{~a} and @code{~[0-9]f}.")
 {
   LY_ASSERT_TYPE (scm_is_string, str, 1);
 
index 18d1d807124b61deb5e5fc848ab5776f7d1bc5f5..8fbcc99b46eee93fee36d5a3c1d3952e300ebbdf 100644 (file)
@@ -19,8 +19,9 @@
 
 LY_DEFINE (ly_format_output, "ly:format-output",
           1, 0, 0, (SCM context),
-          "Given a Global context in its final state, "
-          "process it and return the @code{Music_output} object in its final state.")
+          "Given a global context in its final state,"
+          " process it and return the @code{Music_output} object"
+          " in its final state.")
 {
   Global_context *g = dynamic_cast<Global_context *> (unsmob_context (context));
   
@@ -37,8 +38,8 @@ LY_DEFINE (ly_format_output, "ly:format-output",
 
 LY_DEFINE (ly_make_global_translator, "ly:make-global-translator",
           1, 0, 0, (SCM global),
-          "Create a translator group and connect it to the global context\n"
-          "@var{global}. The translator group is returned.")
+          "Create a translator group and connect it to the global context"
+          " @var{global}.  The translator group is returned.")
 {
   Global_context *g = dynamic_cast<Global_context *> (unsmob_context (global));
   LY_ASSERT_TYPE (unsmob_global_context, global, 1)
@@ -52,10 +53,8 @@ LY_DEFINE (ly_make_global_translator, "ly:make-global-translator",
 
 LY_DEFINE (ly_make_global_context, "ly:make-global-context",
           1, 0, 0, (SCM output_def),
-          "Set up a global interpretation context, using the output\n"
-          "block @var{output_def}.\n"
-          "The context is returned.\n"
-          )
+          "Set up a global interpretation context, using the output"
+          " block @var{output_def}.  The context is returned.\n")
 {
   LY_ASSERT_SMOB (Output_def, output_def, 1);
   Output_def *odef = unsmob_output_def (output_def); 
@@ -73,9 +72,8 @@ LY_DEFINE (ly_make_global_context, "ly:make-global-context",
 
 LY_DEFINE (ly_interpret_music_expression, "ly:interpret-music-expression",
           2, 0, 0, (SCM mus, SCM ctx),
-          "Interpret the music expression @var{mus} in the\n"
-          "global context @var{ctx}. The context is returned in its\n"
-          "final state.\n")
+          "Interpret the music expression @var{mus} in the global context"
+          " @var{ctx}.  The context is returned in its final state.")
 {
   LY_ASSERT_SMOB (Music, mus, 1);
   LY_ASSERT_TYPE (unsmob_global_context, ctx, 2);
@@ -122,13 +120,13 @@ LY_DEFINE (ly_interpret_music_expression, "ly:interpret-music-expression",
 
 LY_DEFINE (ly_run_translator, "ly:run-translator",
           2, 1, 0, (SCM mus, SCM output_def),
-          "Process @var{mus} according to @var{output_def}. \n"
-          "An interpretation context is set up,\n"
-          "and @var{mus} is interpreted with it.  \n"
-          "The context is returned in its final state.\n"
-          "\n\n"
-          "Optionally, this routine takes an Object-key to\n"
-          "to uniquely identify the Score block containing it.\n")
+          "Process @var{mus} according to @var{output-def}.  An"
+          " interpretation context is set up, and @var{mus} is"
+          " interpreted with it.  The context is returned in its"
+          " final state.\n"
+          "\n"
+          "Optionally, this routine takes an object-key to"
+          " to uniquely identify the score block containing it.")
 {
   LY_ASSERT_SMOB (Music, mus, 1);
   LY_ASSERT_SMOB (Output_def, output_def, 2);
index e01468f9f3a1d0877e4a3b8e6f78f37be1135f76..49fac4c21ae76e5897de6815aecb30653821ba1a 100644 (file)
@@ -13,7 +13,7 @@
 LY_DEFINE (ly_grob_array_length, "ly:grob-array-length",
           1, 0, 0,
           (SCM grob_arr),
-          "Return the grob_array length.")
+          "Return the length of @var{grob-arr}.")
 {
   LY_ASSERT_SMOB (Grob_array, grob_arr, 1);
 
@@ -25,7 +25,7 @@ LY_DEFINE (ly_grob_array_length, "ly:grob-array-length",
 LY_DEFINE (ly_grob_array_ref, "ly:grob-array-ref",
           2, 0, 0,
           (SCM grob_arr, SCM index),
-          "Retrieve the @code{index} element of @code{grob-arr}.")
+          "Retrieve the @var{index}th element of @var{grob-arr}.")
 {
   Grob_array *me = unsmob_grob_array (grob_arr);
   LY_ASSERT_SMOB (Grob_array, grob_arr, 1);
index 563e7218c08a60cb994b896757686e6bf4ac80be..7265d4634784033d37db85251d0858f11e8a52a9 100644 (file)
@@ -49,7 +49,8 @@ Grob_pq_engraver::initialize ()
 
 LY_DEFINE (ly_grob_pq_less_p, "ly:grob-pq<?",
           2, 0, 0, (SCM a, SCM b),
-          "Compare 2 grob priority queue entries. Internal")
+          "Compare two grob priority queue entries."
+          "  This is an internal function.")
 {
   if (Moment::compare (*unsmob_moment (scm_car (a)),
                       *unsmob_moment (scm_car (b))) < 0)
index 1fcded7df749e3197ce2e2031a1dced00bc39317..55b06d6dfa2f522052b929b881bf2a974d7609c4 100644 (file)
@@ -47,14 +47,14 @@ FIXME: this should use ly:set-option interface instead.
 
 LY_DEFINE (ly_set_grob_modification_callback, "ly:set-grob-modification-callback",
           1, 0, 0, (SCM cb),
-          "Specify a procedure that will be called every time lilypond modifies "
-          "a grob property. The callback will receive as arguments "
-          "the grob that is being modified, "
-          "the name of the C++ file in which the modification was requested, "
-          "the line number in the C++ file in which the modification was requested, "
-          "the name of the function in which the modification was requested, "
-          "the property to be changed and "
-          "the new value for the property.")
+          "Specify a procedure that will be called every time LilyPond"
+          " modifies a grob property.  The callback will receive as"
+          " arguments the grob that is being modified, the name of the"
+          " C++ file in which the modification was requested, the line"
+          " number in the C++ file in which the modification was requested,"
+          " the name of the function in which the modification was"
+          " requested, the property to be changed, and the new value for"
+          " the property.")
 {
   modification_callback =  (ly_is_procedure (cb)) ? cb : SCM_BOOL_F;
   return SCM_UNSPECIFIED;
@@ -62,13 +62,12 @@ LY_DEFINE (ly_set_grob_modification_callback, "ly:set-grob-modification-callback
 
 LY_DEFINE (ly_set_property_cache_callback, "ly:set-property-cache-callback",
           1, 0, 0, (SCM cb),
-          "Specify a procedure that will be called whenever lilypond calculates "
-          "a callback function and caches the result. The callback will "
-          "receive as arguments "
-          "the grob whose property it is, "
-          "the name of the property, "
-          "the name of the callback that calculated the property and "
-          "the new (cached) value of the property.")
+          "Specify a procedure that will be called whenever lilypond"
+          " calculates a callback function and caches the result.  The"
+          " callback will receive as arguments the grob whose property it"
+          " is, the name of the property, the name of the callback that"
+          " calculated the property, and the new (cached) value of the"
+          " property.")
 {
   cache_callback =  (ly_is_procedure (cb)) ? cb : SCM_BOOL_F;
   return SCM_UNSPECIFIED;
index a2d5b66739d85acd17ed740deeca5669a781580f..fefdcd1046b266bc1c7144640d7ed037e7ed58d7 100644 (file)
@@ -29,7 +29,7 @@ LY_DEFINE (ly_grob_property_data, "ly:grob-property-data",
 
 LY_DEFINE (ly_grob_set_property_x, "ly:grob-set-property!",
           3, 0, 0, (SCM grob, SCM sym, SCM val),
-          "Set @var{sym} in grob @var{grob} to value @var{val}")
+          "Set @var{sym} in grob @var{grob} to value @var{val}.")
 {
   Grob *sc = unsmob_grob (grob);
  
@@ -46,10 +46,10 @@ LY_DEFINE (ly_grob_set_property_x, "ly:grob-set-property!",
 
 LY_DEFINE (ly_grob_property, "ly:grob-property",
           2, 1, 0, (SCM grob, SCM sym, SCM deflt),
-          "Return the value of a value in grob @var{g} of property @var{sym}. "
-          "It will return @code{'()} or @var{deflt} (if specified) "
-          "if  @var{sym} is undefined in @var{g}."
-          "\n\n")
+          "Return the value of a value in grob@tie{}@var{g} of property"
+          " @var{sym}.  It returns @code{'()} (end-of-list) or"
+          " @var{deflt} (if specified) if @var{sym} is undefined"
+          " in@tie{}@var{g}.")
 {
   Grob *sc = unsmob_grob (grob);
    
@@ -79,10 +79,9 @@ LY_DEFINE (ly_grob_interfaces, "ly:grob-interfaces",
 
 LY_DEFINE (ly_grob_object, "ly:grob-object",
           2, 0, 0, (SCM grob, SCM sym),
-          "Return the value of a pointer in grob @var{g} of property @var{sym}. "
-          "It will return @code{' ()} (end-of-list) "
-          "if  @var{sym} is undefined in @var{g}."
-          "\n\n")
+          "Return the value of a pointer in grob@tie{}@var{g} of property"
+          " @var{sym}.  It returns @code{'()} (end-of-list) if @var{sym}"
+          " is undefined in@tie{}@var{g}.")
 {
   Grob *sc = unsmob_grob (grob);
    
@@ -109,9 +108,9 @@ LY_DEFINE (ly_grob_layout, "ly:grob-layout",
 
 LY_DEFINE (ly_grob_alist_chain, "ly:grob-alist-chain",
           1, 1, 0, (SCM grob, SCM global),
-          "Get an alist chain for grob @var{grob}, with @var{global} as the "
-          "global default. If unspecified, @code{font-defaults} "
-          "from the layout block is taken. ")
+          "Get an alist chain for grob @var{grob}, with @var{global} as"
+          " the global default.  If unspecified, @code{font-defaults}"
+          " from the layout block is taken.")
 {
   Grob *sc = unsmob_grob (grob);
    
@@ -129,8 +128,8 @@ LY_DEFINE (ly_grob_alist_chain, "ly:grob-alist-chain",
 
 LY_DEFINE (ly_grob_extent, "ly:grob-extent",
           3, 0, 0, (SCM grob, SCM refp, SCM axis),
-          "Get the extent in @var{axis} direction of @var{grob} relative to "
-          "the grob @var{refp}")
+          "Get the extent in @var{axis} direction of @var{grob} relative to"
+          " the grob @var{refp}.")
 {
   Grob *sc = unsmob_grob (grob);
   Grob *ref = unsmob_grob (refp);
@@ -153,8 +152,8 @@ LY_DEFINE (ly_grob_extent, "ly:grob-extent",
 
 LY_DEFINE (ly_grob_robust_relative_extent, "ly:grob-robust-relative-extent",
           3, 0, 0, (SCM grob, SCM refp, SCM axis),
-          "Get the extent in @var{axis} direction of @var{grob} relative to "
-          "the grob @var{refp}, or (0,0) if empty")
+          "Get the extent in @var{axis} direction of @var{grob} relative to"
+          " the grob @var{refp}, or @code{(0,0)} if empty.")
 {
   Grob *sc = unsmob_grob (grob);
   Grob *ref = unsmob_grob (refp);
@@ -177,8 +176,8 @@ LY_DEFINE (ly_grob_robust_relative_extent, "ly:grob-robust-relative-extent",
 
 LY_DEFINE (ly_grob_relative_coordinate, "ly:grob-relative-coordinate",
           3, 0, 0, (SCM grob, SCM refp, SCM axis),
-          "Get the coordinate in @var{axis} direction of @var{grob} relative to "
-          "the grob @var{refp}")
+          "Get the coordinate in @var{axis} direction of @var{grob} relative"
+          " to the grob @var{refp}.")
 {
   Grob *sc = unsmob_grob (grob);
   Grob *ref = unsmob_grob (refp);
@@ -203,8 +202,8 @@ LY_DEFINE (ly_grob_relative_coordinate, "ly:grob-relative-coordinate",
 
 LY_DEFINE (ly_grob_parent, "ly:grob-parent",
           2, 0, 0, (SCM grob, SCM axis),
-          "Get the parent of @var{grob}.  @var{axis} is 0 for the X-axis, "
-          "for the Y-axis.")
+          "Get the parent of @var{grob}.  @var{axis} is 0 for the X-axis,"
+          " 1@tie{}for the Y-axis.")
 {
   Grob *sc = unsmob_grob (grob);
    
@@ -217,7 +216,7 @@ LY_DEFINE (ly_grob_parent, "ly:grob-parent",
 
 LY_DEFINE (ly_grob_properties, "ly:grob-properties",
           1, 0, 0, (SCM grob),
-          "Get the mutable proprerties of @var{grob}.")
+          "Get the mutable properties of @var{grob}.")
 {
   Grob *g = unsmob_grob (grob);
    
@@ -241,7 +240,7 @@ LY_DEFINE (ly_grob_basic_properties, "ly:grob-basic-properties",
 
 LY_DEFINE (ly_grob_system, "ly:grob-system",
           1, 0, 0, (SCM grob),
-          "Return the System Grob of @var{grob}.")
+          "Return the system grob of @var{grob}.")
 {
   Grob *me = unsmob_grob (grob);
    
@@ -255,7 +254,7 @@ LY_DEFINE (ly_grob_system, "ly:grob-system",
 
 LY_DEFINE (ly_grob_original, "ly:grob-original",
           1, 0, 0, (SCM grob),
-          "Return the unbroken original Grob of @var{grob}.")
+          "Return the unbroken original grob of @var{grob}.")
 {
   Grob *me = unsmob_grob (grob);
    
@@ -278,7 +277,8 @@ LY_DEFINE (ly_grob_suicide_x, "ly:grob-suicide!",
 
 LY_DEFINE (ly_grob_translate_axis_x, "ly:grob-translate-axis!",
           3, 0, 0, (SCM grob, SCM d, SCM a),
-          "Translate @var{g} on axis @var{a} over distance @var{d}.")
+          "Translate @var{g} on axis@tie{}@var{a} over"
+          " distance@tie{}@var{d}.")
 {
   Grob *me = unsmob_grob (grob);
    
@@ -309,8 +309,8 @@ LY_DEFINE (ly_grob_default_font, "ly:grob-default-font",
  */
 LY_DEFINE (ly_grob_common_refpoint, "ly:grob-common-refpoint",
           3, 0, 0,  (SCM grob, SCM other, SCM axis),
-          "Find the common refpoint of @var{grob} and @var{other} for @var{axis}."
-          )
+          "Find the common refpoint of @var{grob} and @var{other}"
+          " for @var{axis}.")
 {
   
   Grob *gr = unsmob_grob (grob);
@@ -328,9 +328,8 @@ LY_DEFINE (ly_grob_common_refpoint, "ly:grob-common-refpoint",
 
 LY_DEFINE (ly_grob_common_refpoint_of_array, "ly:grob-common-refpoint-of-array",
           3, 0, 0,  (SCM grob, SCM others, SCM axis),
-          "Find the common refpoint of @var{grob} and @var{others} "
-          "(a grob-array) for @var{axis}."
-          )
+          "Find the common refpoint of @var{grob} and @var{others}"
+          " (a grob-array) for @var{axis}.")
 {
   Grob *gr = unsmob_grob (grob);
    
index cdfadd3dfc4c4930815eb359fafa129986cc707e..7f3fcbbdad85472f04ca539bcec73a916782b3cb 100644 (file)
@@ -28,8 +28,8 @@ print_box (SCM b, SCM port, scm_print_state *)
    type `box', initialized to `#f'.  */
 LY_DEFINE (ly_export, "ly:export",
           1, 0, 0, (SCM arg),
-          "Export a Scheme object to the parser"
-          "so it is treated as an identifier.")
+          "Export a Scheme object to the parser"
+          " so it is treated as an identifier.")
 {
   SCM_RETURN_NEWSMOB (package_tag, arg);
 }
diff --git a/lily/include/folded-repeat-iterator.hh b/lily/include/folded-repeat-iterator.hh
deleted file mode 100644 (file)
index d32f77d..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
-  folded-repeat-iterator.hh -- declare Folded_repeat_iterator
-
-  source file of the GNU LilyPond music typesetter
-
-  (c) 1999--2007 Han-Wen Nienhuys <hanwen@xs4all.nl>
-*/
-
-#ifndef FOLDED_REPEAT_ITERATOR_HH
-#define FOLDED_REPEAT_ITERATOR_HH
-
-#include "music-iterator.hh"
-
-/**
-   Iterate through a repeated section: first do the body, then
-   all alternatives in parallel.
-*/
-class Folded_repeat_iterator : public Music_iterator
-{
-public:
-  DECLARE_SCHEME_CALLBACK (constructor, ());
-  DECLARE_CLASSNAME(Folded_repeat_iterator);
-
-  Folded_repeat_iterator (Folded_repeat_iterator const &src);
-  Folded_repeat_iterator ();
-  virtual void derived_mark () const;
-  virtual void derived_substitute (Context *f, Context *t);
-
-  virtual void construct_children ();
-  virtual Moment pending_moment () const;
-  virtual void do_quit ();
-  virtual bool ok () const;
-
-protected:
-  void enter_alternative ();
-  void leave_body ();
-
-  virtual void process (Moment);
-
-private:
-  Music_iterator *main_iter_;
-  Music_iterator *alternative_iter_;
-
-  Moment main_length_mom_;
-};
-#endif /* FOLDED_REPEAT_ITERATOR_HH */
-
diff --git a/lily/include/grob-pitch-tuple.hh b/lily/include/grob-pitch-tuple.hh
deleted file mode 100644 (file)
index e69de29..0000000
index 4754d498da31ff385e54412bb9571604fec9ac70..8de07c990bf4a316c9b9afbc292ff543de8f85af 100644 (file)
@@ -55,7 +55,6 @@ class Event;
 class Event_chord;
 class Event_chord_iterator;
 class Event_iterator;
-class Folded_repeat_iterator;
 class Font_metric;
 class Font_size_engraver;
 class Global_context;
index f6f2a3f4490eb8c64e06a2e1cfe6d78de7a614a4..922112b087bc63d0fdc9287277f78634b4d2b54d 100644 (file)
@@ -19,8 +19,9 @@ LY_DEFINE (ly_input_location_p, "ly:input-location?", 1, 0, 0,
 }
 
 LY_DEFINE (ly_input_message, "ly:input-message", 2, 0, 1, (SCM sip, SCM msg, SCM rest),
-          "Print @var{msg} as a GNU compliant error message, pointing to the "
-          "location in @var{sip}. @var{msg} is interpreted similar to @code{format}'s argument\n")
+          "Print @var{msg} as a GNU compliant error message, pointing"
+          " to the location in @var{sip}.  @var{msg} is interpreted"
+          " similar to @code{format}'s argument, using @var{rest}.")
 {
   Input *ip = unsmob_input (sip);
 
@@ -39,7 +40,8 @@ LY_DEFINE (ly_input_message, "ly:input-message", 2, 0, 1, (SCM sip, SCM msg, SCM
 LY_DEFINE (ly_input_file_line_char_column,
           "ly:input-file-line-char-column",
           1, 0, 0, (SCM sip),
-          "Return input location in @var{sip} as (file-name line char column).")
+          "Return input location in @var{sip} as"
+          " @code{(file-name line char column)}.")
 {
   LY_ASSERT_TYPE (unsmob_input, sip, 1);
   Input *ip = unsmob_input (sip);
@@ -57,8 +59,8 @@ LY_DEFINE (ly_input_file_line_char_column,
 LY_DEFINE (ly_input_both_locations,
           "ly:input-both-locations",
           1, 0, 0, (SCM sip),
-          "Return input location in @var{sip} as "
-          "(file-name first-line first-column last-line last-column).")
+          "Return input location in @var{sip} as"
+          " @code{(file-name first-line first-column last-line last-column)}.")
 {
   
   LY_ASSERT_TYPE (unsmob_input, sip, 1);
index 426d9532a6ebeb3fcee8cc145d01aec3b68a71dc..2d561fbc060a3d9b0f69fd5faa684d5ebf5ffc2b 100644 (file)
@@ -21,8 +21,9 @@ LY_DEFINE (ly_item_p, "ly:item?",
 
 LY_DEFINE (ly_item_break_dir, "ly:item-break-dir",
           1, 0, 0, (SCM it),
-          "The break status dir of item @var{it}. @code{-1} is end of "
-          "line, @code{0} unbroken, and @code{1} begin of line.")
+          "The break status direction of item @var{it}.  @code{-1} means"
+          " end of line, @code{0}@tie{}unbroken, and"
+          " @code{1}@tie{}beginning of line.")
 {
   LY_ASSERT_TYPE (unsmob_item, it, 1);
   Item *me = unsmob_item (it);
index 0d561f9d8b2bad8e96b664d94c02e49ec2f3d620..e619c8e7957ca45bafba98437c5e076ebc7838f8 100644 (file)
@@ -11,7 +11,8 @@
 
 LY_DEFINE (ly_lexer_keywords, "ly:lexer-keywords",
          1, 0, 0, (SCM lexer),
-         "Return a list of (KEY . CODE) pairs, signifying the lilypond reserved words list.")
+         "Return a list of @code{(KEY . CODE)} pairs, signifying the"
+         " LilyPond reserved words list.")
 {
   LY_ASSERT_SMOB (Lily_lexer, lexer, 1);
 
index 6e628d8ae89dabdf451f848444eb2addca1954f3..1631c4a3daa85036b1089bfe62377af3578af684 100644 (file)
@@ -33,8 +33,8 @@ LY_DEFINE (ly_set_point_and_click, "ly:set-point-and-click",
 
 LY_DEFINE (ly_parse_file, "ly:parse-file",
           1, 0, 0, (SCM name),
-          "Parse a single @code{.ly} file.  "
-          "Upon failure, throw @code{ly-file-failed} key.")
+          "Parse a single @code{.ly} file."
+          "  Upon failure, throw @code{ly-file-failed} key.")
 {
   LY_ASSERT_TYPE (scm_is_string, name, 1);
   string file = ly_scm2string (name);
@@ -183,8 +183,8 @@ LY_DEFINE (ly_parser_define_x, "ly:parser-define!",
 
 LY_DEFINE (ly_parser_lookup, "ly:parser-lookup",
           2, 0, 0, (SCM parser_smob, SCM symbol),
-          "Lookup @var{symbol} in @var{parser-smob}'s module.  "
-          "Undefined is '().")
+          "Look up @var{symbol} in @var{parser-smob}'s module."
+          "  Return @code{'()} if not defined.")
 {
   LY_ASSERT_SMOB (Lily_parser, parser_smob, 1);
 
@@ -201,8 +201,8 @@ LY_DEFINE (ly_parser_lookup, "ly:parser-lookup",
 
 LY_DEFINE (ly_parser_parse_string, "ly:parser-parse-string",
           2, 0, 0, (SCM parser_smob, SCM ly_code),
-          "Parse the string @code{ly-code} with @code{parser-smob}."
-          "Upon failure, throw @code{ly-file-failed} key.")
+          "Parse the string @var{ly-code} with @var{parser-smob}."
+          "  Upon failure, throw @code{ly-file-failed} key.")
 {
   LY_ASSERT_SMOB (Lily_parser, parser_smob, 1);
   Lily_parser *parser = unsmob_lily_parser (parser_smob); 
@@ -215,9 +215,9 @@ LY_DEFINE (ly_parser_parse_string, "ly:parser-parse-string",
 
 LY_DEFINE (ly_parser_set_note_names, "ly:parser-set-note-names",
           2, 0, 0, (SCM parser, SCM names),
-          "Replace current note names in @var{parser}. "
-          "@var{names} is an alist of symbols.  "
-          "This only has effect if the current mode is notes.")
+          "Replace current note names in @var{parser}."
+          "  @var{names} is an alist of symbols.  This only has effect"
+          " if the current mode is notes.")
 {
   LY_ASSERT_SMOB (Lily_parser, parser, 1);
   Lily_parser *p = unsmob_lily_parser (parser);
@@ -243,7 +243,7 @@ LY_DEFINE (ly_parser_output_name, "ly:parser-output-name",
 
 LY_DEFINE (ly_parser_error, "ly:parser-error",
           2, 1, 0, (SCM parser, SCM msg, SCM input),
-          "Display an error message, and make the parser fail")
+          "Display an error message and make the parser fail.")
 {
   LY_ASSERT_SMOB (Lily_parser, parser, 1);
   Lily_parser *p = unsmob_lily_parser (parser);
diff --git a/lily/lilypond-key.cc b/lily/lilypond-key.cc
deleted file mode 100644 (file)
index e69de29..0000000
index 581984dfe9951495bd4320684d8d1f562784ae94..acf7b06f8802c6eab03e978e3c7e6176ebc35ba0 100644 (file)
@@ -108,7 +108,7 @@ entry_to_alist (void *closure, SCM key, SCM val, SCM result)
 
 LY_DEFINE (ly_module_2_alist, "ly:module->alist",
           1, 0, 0, (SCM mod),
-          "Dump the contents of  module @var{mod} as an alist.")
+          "Dump the contents of module @var{mod} as an alist.")
 {
   SCM_VALIDATE_MODULE (1, mod);
   SCM obarr = SCM_MODULE_OBARRAY (mod);
index ce08c424567d32a7d45e92bbd0fc79cc01b08d77..9f4832628fb455e8e57169e642490bc9ff340894 100644 (file)
@@ -30,7 +30,7 @@ module_define_closure_func (void *closure, SCM key, SCM val, SCM result)
 
 LY_DEFINE (ly_module_copy, "ly:module-copy",
           2, 0, 0, (SCM dest, SCM src),
-          "Copy all bindings from module SRC into DEST.")
+          "Copy all bindings from module @var{src} into @var{dest}.")
 {
 #define FUNC_NAME __FUNCTION__
   SCM_VALIDATE_MODULE (1, src);
@@ -42,8 +42,8 @@ LY_DEFINE (ly_module_copy, "ly:module-copy",
 
 LY_DEFINE (ly_clear_anonymous_modules, "ly:clear-anonymous-modules",
           0, 0, 0, (),
-          "Plug a GUILE 1.6 and 1.7 memory leak by breaking a weak reference "
-          "pointer cycle explicitly.")
+          "Plug a GUILE 1.6 and 1.7 memory leak by breaking a weak"
+          " reference pointer cycle explicitly.")
 {
 #ifdef MODULE_GC_KLUDGE
   clear_anonymous_modules ();
@@ -68,9 +68,9 @@ ly_module_lookup (SCM module, SCM sym)
 LY_DEFINE (ly_modules_lookup, "ly:modules-lookup",
           2, 1, 0,
           (SCM modules, SCM sym, SCM def),
-          "Lookup @var{sym} in the list @var{modules}, "
-          "returning the first occurence.  "
-          "If not found, return @var{default}, or @code{#f}.")
+          "Look up @var{sym} in the list @var{modules},"
+          " returning the first occurence.  If not found, return"
+          " @var{def} or @code{#f} if @var{def} isn't specified.")
 {
   for (SCM s = modules; scm_is_pair (s); s = scm_cdr (s))
     {
index 4eb3086adf1331f816cf66659d4c86f9846fd15f..85155034c597bc6c3bd187d2960832a27f4b4387 100644 (file)
 /* TODO: add optional factor argument. */
 LY_DEFINE (ly_make_moment, "ly:make-moment",
           2, 2, 0, (SCM n, SCM d, SCM gn, SCM gd),
-          "Create the rational number with main timing @var{n}/@var{d}, "
-          "and optional grace timin @var{gn}/@var{gd}.\n"
+          "Create the rational number with main timing @var{n}/@var{d},"
+          " and optional grace timing @var{gn}/@var{gd}.\n"
           "\n"
-          "\n"
-          "Moment is a point in musical time.  "
-          "It is consists of a pair of rationals (@var{m}, @var{g}), "
-          "where @var{m} is the timing for the main\n"
-          "notes, and @var{g} the timing for grace notes.  "
-          "In absence of grace notes, @var{g} is zero.\n")
+          "A @dfn{moment} is a point in musical time.  It consists of"
+          " a pair of rationals (@var{m},@tie{}@var{g}), where @var{m} is"
+          " the timing for the main notes, and @var{g} the timing for"
+          " grace notes.  In absence of grace notes, @var{g}@tie{}is zero.")
 {
   LY_ASSERT_TYPE (scm_is_integer, n, 1);
   LY_ASSERT_TYPE (scm_is_integer, d, 2);
index 828929994a93515b22840709f5a5efdcda65d28c..c22634f1522d370fd5fd099a1c4485c01f35291a 100644 (file)
@@ -2,14 +2,14 @@
 
 LY_DEFINE (ly_music_function_p, "ly:music-function?", 1, 0, 0,
           (SCM x),
-          "Is @var{x} an @code{music-function}?")
+          "Is @var{x} a @code{music-function}?")
 {
   return is_music_function (x) ? SCM_BOOL_T : SCM_BOOL_F;
 }
                 
 LY_DEFINE (ly_music_function_extract, "ly:music-function-extract", 1, 0, 0,
           (SCM x),
-          "Return the Scheme function inside @var{x}")
+          "Return the Scheme function inside@tie{}@var{x}.")
 {
   LY_ASSERT_TYPE (is_music_function, x, 1);
   
@@ -18,10 +18,11 @@ LY_DEFINE (ly_music_function_extract, "ly:music-function-extract", 1, 0, 0,
 
 LY_DEFINE (ly_make_music_function, "ly:make-music-function", 2, 0, 0,
           (SCM signature, SCM func),
-          "Make a function to process music, to be used for the "
-          "parser. @code{func} is the function, and @code{signature} describes "
-          "Its arguments. @code{signature} is a list containing either "
-          "@code{ly:music?} predicates or other type predicates.")
+          "Make a function to process music, to be used for the"
+          " parser.  @code{func} is the function, and @code{signature}"
+          " describes its arguments.  @code{signature} is a list"
+          " containing either @code{ly:music?} predicates or other type"
+          " predicates.")
 {
   LY_ASSERT_TYPE (ly_is_procedure, func, 1);
   return  make_music_function (signature, func);
index c52b1d6a8727a1ef591eea6201aba2d1220c5084..b6f0fbe7a2258e658701393a09a5f773e61979cb 100644 (file)
@@ -13,7 +13,8 @@
 
 LY_DEFINE (ly_music_length, "ly:music-length",
           1, 0, 0, (SCM mus),
-          "Get the length of music expression @var{mus}, and return as a @code{Moment} object.")
+          "Get the length of music expression @var{mus} and return"
+          " it as a @code{Moment} object.")
 {
   LY_ASSERT_TYPE (unsmob_music, mus, 1);
   Music *sc = unsmob_music (mus);
@@ -22,8 +23,8 @@ LY_DEFINE (ly_music_length, "ly:music-length",
 
 LY_DEFINE (ly_music_property,
           "ly:music-property", 2, 1, 0, (SCM mus, SCM sym, SCM dfault),
-          "Get the property @var{sym} of music expression @var{mus}.\n"
-          "If @var{sym} is undefined, return @code{'()}.\n")
+          "Get the property @var{sym} of music expression @var{mus}."
+          "  If @var{sym} is undefined, return @code{'()}.")
 {
   LY_ASSERT_TYPE (unsmob_music, mus, 1);
   return ly_prob_property (mus, sym, dfault);
@@ -31,7 +32,8 @@ LY_DEFINE (ly_music_property,
 
 LY_DEFINE (ly_music_set_property_x, "ly:music-set-property!",
           3, 0, 0, (SCM mus, SCM sym, SCM val),
-          "Set property @var{sym} in music expression @var{mus} to @var{val}.")
+          "Set property @var{sym} in music expression @var{mus} to"
+          " @var{val}.")
 {
   LY_ASSERT_TYPE (unsmob_music, mus, 1);
 
@@ -42,12 +44,12 @@ LY_DEFINE (ly_music_set_property_x, "ly:music-set-property!",
 /* todo:  property args */
 LY_DEFINE (ly_make_music, "ly:make-music",
           1, 0, 0, (SCM props),
-          "Make a C++ Music object, initialize with\n"
-          "@var{props}. \n\n"
-          ""
-          "This function is for internal use, and is only called by "
-          "@code{make-music}, which is the preferred interface "
-          "for creating music objects. ")
+          "Make a C++ @code{Music} object and initialize it with"
+          " @var{props}.\n"
+          "\n"
+          "This function is for internal use and is only called by"
+          " @code{make-music}, which is the preferred interface"
+          " for creating music objects.")
 {
   Music *ms = new Music (props);
   return ms->unprotect ();
@@ -55,7 +57,7 @@ LY_DEFINE (ly_make_music, "ly:make-music",
 
 LY_DEFINE (ly_music_p, "ly:music?",
           1, 0, 0, (SCM obj),
-          "Type predicate")
+          "Type predicate.")
 {
   return scm_from_bool (unsmob_music (obj));
 }
@@ -63,10 +65,9 @@ LY_DEFINE (ly_music_p, "ly:music?",
 /* todo: property args */
 LY_DEFINE (ly_music_mutable_properties, "ly:music-mutable-properties",
           1, 0, 0, (SCM mus),
-          "Return an alist containing the mutable properties of @var{mus}.\n"
-          "The immutable properties are not available, since "
-          "they are constant and initialized by the "
-          "@code{make-music} function.\n")
+          "Return an alist containing the mutable properties of @var{mus}."
+          "  The immutable properties are not available, since they are"
+          " constant and initialized by the @code{make-music} function.")
 {
   LY_ASSERT_TYPE (unsmob_music, mus, 1);
   Music *m = unsmob_music (mus);
@@ -75,8 +76,8 @@ LY_DEFINE (ly_music_mutable_properties, "ly:music-mutable-properties",
 
 LY_DEFINE (ly_music_list_p, "ly:music-list?",
           1, 0, 0, (SCM lst),
-          "Type predicate: return true if @var{lst} is a list "
-          "of music objects.")
+          "Type predicate: Return true if @var{lst} is a list"
+          " of music objects.")
 {
   if (scm_list_p (lst) == SCM_BOOL_T)
     while (scm_is_pair (lst))
@@ -91,7 +92,7 @@ LY_DEFINE (ly_music_list_p, "ly:music-list?",
 
 LY_DEFINE (ly_music_deep_copy, "ly:music-deep-copy",
           1, 0, 0, (SCM m),
-          "Copy @var{m} and all sub expressions of @var{m}")
+          "Copy @var{m} and all sub expressions of@tie{}@var{m}.")
 {
   SCM copy = m;
   if (unsmob_music (m))
@@ -107,8 +108,8 @@ LY_DEFINE (ly_music_deep_copy, "ly:music-deep-copy",
 
 LY_DEFINE (ly_music_transpose, "ly:music-transpose",
           2, 0, 0, (SCM m, SCM p),
-          "Transpose @var{m} such that central C is mapped to @var{p}. "
-          "Return @var{m}.")
+          "Transpose @var{m} such that central@tie{}C is mapped"
+          " to@tie{}@var{p}.  Return@tie{}@var{m}.")
 {
   LY_ASSERT_TYPE (unsmob_music, m, 1);
   LY_ASSERT_SMOB (Pitch, p, 2);
@@ -126,7 +127,7 @@ LY_DEFINE (ly_music_transpose, "ly:music-transpose",
 */
 LY_DEFINE (ly_music_compress, "ly:music-compress",
           2, 0, 0, (SCM m, SCM factor),
-          "Compress music object @var{m} by moment @var{factor}.")
+          "Compress music object@tie{}@var{m} by moment @var{factor}.")
 {
   LY_ASSERT_TYPE (unsmob_music, m, 1);
   LY_ASSERT_TYPE (unsmob_moment, factor, 2);
@@ -138,7 +139,8 @@ LY_DEFINE (ly_music_compress, "ly:music-compress",
 
 LY_DEFINE (ly_music_duration_length, "ly:music-duration-length", 1, 0, 0,
           (SCM mus),
-          "Extract the duration field from @var{mus}, and return the length.")
+          "Extract the duration field from @var{mus} and return the"
+          " length.")
 {
   LY_ASSERT_TYPE (unsmob_music, mus, 1);
   Music *m = unsmob_music (mus);
@@ -155,7 +157,8 @@ LY_DEFINE (ly_music_duration_length, "ly:music-duration-length", 1, 0, 0,
 
 LY_DEFINE (ly_music_duration_compress, "ly:music-duration-compress", 2, 0, 0,
           (SCM mus, SCM fact),
-          "Compress @var{mus} by factor @var{fact}, which is a @code{Moment}.")
+          "Compress @var{mus} by factor @var{fact}, which is a"
+          " @code{Moment}.")
 {
   LY_ASSERT_TYPE (unsmob_music, mus, 1);
   LY_ASSERT_SMOB (Moment, fact, 2);
@@ -178,7 +181,8 @@ LY_DEFINE (ly_music_duration_compress, "ly:music-duration-compress", 2, 0, 0,
 */
 LY_DEFINE (ly_transpose_key_alist, "ly:transpose-key-alist",
           2, 0, 0, (SCM l, SCM pit),
-          "Make a new key alist of @var{l} transposed by pitch @var{pit}")
+          "Make a new key alist of@tie{}@var{l} transposed by"
+          " pitch @var{pit}.")
 {
   SCM newlist = SCM_EOL;
   Pitch *p = unsmob_pitch (pit);
index 89f17453cf6d2aa6dcc81880471ba92bdd657dbb..bf0bd991774c99f37a664f23432c15812b000214 100644 (file)
@@ -13,8 +13,8 @@
 
 LY_DEFINE (ly_note_head__stem_attachment, "ly:note-head::stem-attachment",
          2, 0, 0, (SCM font_metric, SCM glyph_name),
-         "Get attachment in @var{font-metric} for attaching a stem to notehead "
-         "@var{glyph-name}.")
+         "Get attachment in @var{font-metric} for attaching a stem to"
+         " notehead @var{glyph-name}.")
 {
   LY_ASSERT_SMOB (Font_metric, font_metric, 1);
   Font_metric *fm = unsmob_metrics (font_metric);
diff --git a/lily/object-key.cc b/lily/object-key.cc
deleted file mode 100644 (file)
index e69de29..0000000
index 6f95641325b5cdc977c5ad9f58f08dc1e243c94c..173eb56d3794880dcdc152ab1c77883a99e0ae3f 100644 (file)
@@ -11,8 +11,8 @@
 
 LY_DEFINE (ly_font_sub_fonts, "ly:font-sub-fonts", 1, 0, 0,
           (SCM font),
-          "Given the font metric @var{font} of an OpenType font, return the "
-          "names of the subfonts within @var{font}.")
+          "Given the font metric @var{font} of an OpenType font, return the"
+          " names of the subfonts within @var{font}.")
 {
   LY_ASSERT_SMOB (Font_metric, font, 1);
   Font_metric *fm = unsmob_metrics (font);
@@ -21,8 +21,8 @@ LY_DEFINE (ly_font_sub_fonts, "ly:font-sub-fonts", 1, 0, 0,
 
 LY_DEFINE (ly_otf_font_glyph_info, "ly:otf-font-glyph-info", 2, 0, 0,
           (SCM font, SCM glyph),
-          "Given the font metric @var{font} of an OpenType font, return the "
-          "information about named glyph @var{glyph} (a string)")
+          "Given the font metric @var{font} of an OpenType font, return the"
+          " information about named glyph @var{glyph} (a string).")
 {
   Modified_font_metric *fm
     = dynamic_cast<Modified_font_metric *> (unsmob_metrics (font));
@@ -37,8 +37,8 @@ LY_DEFINE (ly_otf_font_glyph_info, "ly:otf-font-glyph-info", 2, 0, 0,
 
 LY_DEFINE (ly_otf_font_table_data, "ly:otf-font-table-data", 2, 0, 0,
           (SCM font, SCM tag),
-          "Extract a table @var{tag} from @var{font}. Return empty string for "
-          "non-existent @var{tag}.")
+          "Extract a table @var{tag} from @var{font}.  Return empty string"
+          " for non-existent @var{tag}.")
 {
   Modified_font_metric *fm
     = dynamic_cast<Modified_font_metric *> (unsmob_metrics (font));
@@ -74,7 +74,7 @@ LY_DEFINE (ly_otf_font_p, "ly:otf-font?", 1, 0, 0,
 
 LY_DEFINE (ly_otf_glyph_list, "ly:otf-glyph-list",
           1, 0, 0, (SCM font),
-          "Return a list of glyphnames for @var{font}.")
+          "Return a list of glyph names for @var{font}.")
 {
   Modified_font_metric *fm
     = dynamic_cast<Modified_font_metric *> (unsmob_metrics (font));
index 728e726a5e3e476e540018d7a9041a0b1bbb964b..34ff7f1b184cb519b418c2b44f53417599a31b4d 100644 (file)
@@ -52,7 +52,7 @@ Optimal_page_breaking::solve ()
   vsize ideal_sys_count = best.system_count ();
   vsize min_sys_count = ideal_sys_count - best.systems_per_page_.back ();
   
-  if (page_count > 1)
+  if (page_count > 1 && best.systems_per_page_[page_count - 2] > 1)
     min_sys_count -= best.systems_per_page_[page_count - 2];
 
   if (page_count == 1)
index ea216a371fc3ae5ad63d36a31e1f2ef06f8e2564..29c8949ab97994abafb2ba122e0e18d5cd6f4061 100644 (file)
@@ -16,8 +16,9 @@
 
 LY_DEFINE (ly_output_def_lookup, "ly:output-def-lookup",
           2, 1, 0, (SCM pap, SCM sym, SCM def),
-          "Lookup @var{sym} in the Output_def @var{pap}. "
-          "Return the value or @var{def} (which defaults to  @code{'()}) if undefined.")
+          "Look up @var{sym} in the @var{pap} output definition"
+          " (e.g., @code{\\paper}).  Return the value or @var{def}"
+          " (which defaults to @code{'()}) if undefined.")
 {
   LY_ASSERT_SMOB (Output_def, pap, 1);
   Output_def *op = unsmob_output_def (pap);
@@ -46,7 +47,7 @@ LY_DEFINE (ly_output_def_scope, "ly:output-def-scope",
 
 LY_DEFINE (ly_output_def_parent, "ly:output-def-parent",
           1, 0, 0, (SCM def),
-          "Get the parent output-def of @var{def}.")
+          "Get the parent output definition of @var{def}.")
 {
   LY_ASSERT_SMOB (Output_def, def, 1);
   Output_def *op = unsmob_output_def (def);
@@ -55,7 +56,7 @@ LY_DEFINE (ly_output_def_parent, "ly:output-def-parent",
 
 LY_DEFINE (ly_output_def_clone, "ly:output-def-clone",
           1, 0, 0, (SCM def),
-          "Clone @var{def}.")
+          "Clone output definition @var{def}.")
 {
   LY_ASSERT_SMOB (Output_def, def, 1);
   Output_def *op = unsmob_output_def (def);
@@ -91,7 +92,7 @@ LY_DEFINE (ly_output_def_p, "ly:output-def?",
 
 LY_DEFINE (ly_paper_outputscale, "ly:paper-outputscale",
           1, 0, 0, (SCM bp),
-          "Get output-scale for BP.")
+          "Get output-scale for @var{bp}.")
 {
   LY_ASSERT_SMOB (Output_def, bp, 1);
   Output_def *b = unsmob_output_def (bp);
@@ -100,7 +101,7 @@ LY_DEFINE (ly_paper_outputscale, "ly:paper-outputscale",
 
 LY_DEFINE (ly_make_output_def, "ly:make-output-def",
           0, 0, 0, (),
-          "Make a output def.")
+          "Make an output definition.")
 {
   Output_def *bp = new Output_def;
   return bp->unprotect ();
@@ -108,11 +109,9 @@ LY_DEFINE (ly_make_output_def, "ly:make-output-def",
 
 LY_DEFINE (ly_paper_get_font, "ly:paper-get-font", 2, 0, 0,
           (SCM paper_smob, SCM chain),
-
-          "Return a font metric satisfying the font-qualifiers "
-          "in the alist chain @var{chain}.\n"
-          "(An alist chain is a list of alists, "
-          "containing grob properties).\n")
+          "Return a font metric satisfying the font-qualifiers"
+          " in the alist chain @var{chain}.  (An alist chain is a"
+          " list of alists, containing grob properties.)")
 {
   LY_ASSERT_SMOB (Output_def, paper_smob, 1);
 
index 87d21383b328a671965e0b3e9e5776ad270495f3..2241b503a760079d4a2ffc2776a00244d1379b7a 100644 (file)
@@ -13,8 +13,9 @@
 
 LY_DEFINE (ly_page_turn_breaking, "ly:page-turn-breaking",
           1, 0, 0, (SCM pb),
-          "Optimally break (pages and lines) the Paper_book PB such that page turns "
-          "only happen in specified places, returning its pages.")
+          "Optimally break (pages and lines) the @code{Paper_book} object"
+          " @var{pb} such that page turns only happen in specified places,"
+          " returning its pages.")
 {
   Page_turn_page_breaking b (unsmob_paper_book (pb));
   return b.solve ();
@@ -22,8 +23,9 @@ LY_DEFINE (ly_page_turn_breaking, "ly:page-turn-breaking",
 
 LY_DEFINE (ly_optimal_breaking, "ly:optimal-breaking",
           1, 0, 0, (SCM pb),
-          "Optimally break (pages and lines) the Paper_book PB to minimise badness in "
-          "bother vertical and horizontal spacing.")
+          "Optimally break (pages and lines) the @code{Paper_book} object"
+          " @var{pb} to minimize badness in bother vertical and horizontal"
+          " spacing.")
 {
   Optimal_page_breaking b (unsmob_paper_book (pb));
   return b.solve ();
index 2c137e36842f108b22da3b7583a4a0f67bf38611..709ee52cb3eb433a9d9ead01143f12e49a07d9f2 100644 (file)
@@ -726,7 +726,9 @@ Page_breaking::space_systems_on_n_or_one_more_pages (vsize configuration, vsize
 
   Real penalty = blank_page_penalty ();
   n_res.demerits_ += penalty;
-  n_res.force_.back () += penalty;
+
+  if (n_res.force_.size ())
+    n_res.force_.back () += penalty;
 
   return (m_res.demerits_ < n_res.demerits_) ? m_res : n_res;
 }
@@ -759,6 +761,9 @@ Page_breaking::space_systems_on_best_pages (vsize configuration, vsize first_pag
 Page_spacing_result
 Page_breaking::finalize_spacing_result (vsize configuration, Page_spacing_result res)
 {
+  if (res.force_.empty ())
+    return res;
+
   cache_line_details (configuration);
   res.systems_per_page_ = uncompress_solution (res.systems_per_page_, cached_line_details_);
 
index fe6d4bacd48007ed1fe94bd4baf7764c1ba3feca..20f15764b519440c8f0459b8d0933425153bca20 100644 (file)
@@ -30,7 +30,7 @@ LY_DEFINE (ly_pango_font_p, "ly:pango-font?",
 LY_DEFINE (ly_pango_font_physical_fonts, "ly:pango-font-physical-fonts",
           1, 0, 0,
           (SCM f),
-          "Return alist of  (PSNAME . FILENAME) tuples.")
+          "Return alist of @code{(PSNAME . FILENAME)} tuples.")
 {
   Pango_font *pf = dynamic_cast<Pango_font *> (unsmob_metrics (f));
 
index 613cd01caeba114b232959665260e724639aab59..6c8bcd42cdbbad8b7958ceecc690ce73c5e770b2 100644 (file)
@@ -13,7 +13,8 @@
 
 LY_DEFINE (ly_make_pango_description_string, "ly:make-pango-description-string",
           2, 0, 0, (SCM chain, SCM size),
-          "Make a PangoFontDescription string for the property alist @var{chain} at size @var{size}.")
+          "Make a @code{PangoFontDescription} string for the property"
+          " alist @var{chain} at size @var{size}.")
 {
   LY_ASSERT_TYPE (scm_is_number, size, 1);
   PangoFontDescription *pfd = properties_to_pango_description (chain, scm_to_double (size));
index 94bb17f05e0f3626f25e451f99372aa88f316b95..275e3ced535073f083ecb470d4e40882b4d5555f 100644 (file)
@@ -12,7 +12,7 @@
 
 LY_DEFINE (ly_paper_book_pages, "ly:paper-book-pages",
           1, 0, 0, (SCM pb),
-          "Return pages in book PB.")
+          "Return pages in book @var{pb}.")
 {
   LY_ASSERT_SMOB (Paper_book, pb, 1);
   return unsmob_paper_book (pb)->pages ();
@@ -42,7 +42,7 @@ LY_DEFINE (ly_paper_book_performances, "ly:paper-book-performances",
 
 LY_DEFINE (ly_paper_book_systems, "ly:paper-book-systems",
           1, 0, 0, (SCM pb),
-          "Return systems in book PB.")
+          "Return systems in book @var{pb}.")
 {
   LY_ASSERT_SMOB (Paper_book, pb, 1);
   return unsmob_paper_book (pb)->systems ();
@@ -50,7 +50,7 @@ LY_DEFINE (ly_paper_book_systems, "ly:paper-book-systems",
 
 LY_DEFINE (ly_paper_book_paper, "ly:paper-book-paper",
           1, 0, 0, (SCM pb),
-          "Return pages in book PB.")
+          "Return pages in book @var{pb}.")
 {
   LY_ASSERT_SMOB (Paper_book, pb, 1);
   Paper_book *pbook = unsmob_paper_book (pb);
index 2149f0ec2cb87ba88dbcfac5662fe6c84733411e..625494d6d94aa9a65b4242a26fc92be6f980942b 100644 (file)
@@ -14,8 +14,8 @@
 
 LY_DEFINE (ly_make_paper_outputter, "ly:make-paper-outputter",
           2, 0, 0, (SCM port, SCM format),
-          "Create an outputter that evaluates within "
-          "@code{output-}@var{format}, writing to  @var{port}.")
+          "Create an outputter that evaluates within"
+          " @code{output-}@var{format}, writing to @var{port}.")
 {
   LY_ASSERT_TYPE (ly_is_port, port, 1);
   LY_ASSERT_TYPE (ly_is_symbol, format, 2);
index 055b5363df95d4342661c6c0ae834ba84cb9025f..b973647fa250508f8a8223b37242a8f3f229c2d6 100644 (file)
@@ -11,7 +11,8 @@
 LY_DEFINE (ly_paper_score_paper_systems, "ly:paper-score-paper-systems",
           1, 0, 0,
           (SCM paper_score),
-          "Return vector of paper_system objects from @var{paper-score}.")
+          "Return vector of @code{paper_system} objects from"
+          " @var{paper-score}.")
 {
   LY_ASSERT_TYPE (unsmob_paper_score, paper_score, 1);
 
index c16c0c375406a60862e548a27089f33cc43792ca..a00e6b8efd13e52094c9f6f9ef5d006f4544dc9e 100644 (file)
@@ -10,7 +10,7 @@
 
 LY_DEFINE (ly_performance_write, "ly:performance-write",
           2, 0, 0, (SCM performance, SCM filename),
-          "Write @var{performance} to @var{filename}")
+          "Write @var{performance} to @var{filename}.")
 {
   LY_ASSERT_TYPE (unsmob_performance, performance, 1);
   LY_ASSERT_TYPE (scm_is_string, filename, 2);
index f22a745ac7d6bcd745533ce2f5ed1acf52844581..7fcdc73de5b5ac701eff4f8702fb31e8b1092227 100644 (file)
@@ -31,8 +31,8 @@ LY_DEFINE (ly_pfb_2_pfa, "ly:pfb->pfa",
 
 LY_DEFINE (ly_otf_2_cff, "ly:otf->cff",
           1, 0, 0, (SCM otf_file_name),
-          "Convert the contents of a OTF file to CFF file, returning it as "
-          " a string.")
+          "Convert the contents of an OTF file to a CFF file,"
+          " returning it as a string.")
 {
   LY_ASSERT_TYPE (scm_is_string, otf_file_name, 1);
 
index e2f3aecf694632c03bb315d9d8098d47537528ce..12ddddf10a1c9b71e729622fc0be5c64a5feda5d 100644 (file)
@@ -10,8 +10,8 @@
 
 LY_DEFINE (ly_pitch_transpose, "ly:pitch-transpose",
           2, 0, 0, (SCM p, SCM delta),
-          "Transpose @var{p} by the amount @var{delta}, "
-          "where @var{delta} is relative to middle C.")
+          "Transpose @var{p} by the amount @var{delta},"
+          " where @var{delta} is relative to middle@tie{}C.")
 {
   LY_ASSERT_SMOB (Pitch, p, 1);
   LY_ASSERT_SMOB (Pitch, delta, 2);
@@ -24,11 +24,11 @@ LY_DEFINE (ly_pitch_transpose, "ly:pitch-transpose",
 /* Should add optional args.  */
 LY_DEFINE (ly_make_pitch, "ly:make-pitch",
           2, 1, 0, (SCM octave, SCM note, SCM alter),
-          "@var{octave} is specified by an integer, "
-          "zero for the octave containing middle C.  "
-          "@var{note} is a number from 0 to 6, "
-          "with 0 corresponding to C and 6 corresponding to B.  "
-          "The @var{alter} is a rational number of whole tones for alteration.")
+          "@var{octave} is specified by an integer, zero for the octave"
+          " containing middle@tie{}C.  @var{note} is a number from 0"
+          " to@tie{}6, with 0 corresponding to pitch@tie{}C and 6"
+          " corresponding to pitch@tie{}B.  @var{alter} is a rational"
+          " number of whole tones for alteration.")
 {
   LY_ASSERT_TYPE (scm_is_integer, octave, 1);
   LY_ASSERT_TYPE (scm_is_integer, note, 2);
@@ -51,7 +51,8 @@ LY_DEFINE (ly_pitch_negate, "ly:pitch-negate", 1, 0, 0,
 
 LY_DEFINE (ly_pitch_steps, "ly:pitch-steps", 1, 0, 0,
           (SCM p),
-          "Number of steps counted from middle C of the pitch @var{p}.")
+          "Number of steps counted from middle@tie{}C of the"
+          " pitch@tie{}@var{p}.")
 {
   LY_ASSERT_SMOB (Pitch, p, 1);
   Pitch *pp = unsmob_pitch (p);
@@ -60,7 +61,7 @@ LY_DEFINE (ly_pitch_steps, "ly:pitch-steps", 1, 0, 0,
 
 LY_DEFINE (ly_pitch_octave, "ly:pitch-octave",
           1, 0, 0, (SCM pp),
-          "Extract the octave from pitch @var{p}.")
+          "Extract the octave from pitch@tie{}@var{pp}.")
 {
   LY_ASSERT_SMOB (Pitch, pp, 1);
   Pitch *p = unsmob_pitch (pp);
@@ -70,7 +71,7 @@ LY_DEFINE (ly_pitch_octave, "ly:pitch-octave",
 
 LY_DEFINE (ly_pitch_alteration, "ly:pitch-alteration",
           1, 0, 0, (SCM pp),
-          "Extract the alteration from pitch  @var{p}.")
+          "Extract the alteration from pitch@tie{}@var{pp}.")
 {
   LY_ASSERT_SMOB (Pitch, pp, 1);
   Pitch *p = unsmob_pitch (pp);
@@ -81,7 +82,7 @@ LY_DEFINE (ly_pitch_alteration, "ly:pitch-alteration",
 
 LY_DEFINE (pitch_notename, "ly:pitch-notename",
           1, 0, 0, (SCM pp),
-          "Extract the note name from pitch  @var{pp}.")
+          "Extract the note name from pitch @var{pp}.")
 {
   LY_ASSERT_SMOB (Pitch, pp, 1);
   Pitch *p = unsmob_pitch (pp);
@@ -91,7 +92,8 @@ LY_DEFINE (pitch_notename, "ly:pitch-notename",
 
 LY_DEFINE (ly_pitch_quartertones, "ly:pitch-quartertones",
           1, 0, 0, (SCM pp),
-          "Calculate the number of quarter tones of @var{p} from middle C.")
+          "Calculate the number of quarter tones of@tie{}@var{pp} from"
+          " middle@tie{}C.")
 {
   LY_ASSERT_SMOB (Pitch, pp, 1);
   Pitch *p = unsmob_pitch (pp);
@@ -101,7 +103,8 @@ LY_DEFINE (ly_pitch_quartertones, "ly:pitch-quartertones",
 
 LY_DEFINE (ly_pitch_semitones, "ly:pitch-semitones",
           1, 0, 0, (SCM pp),
-          "calculate the number of semitones of @var{p} from middle C.")
+          "Calculate the number of semitones of@tie{}@var{pp} from"
+          " middle@tie{}C.")
 {
   LY_ASSERT_SMOB (Pitch, pp, 1);
   Pitch *p = unsmob_pitch (pp);
@@ -127,8 +130,8 @@ LY_DEFINE (ly_pitch_less_p, "ly:pitch<?",
 
 LY_DEFINE (ly_pitch_diff, "ly:pitch-diff",
           2, 0, 0, (SCM pitch, SCM root),
-          "Return pitch @var{delta} such that @code{pitch} transposed by "
-          "@var{delta} equals @var{root}")
+          "Return pitch @var{delta} such that @var{pitch} transposed by"
+          " @var{delta} equals @var{root}.")
 {
  
   LY_ASSERT_SMOB (Pitch, pitch, 1);
index 7e0b560912ebf19ed2aae3e64dd3069351d80cd4..8c5d640ad0d3b5d9501c57c8f800d723504df8b3 100644 (file)
@@ -11,7 +11,7 @@
 
 LY_DEFINE (ly_prob_set_property_x, "ly:prob-set-property!",
           2, 1, 0, (SCM obj, SCM sym, SCM value),
-          "Set property @var{sym} of @var{obj} to @var{value}")
+          "Set property @var{sym} of @var{obj} to @var{value}.")
 {
   LY_ASSERT_SMOB (Prob, obj, 1);
   Prob *ps = unsmob_prob (obj);
@@ -52,7 +52,7 @@ LY_DEFINE (ly_prob_property, "ly:prob-property",
 LY_DEFINE (ly_prob_type_p, "ly:prob-type?",
           2, 0, 0,
           (SCM obj, SCM type),
-          "If obj the specified prob-type?")
+          "Is @var{obj} the specified prob-type?")
 {
   Prob*prob = unsmob_prob (obj);
   return scm_from_bool (prob && prob->type () == type);
@@ -61,7 +61,7 @@ LY_DEFINE (ly_prob_type_p, "ly:prob-type?",
 LY_DEFINE (ly_make_prob, "ly:make-prob",
           2, 0, 1,
           (SCM type, SCM init, SCM rest),
-          "Create a Prob.")
+          "Create a @code{Prob} object.")
 {
   Prob *pr = new Prob (type, init);
 
@@ -87,9 +87,9 @@ LY_DEFINE (ly_paper_system_p, "ly:paper-system?",
 
 LY_DEFINE (ly_paper_system_minimum_distance, "ly:paper-system-minimum-distance",
           2, 0, 0, (SCM sys1, SCM sys2),
-          "Measure the minimum distance between these two paper-systems "
-          "using their stored skylines if possible and falling back to "
-          "their extents otherwise.")
+          "Measure the minimum distance between these two paper-systems,"
+          " using their stored skylines if possible and falling back to"
+          " their extents otherwise.")
 {
   Real ret = 0;
   Prob *p1 = unsmob_prob (sys1);
index 0390a64a627d1b8180f71643ccf8bed85c374745..234780c2ec9eb2c785ec39542c5736010b7bdd42 100644 (file)
@@ -16,8 +16,9 @@ SCM prob_property_lookup_table;
 
 LY_DEFINE (ly_property_lookup_stats, "ly:property-lookup-stats",
           1, 0, 0, (SCM sym),
-          "Return hash table with a property access corresponding to @var{sym}. "
-          "Choices are prob, grob and context.")
+          "Return hash table with a property access corresponding to"
+          " @var{sym}.  Choices are @code{prob}, @code{grob}, and"
+          " @code{context}.")
 {
   if (sym == ly_symbol2scm ("context"))
     return context_property_lookup_table ? context_property_lookup_table
index 638aaf634d96fca8d61646e5cacad400bacb7764..4ec898092e09af3933cbe951c291624cfc920c14 100644 (file)
@@ -168,7 +168,7 @@ get_help_string ()
 
 
 LY_DEFINE (ly_option_usage, "ly:option-usage", 0, 0, 0, (),
-          "Print @code{ly:set-option} usage")
+          "Print @code{ly:set-option} usage.")
 {
   string help = get_help_string ();
   progress_indication (help);
@@ -219,19 +219,19 @@ LY_DEFINE (ly_set_option, "ly:set-option", 1, 1, 0, (SCM var, SCM val),
 }
 
 LY_DEFINE (ly_command_line_options, "ly:command-line-options", 0, 0, 0, (),
-          "The Scheme specified on command-line with @samp{-d}.")
+          "The Scheme options specified on command-line with @option{-d}.")
 {
   return ly_string2scm (init_scheme_variables_global); 
 }
 
 LY_DEFINE (ly_command_line_code, "ly:command-line-code", 0, 0, 0, (),
-          "The Scheme specified on command-line with @samp{-e}.")
+          "The Scheme code specified on command-line with @option{-e}.")
 {
   return ly_string2scm (init_scheme_code_global); 
 }
 
 LY_DEFINE (ly_command_line_verbose_p, "ly:command-line-verbose?", 0, 0, 0, (),
-          "Was be_verbose_global set?")
+          "Was @code{be_verbose_global} set?")
 {
   return scm_from_bool (be_verbose_global);
 }
index ecd2b9357edb3a2ea4aec7c8ed10405c9008eb05..5d8ccc9a38f9edb7467a9f53f9dc78c7705c6b77 100644 (file)
@@ -17,7 +17,7 @@
 */
 LY_DEFINE (ly_make_scale, "ly:make-scale",
           1, 0, 0, (SCM steps),
-          "Create a scale. Takes a vector of ints as argument")
+          "Create a scale.  Takes a vector of integers as argument.")
 {
   bool type_ok = scm_is_vector (steps);
 
index 004c14c14f2ea748d96580a8d137c4b5eba1e029..01eaa22ba198da2dbb3a8a7aa92c592caa34c2bd 100644 (file)
 
 LY_DEFINE (ly_make_listener, "ly:make-listener",
           1, 0, 0, (SCM callback),
-          "Creates a listener. Any time the listener hears\n"
-          " an object, it will call @var{callback}\n"
-          " with that object.\n"
+          "Create a listener.  Any time the listener hears an object,"
+          " it will call @var{callback} with that object.\n"
           "\n"
-          " @var{callback} should take exactly one argument." )
+          "@var{callback} should take exactly one argument.")
 {
   LY_ASSERT_TYPE (ly_is_procedure, callback, 1);
   Scheme_listener *l = new Scheme_listener (callback);
index 83111f670755cf74ae935c1ff5a938dcf4b9205e..c10347530251767fc8bfafd5e98f08b49f96bf3f 100644 (file)
@@ -30,7 +30,7 @@ LY_DEFINE (ly_make_score, "ly:make-score",
 
 LY_DEFINE (ly_score_output_defs, "ly:score-output-defs",
           1, 0, 0, (SCM score),
-          "All output defs in a score.")
+          "All output definitions in a score.")
 {
   LY_ASSERT_SMOB (Score, score, 1);
   Score *sc = unsmob_score (score);
@@ -45,7 +45,7 @@ LY_DEFINE (ly_score_output_defs, "ly:score-output-defs",
 
 LY_DEFINE (ly_score_header, "ly:score-header",
           1, 0, 0, (SCM score),
-          "return score header.")
+          "Return score header.")
 {
   LY_ASSERT_SMOB (Score, score, 1);
   Score *sc = unsmob_score (score);
@@ -55,7 +55,7 @@ LY_DEFINE (ly_score_header, "ly:score-header",
 
 LY_DEFINE (ly_score_music, "ly:score-music",
           1, 0, 0, (SCM score),
-          "return score music.")
+          "Return score music.")
 {
   LY_ASSERT_SMOB (Score, score, 1);
   Score *sc = unsmob_score (score);
@@ -73,10 +73,10 @@ LY_DEFINE (ly_score_error_p, "ly:score-error?",
 
 LY_DEFINE (ly_score_embedded_format, "ly:score-embedded-format",
           2, 0, 0, (SCM score, SCM layout),
-          "Run @var{score} through @var{layout}, an output definition, "
-          "scaled to correct output-scale already, "
-          "return a list of layout-lines. "
-          "\nTake optional Object_key argument.")
+          "Run @var{score} through @var{layout} (an output definition)"
+          " scaled to correct output-scale already, returning a list of"
+          " layout-lines.  This function takes an optional"
+          " @code{Object_key} argument.")
 {
   LY_ASSERT_SMOB (Score, score, 1);
   LY_ASSERT_SMOB (Output_def, layout, 2);
index 1ae7969b4e3f84afface3e4bbe53f4057f78ad34..3e4092f7c694ad87b6b3c0fa08294e92f05ece3c 100644 (file)
@@ -32,7 +32,7 @@ Script_column::add_side_positioned (Grob *me, Grob *script)
 
 LY_DEFINE (ly_grob_script_priority_less, "ly:grob-script-priority-less",
           2, 0, 0, (SCM a, SCM b),
-          "Compare two grobs by script priority. For internal use.")
+          "Compare two grobs by script priority.  For internal use.")
 {
   Grob *i1 = unsmob_grob (a);
   Grob *i2 = unsmob_grob (b);
index 22ee294f49916b9e283c19745b944eafe7bb9673..737bb3965be6e09ef6f9b09a2938bb582834c0eb 100644 (file)
@@ -92,9 +92,10 @@ LY_DEFINE (ly_simple_closure_p, "ly:simple-closure?",
 
 LY_DEFINE (ly_make_simple_closure, "ly:make-simple-closure",
          1, 0, 0, (SCM expr),
-         "Make a simple closure. @var{expr} should be form of "
-         "@code{(@var{func} @var{a1} @var{A2} ...)}, and will be invoked "
-         "as @code{(@var{func} @var{delayed-arg} @var{a1} @var{a2} ... )}.")
+         "Make a simple closure.  @var{expr} should be form of"
+         " @code{(@var{func} @var{a1} @var{A2} @dots{})}, and will be"
+         " invoked as @code{(@var{func} @var{delayed-arg} @var{a1}"
+         " @var{a2} @dots{})}.")
 {
   SCM z;
 
@@ -104,9 +105,9 @@ LY_DEFINE (ly_make_simple_closure, "ly:make-simple-closure",
 
 LY_DEFINE (ly_eval_simple_closure, "ly:eval-simple-closure",
          2, 2, 0, (SCM delayed, SCM closure, SCM scm_start, SCM scm_end),
-         "Evaluate a simple closure with the given delayed argument. "
-         "If start and end are defined, evaluate it purely with those "
-         "start- and end-points.")
+         "Evaluate a simple @var{closure} with the given @var{delayed}"
+         " argument.  If @var{scm-start} and @var{scm-end} are defined,"
+         " evaluate it purely with those start and end points.")
 {
   bool pure = (scm_is_number (scm_start) && scm_is_number (scm_end));
   int start = robust_scm2int (scm_start, 0);
index 17b09c10630747eae4a6e97cf201f9e3202ee665..48f127bfca5ae710b5778c73b343e6d08e994839 100644 (file)
 
 LY_DEFINE (ly_solve_spring_rod_problem, "ly:solve-spring-rod-problem",
           4, 1, 0, (SCM springs, SCM rods, SCM length, SCM ragged),
-          "Solve a spring and rod problem for @var{count} objects, that "
-          "are connected by @var{count-1} springs, and an arbitrary number of rods "
-          "Springs have the format (ideal, inverse_hooke) and rods (idx1, idx2, distance) "
-          "@var{length} is a number, @var{ragged} a boolean "
-          "Return: a list containing the force (positive for stretching, "
-          "negative for compressing and #f for non-satisfied constraints) "
-          "followed by the @var{spring-count}+1 positions of the objects. ")
+          "Solve a spring and rod problem for @var{count} objects, that"
+          " are connected by @var{count}-1 @var{springs}, and an arbitrary"
+          " number of @var{rods}.  @var{count} is implicitly given by"
+          " @var{springs} and @var{rods}.  The @var{springs} argument has"
+          " the format @code{(ideal, inverse_hook)} and @var{rods} is of"
+          " the form @code{(idx1, idx2, distance)}.\n"
+          "\n"
+          "@var{length} is a number, @var{ragged} a boolean.\n"
+          "\n"
+          "The function returns a list containing the force (positive for"
+          " stretching, negative for compressing and @code{#f} for"
+          " non-satisfied constraints) followed by @var{spring-count}+1"
+          " positions of the objects.")
 {
   int len = scm_ilength (springs);
   if (len == 0)
index a4c88fe58b12f276406dcae0a9d5b78d4b04d343..7bdaaa7f922017055367d496abe3c852a744b479 100644 (file)
@@ -23,7 +23,7 @@ ADD_SCM_INIT_FUNC (init_smob_protection, init_smob_protection);
 
 LY_DEFINE (ly_smob_protects, "ly:smob-protects",
          0, 0, 0, (),
-         "Return lily's internal smob protection list")
+         "Return LilyPond's internal smob protection list.")
 {
   return scm_is_pair (smob_protection_list)
     ? scm_cdr (smob_protection_list)
diff --git a/lily/source.cc b/lily/source.cc
deleted file mode 100644 (file)
index e69de29..0000000
index 0dc62b3a51e041760350aeffe900f72accd65aca..3e9e947060f5151111689881b8a754aab9ca3c29 100644 (file)
@@ -12,8 +12,8 @@
 
 LY_DEFINE (ly_spanner_bound, "ly:spanner-bound",
           2, 0, 0, (SCM slur, SCM dir),
-          "Get one of the bounds of @var{spanner}. @var{dir} is @code{-1} "
-          "for left, and @code{1} for right.")
+          "Get one of the bounds of @var{slur}.  @var{dir} is @code{-1}"
+          " for left, and @code{1} for right.")
 {
   LY_ASSERT_TYPE (unsmob_spanner, slur, 1);
   LY_ASSERT_TYPE (is_direction, dir,2);
@@ -38,7 +38,7 @@ LY_DEFINE (ly_spanner_broken_into, "ly:spanner-broken-into",
 
 LY_DEFINE (ly_spanner_p, "ly:spanner?",
           1, 0, 0, (SCM g),
-          "Is  @var{g} a spanner object?")
+          "Is @var{g} a spanner object?")
 {
   Grob *me = unsmob_grob (g);
   bool b = dynamic_cast<Spanner *> (me);
index 125b142d26fc46805b1734906989f999ff012c6e..a092856a0a9ff47e6049ce81c10c8b34f6e02e9d 100644 (file)
@@ -18,7 +18,8 @@
 
 LY_DEFINE (ly_stencil_translate_axis, "ly:stencil-translate-axis",
           3, 0, 0, (SCM stil, SCM amount, SCM axis),
-          "Return a copy of @var{stil} but translated by @var{amount} in @var{axis} direction.")
+          "Return a copy of @var{stil} but translated by @var{amount}"
+          " in @var{axis} direction.")
 {
   Stencil *s = unsmob_stencil (stil);
   LY_ASSERT_SMOB (Stencil, stil, 1);
@@ -35,8 +36,8 @@ LY_DEFINE (ly_stencil_translate_axis, "ly:stencil-translate-axis",
 
 LY_DEFINE (ly_stencil_translate, "ly:stencil-translate",
           2, 0, 0, (SCM stil, SCM offset),
-          "Return a @var{stil}, "
-          "but translated by @var{offset} (a pair of numbers).")
+          "Return a @var{stil}, but translated by @var{offset}"
+          " (a pair of numbers).")
 {
   Stencil *s = unsmob_stencil (stil);
   LY_ASSERT_SMOB (Stencil, stil, 1);
@@ -60,8 +61,9 @@ LY_DEFINE (ly_stencil_expr, "ly:stencil-expr",
 
 LY_DEFINE (ly_stencil_extent, "ly:stencil-extent",
           2, 0, 0, (SCM stil, SCM axis),
-          "Return a pair of numbers signifying the extent of @var{stil} in "
-          "@var{axis} direction (0 or 1 for x and y axis respectively).")
+          "Return a pair of numbers signifying the extent of @var{stil} in"
+          " @var{axis} direction (@code{0} or @code{1} for x and"
+          " y@tie{}axis, respectively).")
 {
   Stencil *s = unsmob_stencil (stil);
   LY_ASSERT_SMOB (Stencil, stil, 1);
@@ -72,7 +74,7 @@ LY_DEFINE (ly_stencil_extent, "ly:stencil-extent",
 
 LY_DEFINE (ly_stencil_empty_p, "ly:stencil-empty?",
           1, 0, 0, (SCM stil),
-          "Return whether @var{stil} is empty ")
+          "Return whether @var{stil} is empty.")
 {
   Stencil *s = unsmob_stencil (stil);
   LY_ASSERT_SMOB (Stencil, stil, 1);
@@ -84,13 +86,14 @@ LY_DEFINE (ly_stencil_combine_at_edge, "ly:stencil-combine-at-edge",
                     SCM second,
                     SCM padding,
                     SCM minimum),
-          "Construct a stencil by putting @var{second} next to @var{first}. "
-          "@var{axis} can be 0 (x-axis) or 1 (y-axis), "
-          "@var{direction} can be -1 (left or down) or 1 (right or up). "
-          "The stencils are juxtaposed with  @var{padding} as extra space. "
-          "If this puts the reference points closer than @var{minimum}, "
-          "they are moved by the latter amount."
-          "@var{first} and @var{second} may also be '() or #f.")
+          "Construct a stencil by putting @var{second} next to @var{first}."
+          "  @var{axis} can be 0 (x-axis) or@tie{}1 (y-axis)."
+          "  @var{direction} can be -1 (left or down) or@tie{}1 (right or"
+          "  up).  The stencils are juxtaposed with @var{padding} as extra"
+          " space.  If this puts the reference points closer than"
+          " @var{minimum}, they are moved by the latter amount."
+          "  @var{first} and @var{second} may also be @code{'()} or"
+          " @code{#f}.")
 {
   Stencil *s1 = unsmob_stencil (first);
   Stencil *s2 = unsmob_stencil (second);
@@ -128,7 +131,7 @@ LY_DEFINE (ly_stencil_combine_at_edge, "ly:stencil-combine-at-edge",
 
 LY_DEFINE (ly_stencil_add, "ly:stencil-add",
           0, 0, 1, (SCM args),
-          "Combine stencils. Takes any number of arguments.")
+          "Combine stencils.  Takes any number of arguments.")
 {
 #define FUNC_NAME __FUNCTION__
   SCM_VALIDATE_REST_ARGUMENT (args);
@@ -156,22 +159,19 @@ LY_DEFINE (ly_stencil_add, "ly:stencil-add",
 
 LY_DEFINE (ly_make_stencil, "ly:make-stencil",
           1, 2, 0, (SCM expr, SCM xext, SCM yext),
-          "Stencils are device independent output expressions.  "
-          "They carry two pieces of information:\n"
-
+          "Stencils are device independent output expressions."
+          "  They carry two pieces of information:\n"
+          "\n"
           "@enumerate\n"
-
           "@item\n"
-          "A specification of how to print this object.  "
-          "This specification is processed by the output backends, "
-          "for example @file{scm/output-ps.scm}.\n"
-
+          "A specification of how to print this object."
+          "  This specification is processed by the output backends,"
+          " for example @file{scm/output-ps.scm}.\n"
+          "\n"
           "@item\n"
-          "The vertical and horizontal extents of the object, "
-          "given as pairs.  "
-          "If an extent is unspecified (or if you use "
-          "@code{(1000 . -1000)} as its value), it is taken to be empty.\n"
-
+          "The vertical and horizontal extents of the object, given as"
+          " pairs.  If an extent is unspecified (or if you use"
+          " @code{(1000 . -1000)} as its value), it is taken to be empty.\n"
           "@end enumerate\n")
 {
   SCM_ASSERT_TYPE (!scm_is_pair (expr)
@@ -200,9 +200,9 @@ LY_DEFINE (ly_make_stencil, "ly:make-stencil",
 
 LY_DEFINE (ly_stencil_aligned_to, "ly:stencil-aligned-to",
           3, 0, 0, (SCM stil, SCM axis, SCM dir),
-          "Align @var{stil} using its own extents. "
-          "@var{dir} is a number -1, 1 are left and right respectively. "
-          "Other values are interpolated (so 0 means the center).")
+          "Align @var{stil} using its own extents.  @var{dir} is a number."
+          "  @code{-1} and @code{1} are left and right, respectively."
+          "  Other values are interpolated (so @code{0} means the center).")
 {
   LY_ASSERT_SMOB (Stencil, stil, 1);
   LY_ASSERT_TYPE (is_axis, axis, 2);
@@ -217,7 +217,8 @@ LY_DEFINE (ly_stencil_aligned_to, "ly:stencil-aligned-to",
 
 LY_DEFINE (ly_stencil_fonts, "ly:stencil-fonts",
           1, 0, 0, (SCM s),
-          " Analyse @var{s}, and return a list of fonts used in @var{s}.")
+          "Analyze @var{s}, and return a list of fonts used"
+          " in@tie{}@var{s}.")
 {
   LY_ASSERT_SMOB (Stencil, s, 1);
   Stencil *stil = unsmob_stencil (s);
@@ -250,7 +251,8 @@ void stencil_interpret_in_scm (void *p, SCM expr)
 
 LY_DEFINE (ly_interpret_stencil_expression, "ly:interpret-stencil-expression",
           4, 0, 0, (SCM expr, SCM func, SCM arg1, SCM offset),
-          "Parse EXPR, feed bits to FUNC with first arg ARG1")
+          "Parse @var{expr}, feed bits to @var{func} with first arg"
+          " @var{arg1} having offset @var{offset}.")
 {
   LY_ASSERT_TYPE (ly_is_procedure, func, 2);
 
@@ -267,9 +269,10 @@ LY_DEFINE (ly_interpret_stencil_expression, "ly:interpret-stencil-expression",
 LY_DEFINE (ly_bracket, "ly:bracket",
           4, 0, 0,
           (SCM a, SCM iv, SCM t, SCM p),
-          "Make a bracket in direction @var{a}. The extent of the bracket is "
-          "given by @var{iv}. The wings protude by an amount of @var{p}, which "
-          "may be negative. The thickness is given by @var{t}.")
+          "Make a bracket in direction@tie{}@var{a}.  The extent of the"
+          " bracket is given by @var{iv}.  The wings protude by an amount"
+          " of@tie{}@var{p}, which may be negative.  The thickness is given"
+          " by@tie{}@var{t}.")
 {
   LY_ASSERT_TYPE (is_axis, a, 1);
   LY_ASSERT_TYPE (is_number_pair, iv, 2);
@@ -284,7 +287,8 @@ LY_DEFINE (ly_bracket, "ly:bracket",
 
 LY_DEFINE (ly_stencil_rotate, "ly:stencil-rotate",
           4, 0, 0, (SCM stil, SCM angle, SCM x, SCM y),
-          "Return a @var{stil} rotated @var{angle} degrees around point (@var{x}, @var{y}).")
+          "Return a stencil @var{stil} rotated @var{angle} degrees around"
+          " point (@var{x}, @var{y}).")
 {
   Stencil *s = unsmob_stencil (stil);
   LY_ASSERT_SMOB (Stencil, stil, 1);
@@ -304,9 +308,8 @@ LY_DEFINE (ly_stencil_rotate, "ly:stencil-rotate",
 LY_DEFINE (ly_round_filled_box, "ly:round-filled-box",
           3, 0, 0,
           (SCM xext, SCM yext, SCM blot),
-          "Make a @code{Stencil} "
-          "that prints a black box of dimensions @var{xext}, "
-          "@var{yext} and roundness @var{blot}.")
+          "Make a @code{Stencil} object that prints a black box of"
+          " dimensions @var{xext}, @var{yext} and roundness @var{blot}.")
 {
   LY_ASSERT_TYPE (is_number_pair, xext, 1);
   LY_ASSERT_TYPE (is_number_pair, yext, 2);
@@ -319,7 +322,7 @@ LY_DEFINE (ly_round_filled_box, "ly:round-filled-box",
 LY_DEFINE (ly_register_stencil_expression, "ly:register-stencil-expression",
           1, 0, 0,
           (SCM symbol),
-          "Add @var{symbol} as head of a stencil expression")
+          "Add @var{symbol} as head of a stencil expression.")
 {
   LY_ASSERT_TYPE (ly_is_symbol, symbol, 1);
   register_stencil_head (symbol);
index 04df26a7220c573c9532ef01d9e12ee8c704f801..f578a8332a5fafe25c89aaf2360568caa7011cff 100644 (file)
@@ -10,7 +10,8 @@
 
 LY_DEFINE (ly_make_stream_event, "ly:make-stream-event",
           1, 1, 0, (SCM cl, SCM proplist),
-          "Creates a stream event of class @var{cl} with the given mutable property list.\n" )
+          "Create a stream event of class @var{cl} with the given"
+          " mutable property list.")
 {
   LY_ASSERT_TYPE (ly_is_symbol, cl, 1);
 
@@ -26,8 +27,8 @@ LY_DEFINE (ly_make_stream_event, "ly:make-stream-event",
 
 LY_DEFINE (ly_event_property, "ly:event-property", 
            2, 0, 0, (SCM sev, SCM sym),
-          "Get the property @var{sym} of stream event @var{mus}.\n"
-          "If @var{sym} is undefined, return @code{'()}.\n")
+          "Get the property @var{sym} of stream event @var{mus}."
+          "  If @var{sym} is undefined, return @code{'()}.")
 {
   LY_ASSERT_SMOB (Stream_event, sev, 1);
   LY_ASSERT_TYPE (ly_is_symbol, sym, 2);
@@ -49,7 +50,7 @@ LY_DEFINE (ly_event_set_property_x, "ly:event-set-property!",
 
 LY_DEFINE (ly_event_deep_copy, "ly:event-deep-copy",
           1, 0, 0, (SCM m),
-          "Copy @var{m} and all sub expressions of @var{m}")
+          "Copy @var{m} and all sub expressions of@tie{}@var{m}.")
 {
   SCM copy = m;
   if (Stream_event *ev = unsmob_stream_event (m))
index d0b7cfc9b25c8093206438fdd8d54db260d614ad..284dc4102cdd632752036502cf0dc93655b9ea97 100644 (file)
@@ -13,8 +13,8 @@
 
 LY_DEFINE (ly_system_print, "ly:system-print",
           1, 0, 0, (SCM system),
-          "Draw the system and return the prob containing its "
-          "stencil.")
+          "Draw the system and return the prob containing its"
+          " stencil.")
 {
   Grob *me = unsmob_grob (system);
   System *me_system = dynamic_cast<System*> (me);
@@ -25,9 +25,9 @@ LY_DEFINE (ly_system_print, "ly:system-print",
 
 LY_DEFINE (ly_system_stretch, "ly:system-stretch",
           2, 0, 0, (SCM system, SCM amount_scm),
-          "Stretch the system vertically by the given amount. "
-          "This must be called before the system is drawn (for example "
-          "with ly:system-print).")
+          "Stretch the system vertically by the given amount."
+          "  This must be called before the system is drawn (for example"
+          " with @code{ly:system-print}).")
 {
   Grob *me = unsmob_grob (system);
   Real amount = robust_scm2double (amount_scm, 0.0);
index 0c514a35d8aec694612fdb288a4a25c5c991c1ea..de773b62ca50ed4bc301644cdd6e47e0da7845a9 100644 (file)
@@ -35,15 +35,14 @@ Text_interface::interpret_string (SCM layout_smob,
 }
 
 MAKE_SCHEME_CALLBACK_WITH_OPTARGS (Text_interface, interpret_markup, 3, 0,
-                                  "Convert a text markup into a stencil. "
-"Takes 3 arguments, @var{layout}, @var{props} and @var{markup}. "
-"\n\n"
-"@var{layout} is a @code{\\layout} block; it may be obtained from a grob with "
-"@code{ly:grob-layout}.  @var{props} is a alist chain, ie. a list of alists. "
-"This is typically obtained with "
-"@code{(ly:grob-alist-chain (ly:layout-lookup layout 'text-font-defaults))}. "
-"@var{markup} is the markup text to be processed. "
-                                  );
+                                  "Convert a text markup into a stencil."
+"  Takes three arguments, @var{layout}, @var{props}, and @var{markup}.\n"
+"\n"
+"@var{layout} is a @code{\\layout} block; it may be obtained from a grob with"
+" @code{ly:grob-layout}.  @var{props} is a alist chain, ie. a list of alists."
+"  This is typically obtained with"
+" @code{(ly:grob-alist-chain (ly:layout-lookup layout 'text-font-defaults))}."
+"  @var{markup} is the markup text to be processed.");
 SCM
 Text_interface::interpret_markup (SCM layout_smob, SCM props, SCM markup)
 {
index 05b17fdfccca442235b7c6b335bcead786dac60f..c83f561dc74876d4094d7f5026efaf114f586782 100644 (file)
@@ -50,7 +50,8 @@ lookup_tex_text_dimension (Font_metric *font, SCM text)
 LY_DEFINE (ly_load_text_dimensions, "ly:load-text-dimensions",
           1, 0, 0,
           (SCM dimension_alist),
-          "Load dimensions from TeX in a (KEY . (W H D)) format alist")
+          "Load dimensions from @TeX{} in a @code{(KEY . (W H D))} format"
+          " alist.")
 {
   if (!text_dimension_hash_tab)
     {
index f4eaeaf31a74f09b98bcae10e1ff1eb3c0b0e180..c024abe38858c3d016101e752eb4aa6a7c83d587 100644 (file)
@@ -19,7 +19,8 @@
 Scheme_hash_table *global_translator_dict = 0;
 
 LY_DEFINE (get_all_translators, "ly:get-all-translators", 0, 0, 0, (),
-          "Return a list of all translator objects that may be instantiated. ")
+          "Return a list of all translator objects that may be"
+          " instantiated.")
 {
   SCM l = global_translator_dict ? global_translator_dict->to_alist () : SCM_EOL;
 
index 31e7afa92e48b95554ddbe9285817a0696773d01..71fa6af2c2fbaf9e07a96ea546be281f1f603563 100644 (file)
@@ -12,8 +12,8 @@
 
 LY_DEFINE (ly_translator_name, "ly:translator-name",
           1, 0, 0, (SCM trans),
-          "Return the type name of the translator object @var{trans}. "
-          "The name is a symbol.")
+          "Return the type name of the translator object @var{trans}."
+          "  The name is a symbol.")
 {
   LY_ASSERT_SMOB (Translator, trans, 1);
   Translator *tr = unsmob_translator (trans);
@@ -23,7 +23,7 @@ LY_DEFINE (ly_translator_name, "ly:translator-name",
 
 LY_DEFINE (ly_translator_description, "ly:translator-description",
           1, 0, 0, (SCM me),
-          "Return an alist of properties of  translator @var{me}.")
+          "Return an alist of properties of translator @var{me}.")
 {
   LY_ASSERT_SMOB (Translator, me, 1);
   Translator *tr = unsmob_translator (me);
index ae1dfbe7ff5158e4a755dd08047022b7044e80fe..d0ed1e52137f7990b7e93307b31a7956f5a3ed21 100644 (file)
@@ -132,7 +132,8 @@ ensure_listened_hash ()
 
 LY_DEFINE (ly_get_listened_event_classes, "ly:get-listened-event-classes",
           0, 0, 0, (),
-          "Returns a list of all event classes that some translator listens to.")
+          "Return a list of all event classes that some translator listens"
+          " to.")
 {
   ensure_listened_hash ();
   return ly_hash_table_keys (listened_event_class_table);
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ea30561d839798e1ef284fb70adc009fda12db16 100644 (file)
@@ -0,0 +1 @@
+#empty
index a25935017511d63bac5a83658f40074e26fbbf34..ec5ac2bd229efbcb205330a4d2f0a170db261102 100644 (file)
@@ -1,7 +1,9 @@
-# assumes depth and ISOLANG are defined
+# one assumes depth and ISOLANG are defined
 
 OUT_ITEXI_FILES = $(ITELY_FILES:%.itely=$(outdir)/%.itexi)
 
+TEXINFO_PAPERSIZE_OPTION= $(if $(findstring $(PAPERSIZE),a4),,-t @afourpaper)
+
 LILYPOND_BOOK_INCLUDES += \
   -I$(top-src-dir)/Documentation/user \
   -I$(top-build-dir)/Documentation/user/$(outdir)
@@ -12,7 +14,7 @@ $(outdir)/lilypond.nexi: $(ITELY_FILES) $(ITEXI_FILES)
 
 MAKEINFO = LANG=$(ISOLANG) $(MAKEINFO_PROGRAM) --force
 
-$(outdir)/lilypond/index.html: $(outdir)/lilypond.nexi doc-po
+$(outdir)/lilypond/index.html: $(outdir)/lilypond.nexi $(outdir)/user-ln doc-po
        mkdir -p $(dir $@)
        -$(MAKEINFO) -I$(outdir) --output=$(outdir)/lilypond --css-include=$(top-src-dir)/Documentation/texinfo.css --html $<
        find $(outdir) -name '*.html' | xargs grep -L 'UNTRANSLATED NODE: IGNORE ME' | xargs $(PYTHON) $(buildscript-dir)/html-gettext.py $(buildscript-dir) $(top-build-dir)/Documentation/po/$(outdir) $(ISOLANG)
@@ -22,19 +24,28 @@ $(outdir)/lilypond/index.html: $(outdir)/lilypond.nexi doc-po
 #$(outdir)/lilypond.html: $(outdir)/lilypond.nexi
 #      -$(MAKEINFO) -I$(outdir) --output=$@ --css-include=$(top-src-dir)/Documentation/texinfo.css --html --no-split --no-headers $< 
 
-local-WWW: png-ln $(outdir)/lilypond/index.html lang-merge
+$(outdir)/%.pdf: $(outdir)/%.texi $(outdir)/user-ln doc-po
+       $(PYTHON) $(buildscript-dir)/texi-gettext.py $(buildscript-dir) $(top-build-dir)/Documentation/po/$(outdir) $(ISOLANG) $<
+       cd $(outdir); texi2pdf --batch $(TEXINFO_PAPERSIZE_OPTION) $(notdir $*).pdftexi
 
-lang-merge:
-       $(foreach i, $(shell find $(outdir) -name '*.html' | xargs grep -L --label="" 'UNTRANSLATED NODE: IGNORE ME'), ln -f $(i) $(i:$(outdir)/%.html=$(depth)/Documentation/user/$(outdir)/%.$(ISOLANG).html) &&) true
+local-WWW: $(outdir)/lilypond.pdf $(outdir)/lilypond/index.html
+       cd $(outdir); find -name '*.html' | xargs grep -L --label="" 'UNTRANSLATED NODE: IGNORE ME' | xargs $(PYTHON) ../$(buildscript-dir)/mass-link.py --prepend-suffix .$(ISOLANG) hard . $(top-build-dir)/Documentation/user/$(outdir) lilypond.pdf
+       cd $(outdir); find \( -name 'lily-??????????.png' -o -name 'lily-??????????.ly' \) -a -not -type l | xargs $(PYTHON) ../$(buildscript-dir)/mass-link.py hard . $(top-build-dir)/Documentation/user/$(outdir)
+# FIXME
+# ugh, this is not enough to avoid wasting build time, $(outdir)/user-ln should be touched for all languages
+       touch -mr $(top-build-dir)/Documentation/user/$(outdir) $(outdir)/user-ln
 
 LINKED_PNGS = henle-flat-gray.png baer-flat-gray.png lily-flat-bw.png
 
 # makeinfo is broken, it MUST have PNGs in output dir
-# strangely, this is not true for ly PNGs
 # symlinking PNGs...
-png-ln:
+# lilypond-book -I flag seems broken too, and texi2pdf -I flag confuses
+# pdfetex with .aux and other files from English manual
+# symlinking lily-*...
+$(outdir)/user-ln: $(top-build-dir)/Documentation/user/$(outdir)
+       touch -mr $(top-build-dir)/Documentation/user/$(outdir) $@
        mkdir -p $(outdir)/lilypond
-       cd $(outdir) && $(foreach i, $(LINKED_PNGS), ln -sf ../$(depth)/Documentation/user/$(i) $(i) &&) true
+       $(PYTHON) $(buildscript-dir)/mass-link.py symbolic $(top-build-dir)/Documentation/user/$(outdir) $(outdir) 'lily-*.pdf' 'lily-*.tex' 'lily-*.texi' 'lily-*.ly' 'lily-*.txt' 'lily-*.png' 'henle-flat-gray.*' 'baer-flat-gray.*' 'lily-flat-bw.*'
        cd $(outdir)/lilypond && $(foreach i, $(LINKED_PNGS), ln -sf ../../$(depth)/Documentation/user/$(i) $(i) &&) true
 
 local-WWW-clean: deep-WWW-clean
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..ea30561d839798e1ef284fb70adc009fda12db16 100644 (file)
@@ -0,0 +1 @@
+#empty
index d32790e9d207bb35c956da96d94626d05f2955ba..3eed95f1c8462672585ce652a6695a80d6d43e34 100644 (file)
--- a/po/es.po
+++ b/po/es.po
@@ -1,72 +1,71 @@
-# translation of es.po to Spanish
-# Spanish translation of GNU LilyPond - http://lilypond.org
-# Copyright (C) 2002, 2007 Free Software Foundation, Inc.
+# Spanish translation of GNU Lilypond - http://lilypond.org
+# Copyright (C) 2002 Free Software Foundation, Inc.
+# Quique <quique@sindominio.net>, 2002, 2004.
+# Daniel Tonda <daniel dot tonda (at) gmail dot com>, 2006.
+# Francisco Vila <francisco.vila@hispalinux.es>, 2007.
 #
-# Quique <quique@sindominio.net>, 2002.
-# Daniel Tonda Castillo <daniel.tonda@gmail.com>, 2007.
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.11.11\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2006-12-24 10:40+0100\n"
-"PO-Revision-Date: 2007-01-14 00:01+0100\n"
-"Last-Translator: Daniel Tonda Castillo <daniel.tonda@gmail.com>\n"
+"Project-Id-Version: lilypond 2.11.22\n"
+"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
+"POT-Creation-Date: 2007-04-28 12:03+0200\n"
+"PO-Revision-Date: 2007-05-31 20:19+0100\n"
+"Last-Translator: Francisco Vila <francisco.vila@hispalinux.es>\n"
 "Language-Team: Spanish <es@li.org>\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"X-Generator: KBabel 1.11.4\n"
 
 #: convertrules.py:12
 #, python-format
 msgid "Not smart enough to convert %s"
-msgstr "No soy capaz de convertir: %s"
+msgstr "No soy tan listo como para convertir %s"
 
 #: convertrules.py:13
 msgid "Please refer to the manual for details, and update manually."
-msgstr "Por favor dirígase al manual para más detalles y actualice manualmente."
+msgstr "Consulte el manual para ver los detalles, y efectúe una actualización manual"
 
 #: convertrules.py:14
 #, python-format
 msgid "%s has been replaced by %s"
-msgstr "%s se reemplazado por %s"
+msgstr "%s se ha sustituido por %s"
 
-#: convertrules.py:2398
+#: convertrules.py:2408
 msgid "LilyPond source must be UTF-8"
-msgstr "La fuente LilyPond debe ser UTF-8"
+msgstr "El código de entrada de LilyPond debe ser UTF-8"
 
-#: convertrules.py:2401
+#: convertrules.py:2411
 msgid "Try the texstrings backend"
-msgstr "Intente el procesador texstrings"
+msgstr "Pruebe con el 'backend' texstrings"
 
-#: convertrules.py:2404
+#: convertrules.py:2414
 #, python-format
 msgid "Do something like: %s"
-msgstr "Haga algo cómo: %s"
+msgstr "Haga algo parecido a %s"
 
-#: convertrules.py:2407
+#: convertrules.py:2417
 msgid "Or save as UTF-8 in your editor"
-msgstr "O guárdelo como UTF-8 en su editor."
+msgstr "O guarde como UTF-8 en su editor"
 
 #: fontextract.py:26
 #, python-format
 msgid "Scanning %s"
-msgstr "Analizando %s"
+msgstr "Explorando %s"
 
 #: fontextract.py:71
 #, python-format
 msgid "Extracted %s"
-msgstr "Se ha extraído: %s"
+msgstr "Se ha extraído %s"
 
 #: fontextract.py:86
 #, python-format
 msgid "Writing fonts to %s"
-msgstr "Escribiendo fuentes a %s"
+msgstr "Escribiendo las tipografías en %s"
 
 #: lilylib.py:85 lilylib.py:136
 #, python-format
 msgid "Invoking `%s'"
-msgstr "Invocando `%s'"
+msgstr "Invocando «%s»"
 
 #: lilylib.py:87 lilylib.py:138
 #, python-format
@@ -76,403 +75,409 @@ msgstr "Ejecutando %s..."
 #: lilylib.py:203
 #, python-format
 msgid "Usage: %s"
-msgstr "Uso: %s"
+msgstr "uso: %s"
 
-#: abc2ly.py:1349 convert-ly.py:80 lilypond-book.py:125 midi2ly.py:869
+#: abc2ly.py:1342 convert-ly.py:71 lilypond-book.py:110 midi2ly.py:858
 #, python-format
 msgid "%s [OPTION]... FILE"
-msgstr "Sintaxis: %s [OPCION]... FICHERO"
+msgstr "%s [OPCIÓN]... ARCHIVO"
 
-#: abc2ly.py:1351
+#: abc2ly.py:1344
 #, python-format
 msgid ""
 "abc2ly converts ABC music files (see\n"
 "%s) to LilyPond input."
 msgstr ""
-"abc2ly convierte archivos de música ABC (vea\n"
-"%s) a código LilyPond."
+"abc2ly convierte archivos de música de ABC\n"
+"(véase %s) en código de entrada de LilyPond."
 
-#: abc2ly.py:1355 etf2ly.py:1200 midi2ly.py:885
+#: abc2ly.py:1348 etf2ly.py:1184 midi2ly.py:874
 msgid "write output to FILE"
-msgstr "escribir la salida a FICHERO"
+msgstr "escribir la salida en el ARCHIVO"
 
-#: abc2ly.py:1357
+#: abc2ly.py:1350
 msgid "be strict about succes"
-msgstr "Sea estricto sobre el éxito"
+msgstr "ser estricto respecto a la validez"
 
-#: abc2ly.py:1359
+#: abc2ly.py:1352
 msgid "preserve ABC's notion of beams"
-msgstr "preservar la idea de ABC sobre las barras"
+msgstr "preservar la noción de las barras de ABC"
 
-#: abc2ly.py:1361 convert-ly.py:112 etf2ly.py:1208 lilypond-book.py:168
-#: midi2ly.py:911 musicxml2ly.py:505
+#: abc2ly.py:1354 convert-ly.py:103 etf2ly.py:1192 lilypond-book.py:161
+#: midi2ly.py:900 musicxml2ly.py:506
 msgid "Report bugs via"
-msgstr "Reporte errores por medio de"
+msgstr "Informe de los fallos a"
 
-#: convert-ly.py:41
+#: convert-ly.py:32
 msgid ""
 "Update LilyPond input to newer version.  By default, update from the\n"
 "version taken from the \\version command, to the current LilyPond version."
 msgstr ""
-"Actualice el código LilyPond a una versión más reciente. Por defecto, actualice desde la \n"
-"versión tomada del comando \\version, a la versión actual de LilyPond."
+"Actualizar el código de entrada de LilyPond a una versión más reciente.\n"
+"De manera predeterminada, actualizarlo desde la versión sacada de\n"
+"la instrucción \\version, a la versión actual de LilyPond."
 
-#: convert-ly.py:43 lilypond-book.py:73
+#: convert-ly.py:34 lilypond-book.py:59
 msgid "Examples:"
 msgstr "Ejemplos:"
 
-#: convert-ly.py:56 lilypond-book.py:98 warn.cc:48 input.cc:90
+#: convert-ly.py:47 lilypond-book.py:83 warn.cc:48 input.cc:90
 #, c-format, python-format
 msgid "warning: %s"
 msgstr "advertencia: %s"
 
-#: convert-ly.py:59 lilypond-book.py:101 warn.cc:54 input.cc:96 input.cc:104
+#: convert-ly.py:50 lilypond-book.py:86 warn.cc:54 input.cc:96 input.cc:104
 #, c-format, python-format
 msgid "error: %s"
 msgstr "error: %s"
 
-#: convert-ly.py:75 etf2ly.py:1190 lilypond-book.py:121 midi2ly.py:98
+#: convert-ly.py:66 etf2ly.py:1174 lilypond-book.py:106 midi2ly.py:87
 msgid "Distributed under terms of the GNU General Public License."
-msgstr "Distribuido bajo los términos de la GNU General Public License."
+msgstr "Distribuido bajo los términos de la Licencia Pública General de GNU."
 
-#: convert-ly.py:76 etf2ly.py:1191 lilypond-book.py:122 midi2ly.py:99
+#: convert-ly.py:67 etf2ly.py:1175 lilypond-book.py:107 midi2ly.py:88
 msgid "It comes with NO WARRANTY."
-msgstr "No se entrega con GARANTIA."
+msgstr "Se distribuye SIN NINGUNA GARANTÍA."
 
-#: convert-ly.py:86 convert-ly.py:106
+#: convert-ly.py:77 convert-ly.py:97
 msgid "VERSION"
 msgstr "VERSIÓN"
 
-#: convert-ly.py:88
+#: convert-ly.py:79
 msgid "start from VERSION [default: \\version found in file]"
-msgstr "iniciando desde VERSIÓN [por defecto \\version encontrada en archivo]"
+msgstr "comenzar a partir de VERSIÓN [predeterminado: \\version del archivo]"
 
-#: convert-ly.py:91
+#: convert-ly.py:82
 msgid "edit in place"
-msgstr "editar en sitio"
+msgstr "editar in situ"
 
-#: convert-ly.py:94
+#: convert-ly.py:85
 msgid "do not add \\version command if missing"
-msgstr "no añadir comando \\version si es que falta"
+msgstr "no añadir la instrucción \\version si no está presente"
 
-#: convert-ly.py:100
+#: convert-ly.py:91
 msgid "show rules [default: --from=0, --to=@TOPLEVEL_VERSION@]"
-msgstr "mostrar reglas [por defecto: --from=0, --to=@TOPLEVEL_VERSION@]"
+msgstr "mostrat las reglas [predeterminado: --from=0, --to=@TOPLEVEL_VERSION@]"
 
-#: convert-ly.py:105
+#: convert-ly.py:96
 msgid "convert to VERSION [default: @TOPLEVEL_VERSION@]"
-msgstr "convertir a VERSION [default: @TOPLEVEL_VERSION@]"
+msgstr "convertir a VERSIÓN [predeterminado: @TOPLEVEL_VERSION@]"
 
-#: convert-ly.py:153
+#: convert-ly.py:144
 msgid "Applying conversion: "
-msgstr "Aplicando conversión:"
+msgstr "Aplicando la conversión:"
 
-#: convert-ly.py:166
+#: convert-ly.py:157
 msgid "Error while converting"
-msgstr "Error al hacer la conversión"
+msgstr "Error al convertir"
 
-#: convert-ly.py:168
+#: convert-ly.py:159
 msgid "Stopping at last succesful rule"
-msgstr "Deteniéndose en la última regla exitosa"
+msgstr "Detención en la primera regla satisfactoria"
 
-#: convert-ly.py:190
+#: convert-ly.py:181
 #, python-format
 msgid "Processing `%s'... "
-msgstr "Procesando `%s'..."
+msgstr "Procesando «%s»..."
 
-#: convert-ly.py:277 relocate.cc:360 source-file.cc:54
+#: convert-ly.py:268 relocate.cc:363 source-file.cc:54
 #, c-format, python-format
 msgid "cannot open file: `%s'"
-msgstr "no se puede abrir el fichero: `%s'"
+msgstr "no se puede abrir el archivo: «%s»"
 
-#: convert-ly.py:284
+#: convert-ly.py:275
 #, python-format
 msgid "cannot determine version for `%s'.  Skipping"
-msgstr "no se puede determinar la versión para `%s'.  Saltando"
+msgstr "no se puede determinar la versión de «%s»;  se salta"
 
-#: etf2ly.py:1196
+#: etf2ly.py:1180
 #, python-format
 msgid "%s [OPTION]... ETF-FILE"
-msgstr "%s [OPTIONS]... FICHERO ETF"
+msgstr "%s [OPCIÓN]... ARCHIVO_ETF"
 
-#: etf2ly.py:1198
+#: etf2ly.py:1182
 msgid ""
 "Enigma Transport Format is a format used by Coda Music Technology's\n"
-"Finale product.  etf2ly converts a subset of ETF to a ready-to-use LilyPond "
-"file."
-msgstr "Enigma Transport Format es un formato usado por el producto Finale de Coda Music.  etf2ly convierte un subconjunto de ETF a un código LilyPond listo para usarse."
+"Finale product.  etf2ly converts a subset of ETF to a ready-to-use LilyPond file."
+msgstr ""
+"El formato transportable de Enigma (ETF) es un formato utilizado\n"
+"por el producto Finale de Coda Music Technology.\n"
+"etf2ly convierte un subconjunto de ETF a un archivo de LilyPond\n"
+"listo para usar."
 
-#: etf2ly.py:1201 midi2ly.py:886 musicxml2ly.py:498 main.cc:172 main.cc:178
+#: etf2ly.py:1185 midi2ly.py:875 musicxml2ly.py:499 main.cc:154 main.cc:159
 msgid "FILE"
-msgstr "FICHERO"
+msgstr "ARCHIVO"
 
-#: etf2ly.py:1203 lilypond-book.py:165 midi2ly.py:899 main.cc:185
+#: etf2ly.py:1187 lilypond-book.py:158 midi2ly.py:888 main.cc:163
 msgid "show warranty and copyright"
-msgstr ""
-"mostrar los avisos de garantía y de\n"
-"copyright"
+msgstr "mostrar los avisos de garantía y de copyright"
 
-#: lilypond-book.py:71
+#: lilypond-book.py:57
 msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document."
-msgstr "Procesar fragmentos LilyPond en híbridos de HTML, LaTeX, texinfo o documentos DocBook."
+msgstr "Procesar los fragmentos de LylyPond en un documento de HTML híbrido, LaTeX, texinfo o DocBook."
 
-#: lilypond-book.py:78
+#: lilypond-book.py:64
 msgid "BOOK"
-msgstr "BOOK"
+msgstr "LIBRO"
 
-#: lilypond-book.py:87
+#: lilypond-book.py:72
 #, python-format
 msgid "Exiting (%d)..."
 msgstr "Saliendo (%d)..."
 
-#: lilypond-book.py:119
+#: lilypond-book.py:104
 #, python-format
 msgid "Copyright (c) %s by"
-msgstr "Copyright (c) %s "
+msgstr "Copyright (c) %s by"
 
-#: lilypond-book.py:129
+#: lilypond-book.py:114
 msgid "FILTER"
 msgstr "FILTRO"
 
-#: lilypond-book.py:132
+#: lilypond-book.py:117
 msgid "pipe snippets through FILTER [convert-ly -n -]"
-msgstr "redirigir fragmentos a través del FILTRO [convert-ly -n -]"
+msgstr "redirigir fragmentos a través de FILTRO [convert-ly -n -]"
 
-#: lilypond-book.py:135
+#: lilypond-book.py:120
 msgid "use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
-msgstr "use formato de salida FORMATO (texi [default], texi-html, latex, html, docbook)"
+msgstr "usar el formato de salida FORMATO (texi [predeterminado], texi-html, latex, html, docbook)"
 
-#: lilypond-book.py:138
+#: lilypond-book.py:123
 msgid "add DIR to include path"
-msgstr "añadir DIR a la ruta de búsqueda"
+msgstr "añadir DIR a la ruta de inclusión"
 
-#: lilypond-book.py:139 lilypond-book.py:144 main.cc:171
+#: lilypond-book.py:124 lilypond-book.py:136 main.cc:153
 msgid "DIR"
 msgstr "DIR"
 
-#: lilypond-book.py:143
+#: lilypond-book.py:129
+msgid "PAD"
+msgstr "CUADERNO"
+
+#: lilypond-book.py:135
 msgid "write output to DIR"
 msgstr "escribir la salida en el DIRECTORIO"
 
-#: lilypond-book.py:147
+#: lilypond-book.py:140
 msgid "COMMAND"
-msgstr "COMANDO"
+msgstr "MANDATO"
 
-#: lilypond-book.py:148
+#: lilypond-book.py:141
 msgid "process ly_files using COMMAND FILE..."
-msgstr "procesar archivos_ly usando COMMANDO FICHERO"
+msgstr "procesar ly_files utilizando ORDEN ARCHIVO..."
 
-#: lilypond-book.py:154
+#: lilypond-book.py:147
 msgid "Create PDF files for use with PDFTeX"
-msgstr "Crear archivos PDF para usarse con PDFTeX"
+msgstr "Crear archivos PDF para su utilización con PDFTeX"
 
-#: lilypond-book.py:157
+#: lilypond-book.py:150
 msgid ""
 "extract all PostScript fonts into INPUT.psfonts for LaTeX\n"
 "must use this with dvips -h INPUT.psfonts"
 msgstr ""
-"extraer todas las fuentes POSTCRIPT en INPUT.psfonts, para  LaTeX\n"
-"debe usar esto para dvips -h INPUT.psfonts "
+"extraer todas las tipografías PostScript en ENTRADA.psfonts para LaTeX\n"
+"debe utilizarse con dvips -h ENTRADA.psfonts"
 
-#: lilypond-book.py:160 midi2ly.py:896 musicxml2ly.py:489 main.cc:184
+#: lilypond-book.py:153 midi2ly.py:885 musicxml2ly.py:490 main.cc:162
 msgid "be verbose"
 msgstr "ser prolijo"
 
-#: lilypond-book.py:773
+#: lilypond-book.py:768
 #, python-format
 msgid "file not found: %s"
 msgstr "archivo no encontrado: %s"
 
-#: lilypond-book.py:1004
+#: lilypond-book.py:999
 #, python-format
 msgid "deprecated ly-option used: %s=%s"
-msgstr "opción ly en desuso: %s=%s"
+msgstr "se ha usado una ly-option obsoleta: %s=%s"
 
-#: lilypond-book.py:1007
+#: lilypond-book.py:1002
 #, python-format
 msgid "compatibility mode translation: %s=%s"
-msgstr "modo de traducción de compatibilidad: %s=%s"
+msgstr "traducción en modo de compatibilidad: %s=%s"
 
-#: lilypond-book.py:1011
+#: lilypond-book.py:1006
 #, python-format
 msgid "deprecated ly-option used: %s"
-msgstr "opción ly en desuso: %s"
+msgstr "se usó una ly-option obsoleta: %s"
 
-#: lilypond-book.py:1014
+#: lilypond-book.py:1009
 #, python-format
 msgid "compatibility mode translation: %s"
-msgstr "modo de traducción de compatibilidad: %s"
+msgstr "traducción en modo compatible: %s"
 
-#: lilypond-book.py:1033
+#: lilypond-book.py:1028
 #, python-format
 msgid "ignoring unknown ly option: %s"
-msgstr "ignorando opicón ly desconocida: %s"
+msgstr "opción ly desconocida e ignorada: %s"
 
-#: lilypond-book.py:1388
+#: lilypond-book.py:1382
 #, python-format
 msgid "Opening filter `%s'"
-msgstr "Abriendo filtro `%s'..."
+msgstr "Filtro de apertura «%s»"
 
-#: lilypond-book.py:1405
+#: lilypond-book.py:1399
 #, python-format
 msgid "`%s' failed (%d)"
-msgstr "%s falló (%d)"
+msgstr "«%s» ha fallado (%d)"
 
-#: lilypond-book.py:1406
+#: lilypond-book.py:1400
 msgid "The error log is as follows:"
-msgstr "La bitácora de error a continuación:"
+msgstr "El registro de errores es como sigue:"
 
-#: lilypond-book.py:1476
+#: lilypond-book.py:1472
 msgid "cannot find \\begin{document} in LaTeX document"
-msgstr "no se puede encontrar \\begin{document} en el documento LaTeX"
+msgstr "no se encuentra \\begin{document} en el documento de LaTeX"
 
-#: lilypond-book.py:1586
+#: lilypond-book.py:1583
 msgid "Writing snippets..."
 msgstr "Escribiendo fragmentos..."
 
-#: lilypond-book.py:1591
+#: lilypond-book.py:1588
 msgid "Processing..."
 msgstr "Procesando..."
 
-#: lilypond-book.py:1595
+#: lilypond-book.py:1592
 msgid "All snippets are up to date..."
-msgstr "Todos los fragmentos están actualizados"
+msgstr "Todos los fragmentos están actualizados..."
 
-#: lilypond-book.py:1605
+#: lilypond-book.py:1602
 #, python-format
 msgid "cannot determine format for: %s"
-msgstr "no puedo determinar el formato para: %s"
+msgstr "no se puede determinar el formato de: %s"
 
-#: lilypond-book.py:1616
+#: lilypond-book.py:1613
 #, python-format
 msgid "%s is up to date."
 msgstr "%s está actualizado."
 
-#: lilypond-book.py:1622
+#: lilypond-book.py:1619
 #, python-format
 msgid "Writing `%s'..."
-msgstr "Escribiendo `%s'..."
+msgstr "Escribiendo «%s»..."
 
-#: lilypond-book.py:1677
+#: lilypond-book.py:1674
 msgid "Output would overwrite input file; use --output."
-msgstr "La salida sobreescribirá el archivo de entrada, use --output."
+msgstr "La salida sobreescribiría el archivo de entrada; utilice --output."
 
-#: lilypond-book.py:1681
+#: lilypond-book.py:1678
 #, python-format
 msgid "Reading %s..."
 msgstr "Leyendo %s..."
 
-#: lilypond-book.py:1700
+#: lilypond-book.py:1697
 msgid "Dissecting..."
-msgstr "Analizando..."
+msgstr "Diseccionando..."
 
-#: lilypond-book.py:1716
+#: lilypond-book.py:1713
 #, python-format
 msgid "Compiling %s..."
 msgstr "Compilando %s..."
 
-#: lilypond-book.py:1725
+#: lilypond-book.py:1722
 #, python-format
 msgid "Processing include: %s"
-msgstr "Procesando inclusión: %s"
+msgstr "Procesando el archivo de inclusión: %s"
 
-#: lilypond-book.py:1739
+#: lilypond-book.py:1736
 #, python-format
 msgid "Removing `%s'"
-msgstr "Borrando `%s'"
-
-#: lilypond-book.py:1815
-#, python-format
-msgid "Writing fonts to %s..."
-msgstr "Escribiendo fuentes a %s..."
+msgstr "Suprimiendo «%s»"
 
-#: lilypond-book.py:1830
+#: lilypond-book.py:1769
 msgid "option --psfonts not used"
-msgstr "opción --psfonts no usada"
+msgstr "opción --psfonts no utilizada"
 
-#: lilypond-book.py:1831
+#: lilypond-book.py:1770
 msgid "processing with dvips will have no fonts"
-msgstr "al procesar con dvips no contendrá fuentes"
+msgstr "el procesado con dvips no contendrá ninguna tipografía"
 
-#: lilypond-book.py:1834
+#: lilypond-book.py:1773
 msgid "DVIPS usage:"
-msgstr "uso para DVIPS:"
+msgstr "uso de DVIPS:"
 
-#: midi2ly.py:106 lily-library.scm:624 lily-library.scm:632
+#: lilypond-book.py:1829
+#, python-format
+msgid "Writing fonts to %s..."
+msgstr "Escribiendo las tipografías en %s..."
+
+#: midi2ly.py:95 lily-library.scm:577 lily-library.scm:586
 msgid "warning: "
 msgstr "advertencia: "
 
-#: midi2ly.py:109 midi2ly.py:924
+#: midi2ly.py:98 midi2ly.py:913
 msgid "error: "
 msgstr "error: "
 
-#: midi2ly.py:110
+#: midi2ly.py:99
 msgid "Exiting ... "
-msgstr "Saliendo..."
+msgstr "Saliendo... "
 
-#: midi2ly.py:857
+#: midi2ly.py:846
 #, python-format
 msgid "%s output to `%s'..."
-msgstr "%s producidos en `%s'..."
+msgstr "salida de %s hacia «%s»..."
 
-#: midi2ly.py:871 musicxml2ly.py:485
+#: midi2ly.py:860 musicxml2ly.py:486
 #, python-format
 msgid "Convert %s to LilyPond input."
-msgstr "Convertir %s a código LilyPond"
+msgstr "Convertir %s a entrada de LilyPond."
 
-#: midi2ly.py:875
+#: midi2ly.py:864
 msgid "print absolute pitches"
-msgstr "imprimir notas absolutos"
+msgstr "mostrar las alturas absolutas"
 
-#: midi2ly.py:877 midi2ly.py:889
+#: midi2ly.py:866 midi2ly.py:878
 msgid "DUR"
 msgstr "DUR"
 
-#: midi2ly.py:878
+#: midi2ly.py:867
 msgid "quantise note durations on DUR"
-msgstr "quantizar duraciones de notas en DUR"
+msgstr "cuantizar las duraciones de las notas sobre DUR"
 
-#: midi2ly.py:881
+#: midi2ly.py:870
 msgid "print explicit durations"
-msgstr "imprimir duraciones explícitas"
+msgstr "mostrar las duraciones explícitas"
 
-#: midi2ly.py:882
+#: midi2ly.py:871
 msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr ""
+msgstr "establecer la tonalidad: ALT=+sostenidos|-bemoles; MENOR=1"
 
-#: midi2ly.py:883
+#: midi2ly.py:872
 msgid "ALT[:MINOR]"
-msgstr "ALT[:MINOR]"
+msgstr "ALT[:MENOR]"
 
-#: midi2ly.py:888
+#: midi2ly.py:877
 msgid "quantise note starts on DUR"
-msgstr "quantizar inicios de notas en DUR"
+msgstr "cuantizar los comienzos de las notras sobre DUR"
 
-#: midi2ly.py:891
+#: midi2ly.py:880
 msgid "DUR*NUM/DEN"
-msgstr ""
+msgstr "DUR*NUM/DEN"
 
-#: midi2ly.py:894
+#: midi2ly.py:883
 msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr "permitir duracione de grupetos DUR*NUM/DEN"
+msgstr "permitir duraciones de grupos irregulares DUR*NUM/DEN"
 
-#: midi2ly.py:902
+#: midi2ly.py:891
 msgid "treat every text as a lyric"
-msgstr "tratar cualquier texto como letra"
+msgstr "tratar todos los textos como letra"
 
-#: midi2ly.py:905
+#: midi2ly.py:894
 msgid "Examples"
 msgstr "Ejemplos"
 
-#: midi2ly.py:925
+#: midi2ly.py:914
 msgid "no files specified on command line."
-msgstr "no se ha especificado ningún fichero en la línea de órdenes."
+msgstr "no se ha especificado ningún archivo en la línea de órdenes."
 
-#: musicxml2ly.py:473
+#: musicxml2ly.py:474
 msgid "musicxml2ly FILE.xml"
-msgstr "musicxml2ly FICHERO.xml"
+msgstr "musicxml2ly ARCHIVO.xml"
 
-#: musicxml2ly.py:476
+#: musicxml2ly.py:477
 #, python-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -481,167 +486,160 @@ msgid ""
 "information."
 msgstr ""
 "Este software es libre. Está protegido por la Licencia Pública\n"
-"General de GNU, y es libre de modificarlo y/o distribuir copias de él bajo ciertas condiciones.  Invoquese como `%s --warranty' para más información."
+"General de GNU, y usted está invitado a modificarlo y/o  a distribuir\n"
+"copias de él bajo ciertas condiciones. Invóquelo como '%s --warranty' \n"
+"para obtener más información."
 
-#: musicxml2ly.py:495
+#: musicxml2ly.py:496
 msgid "Use lxml.etree; uses less memory and cpu time."
-msgstr "Usar lxml.etree; usa menos memoria y tiempo del cpu."
+msgstr "Use lxml.etree; utiliza menos memoria y tiempo de procesador."
 
-#: musicxml2ly.py:503
+#: musicxml2ly.py:504
 msgid "set output filename to FILE"
-msgstr "escribir la salida en el FICHERO"
+msgstr "establecer el nombre del archivo de salida a ARCHIVO"
 
 #: getopt-long.cc:140
 #, c-format
 msgid "option `%s' requires an argument"
-msgstr "la opción `%s' requiere un argumento"
+msgstr "la opción «%s» requiere un argumento"
 
 #: getopt-long.cc:144
 #, c-format
 msgid "option `%s' does not allow an argument"
-msgstr "la opción `%s' no permite argumentos"
+msgstr "la opción «%s» no permite argumentos"
 
 #: getopt-long.cc:148
 #, c-format
 msgid "unrecognized option: `%s'"
-msgstr "opción no reconocida: `%s'"
+msgstr "opción no reconocida: «%s»"
 
 #: getopt-long.cc:154
 #, c-format
 msgid "invalid argument `%s' to option `%s'"
-msgstr "argúmento no válido `%s' para la opción `%s'"
+msgstr "argumento no válido «%s» para la opción «%s»"
 
-#: warn.cc:68 grob.cc:559 input.cc:82
+#: warn.cc:68 grob.cc:557 input.cc:82
 #, c-format
 msgid "programming error: %s"
 msgstr "error de programación: %s"
 
 #: warn.cc:69 input.cc:83
 msgid "continuing, cross fingers"
-msgstr "continuando, cruzando los dedos"
+msgstr "continuamos; cruce los dedos"
 
-#: accidental-engraver.cc:240
+#: accidental-engraver.cc:247
 #, c-format
 msgid "accidental typesetting list must begin with context-name: %s"
-msgstr "lista de grabado de accidentes debe iniciar con un nombre de contexto: %s"
+msgstr "la lista de tippografiado de alteraciones accidentales debe comenzar con context-name: %s"
 
-#: accidental-engraver.cc:268
+#: accidental-engraver.cc:274
 #, c-format
-msgid "ignoring unknown accidental: %s"
-msgstr "ignorando accidentes desconocidos: %s"
+msgid "ignoring unknown accidental rule: %s"
+msgstr "se ignora la regla desconocida de alteración accidental: %s"
 
-#: accidental-engraver.cc:284
+#: accidental-engraver.cc:290
 #, c-format
 msgid "pair or context-name expected for accidental rule, found %s"
-msgstr "se encontró regla para: se esperaba un par o nombre de contexto para accidente: %s"
+msgstr "se esperaba una pareja o un nombre de contexto para la regla de alteración accidental, se ha encontrado %s"
 
-#: accidental.cc:243 key-signature-interface.cc:133
+#: accidental.cc:160
 #, c-format
-msgid "accidental `%s' not found"
-msgstr "accidente `%s' no encontrado"
+msgid "Could not find glyph-name for alteration %s"
+msgstr "No se ha encontrado el nombre de glifo para la alteración %s"
 
-#: align-interface.cc:222
-msgid ""
-"vertical alignment called before line-breaking.\n"
-"Only do cross-staff spanners with PianoStaff."
-msgstr ""
-"vertical alignment llamado antes de un corte de línea.\n"
-"Solamente hacer cross-staff-spanners con PianoStaff."
+#: accidental.cc:175
+msgid "natural alteration glyph not found"
+msgstr "no se encuentra el glifo del símbolo de becuadro"
 
-#: align-interface.cc:329
+#: align-interface.cc:322
 msgid "tried to get a translation for something that is no child of mine"
-msgstr "intentando obtener una traducción para algo que no está en mi ámbito"
+msgstr "se ha intentado obtener una traducción de algo que no es hijo mío"
 
-#: all-font-metrics.cc:173
+#: all-font-metrics.cc:143
 #, c-format
 msgid "cannot find font: `%s'"
-msgstr "no encuentro la fuente: `%s'"
+msgstr "no se encuentra la tipografía «%s»"
 
 #: apply-context-iterator.cc:31
 msgid "\\applycontext argument is not a procedure"
-msgstr "El argumento \\applycontext no es un procedimiento"
+msgstr "el argumento de \\applycontext no es un procedimiento"
 
 #: auto-change-iterator.cc:63 change-iterator.cc:61
 #, c-format
 msgid "cannot change, already in translator: %s"
-msgstr "no se puede cambiar, ya está en el traductor: %s"
+msgstr "no se puede cambiar, ya está dentro del traductor: %s"
 
 #: axis-group-engraver.cc:78
 msgid "Axis_group_engraver: vertical group already has a parent"
-msgstr "El grupo vertical Axis_group_engraver: ya tiene un padre"
+msgstr "Axis_group_engraver: el grupo vertical ya tiene un ancestro"
 
 #: axis-group-engraver.cc:79
 msgid "are there two Axis_group_engravers?"
-msgstr "hay dos Axis_group_engravers?"
+msgstr "¿hay dos Axis_group_engravers?"
 
 #: axis-group-engraver.cc:80
 msgid "removing this vertical group"
-msgstr "quitando este grupo vertical"
+msgstr "se suprime este grupo vertical"
 
-#: axis-group-interface.cc:96
+#: axis-group-interface.cc:109
 msgid "tried to calculate pure-height at a non-breakpoint"
-msgstr "se trató de calcular la altura pura en un lugar que no es punto de quiebre"
+msgstr "se ha intentado calcular pure-height en un lugar que no es un breakpoint"
 
-#: axis-group-interface.cc:370
+#: axis-group-interface.cc:449
 msgid "an outside-staff object should have a direction, defaulting to up"
-msgstr "un objeto externo al pentagrama debe tener dirección, por defecto deiniéndolo hacia arriba"
-
-#: axis-group-interface.cc:383
-#, c-format
-msgid "outside-staff object %s has an empty extent"
-msgstr "Objeto externo al pentagrama %s tiene una extensión vacía"
+msgstr "un objeto externo a la pauta debe tener una dirección, por omisión se establece hacia arriba"
 
 #: bar-check-iterator.cc:73
 #, c-format
 msgid "barcheck failed at: %s"
-msgstr "revisión de compases falló en: %s"
+msgstr "la comprobación de compás ha fallado en: %s"
 
-#: beam-engraver.cc:128
+#: beam-engraver.cc:126
 msgid "already have a beam"
-msgstr "ya hay una barra de compás "
+msgstr "ya tiene una barra"
 
-#: beam-engraver.cc:196
+#: beam-engraver.cc:202
 msgid "unterminated beam"
 msgstr "barra sin terminar"
 
-#: beam-engraver.cc:238 chord-tremolo-engraver.cc:134
+#: beam-engraver.cc:244 chord-tremolo-engraver.cc:138
 msgid "stem must have Rhythmic structure"
-msgstr "la plica debe tener una estructura rítmica"
+msgstr "la plica debe tener estructura rítmica"
 
-#: beam-engraver.cc:246
+#: beam-engraver.cc:252
 msgid "stem does not fit in beam"
-msgstr "la plica no cabe en la barra"
+msgstr "la plica no cabe dentro de la barra"
 
-#: beam-engraver.cc:247
+#: beam-engraver.cc:253
 msgid "beam was started here"
-msgstr "se inició barra aquí"
+msgstr "la barra comenzó aquí"
 
-#: beam-quanting.cc:307
+#: beam-quanting.cc:314
 msgid "no feasible beam position"
-msgstr "No se ha encontrado posicionamiento de barra factible"
+msgstr "no hay ninguna posición viable para la barra"
 
-#: beam.cc:144
+#: beam.cc:160
 msgid "removing beam with no stems"
-msgstr "quitando barra sin plicas"
+msgstr "se suprime la barra sin plicas"
 
-#: beam.cc:1007
+#: beam.cc:1035
 msgid "no viable initial configuration found: may not find good beam slope"
-msgstr "no se pudo encontrar una configuración inicial factible: la inclinación de la barra puede no ser correcta"
+msgstr "no se ha encontrado ninguna configuración inicial viable; puede que no se encuentre una buena inclinación de las barras"
 
-#: break-alignment-interface.cc:208
+#: break-alignment-interface.cc:195
 #, c-format
 msgid "No spacing entry from %s to `%s'"
-msgstr "No hay entrada de espaciado desde %s a `%s'"
+msgstr "no hay un elemento de espaciado desde %s hasta «%s»"
 
 #: change-iterator.cc:23
 #, c-format
 msgid "cannot change `%s' to `%s'"
-msgstr "no se puede cambiar `%s' a `%s'"
+msgstr "no se puede cambiar de «%s» a «%s»"
 
 #. FIXME: constant error message.
 #: change-iterator.cc:82
 msgid "cannot find context to switch to"
-msgstr "no se encuentra encontrar a qué contexto cambiar"
+msgstr "no se encuentra el contexto al que cambiar"
 
 #. We could change the current translator's id, but that would make
 #. errors hard to catch.
@@ -651,7 +649,7 @@ msgstr "no se encuentra encontrar a qué contexto cambiar"
 #: change-iterator.cc:91
 #, c-format
 msgid "not changing to same context type: %s"
-msgstr "no se cambia al mismo tipo de contexto: %s"
+msgstr "no se cambia al mismo tipo de contexto: %s"
 
 #. FIXME: uncomprehensable message
 #: change-iterator.cc:95
@@ -660,110 +658,110 @@ msgstr "ninguno de éstos en mi familia"
 
 #: chord-tremolo-engraver.cc:88
 msgid "No tremolo to end"
-msgstr "No hay trémolo que terminar"
+msgstr "No hay ningún tremolo hasta el final"
 
 #: chord-tremolo-engraver.cc:110
 msgid "unterminated chord tremolo"
-msgstr "acorde de trémolo sin terminar"
+msgstr "trémolo de acorde sin terminar"
 
-#: chord-tremolo-iterator.cc:33
+#: chord-tremolo-iterator.cc:35
 #, c-format
 msgid "expect 2 elements for chord tremolo, found %d"
-msgstr "esperaba dos elementos para acorde con trémolo, encontré %d"
+msgstr "se esperaban 2 elementos para el tremolo de acorde, se han encontrado %d"
 
 #: clef.cc:54
 #, c-format
 msgid "clef `%s' not found"
-msgstr "no se encontró la clave de %s"
+msgstr "no se ha encontrado la clave  «%s»"
 
 #: cluster.cc:110
 #, c-format
 msgid "unknown cluster style `%s'"
-msgstr "tipo de grupo (cluster) desconocido `%s'"
+msgstr "estilo de cluster (racimo) «%s» desconocido"
 
 #: cluster.cc:135
 msgid "junking empty cluster"
-msgstr "ignorando cluster vacío"
+msgstr "se recorta el racimo (cluster) vacío"
 
 #: coherent-ligature-engraver.cc:100
 #, c-format
 msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
-msgstr "Coherent_ligature_engraver: incrementando `spacing-increment=0.01': ptr=%ul"
+msgstr "Coherent_ligature_engraver: se establece `spacing-increment=0.01': ptr=%ul"
 
 #. if we get to here, just put everything on one line
-#: constrained-breaking.cc:176 constrained-breaking.cc:193
+#: constrained-breaking.cc:167 constrained-breaking.cc:184
 msgid "cannot find line breaking that satisfies constraints"
-msgstr "no puedo determinar un corte de línea que satisfaga las restricciones"
+msgstr "no se ecnuentra un salto de línea que cumpla las restricciones"
 
 #: context-def.cc:130
 #, c-format
 msgid "program has no such type: `%s'"
-msgstr "el programa no tiene tal tipo: `%s'"
+msgstr "el programa no tiene este tipo: «%s»"
 
-#: context-property.cc:76
+#: context-property.cc:30
 msgid "need symbol arguments for \\override and \\revert"
-msgstr "faltan argumentos del símbolo para \\override y \\revert"
+msgstr "se necesitan argumentos de símbolo para \\override y \\revert"
 
-#: context.cc:151
+#: context.cc:144
 #, c-format
 msgid "cannot find or create new `%s'"
-msgstr "no se puede encontrar o crear nuevo: `%s'"
+msgstr "no se encuentra o no se puede crear un «%s» nuevo"
 
-#: context.cc:213
+#: context.cc:206
 #, c-format
 msgid "cannot find or create `%s' called `%s'"
-msgstr "no se puede encontrar o crear `%s' llamado `%s'"
+msgstr "no se encuentra o no se puede crear «%s» llamado «%s»"
 
-#: context.cc:276
+#: context.cc:268
 #, c-format
 msgid "Invalid CreateContext event: Cannot create %s context"
-msgstr "Evento CreateContext inválido: No puedo crear contexto %s"
+msgstr "evento CreateContext inválido: No se puede crear el contexto %s"
 
-#: context.cc:388
+#: context.cc:380
 #, c-format
 msgid "cannot find or create: `%s'"
-msgstr "no se puede encontrar o crear: `%s'"
+msgstr "no se encuentra o no se puede crear «%s»"
 
 #: custos.cc:77
 #, c-format
 msgid "custos `%s' not found"
-msgstr "custos `%s' no encontrado"
+msgstr "no se encuentran los custos «%s»"
 
 #: dispatcher.cc:71
 msgid "Event class should be a symbol"
-msgstr "Clase de evento debe ser un símbolo"
+msgstr "La clase del evento debe ser un símbolo"
 
 #: dispatcher.cc:78
 #, c-format
 msgid "Unknown event class %s"
-msgstr "Clase de evento desconocida: `%s'"
+msgstr "Clase de evento %s desconocida"
 
-#: dots.cc:38
+#: dots.cc:37
 #, c-format
 msgid "dot `%s' not found"
-msgstr "puntillo `%s' no encontrado"
+msgstr "no se encuentra el puntillo «%s»"
 
-#: dynamic-engraver.cc:186 span-dynamic-performer.cc:87
+#: dynamic-engraver.cc:184
 msgid "cannot find start of (de)crescendo"
-msgstr "no puedo encontrar el principio del (de)crescendo"
+msgstr "no se encuentra el comienzo del (de)crescendo"
 
-#: dynamic-engraver.cc:195
+#: dynamic-engraver.cc:193
 msgid "already have a decrescendo"
-msgstr "ya tengo un decrescendo"
+msgstr "ya tiene un decrescendo"
 
-#: dynamic-engraver.cc:197
+#: dynamic-engraver.cc:195
 msgid "already have a crescendo"
-msgstr "ya tengo un crescendo"
+msgstr "ya tiene un crescendo"
 
-#: dynamic-engraver.cc:200
+#: dynamic-engraver.cc:198
 msgid "cresc starts here"
-msgstr "crescendo inicia aquí"
+msgstr "el cresc comenzó aquí"
 
-#: dynamic-engraver.cc:323
+#: dynamic-engraver.cc:327
 msgid "unterminated (de)crescendo"
 msgstr "(de)crescendo sin terminar"
 
-#: extender-engraver.cc:131 extender-engraver.cc:140
+#: extender-engraver.cc:142 extender-engraver.cc:151
 msgid "unterminated extender"
 msgstr "prolongación sin terminar"
 
@@ -774,39 +772,43 @@ msgstr "Inicializando FontConfig..."
 #: font-config.cc:44
 #, c-format
 msgid "Rebuilding FontConfig cache %s, this may take a while..."
-msgstr "Reconstruyendo caché de FontConfig %s, puede tomar un rato..."
+msgstr "Reconstruyendo la caché de FontConfig %s, puede tardar un rato..."
 
 #: font-config.cc:55
 #, c-format
 msgid "failed adding font directory: %s"
-msgstr "falló al añadir directorio de fuentes: %s"
+msgstr "fallo al añadir la carpeta de tipografías: %s"
 
 #: font-config.cc:57
 #, c-format
 msgid "adding font directory: %s"
-msgstr "añadiendo directorio de fuentes: %s"
+msgstr "añadiendo carpeta de tipografías: %s"
 
-#: general-scheme.cc:160
+#: general-scheme.cc:198
 msgid "infinity or NaN encountered while converting Real number"
-msgstr "Se encontró infinito o NaN al tratar de convertir a un número Real"
+msgstr "se ha encontrado infinito o NaN durante la conversión de un número Real"
 
-#: general-scheme.cc:161
+#: general-scheme.cc:199
 msgid "setting to zero"
-msgstr "asignando valor de cero"
+msgstr "estableciendo al valor cero"
 
-#: glissando-engraver.cc:92
+#: general-scheme.cc:417 output-ps.scm:61
+msgid "Found infinity or nan in output. Substituting 0.0"
+msgstr "Se ha encontrado Infinito o NaN en la salida. Se sustituye por 0.0"
+
+#: glissando-engraver.cc:94
 msgid "unterminated glissando"
 msgstr "glissando sin terminar"
 
-#: global-context-scheme.cc:91 global-context-scheme.cc:107
+#: global-context-scheme.cc:87 global-context-scheme.cc:105
 msgid "no music found in score"
-msgstr "no se encontró música en la partitura"
+msgstr "no se ha encontrado música en la partitura"
 
-#: global-context-scheme.cc:97
+#: global-context-scheme.cc:95
 msgid "Interpreting music... "
-msgstr "Interpretando música... "
+msgstr "Interpretando la música..."
 
-#: global-context-scheme.cc:120
+#: global-context-scheme.cc:118
 #, c-format
 msgid "elapsed time: %.2f seconds"
 msgstr "tiempo transcurrido: %.2f segundos"
@@ -814,78 +816,97 @@ msgstr "tiempo transcurrido: %.2f segundos"
 #: gregorian-ligature-engraver.cc:59
 #, c-format
 msgid "\\%s ignored"
-msgstr "\\%s ignorado"
+msgstr "\\%s ignorado(s)"
 
 #: gregorian-ligature-engraver.cc:64
 #, c-format
 msgid "implied \\%s added"
-msgstr "\\%s implicados añadidos"
+msgstr "se ha añadido el \\%s implícito"
 
 #. ligature may not start with 2nd head of pes or flexa
 #: gregorian-ligature-engraver.cc:212
 msgid "cannot apply `\\~' on first head of ligature"
-msgstr "no se puede aplicar `\\~' en pricipio de la ligadura"
+msgstr "no se puede aplicar `\\~' sobre la primera cabeza de una ligadura"
 
 #. (pitch == prev_pitch)
 #: gregorian-ligature-engraver.cc:224
 msgid "cannot apply `\\~' on heads with identical pitch"
-msgstr "no se puede aplicar \\~' en cabezas con la misma nota"
+msgstr "no se puede aplicar `\\~' sobre cabezas de idéntica altura"
 
 #: grob-interface.cc:57
 #, c-format
 msgid "Unknown interface `%s'"
-msgstr "Interfase desconocida: `%s'"
+msgstr "interfaz desconocido «%s»"
 
 #: grob-interface.cc:68
 #, c-format
 msgid "Grob `%s' has no interface for property `%s'"
-msgstr "El elemento `%s' no tiene interface para la propiedad `%s'"
+msgstr "El grob «%s» no tiene interfaz para la propiedad «%s»"
+
+#: grob-property.cc:34
+#, c-format
+msgid "%d: %s"
+msgstr "%d: %s"
+
+#: grob-property.cc:174
+#, c-format
+msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)"
+msgstr "dependencia cíclica: se ha encontrado calculation-in-progress para #'%s (%s)"
 
-#: grob.cc:253
+#: grob.cc:251
 msgid "Infinity or NaN encountered"
-msgstr "Se encontró infinito o NaN"
+msgstr "se ha encontrado Infinito o NaN"
 
-#: hairpin.cc:183
+#: hairpin.cc:187
 msgid "decrescendo too small"
 msgstr "decrescendo demasiado pequeño"
 
+#: hairpin.cc:188
+msgid "crescendo too small"
+msgstr "crescendo demasiado pequeño"
+
 #: horizontal-bracket-engraver.cc:59
 msgid "do not have that many brackets"
-msgstr "no hay tantos corchetes"
+msgstr "no tiene tantos corchetes"
 
 #: horizontal-bracket-engraver.cc:68
 msgid "conflicting note group events"
-msgstr "grupo de eventos de notas en conflicto"
+msgstr "eventos de grupo de notas en conflicto"
 
 #: hyphen-engraver.cc:93
 msgid "removing unterminated hyphen"
-msgstr "eliminando prolongación sin terminar"
+msgstr "se suprime el guión separador sin terminación"
 
 #: hyphen-engraver.cc:107
 msgid "unterminated hyphen; removing"
-msgstr "prolongación sin terminar; eliminando"
+msgstr "guión separador sin terminar; se suprime"
 
-#: includable-lexer.cc:53
-msgid "include files are not allowed in safe mode"
-msgstr "incluir archivos no se permite en modo seguro"
-
-#: includable-lexer.cc:60 lily-guile.cc:90 lily-parser-scheme.cc:116
+#: includable-lexer.cc:53 lily-guile.cc:76 lily-parser-scheme.cc:117
 #, c-format
 msgid "cannot find file: `%s'"
-msgstr "no puedo encontrar el fichero: `%s'"
+msgstr "no se encuentra el archivo: «%s»"
 
-#: includable-lexer.cc:62 lily-parser-scheme.cc:107
+#: includable-lexer.cc:55 lily-parser-scheme.cc:108
 #, c-format
 msgid "(search path: `%s')"
-msgstr "(ruta de búsqueda: `%s')"
+msgstr "(ruta de búsqueda: «%s»)"
 
 #: input.cc:112 source-file.cc:168 source-file.cc:183
 msgid "position unknown"
 msgstr "posición desconocida"
 
+#: key-signature-interface.cc:71
+#, c-format
+msgid "No glyph found for alteration: %s"
+msgstr "No se ha encontrado ningún glifo para la alteración: %s"
+
+#: key-signature-interface.cc:81
+msgid "alteration not found"
+msgstr "no se encuentra la alteración"
+
 #: ligature-engraver.cc:93
 msgid "cannot find start of ligature"
-msgstr "no puedo encontrar el principio del ligadura"
+msgstr "no se encuentra el comienzo de la ligadura"
 
 #: ligature-engraver.cc:98
 msgid "no right bound"
@@ -893,76 +914,81 @@ msgstr "no hay límite derecho"
 
 #: ligature-engraver.cc:120
 msgid "already have a ligature"
-msgstr "ya hay una ligadura"
+msgstr "ya tiene una ligadura"
 
 #: ligature-engraver.cc:129
 msgid "no left bound"
 msgstr "no hay límite izquierdo"
 
+# ligature...?
 #: ligature-engraver.cc:173
 msgid "unterminated ligature"
 msgstr "ligadura sin terminar"
 
 #: ligature-engraver.cc:202
 msgid "ignoring rest: ligature may not contain rest"
-msgstr "ignorando silencio: una ligadura no puede contener silencio"
+msgstr "se ignora el silencio: la ligadura no puede contener silencios"
 
 #: ligature-engraver.cc:203
 msgid "ligature was started here"
-msgstr "la ligadura no se inició aquí"
+msgstr "la ligadura comenzó aquí"
 
-#: lily-guile.cc:92
+#: lily-guile.cc:78
 #, c-format
 msgid "(load path: `%s')"
-msgstr "(ruta de carga: `%s')"
+msgstr "(ruta de carga: «%s»)"
 
-#: lily-guile.cc:518
+#: lily-guile.cc:438
 #, c-format
 msgid "cannot find property type-check for `%s' (%s)."
-msgstr "no puedo encontrar revisión de propiedad para `%s' (%s)."
+msgstr "no se encuentra la comprobación de tipo de propiedad para «%s» (%s)."
 
-#: lily-guile.cc:521
+#: lily-guile.cc:441
 msgid "perhaps a typing error?"
-msgstr "posiblemente un error de dedo?"
+msgstr "¿quizá es un error de tecleo?"
 
-#: lily-guile.cc:527
+#: lily-guile.cc:448
 msgid "doing assignment anyway"
-msgstr "realizando asignación de todas maneras"
+msgstr "se hace la asignación de todas formas"
 
-#: lily-guile.cc:539
+#: lily-guile.cc:460
 #, c-format
 msgid "type check for `%s' failed; value `%s' must be of type `%s'"
-msgstr "revisión de tipo para `%s' falló; el valor `%s' debe ser de tipo  `%s'"
+msgstr "ha fallado la comprobación de tipo para «%s»; el valor «%s» debe ser del tipo «%s»"
+
+#: lily-lexer.cc:250
+msgid "include files are not allowed in safe mode"
+msgstr "no se permiten los archivos de inclusión en el modo seguro"
 
-#: lily-lexer.cc:254
+#: lily-lexer.cc:269
 #, c-format
 msgid "identifier name is a keyword: `%s'"
-msgstr "el identificador es una palabra clave: `%s'"
+msgstr "el nombre del identificativo es una palabra clave: «%s»"
 
-#: lily-lexer.cc:269
+#: lily-lexer.cc:284
 #, c-format
 msgid "error at EOF: %s"
-msgstr "error al final del fichero (EOF): %s"
+msgstr "error al final del archivo (EOF): %s"
 
-#: lily-parser-scheme.cc:29
+#: lily-parser-scheme.cc:30
 #, c-format
 msgid "deprecated function called: %s"
-msgstr "función en desuso llamada: %s"
+msgstr "llamada a una función obsoleta: %s"
 
-#: lily-parser-scheme.cc:88
+#: lily-parser-scheme.cc:89
 #, c-format
 msgid "Changing working directory to: `%s'"
-msgstr "Cambiando directorio de trabajo a: `%s'"
+msgstr "Se cambia el directorio de trabajo a:  «%s»"
 
-#: lily-parser-scheme.cc:106
+#: lily-parser-scheme.cc:107
 #, c-format
 msgid "cannot find init file: `%s'"
-msgstr "no puedo encontrar archivo de inicialización: `%s'"
+msgstr "no se encuentra el archivo de inicio: «%s»"
 
-#: lily-parser-scheme.cc:125
+#: lily-parser-scheme.cc:126
 #, c-format
 msgid "Processing `%s'"
-msgstr "Procesando `%s'"
+msgstr "Procesando «%s»"
 
 #: lily-parser.cc:99
 msgid "Parsing..."
@@ -970,14 +996,18 @@ msgstr "Analizando..."
 
 #: lily-parser.cc:127
 msgid "braces do not match"
-msgstr "Llaves no concuerdan"
+msgstr "las llaves no concuerdan"
 
-#: lyric-combine-music-iterator.cc:291
+#: lyric-combine-music-iterator.cc:327
 #, c-format
 msgid "cannot find Voice `%s'"
-msgstr "no se puede encontrar Voice `%s'"
+msgstr "no se encuentra la Voz «%s»"
+
+#: lyric-engraver.cc:158
+msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
+msgstr "La sílaba de la letra no tiene nota. Utilice \\lyricsto o associatedVoice."
 
-#: main.cc:116
+#: main.cc:100
 #, c-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -986,11 +1016,11 @@ msgid ""
 "information.\n"
 msgstr ""
 "Este software es libre. Está protegido por la Licencia Pública\n"
-"General de GNU, y es libre para modificarlo y/o distribuir copias de\n"
-"él bajo ciertas condiciones. Invóquelo como `%s --warranty' para más\n"
-"información.\n"
+"General de GNU, y usted está invitado a modificarlo y/o distribuir copias de\n"
+"él bajo ciertas condiciones. Invóquelo como `%s --warranty' para obtener\n"
+"más información.\n"
 
-#: main.cc:122
+#: main.cc:106
 msgid ""
 "    This program is free software; you can redistribute it and/or\n"
 "modify it under the terms of the GNU General Public License version 2\n"
@@ -1006,284 +1036,260 @@ msgid ""
 "the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
 "Boston, MA 02111-1307, USA.\n"
 msgstr ""
-"    Este programa es libre, puede redistribuirlo y/o \n"
-"modificarlo bajo los términos de la Licencia Públic General GNU versión 2\n"
-"tal como está publicada por la Fundación de Software Libre (FSF).\n"
-"    Este programa se distribuye con la esperanza de que será de utilidad,\n"
-"pero sin NINGUNA CLASE DE GARANTÍA, ni siquiera implicada por COMERCIO o para PROPOSITO PARTICULAR.  Vea la: "
-"Licencia Pública General GNU para más detalles.\n"
-"    Debe haber recibido una copia de la Licencia Públic General GNU con este programa; si no es así, escriba a:\n"
-"Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
+"    This program is free software; you can redistribute it and/or\n"
+"modify it under the terms of the GNU General Public License version 2\n"
+"as published by the Free Software Foundation.\n"
+"\n"
+"    This program is distributed in the hope that it will be useful,\n"
+"but WITHOUT ANY WARRANTY; without even the implied warranty of\n"
+"MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU\n"
+"General Public License for more details.\n"
+"\n"
+"    You should have received a copy of the\n"
+"GNU General Public License along with this program; if not, write to\n"
+"the Free Software Foundation, Inc., 59 Temple Place - Suite 330,\n"
+"Boston, MA 02111-1307, USA.\n"
+"\n"
+"    Este programa es software libre; puede redistribuirlo y/o\n"
+"modificarlo bajo los términos de la versión 2 de la Licencia Pública\n"
+"General de GNU tal y como está publicada por la Free Software Foundation.\n"
+"\n"
+"    Este programa se distribuye con la esperanza de que resulte útil,\n"
+"pero SIN NINGUNA GARANTÍA; ni siquiera con la garantía MERCANTIL\n"
+"ni de CONVENIENCIA PARA UN PROPÓSITO PARTICULAR implícitas\n"
+"Consulte la Licencia Pública General de GNU para ver más detalles\n"
+"    Debería haber recibido una copia de la Licencia Pública General junto con este programa. Si no ha sido así, escriba a la Free Software Foundation, Inc.,\n"
+"59 Temple Place - Suite 330,\n"
 "Boston, MA 02111-1307, USA.\n"
 
-#: main.cc:153
-msgid "BACK"
-msgstr "REGRESAR"
-
-#: main.cc:153
-msgid ""
-"use backend BACK (eps, gnome, ps [default],\n"
-"scm, svg, tex, texstr)"
-msgstr ""
-"usar procesador BACK (eps, gnome, \n"
-"ps [predet], scm, svg, tex, texstr)"
-
-#: main.cc:155
+#: main.cc:137
 msgid "SYM[=VAL]"
-msgstr "SYM[=VAL]"
+msgstr "SÍMBOLO[=VALOR]"
 
-#: main.cc:156
+#: main.cc:138
 msgid ""
-"set Scheme option SYM to VAL (default: #t)\n"
+"set Scheme option SYM to VAL (default: #t).\n"
 "Use -dhelp for help."
 msgstr ""
-"asignando opción Scheme SYM a VAL \n"
-"(por defecto: #t)\n"
+"establecer la opción de Scheme SYM a VAL (por omisión: #t).\n"
 "Use -dhelp para obtener ayuda."
 
-#: main.cc:159
+#: main.cc:141
 msgid "EXPR"
 msgstr "EXPR"
 
-#: main.cc:159
+#: main.cc:141
 msgid "evaluate scheme code"
-msgstr "evaluar código scheme"
+msgstr "evaluar código de Scheme"
 
 #. Bug in option parser: --output =foe is taken as an abbreviation
 #. for --output-format.
-#: main.cc:162
+#: main.cc:144
 msgid "FORMATs"
-msgstr "FORMATOS"
+msgstr "FORMATOs"
 
-#: main.cc:162
+#: main.cc:144
 msgid "dump FORMAT,...  Also as separate options:"
-msgstr ""
-"volcar FORMATO,...  \n"
-"También cómo opciones separadas:"
+msgstr "volcar FORMATO,...  También como opciones separadas:"
 
-#: main.cc:163
+#: main.cc:145
 msgid "generate DVI (tex backend only)"
-msgstr "generar DVI (sólo procesador tex)"
+msgstr "generar salida DVI (sólo para el 'backend' tex)"
 
-#: main.cc:164
+#: main.cc:146
 msgid "generate PDF (default)"
-msgstr "generar salida PDF (predeterminado)"
+msgstr "generar una salida PDF (predeterminado)"
 
-#: main.cc:165
+#: main.cc:147
 msgid "generate PNG"
-msgstr "generar salida PNG"
+msgstr "generar una salida PNG"
 
-#: main.cc:166
+#: main.cc:148
 msgid "generate PostScript"
-msgstr "generar salida PostScript"
+msgstr "generar una salida PostScript"
 
-#: main.cc:167
+#: main.cc:149
 msgid "generate TeX (tex backend only)"
-msgstr "generar TeX (sólo procesador tex)"
+msgstr "generar salida TeX (sólo para el 'backend' tex)"
 
-#: main.cc:168
+#: main.cc:150
 msgid "show this help and exit"
 msgstr "mostrar esta ayuda y salir"
 
-#: main.cc:169
+#: main.cc:151
 msgid "FIELD"
 msgstr "CAMPO"
 
-#: main.cc:169
+#: main.cc:151
 msgid ""
 "dump header field FIELD to file\n"
 "named BASENAME.FIELD"
 msgstr ""
-"vaciar campo de cabecera FIELD a fichero\n"
+"volcar el campo de cabecera FIELD a un archivo\n"
 "llamado BASENAME.FIELD"
 
-#: main.cc:171
+#: main.cc:153
 msgid "add DIR to search path"
 msgstr "añadir DIR a la ruta de búsqueda"
 
-#: main.cc:172
+#: main.cc:154
 msgid "use FILE as init file"
-msgstr "usar FICHERO como fichero de inicialización"
+msgstr "usar FICHERO como archivo de inicialización"
 
-#: main.cc:174
-msgid "USER,GROUP,JAIL,DIR"
-msgstr ""
+#: main.cc:156
+msgid "USER, GROUP, JAIL, DIR"
+msgstr "USUARIO, GRUPO, JAULA, DIRECTORIO"
 
-#: main.cc:174
+#: main.cc:156
 msgid ""
 "chroot to JAIL, become USER:GROUP\n"
 "and cd into DIR"
 msgstr ""
-"chroot a JAIL, convertirse en USER:GROUP\n"
-"y cd en DIR"
+"chroot a JAULA, convertirse en USUARIO:GRUPO\n"
+"y cd al DIRECTORIO"
 
-#: main.cc:177
-msgid "do not generate printed output"
-msgstr "no generar salida de impresión"
-
-#: main.cc:178
+#: main.cc:159
 msgid "write output to FILE (suffix will be added)"
-msgstr ""
-"escribir la salida en FICHERO\n"
-"(añadirá extensión)"
-
-#: main.cc:179
-msgid "generate a preview of the first system"
-msgstr "generar previsualización del primer sistema"
+msgstr "escribir la salida en el ARCHIVO (se añadirá el sufijo)"
 
-#: main.cc:180
+#: main.cc:160
 msgid "relocate using directory of lilypond program"
-msgstr ""
-"relocalice usando directorio del \n"
-"programa lilypond"
-
-#: main.cc:181
-msgid ""
-"disallow unsafe Scheme and PostScript\n"
-"operations"
-msgstr ""
-"evitar operaciones inseguras de Scheme y \n"
-"PostScript"
+msgstr "relolcalizar utilizando el directorio del programa lilypond"
 
-#: main.cc:183
+#: main.cc:161
 msgid "show version number and exit"
-msgstr "mostrar número de versión y salir"
+msgstr "mostrar el número de versión y salir"
 
-#: main.cc:224
+#: main.cc:203
 #, c-format
 msgid ""
 "Copyright (c) %s by\n"
 "%s  and others."
 msgstr ""
-"Copyright (c) %s  por\n"
-"%s  y otros."
+"Copyright (c) %s by\n"
+"%s y otros"
 
 #. No version number or newline here.  It confuses help2man.
-#: main.cc:251
+#: main.cc:230
 #, c-format
 msgid "Usage: %s [OPTION]... FILE..."
-msgstr "Uso: %s [OPCIÓN]... FICHERO..."
+msgstr "Uso: %s [OPCIÓN]... ARCHIVO..."
 
-#: main.cc:253
+#: main.cc:232
 #, c-format
 msgid "Typeset music and/or produce MIDI from FILE."
-msgstr "Grabar música y/o producir MIDI desde FICHERO"
+msgstr "Componer tipocráficamente la música y/o producir MIDI a partir de ARCHIVO."
 
-#: main.cc:255
+#: main.cc:234
 #, c-format
 msgid "LilyPond produces beautiful music notation."
-msgstr "LilyPond produce una hermosa notación musical"
+msgstr "LilyPond produce una notación musical bella y hermosa."
 
-#: main.cc:257
+#: main.cc:236
 #, c-format
 msgid "For more information, see %s"
-msgstr "Para más información, vea %s"
+msgstr "Para ver más información, consulte %s"
 
-#: main.cc:259
+#: main.cc:238
 #, c-format
 msgid "Options:"
-msgstr "Opciones: "
+msgstr "Opciones:"
 
-#: main.cc:263
+#: main.cc:242
 #, c-format
 msgid "Report bugs via %s"
-msgstr "Informe de errores por medio de %s"
+msgstr "Informe de los fallos a %s."
 
-#: main.cc:309
+#: main.cc:288
 #, c-format
 msgid "expected %d arguments with jail, found: %u"
-msgstr "se esperaba(n) %d argumentos con jail, se encontró: %u"
+msgstr "se esperaban %d argumentos con la jaula, se han encontrado: %u"
 
-#: main.cc:323
+#: main.cc:302
 #, c-format
 msgid "no such user: %s"
-msgstr "no hay tal usuario: %s"
+msgstr "no existe el usuario %s"
 
-#: main.cc:325
+#: main.cc:304
 #, c-format
 msgid "cannot get user id from user name: %s: %s"
-msgstr "no puedo obtener id de usuario a partir del nombre: %s: %s"
+msgstr "no se puede obtener el identificador de usuario a partir del nombre: %s: %s"
 
-#: main.cc:340
+#: main.cc:319
 #, c-format
 msgid "no such group: %s"
-msgstr "no hay tal grupo: %s"
+msgstr "no existe este grupo: %s"
 
-#: main.cc:342
+#: main.cc:321
 #, c-format
 msgid "cannot get group id from group name: %s: %s"
-msgstr "imposible obtener id del grupo desde nombre del grupo: %s: %s"
+msgstr "no se puede obtener el id de grupo a partir del nombre: %s: %s"
 
-#: main.cc:350
+#: main.cc:329
 #, c-format
 msgid "cannot chroot to: %s: %s"
 msgstr "no se puede hacer chroot a: %s: %s"
 
-#: main.cc:357
+#: main.cc:336
 #, c-format
 msgid "cannot change group id to: %d: %s"
-msgstr "imposible cambiar id de grupo a: %d: %s"
+msgstr "no se puede cambiar el grupo del usuario a %d: %s"
 
-#: main.cc:363
+#: main.cc:342
 #, c-format
 msgid "cannot change user id to: %d: %s"
-msgstr "imposible cambiar id de usuario a: %d: %s"
+msgstr "no se puede cambiar el identificador de usuario a %d: %s"
 
-#: main.cc:369
+#: main.cc:348
 #, c-format
 msgid "cannot change working directory to: %s: %s"
-msgstr "imposible cambiar directorio de trabajo a: %s: %s"
+msgstr "no se puede cambiar el directorio de trabajo a: %s: %s"
 
-#: main.cc:415
-#, c-format
-msgid "Evaluating %s"
-msgstr "Evaluando %s"
-
-#: main.cc:645
+#: main.cc:594
 #, c-format
 msgid "exception caught: %s"
-msgstr "ocurrió una excepción: %s"
+msgstr "se ha capturado una excepción: %s"
 
 #. FIXME: constant error message.
 #: mark-engraver.cc:154
 msgid "rehearsalMark must have integer value"
-msgstr "rehearsalMark debe tener un valor de entero"
+msgstr "rehearsalMark debe tener un valor entero"
 
 #: mark-engraver.cc:160
 msgid "mark label must be a markup object"
-msgstr "etiqueta mark debe tener un objeto markup"
+msgstr "la etiqueta de marcado debe ser un objeto de marcado"
 
 #: mensural-ligature-engraver.cc:85
 msgid "ligature with less than 2 heads -> skipping"
-msgstr "ligadura con menos de dos notas -> saltando"
+msgstr "ligadura con menos de dos cabezas; se salta"
 
 #: mensural-ligature-engraver.cc:112
 msgid "cannot determine pitch of ligature primitive -> skipping"
-msgstr "no puedo determinar nota de la primitiva de la ligadura -> saltando"
+msgstr "no se puede determinar la altura de la primitiva de ligadura; se salta"
 
 #: mensural-ligature-engraver.cc:126
 msgid "single note ligature - skipping"
-msgstr "ligadura de una sola nota - saltando"
+msgstr "ligadura de una nota; se salta"
 
 #: mensural-ligature-engraver.cc:138
 msgid "prime interval within ligature -> skipping"
-msgstr "intervalo primo dentro de ligadura -> saltando"
+msgstr "intervalo primo dentro de una ligadura; se salta"
 
 #: mensural-ligature-engraver.cc:150
 msgid "mensural ligature: duration none of Mx, L, B, S -> skipping"
-msgstr "duración de ligadura mensural no es una de Mx, L, B o S -> saltando"
+msgstr "ligadura mensural: la duración no es Mx, L, B ni S; se salta"
 
 #: mensural-ligature-engraver.cc:198
 msgid "semibrevis must be followed by another one -> skipping"
-msgstr "semibrevis debe ser seguida de otra igual -> saltando"
+msgstr "la semibreve debe ir seguida por otra -> se salta"
 
 #: mensural-ligature-engraver.cc:209
 msgid ""
 "semibreves can only appear at the beginning of a ligature,\n"
 "and there may be only zero or two of them"
 msgstr ""
-"sólo puede aparecer una semibreve al principio de una ligadura.\n"
-"y sólo puede haber cero o dos de ellas"
+"las semibreves sólo pueden aparecer al principio de una ligadura,\n"
+"y sólo puede haber dos o ninguna"
 
 #: mensural-ligature-engraver.cc:236
 msgid ""
@@ -1292,358 +1298,409 @@ msgid ""
 "the penultimate note must be another one,\n"
 "or the ligatura must be LB or SSB"
 msgstr ""
-"terminación de ligadura inválida:\n"
-"cuando la última nota es una brevis descendente.\n"
-"la penúltima nota debe ser otra igual,\n"
+"finalización inválida de la ligadura:\n"
+"cuando la última nota es una breve descendente,\n"
+"la penúltima nota debe ser otra breve,\n"
 "o la ligadura debe ser LB o SSB"
 
 #: mensural-ligature-engraver.cc:356
 msgid "unexpected case fall-through"
-msgstr "no se contempló este caso"
+msgstr "opción de caso por defecto inesperada"
 
 #: mensural-ligature.cc:141
 msgid "Mensural_ligature: unexpected case fall-through"
-msgstr "Mensural_ligature: no se esperaba caso no contemplado"
+msgstr "Mensural_ligature (ligadura mensural): caso por defecto inesperado"
 
 #: mensural-ligature.cc:192
 msgid "Mensural_ligature: (join_right == 0)"
-msgstr ""
+msgstr "Mensural_ligature (ligadura mensural): (join_right == 0)"
 
-#: midi-item.cc:152
+#: midi-item.cc:81
 #, c-format
 msgid "no such MIDI instrument: `%s'"
-msgstr "no hay tal instrumento MIDI: `%s'"
-
-#: midi-item.cc:285
-#, c-format
-msgid "experimental: temporarily fine tuning (of %d cents) a channel."
-msgstr "experimental: tempralmente afinando (%d) el canal"
+msgstr "no existe este instrumento MIDI: «%s»"
 
 #: midi-stream.cc:28
 #, c-format
 msgid "cannot open for write: %s: %s"
-msgstr "no se puede abrir para escritura: %s: %s"
+msgstr "no se puede abrir el archivo en modo de escritura: %s: %s"
 
 #: midi-stream.cc:44
 #, c-format
 msgid "cannot write to file: `%s'"
-msgstr "imposible escribir al fichero: `%s'"
+msgstr "no se puede escribir el archivo: «%s»"
 
 #: music-iterator.cc:171
 msgid "Sending non-event to context"
-msgstr "Enviando evento nulo a contexto"
+msgstr "Enviando elemento que no es un evento a un contexto"
 
-#: music.cc:141
+#: music.cc:140
 #, c-format
 msgid "octave check failed; expected \"%s\", found: \"%s\""
-msgstr "revisión de octava falló; esperaba \"%s\", encontré: \"%s\""
+msgstr "fallo en la comprobación de octava; se esperaba \"%s\", se ha encontrado: \"%s\""
 
-#: music.cc:207
+#: music.cc:203
 #, c-format
 msgid "transposition by %s makes alteration larger than double"
-msgstr "transposición por %s hace que la alteración sea mayor que doble"
+msgstr "la transposición de %s transforma la alteración en más que doble"
 
 #: new-fingering-engraver.cc:96
 msgid "cannot add text scripts to individual note heads"
-msgstr "no se puede agregar textos a notas individuales"
+msgstr "no se pueden añadir guiones de texto a cabezas de nota individuales"
 
 #: new-fingering-engraver.cc:239
 msgid "no placement found for fingerings"
-msgstr "no se pudo colocar la digitación"
+msgstr "no se ha encontrado ninguna ubicación válida para las digitaciones"
 
 #: new-fingering-engraver.cc:240
 msgid "placing below"
-msgstr "colocando abajo"
+msgstr "se coloca debajo"
 
-#: note-collision.cc:457
+#: note-collision.cc:464
 msgid "ignoring too many clashing note columns"
-msgstr "ignorando demasiadas columnas de notas en conflicto"
+msgstr "demasiadas columnas de notas que chocan entre sí; se ignoran"
 
 #: note-column.cc:124
 msgid "cannot have note heads and rests together on a stem"
-msgstr "no se pueden colocar cabezas de notas y silencios en la misma plica"
+msgstr "no se pueden tener cabezas de nota y silencios en la misma plica"
 
 #: note-head.cc:63
 #, c-format
 msgid "none of note heads `%s' or `%s' found"
-msgstr "ninguna de las notas `%s' o `%s' encontradas"
+msgstr "no se encuentran las cabezas de nota «%s» ni «%s»"
 
-#: note-heads-engraver.cc:61
+#: note-heads-engraver.cc:64
 msgid "NoteEvent without pitch"
-msgstr "Evento de Nota sin tonalidad"
+msgstr "NoteEvent sin altura"
 
 #: open-type-font.cc:33
 #, c-format
 msgid "cannot allocate %lu bytes"
-msgstr "No se puede asignar %lu bytes"
+msgstr "no se peuden reservar %lu bytes"
 
 #: open-type-font.cc:37
 #, c-format
 msgid "cannot load font table: %s"
-msgstr "no se puede cargar tabla de fuentes: %s"
+msgstr "no se puede cargar la tabla de tipografías: %s"
 
-#: open-type-font.cc:98
+#: open-type-font.cc:42
 #, c-format
-msgid "unsupported font format: %s"
-msgstr "formato de fuente no soportado: %s"
+msgid "Free type error: %s"
+msgstr "error de FreeType: %s"
 
 #: open-type-font.cc:100
 #, c-format
-msgid "unknown error: %d reading font file: %s"
-msgstr "error desconocido: %d al leer archivo de fuente: %s"
+msgid "unsupported font format: %s"
+msgstr "formato de tipografía %s no soportado"
 
-#: open-type-font.cc:173 open-type-font.cc:297
+#: open-type-font.cc:102
 #, c-format
-msgid "FT_Get_Glyph_Name() returned error: %u"
-msgstr "FT_Get_Glyph_Name() regresó error: %u"
+msgid "error reading font file %s: %s"
+msgstr "error al leer la tipografía %s: %s"
 
-#: page-turn-page-breaking.cc:205
-msgid ""
-"cannot fit the first page turn onto a single page.  Consider setting first-"
-"page-number to an even number."
-msgstr "no puedo ajustar primer vuelta de página a una sóla página.  Considere asignar primero un número par para la primer página."
+#: open-type-font.cc:177
+#, c-format
+msgid "FT_Get_Glyph_Name () Freetype error: %s"
+msgstr "error de Freetype en FT_Get_Glyph_Name (): %s"
+
+#: open-type-font.cc:302 pango-font.cc:167
+#, c-format
+msgid "FT_Get_Glyph_Name () error: %s"
+msgstr "error en FT_Get_Glyph_Name (): %s"
 
-#: page-turn-page-breaking.cc:218
+#: page-turn-page-breaking.cc:146
+#, c-format
+msgid "page-turn-page-breaking: breaking from %d to %d"
+msgstr "page-turn-page-breaking: saltando desde %d hasta %d"
+
+#: page-turn-page-breaking.cc:195
+msgid "cannot fit the first page turn onto a single page.  Consider setting first-page-number to an even number."
+msgstr "no se puede ajustar la primera vuelta de página en una página única. Considere la posibilidad de establecer first-page-number a un número par."
+
+#: page-turn-page-breaking.cc:208
 #, c-format
 msgid "Calculating page and line breaks (%d possible page breaks)..."
-msgstr "Calculando paginación y cortes de línea (%d posibles cortes de página)"
+msgstr "Calculando los saltos de página y de línea (%d saltos de página posibles)..."
 
-#: page-turn-page-breaking.cc:236 paper-score.cc:154
+#: page-turn-page-breaking.cc:226 paper-score.cc:146
 msgid "Drawing systems..."
-msgstr "Creando sistemas..."
+msgstr "Dibujando los sistemas..."
+
+#: page-turn-page-breaking.cc:275
+#, c-format
+msgid "break starting at page %d"
+msgstr "el salto comienza en la página %d"
+
+#: page-turn-page-breaking.cc:276
+#, c-format
+msgid "\tdemerits: %f"
+msgstr "\tdemerits: %f"
+
+#: page-turn-page-breaking.cc:277
+#, c-format
+msgid "\tsystem count: %d"
+msgstr "número total de \tsystem: %d"
+
+#: page-turn-page-breaking.cc:278
+#, c-format
+msgid "\tpage count: %d"
+msgstr "número total de \tpage: %d"
+
+#: page-turn-page-breaking.cc:279
+#, c-format
+msgid "\tprevious break: %d"
+msgstr "\tsalto anterior: %d"
 
-#: pango-font.cc:181
+#: pango-font.cc:184
 #, c-format
 msgid ""
 "Glyph has no name, but font supports glyph naming.\n"
 "Skipping glyph U+%0X, file %s"
 msgstr ""
-"El glifo no tiene nombre, pero la fuente soporta el nombrado de glifos.\n"
-"Saltando glifo U+%0X, archivo %s"
+"El glifo no tiene nombre, pero la tipografía soporta nombres de glifo.\n"
+"Se salta el glifo U+%0X, archivo %s"
 
-#: pango-font.cc:224
+#: pango-font.cc:229
 #, c-format
 msgid "no PostScript font name for font `%s'"
-msgstr "no existe esa fuente PostScript: `%s'"
+msgstr "no hay un nombre de tipografía PostScript para «%s»"
 
-#: pango-font.cc:272
+#: pango-font.cc:277
 msgid "FreeType face has no PostScript font name"
-msgstr "Fuente FreeType no tiene un nombre de fuente PostScript"
+msgstr "El tipo FreeType no tiene un nombre de tipografía PostScript"
+
+#: paper-column-engraver.cc:199
+msgid "forced break was overridden by some other event, should you be using bar checks?"
+msgstr "el salto forzado ha sido sobreestablecido por algún otro evento, ¿quizá deba usar comprobaciones de compás?"
 
-#: paper-outputter-scheme.cc:33
+#: paper-outputter-scheme.cc:30
 #, c-format
 msgid "Layout output to `%s'..."
-msgstr "Diseño de página generado en `%s'..."
+msgstr "Salida de la página hacia «%s»..."
 
 #: paper-score.cc:105
 msgid "Calculating line breaks..."
-msgstr "Calculando cortes de línea..."
+msgstr "Calculando los saltos de línea..."
 
 #: paper-score.cc:118
 #, c-format
 msgid "Element count %d (spanners %d) "
-msgstr "Elementos contados %d (spanners %d) "
+msgstr "Cantidad de elementos: %d (trazadores: %d)"
 
 #: paper-score.cc:122
 msgid "Preprocessing graphical objects..."
-msgstr "Preprocesando objetos gráficos..."
+msgstr "Preprocesando los objetos gráficos..."
 
-#: parse-scm.cc:83
+#: parse-scm.cc:87
 msgid "GUILE signaled an error for the expression beginning here"
-msgstr "GUILE señaló un error para la expresión iniciada aquí"
+msgstr "GUILE ha señalado un error para la expresión que comienza aquí"
 
 #: percent-repeat-engraver.cc:200
 msgid "unterminated percent repeat"
 msgstr "repetición de porcentaje sin terminar"
 
-#: performance.cc:45
+#: performance.cc:43
 msgid "Track..."
-msgstr "Pista..."
+msgstr "Pista ... "
 
-#: performance.cc:74
+#: performance.cc:72
 msgid "MIDI channel wrapped around"
-msgstr "Se envolvió al canal MIDI"
+msgstr "ha dado la vuelta el número de canal MIDI"
 
-#: performance.cc:75
+#: performance.cc:73
 msgid "remapping modulo 16"
-msgstr "remapeando modulo 16"
+msgstr "se reasigna módulo 16"
 
-#: performance.cc:103
+#: performance.cc:101
 #, c-format
 msgid "MIDI output to `%s'..."
-msgstr "Salida MIDI a `%s'..."
+msgstr "Salida MIDI hacia «%s»..."
 
-#: phrasing-slur-engraver.cc:146
+#: phrasing-slur-engraver.cc:131
 msgid "unterminated phrasing slur"
-msgstr "ligadura de praseo no terminada"
+msgstr "ligadura de fraseo sin terminar"
 
 #: piano-pedal-engraver.cc:286
 #, c-format
 msgid "expect 3 strings for piano pedals, found: %ld"
-msgstr "esperaba tres cadenas de texto para pedales de piano, se encontraron: %ld"
+msgstr "se eseperaban 3 cadenas para los pedales de piano, se han encontrado: %ld"
 
 #: piano-pedal-engraver.cc:301 piano-pedal-engraver.cc:312
 #: piano-pedal-performer.cc:93
 #, c-format
 msgid "cannot find start of piano pedal: `%s'"
-msgstr "No se encuentra pedal de piano inicial: `%s'"
+msgstr "no se encuentra el comienzo del pedal de piano «%s»"
 
 #: piano-pedal-engraver.cc:347
 #, c-format
 msgid "cannot find start of piano pedal bracket: `%s'"
-msgstr "no se encuentra el principio del pedal: `%s'"
+msgstr "no se encuentra el comienzo del corchete de pedal de piano «%s»"
 
-#: program-option.cc:205
+#: program-option-scheme.cc:207
 #, c-format
 msgid "no such internal option: %s"
-msgstr "no existe esa opción: %s"
+msgstr "no existe la opción interna %s"
 
 #: property-iterator.cc:74
 #, c-format
 msgid "not a grob name, `%s'"
-msgstr "No es un nombre de elemento, `%s'"
+msgstr "no es un nombre de objeto gráfico: «%s»"
 
 #: relative-octave-check.cc:38
 msgid "Failed octave check, got: "
-msgstr "Falló la revisión de octava, se obtuvo: "
+msgstr "La comprobación de octaba ha fallado, se ha obtenido: "
 
 #: relocate.cc:44
 #, c-format
 msgid "Setting %s to %s"
-msgstr "Asignando %s a %s"
+msgstr "Se establece %s a %s"
 
-#: relocate.cc:59
+#: relocate.cc:64
 #, c-format
 msgid "no such file: %s for %s"
-msgstr "no hay tal archivo: %s para %s"
+msgstr "no existe el archivo: %s para %s"
 
-#: relocate.cc:69 relocate.cc:87
+#: relocate.cc:74 relocate.cc:92
 #, c-format
 msgid "no such directory: %s for %s"
-msgstr "no existe el directorio: %s para %s"
+msgstr "no existe este directorio: %s para %s"
 
-#: relocate.cc:79
+#: relocate.cc:84
 #, c-format
 msgid "%s=%s (prepend)\n"
-msgstr ""
+msgstr "%s=%s (prefijar)\n"
 
-#: relocate.cc:99
+#: relocate.cc:114
 #, c-format
-msgid "Relocation: compile prefix=%s, new prefix=%s"
-msgstr "Relocación: prefijo de compilación=%s, nuevo prefijo=%s"
+msgid "not relocating, no %s/ or current/ found under %s"
+msgstr "no se relocaliza, no se ha encontrado %s/ ni current/ bajo %s"
 
-#: relocate.cc:129
+#: relocate.cc:125
+#, c-format
+msgid "Relocation: compile datadir=%s, new datadir=%s"
+msgstr "Relocalización: en la compilación datadir=%s, el nuevo datadir=%s"
+
+#: relocate.cc:138
 #, c-format
 msgid "Relocation: framework_prefix=%s"
-msgstr "Relocación: framework_prefix=%s"
+msgstr "Relocalización: framework_prefix=%s"
 
-#: relocate.cc:169
+#: relocate.cc:179
 #, c-format
 msgid "Relocation: is absolute: argv0=%s"
-msgstr "Relocación: es absoluta: argv0=%s"
+msgstr "Relocalización: es absoluto: argv0=%s"
 
-#: relocate.cc:176
+#: relocate.cc:186
 #, c-format
 msgid "Relocation: from cwd: argv0=%s"
-msgstr "Relocación: desde cwd: argv0=%s"
+msgstr "Relocalización: desde cwd: argv0=%s"
 
-#: relocate.cc:185
+#: relocate.cc:195
 #, c-format
 msgid ""
 "Relocation: from PATH=%s\n"
 "argv0=%s"
 msgstr ""
-"Relocación: desde TRAYECTO=%s\n"
+"Relocalización: desde PATH=%s\n"
 "argv0=%s"
 
-#: relocate.cc:354
+#: relocate.cc:229
+msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
+msgstr "LILYPONDPREFIX está obsoleto, utilice LILYPOND_DATADIR"
+
+#: relocate.cc:357
 #, c-format
 msgid "Relocation file: %s"
-msgstr "Archivo de relocación: %s"
+msgstr "Archivo de relocalización: %s"
 
-#: relocate.cc:390
+#: relocate.cc:393
 #, c-format
 msgid "Unknown relocation command %s"
-msgstr "Comando de relocación desconocido: %s"
+msgstr "instrucción de relocalización %s desconocida"
 
-#: rest-collision.cc:151
+#: rest-collision.cc:145
 msgid "cannot resolve rest collision: rest direction not set"
-msgstr "no puedo resolver colisión de silencios: no se fijó dirección de silencio"
+msgstr "no se puede resolver la colisión de los silencios: la dirección de los silencios no se ha establecido"
 
-#: rest-collision.cc:165 rest-collision.cc:210
+#: rest-collision.cc:159 rest-collision.cc:204
 msgid "too many colliding rests"
 msgstr "demasiados silencios en colisión"
 
-#: rest.cc:144
+#: rest.cc:132
 #, c-format
 msgid "rest `%s' not found"
-msgstr "silencio `%s' no encontrado"
+msgstr "no se ha encontrado el silencio «%s»"
 
 #: score-engraver.cc:67
 #, c-format
 msgid "cannot find `%s'"
-msgstr "imposible encontrar: `%s'"
+msgstr "No se encuentra «%s»"
 
 #: score-engraver.cc:69
 msgid "Music font has not been installed properly."
-msgstr "La fuente de música no ha sido instalada correctamente"
+msgstr "La tipografía de música no se ha instalado correctamente."
 
 #: score-engraver.cc:71
 #, c-format
 msgid "Search path `%s'"
-msgstr "Ruta de búsqueda: `%s'"
+msgstr "Ruta de búsqueda «%s»"
 
 #: score-engraver.cc:73
 msgid "Aborting"
 msgstr "Abortando"
 
-#: score.cc:225
+#: score.cc:167
 msgid "already have music in score"
-msgstr "debe existir música en la partitura"
+msgstr "ya tiene música en la partitura"
 
-#: score.cc:226
+#: score.cc:168
 msgid "this is the previous music"
-msgstr "esta es la música previa"
+msgstr "esta es la música precedente"
 
-#: score.cc:231
+#: score.cc:173
 msgid "errors found, ignoring music expression"
-msgstr "se encontraron errores, ignorando expresión musical"
+msgstr "se han encontrado errores, se ignora la expresión musical"
 
 #. FIXME:
 #: script-engraver.cc:102
 msgid "do not know how to interpret articulation: "
-msgstr "no se sabe como interpretar la articulación `%s'"
+msgstr "no sabemos cómo interpretar la articulación:"
 
 #: script-engraver.cc:103
 msgid "scheme encoding: "
-msgstr "codificación scheme"
+msgstr "codificación de Scheme: "
 
-#: simple-spacer.cc:375
-#, c-format
-msgid "No spring between column %d and next one"
-msgstr "No hay separación entre la columna %d y la siguiente"
-
-#: slur-engraver.cc:83 tuplet-engraver.cc:75
+#: slur-engraver.cc:82
 #, c-format
 msgid "direction of %s invalid: %d"
-msgstr "dirección de %s es inválida: %d"
+msgstr "dirección inválida de %s: %d"
 
-#: slur-engraver.cc:157
+#: slur-engraver.cc:151
 msgid "unterminated slur"
-msgstr "ligadura sin terminar"
+msgstr "ligadura de expresión sin terminar"
 
-#: slur-engraver.cc:166
+#: slur-engraver.cc:163
 msgid "cannot end slur"
-msgstr "no se puede terminar frase"
+msgstr "no se puede terminar la ligadura de expresión"
+
+#: slur.cc:355
+#, c-format
+msgid "Ignoring grob for slur: %s. avoid-slur not set?"
+msgstr "Se ignora el objeto gráfico para la ligadura: %s. ¿No está establecido avoid-slur?"
 
 #: source-file.cc:74
 #, c-format
 msgid "expected to read %d characters, got %d"
-msgstr "se esperaba leer %d caracteres, se obtuvieron %d"
+msgstr "se esperaba leer %d caracteres, se han obtenido %d"
+
+#: spaceable-grob.cc:117
+#, c-format
+msgid "No spring between column %d and next one"
+msgstr "No hay separación entre la columna %d y la siguiente"
 
 #: staff-symbol-engraver.cc:62
 msgid "staff-span event has no direction"
-msgstr "evento de 'staff-span' sin idirección"
+msgstr "el evento staff-span no tiene dirección"
 
 #: stem-engraver.cc:92
 msgid "tremolo duration is too long"
@@ -1653,51 +1710,51 @@ msgstr "la duración del trémolo es demasiado larga"
 #: stem-engraver.cc:129
 #, c-format
 msgid "adding note head to incompatible stem (type = %d)"
-msgstr "añadiendo cabeza de nota a plica incompatible (tipo = %d)"
+msgstr "añadiendo cabeza de nota a una plica incompatible (tipo = %d)"
 
 #: stem-engraver.cc:131
 msgid "maybe input should specify polyphonic voices"
-msgstr "Quizás la entrada deba especificar voces polifónicas"
+msgstr "quizá la entrada debiera especificar voces polifónicas"
 
 #: stem.cc:105
 msgid "weird stem size, check for narrow beams"
-msgstr "longitud extraña de plica, revisando barras angostas"
+msgstr "tamaño de plica extraño, compruebe que no haya barras estrechas"
 
-#: stem.cc:641
+#: stem.cc:618
 #, c-format
 msgid "flag `%s' not found"
-msgstr "bandera `%s' no encontrada"
+msgstr "no se encuentra el indicador «%s»"
 
-#: stem.cc:652
+#: stem.cc:629
 #, c-format
 msgid "flag stroke `%s' not found"
-msgstr "flag stroke `%s' no encontrada"
+msgstr "no se encuentra el impacto «%s» de indicador"
 
 #: system.cc:180
 #, c-format
 msgid "Element count %d."
-msgstr "Elementos contados %d."
+msgstr "Número total de elementos %d."
 
-#: system.cc:276
+#: system.cc:266
 #, c-format
 msgid "Grob count %d"
-msgstr "Elementos contados %d"
+msgstr "Número de objetos gráficos: %d"
 
-#: text-spanner-engraver.cc:61
+#: text-spanner-engraver.cc:60
 msgid "cannot find start of text spanner"
-msgstr "no se puede encontrar inicio de spanner de texto"
+msgstr "no se encuentra el principio del trazador de texto"
 
-#: text-spanner-engraver.cc:73
+#: text-spanner-engraver.cc:72
 msgid "already have a text spanner"
-msgstr "ya hay un spanner de texto"
+msgstr "ya hay un trazador de texto"
 
-#: text-spanner-engraver.cc:133
+#: text-spanner-engraver.cc:118
 msgid "unterminated text spanner"
-msgstr "spanner de texto sin terminar"
+msgstr "trazador de texto sin terminar"
 
-#: tie-engraver.cc:264
+#: tie-engraver.cc:267
 msgid "lonely tie"
-msgstr "ligadura solitaria"
+msgstr "ligadura de unión solitaria"
 
 #.
 #. Todo: should make typecheck?
@@ -1707,141 +1764,150 @@ msgstr "ligadura solitaria"
 #: time-signature-engraver.cc:64
 #, c-format
 msgid "strange time signature found: %d/%d"
-msgstr "se encontró un compás extraño: %d/%d"
+msgstr "se ha encontrado una indicación extraña de compás: %d/%d"
 
 #. If there is no such symbol, we default to the numbered style.
 #. (Here really with a warning!)
 #: time-signature.cc:83
 #, c-format
 msgid "time signature symbol `%s' not found; reverting to numbered style"
-msgstr "no se encontró un símbolo de compás `%s'; revirtiendo a estilo numerado"
+msgstr "no se encuentra el símbolo de compás «%s»; se vuelve al estilo numerado"
 
 #: translator-ctors.cc:52
 #, c-format
 msgid "unknown translator: `%s'"
-msgstr "traductor desconocido: `%s'"
+msgstr "traductor desconocido: «%s»"
+
+#: translator-group-ctors.cc:29
+#, c-format
+msgid "fatal error. Couldn't find type: %s"
+msgstr "error fatal. No se ha encontrado el tipo: %s"
 
-#: translator-group.cc:151
+#: translator-group.cc:146
 #, c-format
 msgid "cannot find: `%s'"
-msgstr "no se puede encontrar: `%s'"
+msgstr "no se encuentra «%s»"
 
-#: translator.cc:332
+#: translator.cc:346
 #, c-format
 msgid "Two simultaneous %s events, junking this one"
-msgstr "Dos eventos %s simultáneos, descartando este"
+msgstr "Dos eventos %s simultáneos, se recorta éste"
 
-#: translator.cc:333
+#: translator.cc:347
 #, c-format
 msgid "Previous %s event here"
-msgstr "Evento %s previo aquí"
+msgstr "El evento %s previo está aquí"
 
-#: trill-spanner-engraver.cc:68
+#: trill-spanner-engraver.cc:67
 msgid "cannot find start of trill spanner"
-msgstr "no se encuentra el inicio del trino"
+msgstr "no se encuentra el principio del trazador de trino"
 
-#: trill-spanner-engraver.cc:80
+#: trill-spanner-engraver.cc:79
 msgid "already have a trill spanner"
-msgstr "ya hay un trino"
+msgstr "ya tiene un trazador de trino"
+
+#: tuplet-engraver.cc:96
+msgid "No tuplet to end"
+msgstr "no hay ningún grupo especial que terminar"
 
 #: vaticana-ligature-engraver.cc:388
 #, c-format
-msgid ""
-"ignored prefix (es) `%s' of this head according to restrictions of the "
-"selected ligature style"
-msgstr "se ignora prefijo(s) `%s' de esta nota de acuerdo a las restricciones de estilo de ligadura seleccionada"
+msgid "ignored prefix (es) `%s' of this head according to restrictions of the selected ligature style"
+msgstr "prefijo(s) «%s» de esta cabeza ignorado(s) de acuerdo con las restricciones del estilo de ligadura seleccionado"
 
 #: vaticana-ligature-engraver.cc:714
 #, c-format
 msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul"
-msgstr "Vaticana_ligature_engraver: asignando `spacing-increment = %f': ptr =%ul"
+msgstr "Vaticana_ligature_engraver: se establece `spacing-increment = %f': ptr =%ul"
 
 #: vaticana-ligature.cc:84
 msgid "flexa-height undefined; assuming 0"
-msgstr "flexa-height no definida, se asume 0"
+msgstr "la altura flexa-height no está definida; se supone que es 0"
 
 #: vaticana-ligature.cc:89
 msgid "ascending vaticana style flexa"
-msgstr "estilo ascendente vaticana flexa"
+msgstr "flexa ascendente de estilo vaticana"
 
 #: vaticana-ligature.cc:177
 msgid "Vaticana_ligature: zero join (delta_pitch == 0)"
-msgstr "Vaticana_ligature: unión cero join (delta_pitch == 0)"
+msgstr "Vaticana_ligature: unión nula (delta_pitch == 0)"
 
 #. fixme: be more verbose.
-#: volta-engraver.cc:144
+#: volta-engraver.cc:143
 msgid "cannot end volta spanner"
-msgstr "no se encuentra en final de la repetición"
+msgstr "no se puede terminar el trazador de volta"
 
-#: volta-engraver.cc:154
+#: volta-engraver.cc:153
 msgid "already have a volta spanner, ending that one prematurely"
-msgstr "ya existe un spanner de volta, terminando este de forma prematura"
+msgstr "ya hay un trazador de volta, se acaba éste de forma prematura"
 
-#: volta-engraver.cc:158
+# also...?
+#: volta-engraver.cc:157
 msgid "also already have an ended spanner"
-msgstr "ya hay un final de volta"
+msgstr "ya hay un trazador finalizado"
 
-#: volta-engraver.cc:159
+#: volta-engraver.cc:158
 msgid "giving up"
-msgstr "Abandonando"
+msgstr "abandonando"
 
-#: parser.yy:702
+#: parser.yy:704
 msgid "\\paper cannot be used in \\score, use \\layout instead"
-msgstr "\\paper no puede ser usado en \\score, mejor use \\layout"
+msgstr "no se puede usar \\paper dentro de \\score, utilice \\layout en su lugar"
 
-#: parser.yy:726
+#: parser.yy:728
 msgid "need \\paper for paper block"
-msgstr "se requiere \\paper para la sección paper"
+msgstr "es necesario \\paper para el bloque 'paper'"
 
-#: parser.yy:1172
+#: parser.yy:1187
 msgid "Grob name should be alphanumeric"
-msgstr "El nombre del elemento debe ser alfanumérico"
+msgstr "El nombre del objeto gráfico ha de ser alfanumérico"
 
-#: parser.yy:1475
+#: parser.yy:1485
 msgid "second argument must be pitch list"
-msgstr "El segundo argumento debe ser una lista de tonos"
+msgstr "el segundo argumento debe ser una lista de notas"
 
-#: parser.yy:1502 parser.yy:1507 parser.yy:1972
+#: parser.yy:1512 parser.yy:1517 parser.yy:1982
 msgid "have to be in Lyric mode for lyrics"
-msgstr "Debe estar en modo Lyric para letra"
+msgstr "para la letra se debe estar en el modo Lyric"
 
-#: parser.yy:1604
+#: parser.yy:1614
 msgid "expecting string as script definition"
-msgstr "esperando una cadena de texto como definición del script"
+msgstr "se espera una cadena como definición del guión"
 
-#: parser.yy:1759 parser.yy:1809
+#: parser.yy:1769 parser.yy:1819
 #, c-format
 msgid "not a duration: %d"
 msgstr "no es una duración: %d"
 
-#: parser.yy:1926
+#: parser.yy:1936
 msgid "have to be in Note mode for notes"
-msgstr "debe estar en modo de Note para notas"
+msgstr "para las notas se debe estar en el modo Note"
 
-#: parser.yy:1987
+#: parser.yy:1997
 msgid "have to be in Chord mode for chords"
-msgstr "debe estar en modo Chord para acordes"
+msgstr "para los acordes se debe estar en el modo Chord"
 
+# stray?
 #: lexer.ll:176
 msgid "stray UTF-8 BOM encountered"
-msgstr "se encontró caracter UTF-8 BOM aislado"
+msgstr "se ha encontrado una marca BOM de UTF-8 extraña"
 
 #: lexer.ll:180
 msgid "Skipping UTF-8 BOM"
-msgstr "Saltando UTF-8 BOM"
+msgstr "Se salta el BOM de UTF-8"
 
 #: lexer.ll:235
 #, c-format
 msgid "Renaming input to: `%s'"
-msgstr "Renombrando entrada a: `%s'"
+msgstr "Renombrando la entrada a: «%s»"
 
 #: lexer.ll:252
 msgid "quoted string expected after \\version"
-msgstr "se esperaba cadena entre comillas después de \\version"
+msgstr "se esperaba una cadena entre comillas después de \\version"
 
 #: lexer.ll:256
 msgid "quoted string expected after \\sourcefilename"
-msgstr "se esperaba cadena entre comillas después de \\sourcefilename"
+msgstr "se esperaba una cadena entre comillas después de \\sourcefilename"
 
 #: lexer.ll:260
 msgid "integer expected after \\sourcefileline"
@@ -1849,138 +1915,138 @@ msgstr "se esperaba un entero después de \\sourcefileline"
 
 #: lexer.ll:273
 msgid "EOF found inside a comment"
-msgstr "Se encontró FIN de FICHERO dentro de un comentario"
+msgstr "se ha encontrado EOF (fin de archivo) dentro de un comentario"
 
 #: lexer.ll:288
 msgid "\\maininput not allowed outside init files"
-msgstr "\\maininput no es permitido fuera de los archivos de incicialización"
+msgstr "no se permite \\maininput fuera de los archivos de inicio"
 
 #: lexer.ll:312
 #, c-format
 msgid "wrong or undefined identifier: `%s'"
-msgstr "identificativo equivocado o no definido: `%s'"
+msgstr "identificativo equivocado o no definido: «%s»"
 
 #. backup rule
 #: lexer.ll:321
 msgid "end quote missing"
-msgstr "comillas de cierre faltantes"
+msgstr "faltan las comillas de cierre"
 
 #: lexer.ll:466
 msgid "Brace found at end of lyric.  Did you forget a space?"
-msgstr "Se encontró un corchete al final de una letra. ¿Olvidó poner espacio?"
+msgstr "Se ha encontrado una llave al final de la letra. ¿Olvidó un espacio?"
 
 #: lexer.ll:559
 msgid "Brace found at end of markup.  Did you forget a space?"
-msgstr "Se encontró un corchete al final de un markup. ¿Olvidó poner espacio?"
+msgstr "Se ha encontrado una llave al final del marcado, ¿Olvidó un espacio?"
 
-#: lexer.ll:659
+#: lexer.ll:663
 #, c-format
 msgid "invalid character: `%c'"
-msgstr "carácter no válido: `%c'"
+msgstr "carácter no válido: «%c»"
 
-#: lexer.ll:774 lexer.ll:775
+#: lexer.ll:778
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr "cadena de escape desconocida: `\\%s'"
 
-#: lexer.ll:880 lexer.ll:881
+#: lexer.ll:884
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
-msgstr "versión de archivo demasiado vieja: %s (más antigua soportada: %s)"
+msgstr "archivo demasiado antiguo: %s (el más antiguo que se puede tratar es: %s)"
 
-#: lexer.ll:881 lexer.ll:882
+#: lexer.ll:885
 msgid "consider updating the input with the convert-ly script"
-msgstr "considere actualizar la entrada con el script convert-ly"
+msgstr "considere la actualización de la entrada mediante el guión (script) convert-ly"
 
-#: lexer.ll:887 lexer.ll:888
+#: lexer.ll:891
 #, c-format
 msgid "program too old: %s (file requires: %s)"
-msgstr "programa demasiado viejo: %s (archivo requiere: %s)"
+msgstr "el programa es demasiado antiguo: %s (el archivo necesita: %s)"
 
-#: backend-library.scm:19 lily.scm:599 ps-to-png.scm:82
+#: backend-library.scm:19 lily.scm:752 ps-to-png.scm:58
 #, scheme-format
 msgid "Invoking `~a'..."
-msgstr "Invocando `~a'..."
+msgstr "Invocando «~a»..."
 
-#: backend-library.scm:24
+#: backend-library.scm:28
 #, scheme-format
 msgid "`~a' failed (~a)"
-msgstr "`~a' falló (~a)"
+msgstr "«~a» ha fallado (~a)"
 
-#: backend-library.scm:95 framework-tex.scm:343 framework-tex.scm:368
+#: backend-library.scm:115 framework-tex.scm:343 framework-tex.scm:368
 #, scheme-format
 msgid "Converting to `~a'..."
-msgstr "Convirtiendo a `~a'..."
+msgstr "Convirtiendo en «~a»..."
 
-#: backend-library.scm:108
+#: backend-library.scm:128
 #, scheme-format
 msgid "Converting to ~a..."
-msgstr "Convirtiendo a ~a..."
+msgstr "Convirtiendo en ~a..."
 
-#: backend-library.scm:145
+#: backend-library.scm:166
 #, scheme-format
 msgid "Writing header field `~a' to `~a'..."
-msgstr "Escribiendo el campo de cabecera `~a' to `~a'..."
+msgstr "Escribiendo el campo de encabezamiento «~a» en «~a»..."
 
 #: define-context-properties.scm:20 define-grob-properties.scm:10
 #: define-music-properties.scm:10
 #, scheme-format
 msgid "symbol ~S redefined"
-msgstr "símbolo ~S redefinido"
+msgstr "redefinido el símbolo ~S"
 
 #: define-event-classes.scm:119
 #, scheme-format
 msgid "event class ~A seems to be unused"
-msgstr "evento de clase ~A parece no ser usado"
+msgstr "parece que la clase de evento ~A está sin usar"
 
 #. should be programming-error
 #: define-event-classes.scm:125
 #, scheme-format
 msgid "translator listens to nonexisting event class ~A"
-msgstr "traductor escucha a un evento de clase inexistente ~A"
+msgstr "el traductor está escuchando a una clase de evento ~A que no existe"
 
-#: define-markup-commands.scm:255
+#: define-markup-commands.scm:273
 msgid "no systems found in \\score markup, does it have a \\layout block?"
-msgstr "No se encontraron sistemas en el bloque \\score, tiene un bloque de \\layout?"
+msgstr "no se ha encontrado ningún sistema en el marcado \\score, ¿tiene un bloque \\layout?"
 
-#: define-markup-commands.scm:1297
+#: define-markup-commands.scm:1315
 #, scheme-format
 msgid "not a valid duration string: ~a"
-msgstr "no representa una duración válida: ~a"
+msgstr "no es una cadena válida de duración: ~a"
 
-#: define-music-types.scm:751
+#: define-music-types.scm:743
 #, scheme-format
 msgid "symbol expected: ~S"
-msgstr "se esperaba un símbolo:~S"
+msgstr "se esperaba un símbolo: ~S"
 
-#: define-music-types.scm:754
+#: define-music-types.scm:746
 #, scheme-format
 msgid "cannot find music object: ~S"
-msgstr "no se encuentra objeto musical: ~S"
+msgstr "no se encuentra el objeto musical ~S"
 
-#: define-music-types.scm:774
+#: define-music-types.scm:766
 #, scheme-format
 msgid "unknown repeat type `~S'"
-msgstr "tipo de repetición desconocido `~S'"
+msgstr "tipo de repetición «~S» desconocido"
 
-#: define-music-types.scm:775
+#: define-music-types.scm:767
 msgid "See music-types.scm for supported repeats"
-msgstr "Vea music-types.scp para repeticiones soportadas"
+msgstr "Consulte el archivo music-types.scm para ver los tipos de repetición soportados"
 
 #: document-backend.scm:91
 #, scheme-format
 msgid "pair expected in doc ~s"
-msgstr "se esperaba un par en doc ~s"
+msgstr "se esperaba una pareja en el documento ~s"
 
 #: document-backend.scm:135
 #, scheme-format
 msgid "cannot find interface for property: ~S"
-msgstr "no se encuentra interface para la propiedad: ~S"
+msgstr "no se encuentra un interface para la propiedad ~S"
 
 #: document-backend.scm:145
 #, scheme-format
 msgid "unknown Grob interface: ~S"
-msgstr "Interface de elemento desconocida: ~S"
+msgstr "interfaz de Objeto gráfico desconocido: ~S"
 
 #: documentation-lib.scm:45
 #, scheme-format
@@ -1995,217 +2061,557 @@ msgstr "Escribiendo ~S..."
 #: documentation-lib.scm:172
 #, scheme-format
 msgid "cannot find description for property ~S (~S)"
-msgstr "no se encuentra la descripción para la propiedad ~S(~S)"
+msgstr "no se encuentra la descripción de la propiedad ~S (~S)"
 
-#: framework-eps.scm:91 framework-eps.scm:92
+#: framework-eps.scm:89
 #, scheme-format
 msgid "Writing ~a..."
-msgstr "Escribiendo ~a..."
+msgstr "Escribiendo «~a»..."
 
-#: framework-ps.scm:279
+#: framework-ps.scm:281
 #, scheme-format
 msgid "cannot embed ~S=~S"
 msgstr "no se puede empotrar ~S=~S"
 
-#: framework-ps.scm:332
+#: framework-ps.scm:334
 #, scheme-format
 msgid "cannot extract file matching ~a from ~a"
-msgstr "no se puede extraer archivo que concuerde ~a desde ~a"
+msgstr "no se puede extraer la coincidencia de archivos ~a a partir de ~a"
 
-#: framework-ps.scm:349
+#: framework-ps.scm:351
 #, scheme-format
 msgid "do not know how to embed ~S=~S"
-msgstr "se ignora como empotrar ~S=~S"
+msgstr "no sabemos cómo empotrar ~S=~S"
 
-#: framework-ps.scm:380
+#: framework-ps.scm:382
 #, scheme-format
 msgid "do not know how to embed font ~s ~s ~s"
-msgstr "no se sabe como empotrar la fuente ~s ~s ~s"
+msgstr "no sabemos cómo empotrar la tipografía ~s ~s ~s"
 
-#: framework-ps.scm:729
+#: framework-ps.scm:731
 #, scheme-format
 msgid "cannot convert <stdout> to ~S"
 msgstr "no se puede convertir <stdout> a ~S"
 
-#: framework-ps.scm:748 framework-ps.scm:751
+#: framework-ps.scm:750 framework-ps.scm:753
 #, scheme-format
 msgid "cannot generate ~S using the postscript back-end"
-msgstr "no se puede generar ~S usando el backend postscript"
+msgstr "no se puede generar ~S usando el back-end de postscript"
 
-#: framework-ps.scm:758
+#: framework-ps.scm:760
 msgid ""
 "\n"
-"The PostScript backend does not support the 'classic'\n"
-"framework. Use the EPS backend instead,\n"
+"The PostScript backend does not support the system-by-system \n"
+"output. For that, use the EPS backend instead,\n"
 "\n"
 "  lilypond -b eps <file>\n"
 "\n"
-"or remove the lilypond-book specific settings from the input.\n"
+"If have cut & pasted a lilypond fragment from a webpage, be sure\n"
+"to only remove anything before\n"
+"\n"
+"  %% ****************************************************************\n"
+"  %% Start cut-&-pastable-section\n"
+"  %% ****************************************************************\n"
+"\n"
 msgstr ""
 "\n"
-"El procesador PostScript no soporta la infraestructura 'clásica'.\n"
-"Use el procesador EPS en su lugar.\n"
-"  lilipond -b eps <archivo>\n"
-"\\ "
-"o elimine sintaxis específicas de lilypond-book de la entrada.\n"
+"El 'backend' de PostScript no soporta la salida sistema a sistema.\n"
+"Para ello, use en su lugar el 'backend' EPS,\n"
+"\n"
+"  lilypond -b eps <archivo>\n"
+"\n"
+"Si ha copiado y pegado un fragmento de lilypond desde una página web,\n"
+"asegúrese de quitar solamente lo que esté antes de\n"
+"\n"
+"  %% ****************************************************************\n"
+"  %% Start cut-&-pastable-section\n"
+"  %% ****************************************************************\n"
+"\n"
 
 #: framework-tex.scm:360
 #, scheme-format
 msgid "TeX file name must not contain whitespace: `~a'"
-msgstr "El nombre del archivo TeX no puede contener espacios: `~a'"
+msgstr "El nombre del archivo de TeX no debe contener espacios: «~a»"
+
+#: graphviz.scm:53
+#, scheme-format
+msgid "Writing graph `~a'..."
+msgstr "Escribiendo el gráfico «~a»..."
 
 #: layout-beam.scm:29
 #, scheme-format
 msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
-msgstr "Error en cuantizado de barras. Esperaba (~S,~S) se encontró ~S"
+msgstr "Error en la cuantización de la barra.  Se esperaba (~S,~S), se ha encontrado ~S."
 
 #: layout-beam.scm:46
 #, scheme-format
 msgid "Error in beam quanting.  Expected ~S 0, found ~S."
-msgstr "Error en cuantizado de barras. Esperaba ~S 0, se encontró ~S"
+msgstr "Error en la cuantización de la barra.  Se esperaba ~S 0, se ha encontrado ~S."
 
-#: layout-page-layout.scm:357
+#: layout-page-layout.scm:115
+msgid "Can't fit systems on page -- ignoring between-system-padding"
+msgstr "No se pueden dar cabida a todos los sistemas en la página; se ignora between-system-padding"
+
+#: layout-page-layout.scm:449
 msgid "Calculating page breaks..."
-msgstr "Calculando cortes de página..."
+msgstr "Calculando saltos de página..."
 
-#: lily-library.scm:593
+#: lily-library.scm:545
 #, scheme-format
 msgid "unknown unit: ~S"
-msgstr "unidad desconocida: ~S"
+msgstr "unidad desconocida: ~S "
 
-#: lily-library.scm:626
+#: lily-library.scm:579
 #, scheme-format
 msgid "no \\version statement found, please add~afor future compatibility"
-msgstr "no se encontró enunciado \\version, por favor añáda ~a para compatibilidad futura."
+msgstr "no se ha encontrado ninguna instrucción \\version, escriba~apara disponer de compatibilidad en el futuro"
 
-#: lily-library.scm:633
+#: lily-library.scm:587
 msgid "old relative compatibility not used"
-msgstr "old relative: compatibilidad anitgua no se usó"
+msgstr "no se ha usado la compatibilidad con el modo relativo antiguo"
 
-#: lily.scm:144
+#: lily.scm:173
 #, scheme-format
 msgid "cannot find: ~A"
-msgstr "no se puede encontrar: ~A"
+msgstr "no se encuentra: ~A"
 
-#: lily.scm:209
+#: lily.scm:238
 #, scheme-format
 msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
-msgstr "argumento erróneo ~a.  Se esperaba ~a, se encontró ~s"
+msgstr "tipo equivocado para el argumento ~a.  Se esperaba ~a, se encontró ~s"
+
+#: lily.scm:619
+#, scheme-format
+msgid "job ~a terminated with signal: ~a"
+msgstr "la tarea ~a ha terminado con la señal: ~a"
 
-#: lily.scm:525 lily.scm:589
+#: lily.scm:622
+#, scheme-format
+msgid ""
+"logfile ~a (exit ~a):\n"
+"~a"
+msgstr ""
+"archivo de registro ~a (salida ~a):\n"
+"~a"
+
+#: lily.scm:649 lily.scm:742
 #, scheme-format
 msgid "failed files: ~S"
-msgstr "se falló en los archivos: ~S"
+msgstr "archivos que han fallado: ~S"
 
-#: lily.scm:579
+#: lily.scm:732
 #, scheme-format
 msgid "Redirecting output to ~a..."
-msgstr "Redirigiendo salida a ~a..."
+msgstr "Redirigiendo la salida hacia ~a..."
 
 #: ly-syntax-constructors.scm:40
 msgid "Music head function must return Music object"
-msgstr "Función de cabecera de Music debe regresar un objeto Music."
+msgstr "La función principal de música debe devolver un objeto musical"
 
-#: ly-syntax-constructors.scm:136
+#: ly-syntax-constructors.scm:139
 #, scheme-format
 msgid "Invalid property operation ~a"
-msgstr "Operación de propiedad inválida ~a"
+msgstr "Operación de propiedad ~a inválida"
 
-#: markup.scm:123
+#: markup.scm:94
 #, scheme-format
 msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
-msgstr "Cantidad errónea de argumentos.  Esperaba: ~A, se encontró ~A: ~S"
+msgstr "Número de agumentos equivocado.  Se esperaban: ~A, se han encontrado ~A: ~S"
 
-#: markup.scm:129
+#: markup.scm:100
 #, scheme-format
 msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
-msgstr "Argumento erróneo en la posición ~A. .Esperaba: ~A, se encontró: ~S"
+msgstr "Argumento inválido en la posición ~A.  Se esperaba: ~A, se ha encontrado: ~S."
 
-#: music-functions.scm:213
+#: music-functions.scm:228
 msgid "More alternatives than repeats.  Junking excess alternatives"
-msgstr "Más alternativas que repeticiones.  Descartando alternativas excedentes."
+msgstr "Hay más alternativas que repeticiones.  Se recortan las alternativas excedentes"
 
-#: music-functions.scm:232
+#: music-functions.scm:250
 #, scheme-format
 msgid "expecting 2 elements for chord tremolo, found ~a"
-msgstr "se esperaban dos elementos den trémolo de acorde, se encontró ~a"
+msgstr "se esperaban 2 elementos para el tremolo de acorde, se han encontrado ~a"
 
-#: music-functions.scm:538
+#: music-functions.scm:573
 #, scheme-format
 msgid "music expected: ~S"
-msgstr "se esperaba música: ~S"
+msgstr "se esperaba algo de música: ~S"
 
 #. FIXME: uncomprehensable message
-#: music-functions.scm:589
+#: music-functions.scm:623
 #, scheme-format
 msgid "Bar check failed.  Expect to be at ~a, instead at ~a"
-msgstr "Revisión de compases falló. Esperaba estar en ~a, en vez de ~a "
+msgstr "Ha fallado la comprobación de compás.  Se esperaba que estuviera en ~a, en lugar de en ~a"
 
-#: music-functions.scm:748
+#: music-functions.scm:773
 #, scheme-format
 msgid "cannot find quoted music: `~S'"
-msgstr "no se encuentra la música: `~S'"
+msgstr "no se encuentra la música citada: «~S»"
 
-#: music-functions.scm:942
+#: music-functions.scm:970
 #, scheme-format
 msgid "unknown accidental style: ~S"
-msgstr "estilo desconocido de accidentes: ~S"
+msgstr "estilo de alteración ~S desconocido"
 
-#: output-ps.scm:315
+#: output-ps.scm:276
 msgid "utf-8-string encountered in PS backend"
-msgstr "se encontró una cadena utf-8 en el procesador PS"
+msgstr "se ha encontrado una cadena UTF-8 en el 'backend' de PostScript"
 
 #: output-svg.scm:42
 #, scheme-format
 msgid "undefined: ~S"
-msgstr "indefinido: ~S"
+msgstr "no definido: ~S"
 
 #: output-svg.scm:132
 #, scheme-format
 msgid "cannot decypher Pango description: ~a"
-msgstr "no puedo descifrar descripción Pango: ~a"
+msgstr "no se puede descifrar la descripción de Pango: ~a"
 
-#: output-tex.scm:98
+#: output-tex.scm:97
 #, scheme-format
 msgid "cannot find ~a in ~a"
-msgstr "no se puede enconrtar ~a en ~a"
+msgstr "no se encuentra ~a dentro de ~a"
 
-#: paper.scm:69
-msgid "Not in toplevel scope"
-msgstr "No en el ámbito superior"
+#: paper.scm:84
+msgid "set-global-staff-size: not in toplevel scope"
+msgstr "set-global-staff-size: no está en el ámbito de nivel más alto"
 
-#: paper.scm:117
+#: paper.scm:132
 #, scheme-format
 msgid "This is not a \\layout {} object, ~S"
-msgstr "Este no es un objeto \\layout{}, ~S"
+msgstr "Esto no es un objeto de \\layout {} , ~S"
 
-#: paper.scm:129
+#: paper.scm:144
 #, scheme-format
 msgid "Unknown papersize: ~a"
-msgstr "papersize (tamaño de papel) desconocido: ~a"
+msgstr "Tamaño de papel desconocido: ~a"
 
 #. TODO: should raise (generic) exception with throw, and catch
 #. that in parse-scm.cc
-#: paper.scm:144
+#: paper.scm:159
 msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
 msgstr "Debe usar #(set-paper-size .. ) dentro de \\paper { ... }"
 
-#: parser-clef.scm:126
+#: parser-clef.scm:127
 #, scheme-format
 msgid "unknown clef type `~a'"
-msgstr "tipo de clave desconocida `~a'"
+msgstr "tipo de clave desconocido: «~a» "
 
-#: parser-clef.scm:127
-msgid "see scm/clef.scm for supported clefs"
-msgstr "vea scm/clef.scm para las claves soportadas"
+#: parser-clef.scm:128
+#, scheme-format
+msgid "supported clefs: ~a"
+msgstr "claves soportadas: ~a"
 
-#: ps-to-png.scm:88
+#: ps-to-png.scm:64
 #, scheme-format
 msgid "~a exited with status: ~S"
-msgstr "~a terminó con estado: ~S"
+msgstr "~a salió con el estado: ~S"
 
-#: to-xml.scm:190
+#: to-xml.scm:180
 #, scheme-format
 msgid "assertion failed: ~S"
-msgstr "declaración falló: ~S"
+msgstr "el aserto no se cumple: ~S"
+
+#~ msgid "lilylib module"
+#~ msgstr "módulo lilylib"
+
+#~ msgid "print this help"
+#~ msgstr "mostrar esta ayuda"
+
+#~ msgid "Binary %s has version %s, looking for version %s"
+#~ msgstr "El binario %s tiene la versión %s, buscando la versión %s"
+
+#~ msgid "`%s' failed (%s)"
+#~ msgstr "`%s' ha fallado (%s)"
+
+#~ msgid "(ignored)"
+#~ msgstr "(ignorado)"
+
+#~ msgid "Cleaning %s..."
+#~ msgstr "Limpiando %s..."
+
+#~ msgid "Removing output file"
+#~ msgstr "Eliminando el fichero de salida"
+
+#~ msgid ""
+#~ "Process LilyPond snippets in hybrid HTML, LaTeX or texinfo document.\n"
+#~ "Example usage:\n"
+#~ "\n"
+#~ "   lilypond-book --filter=\"tr '[a-z]' '[A-Z]'\" BOOK\n"
+#~ "   lilypond-book --filter=\"convert-ly --no-version --from=2.0.0 -\" BOOK\n"
+#~ "   lilypond-book --process='lilypond-bin -I include' BOOK\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Procesar los fragmentos LilyPond en un documento híbrido HTML, LaTeX o TexInfo.\n"
+#~ "Ejemplos de uso:\n"
+#~ "\n"
+#~ "   lilypond-book --filter=\"tr '[a-z]' '[A-Z]'\" LIBRO\n"
+#~ "   lilypond-book --filter=\"convert-ly --no-version --from=2.0.0 -\" LIBRO\n"
+#~ "   lilypond-book --process='lilypond-bin -I include' LIBRO\n"
+#~ "\n"
+
+#~ msgid "EXT"
+#~ msgstr "EXT"
+
+#~ msgid "print version information"
+#~ msgstr "mostrar el número de versión"
+
+#~ msgid "getopt says: `%s'"
+#~ msgstr "getopt dice: «%s»"
+
+#~ msgid "Run LilyPond, add titles, generate printable document."
+#~ msgstr "Ejecutar LilyPond, añadir títulos y generar un documento imprimible."
+
+#~ msgid "write Makefile dependencies for every input file"
+#~ msgstr "escribir las dependencias de Makefile de cada fichero de entrada"
+
+#~ msgid "print even more output"
+#~ msgstr "mostrar incluso más salida"
+
+#~ msgid "find pfa fonts used in FILE"
+#~ msgstr "buscar los tipos de letra pfa utilizados en el FICHERO"
+
+#~ msgid "make HTML file with links to all output"
+#~ msgstr "genear un fichero HTML con enlaces a todas las salidas"
+
+#~ msgid "add DIR to LilyPond's search path"
+#~ msgstr "añadir el DIRECTORIO a la ruta de búsqueda de LilyPond"
+
+#~ msgid "keep all output, output to directory %s.dir"
+#~ msgstr "conservar todas las salidas en el directorio %s.dir"
+
+#~ msgid "don't run LilyPond"
+#~ msgstr "no ejecutar LilyPond"
+
+#~ msgid "produce MIDI output only"
+#~ msgstr "producir solamente una salida MIDI"
+
+#~ msgid "RES"
+#~ msgstr "RES"
+
+#~ msgid "set the resolution of the preview to RES"
+#~ msgstr "establecer esta RESOLUCIÓN para la previsualización"
+
+#~ msgid "do not generate PDF output"
+#~ msgstr "no generar una salida PDF"
+
+#~ msgid "do not generate PostScript output"
+#~ msgstr "no generar una salida PostScript"
+
+#~ msgid "use pdflatex to generate PDF output"
+#~ msgstr "utilizar pdflatex para generar la salida en PDF"
+
+#~ msgid "generate PNG page images"
+#~ msgstr "generar imágenes PNG de las páginas"
+
+#~ msgid "make a picture of the first system"
+#~ msgstr "crear una imagen del primer sistema"
+
+#~ msgid "run in safe-mode"
+#~ msgstr "ejecutar en modo seguro"
+
+#~ msgid "change global setting KEY to VAL"
+#~ msgstr "cambiar la opción global CLAVE a VALOR"
+
+#~ msgid "LilyPond crashed (signal %d)."
+#~ msgstr "LilyPond se ha colgado (señal %d)."
+
+#~ msgid "Please submit a bug report to bug-lilypond@gnu.org"
+#~ msgstr "Por favor, envíe un informe de fallo a bug-lilypond@gnu.org"
+
+#~ msgid "LilyPond failed on input file %s (exit status %d)"
+#~ msgstr "Fallo de LilyPond con el fichero de entrada %s (status de salida %d)"
+
+#~ msgid "LilyPond failed on an input file (exit status %d)"
+#~ msgstr "Fallo de LilyPond con un fichero de entrada (estado de salida %d)"
+
+#~ msgid "Analyzing %s..."
+#~ msgstr "Analizando %s..."
+
+#~ msgid "no LilyPond output found for `%s'"
+#~ msgstr "no se ha encontrado ninguna salida de lilypond para «%s»"
+
+#~ msgid "invalid value: `%s'"
+#~ msgstr "valor no válido: «%s»"
+
+#~ msgid "LaTeX failed on the output file."
+#~ msgstr "Fallo de LaTeX con el fichero de salida."
+
+#~ msgid ""
+#~ "Trying create PDF, but no PFA fonts found.\n"
+#~ "Using bitmap fonts instead. This will look bad."
+#~ msgstr ""
+#~ "Intentando crear un PDF, pero no se han encontrado tipos de letra PFA.\n"
+#~ "Se usan en su lugar tipos de letra en mapa de bits. El aspecto no será bueno."
+
+#~ msgid "Writing HTML menu `%s'"
+#~ msgstr "Escribiendo el menú HTML «%s»"
+
+#~ msgid "pseudo filter"
+#~ msgstr "pseudo filtro"
+
+#~ msgid "pseudo filter only for single input file"
+#~ msgstr "pseudo filtro solamente para fichero de entrada único"
+
+#~ msgid "no files specified on command line"
+#~ msgstr "no se ha especificado ningún fichero en la línea de mandatos"
+
+#~ msgid "Running LilyPond failed. Rerun with --verbose for a trace."
+#~ msgstr "Fallo de ejecución de LilyPond. Vuelva a ejecutarlo con --verbose para obtener una traza."
+
+#~ msgid "Failed to make PS file. Rerun with --verbose for a trace."
+#~ msgstr "Se ha producido un fallo al generar el fichero PS. Vuelva a ejecutarlo con --verbose para obtener una traza."
+
+#~ msgid "Running LaTeX failed. Rerun with --verbose for a trace."
+#~ msgstr "La ejecución de LaTeX ha fallado. Vuelva a ejecutarlo con --verbose para obtener una traza."
+
+#~ msgid "%s output to <stdout>..."
+#~ msgstr "%s salida hacia <stdout>..."
+
+#~ msgid "%s output to %s..."
+#~ msgstr "%s salida hacia %s..."
+
+#~ msgid "can't find file: `%s.%s'"
+#~ msgstr "no se puede encontrar el fichero: «%s.%s»"
+
+#~ msgid "Convert MIDI to LilyPond source."
+#~ msgstr "Convertir MIDI a fuente LilyPond."
+
+#~ msgid "debug"
+#~ msgstr "depurar"
+
+#~ msgid "define macro NAME [optional expansion EXP]"
+#~ msgstr "define la macro NOMBRE [expansión opcional EXP]"
+
+#~ msgid "only pre-process"
+#~ msgstr "solamente preprocesar"
+
+#~ msgid "DIM"
+#~ msgstr "DIM"
+
+#~ msgid "default fontsize for music.  DIM is assumed to be in points"
+#~ msgstr "tamaño del tipo de letra predeterminado para música. Se da por hecho que DIM está en puntos"
+
+#~ msgid "deprecated, use --default-music-fontsize"
+#~ msgstr "obsoleto, utilice --default-music-fontsize"
+
+#~ msgid "OPT"
+#~ msgstr "OPC"
+
+#~ msgid "pass OPT quoted to the lilypond command line"
+#~ msgstr "pasar OPC entrecomillado a la línea de mandatos de lilypond"
+
+#~ msgid "force fontsize for all inline lilypond. DIM is assumed to be in points"
+#~ msgstr "forzar el tamaño del tipo de letra para todo el lilypond incorporado. Se da por hecho que DIM está en puntos"
+
+#~ msgid "deprecated, use --force-music-fontsize"
+#~ msgstr "obsoleto, utilice --force-music-fontsize"
+
+#~ msgid "include path"
+#~ msgstr "incluir la ruta"
+
+#~ msgid "write dependencies"
+#~ msgstr "escribir las dependencias"
+
+#~ msgid "PREF"
+#~ msgstr "PREF"
+
+#~ msgid "prepend PREF before each -M dependency"
+#~ msgstr "añadir el prefijo PREF a cada dependencia -M"
+
+#~ msgid "don't run lilypond"
+#~ msgstr "no ejecutar lilypond"
+
+#~ msgid "don't generate pictures"
+#~ msgstr "no generar imágenes"
+
+#~ msgid "strip all lilypond blocks from output"
+#~ msgstr "eliminar todos los bloques lilypond de la salida"
+
+#~ msgid "filename main output file"
+#~ msgstr "nombre del fichero de salida principal"
+
+#~ msgid "where to place generated files"
+#~ msgstr "donde colocar los ficheros generados"
+
+#~ msgid "LaTeX failed."
+#~ msgstr "LaTeX ha fallado."
+
+#~ msgid "checksum mismatch for font file: `%s'"
+#~ msgstr "suma de control no acorde para el fichero de fuentes: `%s'"
+
+#, fuzzy
+#~ msgid "Rebuild all .afm files, and remove all .pk and .tfm files."
+#~ msgstr "Reconstruir todos los ficheros .afm, y borrar todos los ficheros .pk y .tfm. Re-ejecutar con la opción -V para mostrar las rutas de las fuentes."
+
+#~ msgid "Loading default font"
+#~ msgstr "Cargando la fuente por defecto"
+
+#~ msgid "can't find default font: `%s'"
+#~ msgstr "no puedo encontrar la fuente por defecto: `%s'"
+
+#~ msgid "Can't switch translators, I'm there already"
+#~ msgstr "No puedo pasar de un traductor al otro, ya estoy allí"
+
+#~ msgid "I'm one myself"
+#~ msgstr "Yo mismo soy uno"
+
+#~ msgid "no one to print a tremolos"
+#~ msgstr "ninguno para la impresión de trémolos"
+
+#~ msgid "NaN"
+#~ msgstr "NaN"
+
+#, fuzzy
+#~ msgid "Junking event: `%s'"
+#~ msgstr "Invocando `%s'"
+
+#~ msgid "no one to print a repeat brace"
+#~ msgstr "ninguno para la impresión de llaves repetidas"
+
+#~ msgid "non fatal error: "
+#~ msgstr "error no fatal: "
+
+#, fuzzy
+#~ msgid "Now processing `%s'"
+#~ msgstr "Ahora en proceso: `%s'"
+
+#, fuzzy
+#~ msgid "kpathsea can not find TFM file: `%s'"
+#~ msgstr "no puedo encontrar el fichero: `%s'"
+
+#, fuzzy
+#~ msgid "use output format EXT"
+#~ msgstr "utilizar el formato de salida EXT (scm, ps, tex o as) "
+
+#, fuzzy
+#~ msgid "write Makefile dependencies"
+#~ msgstr "crear las dependencias para Makefile de cada fichero de entrada"
+
+#~ msgid "prepend DIR to dependencies"
+#~ msgstr "añadir el prefijo DIR a las dependencias"
+
+#~ msgid "Creator: "
+#~ msgstr "Creador: "
+
+#, fuzzy
+#~ msgid "at "
+#~ msgstr ", en "
+
+#~ msgid "Separation_item:  I've been drinking too much"
+#~ msgstr "Separation_item: He bebido demasiado"
+
+#~ msgid "Huh?  Got %d, expected %d characters"
+#~ msgstr "¿Eh? Se han obtenido %d caracteres, cuando se esperaban %d"
+
+#, fuzzy
+#~ msgid "Identifier should have alphabetic characters only"
+#~ msgstr "El identificativo debería contener solamente caracteres alfabéticos"
+
+#, fuzzy
+#~ msgid "Can't find music"
+#~ msgstr "no se puede encontrar: `%s'"
 
+#, fuzzy
+#~ msgid "Incorrect lilypond version: %s (%s, %s)"
+#~ msgstr "versión de lilypond incorrecta: %s (%s, %s)"
index 1ec73c63b144e20085a923daebf4108e927b3d89..8edc74bc82c68fad71b1cde74bf918ef293c99e1 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
 msgid ""
 msgstr ""
 "Project-Id-Version: lilypond 2.11.22\n"
-"Report-Msgid-Bugs-To: \n"
-"POT-Creation-Date: 2007-05-29 14:39+0200\n"
-"PO-Revision-Date: 2007-05-31 14:10+0200\n"
+"Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
+"POT-Creation-Date: 2007-04-28 12:03+0200\n"
+"PO-Revision-Date: 2007-05-29 15:01+0200\n"
 "Last-Translator: Jan Nieuwenhuizen <janneke@gnu.org>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Date: 2001-05-09 23:29+0200\n"
 "From:  <janneke@gnu.org>\n"
-"Xgettext-Options: --c++ --default-domain=lilypond --join --output-dir=../po "
-"--add-comments --keyword=_\n"
+"Xgettext-Options: --c++ --default-domain=lilypond --join --output-dir=../po --add-comments --keyword=_\n"
 "Files: bow.cc int.cc\n"
 
-#: add_html_footer.py:46
-#, python-format
-msgid "This page is for %(package_name)s-%(package_version)s (%(branch_str)s)."
-msgstr ""
-"Deze pagina is voor %(package_name)s-%(package_version)s (%(branch_str)s)."
-
-#: add_html_footer.py:47
-#, python-format
-msgid "Report errors to <a href=\"%(mail_address_url)s\">%(mail_address)s</a>."
-msgstr ""
-"Meld fouten naar <a href=\\\"%(mail_address_url)s\\\">%(mail_address)s</a>."
-
-#: add_html_footer.py:54
-#, python-format
-msgid "Other languages: %s."
-msgstr "Andere talen: %s."
-
-#: add_html_footer.py:55
-#, python-format
-msgid "About <A HREF=\"%s\">automatic language selection</A>."
-msgstr "Gebruik van <A HREF=\\\"%s\\\">automatische taalkeuze</A>."
-
-#: add_html_footer.py:238
-msgid "stable-branch"
-msgstr "stabiele tak"
-
-#: add_html_footer.py:240
-msgid "development-branch"
-msgstr "ontwikkel tak"
-
-#. All language information needed for documentation i18n is defined
-#. here. For each 'Documentation/ab' directory containing docs
-#. translated in 'ab', there should be an entry in LANGUAGES.
-#: langdefs.py:37
-msgid "English"
-msgstr "Engels"
-
-#: langdefs.py:51
-msgid "French"
-msgstr "Frans"
-
-#: langdefs.py:52
-msgid "Spanish"
-msgstr "Spaans"
-
-#: langdefs.py:53
-msgid "German"
-msgstr "Duits"
-
 #: convertrules.py:12
 #, python-format
 msgid "Not smart enough to convert %s"
@@ -112,7 +62,7 @@ msgstr "Scannen %s"
 #: fontextract.py:71
 #, python-format
 msgid "Extracted %s"
-msgstr "Geëxtraheerd %s"
+msgstr "Geëxtraheerd %s"
 
 #: fontextract.py:86
 #, python-format
@@ -165,8 +115,7 @@ msgstr "behoud ABC's notie van waardestrepen"
 msgid "Report bugs via"
 msgstr ""
 "Meld fouten in het programma via %;\n"
-"meld onjuistheden in de vertaling aan <janneke@gnu.org> of <hanwen@xs4all."
-"nl>."
+"meld onjuistheden in de vertaling aan <janneke@gnu.org> of <hanwen@xs4all.nl>."
 
 #: convert-ly.py:32
 msgid ""
@@ -257,8 +206,7 @@ msgstr "%s [OPTIE]... ETF-BESTAND"
 #: etf2ly.py:1182
 msgid ""
 "Enigma Transport Format is a format used by Coda Music Technology's\n"
-"Finale product.  etf2ly converts a subset of ETF to a ready-to-use LilyPond "
-"file."
+"Finale product.  etf2ly converts a subset of ETF to a ready-to-use LilyPond file."
 msgstr ""
 "Enigma Transport Format is een format dat wordt gebruikt door Coda\n"
 "Music Technology's Finale produkt.  Dit programma converteert een\n"
@@ -273,11 +221,8 @@ msgid "show warranty and copyright"
 msgstr "toon garantie en auteursrechten"
 
 #: lilypond-book.py:57
-msgid ""
-"Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document."
-msgstr ""
-"Verwerk LilyPond snippers in hybride HTML, LaTeX, texinfo of DocBook "
-"dokument."
+msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document."
+msgstr "Verwerk LilyPond snippers in hybride HTML, LaTeX, texinfo of DocBook dokument."
 
 #: lilypond-book.py:64
 msgid "BOOK"
@@ -302,11 +247,8 @@ msgid "pipe snippets through FILTER [convert-ly -n -]"
 msgstr "pijp snippers door FILTER [convert-ly -n -]"
 
 #: lilypond-book.py:120
-msgid ""
-"use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
-msgstr ""
-"gebruik uitvoerformat FORMAT (texi [standaard], texi-html, latex, html, "
-"docbook)"
+msgid "use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
+msgstr "gebruik uitvoerformat FORMAT (texi [standaard], texi-html, latex, html, docbook)"
 
 #: lilypond-book.py:123
 msgid "add DIR to include path"
@@ -468,7 +410,7 @@ msgstr "DVIPS gebruik:"
 msgid "Writing fonts to %s..."
 msgstr "Schrijven van fonts naar %s"
 
-#: midi2ly.py:95 lily-library.scm:612 lily-library.scm:621
+#: midi2ly.py:95 lily-library.scm:577 lily-library.scm:586
 msgid "warning: "
 msgstr "waarschuwing: "
 
@@ -478,7 +420,7 @@ msgstr "fout: "
 
 #: midi2ly.py:99
 msgid "Exiting ... "
-msgstr "Beëidigen ..."
+msgstr "Beëidigen ..."
 
 #: midi2ly.py:846
 #, python-format
@@ -618,8 +560,7 @@ msgstr "herstelteken vorm niet gevonden"
 
 #: align-interface.cc:322
 msgid "tried to get a translation for something that is no child of mine"
-msgstr ""
-"probeerde een verplaatsing te verkrijgen voor iets wat geen kind van mij is"
+msgstr "probeerde een verplaatsing te verkrijgen voor iets wat geen kind van mij is"
 
 #: all-font-metrics.cc:143
 #, c-format
@@ -647,11 +588,13 @@ msgstr "zijn er twee Axis_group_engravers?"
 msgid "removing this vertical group"
 msgstr "verwijder deze verticale groep"
 
-#: axis-group-interface.cc:505
+#: axis-group-interface.cc:109
+msgid "tried to calculate pure-height at a non-breakpoint"
+msgstr "probeerde pure-hoogte te berekenen op een niet-breekpunt"
+
+#: axis-group-interface.cc:449
 msgid "an outside-staff object should have a direction, defaulting to up"
-msgstr ""
-"een buiten-notenbalk object moet een richting hebben, gebruik "
-"standaardwaarde omhoog"
+msgstr "een buiten-notenbalk object moet een richting hebben, gebruik standaardwaarde omhoog"
 
 #: bar-check-iterator.cc:73
 #, c-format
@@ -664,7 +607,7 @@ msgstr "heb al een waardestreep"
 
 #: beam-engraver.cc:202
 msgid "unterminated beam"
-msgstr "onbeëindigde waardestreep"
+msgstr "onbeëindigde waardestreep"
 
 #: beam-engraver.cc:244 chord-tremolo-engraver.cc:138
 msgid "stem must have Rhythmic structure"
@@ -688,14 +631,12 @@ msgstr "verwijderen van waardestreep zonder stokken"
 
 #: beam.cc:1035
 msgid "no viable initial configuration found: may not find good beam slope"
-msgstr ""
-"geen werkbare initiële configuratie gevonden: kan wellicht geen goede "
-"waardestreephelling kunnen vinden"
+msgstr "geen werkbare initiële configuratie gevonden: kan wellicht geen goede waardestreephelling kunnen vinden"
 
 #: break-alignment-interface.cc:195
 #, c-format
 msgid "No spacing entry from %s to `%s'"
-msgstr "Geen spatiëringswaarde van %s naar`%s'"
+msgstr "Geen spatiëringswaarde van %s naar`%s'"
 
 #: change-iterator.cc:23
 #, c-format
@@ -724,11 +665,11 @@ msgstr "geen van deze in mijn gezin"
 
 #: chord-tremolo-engraver.cc:88
 msgid "No tremolo to end"
-msgstr "Geen tremolo om te beëindigen"
+msgstr "Geen tremolo om te beëindigen"
 
 #: chord-tremolo-engraver.cc:110
 msgid "unterminated chord tremolo"
-msgstr "onbeëindigd akkoordtremolo"
+msgstr "onbeëindigd akkoordtremolo"
 
 #: chord-tremolo-iterator.cc:35
 #, c-format
@@ -825,11 +766,11 @@ msgstr "cresc is hier gestart"
 
 #: dynamic-engraver.cc:327
 msgid "unterminated (de)crescendo"
-msgstr "onbeëindigd (de)crescendo"
+msgstr "onbeëindigd (de)crescendo"
 
 #: extender-engraver.cc:142 extender-engraver.cc:151
 msgid "unterminated extender"
-msgstr "onbeëindigde extender"
+msgstr "onbeëindigde extender"
 
 #: font-config.cc:28
 msgid "Initializing FontConfig..."
@@ -852,7 +793,7 @@ msgstr "toevoegen van font map: %s"
 
 #: general-scheme.cc:198
 msgid "infinity or NaN encountered while converting Real number"
-msgstr "oneindig of NaN tegengekomen tijdens converteren van Reëel getal"
+msgstr "oneindig of NaN tegengekomen tijdens converteren van Reëel getal"
 
 #: general-scheme.cc:199
 msgid "setting to zero"
@@ -864,7 +805,7 @@ msgstr "Oneindig of nan gevonden in uitvoer.  Vervangen door 0.0"
 
 #: glissando-engraver.cc:94
 msgid "unterminated glissando"
-msgstr "onbeëindigde glissando"
+msgstr "onbeëindigde glissando"
 
 #: global-context-scheme.cc:87 global-context-scheme.cc:105
 msgid "no music found in score"
@@ -917,9 +858,7 @@ msgstr "%d: %s"
 #: grob-property.cc:174
 #, c-format
 msgid "cyclic dependency: calculation-in-progress encountered for #'%s (%s)"
-msgstr ""
-"circulaire afhankelijkheid: calculation-in-progress tegengekomen voor #'%s (%"
-"s)"
+msgstr "circulaire afhankelijkheid: calculation-in-progress tegengekomen voor #'%s (%s)"
 
 #: grob.cc:251
 msgid "Infinity or NaN encountered"
@@ -929,6 +868,10 @@ msgstr "Oneindig of NaN tegengekomen"
 msgid "decrescendo too small"
 msgstr "decrescendo te klein"
 
+#: hairpin.cc:188
+msgid "crescendo too small"
+msgstr "crescendo te klein"
+
 #: horizontal-bracket-engraver.cc:59
 msgid "do not have that many brackets"
 msgstr "zoveel haken heb ik niet"
@@ -986,7 +929,7 @@ msgstr "geen linkerkant"
 
 #: ligature-engraver.cc:173
 msgid "unterminated ligature"
-msgstr "onbeëindigde ligatuur"
+msgstr "onbeëindigde ligatuur"
 
 #: ligature-engraver.cc:202
 msgid "ignoring rest: ligature may not contain rest"
@@ -1068,9 +1011,7 @@ msgstr "kan Voice niet vinden: `%s'"
 
 #: lyric-engraver.cc:158
 msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
-msgstr ""
-"Liedtekst lettergreep heeft geen noot.  Gebruik \\lyricsto of "
-"associatedVoice."
+msgstr "Liedtekst lettergreep heeft geen noot.  Gebruik \\lyricsto of associatedVoice."
 
 #: main.cc:100
 #, c-format
@@ -1468,29 +1409,13 @@ msgstr "FT_Get_Glyph_Name () Freetype fout: %s"
 msgid "FT_Get_Glyph_Name () error: %s"
 msgstr "FT_Get_Glyph_Name () fout: %s"
 
-#. find out the ideal number of pages
-#: optimal-page-breaking.cc:44
-msgid "Finding the ideal number of pages..."
-msgstr "Zoeken naar het ideale aantal pagina's..."
-
-#: optimal-page-breaking.cc:59
-msgid "Fitting music on 1 page..."
-msgstr "Muziek passend maken op 1 pagina..."
-
-#: optimal-page-breaking.cc:61
-#, c-format
-msgid "Fitting music on %d or %d pages..."
-msgstr "Muziek passend maken op %d of %d pagina's..."
-
 #: page-turn-page-breaking.cc:146
 #, c-format
 msgid "page-turn-page-breaking: breaking from %d to %d"
 msgstr "page-turn-page-breaking: afbreken van %d naar %d"
 
 #: page-turn-page-breaking.cc:195
-msgid ""
-"cannot fit the first page turn onto a single page.  Consider setting first-"
-"page-number to an even number."
+msgid "cannot fit the first page turn onto a single page.  Consider setting first-page-number to an even number."
 msgstr ""
 "kan de eerste paginaomslag niet op eerste pagina gepast krijgen.  Overweeg\n"
 "first-page-number op een even getal te zetten."
@@ -1547,13 +1472,10 @@ msgstr "geen PostScript fontnaam voor font: `%s'"
 msgid "FreeType face has no PostScript font name"
 msgstr "FreeType gezicht heeft geen PostScript fontnaam"
 
-#: paper-column-engraver.cc:213
-msgid ""
-"forced break was overridden by some other event, should you be using bar "
-"checks?"
+#: paper-column-engraver.cc:199
+msgid "forced break was overridden by some other event, should you be using bar checks?"
 msgstr ""
-"geforceerde breuk werd opgeheft door andere gebeurtenis, zou je "
-"maatcontrole\n"
+"geforceerde breuk werd opgeheft door andere gebeurtenis, zou je maatcontrole\n"
 "moeten gebruiken?"
 
 #: paper-outputter-scheme.cc:30
@@ -1580,7 +1502,7 @@ msgstr "GUILE signaleerde een fout voor de expressie beginnend alhier"
 
 #: percent-repeat-engraver.cc:200
 msgid "unterminated percent repeat"
-msgstr "onbeëindigde procentherhaling"
+msgstr "onbeëindigde procentherhaling"
 
 #: performance.cc:43
 msgid "Track..."
@@ -1601,7 +1523,7 @@ msgstr "MIDI uitvoer naar %s..."
 
 #: phrasing-slur-engraver.cc:131
 msgid "unterminated phrasing slur"
-msgstr "onbeëindigde fraseringsboog"
+msgstr "onbeëindigde fraseringsboog"
 
 #: piano-pedal-engraver.cc:286
 #, c-format
@@ -1721,7 +1643,7 @@ msgstr "kan niet vinden `%s'"
 
 #: score-engraver.cc:69
 msgid "Music font has not been installed properly."
-msgstr "Muziekfont is niet correect geïnstalleerd."
+msgstr "Muziekfont is niet correect geïnstalleerd."
 
 #: score-engraver.cc:71
 #, c-format
@@ -1760,11 +1682,11 @@ msgstr "richting van %s ongeldig: %d"
 
 #: slur-engraver.cc:151
 msgid "unterminated slur"
-msgstr "onbeëindigde bindingsboog"
+msgstr "onbeëindigde bindingsboog"
 
 #: slur-engraver.cc:163
 msgid "cannot end slur"
-msgstr "kan legatoboog niet beëindigen"
+msgstr "kan legatoboog niet beëindigen"
 
 #: slur.cc:355
 #, c-format
@@ -1818,7 +1740,7 @@ msgstr "vlag streep `%s' niet gevonden"
 msgid "Element count %d."
 msgstr "Aantal elementen: %d."
 
-#: system.cc:272
+#: system.cc:266
 #, c-format
 msgid "Grob count %d"
 msgstr "Aantal grobs %d"
@@ -1833,7 +1755,7 @@ msgstr "heb al een tekst spanner"
 
 #: text-spanner-engraver.cc:118
 msgid "unterminated text spanner"
-msgstr "onbeëindigde tekst spanner"
+msgstr "onbeëindigde tekst spanner"
 
 #: tie-engraver.cc:267
 msgid "lonely tie"
@@ -1891,27 +1813,23 @@ msgstr "heb al een tekst spanner"
 
 #: tuplet-engraver.cc:96
 msgid "No tuplet to end"
-msgstr "Geen tuplet om te beëindigen"
+msgstr "Geen tuplet om te beëindigen"
 
 #: vaticana-ligature-engraver.cc:388
 #, c-format
-msgid ""
-"ignored prefix (es) `%s' of this head according to restrictions of the "
-"selected ligature style"
+msgid "ignored prefix (es) `%s' of this head according to restrictions of the selected ligature style"
 msgstr ""
-"negeren van voorvoegsel (es) `%s' van dit bolletje volgens restricties van "
-"de\n"
+"negeren van voorvoegsel (es) `%s' van dit bolletje volgens restricties van de\n"
 "geselecteerde ligatuurstijl"
 
 #: vaticana-ligature-engraver.cc:714
 #, c-format
 msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul"
-msgstr ""
-"Vaticana_ligature_engraver: instelling `spacing-increment = %f': ptr=%ul"
+msgstr "Vaticana_ligature_engraver: instelling `spacing-increment = %f': ptr=%ul"
 
 #: vaticana-ligature.cc:84
 msgid "flexa-height undefined; assuming 0"
-msgstr "flexa-hoogte ongedefiniëerd; uitgaan van 0"
+msgstr "flexa-hoogte ongedefiniëerd; uitgaan van 0"
 
 #: vaticana-ligature.cc:89
 msgid "ascending vaticana style flexa"
@@ -1924,54 +1842,54 @@ msgstr "Vaticana_ligature: nulsamenvoeging (delta_pitch == 0)"
 #. fixme: be more verbose.
 #: volta-engraver.cc:143
 msgid "cannot end volta spanner"
-msgstr "kan volta spanner niet beëindigen"
+msgstr "kan volta spanner niet beëindigen"
 
 #: volta-engraver.cc:153
 msgid "already have a volta spanner, ending that one prematurely"
-msgstr "heb al een volta spanner, beëindig die voortijdig"
+msgstr "heb al een volta spanner, beëindig die voortijdig"
 
 #: volta-engraver.cc:157
 msgid "also already have an ended spanner"
-msgstr "heb ook al een beëidingde spanner"
+msgstr "heb ook al een beëidingde spanner"
 
 #: volta-engraver.cc:158
 msgid "giving up"
 msgstr "geef op"
 
-#: parser.yy:712
+#: parser.yy:704
 msgid "\\paper cannot be used in \\score, use \\layout instead"
 msgstr "\\paper kan niet worden gebruikt in \\score, gebruik \\layout"
 
-#: parser.yy:736
+#: parser.yy:728
 msgid "need \\paper for paper block"
 msgstr "heb \\paper nodig voor paper blok"
 
-#: parser.yy:1195
+#: parser.yy:1187
 msgid "Grob name should be alphanumeric"
 msgstr "Grob naam zou alfanumeriek moeten zijn"
 
-#: parser.yy:1493
+#: parser.yy:1485
 msgid "second argument must be pitch list"
 msgstr "tweede argument moet een toonhoogtelijst zijn"
 
-#: parser.yy:1520 parser.yy:1525 parser.yy:1990
+#: parser.yy:1512 parser.yy:1517 parser.yy:1982
 msgid "have to be in Lyric mode for lyrics"
 msgstr "moet in Lyric modus zijn voor liedteksten"
 
-#: parser.yy:1622
+#: parser.yy:1614
 msgid "expecting string as script definition"
 msgstr "verwacht string voor script definitie"
 
-#: parser.yy:1777 parser.yy:1827
+#: parser.yy:1769 parser.yy:1819
 #, c-format
 msgid "not a duration: %d"
 msgstr "geen duur: %d"
 
-#: parser.yy:1944
+#: parser.yy:1936
 msgid "have to be in Note mode for notes"
 msgstr "moet in Note modus zijn voor noten"
 
-#: parser.yy:2005
+#: parser.yy:1997
 msgid "have to be in Chord mode for chords"
 msgstr "moet in Chord modus zijn voor accoorden"
 
@@ -2011,7 +1929,7 @@ msgstr "\\maininput niet toegestaan buiten init bestanden"
 #: lexer.ll:312
 #, c-format
 msgid "wrong or undefined identifier: `%s'"
-msgstr "verkeerde of ongedefiniëerde identifier: `%s'"
+msgstr "verkeerde of ongedefiniëerde identifier: `%s'"
 
 #. backup rule
 #: lexer.ll:321
@@ -2022,30 +1940,30 @@ msgstr "aanhalingstekens sluite mist"
 msgid "Brace found at end of lyric.  Did you forget a space?"
 msgstr "Accolade gevonden aan het eind van liedtektst.  Een spatie vergeten?"
 
-#: lexer.ll:561
+#: lexer.ll:559
 msgid "Brace found at end of markup.  Did you forget a space?"
 msgstr "Accolade gevonden aan het eind van een opmaak.  Een spatie vergeten?"
 
-#: lexer.ll:665
+#: lexer.ll:663
 #, c-format
 msgid "invalid character: `%c'"
 msgstr "ongeldig teken: `%c'"
 
-#: lexer.ll:780
+#: lexer.ll:778
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr "onbekende ontsnapte string: `\\%s'"
 
-#: lexer.ll:886
+#: lexer.ll:884
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
 msgstr "bestand te oud: %s (oudste ondersteund: %s)"
 
-#: lexer.ll:887
+#: lexer.ll:885
 msgid "consider updating the input with the convert-ly script"
 msgstr "overweeg het actualiseren van de invoer met het convert-ly script"
 
-#: lexer.ll:893
+#: lexer.ll:891
 #, c-format
 msgid "program too old: %s (file requires: %s)"
 msgstr "programma te oud: %s (bestand vereist: %s)"
@@ -2081,7 +1999,7 @@ msgstr "Schrijven van header veld `~a' naar `~a'..."
 #: define-music-properties.scm:10
 #, scheme-format
 msgid "symbol ~S redefined"
-msgstr "symbool ~S hergedefiniëerd"
+msgstr "symbool ~S hergedefiniëerd"
 
 #: define-event-classes.scm:119
 #, scheme-format
@@ -2103,22 +2021,22 @@ msgstr "geen systemen gevonden in \\score markup, heeft het een \\layout blok?"
 msgid "not a valid duration string: ~a"
 msgstr "geen geldige duurtekst: ~a"
 
-#: define-music-types.scm:746
+#: define-music-types.scm:743
 #, scheme-format
 msgid "symbol expected: ~S"
 msgstr "symbool verwacht: ~S"
 
-#: define-music-types.scm:749
+#: define-music-types.scm:746
 #, scheme-format
 msgid "cannot find music object: ~S"
 msgstr "kan muziekobject niet vinden: ~S"
 
-#: define-music-types.scm:769
+#: define-music-types.scm:766
 #, scheme-format
 msgid "unknown repeat type `~S'"
 msgstr "onbekend herhaaltype `~S'"
 
-#: define-music-types.scm:770
+#: define-music-types.scm:767
 msgid "See music-types.scm for supported repeats"
 msgstr "Zie music-types.scm voor ondersteunde herhalingen"
 
@@ -2193,7 +2111,7 @@ msgid ""
 "The PostScript backend does not support the system-by-system \n"
 "output. For that, use the EPS backend instead,\n"
 "\n"
-"  lilypond -b eps FILE\n"
+"  lilypond -b eps <file>\n"
 "\n"
 "If have cut & pasted a lilypond fragment from a webpage, be sure\n"
 "to only remove anything before\n"
@@ -2201,6 +2119,7 @@ msgid ""
 "  %% ****************************************************************\n"
 "  %% Start cut-&-pastable-section\n"
 "  %% ****************************************************************\n"
+"\n"
 msgstr ""
 "\n"
 "Het PostScript backend ondersteund geen system-by-system uitvoer.\n"
@@ -2208,7 +2127,7 @@ msgstr ""
 "\n"
 "  lilypond -b eps BESTAND\n"
 "\n"
-"Als LilyPond fragment van een webpagina is gecopiëerd, weet zeker\n"
+"Als LilyPond fragment van een webpagina is gecopiëerd, weet zeker\n"
 "dat alleen alles voorafgaand aan\n"
 "\n"
 "  %% ****************************************************************\n"
@@ -2239,27 +2158,23 @@ msgstr "Fout in waardestreep kwantisering.  Verwacht ~S 0, gevonden ~S."
 
 #: layout-page-layout.scm:115
 msgid "Can't fit systems on page -- ignoring between-system-padding"
-msgstr ""
-"Kan systemen niet op pagina gepast krijgen -- negeren van between-system-"
-"padding"
+msgstr "Kan systemen niet op pagina gepast krijgen -- negeren van between-system-padding"
 
 #: layout-page-layout.scm:449
 msgid "Calculating page breaks..."
 msgstr "Berekenen van pagina-afbreuken..."
 
-#: lily-library.scm:580
+#: lily-library.scm:545
 #, scheme-format
 msgid "unknown unit: ~S"
 msgstr "onbekende eenheid: ~S"
 
-#: lily-library.scm:614
+#: lily-library.scm:579
 #, scheme-format
 msgid "no \\version statement found, please add~afor future compatibility"
-msgstr ""
-"geen \\version uitdrukking gevonden, voeg~atoe voor toekomstige "
-"compatibiliteit"
+msgstr "geen \\version uitdrukking gevonden, voeg~atoe voor toekomstige compatibiliteit"
 
-#: lily-library.scm:622
+#: lily-library.scm:587
 msgid "old relative compatibility not used"
 msgstr "oude relative compatibiliteit niet gebruikt"
 
@@ -2276,7 +2191,7 @@ msgstr "verkeert type voor argument ~a.  Verwacht ~a, gevonden ~s"
 #: lily.scm:619
 #, scheme-format
 msgid "job ~a terminated with signal: ~a"
-msgstr "taak ~a beëindigd met met signaal: ~a"
+msgstr "taak ~a beëindigd met met signaal: ~a"
 
 #: lily.scm:622
 #, scheme-format
@@ -2319,9 +2234,7 @@ msgstr "Ongeldig argument in positie ~A.  Verwach: ~A, gevonden: ~S."
 
 #: music-functions.scm:228
 msgid "More alternatives than repeats.  Junking excess alternatives"
-msgstr ""
-"Meer alternatieven dan herhalingen.  Verschroten van overtollige "
-"alternatieven"
+msgstr "Meer alternatieven dan herhalingen.  Verschroten van overtollige alternatieven"
 
 #: music-functions.scm:250
 #, scheme-format
@@ -2356,7 +2269,7 @@ msgstr "utf-8-string tegengekomen in in PS achtereinde"
 #: output-svg.scm:42
 #, scheme-format
 msgid "undefined: ~S"
-msgstr "ongedefiniëerd: ~S"
+msgstr "ongedefiniëerd: ~S"
 
 #: output-svg.scm:132
 #, scheme-format
@@ -2408,9 +2321,448 @@ msgstr "~a sloot af met status: ~S"
 msgid "assertion failed: ~S"
 msgstr "assertie gefaald: ~S"
 
+#~ msgid "lilylib module"
+#~ msgstr "lilylib module"
+
+#~ msgid "print this help"
+#~ msgstr "toon deze hulp"
+
+#~ msgid "Binary %s has version %s, looking for version %s"
+#~ msgstr "Binair programma %s heeft versie %s, zocht naar versie %s"
+
+#~ msgid "`%s' failed (%s)"
+#~ msgstr "`%s' gefaald (%s)"
+
+#~ msgid "(ignored)"
+#~ msgstr "(genegeerd)"
+
+#~ msgid "Cleaning %s..."
+#~ msgstr "Schoonmaken van %s..."
+
+#~ msgid "Removing output file"
+#~ msgstr "Verwijderen van uitvoerbestand"
+
+#~ msgid ""
+#~ "Process LilyPond snippets in hybrid HTML, LaTeX or texinfo document.\n"
+#~ "Example usage:\n"
+#~ "\n"
+#~ "   lilypond-book --filter=\"tr '[a-z]' '[A-Z]'\" BOOK\n"
+#~ "   lilypond-book --filter=\"convert-ly --no-version --from=2.0.0 -\" BOOK\n"
+#~ "   lilypond-book --process='lilypond-bin -I include' BOOK\n"
+#~ "\n"
+#~ msgstr ""
+#~ "Verwerk LilyPond snippers in hybride HTML, LaTeX of texinfo dokument.\n"
+#~ "Gebruiksvoorbeeld:\n"
+#~ "   lilypond-book --filter=\\\"tr '[a-z]' '[A-Z]'\\\" BOEK\\n\"\n"
+#~ "   lilypond-book --filter=\\\"convert-ly --no-version --from=2.0.0 -\\\" BOEK\\n\n"
+#~ "   lilypond-book --process='lilypond-bin -I invoeging' BOEK\\n\"\n"
+
+#~ msgid "EXT"
+#~ msgstr "EXT"
+
+#~ msgid "print version information"
+#~ msgstr "toon versie informatie"
+
+#~ msgid "getopt says: `%s'"
+#~ msgstr "getopt zegt: `%s'"
+
+#~ msgid "Run LilyPond, add titles, generate printable document."
+#~ msgstr "Draai LilyPond, voeg titels toe, genereer af te drukken dokument."
+
+#~ msgid "write Makefile dependencies for every input file"
+#~ msgstr "schrijf Makefile afhankelijkheden voor elk invoerbestand"
+
+#~ msgid "print even more output"
+#~ msgstr "toon nog meer uitvoer"
+
+#~ msgid "find pfa fonts used in FILE"
+#~ msgstr "zoek pfa fonts gebruikt in BESTAND"
+
+#~ msgid "make HTML file with links to all output"
+#~ msgstr "maak HTML bestand met koppelingen naar alle uitvoer"
+
+#~ msgid "add DIR to LilyPond's search path"
+#~ msgstr "voeg DIR toe aan LilyPond's zoekpad"
+
+#~ msgid "keep all output, output to directory %s.dir"
+#~ msgstr "bewaar alle uitvoer, schrijf naar map %s.dir"
+
+#~ msgid "don't run LilyPond"
+#~ msgstr "draai LilyPond niet"
+
+#~ msgid "produce MIDI output only"
+#~ msgstr "produceer alleen MIDI uitvoer"
+
+#~ msgid "RES"
+#~ msgstr "RES"
+
+#~ msgid "set the resolution of the preview to RES"
+#~ msgstr "zet de resolutie voor het testbeeld op RES"
+
+#~ msgid "do not generate PDF output"
+#~ msgstr "genereer geen PDF uitvoer"
+
+#~ msgid "do not generate PostScript output"
+#~ msgstr "genereer geen PostScript uitvoer"
+
+#~ msgid "use pdflatex to generate PDF output"
+#~ msgstr "gebruik pdflatex voor het genereren van PDF uitvoer"
+
+#~ msgid "generate PNG page images"
+#~ msgstr "genereer PNG pagin plaatjes"
+
+#~ msgid "make a picture of the first system"
+#~ msgstr "maak een plaatje van het eerste systeem"
+
+#~ msgid "run in safe-mode"
+#~ msgstr "draai in veilige modus"
+
+#~ msgid "change global setting KEY to VAL"
+#~ msgstr "verander globale instelling SLEUTEL in WAARDE"
+
+#~ msgid "LilyPond crashed (signal %d)."
+#~ msgstr "LilyPond is neergestort (signaal %d)."
+
+#~ msgid "Please submit a bug report to bug-lilypond@gnu.org"
+#~ msgstr "Stuur alstublieft een foutrapportage naar bug-lilypond@gnu.org"
+
+#~ msgid "LilyPond failed on input file %s (exit status %d)"
+#~ msgstr "LilyPond heeft gefaald op invoerbestand %s (afsluitstatus %d)"
+
+#~ msgid "LilyPond failed on an input file (exit status %d)"
+#~ msgstr "LilyPond heeft gefaald op een invoerbestand (afsluitstatus %d)"
+
+#~ msgid "Analyzing %s..."
+#~ msgstr "Analyseren van %s..."
+
+#~ msgid "no LilyPond output found for `%s'"
+#~ msgstr "geen Lilypond uitvoer gevonven voor `%s'"
+
+#~ msgid "invalid value: `%s'"
+#~ msgstr "ongeldige waarde: `%s"
+
+#~ msgid "LaTeX failed on the output file."
+#~ msgstr "LaTeX heeft gefaald op het uitvoerbestand."
+
+#~ msgid ""
+#~ "Trying create PDF, but no PFA fonts found.\n"
+#~ "Using bitmap fonts instead. This will look bad."
+#~ msgstr ""
+#~ "Probeer PDF te maken, maar geeen PFA fonts gevonden.\n"
+#~ "Gebruik dan maar bitmap fonts.  Dit gaat er niet uitzien."
+
+#~ msgid "Writing HTML menu `%s'"
+#~ msgstr "Schrijven van HTML menu `%s'"
+
+#~ msgid "pseudo filter"
+#~ msgstr "pseudo filter"
+
+#~ msgid "pseudo filter only for single input file"
+#~ msgstr "pseudo filter alleen voor enkel invoerbestand"
+
+#~ msgid "no files specified on command line"
+#~ msgstr "geen bestanden gespecificeerd op de commandoregel"
+
+#~ msgid "Running LilyPond failed. Rerun with --verbose for a trace."
+#~ msgstr "Draaien van LilyPond gefaald. Draai opnieuw met --verbose voor een foutpad."
+
+#~ msgid "Failed to make PS file. Rerun with --verbose for a trace."
+#~ msgstr "Gefaald in het maken van een PS bestand.  Draai opnieuw met --verbose voor een foutpad."
+
+#~ msgid "Running LaTeX failed. Rerun with --verbose for a trace."
+#~ msgstr "Draaien van LaTeX gefaald.  Draai opnieuw met --verbose voor een foutpad."
+
+#~ msgid "%s output to <stdout>..."
+#~ msgstr "%s uitvoer naar <stdout>..."
+
+#~ msgid "%s output to %s..."
+#~ msgstr "%s uitvoer naar %s..."
+
+#~ msgid "can't find file: `%s.%s'"
+#~ msgstr "kan bestand niet vinden: `%s.%s'"
+
+#~ msgid "Convert MIDI to LilyPond source."
+#~ msgstr "Converteer MIDI naar LilyPond invoer."
+
+#~ msgid "debug"
+#~ msgstr "debug"
+
+#~ msgid "define macro NAME [optional expansion EXP]"
+#~ msgstr "definieer macro NAAM [optionele expansie EXP]"
+
+#~ msgid "only pre-process"
+#~ msgstr "alleen pre-processen"
+
+#~ msgid "DIM"
+#~ msgstr "DIM"
+
+#~ msgid "write dependencies"
+#~ msgstr "schrijf afhankelijkheden"
+
+#~ msgid "prepend PREF before each -M dependency"
+#~ msgstr "plak DIR voor elke -M afhankelijkheid"
+
+#~ msgid "don't run lilypond"
+#~ msgstr "draai lilypond niet"
+
+#~ msgid "don't generate pictures"
+#~ msgstr "genereer geen plaatjes"
+
 #~ msgid "accidental `%s' not found"
 #~ msgstr "voorteken `%s' niet gevonden"
 
+#~ msgid "Accidental rule must be pair or context-name; Found %s"
+#~ msgstr "Toevallig teken regel moet paar of context-naam zijn; Gevonden %s"
+
+#~ msgid "checksum mismatch for font file: `%s'"
+#~ msgstr "checksum fout voor fontbestand: `%s'"
+
+#~ msgid "does not match: `%s'"
+#~ msgstr "komt niet overeen: `%s'"
+
+#~ msgid "Rebuild all .afm files, and remove all .pk and .tfm files."
+#~ msgstr "Herbouw alle .afm bestanden en verwijder alle .pk en .tfm bestanden."
+
+#~ msgid "Rerun with -V to show font paths."
+#~ msgstr "Draai opnieuw met -V voor het tonen van fontpaden."
+
+#~ msgid "A script for removing font-files is delivered with the source-code:"
+#~ msgstr "Een script ter verwijdering van fontbestanden is meegeleverd bij de bron-code:"
+
+#~ msgid "Loading default font"
+#~ msgstr "Laad verstek font"
+
+#~ msgid "can't find default font: `%s'"
+#~ msgstr "kan standaard font niet vinden: `%s'"
+
+#~ msgid "Can't switch translators, I'm there already"
+#~ msgstr "Kan niet wisselen van vertaler, ben al hier"
+
+#~ msgid "beam has less than two visible stems"
+#~ msgstr "waardestreep heeft minder dan twee zichtbare stokken"
+
+#~ msgid "I'm one myself"
+#~ msgstr "Ben er zelf een"
+
+#~ msgid "Chord tremolo with %d elements. Must have two elements."
+#~ msgstr "Akkoordtremool met %d elementen. Moet twee elementen hebben."
+
+#~ msgid "no one to print a tremolos"
+#~ msgstr "niemand om tremolos af te drukken"
+
+#~ msgid "gotcha: ptr=%ul"
+#~ msgstr "hebbes: ptr=%ul"
+
+#~ msgid "distance=%f"
+#~ msgstr "afstand=%f"
+
+#~ msgid "NaN"
+#~ msgstr "NaN"
+
+#~ msgid "Junking event: `%s'"
+#~ msgstr "Verschrooten van gebeurtenis: `%s'"
+
+#~ msgid "no one to print a repeat brace"
+#~ msgstr "niemand om een herhalings haak af te drukken"
+
+#~ msgid "non fatal error: "
+#~ msgstr "niet noodlottige fout: "
+
+#~ msgid "Now processing `%s'"
+#~ msgstr "Verwerken van `%s'"
+
+#~ msgid "FIXME: key change merge"
+#~ msgstr "MAAKME: toonsoort sleutel samenvoeging"
+
+#~ msgid "kpathsea can not find TFM file: `%s'"
+#~ msgstr "kpathsea kan TFM bestand niet vinden: `%s'"
+
+#~ msgid "round filled box horizontal extent smaller than blot; decreasing blot"
+#~ msgstr "rond gevulde doos horizontale afmetingen kleiner dan blot; verkleinen van blot"
+
+#~ msgid "round filled box vertical extent smaller than blot; decreasing blot"
+#~ msgstr "rond gevulde doos vertikale afmetingen kleiner dan blot; verkleinen van blot"
+
+#~ msgid "set options, use -e '(ly-option-usage)' for help"
+#~ msgstr "zet opties, gebruik -e '(ly-option-usage)' voor hulp"
+
+#~ msgid "use output format EXT"
+#~ msgstr "gebruik uitvoerformaat BESTAND"
+
+#~ msgid "write Makefile dependencies"
+#~ msgstr "schrijf Makefile afhankelijkheden"
+
+#~ msgid "prepend DIR to dependencies"
+#~ msgstr "voeg DIR voor aan afhankelijkheden"
+
+#~ msgid "run in safe mode"
+#~ msgstr "draai in veilige modus"
+
+#~ msgid "This option is for developers only."
+#~ msgstr "Deze optie is uitsluitend bestemd voor ontwikkelaars."
+
+#~ msgid "Read the sources for more information."
+#~ msgstr "Lees de broncodes voor meer informatie."
+
+#~ msgid "silly pitch"
+#~ msgstr "rare toonhoogte"
+
+#~ msgid "Experimental: temporarily fine tuning (of %d cents) a channel."
+#~ msgstr "Experimenteel: tijdelijke fijnafstemming (%d centen) van kanaal."
+
+#~ msgid "music for the martians."
+#~ msgstr "muziek voor de marsmannetjes."
+
+#~ msgid "Fingerings are also not down?! Putting them down anyway."
+#~ msgstr "Vingerzettingen zijn ook niet onder?! Zet ze toch onder."
+
+#~ msgid "paper output to `%s'..."
+#~ msgstr "papier uitvoer naar `%s'..."
+
+#~ msgid "Don't know how to handle a percent repeat of this length."
+#~ msgstr "Weet niet hoe procent herhaling van deze lengte af te handelen."
+
+#~ msgid "no one to print a percent"
+#~ msgstr "niemand om een procent herhaling af te drukken"
+
+#~ msgid "Creator: "
+#~ msgstr "Schepper: "
+
+#~ msgid "at "
+#~ msgstr "dd "
+
+#~ msgid "can't find start of phrasing slur"
+#~ msgstr "kan begin van frase boogje niet vinden"
+
+#~ msgid "In quotation: junking event %s"
+#~ msgstr "In aanhaling: verschroten van gebeurtenis %s"
+
+#~ msgid "rest direction not set.  Cannot resolve collision."
+#~ msgstr "rustrichting niet gezet.  Kan botsing niet voorkomen."
+
+#~ msgid "lilypond -e EXPR means:"
+#~ msgstr "lilypond -e EXPR betekent:"
+
+#~ msgid "  Evalute the Scheme EXPR before parsing any .ly files."
+#~ msgstr "  Evalueer de Scheme EXPR alvorens enig .ly bestand te ontleden."
+
+#~ msgid "  Multiple -e options may be given, they will be evaluated sequentially."
+#~ msgstr "  Verscheidene -e opties mogen worden gegeven, deze zullen sequentieel worden geëvalueerd."
+
+#~ msgid "  The function ly-set-option allows for access to some internal variables."
+#~ msgstr "  De functie ly-set-option verschaft toegang tot bepaalde interne variabelen."
+
+#~ msgid "Usage: lilypond-bin -e \"(ly-set-option SYMBOL VAL)\""
+#~ msgstr "Gebruik: lilypond-bin -e \"(ly-set-option SYMBOOL WAARDE)\""
+
+#~ msgid "Where SYMBOL VAL pair is any of:"
+#~ msgstr "Waar SYMBOOL WAARDE paar is een van:"
+
+#~ msgid "unbound spanner `%s'"
+#~ msgstr "ongebonden spanner `%s'"
+
+#~ msgid "Separation_item:  I've been drinking too much"
+#~ msgstr "Separation_item:  Ik heb te veel gedronken"
+
+#~ msgid "can't find start of slur"
+#~ msgstr "kan begin van boogje niet vinden"
+
+#~ msgid "Huh?  Got %d, expected %d characters"
+#~ msgstr "Huh?  Kreeg %d, verwachtte %d tekens"
+
+#~ msgid "Global shortest duration is %s"
+#~ msgstr "Globaal kortste lengte is %s"
+
+#~ msgid "#<spring smob d= %f>"
+#~ msgstr "#<veer smob d= %f>"
+
+#~ msgid "Don't you want polyphonic voices instead?"
+#~ msgstr "Wil je anders echt geen polyfone stemmen?"
+
+#~ msgid "can't find ascii character: %d"
+#~ msgstr "kan ascii teken niet vinden: %d"
+
+#~ msgid "TFM header of `%s' has only %u word (s)"
+#~ msgstr "TFM kop van `%s' heeft slechts %u woord(en)"
+
+#~ msgid "%s: TFM file has %u parameters, which is more than the %u I can handle"
+#~ msgstr "%s: TFM bestand heeft %u parameters, wat meer is dan de %u die ik aan kan"
+
+#~ msgid "no one to print a tuplet start bracket"
+#~ msgstr "niemand om een x-ool start haak af te drukken"
+
+#~ msgid "Killing tuplet bracket across linebreak."
+#~ msgstr "Vermoorden van tuplet haak over regelbreuk."
+
+#~ msgid "Also have a stopped spanner.  Giving up."
+#~ msgstr "Heb ook al een gestopte spanner.   Geef op."
+
+#~ msgid "Tag must be symbol or list of symbols."
+#~ msgstr "Merk moet symbool of lijst van symbolen zijn."
+
+#~ msgid "Identifier should have alphabetic characters only"
+#~ msgstr "Identifier mag uitsluitend alfabetische tekens hebben"
+
+#~ msgid "\\apply takes function argument"
+#~ msgstr "\\apply neemt een functieargument"
+
+#~ msgid "Can't find music"
+#~ msgstr "Kan geen muziek vinden"
+
+#~ msgid "need integer number arg"
+#~ msgstr "heb integer getal arg nogig"
+
+#~ msgid "Suspect duration found following this beam"
+#~ msgstr "Verdachte lengte gevonden volgend op deze waardestreep"
+
+#~ msgid "input renamed to: `%s'"
+#~ msgstr "invoer hernoemd naar: `%s'"
+
+#~ msgid "Missing end quote"
+#~ msgstr "Aanhalingsteken sluiten mist"
+
+#~ msgid "Incorrect lilypond version: %s (%s, %s)"
+#~ msgstr "Verkeerde lilypond versie: %s (%s, %s)"
+
+#~ msgid "This page is for %(package_name)s-%(package_version)s (%(branch_str)s)."
+#~ msgstr "Deze pagina is voor %(package_name)s-%(package_version)s (%(branch_str)s)."
+
+#~ msgid "Report errors to <a href=\"%(mail_address_url)s\">%(mail_address)s</a>."
+#~ msgstr "Meld fouten naar <a href=\\\"%(mail_address_url)s\\\">%(mail_address)s</a>."
+
+#~ msgid "Other languages: %s."
+#~ msgstr "Andere talen: %s."
+
+#~ msgid "About <A HREF=\"%s\">automatic language selection</A>."
+#~ msgstr "Gebruik van <A HREF=\\\"%s\\\">automatische taalkeuze</A>.\n"
+
+#~ msgid "stable-branch"
+#~ msgstr "stabiele tak"
+
+#~ msgid "development-branch"
+#~ msgstr "ontwikkel tak"
+
+#~ msgid "English"
+#~ msgstr "Engels"
+
+#~ msgid "French"
+#~ msgstr "Frans"
+
+#~ msgid "Spanish"
+#~ msgstr "Spaans"
+
+#~ msgid "German"
+#~ msgstr "Duits"
+
+#~ msgid "Finding the ideal number of pages..."
+#~ msgstr "Zoeken naar het ideale aantal pagina's..."
+
+#~ msgid "Fitting music on 1 page..."
+#~ msgstr "Muziek passend maken op 1 pagina..."
+
+#~ msgid "Fitting music on %d or %d pages..."
+#~ msgstr "Muziek passend maken op %d of %d pagina's..."
+
 #~ msgid ""
 #~ "vertical alignment called before line-breaking.\n"
 #~ "Only do cross-staff spanners with PianoStaff."
@@ -2418,9 +2770,6 @@ msgstr "assertie gefaald: ~S"
 #~ "vertikale uitlijning aangeroepen voor regelbreuk\n"
 #~ "Gebruik alleen spanners over notenbalken heen met PianoStaff"
 
-#~ msgid "tried to calculate pure-height at a non-breakpoint"
-#~ msgstr "probeerde pure-hoogte te berekenen op een niet-breekpunt"
-
 #~ msgid "outside-staff object %s has an empty extent"
 #~ msgstr "buiten-notenbalk object %s heeft lege afmetingen"
 
@@ -2434,14 +2783,6 @@ msgstr "assertie gefaald: ~S"
 #~ "gebruik achterkant ACHTER (eps, gnome,\n"
 #~ "ps [standaard], scm, svg, tex, texstr)"
 
-#~ msgid "do not generate printed output"
-#~ msgstr "genereer geen afdrukuitvoer"
-
-#~ msgid "generate a preview of the first system"
-#~ msgstr ""
-#~ "maak een voorvertoning van het eerste\n"
-#~ "systeem"
-
 #~ msgid ""
 #~ "disallow unsafe Scheme and PostScript\n"
 #~ "operations"
@@ -2452,9 +2793,6 @@ msgstr "assertie gefaald: ~S"
 #~ msgid "Evaluating %s"
 #~ msgstr "Evalueren van %s"
 
-#~ msgid "experimental: temporarily fine tuning (of %d cents) a channel."
-#~ msgstr "experimenteel: tijdelijke fijnafstemming (%d centen) van kanaal."
-
 #~ msgid ""
 #~ "\n"
 #~ "The PostScript backend does not support the 'classic'\n"
index 3212e5f0b8be0f7ade9cdce5c361bded2510773d..e3afd7f273adfe88d23b4079302bff5bd542972b 100644 (file)
@@ -689,9 +689,6 @@ Otherwise, return #f."
 (define-display-method UnfoldedRepeatedMusic (expr parser)
   (repeat->lily-string expr "unfold" parser))
 
-(define-display-method FoldedRepeatedMusic (expr parser)
-  (repeat->lily-string expr "fold" parser))
-
 (define-display-method PercentRepeatedMusic (expr parser)
   (repeat->lily-string expr "percent" parser))
 
index e3a6e3d9a7911b09770c8524c7bb714fc1227687..2e95b5a7c9a8297df89a9875596370938ef27080 100644 (file)
@@ -1,7 +1,7 @@
 ;;;; music-property-description.scm -- part of generated backend documentation
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
+;;;;
 ;;;; (c) 1998--2006  Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                 Jan Nieuwenhuizen <janneke@gnu.org>
 
   (map
    (lambda (x) (apply music-property-description x))
    `(
-     (X-offset ,number? "Offset of resulting grob; only used for balloon texts.")
-     (Y-offset ,number? "Offset of resulting grob; only used for balloon texts. ")
-     
-     (alteration ,number? "alteration for figured bass")
+     (X-offset ,number?
+              "Offset of resulting grob; only used for balloon texts.")
+     (Y-offset ,number?
+              "Offset of resulting grob; only used for balloon texts.")
 
+     (alteration ,number? "Alteration for figured bass.")
      (absolute-octave ,integer?
                      "The absolute octave for a octave check note.")
      (articulations ,ly:music-list?
                    "Articulation events specifically for this note.")
-     (articulation-type ,string? "key for script definitions alist.
-
-TODO: consider making type into symbol ")
-     (augmented ,boolean? "This figure is for an augmented figured bass (with +) sign.")
-     (associated-context ,string? "Name of the Voice context associated with this \\newaddlyrics section")
-     (bass ,boolean? "Set if this note is a bass note in a chord")
-     (bracket-start ,boolean? "start a bracket
-here. TODO: use SpanEvents?")
-     (bracket-stop ,boolean? "stop a bracket here.")
+     (articulation-type ,string? "Key for script definitions alist.
+
+TODO: Consider making type into symbol.")
+     (augmented ,boolean? "This figure is for an augmented figured bass
+(with @code{+} sign).")
+     (associated-context ,string? "Name of the Voice context associated with
+this @code{\\newaddlyrics} section.")
+
+     (bass ,boolean? "Set if this note is a bass note in a chord.")
+     (bracket-start ,boolean? "Start a bracket here.
+
+TODO: Use SpanEvents?")
+     (bracket-stop ,boolean? "Stop a bracket here.")
      (break-penalty ,number? "Penalty for line break hint.")
-     (break-permission ,symbol? "Whether to allow, forbid or force a line break.")
-     (cautionary ,boolean? "If set, this alteration needs cautionary accidental")
-     (change-to-id ,string? "name of the context to change to ")
-     (change-to-type ,symbol? "type of the context to change to.")
-     (compress-procedure ,procedure? "compress this music expression. Argument 1: the music, arg 2: factor")
-     (context-id ,string? "name of context")
-     (context-type ,symbol?  "type of context")
+     (break-permission ,symbol?
+                      "Whether to allow, forbid or force a line break.")
+
+     (cautionary ,boolean? "If set, this alteration needs a
+cautionary accidental.")
+     (change-to-id ,string? "Name of the context to change to.")
+     (change-to-type ,symbol? "Type of the context to change to.")
+     (compress-procedure ,procedure? "Compress this music expression.
+Arg@tie{}1: the music, arg@tie{}2: factor.")
+     (context-id ,string? "Name of context.")
+     (context-type ,symbol?  "Type of context.")
      (create-new ,boolean? "Create a fresh context.")
-     (delta-step ,number? "How much should a fall change pitch?") 
-     (descend-only ,boolean? "If set, this @code{\\context} will only descend in the context tree.")
-     (denominator ,integer? "denominator in a time signature")
-     (digit ,integer? "digit for fingering")
+
+     (delta-step ,number? "How much should a fall change pitch?")
+     (descend-only ,boolean? "If set, this @code{\\context} only descends
+in the context tree.")
+     (denominator ,integer? "Denominator in a time signature.")
+     (digit ,integer? "Digit for fingering.")
      (diminished ,boolean? "This bass figure should be slashed.")
      (direction ,ly:dir? "Print this up or down?")
      (drum-type ,symbol? "Which percussion instrument to play this note on.")
-     (duration ,ly:duration? "Duration of this note/lyric.")
-     (error-found ,boolean? "If true, a parsing error was found in this expression")
-     (element ,ly:music? "The single child of a Music_wrapper music object, or the body of a repeat.")
-     (elements ,ly:music-list? "A list of elements for sequential of simultaneous music, or the alternatives of repeated music. ")
-     (elements-callback ,procedure? "Return a list of children, for use by a sequential iterator. Takes a single Music parameter")
-     (expected-beam-count ,integer? "Expected number of non-tremolo beams in a tremolo repeat")
-     (figure ,integer? "a bass figure")
-     (force-accidental ,boolean? "If set, a cautionary accidental should always be printed on this note")
-     (grob-property ,symbol? "The symbol of the grob property to set. ")
-     (grob-property-path ,list? "A list of symbols, locating a nested grob property, e.g. (beamed-lengths details). ")
-     (grob-value ,scheme? "The value of the grob property to set")
-     (input-tag ,scheme? "Arbitrary marker to relate input and output")
+     (duration ,ly:duration? "Duration of this note or lyric.")
+
+     (error-found ,boolean?
+                 "If true, a parsing error was found in this expression.")
+     (element ,ly:music? "The single child of a Music_wrapper music object,
+or the body of a repeat.")
+     (elements ,ly:music-list? "A list of elements for sequential of
+simultaneous music, or the alternatives of repeated music.")
+     (elements-callback ,procedure? "Return a list of children, for use by
+a sequential iterator.  Takes a single music parameter.")
+     (expected-beam-count ,integer? "Expected number of non-tremolo beams
+in a tremolo repeat.")
+
+     (figure ,integer? "A bass figure.")
+     (force-accidental ,boolean? "If set, a cautionary accidental should
+always be printed on this note.")
+
+     (grob-property ,symbol? "The symbol of the grob property to set.")
+     (grob-property-path ,list? "A list of symbols, locating a nested grob
+property, e.g., @code{(beamed-lengths details)}.")
+     (grob-value ,scheme? "The value of the grob property to set.")
+
+     (input-tag ,scheme? "Arbitrary marker to relate input and output.")
      (inversion ,boolean? "If set, this chord note is inverted.")
-     (iterator-ctor ,procedure? "Function to construct music-event-iterator object for this Music")
-     
-     (label ,markup? "label of a mark.")
+     (iterator-ctor ,procedure? "Function to construct a
+@code{music-event-iterator} object for this music.")
+
+     (label ,markup? "Label of a mark.")
      (last-pitch ,ly:pitch? "The last pitch after relativization.")
-     (length ,ly:moment? "The duration of this music")
-     (length-callback ,procedure? "How to compute the duration of this music. This property can only be defined as initializer in @file{define-music-types.scm}.")
-     (line-break-permission ,symbol? "When the music is at top-level, whether to allow, forbid or force a line break.")
+     (length ,ly:moment? "The duration of this music.")
+     (length-callback ,procedure? "How to compute the duration of this music.
+This property can only be defined as initializer in
+@file{scm/@/define-music-types.scm}.")
+     (line-break-permission ,symbol? "When the music is at top-level,
+whether to allow, forbid or force a line break.")
+
      (metronome-count ,number? "How many beats in a minute?")
-     (name ,symbol? "Name of this music object")
-     (no-continuation ,boolean? "If set, disallow continuation lines")
-     (numerator ,integer? "numerator of a time signature")
+
+     (name ,symbol? "Name of this music object.")
+     (no-continuation ,boolean? "If set, disallow continuation lines.")
+     (numerator ,integer? "Numerator of a time signature.")
+
      (once ,boolean? "Apply this operation only during one time step?")
-     (octavation ,integer? "This pitch was octavated by how many octaves? For chord inversions, this is negative.")
-     (origin ,ly:input-location? "where was this piece of music defined?")
-     (page-break-permission ,symbol? "When the music is at top-level, whether to allow, forbid or force a page break.")
-     (page-label ,symbol? "The label of a page marker")
-     (page-marker ,boolean? "If true, and the music expression is found at top-level, a page marker object is instanciated instead of a score.")
-     (page-turn-permission ,symbol? "When the music is at top-level, whether to allow, forbid or force a page turn.")
-     (part-combine-status ,symbol?
-                         "Change to what kind of state? Options are
-solo1, solo2 and unisono")
+     (octavation ,integer? "This pitch was octavated by how many octaves?
+For chord inversions, this is negative.")
+     (origin ,ly:input-location? "Where was this piece of music defined?")
+
+     (page-break-permission ,symbol? "When the music is at top-level,
+whether to allow, forbid or force a page break.")
+     (page-label ,symbol? "The label of a page marker.")
+     (page-marker ,boolean? "If true, and the music expression is found at
+top-level, a page marker object is instanciated instead of a score.")
+     (page-turn-permission ,symbol? "When the music is at top-level,
+whether to allow, forbid or force a page turn.")
+     (part-combine-status ,symbol? "Change to what kind of state?
+Options are @code{solo1}, @code{solo2} and @code{unisono}.")
      (parenthesize ,boolean? "Enclose resulting objects in parentheses?")
-     (pitch ,ly:pitch? "the pitch of this note")
-     (pitch-alist ,list? "list of pitches jointly forming the scale of a key signature")
-     (pop-first ,boolean? "Do a revert before we try to do a override on some grob property.")
-     (prob-property ,symbol? "The symbol of the prob property to set. ")
-     (procedure ,procedure?
-               "The function to run with \\applycontext.
+     (pitch ,ly:pitch? "The pitch of this note.")
+     (pitch-alist ,list? "A list of pitches jointly forming the scale
+of a key signature.")
+     (pop-first ,boolean? "Do a revert before we try to do a override
+on some grob property.")
+     (prob-property ,symbol? "The symbol of the prob property to set.")
+     (procedure ,procedure? "The function to run with @code{\\applycontext}.
 It must take a single argument, being the context.")
-     (property-operations ,list?
-                         "Do these operations for instantiating the context.")
-     (quoted-events ,vector? "A vector of with moment/event-list entries.")
+     (property-operations ,list? "Do these operations for instantiating
+the context.")
+
+     (quoted-events ,vector? "A vector of with @code{moment} and
+@code{event-list} entries.")
      (quoted-music-name ,string? "The name of the voice to quote.")
-     (quoted-voice-direction ,ly:dir? "Should the quoted voice be up-stem or down-stem?")
-     (quoted-context-type ,symbol? "The name of the context to direct quotes to, eg., @code{Voice}.")
-     (quoted-context-id ,string? "The id of the context to direct quotes to, eg., @code{cue}.")
-     (quoted-transposition ,ly:pitch? "The pitch used for the quote, overriding \\transposition")
-     (to-relative-callback ,procedure? "How to transform a piece of music to relative pitches")
-     (repeat-count  ,integer? "do a @code{\repeat} how ofen?")
+     (quoted-voice-direction ,ly:dir? "Should the quoted voice be up-stem
+or down-stem?")
+     (quoted-context-type ,symbol? "The name of the context to
+direct quotes to, e.g., @code{Voice}.")
+     (quoted-context-id ,string? "The ID of the context to direct quotes to,
+e.g., @code{cue}.")
+     (quoted-transposition ,ly:pitch? "The pitch used for the quote,
+overriding @code{\\transposition}.")
+
+     (repeat-count ,integer? "Do a @code{\\repeat} how often?")
+
      (span-direction ,ly:dir? "Does this start or stop a spanner?")
      (span-type ,string? "What kind of spanner should be created?
 
-TODO: consider making type into symbol") 
-     (split-list ,list? "splitting moments for part combiner.")
-     (start-callback ,procedure? "Function to compute the negative
-length of starting grace notes.  This property can only be defined as
-initializer in @file{define-music-types.scm}.")
-     (string-number ,integer? "The number of the string in a StringNumberEvent")
-     (symbol ,symbol? "Grob name to perform an override/revert on.")
-     (tags ,list? "List of symbols that for denoting extra details,
-e.g. @code{\\tag #'part ...} could tag a piece of music as only being active in a part.")
-     (text-type ,symbol? "Particular type of text script (e.g. finger, dynamic).")
-     
-     (text ,markup? "markup expression to be printed")
+TODO: Consider making type into symbol.")
+     (split-list ,list? "Splitting moments for part combiner.")
+     (start-callback ,procedure? "Function to compute the negative length
+of starting grace notes.  This property can only be defined as initializer
+in @file{scm/@/define-music-types.scm}.")
+     (string-number ,integer? "The number of the string in
+a @code{StringNumberEvent.}")
+     (symbol ,symbol? "Grob name to perform an override or revert on.")
+
+     (tags ,list? "List of symbols that for denoting extra details, e.g.,
+@code{\\tag #'part @dots{}} could tag a piece of music as only being active
+in a part.")
+     (text-type ,symbol?
+               "Particular type of text script (e.g., finger, dynamic).")
+     (text ,markup? "Markup expression to be printed.")
      (tempo-unit ,ly:duration? "The unit for the metronome count.")
-     (tonic ,ly:pitch? "Base of the scale")
-     (tremolo-type ,integer? "speed of tremolo, e.g. 16 for c4:16")
+     (to-relative-callback ,procedure? "How to transform a piece of music
+to relative pitches.")
+     (tonic ,ly:pitch? "Base of the scale.")
+     (tremolo-type ,integer? "Speed of tremolo, e.g., 16 for @code{c4:16}.")
      (trill-pitch ,ly:pitch? "Pitch of other note of the trill.")
-     (type ,symbol? "The type of this music object. Determines iteration in some cases.")
+     (type ,symbol? "The type of this music object.
+Determines iteration in some cases.")
      (types ,list? "The types of this music object; determines by what
 engraver this music expression is processed.")
      (tweaks ,list? "An alist of properties to override in the backend
--for the grob made of this event.")
-     (value ,scheme? "Assignment value for a
-translation property")
-     (void ,boolean? "If this property is #t, then the music expression is to be
-discarded by the toplevel music handler.")
-     (what ,symbol? "What to change for auto-change. FIXME, naming")
+for the grob made of this event.")
+
      (untransposable ,boolean? "If set, this music is not transposed.")
-     )))
+
+     (value ,scheme? "Assignment value for a translation property.")
+     (void ,boolean? "If this property is @code{#t}, then the
+music expression is to be discarded by the toplevel music handler.")
+
+     (what ,symbol? "What to change for auto-change.
+
+FIXME: Naming.")
+    )))
index c6a83c42c2eed4ea5e9adcbbec3381f59df1aa03..993d93b6d002c1f270c5102933a8d3d4d5d50df9 100644 (file)
@@ -1,14 +1,15 @@
 ;;;; define-music-types.scm --
 ;;;;
 ;;;;  source file of the GNU LilyPond music typesetter
-;;;; 
+;;;;
 ;;;; (c) 1998--2006 Han-Wen Nienhuys <hanwen@xs4all.nl>
 ;;;;                Jan Nieuwenhuizen <janneke@gnu.org>
 
 ;; TODO: should link back into user manual.
 
 (define (mm-rest-child-list music)
-  "Generate events for multimeasure rests, to be used by the sequential-iterator"
+  "Generate events for multimeasure rests,
+to be used by the sequential-iterator"
   (let ((location (ly:music-property music 'origin))
        (duration (ly:music-property music 'duration)))
     (list (make-music 'BarCheck
 (define-public music-descriptions
   `(
     (AbsoluteDynamicEvent
-     . (
-       (description . "Creates a dynamic mark.
+     . ((description . "Create a dynamic mark.
 
-Syntax: @var{note}@code{\\x},
-where x is one of \\ppp, \\pp, \\p, \\mp, \\mf, \\f, \\ff, \\fff.")
+Syntax: @var{note}@code{\\x}, where @code{\\x} is a dynamic mark like
+@code{\\ppp} or @code{\\sfz}.  A complete list is in file
+@file{ly/@/dynamic-scripts-init.ly}.")
        (types . (general-music event dynamic-event absolute-dynamic-event))
        ))
 
@@ -35,414 +36,401 @@ where x is one of \\ppp, \\pp, \\p, \\mp, \\mf, \\f, \\ff, \\fff.")
      . ((description . "Print an annotation of an output element.")
        (types . (general-music event annotate-output-event))
        ))
-       
+
     (ApplyContext
-     . (
-       (description . "Call the argument with the current context during interpreting phase")
+     . ((description . "Call the argument with the current context during
+interpreting phase.")
        (types . (general-music apply-context))
        (iterator-ctor . ,ly:apply-context-iterator::constructor)
        ))
-    
-    (ApplyOutputEvent
-     . (
-       (description . "
-Call the argument with all current grobs during interpreting phase.
 
-Syntax
-
-\\applyOutput #'Context FUNC
+    (ApplyOutputEvent
+     . ((description . "Call the argument with all current grobs during
+interpreting phase.
 
-arguments to func are 1. the grob, 2. the originating context,
-3. context where FUNC is called.
+Syntax: @code{\\applyOutput #'@var{context} @var{func}}
 
-")
+Arguments to @var{func} are 1.@tie{}the grob, 2.@tie{}the originating
+context, and 3.@tie{}the context where @var{func} is called.")
        (types . (general-music event apply-output-event))
        ))
-    (ArpeggioEvent 
-     . (
-       (description .  "Make an arpeggio on this note.
 
-Syntax:
-@var{note}-@code{\\arpeggio}")
+    (ArpeggioEvent
+     . ((description . "Make an arpeggio on this note.
+
+Syntax: @var{note}@code{-\\arpeggio}")
        (types . (general-music arpeggio-event event))
        ))
 
     ;; todo: use articulation-event for slur as well.
-    ;; separate non articulation scripts  
+    ;; separate non articulation scripts
     (ArticulationEvent
-     . (
-       (description .  "Adds an articulation marking to a note.  
-
-Syntax:
-@var{note}@code{X}@code{Y}, where X is a direction (up @code{^}, down
-@code{_}, or LilyPond's choice (no direction specified)), and where Y
-is an articulation (such as @code{-.}, @code{->}, @code{\\tenuto},
-@code{\\downbow}).  See the user manual for details.")
+     . ((description . "Add an articulation marking to a note.
 
+Syntax: @var{note}@code{x}@code{y}, where @code{x} is a direction
+(@code{^} for up or @code{_} for down), or LilyPond's choice
+(no direction specified)), and where @code{y} is an articulation
+(such as @code{-.}, @code{->}, @code{\\tenuto}, @code{\\downbow}).
+See the user manual for details.")
        (types . (general-music event articulation-event script-event))
-       )) 
+       ))
+
     (AutoChangeMusic
-     . (
-       (description .  "Used for making voices that switch between piano staves automatically.")
+     . ((description . "Used for making voices that switch between
+piano staves automatically.")
        (iterator-ctor . ,ly:auto-change-iterator::constructor)
        (start-callback . ,ly:music-wrapper::start-callback)
        (length-callback . ,ly:music-wrapper::length-callback)
        (types . (general-music music-wrapper-music auto-change-instruction))
        ))
+
     (BarCheck
-     . (
-       (description .
-                    "Check whether this music coincides with the start of the measure.")
+     . ((description . "Check whether this music coincides with
+the start of the measure.")
        (types . (general-music bar-check))
        (iterator-ctor . ,ly:bar-check-iterator::constructor)
        ))
-    (BassFigureEvent
-     . (
-       (description .  "Print a bass-figure text")
 
+    (BassFigureEvent
+     . ((description . "Print a bass-figure text.")
        (types . (general-music event rhythmic-event bass-figure-event))
        ))
-    
+
     (BeamEvent
-     . (
-       (description .  "Starts or stops a beam.  
+     . ((description . "Start or stop a beam.
 
-Syntax for manual control:
-c8-[ c c-] c8")
+Syntax for manual control: @code{c8-[ c c-] c8}")
        (types . (general-music event beam-event span-event))
        ))
+
+    (BeamForbidEvent
+     . ((description . "Specify that a note may not auto-beamed.")
+       (types . (general-music event beam-forbid-event))
+       ))
+
     (BendAfterEvent
-     . ((description . "A drop/fall/doit jazz articulation")
+     . ((description . "A drop/fall/doit jazz articulation.")
        (types . (general-music bend-after-event event))))
 
     (BreathingEvent
-     . (
-       (description .  "Creates a `breath mark' or `comma'.  
+     . ((description . "Create a @q{breath mark} or @q{comma}.
 
-Syntax:
-@var{note}\\breathe.")
+Syntax: @var{note}@code{\\breathe}")
 
        (types . (general-music event breathing-event))
-       )) 
+       ))
+
     (ContextChange
-     . (
-       (description .  "Change staves in Piano staff. 
+     . ((description . "Change staves in Piano staff.
 
-Syntax @code{\\translator Staff = @var{new-id}}.")
-       (iterator-ctor . , ly:change-iterator::constructor)
+Syntax: @code{\\change Staff = @var{new-id}}")
+       (iterator-ctor . ,ly:change-iterator::constructor)
        (types . (general-music translator-change-instruction))
        ))
 
     (ClusterNoteEvent
-     . ((description . "A note that is part of a cluster.")
-
-       ;; not a note-event, to ensure that Note_engraver doesn't eat it. 
-       (types . (general-music cluster-note-event melodic-event rhythmic-event event))
+     . ((description . "A note that is part of a cluster.")
+       ;; not a note-event, to ensure that Note_engraver doesn't eat it.
+       (types . (general-music cluster-note-event melodic-event
+                 rhythmic-event event))
        ))
-    
+
     (ContextSpeccedMusic
-     . (
-       (description .  "Interpret the argument music within a specific context.")
+     . ((description . "Interpret the argument music within a
+specific context.")
        (iterator-ctor . ,ly:context-specced-music-iterator::constructor)
        (length-callback . ,ly:music-wrapper::length-callback)
        (start-callback . ,ly:music-wrapper::start-callback)
        (types . (context-specification general-music music-wrapper-music))
        ))
-    
+
     (CrescendoEvent
-     . (
-       (description .  "Begins or ends a crescendo.  
+     . ((description . "Begin or end a crescendo.
 
-Syntax: @var{note}\\cr
-... @var{note}\\rc (you can also use \\<, \\!, \\cresc, and
-\\endcresc.  See the user manual for details.).")
+Syntax: @var{note}@code{\\cr} @dots{} @var{note}@code{\\rc}
 
-       (types . (general-music span-event span-dynamic-event crescendo-event event))
-       )) 
-    (DecrescendoEvent
-     . (
-       (description .  "See @ref{CrescendoEvent}.")
+You can also use @code{\\<}, @code{\\!}, @code{\\cresc}, and
+@code{\\endcresc}.  See the user manual for details.")
+       (types . (general-music span-event span-dynamic-event crescendo-event
+                 event))
+       ))
 
-       (types . (general-music span-event span-dynamic-event decrescendo-event event))
+    (DecrescendoEvent
+     . ((description . "See @ref{CrescendoEvent}.")
+       (types . (general-music span-event span-dynamic-event decrescendo-event
+                 event))
        ))
-    
-    (ExtenderEvent
-     . (
-       (description .  "Extend lyrics.")
 
+    (ExtenderEvent
+     . ((description . "Extend lyrics.")
        (types . (general-music extender-event event))
        ))
 
     (Event
-     . (
-       (description .  "Atomic music event.")
+     . ((description . "Atomic music event.")
        (types . (general-music event))
        ))
-        
+
     (EventChord
-     . (
-       (description .  "Internally used to group a set of events.")
+     . ((description . "Internally used to group a set of events.")
        (iterator-ctor . ,ly:event-chord-iterator::constructor)
        (length-callback . ,ly:music-sequence::maximum-length-callback)
-       (to-relative-callback . ,ly:music-sequence::event-chord-relative-callback)
+       (to-relative-callback .
+        ,ly:music-sequence::event-chord-relative-callback)
        (types . (general-music event-chord simultaneous-music))
        ))
 
-    
     (FingeringEvent
-     . (
-       (description . "Specify what finger to use for this note.")
+     . ((description . "Specify what finger to use for this note.")
        (types . (general-music fingering-event event))
        ))
-    (BeamForbidEvent
-     . (
-       (description . "Specify that a note may not auto-beamed ")
-       (types . (general-music event beam-forbid-event))
-       ))
+
     (GlissandoEvent
-     . (
-       (description .  "Start  a glissando on this note.")
+     . ((description . "Start a glissando on this note.")
        (types . (general-music glissando-event event))
        ))
-    
+
     (GraceMusic
-     . (
-       (description .  "Interpret the argument as grace notes. ")
+     . ((description . "Interpret the argument as grace notes.")
        (start-callback . ,ly:grace-music::start-callback)
        (length . ,ZERO-MOMENT)
        (iterator-ctor . ,ly:grace-iterator::constructor)
        (types . (grace-music music-wrapper-music general-music))
        ))
-    (NoteGroupingEvent
-     . (
-       (description . "Start or stop grouping brackets.")
-       (types . (general-music event note-grouping-event))
-       ))
+
     (HarmonicEvent
-     . (
-       (description . "Mark a note as harmonic")
+     . ((description . "Mark a note as harmonic.")
        (types . (general-music event harmonic-event))
        ))
-    (HyphenEvent
-     . (
-       (description .  "A hyphen between lyric syllables.")
 
+    (HyphenEvent
+     . ((description . "A hyphen between lyric syllables.")
        (types . (general-music hyphen-event event))
        ))
-    
+
     (KeyChangeEvent
-     . (
-       (description .  "Change the key signature. 
+     . ((description . "Change the key signature.
 
-Syntax: @code{\\key } @var{name} @var{scale}.")
+Syntax: @code{\\key} @var{name} @var{scale}")
        (to-relative-callback . ,(lambda (x p) p))
        (types . (general-music key-change-event event))
        ))
+
     (LabelEvent
-     . ((description . "Place a bookmarking label")
-       (types . (general-music label-event event))))
+     . ((description . "Place a bookmarking label.")
+       (types . (general-music label-event event))
+       ))
+
     (LaissezVibrerEvent
      . ((description . "Don't damp this chord.
 
-Syntax: @var{note}\\laissezVibrer.")
-
+Syntax: @var{note}@code{\\laissezVibrer}")
        (types . (general-music event laissez-vibrer-event))
        ))
+
     (LigatureEvent
-     . (
-       (description .  "Start or end a ligature.")
+     . ((description . "Start or end a ligature.")
        (span-type . ligature)
        (types . (general-music span-event ligature-event event))
        ))
+
     (LineBreakEvent
-     . (
-       (description .  "Allow, forbid or force a line break.")
+     . ((description . "Allow, forbid or force a line break.")
        (types . (general-music line-break-event break-event event))
        ))
-    
+
     (LyricCombineMusic
-     . (
-       (description .  "Align lyrics to the start of notes.
+     . ((description . "Align lyrics to the start of notes.
 
-Syntax @var{\\lyricsto }@var{voicename} @var{lyrics}.")
+Syntax: @code{\\lyricsto} @var{voicename} @var{lyrics}")
        (length . ,ZERO-MOMENT)
        (types . (general-music lyric-combine-music))
        (iterator-ctor . ,ly:lyric-combine-music-iterator::constructor)
        ))
 
     (LyricEvent
-     . (
-       (description .  "A lyric syllable. Must be entered in lyrics mode, i.e.
-@code{\\lyrics @{ twinkle4 twinkle4 @} } .")
-
+     . ((description . "A lyric syllable.  Must be entered in lyrics mode,
+i.e., @code{\\lyrics @{ twinkle4 twinkle4 @} }.")
        (types . (general-music rhythmic-event lyric-event event))
        ))
+
     (MarkEvent
-     . (
-       (description .  "Insert a rehearsal mark. 
+     . ((description . "Insert a rehearsal mark.
 
-Syntax: @code{\\mark} @var{marker},
-e.g. @code{\\mark \"A\"}.")
+Syntax: @code{\\mark} @var{marker}
 
+Example: @code{\\mark \"A\"}")
        (types . (general-music mark-event event))
        ))
+
+    (MultiMeasureRestEvent
+     . ((description . "Used internally by @code{MultiMeasureRestMusic}
+to signal rests.")
+       (types . (general-music event rhythmic-event
+                 multi-measure-rest-event))
+       ))
+
     (MultiMeasureRestMusic
-     . (
-       (description . "Rests that may be compressed into Multi rests. 
+     . ((description . "Rests that may be compressed into Multi rests.
 
-Syntax
-@code{R2.*4} for 4 measures in 3/4 time.")
+Syntax: @code{R2.*4} for 4 measures in 3/4 time.")
        (iterator-ctor . ,ly:sequential-iterator::constructor)
        (elements-callback . ,mm-rest-child-list)
        (types . (general-music multi-measure-rest))
        ))
 
-    (MultiMeasureRestEvent
-     . (
-       (description . "Used internally by MultiMeasureRestMusic to signal rests")
-       (types . (general-music event rhythmic-event multi-measure-rest-event))
-       ))
-    
     (MultiMeasureTextEvent
-     . (
-       (description . "Texts on mm rests. 
+     . ((description . "Texts on multi measure rests.
+
+Syntax: @code{R-\\markup @{ \\roman \"bla\" @}}
 
-Syntax
-@code{R-\\markup @{ \\roman \"bla\" @}}. Note the explicit font switch.")
+Note the explicit font switch.")
        (types . (general-music event multi-measure-text-event))
        ))
 
     (Music
-     . (
-       (description .  "Generic type for music expressions.")
-
-       (types . (general-music)) 
+     . ((description . "Generic type for music expressions.")
+       (types . (general-music))
        ))
+
     (NoteEvent
-     . (
-       (description .  "A note.")
-       (types . (general-music event note-event rhythmic-event melodic-event))
+     . ((description . "A note.")
+       (types . (general-music event note-event rhythmic-event
+                 melodic-event))
+       ))
+
+    (NoteGroupingEvent
+     . ((description . "Start or stop grouping brackets.")
+       (types . (general-music event note-grouping-event))
        ))
-    
-    (OverrideProperty
-     . (
-       (description .  "Extend the definition of a graphical object.
 
-SYNTAX
+    (OverrideProperty
+     . ((description . "Extend the definition of a graphical object.
 
-@code{\\override [ @var{Ctxt} . ] @var{Obj} @var{prop} = @var{val}}
-")
-       (types . (general-music layout-instruction-event override-property-event))
+Syntax: @code{\\override} [ @var{context} @code{.} ]
+@var{object} @var{property} @code{=} @var{value}")
+       (types . (general-music layout-instruction-event
+                 override-property-event))
        (iterator-ctor . ,ly:push-property-iterator::constructor)
        ))
+
     (PageBreakEvent
-     . (
-       (description .  "Allow, forbid or force a page break.")
+     . ((description . "Allow, forbid or force a page break.")
        (types . (general-music break-event page-break-event event))
        ))
+
     (PageTurnEvent
-     . (
-       (description .  "Allow, forbid or force a page turn.")
+     . ((description . "Allow, forbid or force a page turn.")
        (types . (general-music break-event page-turn-event event))
        ))
+
     (PartCombineMusic
-     . (
-       (description .  "Combine two parts on a staff, either merged or
+     . ((description . "Combine two parts on a staff, either merged or
 as separate voices.")
        (length-callback . ,ly:music-sequence::maximum-length-callback)
        (start-callback . ,ly:music-sequence::minimum-start-callback)
        (types . (general-music part-combine-music))
        (iterator-ctor . ,ly:part-combine-iterator::constructor)
        ))
+
+    (PercentEvent
+     . ((description . "Used internally to signal percent repeats.")
+       (types . (general-music event percent-event rhythmic-event))
+       ))
+
+    (PercentRepeatedMusic
+     . ((description . "Repeats encoded by percents.")
+       (iterator-ctor . ,ly:percent-repeat-iterator::constructor)
+       (start-callback .  ,ly:repeated-music::first-start)
+       (length-callback . ,ly:repeated-music::unfolded-music-length)
+       (types . (general-music repeated-music percent-repeated-music))
+       ))
+
+    (PesOrFlexaEvent
+     . ((description . "Within a ligature, mark the previous and the
+following note to form a pes (if melody goes up) or a flexa (if melody
+goes down).")
+       (types . (general-music pes-or-flexa-event event))
+       ))
+
     (PhrasingSlurEvent
-     . (
-       (description . "Start or end phrasing slur. 
+     . ((description . "Start or end phrasing slur.
 
-Syntax NOTE \\(  and \\) NOTE")
+Syntax: @var{note}@code{\\(} and @var{note}@code{\\)}")
        (types . (general-music span-event event phrasing-slur-event))
        ))
-    
+
     (PropertySet
-     . (
-       (description .  "Set a context property.
+     . ((description . "Set a context property.
 
-Syntax: @code{\\property @var{context}.@var{prop} = @var{scheme-val}}.")
+Syntax: @code{\\property @var{context}.@var{prop} = @var{scheme-val}}")
        (types . (layout-instruction-event general-music))
        (iterator-ctor . ,ly:property-iterator::constructor)
        ))
 
     (PropertyUnset
-     . (
-       (description .  "Remove the definition of a context @code{\\property}.")
-
+     . ((description . "Remove the definition of a context
+@code{\\property}.")
        (types . (layout-instruction-event general-music))
        (iterator-ctor . ,ly:property-unset-iterator::constructor)
        ))
 
-    (PercentEvent
-     . (
-       (description .  "Used internally to signal percent repeats.")
-       (types . (general-music event percent-event rhythmic-event))
-       ))
-
-    (PesOrFlexaEvent
-     . (
-       (description .  "Within a ligature, mark the previous and the
-following note to form a pes (if melody goes up) or a flexa (if melody
-goes down).")
-
-       (types . (general-music pes-or-flexa-event event))
-       ))
-
     (QuoteMusic
-     . (
-       (description . "Quote preprocessed snippets of music. ")
+     . ((description . "Quote preprocessed snippets of music.")
        (iterator-ctor . ,ly:music-wrapper-iterator::constructor)
        (length-callback . ,ly:music-wrapper::length-callback)
        (start-callback . ,ly:music-wrapper::start-callback)
        (types . (general-music music-wrapper-music))
        ))
-    
+
     (RelativeOctaveCheck
      . ((description . "Check if a pitch is in the correct octave.")
        (to-relative-callback . ,ly:relative-octave-check::relative-callback)
        (types . (general-music relative-octave-check))
        ))
-    
-    (RepeatedMusic
-     . (
-       (description .  "Repeat music in different ways")
-       (types . (general-music repeated-music))
+
+    (RelativeOctaveMusic
+     . ((description . "Music that was entered in relative octave notation.")
+       (to-relative-callback . ,ly:relative-octave-music::relative-callback)
+       (iterator-ctor . ,ly:music-wrapper-iterator::constructor)
+       (length-callback . ,ly:music-wrapper::length-callback)
+       (start-callback . ,ly:music-wrapper::start-callback)
+       (types . (music-wrapper-music general-music relative-octave-music))
        ))
+
     (RepeatTieEvent
-     . (
-       (description . "Ties for starting a second volta bracket.")
+     . ((description . "Ties for starting a second volta bracket.")
        (types . (general-music event repeat-tie-event))
        ))
-    (RestEvent
-     . (
-       (description .  "A Rest. 
 
-Syntax @code{r4} for a quarter rest. ")
+    (RepeatedMusic
+     . ((description . "Repeat music in different ways.")
+       (types . (general-music repeated-music))
+       ))
+
+    (RestEvent
+     . ((description . "A Rest.
 
+Syntax: @code{r4} for a quarter rest.")
        (types . (general-music event rhythmic-event rest-event))
-       )) 
-    (RevertProperty
-     . (
-       (description .  "The opposite of @ref{OverrideProperty}: remove a
-previously added property from a graphical object definition
- ")
+       ))
 
+    (RevertProperty
+     . ((description . "The opposite of @ref{OverrideProperty}: remove a
+previously added property from a graphical object definition.")
        (types . (general-music layout-instruction-event))
-       (iterator-ctor . ,      ly:pop-property-iterator::constructor)
+       (iterator-ctor . ,ly:pop-property-iterator::constructor)
        ))
 
-    (SequentialMusic
-     . (
-       (description .  "Music expressions concatenated. 
+    (ScriptEvent
+     . ((description . "Add an articulation mark to a note.")
+       (types . (general-music event))
+       ))
 
-Syntax \\sequential @{..@} or simply @{..@} .")
+    (SequentialMusic
+     . ((description . "Music expressions concatenated.
 
+Syntax: @code{\\sequential @{ @dots{} @}} or simply @code{@{ @dots{} @}}")
        (length-callback . ,ly:music-sequence::cumulative-length-callback)
        (start-callback . ,ly:music-sequence::first-start-callback)
        (elements-callback . ,(lambda (m) (ly:music-property m 'elements)))
@@ -450,267 +438,203 @@ Syntax \\sequential @{..@} or simply @{..@} .")
        (types . (general-music sequential-music))
        ))
 
-    (SoloOneEvent
-     . (
-       (description . "Print Solo.1")
-       (part-combine-status . solo1)
-       (types . (general-music event part-combine-event solo-one-event))
-       ))
-    (SoloTwoEvent
-     . (
-       (description . "Print Solo.2")
-       (part-combine-status . solo2)
-       (types . (general-music event part-combine-event solo-two-event))
-       ))
-    (UnisonoEvent
-     . ((description . "Print a2")
-       (part-combine-status . unisono)
-       (types . (general-music event part-combine-event unisono-event))))
-    
     (SimultaneousMusic
-     . (
-       (description .  "Music playing together.
-
-SYNTAX
-
-@code{ \\simultaneous @{ .. @}} or << .. >>.")
+     . ((description . "Music playing together.
 
+Syntax: @code{\\simultaneous @{ @dots{} @}} or @code{<< @dots{} >>}")
        (iterator-ctor . ,ly:simultaneous-music-iterator::constructor)
        (start-callback . ,ly:music-sequence::minimum-start-callback)
        (length-callback . ,ly:music-sequence::maximum-length-callback)
-       (to-relative-callback . ,ly:music-sequence::simultaneous-relative-callback)
-       
+       (to-relative-callback .
+        ,ly:music-sequence::simultaneous-relative-callback)
        (types . (general-music simultaneous-music))
        ))
-    
-    (SlurEvent
-     . (
-       (description . "Start or end slur. 
 
-Syntax NOTE(    and NOTE) ")
+    (SkipEvent
+     . ((description . "Filler that takes up duration, but does not
+print anything.
 
-       (types . (general-music span-event event slur-event))
-       ))
-    
-    (StaffSpanEvent
-     . ((description . "Start or  stop a staff symbol.")
-       (types . (general-music event span-event staff-span-event))
-     ))
-    
-    (TextSpanEvent
-     . (
-       (description . "Start a text spanner like 8va.....|")
-       (types . (general-music span-event event text-span-event))
-       ))
-    
-    (TrillSpanEvent
-     . (
-       (description . "Start a trill spanner tr~~~")
-       (types . (general-music span-event event trill-span-event))
-       ))
-    
-    (TransposedMusic
-     . (
-       (description .  "Music that has been transposed.")
-       (iterator-ctor . ,ly:music-wrapper-iterator::constructor)
-       (start-callback . ,ly:music-wrapper::start-callback)
-       (length-callback . ,ly:music-wrapper::length-callback)
-       (to-relative-callback . ,ly:relative-octave-music::no-relative-callback)
-       (types . (music-wrapper-music general-music transposed-music))
+Syntax: @code{s4} for a skip equivalent to a quarter rest.")
+       (types . (general-music event rhythmic-event skip-event))
        ))
 
-    (TimeScaledMusic
-     . (
-       (description .  "Multiply durations, as in tuplets. 
+    (SkipMusic
+     . ((description . "Filler that takes up duration, does not
+print anything, and also does not create staves or voices implicitly.
 
-Syntax @code{\\times @var{fraction} @var{music}}, e.g.
-@code{\\times 2/3 @{ ... @}} for triplets.
- ")
-       (length-callback . ,ly:music-wrapper::length-callback)
-       (start-callback . ,ly:music-wrapper::start-callback)
-       (iterator-ctor . ,ly:time-scaled-music-iterator::constructor)
-       (types . (time-scaled-music music-wrapper-music general-music))
+Syntax: @code{\\skip} @var{duration}")
+       (length-callback . ,ly:music-duration-length)
+       (iterator-ctor . ,ly:simple-music-iterator::constructor)
+       (types . (general-music event rhythmic-event skip-event))
        ))
 
-    (TupletSpanEvent
-     . (
-       (description .  "Used internally to signal where tuplet brackets start and stop.")
-       (types . (tuplet-span-event span-event event general-music))
-       ))
+    (SlurEvent
+     . ((description . "Start or end slur.
 
-    (UnrelativableMusic
-     . (
-       (description .  "Music that can not be converted from relative to absolute notation.
-For example, transposed music.")
-       (to-relative-callback . ,ly:relative-octave-music::no-relative-callback)
-       (iterator-ctor . ,ly:music-wrapper-iterator::constructor)
-       (length-callback . ,ly:music-wrapper::length-callback)
-       (types . (music-wrapper-music general-music unrelativable-music))
+Syntax: @var{note}@code{(} and @var{note}@code{)}")
+       (types . (general-music span-event event slur-event))
        ))
 
-    (RelativeOctaveMusic
-     . (
-       (description .  "Music that was entered in relative octave notation.")
-       (to-relative-callback . ,ly:relative-octave-music::relative-callback)
-       (iterator-ctor . ,ly:music-wrapper-iterator::constructor)
-       (length-callback . ,ly:music-wrapper::length-callback)
-       (start-callback . ,ly:music-wrapper::start-callback)
-       (types . (music-wrapper-music general-music relative-octave-music))
+    (SoloOneEvent
+     . ((description . "Print @q{Solo@tie{}1}.")
+       (part-combine-status . solo1)
+       (types . (general-music event part-combine-event solo-one-event))
        ))
-    (ScriptEvent
-     . (
-       (description .  "Add an articulation mark to a note. ")
 
-       (types . (general-music event))
+    (SoloTwoEvent
+     . ((description . "Print @q{Solo@tie{}2}.")
+       (part-combine-status . solo2)
+       (types . (general-music event part-combine-event solo-two-event))
        ))
 
-    (SkipMusic
-     . (
-       (description .  "Filler that takes up duration, does not print anything, and also
-does not create staves or voices implicitly.
-
+    (SostenutoEvent
+     . ((description . "Depress or release sostenuto pedal.")
+       (types . (general-music event pedal-event sostenuto-event))
+       ))
 
+    (SpacingSectionEvent
+     . ((description . "Start a new spacing section.")
+       (types . (general-music event spacing-section-event))))
 
-Syntax: @code{\\skip }@var{duration}.")
-       (length-callback . ,ly:music-duration-length)
-       (iterator-ctor . ,ly:simple-music-iterator::constructor)
-       (types . (general-music event rhythmic-event skip-event))
+    (SpanEvent
+     . ((description . "Event for anything that is started at a
+different time than stopped.")
+       (types . (general-music event))
        ))
-    
-    (SkipEvent
-     . (
-       (description .  "Filler that takes up duration, but does not print anything.
-
 
+    (StaffSpanEvent
+     . ((description . "Start or stop a staff symbol.")
+       (types . (general-music event span-event staff-span-event))
+     ))
 
-Syntax: @code{s}@var{duration}")
+    (StringNumberEvent
+     . ((description . "Specify on which string to play this note.
 
-       (types . (general-music event rhythmic-event skip-event))
+Syntax: @code{\\@var{number}}")
+       (types . (general-music string-number-event event))
        ))
 
-    (SpacingSectionEvent
-     . ((description . "Start a new spacing section")
-       (types . (general-music event spacing-section-event))))
-     
-    (SpanEvent
-     . (
-       (description .  "Event for anything that is started at a different time than stopped.")
+    (StrokeFingerEvent
+     . ((description . "Specify with which finger to pluck a string.
 
-       (types . (general-music event))
+Syntax: @code{\\rightHandFinger @var{text}}")
+       (types . (general-music stroke-finger-event event))
        ))
-    
+
     (SustainEvent
-     . (
-       (description . "Depress or release sustain pedal. ")
+     . ((description . "Depress or release sustain pedal.")
        (types . (general-music event pedal-event sustain-event))
        ))
-    
-    (SostenutoEvent
-     . (
-       (description . "Depress or release sostenuto pedal. ")
-       (types . (general-music event pedal-event sostenuto-event))
+
+    (TextScriptEvent
+     . ((description . "Print text.")
+       (types . (general-music script-event text-script-event event))
        ))
-    
-    (UnaCordaEvent
-     . (
-       (description . "Depress or release una-corda pedal.")
-       (types . (general-music event pedal-event una-corda-event))
+
+    (TextSpanEvent
+     . ((description . "Start a text spanner, e.g., 8va.....|")
+       (types . (general-music span-event event text-span-event))
        ))
-    
-    (StringNumberEvent
-     . (
-       (description .  "Specify on which string to play this note. 
 
-Syntax: @code{\\@var{number}}.")
+    (TieEvent
+     . ((description . "A tie.
 
-       (types . (general-music string-number-event event))
-       )) 
+Syntax: @var{note}@code{-~}")
+       (types . (general-music tie-event event))
+       ))
 
-    (StrokeFingerEvent
-     . (
-       (description .  "Specify with which finger to pluck a string. 
+    (TimeScaledMusic
+     . ((description . "Multiply durations, as in tuplets.
 
-Syntax: @code{\\rightHandFinger @var{text}}.")
+Syntax: @code{\\times @var{fraction} @var{music}}, e.g.
+@code{\\times 2/3 @{ @dots{} @}} for triplets.")
+       (length-callback . ,ly:music-wrapper::length-callback)
+       (start-callback . ,ly:music-wrapper::start-callback)
+       (iterator-ctor . ,ly:time-scaled-music-iterator::constructor)
+       (types . (time-scaled-music music-wrapper-music general-music))
+       ))
 
-       (types . (general-music stroke-finger-event event))
-       )) 
-    
-    (TextScriptEvent
-     . (
-       (description .  "")
-       (types . (general-music script-event text-script-event event))
-       )) 
-    (TieEvent
-     . (
-       (description .  "A tie.  Entered as @var{note}-~.")
-       (types . (general-music tie-event event))
+    (TransposedMusic
+     . ((description . "Music that has been transposed.")
+       (iterator-ctor . ,ly:music-wrapper-iterator::constructor)
+       (start-callback . ,ly:music-wrapper::start-callback)
+       (length-callback . ,ly:music-wrapper::length-callback)
+       (to-relative-callback .
+        ,ly:relative-octave-music::no-relative-callback)
+       (types . (music-wrapper-music general-music transposed-music))
        ))
+
     (TremoloEvent
-     . (
-       (description . "Un measured tremolo.")
+     . ((description . "Unmeasured tremolo.")
        (types . (general-music event tremolo-event))
        ))
-    
+
+    (TremoloRepeatedMusic
+     . ((description . "Repeated notes denoted by tremolo beams.")
+       (iterator-ctor . ,ly:chord-tremolo-iterator::constructor)
+       (start-callback .  ,ly:repeated-music::first-start)
+       ;; the length of the repeat is handled by shifting the note logs
+       (length-callback . ,ly:repeated-music::folded-music-length)
+       (types . (general-music repeated-music tremolo-repeated-music))
+       ))
+
     (TremoloSpanEvent
-     . (
-       (description . "Tremolo over two stems")
+     . ((description . "Tremolo over two stems")
        (types . (general-music event span-event tremolo-span-event))
        ))
 
-    (VoiceSeparator
-     . (
-       (description .  "Separate polyphonic voices in simultaneous music. 
+    (TrillSpanEvent
+     . ((description . "Start a trill spanner tr~~~")
+       (types . (general-music span-event event trill-span-event))
+       ))
 
-Syntax: @code{\\\\}")
+    (TupletSpanEvent
+     . ((description . "Used internally to signal where tuplet
+brackets start and stop.")
+       (types . (tuplet-span-event span-event event general-music))
+       ))
 
-       (types . (separator general-music))
+    (UnaCordaEvent
+     . ((description . "Depress or release una-corda pedal.")
+       (types . (general-music event pedal-event una-corda-event))
        ))
 
-    (VoltaRepeatedMusic
-     . (
-       (iterator-ctor . ,ly:volta-repeat-iterator::constructor)
-       (description . "")
-       (start-callback .  ,ly:repeated-music::first-start)
-       (length-callback . ,ly:repeated-music::volta-music-length)
-       (types . (general-music repeated-music volta-repeated-music))
-       ))
-    
     (UnfoldedRepeatedMusic
-     . (
+     . ((description . "Repeated music which is fully written
+(and played) out.")
        (iterator-ctor . ,ly:unfolded-repeat-iterator::constructor)
-       (description .  "")
        (start-callback .  ,ly:repeated-music::first-start)
        (types . (general-music repeated-music unfolded-repeated-music))
        (length-callback . ,ly:repeated-music::unfolded-music-length)
        ))
-    (PercentRepeatedMusic
-     . (
-       (description .  "Repeats encoded by percents.")
-       (iterator-ctor . ,ly:percent-repeat-iterator::constructor)
-       (start-callback .  ,ly:repeated-music::first-start)
-       (length-callback . ,ly:repeated-music::unfolded-music-length)
-       (types . (general-music repeated-music percent-repeated-music))
+
+    (UnisonoEvent
+     . ((description . "Print @q{a@tie{}2}.")
+       (part-combine-status . unisono)
+       (types . (general-music event part-combine-event unisono-event))))
+
+    (UnrelativableMusic
+     . ((description . "Music that cannot be converted from relative
+to absolute notation.  For example, transposed music.")
+       (to-relative-callback . ,ly:relative-octave-music::no-relative-callback)
+       (iterator-ctor . ,ly:music-wrapper-iterator::constructor)
+       (length-callback . ,ly:music-wrapper::length-callback)
+       (types . (music-wrapper-music general-music unrelativable-music))
        ))
-    
-    (TremoloRepeatedMusic
-     . (
-       (iterator-ctor . ,ly:chord-tremolo-iterator::constructor)
-       (description .  "Repeated notes denoted by tremolo beams.")
-       (start-callback .  ,ly:repeated-music::first-start)
 
-       ;; the length of the repeat is handled by shifting the note logs
-       (length-callback . ,ly:repeated-music::folded-music-length)
-       (types . (general-music repeated-music tremolo-repeated-music))
-       
-       ))
-    
-    (FoldedRepeatedMusic
-     . (
-       (description .  "Repeats with alternatives placed in parallel. ")
-       (iterator-ctor  . ,ly:folded-repeat-iterator::constructor)
-       (start-callback .  ,ly:repeated-music::minimum-start)
-       (length-callback . ,ly:repeated-music::folded-music-length)
-       (types . (general-music repeated-music folded-repeated-music))
+    (VoiceSeparator
+     . ((description . "Separate polyphonic voices in simultaneous music.
+
+Syntax: @code{\\\\}")
+       (types . (separator general-music))
+       ))
+
+    (VoltaRepeatedMusic
+     . ((description . "Repeats with alternatives placed sequentially.")
+       (iterator-ctor . ,ly:volta-repeat-iterator::constructor)
+       (start-callback .  ,ly:repeated-music::first-start)
+       (length-callback . ,ly:repeated-music::volta-music-length)
+       (types . (general-music repeated-music volta-repeated-music))
        ))
     ))
 
@@ -736,9 +660,9 @@ Syntax: @code{\\\\}")
 
 (define-safe-public (make-music name . music-properties)
   "Create a music object of given name, and set its properties
-according to `music-properties', a list of alterning property symbols
+according to @code{music-properties}, a list of alterning property symbols
 and values. E.g:
-  (make-music 'OverrideProperty 
+  (make-music 'OverrideProperty
              'symbol 'Stem
              'grob-property 'thickness
              'grob-value (* 2 1.5))"
@@ -761,8 +685,7 @@ and values. E.g:
   (let* ((handle (assoc name '(("volta" . VoltaRepeatedMusic)
                               ("unfold" . UnfoldedRepeatedMusic)
                               ("percent" . PercentRepeatedMusic)
-                              ("tremolo" . TremoloRepeatedMusic)
-                              ("fold" . FoldedRepeatedMusic))))
+                              ("tremolo" . TremoloRepeatedMusic))))
         (music-name (if (pair? handle)
                         (cdr handle)
                         (begin
@@ -770,4 +693,3 @@ and values. E.g:
                           (ly:warning (_ "See music-types.scm for supported repeats"))
                           'VoltaRepeatedMusic))))
     (make-music music-name)))
-
index 08cc17cd33ce4d64c12e366d9a8e48e1a19ec7f7..2a23e49afa7ce40a1edb9dc39beca88aa46a8085 100644 (file)
@@ -31,7 +31,7 @@
 
      (if (pair? iprops)
         (string-append
-         "\n\n@unnumberedsubsubsec Internal properties: \n"
+         "\n\n@unnumberedsubsubsec Internal properties:\n"
          (description-list->texi internal-propdocs))
         ""))))
 
@@ -110,7 +110,7 @@ node."
 (define (all-grobs-doc)
   (make <texi-node>
     #:name "All layout objects"
-    #:desc "Description and defaults for all Grobs"
+    #:desc "Description and defaults for all graphical objects (grobs)."
     #:children
     (map (lambda (x) (grob-doc (cdr x)))  all-grob-descriptions)))
 
@@ -147,7 +147,7 @@ node."
 (define (all-interfaces-doc)
   (make <texi-node>
     #:name "Graphical Object Interfaces"
-    #:desc "Building blocks of graphical objects"
+    #:desc "Building blocks of graphical objects."
     #:children
     (map interface-doc interface-description-alist)))
 
@@ -162,16 +162,16 @@ node."
 (define (backend-doc-node)
   (make <texi-node>
     #:name "Backend"
-    #:desc "Reference for the layout engine"
+    #:desc "Reference for the layout engine."
     #:children
     (list
      (all-grobs-doc)
      (all-interfaces-doc)
      (make <texi-node>
        #:name "User backend properties"
-       #:desc "All tunable properties in a big list"
+       #:desc "All tunable properties in a big list."
        #:text (backend-properties-doc-string all-user-grob-properties))
      (make <texi-node>
        #:name "Internal backend properties"
-       #:desc "All internal layout properties in a big list"
+       #:desc "All internal layout properties in a big list."
        #:text (backend-properties-doc-string all-internal-grob-properties)))))
index 5515b1312e1861940d2e09003d0d755a878b07bf..b057a7aab58a86837d6e09c966fd5ff244778dd3 100644 (file)
@@ -37,7 +37,7 @@
         (sfdocs (sort fdocs string<?))) 
     (make <texi-node>
       #:name "Scheme functions"
-      #:desc "Primitive functions exported by LilyPond"
+      #:desc "Primitive functions exported by LilyPond."
       #:text
       (apply string-append sfdocs))))
 
index b720b592f722a64a3bef973157b15b6371b05ef8..0d01abb6b9c66b5289ae8ab0cda057f387240150 100644 (file)
@@ -8,7 +8,7 @@
 (define (music-props-doc)
   (make <texi-node>
     #:name "Music properties"
-    #:desc "All music properties, including descriptions"
+    #:desc "All music properties, including descriptions."
     #:text
     (let* ((ps (sort (map symbol->string all-music-properties) string<?))
           (descs (map (lambda (prop)
     (string-append
      "\nMusic event type @code{"
      (symbol->string (car entry))
-     "} is in Music objects of type "
+     "} is in music objects of type "
      (human-listify
       (sort
        (map (lambda (x) (ref-ify (symbol->string x)))
            (cdr entry)) string<?))
+     "."
 
      "\n\nAccepted by: "
      (human-listify
@@ -55,6 +56,7 @@
                (map ly:translator-name
                     (filter
                      (lambda (x) (engraver-accepts-music-type? (car entry) x)) all-engravers-list)))))
+     "."
      "\n\n")))
 
 (define (music-types-doc)
                         (string-append
                          "\n\nEvent classes:\n"
                          (human-listify (map ref-ify (map symbol->string classes)))
-                         "\n\n"
+                         "."
+
                          "\n\nAccepted by: "
                          (human-listify
                           (map ref-ify
                                (map symbol->string (map ly:translator-name
                                                         (filter
-                                                         (lambda (x) (engraver-accepts-music-types? classes x)) all-engravers-list))))))
+                                                         (lambda (x) (engraver-accepts-music-types? classes x)) all-engravers-list)))))
+                         ".")
                         "")))
 
     (string-append
      (object-property namesym 'music-description)
      event-texi
-     "\n\nProperties: \n"
+     "\n\nProperties:\n"
      (description-list->texi
       (map
-       (lambda (x) (property->texi 'music  x props))
+       (lambda (x) (property->texi 'music x props))
        (map car props))))))
 
 (define (music-object-doc obj)
 (define (music-doc-node)
   (make <texi-node>
     #:name "Music definitions"
-    #:desc "Definition of the Input data structures"
+    #:desc "Definition of the input data structures."
     #:children
     (list
      (music-expressions-doc)
index 47848728972c5beec4663ea975a04dc8d5be4ddb..9db6bb4b882e31dff0ab0946657473eb60f648fa 100644 (file)
@@ -45,7 +45,7 @@
         (string-append
          "Properties (read)"
          (description-list->texi
-          (map (lambda (x) (property->texi 'translation  x '())) propsr)))
+          (map (lambda (x) (property->texi 'translation x '())) propsr)))
         "")
      
      (if (null? propsw)
         (string-append
          "Properties (write)" 
          (description-list->texi
-          (map (lambda (x) (property->texi 'translation  x '())) propsw))))
+          (map (lambda (x) (property->texi 'translation x '())) propsw))))
      (if  (null? grobs)
          ""
          (string-append
-          "This engraver creates the following layout objects: \n "
-          (human-listify (map ref-ify (uniq-list (sort grobs string<? ))))
+          "\n\nThis engraver creates the following layout objects:\n\n"
+          (human-listify (map ref-ify (uniq-list (sort grobs string<?))))
           "."))
 
      "\n\n"
 
       (string-append
        "@item Set "
-       (format "grob-property @code{~a} " (string-join (map symbol->string path) " "))
-       (format " in @ref{~a} to @code{~a}.  " context-sym (scm->texi value))
+       (format "grob-property @code{~a} "
+              (string-join (map symbol->string path) " "))
+       (format "in @ref{~a} to ~a."
+              context-sym (scm->texi value))
        "\n")))
      ((equal? (object-property context-sym 'is-grob?) #t) "")
      ((equal? tag 'assign)
-      (format "@item Set translator property @code{~a} to @code{~a}"
+      (format "@item Set translator property @code{~a} to ~a.\n"
              context-sym
              (scm->texi (car args))))
      )))
       (string-append 
        desc
        (if (pair? aliases)
-          (string-append "\n\n This context also accepts commands for the following context(s):\n\n"
-                         (human-listify aliases))
+          (string-append
+           "\n\nThis context also accepts commands for the following context(s):\n\n"
+           (human-listify aliases)
+           ".")
           "")
-       "\n\nThis context creates the following layout objects: \n\n"
-       (human-listify (uniq-list (sort grob-refs string<? )))
+
+       "\n\nThis context creates the following layout objects:\n\n"
+       (human-listify (uniq-list (sort grob-refs string<?)))
        "."
-       (if (pair? props)
-          (string-append
-           "\n\nThis context sets the following properties:\n"
-           "@itemize @bullet\n"
-           (apply string-append (map document-property-operation props))
-           "@end itemize\n")
+
+       (if (and (pair? props) (not (null? props)))
+          (let ((str (apply string-append (map document-property-operation
+                                               props))))
+            (if (string-null? str)
+                ""
+                (string-append
+                 "\n\nThis context sets the following properties:\n\n"
+                 "@itemize @bullet\n"
+                 str
+                 "@end itemize\n")))
           "")
        
        (if (null? accepts)
-          "\n\nThis context is a `bottom' context; it can not contain other contexts."
+          "\n\nThis context is a `bottom' context; it cannot contain other contexts."
           (string-append
            "\n\nContext "
-           name " can contain \n"
-           (human-listify (map ref-ify (map symbol->string accepts)))))
+           name
+           " can contain\n"
+           (human-listify (map ref-ify (map symbol->string accepts)))
+           "."))
        
-       "\n\nThis context is built from the following engravers: "
-       (description-list->texi
-       (map document-engraver-by-name consists))))))
+       (if (null? consists)
+          ""
+          (string-append
+           "\n\nThis context is built from the following engravers:"
+           (description-list->texi (map document-engraver-by-name consists))))))))
 
 (define (engraver-grobs grav)
   (let* ((eg (if (symbol? grav)
 
     (make <texi-node>
       #:name "Contexts"
-      #:desc "Complete descriptions of all contexts"
+      #:desc "Complete descriptions of all contexts."
       #:children
       (map context-doc contexts))))
 
 (define (all-engravers-doc)
   (make <texi-node>
     #:name "Engravers"
-    #:desc "All separate engravers"
+    #:desc "All separate engravers."
     #:text "See @usermanref{Modifying context plug-ins}."
     #:children
     (map engraver-doc all-engravers-list)))
 (define (translation-doc-node)
   (make <texi-node>
     #:name "Translation"
-    #:desc "From music to layout"
+    #:desc "From music to layout."
     #:children
     (list
      (all-contexts-doc)
      (all-engravers-doc)
      (make <texi-node>
        #:name "Tunable context properties"
-       #:desc "All tunable context properties"
+       #:desc "All tunable context properties."
        #:text (translation-properties-doc-string
               all-user-translation-properties))
 
      (make <texi-node>
        #:name "Internal context properties"
-       #:desc "All internal context properties"
+       #:desc "All internal context properties."
        #:text (translation-properties-doc-string
               all-internal-translation-properties)))))
index fe37a366ba961c00ab62473af84ede9c550980a7..fa6298cd00e32caf6af5be4846720e7509d7cc84 100644 (file)
   (make <texi-node>
     #:name "Top"
     #:text 
-    (string-append  "This is the program reference for LilyPond version " (lilypond-version))
+    (string-append  "This is the program reference for version "
+                   (lilypond-version)
+                   " of LilyPond, the GNU music typesetter.")
 
     #:children
     (list
 
 @printindex cp
 
-@unnumbered Variable index
-
-@printindex vr
-
 @unnumbered Function index
 
 @printindex fn
 
 (dump-node top-node out-port 0)
 (newline (current-error-port))
-
-
-
-
index 5a0afbbf34c51d5d4cbf2aef69570db4a190a008..5dc35f25a9386b03a7922ae2b9c555f6f09d0684 100644 (file)
 . string-to-use)
 "
   (string-append
-   "\n@table @asis\n"
+   "\n"
+   "@quotation\n"
+   "@table @asis\n"
    (apply string-append (map one-item->texi items-alist))
-   "\n@end table\n"))
+   "\n"
+   "@end table\n"
+   "@end quotation\n"))
 
 (define (texi-menu items-alist)
   "Generate what is between @menu and @end menu."
diff --git a/tex/texinfo.cnf b/tex/texinfo.cnf
deleted file mode 100644 (file)
index ef26742..0000000
+++ /dev/null
@@ -1,498 +0,0 @@
-@c -*- coding: utf-8 -*-
-
-@c We map some UTF-8 characters to corresponding texinfo macros.
-
-@tex
-
-% This UTF-8 parser is based on LaTeX's `utf8.def'.
-
-\newcount\countX
-\newcount\countY
-\newcount\countZ
-
-\gdef\UTFviiiTwoOctets#1#2{%
-  \expandafter
-   \UTFviiiDefined\csname u8:#1\string #2\endcsname}
-\gdef\UTFviiiThreeOctets#1#2#3{%
-  \expandafter
-   \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
-\gdef\UTFviiiFourOctets#1#2#3#4{%
-  \expandafter
-   \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
-
-\gdef\UTFviiiDefined#1{%
-  \ifx #1\relax
-    \message{%
-     \linenumber Unicode char \string #1 not set up for use with texinfo}
-  \else
-    \expandafter #1%
-  \fi
-}
-
-\begingroup
-  \catcode`\~13
-  \catcode`\"12
-
-  \def\UTFviiiLoop{%
-    \global\catcode\countX\active
-    \uccode`\~\countX
-    \uppercase\expandafter{\UTFviiiTmp}%
-    \advance\countX by 1
-    \ifnum\countX < \countY
-      \expandafter\UTFviiiLoop
-    \fi}
-
-  \countX = "C2
-  \countY = "E0
-  \def\UTFviiiTmp{%
-    \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
-  \UTFviiiLoop
-
-  \countX = "E0
-  \countY = "F0
-  \def\UTFviiiTmp{%
-    \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
-  \UTFviiiLoop
-
-  \countX = "F0
-  \countY = "F4
-  \def\UTFviiiTmp{%
-    \xdef~{\noexpand\UTFviiiFourOctets\string~}}
-  \UTFviiiLoop
-\endgroup
-
-\begingroup
-  \catcode`\"=12
-  \catcode`\<=12
-  \catcode`\.=12
-  \catcode`\,=12
-  \catcode`\;=12
-  \catcode`\!=12
-  \catcode`\~=13
-
-  \gdef\DeclareUnicodeCharacter#1#2{%
-    \countZ = "#1\relax
-    \wlog{\space\space defining Unicode char U+#1 (decimal \the\countZ)}%
-    \begingroup
-      \parseXMLCharref
-      \def\UTFviiiTwoOctets##1##2{%
-        \csname u8:##1\string ##2\endcsname}%
-      \def\UTFviiiThreeOctets##1##2##3{%
-        \csname u8:##1\string ##2\string ##3\endcsname}%
-      \def\UTFviiiFourOctets##1##2##3##4{%
-        \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
-      \expandafter\expandafter\expandafter\expandafter
-       \expandafter\expandafter\expandafter
-       \gdef\UTFviiiTmp{#2}%
-    \endgroup}
-
-  \gdef\parseXMLCharref{%
-    \ifnum\countZ < "A0\relax
-      \errhelp = \EMsimple
-      \errmessage{Cannot define Unicode char value < 00A0}%
-    \else\ifnum\countZ < "800\relax
-      \parseUTFviiiA,%
-      \parseUTFviiiB C\UTFviiiTwoOctets.,%
-    \else\ifnum\countZ < "10000\relax
-      \parseUTFviiiA;%
-      \parseUTFviiiA,%
-      \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
-    \else
-      \parseUTFviiiA;%
-      \parseUTFviiiA,%
-      \parseUTFviiiA!%
-      \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
-    \fi\fi\fi
-  }
-
-  \gdef\parseUTFviiiA#1{%
-    \countX = \countZ
-    \divide\countZ by 64
-    \countY = \countZ
-    \multiply\countZ by 64
-    \advance\countX by -\countZ
-    \advance\countX by 128
-    \uccode `#1\countX
-    \countZ = \countY}
-
-  \gdef\parseUTFviiiB#1#2#3#4{%
-    \advance\countZ by "#10\relax
-    \uccode `#3\countZ
-    \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
-\endgroup
-
-\DeclareUnicodeCharacter{00A0}{\tie}
-\DeclareUnicodeCharacter{00A1}{\exclamdown}            % ¡
-\DeclareUnicodeCharacter{00A3}{\pounds}                        % £
-\DeclareUnicodeCharacter{00A8}{\"{ }}                  % ¨
-\DeclareUnicodeCharacter{00A9}{\copyright}             % ©
-\DeclareUnicodeCharacter{00AA}{\ordf}                  % ª
-\DeclareUnicodeCharacter{00AD}{\-}                     % discretionary hyphen
-\DeclareUnicodeCharacter{00AE}{\registeredsymbol}      % ®
-\DeclareUnicodeCharacter{00AF}{\={ }}                  % ¯
-
-\DeclareUnicodeCharacter{00B0}{\ringaccent{ }}         % °
-\DeclareUnicodeCharacter{00B4}{\'{ }}                  % ´
-\DeclareUnicodeCharacter{00B8}{\,{ }}                  % ¸
-\DeclareUnicodeCharacter{00BA}{\ordm}                  % º
-\DeclareUnicodeCharacter{00BF}{\questiondown}          % ¿
-
-\DeclareUnicodeCharacter{00C0}{\`A}                    % À
-\DeclareUnicodeCharacter{00C1}{\'A}                    % Á
-\DeclareUnicodeCharacter{00C2}{\^A}                    % Â
-\DeclareUnicodeCharacter{00C3}{\~A}                    % Ã
-\DeclareUnicodeCharacter{00C4}{\"A}                    % Ä
-\DeclareUnicodeCharacter{00C5}{\AA}                    % Å
-\DeclareUnicodeCharacter{00C6}{\AE}                    % Æ
-\DeclareUnicodeCharacter{00C7}{\,{C}}                  % Ç
-\DeclareUnicodeCharacter{00C8}{\`E}                    % È
-\DeclareUnicodeCharacter{00C9}{\'E}                    % É
-\DeclareUnicodeCharacter{00CA}{\^E}                    % Ê
-\DeclareUnicodeCharacter{00CB}{\"E}                    % Ë
-\DeclareUnicodeCharacter{00CC}{\`I}                    % Ì
-\DeclareUnicodeCharacter{00CD}{\'I}                    % Í
-\DeclareUnicodeCharacter{00CE}{\^I}                    % Î
-\DeclareUnicodeCharacter{00CF}{\"I}                    % Ï
-
-\DeclareUnicodeCharacter{00D1}{\~N}                    % Ñ
-\DeclareUnicodeCharacter{00D2}{\`O}                    % Ò
-\DeclareUnicodeCharacter{00D3}{\'O}                    % Ó
-\DeclareUnicodeCharacter{00D4}{\^O}                    % Ô
-\DeclareUnicodeCharacter{00D5}{\~O}                    % Õ
-\DeclareUnicodeCharacter{00D6}{\"O}                    % Ö
-\DeclareUnicodeCharacter{00D8}{\O}                     % Ø
-\DeclareUnicodeCharacter{00D9}{\`U}                    % Ù
-\DeclareUnicodeCharacter{00DA}{\'U}                    % Ú
-\DeclareUnicodeCharacter{00DB}{\^U}                    % Û
-\DeclareUnicodeCharacter{00DC}{\"U}                    % Ü
-\DeclareUnicodeCharacter{00DD}{\'Y}                    % Ý
-\DeclareUnicodeCharacter{00DF}{\ss}                    % ß
-
-\DeclareUnicodeCharacter{00E0}{\`a}                    % à
-\DeclareUnicodeCharacter{00E1}{\'a}                    % á
-\DeclareUnicodeCharacter{00E2}{\^a}                    % â
-\DeclareUnicodeCharacter{00E3}{\~a}                    % ã
-\DeclareUnicodeCharacter{00E4}{\"a}                    % ä
-\DeclareUnicodeCharacter{00E5}{\aa}                    % å
-\DeclareUnicodeCharacter{00E6}{\ae}                    % æ
-\DeclareUnicodeCharacter{00E7}{\,{c}}                  % ç
-\DeclareUnicodeCharacter{00E8}{\`e}                    % è
-\DeclareUnicodeCharacter{00E9}{\'e}                    % é
-\DeclareUnicodeCharacter{00EA}{\^e}                    % ê
-\DeclareUnicodeCharacter{00EB}{\"e}                    % ë
-\DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}                % ì
-\DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}                % í
-\DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}                % î
-\DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}                % ï
-
-\DeclareUnicodeCharacter{00F1}{\~n}                    % ñ
-\DeclareUnicodeCharacter{00F2}{\`o}                    % ò
-\DeclareUnicodeCharacter{00F3}{\'o}                    % ó
-\DeclareUnicodeCharacter{00F4}{\^o}                    % ô
-\DeclareUnicodeCharacter{00F5}{\~o}                    % õ
-\DeclareUnicodeCharacter{00F6}{\"o}                    % ö
-\DeclareUnicodeCharacter{00F8}{\o}                     % ø
-\DeclareUnicodeCharacter{00F9}{\`u}                    % ù
-\DeclareUnicodeCharacter{00FA}{\'u}                    % ú
-\DeclareUnicodeCharacter{00FB}{\^u}                    % û
-\DeclareUnicodeCharacter{00FC}{\"u}                    % ü
-\DeclareUnicodeCharacter{00FD}{\'y}                    % ý
-\DeclareUnicodeCharacter{00FF}{\"y}                    % ÿ
-
-\DeclareUnicodeCharacter{0100}{\=A}                    % Ā
-\DeclareUnicodeCharacter{0101}{\=a}                    % ā
-\DeclareUnicodeCharacter{0102}{\u{A}}                  % Ă
-\DeclareUnicodeCharacter{0103}{\u{a}}                  % ă
-\DeclareUnicodeCharacter{0106}{\'C}                    % Ć
-\DeclareUnicodeCharacter{0107}{\'c}                    % ć
-\DeclareUnicodeCharacter{0108}{\^C}                    % Ĉ
-\DeclareUnicodeCharacter{0109}{\^c}                    % ĉ
-\DeclareUnicodeCharacter{010A}{\dotaccent{C}}          % Ċ
-\DeclareUnicodeCharacter{010B}{\dotaccent{c}}          % ċ
-\DeclareUnicodeCharacter{010C}{\v{C}}                  % Č
-\DeclareUnicodeCharacter{010D}{\v{c}}                  % č
-\DeclareUnicodeCharacter{010E}{\v{D}}                  % Ď
-%\DeclareUnicodeCharacter{010F}{\v{d}}                 % ď
-
-\DeclareUnicodeCharacter{0112}{\=E}                    % Ē
-\DeclareUnicodeCharacter{0113}{\=e}                    % ē
-\DeclareUnicodeCharacter{0114}{\u{E}}                  % Ĕ
-\DeclareUnicodeCharacter{0115}{\u{e}}                  % ĕ
-\DeclareUnicodeCharacter{0116}{\dotaccent{E}}          % Ė
-\DeclareUnicodeCharacter{0117}{\dotaccent{e}}          % ė
-\DeclareUnicodeCharacter{011A}{\v{E}}                  % Ě
-\DeclareUnicodeCharacter{011B}{\v{e}}                  % ě
-\DeclareUnicodeCharacter{011C}{\^G}                    % Ĝ
-\DeclareUnicodeCharacter{011D}{\^g}                    % ĝ
-\DeclareUnicodeCharacter{011E}{\u{G}}                  % Ğ
-\DeclareUnicodeCharacter{011F}{\u{g}}                  % ğ
-
-\DeclareUnicodeCharacter{0120}{\dotaccent{G}}          % Ġ
-\DeclareUnicodeCharacter{0121}{\dotaccent{g}}          % ġ
-\DeclareUnicodeCharacter{0124}{\^H}                    % Ĥ
-\DeclareUnicodeCharacter{0125}{\^h}                    % ĥ
-\DeclareUnicodeCharacter{0128}{\~I}                    % Ĩ
-\DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}                % ĩ
-\DeclareUnicodeCharacter{012A}{\=I}                    % Ī
-\DeclareUnicodeCharacter{012B}{\={\dotless{i}}}                % ī
-\DeclareUnicodeCharacter{012C}{\u{I}}                  % Ĭ
-\DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}                % ĭ
-
-\DeclareUnicodeCharacter{0130}{\dotaccent{I}}          % İ
-\DeclareUnicodeCharacter{0131}{\dotless{i}}            % ı
-\DeclareUnicodeCharacter{0132}{IJ}                     % IJ
-\DeclareUnicodeCharacter{0133}{ij}                     % ij
-\DeclareUnicodeCharacter{0134}{\^J}                    % Ĵ
-\DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}                % ĵ
-\DeclareUnicodeCharacter{0139}{\'L}                    % Ĺ
-\DeclareUnicodeCharacter{013A}{\'l}                    % ĺ
-
-\DeclareUnicodeCharacter{0141}{\L}                     % Ł
-\DeclareUnicodeCharacter{0142}{\l}                     % ł
-\DeclareUnicodeCharacter{0143}{\'N}                    % Ń
-\DeclareUnicodeCharacter{0144}{\'n}                    % ń
-\DeclareUnicodeCharacter{0147}{\v{N}}                  % Ň
-\DeclareUnicodeCharacter{0148}{\v{n}}                  % ň
-\DeclareUnicodeCharacter{014C}{\=O}                    % Ō
-\DeclareUnicodeCharacter{014D}{\=o}                    % ō
-\DeclareUnicodeCharacter{014E}{\u{O}}                  % Ŏ
-\DeclareUnicodeCharacter{014F}{\u{o}}                  % ŏ
-
-\DeclareUnicodeCharacter{0150}{\H{O}}                  % Ő
-\DeclareUnicodeCharacter{0151}{\H{o}}                  % ő
-\DeclareUnicodeCharacter{0152}{\OE}                    % Œ
-\DeclareUnicodeCharacter{0153}{\oe}                    % œ
-\DeclareUnicodeCharacter{0154}{\'R}                    % Ŕ
-\DeclareUnicodeCharacter{0155}{\'r}                    % ŕ
-\DeclareUnicodeCharacter{0158}{\v{R}}                  % Ř
-\DeclareUnicodeCharacter{0159}{\v{r}}                  % ř
-\DeclareUnicodeCharacter{015A}{\'S}                    % Ś
-\DeclareUnicodeCharacter{015B}{\'s}                    % ś
-\DeclareUnicodeCharacter{015C}{\^S}                    % Ŝ
-\DeclareUnicodeCharacter{015D}{\^s}                    % ŝ
-\DeclareUnicodeCharacter{015E}{\,{S}}                  % Ş
-\DeclareUnicodeCharacter{015F}{\,{s}}                  % ş
-
-\DeclareUnicodeCharacter{0160}{\v{S}}                  % Š
-\DeclareUnicodeCharacter{0161}{\v{s}}                  % š
-\DeclareUnicodeCharacter{0162}{\,{t}}                  % Ţ
-\DeclareUnicodeCharacter{0163}{\,{T}}                  % ţ
-\DeclareUnicodeCharacter{0164}{\v{T}}                  % Ť
-%\DeclareUnicodeCharacter{0165}{\v{t}}                 % ť
-\DeclareUnicodeCharacter{0168}{\~U}                    % Ũ
-\DeclareUnicodeCharacter{0169}{\~u}                    % ũ
-\DeclareUnicodeCharacter{016A}{\=U}                    % Ū
-\DeclareUnicodeCharacter{016B}{\=u}                    % ū
-\DeclareUnicodeCharacter{016C}{\u{U}}                  % Ŭ
-\DeclareUnicodeCharacter{016D}{\u{u}}                  % ŭ
-\DeclareUnicodeCharacter{016E}{\ringaccent{U}}         % Ů
-\DeclareUnicodeCharacter{016F}{\ringaccent{u}}         % ů
-
-\DeclareUnicodeCharacter{0170}{\H{U}}                  % Ű
-\DeclareUnicodeCharacter{0171}{\H{u}}                  % ű
-\DeclareUnicodeCharacter{0174}{\^W}                    % Ŵ
-\DeclareUnicodeCharacter{0175}{\^w}                    % ŵ
-\DeclareUnicodeCharacter{0176}{\^Y}                    % Ŷ
-\DeclareUnicodeCharacter{0177}{\^y}                    % ŷ
-\DeclareUnicodeCharacter{0178}{\"Y}                    % Ÿ
-\DeclareUnicodeCharacter{0179}{\'Z}                    % Ź
-\DeclareUnicodeCharacter{017A}{\'z}                    % ź
-\DeclareUnicodeCharacter{017B}{\dotaccent{Z}}          % Ż
-\DeclareUnicodeCharacter{017C}{\dotaccent{z}}          % ż
-\DeclareUnicodeCharacter{017D}{\v{Z}}                  % Ž
-\DeclareUnicodeCharacter{017E}{\v{z}}                  % ž
-
-\DeclareUnicodeCharacter{01C4}{D\v{Z}}                 % DŽ
-\DeclareUnicodeCharacter{01C5}{D\v{z}}                 % Dž
-\DeclareUnicodeCharacter{01C6}{d\v{z}}                 % dž
-\DeclareUnicodeCharacter{01C7}{LJ}                     % LJ
-\DeclareUnicodeCharacter{01C8}{Lj}                     % Lj
-\DeclareUnicodeCharacter{01C9}{lj}                     % lj
-\DeclareUnicodeCharacter{01CA}{NJ}                     % NJ
-\DeclareUnicodeCharacter{01CB}{Nj}                     % Nj
-\DeclareUnicodeCharacter{01CC}{nj}                     % nj
-\DeclareUnicodeCharacter{01CD}{\v{A}}                  % Ǎ
-\DeclareUnicodeCharacter{01CE}{\v{a}}                  % ǎ
-\DeclareUnicodeCharacter{01CF}{\v{I}}                  % Ǐ
-
-\DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}                % ǐ
-\DeclareUnicodeCharacter{01D1}{\v{O}}                  % Ǒ
-\DeclareUnicodeCharacter{01D2}{\v{o}}                  % ǒ
-\DeclareUnicodeCharacter{01D3}{\v{U}}                  % Ǔ
-\DeclareUnicodeCharacter{01D4}{\v{u}}                  % ǔ
-
-\DeclareUnicodeCharacter{01E2}{\={\AE}}                        % Ǣ
-\DeclareUnicodeCharacter{01E3}{\={\ae}}                        % ǣ
-\DeclareUnicodeCharacter{01E6}{\v{G}}                  % Ǧ
-\DeclareUnicodeCharacter{01E7}{\v{g}}                  % ǧ
-\DeclareUnicodeCharacter{01E8}{\v{K}}                  % Ǩ
-\DeclareUnicodeCharacter{01E9}{\v{k}}                  % ǩ
-
-\DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}                % ǰ
-\DeclareUnicodeCharacter{01F1}{DZ}                     % DZ
-\DeclareUnicodeCharacter{01F2}{Dz}                     % Dz
-\DeclareUnicodeCharacter{01F3}{dz}                     % dz
-\DeclareUnicodeCharacter{01F4}{\'G}                    % Ǵ
-\DeclareUnicodeCharacter{01F5}{\'g}                    % ǵ
-\DeclareUnicodeCharacter{01F8}{\`N}                    % Ǹ
-\DeclareUnicodeCharacter{01F9}{\`n}                    % ǹ
-\DeclareUnicodeCharacter{01FC}{\'{\AE}}                        % Ǽ
-\DeclareUnicodeCharacter{01FD}{\'{\ae}}                        % ǽ
-\DeclareUnicodeCharacter{01FE}{\'{\O}}                 % Ǿ
-\DeclareUnicodeCharacter{01FF}{\'{\o}}                 % ǿ
-
-\DeclareUnicodeCharacter{021E}{\v{H}}                  % Ȟ
-\DeclareUnicodeCharacter{021F}{\v{h}}                  % ȟ
-
-\DeclareUnicodeCharacter{0226}{\dotaccent{A}}          % Ȧ
-\DeclareUnicodeCharacter{0227}{\dotaccent{a}}          % ȧ
-\DeclareUnicodeCharacter{0228}{\,{E}}                  % Ȩ
-\DeclareUnicodeCharacter{0229}{\,{e}}                  % ȩ
-\DeclareUnicodeCharacter{022E}{\dotaccent{O}}          % Ȯ
-\DeclareUnicodeCharacter{022F}{\dotaccent{o}}          % ȯ
-
-\DeclareUnicodeCharacter{0232}{\=Y}                    % Ȳ
-\DeclareUnicodeCharacter{0233}{\=y}                    % ȳ
-\DeclareUnicodeCharacter{0237}{\dotless{j}}            % ȷ
-
-\DeclareUnicodeCharacter{1E02}{\dotaccent{B}}          % Ḃ
-\DeclareUnicodeCharacter{1E03}{\dotaccent{b}}          % ḃ
-\DeclareUnicodeCharacter{1E04}{\udotaccent{B}}         % Ḅ
-\DeclareUnicodeCharacter{1E05}{\udotaccent{b}}         % ḅ
-\DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}         % Ḇ
-\DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}         % ḇ
-\DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}          % Ḋ
-\DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}          % ḋ
-\DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}         % Ḍ
-\DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}         % ḍ
-\DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}         % Ḏ
-\DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}         % ḏ
-
-\DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}          % Ḟ
-\DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}          % ḟ
-
-\DeclareUnicodeCharacter{1E20}{\=G}                    % Ḡ
-\DeclareUnicodeCharacter{1E21}{\=g}                    % ḡ
-\DeclareUnicodeCharacter{1E22}{\dotaccent{H}}          % Ḣ
-\DeclareUnicodeCharacter{1E23}{\dotaccent{h}}          % ḣ
-\DeclareUnicodeCharacter{1E24}{\udotaccent{H}}         % Ḥ
-\DeclareUnicodeCharacter{1E25}{\udotaccent{h}}         % ḥ
-\DeclareUnicodeCharacter{1E26}{\"H}                    % Ḧ
-\DeclareUnicodeCharacter{1E27}{\"h}                    % ḧ
-
-\DeclareUnicodeCharacter{1E30}{\'K}                    % Ḱ
-\DeclareUnicodeCharacter{1E31}{\'k}                    % ḱ
-\DeclareUnicodeCharacter{1E32}{\udotaccent{K}}         % Ḳ
-\DeclareUnicodeCharacter{1E33}{\udotaccent{k}}         % ḳ
-\DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}         % Ḵ
-\DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}         % ḵ
-\DeclareUnicodeCharacter{1E36}{\udotaccent{L}}         % Ḷ
-\DeclareUnicodeCharacter{1E37}{\udotaccent{l}}         % ḷ
-\DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}         % Ḻ
-\DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}         % ḻ
-\DeclareUnicodeCharacter{1E3E}{\'M}                    % Ḿ
-\DeclareUnicodeCharacter{1E3F}{\'m}                    % ḿ
-
-\DeclareUnicodeCharacter{1E40}{\dotaccent{M}}          % Ṁ
-\DeclareUnicodeCharacter{1E41}{\dotaccent{m}}          % ṁ
-\DeclareUnicodeCharacter{1E42}{\udotaccent{M}}         % Ṃ
-\DeclareUnicodeCharacter{1E43}{\udotaccent{m}}         % ṃ
-\DeclareUnicodeCharacter{1E44}{\dotaccent{N}}          % Ṅ
-\DeclareUnicodeCharacter{1E45}{\dotaccent{n}}          % ṅ
-\DeclareUnicodeCharacter{1E46}{\udotaccent{N}}         % Ṇ
-\DeclareUnicodeCharacter{1E47}{\udotaccent{n}}         % ṇ
-\DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}         % Ṉ
-\DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}         % ṉ
-
-\DeclareUnicodeCharacter{1E54}{\'P}                    % Ṕ
-\DeclareUnicodeCharacter{1E55}{\'p}                    % ṕ
-\DeclareUnicodeCharacter{1E56}{\dotaccent{P}}          % Ṗ
-\DeclareUnicodeCharacter{1E57}{\dotaccent{p}}          % ṗ
-\DeclareUnicodeCharacter{1E58}{\dotaccent{R}}          % Ṙ
-\DeclareUnicodeCharacter{1E59}{\dotaccent{r}}          % ṙ
-\DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}         % Ṛ
-\DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}         % ṛ
-\DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}         % Ṟ
-\DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}         % ṟ
-
-\DeclareUnicodeCharacter{1E60}{\dotaccent{S}}          % Ṡ
-\DeclareUnicodeCharacter{1E61}{\dotaccent{s}}          % ṡ
-\DeclareUnicodeCharacter{1E62}{\udotaccent{S}}         % Ṣ
-\DeclareUnicodeCharacter{1E63}{\udotaccent{s}}         % ṣ
-\DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}          % Ṫ
-\DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}          % ṫ
-\DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}         % Ṭ
-\DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}         % ṭ
-\DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}         % Ṯ
-\DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}         % ṯ
-
-\DeclareUnicodeCharacter{1E7C}{\~V}                    % Ṽ
-\DeclareUnicodeCharacter{1E7D}{\~v}                    % ṽ
-\DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}         % Ṿ
-\DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}         % ṿ
-
-\DeclareUnicodeCharacter{1E80}{\`W}                    % Ẁ
-\DeclareUnicodeCharacter{1E81}{\`w}                    % ẁ
-\DeclareUnicodeCharacter{1E82}{\'W}                    % Ẃ
-\DeclareUnicodeCharacter{1E83}{\'w}                    % ẃ
-\DeclareUnicodeCharacter{1E84}{\"W}                    % Ẅ
-\DeclareUnicodeCharacter{1E85}{\"w}                    % ẅ
-\DeclareUnicodeCharacter{1E86}{\dotaccent{W}}          % Ẇ
-\DeclareUnicodeCharacter{1E87}{\dotaccent{w}}          % ẇ
-\DeclareUnicodeCharacter{1E88}{\udotaccent{W}}         % Ẉ
-\DeclareUnicodeCharacter{1E89}{\udotaccent{w}}         % ẉ
-\DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}          % Ẋ
-\DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}          % ẋ
-\DeclareUnicodeCharacter{1E8C}{\"X}                    % Ẍ
-\DeclareUnicodeCharacter{1E8D}{\"x}                    % ẍ
-\DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}          % Ẏ
-\DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}          % ẏ
-
-\DeclareUnicodeCharacter{1E90}{\^Z}                    % Ẑ
-\DeclareUnicodeCharacter{1E91}{\^z}                    % ẑ
-\DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}         % Ẓ
-\DeclareUnicodeCharacter{1E93}{\udotaccent{z}}         % ẓ
-\DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}         % Ẕ
-\DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}         % ẕ
-\DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}         % ẖ
-\DeclareUnicodeCharacter{1E97}{\"t}                    % ẗ
-\DeclareUnicodeCharacter{1E98}{\ringaccent{w}}         % ẘ
-\DeclareUnicodeCharacter{1E99}{\ringaccent{y}}         % ẙ
-
-\DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}         % Ạ
-\DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}         % ạ
-
-\DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}         % Ẹ
-\DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}         % ẹ
-\DeclareUnicodeCharacter{1EBC}{\~E}                    % Ẽ
-\DeclareUnicodeCharacter{1EBD}{\~e}                    % ẽ
-
-\DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}         % Ị
-\DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}         % ị
-\DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}         % Ọ
-\DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}         % ọ
-
-\DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}         % Ụ
-\DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}         % ụ
-
-\DeclareUnicodeCharacter{1EF2}{\`Y}                    % Ỳ
-\DeclareUnicodeCharacter{1EF3}{\`y}                    % ỳ
-\DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}         % Ỵ
-%\DeclareUnicodeCharacter{1EF5}{\udotaccent{y}}                % ỵ
-\DeclareUnicodeCharacter{1EF8}{\~Y}                    % Ỹ
-\DeclareUnicodeCharacter{1EF9}{\~y}                    % ỹ
-
-\DeclareUnicodeCharacter{2013}{--}                     % –
-\DeclareUnicodeCharacter{2014}{---}                    % —
-\DeclareUnicodeCharacter{2022}{\bullet}                        % •
-\DeclareUnicodeCharacter{2026}{\dots}                  % …
-\DeclareUnicodeCharacter{20AC}{\euro}                  % €
-
-\DeclareUnicodeCharacter{2192}{\expansion}             % →
-\DeclareUnicodeCharacter{21D2}{\result}                        % ⇒
-
-\DeclareUnicodeCharacter{2212}{\minus}                 % −
-\DeclareUnicodeCharacter{2217}{\point}                 % ∗
-\DeclareUnicodeCharacter{2261}{\equiv}                 % ≡
-
-@end tex
index 62fa9a4f63b8c8f639f251fcaa7861d1b5ce2266..060f622245978dc97a558d88ac955a894817483a 100644 (file)
@@ -3,11 +3,11 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2006-06-01.17}
+\def\texinfoversion{2007-06-26.23}
 %
 % Copyright (C) 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
-% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free
-% Software Foundation, Inc.
+% 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
+% 2007 Free Software Foundation, Inc.
 %
 % This texinfo.tex file is free software; you can redistribute it and/or
 % modify it under the terms of the GNU General Public License as
@@ -67,7 +67,7 @@
 \everyjob{\message{[Texinfo version \texinfoversion]}%
   \catcode`+=\active \catcode`\_=\active}
 
-\message{Basics,}
+
 \chardef\other=12
 
 % We never want plain's \outer definition of \+ in Texinfo.
 \chardef\spacecat = 10
 \def\spaceisspace{\catcode`\ =\spacecat}
 
+% sometimes characters are active, so we need control sequences.
+\chardef\colonChar = `\:
+\chardef\commaChar = `\,
+\chardef\dashChar  = `\-
+\chardef\dotChar   = `\.
+\chardef\exclamChar= `\!
+\chardef\lquoteChar= `\`
+\chardef\questChar = `\?
+\chardef\rquoteChar= `\'
+\chardef\semiChar  = `\;
+\chardef\underChar = `\_
+
 % Ignore a token.
 %
 \def\gobble#1{}
       \pagebody{#1}%
       \ifdim\ht\footlinebox > 0pt
         % Only leave this space if the footline is nonempty.
-        % (We lessened \vsize for it in \oddfootingxxx.)
+        % (We lessened \vsize for it in \oddfootingyyy.)
         % The \baselineskip=24pt in plain's \makefootline has no effect.
-        \vskip 2\baselineskip
+        \vskip 24pt
         \unvbox\footlinebox
       \fi
       %
@@ -1213,8 +1225,9 @@ where each line of input produces a line of output.}
 
 % To handle parens, we must adopt a different approach, since parens are
 % not active characters.  hyperref.dtx (which has the same problem as
-% us) handles it with this amazing macro to replace tokens.  I've
-% tinkered with it a little for texinfo, but it's definitely from there.
+% us) handles it with this amazing macro to replace tokens, with minor
+% changes for Texinfo.  It is included here under the GPL by permission
+% from the author, Heiko Oberdiek.
 % 
 % #1 is the tokens to replace.
 % #2 is the replacement.
@@ -1243,13 +1256,44 @@ where each line of input produces a line of output.}
   \HyPsdSubst{)}{\realbackslash)}{#1}%
 }
 
+\newhelp\nopdfimagehelp{Texinfo supports .png, .jpg, .jpeg, and .pdf images
+with PDF output, and none of those formats could be found.  (.eps cannot
+be supported due to the design of the PDF format; use regular TeX (DVI
+output) for that.)}
+
 \ifpdf
   \input pdfcolor
-  \pdfcatalog{/PageMode /UseOutlines}%
+  \pdfcatalog{/PageMode /UseOutlines}
+  %
   % #1 is image name, #2 width (might be empty/whitespace), #3 height (ditto).
   \def\dopdfimage#1#2#3{%
     \def\imagewidth{#2}\setbox0 = \hbox{\ignorespaces #2}%
     \def\imageheight{#3}\setbox2 = \hbox{\ignorespaces #3}%
+    %
+    % pdftex (and the PDF format) support .png, .jpg, .pdf (among
+    % others).  Let's try in that order.
+    \let\pdfimgext=\empty
+    \begingroup
+      \openin 1 #1.png \ifeof 1
+        \openin 1 #1.jpg \ifeof 1
+          \openin 1 #1.jpeg \ifeof 1
+            \openin 1 #1.JPG \ifeof 1
+              \openin 1 #1.pdf \ifeof 1
+                \errhelp = \nopdfimagehelp
+                \errmessage{Could not find image file #1 for pdf}%
+              \else \gdef\pdfimgext{pdf}%
+              \fi
+            \else \gdef\pdfimgext{JPG}%
+            \fi
+          \else \gdef\pdfimgext{jpeg}%
+          \fi
+        \else \gdef\pdfimgext{jpg}%
+        \fi
+      \else \gdef\pdfimgext{png}%
+      \fi
+      \closein 1
+    \endgroup
+    %
     % without \immediate, pdftex seg faults when the same image is
     % included twice.  (Version 3.14159-pre-1.0-unofficial-20010704.)
     \ifnum\pdftexversion < 14
@@ -1260,28 +1304,36 @@ where each line of input produces a line of output.}
       \ifdim \wd0 >0pt width \imagewidth \fi
       \ifdim \wd2 >0pt height \imageheight \fi
       \ifnum\pdftexversion<13
-         #1.pdf%
+         #1.\pdfimgext
        \else
-         {#1.pdf}%
+         {#1.\pdfimgext}%
        \fi
     \ifnum\pdftexversion < 14 \else
       \pdfrefximage \pdflastximage
     \fi}
+  %
   \def\pdfmkdest#1{{%
     % We have to set dummies so commands such as @code, and characters
     % such as \, aren't expanded when present in a section title.
-    \atdummies
+    \indexnofonts
+    \turnoffactive
     \activebackslashdouble
+    \makevalueexpandable
     \def\pdfdestname{#1}%
     \backslashparens\pdfdestname
-    \pdfdest name{\pdfdestname} xyz%
-  }}%
+    \safewhatsit{\pdfdest name{\pdfdestname} xyz}%
+  }}
   %
   % used to mark target names; must be expandable.
-  \def\pdfmkpgn#1{#1}%
+  \def\pdfmkpgn#1{#1}
   %
-  \let\linkcolor = \Blue  % was Cyan, but that seems light?
+  % by default, use a color that is dark enough to print on paper as
+  % nearly black, but still distinguishable for online viewing.
+  % (Defined in pdfcolor.tex.)
+  \let\urlcolor = \BrickRed
+  \let\linkcolor = \BrickRed
   \def\endlink{\Black\pdfendlink}
+  %
   % Adding outlines to PDF; macros for calculating structure of outlines
   % come from Petr Olsak
   \def\expnumber#1{\expandafter\ifx\csname#1\endcsname\relax 0%
@@ -1383,7 +1435,7 @@ where each line of input produces a line of output.}
       \indexnofonts
       \setupdatafile
       \catcode`\\=\active \otherbackslash
-      \input \jobname.toc
+      \input \tocreadfilename
     \endgroup
   }
   %
@@ -1413,7 +1465,7 @@ where each line of input produces a line of output.}
       \def\@{@}%
       \let\/=\empty
       \makevalueexpandable
-      \leavevmode\Red
+      \leavevmode\urlcolor
       \startlink attr{/Border [0 0 0]}%
         user{/Subtype /Link /A << /S /URI /URI (#1) >>}%
     \endgroup}
@@ -1503,11 +1555,276 @@ where each line of input produces a line of output.}
   }%
 }
 
+%
+% PDF CMaps.  See also LaTeX's t1.cmap.
+%
+% \cmapOT1
+\ifpdf
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1-0)
+%%Title: (TeX-OT1-0 TeX OT1 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<23> <26> <0023>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+40 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+%
+% \cmapOT1IT
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1IT-0)
+%%Title: (TeX-OT1IT-0 TeX OT1IT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1IT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1IT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+8 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<25> <26> <0025>
+<28> <3B> <0028>
+<3F> <5B> <003F>
+<5D> <5E> <005D>
+<61> <7A> <0061>
+<7B> <7C> <2013>
+endbfrange
+42 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <00660066>
+<0C> <00660069>
+<0D> <0066006C>
+<0E> <006600660069>
+<0F> <00660066006C>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<21> <0021>
+<22> <201D>
+<23> <0023>
+<24> <00A3>
+<27> <2019>
+<3C> <00A1>
+<3D> <003D>
+<3E> <00BF>
+<5C> <201C>
+<5F> <02D9>
+<60> <2018>
+<7D> <02DD>
+<7E> <007E>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1IT\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+%
+% \cmapOT1TT
+  \begingroup
+    \catcode`\^^M=\active \def^^M{^^J}% Output line endings as the ^^J char.
+    \catcode`\%=12 \immediate\pdfobj stream {%!PS-Adobe-3.0 Resource-CMap
+%%DocumentNeededResources: ProcSet (CIDInit)
+%%IncludeResource: ProcSet (CIDInit)
+%%BeginResource: CMap (TeX-OT1TT-0)
+%%Title: (TeX-OT1TT-0 TeX OT1TT 0)
+%%Version: 1.000
+%%EndComments
+/CIDInit /ProcSet findresource begin
+12 dict begin
+begincmap
+/CIDSystemInfo
+<< /Registry (TeX)
+/Ordering (OT1TT)
+/Supplement 0
+>> def
+/CMapName /TeX-OT1TT-0 def
+/CMapType 2 def
+1 begincodespacerange
+<00> <7F>
+endcodespacerange
+5 beginbfrange
+<00> <01> <0393>
+<09> <0A> <03A8>
+<21> <26> <0021>
+<28> <5F> <0028>
+<61> <7E> <0061>
+endbfrange
+32 beginbfchar
+<02> <0398>
+<03> <039B>
+<04> <039E>
+<05> <03A0>
+<06> <03A3>
+<07> <03D2>
+<08> <03A6>
+<0B> <2191>
+<0C> <2193>
+<0D> <0027>
+<0E> <00A1>
+<0F> <00BF>
+<10> <0131>
+<11> <0237>
+<12> <0060>
+<13> <00B4>
+<14> <02C7>
+<15> <02D8>
+<16> <00AF>
+<17> <02DA>
+<18> <00B8>
+<19> <00DF>
+<1A> <00E6>
+<1B> <0153>
+<1C> <00F8>
+<1D> <00C6>
+<1E> <0152>
+<1F> <00D8>
+<20> <2423>
+<27> <2019>
+<60> <2018>
+<7F> <00A8>
+endbfchar
+endcmap
+CMapName currentdict /CMap defineresource pop
+end
+end
+%%EndResource
+%%EOF
+    }\endgroup
+  \expandafter\edef\csname cmapOT1TT\endcsname#1{%
+    \pdffontattr#1{/ToUnicode \the\pdflastobj\space 0 R}%
+  }%
+\else
+  \expandafter\let\csname cmapOT1\endcsname\gobble
+  \expandafter\let\csname cmapOT1IT\endcsname\gobble
+  \expandafter\let\csname cmapOT1TT\endcsname\gobble
+\fi
+
 
 % Set the font macro #1 to the font named #2, adding on the
 % specified font prefix (normally `cm').
-% #3 is the font's design size, #4 is a scale factor
-\def\setfont#1#2#3#4{\font#1=\fontprefix#2#3 scaled #4}
+% #3 is the font's design size, #4 is a scale factor, #5 is the CMap
+% encoding (currently only OT1, OT1IT and OT1TT are allowed, pass
+% empty to omit).
+\def\setfont#1#2#3#4#5{%
+  \font#1=\fontprefix#2#3 scaled #4
+  \csname cmap#5\endcsname#1%
+}
+% This is what gets called when #5 of \setfont is empty.
+\let\cmap\gobble
 
 
 % Use cm as the default font prefix.
@@ -1536,63 +1853,63 @@ where each line of input produces a line of output.}
 % Definitions for a main text size of 11pt.  This is the default in
 % Texinfo.
 % 
-\def\definetextfontsizexi{
+\def\definetextfontsizexi{%
 % Text fonts (11.2pt, magstep1).
 \def\textnominalsize{11pt}
 \edef\mainmagstep{\magstephalf}
-\setfont\textrm\rmshape{10}{\mainmagstep}
-\setfont\texttt\ttshape{10}{\mainmagstep}
-\setfont\textbf\bfshape{10}{\mainmagstep}
-\setfont\textit\itshape{10}{\mainmagstep}
-\setfont\textsl\slshape{10}{\mainmagstep}
-\setfont\textsf\sfshape{10}{\mainmagstep}
-\setfont\textsc\scshape{10}{\mainmagstep}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
 \font\texti=cmmi10 scaled \mainmagstep
 \font\textsy=cmsy10 scaled \mainmagstep
 
 % A few fonts for @defun names and args.
-\setfont\defbf\bfshape{10}{\magstep1}
-\setfont\deftt\ttshape{10}{\magstep1}
-\setfont\defttsl\ttslshape{10}{\magstep1}
+\setfont\defbf\bfshape{10}{\magstep1}{OT1}
+\setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
 \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
 
 % Fonts for indices, footnotes, small examples (9pt).
 \def\smallnominalsize{9pt}
-\setfont\smallrm\rmshape{9}{1000}
-\setfont\smalltt\ttshape{9}{1000}
-\setfont\smallbf\bfshape{10}{900}
-\setfont\smallit\itshape{9}{1000}
-\setfont\smallsl\slshape{9}{1000}
-\setfont\smallsf\sfshape{9}{1000}
-\setfont\smallsc\scshape{10}{900}
-\setfont\smallttsl\ttslshape{10}{900}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
 \font\smalli=cmmi9
 \font\smallsy=cmsy9
 
 % Fonts for small examples (8pt).
 \def\smallernominalsize{8pt}
-\setfont\smallerrm\rmshape{8}{1000}
-\setfont\smallertt\ttshape{8}{1000}
-\setfont\smallerbf\bfshape{10}{800}
-\setfont\smallerit\itshape{8}{1000}
-\setfont\smallersl\slshape{8}{1000}
-\setfont\smallersf\sfshape{8}{1000}
-\setfont\smallersc\scshape{10}{800}
-\setfont\smallerttsl\ttslshape{10}{800}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
 \font\smalleri=cmmi8
 \font\smallersy=cmsy8
 
 % Fonts for title page (20.4pt):
 \def\titlenominalsize{20pt}
-\setfont\titlerm\rmbshape{12}{\magstep3}
-\setfont\titleit\itbshape{10}{\magstep4}
-\setfont\titlesl\slbshape{10}{\magstep4}
-\setfont\titlett\ttbshape{12}{\magstep3}
-\setfont\titlettsl\ttslshape{10}{\magstep4}
-\setfont\titlesf\sfbshape{17}{\magstep1}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
 \let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
 \font\titlei=cmmi12 scaled \magstep3
 \font\titlesy=cmsy10 scaled \magstep4
 \def\authorrm{\secrm}
@@ -1600,53 +1917,53 @@ where each line of input produces a line of output.}
 
 % Chapter (and unnumbered) fonts (17.28pt).
 \def\chapnominalsize{17pt}
-\setfont\chaprm\rmbshape{12}{\magstep2}
-\setfont\chapit\itbshape{10}{\magstep3}
-\setfont\chapsl\slbshape{10}{\magstep3}
-\setfont\chaptt\ttbshape{12}{\magstep2}
-\setfont\chapttsl\ttslshape{10}{\magstep3}
-\setfont\chapsf\sfbshape{17}{1000}
+\setfont\chaprm\rmbshape{12}{\magstep2}{OT1}
+\setfont\chapit\itbshape{10}{\magstep3}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep3}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep2}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep3}{OT1TT}
+\setfont\chapsf\sfbshape{17}{1000}{OT1}
 \let\chapbf=\chaprm
-\setfont\chapsc\scbshape{10}{\magstep3}
+\setfont\chapsc\scbshape{10}{\magstep3}{OT1}
 \font\chapi=cmmi12 scaled \magstep2
 \font\chapsy=cmsy10 scaled \magstep3
 
 % Section fonts (14.4pt).
 \def\secnominalsize{14pt}
-\setfont\secrm\rmbshape{12}{\magstep1}
-\setfont\secit\itbshape{10}{\magstep2}
-\setfont\secsl\slbshape{10}{\magstep2}
-\setfont\sectt\ttbshape{12}{\magstep1}
-\setfont\secttsl\ttslshape{10}{\magstep2}
-\setfont\secsf\sfbshape{12}{\magstep1}
+\setfont\secrm\rmbshape{12}{\magstep1}{OT1}
+\setfont\secit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep2}{OT1}
+\setfont\sectt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\secsf\sfbshape{12}{\magstep1}{OT1}
 \let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep2}
+\setfont\secsc\scbshape{10}{\magstep2}{OT1}
 \font\seci=cmmi12 scaled \magstep1
 \font\secsy=cmsy10 scaled \magstep2
 
 % Subsection fonts (13.15pt).
 \def\ssecnominalsize{13pt}
-\setfont\ssecrm\rmbshape{12}{\magstephalf}
-\setfont\ssecit\itbshape{10}{1315}
-\setfont\ssecsl\slbshape{10}{1315}
-\setfont\ssectt\ttbshape{12}{\magstephalf}
-\setfont\ssecttsl\ttslshape{10}{1315}
-\setfont\ssecsf\sfbshape{12}{\magstephalf}
+\setfont\ssecrm\rmbshape{12}{\magstephalf}{OT1}
+\setfont\ssecit\itbshape{10}{1315}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1315}{OT1}
+\setfont\ssectt\ttbshape{12}{\magstephalf}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1315}{OT1TT}
+\setfont\ssecsf\sfbshape{12}{\magstephalf}{OT1}
 \let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{1315}
+\setfont\ssecsc\scbshape{10}{1315}{OT1}
 \font\sseci=cmmi12 scaled \magstephalf
 \font\ssecsy=cmsy10 scaled 1315
 
 % Reduced fonts for @acro in text (10pt).
 \def\reducednominalsize{10pt}
-\setfont\reducedrm\rmshape{10}{1000}
-\setfont\reducedtt\ttshape{10}{1000}
-\setfont\reducedbf\bfshape{10}{1000}
-\setfont\reducedit\itshape{10}{1000}
-\setfont\reducedsl\slshape{10}{1000}
-\setfont\reducedsf\sfshape{10}{1000}
-\setfont\reducedsc\scshape{10}{1000}
-\setfont\reducedttsl\ttslshape{10}{1000}
+\setfont\reducedrm\rmshape{10}{1000}{OT1}
+\setfont\reducedtt\ttshape{10}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{1000}{OT1}
+\setfont\reducedit\itshape{10}{1000}{OT1IT}
+\setfont\reducedsl\slshape{10}{1000}{OT1}
+\setfont\reducedsf\sfshape{10}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{1000}{OT1}
+\setfont\reducedttsl\ttslshape{10}{1000}{OT1TT}
 \font\reducedi=cmmi10
 \font\reducedsy=cmsy10
 
@@ -1665,59 +1982,59 @@ where each line of input produces a line of output.}
 % Text fonts (10pt).
 \def\textnominalsize{10pt}
 \edef\mainmagstep{1000}
-\setfont\textrm\rmshape{10}{\mainmagstep}
-\setfont\texttt\ttshape{10}{\mainmagstep}
-\setfont\textbf\bfshape{10}{\mainmagstep}
-\setfont\textit\itshape{10}{\mainmagstep}
-\setfont\textsl\slshape{10}{\mainmagstep}
-\setfont\textsf\sfshape{10}{\mainmagstep}
-\setfont\textsc\scshape{10}{\mainmagstep}
-\setfont\textttsl\ttslshape{10}{\mainmagstep}
+\setfont\textrm\rmshape{10}{\mainmagstep}{OT1}
+\setfont\texttt\ttshape{10}{\mainmagstep}{OT1TT}
+\setfont\textbf\bfshape{10}{\mainmagstep}{OT1}
+\setfont\textit\itshape{10}{\mainmagstep}{OT1IT}
+\setfont\textsl\slshape{10}{\mainmagstep}{OT1}
+\setfont\textsf\sfshape{10}{\mainmagstep}{OT1}
+\setfont\textsc\scshape{10}{\mainmagstep}{OT1}
+\setfont\textttsl\ttslshape{10}{\mainmagstep}{OT1TT}
 \font\texti=cmmi10 scaled \mainmagstep
 \font\textsy=cmsy10 scaled \mainmagstep
 
 % A few fonts for @defun names and args.
-\setfont\defbf\bfshape{10}{\magstephalf}
-\setfont\deftt\ttshape{10}{\magstephalf}
-\setfont\defttsl\ttslshape{10}{\magstephalf}
+\setfont\defbf\bfshape{10}{\magstephalf}{OT1}
+\setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
+\setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
 \def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
 
 % Fonts for indices, footnotes, small examples (9pt).
 \def\smallnominalsize{9pt}
-\setfont\smallrm\rmshape{9}{1000}
-\setfont\smalltt\ttshape{9}{1000}
-\setfont\smallbf\bfshape{10}{900}
-\setfont\smallit\itshape{9}{1000}
-\setfont\smallsl\slshape{9}{1000}
-\setfont\smallsf\sfshape{9}{1000}
-\setfont\smallsc\scshape{10}{900}
-\setfont\smallttsl\ttslshape{10}{900}
+\setfont\smallrm\rmshape{9}{1000}{OT1}
+\setfont\smalltt\ttshape{9}{1000}{OT1TT}
+\setfont\smallbf\bfshape{10}{900}{OT1}
+\setfont\smallit\itshape{9}{1000}{OT1IT}
+\setfont\smallsl\slshape{9}{1000}{OT1}
+\setfont\smallsf\sfshape{9}{1000}{OT1}
+\setfont\smallsc\scshape{10}{900}{OT1}
+\setfont\smallttsl\ttslshape{10}{900}{OT1TT}
 \font\smalli=cmmi9
 \font\smallsy=cmsy9
 
 % Fonts for small examples (8pt).
 \def\smallernominalsize{8pt}
-\setfont\smallerrm\rmshape{8}{1000}
-\setfont\smallertt\ttshape{8}{1000}
-\setfont\smallerbf\bfshape{10}{800}
-\setfont\smallerit\itshape{8}{1000}
-\setfont\smallersl\slshape{8}{1000}
-\setfont\smallersf\sfshape{8}{1000}
-\setfont\smallersc\scshape{10}{800}
-\setfont\smallerttsl\ttslshape{10}{800}
+\setfont\smallerrm\rmshape{8}{1000}{OT1}
+\setfont\smallertt\ttshape{8}{1000}{OT1TT}
+\setfont\smallerbf\bfshape{10}{800}{OT1}
+\setfont\smallerit\itshape{8}{1000}{OT1IT}
+\setfont\smallersl\slshape{8}{1000}{OT1}
+\setfont\smallersf\sfshape{8}{1000}{OT1}
+\setfont\smallersc\scshape{10}{800}{OT1}
+\setfont\smallerttsl\ttslshape{10}{800}{OT1TT}
 \font\smalleri=cmmi8
 \font\smallersy=cmsy8
 
 % Fonts for title page (20.4pt):
 \def\titlenominalsize{20pt}
-\setfont\titlerm\rmbshape{12}{\magstep3}
-\setfont\titleit\itbshape{10}{\magstep4}
-\setfont\titlesl\slbshape{10}{\magstep4}
-\setfont\titlett\ttbshape{12}{\magstep3}
-\setfont\titlettsl\ttslshape{10}{\magstep4}
-\setfont\titlesf\sfbshape{17}{\magstep1}
+\setfont\titlerm\rmbshape{12}{\magstep3}{OT1}
+\setfont\titleit\itbshape{10}{\magstep4}{OT1IT}
+\setfont\titlesl\slbshape{10}{\magstep4}{OT1}
+\setfont\titlett\ttbshape{12}{\magstep3}{OT1TT}
+\setfont\titlettsl\ttslshape{10}{\magstep4}{OT1TT}
+\setfont\titlesf\sfbshape{17}{\magstep1}{OT1}
 \let\titlebf=\titlerm
-\setfont\titlesc\scbshape{10}{\magstep4}
+\setfont\titlesc\scbshape{10}{\magstep4}{OT1}
 \font\titlei=cmmi12 scaled \magstep3
 \font\titlesy=cmsy10 scaled \magstep4
 \def\authorrm{\secrm}
@@ -1725,53 +2042,53 @@ where each line of input produces a line of output.}
 
 % Chapter fonts (14.4pt).
 \def\chapnominalsize{14pt}
-\setfont\chaprm\rmbshape{12}{\magstep1}
-\setfont\chapit\itbshape{10}{\magstep2}
-\setfont\chapsl\slbshape{10}{\magstep2}
-\setfont\chaptt\ttbshape{12}{\magstep1}
-\setfont\chapttsl\ttslshape{10}{\magstep2}
-\setfont\chapsf\sfbshape{12}{\magstep1}
+\setfont\chaprm\rmbshape{12}{\magstep1}{OT1}
+\setfont\chapit\itbshape{10}{\magstep2}{OT1IT}
+\setfont\chapsl\slbshape{10}{\magstep2}{OT1}
+\setfont\chaptt\ttbshape{12}{\magstep1}{OT1TT}
+\setfont\chapttsl\ttslshape{10}{\magstep2}{OT1TT}
+\setfont\chapsf\sfbshape{12}{\magstep1}{OT1}
 \let\chapbf\chaprm
-\setfont\chapsc\scbshape{10}{\magstep2}
+\setfont\chapsc\scbshape{10}{\magstep2}{OT1}
 \font\chapi=cmmi12 scaled \magstep1
 \font\chapsy=cmsy10 scaled \magstep2
 
 % Section fonts (12pt).
 \def\secnominalsize{12pt}
-\setfont\secrm\rmbshape{12}{1000}
-\setfont\secit\itbshape{10}{\magstep1}
-\setfont\secsl\slbshape{10}{\magstep1}
-\setfont\sectt\ttbshape{12}{1000}
-\setfont\secttsl\ttslshape{10}{\magstep1}
-\setfont\secsf\sfbshape{12}{1000}
+\setfont\secrm\rmbshape{12}{1000}{OT1}
+\setfont\secit\itbshape{10}{\magstep1}{OT1IT}
+\setfont\secsl\slbshape{10}{\magstep1}{OT1}
+\setfont\sectt\ttbshape{12}{1000}{OT1TT}
+\setfont\secttsl\ttslshape{10}{\magstep1}{OT1TT}
+\setfont\secsf\sfbshape{12}{1000}{OT1}
 \let\secbf\secrm
-\setfont\secsc\scbshape{10}{\magstep1}
+\setfont\secsc\scbshape{10}{\magstep1}{OT1}
 \font\seci=cmmi12 
 \font\secsy=cmsy10 scaled \magstep1
 
 % Subsection fonts (10pt).
 \def\ssecnominalsize{10pt}
-\setfont\ssecrm\rmbshape{10}{1000}
-\setfont\ssecit\itbshape{10}{1000}
-\setfont\ssecsl\slbshape{10}{1000}
-\setfont\ssectt\ttbshape{10}{1000}
-\setfont\ssecttsl\ttslshape{10}{1000}
-\setfont\ssecsf\sfbshape{10}{1000}
+\setfont\ssecrm\rmbshape{10}{1000}{OT1}
+\setfont\ssecit\itbshape{10}{1000}{OT1IT}
+\setfont\ssecsl\slbshape{10}{1000}{OT1}
+\setfont\ssectt\ttbshape{10}{1000}{OT1TT}
+\setfont\ssecttsl\ttslshape{10}{1000}{OT1TT}
+\setfont\ssecsf\sfbshape{10}{1000}{OT1}
 \let\ssecbf\ssecrm
-\setfont\ssecsc\scbshape{10}{1000}
+\setfont\ssecsc\scbshape{10}{1000}{OT1}
 \font\sseci=cmmi10
 \font\ssecsy=cmsy10
 
 % Reduced fonts for @acro in text (9pt).
 \def\reducednominalsize{9pt}
-\setfont\reducedrm\rmshape{9}{1000}
-\setfont\reducedtt\ttshape{9}{1000}
-\setfont\reducedbf\bfshape{10}{900}
-\setfont\reducedit\itshape{9}{1000}
-\setfont\reducedsl\slshape{9}{1000}
-\setfont\reducedsf\sfshape{9}{1000}
-\setfont\reducedsc\scshape{10}{900}
-\setfont\reducedttsl\ttslshape{10}{900}
+\setfont\reducedrm\rmshape{9}{1000}{OT1}
+\setfont\reducedtt\ttshape{9}{1000}{OT1TT}
+\setfont\reducedbf\bfshape{10}{900}{OT1}
+\setfont\reducedit\itshape{9}{1000}{OT1IT}
+\setfont\reducedsl\slshape{9}{1000}{OT1}
+\setfont\reducedsf\sfshape{9}{1000}{OT1}
+\setfont\reducedsc\scshape{10}{900}{OT1}
+\setfont\reducedttsl\ttslshape{10}{900}{OT1TT}
 \font\reducedi=cmmi9
 \font\reducedsy=cmsy9
 
@@ -1929,10 +2246,10 @@ where each line of input produces a line of output.}
 \newcount\fontdepth \fontdepth=0
 
 % Fonts for short table of contents.
-\setfont\shortcontrm\rmshape{12}{1000}
-\setfont\shortcontbf\bfshape{10}{\magstep1}  % no cmb12
-\setfont\shortcontsl\slshape{12}{1000}
-\setfont\shortconttt\ttshape{12}{1000}
+\setfont\shortcontrm\rmshape{12}{1000}{OT1}
+\setfont\shortcontbf\bfshape{10}{\magstep1}{OT1}  % no cmb12
+\setfont\shortcontsl\slshape{12}{1000}{OT1}
+\setfont\shortconttt\ttshape{12}{1000}{OT1TT}
 
 %% Add scribe-like font environments, plus @l for inline lisp (usually sans
 %% serif) and @ii for TeX italic
@@ -1976,13 +2293,6 @@ where each line of input produces a line of output.}
 % Can't use plain's \frenchspacing because it uses the `\x notation, and
 % sometimes \x has an active definition that messes things up.
 %
-\chardef\colonChar = `\:
-\chardef\commaChar = `\,
-\chardef\dotChar   = `\.
-\chardef\exclamChar= `\!
-\chardef\questChar = `\?
-\chardef\semiChar  = `\;
-%
 \catcode`@=11
   \def\plainfrenchspacing{%
     \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
@@ -2002,7 +2312,7 @@ where each line of input produces a line of output.}
   \null
 }
 \def\samp#1{`\tclose{#1}'\null}
-\setfont\keyrm\rmshape{8}{1000}
+\setfont\keyrm\rmshape{8}{1000}{OT1}
 \font\keysy=cmsy9
 \def\key#1{{\keyrm\textfont2=\keysy \leavevmode\hbox{%
   \raise0.4pt\hbox{\angleleft}\kern-.08em\vtop{%
@@ -2010,6 +2320,7 @@ where each line of input produces a line of output.}
      \hbox{\raise0.4pt\hbox{\vphantom{\angleleft}}#1}}%
     \kern-0.4pt\hrule}%
   \kern-.06em\raise0.4pt\hbox{\angleright}}}}
+\def\key #1{{\nohyphenation \uppercase{#1}}\null}
 % The old definition, with no lozenge:
 %\def\key #1{{\ttsl \nohyphenation \uppercase{#1}}\null}
 \def\ctrl #1{{\tt \rawbackslash \hat}#1}
@@ -2051,14 +2362,14 @@ where each line of input produces a line of output.}
 % and arrange explicitly to hyphenate at a dash.
 %  -- rms.
 {
-  \catcode`\-=\active
-  \catcode`\_=\active
-  \catcode`\'=\active
+  \catcode`\-=\active \catcode`\_=\active
+  \catcode`\'=\active \catcode`\`=\active
   %
   \global\def\code{\begingroup
-    \catcode`\-=\active  \catcode`\_=\active
-    \catcode`\'=\active
-    \let'\singlequotechar
+    \catcode\rquoteChar=\active \catcode\lquoteChar=\active
+    \let'\codequoteright \let`\codequoteleft
+    %
+    \catcode\dashChar=\active  \catcode\underChar=\active
     \ifallowcodebreaks
      \let-\codedash
      \let_\codeunder
@@ -2304,6 +2615,10 @@ where each line of input produces a line of output.}
     }$%
 }
 
+% @textdegree - the normal degrees sign.
+%
+\def\textdegree{$^\circ$}
+
 % Laurent Siebenmann reports \Orb undefined with:
 %  Textures 1.7.7 (preloaded format=plain 93.10.14)  (68K)  16 APR 2004 02:38
 % so we'll define it if necessary.
@@ -2475,8 +2790,8 @@ where each line of input produces a line of output.}
   %
   % Leave some space for the footline.  Hopefully ok to assume
   % @evenfooting will not be used by itself.
-  \global\advance\pageheight by -\baselineskip
-  \global\advance\vsize by -\baselineskip
+  \global\advance\pageheight by -12pt
+  \global\advance\vsize by -12pt
 }
 
 \parseargdef\everyfooting{\oddfootingxxx{#1}\evenfootingxxx{#1}}
@@ -3527,6 +3842,7 @@ where each line of input produces a line of output.}
   \definedummyword\point
   \definedummyword\print
   \definedummyword\result
+  \definedummyword\textdegree
   %
   % We want to disable all macros so that they are not expanded by \write.
   \macrolist
@@ -3660,6 +3976,7 @@ where each line of input produces a line of output.}
   \def\point{.}%
   \def\print{-|}%
   \def\result{=>}%
+  \def\textdegree{degrees}%
   %
   % We need to get rid of all macros, leaving only the arguments (if present).
   % Of course this is not nearly correct, but it is the best we can do for now.
@@ -3699,11 +4016,7 @@ where each line of input produces a line of output.}
     %
     \edef\writeto{\csname#1indfile\endcsname}%
     %
-    \ifvmode
-      \dosubindsanitize
-    \else
-      \dosubindwrite
-    \fi
+    \safewhatsit\dosubindwrite
   }%
   \fi
 }
@@ -3740,13 +4053,13 @@ where each line of input produces a line of output.}
   \temp
 }
 
-% Take care of unwanted page breaks:
+% Take care of unwanted page breaks/skips around a whatsit:
 %
 % If a skip is the last thing on the list now, preserve it
 % by backing up by \lastskip, doing the \write, then inserting
 % the skip again.  Otherwise, the whatsit generated by the
-% \write will make \lastskip zero.  The result is that sequences
-% like this:
+% \write or \pdfdest will make \lastskip zero.  The result is that
+% sequences like this:
 % @end defun
 % @tindex whatever
 % @defun ...
@@ -3770,13 +4083,19 @@ where each line of input produces a line of output.}
 %
 \edef\zeroskipmacro{\expandafter\the\csname z@skip\endcsname}
 %
+\newskip\whatsitskip
+\newcount\whatsitpenalty
+%
 % ..., ready, GO:
 %
-\def\dosubindsanitize{%
+\def\safewhatsit#1{%
+\ifhmode
+  #1%
+\else
   % \lastskip and \lastpenalty cannot both be nonzero simultaneously.
-  \skip0 = \lastskip
+  \whatsitskip = \lastskip
   \edef\lastskipmacro{\the\lastskip}%
-  \count255 = \lastpenalty
+  \whatsitpenalty = \lastpenalty
   %
   % If \lastskip is nonzero, that means the last item was a
   % skip.  And since a skip is discardable, that means this
@@ -3785,10 +4104,10 @@ where each line of input produces a line of output.}
   % breakpoint, therefore no \nobreak needed.
   \ifx\lastskipmacro\zeroskipmacro
   \else
-    \vskip-\skip0
+    \vskip-\whatsitskip
   \fi
   %
-  \dosubindwrite
+  #1%
   %
   \ifx\lastskipmacro\zeroskipmacro
     % If \lastskip was zero, perhaps the last item was a penalty, and
@@ -3802,13 +4121,14 @@ where each line of input produces a line of output.}
     %   Description.
     % would allow a break between the index-whatever whatsit
     % and the "Description." paragraph.
-    \ifnum\count255>9999 \penalty\count255 \fi
+    \ifnum\whatsitpenalty>9999 \penalty\whatsitpenalty \fi
   \else
     % On the other hand, if we had a nonzero \lastskip,
     % this make-up glue would be preceded by a non-discardable item
     % (the whatsit from the \write), so we must insert a \nobreak.
-    \nobreak\vskip\skip0
+    \nobreak\vskip\whatsitskip
   \fi
+\fi
 }
 
 % The index entry written in the file actually looks like
@@ -3851,6 +4171,7 @@ where each line of input produces a line of output.}
   %
   \smallfonts \rm
   \tolerance = 9500
+  \plainfrenchspacing
   \everypar = {}% don't want the \kern\-parindent from indentation suppression.
   %
   % See if the index file exists and is nonempty.
@@ -3980,11 +4301,8 @@ where each line of input produces a line of output.}
     % The following is kludged to not output a line of dots in the index if
     % there are no page numbers.  The next person who breaks this will be
     % cursed by a Unix daemon.
-    \def\tempa{{\rm }}%
-    \def\tempb{#1}%
-    \edef\tempc{\tempa}%
-    \edef\tempd{\tempb}%
-    \ifx\tempc\tempd
+    \setbox\boxA = \hbox{#1}%
+    \ifdim\wd\boxA = 0pt
       \ %
     \else
       %
@@ -4008,9 +4326,9 @@ where each line of input produces a line of output.}
   \endgroup
 }
 
-% Like \dotfill except takes at least 1 em.
+% Like plain.tex's \dotfill, except uses up at least 1 em.
 \def\indexdotfill{\cleaders
-  \hbox{$\mathsurround=0pt \mkern1.5mu ${\it .}$ \mkern1.5mu$}\hskip 1em plus 1fill}
+  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
 
 \def\primary #1{\line{#1\hfil}}
 
@@ -4120,6 +4438,34 @@ where each line of input produces a line of output.}
 %
 % All done with double columns.
 \def\enddoublecolumns{%
+  % The following penalty ensures that the page builder is exercised
+  % _before_ we change the output routine.  This is necessary in the
+  % following situation:
+  %
+  % The last section of the index consists only of a single entry.
+  % Before this section, \pagetotal is less than \pagegoal, so no
+  % break occurs before the last section starts.  However, the last
+  % section, consisting of \initial and the single \entry, does not
+  % fit on the page and has to be broken off.  Without the following
+  % penalty the page builder will not be exercised until \eject
+  % below, and by that time we'll already have changed the output
+  % routine to the \balancecolumns version, so the next-to-last
+  % double-column page will be processed with \balancecolumns, which
+  % is wrong:  The two columns will go to the main vertical list, with
+  % the broken-off section in the recent contributions.  As soon as
+  % the output routine finishes, TeX starts reconsidering the page
+  % break.  The two columns and the broken-off section both fit on the
+  % page, because the two columns now take up only half of the page
+  % goal.  When TeX sees \eject from below which follows the final
+  % section, it invokes the new output routine that we've set after
+  % \balancecolumns below; \onepageout will try to fit the two columns
+  % and the final section into the vbox of \pageheight (see
+  % \pagebody), causing an overfull box.
+  %
+  % Note that glue won't work here, because glue does not exercise the
+  % page builder, unlike penalties (see The TeXbook, pp. 280-281).
+  \penalty0
+  %
   \output = {%
     % Split the last of the double-column material.  Leave it on the
     % current page, no automatic page break.
@@ -4828,7 +5174,7 @@ where each line of input produces a line of output.}
 \def\readtocfile{%
   \setupdatafile
   \activecatcodes
-  \input \jobname.toc
+  \input \tocreadfilename
 }
 
 \newskip\contentsrightmargin \contentsrightmargin=1in
@@ -4859,11 +5205,16 @@ where each line of input produces a line of output.}
     \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
 }
 
+% redefined for the two-volume lispref.  We always output on
+% \jobname.toc even if this is redefined.
+% 
+\def\tocreadfilename{\jobname.toc}
 
 % Normal (long) toc.
+%
 \def\contents{%
   \startcontents{\putwordTOC}%
-    \openin 1 \jobname.toc
+    \openin 1 \tocreadfilename\space
     \ifeof 1 \else
       \readtocfile
     \fi
@@ -4901,7 +5252,7 @@ where each line of input produces a line of output.}
     \let\numsubsubsecentry = \numsecentry
     \let\appsubsubsecentry = \numsecentry
     \let\unnsubsubsecentry = \numsecentry
-    \openin 1 \jobname.toc
+    \openin 1 \tocreadfilename\space
     \ifeof 1 \else
       \readtocfile
     \fi
@@ -5045,7 +5396,7 @@ where each line of input produces a line of output.}
 {\tentt \global\dimen0 = 3em}% Width of the box.
 \dimen2 = .55pt % Thickness of rules
 % The text. (`r' is open on the right, `e' somewhat less so on the left.)
-\setbox0 = \hbox{\kern-.75pt \tensf error\kern-1.5pt}
+\setbox0 = \hbox{\kern-.75pt \reducedsf error\kern-1.5pt}
 %
 \setbox\errorbox=\hbox to \dimen0{\hfil
    \hsize = \dimen0 \advance\hsize by -5.8pt % Space to left+right.
@@ -5236,12 +5587,18 @@ where each line of input produces a line of output.}
 \let\SETdispenvsize\relax
 \def\setnormaldispenv{%
   \ifx\SETdispenvsize\smallword
+    % end paragraph for sake of leading, in case document has no blank
+    % line.  This is redundant with what happens in \aboveenvbreak, but
+    % we need to do it before changing the fonts, and it's inconvenient
+    % to change the fonts afterward.
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
     \smallexamplefonts \rm
   \fi
 }
 \def\setsmalldispenv{%
   \ifx\SETdispenvsize\nosmallword
   \else
+    \ifnum \lastpenalty=10000 \else \endgraf \fi
     \smallexamplefonts \rm
   \fi
 }
@@ -5272,7 +5629,6 @@ where each line of input produces a line of output.}
   \let\kbdfont = \kbdexamplefont % Allow @kbd to do something special.
   \gobble       % eat return
 }
-
 % @display/@smalldisplay: same as @lisp except keep current font.
 %
 \makedispenv {display}{%
@@ -5400,12 +5756,34 @@ where each line of input produces a line of output.}
 \newdimen\tabw \setbox0=\hbox{\tt\space} \tabw=8\wd0 % tab amount
 %
 \def\starttabbox{\setbox0=\hbox\bgroup}
+
+% Allow an option to not replace quotes with a regular directed right
+% quote/apostrophe (char 0x27), but instead use the undirected quote
+% from cmtt (char 0x0d).  The undirected quote is ugly, so don't make it
+% the default, but it works for pasting with more pdf viewers (at least
+% evince), the lilypond developers report.  xpdf does work with the
+% regular 0x27.  
+% 
+\def\codequoteright{%
+  \expandafter\ifx\csname SETtxicodequoteundirected\endcsname\relax
+    \expandafter\ifx\csname SETcodequoteundirected\endcsname\relax
+      '%
+    \else \char'15 \fi
+  \else \char'15 \fi
+}
 %
-%
-% Don't replace quotes with curly quotes. This makes cut & pasting
-% from a PDF file problematic.
+% and a similar option for the left quote char vs. a grave accent.
+% Modern fonts display ASCII 0x60 as a grave accent, so some people like
+% the code environments to do likewise.
 % 
-\def\singlequotechar{\char'15\relax}
+\def\codequoteleft{%
+  \expandafter\ifx\csname SETtxicodequotebacktick\endcsname\relax
+    \expandafter\ifx\csname SETcodequotebacktick\endcsname\relax
+      `%
+    \else \char'22 \fi
+  \else \char'22 \fi
+}
+%
 \begingroup
   \catcode`\^^I=\active
   \gdef\tabexpand{%
@@ -5419,11 +5797,15 @@ where each line of input produces a line of output.}
     }%
   }
   \catcode`\'=\active
-  \gdef\quoteexpand{%
-    \catcode`\'=\active
-    \def'{\singlequotechar}
-  }%
+  \gdef\rquoteexpand{\catcode\rquoteChar=\active \def'{\codequoteright}}%
+  %
+  \catcode`\`=\active
+  \gdef\lquoteexpand{\catcode\lquoteChar=\active \def`{\codequoteleft}}%
+  %
+  \gdef\quoteexpand{\rquoteexpand \lquoteexpand}%
 \endgroup
+
+% start the verbatim environment.
 \def\setupverbatim{%
   \let\nonarrowing = t%
   \nonfillstart
@@ -5517,27 +5899,35 @@ where each line of input produces a line of output.}
   \endgroup
 }
 
+
 \message{defuns,}
 % @defun etc.
 
 \newskip\defbodyindent \defbodyindent=.4in
 \newskip\defargsindent \defargsindent=50pt
 \newskip\deflastargmargin \deflastargmargin=18pt
+\newcount\defunpenalty
 
 % Start the processing of @deffn:
 \def\startdefun{%
   \ifnum\lastpenalty<10000
     \medbreak
+    \defunpenalty=10003 % Will keep this @deffn together with the
+                        % following @def command, see below.
   \else
     % If there are two @def commands in a row, we'll have a \nobreak,
     % which is there to keep the function description together with its
     % header.  But if there's nothing but headers, we need to allow a
     % break somewhere.  Check specifically for penalty 10002, inserted
-    % by \defargscommonending, instead of 10000, since the sectioning
+    % by \printdefunline, instead of 10000, since the sectioning
     % commands also insert a nobreak penalty, and we don't want to allow
     % a break between a section heading and a defun.
-    % 
-    \ifnum\lastpenalty=10002 \penalty2000 \fi
+    %
+    % As a minor refinement, we avoid "club" headers by signalling
+    % with penalty of 10003 after the very first @deffn in the
+    % sequence (see above), and penalty of 10002 after any following
+    % @def command.
+    \ifnum\lastpenalty=10002 \penalty2000 \else \defunpenalty=10002 \fi
     %
     % Similarly, after a section heading, do not allow a break.
     % But do insert the glue.
@@ -5555,7 +5945,7 @@ where each line of input produces a line of output.}
   %
   % As above, allow line break if we have multiple x headers in a row.
   % It's not a great place, though.
-  \ifnum\lastpenalty=10002 \penalty3000 \fi
+  \ifnum\lastpenalty=10002 \penalty3000 \else \defunpenalty=10002 \fi
   %
   % And now, it's time to reuse the body of the original defun:
   \expandafter\gobbledefun#1%
@@ -5573,7 +5963,7 @@ where each line of input produces a line of output.}
     \advance\rightskip by 0pt plus 1fil
     \endgraf
     \nobreak\vskip -\parskip
-    \penalty 10002  % signal to \startdefun and \dodefunx
+    \penalty\defunpenalty  % signal to \startdefun and \dodefunx
     % Some of the @defun-type tags do not enable magic parentheses,
     % rendering the following check redundant.  But we don't optimize.
     \checkparencounts
@@ -5942,6 +6332,10 @@ where each line of input produces a line of output.}
 % all characters are catcode 10, 11 or 12, except \ which is active
 % (as in normal texinfo). It is necessary to change the definition of \.
 
+% Non-ASCII encodings make 8-bit characters active, so un-activate
+% them to avoid their expansion.  Must do this non-globally, to
+% confine the change to the current group.
+
 % It's necessary to have hard CRs when the macro is executed. This is
 % done by  making ^^M (\endlinechar) catcode 12 when reading the macro
 % body, and then making it the \newlinechar in \scanmacro.
@@ -5956,6 +6350,7 @@ where each line of input produces a line of output.}
   \catcode`\_=\other
   \catcode`\|=\other
   \catcode`\~=\other
+  \ifx\declaredencoding\ascii \else \setnonasciicharscatcodenonglobal\other \fi
 }
 
 \def\scanargctxt{%
@@ -6173,7 +6568,6 @@ where each line of input produces a line of output.}
 \message{cross references,}
 
 \newwrite\auxfile
-
 \newif\ifhavexrefs    % True if xref values are known.
 \newif\ifwarnedxrefs  % True if we warned once that they aren't known.
 
@@ -6240,7 +6634,7 @@ where each line of input produces a line of output.}
       \toks0 = \expandafter{\thissection}%
       \immediate \writexrdef{title}{\the\toks0 }%
       \immediate \writexrdef{snt}{\csname #2\endcsname}% \Ynumbered etc.
-      \writexrdef{pg}{\folio}% will be written later, during \shipout
+      \safewhatsit{\writexrdef{pg}{\folio}}% will be written later, during \shipout
     }%
   \fi
 }
@@ -6286,7 +6680,8 @@ where each line of input produces a line of output.}
   \ifpdf
     \leavevmode
     \getfilename{#4}%
-    {\turnoffactive
+    {\indexnofonts
+     \turnoffactive
      % See comments at \activebackslashdouble.
      {\activebackslashdouble \xdef\pdfxrefdest{#1}%
       \backslashparens\pdfxrefdest}%
@@ -6433,10 +6828,18 @@ where each line of input produces a line of output.}
 % collisions).  But if this is a float type, we have more work to do.
 %
 \def\xrdef#1#2{%
-  \expandafter\gdef\csname XR#1\endcsname{#2}% remember this xref value.
+  {% The node name might contain 8-bit characters, which in our current
+   % implementation are changed to commands like @'e.  Don't let these
+   % mess up the control sequence name.
+    \indexnofonts
+    \turnoffactive
+    \xdef\safexrefname{#1}%
+  }%
+  %
+  \expandafter\gdef\csname XR\safexrefname\endcsname{#2}% remember this xref
   %
   % Was that xref control sequence that we just defined for a float?
-  \expandafter\iffloat\csname XR#1\endcsname
+  \expandafter\iffloat\csname XR\safexrefname\endcsname
     % it was a float, and we have the (safe) float type in \iffloattype.
     \expandafter\let\expandafter\floatlist
       \csname floatlist\iffloattype\endcsname
@@ -6451,7 +6854,8 @@ where each line of input produces a line of output.}
     %
     % Remember this xref in the control sequence \floatlistFLOATTYPE,
     % for later use in \listoffloats.
-    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0{#1}}%
+    \expandafter\xdef\csname floatlist\iffloattype\endcsname{\the\toks0
+      {\safexrefname}}%
   \fi
 }
 
@@ -6555,6 +6959,7 @@ where each line of input produces a line of output.}
   \input\jobname.#1
 \endgroup}
 
+
 \message{insertions,}
 % including footnotes.
 
@@ -7029,39 +7434,861 @@ where each line of input produces a line of output.}
   \writeentry
 }}
 
+
 \message{localization,}
-% and i18n.
 
 % @documentlanguage is usually given very early, just after
 % @setfilename.  If done too late, it may not override everything
-% properly.  Single argument is the language abbreviation.
-% It would be nice if we could set up a hyphenation file here.
+% properly.  Single argument is the language (de) or locale (de_DE)
+% abbreviation.  It would be nice if we could set up a hyphenation file.
 %
-\parseargdef\documentlanguage{%
+{
+  \catcode`\_ = \active
+  \globaldefs=1
+\parseargdef\documentlanguage{\begingroup
+  \let_=\normalunderscore  % normal _ character for filenames
   \tex % read txi-??.tex file in plain TeX.
-    % Read the file if it exists.
+    % Read the file by the name they passed if it exists.
     \openin 1 txi-#1.tex
     \ifeof 1
-      \errhelp = \nolanghelp
-      \errmessage{Cannot read language file txi-#1.tex}%
+      \documentlanguagetrywithoutunderscore{#1_\finish}%
     \else
       \input txi-#1.tex
     \fi
     \closein 1
   \endgroup
+\endgroup}
 }
+%
+% If they passed de_DE, and txi-de_DE.tex doesn't exist,
+% try txi-de.tex.
+% 
+\def\documentlanguagetrywithoutunderscore#1_#2\finish{%
+  \openin 1 txi-#1.tex
+  \ifeof 1
+    \errhelp = \nolanghelp
+    \errmessage{Cannot read language file txi-#1.tex}%
+  \else
+    \input txi-#1.tex
+  \fi
+  \closein 1
+}
+%
 \newhelp\nolanghelp{The given language definition file cannot be found or
 is empty.  Maybe you need to install it?  In the current directory
 should work if nowhere else does.}
 
+% Set the catcode of characters 128 through 255 to the specified number.
+%
+\def\setnonasciicharscatcode#1{%
+   \count255=128
+   \loop\ifnum\count255<256
+      \global\catcode\count255=#1
+      \advance\count255 by 1
+   \repeat
+}
 
-% @documentencoding should change something in TeX eventually, most
-% likely, but for now just recognize it.
-\let\documentencoding = \comment
+\def\setnonasciicharscatcodenonglobal#1{%
+   \count255=128
+   \loop\ifnum\count255<256
+      \catcode\count255=#1
+      \advance\count255 by 1
+   \repeat
+}
 
+% @documentencoding sets the definition of non-ASCII characters
+% according to the specified encoding.
+%
+\parseargdef\documentencoding{%
+  % Encoding being declared for the document.
+  \def\declaredencoding{\csname #1.enc\endcsname}%
+  %
+  % Supported encodings: names converted to tokens in order to be able
+  % to compare them with \ifx.
+  \def\ascii{\csname US-ASCII.enc\endcsname}%
+  \def\latnine{\csname ISO-8859-15.enc\endcsname}%
+  \def\latone{\csname ISO-8859-1.enc\endcsname}%
+  \def\lattwo{\csname ISO-8859-2.enc\endcsname}%
+  \def\utfeight{\csname UTF-8.enc\endcsname}%
+  %
+  \ifx \declaredencoding \ascii
+     \asciichardefs
+  %
+  \else \ifx \declaredencoding \lattwo
+     \setnonasciicharscatcode\active
+     \lattwochardefs
+  %
+  \else \ifx \declaredencoding \latone 
+     \setnonasciicharscatcode\active
+     \latonechardefs
+  %
+  \else \ifx \declaredencoding \latnine
+     \setnonasciicharscatcode\active
+     \latninechardefs
+  %
+  \else \ifx \declaredencoding \utfeight
+     \setnonasciicharscatcode\active
+     \utfeightchardefs
+  %
+  \else 
+    \message{Unknown document encoding #1, ignoring.}%
+  %
+  \fi % utfeight
+  \fi % latnine
+  \fi % latone
+  \fi % lattwo
+  \fi % ascii
+}
+
+% A message to be logged when using a character that isn't available
+% the default font encoding (OT1).
+% 
+\def\missingcharmsg#1{\message{Character missing in OT1 encoding: #1.}}
+
+% Take account of \c (plain) vs. \, (Texinfo) difference.
+\def\cedilla#1{\ifx\c\ptexc\c{#1}\else\,{#1}\fi}
+
+% First, make active non-ASCII characters in order for them to be
+% correctly categorized when TeX reads the replacement text of
+% macros containing the character definitions.
+\setnonasciicharscatcode\active
+%
+% Latin1 (ISO-8859-1) character definitions.
+\def\latonechardefs{%
+  \gdef^^a0{~} 
+  \gdef^^a1{\exclamdown}
+  \gdef^^a2{\missingcharmsg{CENT SIGN}} 
+  \gdef^^a3{{\pounds}}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\missingcharmsg{YEN SIGN}}
+  \gdef^^a6{\missingcharmsg{BROKEN BAR}} 
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}} 
+  \gdef^^a9{\copyright} 
+  \gdef^^aa{\ordf}
+  \gdef^^ab{\missingcharmsg{LEFT-POINTING DOUBLE ANGLE QUOTATION MARK}} 
+  \gdef^^ac{$\lnot$}
+  \gdef^^ad{\-} 
+  \gdef^^ae{\registeredsymbol} 
+  \gdef^^af{\={}}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{$\pm$}
+  \gdef^^b2{$^2$}
+  \gdef^^b3{$^3$}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{$\mu$}
+  \gdef^^b6{\P}
+  %
+  \gdef^^b7{$^.$}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{$^1$}
+  \gdef^^ba{\ordm}
+  %
+  \gdef^^bb{\missingcharmsg{RIGHT-POINTING DOUBLE ANGLE QUOTATION MARK}}
+  \gdef^^bc{$1\over4$}
+  \gdef^^bd{$1\over2$}
+  \gdef^^be{$3\over4$}
+  \gdef^^bf{\questiondown}
+  %
+  \gdef^^c0{\`A}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\~A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\ringaccent A} 
+  \gdef^^c6{\AE}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\`E}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\^E}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\`I}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\"I}
+  %
+  \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER ETH}}
+  \gdef^^d1{\~N}
+  \gdef^^d2{\`O}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\~O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\O}
+  \gdef^^d9{\`U}
+  \gdef^^da{\'U}
+  \gdef^^db{\^U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\missingcharmsg{LATIN CAPITAL LETTER THORN}}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\`a}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\~a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\ringaccent a}
+  \gdef^^e6{\ae}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\`e}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\^e}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\`{\dotless i}}
+  \gdef^^ed{\'{\dotless i}}
+  \gdef^^ee{\^{\dotless i}}
+  \gdef^^ef{\"{\dotless i}}
+  %
+  \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER ETH}}
+  \gdef^^f1{\~n}
+  \gdef^^f2{\`o}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\~o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\o}
+  \gdef^^f9{\`u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\^u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\missingcharmsg{LATIN SMALL LETTER THORN}}
+  \gdef^^ff{\"y}
+}
+
+% Latin9 (ISO-8859-15) encoding character definitions.
+\def\latninechardefs{%
+  % Encoding is almost identical to Latin1.
+  \latonechardefs
+  %
+  \gdef^^a4{\euro}
+  \gdef^^a6{\v S}
+  \gdef^^a8{\v s}
+  \gdef^^b4{\v Z}
+  \gdef^^b8{\v z}
+  \gdef^^bc{\OE}
+  \gdef^^bd{\oe}
+  \gdef^^be{\"Y}
+}
+
+% Latin2 (ISO-8859-2) character definitions.
+\def\lattwochardefs{%
+  \gdef^^a0{~}
+  \gdef^^a1{\missingcharmsg{LATIN CAPITAL LETTER A WITH OGONEK}}
+  \gdef^^a2{\u{}}
+  \gdef^^a3{\L}
+  \gdef^^a4{\missingcharmsg{CURRENCY SIGN}}
+  \gdef^^a5{\v L}
+  \gdef^^a6{\'S}
+  \gdef^^a7{\S}
+  \gdef^^a8{\"{}}
+  \gdef^^a9{\v S}
+  \gdef^^aa{\cedilla S}
+  \gdef^^ab{\v T}
+  \gdef^^ac{\'Z}
+  \gdef^^ad{\-}
+  \gdef^^ae{\v Z}
+  \gdef^^af{\dotaccent Z}
+  %
+  \gdef^^b0{\textdegree}
+  \gdef^^b1{\missingcharmsg{LATIN SMALL LETTER A WITH OGONEK}}
+  \gdef^^b2{\missingcharmsg{OGONEK}}
+  \gdef^^b3{\l}
+  \gdef^^b4{\'{}}
+  \gdef^^b5{\v l}
+  \gdef^^b6{\'s}
+  \gdef^^b7{\v{}}
+  \gdef^^b8{\cedilla\ }
+  \gdef^^b9{\v s}
+  \gdef^^ba{\cedilla s}
+  \gdef^^bb{\v t}
+  \gdef^^bc{\'z}
+  \gdef^^bd{\H{}}
+  \gdef^^be{\v z}
+  \gdef^^bf{\dotaccent z}
+  %
+  \gdef^^c0{\'R}
+  \gdef^^c1{\'A}
+  \gdef^^c2{\^A}
+  \gdef^^c3{\u A}
+  \gdef^^c4{\"A}
+  \gdef^^c5{\'L}
+  \gdef^^c6{\'C}
+  \gdef^^c7{\cedilla C}
+  \gdef^^c8{\v C}
+  \gdef^^c9{\'E}
+  \gdef^^ca{\missingcharmsg{LATIN CAPITAL LETTER E WITH OGONEK}}
+  \gdef^^cb{\"E}
+  \gdef^^cc{\v E}
+  \gdef^^cd{\'I}
+  \gdef^^ce{\^I}
+  \gdef^^cf{\v D}
+  %
+  \gdef^^d0{\missingcharmsg{LATIN CAPITAL LETTER D WITH STROKE}}
+  \gdef^^d1{\'N}
+  \gdef^^d2{\v N}
+  \gdef^^d3{\'O}
+  \gdef^^d4{\^O}
+  \gdef^^d5{\H O}
+  \gdef^^d6{\"O}
+  \gdef^^d7{$\times$}
+  \gdef^^d8{\v R}
+  \gdef^^d9{\ringaccent U} 
+  \gdef^^da{\'U}
+  \gdef^^db{\H U}
+  \gdef^^dc{\"U}
+  \gdef^^dd{\'Y}
+  \gdef^^de{\cedilla T}
+  \gdef^^df{\ss}
+  %
+  \gdef^^e0{\'r}
+  \gdef^^e1{\'a}
+  \gdef^^e2{\^a}
+  \gdef^^e3{\u a}
+  \gdef^^e4{\"a}
+  \gdef^^e5{\'l}
+  \gdef^^e6{\'c}
+  \gdef^^e7{\cedilla c}
+  \gdef^^e8{\v c}
+  \gdef^^e9{\'e}
+  \gdef^^ea{\missingcharmsg{LATIN SMALL LETTER E WITH OGONEK}}
+  \gdef^^eb{\"e}
+  \gdef^^ec{\v e}
+  \gdef^^ed{\'\i}
+  \gdef^^ee{\^\i}
+  \gdef^^ef{\v d}
+  %
+  \gdef^^f0{\missingcharmsg{LATIN SMALL LETTER D WITH STROKE}}
+  \gdef^^f1{\'n}
+  \gdef^^f2{\v n}
+  \gdef^^f3{\'o}
+  \gdef^^f4{\^o}
+  \gdef^^f5{\H o}
+  \gdef^^f6{\"o}
+  \gdef^^f7{$\div$}
+  \gdef^^f8{\v r}
+  \gdef^^f9{\ringaccent u}
+  \gdef^^fa{\'u}
+  \gdef^^fb{\H u}
+  \gdef^^fc{\"u}
+  \gdef^^fd{\'y}
+  \gdef^^fe{\cedilla t}
+  \gdef^^ff{\dotaccent{}}
+}
+
+% UTF-8 character definitions.
+% 
+% This code to support UTF-8 is based on LaTeX's utf8.def, with some
+% changes for Texinfo conventions.  It is included here under the GPL by
+% permission from Frank Mittelbach and the LaTeX team.
+% 
+\newcount\countUTFx
+\newcount\countUTFy
+\newcount\countUTFz
 
-% Page size parameters.
+\gdef\UTFviiiTwoOctets#1#2{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\endcsname}
 %
+\gdef\UTFviiiThreeOctets#1#2#3{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\endcsname}
+%
+\gdef\UTFviiiFourOctets#1#2#3#4{\expandafter
+   \UTFviiiDefined\csname u8:#1\string #2\string #3\string #4\endcsname}
+
+\gdef\UTFviiiDefined#1{%
+  \ifx #1\relax
+    \message{\linenumber Unicode char \string #1 not defined for Texinfo}%
+  \else
+    \expandafter #1%
+  \fi
+}
+
+\begingroup
+  \catcode`\~13
+  \catcode`\"12
+
+  \def\UTFviiiLoop{%
+    \global\catcode\countUTFx\active
+    \uccode`\~\countUTFx
+    \uppercase\expandafter{\UTFviiiTmp}%
+    \advance\countUTFx by 1
+    \ifnum\countUTFx < \countUTFy
+      \expandafter\UTFviiiLoop
+    \fi}
+
+  \countUTFx = "C2
+  \countUTFy = "E0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiTwoOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "E0
+  \countUTFy = "F0
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiThreeOctets\string~}}
+  \UTFviiiLoop
+
+  \countUTFx = "F0
+  \countUTFy = "F4
+  \def\UTFviiiTmp{%
+    \xdef~{\noexpand\UTFviiiFourOctets\string~}}
+  \UTFviiiLoop
+\endgroup
+
+\begingroup
+  \catcode`\"=12
+  \catcode`\<=12
+  \catcode`\.=12
+  \catcode`\,=12
+  \catcode`\;=12
+  \catcode`\!=12
+  \catcode`\~=13
+
+  \gdef\DeclareUnicodeCharacter#1#2{%
+    \countUTFz = "#1\relax
+    \wlog{\space\space defining Unicode char U+#1 (decimal \the\countUTFz)}%
+    \begingroup
+      \parseXMLCharref
+      \def\UTFviiiTwoOctets##1##2{%
+        \csname u8:##1\string ##2\endcsname}%
+      \def\UTFviiiThreeOctets##1##2##3{%
+        \csname u8:##1\string ##2\string ##3\endcsname}%
+      \def\UTFviiiFourOctets##1##2##3##4{%
+        \csname u8:##1\string ##2\string ##3\string ##4\endcsname}%
+      \expandafter\expandafter\expandafter\expandafter
+       \expandafter\expandafter\expandafter
+       \gdef\UTFviiiTmp{#2}%
+    \endgroup}
+
+  \gdef\parseXMLCharref{%
+    \ifnum\countUTFz < "A0\relax
+      \errhelp = \EMsimple
+      \errmessage{Cannot define Unicode char value < 00A0}%
+    \else\ifnum\countUTFz < "800\relax
+      \parseUTFviiiA,%
+      \parseUTFviiiB C\UTFviiiTwoOctets.,%
+    \else\ifnum\countUTFz < "10000\relax
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiB E\UTFviiiThreeOctets.{,;}%
+    \else
+      \parseUTFviiiA;%
+      \parseUTFviiiA,%
+      \parseUTFviiiA!%
+      \parseUTFviiiB F\UTFviiiFourOctets.{!,;}%
+    \fi\fi\fi
+  }
+
+  \gdef\parseUTFviiiA#1{%
+    \countUTFx = \countUTFz
+    \divide\countUTFz by 64
+    \countUTFy = \countUTFz
+    \multiply\countUTFz by 64
+    \advance\countUTFx by -\countUTFz
+    \advance\countUTFx by 128
+    \uccode `#1\countUTFx
+    \countUTFz = \countUTFy}
+
+  \gdef\parseUTFviiiB#1#2#3#4{%
+    \advance\countUTFz by "#10\relax
+    \uccode `#3\countUTFz
+    \uppercase{\gdef\UTFviiiTmp{#2#3#4}}}
+\endgroup
+
+\def\utfeightchardefs{%
+  \DeclareUnicodeCharacter{00A0}{\tie}
+  \DeclareUnicodeCharacter{00A1}{\exclamdown}
+  \DeclareUnicodeCharacter{00A3}{\pounds}
+  \DeclareUnicodeCharacter{00A8}{\"{ }}
+  \DeclareUnicodeCharacter{00A9}{\copyright}
+  \DeclareUnicodeCharacter{00AA}{\ordf}
+  \DeclareUnicodeCharacter{00AD}{\-}
+  \DeclareUnicodeCharacter{00AE}{\registeredsymbol}
+  \DeclareUnicodeCharacter{00AF}{\={ }}
+
+  \DeclareUnicodeCharacter{00B0}{\ringaccent{ }}
+  \DeclareUnicodeCharacter{00B4}{\'{ }}
+  \DeclareUnicodeCharacter{00B8}{\cedilla{ }}
+  \DeclareUnicodeCharacter{00BA}{\ordm}
+  \DeclareUnicodeCharacter{00BF}{\questiondown}
+
+  \DeclareUnicodeCharacter{00C0}{\`A}
+  \DeclareUnicodeCharacter{00C1}{\'A}
+  \DeclareUnicodeCharacter{00C2}{\^A}
+  \DeclareUnicodeCharacter{00C3}{\~A}
+  \DeclareUnicodeCharacter{00C4}{\"A}
+  \DeclareUnicodeCharacter{00C5}{\AA}
+  \DeclareUnicodeCharacter{00C6}{\AE}
+  \DeclareUnicodeCharacter{00C7}{\cedilla{C}}
+  \DeclareUnicodeCharacter{00C8}{\`E}
+  \DeclareUnicodeCharacter{00C9}{\'E}
+  \DeclareUnicodeCharacter{00CA}{\^E}
+  \DeclareUnicodeCharacter{00CB}{\"E}
+  \DeclareUnicodeCharacter{00CC}{\`I}
+  \DeclareUnicodeCharacter{00CD}{\'I}
+  \DeclareUnicodeCharacter{00CE}{\^I}
+  \DeclareUnicodeCharacter{00CF}{\"I}
+
+  \DeclareUnicodeCharacter{00D1}{\~N}
+  \DeclareUnicodeCharacter{00D2}{\`O}
+  \DeclareUnicodeCharacter{00D3}{\'O}
+  \DeclareUnicodeCharacter{00D4}{\^O}
+  \DeclareUnicodeCharacter{00D5}{\~O}
+  \DeclareUnicodeCharacter{00D6}{\"O}
+  \DeclareUnicodeCharacter{00D8}{\O}
+  \DeclareUnicodeCharacter{00D9}{\`U}
+  \DeclareUnicodeCharacter{00DA}{\'U}
+  \DeclareUnicodeCharacter{00DB}{\^U}
+  \DeclareUnicodeCharacter{00DC}{\"U}
+  \DeclareUnicodeCharacter{00DD}{\'Y}
+  \DeclareUnicodeCharacter{00DF}{\ss}
+
+  \DeclareUnicodeCharacter{00E0}{\`a}
+  \DeclareUnicodeCharacter{00E1}{\'a}
+  \DeclareUnicodeCharacter{00E2}{\^a}
+  \DeclareUnicodeCharacter{00E3}{\~a}
+  \DeclareUnicodeCharacter{00E4}{\"a}
+  \DeclareUnicodeCharacter{00E5}{\aa}
+  \DeclareUnicodeCharacter{00E6}{\ae}
+  \DeclareUnicodeCharacter{00E7}{\cedilla{c}}
+  \DeclareUnicodeCharacter{00E8}{\`e}
+  \DeclareUnicodeCharacter{00E9}{\'e}
+  \DeclareUnicodeCharacter{00EA}{\^e}
+  \DeclareUnicodeCharacter{00EB}{\"e}
+  \DeclareUnicodeCharacter{00EC}{\`{\dotless{i}}}
+  \DeclareUnicodeCharacter{00ED}{\'{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EE}{\^{\dotless{i}}}
+  \DeclareUnicodeCharacter{00EF}{\"{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{00F1}{\~n}
+  \DeclareUnicodeCharacter{00F2}{\`o}
+  \DeclareUnicodeCharacter{00F3}{\'o}
+  \DeclareUnicodeCharacter{00F4}{\^o}
+  \DeclareUnicodeCharacter{00F5}{\~o}
+  \DeclareUnicodeCharacter{00F6}{\"o}
+  \DeclareUnicodeCharacter{00F8}{\o}
+  \DeclareUnicodeCharacter{00F9}{\`u}
+  \DeclareUnicodeCharacter{00FA}{\'u}
+  \DeclareUnicodeCharacter{00FB}{\^u}
+  \DeclareUnicodeCharacter{00FC}{\"u}
+  \DeclareUnicodeCharacter{00FD}{\'y}
+  \DeclareUnicodeCharacter{00FF}{\"y}
+
+  \DeclareUnicodeCharacter{0100}{\=A}
+  \DeclareUnicodeCharacter{0101}{\=a}
+  \DeclareUnicodeCharacter{0102}{\u{A}}
+  \DeclareUnicodeCharacter{0103}{\u{a}}
+  \DeclareUnicodeCharacter{0106}{\'C}
+  \DeclareUnicodeCharacter{0107}{\'c}
+  \DeclareUnicodeCharacter{0108}{\^C}
+  \DeclareUnicodeCharacter{0109}{\^c}
+  \DeclareUnicodeCharacter{010A}{\dotaccent{C}}
+  \DeclareUnicodeCharacter{010B}{\dotaccent{c}}
+  \DeclareUnicodeCharacter{010C}{\v{C}}
+  \DeclareUnicodeCharacter{010D}{\v{c}}
+  \DeclareUnicodeCharacter{010E}{\v{D}}
+
+  \DeclareUnicodeCharacter{0112}{\=E}
+  \DeclareUnicodeCharacter{0113}{\=e}
+  \DeclareUnicodeCharacter{0114}{\u{E}}
+  \DeclareUnicodeCharacter{0115}{\u{e}}
+  \DeclareUnicodeCharacter{0116}{\dotaccent{E}}
+  \DeclareUnicodeCharacter{0117}{\dotaccent{e}}
+  \DeclareUnicodeCharacter{011A}{\v{E}}
+  \DeclareUnicodeCharacter{011B}{\v{e}}
+  \DeclareUnicodeCharacter{011C}{\^G}
+  \DeclareUnicodeCharacter{011D}{\^g}
+  \DeclareUnicodeCharacter{011E}{\u{G}}
+  \DeclareUnicodeCharacter{011F}{\u{g}}
+
+  \DeclareUnicodeCharacter{0120}{\dotaccent{G}}
+  \DeclareUnicodeCharacter{0121}{\dotaccent{g}}
+  \DeclareUnicodeCharacter{0124}{\^H}
+  \DeclareUnicodeCharacter{0125}{\^h}
+  \DeclareUnicodeCharacter{0128}{\~I}
+  \DeclareUnicodeCharacter{0129}{\~{\dotless{i}}}
+  \DeclareUnicodeCharacter{012A}{\=I}
+  \DeclareUnicodeCharacter{012B}{\={\dotless{i}}}
+  \DeclareUnicodeCharacter{012C}{\u{I}}
+  \DeclareUnicodeCharacter{012D}{\u{\dotless{i}}}
+
+  \DeclareUnicodeCharacter{0130}{\dotaccent{I}}
+  \DeclareUnicodeCharacter{0131}{\dotless{i}}
+  \DeclareUnicodeCharacter{0132}{IJ}
+  \DeclareUnicodeCharacter{0133}{ij}
+  \DeclareUnicodeCharacter{0134}{\^J}
+  \DeclareUnicodeCharacter{0135}{\^{\dotless{j}}}
+  \DeclareUnicodeCharacter{0139}{\'L}
+  \DeclareUnicodeCharacter{013A}{\'l}
+
+  \DeclareUnicodeCharacter{0141}{\L}
+  \DeclareUnicodeCharacter{0142}{\l}
+  \DeclareUnicodeCharacter{0143}{\'N}
+  \DeclareUnicodeCharacter{0144}{\'n}
+  \DeclareUnicodeCharacter{0147}{\v{N}}
+  \DeclareUnicodeCharacter{0148}{\v{n}}
+  \DeclareUnicodeCharacter{014C}{\=O}
+  \DeclareUnicodeCharacter{014D}{\=o}
+  \DeclareUnicodeCharacter{014E}{\u{O}}
+  \DeclareUnicodeCharacter{014F}{\u{o}}
+
+  \DeclareUnicodeCharacter{0150}{\H{O}}
+  \DeclareUnicodeCharacter{0151}{\H{o}}
+  \DeclareUnicodeCharacter{0152}{\OE}
+  \DeclareUnicodeCharacter{0153}{\oe}
+  \DeclareUnicodeCharacter{0154}{\'R}
+  \DeclareUnicodeCharacter{0155}{\'r}
+  \DeclareUnicodeCharacter{0158}{\v{R}}
+  \DeclareUnicodeCharacter{0159}{\v{r}}
+  \DeclareUnicodeCharacter{015A}{\'S}
+  \DeclareUnicodeCharacter{015B}{\'s}
+  \DeclareUnicodeCharacter{015C}{\^S}
+  \DeclareUnicodeCharacter{015D}{\^s}
+  \DeclareUnicodeCharacter{015E}{\cedilla{S}}
+  \DeclareUnicodeCharacter{015F}{\cedilla{s}}
+
+  \DeclareUnicodeCharacter{0160}{\v{S}}
+  \DeclareUnicodeCharacter{0161}{\v{s}}
+  \DeclareUnicodeCharacter{0162}{\cedilla{t}}
+  \DeclareUnicodeCharacter{0163}{\cedilla{T}}
+  \DeclareUnicodeCharacter{0164}{\v{T}}
+
+  \DeclareUnicodeCharacter{0168}{\~U}
+  \DeclareUnicodeCharacter{0169}{\~u}
+  \DeclareUnicodeCharacter{016A}{\=U}
+  \DeclareUnicodeCharacter{016B}{\=u}
+  \DeclareUnicodeCharacter{016C}{\u{U}}
+  \DeclareUnicodeCharacter{016D}{\u{u}}
+  \DeclareUnicodeCharacter{016E}{\ringaccent{U}}
+  \DeclareUnicodeCharacter{016F}{\ringaccent{u}}
+
+  \DeclareUnicodeCharacter{0170}{\H{U}}
+  \DeclareUnicodeCharacter{0171}{\H{u}}
+  \DeclareUnicodeCharacter{0174}{\^W}
+  \DeclareUnicodeCharacter{0175}{\^w}
+  \DeclareUnicodeCharacter{0176}{\^Y}
+  \DeclareUnicodeCharacter{0177}{\^y}
+  \DeclareUnicodeCharacter{0178}{\"Y}
+  \DeclareUnicodeCharacter{0179}{\'Z}
+  \DeclareUnicodeCharacter{017A}{\'z}
+  \DeclareUnicodeCharacter{017B}{\dotaccent{Z}}
+  \DeclareUnicodeCharacter{017C}{\dotaccent{z}}
+  \DeclareUnicodeCharacter{017D}{\v{Z}}
+  \DeclareUnicodeCharacter{017E}{\v{z}}
+
+  \DeclareUnicodeCharacter{01C4}{D\v{Z}}
+  \DeclareUnicodeCharacter{01C5}{D\v{z}}
+  \DeclareUnicodeCharacter{01C6}{d\v{z}}
+  \DeclareUnicodeCharacter{01C7}{LJ}
+  \DeclareUnicodeCharacter{01C8}{Lj}
+  \DeclareUnicodeCharacter{01C9}{lj}
+  \DeclareUnicodeCharacter{01CA}{NJ}
+  \DeclareUnicodeCharacter{01CB}{Nj}
+  \DeclareUnicodeCharacter{01CC}{nj}
+  \DeclareUnicodeCharacter{01CD}{\v{A}}
+  \DeclareUnicodeCharacter{01CE}{\v{a}}
+  \DeclareUnicodeCharacter{01CF}{\v{I}}
+
+  \DeclareUnicodeCharacter{01D0}{\v{\dotless{i}}}
+  \DeclareUnicodeCharacter{01D1}{\v{O}}
+  \DeclareUnicodeCharacter{01D2}{\v{o}}
+  \DeclareUnicodeCharacter{01D3}{\v{U}}
+  \DeclareUnicodeCharacter{01D4}{\v{u}}
+
+  \DeclareUnicodeCharacter{01E2}{\={\AE}}
+  \DeclareUnicodeCharacter{01E3}{\={\ae}}
+  \DeclareUnicodeCharacter{01E6}{\v{G}}
+  \DeclareUnicodeCharacter{01E7}{\v{g}}
+  \DeclareUnicodeCharacter{01E8}{\v{K}}
+  \DeclareUnicodeCharacter{01E9}{\v{k}}
+
+  \DeclareUnicodeCharacter{01F0}{\v{\dotless{j}}}
+  \DeclareUnicodeCharacter{01F1}{DZ}
+  \DeclareUnicodeCharacter{01F2}{Dz}
+  \DeclareUnicodeCharacter{01F3}{dz}
+  \DeclareUnicodeCharacter{01F4}{\'G}
+  \DeclareUnicodeCharacter{01F5}{\'g}
+  \DeclareUnicodeCharacter{01F8}{\`N}
+  \DeclareUnicodeCharacter{01F9}{\`n}
+  \DeclareUnicodeCharacter{01FC}{\'{\AE}}
+  \DeclareUnicodeCharacter{01FD}{\'{\ae}}
+  \DeclareUnicodeCharacter{01FE}{\'{\O}}
+  \DeclareUnicodeCharacter{01FF}{\'{\o}}
+
+  \DeclareUnicodeCharacter{021E}{\v{H}}
+  \DeclareUnicodeCharacter{021F}{\v{h}}
+
+  \DeclareUnicodeCharacter{0226}{\dotaccent{A}}
+  \DeclareUnicodeCharacter{0227}{\dotaccent{a}}
+  \DeclareUnicodeCharacter{0228}{\cedilla{E}}
+  \DeclareUnicodeCharacter{0229}{\cedilla{e}}
+  \DeclareUnicodeCharacter{022E}{\dotaccent{O}}
+  \DeclareUnicodeCharacter{022F}{\dotaccent{o}}
+
+  \DeclareUnicodeCharacter{0232}{\=Y}
+  \DeclareUnicodeCharacter{0233}{\=y}
+  \DeclareUnicodeCharacter{0237}{\dotless{j}}
+
+  \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
+  \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
+  \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
+  \DeclareUnicodeCharacter{1E05}{\udotaccent{b}}
+  \DeclareUnicodeCharacter{1E06}{\ubaraccent{B}}
+  \DeclareUnicodeCharacter{1E07}{\ubaraccent{b}}
+  \DeclareUnicodeCharacter{1E0A}{\dotaccent{D}}
+  \DeclareUnicodeCharacter{1E0B}{\dotaccent{d}}
+  \DeclareUnicodeCharacter{1E0C}{\udotaccent{D}}
+  \DeclareUnicodeCharacter{1E0D}{\udotaccent{d}}
+  \DeclareUnicodeCharacter{1E0E}{\ubaraccent{D}}
+  \DeclareUnicodeCharacter{1E0F}{\ubaraccent{d}}
+
+  \DeclareUnicodeCharacter{1E1E}{\dotaccent{F}}
+  \DeclareUnicodeCharacter{1E1F}{\dotaccent{f}}
+
+  \DeclareUnicodeCharacter{1E20}{\=G}
+  \DeclareUnicodeCharacter{1E21}{\=g}
+  \DeclareUnicodeCharacter{1E22}{\dotaccent{H}}
+  \DeclareUnicodeCharacter{1E23}{\dotaccent{h}}
+  \DeclareUnicodeCharacter{1E24}{\udotaccent{H}}
+  \DeclareUnicodeCharacter{1E25}{\udotaccent{h}}
+  \DeclareUnicodeCharacter{1E26}{\"H}
+  \DeclareUnicodeCharacter{1E27}{\"h}
+
+  \DeclareUnicodeCharacter{1E30}{\'K}
+  \DeclareUnicodeCharacter{1E31}{\'k}
+  \DeclareUnicodeCharacter{1E32}{\udotaccent{K}}
+  \DeclareUnicodeCharacter{1E33}{\udotaccent{k}}
+  \DeclareUnicodeCharacter{1E34}{\ubaraccent{K}}
+  \DeclareUnicodeCharacter{1E35}{\ubaraccent{k}}
+  \DeclareUnicodeCharacter{1E36}{\udotaccent{L}}
+  \DeclareUnicodeCharacter{1E37}{\udotaccent{l}}
+  \DeclareUnicodeCharacter{1E3A}{\ubaraccent{L}}
+  \DeclareUnicodeCharacter{1E3B}{\ubaraccent{l}}
+  \DeclareUnicodeCharacter{1E3E}{\'M}
+  \DeclareUnicodeCharacter{1E3F}{\'m}
+
+  \DeclareUnicodeCharacter{1E40}{\dotaccent{M}}
+  \DeclareUnicodeCharacter{1E41}{\dotaccent{m}}
+  \DeclareUnicodeCharacter{1E42}{\udotaccent{M}}
+  \DeclareUnicodeCharacter{1E43}{\udotaccent{m}}
+  \DeclareUnicodeCharacter{1E44}{\dotaccent{N}}
+  \DeclareUnicodeCharacter{1E45}{\dotaccent{n}}
+  \DeclareUnicodeCharacter{1E46}{\udotaccent{N}}
+  \DeclareUnicodeCharacter{1E47}{\udotaccent{n}}
+  \DeclareUnicodeCharacter{1E48}{\ubaraccent{N}}
+  \DeclareUnicodeCharacter{1E49}{\ubaraccent{n}}
+
+  \DeclareUnicodeCharacter{1E54}{\'P}
+  \DeclareUnicodeCharacter{1E55}{\'p}
+  \DeclareUnicodeCharacter{1E56}{\dotaccent{P}}
+  \DeclareUnicodeCharacter{1E57}{\dotaccent{p}}
+  \DeclareUnicodeCharacter{1E58}{\dotaccent{R}}
+  \DeclareUnicodeCharacter{1E59}{\dotaccent{r}}
+  \DeclareUnicodeCharacter{1E5A}{\udotaccent{R}}
+  \DeclareUnicodeCharacter{1E5B}{\udotaccent{r}}
+  \DeclareUnicodeCharacter{1E5E}{\ubaraccent{R}}
+  \DeclareUnicodeCharacter{1E5F}{\ubaraccent{r}}
+
+  \DeclareUnicodeCharacter{1E60}{\dotaccent{S}}
+  \DeclareUnicodeCharacter{1E61}{\dotaccent{s}}
+  \DeclareUnicodeCharacter{1E62}{\udotaccent{S}}
+  \DeclareUnicodeCharacter{1E63}{\udotaccent{s}}
+  \DeclareUnicodeCharacter{1E6A}{\dotaccent{T}}
+  \DeclareUnicodeCharacter{1E6B}{\dotaccent{t}}
+  \DeclareUnicodeCharacter{1E6C}{\udotaccent{T}}
+  \DeclareUnicodeCharacter{1E6D}{\udotaccent{t}}
+  \DeclareUnicodeCharacter{1E6E}{\ubaraccent{T}}
+  \DeclareUnicodeCharacter{1E6F}{\ubaraccent{t}}
+
+  \DeclareUnicodeCharacter{1E7C}{\~V}
+  \DeclareUnicodeCharacter{1E7D}{\~v}
+  \DeclareUnicodeCharacter{1E7E}{\udotaccent{V}}
+  \DeclareUnicodeCharacter{1E7F}{\udotaccent{v}}
+
+  \DeclareUnicodeCharacter{1E80}{\`W}
+  \DeclareUnicodeCharacter{1E81}{\`w}
+  \DeclareUnicodeCharacter{1E82}{\'W}
+  \DeclareUnicodeCharacter{1E83}{\'w}
+  \DeclareUnicodeCharacter{1E84}{\"W}
+  \DeclareUnicodeCharacter{1E85}{\"w}
+  \DeclareUnicodeCharacter{1E86}{\dotaccent{W}}
+  \DeclareUnicodeCharacter{1E87}{\dotaccent{w}}
+  \DeclareUnicodeCharacter{1E88}{\udotaccent{W}}
+  \DeclareUnicodeCharacter{1E89}{\udotaccent{w}}
+  \DeclareUnicodeCharacter{1E8A}{\dotaccent{X}}
+  \DeclareUnicodeCharacter{1E8B}{\dotaccent{x}}
+  \DeclareUnicodeCharacter{1E8C}{\"X}
+  \DeclareUnicodeCharacter{1E8D}{\"x}
+  \DeclareUnicodeCharacter{1E8E}{\dotaccent{Y}}
+  \DeclareUnicodeCharacter{1E8F}{\dotaccent{y}}
+
+  \DeclareUnicodeCharacter{1E90}{\^Z}
+  \DeclareUnicodeCharacter{1E91}{\^z}
+  \DeclareUnicodeCharacter{1E92}{\udotaccent{Z}}
+  \DeclareUnicodeCharacter{1E93}{\udotaccent{z}}
+  \DeclareUnicodeCharacter{1E94}{\ubaraccent{Z}}
+  \DeclareUnicodeCharacter{1E95}{\ubaraccent{z}}
+  \DeclareUnicodeCharacter{1E96}{\ubaraccent{h}}
+  \DeclareUnicodeCharacter{1E97}{\"t}
+  \DeclareUnicodeCharacter{1E98}{\ringaccent{w}}
+  \DeclareUnicodeCharacter{1E99}{\ringaccent{y}}
+
+  \DeclareUnicodeCharacter{1EA0}{\udotaccent{A}}
+  \DeclareUnicodeCharacter{1EA1}{\udotaccent{a}}
+
+  \DeclareUnicodeCharacter{1EB8}{\udotaccent{E}}
+  \DeclareUnicodeCharacter{1EB9}{\udotaccent{e}}
+  \DeclareUnicodeCharacter{1EBC}{\~E}
+  \DeclareUnicodeCharacter{1EBD}{\~e}
+
+  \DeclareUnicodeCharacter{1ECA}{\udotaccent{I}}
+  \DeclareUnicodeCharacter{1ECB}{\udotaccent{i}}
+  \DeclareUnicodeCharacter{1ECC}{\udotaccent{O}}
+  \DeclareUnicodeCharacter{1ECD}{\udotaccent{o}}
+
+  \DeclareUnicodeCharacter{1EE4}{\udotaccent{U}}
+  \DeclareUnicodeCharacter{1EE5}{\udotaccent{u}}
+
+  \DeclareUnicodeCharacter{1EF2}{\`Y}
+  \DeclareUnicodeCharacter{1EF3}{\`y}
+  \DeclareUnicodeCharacter{1EF4}{\udotaccent{Y}}
+
+  \DeclareUnicodeCharacter{1EF8}{\~Y}
+  \DeclareUnicodeCharacter{1EF9}{\~y}
+
+  \DeclareUnicodeCharacter{2013}{--}
+  \DeclareUnicodeCharacter{2014}{---}
+  \DeclareUnicodeCharacter{2022}{\bullet}
+  \DeclareUnicodeCharacter{2026}{\dots}
+  \DeclareUnicodeCharacter{20AC}{\euro}
+
+  \DeclareUnicodeCharacter{2192}{\expansion}
+  \DeclareUnicodeCharacter{21D2}{\result}
+
+  \DeclareUnicodeCharacter{2212}{\minus}
+  \DeclareUnicodeCharacter{2217}{\point}
+  \DeclareUnicodeCharacter{2261}{\equiv}
+}% end of \utfeightchardefs
+
+
+% US-ASCII character definitions.
+\def\asciichardefs{% nothing need be done
+   \relax
+}
+
+% Make non-ASCII characters printable again for compatibility with
+% existing Texinfo documents that may use them, even without declaring a
+% document encoding.
+%
+\setnonasciicharscatcode \other
+
+
+\message{formatting,}
+
 \newdimen\defaultparindent \defaultparindent = 15pt
 
 \chapheadingskip = 15pt plus 4pt minus 2pt
@@ -7121,6 +8348,10 @@ should work if nowhere else does.}
   \ifpdf
     \pdfpageheight #7\relax
     \pdfpagewidth #8\relax
+    % if we don't reset these, they will remain at "1 true in" of
+    % whatever layout pdftex was dumped with.
+    \pdfhorigin = 1 true in
+    \pdfvorigin = 1 true in
   \fi
   %
   \setleading{\textleading}
@@ -7147,7 +8378,7 @@ should work if nowhere else does.}
   \textleading = 12pt
   %
   \internalpagesizes{7.5in}{5in}%
-                    {\voffset}{.25in}%
+                    {-.2in}{0in}%
                     {\bindingoffset}{16pt}%
                     {9.25in}{7in}%
   %