]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' into translation
authorJean-Charles Malahieude <lilyfan@orange.fr>
Sat, 6 Feb 2016 10:17:18 +0000 (11:17 +0100)
committerJean-Charles Malahieude <lilyfan@orange.fr>
Sat, 6 Feb 2016 10:17:18 +0000 (11:17 +0100)
67 files changed:
Documentation/changes.tely
Documentation/contributor/administration.itexi
Documentation/contributor/doc-work.itexi
Documentation/contributor/programming-work.itexi
Documentation/contributor/quick-start.itexi
Documentation/contributor/release-work.itexi
Documentation/contributor/source-code.itexi
Documentation/extending/programming-interface.itely
Documentation/extending/scheme-tutorial.itely
Documentation/learning/common-notation.itely
Documentation/learning/templates.itely
Documentation/learning/tweaks.itely
Documentation/lilypond-texi2html-lang.init [new file with mode: 0644]
Documentation/notation/input.itely
Documentation/notation/spacing.itely
Documentation/notation/staff.itely
Documentation/pictures/GNUmakefile
Documentation/snippets/new/subdividing-beams.ly
Documentation/web/community.itexi
Documentation/web/introduction.itexi
Documentation/web/news-front.itexi
Documentation/web/news.itexi
VERSION
config.make.in
input/regression/beam-subdivide-quarter-notes.ly
input/regression/beam-subdivide-shortened-beam.ly
input/regression/beam-subdivide-trailing-stem.ly
input/regression/beam-subdivision.ly
input/regression/ledger-extra.ly [new file with mode: 0644]
input/regression/lilypond-book/GNUmakefile
input/regression/markup-line-styles.ly
input/regression/markup-note-styles.ly
input/regression/one-line-auto-height-breaking.ly [new file with mode: 0644]
input/regression/tweaks-as-overrides.ly
lily/beaming-pattern.cc
lily/include/one-line-auto-height-breaking.hh [new file with mode: 0644]
lily/one-line-auto-height-breaking.cc [new file with mode: 0644]
lily/one-line-page-breaking.cc
lily/page-breaking-scheme.cc
lily/parser.yy
lily/staff-performer.cc
lily/staff-symbol.cc
ly/Welcome-to-LilyPond-MacOS.ly
ly/Welcome_to_LilyPond.ly
ly/context-mods-init.ly
ly/music-functions-init.ly
ly/paper-defaults-init.ly
ly/text-replacements.ly
make/doc-i18n-root-vars.make
make/lilypond-book-rules.make
make/lilypond-book-vars.make
make/ly-rules.make
po/da.po
po/ja.po
po/lilypond.pot
po/nl.po
python/book_texinfo.py
scm/define-markup-commands.scm
scm/lily.scm
scm/music-functions.scm
scm/output-lib.scm
scm/output-ps.scm
scm/output-svg.scm
scm/stencil.scm
stepmake/stepmake/texinfo-rules.make
stepmake/stepmake/texinfo-vars.make
tex/texinfo.tex

index 24e973e4fd4c89d5ac438acf377c8376593eb5c0..00e53b5e88ff347ea84ea001846164f9f7feae4a 100644 (file)
@@ -61,9 +61,46 @@ which scares away people.
 
 @end ignore
 
+@item
+A new page breaking function @code{ly:one-line-auto-height-breaking}
+places a whole score on a single line and changes the page width
+to match, just like @code{ly:one-line-breaking}.  The difference is that
+it also automatically modifies the height of the page to fit the height
+of the music.
+
+@item
+Markup-command @code{\draw-squiggle-line} is now available.
+Customizing is possible with overrides of @code{thickness}, @code{angularity},
+@code{height} and @code{orientation}
+@lilypond[quote,verbatim]
+\markup
+  \overlay {
+    \draw-squiggle-line #0.5 #'(3 . 3) ##t
+
+    \translate #'(3 . 3)
+    \override #'(thickness . 4)
+    \draw-squiggle-line #0.5 #'(3 . -3) ##t
+
+    \translate #'(6 . 0)
+    \override #'(angularity . -5)
+    \draw-squiggle-line #0.5 #'(-3 . -3) ##t
+
+    \translate #'(3 . -3)
+    \override #'(angularity . 2)
+    \override #'(height . 0.3)
+    \override #'(orientation . -1)
+    \draw-squiggle-line #0.2 #'(-3 . 3) ##t
+  }
+@end lilypond
+
+@item
+A new command, @code{\RemoveAllEmptyStaves}, has been made available, which
+acts exactly like @code{\RemoveEmptyStaves}, except for also removing empty
+staves on the first system in a score.
+
 @item
 Markup-commands @code{\undertie} and @code{\overtie} are now available, as well
-the generic markup-command @code{\tie}.
+as the generic markup-command @code{\tie}.
 @lilypond[quote,verbatim]
 \markup {
   \undertie "undertied"
index ec8e751a032ca32bc66d3d6a8cbe1be376342b76..a392f7d660f8e62cf5518c6678acba472ffa3b58 100644 (file)
@@ -803,7 +803,7 @@ Should we change the "structure" / "framework" for bounties?
 (prep: 2 hours.  discuss: 10 hours)
 
 @item @strong{code readability}:
-"Our aim when producing source code for Lilypond in whatever
+"Our aim when producing source code for LilyPond in whatever
 language is that it should be totally comprehensible to a
 relatively inexperienced developer at the second reading."
 
index 70fd22660d1253c438754287d95c7d84e480038e..0435b96265dadd300670a75d02989b799c728feb 100644 (file)
@@ -9,7 +9,7 @@ this allows us to generate different output formats from a single
 set of source files.
 
 To organize multiple authors working on the documentation, we use a
-Version Control System (VCS) called git, previously discussed in
+Version Control System (VCS) called Git, previously discussed in
 @ref{Starting with Git}.
 
 @menu
@@ -291,12 +291,12 @@ five, levels.
 @item Level 5: @@subsubsubheading
 @end itemize
 
-The first three levels are numbered in html, the last two are not.
-Numbered sections correspond to a single html page in the split html
+The first three levels are numbered in HTML, the last two are not.
+Numbered sections correspond to a single HTML page in the split HTML
 documents.
 
 The first four levels always have accompanying nodes so they can be
-referenced and are also included in the ToC in html.
+referenced and are also included in the ToC in HTML.
 
 Most of the manual is written at level 4 under headings created with
 
@@ -681,7 +681,7 @@ command ;)
 Enter the exact @code{@@node} name of the target reference between
 the brackets (eg.@tie{}@w{@samp{@@ref@{Syntax survey@}}}).  Do not
 split a cross-reference across two lines -- this causes the
-cross-reference to be rendered incorrectly in html documents.
+cross-reference to be rendered incorrectly in HTML documents.
 
 @itemize
 @item
@@ -1516,10 +1516,12 @@ the difficulty.
 @unnumberedsubsubsec Building only one section of the documentation
 
 In order to save build time, a script is available to build only
-one section of the documentation in English with a default html
+one section of the documentation in English with a default HTML
 appearance.
 
-You can build a section of the documentation with:
+If you do not yet have a @file{build/} subdirectory within the LilyPond
+Git tree, you should create this first.  You can then build a section of
+the documentation with the following command:
 
 @example
 scripts/auxiliar/doc-section.sh MANUAL SECTION
@@ -1538,12 +1540,12 @@ scripts/auxiliar/doc-section.sh notation pitches
 You can then see the generated document for the section at
 
 @example
-tempdocs/pitches/out/pitches.html
+build/tempdocs/pitches/out/pitches.html
 @end example
 
 According to
-@uref{http://code.google.com/p/lilypond/issues/detail?id=1236,Lilypond issue 1236},
-the location of the lilypond git tree is taken from @code{$LILYPOND_GIT}
+@uref{http://code.google.com/p/lilypond/issues/detail?id=1236,LilyPond issue 1236},
+the location of the LilyPond Git tree is taken from @code{$LILYPOND_GIT}
 if specified, otherwise it is auto-detected.
 
 It is assumed that compilation takes place in the @file{build/}
@@ -1555,7 +1557,7 @@ overridden by setting the environment variable
 @code{LILYPOND_TEMPDOCS}.
 
 This script will not work for building sections of the
-Contributors' guide.  For building sections of the Contributors'
+Contributors' Guide.  For building sections of the Contributors'
 Guide, use:
 
 @example
@@ -1564,7 +1566,7 @@ scripts/auxiliar/cg-section.sh SECTION
 
 @noindent
 where @code{SECTION} is the name of the file containing the sections
-to be built.  For example, to build section 4 of the Contributors' guide,
+to be built.  For example, to build section 4 of the Contributors' Guide,
 use:
 
 @example
index 99dc79da4a9c6a274aa30ca8e52c68c94ccdc3f2..66a792066c532f991c30342ab4bcf169acd13bc7 100644 (file)
@@ -771,8 +771,8 @@ The error functions come in three different flavors: fatal error messages,
 programming error messages and normal error messages.  Errors written
 by the @code{error ()} function will cause LilyPond to exit immediately,
 errors by @code{Input::error ()} will continue the compilation, but
-return a non-zero return value of the lilypond call (i.e. indicate an 
-unsuccessful program execution).  All other errors will be printed on the 
+return a non-zero return value of the LilyPond call (i.e. indicate an
+unsuccessful program execution).  All other errors will be printed on the
 console, but not exit LilyPond or indicate an unsuccessful return code.
 Their only differences to a warnings are the displayed text and that
 they will be shown with loglevel @code{ERROR}.
@@ -882,7 +882,7 @@ treated as if @code{Input::error} was called.
 
 The most commonly used tool for debugging LilyPond is the GNU
 debugger gdb.  The gdb tool is used for investigating and debugging
-core Lilypond code written in C++.  Another tool is available for
+core LilyPond code written in C++.  Another tool is available for
 debugging Scheme code using the Guile debugger.  This section
 describes how to use both gdb and the Guile Debugger.
 
@@ -935,7 +935,7 @@ information from the LilyPond binary.
 
 @subheading Typical gdb usage
 
-Once you have compiled the Lilypond image with the necessary
+Once you have compiled the LilyPond image with the necessary
 debugging information it will have been written to a location in a
 subfolder of your current working directory:
 
@@ -1109,7 +1109,7 @@ commands.  For a listing of these commands, type:
 debug> help
 @end example
 
-Alternatively you may code the breakpoints in your Lilypond source
+Alternatively you may code the breakpoints in your LilyPond source
 file using a command such as:
 
 @example
@@ -1232,9 +1232,9 @@ In order to use the graphviz utility, the @file{.ly} file must include
 grobs and symbols that should be tracked.  An example of this
 is found in @file{input/regression/graphviz.ly}.
 
-@item Run lilypond with output sent to a log file
+@item Run LilyPond with output sent to a log file
 
-The Graphviz data is sent to stderr by lilypond, so it is
+The Graphviz data is sent to stderr by LilyPond, so it is
 necessary to redirect stderr to a logfile:
 
 @example
@@ -1243,11 +1243,11 @@ lilypond graphviz.ly 2> graphviz.log
 
 @item Edit the logfile
 
-The logfile has standard lilypond output, as well as the Graphviz
+The logfile has standard LilyPond output, as well as the Graphviz
 output data.  Delete everything from the beginning of the file
 up to but not including the first occurrence of @code{digraph}.
 
-Also, delete the final lilypond message about success from the end
+Also, delete the final LilyPond message about success from the end
 of the file.
 
 @item Process the logfile with @code{dot}
@@ -1263,10 +1263,10 @@ dot -Tpdf graphviz.log > graphviz.pdf
 
 The pdf file can then be viewed with any pdf viewer.
 
-When compiled with @option{-DDEBUG}, lilypond may run slower
+When compiled with @option{-DDEBUG}, LilyPond may run slower
 than normal.  The original configuration can be restored by rerunning
 @code{./configure} with @option{--disable-checking}.  Then
-rebuild lilypond with
+rebuild LilyPond with
 
 @example
 make -C lily clean && make -C lily
@@ -1383,7 +1383,7 @@ LILYPOND_BUILD_DIR=../build-lilypond/ scripts/auxiliar/update-with-convert-ly.sh
 @subsection Manually update documentation
 
 Where the convert-ly rule is not able to automatically update the inline
-lilypond code in the documentation (i.e. if a NOT_SMART rule is used), the
+LilyPond code in the documentation (i.e. if a NOT_SMART rule is used), the
 documentation must be manually updated.  The inline snippets that require
 changing must be changed in the English version of the docs and all
 translated versions.  If the inline code is not changed in the
@@ -1818,7 +1818,8 @@ time and to prevent you some major headaches.
 
 @node Purity in LilyPond
 @subsection Purity in LilyPond
-Pure properties in LilyPond that do not have any @q{side effects}.
+Pure properties in LilyPond are properties that do not have any
+@q{side effects}.
 That is, looking up a pure property should never result in calls to the
 following functions:
 @itemize
@@ -1899,7 +1900,7 @@ of a spanner broken at given starting and ending columns.
 @node How purity is defined and stored
 @subsection How purity is defined and stored
 Purity is defined in LilyPond with the creation of an unpure-pure container
-(unpure is not a word, but hey, neither was Lilypond until the 90s).  For example:
+(unpure is not a word, but hey, neither was LilyPond until the 90s).  For example:
 
 @example
 #(define (foo grob)
@@ -2022,7 +2023,7 @@ instead of pure height.
 @node LilyPond scoping
 @section LilyPond scoping
 
-The Lilypond language has a concept of scoping, i.e. you can do:
+The LilyPond language has a concept of scoping, i.e. you can do:
 
 @example
 foo = 1
@@ -2038,7 +2039,7 @@ is translated in to a scheme variable definition.
 This implemented using modules, with each scope being an anonymous
 module that imports its enclosing scope's module.
 
-Lilypond's core, loaded from @file{.scm} files, is usually placed in the
+LilyPond's core, loaded from @file{.scm} files, is usually placed in the
 @code{lily} module, outside the @file{.ly} level.  In the case of
 
 @example
@@ -2141,7 +2142,7 @@ but not @code{scm_is_equal}.
 Return @code{true} if @var{b} is @code{SCM_BOOL_T}, else return @code{false}.
 
 This should be used instead of @code{scm_is_true} and
-@code{scm_is_false} for properties since in Lilypond, unset properties
+@code{scm_is_false} for properties since in LilyPond, unset properties
 are read as an empty list, and by convention unset Boolean properties
 default to false.  Since both @code{scm_is_true} and
 @code{scm_is_false} only compare with @code{##f} in line with what
@@ -2156,7 +2157,7 @@ Behave the same as scm_is_[something] would do if it existed.
 
 Test whether the type of @var{s} is [type].
 [type] is a LilyPond-only set of values (direction, axis...).  More
-often than not, the code checks Lilypond specific C++-implemented
+often than not, the code checks LilyPond specific C++-implemented
 types using
 
 @subsubheading [Type *] unsmob<Type> (SCM s)
index b515eff1de82a67b950e473a83fc238a7c9afbca..a6da27402bdcb64bdd1a0a92665e29bd3ccece23 100644 (file)
@@ -28,7 +28,7 @@ LilyPond, the documentation and the website (also see
 @warning{LilyDev does not include the software for the Grand Unified
 Builder -- also see @ref{Grand Unified Builder (GUB)}.}
 
-While compiling LilyPond on MacOs and Windows is possible, both
+While compiling LilyPond on Mac OS and Windows is possible, both
 environments are complex to set up.  LilyDev can be easily installed
 and run inside a @q{virtual machine} on either of these operating
 systems relatively easily using readily available virtualization
@@ -39,8 +39,8 @@ The LilyDev disk image can also be written to a USB device or @q{burnt}
 to a DVD -- it is approximately 900 MB in size -- and installed just
 like any standard GNU/Linux distribution.
 
-The current image is based on a 32bit version of Debian 8 (@q{Jessie})
-and the Disk image was generated using Debian
+The current image is based on a 32-bit version of Debian 8 (@q{Jessie})
+and the disk image was generated using Debian
 @uref{http://live.debian.net/, live-build 4}.
 
 @noindent
@@ -295,7 +295,7 @@ directory and the entire source code will start to be downloaded into
 it.
 
 @warning{Be patient! There is no progress bar in the lily-git UI but the
-complete source is around 180@tie{}Mb.}
+complete source is around 180@tie{}MB.}
 
 @noindent
 When the source code has been downloaded, the @qq{command output} window
@@ -489,7 +489,7 @@ PATH=~/directory_containing_git-cl:"$@{PATH@}"
 @node Updating git-cl
 @unnumberedsubsec Updating @code{git-cl}
 
-LilyDev users should always make sure that they alwsys have the latest
+LilyDev users should make sure that they always have the latest
 version of git-cl installed.  It is possible that changes may have been
 made to git-cl that are not (yet) included in the version of LilyDev has
 been installed.
index 05241fc7baec1cce2cad9dc457f3d8137cef28e9..3869505630435d485154fbee19250a5d8041a8bc 100644 (file)
@@ -108,7 +108,7 @@ VERSION_STABLE = the current stable version (probably no change here)
 @end itemize
 
 @item
-update the @qq{Welcome to Lilypond} version numbers to the version about to be
+update the @qq{Welcome to LilyPond} version numbers to the version about to be
 released
 
 @end itemize
index 20077e6891c50a69bfc672b152f52b8a5a27e082..4a7357878c85e13f87a3aaf5ed289baed674596a 100644 (file)
@@ -1352,12 +1352,12 @@ Account Settings must have the @q{Access for less secure apps} set to
 @q{Allowed}.  This is normally the default setting.}
 
 @item
-Move into the top source directory and then configure @command{git
-cl} with the following commands:
+Move into the top source directory and then configure
+@command{git-cl} with the following commands:
 
 @example
 cd $LILYPOND_GIT
-git cl config
+git-cl config
 @end example
 
 For the @qq{Rietveld server} question, the default value
@@ -1371,7 +1371,7 @@ lilypond-devel@@gnu.org
 @end example
 
 The @qq{Tree status URL} value should be left blank.  So should
-the @qq{ViewVC URL} value, since it is used by @command{git cl
+the @qq{ViewVC URL} value, since it is used by @command{git-cl
 dcommit} which is only for repositories which use @command{git
 svn} (LilyPond doesn't).
 
@@ -1434,7 +1434,7 @@ git pull -r origin master
 Finally, start the upload by entering:
 
 @example
-git cl upload <reference SHA1 ID>
+git-cl upload <reference SHA1 ID>
 @end example
 
 @noindent
@@ -1443,7 +1443,7 @@ as a reference source for the patch.  Generally, this will be the
 SHA1 ID of origin/master, and in that case the command:
 
 @example
-git cl upload origin/master
+git-cl upload origin/master
 @end example
 
 @noindent
@@ -1487,20 +1487,20 @@ associate the new branch with an existing Rietveld issue,
 the following command can be used:
 
 @example
-git cl issue issue-number
+git-cl issue issue-number
 @end example
 
 @noindent
 where @code{issue-number} is the number of the existing Rietveld
 issue.
 
-@subsubheading Resetting git cl
+@subsubheading Resetting git-cl
 
-If @command{git cl} becomes confused, you can @qq{reset} it by
+If @command{git-cl} becomes confused, you can @qq{reset} it by
 running:
 
 @example
-git cl issue 0
+git-cl issue 0
 @end example
 
 @subsubheading Wait for a countdown
index 861105029f5a64e5e896725105fd7ae05fd88b1c..f54b1ad0ce881c31e9339ff00c4004f07e331755 100644 (file)
@@ -1333,7 +1333,7 @@ set at fixed values with @code{\override}, e.g.
 \override Stem.thickness = #2.0
 @end example
 
-Properties can also be set to a Scheme procedure,
+Properties can also be set to a Scheme procedure:
 
 @lilypond[fragment,verbatim,quote]
 \override Stem.thickness = #(lambda (grob)
index 8588ff268515d80c7a6d930887cbf00db898c34f..f8f23a5fa4510fb32ccace3a55a1ca41134e9494 100644 (file)
@@ -72,7 +72,7 @@ see @rlearning{Other sources of information}.  Alternatively, Windows
 users may simply choose @q{Run} from the Start menu and enter
 @q{guile}.
 
-However, a hands-on Scheme sandbox with all of Lilypond loaded is
+However, a hands-on Scheme sandbox with all of LilyPond loaded is
 available with this command line:
 @example
 lilypond scheme-sandbox
@@ -680,7 +680,7 @@ feasible.
 
 Another way to call the Scheme interpreter from LilyPond is the use of
 dollar@tie{}@code{$} instead of a hash mark for introducing Scheme
-expressions.  In this case, Lilypond evaluates the code right after the
+expressions.  In this case, LilyPond evaluates the code right after the
 lexer has read it.  It checks the resulting type of the Scheme
 expression and then picks a token type (one of several
 @code{xxx_IDENTIFIER} in the syntax) for it.  It creates a @emph{copy}
@@ -688,18 +688,18 @@ of the value and uses that for the value of the token.  If the value of
 the expression is void (Guile's value of @code{*unspecified*}), nothing
 at all is passed to the parser.
 
-This is, in fact, exactly the same mechanism that Lilypond employs when
+This is, in fact, exactly the same mechanism that LilyPond employs when
 you call any variable or music function by name, as @code{\name}, with
-the only difference that the name is determined by the Lilypond lexer
+the only difference that the name is determined by the LilyPond lexer
 without consulting the Scheme reader, and thus only variable names
-consistent with the current Lilypond mode are accepted.
-
-The immediate action of @code{$} can lead to surprises, @ref{Input
-variables and Scheme}.  Using @code{#} where the parser supports it
-is usually preferable.  Inside of music expressions, expressions
-created using @code{#} @emph{are} interpreted as music.  However,
-they are @emph{not} copied before use.  If they are part of some
-structure that might still get used, you may need to use
+consistent with the current LilyPond mode are accepted.
+
+The immediate action of @code{$} can lead to surprises, see
+@ref{Importing Scheme in LilyPond}.  Using @code{#} where the
+parser supports it is usually preferable.  Inside of music expressions,
+expressions created using @code{#} @emph{are} interpreted as
+music.  However, they are @emph{not} copied before use.  If they are
+part of some structure that might still get used, you may need to use
 @code{ly:music-deep-copy} explicitly.
 
 @funindex $@@
@@ -731,11 +731,11 @@ as follows:
 @end example
 
 For the rest of this section, we will assume that the data is entered
-in a music file, so we add@tie{}@code{#}s at the beginning of each Scheme
+in a music file, so we add a @code{#} at the beginning of each Scheme
 expression.
 
 All of the top-level Scheme expressions in a LilyPond input file can
-be combined into a single Scheme expression by the use of the
+be combined into a single Scheme expression by use of the
 @code{begin} statement:
 
 @example
@@ -773,8 +773,8 @@ twentyFour = #(* 2 twelve)
 which would result in the number 24 being stored in the
 LilyPond (and Scheme) variable @code{twentyFour}.
 
-The usual way to refer to Lilypond variables, @ref{LilyPond Scheme
-syntax}, is to call them using a backslash, i.e., @code{\twentyFour}.
+The usual way to refer to LilyPond variables is to call them using a
+backslash, i.e., @code{\twentyFour} (see @ref{LilyPond Scheme syntax}).
 Since this creates a copy of the value for most of LilyPond's internal
 types, in particular music expressions, music functions don't usually
 create copies of material they change.  For this reason, music
@@ -870,7 +870,7 @@ $(make-sequential-music newLa)
 You can use @code{$} with a Scheme expression anywhere you could use
 @code{\@var{name}} after having assigned the Scheme expression to a
 variable @var{name}.  This replacement happens in the @q{lexer}, so
-Lilypond is not even aware of the difference.
+LilyPond is not even aware of the difference.
 
 One drawback, however, is that of timing.  If we had been using @code{$}
 instead of @code{#} for defining @code{newLa} in the above example, the
@@ -1105,7 +1105,7 @@ to create complicated music functions.
 
 When writing a music function it is often instructive to inspect how
 a music expression is stored internally.  This can be done with the
-music function @code{\displayMusic}
+music function @code{\displayMusic}.
 
 @example
 @{
@@ -1157,7 +1157,7 @@ your port and reuse it:
 @end example
 
 Guile's manual describes ports in detail.  Closing the port is actually
-only necessary if you need to read the file before Lilypond finishes; in
+only necessary if you need to read the file before LilyPond finishes; in
 the first example, we did not bother to do so.
 
 A bit of reformatting makes the above information easier to read:
@@ -1165,13 +1165,13 @@ A bit of reformatting makes the above information easier to read:
 @example
 (make-music 'SequentialMusic
   'elements (list
-            (make-music 'NoteEvent
+             (make-music 'NoteEvent
                'articulations (list
-                              (make-music 'AbsoluteDynamicEvent
-                                'text
-                                "f"))
-              'duration (ly:make-duration 2 0 1/1)
-              'pitch    (ly:make-pitch 0 0 0))))
+                               (make-music 'AbsoluteDynamicEvent
+                                           'text
+                                           "f"))
+               'duration (ly:make-duration 2 0 1/1)
+               'pitch    (ly:make-pitch 0 0 0))))
 @end example
 
 A @code{@{ @dots{} @}} music sequence has the name
@@ -1189,9 +1189,11 @@ interpreted as well as displayed.  To avoid interpretation, write
 @node Music properties
 @subsection Music properties
 
+@ignore
 TODO -- make sure we delineate between @emph{music} properties,
 @emph{context} properties, and @emph{layout} properties.  These
 are potentially confusing.
+@end ignore
 
 Let's look at an example:
 
@@ -1244,7 +1246,7 @@ expression.
 @end example
 
 Then the note pitch is accessed through the @code{'pitch} property
-of the @code{NoteEvent} object,
+of the @code{NoteEvent} object.
 
 @example
 #(display-scheme-music
@@ -1254,7 +1256,7 @@ of the @code{NoteEvent} object,
 (ly:make-pitch 0 0 0)
 @end example
 
-The note pitch can be changed by setting this @code{'pitch} property,
+The note pitch can be changed by setting this @code{'pitch} property.
 
 @funindex \displayLilyMusic
 
@@ -1309,7 +1311,7 @@ The bad news is that the @code{SlurEvent} expressions
 must be added @q{inside} the note (in its @code{articulations}
 property).
 
-Now we examine the input,
+Now we examine the input.
 
 @example
 \displayMusic a'
@@ -1374,7 +1376,7 @@ the articulation to an empty chord,
 
 @noindent
 but for the sake of this example, we will learn how to do this in
-Scheme.  We begin by examining our input and desired output,
+Scheme.  We begin by examining our input and desired output.
 
 @example
 %  input
@@ -1518,7 +1520,7 @@ addAccent = #(define-music-function (note-event)
   note-event)
 @end example
 
-We may verify that this music function works correctly,
+We may verify that this music function works correctly:
 
 @example
 \displayMusic \addAccent c4
index 9ce651fc02c13e40cff9363c6f5ab49317c934d8..1f68b2b5c7a11db6d3d7d44fda360b4eb21f5e13 100644 (file)
@@ -1340,8 +1340,7 @@ cello = \new Staff {
 @end lilypond
 
 @noindent
-The name of a variable must have alphabetic characters only, no
-numbers, underscores, or dashes.
+By convention, variable names consist of alphabetic characters only.
 
 Variables must be defined @emph{before} the main music
 expression, but may be used as many times as required anywhere after
index ee148cc23ffcb40e8fa263f4c5118e936be3c0a7..2f04fae957c171cb9532ccd36724d3a31f5252c2 100644 (file)
@@ -351,13 +351,13 @@ this simple built-in template.
 @node Notes only
 @appendixsubsec Notes only
 
-@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {single-staff-template-with-only-notes.ly}
 
 @node Notes and lyrics
 @appendixsubsec Notes and lyrics
 
-@lilypondfile[verbatim,quote,ragged-right,texidoc,addversion]
+@lilypondfile[verbatim,quote,ragged-right,texidoc]
 {single-staff-template-with-notes-and-lyrics.ly}
 
 @node Notes and chords
index d5d5951b1255d811a58b441252088d33ebba2bc3..8aeb618952f4bab62ffa01b06b8546be3fe02bc1 100644 (file)
@@ -109,7 +109,7 @@ shape.  Objects with an extended shape like these are called
 
 Spanners cannot be tweaked after their creation.  This includes both
 @code{StaffSymbol} and @code{LedgerLineSpanner} which continue
-throughout the score (except if they are terminated by the
+throughout the scoreexcept if they are terminated by the
 @code{\stopStaff} command and then recreated using @code{\startStaff}
 command.
 
@@ -2179,7 +2179,7 @@ change @code{outside-staff-priority} of the associated
 placed at the start of the spanner, which might include several
 linked hairpins and dynamics.
 
-@multitable @columnfractions .3 .3 .3
+@multitable @columnfractions .3 .15 .45
 @headitem Layout Object
   @tab Priority
   @tab Controls position of:
@@ -2189,15 +2189,33 @@ linked hairpins and dynamics.
 @item @code{MetronomeMark}
   @tab @code{1000}
   @tab Metronome marks
+@item @code{SostenutoPedalLineSpanner}
+  @tab @code{1000}
+  @tab Pedal indication
+@item @code{SustainPedalLineSpanner}
+  @tab @code{1000}
+  @tab
+@item @code{UnaCordaPedalLineSpanner}
+  @tab @code{1000}
+  @tab
+@item @code{MeasureCounter}
+  @tab @code{750}
+  @tab Measure number
 @item @code{VoltaBracketSpanner}
   @tab @code{600}
   @tab Volta brackets
+@item @code{InstrumentSwitch}
+  @tab @code{500}
+  @tab Instrument switch text
 @item @code{TextScript}
   @tab @code{450}
   @tab Markup text
 @item @code{MultiMeasureRestText}
   @tab @code{450}
-  @tab Markup text over full-bar rests
+  @tab Markup text over multimeasure rests
+@item @code{CombineTextScript}
+  @tab @code{450}
+  @tab Part-combine text
 @item @code{OttavaBracket}
   @tab @code{400}
   @tab Ottava brackets
@@ -2208,11 +2226,14 @@ linked hairpins and dynamics.
   @tab @code{250}
   @tab All dynamic markings
 @item @code{BarNumber}
-  @tab @code{ 100}
+  @tab @code{100}
   @tab Bar numbers
 @item @code{TrillSpanner}
   @tab @code{50}
   @tab Spanning trills
+@item @code{AccidentalSuggestion}
+  @tab @code{0}
+  @tab Annotational accidentals
 @end multitable
 
 Here is an example showing the default placement of some of
@@ -2272,7 +2293,7 @@ the placing you want, the priority of any of the objects may be
 overridden.  Suppose we would like the ottava bracket to be placed
 below the text spanner in the example above.  All we need to do is to
 look up the priority of @code{OttavaBracket} in the IR or in the
-tables above, and reduce it to a value lower than that of a
+table above, and reduce it to a value lower than that of a
 @code{TextSpanner}, remembering that @code{OttavaBracket} is created
 in the @code{Staff} context:
 
diff --git a/Documentation/lilypond-texi2html-lang.init b/Documentation/lilypond-texi2html-lang.init
new file mode 100644 (file)
index 0000000..dc89070
--- /dev/null
@@ -0,0 +1,18 @@
+# Languages minimum initialization for texi2html
+# $LANGUAGES will be overwritten by lilypond-texi2html.init.
+
+use utf8;
+
+my @langlist = (
+    'ca', 'cs', 'de', 'es', 'fr', 'hu', 'it', 'ja', 'nl', 'po', 'zh'
+);
+
+foreach my $lang (@langlist)
+{
+    unless (exists($LANGUAGES->{$lang}) && defined($LANGUAGES->{$lang}))
+    {
+       $LANGUAGES->{$lang} = {};
+    }
+}
+
+return 1;
index 2ac6fc8a229fbef503aa45786f492ca1c4fd7176..c109df7b28ec497d7826252853cd8fde669786dd 100644 (file)
@@ -2126,7 +2126,7 @@ sopranoMusic = \relative { a'4 b c b8( a) }
 altoMusic = \relative { e'4 e e f }
 tenorMusic = \relative { c'4 b e d8( c) }
 bassMusic = \relative { a4 gis a d, }
-allLyrics = \lyricmode {King of glo -- ry }
+allLyrics = \lyricmode { King of glo -- ry }
 <<
   \new Staff = "Soprano" \sopranoMusic
   \new Lyrics \allLyrics
@@ -2144,17 +2144,11 @@ allLyrics = \lyricmode {King of glo -- ry }
   \new Lyrics \allLyrics
   \new PianoStaff <<
     \new Staff = "RH" {
-      \set Staff.printPartCombineTexts = ##f
-      \partcombine
-      \sopranoMusic
-      \altoMusic
+      \partcombine \sopranoMusic \altoMusic
     }
     \new Staff = "LH" {
-      \set Staff.printPartCombineTexts = ##f
       \clef "bass"
-      \partcombine
-      \tenorMusic
-      \bassMusic
+      \partcombine \tenorMusic \bassMusic
     }
   >>
 >>
index e954e9b9a675f1021fdf6d1898157a24a50eeafc..d3cfa42ff17af0a4f8256ef8a2b76a58b9fe0f23 100644 (file)
@@ -892,8 +892,8 @@ Default values not listed here are defined in
 
 The page-breaking algorithm to use.  Choices are
 @code{ly:minimal-breaking}, @code{ly:page-turn-breaking},
-@code{ly:one-line-breaking} and @code{ly:optimal-breaking}
-(the default).
+@code{ly:one-line-breaking}, @code{ly:one-line-auto-height-breaking},
+and @code{ly:optimal-breaking} (the default).
 
 @item page-breaking-system-system-spacing
 @funindex page-breaking-system-system-spacing
@@ -1559,6 +1559,7 @@ how to modify them.
 * Optimal page breaking::
 * Minimal page breaking::
 * One-line page breaking::
+* One-line-auto-height page breaking::
 * Optimal page turning::
 @end menu
 
@@ -1596,8 +1597,8 @@ bottom of the final page (or the final page in each
 @ref{Fixed vertical spacing paper variables,,Fixed vertical spacing @code{@bs{}paper} variables}.
 
 Page breaks are computed by the @code{page-breaking} function.
-LilyPond provides three algorithms for computing page breaks,
-@code{ly:optimal-breaking}, @code{ly:page-turn-breaking} and
+LilyPond provides several algorithms for computing page breaks,
+including @code{ly:optimal-breaking}, @code{ly:page-turn-breaking} and
 @code{ly:minimal-breaking}.  The default is
 @code{ly:optimal-breaking}, but the value can be changed in the
 @code{\paper} block:
@@ -1710,14 +1711,31 @@ Snippets:
 
 The @code{ly:one-line-breaking} function is a special-purpose
 page breaking algorithm that puts each score on its own page, and
-on a single line.  This page breaking function does not typeset
-titles or margins; only the score will be displayed.
+on a single line.  No titles or margins are typeset; only the score is
+displayed.
 
-The page width will be adjusted so that the longest score fits on
+The page width is adjusted so that the longest score fits on
 one line.  In particular, @code{paper-width}, @code{line-width}
-and @code{indent} variables in the @code{\paper} block will be
-ignored, although @code{left-margin} and @code{right-margin} will
-still be honored.  The height of the page will be left unmodified.
+and @code{indent} variables in the @code{\paper} block are ignored,
+although @code{left-margin} and @code{right-margin} are still honored.
+The height of the page is left unmodified.
+
+
+@node One-line-auto-height page breaking
+@unnumberedsubsubsec One-line-auto-height page breaking
+
+@funindex ly:one-line-auto-height-breaking
+
+The @code{ly:one-line-auto-height-breaking} function works just like
+@code{ly:one-line-breaking} except the page height is automatically
+modified to fit the height of the music.  Specifically, the
+@code{paper-height} variable in the @code{\paper} block is set so that
+it spans the height of the tallest score plus the @code{top-margin} and
+@code{bottom-margin}.
+
+Note that the @code{top-system-spacing} setting will affect the
+vertical position of the music.  Set it to @code{##f} in a paper block
+to simply place the music between the top and bottom margins.
 
 
 @node Optimal page turning
@@ -2642,6 +2660,9 @@ is, if two outside-staff grobs are competing for the same space, the one
 with the lower @code{outside-staff-priority} will be placed closer to
 the staff.
 
+A listing of outside-staff-priorities may be found in
+@rlearning{The outside-staff-priority property}.
+
 @lilypond[quote,ragged-right,verbatim]
 \relative c'' {
   c4_"Text"\pp
index db5d5ebab8fe0508986554f4d553e4af4bdb0818..1a2f07566daa8409658c88fbcb6d00eba08741ff 100644 (file)
@@ -669,11 +669,11 @@ example.
 @end lilypond
 
 
-Using the @code{\Staff \RemoveEmptyStaves} command to create ossia
+Using the @code{\RemoveAllEmptyStaves} command to create ossia
 staves may be used as an alternative.  This method is most
 convenient when ossia staves occur immediately following a line
 break.  For more information about
-@code{\Staff \RemoveEmptyStaves}, see @ref{Hiding staves}.
+@code{\RemoveAllEmptyStaves}, see @ref{Hiding staves}.
 
 @lilypond[verbatim,quote,ragged-right]
 <<
@@ -681,6 +681,7 @@ break.  For more information about
     \remove "Time_signature_engraver"
     \hide Clef
     \magnifyStaff #2/3
+    \RemoveAllEmptyStaves
   } \relative {
     R1*3
     c''4 e8 d c2
@@ -694,13 +695,6 @@ break.  For more information about
     e4 d c2
   }
 >>
-
-\layout {
-  \context {
-    \Staff \RemoveEmptyStaves
-    \override VerticalAxisGroup.remove-first = ##t
-  }
-}
 @end lilypond
 
 
@@ -737,10 +731,14 @@ Internals Reference:
 @cindex Frenched staff
 @cindex staff, hiding
 @cindex staff, empty
-@cindex hiding of staves
+@cindex hiding staves
+@cindex hiding ancient staves
+@cindex hiding rhythmic staves
+@cindex hiding vaticana staves
 @cindex empty staves
 
 @funindex \RemoveEmptyStaves
+@funindex \RemoveAllEmptyStaves
 @funindex Staff_symbol_engraver
 @funindex \stopStaff
 @funindex stopStaff
@@ -758,11 +756,14 @@ alternative, @code{\stopStaff} may be used.
 @end lilypond
 
 
-Empty staves can be hidden by setting the
-@code{\Staff \RemoveEmptyStaves} command in the @code{\layout}
-block.  In orchestral scores, this style is known as @q{Frenched
-Score}.  By default, this command hides and removes all empty
-staves in a score except for those in the first system.
+Empty staves can be hidden (for a so-called @q{Frenched Score})
+by applying the @code{\RemoveEmptyStaves} command on a context, which
+can be done globally (in a @code{\layout} block) as well as for
+specific staves only (in a @code{\with} block).  This command removes
+all empty staves in a score except for those in the first system.  If
+you want those in the first system to be hidden also, use
+@code{\RemoveAllEmptyStaves}.  Supported contexts are @code{Staff},
+@code{RhythmicStaff} and @code{VaticanaStaff}.
 
 @warning{A staff is considered empty when it contains only
 multi-measure rests, rests, skips, spacer rests, or a combination of these
@@ -771,7 +772,8 @@ elements.}
 @lilypond[verbatim,quote,ragged-right]
 \layout {
   \context {
-    \Staff \RemoveEmptyStaves
+    \Staff
+    \RemoveEmptyStaves
   }
 }
 
@@ -792,32 +794,15 @@ elements.}
 @cindex ossia
 
 @noindent
-@code{\Staff \RemoveEmptyStaves} can also be used to create ossia
+@code{\RemoveAllEmptyStaves} can also be used to create ossia
 sections for a staff.  For details, see @ref{Ossia staves}.
 
-@cindex hiding ancient staves
-@cindex hiding rhythmic staves
-
-@funindex \RemoveEmptyStaves
-
-The @code{\VaticanaStaff \RemoveEmptyStaves} command may be used to
-hide empty staves in ancient music contexts.  Similarly,
-@code{\RhythmicStaff \RemoveEmptyStaves} may be used to hide empty
-@code{RhythmicStaff} contexts.
-
 
 @predefined
-@code{\Staff \RemoveEmptyStaves},
-@code{\VaticanaStaff \RemoveEmptyStaves},
-@code{\RhythmicStaff \RemoveEmptyStaves}.
+@code{\RemoveEmptyStaves},
+@code{\RemoveAllEmptyStaves}.
 @endpredefined
 
-
-@snippets
-
-@lilypondfile[verbatim,quote,texidoc,doctitle]
-{removing-the-first-empty-line.ly}
-
 @seealso
 Music Glossary:
 @rglos{Frenched staff}.
index 131de3e32383b152b7a9fb22925544fc58f20153..ef72775059496ad1b6ba8e6e4fbb9deacc199dce 100644 (file)
@@ -19,7 +19,7 @@ include $(depth)/make/stepmake.make
 default:
 
 ifeq ($(out),www)
-local-WWW-1: $(OUT_BITMAP_IMAGES) $(OUT_PDF_IMAGES)
+local-WWW-1: $(OUT_BITMAP_IMAGES) $(OUT_PDF_IMAGES) $(outdir)/pdf
 endif
 
 #########
@@ -43,3 +43,5 @@ $(outdir)/%.png: %.eps
 $(outdir)/%.pdf: %.eps
        gs -dAutoRotatePages=/None -q -sDEVICE=pdfwrite -dNOPAUSE -dBATCH -sOutputFile=$@ -dEPSCrop -c .setpdfwrite -f $<
 
+$(outdir)/pdf:
+       ln -sf $(top-src-dir)/Documentation/pictures/pdf $@
index 94cdccf72412cee66917aaa241b609b8f0cee752..0030c5a1cb3f866f1f3348f3943e5d52bbbc9063 100644 (file)
@@ -10,7 +10,7 @@ entire groups of notes.  This behavior can be modified to subdivide the
 beams into sub-groups by setting the property @code{subdivideBeams}.
 When set, multiple beams will be subdivided at intervals defined by the
 current value of @code{baseMoment} by reducing the multiple beams to
-the number of beams that indicates the metric value of the subdivision. 
+the number of beams that indicates the metric value of the subdivision.
 If the group following the division is shorter than the current metric
 value (usually because the beam is incomplete) the number of beams
 reflects the longest possible subdivision group.  However, if there is
@@ -40,12 +40,12 @@ changed to match the new @code{baseMoment}:
   \set baseMoment = #(ly:make-moment 1/16)
   \set beatStructure = #'(4 4 4 4)
   c32[ c c c c c c c]
-  
+
   % Shorten beam by 1/32
   \set baseMoment = #(ly:make-moment 1/8)
   \set beatStructure = #'(2 2 2 2)
   c32[ c c c c c c] r32
-  
+
   % Shorten beam by 3/32
   \set baseMoment = #(ly:make-moment 1/8)
   \set beatStructure = #'(2 2 2 2)
index fa6826b541fc5f1a0549a1d773f2dcb5d70af015..a2209177002dd9ddb7e11e1dd16851827ca7afd7 100644 (file)
@@ -412,7 +412,7 @@ then that is a bug.
 We may already know about this bug.  Check here:
 
 @example
-@uref{http://code.google.com/p/lilypond/issues/list}
+@uref{http://sourceforge.net/p/testlilyissues/issues/}
 @end example
 
 @warning{Please @strong{DO NOT} add bug reports directly to the
@@ -884,30 +884,64 @@ manuals can be found at @url{http://lilypond.org}}
 @divClass{column-center-top}
 @subheading What is Google Summer of Code?
 
-A global program run by Google that offers students stipends for working
-on open source software projects during summer vacations.
+@uref{https://developers.google.com/open-source/gsoc/, GSoC} is a global
+program that offers students stipends to write code for free software
+and open source projects during the summer.  It is an excellent
+opportunity for students to gain experience with real-world software
+development and make a contribution that benefits everyone.  It brings
+new contributors to LilyPond and enables students who are already
+involved to become more involved.  LilyPond participates in GSoC as part
+of the @uref{http://www.gnu.org/, GNU project}.
 
-It is an excellent opportunity to find new contributors, and encourage
-students already participating in LilyPond development, to become more
-involved.  One of our contributors was accepted in the 2012 program as
-part of the @uref{http://www.gnu.org/, GNU project}; and we are always
-looking for others to participate in future programs.
+We have had GSoC participants in 2012 and 2015 and encourage students to
+apply for future summers.
+
+If you have questions or would like to apply, send us an email on our
+developer mailing list (see @ref{Contact}).
 
 @divEnd
 
 @divClass{column-center-middle-color2}
-@subheading Our Ideas List
+@subheading Project Ideas List
 
-Below is a list of projects that were suggested for the GSoC 2012
-students and is retained here as an inspiration for anyone
-who is interested in developing LilyPond for future GSoC projects.
+Below is a list of projects that was initially drawn up for GSoC 2012.
+It is maintained here as inspiration for future GSoC projects and for
+anyone who is interested in developing LilyPond.
 
-There are many more things that can be done to improve LilyPond and
-members of the LilyPond development team are always willing to help
-those who would like to tackle projects such as those listed below.
+Note that this is not an exhaustive list.  Other GSoC projects are also
+possible.  There are a number of areas where LilyPond could be improved
+and the LilyPond development team is always willing to help those who
+would like to tackle a project like those listed below.
 
 A full list of all the current open issues can be found
-@uref{http://code.google.com/p/lilypond/issues/list, here}.
+@uref{http://sourceforge.net/p/testlilyissues/issues/, here}.
+
+@divEnd
+
+@divClass{column-center-middle-color3}
+@subheading ScholarLY
+
+ScholarLY is a library in
+@uref{https://github.com/openlilylib/snippets, openLilyLib} that
+provides functionality for annotating scores, making it possible
+to manage scholarly workflows completely in the context of the score
+document.  So far it is possible to enter annotations of different
+types, produce clickable messages in the console output and export
+to text and LaTeX files.
+
+There are numerous feature requests to turn this library into an
+even more powerful and comprehensive tool, for example: Inserting
+music examples, producing footnotes, automatically applying styles
+to the annotated item (e.g. dash a slur, parenthesize an accidental),
+creating reports with point-and-click entries.  For a full description
+of this project suggestion please visit
+@uref{https://github.com/openlilylib/scholarly/wiki/GSoC}.
+
+@strong{Difficulty:} medium
+@strong{Requirements:} Scheme, possibly LaTeX, (optionally Python)
+@strong{Recommended:} Experience with or interest in scholarly
+edition and collaborative workflows.
+@strong{Potential Mentor:} Urs Liska
 
 @divEnd
 
@@ -921,7 +955,7 @@ multiple staffs are used where some have grace notes and others don't.
 @strong{Difficulty:} medium
 @strong{Requirements:} C++, MIDI
 @strong{Recommended:} familiarity with LilyPond internals
-@strong{Mentor(s):} Mike Solomon, Carl Sorensen
+@strong{Potential Mentors:} Mike Solomon, Carl Sorensen
 
 @divEnd
 
@@ -957,7 +991,7 @@ each output object to the XML tags.
 
 @strong{Difficulty:} medium
 @strong{Requirements:} MusicXML, Python, basic LilyPond knowledge
-@strong{Mentor(s):} Reinhold Kainhofer, Mike Solomon
+@strong{Potential Mentors:} Reinhold Kainhofer, Mike Solomon
 
 Familiarity with other scorewriters (for cross-testing) would also help.
 
@@ -974,7 +1008,7 @@ the intended output and writing code to improve them.
 @strong{Difficulty:} hard
 @strong{Requirements:} C++, experience with writing heuristics
 @strong{Recommended knowledge:} LilyPond knowledge, aesthetic sense
-@strong{Mentor(s):} Mike Solomon
+@strong{Potential Mentor:} Mike Solomon
 
 @divEnd
 
@@ -999,7 +1033,7 @@ it.
 @strong{Difficulty:} easy
 @strong{Requirements:} MetaFont, C++, good eye for details
 @strong{Recommended knowledge:} basic LilyPond knowledge
-@strong{Mentor(s):} Werner Lemberg
+@strong{Potential Mentor:} Werner Lemberg
 
 @divEnd
 
@@ -1014,7 +1048,7 @@ section 2.2 here}).  If possible also reduce beaming-computation time.
 @strong{Difficulty:} medium
 @strong{Requirements:} C++, experience with writing heuristics
 @strong{Recommended knowledge:} aesthetic sense
-@strong{Mentor(s):} Mike Solomon, Carl Sorensen
+@strong{Potential Mentors:} Mike Solomon, Carl Sorensen
 
 @divEnd
 
@@ -1028,7 +1062,7 @@ the rejection of any patch which introduced extra warnings.
 
 @strong{Difficulty:} medium
 @strong{Requirements:} C++
-@strong{Mentor(s):} Joe Neeman, Reinhold Kainhofer
+@strong{Potential Mentors:} Joe Neeman, Reinhold Kainhofer
 
 @divEnd
 
index 3a796c7d4b6b6977366e609d6df6484c062141b0..b75104d040b60160d3102d6c5d80aa6cd96dbc27 100644 (file)
@@ -621,18 +621,19 @@ reportedly very happy with them.
 
 Aurélien has also re-orchestrated @emph{Der Ring des Nibelungen} by Richard
 Wagner to a
-@uref{http://www.rsb-online.de/content/konzerte/wagnerzyklus-10-13/wagner-fuer-kinder/index_ger.html,100-minute version for children}.
+@uref{http://www.rsb-online.de/content/concerts/new-season-1516/family-concerts-age-7-and-above/index_eng.html,100-minute version for children}.
 Written for a standard symphony orchestra, but with a reduced cast of
-singers, it was performed by the @emph{Radio-Sinfonieorchester Berlin}
+singers, it was performed by the
+@uref{http://www.rsb-online.de/,@emph{Radio-Sinfonieorchester Berlin}}
 in April 2014 at the Atze Musiktheater, Berlin.  The Conductor was Heiko
 Matthias Förster.
 
 @item
 Joe Smeets created sheet music for the children's book @emph{Zing Mee}
-(@emph{Sing along}) by Annie M.G. published by Querido -- ISBN
-9789045106205:
-@uref{http://www.queridokinderenjeugdboeken.nl/web/Boek.htm?dbid=18954&typeofpage=134707, www.queridokinderenjeugdboeken.nl}; choir
-rehearsal scores for the Dutch translation of Benjamin Britten's
+(@emph{Sing along}) by Annie M.G. published by
+@uref{http://www.queridokinderenjeugdboeken.nl/, Querido}
+-- ISBN 9789045106205;
+choir rehearsal scores for the Dutch translation of Benjamin Britten's
 @emph{Saint Nicolas} performed by @emph{Muziektheater Hollands Diep} in
 2011;
 @uref{http://www.muziektheaterhollandsdiep.nl/nl/voorstellingen/sint_nicolaas_leeft, www.muziektheaterhollandsdiep.nl}.
@@ -656,11 +657,11 @@ for his Ph.D. Thesis.
 @item
 Mussorgsky's @emph{Pictures at an exhibition}, was re-orchestrated and
 conducted by @uref{http://www.aurelienbello.com/,Aurélien Bello} with
-the @uref{http://www.junge-philharmonie-brandenburg.de/,
+the @uref{https://junge-philharmonie-brandenburg.de/,
 Junge Philharmonie Brandenburg} in October 2011 and April 2012.
 
 @item
-@uref{http://www.kierenmacmillan.info/, Kieren MacMillan}, composer and
+@uref{http://kierenmacmillan.info/, Kieren MacMillan}, composer and
 musical director.  His many, recent works include; @emph{Go Thy Way},
 performed by the @uref{http://www.saltlakechoralartists.org/,
 Salt Lake Choral Artists} in March 2012; The
@@ -668,16 +669,16 @@ Salt Lake Choral Artists} in March 2012; The
 by the
 @uref{http://www.herald-dispatch.com/news/marshall/x1883873762/Music-duo-Chrysalis-to-perform-at-Marshall-University-on-Jan-19,
 Chrysalis Duo} ; @emph{thrafsmata} performed in July 2011 by the
-@uref{http://www.pnme.org/CurrentSeason/PreviousSeasons.html, Pittsburgh
+@uref{http://www.pnme.org/, Pittsburgh
 New Music Ensemble}.
 
 @item
 @emph{Anonymous Student Compliment or Complaint}, by
 @uref{http://www.mikesolomon.org, Mike Solomon}, winner chosen from among
 172 entries from 22 countries of the
-@uref{http://leftcoastensemble.org, 2011 Left Coast Composition Contest}.
+@uref{http://www.leftcoastensemble.org, 2011 Left Coast Composition Contest}.
 Other works include, Norman (age 1) for clarinet solo, performed at the
-@uref{http://emu.music.ufl.edu/fems_concerts.html, University of Florida}'s
+@uref{http://arts.ufl.edu/academics/music/, University of Florida}'s
 Electroacoustic Music Festival (FEMF), October 2010.
 
 @item
@@ -688,7 +689,7 @@ Italy.  @uref{http://www.ascarlatti2010.net, Alessandro Scarlatti 2010},
 in celebration of the composer's 350th birthday.
 
 @item
-@uref{http://www.mercurybaroque.org, Mercury Baroque}'s performance of
+@uref{http://www.mercuryhouston.org/, Mercury Baroque}'s performance of
 Lully's @emph{Armide}, May 15-16, 2009, in Houston, Texas (engraving by
 @uref{http://nicolas.sceaux.free.fr/, Nicolas Sceaux}).
 
@@ -703,7 +704,7 @@ New York} (engraving by
 @emph{Affaire étrangère}, an opera by
 @uref{http://valentin.villenave.net/,Valentin Villenave}
 to a French libretto by
-@uref{http://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis
+@uref{https://en.wikipedia.org/wiki/Lewis_Trondheim, Lewis
 Trondheim}, premiered February 1, 2009 at
 @uref{http://www.orchestre-montpellier.com/, L'Opéra National de
 Montpellier}, France.
@@ -734,12 +735,12 @@ piano keyboard showing which keys to press to help beginners learn
 how to read sheet music.
 
 @item
-@uref{http://www.adoromusicpub.com/, Adoro Music Publishing},
+@uref{https://twitter.com/adoromusic, Adoro Music Publishing},
 high-quality scores of sacred music, available for immediate
 download or in traditional paper format.
 
 @item
-@uref{http://www.shadylane.fr, The Shady Lane Publishing},
+@uref{http://matthieujacquot.com/, The Shady Lane Publishing},
 a @qq{micro musical publishing house} whose goal is to promote a
 new form of musical economy closer to the musicians and music
 lovers.
index 0ac9889fddded7da93c75d99218aa2163d732ba3..8596786a1a93a6adf2144e46cb159b09620c3b2e 100644 (file)
@@ -9,10 +9,10 @@
 @c used for news about the upcoming release; see CG 10.2
 
 @newsItem
-@subheading LilyPond 2.19.34 released  @emph{December 22, 2015}
+@subheading LilyPond 2.19.36 released  @emph{January 31, 2016}
 
 We are happy to announce the release of LilyPond
-2.19.34.  This release includes a number of enhancements, and contains some
+2.19.36.  This release includes a number of enhancements, and contains some
 work in progress.  You will have access to the very latest features, but
 some may be incomplete, and you may encounter bugs and crashes.  If you
 require a stable version of Lilypond, we recommend using the 2.18
index 894c37c53b89809912e48641e17e053827adf0c7..f6ef627fb55c46979ad16cf2949aa88f198d11df 100644 (file)
@@ -26,6 +26,30 @@ NOTE:
   * don't duplicate entries from news-front.itexi
 @end ignore
 
+@newsItem
+@subheading LilyPond 2.19.35 released  @emph{January 02, 2016}
+
+We are happy to announce the release of LilyPond
+2.19.35.  This release includes a number of enhancements, and contains some
+work in progress.  You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes.  If you
+require a stable version of Lilypond, we recommend using the 2.18
+version.
+
+@newsEnd
+
+@newsItem
+@subheading LilyPond 2.19.34 released  @emph{December 22, 2015}
+
+We are happy to announce the release of LilyPond
+2.19.34.  This release includes a number of enhancements, and contains some
+work in progress.  You will have access to the very latest features, but
+some may be incomplete, and you may encounter bugs and crashes.  If you
+require a stable version of Lilypond, we recommend using the 2.18
+version.
+
+@newsEnd
+
 @newsItem
 @subheading LilyPond 2.19.33 released  @emph{December 6, 2015}
 
diff --git a/VERSION b/VERSION
index cce14f28ef65ef7a4560ac11fb136aef73e962df..9cd0ed40f57c605d80848f11057242fbac643b29 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=19
-PATCH_LEVEL=35
+PATCH_LEVEL=37
 MY_PATCH_LEVEL=
 VERSION_STABLE=2.18.2
-VERSION_DEVEL=2.19.34
+VERSION_DEVEL=2.19.36
index e915a0b3cd7032904e0ef5444f7a315c4c047662..c681d761990ce0fe7cfa696a53c0ea1e1e12ed4f 100644 (file)
@@ -129,6 +129,7 @@ MFMODE = @MFMODE@
 MSGFMT = @MSGFMT@
 PAPERSIZE=a4
 PATHSEP = @PATHSEP@
+PDFTEX = @PDFTEX@
 PDFLATEX = @PDFLATEX@
 PERL = @PERL@
 PLATFORM_WINDOWS = @PLATFORM_WINDOWS@
index a69dcf039046ff7a4606305ffdedae3685e3b5ad..29599835f9f9788da5cc0b60f043d59a8ec51e31 100644 (file)
@@ -1,10 +1,10 @@
 \version "2.19.32"
 
 \header {
-  
+
   doctitle = "Beam subdivide over quarter notes"
 
-  texidoc = "Beam count at subdivisions should match the location 
+  texidoc = "Beam count at subdivisions should match the location
 of the current subdivision.  However, if the groups are equal or
 longer than quarter notes, one beam should always be left."
 
index 665d837442e8aeb76d3720c89472eb7686abc92c..fb15a75ebe895b5333aa93ba5ff128fed20cda52 100644 (file)
@@ -1,10 +1,10 @@
 \version "2.19.34"
 
 \header {
-  
+
   doctitle = "Beam subdivide with incomplete remainder"
 
-  texidoc = "Beam count at subdivisions should match the count corresponding 
+  texidoc = "Beam count at subdivisions should match the count corresponding
 to the location of the current subdivision.  However, if the remainder of the
 beam is shorter than that the beam count should be adopted accordingly."
 
@@ -19,7 +19,7 @@ beam is shorter than that the beam count should be adopted accordingly."
   \time 1/4
   \set subdivideBeams = ##t
   \set baseMoment = #(ly:make-moment 1/32)
-  c64 ^\markup "Full beam (1/32 division)" [ c c c  c c c c  c c c c  c c c c ] 
+  c64 ^\markup "Full beam (1/32 division)" [ c c c  c c c c  c c c c  c c c c ]
   c64 ^\markup "Shortened by 1/32" [ c c c  c c c c  c c c c  c c ] r32
   c64 ^\markup "Shortened by 3/32" [ c c c  c c c c  c c  ] r16.
   \set baseMoment = #(ly:make-moment 1/16)
index de6d6bd1d28690e9f8bcef9f2f1abac8b9a04247..c09dad4eb9a879a5d03d5683c5a2ff75c3fd50b5 100644 (file)
@@ -1,7 +1,7 @@
 \version "2.19.34"
 
 \header {
-  
+
   doctitle = "Beam subdivide over quarter notes"
 
   texidoc = "If in a subdivided beam one single stem follows a subdivision
index e7dd0a7b73a4b4a698fd4c7dc04f167e483d10ae..c88eab152c79468f1215b03d4be23cea2c126cd2 100644 (file)
@@ -1,6 +1,6 @@
 \header {
 
-  texidoc = "Beam count at subdivisions should match the location 
+  texidoc = "Beam count at subdivisions should match the location
 of the current subdivision."
   }
 
@@ -10,7 +10,7 @@ of the current subdivision."
   ragged-right = ##t
 }
 
-{  
+{
   \set subdivideBeams = ##t
   \set baseMoment = #(ly:make-moment 1 4)
   c''32[^\markup{"baseMoment 1/4"} c'' c'' c'' c'' c'' c'' c'']
diff --git a/input/regression/ledger-extra.ly b/input/regression/ledger-extra.ly
new file mode 100644 (file)
index 0000000..55ad653
--- /dev/null
@@ -0,0 +1,28 @@
+\version "2.19.36"
+
+\header {
+  texidoc = "The ledger-extra grob property increases
+the number of ledger lines drawn, but they are not
+drawn on top of staff lines."
+}
+
+notes = \relative {
+  \time 6/8
+  a4. b | c d | e f |
+  g4. a | b c | d e |
+  f4. g | a b |
+}
+
+\new Staff {
+  \notes
+}
+
+\new Staff {
+  \override Staff.StaffSymbol.ledger-extra = 1
+  \notes
+}
+
+\new Staff {
+  \override Staff.StaffSymbol.ledger-extra = 2
+  \notes
+}
index ebe18303f57bb951dbe728a680248d8fc141e4e4..6ddabeae887962f7fafd697f55b8a43d45886c0e 100644 (file)
@@ -25,7 +25,7 @@ $(outdir)/collated-files.list: $(OUT_FILES)
        echo $(sort $(filter-out %.xml,$(OUT_FILES))) > $@
 
 $(outdir)/suffix-texi.texi: suffix-texi.texi $(outdir)/version.itexi $(DOCUMENTATION_LOCALE_TARGET) $(INIT_LY_SOURCES) $(SCHEME_SOURCES)
-       LILYPOND_VERSION=$(TOPLEVEL_VERSION) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) $(LILYPOND_BOOK_FLAGS) --redirect-lilypond-output $<
+       LILYPOND_VERSION=$(TOPLEVEL_VERSION) PDFTEX=$(PDFTEX) PDFLATEX=$(PDFLATEX) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) $(LILYPOND_BOOK_FLAGS) --redirect-lilypond-output $<
 
 # Due to automatic language detection the standard rule using the script
 # extract_texi_filenames would create .es.xref-map for these files. The
index ac15fa78adc6b58094220be2ef205b5eaef7176a..aa718e4f5c9c649b1a58bf29d907353345b09588 100644 (file)
@@ -1,11 +1,13 @@
 \version "2.19.22"
 
 \header {
-  texidoc = "The markup-commands @code{\\draw-dashed-line} and
-  @code{\\draw-dotted-line} should print the same visual length as
-  @code{\\draw-line}."
+  texidoc = "The markup-commands @code{\\draw-dashed-line},
+  @code{\\draw-dotted-line} and @code{\\draw-squiggle-line} should print the
+  same visual length as @code{\\draw-line}.
+  Also testing possible overrides for @code{\\draw-squiggle-line}"
 }
 
+%% draw-dotted-line and draw-dashed-line
 test =
 #(define-scheme-function (x-nmbr y-nmbr)(number? number?)
  (let* ((lst (map
@@ -57,4 +59,71 @@ test =
                   (iota (abs x-nmbr)))))
         lst))
 
+%% draw-squiggle-line
+mrkp =
+\markup
+  \override #'(word-space . 2)
+  \column {
+    \line { \draw-squiggle-line #0.5 #'(6 . 0) ##t \tiny \vcenter "default" }
+    \line {
+      \override #'(orientation . -1) \draw-squiggle-line #0.5 #'(6 . 0) ##t
+      \tiny \vcenter "different orientation"
+    }
+    \line {
+      \draw-squiggle-line #0.5 #'(6 . 0) ##f
+      \tiny \vcenter "\"eq-end?\" set #f"
+    }
+    \line {
+      \override #'(height . 1) \draw-squiggle-line #0.5 #'(6 . 0) ##t
+      \tiny \vcenter "different height"
+    }
+    \line {
+      \override #'(thickness . 5) \draw-squiggle-line #0.5 #'(6 . 0) ##t
+      \tiny \vcenter "different thickness"
+    }
+    \line {
+      \override #'(angularity . 2) \draw-squiggle-line #0.5 #'(6 . 0) ##t
+      \tiny \vcenter "different angularity"
+    }
+  }
+
+test-draw-squiggle-line =
+#(define-scheme-function (steps) (integer?)
+;; Puts out a markup combining draw-line-markup and draw-squiggle-line-markup
+;; in a  helix-like mannor
+  (define (val-pts-list steps)
+    ;; Puts out a list, with each element being a pair of a numerical value
+    ;; and a number-pair
+    ;; The numerical value is used for first-bow-length and its height
+    ;; The number-pair is the destination-point of the line.
+    ;; Those points are on a simple helix around '(0 . 0)
+    (map
+      (lambda (n r)
+        (let* ((y (* (sin n) r))
+               (x (* (cos n) r)))
+          (if (< (abs x) 0.00001)
+              (set! x 0))
+          (if (< (abs y) 0.00001)
+              (set! y 0))
+          (cons (max 0.1 (- 0.5 (/ 1 r))) (cons x y ))))
+      (iota steps 0 (/ TWO-PI steps))
+      (iota steps 3 0.5)))
+
+  (let ((args
+          (map
+            (lambda (arg)
+              #{
+                \markup
+                  \combine
+                    \draw-line $(cdr arg)
+                    \override #`(height . , (car arg))
+                    \draw-squiggle-line
+                      #(car arg)
+                      $(cdr arg) ##f
+              #})
+            (val-pts-list steps))))
+    #{ \markup { \hspace #10 \overlay $args \hspace #5 \vcenter \mrkp } #}))
+
 \test #15 #0
+
+\test-draw-squiggle-line #12 #10
index f5fbc9b60d2671170f61920fbf415b857e78e8b7..316a87c2a6409c254fdfc1656c75d69b2de5e743 100644 (file)
@@ -1,14 +1,15 @@
-\version "2.17.19"
+\version "2.19.35"
 
 \header {
   texidoc = "@code{\\note-by-number} and @code{\\note} support
-all note head styles and straight flags."
+all note head styles and all flag styles (default, straight, flat, mensural)."
 }
 
 #(define styles-list
   '(default altdefault
     baroque neomensural
     mensural petrucci
+    semipetrucci blackpetrucci
     harmonic harmonic-black
     harmonic-mixed diamond
     cross xcircle
@@ -35,6 +36,8 @@ all note head styles and straight flags."
                                '(-3 -2 -1 0 1 2 3 4 5 6))))))))
                        styles))))
 
+%% Testing all combinations of note-head/flag-styles would be too much
+%% Thus, limited examples
 \markup {
   \column {
     \combine \null \vspace #1
@@ -49,7 +52,7 @@ all note head styles and straight flags."
     \combine \null \vspace #1
     \underline "Modern-straight-flag:"
     \override #'(flag-style . modern-straight-flag)
-    \show-note-styles #'(default)
+    \show-note-styles #'(default mensural)
   }
 }
 
@@ -70,3 +73,12 @@ all note head styles and straight flags."
     \show-note-styles #'(default)
   }
 }
+
+\markup {
+  \column {
+    \combine \null \vspace #1
+    \underline "default-flag:"
+    \override #'(flag-style . default)
+    \show-note-styles #'(default mensural)
+  }
+}
diff --git a/input/regression/one-line-auto-height-breaking.ly b/input/regression/one-line-auto-height-breaking.ly
new file mode 100644 (file)
index 0000000..087ff50
--- /dev/null
@@ -0,0 +1,11 @@
+\version "2.19.36"
+
+\header {
+  texidoc = "The @var{ly:one-line-auto-height-breaking} algorithm puts
+  everything on one line (just like @code{ly:one-line-breaking}) and
+  sets the page-height to fit the music."
+}
+
+\paper { page-breaking = #ly:one-line-auto-height-breaking }
+
+\include "typography-demo.ly"
index 871a364fb30dbb417fc5e46d612d707d19a6f7fe..bcd1680b906403393de91f93974b2b83a1533fbe 100644 (file)
@@ -1,7 +1,7 @@
-\version "2.19.25"
+\version "2.19.36"
 
 \header {
-  texidoc = "Overrides can be the target of a @code{\\tweak}, with the
+  texidoc = "Overrides can be the target of a @code{\\propertyTweak}, with the
 tweaks accumulating as override.  The main application is for stacking
 commands implemented in terms of @code{\\propertyTweak}.  This example
 should show the starting chord with blue, cross-styled note heads and
@@ -11,8 +11,8 @@ a red stem."
 \layout { ragged-right = ##t }
 
 {
-  \once \tweak Stem.color #red
-  \tweak color #blue
+  \once \propertyTweak Stem.color #red
+  \propertyTweak color #blue
   \override NoteHead.style = #'cross
   <c' e'>2 c'2
 }
index a8899905252317ec33db0e5bccde330fec7ee7c4..46a46a5d2ea529aa4c1e09836413f4ee0b708d05 100644 (file)
@@ -166,17 +166,17 @@ Beaming_pattern::beamify (Beaming_options const &options)
         Direction non_flag_dir = -flag_directions[i];
         if (non_flag_dir)
           {
-            int count = 
-                (infos_[i + 1].rhythmic_importance_ < 0 && 
+            int count =
+                (infos_[i + 1].rhythmic_importance_ < 0 &&
                  options.subdivide_beams_)
-                        // we're left of a subdivision 
+                        // we're left of a subdivision
                 ?  (i != infos_.size () - 2)
-                   // respect the beam count for shortened beams ...   
+                   // respect the beam count for shortened beams ...
                    ? max (beam_count_for_rhythmic_position (i + 1),
                           beam_count_for_length (remaining_length (i + 1)))
                    // ... except if there's only one trailing stem
                    : beam_count_for_rhythmic_position (i + 1)
-                
+
                 // we're at any other stem
                 : min (min (infos_[i].count (non_flag_dir),
                             infos_[i + non_flag_dir].count (-non_flag_dir)),
@@ -184,7 +184,7 @@ Beaming_pattern::beamify (Beaming_options const &options)
 
             // Ensure at least one beam is left, even for groups longer than 1/8
             count = max (count, 1);
-            
+
             infos_[i].beam_count_drul_[non_flag_dir] = count;
           }
       }
@@ -386,7 +386,7 @@ Beaming_pattern::beam_count_for_rhythmic_position (int idx) const
     return intlog2(infos_[idx].start_moment_.main_part_.den()) - 2;
 }
 
-int 
+int
 Beaming_pattern::beam_count_for_length (Moment len) const
 {
     return intlog2(len.main_part_.den()) - 2 - intlog2(len.main_part_.num());
diff --git a/lily/include/one-line-auto-height-breaking.hh b/lily/include/one-line-auto-height-breaking.hh
new file mode 100644 (file)
index 0000000..92209de
--- /dev/null
@@ -0,0 +1,35 @@
+/*
+  This file is part of LilyPond, the GNU music typesetter.
+
+  Copyright (C) 2012 Joe Neeman <joeneeman@gmail.com>
+
+  LilyPond is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  LilyPond is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef ONE_LINE_AUTO_HEIGHT_BREAKING_HH
+#define ONE_LINE_AUTO_HEIGHT_BREAKING_HH
+
+#include "page-breaking.hh"
+#include "page-spacing.hh"
+
+class One_line_auto_height_breaking: public Page_breaking
+{
+public:
+  virtual SCM solve ();
+
+  One_line_auto_height_breaking (Paper_book *pb);
+  virtual ~One_line_auto_height_breaking ();
+};
+
+#endif /* ONE_LINE_AUTO_HEIGHT_BREAKING_HH */
diff --git a/lily/one-line-auto-height-breaking.cc b/lily/one-line-auto-height-breaking.cc
new file mode 100644 (file)
index 0000000..bb0698f
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+  This file is part of LilyPond, the GNU music typesetter.
+
+  Copyright (C) 2012 Joe Neeman <joeneeman@gmail.com>
+
+  LilyPond is free software: you can redistribute it and/or modify
+  it under the terms of the GNU General Public License as published by
+  the Free Software Foundation, either version 3 of the License, or
+  (at your option) any later version.
+
+  LilyPond is distributed in the hope that it will be useful,
+  but WITHOUT ANY WARRANTY; without even the implied warranty of
+  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+  GNU General Public License for more details.
+
+  You should have received a copy of the GNU General Public License
+  along with LilyPond.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#include "one-line-auto-height-breaking.hh"
+
+#include <limits>
+
+#include "column-x-positions.hh"
+#include "international.hh"
+#include "output-def.hh"
+#include "page-spacing.hh"
+#include "paper-book.hh"
+#include "paper-score.hh"
+#include "simple-spacer.hh"
+#include "system.hh"
+
+One_line_auto_height_breaking::One_line_auto_height_breaking (Paper_book *pb)
+  : Page_breaking (pb, 0, 0)
+{
+}
+
+One_line_auto_height_breaking::~One_line_auto_height_breaking ()
+{
+}
+
+/*
+  This is a somewhat unconventional page-breaking algorithm.  Like
+  ly:one-line-breaking, every score is put on a single page, whose width
+  is enough to fit the entire score on one line.  Line breaks and page
+  breaks are ignored, and the paper-width setting in the paper
+  block is modified to fit the music.  Unlike ly:one-line-breaking
+  the paper-height setting in the paper block is also modified to fit
+  the music.
+*/
+SCM
+One_line_auto_height_breaking::solve ()
+{
+  SCM all_pages = SCM_EOL;
+  Real max_width = 0;
+  Real max_height = 0;
+
+  for (vsize i = 0; i < system_specs_.size (); ++i)
+    {
+      if (Paper_score *ps = system_specs_[i].pscore_)
+        {
+          vector<Grob *> cols = ps->root_system ()->used_columns ();
+
+          // No indent, "infinite" line width, ragged.
+          Column_x_positions pos = get_line_configuration (cols, numeric_limits<Real>::max (), 0, true);
+          vector<Column_x_positions> positions;
+          positions.push_back (pos);
+
+          ps->root_system ()->break_into_pieces (positions);
+          ps->root_system ()->do_break_substitution_and_fixup_refpoints ();
+          Grob *system = ps->root_system ()->broken_intos_[0];
+
+          vector<vsize> lines_per_page;
+          lines_per_page.push_back (1);
+          SCM systems = scm_list_1 (system->self_scm ());
+          SCM pages = make_pages (lines_per_page, systems);
+
+          max_width = max (max_width, system->extent (system, X_AXIS).length ());
+          max_height = max (max_height, system->extent (system, Y_AXIS).length ());
+          all_pages = scm_cons (scm_car (pages), all_pages);
+        }
+      else if (Prob *pb = system_specs_[i].prob_)
+        // Because we don't call Page_breaking::systems in this algorithm,
+        // we need to manually unprotect the titles.
+        pb->unprotect ();
+    }
+
+  // Alter paper-width so that it is large enough to fit every system.
+  // TODO: it might be nice to allow different pages to have different widths
+  // and heights.  This would need support in the backends (eg. framework-ps.scm).
+  Real right_margin = robust_scm2double (book_->paper_->c_variable ("right-margin"), 0.0);
+  Real left_margin = robust_scm2double (book_->paper_->c_variable ("left-margin"), 0.0);
+  Real width = max_width + right_margin + left_margin;
+  book_->paper_->set_variable (ly_symbol2scm ("paper-width"), scm_from_double (width));
+
+  // Alter paper-height so that it fits the height of the tallest system.
+  Real top_margin = robust_scm2double (book_->paper_->c_variable ("top-margin"), 0.0);
+  Real bottom_margin = robust_scm2double (book_->paper_->c_variable ("bottom-margin"), 0.0);
+  Real height = max_height + top_margin + bottom_margin;
+  book_->paper_->set_variable (ly_symbol2scm ("paper-height"), scm_from_double (height));
+
+  return scm_reverse_x (all_pages, SCM_EOL);
+}
index 213864462fbfcca8f2af61ee8cfbf5ecd5469666..a3276f4216c6b876274f8def526188ebaf60a733 100644 (file)
@@ -41,10 +41,9 @@ One_line_page_breaking::~One_line_page_breaking ()
 
 /*
   This is a somewhat unconventional page-breaking algorithm.  Every
-  score will be put on a single page, whose width is enough
-  to fit the entire score one one line.  Line breaks and page breaks
-  are ignored, and the paper-width setting in the paper block
-  will be modified to fit the music.
+  score is put on a single page, whose width is enough to fit the entire
+  score on one line.  Line breaks and page breaks are ignored, and the
+  paper-width setting in the paper block is modified to fit the music.
 */
 SCM
 One_line_page_breaking::solve ()
index 70ec63971dc83c69f35bd9b9f5e482f46944444f..0c806493b499fcad2b60e558e7f7710e4f51c2ed 100644 (file)
@@ -20,6 +20,7 @@
 #include "paper-book.hh"
 #include "page-turn-page-breaking.hh"
 #include "one-line-page-breaking.hh"
+#include "one-line-auto-height-breaking.hh"
 #include "optimal-page-breaking.hh"
 #include "minimal-page-breaking.hh"
 
@@ -56,9 +57,20 @@ LY_DEFINE (ly_minimal_breaking, "ly:minimal-breaking",
 LY_DEFINE (ly_one_line_breaking, "ly:one-line-breaking",
            1, 0, 0, (SCM pb),
            "Put each score on a single line, and put each line on its own"
-           " page.  The paper-width setting will be modified so that"
-           " every page will be wider than the widest line.")
+           " page.  Modify the paper-width setting so that every page"
+           " is wider than the widest line.")
 {
   One_line_page_breaking b (unsmob<Paper_book> (pb));
   return b.solve ();
 }
+
+LY_DEFINE (ly_one_line_auto_height_breaking, "ly:one-line-auto-height-breaking",
+           1, 0, 0, (SCM pb),
+           "Put each score on a single line, and put each line on its own"
+           " page.  Modify the paper-width setting so that every page"
+           " is wider than the widest line. Modify the paper-height"
+           " setting to fit the height of the tallest line.")
+{
+  One_line_auto_height_breaking b (unsmob<Paper_book> (pb));
+  return b.solve ();
+}
index c60c6ed64c1157fa00e516efdcd98b8cb9e9eb0b..f09b437fa3a5b43709b033f7bbea22357f2e737b 100644 (file)
@@ -3693,7 +3693,7 @@ markup_top:
        ;
 
 markup_scm:
-       embedded_scm_bare
+       embedded_scm
        {
                if (Text_interface::is_markup ($1))
                        MYBACKUP (MARKUP_IDENTIFIER, $1, @1);
index 0648d0aae8bee5c8a7214c563d54798526344092..26781f0dcd5b53529d6f1ba986b011cdfc73a09a 100644 (file)
@@ -331,6 +331,7 @@ Staff_performer::acknowledge_audio_element (Audio_element_info inf)
           set_instrument_name (voice);
         }
       ai->channel_ = channel_;
+      Audio_staff *audio_staff = get_audio_staff (voice);
       bool encode_dynamics_as_velocity_ = true;
       if (encode_dynamics_as_velocity_)
         {
@@ -344,11 +345,11 @@ Staff_performer::acknowledge_audio_element (Audio_element_info inf)
           else if (Audio_dynamic *d = dynamic_cast<Audio_dynamic *> (inf.elem_))
             {
               dynamic_map_[voice] = d;
-              // Output volume as velocity: must disable Midi_dynamic output
-              d->silent_ = true;
+              // Output volume as velocity: skip Midi_dynamic output for the
+              // current element.
+              return;
             }
         }
-      Audio_staff *audio_staff = get_audio_staff (voice);
       audio_staff->add_audio_item (ai);
     }
 }
index de88102d1420d140152786692eeeb72b0ce8bb5a..256a9bdd0d24687ac26a63cc8cbc9a7ca2c7159e 100644 (file)
@@ -247,7 +247,20 @@ Staff_symbol::ledger_positions (Grob *me, int pos)
           values[i] = nearest_line + dir * (ledger_count - i) * 2;
         }
     }
-  return values;
+  // remove any ledger lines that would fall on staff lines,
+  // which can happen when ledger-extra > 0
+  vector<Real> final_values;
+  for (vector<Real>::const_iterator i = values.begin (),
+       e = values.end ();
+       i != e;
+       ++i)
+    {
+      if (find (line_positions.begin (), line_positions.end (), *i) == line_positions.end ())
+        {
+          final_values.push_back (*i);
+        }
+    }
+  return final_values;
 }
 
 int
index 17bf91958ae9b8409fbaa9e72e87d678c799a01d..a36bc5e8f0ba7e5092227aea60261fb65e018cc5 100644 (file)
@@ -23,7 +23,7 @@ That's it.  For more information, visit http://lilypond.org .
 
 %}
 
-\version "2.19.34"  % necessary for upgrading to future LilyPond versions.
+\version "2.19.36"  % necessary for upgrading to future LilyPond versions.
 
 \header{
   title = "A scale in LilyPond"
index 0bbd29b80fd2afab88fbdf1c9cb49f55881f5d92..4d27606c5239cc3052308908c89782db7d27ad5a 100644 (file)
@@ -32,7 +32,7 @@ Good luck with LilyPond!  Happy engraving.
 
 %}
 
-\version "2.19.34"  % necessary for upgrading to future LilyPond versions.
+\version "2.19.36"  % necessary for upgrading to future LilyPond versions.
 
 \header{
   title = "A scale in LilyPond"
index 24b8ce055845e3d730475b64da9c94e6a9e46b46..a4064f4b327a4df15bef871dff36d801efe50d2d 100644 (file)
@@ -24,6 +24,14 @@ RemoveEmptyStaves = \with {
 to the list of interfaces set by @code{keepAliveInterfaces}."
 }
 
+RemoveAllEmptyStaves = \with {
+  \override VerticalAxisGroup.remove-empty = ##t
+  \override VerticalAxisGroup.remove-first = ##t
+  \description "Remove staves which are considered to be empty according
+to the list of interfaces set by @code{keepAliveInterfaces}, including those
+in the first system."
+}
+
 inherit-acceptability =
 #(define-void-function (to from)
    (symbol? symbol?)
index 5c6fb24e6ed04e773d5f41bc22d40d0a6c13b046..77ca2d0b007bb489e96b3aca2e5a76f6e20d003e 100644 (file)
@@ -1425,7 +1425,47 @@ property (inside of an alist) is tweaked.")
    ;; should only be attempted when the simple uses don't match the
    ;; given predicate.
    (if (ly:music? item)
-       (tweak prop value item)
+       (if (music-is-of-type? item 'context-specification)
+           ;; This is essentially dealing with the case
+           ;; \propertyTweak color #red \propertyTweak font-size #3 NoteHead
+           ;; namely when stacked tweaks end in a symbol list
+           ;; rather than a music expression.
+           ;;
+           ;; We have a tweak here to convert into an override,
+           ;; so we need to know the grob to apply it to.  That's
+           ;; easy if we have a directed tweak, and otherwise we
+           ;; need to find the symbol in the expression itself.
+           (let* ((p (check-grob-path prop (*location*)
+                                      #:start 1
+                                      #:default #t
+                                      #:min 2))
+                  (elt (ly:music-property item 'element))
+                  (seq (if (music-is-of-type? elt 'sequential-music)
+                           elt
+                           (make-sequential-music (list elt))))
+                  (elts (ly:music-property seq 'elements))
+                  (symbol (if (symbol? (car p))
+                              (car p)
+                              (and (pair? elts)
+                                   (ly:music-property (car elts)
+                                                      'symbol)))))
+             (if (symbol? symbol)
+                 (begin
+                   (set! (ly:music-property seq 'elements)
+                         (cons (make-music 'OverrideProperty
+                                           'symbol symbol
+                                           'grob-property-path (cdr p)
+                                           'pop-first #t
+                                           'grob-value value
+                                           'origin (*location*))
+                               elts))
+                   (set! (ly:music-property item 'element) seq))
+                 (begin
+                   (ly:parser-error (_ "Cannot \\propertyTweak")
+                                    (*location*))
+                   (ly:music-message item (_ "untweakable"))))
+             item)
+           (tweak prop value item))
        (propertyOverride (append item (if (symbol? prop) (list prop) prop))
                          value)))
 
@@ -1868,41 +1908,6 @@ property (inside of an alist) is tweaked.")
            ;; p now contains at least two elements.  The first
            ;; element is #t when no grob has been explicitly
            ;; specified, otherwise it is a grob name.
-           ((music-is-of-type? music 'context-specification)
-            ;; This is essentially dealing with the case
-            ;; \tweak color #red \propertyTweak font-size #3 NoteHead
-            ;; namely when stacked tweaks end in a symbol list
-            ;; rather than a music expression.
-            ;;
-            ;; We have a tweak here to convert into an override,
-            ;; so we need to know the grob to apply it to.  That's
-            ;; easy if we have a directed tweak, and otherwise we
-            ;; need to find the symbol in the expression itself.
-            (let* ((elt (ly:music-property music 'element))
-                   (seq (if (music-is-of-type? elt 'sequential-music)
-                            elt
-                            (make-sequential-music (list elt))))
-                   (elts (ly:music-property seq 'elements))
-                   (symbol (if (symbol? (car p))
-                               (car p)
-                               (and (pair? elts)
-                                    (ly:music-property (car elts)
-                                                       'symbol)))))
-              (if (symbol? symbol)
-                  (begin
-                    (set! (ly:music-property seq 'elements)
-                          (cons (make-music 'OverrideProperty
-                                            'symbol symbol
-                                            'grob-property-path (cdr p)
-                                            'pop-first #t
-                                            'grob-value value
-                                            'origin (*location*))
-                                elts))
-                    (set! (ly:music-property music 'element) seq))
-                  (begin
-                    (ly:parser-error (_ "Cannot \\tweak")
-                                     (*location*))
-                    (ly:music-message music (_ "untweakable"))))))
            (else
             (set! (ly:music-property music 'tweaks)
                   (acons (cond ((pair? (cddr p)) p)
index a8d7c7da30f941de91315adf1cbce2c3476fae73..a106ba9a10b904773e3797da74e7863e489671a6 100644 (file)
   %% Flexible vertical spacing
   %%
   %% Note: these are not scaled; they are in staff-spaces.
-  system-system-spacing = #'((basic-distance . 12) (minimum-distance . 8) (padding . 1) (stretchability . 60))
-  score-system-spacing = #'((basic-distance . 14) (minimum-distance . 8) (padding . 1) (stretchability . 120))
-  markup-system-spacing = #'((basic-distance . 5) (padding . 0.5) (stretchability . 30))
-  score-markup-spacing = #'((basic-distance . 12) (padding . 0.5) (stretchability . 60))
-  markup-markup-spacing = #'((basic-distance . 1) (padding . 0.5))
-  top-system-spacing = #'((basic-distance . 1) (minimum-distance . 0) (padding . 1))
-  top-markup-spacing = #'((basic-distance . 0) (minimum-distance . 0) (padding . 1))
-  last-bottom-spacing = #'((basic-distance . 1) (minimum-distance . 0) (padding . 1) (stretchability . 30))
+  system-system-spacing = #'((basic-distance . 12)
+                             (minimum-distance . 8)
+                             (padding . 1)
+                             (stretchability . 60))
+  score-system-spacing = #'((basic-distance . 14)
+                            (minimum-distance . 8)
+                            (padding . 1)
+                            (stretchability . 120))
+  markup-system-spacing = #'((basic-distance . 5)
+                             (padding . 0.5)
+                             (stretchability . 30))
+  score-markup-spacing = #'((basic-distance . 12)
+                            (padding . 0.5)
+                            (stretchability . 60))
+  markup-markup-spacing = #'((basic-distance . 1)
+                             (padding . 0.5))
+  top-system-spacing = #'((basic-distance . 1)
+                          (minimum-distance . 0)
+                          (padding . 1))
+  top-markup-spacing = #'((basic-distance . 0)
+                          (minimum-distance . 0)
+                          (padding . 1))
+  last-bottom-spacing = #'((basic-distance . 1)
+                           (minimum-distance . 0)
+                           (padding . 1)
+                           (stretchability . 30))
 
 
   %%
index c741f4faf831f3653451320c6ed0fdbbf2dc651b..50f06b484b5a2b9ce7ac33f424db5213c3afed12 100644 (file)
@@ -91,6 +91,8 @@
        ("&AA;" . "Å")
        ("&ae;" . "æ")
        ("&AE;" . "Æ")
+       ("&auml;" . "ä")
+       ("&Auml;" . "Ä")
        ("&dh;" . "ð")
        ("&DH;" . "Ð")
        ("&dj;" . "đ")
        ("&O;" . "Ø")
        ("&oe;" . "œ")
        ("&OE;" . "Œ")
+       ("&ouml;" . "ö")
+       ("&Ouml;" . "Ö")
        ("&s;" . "ſ")
        ("&ss;" . "ß")
        ("&th;" . "þ")
        ("&TH;" . "Þ")
+       ("&uuml;" . "ü")
+       ("&Uuml;" . "Ü")
 
        ;; Mathematical symbols
        ("&plus;" . "+")
index 48cfcdbb123c9fd43313373e492ca1553cb867ed..9ff0df3a7765216b396d1e9c8e10b5c0b9c372f3 100644 (file)
@@ -41,7 +41,8 @@ WEB_MANUALS=web
 
 ###########
 ifneq ($(ISOLANG),)
-TEXI2HTML_LANG = --lang=$(ISOLANG)
+TEXI2HTML_LANG_INIT = --init-file=$(top-src-dir)/Documentation/lilypond-texi2html-lang.init
+TEXI2HTML_LANG = --document-language=$(ISOLANG)
 endif
 
 $(XREF_MAPS_DIR)/web.$(ISOLANG).xref-map:\
@@ -52,7 +53,12 @@ TEXI2HTML_INIT = --init-file=$(top-src-dir)/Documentation/lilypond-texi2html.ini
 TEXI2HTML_SPLIT = --prefix=index --split=section
 
 TEXI2HTML_INCLUDES += --I=. --I=$(src-dir) --I=$(outdir) $(DOCUMENTATION_INCLUDES) --I=$(XREF_MAPS_DIR)
-TEXI2HTML_FLAGS += $(TEXI2HTML_INCLUDES) $(TEXI2HTML_LANG) $(TEXI2HTML_INIT) 
+# To overwrite texi2html default i18n messages with the LilyPond init file,
+# delete TEXI2HTML_INIT that exists before TEXI2HTML_LANG.
+TEXI2HTML_FLAGS := $(filter-out $(TEXI2HTML_INIT),$(TEXI2HTML_FLAGS))
+# Instead, add languages minimum initialization before TEXI2HTML_LANG.
+TEXI2HTML_FLAGS := $(subst $(TEXI2HTML_LANG),$(TEXI2HTML_LANG_INIT) $(TEXI2HTML_LANG),$(TEXI2HTML_FLAGS))
+TEXI2HTML_FLAGS += $(TEXI2HTML_INCLUDES) $(TEXI2HTML_LANG_INIT) $(TEXI2HTML_LANG) $(TEXI2HTML_INIT)
 TEXI2HTML = TOP_SRC_DIR=$(top-src-dir) PERL_UNICODE=SD $(TEXI2HTML_PROGRAM)
 ###########
 
index b27aa56e14ca1e8e0b429e1981a0b7c46bfc3ee2..3dda429003e092aa813c3ab319b7036c257b68d7 100644 (file)
@@ -52,5 +52,5 @@ $(outdir)/%.xml:  %.lyxml
 # Add the xml => pdf rule only if we have dblatex
 ifeq (,$(findstring dblatex,$(MISSING_OPTIONAL)))
 $(outdir)/%.pdf:  $(outdir)/%.xml
-       cd $(outdir) && $(buildscript-dir)/run-and-check "$(DBLATEX) $(notdir $<)" "$*.dblatex.log"
+       cd $(outdir) && $(buildscript-dir)/run-and-check "$(DBLATEX) $(DBLATEX_BACKEND) $(notdir $<)" "$*.dblatex.log"
 endif
index bb1fc23dfe23d42f9b588cba90eab2e175203373..8d9955b6a469262b858c46202874884d8aaba34d 100644 (file)
@@ -1,6 +1,7 @@
 # rules for directories with html files.
 
 LILYPOND_BOOK_COMMAND = LILYPOND_VERSION=$(TOPLEVEL_VERSION) \
+       PDFTEX=$(PDFTEX) PDFLATEX=$(PDFLATEX) \
        $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) \
        --process='$(LILYPOND_BOOK_PROCESS) \
        $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) \
@@ -39,6 +40,11 @@ OUT_DOCBOOK_FILES = ${DOCBOOK_FILES:%.lyxml=$(outdir)/%.pdf}
 else
 OUT_DOCBOOK_FILES = ${DOCBOOK_FILES:%.lyxml=$(outdir)/%.xml}
 endif
+ifeq ($(PDFLATEX),xelatex)
+DBLATEX_BACKEND = -b xetex
+else
+DBLATEX_BACKEND =
+endif
 
 OUT_FILES = $(sort $(OUT_HTML_FILES) \
                             $(OUT_HTMLY_FILES) \
index 25dd5b2fbbb64afbc1a0bd315f46694cb15c8389..a9137b39acf4f24a2b66de9e35bc162b5148e449 100644 (file)
@@ -5,7 +5,7 @@ LYS_OUTPUT_OPTION= --lily-output-dir $(LYS_OUTPUT_DIR)
 LYS_OUTPUT_DIR=$(top-build-dir)/out/lybook-db
 LILYPOND_BOOK_FLAGS += $(LYS_OUTPUT_OPTION)
 $(outdir)/%.latex: %.doc $(INIT_LY_SOURCES) $(SCHEME_SOURCES)
-       LILYPOND_VERSION=$(TOPLEVEL_VERSION) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) $(LILYPOND_BOOK_FLAGS) --redirect-lilypond-output $<
+       LILYPOND_VERSION=$(TOPLEVEL_VERSION) PDFTEX=$(PDFTEX) PDFLATEX=$(PDFLATEX) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) $(LILYPOND_BOOK_FLAGS) --redirect-lilypond-output $<
 
 
 # This allows -j make option while making sure only one lilypond-book instance
@@ -23,11 +23,11 @@ $(eval $(firstword $(TEXI_FILES_FROM_TELY)):\
 # don't do ``cd $(outdir)'', and assume that $(outdir)/.. is the src dir.
 # it is not, for --srcdir builds
 $(outdir)/%.texi: %.tely $(outdir)/version.itexi $(DOCUMENTATION_LOCALE_TARGET) $(INIT_LY_SOURCES) $(SCHEME_SOURCES)
-       LILYPOND_VERSION=$(TOPLEVEL_VERSION) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) $(LILYPOND_BOOK_FLAGS) --redirect-lilypond-output $<
+       LILYPOND_VERSION=$(TOPLEVEL_VERSION) PDFTEX=$(PDFTEX) PDFLATEX=$(PDFLATEX) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) $(LILYPOND_BOOK_FLAGS) --redirect-lilypond-output $<
 
 
 $(outdir)/%.texi: $(outdir)/%.tely $(outdir)/version.itexi $(DOCUMENTATION_LOCALE_TARGET) $(INIT_LY_SOURCES) $(SCHEME_SOURCES)
-       LILYPOND_VERSION=$(TOPLEVEL_VERSION) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_INCLUDES) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) $(LILYPOND_BOOK_FLAGS) --redirect-lilypond-output $<
+       LILYPOND_VERSION=$(TOPLEVEL_VERSION) PDFTEX=$(PDFTEX) PDFLATEX=$(PDFLATEX) $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND_BOOK_PROCESS) $(LILYPOND_BOOK_INCLUDES) $(LILYPOND_BOOK_LILYPOND_FLAGS)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) $(LILYPOND_BOOK_FLAGS) --redirect-lilypond-output $<
 
 
 $(outdir)/%.html.omf: %.tely
index 4731a97b2458150bec1559679c0d8665c18eef5c..bd8c02af9f0d0fe2ff5235ec77dab3e5ce93ec78 100644 (file)
--- a/po/da.po
+++ b/po/da.po
@@ -1,9 +1,9 @@
 # Danish translation of lilypond
-# Copyright (C) 2015 Free Software Foundation, Inc.
+# Copyright (C) 2016 Free Software Foundation, Inc.
 # This file is distributed under the same license as the lilypond package.
 # Keld Simonsen <keld@dkuug.dk>, 2001-2002.
 # Reviewed 2001-09-28 Rune Zedeler <rz@daimi.au.dk>
-# Joe Hansen <joedalton2@yahoo.dk>, 2015.
+# Joe Hansen <joedalton2@yahoo.dk>, 2015, 2016.
 #
 # Konventioner:
 # alteration -> alteration
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.19.16\n"
+"Project-Id-Version: lilypond 2.19.26\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2015-02-28 14:31+0000\n"
-"PO-Revision-Date: 2015-05-06 21:00+0200\n"
+"POT-Creation-Date: 2015-08-27 10:48+0100\n"
+"PO-Revision-Date: 2016-01-10 21:00+0200\n"
 "Last-Translator: Joe Hansen <joedalton2@yahoo.dk>\n"
 "Language-Team: Danish <dansk@dansk-gruppen.dk>\n"
 "Language: da\n"
@@ -191,7 +191,7 @@ msgstr "forældet \\textstyle, ny \\key-syntaks"
 
 #: convertrules.py:82 convertrules.py:1856 convertrules.py:2032
 #: convertrules.py:2175 convertrules.py:2506 convertrules.py:2801
-#: convertrules.py:3151 convertrules.py:3385 convertrules.py:3697
+#: convertrules.py:3151 convertrules.py:3388 convertrules.py:3700
 msgid "bump version for release"
 msgstr "bump version for udgivelse"
 
@@ -611,10 +611,10 @@ msgstr "Fjern oldaddlyrics"
 #: convertrules.py:2820
 msgid ""
 "oldaddlyrics is no longer supported. \n"
-"         Use addlyrics or lyrsicsto instead.\n"
+"         Use addlyrics or lyricsto instead.\n"
 msgstr ""
 "oldaddlyrics er ikke længere understøttet. \n"
-"         Brug addlyrics eller lyrsicsto i stedet.\n"
+"         Brug addlyrics eller lyricsto i stedet.\n"
 
 #: convertrules.py:2826
 msgid ""
@@ -854,15 +854,15 @@ msgstr "consistent-broken-slope håndteres nu via positionstilbagekaldene.\n"
 msgid "input/regression/beam-broken-classic.ly shows how broken beams are now handled.\n"
 msgstr "input/regression/beam-broken-classic.ly viser hvordan ødelagte bjælker nu håndteres.\n"
 
-#: convertrules.py:3369
+#: convertrules.py:3372
 msgid "beamExceptions controls whole-measure beaming."
 msgstr "beamExceptions kontrollerer bjælker i hele mål."
 
-#: convertrules.py:3606
+#: convertrules.py:3609
 msgid "Flag.transparent and Flag.color inherit from Stem"
 msgstr "Flag.transparent og Flag.color arver fra Stem (nodehals)"
 
-#: convertrules.py:3672
+#: convertrules.py:3675
 msgid "Staff-padding now controls the distance to the baseline, not the nearest point."
 msgstr "Staff-padding kontrollerer nu afstanden til basislinjen, ikke det nærmeste punkt."
 
@@ -968,12 +968,12 @@ msgstr "Toneartealterationsoktav angivet for en ikkeeksisterende alteration nr.
 msgid "Unable to find instrument for ID=%s\n"
 msgstr "Kan ikke finde instrument for ID=%s\n"
 
-#: abc2ly.py:1386 convert-ly.py:85 lilypond-book.py:122 midi2ly.py:1044
+#: abc2ly.py:1389 convert-ly.py:85 lilypond-book.py:122 midi2ly.py:1044
 #, python-format
 msgid "%s [OPTION]... FILE"
 msgstr "%s [TILVALG] ... FIL"
 
-#: abc2ly.py:1387
+#: abc2ly.py:1390
 #, python-format
 msgid ""
 "abc2ly converts ABC music files (see\n"
@@ -982,29 +982,29 @@ msgstr ""
 "abc2ly konverterer ABC-musikfiler (se\n"
 "%s) til LilyPond-inddata.\n"
 
-#: abc2ly.py:1395 convert-ly.py:92 etf2ly.py:1208 lilypond-book.py:231
-#: midi2ly.py:1095 musicxml2ly.py:2590 main.cc:183
+#: abc2ly.py:1398 convert-ly.py:92 etf2ly.py:1208 lilypond-book.py:231
+#: midi2ly.py:1095 musicxml2ly.py:2590 main.cc:184
 msgid "show version number and exit"
 msgstr "vis versionsnummer og afslut"
 
-#: abc2ly.py:1398 convert-ly.py:96 etf2ly.py:1204 lilypond-book.py:140
-#: midi2ly.py:1062 musicxml2ly.py:2572 main.cc:162
+#: abc2ly.py:1401 convert-ly.py:96 etf2ly.py:1204 lilypond-book.py:140
+#: midi2ly.py:1062 musicxml2ly.py:2572 main.cc:163
 msgid "show this help and exit"
 msgstr "vis denne hjælpetekst og afslut"
 
-#: abc2ly.py:1401 etf2ly.py:1209 midi2ly.py:1071
+#: abc2ly.py:1404 etf2ly.py:1209 midi2ly.py:1071
 msgid "write output to FILE"
 msgstr "skriv uddata til FIL"
 
-#: abc2ly.py:1404
+#: abc2ly.py:1407
 msgid "be strict about success"
 msgstr "vær nøje omkring succes"
 
-#: abc2ly.py:1407
+#: abc2ly.py:1410
 msgid "preserve ABC's notion of beams"
 msgstr "bevar ABC's begreb om bjælker"
 
-#: abc2ly.py:1410
+#: abc2ly.py:1413
 msgid "suppress progress messages"
 msgstr "undertryk statusbeskeder"
 
@@ -1012,8 +1012,8 @@ msgstr "undertryk statusbeskeder"
 #. "Report bugs in English via %s",
 #. or if there is a LilyPond users list or forum in your language
 #. "Report bugs in English via %s or in YOUR_LANG via URI"
-#: abc2ly.py:1413 convert-ly.py:157 etf2ly.py:1218 lilypond-book.py:258
-#: midi2ly.py:1107 musicxml2ly.py:2674 main.cc:317
+#: abc2ly.py:1416 convert-ly.py:157 etf2ly.py:1218 lilypond-book.py:258
+#: midi2ly.py:1107 musicxml2ly.py:2674 main.cc:318
 #, c-format, python-format
 msgid "Report bugs via %s"
 msgstr "Rapporter fejl på engelsk via %s eller vedrørende den danske oversættelse til <dansk@dansk-gruppen.dk>"
@@ -1064,7 +1064,7 @@ msgid "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS
 msgstr "Vis logbeskeder jævnfør LOGNIVEAU (NONE, ERROR, WARNING, PROGRESS (standard), DEBUG)"
 
 #: convert-ly.py:111 lilypond-book.py:163 lilypond-book.py:181
-#: musicxml2ly.py:2629 main.cc:176
+#: musicxml2ly.py:2629 main.cc:177
 msgid "LOGLEVEL"
 msgstr "LOGNIVEAU"
 
@@ -1096,7 +1096,7 @@ msgid "make a numbered backup [default: filename.ext~]"
 msgstr "lav en nummereret sikkerhedskopi [standard: filnavn.ext~]"
 
 #: convert-ly.py:152 etf2ly.py:1212 lilypond-book.py:234 midi2ly.py:1096
-#: main.cc:185
+#: main.cc:186
 msgid "show warranty and copyright"
 msgstr "vis garanti og ophavsret"
 
@@ -1117,17 +1117,17 @@ msgstr "Stopper på sidste succesfulde regel"
 msgid "Processing `%s'... "
 msgstr "Behandler »%s« ..."
 
-#: convert-ly.py:368
+#: convert-ly.py:366
 #, python-format
 msgid "%s: Unable to open file"
 msgstr "%s: kan ikke åbne fil"
 
-#: convert-ly.py:374
+#: convert-ly.py:372
 #, python-format
 msgid "%s: Unable to determine version.  Skipping"
 msgstr "%s: Kan ikke bestemme version. Udelader"
 
-#: convert-ly.py:380
+#: convert-ly.py:378
 #, python-format
 msgid ""
 "%s: Invalid version string `%s' \n"
@@ -1136,7 +1136,7 @@ msgstr ""
 "%s: Ugyldig versionsstreng »%s« \n"
 "Gyldige versionsstrenge består af tre numre, adskilt af punktummer, f.eks. 2.8.12"
 
-#: convert-ly.py:386
+#: convert-ly.py:384
 #, python-format
 msgid "There was %d error."
 msgid_plural "There were %d errors."
@@ -1158,7 +1158,7 @@ msgstr ""
 "LilyPond-fil.\n"
 
 #: etf2ly.py:1210 midi2ly.py:1067 midi2ly.py:1072 musicxml2ly.py:2659
-#: main.cc:168 main.cc:180
+#: main.cc:169 main.cc:181
 msgid "FILE"
 msgstr "FIL"
 
@@ -1196,7 +1196,7 @@ msgid "add DIR to include path"
 msgstr "tilføj MAPPE til inkluderingsstien"
 
 #: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:169
-#: lilypond-book.py:187 lilypond-book.py:208 lilypond-book.py:214 main.cc:167
+#: lilypond-book.py:187 lilypond-book.py:208 lilypond-book.py:214 main.cc:168
 msgid "DIR"
 msgstr "MAPPE"
 
@@ -1208,9 +1208,11 @@ msgstr "formater Texinfo-uddata så at Info vil kigge efter musikaftryk i MAPPE"
 msgid "PAD"
 msgstr "TILPAS"
 
+# "music" referer nok til en samling af noder.  På dansk et partitur.
+# Jeg ville sige "tilpas... partituret for at justere noderne på trods af...."
 #: lilypond-book.py:157
-msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)"
-msgstr "tilpas venstre side af musikken for at justere musik på trods af et ulige antal bjælkeantal (i mm)"
+msgid "pad left side of music to align music in spite of uneven bar numbers (in mm)"
+msgstr "tilpas venstre side af partituret for at justere musik på trods af et ulige antal bjælker (i mm)"
 
 #: lilypond-book.py:162
 msgid "Print lilypond log messages according to LOGLEVEL"
@@ -1750,7 +1752,7 @@ msgstr "undertrykt advarsel: %s"
 msgid "accidental typesetting list must begin with context-name: %s"
 msgstr "fortegnsopsætningsliste skal begynde med kontekstnavn: %s"
 
-#: accidental-engraver.cc:210
+#: accidental-engraver.cc:207
 #, c-format
 msgid "procedure or context-name expected for accidental rule, found %s"
 msgstr "procedure eller kontekstnavn forventet for fortegnsregel, fandt %s"
@@ -1764,7 +1766,7 @@ msgstr "Kunne ikke finde skrifttegnnavn for alteration %s"
 msgid "natural alteration glyph not found"
 msgstr "naturlig alterationskrifttegn blev ikke fundet"
 
-#: all-font-metrics.cc:149
+#: all-font-metrics.cc:159
 #, c-format
 msgid "cannot find font: `%s'"
 msgstr "kan ikke finde skrifttype: »%s«"
@@ -1777,11 +1779,6 @@ msgstr "\\applycontext-argument er ikke en procedure"
 msgid "no heads for arpeggio found?"
 msgstr "ingen hoveder for arpeggio blev fundet?"
 
-#: auto-change-iterator.cc:74 change-iterator.cc:72
-#, c-format
-msgid "cannot change, already in translator: %s"
-msgstr "kan ikke ændre, allerede i oversætter: %s"
-
 #: axis-group-engraver.cc:149
 msgid "Axis_group_engraver: vertical group already has a parent"
 msgstr "Axis_group_engraver: vertikal gruppe har allerede en overgruppe"
@@ -1794,12 +1791,12 @@ msgstr "er der to Axis_group_engravers?"
 msgid "removing this vertical group"
 msgstr "fjerner denne vertikale gruppe"
 
-#: axis-group-interface.cc:714
+#: axis-group-interface.cc:716
 #, c-format
 msgid "\"%s\" is not a valid outside-staff-placement-directive"
 msgstr "»%s« er ikke et gyldigt outside-staff-placement-directive"
 
-#: axis-group-interface.cc:786
+#: axis-group-interface.cc:788
 msgid "an outside-staff object should have a direction, defaulting to up"
 msgstr "et outside-staff-objekt skal have en retning, bruger standarden op"
 
@@ -1829,11 +1826,11 @@ msgid "beam was started here"
 msgstr "bjælken startede her"
 
 #. We are completely screwed.
-#: beam-quanting.cc:839
+#: beam-quanting.cc:850
 msgid "no viable initial configuration found: may not find good beam slope"
 msgstr "ingen egnet oprindelig konfiguration blev fundet: finder måske ikke en god bjælkehældning"
 
-#: beam.cc:181
+#: beam.cc:183
 msgid "removing beam with no stems"
 msgstr "fjerner bjælke uden nodehalse"
 
@@ -1843,22 +1840,24 @@ msgid "cannot change `%s' to `%s'"
 msgstr "kan ikke ændre »%s« til »%s«"
 
 #. FIXME: constant error message.
-#: change-iterator.cc:93
+#: change-iterator.cc:67
 msgid "cannot find context to switch to"
 msgstr "kan ikke finde konteksten at skifte til"
 
+#. No enclosing context was found because the iterator's immediate
+#. context is the kind that was sought.
 #. We could change the current translator's id, but that would make
 #. errors hard to catch.
 #.
 #. last->translator_id_string () = get_change
 #. ()->change_to_id_string ();
-#: change-iterator.cc:102
+#: change-iterator.cc:78
 #, c-format
 msgid "not changing to same context type: %s"
 msgstr "ændrer ikke til samme konteksttype: %s"
 
-#. FIXME: uncomprehensable message
-#: change-iterator.cc:106
+#. FIXME: incomprehensible message
+#: change-iterator.cc:82
 msgid "none of these in my family"
 msgstr "ingen af disse i min familie"
 
@@ -1897,22 +1896,22 @@ msgstr "kan ikke finde linjeombrydning som opfylder begrænsninger"
 msgid "need symbol arguments for \\override and \\revert"
 msgstr "kræver symbolargumenter for \\override og \\revert"
 
-#: context.cc:143
+#: context.cc:144
 #, c-format
 msgid "cannot find or create new `%s'"
 msgstr "kan ikke finde eller oprette ny »%s«"
 
-#: context.cc:222
+#: context.cc:223
 #, c-format
 msgid "cannot find or create `%s' called `%s'"
 msgstr "kan ikke finde eller oprette »%s« kaldt »%s«"
 
-#: context.cc:419
+#: context.cc:416
 #, c-format
 msgid "cannot find or create: `%s'"
 msgstr "kan ikke finde eller oprette: »%s«"
 
-#: context.cc:433
+#: context.cc:430
 #, c-format
 msgid "cannot find or create new Bottom = \"%s\""
 msgstr "kan ikke finde eller oprette ny bund = »%s«"
@@ -1922,20 +1921,20 @@ msgstr "kan ikke finde eller oprette ny bund = »%s«"
 msgid "custos `%s' not found"
 msgstr "custos »%s« blev ikke fundet"
 
-#: dispatcher.cc:83
+#: dispatcher.cc:82
 msgid "Event class should be a list"
 msgstr "Hændelsesklasse skal være en liste"
 
-#: dispatcher.cc:166
+#: dispatcher.cc:165
 #, c-format
 msgid "Junking event: %s"
 msgstr "Stryger hændelsen: %s"
 
-#: dispatcher.cc:271
+#: dispatcher.cc:279
 msgid "Attempting to remove nonexisting listener."
 msgstr "Forsøger at fjerne ikkeeksisterende lytter."
 
-#: dispatcher.cc:297
+#: dispatcher.cc:305
 msgid "Already listening to dispatcher, ignoring request"
 msgstr "Lytter allerede til afsender, ignorerer forespørgsel"
 
@@ -1944,7 +1943,7 @@ msgstr "Lytter allerede til afsender, ignorerer forespørgsel"
 msgid "dot `%s' not found"
 msgstr "punktum »%s« blev ikke fundet"
 
-#: dynamic-engraver.cc:168
+#: dynamic-engraver.cc:169
 #, c-format
 msgid ""
 "unknown crescendo style: %s\n"
@@ -1953,7 +1952,7 @@ msgstr ""
 "ukendt crescendostil: %s\n"
 "bruger standarden hairpin."
 
-#: dynamic-engraver.cc:233 slur-proto-engraver.cc:119
+#: dynamic-engraver.cc:234 slur-proto-engraver.cc:119
 #, c-format
 msgid "unterminated %s"
 msgstr "uafsluttet %s"
@@ -1981,22 +1980,22 @@ msgstr "uafsluttet episema"
 msgid "unterminated extender"
 msgstr "uafsluttet udvider"
 
-#: flag.cc:134
+#: flag.cc:133
 #, c-format
 msgid "flag `%s' not found"
 msgstr "flaget »%s« blev ikke fundet"
 
-#: flag.cc:154
+#: flag.cc:153
 #, c-format
 msgid "flag stroke `%s' not found"
 msgstr "flag stroke »%s« blev ikke fundet"
 
-#: font-config-scheme.cc:151 font-config.cc:53
+#: font-config-scheme.cc:151 font-config.cc:82
 #, c-format
 msgid "failed adding font directory: %s"
 msgstr "kunne ikke tilføje skriftmappe: %s"
 
-#: font-config-scheme.cc:153 font-config.cc:55
+#: font-config-scheme.cc:153 font-config.cc:84
 #, c-format
 msgid "Adding font directory: %s"
 msgstr "Tilføjer skriftmappe: %s"
@@ -2015,7 +2014,17 @@ msgstr "Tilføjer skriftfil: %s"
 msgid "Initializing FontConfig..."
 msgstr "Initialiserer FontConfig ..."
 
-#: font-config.cc:58
+#: font-config.cc:70
+#, c-format
+msgid "failed to add fontconfig configuration file `%s'"
+msgstr "kunne ikke tilføje fontconfig-konfigurationsfil: »%s«"
+
+#: font-config.cc:73
+#, c-format
+msgid "Adding fontconfig configuration file: %s"
+msgstr "Tilføjer fontconfig-konfigurationsfil: %s"
+
+#: font-config.cc:86
 msgid "Building font database..."
 msgstr "Bygger skriftdatabase ..."
 
@@ -2079,12 +2088,12 @@ msgstr "Ukendt grænseflade »%s«"
 msgid "Grob `%s' has no interface for property `%s'"
 msgstr "Grob »%s« har ingen grænseflade for egenskab »%s«"
 
-#: grob-property.cc:35
+#: grob-property.cc:33
 #, c-format
 msgid "%d: %s"
 msgstr "%d: %s"
 
-#: grob.cc:481
+#: grob.cc:492
 #, c-format
 msgid "ignored infinite %s-offset"
 msgstr "ignoreret uendelig %s-forskydning"
@@ -2114,7 +2123,7 @@ msgstr "fjerner uafsluttet bindestreg"
 msgid "unterminated hyphen; removing"
 msgstr "uafsluttet bindestreg; fjerner"
 
-#: includable-lexer.cc:71 lily-guile.cc:91 lily-parser-scheme.cc:108
+#: includable-lexer.cc:71 lily-guile.cc:92 lily-parser-scheme.cc:108
 #, c-format
 msgid "cannot find file: `%s'"
 msgstr "kan ikke finde filen: »%s«"
@@ -2124,11 +2133,11 @@ msgstr "kan ikke finde filen: »%s«"
 msgid "(search path: `%s')"
 msgstr "(søgesti: »%s«)"
 
-#: input.cc:138 source-file.cc:177 source-file.cc:192
+#: input.cc:138 source-file.cc:180 source-file.cc:195
 msgid "position unknown"
 msgstr "ukendt position"
 
-#: key-engraver.cc:198
+#: key-engraver.cc:197
 msgid "Incomplete keyAlterationOrder for key signature"
 msgstr "Ufuldstændig keyAlterationOrder for toneartunderskrift"
 
@@ -2169,21 +2178,21 @@ msgstr "ignorerer pause: fraseringsbue må ikke indeholde en pause"
 msgid "ligature was started here"
 msgstr "fraseringsbuen startede her"
 
-#: lily-guile.cc:93
+#: lily-guile.cc:94
 #, c-format
 msgid "(load path: `%s')"
 msgstr "(indlæsningssti: »%s«)"
 
-#: lily-guile.cc:412
+#: lily-guile.cc:413
 #, c-format
 msgid "cannot find property type-check for `%s' (%s)."
 msgstr "kan ikke finde egenskaben type-check for »%s« (%s)."
 
-#: lily-guile.cc:415
+#: lily-guile.cc:416
 msgid "perhaps a typing error?"
 msgstr "måske en tastefejl?"
 
-#: lily-guile.cc:422
+#: lily-guile.cc:423
 msgid "skipping assignment"
 msgstr "udelader tildeling"
 
@@ -2192,20 +2201,33 @@ msgstr "udelader tildeling"
 msgid "type check for `%s' failed; value `%s' must be of type `%s'"
 msgstr "typekontrol for »%s« mislykkedes; værdien »%s« skal være af typen »%s«"
 
-#: lily-lexer.cc:249
+#. Uh oh.  unsmob<T> delivered 0, yet
+#. unsmob<T> delivers true.  This means that unsmob<T> is a
+#. matching check from a base class of T, but var is of an
+#. incompatible derived type.
+#: lily-guile.cc:462
+msgid "Wrong kind of "
+msgstr "Forkert type for "
+
+#: lily-lexer.cc:251
 msgid "include files are not allowed in safe mode"
 msgstr "inkluderingsfiler er ikke tilladte i sikker tilstand"
 
-#: lily-lexer.cc:276
+#: lily-lexer.cc:278
 #, c-format
 msgid "identifier name is a keyword: `%s'"
 msgstr "Identificerernavn er et nøgleord: »%s«"
 
-#: lily-lexer.cc:297 lily-lexer.cc:310
+#: lily-lexer.cc:299 lily-lexer.cc:312
 #, c-format
 msgid "%s:EOF"
 msgstr "%s:EOF"
 
+#: lily-modules.cc:81
+#, c-format
+msgid "Uninitialized variable `%s' in module (%s)"
+msgstr "Variablen »%s« er ikke initialiseret i modul (%s)"
+
 #: lily-parser-scheme.cc:80
 #, c-format
 msgid "Changing working directory to: `%s'"
@@ -2226,19 +2248,19 @@ msgstr "kan ikke finde init-fil: »%s«"
 msgid "Processing `%s'"
 msgstr "Behandler »%s«"
 
-#: lily-parser-scheme.cc:209
+#: lily-parser-scheme.cc:210
 msgid "ly:parser-parse-string is only valid with a new parser.  Use ly:parser-include-string instead."
 msgstr "ly:parser-parse-string er kun gyldig med en ny fortolker. Brug ly:parser-include-string i stedet."
 
-#: lily-parser-scheme.cc:240
+#: lily-parser-scheme.cc:241
 msgid "ly:parse-string-expression is only valid with a new parser.  Use ly:parser-include-string instead."
 msgstr "ly:parse-string-expression er kun gyldig med en ny fortolker. Brug ly:parser-include-string i stedet."
 
-#: lily-parser.cc:107
+#: lily-parser.cc:106
 msgid "Parsing..."
 msgstr "Tolker ..."
 
-#: lookup.cc:181
+#: lookup.cc:178
 #, c-format
 msgid "Not drawing a box with negative dimension, %.2f by %.2f."
 msgstr "Tegner ikke en boks med negative dimensioner, %.2f x %.2f."
@@ -2247,12 +2269,12 @@ msgstr "Tegner ikke en boks med negative dimensioner, %.2f x %.2f."
 msgid "argument of \\lyricsto should contain Lyrics context"
 msgstr "argumentet \\lyricsto skal indeholde lyrikindhold"
 
-#: lyric-combine-music-iterator.cc:349
+#: lyric-combine-music-iterator.cc:344
 #, c-format
 msgid "cannot find %s `%s'"
 msgstr "kan ikke finde %s »%s«"
 
-#: main.cc:105
+#: main.cc:106
 #, c-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -2264,7 +2286,7 @@ msgstr ""
 "og du er velkommen til at ændre og/eller distribuere kopier af det under\n"
 "visse betingelser. Kør »%s --warranty« for yderligere information.\n"
 
-#: main.cc:111
+#: main.cc:112
 msgid ""
 "    This program is free software; you can redistribute it and/or\n"
 "modify it under the terms of the GNU General Public License as \n"
@@ -2295,11 +2317,11 @@ msgstr ""
 "dette program. Hvis ikke, skriv til Free Software Foundation, Inc., 59\n"
 "Temple Place - Suite 330, Boston, MA 02111-1307, USA.\n"
 
-#: main.cc:149
+#: main.cc:150
 msgid "SYM[=VAL]"
 msgstr "SYM[=VAL]"
 
-#: main.cc:150
+#: main.cc:151
 msgid ""
 "set Scheme option SYM to VAL (default: #t).\n"
 "Use -dhelp for help."
@@ -2307,45 +2329,45 @@ msgstr ""
 "sæt Schemetilvalg SYM til VAL (standard: #t).\n"
 "Brug -dhelp for hjælp."
 
-#: main.cc:154
+#: main.cc:155
 msgid "EXPR"
 msgstr "UDTR"
 
-#: main.cc:154
+#: main.cc:155
 msgid "evaluate scheme code"
 msgstr "evaluer Schemekode"
 
 #. Bug in option parser: --output =foe is taken as an abbreviation
 #. for --output-format.
-#: main.cc:157
+#: main.cc:158
 msgid "FORMATs"
 msgstr "FORMATer"
 
-#: main.cc:157
+#: main.cc:158
 msgid "dump FORMAT,...  Also as separate options:"
 msgstr "dump FORMAT,... også som separate tilvalg:"
 
-#: main.cc:158
+#: main.cc:159
 msgid "generate PDF (default)"
 msgstr "opret PDF (standard)"
 
-#: main.cc:159
+#: main.cc:160
 msgid "generate PNG"
 msgstr "opret PNG"
 
-#: main.cc:160
+#: main.cc:161
 msgid "generate PostScript"
 msgstr "opret PostScript"
 
-#: main.cc:161
+#: main.cc:162
 msgid "generate big PDF files"
 msgstr "opret store PDF-filer"
 
-#: main.cc:164
+#: main.cc:165
 msgid "FIELD"
 msgstr "FELT"
 
-#: main.cc:164
+#: main.cc:165
 msgid ""
 "dump header field FIELD to file\n"
 "named BASENAME.FIELD"
@@ -2353,19 +2375,19 @@ msgstr ""
 "dump teksthovedfelt FIELD til fil\n"
 "navngivet BASENAME.FIELD"
 
-#: main.cc:167
+#: main.cc:168
 msgid "add DIR to search path"
 msgstr "tilføj MAPPE til søgestien"
 
-#: main.cc:168
+#: main.cc:169
 msgid "use FILE as init file"
 msgstr "brug FIL som init-fil"
 
-#: main.cc:171
+#: main.cc:172
 msgid "USER, GROUP, JAIL, DIR"
 msgstr "USER, GROUP, JAIL, DIR"
 
-#: main.cc:171
+#: main.cc:172
 msgid ""
 "chroot to JAIL, become USER:GROUP\n"
 "and cd into DIR"
@@ -2373,7 +2395,7 @@ msgstr ""
 "chroot til JAIL, bliv USER:GROUP\n"
 "og cd til DIR"
 
-#: main.cc:176
+#: main.cc:177
 msgid ""
 "print log messages according to LOGLEVEL.  Possible values are:\n"
 "NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG."
@@ -2381,24 +2403,24 @@ msgstr ""
 "udskriv logbeskeder jævnfør LOGNIVEAU. Mulige værdier er:\n"
 "NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (standard) og DEBUG."
 
-#: main.cc:180
+#: main.cc:181
 msgid "write output to FILE (suffix will be added)"
 msgstr "skriv uddata til FIL (suffiks vil blive tilføjet)"
 
-#: main.cc:181
+#: main.cc:182
 msgid "relocate using directory of lilypond program"
 msgstr "flyt via mappen for lilypondprogrammet"
 
-#: main.cc:182
+#: main.cc:183
 msgid "no progress, only error messages (equivalent to loglevel=ERROR)"
 msgstr "ingen status, kun fejlbeskeder (svarer til loglevel=ERROR)"
 
-#: main.cc:184
+#: main.cc:185
 msgid "be verbose (equivalent to loglevel=DEBUG)"
 msgstr "vær uddybende (svarer til loglevel=DEBUG)"
 
 #. Do not update the copyright years here, run `make grand-replace'
-#: main.cc:263
+#: main.cc:264
 #, c-format
 msgid ""
 "Copyright (c) %s by\n"
@@ -2408,84 +2430,84 @@ msgstr ""
 "%s med flere."
 
 #. No version number or newline here.  It confuses help2man.
-#: main.cc:301
+#: main.cc:302
 #, c-format
 msgid "Usage: %s [OPTION]... FILE..."
 msgstr "Brug: %s [TILVALG] ... FIL ..."
 
-#: main.cc:303
+#: main.cc:304
 msgid "Typeset music and/or produce MIDI from FILE."
 msgstr "Typesæt musik og/eller afspil MIDI fra FIL."
 
-#: main.cc:305
+#: main.cc:306
 msgid "LilyPond produces beautiful music notation."
 msgstr "LilyPond fremstiller smuk musiknotation."
 
-#: main.cc:307
+#: main.cc:308
 #, c-format
 msgid "For more information, see %s"
 msgstr "For yderligere information, se %s"
 
-#: main.cc:309
+#: main.cc:310
 msgid "Options:"
 msgstr "Tilvalg:"
 
-#: main.cc:376
+#: main.cc:377
 #, c-format
 msgid "expected %d arguments with jail, found: %u"
 msgstr "forventede %d parametre med jail, fandt: %u"
 
-#: main.cc:390
+#: main.cc:391
 #, c-format
 msgid "no such user: %s"
 msgstr "ingen sådan bruger: %s"
 
-#: main.cc:392
+#: main.cc:393
 #, c-format
 msgid "cannot get user id from user name: %s: %s"
 msgstr "kan ikke indhente bruger-id fra brugernavn: %s: %s"
 
-#: main.cc:407
+#: main.cc:408
 #, c-format
 msgid "no such group: %s"
 msgstr "ingen sådan gruppe: %s"
 
-#: main.cc:409
+#: main.cc:410
 #, c-format
 msgid "cannot get group id from group name: %s: %s"
 msgstr "kan ikke indhente gruppe-id fra gruppenavn: %s: %s"
 
-#: main.cc:417
+#: main.cc:418
 #, c-format
 msgid "cannot chroot to: %s: %s"
 msgstr "kan ikke chroot til: %s: %s"
 
-#: main.cc:424
+#: main.cc:425
 #, c-format
 msgid "cannot change group id to: %d: %s"
 msgstr "kan ikke ændre gruppe-id til: %d: %s"
 
-#: main.cc:430
+#: main.cc:431
 #, c-format
 msgid "cannot change user id to: %d: %s"
 msgstr "kan ikke ændre bruger-id til: %d: %s"
 
-#: main.cc:436
+#: main.cc:437
 #, c-format
 msgid "cannot change working directory to: %s: %s"
 msgstr "kan ikke ændre arbejdsmappe til: %s: %s"
 
-#: main.cc:825
+#: main.cc:826
 #, c-format
 msgid "exception caught: %s"
 msgstr "undtagelse opstod: %s"
 
 #. FIXME: constant error message.
-#: mark-engraver.cc:156
+#: mark-engraver.cc:150
 msgid "rehearsalMark must have integer value"
 msgstr "rehearsalMark skal have en heltalsværdi"
 
-#: mark-engraver.cc:162
+#: mark-engraver.cc:156
 msgid "mark label must be a markup object"
 msgstr "mærkeetiket skal være et opmærkningsobjekt"
 
@@ -2537,7 +2559,7 @@ msgstr ""
 msgid "unexpected case fall-through"
 msgstr "uventet tilfælde fald-igennem"
 
-#: midi-control-function-performer.cc:109 staff-performer.cc:152
+#: midi-control-function-performer.cc:107 staff-performer.cc:153
 #, c-format
 msgid "ignoring out-of-range value change for MIDI property `%s'"
 msgstr "ignorerer uden for interval-værdiændring for MIDE-egenskab »%s«"
@@ -2573,7 +2595,7 @@ msgstr "Beregner sideskift ..."
 msgid "usable-duration-logs must be a non-empty list.  Falling back to whole rests."
 msgstr "usable-duration-logs skal være en udfyldt liste. Falder tilbage på hele pauser."
 
-#: music.cc:149
+#: music.cc:150
 #, c-format
 msgid "octave check failed; expected \"%s\", found: \"%s\""
 msgstr "oktavkontrol mislykkedes; forventede »%s«, fandt: »%s«"
@@ -2607,37 +2629,37 @@ msgstr "ingen af nodehovederne »%s« eller »%s« blev fundet"
 msgid "NoteEvent without pitch"
 msgstr "NoteEvent uden tonehøjde"
 
-#: open-type-font.cc:46
+#: open-type-font.cc:45
 #, c-format
 msgid "cannot allocate %lu bytes"
 msgstr "kan ikke allokere %lu byte"
 
-#: open-type-font.cc:50
+#: open-type-font.cc:49
 #, c-format
 msgid "cannot load font table: %s"
 msgstr "kan ikke indlæse skrifttypetabel: %s"
 
-#: open-type-font.cc:55
+#: open-type-font.cc:54
 #, c-format
 msgid "FreeType error: %s"
 msgstr "FreeType-fejl: %s"
 
-#: open-type-font.cc:112
+#: open-type-font.cc:115
 #, c-format
 msgid "unsupported font format: %s"
 msgstr "skrifttypeformatet er ikke understøttet: %s"
 
-#: open-type-font.cc:114
+#: open-type-font.cc:117
 #, c-format
 msgid "error reading font file %s: %s"
 msgstr "fejl under læsning af skrifttypefilen %s: %s"
 
-#: open-type-font.cc:189
+#: open-type-font.cc:192
 #, c-format
 msgid "FT_Get_Glyph_Name () Freetype error: %s"
 msgstr "FT_Get_Glyph_Name () Freetype-fejl: %s"
 
-#: open-type-font.cc:337 pango-font.cc:257
+#: open-type-font.cc:340 pango-font.cc:258
 #, c-format
 msgid "FT_Get_Glyph_Name () error: %s"
 msgstr "FT_Get_Glyph_Name ()-fejl: %s"
@@ -2675,16 +2697,16 @@ msgstr "prøver med %d systemer"
 msgid "best score for this sys-count: %f"
 msgstr "bedste bedømmelse for denne sys-count: %f"
 
-#: optimal-page-breaking.cc:216 page-turn-page-breaking.cc:248
+#: optimal-page-breaking.cc:216 page-turn-page-breaking.cc:249
 #: paper-score.cc:156
 msgid "Drawing systems..."
 msgstr "Tegner systemer ..."
 
-#: output-def.cc:230
+#: output-def.cc:229
 msgid "margins do not fit with line-width, setting default values"
 msgstr "margener passer ikke med linjebredde, angiver standardværdier"
 
-#: output-def.cc:237
+#: output-def.cc:236
 msgid "systems run off the page due to improper paper settings, setting default values"
 msgstr "systemer går ud over siden på grund af ukorrekt sideindstillinger, vælger standardværdier"
 
@@ -2701,68 +2723,68 @@ msgstr "minimum systemer per side er større end maksimal antal systemer per sid
 msgid "page %d has been compressed"
 msgstr "side %d er blevet komprimeret"
 
-#: page-layout-problem.cc:402
+#: page-layout-problem.cc:400
 msgid "A page layout problem has been initiated that cannot accommodate footnotes."
 msgstr "Et sidelayoutproblem er opstået som ikke kan tilpasse sidefødder."
 
-#: page-layout-problem.cc:731
+#: page-layout-problem.cc:729
 msgid "ragged-bottom was specified, but page must be compressed"
 msgstr "ragged-bottom blev specificeret, men siden må være komprimeret"
 
-#: page-layout-problem.cc:734
+#: page-layout-problem.cc:732
 #, c-format
 msgid "compressing over-full page by %.1f staff-spaces"
 msgstr "komprimerer overfuld side med %.1f nodemellemrum"
 
-#: page-layout-problem.cc:1199
+#: page-layout-problem.cc:1197
 msgid "staff-affinities should only decrease"
 msgstr "staff-affinities bør kun falde"
 
-#: page-turn-page-breaking.cc:168
+#: page-turn-page-breaking.cc:169
 #, c-format
 msgid "page-turn-page-breaking: breaking from %d to %d"
 msgstr "page-turn-page-breaking: bryder fra %d til %d"
 
-#: page-turn-page-breaking.cc:217
+#: page-turn-page-breaking.cc:218
 msgid "cannot fit the first page turn onto a single page.  Consider setting first-page-number to an even number."
 msgstr "kan ikke tilpasse den første sidevending på en enkel side. Overveje at sætte first-page-number til et lige nummer."
 
-#: page-turn-page-breaking.cc:230
+#: page-turn-page-breaking.cc:231
 #, c-format
 msgid "Calculating page and line breaks (%d possible page breaks)..."
 msgstr "Beregner side- og linjeombrydninger (%d mulige sideombrydninger) ..."
 
-#: page-turn-page-breaking.cc:300
+#: page-turn-page-breaking.cc:301
 #, c-format
 msgid "break starting at page %d"
 msgstr "ombrydning starter på side %d"
 
-#: page-turn-page-breaking.cc:301
+#: page-turn-page-breaking.cc:302
 #, c-format
 msgid "\tdemerits: %f"
 msgstr "\tulemper: %f"
 
-#: page-turn-page-breaking.cc:302
+#: page-turn-page-breaking.cc:303
 #, c-format
 msgid "\tsystem count: %d"
 msgstr "\tsystemantal %d"
 
-#: page-turn-page-breaking.cc:303
+#: page-turn-page-breaking.cc:304
 #, c-format
 msgid "\tpage count: %d"
 msgstr "\tsideantal %d"
 
-#: page-turn-page-breaking.cc:304
+#: page-turn-page-breaking.cc:305
 #, c-format
 msgid "\tprevious break: %d"
 msgstr "\tforrige ombrydning: %d"
 
-#: pango-font.cc:246
+#: pango-font.cc:247
 #, c-format
 msgid "no glyph for character U+%0X in font `%s'"
 msgstr "intet skrifttegn for tegn U+%0X i skrifttypen »%s«"
 
-#: pango-font.cc:273
+#: pango-font.cc:274
 #, c-format
 msgid ""
 "Glyph has no name, but font supports glyph naming.\n"
@@ -2771,21 +2793,21 @@ msgstr ""
 "Skrifttegn har intet navn, men skrifttypen understøtter skrifttegnnavngivning.\n"
 "Udelader skrifttegn U+%0X, fil %s"
 
-#: pango-font.cc:323
+#: pango-font.cc:324
 #, c-format
 msgid "no PostScript font name for font `%s'"
 msgstr "intet PostScript-skriftnavn for skrifttypen »%s«"
 
-#: pango-font.cc:373
+#: pango-font.cc:374
 msgid "FreeType face has no PostScript font name"
 msgstr "FreeType-ansigt har intet PostScript-skrifttypenavn"
 
-#: paper-book.cc:201
+#: paper-book.cc:200
 #, c-format
 msgid "program option -dprint-pages not supported by backend `%s'"
 msgstr "programtilvalg -dprint-pages er ikke understøttet af motoren »%s«"
 
-#: paper-book.cc:220
+#: paper-book.cc:219
 #, c-format
 msgid "program option -dpreview not supported by backend `%s'"
 msgstr "programtilvalg -dpreview er ikke understøttet af motoren »%s«"
@@ -2808,7 +2830,7 @@ msgstr "Elementantal %d (er bro over %d) "
 msgid "Preprocessing graphical objects..."
 msgstr "Forbehandler grafiske objekter ..."
 
-#: parse-scm.cc:128
+#: parse-scm.cc:124
 msgid "GUILE signaled an error for the expression beginning here"
 msgstr "GUILE signalerede en fejl for udtrykket, der begynder her"
 
@@ -2821,11 +2843,11 @@ msgstr "Konvertering af streng »%s« til UTF-16be mislykkedes: %s"
 msgid "unterminated percent repeat"
 msgstr "uafsluttet procentgentagelse"
 
-#: performance.cc:55
+#: performance.cc:76
 msgid "Track..."
 msgstr "Spor ... "
 
-#: performance.cc:90
+#: performance.cc:126
 #, c-format
 msgid "MIDI output to `%s'..."
 msgstr "MIDI-uddata til »%s« ..."
@@ -2860,25 +2882,25 @@ msgstr "ikke et grobnavn, »%s«"
 msgid "Failed octave check, got: "
 msgstr "Mislykket oktavkontrol, fik: "
 
-#: relocate.cc:52
+#: relocate.cc:56
 #, c-format
 msgid "Setting %s to %s"
 msgstr "Sætter %s til %s"
 
 #. this warning should only be printed in debug mode!
-#: relocate.cc:73
+#: relocate.cc:77
 #, c-format
 msgid "no such file: %s for %s"
 msgstr "ingen sådan fil: %s for %s"
 
 #. this warning should only be printed in debug mode!
 #. this warning should only be printed in debug mode
-#: relocate.cc:84 relocate.cc:102
+#: relocate.cc:88 relocate.cc:106
 #, c-format
 msgid "no such directory: %s for %s"
 msgstr "denne mappe findes ikke: %s for %s"
 
-#: relocate.cc:93
+#: relocate.cc:97
 #, c-format
 msgid "%s=%s (prepend)\n"
 msgstr "%s=%s (foranstil)\n"
@@ -2908,7 +2930,7 @@ msgstr "Flytning: er absolut: argv0=%s\n"
 msgid "Relocation : from cwd: argv0=%s\n"
 msgstr "Flytning: fra cwd: argv0=%s\n"
 
-#: relocate.cc:194
+#: relocate.cc:196
 #, c-format
 msgid ""
 "Relocation: from PATH=%s\n"
@@ -2917,30 +2939,30 @@ msgstr ""
 "Flytning: fra PATH=%s\n"
 "argv0=%s\n"
 
-#: relocate.cc:220
+#: relocate.cc:222
 msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
 msgstr "LILYPONDPREFIX er forældet, brug LILYPOND_DATADIR"
 
-#: relocate.cc:345
+#: relocate.cc:347
 #, c-format
 msgid "Relocation file: %s"
 msgstr "Flytningsfil: %s"
 
-#: relocate.cc:349 source-file.cc:65
+#: relocate.cc:351 source-file.cc:65
 #, c-format
 msgid "cannot open file: `%s'"
 msgstr "kan ikke åbne fil: »%s«"
 
-#: relocate.cc:379
+#: relocate.cc:381
 #, c-format
 msgid "Unknown relocation command %s"
 msgstr "Ukendt flytningskommando %s"
 
-#: rest-collision.cc:153
+#: rest-collision.cc:154
 msgid "cannot resolve rest collision: rest direction not set"
 msgstr "kan ikke løse pausekollision: pauseretning ikke angivet"
 
-#: rest-collision.cc:164 rest-collision.cc:273
+#: rest-collision.cc:165 rest-collision.cc:274
 msgid "too many colliding rests"
 msgstr "for mange kolliderende pauser"
 
@@ -2949,33 +2971,33 @@ msgstr "for mange kolliderende pauser"
 msgid "rest `%s' not found"
 msgstr "pausen »%s« blev ikke fundet"
 
-#: score-engraver.cc:79
+#: score-engraver.cc:77
 #, c-format
 msgid "cannot find `%s'"
 msgstr "kan ikke finde: »%s«"
 
-#: score-engraver.cc:81
+#: score-engraver.cc:79
 msgid "Music font has not been installed properly."
 msgstr "Musikskrifttype er ikke blevet korrekt installeret."
 
-#: score-engraver.cc:83
+#: score-engraver.cc:81
 #, c-format
 msgid "Search path `%s'"
 msgstr "Søgesti »%s«"
 
-#: score-engraver.cc:85
+#: score-engraver.cc:83
 msgid "Aborting"
 msgstr "Afbryder"
 
-#: score.cc:160
+#: score.cc:161
 msgid "already have music in score"
 msgstr "har allerede musik i partitur"
 
-#: score.cc:161
+#: score.cc:163
 msgid "this is the previous music"
 msgstr "dette er den forrige musik"
 
-#: score.cc:166
+#: score.cc:169
 msgid "errors found, ignoring music expression"
 msgstr "der blev fundet fejl, ignorerer musikudtryk"
 
@@ -3014,7 +3036,7 @@ msgstr "%s uden en årsag"
 msgid "cannot end %s"
 msgstr "kan ikke afslutte %s"
 
-#: slur.cc:434
+#: slur.cc:436
 #, c-format
 msgid "Ignoring grob for slur: %s.  avoid-slur not set?"
 msgstr "Ignorerer grob for legatobue: %s. Er avoid-slur ikke angivet?"
@@ -3049,18 +3071,18 @@ msgstr "måske skal inddata specificere polyfoniske stemmer"
 msgid "weird stem size, check for narrow beams"
 msgstr "mærkelig nodehalsstørrelse; kontroller for smalle bjælker"
 
-#: system.cc:201
+#: system.cc:202
 #, c-format
 msgid "Element count %d"
 msgstr "Elementantal %d"
 
-#: system.cc:512
+#: system.cc:513
 #, c-format
 msgid "Grob count %d"
 msgstr "Grobantal %d"
 
 #. TODO: Also print the arguments of the markup!
-#: text-interface.cc:138
+#: text-interface.cc:139
 #, c-format
 msgid "Markup depth exceeds maximal value of %d; Markup: %s"
 msgstr "Opmærkningsdybde er større end maksimalværdi for %d; Opmærkning: %s"
@@ -3081,7 +3103,7 @@ msgstr "uafsluttet tekstbro"
 msgid "unterminated tie"
 msgstr "uafsluttet bindebue"
 
-#: tie-engraver.cc:373
+#: tie-engraver.cc:377
 msgid "lonely tie"
 msgstr "ensom bindebue"
 
@@ -3095,7 +3117,7 @@ msgstr "ensom bindebue"
 msgid "strange time signature found: %d/%d"
 msgstr "mærkelig tidssignatur fundet: %d/%d"
 
-#: translator-ctors.cc:65
+#: translator-ctors.cc:68
 #, c-format
 msgid "unknown translator: `%s'"
 msgstr "ukendt oversætter: »%s«"
@@ -3105,17 +3127,17 @@ msgstr "ukendt oversætter: »%s«"
 msgid "fatal error.  Couldn't find type: %s"
 msgstr "fatal fejl. Kunne ikke finde type: %s"
 
-#: translator-group.cc:188
+#: translator-group.cc:187
 #, c-format
 msgid "cannot find: `%s'"
 msgstr "kan ikke finde: »%s«"
 
-#: translator.cc:320
+#: translator.cc:310
 #, c-format
 msgid "Two simultaneous %s events, junking this one"
 msgstr "To samtidige %s hændelser, forkaster denne"
 
-#: translator.cc:321
+#: translator.cc:311
 #, c-format
 msgid "Previous %s event here"
 msgstr "Forrige %s hændelse her"
@@ -3180,206 +3202,206 @@ msgstr "har også allerede en afsluttet bro"
 msgid "giving up"
 msgstr "giver op"
 
-#: parser.yy:463 parser.yy:847 parser.yy:928 parser.yy:1150
+#: parser.yy:476 parser.yy:947 parser.yy:1028 parser.yy:1248
 msgid "bad expression type"
 msgstr "ugyldigt udtrykstype"
 
-#: parser.yy:759 parser.yy:1361 parser.yy:1406
+#: parser.yy:859 parser.yy:1458 parser.yy:1503
 msgid "not a context mod"
 msgstr "ikke en kontekst-mod"
 
-#: parser.yy:954
+#: parser.yy:1054
 msgid "Missing music in \\score"
 msgstr "Mangler musik i \\score"
 
-#: parser.yy:991
+#: parser.yy:1091
 msgid "\\paper cannot be used in \\score, use \\layout instead"
 msgstr "\\paper kan ikke bruges i \\score, brug \\layout i stedet for"
 
-#: parser.yy:1027
+#: parser.yy:1126
 msgid "Spurious expression in \\score"
 msgstr "Falsk udtryk i \\score"
 
-#: parser.yy:1057
+#: parser.yy:1156
 msgid "need \\paper for paper block"
 msgstr "kræver \\paper for papirblok"
 
-#: parser.yy:1234
+#: parser.yy:1331
 msgid "music expected"
 msgstr "forventede musik"
 
-#: parser.yy:1244 parser.yy:1278
+#: parser.yy:1341 parser.yy:1375
 msgid "unexpected post-event"
 msgstr "uventet post-hændelse"
 
-#: parser.yy:1286
+#: parser.yy:1383
 msgid "Ignoring non-music expression"
 msgstr "Ignorerer ikke-musik udtryk"
 
-#: parser.yy:1587
+#: parser.yy:1691
 msgid "not a symbol"
 msgstr "ikke et symbol"
 
-#: parser.yy:2337 parser.yy:2451 parser.yy:2464 parser.yy:2473
+#: parser.yy:2491 parser.yy:2605 parser.yy:2618 parser.yy:2627
 msgid "bad grob property path"
 msgstr "ugyldig grob-egenskabssti"
 
-#: parser.yy:2431
+#: parser.yy:2585
 msgid "only \\consists and \\remove take non-string argument."
 msgstr "kun \\consists og \\remove bruger ikke-streng argument."
 
-#: parser.yy:2492
+#: parser.yy:2646
 msgid "bad context property path"
 msgstr "ugyldig kontekst-egenskabssti"
 
-#: parser.yy:2593
+#: parser.yy:2733
 msgid "simple string expected"
 msgstr "forventede simpel streng"
 
-#: parser.yy:2611
+#: parser.yy:2750
 msgid "symbol expected"
 msgstr "forventede symbol"
 
-#: parser.yy:2747
+#: parser.yy:2886
 msgid "not a rhythmic event"
 msgstr "ikke en rytmisk hændelse"
 
-#: parser.yy:2797
+#: parser.yy:2936
 msgid "post-event expected"
 msgstr "forventede post-hændelse"
 
-#: parser.yy:2806 parser.yy:2811
+#: parser.yy:2945 parser.yy:2950
 msgid "have to be in Lyric mode for lyrics"
 msgstr "skal være i teksttilstand (Lyric mode) for tekst"
 
-#: parser.yy:2887
+#: parser.yy:3026
 msgid "expecting string or post-event as script definition"
 msgstr "forventer streng eller post-hændelse som skriptdefinition"
 
-#: parser.yy:2991
+#: parser.yy:3130
 msgid "not an articulation"
 msgstr "ikke en artikulation"
 
-#: parser.yy:3063 parser.yy:3106
+#: parser.yy:3202 parser.yy:3245
 msgid "not a duration"
 msgstr "ikke en længde"
 
-#: parser.yy:3127
+#: parser.yy:3266
 msgid "bass number expected"
 msgstr "forventede bass-nummer"
 
-#: parser.yy:3219
+#: parser.yy:3358
 msgid "have to be in Note mode for notes"
 msgstr "skal være i nodetilstand (Note mode) for noder"
 
-#: parser.yy:3258
+#: parser.yy:3397
 msgid "have to be in Chord mode for chords"
 msgstr "skal være i akkordtilstand (Chord mode) for akkord"
 
-#: parser.yy:3301
+#: parser.yy:3440
 msgid "markup outside of text script or \\lyricmode"
 msgstr "opmærkning uden for tekstskript eller \\lyricmode"
 
-#: parser.yy:3306
+#: parser.yy:3445
 msgid "unrecognized string, not in text script or \\lyricmode"
 msgstr "streng blev ikke genkendt, ikke i tekstskript eller \\lyricmode"
 
-#: parser.yy:3458 parser.yy:3467
+#: parser.yy:3597 parser.yy:3606
 msgid "not an unsigned integer"
 msgstr "ikke et ej underskrevet heltal"
 
-#: parser.yy:3541
+#: parser.yy:3693
 msgid "not a markup"
 msgstr "ikke en opmærkning"
 
-#: lexer.ll:192
+#: lexer.ll:193
 msgid "stray UTF-8 BOM encountered"
 msgstr "mødte malplaceret UTF-8 BOM"
 
-#: lexer.ll:195
+#: lexer.ll:196
 msgid "Skipping UTF-8 BOM"
 msgstr "Udelader UTF-8 BOM"
 
-#: lexer.ll:247
+#: lexer.ll:248
 #, c-format
 msgid "Renaming input to: `%s'"
 msgstr "Omdøber inddata til: »%s«"
 
-#: lexer.ll:264
+#: lexer.ll:265
 msgid "quoted string expected after \\version"
 msgstr "citatstreng forventet efter \\version"
 
-#: lexer.ll:268
+#: lexer.ll:269
 msgid "quoted string expected after \\sourcefilename"
 msgstr "citatstreng forventet efter \\sourcefilename"
 
-#: lexer.ll:272
+#: lexer.ll:273
 msgid "integer expected after \\sourcefileline"
 msgstr "heltal ventet efter \\sourcefileline"
 
-#: lexer.ll:299
+#: lexer.ll:300
 msgid "\\maininput not allowed outside init files"
 msgstr "\\maininput er ikke tilladt uden for init-filer"
 
-#: lexer.ll:323
+#: lexer.ll:324
 #, c-format
 msgid "wrong or undefined identifier: `%s'"
 msgstr "fejlagtig eller ikke defineret identifikator: »%s«"
 
-#: lexer.ll:348
+#: lexer.ll:349
 msgid "string expected after \\include"
 msgstr "streng ventet efter \\include"
 
-#: lexer.ll:358
+#: lexer.ll:359
 msgid "end quote missing"
 msgstr "slutcitationstegn mangler"
 
-#: lexer.ll:713
+#: lexer.ll:714
 msgid "EOF found inside a comment"
 msgstr "filslutning (EOF) fundet inden i en kommentar"
 
-#: lexer.ll:718
+#: lexer.ll:719
 msgid "EOF found inside string"
 msgstr "filslutning (EOF) fundet inden i streng"
 
-#: lexer.ll:733
+#: lexer.ll:734
 msgid "Unfinished main input"
 msgstr "Ufærdige hovedinddata"
 
-#: lexer.ll:804
+#: lexer.ll:805
 #, c-format
 msgid "invalid character: `%s'"
 msgstr "ugyldigt tegn: »%s«"
 
-#: lexer.ll:924
+#: lexer.ll:925
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr "ukendt undvigestreng: »\\%s«"
 
-#: lexer.ll:944
+#: lexer.ll:945
 #, c-format
 msgid "undefined character or shorthand: %s"
 msgstr "ikke defineret tegn eller stenografi: %s"
 
-#: lexer.ll:1235
+#: lexer.ll:1236
 msgid "non-UTF-8 input"
 msgstr "ikke-UTF-8-inddata"
 
-#: lexer.ll:1279
+#: lexer.ll:1280
 #, c-format
 msgid "Invalid version string \"%s\""
 msgstr "Ugyldig versionstreng »%s«"
 
-#: lexer.ll:1284
+#: lexer.ll:1285
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
 msgstr "filen er for gammel: %s (ældest understøttet: %s)"
 
-#: lexer.ll:1285
+#: lexer.ll:1286
 msgid "consider updating the input with the convert-ly script"
 msgstr "overvej at opdatere inddata med skriptet convert-ly"
 
-#: lexer.ll:1291
+#: lexer.ll:1292
 #, c-format
 msgid "program too old: %s (file requires: %s)"
 msgstr "program for gammelt: %s (fil kræver: %s)"
@@ -3398,24 +3420,34 @@ msgstr "Starter »~a« ..."
 msgid "`~a' failed (~a)\n"
 msgstr "»~a« mislykkedes (~a)\n"
 
-#: backend-library.scm:94
+#: backend-library.scm:108
 #, scheme-format
 msgid "Converting to `~a'...\n"
 msgstr "Konverterer til »~a« ...\n"
 
 #. Do not try to guess the name of the png file,
 #. GS produces PNG files like BASE-page%d.png.
-#: backend-library.scm:103
+#: backend-library.scm:118
 #, scheme-format
 msgid "Converting to ~a..."
 msgstr "Konverterer til ~a ..."
 
-#: backend-library.scm:141
+#: backend-library.scm:134
+#, scheme-format
+msgid "Copying to `~a'...\n"
+msgstr "Kopierer til »~a« ...\n"
+
+#: backend-library.scm:200
+#, scheme-format
+msgid "Deleting `~a'...\n"
+msgstr "Sletter »~a« ...\n"
+
+#: backend-library.scm:219
 #, scheme-format
 msgid "Writing header field `~a' to `~a'..."
 msgstr "Skriver teksthovedfelt »~a« til »~a« ..."
 
-#: backend-library.scm:190
+#: backend-library.scm:268
 #, scheme-format
 msgid "missing stencil expression `~S'"
 msgstr "manglende stenciludtryk »~S«"
@@ -3471,60 +3503,60 @@ msgstr "Kan ikke omdefinere hændelsesklasse »~S«"
 msgid "Undefined parent event class `~S'"
 msgstr "Overhændelsesklassen »~S« er ikke defineret"
 
-#: define-markup-commands.scm:1062
+#: define-markup-commands.scm:1098
 msgid "no systems found in \\score markup, does it have a \\layout block?"
 msgstr "ingen systemer fundet i \\score-opmærkning, har den en \\layout-blok?"
 
-#: define-markup-commands.scm:2886
+#: define-markup-commands.scm:2922
 #, scheme-format
 msgid "Cannot find glyph ~a"
 msgstr "Kan ikke finde teksttegn ~a"
 
-#: define-markup-commands.scm:3362
+#: define-markup-commands.scm:3398
 #, scheme-format
 msgid "no brace found for point size ~S "
 msgstr "ingen akkolade fundet for punktstørrelse ~S "
 
-#: define-markup-commands.scm:3363
+#: define-markup-commands.scm:3399
 #, scheme-format
 msgid "defaulting to ~S pt"
 msgstr "bruger standarden ~S pt"
 
-#: define-markup-commands.scm:3615
+#: define-markup-commands.scm:3643
 #, scheme-format
 msgid "not a valid duration string: ~a"
 msgstr "ikke en gyldig længdestreng: ~a"
 
-#: define-markup-commands.scm:3826
+#: define-markup-commands.scm:3854
 #, scheme-format
 msgid "not a valid duration string: ~a - ignoring"
 msgstr "ikke en gyldig længdestreng: ~a - ignorerer"
 
-#: define-music-types.scm:797
+#: define-music-types.scm:803
 #, scheme-format
 msgid "symbol expected: ~S"
 msgstr "forventede symbol: ~S"
 
-#: define-music-types.scm:800
+#: define-music-types.scm:806
 #, scheme-format
 msgid "cannot find music object: ~S"
 msgstr "kan ikke finde musikobjekt: ~S"
 
-#: define-music-types.scm:820
+#: define-music-types.scm:826
 #, scheme-format
 msgid "bad make-music argument: ~S"
 msgstr "ugyldigt make-music-argument: ~S"
 
-#: define-note-names.scm:972
+#: define-note-names.scm:1000
 msgid "Select note names language."
 msgstr "Vælg sprog for nodenavne."
 
-#: define-note-names.scm:978
+#: define-note-names.scm:1006
 #, scheme-format
 msgid "Using `~a' note names..."
 msgstr "Bruger »~a« nodenavne ..."
 
-#: define-note-names.scm:981
+#: define-note-names.scm:1009
 #, scheme-format
 msgid "Could not find language `~a'.  Ignoring."
 msgstr "Kunne ikke finde sprog »~a«. Ignorerer."
@@ -3564,12 +3596,12 @@ msgstr "kan ikke finde beskrivelse for egenskab »~S« (~S)"
 msgid "cannot find description for property ~S (~S)"
 msgstr "kan ikke finde beskrivelse for egenskab ~S (~S)"
 
-#: flag-styles.scm:162
+#: flag-styles.scm:155
 #, scheme-format
 msgid "flag stroke `~a' or `~a' not found"
 msgstr "flagslag »~a« eller »~a« blev ikke fundet"
 
-#: framework-eps.scm:108
+#: framework-eps.scm:112
 #, scheme-format
 msgid "Writing ~a..."
 msgstr "Skriver ~a ..."
@@ -3594,7 +3626,7 @@ msgstr "ved ikke hvordan der skal indlejres ~S=~S"
 msgid "do not know how to embed font ~s ~s ~s"
 msgstr "ved ikke hvordan skrifttype skal indlejres ~s ~s ~s"
 
-#: framework-ps.scm:729
+#: framework-ps.scm:723
 msgid ""
 "\n"
 "The PostScript backend does not support the\n"
@@ -3642,20 +3674,20 @@ msgstr "Fejl i bjælkequanting. Forventede (~S,~S) fandt ~S."
 msgid "Error in beam quanting.  Expected ~S 0, found ~S."
 msgstr "Fejl i bjælkequanting. Forventede ~S 0, fandt ~S."
 
-#: lily-library.scm:350
+#: lily-library.scm:333
 msgid "Music unsuitable for context-mod"
 msgstr "Musik uegnet for context-mod"
 
-#: lily-library.scm:405
+#: lily-library.scm:388
 #, scheme-format
 msgid "Cannot find context-def \\~a"
 msgstr "Kan ikke finde context-def \\~a"
 
-#: lily-library.scm:421
+#: lily-library.scm:404
 msgid "Music unsuitable for output-def"
 msgstr "Musik uegnet for output-def"
 
-#: lily-library.scm:921
+#: lily-library.scm:904
 msgid ""
 "Find the index between @var{start} and @var{end} (an integer)\n"
 "which produces the closest match to @var{target-val} if\n"
@@ -3665,51 +3697,51 @@ msgstr ""
 "som laver det bedste match til @var{target-val} hvis\n"
 "anvendt på funktionen @var{getter}."
 
-#: lily-library.scm:1015
+#: lily-library.scm:998
 #, scheme-format
 msgid "unknown unit: ~S"
 msgstr "ukendt enhed: ~S"
 
-#: lily-library.scm:1040
+#: lily-library.scm:1023
 #, scheme-format
 msgid "no \\version statement found, please add~afor future compatibility"
 msgstr "ingen \\version-udtryk fundet, tilføj venligst~afor fremtidig kompatibilitet"
 
-#: lily.scm:75
+#: lily.scm:93
 msgid "call-after-session used after session start"
 msgstr "call-after-session brugt efter sessionstart"
 
-#: lily.scm:93
+#: lily.scm:111
 msgid "define-session used after session start"
 msgstr "define-session brugt efter sessionstart"
 
-#: lily.scm:399
+#: lily.scm:417
 msgid "Using (ice-9 curried-definitions) module\n"
 msgstr "Bruger (ice-9 curried-definitions) modul\n"
 
-#: lily.scm:402
+#: lily.scm:420
 msgid "Guile 1.8\n"
 msgstr "Guile 1.8\n"
 
-#: lily.scm:459
+#: lily.scm:477
 #, scheme-format
 msgid "cannot find: ~A"
 msgstr "kan ikke finde: ~A"
 
-#: lily.scm:886
+#: lily.scm:903
 msgid "Success: compilation successfully completed"
 msgstr "Succes: Kompilation blev færdig"
 
-#: lily.scm:887
+#: lily.scm:904
 msgid "Compilation completed with warnings or errors"
 msgstr "Kompilation færdig med advarsler eller fejl"
 
-#: lily.scm:948
+#: lily.scm:965
 #, scheme-format
 msgid "job ~a terminated with signal: ~a"
 msgstr "job ~a afsluttedes med signal: ~a"
 
-#: lily.scm:951
+#: lily.scm:968
 #, scheme-format
 msgid ""
 "logfile ~a (exit ~a):\n"
@@ -3718,36 +3750,31 @@ msgstr ""
 "logfil ~a (afslut ~a):\n"
 "~a"
 
-#: lily.scm:973 lily.scm:1062
+#: lily.scm:990 lily.scm:1079
 #, scheme-format
 msgid "failed files: ~S"
 msgstr "mislykkede filer: ~S"
 
-#: lily.scm:1053
+#: lily.scm:1070
 #, scheme-format
 msgid "Redirecting output to ~a..."
 msgstr "Sender uddata videre til ~a ..."
 
-#: lily.scm:1072 ps-to-png.scm:66
+#: lily.scm:1089
 #, scheme-format
 msgid "Invoking `~a'...\n"
 msgstr "Starter »~a« ...\n"
 
-#: ly-syntax-constructors.scm:66
+#: ly-syntax-constructors.scm:27
 #, scheme-format
 msgid "~a function cannot return ~a"
 msgstr "~a-funktion kan ikke returnere ~a"
 
-#: ly-syntax-constructors.scm:76
+#: ly-syntax-constructors.scm:60
 #, scheme-format
 msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
 msgstr "forkert type for argument ~a. Forventede ~a, fandt ~s"
 
-#: ly-syntax-constructors.scm:200
-#, scheme-format
-msgid "Invalid property operation ~a"
-msgstr "Ugyldig egenskabsoperation ~a"
-
 #: markup-macros.scm:331
 #, scheme-format
 msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
@@ -3787,67 +3814,77 @@ msgstr "tonehøjde der skal vendes om er ikke i skala; ignorerer"
 msgid "negative replication count; ignoring"
 msgstr "negativ replikationsantal; ignorerer"
 
-#: music-functions.scm:311
+#: music-functions.scm:319
 #, scheme-format
 msgid "invalid tremolo repeat count: ~a"
 msgstr "ugyldig gentagantal for tremole: ~a"
 
-#: music-functions.scm:340
+#: music-functions.scm:348
 #, scheme-format
 msgid "unknown repeat type `~S': must be volta, unfold, percent, or tremolo"
 msgstr "ukendt gentagtype »~S«: skal være volta, unfold, procent eller tremolo"
 
-#: music-functions.scm:344
+#: music-functions.scm:352
 msgid "More alternatives than repeats.  Junking excess alternatives"
 msgstr "Flere alternativer end gentagelser. Stryger tiloversblevne alternativer"
 
-#: music-functions.scm:480
+#: music-functions.scm:487
 #, scheme-format
 msgid "bad grob property path ~a"
 msgstr "ugyldig grob-egenskabssti ~a"
 
-#: music-functions.scm:779
+#: music-functions.scm:511
+#, scheme-format
+msgid "bad context property ~a"
+msgstr "ugyldig kontekstegenskab ~a"
+
+#: music-functions.scm:534
+#, scheme-format
+msgid "bad music property ~a"
+msgstr "ugyldig musikegenskab ~a"
+
+#: music-functions.scm:840
 msgid "Bad chord repetition"
 msgstr "Ugyldig akkordgentagelse"
 
-#: music-functions.scm:884
+#: music-functions.scm:945
 #, scheme-format
 msgid "music expected: ~S"
 msgstr "forventede musik: ~S"
 
-#: music-functions.scm:1226
+#: music-functions.scm:1295
 #, scheme-format
 msgid "cannot find quoted music: `~S'"
 msgstr "kan ikke finde citeret musik: »~S«"
 
-#: music-functions.scm:1366
+#: music-functions.scm:1432
 msgid "Add @var{octave-shift} to the octave of @var{pitch}."
 msgstr "Tilføj @var{octave-shift} til oktaven for @var{pitch}."
 
-#: music-functions.scm:1429
+#: music-functions.scm:1495
 #, scheme-format
 msgid "Unknown octaveness type: ~S "
 msgstr "Ukendt octaveness-type: ~S "
 
-#: music-functions.scm:1430
+#: music-functions.scm:1496
 msgid "Defaulting to 'any-octave."
 msgstr "Bruger standarden »any-octave«."
 
-#: music-functions.scm:1822
+#: music-functions.scm:1888
 #, scheme-format
 msgid "unknown accidental style: ~S"
 msgstr "ukendt utilsigte stil: ~S"
 
-#: music-functions.scm:2040
+#: music-functions.scm:2098
 msgid "Missing duration"
 msgstr "Manglende længde"
 
-#: music-functions.scm:2549
+#: music-functions.scm:2626
 #, scheme-format
 msgid "not a symbol list: ~a"
 msgstr "ikke en symbolliste: ~a"
 
-#: music-functions.scm:2552
+#: music-functions.scm:2629
 #, scheme-format
 msgid "conflicting tag group ~a"
 msgstr "mærkegruppe er i konflikt ~a"
@@ -3876,23 +3913,23 @@ msgstr "Skrifttegn skal have en unicodeværdi"
 msgid "cannot find SVG font ~S"
 msgstr "kan ikke finde SVGskriften ~S"
 
-#: paper.scm:122
+#: paper.scm:121
 msgid "set-global-staff-size: not in toplevel scope"
 msgstr "set-global-staff-size: ikke i topniveauanvendelsesområde"
 
-#: paper.scm:322
+#: paper.scm:321
 #, scheme-format
 msgid "This is not a \\layout {} object, ~S"
 msgstr "Dette er ikke et \\layout {}-objekt, ~S"
 
-#: paper.scm:330
+#: paper.scm:329
 #, scheme-format
 msgid "Unknown paper size: ~a"
 msgstr "Ukendt papirstørrelse: ~a"
 
 #. TODO: should raise (generic) exception with throw, and catch
 #. that in parse-scm.cc
-#: paper.scm:349
+#: paper.scm:348
 msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
 msgstr "Skal bruge #(set-paper-size .. ) inden i \\paper { ... }"
 
@@ -3906,19 +3943,24 @@ msgstr "ukendt nøgletype »~a«"
 msgid "supported clefs: ~a"
 msgstr "understøttede nøgler: ~a"
 
-#: parser-ly-from-scheme.scm:74
+#: parser-ly-from-scheme.scm:73
 msgid "error in #{ ... #}"
 msgstr "fejl i #{ ... #}"
 
-#: part-combiner.scm:748
+#: part-combiner.scm:894
 #, scheme-format
 msgid "quoted music `~a' is empty"
 msgstr "citeret musik »~a« er tom"
 
-#: ps-to-png.scm:70
+#: ps-to-png.scm:72 ps-to-png.scm:75
+#, scheme-format
+msgid "Copying `~a' to `~a'..."
+msgstr "Kopierer »~a« til »~a« ..."
+
+#: ps-to-png.scm:77 ps-to-png.scm:79
 #, scheme-format
-msgid "~a exited with status: ~S"
-msgstr "~a afsluttede med status: ~S"
+msgid "Deleting `~a'..."
+msgstr "Sletter  »~a« ..."
 
 #: to-xml.scm:190
 #, scheme-format
@@ -3966,3 +4008,12 @@ msgid ""
 msgstr ""
 "Ingen etiket for bånd ~a (på streng ~a);\n"
 "kun ~a båndetiketter tilbudt"
+
+#~ msgid "cannot change, already in translator: %s"
+#~ msgstr "kan ikke ændre, allerede i oversætter: %s"
+
+#~ msgid "Invalid property operation ~a"
+#~ msgstr "Ugyldig egenskabsoperation ~a"
+
+#~ msgid "~a exited with status: ~S"
+#~ msgstr "~a afsluttede med status: ~S"
index d96ccd1e343727c47b8172b7e6b10c715a7bfee8..f456eef66a90c87ae8c5ee4575e8997b9a69c800 100644 (file)
--- a/po/ja.po
+++ b/po/ja.po
 # Japanese message for lilypond
-# Copyright (C) 2000, 2012 Free Software Foundation, Inc.
+# Copyright (C) 2000, 2012, 2015 Free Software Foundation, Inc.
 # This file is distributed under the same license as the lilypond package.
 # Daisuke Yamashita <yamad@mb.infoweb.ne.jp>, 2000.
 # Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>, 2012.
+# Masamichi Hosoda <trueroad@trueroad.jp>, 2016.
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.15.29\n"
+"Project-Id-Version: lilypond 2.19.26\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
-"POT-Creation-Date: 2012-02-04 15:42+0100\n"
-"PO-Revision-Date: 2012-03-25 00:31+0900\n"
-"Last-Translator: Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>\n"
+"POT-Creation-Date: 2015-08-27 10:48+0100\n"
+"PO-Revision-Date: 2016-01-03 18:35+0900\n"
+"Last-Translator: Masamichi Hosoda <trueroad@trueroad.jp>\n"
 "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n"
 "Language: ja\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: fontextract.py:25
-#, python-format
-msgid "Scanning %s"
-msgstr "%s をスキャン中"
+#: book_base.py:26
+#, fuzzy, python-format
+msgid "file not found: %s"
+msgstr "ファイルがありません"
 
-#: fontextract.py:70
+#: book_base.py:164
+#, fuzzy
+msgid "Output function not implemented"
+msgstr "PASSMECH は完全には実装されていません"
+
+#: book_latex.py:174
+msgid "cannot find \\begin{document} in LaTeX document"
+msgstr "LaTeX 文書の中に \\begin{document} がありません"
+
+#: book_latex.py:190
 #, python-format
-msgid "Extracted %s"
+msgid "Running `%s' on file `%s' to detect default page settings.\n"
 msgstr ""
 
-#: fontextract.py:85
+#: book_latex.py:219 book_texinfo.py:228
+msgid "Unable to auto-detect default settings:\n"
+msgstr "既定の設定を自動検出できません:\n"
+
+#: book_latex.py:231 book_texinfo.py:240
 #, python-format
-msgid "Writing fonts to %s"
-msgstr "%s にフォントを書き込みます"
+msgid ""
+"Unable to auto-detect default settings:\n"
+"%s"
+msgstr ""
+"既定の設定を自動検出できません:\n"
+"%s"
+
+#: book_latex.py:254
+#, fuzzy
+msgid "cannot detect textwidth from LaTeX"
+msgstr "RPM ファイルからカタログを抽出できません。"
 
-#: book_snippets.py:409
+#: book_snippets.py:406
 #, fuzzy, python-format
 msgid "deprecated ly-option used: %s=%s"
 msgstr "警告:“%s”は、問題視されているオプションです\n"
 
-#: book_snippets.py:411
+#: book_snippets.py:408
 #, fuzzy, python-format
 msgid "compatibility mode translation: %s=%s"
 msgstr "  -a|pipe          \"ispell -a\" 互換モード"
 
-#: book_snippets.py:414
+#: book_snippets.py:411
 #, fuzzy, python-format
 msgid "deprecated ly-option used: %s"
 msgstr "警告:“%s”は、問題視されているオプションです\n"
 
-#: book_snippets.py:416
+#: book_snippets.py:413
 #, fuzzy, python-format
 msgid "compatibility mode translation: %s"
 msgstr "  -a|pipe          \"ispell -a\" 互換モード"
 
-#: book_snippets.py:533
+#: book_snippets.py:530
 #, fuzzy, python-format
 msgid "ignoring unknown ly option: %s"
 msgstr "不明な強制・拒否 (force/refuse) オプション `%.*s'"
 
-#: book_snippets.py:741
+#: book_snippets.py:621
+#, fuzzy, python-format
+msgid "Missing files: %s"
+msgstr "ウィンドウ飾りも含める"
+
+#: book_snippets.py:661
+#, fuzzy, python-format
+msgid "Could not overwrite file %s"
+msgstr ""
+"ファイル %s に書き込めません:\n"
+"%s\n"
+
+#: book_snippets.py:748
 #, python-format
 msgid "Running through filter `%s'"
 msgstr "フィルタ `%s' で処理中です "
 
-#: book_snippets.py:761
+#: book_snippets.py:769
 #, python-format
 msgid "`%s' failed (%d)"
 msgstr "`%s' 失敗しました(%d)"
 
-#: book_snippets.py:762
+#: book_snippets.py:770
 msgid "The error log is as follows:"
 msgstr "エラーログは以下の通りです:"
 
-#: book_snippets.py:882
+#: book_snippets.py:890
 #, fuzzy, python-format
 msgid "Converting MusicXML file `%s'...\n"
 msgstr "MusicXML ファイル (*.mxml)"
 
-#: book_snippets.py:909
+#: book_snippets.py:917
 #, python-format
 msgid ""
 "%s: duplicate filename but different contents of original file,\n"
 "printing diff against existing file."
 msgstr ""
 
-#: book_snippets.py:922
+#: book_snippets.py:930
 #, python-format
 msgid ""
 "%s: duplicate filename but different contents of converted lilypond file,\n"
 "printing diff against existing file."
 msgstr ""
 
-#: convertrules.py:12
+#. Work around a texi2pdf bug: if LANG=C is not given, a broken regexp is
+#. used to detect relative/absolute paths, so the absolute path is not
+#. detected as such and this command fails:
+#: book_texinfo.py:206
+#, python-format
+msgid "Running texi2pdf on file %s to detect default page settings.\n"
+msgstr ""
+
+#: convertrules.py:13
 #, fuzzy, python-format
 msgid "Not smart enough to convert %s."
 msgstr "アンカーポイントが不足しているので描画できません"
 
-#: convertrules.py:13
+#: convertrules.py:14
 msgid "Please refer to the manual for details, and update manually."
 msgstr "詳細についてはマニュアルを参照して、手動で更新してください。"
 
-#: convertrules.py:14
+#: convertrules.py:15
 #, fuzzy, python-format
 msgid "%s has been replaced by %s"
 msgstr "あなたは %s さんによって追加されました"
 
-#: convertrules.py:24 lilylib.py:131 warn.cc:223
+#: convertrules.py:25 lilylib.py:136 warn.cc:223
 #, c-format, python-format
 msgid "warning: %s"
 msgstr "警告: %s"
 
-#: convertrules.py:49 convertrules.py:94
+#: convertrules.py:50 convertrules.py:95
 msgid "\\header { key = concat + with + operator }"
 msgstr ""
 
-#: convertrules.py:56
+#: convertrules.py:57
 #, python-format
 msgid "deprecated %s"
 msgstr "非推奨です %s"
 
-#: convertrules.py:65
+#: convertrules.py:66
 msgid "deprecated \\textstyle, new \\key syntax"
 msgstr ""
 
-#: convertrules.py:81 convertrules.py:1855 convertrules.py:2031
-#: convertrules.py:2174 convertrules.py:2505 convertrules.py:2800
-#: convertrules.py:3150
+#: convertrules.py:82 convertrules.py:1856 convertrules.py:2032
+#: convertrules.py:2175 convertrules.py:2506 convertrules.py:2801
+#: convertrules.py:3151 convertrules.py:3388 convertrules.py:3700
 #, fuzzy
 msgid "bump version for release"
 msgstr "'%2$s' のリリース '%1$s' が見つかりませんでした"
 
-#: convertrules.py:97
+#: convertrules.py:98
 msgid "new \\header format"
 msgstr "新しい \\header の書式"
 
-#: convertrules.py:124
+#: convertrules.py:125
 #, fuzzy
 msgid "\\translator syntax"
 msgstr "%s: 文法エラー"
 
-#: convertrules.py:175
+#: convertrules.py:176
 msgid "\\repeat NUM Music Alternative -> \\repeat FOLDSTR Music Alternative"
 msgstr ""
 
-#: convertrules.py:205 convertrules.py:678 convertrules.py:1350
-#: convertrules.py:2317
+#: convertrules.py:206 convertrules.py:679 convertrules.py:1351
+#: convertrules.py:2318
 #, python-format
 msgid "deprecate %s"
 msgstr ""
 
-#: convertrules.py:279
+#: convertrules.py:280
 #, python-format
 msgid "deprecate %s "
 msgstr ""
 
-#: convertrules.py:305
+#: convertrules.py:306
 msgid "new \\notenames format"
 msgstr "新しい \\notenames の書式"
 
-#: convertrules.py:321
+#: convertrules.py:322
 #, fuzzy
 msgid "new tremolo format"
 msgstr "新しい \\header の書式"
 
-#: convertrules.py:325
+#: convertrules.py:326
 msgid "Staff_margin_engraver deprecated, use Instrument_name_engraver"
 msgstr ""
 
-#: convertrules.py:376
+#: convertrules.py:377
 msgid "change property definition case (eg. onevoice -> oneVoice)"
 msgstr ""
 
-#: convertrules.py:437
+#: convertrules.py:438
 #, fuzzy
 msgid "new \\textscript markup text"
 msgstr "新しい置換の追加"
 
-#: convertrules.py:509
+#: convertrules.py:510
 #, fuzzy, python-format
 msgid "identifier names: %s"
 msgstr "    -a, --alias           エイリアス名\n"
 
-#: convertrules.py:548
+#: convertrules.py:549
 msgid "point-and-click argument changed to procedure."
 msgstr ""
 
-#: convertrules.py:590
+#: convertrules.py:591
 #, fuzzy
 msgid "semicolons removed"
 msgstr "パッチ %s を削除しました\\n"
 
 #. 40 ?
-#: convertrules.py:633
+#: convertrules.py:634
 #, fuzzy, python-format
 msgid "%s property names"
 msgstr "    -a, --alias           エイリアス名\n"
 
-#: convertrules.py:703
+#: convertrules.py:704
 #, fuzzy
 msgid "automaticMelismata turned on by default"
 msgstr "%2$s から %1$s へのログインは、初期状態では拒否されました。\n"
 
-#: convertrules.py:708
+#: convertrules.py:709
 msgid "automaticMelismata is turned on by default since 1.5.67."
 msgstr ""
 
-#: convertrules.py:942 convertrules.py:1635 convertrules.py:1889
-#: convertrules.py:2134
+#: convertrules.py:943 convertrules.py:1636 convertrules.py:1890
+#: convertrules.py:2135
 #, python-format
 msgid "remove %s"
 msgstr "%s を削除"
 
-#: convertrules.py:977 convertrules.py:980
+#: convertrules.py:978 convertrules.py:981
 msgid "cluster syntax"
 msgstr "クラスタの文法"
 
-#: convertrules.py:987
+#: convertrules.py:988
 #, fuzzy
 msgid "new Pedal style syntax"
 msgstr "新しいスタイルのグループ・オブジェクト (テスト用)"
 
-#: convertrules.py:1246
+#: convertrules.py:1247
 msgid ""
 "New relative mode,\n"
 "Postfix articulations, new text markup syntax, new chord syntax."
 msgstr ""
 
-#: convertrules.py:1259
+#: convertrules.py:1260
 #, fuzzy
 msgid "Remove - before articulation"
 msgstr "保存前に確認(&M)"
 
-#: convertrules.py:1294
+#: convertrules.py:1295
 #, python-format
 msgid "%s misspelling"
 msgstr "%s スペルミスです"
 
-#: convertrules.py:1313
+#: convertrules.py:1314
 #, fuzzy
 msgid "Swap < > and << >>"
 msgstr "黒と白を反転する"
 
-#: convertrules.py:1316
+#: convertrules.py:1317
 msgid "attempting automatic \\figures conversion.  Check results!"
 msgstr ""
 
-#: convertrules.py:1362
+#: convertrules.py:1363
 msgid "Use Scheme code to construct arbitrary note events."
 msgstr ""
 
-#: convertrules.py:1369
+#: convertrules.py:1370
 msgid ""
 "use symbolic constants for alterations,\n"
 "remove \\outputproperty, move ly:verbose into ly:get-option"
 msgstr ""
 
-#: convertrules.py:1394
+#: convertrules.py:1395
 #, python-format
 msgid ""
 "\\outputproperty found,\n"
@@ -264,7 +307,7 @@ msgid ""
 "as a substitution text."
 msgstr ""
 
-#: convertrules.py:1406
+#: convertrules.py:1407
 msgid ""
 "The alteration field of Scheme pitches was multiplied by 2\n"
 "to support quarter tone accidentals.  You must update the following constructs manually:\n"
@@ -273,25 +316,25 @@ msgid ""
 "* keySignature settings made with \\property\n"
 msgstr ""
 
-#: convertrules.py:1449
+#: convertrules.py:1450
 msgid "removal of automaticMelismata; use melismaBusyProperties instead."
 msgstr ""
 
-#: convertrules.py:1556
+#: convertrules.py:1557
 msgid "\\partcombine syntax change to \\newpartcombine"
 msgstr ""
 
-#: convertrules.py:1581
+#: convertrules.py:1582
 msgid ""
 "Drum notation changes, Removing \\chordmodifiers, \\notenames.\n"
 "Harmonic notes. Thread context removed. Lyrics context removed."
 msgstr ""
 
-#: convertrules.py:1585
+#: convertrules.py:1586
 msgid "Drums found. Enclose drum notes in \\drummode"
 msgstr ""
 
-#: convertrules.py:1596 convertrules.py:1603 convertrules.py:1614
+#: convertrules.py:1597 convertrules.py:1604 convertrules.py:1615
 #, python-format
 msgid ""
 "\n"
@@ -300,47 +343,47 @@ msgstr ""
 "\n"
 "%s が見つかりました\n"
 
-#: convertrules.py:1596
+#: convertrules.py:1597
 #, fuzzy
 msgid "Drum notation"
 msgstr "HTML 表記: "
 
-#: convertrules.py:1655
+#: convertrules.py:1656
 #, fuzzy
 msgid "new syntax for property settings:"
 msgstr "属性 '%s' の新しい値を '%s' に設定しました\n"
 
-#: convertrules.py:1681
+#: convertrules.py:1682
 msgid "Property setting syntax in \\translator{ }"
 msgstr ""
 
-#: convertrules.py:1720
+#: convertrules.py:1721
 msgid "Scheme grob function renaming"
 msgstr ""
 
-#: convertrules.py:1731 convertrules.py:2138 convertrules.py:2142
-#: convertrules.py:2708
+#: convertrules.py:1732 convertrules.py:2139 convertrules.py:2143
+#: convertrules.py:2709
 #, fuzzy, python-format
 msgid "Use %s\n"
 msgstr "ON"
 
-#: convertrules.py:1747
+#: convertrules.py:1748
 msgid "More Scheme function renaming"
 msgstr ""
 
-#: convertrules.py:1871
+#: convertrules.py:1872
 msgid ""
 "Page layout has been changed, using paper size and margins.\n"
 "textheight is no longer used.\n"
 msgstr ""
 
-#: convertrules.py:1957
+#: convertrules.py:1958
 msgid ""
 "\\foo -> \\foomode (for chords, notes, etc.)\n"
 "fold \\new FooContext \\foomode into \\foo."
 msgstr ""
 
-#: convertrules.py:1995
+#: convertrules.py:1996
 msgid ""
 "staff size should be changed at top-level\n"
 "with\n"
@@ -349,83 +392,83 @@ msgid ""
 "\n"
 msgstr ""
 
-#: convertrules.py:2015
+#: convertrules.py:2016
 #, fuzzy
 msgid "regularize other identifiers"
 msgstr "他のタブを閉じる"
 
-#: convertrules.py:2083
+#: convertrules.py:2084
 msgid "\\encoding: smart recode latin1..utf-8. Remove ly:point-and-click"
 msgstr ""
 
-#: convertrules.py:2094
+#: convertrules.py:2095
 msgid "LilyPond source must be UTF-8"
 msgstr "LilyPond のソースファイルは UTF-8 で記述してください"
 
-#: convertrules.py:2097
+#: convertrules.py:2098
 #, fuzzy
 msgid "Try the texstrings backend"
 msgstr "バックエンドによる較正"
 
-#: convertrules.py:2100
+#: convertrules.py:2101
 #, fuzzy, python-format
 msgid "Do something like: %s"
 msgstr "lynx 風動作(&Y)"
 
-#: convertrules.py:2103
+#: convertrules.py:2104
 msgid "Or save as UTF-8 in your editor"
 msgstr "エディタで保存する際の文字コードには UTF-8 を指定してください"
 
-#: convertrules.py:2153
+#: convertrules.py:2154
 msgid "warn about auto beam settings"
 msgstr ""
 
-#: convertrules.py:2157
+#: convertrules.py:2158
 #, fuzzy
 msgid "auto beam settings"
 msgstr "Cisco VPN 設定"
 
-#: convertrules.py:2158
+#: convertrules.py:2159
 msgid ""
 "\n"
 "Auto beam settings must now specify each interesting moment in a measure\n"
 "explicitly; 1/4 is no longer multiplied to cover moments 1/2 and 3/4 too.\n"
 msgstr ""
 
-#: convertrules.py:2271
+#: convertrules.py:2272
 #, fuzzy
 msgid "verticalAlignmentChildCallback has been deprecated"
 msgstr "鍵がパクられました"
 
-#: convertrules.py:2276
+#: convertrules.py:2277
 msgid "Remove callbacks property, deprecate XY-extent-callback."
 msgstr ""
 
-#: convertrules.py:2297
+#: convertrules.py:2298
 msgid "Use grob closures iso. XY-offset-callbacks."
 msgstr ""
 
-#: convertrules.py:2359
+#: convertrules.py:2360
 msgid "foobar -> foo-bar for \\paper, \\layout"
 msgstr ""
 
-#: convertrules.py:2469
+#: convertrules.py:2470
 msgid "deprecate \\tempo in \\midi"
 msgstr ""
 
-#: convertrules.py:2522
+#: convertrules.py:2523
 msgid "deprecate cautionary-style. Use AccidentalCautionary properties"
 msgstr ""
 
-#: convertrules.py:2535
+#: convertrules.py:2536
 msgid "Rename accidental glyphs, use glyph-name-alist."
 msgstr ""
 
-#: convertrules.py:2590
+#: convertrules.py:2591
 msgid "edge-text settings for TextSpanner"
 msgstr ""
 
-#: convertrules.py:2591
+#: convertrules.py:2592
 #, fuzzy, python-format
 msgid ""
 "Use\n"
@@ -433,127 +476,127 @@ msgid ""
 "%s"
 msgstr "ON"
 
-#: convertrules.py:2624
+#: convertrules.py:2625
 msgid "Use the `alignment-offsets' sub-property of\n"
 msgstr ""
 
-#: convertrules.py:2625
+#: convertrules.py:2626
 msgid "NonMusicalPaperColumn #'line-break-system-details\n"
 msgstr ""
 
-#: convertrules.py:2626
+#: convertrules.py:2627
 msgid "to set fixed distances between staves.\n"
 msgstr ""
 
-#: convertrules.py:2638
+#: convertrules.py:2639
 msgid "Use #'style not #'dash-fraction to select solid/dashed lines."
 msgstr ""
 
-#: convertrules.py:2644
+#: convertrules.py:2645
 msgid "all settings related to dashed lines"
 msgstr ""
 
-#: convertrules.py:2645
+#: convertrules.py:2646
 msgid "Use \\override ... #'style = #'line for solid lines and\n"
 msgstr ""
 
-#: convertrules.py:2646
+#: convertrules.py:2647
 msgid "\t\\override ... #'style = #'dashed-line for dashed lines."
 msgstr ""
 
-#: convertrules.py:2682
+#: convertrules.py:2683
 msgid ""
 "metronomeMarkFormatter uses text markup as second argument,\n"
 "fret diagram properties moved to fret-diagram-details."
 msgstr ""
 
-#: convertrules.py:2688
+#: convertrules.py:2689
 msgid "metronomeMarkFormatter got an additional text argument.\n"
 msgstr ""
 
-#: convertrules.py:2689
+#: convertrules.py:2690
 #, python-format
 msgid ""
 "The function assigned to Score.metronomeMarkFunction now uses the signature\n"
 "%s"
 msgstr ""
 
-#: convertrules.py:2707
+#: convertrules.py:2708
 #, python-format
 msgid "%s in fret-diagram properties"
 msgstr ""
 
-#: convertrules.py:2751
+#: convertrules.py:2752
 msgid "\\put-adjacent argument order"
 msgstr ""
 
-#: convertrules.py:2752
+#: convertrules.py:2753
 msgid "Axis and direction now come before markups:\n"
 msgstr ""
 
-#: convertrules.py:2753
+#: convertrules.py:2754
 msgid "\\put-adjacent axis dir markup markup."
 msgstr ""
 
-#: convertrules.py:2784
+#: convertrules.py:2785
 #, fuzzy
 msgid "re-definition of InnerStaffGroup"
 msgstr "%s:%d: 不正な文字列定義"
 
-#: convertrules.py:2789
+#: convertrules.py:2790
 #, fuzzy
 msgid "re-definition of InnerChoirStaff"
 msgstr "%s:%d: 不正な文字列定義"
 
-#: convertrules.py:2799
+#: convertrules.py:2800
 msgid "Syntax changes for \\addChordShape and \\chord-shape"
 msgstr ""
 
-#: convertrules.py:2804
+#: convertrules.py:2805
 msgid "stringTuning must be added to addChordShape call.\n"
 msgstr ""
 
-#: convertrules.py:2809
+#: convertrules.py:2810
 msgid "stringTuning must be added to chord-shape call.\n"
 msgstr ""
 
-#: convertrules.py:2815
+#: convertrules.py:2816
 #, fuzzy
 msgid "Remove oldaddlyrics"
 msgstr "%s を削除できません"
 
-#: convertrules.py:2819
+#: convertrules.py:2820
 msgid ""
 "oldaddlyrics is no longer supported. \n"
-"         Use addlyrics or lyrsicsto instead.\n"
+"         Use addlyrics or lyricsto instead.\n"
 msgstr ""
 
-#: convertrules.py:2825
+#: convertrules.py:2826
 msgid ""
 "keySignature property not reversed any more\n"
 "MIDI 47: orchestral strings -> orchestral harp"
 msgstr ""
 
-#: convertrules.py:2830
+#: convertrules.py:2831
 msgid "The alist for Staff.keySignature is no longer in reversed order.\n"
 msgstr ""
 
-#: convertrules.py:2836
+#: convertrules.py:2837
 msgid ""
 "\\bar \".\" now produces a thick barline\n"
 "ly:hairpin::after-line-breaking -> ly:spanner::kill-zero-spanned-time\n"
 "Dash parameters for slurs and ties are now in dash-definition"
 msgstr ""
 
-#: convertrules.py:2842
+#: convertrules.py:2843
 msgid "\\bar \".\" now produces a thick barline.\n"
 msgstr ""
 
-#: convertrules.py:2848
+#: convertrules.py:2849
 msgid "Dash parameters for slurs and ties are now in 'dash-definition.\n"
 msgstr ""
 
-#: convertrules.py:2853
+#: convertrules.py:2854
 msgid ""
 "Autobeaming rules have changed.  override-auto-beam-setting and\n"
 "revert-auto-beam-setting have been eliminated.\n"
@@ -568,25 +611,25 @@ msgid ""
 "template replaced by new `Dynamics' context."
 msgstr ""
 
-#: convertrules.py:2867
+#: convertrules.py:2868
 msgid "    Autobeam settings are now overriden with \\overrideBeamSettings.\n"
 msgstr ""
 
-#: convertrules.py:2872
+#: convertrules.py:2873
 msgid "    Autobeam settings are now reverted with \\revertBeamSettings.\n"
 msgstr ""
 
-#: convertrules.py:2878
+#: convertrules.py:2879
 msgid ""
 "    beatGrouping with a specified context must now be accomplished with\n"
 "   \\overrideBeamSettings.\n"
 msgstr ""
 
-#: convertrules.py:2884
+#: convertrules.py:2885
 msgid "alignment-offsets has been changed to alignment-distances: you must now specify the distances between staves rather than the offset of staves.\n"
 msgstr ""
 
-#: convertrules.py:2895
+#: convertrules.py:2896
 msgid ""
 "Remove obsolete engravers/translators: Note_swallow_translator,\n"
 "Rest_swallow_translator, Skip_event_swallow_translator, Swallow_engraver,\n"
@@ -594,188 +637,205 @@ msgid ""
 "New vertical spacing variables."
 msgstr ""
 
-#: convertrules.py:2926
+#: convertrules.py:2927
 msgid "Vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n"
 msgstr ""
 
-#: convertrules.py:2932
+#: convertrules.py:2933
 msgid "Unify fetaNumber and fetaDynamic encodings"
 msgstr ""
 
-#: convertrules.py:2937
+#: convertrules.py:2938
 msgid "\\RemoveEmpty*StaffContext -> \\*Staff \\RemoveEmptyStaves"
 msgstr ""
 
-#: convertrules.py:2948
+#: convertrules.py:2949
 msgid "\\cresc etc. are now postfix operators"
 msgstr ""
 
-#: convertrules.py:2960
+#: convertrules.py:2961
 msgid ""
 "Eliminate beamSettings, beatLength, \\setBeatGrouping, \\overrideBeamSettings and \\revertBeamSettings.\n"
 "\"accordion.accEtcbase\" -> \"accordion.etcbass\""
 msgstr ""
 
-#: convertrules.py:2978
+#: convertrules.py:2979
 msgid "Use \\set beamExceptions or \\overrideTimeSignatureSettings.\n"
 msgstr ""
 
-#: convertrules.py:2982
+#: convertrules.py:2983
 msgid "Use \\set beamExceptions or \\revertTimeSignatureSettings.\n"
 msgstr ""
 
-#: convertrules.py:2986
+#: convertrules.py:2987
 msgid "Use baseMoment, beatStructure, and beamExceptions.\n"
 msgstr ""
 
-#: convertrules.py:2990 convertrules.py:2994
+#: convertrules.py:2991 convertrules.py:2995
 #, fuzzy
 msgid "Use baseMoment and beatStructure.\n"
 msgstr "選択範囲の作成と使用(_S)"
 
-#: convertrules.py:2999
+#: convertrules.py:3000
 msgid ""
 "Woodwind diagrams: Move size, thickness, and graphic from argument list to properties.\n"
 "Deprecate negative dash-period for hidden lines: use #'style = #'none instead."
 msgstr ""
 
-#: convertrules.py:3004
+#: convertrules.py:3005
 msgid "Move size, thickness, and graphic to properties.  Argument should be just the key list.\n"
 msgstr ""
 
-#: convertrules.py:3012
+#: convertrules.py:3013
 msgid ""
 "Rename vertical spacing variables.\n"
 "Add fretboard-table argument to savePredefinedFretboard."
 msgstr ""
 
-#: convertrules.py:3030
+#: convertrules.py:3031
 msgid "Rename vertical spacing grob properties."
 msgstr ""
 
-#: convertrules.py:3046
+#: convertrules.py:3047
 msgid "Remove \\paper variables head-separation and foot-separation."
 msgstr ""
 
-#: convertrules.py:3050
+#: convertrules.py:3051
 msgid "Adjust settings for top-system-spacing instead.\n"
 msgstr ""
 
-#: convertrules.py:3054
+#: convertrules.py:3055
 msgid "Adjust settings for last-bottom-spacing instead.\n"
 msgstr ""
 
-#: convertrules.py:3060
+#: convertrules.py:3061
 msgid ""
 "Rename space to basic-distance in various spacing alists.\n"
 "Remove HarmonicParenthesesItem grob."
 msgstr ""
 
-#: convertrules.py:3067
+#: convertrules.py:3068
 #, fuzzy
 msgid "HarmonicParenthesesItem has been eliminated.\n"
 msgstr "鍵がパクられました"
 
-#: convertrules.py:3068
+#: convertrules.py:3069
 msgid "Harmonic parentheses are part of the TabNoteHead grob.\n"
 msgstr ""
 
-#: convertrules.py:3073
+#: convertrules.py:3074
 msgid "Remove context from overrideTimeSignatureSettings and revertTimeSignatureSettings.\n"
 msgstr ""
 
-#: convertrules.py:3080
+#: convertrules.py:3081
 msgid ""
 "Change stringTunings from a list of semitones to a list of pitches.\n"
 "Change tenor and baritone ukulele names in string tunings.\n"
 "Generate messages for manual conversion of vertical spacing if required."
 msgstr ""
 
-#: convertrules.py:3123
+#: convertrules.py:3124
 msgid "Vertical spacing changes might affect user-defined contexts."
 msgstr ""
 
-#: convertrules.py:3129
+#: convertrules.py:3130
 msgid "Replace bar-size with bar-extent."
 msgstr ""
 
-#: convertrules.py:3141
+#: convertrules.py:3142
 msgid "Woodwind diagrams: Changes to the clarinet diagram."
 msgstr ""
 
-#: convertrules.py:3145
+#: convertrules.py:3146
 msgid "Clarinet fingering changed to reflect actual anatomy of instrument.\n"
 msgstr ""
 
-#: convertrules.py:3155
+#: convertrules.py:3156
 msgid "Handling of non-automatic footnotes."
 msgstr ""
 
-#: convertrules.py:3159
+#: convertrules.py:3160
 msgid "If you are using non-automatic footnotes, make sure to set footnote-auto-numbering = ##f in the paper block.\n"
 msgstr ""
 
-#: convertrules.py:3164
+#: convertrules.py:3165
 msgid "Change in internal property for MultiMeasureRest"
 msgstr ""
 
-#: convertrules.py:3168
+#: convertrules.py:3169
 msgid "This internal property has been replaced by round-up-to-longer-rest, round-up-exceptions and usable-duration-logs.\n"
 msgstr ""
 
-#: convertrules.py:3173
+#: convertrules.py:3174
 msgid "Creation of a Flag grob and moving of certain Stem properties to this grob"
 msgstr ""
 
-#: convertrules.py:3209
+#: convertrules.py:3210
 msgid "consistent-broken-slope is now handled through the positions callback.\n"
 msgstr ""
 
-#: convertrules.py:3210
+#: convertrules.py:3211
 msgid "input/regression/beam-broken-classic.ly shows how broken beams are now handled.\n"
 msgstr ""
 
-#: book_base.py:26
-#, fuzzy, python-format
-msgid "file not found: %s"
-msgstr "ファイルがありません"
+#: convertrules.py:3372
+msgid "beamExceptions controls whole-measure beaming."
+msgstr ""
 
-#: book_base.py:164
-#, fuzzy
-msgid "Output function not implemented"
-msgstr "PASSMECH は完全には実装されていません"
+#: convertrules.py:3609
+msgid "Flag.transparent and Flag.color inherit from Stem"
+msgstr ""
+
+#: convertrules.py:3675
+msgid "Staff-padding now controls the distance to the baseline, not the nearest point."
+msgstr ""
+
+#: fontextract.py:25
+#, python-format
+msgid "Scanning %s"
+msgstr "%s をスキャン中"
+
+#: fontextract.py:70
+#, python-format
+msgid "Extracted %s"
+msgstr ""
+
+#: fontextract.py:85
+#, python-format
+msgid "Writing fonts to %s"
+msgstr "%s にフォントを書き込みます"
 
-#: lilylib.py:96
+#: lilylib.py:101
 #, fuzzy, python-format
 msgid "Setting loglevel to %s"
 msgstr "ドメインを`%s'へ設定しました\n"
 
-#: lilylib.py:99
+#: lilylib.py:104
 #, fuzzy, python-format
 msgid "Unknown or invalid loglevel '%s'"
 msgstr "非対応または不正なビット深度です"
 
-#: lilylib.py:128 warn.cc:211
-#, fuzzy, c-format, python-format
+#: lilylib.py:133 warn.cc:211
+#, c-format, python-format
 msgid "error: %s"
-msgstr " エラー: "
+msgstr " エラー: %s"
 
-#: lilylib.py:185
+#: lilylib.py:190
 #, python-format
 msgid "Processing %s.ly"
 msgstr "%s.ly を処理中です"
 
-#: lilylib.py:189 lilylib.py:250
+#: lilylib.py:194 lilylib.py:255
 #, fuzzy, python-format
 msgid "Invoking `%s'"
 msgstr "PGP 起動中..."
 
-#: lilylib.py:191 lilylib.py:252
+#: lilylib.py:196 lilylib.py:257
 #, fuzzy, python-format
 msgid "Running %s..."
 msgstr "実行中 "
 
-#: lilylib.py:328
+#: lilylib.py:333
 #, python-format
 msgid "Usage: %s"
 msgstr "利用法: %s"
@@ -832,441 +892,201 @@ msgstr ""
 msgid "Unable to find instrument for ID=%s\n"
 msgstr "%s: ARM グルー '%s' (`%s' 用) を見つけられません"
 
-#. Work around a texi2pdf bug: if LANG=C is not given, a broken regexp is
-#. used to detect relative/absolute paths, so the absolute path is not
-#. detected as such and this command fails:
-#: book_texinfo.py:206
-#, python-format
-msgid "Running texi2pdf on file %s to detect default page settings.\n"
-msgstr ""
-
-#: book_texinfo.py:228 book_latex.py:209
-msgid "Unable to auto-detect default settings:\n"
-msgstr "既定の設定を自動検出できません:\n"
+#: abc2ly.py:1389 convert-ly.py:85 lilypond-book.py:122 midi2ly.py:1044
+#, fuzzy, python-format
+msgid "%s [OPTION]... FILE"
+msgstr "オプション・ファイル「%s」: %s\n"
 
-#: book_texinfo.py:240 book_latex.py:221
+#: abc2ly.py:1390
 #, python-format
 msgid ""
-"Unable to auto-detect default settings:\n"
-"%s"
+"abc2ly converts ABC music files (see\n"
+"%s) to LilyPond input.\n"
 msgstr ""
-"既定の設定を自動検出できません:\n"
-"%s"
-
-#: book_latex.py:170
-msgid "cannot find \\begin{document} in LaTeX document"
-msgstr "LaTeX 文書の中に \\begin{document} がありません"
 
-#: book_latex.py:188
-#, python-format
-msgid "Running `%s' on file `%s' to detect default page settings.\n"
-msgstr ""
+#: abc2ly.py:1398 convert-ly.py:92 etf2ly.py:1208 lilypond-book.py:231
+#: midi2ly.py:1095 musicxml2ly.py:2590 main.cc:184
+msgid "show version number and exit"
+msgstr "バージョン情報を表示して終了します"
 
-#: musicxml2ly.py:228
-#, python-format
-msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored"
-msgstr ""
+#: abc2ly.py:1401 convert-ly.py:96 etf2ly.py:1204 lilypond-book.py:140
+#: midi2ly.py:1062 musicxml2ly.py:2572 main.cc:163
+msgid "show this help and exit"
+msgstr "このヘルプを表示して終了します"
 
-#: musicxml2ly.py:247 musicxml2ly.py:249
-#, fuzzy, python-format
-msgid "Unprocessed PartGroupInfo %s encountered"
-msgstr "ループしているリンクに遭遇しました"
+#: abc2ly.py:1404 etf2ly.py:1209 midi2ly.py:1071
+#, fuzzy
+msgid "write output to FILE"
+msgstr "  -o, --output-file=FILE      指定したファイルに出力\n"
 
-#: musicxml2ly.py:502
-#, python-format
-msgid "Encountered note at %s without type and duration (=%s)"
+#: abc2ly.py:1407
+msgid "be strict about success"
 msgstr ""
 
-#: musicxml2ly.py:522
-#, python-format
-msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration"
+#: abc2ly.py:1410
+msgid "preserve ABC's notion of beams"
 msgstr ""
 
-#: musicxml2ly.py:769
+#: abc2ly.py:1413
 #, fuzzy
-msgid "Unable to extract key signature!"
-msgstr "メタデータの値を設定できませんでした"
+msgid "suppress progress messages"
+msgstr "未知のシステムエラー"
 
-#: musicxml2ly.py:796
-#, python-format
-msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!"
-msgstr ""
+#. Translators, please translate this string as
+#. "Report bugs in English via %s",
+#. or if there is a LilyPond users list or forum in your language
+#. "Report bugs in English via %s or in YOUR_LANG via URI"
+#: abc2ly.py:1416 convert-ly.py:157 etf2ly.py:1218 lilypond-book.py:258
+#: midi2ly.py:1107 musicxml2ly.py:2674 main.cc:318
+#, c-format, python-format
+msgid "Report bugs via %s"
+msgstr "バグレポートは英語で %s まで"
 
-#: musicxml2ly.py:934
-#, fuzzy, python-format
-msgid "Encountered unprocessed marker %s\n"
-msgstr "ループしているリンクに遭遇しました"
+#: convert-ly.py:47
+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 ""
 
-#: musicxml2ly.py:1028
-#, fuzzy, python-format
-msgid "unknown span event %s"
-msgstr "MIDI イベントコントローラ"
+#: convert-ly.py:50
+msgid "If FILE is `-', read from standard input."
+msgstr ""
 
-#: musicxml2ly.py:1038
-#, fuzzy, python-format
-msgid "unknown span type %s for %s"
-msgstr "%s: 再配置タイプ %d (シンボル %s) が不明です"
+#: convert-ly.py:52 lilypond-book.py:82
+msgid "Examples:"
+msgstr "例:"
 
-#: musicxml2ly.py:1458
-#, fuzzy
-msgid "Unknown metronome mark, ignoring"
-msgstr "未知の拡張ヘッダキーワード `%s' を無視"
+#: convert-ly.py:79 etf2ly.py:1191 lilypond-book.py:115 midi2ly.py:81
+#, python-format
+msgid "Copyright (c) %s by"
+msgstr "Copyright (c) %s by"
 
-#. TODO: Implement the other (more complex) way for tempo marks!
-#: musicxml2ly.py:1463
-msgid "Metronome marks with complex relations (<metronome-note> in MusicXML) are not yet implemented."
+#: convert-ly.py:81 etf2ly.py:1193 lilypond-book.py:117 midi2ly.py:83
+msgid "Distributed under terms of the GNU General Public License."
 msgstr ""
 
-#: musicxml2ly.py:1665
-#, python-format
-msgid "Unable to convert chord type %s to lilypond."
+#: convert-ly.py:82 etf2ly.py:1194 lilypond-book.py:118 midi2ly.py:84
+msgid "It comes with NO WARRANTY."
 msgstr ""
 
-#: musicxml2ly.py:1814
-#, python-format
-msgid "drum %s type unknown, please add to instrument_drumtype_dict"
+#: convert-ly.py:100 convert-ly.py:141
+#, fuzzy
+msgid "VERSION"
+msgstr "%s ver.%s"
+
+#: convert-ly.py:102
+msgid "start from VERSION [default: \\version found in file]"
 msgstr ""
 
-#: musicxml2ly.py:1818
+#: convert-ly.py:105
 #, fuzzy
-msgid "cannot find suitable event"
-msgstr "'%s' の URL が見つかりません"
+msgid "edit in place"
+msgstr "ファイルをテキストエディタで編集する"
 
-#: musicxml2ly.py:1966
-#, python-format
-msgid "Negative skip %s (from position %s to %s)"
+#: convert-ly.py:109 lilypond-book.py:179 musicxml2ly.py:2627
+msgid "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS (default), DEBUG)"
 msgstr ""
 
-#: musicxml2ly.py:2107
-#, python-format
-msgid "Negative skip found: from %s to %s, difference is %s"
+#: convert-ly.py:111 lilypond-book.py:163 lilypond-book.py:181
+#: musicxml2ly.py:2629 main.cc:177
+msgid "LOGLEVEL"
+msgstr "LOGLEVEL"
+
+#: convert-ly.py:117
+msgid "do not add \\version command if missing"
 msgstr ""
 
-#: musicxml2ly.py:2188
+#: convert-ly.py:123
 #, fuzzy, python-format
-msgid "unexpected %s; expected %s or %s or %s"
-msgstr "\\が「a」「c」「i」の後に予期されます"
+msgid "force updating \\version number to %s"
+msgstr "バージョン番号を表示"
 
-#: musicxml2ly.py:2294
-msgid "Encountered closing slur, but no slur is open"
+#: convert-ly.py:129
+msgid "only update \\version number if file is modified"
 msgstr ""
 
-#: musicxml2ly.py:2297
-msgid "Cannot have two simultaneous (closing) slurs"
-msgstr ""
+#: convert-ly.py:135
+#, fuzzy, python-format
+msgid "show rules [default: -f 0, -t %s]"
+msgstr "自動"
 
-#: musicxml2ly.py:2306
-msgid "Cannot have a slur inside another slur"
-msgstr "スラーの中に別のスラーを含むことはできません"
+#: convert-ly.py:140
+#, fuzzy, python-format
+msgid "convert to VERSION [default: %s]"
+msgstr "既定の RGB カラープロファイルに変換"
 
-#: musicxml2ly.py:2309
-msgid "Cannot have two simultaneous slurs"
-msgstr "スラーを二つ同時に指定することはできません"
+#: convert-ly.py:147
+msgid "make a numbered backup [default: filename.ext~]"
+msgstr ""
 
-#: musicxml2ly.py:2443
-#, fuzzy, python-format
-msgid "cannot simultaneously have more than one mode: %s"
-msgstr "-anrw を2つ以上一緒に使用することはできません"
+#: convert-ly.py:152 etf2ly.py:1212 lilypond-book.py:234 midi2ly.py:1096
+#: main.cc:186
+msgid "show warranty and copyright"
+msgstr "保証と著作権について表示します"
 
-#: musicxml2ly.py:2551
+#: convert-ly.py:196
 #, fuzzy
-msgid "Converting to LilyPond expressions..."
-msgstr "å\92\8cé\9f³ã\81«LilyPond è¨\80èª\9eã\82\92追å\8a "
+msgid "Applying conversion: "
+msgstr "å¤\89æ\8f\9b対象:\n"
 
-#: musicxml2ly.py:2562
+#: convert-ly.py:215
 #, fuzzy
-msgid "musicxml2ly [OPTION]... FILE.xml"
-msgstr "Visio XFIG ファイル形式"
+msgid "Error while converting"
+msgstr "\"%s\" を読み込み中にエラーが発生しました"
 
-#: musicxml2ly.py:2564
-msgid ""
-"Convert MusicXML from FILE.xml to LilyPond input.\n"
-"If the given filename is -, musicxml2ly reads from the command line.\n"
+#: convert-ly.py:217
+msgid "Stopping at last successful rule"
 msgstr ""
 
-#: musicxml2ly.py:2570 midi2ly.py:1060 abc2ly.py:1387 lilypond-book.py:141
-#: convert-ly.py:92 etf2ly.py:1204 main.cc:153
-#, fuzzy
-msgid "show this help and exit"
-msgstr "  -h, --help                  このヘルプを表示して終了\n"
+#: convert-ly.py:256
+#, python-format
+msgid "Processing `%s'... "
+msgstr "`%s' を処理しています..."
 
-#: musicxml2ly.py:2574
-msgid ""
-"Copyright (c) 2005--2015 by\n"
-"    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
-"    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
-"    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
-msgstr ""
-
-#: musicxml2ly.py:2588 midi2ly.py:1091 abc2ly.py:1383 lilypond-book.py:232
-#: convert-ly.py:88 etf2ly.py:1208 main.cc:174
-#, fuzzy
-msgid "show version number and exit"
-msgstr "バージョン情報を表示して終了する"
-
-#: musicxml2ly.py:2594 midi2ly.py:1085 lilypond-book.py:224
-msgid "be verbose"
-msgstr "詳細な情報を表示します"
-
-#: musicxml2ly.py:2600
-msgid "use lxml.etree; uses less memory and cpu time"
-msgstr ""
-
-#: musicxml2ly.py:2606
-msgid "input file is a zip-compressed MusicXML file"
-msgstr ""
-
-#: musicxml2ly.py:2612
-msgid "convert pitches in relative mode (default)"
-msgstr ""
-
-#: musicxml2ly.py:2617
-msgid "convert pitches in absolute mode"
-msgstr ""
-
-#: musicxml2ly.py:2620
-#, fuzzy
-msgid "LANG"
-msgstr "HREF_LANG:"
-
-#: musicxml2ly.py:2622
-msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German"
-msgstr ""
-
-#: musicxml2ly.py:2625 lilypond-book.py:180 convert-ly.py:105
-msgid "Print log messages according to LOGLEVEL (NONE, ERROR, WARNING, PROGRESS (default), DEBUG)"
-msgstr ""
-
-#: musicxml2ly.py:2627 lilypond-book.py:164 lilypond-book.py:182
-#: convert-ly.py:107 main.cc:167
-msgid "LOGLEVEL"
-msgstr ""
-
-#: musicxml2ly.py:2636
-msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
-msgstr ""
-
-#: musicxml2ly.py:2642
-msgid "do not convert exact vertical positions of rests"
-msgstr ""
-
-#: musicxml2ly.py:2648
-msgid "do not convert the exact page layout and breaks"
-msgstr ""
-
-#: musicxml2ly.py:2654
-msgid "do not convert beaming information, use lilypond's automatic beaming instead"
-msgstr ""
-
-#: musicxml2ly.py:2657 midi2ly.py:1065 midi2ly.py:1070 etf2ly.py:1210
-#: main.cc:159 main.cc:171
-msgid "FILE"
-msgstr "FILE"
-
-#: musicxml2ly.py:2662
-msgid "set output filename to FILE, stdout if -"
-msgstr ""
-
-#: musicxml2ly.py:2668
-msgid "add midi-block to .ly file"
-msgstr ""
-
-#. Translators, please translate this string as
-#. "Report bugs in English via %s",
-#. or if there is a LilyPond users list or forum in your language
-#. "Report bugs in English via %s or in YOUR_LANG via URI"
-#: musicxml2ly.py:2672 midi2ly.py:1104 abc2ly.py:1396 lilypond-book.py:259
-#: convert-ly.py:146 etf2ly.py:1218 main.cc:285
-#, fuzzy, c-format, python-format
-msgid "Report bugs via %s"
-msgstr "バグレポートは %s まで\n"
-
-#: musicxml2ly.py:2752
-#, fuzzy, python-format
-msgid "unknown part in part-list: %s"
-msgstr "キーワード一覧の各項目:"
-
-#: musicxml2ly.py:2814
-msgid "Input is compressed, extracting raw MusicXML data from stdin"
-msgstr ""
-
-#: musicxml2ly.py:2827
+#: convert-ly.py:366
 #, python-format
-msgid "Input file %s is compressed, extracting raw MusicXML data"
-msgstr ""
-
-#: musicxml2ly.py:2857
-#, fuzzy
-msgid "Reading MusicXML from Standard input ..."
-msgstr "標準入力からパスワードを読み込む\n"
-
-#: musicxml2ly.py:2859
-#, fuzzy, python-format
-msgid "Reading MusicXML from %s ..."
-msgstr "「%s」からオプションを読み出します\n"
-
-#: musicxml2ly.py:2892
-#, fuzzy, python-format
-msgid "Output to `%s'"
-msgstr "%s へ出力リダイレクトされました\n"
+msgid "%s: Unable to open file"
+msgstr "'%s: ファイルをオープンできません"
 
-#: musicxml2ly.py:2962
+#: convert-ly.py:372
 #, fuzzy, python-format
-msgid "Unable to find input file %s"
-msgstr "ã\82¤ã\83³ã\82¯ã\83«ã\83¼ã\83\89ã\83\95ã\82¡ã\82¤ã\83«ã\81\8cè¦\8bã\81¤ã\81\8bã\82\8aã\81¾ã\81\9bã\82\93: \"%s\""
+msgid "%s: Unable to determine version.  Skipping"
+msgstr "ã\83­ã\83¼ã\82«ã\83«ã\83\8dã\83¼ã\83 ã\82\92決å®\9aã\81\99ã\82\8bã\81\93ã\81¨ã\81\8cã\81§ã\81\8dã\81¾ã\81\9bã\82\93"
 
-#: midi2ly.py:81 lilypond-book.py:116 convert-ly.py:75 etf2ly.py:1191
+#: convert-ly.py:378
 #, python-format
-msgid "Copyright (c) %s by"
-msgstr "Copyright (c) %s by"
-
-#: midi2ly.py:83 lilypond-book.py:118 convert-ly.py:77 etf2ly.py:1193
-msgid "Distributed under terms of the GNU General Public License."
-msgstr ""
-
-#: midi2ly.py:84 lilypond-book.py:119 convert-ly.py:78 etf2ly.py:1194
-msgid "It comes with NO WARRANTY."
-msgstr ""
-
-#: midi2ly.py:90
-msgid "warning: "
-msgstr "警告: "
-
-#: midi2ly.py:93 midi2ly.py:1121
-msgid "error: "
-msgstr "エラー: "
-
-#: midi2ly.py:94
-msgid "Exiting... "
-msgstr "終了します..."
-
-#: midi2ly.py:834
-msgid "found more than 5 voices on a staff, expect bad output"
+msgid ""
+"%s: Invalid version string `%s' \n"
+"Valid version strings consist of three numbers, separated by dots, e.g. `2.8.12'"
 msgstr ""
 
-#: midi2ly.py:1030
-#, fuzzy, python-format
-msgid "%s output to `%s'..."
-msgstr "%s へ出力リダイレクトされました\n"
-
-#: midi2ly.py:1042 abc2ly.py:1374 lilypond-book.py:123 convert-ly.py:81
-#, fuzzy, python-format
-msgid "%s [OPTION]... FILE"
-msgstr "オプション・ファイル「%s」: %s\n"
+#: convert-ly.py:384
+#, python-format
+msgid "There was %d error."
+msgid_plural "There were %d errors."
+msgstr[0] ""
+msgstr[1] ""
 
-#: midi2ly.py:1043
+#: etf2ly.py:1197
 #, fuzzy, python-format
-msgid "Convert %s to LilyPond input.\n"
-msgstr " "
-
-#: midi2ly.py:1048
-#, fuzzy
-msgid "print absolute pitches"
-msgstr "音程待ち"
-
-#: midi2ly.py:1050 midi2ly.py:1075
-msgid "DUR"
-msgstr "DUR"
-
-#: midi2ly.py:1051
-msgid "quantise note durations on DUR"
-msgstr ""
-
-#: midi2ly.py:1054
-#, fuzzy
-msgid "debug printing"
-msgstr "印刷機能を利用不可にする"
-
-#: midi2ly.py:1057
-#, fuzzy
-msgid "print explicit durations"
-msgstr "    非明示的メンバ\n"
-
-#: midi2ly.py:1062
-#, fuzzy
-msgid "prepend FILE to output"
-msgstr "  -o, --output-file=FILE      指定したファイルに出力\n"
-
-#: midi2ly.py:1066
-#, fuzzy
-msgid "set key: ALT=+sharps|-flats; MINOR=1"
-msgstr "調を設定: ACC +シャープ/-フラット :1 短調"
-
-#: midi2ly.py:1067
-#, fuzzy
-msgid "ALT[:MINOR]"
-msgstr "Major/Minor \t\t\t%d/%d\n"
-
-#: midi2ly.py:1069 abc2ly.py:1389 etf2ly.py:1209
-#, fuzzy
-msgid "write output to FILE"
-msgstr "  -o, --output-file=FILE      指定したファイルに出力\n"
-
-#: midi2ly.py:1072
-#, fuzzy
-msgid "preview of first 4 bars"
-msgstr "スクロールバーを表示(_B)"
-
-#: midi2ly.py:1074
-msgid "quantise note starts on DUR"
-msgstr ""
-
-#: midi2ly.py:1078
-#, fuzzy
-msgid "use s instead of r for rests"
-msgstr "グラデーションの代わりにパターンを輪郭に使う"
-
-#: midi2ly.py:1080
-#, fuzzy
-msgid "DUR*NUM/DEN"
-msgstr "書式: %s [p num] [-n] [パッチ]\n"
-
-#: midi2ly.py:1083
-msgid "allow tuplet durations DUR*NUM/DEN"
-msgstr ""
-
-#: midi2ly.py:1092 lilypond-book.py:235 convert-ly.py:141 etf2ly.py:1212
-#: main.cc:176
-msgid "show warranty and copyright"
-msgstr "保証と著作権について表示する"
-
-#: midi2ly.py:1095
-#, fuzzy
-msgid "treat every text as a lyric"
-msgstr "-a  --text  すべてテキストとして処理。"
-
-#: midi2ly.py:1098
-#, fuzzy
-msgid "Examples"
-msgstr "例:"
-
-#: midi2ly.py:1122
-msgid "no files specified on command line."
-msgstr ""
+msgid "%s [OPTION]... ETF-FILE"
+msgstr "使用法: %s [オプション] [ファイル]...\n"
 
-#: abc2ly.py:1375
-#, python-format
+#: etf2ly.py:1198
 msgid ""
-"abc2ly converts ABC music files (see\n"
-"%s) to LilyPond input.\n"
-msgstr ""
-
-#: abc2ly.py:1391
-msgid "be strict about success"
+"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.\n"
 msgstr ""
 
-#: abc2ly.py:1393
-msgid "preserve ABC's notion of beams"
-msgstr ""
+#: etf2ly.py:1210 midi2ly.py:1067 midi2ly.py:1072 musicxml2ly.py:2659
+#: main.cc:169 main.cc:181
+msgid "FILE"
+msgstr "FILE"
 
 #: lilypond-book.py:80
 msgid "Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document."
 msgstr ""
 
-#: lilypond-book.py:82 convert-ly.py:48
-msgid "Examples:"
-msgstr "例:"
-
 #: lilypond-book.py:87
 #, fuzzy
 msgid "BOOK"
@@ -1277,750 +1097,817 @@ msgstr "LDIF アドレス帳"
 msgid "Exiting (%d)..."
 msgstr "終了します (%d)..."
 
-#: lilypond-book.py:128
+#: lilypond-book.py:127
 #, fuzzy
 msgid "FILTER"
 msgstr " フィルタ "
 
-#: lilypond-book.py:131
+#: lilypond-book.py:130
 msgid "pipe snippets through FILTER [default: `convert-ly -n -']"
 msgstr ""
 
-#: lilypond-book.py:135
+#: lilypond-book.py:134
 msgid "use output format FORMAT (texi [default], texi-html, latex, html, docbook)"
 msgstr ""
 
-#: lilypond-book.py:136
+#: lilypond-book.py:135
 #, fuzzy
 msgid "FORMAT"
 msgstr "FORMAT"
 
-#: lilypond-book.py:143
+#: lilypond-book.py:142
 #, fuzzy
 msgid "add DIR to include path"
 msgstr "DIR を検索パスに追加"
 
-#: lilypond-book.py:144 lilypond-book.py:151 lilypond-book.py:170
-#: lilypond-book.py:188 lilypond-book.py:209 lilypond-book.py:215 main.cc:158
+#: lilypond-book.py:143 lilypond-book.py:150 lilypond-book.py:169
+#: lilypond-book.py:187 lilypond-book.py:208 lilypond-book.py:214 main.cc:168
 msgid "DIR"
 msgstr "DIR"
 
-#: lilypond-book.py:149
+#: lilypond-book.py:148
 msgid "format Texinfo output so that Info will look for images of music in DIR"
 msgstr ""
 
-#: lilypond-book.py:156
+#: lilypond-book.py:155
 #, fuzzy
 msgid "PAD"
 msgstr "PAD"
 
-#: lilypond-book.py:158
-msgid "pad left side of music to align music inspite of uneven bar numbers (in mm)"
+#: lilypond-book.py:157
+msgid "pad left side of music to align music in spite of uneven bar numbers (in mm)"
 msgstr ""
 
-#: lilypond-book.py:163
+#: lilypond-book.py:162
 msgid "Print lilypond log messages according to LOGLEVEL"
 msgstr ""
 
-#: lilypond-book.py:169
+#: lilypond-book.py:168
 msgid "write lily-XXX files to DIR, link into --output dir"
 msgstr ""
 
-#: lilypond-book.py:174
+#: lilypond-book.py:173
 msgid "Load the additional python PACKAGE (containing e.g. a custom output format)"
 msgstr ""
 
-#: lilypond-book.py:175
+#: lilypond-book.py:174
 #, fuzzy
 msgid "PACKAGE"
 msgstr "パッケージ"
 
-#: lilypond-book.py:187
+#: lilypond-book.py:186
 #, fuzzy
 msgid "write output to DIR"
 msgstr "  -o, --output-file=FILE      指定したファイルに出力\n"
 
-#: lilypond-book.py:192
+#: lilypond-book.py:191
 #, fuzzy
 msgid "COMMAND"
 msgstr "COMMAND"
 
-#: lilypond-book.py:193
+#: lilypond-book.py:192
 msgid "process ly_files using COMMAND FILE..."
 msgstr ""
 
-#: lilypond-book.py:198
+#: lilypond-book.py:197
 #, fuzzy
 msgid "Redirect the lilypond output"
 msgstr "%s: 制限されています: 出力をリダイレクト出来ません"
 
-#: lilypond-book.py:202
+#: lilypond-book.py:201
 msgid "Compile snippets in safe mode"
 msgstr ""
 
-#: lilypond-book.py:208
+#: lilypond-book.py:207
 msgid "do not fail if no lilypond output is found"
 msgstr ""
 
-#: lilypond-book.py:214
+#: lilypond-book.py:213
 msgid "do not fail if no PNG images are found for EPS files"
 msgstr ""
 
-#: lilypond-book.py:220
+#: lilypond-book.py:219
 msgid "write snippet output files with the same base name as their source file"
 msgstr ""
 
-#: lilypond-book.py:240
+#: lilypond-book.py:223 midi2ly.py:1090 musicxml2ly.py:2596
+msgid "be verbose"
+msgstr "詳細な情報を表示します"
+
+#: lilypond-book.py:239
 msgid ""
 "run executable PROG instead of latex, or in\n"
 "case --pdf option is set instead of pdflatex"
 msgstr ""
 
-#: lilypond-book.py:242 lilypond-book.py:247
+#: lilypond-book.py:241 lilypond-book.py:246
 #, fuzzy
 msgid "PROG"
 msgstr "PROG"
 
-#: lilypond-book.py:246
+#: lilypond-book.py:245
 msgid "run executable PROG instead of texi2pdf"
 msgstr ""
 
-#: lilypond-book.py:253
+#: lilypond-book.py:252
 msgid "create PDF files for use with PDFTeX"
 msgstr ""
 
-#: lilypond-book.py:456
+#: lilypond-book.py:463
 #, fuzzy
 msgid "Writing snippets..."
 msgstr "音楽スニペット"
 
-#: lilypond-book.py:461
+#: lilypond-book.py:468
 msgid "Processing..."
 msgstr "処理中..."
 
-#: lilypond-book.py:466
+#: lilypond-book.py:473
 msgid "All snippets are up to date..."
 msgstr ""
 
-#: lilypond-book.py:485
+#: lilypond-book.py:475
+#, fuzzy
+msgid "Linking files..."
+msgstr "音楽スニペット"
+
+#: lilypond-book.py:495
 #, fuzzy, python-format
 msgid "cannot determine format for: %s"
 msgstr "未サポートのWAVフォーマット %d: %s\n"
 
-#: lilypond-book.py:494
+#: lilypond-book.py:504
 #, python-format
 msgid "%s is up to date."
 msgstr "%s は更新済みです"
 
-#: lilypond-book.py:507
+#: lilypond-book.py:517
 #, python-format
 msgid "Writing `%s'..."
 msgstr "`%s' 書き込み中..."
 
-#: lilypond-book.py:568
+#: lilypond-book.py:580
 msgid "Output would overwrite input file; use --output."
 msgstr ""
 
-#: lilypond-book.py:572
+#: lilypond-book.py:584
 #, python-format
 msgid "Reading %s..."
 msgstr "%s 読み出し中..."
 
-#: lilypond-book.py:579
+#: lilypond-book.py:591
 #, fuzzy
 msgid "Dissecting..."
 msgstr "処理中..."
 
-#: lilypond-book.py:590
+#: lilypond-book.py:602
 #, python-format
 msgid "Compiling %s..."
 msgstr "%s をコンパイル中..."
 
-#: lilypond-book.py:598
+#: lilypond-book.py:610
 #, fuzzy, python-format
 msgid "Processing include: %s"
 msgstr "ウィンドウ飾りも含める"
 
-#: lilypond-book.py:609
+#: lilypond-book.py:621
 #, python-format
 msgid "Removing `%s'"
 msgstr "'%s' を削除しています"
 
-#: lilypond-book.py:676
+#: lilypond-book.py:727
 #, fuzzy, python-format
 msgid "Setting LilyPond's loglevel to %s"
 msgstr "和音にLilyPond 言語を追加"
 
-#: lilypond-book.py:680
+#: lilypond-book.py:731
 #, python-format
 msgid "Setting LilyPond's loglevel to %s (from environment variable LILYPOND_LOGLEVEL)"
 msgstr ""
 
-#: lilypond-book.py:683
+#: lilypond-book.py:734
 msgid "Setting LilyPond's output to --verbose, implied by lilypond-book's setting"
 msgstr ""
 
-#: convert-ly.py:46
-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 ""
-
-#: convert-ly.py:96 convert-ly.py:137
-#, fuzzy
-msgid "VERSION"
-msgstr "%s ver.%s"
+#: midi2ly.py:90
+msgid "warning: "
+msgstr "警告: "
 
-#: convert-ly.py:98
-msgid "start from VERSION [default: \\version found in file]"
-msgstr ""
+#: midi2ly.py:93 midi2ly.py:1124
+msgid "error: "
+msgstr "エラー: "
 
-#: convert-ly.py:101
-#, fuzzy
-msgid "edit in place"
-msgstr "ファイルをテキストエディタで編集する"
+#: midi2ly.py:94
+msgid "Exiting... "
+msgstr "終了します..."
 
-#: convert-ly.py:113
-msgid "do not add \\version command if missing"
+#: midi2ly.py:835
+msgid "found more than 5 voices on a staff, expect bad output"
 msgstr ""
 
-#: convert-ly.py:119
+#: midi2ly.py:1032
 #, fuzzy, python-format
-msgid "force updating \\version number to %s"
-msgstr "バージョン番号を表示"
-
-#: convert-ly.py:125
-msgid "only update \\version number if file is modified"
-msgstr ""
+msgid "%s output to `%s'..."
+msgstr "%s へ出力リダイレクトされました\n"
 
-#: convert-ly.py:131
+#: midi2ly.py:1045
 #, fuzzy, python-format
-msgid "show rules [default: -f 0, -t %s]"
-msgstr "自動"
-
-#: convert-ly.py:136
-#, fuzzy, python-format
-msgid "convert to VERSION [default: %s]"
-msgstr "既定の RGB カラープロファイルに変換"
+msgid "Convert %s to LilyPond input.\n"
+msgstr " "
 
-#: convert-ly.py:186
+#: midi2ly.py:1050
 #, fuzzy
-msgid "Applying conversion: "
-msgstr "変換対象:\n"
+msgid "print absolute pitches"
+msgstr "音程待ち"
 
-#: convert-ly.py:202
-#, fuzzy
-msgid "Error while converting"
-msgstr "\"%s\" を読み込み中にエラーが発生しました"
+#: midi2ly.py:1052 midi2ly.py:1080
+msgid "DUR"
+msgstr "DUR"
 
-#: convert-ly.py:204
-msgid "Stopping at last successful rule"
+#: midi2ly.py:1053
+msgid "quantise note durations on DUR"
 msgstr ""
 
-#: convert-ly.py:231
-#, python-format
-msgid "Processing `%s'... "
-msgstr "`%s' を処理しています..."
+#: midi2ly.py:1056
+#, fuzzy
+msgid "debug printing"
+msgstr "印刷機能を利用不可にする"
 
-#: convert-ly.py:338
-#, python-format
-msgid "%s: Unable to open file"
-msgstr "'%s: ファイルをオープンできません"
+#: midi2ly.py:1059
+#, fuzzy
+msgid "print explicit durations"
+msgstr "    非明示的メンバ\n"
 
-#: convert-ly.py:345
-#, fuzzy, python-format
-msgid "%s: Unable to determine version.  Skipping"
-msgstr "ローカルネームを決定することができません"
+#: midi2ly.py:1064
+#, fuzzy
+msgid "prepend FILE to output"
+msgstr "  -o, --output-file=FILE      指定したファイルに出力\n"
 
-#: convert-ly.py:350
-#, python-format
-msgid ""
-"%s: Invalid version string `%s' \n"
-"Valid version strings consist of three numbers, separated by dots, e.g. `2.8.12'"
-msgstr ""
+#: midi2ly.py:1068
+#, fuzzy
+msgid "set key: ALT=+sharps|-flats; MINOR=1"
+msgstr "調を設定: ACC +シャープ/-フラット :1 短調"
 
-#: etf2ly.py:1197
-#, fuzzy, python-format
-msgid "%s [OPTION]... ETF-FILE"
-msgstr "使用法: %s [オプション] [ファイル]...\n"
+#: midi2ly.py:1069
+#, fuzzy
+msgid "ALT[:MINOR]"
+msgstr "Major/Minor \t\t\t%d/%d\n"
 
-#: etf2ly.py:1198
-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.\n"
+#: midi2ly.py:1074
+#, fuzzy
+msgid "preview of first 4 bars"
+msgstr "スクロールバーを表示(_B)"
+
+#: midi2ly.py:1078
+msgid "suppress progress messages and warnings about excess voices"
 msgstr ""
 
-#: website_post.py:123
-#, fuzzy
-msgid "English"
-msgstr "英語"
+#: midi2ly.py:1079
+msgid "quantise note starts on DUR"
+msgstr ""
 
-#: website_post.py:126
+#: midi2ly.py:1083
 #, fuzzy
-msgid "Other languages"
-msgstr "多言語"
+msgid "use s instead of r for rests"
+msgstr "グラデーションの代わりにパターンを輪郭に使う"
 
-#: warn.cc:56
-#, fuzzy, c-format
-msgid "Log level set to %d\n"
-msgstr "デバッグレベルを <レベル> に設定します。"
+#: midi2ly.py:1085
+#, fuzzy
+msgid "DUR*NUM/DEN"
+msgstr "書式: %s [p num] [-n] [パッチ]\n"
 
-#: warn.cc:89
-#, c-format
-msgid "unknown log level `%s', using default (INFO)"
+#: midi2ly.py:1088
+msgid "allow tuplet durations DUR*NUM/DEN"
 msgstr ""
 
-#. Some expected warning was not triggered, so print out a warning.
-#: warn.cc:112
-#, fuzzy, c-format
-msgid "%d expected warning(s) not encountered: "
-msgstr "警告: $PATH が設定されていません"
+#: midi2ly.py:1098
+#, fuzzy
+msgid "treat every text as a lyric"
+msgstr "-a  --text  すべてテキストとして処理。"
 
-#: warn.cc:183
-#, c-format
-msgid "fatal error: %s"
-msgstr "致命的なエラー: %s"
+#: midi2ly.py:1101
+#, fuzzy
+msgid "Examples"
+msgstr "例:"
 
-#: warn.cc:192
-#, fuzzy, c-format
-msgid "suppressed programming error: %s"
-msgstr "未知のシステムエラー"
+#: midi2ly.py:1125
+msgid "no files specified on command line."
+msgstr ""
 
-#: warn.cc:197
-#, fuzzy, c-format
-msgid "programming error: %s"
-msgstr "プログラミングエラー"
+#: musicxml2ly.py:228
+#, python-format
+msgid "Encountered file created by %s, containing wrong beaming information. All beaming information in the MusicXML file will be ignored"
+msgstr ""
 
-#: warn.cc:198
-#, fuzzy
-msgid "continuing, cross fingers"
-msgstr "ã\82¯ã\83­ã\82¹ã\83\87ã\83\90ã\82¤ã\82¹ã\83ªã\83³ã\82¯"
+#: musicxml2ly.py:247 musicxml2ly.py:249
+#, fuzzy, python-format
+msgid "Unprocessed PartGroupInfo %s encountered"
+msgstr "ã\83«ã\83¼ã\83\97ã\81\97ã\81¦ã\81\84ã\82\8bã\83ªã\83³ã\82¯ã\81«é\81­é\81\87ã\81\97ã\81¾ã\81\97ã\81\9f"
 
-#: warn.cc:207
-#, fuzzy, c-format
-msgid "suppressed error: %s"
-msgstr "%s サブプロセス入出力エラー"
+#: musicxml2ly.py:500
+#, python-format
+msgid "Encountered note at %s without type and duration (=%s)"
+msgstr ""
 
-#: warn.cc:219
-#, fuzzy, c-format
-msgid "suppressed warning: %s"
-msgstr "警告: %sは%sより優先\n"
+#: musicxml2ly.py:520
+#, python-format
+msgid "Encountered rational duration with denominator %s, unable to convert to lilypond duration"
+msgstr ""
 
-#: getopt-long.cc:153
-#, c-format
-msgid "option `%s' requires an argument"
-msgstr "ã\82ªã\83\97ã\82·ã\83§ã\83³ `%s' ã\81«ã\81¯å¼\95æ\95°ã\81\8cå¿\85è¦\81ã\81§ã\81\99"
+#: musicxml2ly.py:767
+#, fuzzy
+msgid "Unable to extract key signature!"
+msgstr "ã\83¡ã\82¿ã\83\87ã\83¼ã\82¿ã\81®å\80¤ã\82\92設å®\9aã\81§ã\81\8dã\81¾ã\81\9bã\82\93ã\81§ã\81\97ã\81\9f"
 
-#: getopt-long.cc:157
-#, fuzzy, c-format
-msgid "option `%s' does not allow an argument"
-msgstr "オプション %s には '%s' ではなく整数の引数が必要です"
+#: musicxml2ly.py:794
+#, python-format
+msgid "unknown mode %s, expecting 'major' or 'minor' or a church mode!"
+msgstr ""
 
-#: getopt-long.cc:161
-#, c-format
-msgid "unrecognized option: `%s'"
-msgstr "認識できないオプション: `%s'"
+#: musicxml2ly.py:932
+#, fuzzy, python-format
+msgid "Encountered unprocessed marker %s\n"
+msgstr "ループしているリンクに遭遇しました"
 
-#: getopt-long.cc:167
-#, c-format
-msgid "invalid argument `%s' to option `%s'"
-msgstr "オプション `%2$s' に対する無効な引数 `%1$s'"
+#: musicxml2ly.py:1026
+#, fuzzy, python-format
+msgid "unknown span event %s"
+msgstr "MIDI イベントコントローラ"
 
-#: flag.cc:110
-#, fuzzy, c-format
-msgid "flag `%s' not found"
-msgstr "ブラシ '%s' が見つかりません。"
+#: musicxml2ly.py:1036
+#, fuzzy, python-format
+msgid "unknown span type %s for %s"
+msgstr "%s: 再配置タイプ %d (シンボル %s) が不明です"
 
-#: flag.cc:130
-#, fuzzy, c-format
-msgid "flag stroke `%s' not found"
-msgstr " 検索文字列が見付かりません "
+#: musicxml2ly.py:1456
+#, fuzzy
+msgid "Unknown metronome mark, ignoring"
+msgstr "未知の拡張ヘッダキーワード `%s' を無視"
 
-#: parse-scm.cc:112
-msgid "GUILE signaled an error for the expression beginning here"
+#. TODO: Implement the other (more complex) way for tempo marks!
+#: musicxml2ly.py:1461
+msgid "Metronome marks with complex relations (<metronome-note> in MusicXML) are not yet implemented."
 msgstr ""
 
-#: lily-lexer.cc:255
-msgid "include files are not allowed in safe mode"
+#: musicxml2ly.py:1663
+#, python-format
+msgid "Unable to convert chord type %s to lilypond."
 msgstr ""
 
-#: lily-lexer.cc:282
-#, fuzzy, c-format
-msgid "identifier name is a keyword: `%s'"
-msgstr "`%s' という名前は既に使用されています!"
-
-#: lily-lexer.cc:303 lily-lexer.cc:316
-#, c-format
-msgid "%s:EOF"
-msgstr "%s:EOF"
+#: musicxml2ly.py:1816
+#, python-format
+msgid "drum %s type unknown, please add to instrument_drumtype_dict"
+msgstr ""
 
-#. if we get to here, just put everything on one line
-#: constrained-breaking.cc:187 constrained-breaking.cc:205
+#: musicxml2ly.py:1820
 #, fuzzy
-msgid "cannot find line breaking that satisfies constraints"
-msgstr "その解決は制限を満たしません"
+msgid "cannot find suitable event"
+msgstr "'%s' の URL が見つかりません"
 
-#: context-property.cc:43
-msgid "need symbol arguments for \\override and \\revert"
+#: musicxml2ly.py:1968
+#, python-format
+msgid "Negative skip %s (from position %s to %s)"
 msgstr ""
 
-#: horizontal-bracket-engraver.cc:62
-#, fuzzy
-msgid "do not have that many brackets"
-msgstr "マッチしないパラグラフのみ表示します。"
+#: musicxml2ly.py:2109
+#, python-format
+msgid "Negative skip found: from %s to %s, difference is %s"
+msgstr ""
 
-#: horizontal-bracket-engraver.cc:71
-#, fuzzy
-msgid "conflicting note group events"
-msgstr "拍子の要求が競合します"
+#: musicxml2ly.py:2190
+#, fuzzy, python-format
+msgid "unexpected %s; expected %s or %s or %s"
+msgstr "\\が「a」「c」「i」の後に予期されます"
 
-#: new-fingering-engraver.cc:113
-msgid "cannot add text scripts to individual note heads"
+#: musicxml2ly.py:2296
+msgid "Encountered closing slur, but no slur is open"
 msgstr ""
 
-#: new-fingering-engraver.cc:265
-#, fuzzy
-msgid "no placement found for fingerings"
-msgstr "“%s”用の失効鍵が見つかりません\n"
+#: musicxml2ly.py:2299
+msgid "Cannot have two simultaneous (closing) slurs"
+msgstr ""
 
-#: new-fingering-engraver.cc:266
-#, fuzzy
-msgid "placing below"
-msgstr "ラインより下のピクセル数"
+#: musicxml2ly.py:2308
+msgid "Cannot have a slur inside another slur"
+msgstr "スラーの中に別のスラーを含むことはできません"
 
-#: translator-group.cc:188
-#, c-format
-msgid "cannot find: `%s'"
-msgstr "見つかりません: `%s'"
+#: musicxml2ly.py:2311
+msgid "Cannot have two simultaneous slurs"
+msgstr "スラーを二つ同時に指定することはできません"
 
-#: glissando-engraver.cc:158
-#, fuzzy
-msgid "unterminated glissando"
-msgstr "「s」コマンドが終了していません"
+#: musicxml2ly.py:2445
+#, fuzzy, python-format
+msgid "cannot simultaneously have more than one mode: %s"
+msgstr "-anrw を2つ以上一緒に使用することはできません"
 
-#: midi-item.cc:89
-#, fuzzy, c-format
-msgid "no such MIDI instrument: `%s'"
-msgstr "そのユーザーIDはありません。\n"
+#: musicxml2ly.py:2553
+#, fuzzy
+msgid "Converting to LilyPond expressions..."
+msgstr "和音にLilyPond 言語を追加"
 
-#: open-type-font.cc:44
-#, c-format
-msgid "cannot allocate %lu bytes"
-msgstr "%lu バイトを割当できません"
+#: musicxml2ly.py:2564
+#, fuzzy
+msgid "musicxml2ly [OPTION]... FILE.xml"
+msgstr "Visio XFIG ファイル形式"
 
-#: open-type-font.cc:48
-#, fuzzy, c-format
-msgid "cannot load font table: %s"
-msgstr "実行ファイルを動的にロードできません"
+#: musicxml2ly.py:2566
+msgid ""
+"Convert MusicXML from FILE.xml to LilyPond input.\n"
+"If the given filename is -, musicxml2ly reads from the command line.\n"
+msgstr ""
 
-#: open-type-font.cc:53
-#, c-format
-msgid "FreeType error: %s"
-msgstr "FreeType エラー: %s"
+#: musicxml2ly.py:2576
+msgid ""
+"Copyright (c) 2005--2015 by\n"
+"    Han-Wen Nienhuys <hanwen@xs4all.nl>,\n"
+"    Jan Nieuwenhuizen <janneke@gnu.org> and\n"
+"    Reinhold Kainhofer <reinhold@kainhofer.com>\n"
+msgstr ""
 
-#: open-type-font.cc:110
-#, c-format
-msgid "unsupported font format: %s"
-msgstr "非対応のフォント形式: %s"
+#: musicxml2ly.py:2602
+msgid "use lxml.etree; uses less memory and cpu time"
+msgstr ""
 
-#: open-type-font.cc:112
-#, fuzzy, c-format
-msgid "error reading font file %s: %s"
-msgstr "ファイルデスクリプタ %1 (%2)を読み込み中にエラー"
+#: musicxml2ly.py:2608
+msgid "input file is a zip-compressed MusicXML file"
+msgstr ""
 
-#: open-type-font.cc:187
-#, c-format
-msgid "FT_Get_Glyph_Name () Freetype error: %s"
+#: musicxml2ly.py:2614
+msgid "convert pitches in relative mode (default)"
 msgstr ""
 
-#: open-type-font.cc:318 pango-font.cc:189
-#, c-format
-msgid "FT_Get_Glyph_Name () error: %s"
+#: musicxml2ly.py:2619
+msgid "convert pitches in absolute mode"
 msgstr ""
 
-#: note-heads-engraver.cc:76
+#: musicxml2ly.py:2622
 #, fuzzy
-msgid "NoteEvent without pitch"
-msgstr "'~%c' が '~%c' に一致していません."
+msgid "LANG"
+msgstr "HREF_LANG:"
 
-#: skyline-pair.cc:131
-msgid "direction must not be CENTER in ly:skyline-pair::skyline"
+#: musicxml2ly.py:2624
+msgid "use LANG for pitch names, e.g. 'deutsch' for note names in German"
 msgstr ""
 
-#: hyphen-engraver.cc:104
-#, fuzzy
-msgid "removing unterminated hyphen"
-msgstr "%s:%d: 警告: 文字列に終端がありません"
+#: musicxml2ly.py:2638
+msgid "do not convert directions (^, _ or -) for articulations, dynamics, etc."
+msgstr ""
 
-#: hyphen-engraver.cc:118
-#, fuzzy
-msgid "unterminated hyphen; removing"
-msgstr "リモートファイル %s を削除中に %s "
+#: musicxml2ly.py:2644
+msgid "do not convert exact vertical positions of rests"
+msgstr ""
 
-#: output-def.cc:235
-msgid "margins do not fit with line-width, setting default values"
+#: musicxml2ly.py:2650
+msgid "do not convert the exact page layout and breaks"
 msgstr ""
 
-#: output-def.cc:242
-msgid "systems run off the page due to improper paper settings, setting default values"
+#: musicxml2ly.py:2656
+msgid "do not convert beaming information, use lilypond's automatic beaming instead"
 msgstr ""
 
-#: accidental.cc:200
-#, c-format
-msgid "Could not find glyph-name for alteration %s"
+#: musicxml2ly.py:2664
+msgid "set output filename to FILE, stdout if -"
 msgstr ""
 
-#: accidental.cc:215
-msgid "natural alteration glyph not found"
+#: musicxml2ly.py:2670
+msgid "activate midi-block"
 msgstr ""
 
-#: lyric-combine-music-iterator.cc:337
-#, fuzzy, c-format
-msgid "cannot find Voice `%s'"
-msgstr "ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ª %s ã\81\8cè¦\8bã\81¤ã\81\8bã\82\8aã\81¾ã\81\9bã\82\93\n"
+#: musicxml2ly.py:2754
+#, fuzzy, python-format
+msgid "unknown part in part-list: %s"
+msgstr "ã\82­ã\83¼ã\83¯ã\83¼ã\83\89ä¸\80覧ã\81®å\90\84é \85ç\9b®:"
 
-#: context.cc:148
-#, fuzzy, c-format
-msgid "cannot find or create new `%s'"
-msgstr "%s: 新しいデフォルトファイルを作れません\n"
+#: musicxml2ly.py:2816
+msgid "Input is compressed, extracting raw MusicXML data from stdin"
+msgstr ""
 
-#: context.cc:206
-#, fuzzy, c-format
-msgid "cannot find or create `%s' called `%s'"
-msgstr "`%2$s' に呼ばれた `%1$s' が見つからないか作れません"
+#: musicxml2ly.py:2829
+#, python-format
+msgid "Input file %s is compressed, extracting raw MusicXML data"
+msgstr ""
 
-#: context.cc:399
-#, fuzzy, c-format
-msgid "cannot find or create: `%s'"
-msgstr "警告: cat ディレクトリ %s を作成できません"
+#: musicxml2ly.py:2859
+#, fuzzy
+msgid "Reading MusicXML from Standard input ..."
+msgstr "標準入力からパスワードを読み込む\n"
 
-#: dispatcher.cc:82
-msgid "Event class should be a symbol"
-msgstr ""
+#: musicxml2ly.py:2861
+#, fuzzy, python-format
+msgid "Reading MusicXML from %s ..."
+msgstr "「%s」からオプションを読み出します\n"
 
-#: dispatcher.cc:89
-#, fuzzy, c-format
-msgid "Unknown event class %s"
-msgstr "未知の署名クラスです"
+#: musicxml2ly.py:2894
+#, fuzzy, python-format
+msgid "Output to `%s'"
+msgstr "%s へ出力リダイレクトされました\n"
 
-#: dispatcher.cc:171
-#, fuzzy, c-format
-msgid "Junking event: %s"
-msgstr "ã\82¤ã\83\99ã\83³ã\83\88ã\82\92横å\8f\96ã\82\8a(_G)"
+#: musicxml2ly.py:2964
+#, fuzzy, python-format
+msgid "Unable to find input file %s"
+msgstr "ã\82¤ã\83³ã\82¯ã\83«ã\83¼ã\83\89ã\83\95ã\82¡ã\82¤ã\83«ã\81\8cè¦\8bã\81¤ã\81\8bã\82\8aã\81¾ã\81\9bã\82\93: \"%s\""
 
-#: auto-change-iterator.cc:74 change-iterator.cc:72
-#, c-format
-msgid "cannot change, already in translator: %s"
-msgstr ""
+#: website_post.py:129
+#, fuzzy
+msgid "English"
+msgstr "英語"
 
-#: tie-engraver.cc:117
+#: website_post.py:132
 #, fuzzy
-msgid "unterminated tie"
-msgstr "タイの切替え"
+msgid "Other languages"
+msgstr "多言語"
 
-#: tie-engraver.cc:348
-msgid "lonely tie"
-msgstr "一つだけのタイ"
+#: website_post.py:133
+#, python-format
+msgid "About <a href=\"%s\">automatic language selection</a>."
+msgstr ""
 
-#: dynamic-engraver.cc:193
-#, fuzzy
-msgid "cannot find start of (de)crescendo"
-msgstr "(デ)クレッシェンドの始点が見つかりません"
+#: getopt-long.cc:153
+#, c-format
+msgid "option `%s' requires an argument"
+msgstr "オプション `%s' には引数が必要です"
 
-#: dynamic-engraver.cc:200
-msgid "already have a decrescendo"
-msgstr "デクレッシェンドが既にあります"
+#: getopt-long.cc:157
+#, c-format
+msgid "option `%s' does not allow an argument"
+msgstr "オプション `%s' には引数が不要です"
 
-#: dynamic-engraver.cc:202
-msgid "already have a crescendo"
-msgstr "クレッシェンドが既にあります"
+#: getopt-long.cc:161
+#, c-format
+msgid "unrecognized option: `%s'"
+msgstr "認識できないオプション: `%s'"
 
-#: dynamic-engraver.cc:205
-#, fuzzy
-msgid "cresc starts here"
-msgstr "ã\81\93ã\81\93ã\81«ã\83ªã\82¯ã\82¨ã\82¹ã\83\88ã\82\92ã\81©ã\81\86ã\81\9e"
+#: getopt-long.cc:167
+#, c-format
+msgid "invalid argument `%s' to option `%s'"
+msgstr "ã\82ªã\83\97ã\82·ã\83§ã\83³ `%2$s' ã\81«å¯¾ã\81\99ã\82\8bç\84¡å\8a¹ã\81ªå¼\95æ\95° `%1$s'"
 
-#: dynamic-engraver.cc:333
-msgid "unterminated (de)crescendo"
-msgstr "終端のない(デ)クレッシェンド"
+#: warn.cc:56
+#, c-format
+msgid "Log level set to %d\n"
+msgstr "ログレベルを %d にセットします\n"
 
-#: paper-score.cc:122 minimal-page-breaking.cc:40
-#, fuzzy
-msgid "Calculating line breaks..."
-msgstr "自発的休憩"
+#: warn.cc:89
+#, c-format
+msgid "unknown log level `%s', using default (INFO)"
+msgstr "ログレベル `%s' は不明です, デフォルト (INFO) を使います"
 
-#: paper-score.cc:134
-#, fuzzy, c-format
-msgid "Element count %d (spanners %d) "
-msgstr "ストリップのデータ量"
+#. Some expected warning was not triggered, so print out a warning.
+#: warn.cc:112
+#, c-format
+msgid "%d expected warning(s) not encountered: "
+msgstr "%d 個の予想された警告が発生していません:"
 
-#: paper-score.cc:138
+#: warn.cc:183
+#, c-format
+msgid "fatal error: %s"
+msgstr "致命的なエラー: %s"
+
+#: warn.cc:192
+#, c-format
+msgid "suppressed programming error: %s"
+msgstr "抑制されたプログラミングエラー: %s"
+
+#: warn.cc:197
+#, c-format
+msgid "programming error: %s"
+msgstr "プログラミングエラー: %s"
+
+#: warn.cc:198
 #, fuzzy
-msgid "Preprocessing graphical objects..."
-msgstr "オブジェクトが多すぎます"
+msgid "continuing, cross fingers"
+msgstr "クロスデバイスリンク"
+
+#: warn.cc:207
+#, c-format
+msgid "suppressed error: %s"
+msgstr "抑制されたエラー: %s"
 
-#: paper-score.cc:162 optimal-page-breaking.cc:208
-#: page-turn-page-breaking.cc:248
-#, fuzzy
-msgid "Drawing systems..."
-msgstr "KIllustrator 絵画"
+#: warn.cc:219
+#, c-format
+msgid "suppressed warning: %s"
+msgstr "抑制された警告: %s"
 
-#: mensural-ligature-engraver.cc:96
-msgid "ligature with less than 2 heads -> skipping"
+#: accidental-engraver.cc:180
+#, c-format
+msgid "accidental typesetting list must begin with context-name: %s"
 msgstr ""
 
-#: mensural-ligature-engraver.cc:123
-msgid "cannot determine pitch of ligature primitive -> skipping"
+#: accidental-engraver.cc:207
+#, c-format
+msgid "procedure or context-name expected for accidental rule, found %s"
 msgstr ""
 
-#: mensural-ligature-engraver.cc:137
-msgid "single note ligature - skipping"
+#: accidental.cc:141
+#, c-format
+msgid "Could not find glyph-name for alteration %s"
 msgstr ""
 
-#: mensural-ligature-engraver.cc:148
-msgid "prime interval within ligature -> skipping"
+#: accidental.cc:157
+msgid "natural alteration glyph not found"
 msgstr ""
 
-#: mensural-ligature-engraver.cc:159
-msgid "mensural ligature: duration none of Mx, L, B, S -> skipping"
+#: all-font-metrics.cc:159
+#, c-format
+msgid "cannot find font: `%s'"
+msgstr "フォントが見つかりません: `%s'"
+
+#: apply-context-iterator.cc:42
+#, fuzzy
+msgid "\\applycontext argument is not a procedure"
+msgstr "エラー: %s() の 第%d引数が文字列ではありません\n"
+
+#: arpeggio.cc:138
+msgid "no heads for arpeggio found?"
 msgstr ""
 
-#: mensural-ligature-engraver.cc:202
-msgid "semibrevis must be followed by another one -> skipping"
+#: axis-group-engraver.cc:149
+msgid "Axis_group_engraver: vertical group already has a parent"
 msgstr ""
 
-#: mensural-ligature-engraver.cc:212
-msgid ""
-"semibreves can only appear at the beginning of a ligature,\n"
-"and there may be only zero or two of them"
+#: axis-group-engraver.cc:150
+msgid "are there two Axis_group_engravers?"
 msgstr ""
 
-#: mensural-ligature-engraver.cc:232
-msgid ""
-"invalid ligatura ending:\n"
-"when the last note is a descending brevis,\n"
-"the penultimate note must be another one,\n"
-"or the ligatura must be LB or SSB"
+#: axis-group-engraver.cc:151
+#, fuzzy
+msgid "removing this vertical group"
+msgstr "このグループには %d 個のパッケージが含まれています。"
+
+#: axis-group-interface.cc:716
+#, c-format
+msgid "\"%s\" is not a valid outside-staff-placement-directive"
 msgstr ""
 
-#: mensural-ligature-engraver.cc:387
-msgid "unexpected case fall-through"
+#: axis-group-interface.cc:788
+msgid "an outside-staff object should have a direction, defaulting to up"
 msgstr ""
 
-#: piano-pedal-engraver.cc:279
-#, fuzzy, c-format
-msgid "expect 3 strings for piano pedals, found: %ld"
-msgstr "ピアノペダルの始点が見つかりません: `%s'"
+#: bar-check-iterator.cc:84
+#, c-format
+msgid "barcheck failed at: %s"
+msgstr "小節チェックが失敗: %s"
 
-#: piano-pedal-engraver.cc:294 piano-pedal-engraver.cc:305
-#: piano-pedal-performer.cc:104
-#, fuzzy, c-format
-msgid "cannot find start of piano pedal: `%s'"
-msgstr "ピアノペダルの始点が見つかりません: `%s'"
+#: beam-engraver.cc:148
+msgid "already have a beam"
+msgstr "既に連桁があります"
 
-#: piano-pedal-engraver.cc:340
-#, fuzzy, c-format
-msgid "cannot find start of piano pedal bracket: `%s'"
-msgstr "ピアノペダルの始点が見つかりません: `%s'"
+#: beam-engraver.cc:235
+msgid "unterminated beam"
+msgstr "終端のない連桁"
 
-#: input.cc:138 source-file.cc:178 source-file.cc:193
-msgid "position unknown"
-msgstr "位置が判りません"
+#: beam-engraver.cc:282 chord-tremolo-engraver.cc:149
+msgid "stem must have Rhythmic structure"
+msgstr "符尾はリズム構造を持たねばなりません"
 
-#: stem.cc:128
+#: beam-engraver.cc:293
 #, fuzzy
-msgid "weird stem size, check for narrow beams"
-msgstr "変な符尾のサイズ -- 細い鈎のチェックをして下さい"
+msgid "stem does not fit in beam"
+msgstr "符尾が連桁の中におさまりません"
 
-#: relative-octave-check.cc:49
-#, fuzzy
-msgid "Failed octave check, got: "
-msgstr "シンボリックリンク %s のチェックに失敗しました: %s"
+#: beam-engraver.cc:294
+msgid "beam was started here"
+msgstr "連桁はここから開始されました"
 
-#: translator-ctors.cc:65
-#, c-format
-msgid "unknown translator: `%s'"
-msgstr "判らないトランスレータ: `%s'"
+#. We are completely screwed.
+#: beam-quanting.cc:850
+msgid "no viable initial configuration found: may not find good beam slope"
+msgstr ""
 
-#: ligature-engraver.cc:104 ligature-bracket-engraver.cc:72
-#, fuzzy
-msgid "cannot find start of ligature"
-msgstr "'%s' の URL が見つかりません"
+#: beam.cc:183
+msgid "removing beam with no stems"
+msgstr ""
 
-#: ligature-engraver.cc:109
-#, fuzzy
-msgid "no right bound"
-msgstr "境界 Import ディレクトリ"
+#: change-iterator.cc:34
+#, fuzzy, c-format
+msgid "cannot change `%s' to `%s'"
+msgstr "警告: %s に変更できません.\n"
 
-#: ligature-engraver.cc:131 ligature-bracket-engraver.cc:85
+#. FIXME: constant error message.
+#: change-iterator.cc:67
 #, fuzzy
-msgid "already have a ligature"
-msgstr "AE 合字 Æ"
+msgid "cannot find context to switch to"
+msgstr "実効ユーザID を %ld に変更できません: %s\n"
 
-#: ligature-engraver.cc:140
-#, fuzzy
-msgid "no left bound"
-msgstr "リソースに空きがありません"
+#. No enclosing context was found because the iterator's immediate
+#. context is the kind that was sought.
+#. We could change the current translator's id, but that would make
+#. errors hard to catch.
+#.
+#. last->translator_id_string () = get_change
+#. ()->change_to_id_string ();
+#: change-iterator.cc:78
+#, c-format
+msgid "not changing to same context type: %s"
+msgstr ""
 
-#: ligature-engraver.cc:184
+#. FIXME: incomprehensible message
+#: change-iterator.cc:82
+msgid "none of these in my family"
+msgstr "ファミリの中にありません"
+
+#: chord-tremolo-engraver.cc:88
 #, fuzzy
-msgid "unterminated ligature"
-msgstr "AE 合字 Æ"
+msgid "No tremolo to end"
+msgstr "ファイルの末尾に追加"
 
-#: ligature-engraver.cc:211
-msgid "ignoring rest: ligature may not contain rest"
-msgstr ""
+#: chord-tremolo-engraver.cc:109
+msgid "unterminated chord tremolo"
+msgstr "終端のないコードトレモロ"
 
-#: ligature-engraver.cc:212
-#, fuzzy
-msgid "ligature was started here"
-msgstr "鈎はここから開始されました"
+#: clef.cc:65
+#, fuzzy, c-format
+msgid "clef `%s' not found"
+msgstr "ブラシ '%s' が見つかりません。"
 
-#: tuplet-engraver.cc:110
+#: cluster.cc:120
+#, fuzzy, c-format
+msgid "unknown cluster style `%s'"
+msgstr "名前復元 (demangle) の方式 `%s' が不明です"
+
+#: cluster.cc:157
 #, fuzzy
-msgid "No tuplet to end"
-msgstr "ファイルの末尾に追加"
+msgid "junking empty cluster"
+msgstr "警告: $PATH が定義されていません"
 
-#: ttf.cc:480 ttf.cc:528
+#: coherent-ligature-engraver.cc:110
 #, c-format
-msgid "font index %d too large for font `%s', using index 0"
+msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
 msgstr ""
 
-#: ttf.cc:512 ttf.cc:562
-msgid "font index must be non-negative, using index 0"
-msgstr ""
+#: constrained-breaking.cc:187 constrained-breaking.cc:206
+#, fuzzy
+msgid "cannot find line breaking that satisfies constraints"
+msgstr "その解決は制限を満たしません"
 
-#: multi-measure-rest.cc:140
-msgid "usable-duration-logs must be a non-empty list.  Falling back to whole rests."
+#: context-property.cc:46
+msgid "need symbol arguments for \\override and \\revert"
 msgstr ""
 
-#: partial-iterator.cc:45
-msgid "trying to use \\partial after the start of a piece"
+#: context.cc:144
+#, fuzzy, c-format
+msgid "cannot find or create new `%s'"
+msgstr "%s: 新しいデフォルトファイルを作れません\n"
+
+#: context.cc:223
+#, fuzzy, c-format
+msgid "cannot find or create `%s' called `%s'"
+msgstr "`%2$s' に呼ばれた `%1$s' が見つからないか作れません"
+
+#: context.cc:416
+#, fuzzy, c-format
+msgid "cannot find or create: `%s'"
+msgstr "警告: cat ディレクトリ %s を作成できません"
+
+#: context.cc:430
+#, fuzzy, c-format
+msgid "cannot find or create new Bottom = \"%s\""
+msgstr "%s: 新しいデフォルトファイルを作れません\n"
+
+#: custos.cc:87
+#, fuzzy, c-format
+msgid "custos `%s' not found"
+msgstr "ブラシ '%s' が見つかりません。"
+
+#: dispatcher.cc:82
+msgid "Event class should be a list"
 msgstr ""
 
-#: minimal-page-breaking.cc:44
-#, fuzzy
-msgid "Calculating page breaks..."
-msgstr "自発的休憩"
+#: dispatcher.cc:165
+#, fuzzy, c-format
+msgid "Junking event: %s"
+msgstr "イベントを横取り(_G)"
 
-#: vaticana-ligature-engraver.cc:400
-#, c-format
-msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style"
+#: dispatcher.cc:279
+msgid "Attempting to remove nonexisting listener."
 msgstr ""
 
-#: vaticana-ligature-engraver.cc:736
-#, c-format
-msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul"
+#: dispatcher.cc:305
+msgid "Already listening to dispatcher, ignoring request"
 msgstr ""
 
-#: paper-book.cc:214
+#: dots.cc:48
+#, fuzzy, c-format
+msgid "dot `%s' not found"
+msgstr "ブラシ '%s' が見つかりません。"
+
+#: dynamic-engraver.cc:169
 #, c-format
-msgid "program option -dprint-pages not supported by backend `%s'"
+msgid ""
+"unknown crescendo style: %s\n"
+"defaulting to hairpin."
 msgstr ""
 
-#: paper-book.cc:233
-#, c-format
-msgid "program option -dpreview not supported by backend `%s'"
+#: dynamic-engraver.cc:234 slur-proto-engraver.cc:119
+#, fuzzy, c-format
+msgid "unterminated %s"
+msgstr "「s」コマンドが終了していません"
+
+#. No explicit dynamic script events have occurred yet, but there is
+#. nevertheless a dynamic spanner.  Initialize last_volume_ to a
+#. value within the available range.
+#: dynamic-performer.cc:129
+msgid "(De)crescendo with unspecified starting volume in MIDI."
 msgstr ""
 
 #: episema-engraver.cc:75
@@ -2038,109 +1925,162 @@ msgstr "'%s' の URL が見つかりません"
 msgid "unterminated episema"
 msgstr "「s」コマンドが終了していません"
 
-#: score-engraver.cc:78
+#: extender-engraver.cc:169 extender-engraver.cc:178
+msgid "unterminated extender"
+msgstr "終端のないエクステンダ"
+
+#: flag.cc:133
 #, fuzzy, c-format
-msgid "cannot find `%s'"
-msgstr "見つかりません: `%s'"
+msgid "flag `%s' not found"
+msgstr "ブラシ '%s' が見つかりません。"
+
+#: flag.cc:153
+#, fuzzy, c-format
+msgid "flag stroke `%s' not found"
+msgstr " 検索文字列が見付かりません "
+
+#: font-config-scheme.cc:151 font-config.cc:82
+#, c-format
+msgid "failed adding font directory: %s"
+msgstr "フォントディレクトリの追加に失敗しました: %s"
+
+#: font-config-scheme.cc:153 font-config.cc:84
+#, c-format
+msgid "Adding font directory: %s"
+msgstr "フォントディレクトリを追加しています: %s"
+
+#: font-config-scheme.cc:167
+#, c-format
+msgid "failed adding font file: %s"
+msgstr "フォントファイルの追加に失敗しました: %s"
+
+#: font-config-scheme.cc:169
+#, c-format
+msgid "Adding font file: %s"
+msgstr "フォントファイルを追加しています: %s"
+
+#: font-config.cc:38
+msgid "Initializing FontConfig..."
+msgstr "FontConfig 初期化中..."
+
+#: font-config.cc:70
+#, c-format
+msgid "failed to add fontconfig configuration file `%s'"
+msgstr "fontconfig 設定ファイルの追加に失敗しました: %s"
+
+#: font-config.cc:73
+#, c-format
+msgid "Adding fontconfig configuration file: %s"
+msgstr "fontconfig 設定ファイルを追加しています: %s"
+
+#: font-config.cc:86
+msgid "Building font database..."
+msgstr "フォントデータベースを構築しています"
+
+#: footnote-engraver.cc:87
+msgid "Must be footnote-event."
+msgstr ""
+
+#: general-scheme.cc:403
+#, fuzzy, c-format
+msgid "failed redirecting stderr to `%s'"
+msgstr ""
+"\n"
+"%s を受信しました、%s に出力をリダイレクトします。\n"
+
+#: general-scheme.cc:482 output-ps.scm:48
+msgid "Found infinity or nan in output.  Substituting 0.0"
+msgstr ""
+
+#: glissando-engraver.cc:158
+#, fuzzy
+msgid "unterminated glissando"
+msgstr "「s」コマンドが終了していません"
 
-#: score-engraver.cc:80
-msgid "Music font has not been installed properly."
-msgstr ""
+#: global-context-scheme.cc:95 global-context-scheme.cc:113
+#, fuzzy
+msgid "no music found in score"
+msgstr " %s に特定のエントリーは見つかりませんでした "
 
-#: score-engraver.cc:82
-#, fuzzy, c-format
-msgid "Search path `%s'"
-msgstr "検索パス            : %s\n"
+#: global-context-scheme.cc:103
+msgid "Interpreting music..."
+msgstr "楽曲を解釈中..."
 
-#: score-engraver.cc:84
-msgid "Aborting"
-msgstr "終了します"
+#: global-context-scheme.cc:125
+#, c-format
+msgid "elapsed time: %.2f seconds"
+msgstr "経過時間: %.2f 秒"
 
-#: performance.cc:54
-#, fuzzy
-msgid "Track..."
-msgstr "トラックのピーク"
+#: gregorian-ligature-engraver.cc:70
+#, c-format
+msgid "\\%s ignored"
+msgstr "\\%s を無視しました"
 
-#: performance.cc:82
+#: gregorian-ligature-engraver.cc:75
 #, fuzzy, c-format
-msgid "MIDI output to `%s'..."
-msgstr "%s へ出力リダイレクトされました\n"
-
-#: note-collision.cc:504
-#, fuzzy
-msgid "ignoring too many clashing note columns"
-msgstr "釣り合わない音符が多すぎます。それらを無視します。"
+msgid "implied \\%s added"
+msgstr "「追加済」を表示"
 
-#. fixme: be more verbose.
-#: volta-engraver.cc:111
-#, fuzzy
-msgid "cannot end volta spanner"
-msgstr "%s: 省略記号の範囲の終わりに`%s'がありません"
+#. ligature may not start with 2nd head of pes or flexa
+#: gregorian-ligature-engraver.cc:224
+msgid "cannot apply `\\~' on first head of ligature"
+msgstr ""
 
-#: volta-engraver.cc:121
-msgid "already have a volta spanner, ending that one prematurely"
+#. (pitch == prev_pitch)
+#: gregorian-ligature-engraver.cc:236
+msgid "cannot apply `\\~' on heads with identical pitch"
 msgstr ""
 
-#: volta-engraver.cc:125
-#, fuzzy
-msgid "also already have an ended spanner"
-msgstr "既に鈎があります"
+#: grob-interface.cc:68
+#, c-format
+msgid "Unknown interface `%s'"
+msgstr "`%s' は未知のインタフェースです"
 
-#: volta-engraver.cc:126
-#, fuzzy
-msgid "giving up"
+#: grob-interface.cc:79
+#, c-format
+msgid "Grob `%s' has no interface for property `%s'"
 msgstr ""
-"中止しました。\n"
-"\n"
 
-#: page-layout-problem.cc:709
-msgid "cannot fit music on page: ragged-spacing was requested, but page was compressed"
+#: grob-property.cc:33
+#, c-format
+msgid "%d: %s"
 msgstr ""
 
-#: page-layout-problem.cc:712
+#: grob.cc:492
 #, c-format
-msgid "cannot fit music on page: overflow is %f"
+msgid "ignored infinite %s-offset"
 msgstr ""
 
-#: page-layout-problem.cc:714
-#, fuzzy
-msgid "compressing music to fit"
-msgstr "画像に高さを合わせる(_F)"
-
-#: page-layout-problem.cc:1176
-msgid "staff-affinities should only decrease"
+#: hairpin.cc:60
+msgid "Asking for broken bound padding at a non-broken bound."
 msgstr ""
 
-#: apply-context-iterator.cc:42
+#: hairpin.cc:257
 #, fuzzy
-msgid "\\applycontext argument is not a procedure"
-msgstr "エラー: %s() の 第%d引数が文字列ではありません\n"
+msgid "decrescendo too small"
+msgstr "時刻が小さすぎます"
 
-#. FIXME: constant error message.
-#: mark-engraver.cc:157
+#: horizontal-bracket-engraver.cc:62
 #, fuzzy
-msgid "rehearsalMark must have integer value"
-msgstr "%sの値は整数でなければなりません"
-
-#: mark-engraver.cc:163
-msgid "mark label must be a markup object"
-msgstr ""
+msgid "do not have that many brackets"
+msgstr "マッチしないパラグラフのみ表示します。"
 
-#: stem-engraver.cc:105
+#: horizontal-bracket-engraver.cc:71
 #, fuzzy
-msgid "tremolo duration is too long"
-msgstr "diversion パスが長すぎます"
+msgid "conflicting note group events"
+msgstr "拍子の要求が競合します"
 
-#: stem-engraver.cc:157
-#, fuzzy, c-format
-msgid "adding note head to incompatible stem (type = %d/%d)"
-msgstr "矛盾した符尾へ符頭を追加します (タイプ = %d)"
+#: hyphen-engraver.cc:104
+#, fuzzy
+msgid "removing unterminated hyphen"
+msgstr "%s:%d: 警告: 文字列に終端がありません"
 
-#: stem-engraver.cc:160
-msgid "maybe input should specify polyphonic voices"
-msgstr ""
+#: hyphen-engraver.cc:118
+#, fuzzy
+msgid "unterminated hyphen; removing"
+msgstr "リモートファイル %s を削除中に %s "
 
-#: includable-lexer.cc:71 lily-guile.cc:91 lily-parser-scheme.cc:108
+#: includable-lexer.cc:71 lily-guile.cc:92 lily-parser-scheme.cc:108
 #, fuzzy, c-format
 msgid "cannot find file: `%s'"
 msgstr "ファイルが見つかりません"
@@ -2150,217 +2090,158 @@ msgstr "ファイルが見つかりません"
 msgid "(search path: `%s')"
 msgstr "(検索パス: `%s')"
 
-#: relocate.cc:52
-#, fuzzy, c-format
-msgid "Setting %s to %s"
-msgstr "ドメインを`%s'へ設定しました\n"
+#: input.cc:138 source-file.cc:180 source-file.cc:195
+msgid "position unknown"
+msgstr "位置が判りません"
 
-#. this warning should only be printed in debug mode!
-#: relocate.cc:73
-#, fuzzy, c-format
-msgid "no such file: %s for %s"
-msgstr "出力ファイル用の名前がありません"
+#: key-engraver.cc:197
+#, fuzzy
+msgid "Incomplete keyAlterationOrder for key signature"
+msgstr "メタデータの値を設定できませんでした"
 
-#. this warning should only be printed in debug mode!
-#. this warning should only be printed in debug mode
-#: relocate.cc:84 relocate.cc:102
+#: key-signature-interface.cc:77
 #, fuzzy, c-format
-msgid "no such directory: %s for %s"
-msgstr "そのようなファイルやディレクトリはありません"
-
-#: relocate.cc:93
-#, c-format
-msgid "%s=%s (prepend)\n"
-msgstr ""
+msgid "No glyph found for alteration: %s"
+msgstr "“%s”用の失効鍵が見つかりません\n"
 
-#: relocate.cc:124
-#, c-format
-msgid "not relocating, no %s/ or current/ found under %s"
-msgstr ""
+#: key-signature-interface.cc:87
+#, fuzzy
+msgid "alteration not found"
+msgstr "ブラシ '%s' が見つかりません。"
 
-#: relocate.cc:134
-#, c-format
-msgid "Relocation: compile datadir=%s, new datadir=%s"
-msgstr ""
+#: ligature-bracket-engraver.cc:72 ligature-engraver.cc:109
+#, fuzzy
+msgid "cannot find start of ligature"
+msgstr "'%s' の URL が見つかりません"
 
-#: relocate.cc:146
-#, fuzzy, c-format
-msgid "Relocation: framework_prefix=%s"
-msgstr "おかしな名前空間の接頭子"
+#: ligature-bracket-engraver.cc:85 ligature-engraver.cc:136
+#, fuzzy
+msgid "already have a ligature"
+msgstr "AE 合字 Æ"
 
-#: relocate.cc:186
-#, fuzzy, c-format
-msgid "Relocation: is absolute: argv0=%s\n"
-msgstr "ファイル名 \"%s\" は絶対パスではありません"
+#: ligature-engraver.cc:114
+#, fuzzy
+msgid "no right bound"
+msgstr "境界 Import ディレクトリ"
 
-#: relocate.cc:192
-#, c-format
-msgid "Relocation: from cwd: argv0=%s\n"
-msgstr ""
+#: ligature-engraver.cc:145
+#, fuzzy
+msgid "no left bound"
+msgstr "リソースに空きがありません"
 
-#: relocate.cc:208
-#, fuzzy, c-format
-msgid ""
-"Relocation: from PATH=%s\n"
-"argv0=%s"
-msgstr "このテキストレイヤーからパスを作成します"
+#: ligature-engraver.cc:189
+#, fuzzy
+msgid "unterminated ligature"
+msgstr "AE 合字 Æ"
 
-#: relocate.cc:235
-msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
+#: ligature-engraver.cc:216
+msgid "ignoring rest: ligature may not contain rest"
 msgstr ""
 
-#: relocate.cc:360
-#, fuzzy, c-format
-msgid "Relocation file: %s"
-msgstr "HTML ファイル (*.html)|*.html"
-
-#: relocate.cc:364 source-file.cc:65
-#, fuzzy, c-format
-msgid "cannot open file: `%s'"
-msgstr " ファイル '%s' を開けません "
-
-#: relocate.cc:394
-#, fuzzy, c-format
-msgid "Unknown relocation command %s"
-msgstr "不明なビルトインコマンド '%s'\n"
-
-#: note-column.cc:135
-msgid "cannot have note heads and rests together on a stem"
-msgstr ""
+#: ligature-engraver.cc:217
+#, fuzzy
+msgid "ligature was started here"
+msgstr "鈎はここから開始されました"
 
-#: beam.cc:180
-msgid "removing beam with no stems"
-msgstr ""
+#: lily-guile.cc:94
+#, c-format
+msgid "(load path: `%s')"
+msgstr "(読込パス: `%s')"
 
-#: staff-performer.cc:257
-msgid "MIDI channel wrapped around"
+#: lily-guile.cc:413
+#, c-format
+msgid "cannot find property type-check for `%s' (%s)."
 msgstr ""
 
-#: staff-performer.cc:258
+#: lily-guile.cc:416
 #, fuzzy
-msgid "remapping modulo 16"
-msgstr "Functionキー 16"
-
-#: dots.cc:48
-#, fuzzy, c-format
-msgid "dot `%s' not found"
-msgstr "ブラシ '%s' が見つかりません。"
+msgid "perhaps a typing error?"
+msgstr "未知のシステムエラー"
 
-#: font-config.cc:38
+#: lily-guile.cc:423
 #, fuzzy
-msgid "Initializing FontConfig..."
-msgstr "ã\82¹ã\83\88ã\83ªã\83¼ã\83 ã\81®å\88\9dæ\9c\9få\8c\96中"
+msgid "skipping assignment"
+msgstr "ã\81¨ã\81«ã\81\8bã\81\8fã\83­ã\82°ã\82¤ã\83³"
 
-#: font-config.cc:53 font-config-scheme.cc:151
-#, fuzzy, c-format
-msgid "failed adding font directory: %s"
-msgstr "ディレクトリの追加が失敗しました: %s (対象: %s) (%d)"
+#: lily-guile.cc:442
+#, c-format
+msgid "type check for `%s' failed; value `%s' must be of type `%s'"
+msgstr ""
 
-#: font-config.cc:55 font-config-scheme.cc:153
-#, fuzzy, c-format
-msgid "Adding font directory: %s"
-msgstr "フォントファイルを追加しています: %s"
+#. Uh oh.  unsmob<T> delivered 0, yet
+#. unsmob<T> delivers true.  This means that unsmob<T> is a
+#. matching check from a base class of T, but var is of an
+#. incompatible derived type.
+#: lily-guile.cc:462
+msgid "Wrong kind of "
+msgstr ""
 
-#: font-config.cc:58
-#, fuzzy
-msgid "Building font database..."
-msgstr "タグのデータベースを構築しています"
+#: lily-lexer.cc:251
+msgid "include files are not allowed in safe mode"
+msgstr ""
 
-#: change-iterator.cc:34
+#: lily-lexer.cc:278
 #, fuzzy, c-format
-msgid "cannot change `%s' to `%s'"
-msgstr "警告: %s に変更できません.\n"
-
-#. FIXME: constant error message.
-#: change-iterator.cc:93
-#, fuzzy
-msgid "cannot find context to switch to"
-msgstr "実効ユーザID を %ld に変更できません: %s\n"
+msgid "identifier name is a keyword: `%s'"
+msgstr "`%s' という名前は既に使用されています!"
 
-#. We could change the current translator's id, but that would make
-#. errors hard to catch.
-#.
-#. last->translator_id_string () = get_change
-#. ()->change_to_id_string ();
-#: change-iterator.cc:102
+#: lily-lexer.cc:299 lily-lexer.cc:312
 #, c-format
-msgid "not changing to same context type: %s"
-msgstr ""
-
-#. FIXME: uncomprehensable message
-#: change-iterator.cc:106
-msgid "none of these in my family"
-msgstr "ファミリの中にありません"
+msgid "%s:EOF"
+msgstr "%s:EOF"
 
-#: slur.cc:438
+#: lily-modules.cc:81
 #, c-format
-msgid "Ignoring grob for slur: %s. avoid-slur not set?"
+msgid "Uninitialized variable `%s' in module (%s)"
 msgstr ""
 
-#: source-file.cc:85
+#: lily-parser-scheme.cc:80
 #, fuzzy, c-format
-msgid "expected to read %d characters, got %d"
-msgstr ""
-"読み込むファイルまたは\n"
-"使用する文字列"
+msgid "Changing working directory to: `%s'"
+msgstr "作業ディレクトリを '%s' に変更できません"
 
-#. find out the ideal number of pages
-#: optimal-page-breaking.cc:62
-#, fuzzy
-msgid "Finding the ideal number of pages..."
-msgstr "印刷するページ数"
+#: lily-parser-scheme.cc:84
+#, fuzzy, c-format
+msgid "unable to change directory to: `%s'"
+msgstr "ディレクトリーを %s に変更できません"
 
-#: optimal-page-breaking.cc:85
-msgid "could not satisfy systems-per-page and page-count at the same time, ignoring systems-per-page"
-msgstr ""
+#: lily-parser-scheme.cc:99
+#, fuzzy, c-format
+msgid "cannot find init file: `%s'"
+msgstr " ヘルプファイルでノード %s を見付けることができません "
 
-#: optimal-page-breaking.cc:105
-#, fuzzy
-msgid "Fitting music on 1 page..."
-msgstr "このページで %d 個見つかりました"
+#: lily-parser-scheme.cc:117
+#, c-format
+msgid "Processing `%s'"
+msgstr "`%s' を処理しています"
 
-#: optimal-page-breaking.cc:107
-#, fuzzy, c-format
-msgid "Fitting music on %d pages..."
-msgstr "MoH サーバ (Music on Hold)"
+#: lily-parser-scheme.cc:210
+msgid "ly:parser-parse-string is only valid with a new parser.  Use ly:parser-include-string instead."
+msgstr ""
 
-#: optimal-page-breaking.cc:109
-#, c-format
-msgid "Fitting music on %d or %d pages..."
+#: lily-parser-scheme.cc:241
+msgid "ly:parse-string-expression is only valid with a new parser.  Use ly:parser-include-string instead."
 msgstr ""
 
-#: optimal-page-breaking.cc:119 optimal-page-breaking.cc:173
-#, fuzzy, c-format
-msgid "trying %d systems"
-msgstr "ディレクトリ %s の試行中"
+#: lily-parser.cc:106
+msgid "Parsing..."
+msgstr "構文解析中..."
 
-#: optimal-page-breaking.cc:138 optimal-page-breaking.cc:201
+#: lookup.cc:178
 #, c-format
-msgid "best score for this sys-count: %f"
+msgid "Not drawing a box with negative dimension, %.2f by %.2f."
 msgstr ""
 
-#: new-dynamic-engraver.cc:168
-#, c-format
-msgid ""
-"unknown crescendo style: %s\n"
-"defaulting to hairpin."
+#: lyric-combine-music-iterator.cc:204
+msgid "argument of \\lyricsto should contain Lyrics context"
 msgstr ""
 
-#: new-dynamic-engraver.cc:233
+#: lyric-combine-music-iterator.cc:344
 #, fuzzy, c-format
-msgid "unterminated %s"
-msgstr "「s」コマンドが終了していません"
-
-#: hairpin.cc:263
-#, fuzzy
-msgid "decrescendo too small"
-msgstr "時刻が小さすぎます"
-
-#: extender-engraver.cc:169 extender-engraver.cc:178
-msgid "unterminated extender"
-msgstr "終端のないエクステンダ"
+msgid "cannot find %s `%s'"
+msgstr "見つかりません: `%s'"
 
-#: main.cc:101
+#: main.cc:106
 #, fuzzy, c-format
 msgid ""
 "This program is free software.  It is covered by the GNU General Public\n"
@@ -2377,7 +2258,7 @@ msgstr ""
 "これを改変したり、複製を配布したりする事は歓迎されます。\n"
 "`--warranty' オプション付きで起動すると、より詳細な情報が得られます。\n"
 
-#: main.cc:107
+#: main.cc:112
 #, fuzzy
 msgid ""
 "    This program is free software; you can redistribute it and/or\n"
@@ -2422,107 +2303,121 @@ msgstr ""
 "です(COPYING ファイルを参照)。そうでない場合は、Free Software Foundation,\n"
 "Inc., 675 Mass Ave, Cambridge, MA 02139, USA に手紙を書いてください。\n"
 
-#: main.cc:141
-#, fuzzy
+#: main.cc:150
 msgid "SYM[=VAL]"
-msgstr "円錐形 (対称)"
+msgstr "SYM[=VAL]"
 
-#: main.cc:142
+#: main.cc:151
 msgid ""
 "set Scheme option SYM to VAL (default: #t).\n"
 "Use -dhelp for help."
 msgstr ""
+"Scheme オプション SYM を VAL に\n"
+"セットします(デフォルト: #t).\n"
+"-dhelp でヘルプを表示します."
 
-#: main.cc:146
-#, fuzzy
+#: main.cc:155
 msgid "EXPR"
-msgstr "test [表現]"
+msgstr "EXPR"
 
-#: main.cc:146
-#, fuzzy
+#: main.cc:155
 msgid "evaluate scheme code"
-msgstr "Scheme ã\82½ã\83¼ã\82¹ã\82³ã\83¼ã\83\89"
+msgstr "Scheme ã\82³ã\83¼ã\83\89ã\82\92è©\95価ã\81\97ã\81¾ã\81\99"
 
 #. Bug in option parser: --output =foe is taken as an abbreviation
 #. for --output-format.
-#: main.cc:149
-#, fuzzy
+#: main.cc:158
 msgid "FORMATs"
-msgstr "%s: 形式を照合します:"
+msgstr "FORMATs"
 
-#: main.cc:149
+#: main.cc:158
 msgid "dump FORMAT,...  Also as separate options:"
 msgstr ""
+"FORMAT,... を吐き出します.\n"
+"また個別のオプションとして:"
 
-#: main.cc:150
-#, fuzzy
+#: main.cc:159
 msgid "generate PDF (default)"
-msgstr "自動"
+msgstr "PDF を生成します(デフォルト)"
 
-#: main.cc:151
-#, fuzzy
+#: main.cc:160
 msgid "generate PNG"
-msgstr "PNG 画像"
+msgstr "PNG を生成します"
 
-#: main.cc:152
-#, fuzzy
+#: main.cc:161
 msgid "generate PostScript"
-msgstr "PostScript ã\83\89ã\82­ã\83¥ã\83¡ã\83³ã\83\88"
+msgstr "PostScript ã\82\92ç\94\9fæ\88\90ã\81\97ã\81¾ã\81\99"
 
-#: main.cc:155
-#, fuzzy
+#: main.cc:162
+msgid "generate big PDF files"
+msgstr "大きい PDF ファイルを生成します"
+
+#: main.cc:165
 msgid "FIELD"
-msgstr "<フィールド>,<フィールド>,..."
+msgstr "FIELD"
 
-#: main.cc:155
+#: main.cc:165
 msgid ""
 "dump header field FIELD to file\n"
 "named BASENAME.FIELD"
 msgstr ""
+"ヘッダ フィールドをファイル\n"
+"BASENAME.FIELD に吐き出します"
 
-#: main.cc:158
+#: main.cc:168
 msgid "add DIR to search path"
-msgstr "DIR を検索パスに追加"
+msgstr "DIR を検索パスに追加します"
 
-#: main.cc:159
+#: main.cc:169
 msgid "use FILE as init file"
-msgstr "FILE を初期化ファイルとして使用"
+msgstr "FILE を初期化ファイルとして使用します"
 
-#: main.cc:162
-#, fuzzy
+#: main.cc:172
 msgid "USER, GROUP, JAIL, DIR"
-msgstr "ユーザがグループにありません"
+msgstr "USER, GROUP, JAIL, DIR"
 
-#: main.cc:162
+#: main.cc:172
 msgid ""
 "chroot to JAIL, become USER:GROUP\n"
 "and cd into DIR"
 msgstr ""
+"JAIL に chroot, USER:GROUP になり\n"
+"DIR に cd します"
 
-#: main.cc:167
+#: main.cc:177
 msgid ""
 "print log messages according to LOGLEVEL.  Possible values are:\n"
 "NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (default) and DEBUG."
 msgstr ""
+"LOGLEVEL に応じたログメッセージを\n"
+"出力します. 取り得る値は:\n"
+"NONE, ERROR, WARNING, BASIC, PROGRESS, INFO (デフォルト) および DEBUG."
 
-#: main.cc:171
+#: main.cc:181
 msgid "write output to FILE (suffix will be added)"
-msgstr ""
+msgstr "FILE に出力します(拡張子が追加されます)"
 
-#: main.cc:172
+#: main.cc:182
 msgid "relocate using directory of lilypond program"
 msgstr ""
+"lilypond プログラムのディレクトリで\n"
+"再配置します"
 
-#: main.cc:173
+#: main.cc:183
 msgid "no progress, only error messages (equivalent to loglevel=ERROR)"
 msgstr ""
+"進捗メッセージを表示せず\n"
+"エラーメッセージのみ表示します\n"
+"(loglevel=ERROR と同じ)"
 
-#: main.cc:175
+#: main.cc:185
 msgid "be verbose (equivalent to loglevel=DEBUG)"
 msgstr ""
+"メッセージを冗長にします\n"
+"(loglevel=DEBUG と同じ)"
 
 #. Do not update the copyright years here, run `make grand-replace'
-#: main.cc:242
+#: main.cc:264
 #, fuzzy, c-format
 msgid ""
 "Copyright (c) %s by\n"
@@ -2533,1259 +2428,1707 @@ msgstr ""
 "%s, %s 他.\n"
 
 #. No version number or newline here.  It confuses help2man.
-#: main.cc:269
-#, fuzzy, c-format
+#: main.cc:302
+#, c-format
 msgid "Usage: %s [OPTION]... FILE..."
-msgstr "使用法: %s [オプション] [ファイル]...\n"
+msgstr "使用法: %s [オプション]... FILE..."
 
-#: main.cc:271
-#, fuzzy
+#: main.cc:304
 msgid "Typeset music and/or produce MIDI from FILE."
-msgstr "ファイルの楽曲を組版したり、MIDI 演奏したりする"
+msgstr "FILE から楽譜を組版したり MIDI を生成したりします."
 
-#: main.cc:273
+#: main.cc:306
 msgid "LilyPond produces beautiful music notation."
-msgstr ""
+msgstr "LilyPond は美しい楽譜を生成します."
 
-#: main.cc:275
-#, fuzzy, c-format
+#: main.cc:308
+#, c-format
 msgid "For more information, see %s"
-msgstr "より詳しい情報は %1 を参照してください"
+msgstr "より詳しい情報は, %s を参照してください"
 
-#: main.cc:277
+#: main.cc:310
 msgid "Options:"
 msgstr "オプション:"
 
-#: main.cc:331
+#: main.cc:377
 #, c-format
 msgid "expected %d arguments with jail, found: %u"
 msgstr ""
 
-#: main.cc:345
+#: main.cc:391
 #, fuzzy, c-format
 msgid "no such user: %s"
 msgstr "%s: そのようなユーザは存在しません"
 
-#: main.cc:347
+#: main.cc:393
 #, c-format
 msgid "cannot get user id from user name: %s: %s"
 msgstr ""
 
-#: main.cc:362
+#: main.cc:408
 #, fuzzy, c-format
 msgid "no such group: %s"
 msgstr "-group: グループ名がない"
 
-#: main.cc:364
+#: main.cc:410
 #, c-format
 msgid "cannot get group id from group name: %s: %s"
 msgstr ""
 
-#: main.cc:372
+#: main.cc:418
 #, fuzzy, c-format
 msgid "cannot chroot to: %s: %s"
 msgstr ""
-"\"%s\" へ chdir できません \n"
-" %s "
+"\"%s\" へ chdir できません \n"
+" %s "
+
+#: main.cc:425
+#, fuzzy, c-format
+msgid "cannot change group id to: %d: %s"
+msgstr "ID を root へ変更できません。\n"
+
+#: main.cc:431
+#, fuzzy, c-format
+msgid "cannot change user id to: %d: %s"
+msgstr "ID を root へ変更できません。\n"
+
+#: main.cc:437
+#, fuzzy, c-format
+msgid "cannot change working directory to: %s: %s"
+msgstr "作業ディレクトリを '%s' に変更できません"
+
+#: main.cc:826
+#, fuzzy, c-format
+msgid "exception caught: %s"
+msgstr "シグナルを受け取りました"
+
+#. FIXME: constant error message.
+#: mark-engraver.cc:150
+#, fuzzy
+msgid "rehearsalMark must have integer value"
+msgstr "%sの値は整数でなければなりません"
+
+#: mark-engraver.cc:156
+msgid "mark label must be a markup object"
+msgstr ""
+
+#: mensural-ligature-engraver.cc:100
+msgid "ligature with less than 2 heads -> skipping"
+msgstr ""
+
+#: mensural-ligature-engraver.cc:127
+msgid "cannot determine pitch of ligature primitive -> skipping"
+msgstr ""
+
+#: mensural-ligature-engraver.cc:141
+msgid "single note ligature - skipping"
+msgstr ""
+
+#: mensural-ligature-engraver.cc:152
+msgid "prime interval within ligature -> skipping"
+msgstr ""
+
+#: mensural-ligature-engraver.cc:163
+msgid "mensural ligature: duration none of Mx, L, B, S -> skipping"
+msgstr ""
+
+#: mensural-ligature-engraver.cc:206
+msgid "semibrevis must be followed by another one -> skipping"
+msgstr ""
+
+#: mensural-ligature-engraver.cc:216
+msgid ""
+"semibreves can only appear at the beginning of a ligature,\n"
+"and there may be only zero or two of them"
+msgstr ""
+
+#: mensural-ligature-engraver.cc:236
+msgid ""
+"invalid ligatura ending:\n"
+"when the last note is a descending brevis,\n"
+"the penultimate note must be another one,\n"
+"or the ligatura must be LB or SSB"
+msgstr ""
+
+#: mensural-ligature-engraver.cc:396
+msgid "unexpected case fall-through"
+msgstr ""
+
+#: midi-control-function-performer.cc:107 staff-performer.cc:153
+#, c-format
+msgid "ignoring out-of-range value change for MIDI property `%s'"
+msgstr ""
+
+#: midi-item.cc:93
+#, fuzzy, c-format
+msgid "no such MIDI instrument: `%s'"
+msgstr "そのユーザーIDはありません。\n"
+
+#: midi-item.cc:179
+msgid "Time signature with more than 255 beats.  Truncating"
+msgstr ""
+
+#: midi-stream.cc:38
+#, fuzzy, c-format
+msgid "cannot open for write: %s: %s"
+msgstr "%s を読み書きモードで開けません\n"
+
+#: midi-stream.cc:54
+#, fuzzy, c-format
+msgid "cannot write to file: `%s'"
+msgstr ""
+"ファイル %s に書き込めません:\n"
+"%s\n"
+
+#: minimal-page-breaking.cc:40 paper-score.cc:116
+#, fuzzy
+msgid "Calculating line breaks..."
+msgstr "自発的休憩"
+
+#: minimal-page-breaking.cc:44
+#, fuzzy
+msgid "Calculating page breaks..."
+msgstr "自発的休憩"
+
+#: multi-measure-rest.cc:152
+msgid "usable-duration-logs must be a non-empty list.  Falling back to whole rests."
+msgstr ""
+
+#: music.cc:150
+#, c-format
+msgid "octave check failed; expected \"%s\", found: \"%s\""
+msgstr ""
+
+#: new-fingering-engraver.cc:113
+msgid "cannot add text scripts to individual note heads"
+msgstr ""
+
+#: new-fingering-engraver.cc:269
+#, fuzzy
+msgid "no placement found for fingerings"
+msgstr "“%s”用の失効鍵が見つかりません\n"
+
+#: new-fingering-engraver.cc:270
+#, fuzzy
+msgid "placing below"
+msgstr "ラインより下のピクセル数"
+
+#: note-collision.cc:510
+msgid "this Voice needs a \\voiceXx or \\shiftXx setting"
+msgstr ""
+
+#: note-column.cc:150
+msgid "cannot have note heads and rests together on a stem"
+msgstr ""
+
+#: note-head.cc:95
+#, c-format
+msgid "none of note heads `%s' or `%s' found"
+msgstr ""
+
+#: note-heads-engraver.cc:76
+#, fuzzy
+msgid "NoteEvent without pitch"
+msgstr "'~%c' が '~%c' に一致していません."
+
+#: open-type-font.cc:45
+#, c-format
+msgid "cannot allocate %lu bytes"
+msgstr "%lu バイトを割当できません"
+
+#: open-type-font.cc:49
+#, fuzzy, c-format
+msgid "cannot load font table: %s"
+msgstr "実行ファイルを動的にロードできません"
+
+#: open-type-font.cc:54
+#, c-format
+msgid "FreeType error: %s"
+msgstr "FreeType エラー: %s"
+
+#: open-type-font.cc:115
+#, c-format
+msgid "unsupported font format: %s"
+msgstr "非対応のフォント形式: %s"
+
+#: open-type-font.cc:117
+#, fuzzy, c-format
+msgid "error reading font file %s: %s"
+msgstr "ファイルデスクリプタ %1 (%2)を読み込み中にエラー"
+
+#: open-type-font.cc:192
+#, c-format
+msgid "FT_Get_Glyph_Name () Freetype error: %s"
+msgstr ""
+
+#: open-type-font.cc:340 pango-font.cc:258
+#, c-format
+msgid "FT_Get_Glyph_Name () error: %s"
+msgstr ""
+
+#. find out the ideal number of pages
+#: optimal-page-breaking.cc:62
+msgid "Finding the ideal number of pages..."
+msgstr "理想的なページ数を見つけています..."
+
+#: optimal-page-breaking.cc:94
+msgid "could not satisfy systems-per-page and page-count at the same time, ignoring systems-per-page"
+msgstr ""
+
+#: optimal-page-breaking.cc:114
+msgid "Fitting music on 1 page..."
+msgstr "楽譜を 1 ページにしています..."
+
+#: optimal-page-breaking.cc:116
+#, fuzzy, c-format
+msgid "Fitting music on %d pages..."
+msgstr "楽譜を %d ページにしています..."
+
+#: optimal-page-breaking.cc:118
+#, c-format
+msgid "Fitting music on %d or %d pages..."
+msgstr "楽譜を %d または %d ページにしています..."
+
+#: optimal-page-breaking.cc:128 optimal-page-breaking.cc:181
+#, fuzzy, c-format
+msgid "trying %d systems"
+msgstr "ディレクトリ %s の試行中"
+
+#: optimal-page-breaking.cc:147 optimal-page-breaking.cc:209
+#, c-format
+msgid "best score for this sys-count: %f"
+msgstr ""
+
+#: optimal-page-breaking.cc:216 page-turn-page-breaking.cc:249
+#: paper-score.cc:156
+msgid "Drawing systems..."
+msgstr "描画しています..."
+
+#: output-def.cc:229
+msgid "margins do not fit with line-width, setting default values"
+msgstr ""
+
+#: output-def.cc:236
+msgid "systems run off the page due to improper paper settings, setting default values"
+msgstr ""
+
+#: page-breaking.cc:276
+msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set"
+msgstr ""
+
+#: page-breaking.cc:281
+msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values"
+msgstr ""
+
+#: page-breaking.cc:636
+#, c-format
+msgid "page %d has been compressed"
+msgstr ""
 
-#: main.cc:379
-#, fuzzy, c-format
-msgid "cannot change group id to: %d: %s"
-msgstr "ID を root へ変更できません。\n"
+#: page-layout-problem.cc:400
+msgid "A page layout problem has been initiated that cannot accommodate footnotes."
+msgstr ""
 
-#: main.cc:385
-#, fuzzy, c-format
-msgid "cannot change user id to: %d: %s"
-msgstr "ID を root へ変更できません。\n"
+#: page-layout-problem.cc:729
+msgid "ragged-bottom was specified, but page must be compressed"
+msgstr ""
 
-#: main.cc:391
-#, fuzzy, c-format
-msgid "cannot change working directory to: %s: %s"
-msgstr "作業ディレクトリを '%s' に変更できません"
+#: page-layout-problem.cc:732
+#, c-format
+msgid "compressing over-full page by %.1f staff-spaces"
+msgstr ""
 
-#: main.cc:639
-#, fuzzy, c-format
-msgid "exception caught: %s"
-msgstr "シグナルを受け取りました"
+#: page-layout-problem.cc:1197
+msgid "staff-affinities should only decrease"
+msgstr ""
 
-#: page-turn-page-breaking.cc:168
+#: page-turn-page-breaking.cc:169
 #, fuzzy, c-format
 msgid "page-turn-page-breaking: breaking from %d to %d"
 msgstr "左から右に回転"
 
-#: page-turn-page-breaking.cc:217
+#: page-turn-page-breaking.cc:218
 msgid "cannot fit the first page turn onto a single page.  Consider setting first-page-number to an even number."
 msgstr ""
 
-#: page-turn-page-breaking.cc:230
+#: page-turn-page-breaking.cc:231
 #, c-format
 msgid "Calculating page and line breaks (%d possible page breaks)..."
 msgstr ""
 
-#: page-turn-page-breaking.cc:300
+#: page-turn-page-breaking.cc:301
 #, c-format
 msgid "break starting at page %d"
 msgstr ""
 
-#: page-turn-page-breaking.cc:301
+#: page-turn-page-breaking.cc:302
 #, c-format
 msgid "\tdemerits: %f"
 msgstr ""
 
-#: page-turn-page-breaking.cc:302
+#: page-turn-page-breaking.cc:303
 #, fuzzy, c-format
 msgid "\tsystem count: %d"
 msgstr "合計数: "
 
-#: page-turn-page-breaking.cc:303
+#: page-turn-page-breaking.cc:304
 #, fuzzy, c-format
 msgid "\tpage count: %d"
 msgstr "合計数: "
 
-#: page-turn-page-breaking.cc:304
+#: page-turn-page-breaking.cc:305
 #, fuzzy, c-format
 msgid "\tprevious break: %d"
 msgstr "休憩時間:"
 
-#: key-signature-interface.cc:77
-#, fuzzy, c-format
-msgid "No glyph found for alteration: %s"
-msgstr "“%s”用の失効鍵が見つかりません\n"
-
-#: key-signature-interface.cc:87
-#, fuzzy
-msgid "alteration not found"
-msgstr "ブラシ '%s' が見つかりません。"
-
-#: music.cc:150
+#: pango-font.cc:247
 #, c-format
-msgid "octave check failed; expected \"%s\", found: \"%s\""
+msgid "no glyph for character U+%0X in font `%s'"
 msgstr ""
 
-#: music.cc:219
-#, fuzzy
-msgid "(normalized pitch)"
-msgstr "音の高さを変更"
+#: pango-font.cc:274
+#, c-format
+msgid ""
+"Glyph has no name, but font supports glyph naming.\n"
+"Skipping glyph U+%0X, file %s"
+msgstr ""
 
-#: music.cc:223
+#: pango-font.cc:324
 #, fuzzy, c-format
-msgid "Transposing %s by %s makes alteration larger than double"
-msgstr "%s の変調によって、二つを超える派生音が作られました"
+msgid "no PostScript font name for font `%s'"
+msgstr "出力ファイル用の名前がありません"
 
-#: vaticana-ligature.cc:95
-msgid "flexa-height undefined; assuming 0"
+#: pango-font.cc:374
+msgid "FreeType face has no PostScript font name"
 msgstr ""
 
-#: vaticana-ligature.cc:100
-msgid "ascending vaticana style flexa"
+#: paper-book.cc:200
+#, c-format
+msgid "program option -dprint-pages not supported by backend `%s'"
 msgstr ""
 
-#: translator.cc:356
+#: paper-book.cc:219
 #, c-format
-msgid "Two simultaneous %s events, junking this one"
+msgid "program option -dpreview not supported by backend `%s'"
 msgstr ""
 
-#: translator.cc:357
-#, fuzzy, c-format
-msgid "Previous %s event here"
-msgstr "前の定義がここにありました"
+#: paper-column-engraver.cc:263
+msgid "forced break was overridden by some other event, should you be using bar checks?"
+msgstr ""
 
-#: lily-guile.cc:93
+#: paper-outputter-scheme.cc:41
 #, c-format
-msgid "(load path: `%s')"
-msgstr "(読込パス: `%s')"
+msgid "Layout output to `%s'..."
+msgstr "レイアウトを `%s' へ出力しています..."
 
-#: lily-guile.cc:416
-#, c-format
-msgid "cannot find property type-check for `%s' (%s)."
-msgstr ""
+#: paper-score.cc:128
+#, fuzzy, c-format
+msgid "Element count %d (spanners %d) "
+msgstr "ストリップのデータ量"
 
-#: lily-guile.cc:419
-#, fuzzy
-msgid "perhaps a typing error?"
-msgstr "未知のシステムエラー"
+#: paper-score.cc:132
+msgid "Preprocessing graphical objects..."
+msgstr "グラフィカルオブジェクトの前処理中..."
 
-#: lily-guile.cc:426
-#, fuzzy
-msgid "doing assignment anyway"
-msgstr "とにかくログイン"
+#: parse-scm.cc:124
+msgid "GUILE signaled an error for the expression beginning here"
+msgstr ""
 
-#: lily-guile.cc:438
+#: pdf-scheme.cc:65
 #, c-format
-msgid "type check for `%s' failed; value `%s' must be of type `%s'"
+msgid "Conversion of string `%s' to UTF-16be failed: %s"
 msgstr ""
 
-#: text-spanner-engraver.cc:72
-#, fuzzy
-msgid "cannot find start of text spanner"
-msgstr "鈎の始点が見つかりません"
-
-#: text-spanner-engraver.cc:85
+#: percent-repeat-engraver.cc:148
 #, fuzzy
-msgid "already have a text spanner"
-msgstr "リッチテキストドキュメント"
+msgid "unterminated percent repeat"
+msgstr "PINを再入力: "
 
-#: text-spanner-engraver.cc:130
+#: performance.cc:76
 #, fuzzy
-msgid "unterminated text spanner"
-msgstr "ã\83ªã\83\83ã\83\81ã\83\86ã\82­ã\82¹ã\83\88ã\83\89ã\82­ã\83¥ã\83¡ã\83³ã\83\88"
+msgid "Track..."
+msgstr "ã\83\88ã\83©ã\83\83ã\82¯ã\81®ã\83\94ã\83¼ã\82¯"
 
-#: clef.cc:65
+#: performance.cc:126
 #, fuzzy, c-format
-msgid "clef `%s' not found"
-msgstr "ブラシ '%s' が見つかりません。"
-
-#: beam-engraver.cc:147
-msgid "already have a beam"
-msgstr "既に鈎があります"
-
-#: beam-engraver.cc:230
-msgid "unterminated beam"
-msgstr "終端のない鈎"
-
-#: beam-engraver.cc:266 chord-tremolo-engraver.cc:149
-msgid "stem must have Rhythmic structure"
-msgstr "符尾はリズム構造を持たねばなりません"
-
-#: beam-engraver.cc:277
-#, fuzzy
-msgid "stem does not fit in beam"
-msgstr "符尾が鈎の中におさまりません"
-
-#: beam-engraver.cc:278
-msgid "beam was started here"
-msgstr "鈎はここから開始されました"
+msgid "MIDI output to `%s'..."
+msgstr "%s へ出力リダイレクトされました\n"
 
-#.
-#. Todo: should make typecheck?
-#.
-#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
-#.
-#: time-signature-engraver.cc:75
+#: piano-pedal-engraver.cc:279
 #, fuzzy, c-format
-msgid "strange time signature found: %d/%d"
-msgstr "最初の拍子記号を変更する"
-
-#: paper-column-engraver.cc:261
-msgid "forced break was overridden by some other event, should you be using bar checks?"
-msgstr ""
+msgid "expect 3 strings for piano pedals, found: %ld"
+msgstr "ピアノペダルの始点が見つかりません: `%s'"
 
-#: lily-parser-scheme.cc:80
+#: piano-pedal-engraver.cc:294 piano-pedal-engraver.cc:305
+#: piano-pedal-performer.cc:104
 #, fuzzy, c-format
-msgid "Changing working directory to: `%s'"
-msgstr "作業ディレクトリを '%s' に変更できません"
+msgid "cannot find start of piano pedal: `%s'"
+msgstr "ピアノペダルの始点が見つかりません: `%s'"
 
-#: lily-parser-scheme.cc:84
+#: piano-pedal-engraver.cc:340
 #, fuzzy, c-format
-msgid "unable to change directory to: `%s'"
-msgstr "ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\83¼ã\82\92 %s ã\81«å¤\89æ\9b´ã\81§ã\81\8dã\81¾ã\81\9bã\82\93"
+msgid "cannot find start of piano pedal bracket: `%s'"
+msgstr "ã\83\94ã\82¢ã\83\8eã\83\9aã\83\80ã\83«ã\81®å§\8bç\82¹ã\81\8cè¦\8bã\81¤ã\81\8bã\82\8aã\81¾ã\81\9bã\82\93: `%s'"
 
-#: lily-parser-scheme.cc:99
+#: program-option-scheme.cc:223
 #, fuzzy, c-format
-msgid "cannot find init file: `%s'"
-msgstr " ヘルプファイルでノード %s を見付けることができません "
-
-#: lily-parser-scheme.cc:117
-#, c-format
-msgid "Processing `%s'"
-msgstr "`%s' を処理しています"
+msgid "no such internal option: %s"
+msgstr "そのユーザーIDはありません。\n"
 
-#: lily-parser-scheme.cc:208
-msgid "ly:parser-parse-string is only valid with a new parser.  Use ly:parser-include-string instead."
-msgstr ""
+#: property-iterator.cc:115
+#, fuzzy, c-format
+msgid "not a grob name, `%s'"
+msgstr "名前ファイルではありません"
 
-#: lily-parser-scheme.cc:239
-msgid "ly:parse-string-expression is only valid with a new parser.  Use ly:parser-include-string instead."
-msgstr ""
+#: relative-octave-check.cc:49
+#, fuzzy
+msgid "Failed octave check, got: "
+msgstr "シンボリックリンク %s のチェックに失敗しました: %s"
 
-#: font-config-scheme.cc:167
-#, c-format
-msgid "failed adding font file: %s"
-msgstr "ã\83\95ã\82©ã\83³ã\83\88ã\83\95ã\82¡ã\82¤ã\83«ã\81®è¿½å\8a ã\81«å¤±æ\95\97ã\81\97ã\81¾ã\81\97ã\81\9f: %s"
+#: relocate.cc:56
+#, fuzzy, c-format
+msgid "Setting %s to %s"
+msgstr "ã\83\89ã\83¡ã\82¤ã\83³ã\82\92`%s'ã\81¸è¨­å®\9aã\81\97ã\81¾ã\81\97ã\81\9f\n"
 
-#: font-config-scheme.cc:169
-#, c-format
-msgid "Adding font file: %s"
-msgstr "フォントファイルを追加しています: %s"
+#. this warning should only be printed in debug mode!
+#: relocate.cc:77
+#, fuzzy, c-format
+msgid "no such file: %s for %s"
+msgstr "出力ファイル用の名前がありません"
 
-#: custos.cc:88
+#. this warning should only be printed in debug mode!
+#. this warning should only be printed in debug mode
+#: relocate.cc:88 relocate.cc:106
 #, fuzzy, c-format
-msgid "custos `%s' not found"
-msgstr "ã\83\96ã\83©ã\82· '%s' ã\81\8cè¦\8bã\81¤ã\81\8bã\82\8aã\81¾ã\81\9bã\82\93ã\80\82"
+msgid "no such directory: %s for %s"
+msgstr "ã\81\9dã\81®ã\82\88ã\81\86ã\81ªã\83\95ã\82¡ã\82¤ã\83«ã\82\84ã\83\87ã\82£ã\83¬ã\82¯ã\83\88ã\83ªã\81¯ã\81\82ã\82\8aã\81¾ã\81\9bã\82\93"
 
-#: accidental-engraver.cc:179
+#: relocate.cc:97
 #, c-format
-msgid "accidental typesetting list must begin with context-name: %s"
+msgid "%s=%s (prepend)\n"
 msgstr ""
 
-#: accidental-engraver.cc:209
+#: relocate.cc:124
 #, c-format
-msgid "procedure or context-name expected for accidental rule, found %s"
-msgstr ""
-
-#: rest-collision.cc:146
-msgid "cannot resolve rest collision: rest direction not set"
+msgid "not relocating, no %s/ or current/ found under %s"
 msgstr ""
 
-#: rest-collision.cc:160 rest-collision.cc:276
-msgid "too many colliding rests"
-msgstr "休符の衝突が多すぎます"
-
-#: pango-font.cc:205
+#: relocate.cc:134
 #, c-format
-msgid ""
-"Glyph has no name, but font supports glyph naming.\n"
-"Skipping glyph U+%0X, file %s"
+msgid "Relocation: compile datadir=%s, new datadir=%s"
 msgstr ""
 
-#: pango-font.cc:242
+#: relocate.cc:146
 #, fuzzy, c-format
-msgid "no PostScript font name for font `%s'"
-msgstr "出力ファイル用の名前がありません"
-
-#: pango-font.cc:291
-msgid "FreeType face has no PostScript font name"
-msgstr ""
-
-#: lyric-engraver.cc:186
-msgid "Lyric syllable does not have note. Use \\lyricsto or associatedVoice."
-msgstr ""
-
-#: page-breaking.cc:277
-msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set"
-msgstr ""
-
-#: page-breaking.cc:282
-msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values"
-msgstr ""
+msgid "Relocation: framework_prefix=%s"
+msgstr "おかしな名前空間の接頭子"
 
-#: paper-outputter-scheme.cc:41
+#: relocate.cc:172
 #, fuzzy, c-format
-msgid "Layout output to `%s'..."
-msgstr "%s へ出力リダイレクトされました\n"
-
-#: gregorian-ligature-engraver.cc:70
-#, c-format
-msgid "\\%s ignored"
-msgstr "\\%s を無視しました"
+msgid "Relocation: is absolute: argv0=%s\n"
+msgstr "ファイル名 \"%s\" は絶対パスではありません"
 
-#: gregorian-ligature-engraver.cc:75
+#: relocate.cc:178
 #, fuzzy, c-format
-msgid "implied \\%s added"
-msgstr "「追加済」を表示"
-
-#. ligature may not start with 2nd head of pes or flexa
-#: gregorian-ligature-engraver.cc:224
-msgid "cannot apply `\\~' on first head of ligature"
-msgstr ""
-
-#. (pitch == prev_pitch)
-#: gregorian-ligature-engraver.cc:236
-msgid "cannot apply `\\~' on heads with identical pitch"
-msgstr ""
-
-#: chord-tremolo-engraver.cc:88
-#, fuzzy
-msgid "No tremolo to end"
-msgstr "ファイルの末尾に追加"
-
-#: chord-tremolo-engraver.cc:109
-msgid "unterminated chord tremolo"
-msgstr "終端のないコードトレモロ"
+msgid "Relocation : from cwd: argv0=%s\n"
+msgstr "このテキストレイヤーからパスを作成します"
 
-#: general-scheme.cc:390
+#: relocate.cc:196
 #, fuzzy, c-format
-msgid "failed redirecting stderr to `%s'"
-msgstr ""
-"\n"
-"%s を受信しました、%s に出力をリダイレクトします。\n"
+msgid ""
+"Relocation: from PATH=%s\n"
+"argv0=%s\n"
+msgstr "このテキストレイヤーからパスを作成します"
 
-#: general-scheme.cc:469
-msgid "Found infinity or nan in output. Substituting 0.0"
+#: relocate.cc:222
+msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
 msgstr ""
 
-#: system.cc:200
+#: relocate.cc:347
 #, fuzzy, c-format
-msgid "Element count %d"
-msgstr "合計数: "
+msgid "Relocation file: %s"
+msgstr "HTML ファイル (*.html)|*.html"
 
-#: system.cc:466
+#: relocate.cc:351 source-file.cc:65
 #, fuzzy, c-format
-msgid "Grob count %d"
-msgstr "合計数: "
+msgid "cannot open file: `%s'"
+msgstr " ファイル '%s' を開けません "
 
-#: axis-group-engraver.cc:94
-msgid "Axis_group_engraver: vertical group already has a parent"
-msgstr ""
+#: relocate.cc:381
+#, fuzzy, c-format
+msgid "Unknown relocation command %s"
+msgstr "不明なビルトインコマンド '%s'\n"
 
-#: axis-group-engraver.cc:95
-msgid "are there two Axis_group_engravers?"
+#: rest-collision.cc:154
+msgid "cannot resolve rest collision: rest direction not set"
 msgstr ""
 
-#: axis-group-engraver.cc:96
-#, fuzzy
-msgid "removing this vertical group"
-msgstr "このグループには %d 個のパッケージが含まれています。"
+#: rest-collision.cc:165 rest-collision.cc:274
+msgid "too many colliding rests"
+msgstr "休符の衝突が多すぎます"
 
-#: cluster.cc:120
+#: rest.cc:239
 #, fuzzy, c-format
-msgid "unknown cluster style `%s'"
-msgstr "名前復元 (demangle) の方式 `%s' が不明です"
-
-#: cluster.cc:157
-#, fuzzy
-msgid "junking empty cluster"
-msgstr "警告: $PATH が定義されていません"
+msgid "rest `%s' not found"
+msgstr "ブラシ '%s' が見つかりません。"
 
-#: grob-property.cc:35
-#, c-format
-msgid "%d: %s"
-msgstr ""
+#: score-engraver.cc:77
+#, fuzzy, c-format
+msgid "cannot find `%s'"
+msgstr "見つかりません: `%s'"
 
-#: rest-collision-engraver.cc:70
-msgid "rhythmic head is not part of a rhythmic column"
+#: score-engraver.cc:79
+msgid "Music font has not been installed properly."
 msgstr ""
 
-#: axis-group-interface.cc:670
-msgid "an outside-staff object should have a direction, defaulting to up"
-msgstr ""
+#: score-engraver.cc:81
+#, fuzzy, c-format
+msgid "Search path `%s'"
+msgstr "検索パス            : %s\n"
 
-#: coherent-ligature-engraver.cc:110
-#, c-format
-msgid "Coherent_ligature_engraver: setting `spacing-increment=0.01': ptr=%ul"
-msgstr ""
+#: score-engraver.cc:83
+msgid "Aborting"
+msgstr "終了します"
 
-#. We are completely screwed.
-#: beam-quanting.cc:853
-msgid "no viable initial configuration found: may not find good beam slope"
-msgstr ""
+#: score.cc:161
+#, fuzzy
+msgid "already have music in score"
+msgstr "%s は設定ファイルの中に既に存在しています\n"
 
-#: percent-repeat-engraver.cc:147
+#: score.cc:163
 #, fuzzy
-msgid "unterminated percent repeat"
-msgstr "PINを再入力: "
+msgid "this is the previous music"
+msgstr "このメッセージは未翻訳です"
 
-#: note-head.cc:85
-#, c-format
-msgid "none of note heads `%s' or `%s' found"
-msgstr ""
+#: score.cc:169
+#, fuzzy
+msgid "errors found, ignoring music expression"
+msgstr "エラーを発見/*, 楽譜を処理しません*/"
 
 #. FIXME:
-#: script-engraver.cc:113
+#: script-engraver.cc:115
 #, fuzzy
 msgid "do not know how to interpret articulation:"
 msgstr "音節 `%s' の解釈方法が判りません"
 
-#: script-engraver.cc:114
+#: script-engraver.cc:116
 #, fuzzy
 msgid " scheme encoding: "
 msgstr "不明なエンコーディング。"
 
-#: program-option-scheme.cc:235
-#, fuzzy, c-format
-msgid "no such internal option: %s"
-msgstr "そのユーザーIDはありません。\n"
+#: skyline-pair.cc:135
+msgid "direction must not be CENTER in ly:skyline-pair::skyline"
+msgstr ""
 
-#: property-iterator.cc:93
+#: slur-proto-engraver.cc:51
 #, fuzzy, c-format
-msgid "not a grob name, `%s'"
-msgstr "名前ファイルではありません"
+msgid "direction of %s invalid: %d"
+msgstr "無効な方向 -- %s\n"
 
-#: all-font-metrics.cc:149
+#. We already have an old slur, so give a warning
+#. and completely ignore the new slur.
+#: slur-proto-engraver.cc:166
 #, fuzzy, c-format
-msgid "cannot find font: `%s'"
-msgstr "ディレクトリ %s が見つかりません\n"
+#| msgid "already have slur"
+msgid "already have %s"
+msgstr "スラーを既に開始しています"
 
-#: pdf-scheme.cc:50
+#: slur-proto-engraver.cc:183
 #, c-format
-msgid "Conversion of string `%s' to UTF-16be failed: %s"
+msgid "%s without a cause"
 msgstr ""
 
-#: rest.cc:171
+#: slur-proto-engraver.cc:244
 #, fuzzy, c-format
-msgid "rest `%s' not found"
-msgstr "ブラシ '%s' が見つかりません。"
+#| msgid "cannot end slur"
+msgid "cannot end %s"
+msgstr "スラーを終了できません"
 
-#: bar-check-iterator.cc:84
+#: slur.cc:436
 #, c-format
-msgid "barcheck failed at: %s"
-msgstr "小節チェックが失敗: %s"
+msgid "Ignoring grob for slur: %s.  avoid-slur not set?"
+msgstr ""
 
-#: slur-engraver.cc:92 phrasing-slur-engraver.cc:91
+#: source-file.cc:85
 #, fuzzy, c-format
-msgid "direction of %s invalid: %d"
-msgstr "無効な方向 -- %s\n"
-
-#: slur-engraver.cc:166
-msgid "unterminated slur"
-msgstr "終端されていないスラー"
+msgid "expected to read %d characters, got %d"
+msgstr ""
+"読み込むファイルまたは\n"
+"使用する文字列"
 
-#: slur-engraver.cc:191
-msgid "cannot end slur"
-msgstr "スラーを終了できません"
+#: staff-performer.cc:301
+msgid "MIDI channel wrapped around"
+msgstr ""
 
-#. We already have a slur, so give a warning and completely ignore
-#. the new slur.
-#: slur-engraver.cc:208
-msgid "already have slur"
-msgstr "スラーを既に開始しています"
+#: staff-performer.cc:302
+#, fuzzy
+msgid "remapping modulo 16"
+msgstr "Functionキー 16"
 
-#: global-context-scheme.cc:96 global-context-scheme.cc:114
+#: stem-engraver.cc:100
 #, fuzzy
-msgid "no music found in score"
-msgstr " %s に特定のエントリーは見つかりませんでした "
+msgid "tremolo duration is too long"
+msgstr "diversion パスが長すぎます"
+
+#: stem-engraver.cc:152
+#, fuzzy, c-format
+msgid "adding note head to incompatible stem (type = %d/%d)"
+msgstr "矛盾した符尾へ符頭を追加します (タイプ = %d)"
+
+#: stem-engraver.cc:155
+msgid "maybe input should specify polyphonic voices"
+msgstr ""
 
-#: global-context-scheme.cc:104
+#: stem.cc:128
 #, fuzzy
-msgid "Interpreting music... "
-msgstr "%s %s 楽曲プレイヤ"
+msgid "weird stem size, check for narrow beams"
+msgstr "変な符尾のサイズ -- 細い鈎のチェックをして下さい"
 
-#: global-context-scheme.cc:126
-#, c-format
-msgid "elapsed time: %.2f seconds"
-msgstr "経過時間: %.2f 秒"
+#: system.cc:202
+#, fuzzy, c-format
+msgid "Element count %d"
+msgstr "合計数: "
 
-#: translator-group-ctors.cc:40
+#: system.cc:513
+#, fuzzy, c-format
+msgid "Grob count %d"
+msgstr "合計数: "
+
+#. TODO: Also print the arguments of the markup!
+#: text-interface.cc:139
 #, c-format
-msgid "fatal error. Couldn't find type: %s"
+msgid "Markup depth exceeds maximal value of %d; Markup: %s"
 msgstr ""
 
-#: phrasing-slur-engraver.cc:165
+#: text-spanner-engraver.cc:72
 #, fuzzy
-msgid "unterminated phrasing slur"
-msgstr "スラーを終了できません"
+msgid "cannot find start of text spanner"
+msgstr "鈎の始点が見つかりません"
 
-#: phrasing-slur-engraver.cc:190
+#: text-spanner-engraver.cc:85
 #, fuzzy
-msgid "cannot end phrasing slur"
-msgstr "ã\82¹ã\83©ã\83¼ã\81®ä¸­ã\81«å\88¥ã\81®ã\82¹ã\83©ã\83¼ã\82\92å\90«ã\82\80ã\81\93ã\81¨ã\81¯ã\81§ã\81\8dã\81¾ã\81\9bã\82\93"
+msgid "already have a text spanner"
+msgstr "ã\83ªã\83\83ã\83\81ã\83\86ã\82­ã\82¹ã\83\88ã\83\89ã\82­ã\83¥ã\83¡ã\83³ã\83\88"
 
-#: phrasing-slur-engraver.cc:204
+#: text-spanner-engraver.cc:130
 #, fuzzy
-msgid "already have phrasing slur"
-msgstr "スラーを終了できません"
-
-#: lily-parser.cc:109
-msgid "Parsing..."
-msgstr "構文解析中..."
+msgid "unterminated text spanner"
+msgstr "リッチテキストドキュメント"
 
-#: score.cc:176
+#: tie-engraver.cc:121
 #, fuzzy
-msgid "already have music in score"
-msgstr "%s は設定ファイルの中に既に存在しています\n"
+msgid "unterminated tie"
+msgstr "タイの切替え"
 
-#: score.cc:177
-#, fuzzy
-msgid "this is the previous music"
-msgstr "このメッセージは未翻訳です"
+#: tie-engraver.cc:377
+msgid "lonely tie"
+msgstr "一つだけのタイ"
 
-#: score.cc:182
-#, fuzzy
-msgid "errors found, ignoring music expression"
-msgstr "エラーを発見/*, 楽譜を処理しません*/"
+#.
+#. Todo: should make typecheck?
+#.
+#. OTOH, Tristan Keuris writes 8/20 in his Intermezzi.
+#.
+#: time-signature-engraver.cc:95
+#, fuzzy, c-format
+msgid "strange time signature found: %d/%d"
+msgstr "最初の拍子記号を変更する"
+
+#: translator-ctors.cc:68
+#, c-format
+msgid "unknown translator: `%s'"
+msgstr "判らないトランスレータ: `%s'"
 
-#. If there is no such symbol, we default to the numbered style.
-#. (Here really with a warning!)
-#: time-signature.cc:94
+#: translator-group-ctors.cc:40
 #, c-format
-msgid "time signature symbol `%s' not found; reverting to numbered style"
+msgid "fatal error.  Couldn't find type: %s"
 msgstr ""
 
-#: grob-interface.cc:68
+#: translator-group.cc:187
 #, c-format
-msgid "Unknown interface `%s'"
-msgstr "`%s' は未知のインタフェースです"
+msgid "cannot find: `%s'"
+msgstr "見つかりません: `%s'"
 
-#: grob-interface.cc:79
+#: translator.cc:310
 #, c-format
-msgid "Grob `%s' has no interface for property `%s'"
+msgid "Two simultaneous %s events, junking this one"
 msgstr ""
 
-#: midi-stream.cc:39
+#: translator.cc:311
 #, fuzzy, c-format
-msgid "cannot open for write: %s: %s"
-msgstr "%s を読み書きモードで開けません\n"
+msgid "Previous %s event here"
+msgstr "前の定義がここにありました"
 
-#: midi-stream.cc:55
-#, fuzzy, c-format
-msgid "cannot write to file: `%s'"
+#: ttf.cc:480 ttf.cc:528
+#, c-format
+msgid "font index %d too large for font `%s', using index 0"
 msgstr ""
-"ファイル %s に書き込めません:\n"
-"%s\n"
 
-#. TODO: Also print the arguments of the markup!
-#: text-interface.cc:129
-#, fuzzy, c-format
-msgid "Cyclic markup detected: %s"
-msgstr "自動検出ボリューム"
+#: ttf.cc:512 ttf.cc:562
+msgid "font index must be non-negative, using index 0"
+msgstr ""
 
-#. TODO: Also print the arguments of the markup!
-#: text-interface.cc:142
+#: tuplet-engraver.cc:110
+#, fuzzy
+msgid "No tuplet to end"
+msgstr "ファイルの末尾に追加"
+
+#: vaticana-ligature-engraver.cc:400
 #, c-format
-msgid "Markup depth exceeds maximal value of %d; Markup: %s"
+msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style"
+msgstr ""
+
+#: vaticana-ligature-engraver.cc:466
+msgid "Ambiguous use of dots in ligature: there are multiple dotted notes with the same pitch.  The ligature should be split."
+msgstr ""
+
+#: vaticana-ligature-engraver.cc:524
+msgid "This ligature has a dotted head followed by a non-dotted head.  The ligature should be split after the last dotted head before this head."
+msgstr ""
+
+#: vaticana-ligature-engraver.cc:736
+#, c-format
+msgid "Vaticana_ligature_engraver: setting `spacing-increment = %f': ptr =%ul"
+msgstr ""
+
+#: vaticana-ligature.cc:94
+msgid "flexa-height undefined; assuming 0"
+msgstr ""
+
+#: vaticana-ligature.cc:99
+msgid "ascending vaticana style flexa"
+msgstr ""
+
+#: vertical-align-engraver.cc:95
+msgid "Ignoring Vertical_align_engraver in VerticalAxisGroup"
+msgstr ""
+
+#. fixme: be more verbose.
+#: volta-engraver.cc:110
+#, fuzzy
+msgid "cannot end volta spanner"
+msgstr "%s: 省略記号の範囲の終わりに`%s'がありません"
+
+#: volta-engraver.cc:120
+msgid "already have a volta spanner, ending that one prematurely"
 msgstr ""
 
-#: parser.yy:162 parser.yy:176
+#: volta-engraver.cc:124
+#, fuzzy
+msgid "also already have an ended spanner"
+msgstr "既に鈎があります"
+
+#: volta-engraver.cc:125
 #, fuzzy
-msgid "Too much lookahead"
-msgstr "アドレスファミリの引数が多すぎます.\n"
+msgid "giving up"
+msgstr ""
+"中止しました。\n"
+"\n"
+
+#: parser.yy:476 parser.yy:947 parser.yy:1028 parser.yy:1248
+msgid "bad expression type"
+msgstr ""
 
-#: parser.yy:827 parser.yy:1193 parser.yy:1226
+#: parser.yy:859 parser.yy:1458 parser.yy:1503
 #, fuzzy
 msgid "not a context mod"
 msgstr "有効なセキュリティコンテキストでありません"
 
-#: parser.yy:995
-msgid "\\paper cannot be used in \\score, use \\layout instead"
+#: parser.yy:1054
+#, fuzzy
+msgid "Missing music in \\score"
+msgstr " %s に特定のエントリーは見つかりませんでした "
+
+#: parser.yy:1091
+msgid "\\paper cannot be used in \\score, use \\layout instead"
+msgstr ""
+
+#: parser.yy:1126
+msgid "Spurious expression in \\score"
+msgstr ""
+
+#: parser.yy:1156
+#, fuzzy
+msgid "need \\paper for paper block"
+msgstr "まばらな (sparse) ファイルのブロックサイズ"
+
+#: parser.yy:1331
+#, fuzzy
+msgid "music expected"
+msgstr "コロンを期待しました"
+
+#: parser.yy:1341 parser.yy:1375
+#, fuzzy
+#| msgid "unimplemented MIDI meta-event"
+msgid "unexpected post-event"
+msgstr "未実装の MIDI メタイベント"
+
+#: parser.yy:1383
+#, fuzzy
+msgid "Ignoring non-music expression"
+msgstr "エラーを発見/*, 楽譜を処理しません*/"
+
+#: parser.yy:1691
+msgid "not a symbol"
 msgstr ""
 
-#: parser.yy:1019
-#, fuzzy
-msgid "need \\paper for paper block"
-msgstr "まばらな (sparse) ファイルのブロックサイズ"
+#: parser.yy:2491 parser.yy:2605 parser.yy:2618 parser.yy:2627
+msgid "bad grob property path"
+msgstr ""
 
-#: parser.yy:1943
-msgid "only \\consists takes non-string argument."
+#: parser.yy:2585
+msgid "only \\consists and \\remove take non-string argument."
 msgstr ""
 
-#: parser.yy:1956
-msgid "Grob name should be alphanumeric"
+#: parser.yy:2646
+msgid "bad context property path"
 msgstr ""
 
-#: parser.yy:2150
+#: parser.yy:2733
+#, fuzzy
+msgid "simple string expected"
+msgstr "コロンを期待しました"
+
+#: parser.yy:2750
+#, fuzzy
+msgid "symbol expected"
+msgstr "コロンを期待しました"
+
+#: parser.yy:2886
 #, fuzzy
 msgid "not a rhythmic event"
 msgstr "MIDI イベントコントローラ"
 
-#: parser.yy:2246 parser.yy:2251
+#: parser.yy:2936
+msgid "post-event expected"
+msgstr ""
+
+#: parser.yy:2945 parser.yy:2950
 #, fuzzy
 msgid "have to be in Lyric mode for lyrics"
 msgstr "歌詞は Lyric モード内に書いてください"
 
-#: parser.yy:2366
-msgid "expecting string as script definition"
+#: parser.yy:3026
+msgid "expecting string or post-event as script definition"
 msgstr ""
 
-#: parser.yy:2518 parser.yy:2569
-#, c-format
-msgid "not a duration: %d"
+#: parser.yy:3130
+#, fuzzy
+#| msgid "not a duration: %d"
+msgid "not an articulation"
 msgstr "音長ではありません: %d"
 
-#: parser.yy:2688
+#: parser.yy:3202 parser.yy:3245
+#, fuzzy
+#| msgid "not a duration: %d"
+msgid "not a duration"
+msgstr "音長ではありません: %d"
+
+#: parser.yy:3266
+#, fuzzy
+msgid "bass number expected"
+msgstr "コロンを期待しました"
+
+#: parser.yy:3358
 #, fuzzy
 msgid "have to be in Note mode for notes"
 msgstr "音符は Note モード内に書いてください"
 
-#: parser.yy:2737
+#: parser.yy:3397
 #, fuzzy
 msgid "have to be in Chord mode for chords"
 msgstr "コードは Chord モード内に書いてください"
 
-#: parser.yy:2997
+#: parser.yy:3440
+msgid "markup outside of text script or \\lyricmode"
+msgstr ""
+
+#: parser.yy:3445
+msgid "unrecognized string, not in text script or \\lyricmode"
+msgstr ""
+
+#: parser.yy:3597 parser.yy:3606
+msgid "not an unsigned integer"
+msgstr ""
+
+#: parser.yy:3693
 msgid "not a markup"
 msgstr "マークアップではありません"
 
-#: lexer.ll:225
+#: lexer.ll:193
 msgid "stray UTF-8 BOM encountered"
 msgstr ""
 
-#: lexer.ll:228
+#: lexer.ll:196
 msgid "Skipping UTF-8 BOM"
 msgstr "UTF-8 の BOM をスキップします"
 
-#: lexer.ll:286
+#: lexer.ll:248
 #, c-format
 msgid "Renaming input to: `%s'"
 msgstr "入力の名前を `%s' に変更します"
 
-#: lexer.ll:303
+#: lexer.ll:265
 #, fuzzy
 msgid "quoted string expected after \\version"
 msgstr "警告: 文法エラー, 文字列の後には ';'"
 
-#: lexer.ll:307
+#: lexer.ll:269
 #, fuzzy
 msgid "quoted string expected after \\sourcefilename"
 msgstr "警告: 文法エラー, 文字列の後には ';'"
 
-#: lexer.ll:311
+#: lexer.ll:273
 #, fuzzy
 msgid "integer expected after \\sourcefileline"
 msgstr "-q= の後に番号が期待されますが、%s が与えられました\n"
 
-#: lexer.ll:334
+#: lexer.ll:300
 #, fuzzy
 msgid "\\maininput not allowed outside init files"
 msgstr "初期化ファイルの外では \\maininput を記述できません"
 
-#: lexer.ll:358
+#: lexer.ll:324
 #, fuzzy, c-format
 msgid "wrong or undefined identifier: `%s'"
 msgstr "定数または識別子が適当です"
 
-#: lexer.ll:384
+#: lexer.ll:349
 msgid "string expected after \\include"
 msgstr "\\include の後には文字列が必要です"
 
-#. backup rule
-#: lexer.ll:394
+#: lexer.ll:359
 msgid "end quote missing"
 msgstr "終端の引用符がありません"
 
-#: lexer.ll:556
-msgid "Brace found at end of lyric.  Did you forget a space?"
-msgstr ""
-
-#: lexer.ll:671
-msgid "Brace found at end of markup.  Did you forget a space?"
-msgstr ""
-
-#: lexer.ll:683
+#: lexer.ll:714
 msgid "EOF found inside a comment"
 msgstr "コメント内に EOF が見つかりました"
 
-#: lexer.ll:775
+#: lexer.ll:719
+#, fuzzy
+#| msgid "EOF found inside a comment"
+msgid "EOF found inside string"
+msgstr "コメント内に EOF が見つかりました"
+
+#: lexer.ll:734
+#, fuzzy
+#| msgid "unfinished beam"
+msgid "Unfinished main input"
+msgstr "終了されていない鈎"
+
+#: lexer.ll:805
 #, c-format
 msgid "invalid character: `%s'"
 msgstr "無効な文字: `%s'"
 
-#: lexer.ll:868 lexer.ll:869
+#: lexer.ll:925
 #, c-format
 msgid "unknown escaped string: `\\%s'"
 msgstr "未知のエスケープ文字列: `\\%s'"
 
-#: lexer.ll:1117 lexer.ll:1118
+#: lexer.ll:945
+#, fuzzy, c-format
+#| msgid "can't find character called: `%s'"
+msgid "undefined character or shorthand: %s"
+msgstr "呼び出された文字が見つかりません: `%s'"
+
+#: lexer.ll:1236
 #, fuzzy
 msgid "non-UTF-8 input"
 msgstr "  INPUTFILE ...               入力ファイル\n"
 
-#: lexer.ll:1161 lexer.ll:1162
+#: lexer.ll:1280
+#, fuzzy, c-format
+msgid "Invalid version string \"%s\""
+msgstr "文字列 '%s' は有効な長さではありません。\n"
+
+#: lexer.ll:1285
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
 msgstr ""
 
-#: lexer.ll:1162 lexer.ll:1163
+#: lexer.ll:1286
 msgid "consider updating the input with the convert-ly script"
 msgstr ""
 
-#: lexer.ll:1168 lexer.ll:1169
+#: lexer.ll:1292
 #, c-format
 msgid "program too old: %s (file requires: %s)"
 msgstr ""
 
-#: parser-clef.scm:141 parser-clef.scm:181
+#: auto-beam.scm:147
+msgid "Beam end fits no pattern"
+msgstr ""
+
+#: backend-library.scm:27
 #, fuzzy, scheme-format
-msgid "unknown clef type `~a'"
-msgstr "ファイルタイプが不明です"
+msgid "Invoking `~a'..."
+msgstr "PGP 起動中..."
 
-#: parser-clef.scm:142 parser-clef.scm:182
+#: backend-library.scm:31
 #, fuzzy, scheme-format
-msgid "supported clefs: ~a"
-msgstr "サポートしていません"
+msgid "`~a' failed (~a)\n"
+msgstr "失敗"
+
+#: backend-library.scm:108
+#, scheme-format
+msgid "Converting to `~a'...\n"
+msgstr "`~a' へ変換しています...\n"
+
+#. Do not try to guess the name of the png file,
+#. GS produces PNG files like BASE-page%d.png.
+#: backend-library.scm:118
+#, scheme-format
+msgid "Converting to ~a..."
+msgstr "~a へ変換しています..."
+
+#: backend-library.scm:134
+#, scheme-format
+msgid "Copying to `~a'...\n"
+msgstr "`~a' へコピーしています...\n"
 
-#: document-backend.scm:132
+#: backend-library.scm:200
+#, scheme-format
+msgid "Deleting `~a'...\n"
+msgstr "`~a' を削除しています...\n"
+
+#: backend-library.scm:219
 #, fuzzy, scheme-format
-msgid "pair expected in doc ~s"
-msgstr "種類 (%s と %s) のペアを期待しましたが、得られたのは種類 (%s と %s) です"
+msgid "Writing header field `~a' to `~a'..."
+msgstr "Contents ファイルへのヘッダの書き込み中にエラーが発生しました"
 
-#: document-backend.scm:189
+#: backend-library.scm:268
 #, fuzzy, scheme-format
-msgid "cannot find interface for property: ~S"
-msgstr "'%s' の属性のハッシュを書き込めません"
+msgid "missing stencil expression `~S'"
+msgstr "マジック(識別鍵)モード式が欠けています"
+
+#: bar-line.scm:133
+#, scheme-format
+msgid "Bar glyph ~a not known. Ignoring."
+msgstr ""
+
+#: bar-line.scm:161
+#, scheme-format
+msgid "Annotation '~a' is allowed in the first argument of a bar line definition only."
+msgstr ""
 
-#: document-backend.scm:199
+#: bar-line.scm:169
+#, scheme-format
+msgid "Replacement '~a' is allowed in the last argument of a bar line definition only."
+msgstr ""
+
+#: bar-line.scm:230
+#, scheme-format
+msgid "add-bar-glyph-print-procedure: glyph '~a' has to be a single ASCII character."
+msgstr ""
+
+#: bar-line.scm:795
+#, scheme-format
+msgid "No span bar glyph defined for bar glyph '~a'; ignoring."
+msgstr ""
+
+#: chord-entry.scm:52
+#, scheme-format
+msgid "Spurious garbage following chord: ~A"
+msgstr ""
+
+#: define-context-properties.scm:31 define-grob-properties.scm:21
+#: define-music-properties.scm:21
 #, fuzzy, scheme-format
-msgid "unknown Grob interface: ~S"
-msgstr "XUL インターフェイスドキュメント"
+msgid "symbol ~S redefined"
+msgstr "シンボル %s が再定義されました"
 
-#: graphviz.scm:64
+#: define-event-classes.scm:74
 #, fuzzy, scheme-format
-msgid "Writing graph `~a'..."
-msgstr "\"%s\" を書き込み中にエラーが発生しました"
+msgid "unknown parent class `~a'"
+msgstr "未知の署名クラスです"
 
-#: parser-ly-from-scheme.scm:71
-#, fuzzy
-msgid "error in #{ ... #}"
-msgstr "「%s」でエラー: %s\n"
+#: define-event-classes.scm:108
+#, fuzzy, scheme-format
+msgid "Cannot redefine event class `~S'"
+msgstr "未知の署名クラスです"
 
-#: framework-eps.scm:108
+#: define-event-classes.scm:110
 #, fuzzy, scheme-format
-msgid "Writing ~a..."
-msgstr "%s 書き込み中..."
+msgid "Undefined parent event class `~S'"
+msgstr "未知の署名クラスです"
 
-#: output-ps.scm:48
-msgid "Found infinity or nan in output.  Substituting 0.0"
+#: define-markup-commands.scm:1098
+msgid "no systems found in \\score markup, does it have a \\layout block?"
 msgstr ""
 
-#: output-ps.scm:313 output-svg.scm:556
+#: define-markup-commands.scm:2922
 #, fuzzy, scheme-format
-msgid "unknown line-cap-style: ~S"
-msgstr "改行文字形式が一貫していません"
+msgid "Cannot find glyph ~a"
+msgstr "ディレクトリ %s が見つかりません\n"
+
+#: define-markup-commands.scm:3398
+#, scheme-format
+msgid "no brace found for point size ~S "
+msgstr ""
 
-#: output-ps.scm:318 output-svg.scm:562
+#: define-markup-commands.scm:3399
 #, fuzzy, scheme-format
-msgid "unknown line-join-style: ~S"
-msgstr "改行文字形式が一貫していません"
+msgid "defaulting to ~S pt"
+msgstr "%{エラーです。デフォルトを使います%}C"
 
-#: paper.scm:120
-msgid "set-global-staff-size: not in toplevel scope"
-msgstr ""
+#: define-markup-commands.scm:3643
+#, fuzzy, scheme-format
+msgid "not a valid duration string: ~a"
+msgstr "文字列 '%s' は有効な長さではありません。\n"
 
-#: paper.scm:304
+#: define-markup-commands.scm:3854
 #, fuzzy, scheme-format
-msgid "This is not a \\layout {} object, ~S"
-msgstr "エラー: %s() の 第%d引数がオブジェクトではありません\n"
+msgid "not a valid duration string: ~a - ignoring"
+msgstr "文字列 '%s' は有効な長さではありません。\n"
 
-#: paper.scm:316
+#: define-music-types.scm:803
 #, fuzzy, scheme-format
-msgid "Unknown paper size: ~a"
-msgstr "用紙のサイズ '%s' を認識できません (デフォルトを使用します)\n"
+msgid "symbol expected: ~S"
+msgstr "コロンを期待しました"
 
-#. TODO: should raise (generic) exception with throw, and catch
-#. that in parse-scm.cc
-#: paper.scm:331
-msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
+#: define-music-types.scm:806
+#, fuzzy, scheme-format
+msgid "cannot find music object: ~S"
+msgstr "%s が共有オブジェクト %s に存在しません: %s"
+
+#: define-music-types.scm:826
+#, scheme-format
+msgid "bad make-music argument: ~S"
 msgstr ""
 
-#: backend-library.scm:27
-#, fuzzy, scheme-format
-msgid "Invoking `~a'..."
-msgstr "PGP 起動中..."
+#: define-note-names.scm:1000
+#, fuzzy
+msgid "Select note names language."
+msgstr "言語のコードを選択してください:"
 
-#: backend-library.scm:31
+#: define-note-names.scm:1006
 #, fuzzy, scheme-format
-msgid "`~a' failed (~a)\n"
-msgstr "失敗"
+msgid "Using `~a' note names..."
+msgstr "パッケージ名総数: "
 
-#: backend-library.scm:90
+#: define-note-names.scm:1009
 #, fuzzy, scheme-format
-msgid "Converting to `~a'...\n"
-msgstr "%s から %s へ変換しています..."
+msgid "Could not find language `~a'.  Ignoring."
+msgstr "マスター・ブラウザが見つかりませんでした"
 
-#. Do not try to guess the name of the png file,
-#. GS produces PNG files like BASE-page%d.png.
-#: backend-library.scm:99
+#: document-backend.scm:135
 #, fuzzy, scheme-format
-msgid "Converting to ~a..."
-msgstr "%s から %s へ変換しています..."
+msgid "pair expected in doc ~s"
+msgstr "種類 (%s と %s) のペアを期待しましたが、得られたのは種類 (%s と %s) です"
 
-#: backend-library.scm:137
+#: document-backend.scm:202
 #, fuzzy, scheme-format
-msgid "Writing header field `~a' to `~a'..."
-msgstr "Contents ファイルへのヘッダの書き込み中にエラーが発生しました"
+msgid "cannot find interface for property: ~S"
+msgstr "'%s' の属性のハッシュを書き込めません"
 
-#: backend-library.scm:187
+#: document-backend.scm:212
 #, fuzzy, scheme-format
-msgid "missing stencil expression `~S'"
-msgstr "マジック(識別鍵)モード式が欠けています"
+msgid "unknown Grob interface: ~S"
+msgstr "XUL インターフェイスドキュメント"
 
-#: output-svg.scm:47
+#: documentation-lib.scm:62
 #, fuzzy, scheme-format
-msgid "undefined: ~S"
-msgstr "å\90\8då\89\8dã\81ªã\81\97"
+msgid "Processing ~S..."
+msgstr "å\87¦ç\90\86中..."
 
-#: output-svg.scm:157
-#, scheme-format
-msgid "cannot decypher Pango description: ~a"
-msgstr ""
+#: documentation-lib.scm:178
+#, fuzzy, scheme-format
+msgid "Writing ~S..."
+msgstr "%s 書き込み中..."
 
-#: output-svg.scm:237
-#, fuzzy
-msgid "Glyph must have a unicode value"
-msgstr ""
-"\n"
-"%s.%s: 値は boolean でなければなりません\n"
+#: documentation-lib.scm:190
+#, fuzzy, scheme-format
+msgid "cannot find description for property `~S' (~S)"
+msgstr "'%s' の属性のハッシュを書き込めません"
 
-#: output-svg.scm:289 output-svg.scm:299
+#: documentation-lib.scm:211
 #, fuzzy, scheme-format
-msgid "cannot find SVG font ~S"
-msgstr "'%s' の URL が見つかりません"
+msgid "cannot find description for property ~S (~S)"
+msgstr "'%s' の属性のハッシュを書き込めません"
 
-#: flag-styles.scm:151
+#: flag-styles.scm:155
 #, fuzzy, scheme-format
 msgid "flag stroke `~a' or `~a' not found"
 msgstr "'%s' が PATH 上に見つからないか実行可能になっていません。"
 
-#: modal-transforms.scm:38
-msgid "'from' pitch not in scale; ignoring"
+#: framework-eps.scm:112
+#, fuzzy, scheme-format
+msgid "Writing ~a..."
+msgstr "%s 書き込み中..."
+
+#: framework-ps.scm:281
+#, fuzzy, scheme-format
+msgid "cannot embed ~S=~S"
+msgstr "%s: %s: stat できません: %s\n"
+
+#: framework-ps.scm:324
+#, fuzzy, scheme-format
+msgid "cannot extract file matching ~a from ~a"
+msgstr "RPM ファイルからカタログを抽出できません。"
+
+#: framework-ps.scm:342
+#, scheme-format
+msgid "do not know how to embed ~S=~S"
 msgstr ""
 
-#: modal-transforms.scm:42 modal-transforms.scm:75
-msgid "'to' pitch not in scale; ignoring"
+#: framework-ps.scm:367
+#, scheme-format
+msgid "do not know how to embed font ~s ~s ~s"
 msgstr ""
 
-#: modal-transforms.scm:46
-msgid "pitch to be transposed not in scale; ignoring"
+#: framework-ps.scm:723
+msgid ""
+"\n"
+"The PostScript backend does not support the\n"
+"system-by-system output.  For that, use the EPS backend instead,\n"
+"\n"
+"  lilypond -dbackend=eps FILE\n"
+"\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"
 msgstr ""
 
-#: modal-transforms.scm:71
-msgid "'around' pitch not in scale; ignoring"
+#: framework-svg.scm:84
+#, fuzzy, scheme-format
+msgid "Updating font into: ~a"
+msgstr "選択範囲内に貼り付け(_I)"
+
+#: graphviz.scm:64
+#, fuzzy, scheme-format
+msgid "Writing graph `~a'..."
+msgstr "\"%s\" を書き込み中にエラーが発生しました"
+
+#: layout-beam.scm:40
+#, scheme-format
+msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
 msgstr ""
 
-#: modal-transforms.scm:79
-msgid "pitch to be inverted not in scale; ignoring"
+#: layout-beam.scm:54
+#, scheme-format
+msgid "Error in beam quanting.  Expected ~S 0, found ~S."
 msgstr ""
 
-#: modal-transforms.scm:95
-msgid "negative replication count; ignoring"
+#: lily-library.scm:333
+msgid "Music unsuitable for context-mod"
+msgstr ""
+
+#: lily-library.scm:388
+#, fuzzy, scheme-format
+msgid "Cannot find context-def \\~a"
+msgstr "実効ユーザID を %ld に変更できません: %s\n"
+
+#: lily-library.scm:404
+msgid "Music unsuitable for output-def"
 msgstr ""
 
-#: to-xml.scm:191
-#, fuzzy, scheme-format
-msgid "assertion failed: ~S"
-msgstr "malloc: 失敗したアサーション: %s\n"
+#: lily-library.scm:904
+msgid ""
+"Find the index between @var{start} and @var{end} (an integer)\n"
+"which produces the closest match to @var{target-val} if\n"
+"applied to function @var{getter}."
+msgstr ""
 
-#: define-grob-properties.scm:21 define-context-properties.scm:31
-#: define-music-properties.scm:21
+#: lily-library.scm:998
 #, fuzzy, scheme-format
-msgid "symbol ~S redefined"
-msgstr "シンボル %s が再定義されました"
+msgid "unknown unit: ~S"
+msgstr "単位の編集"
 
-#: chord-entry.scm:52
+#: lily-library.scm:1023
 #, scheme-format
-msgid "Spurious garbage following chord: ~A"
+msgid "no \\version statement found, please add~afor future compatibility"
+msgstr "\\version 宣言がみつかりません, 将来の互換性のために~aを追加してください"
+
+#: lily.scm:93
+msgid "call-after-session used after session start"
+msgstr ""
+
+#: lily.scm:111
+msgid "define-session used after session start"
 msgstr ""
 
-#: lily.scm:234
+#: lily.scm:417
 msgid "Using (ice-9 curried-definitions) module\n"
 msgstr ""
 
-#: lily.scm:237
+#: lily.scm:420
 msgid "Guile 1.8\n"
 msgstr ""
 
-#: lily.scm:297
+#: lily.scm:477
 #, fuzzy, scheme-format
 msgid "cannot find: ~A"
 msgstr "見つかりません: `%s'"
 
-#: lily.scm:701
-#, fuzzy
+#: lily.scm:903
 msgid "Success: compilation successfully completed"
-msgstr "全ての操作が無事完了しました"
+msgstr "成功: コンパイルが正常に完了しました"
 
-#: lily.scm:702
+#: lily.scm:904
 msgid "Compilation completed with warnings or errors"
-msgstr ""
+msgstr "コンパイルが警告またはエラーで終了しました"
 
-#: lily.scm:764
+#: lily.scm:965
 #, fuzzy, scheme-format
 msgid "job ~a terminated with signal: ~a"
 msgstr "サーバへの接続開始前に実行したコマンドがシグナル %d で終了しました\n"
 
-#: lily.scm:767
+#: lily.scm:968
 #, fuzzy, scheme-format
 msgid ""
 "logfile ~a (exit ~a):\n"
 "~a"
 msgstr " 終了を確認(&E) "
 
-#: lily.scm:789 lily.scm:869
+#: lily.scm:990 lily.scm:1079
 #, fuzzy, scheme-format
 msgid "failed files: ~S"
 msgstr "ファイルの追加"
 
-#: lily.scm:860
+#: lily.scm:1070
 #, fuzzy, scheme-format
 msgid "Redirecting output to ~a..."
 msgstr ""
 "\n"
 "%s を受信しました、%s に出力をリダイレクトします。\n"
 
-#: lily.scm:879 ps-to-png.scm:66
+#: lily.scm:1089
 #, fuzzy, scheme-format
 msgid "Invoking `~a'...\n"
 msgstr "PGP 起動中..."
 
-#: lily-library.scm:761
-msgid ""
-"Find the index between @var{start} and @var{end} (an integer)\n"
-"which produces the closest match to @var{target-val} if\n"
-"applied to function @var{getter}."
-msgstr ""
-
-#: lily-library.scm:835
+#: ly-syntax-constructors.scm:27
 #, fuzzy, scheme-format
-msgid "unknown unit: ~S"
-msgstr "単位の編集"
+msgid "~a function cannot return ~a"
+msgstr "リターンで自動的にインデント(&R)"
 
-#: lily-library.scm:860
+#: ly-syntax-constructors.scm:60
 #, scheme-format
-msgid "no \\version statement found, please add~afor future compatibility"
+msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
 msgstr ""
 
-#: lily-library.scm:866
-#, fuzzy
-msgid "old relative compatibility not used"
-msgstr "GP が未定義の時に GP 関連再配置が使われました"
+#: markup-macros.scm:331
+#, scheme-format
+msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
+msgstr ""
 
-#: framework-svg.scm:84
+#: markup-macros.scm:337
+#, scheme-format
+msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
+msgstr ""
+
+#: markup-macros.scm:373
 #, fuzzy, scheme-format
-msgid "Updating font into: ~a"
-msgstr "選択範囲内に貼り付け(_I)"
+msgid "Not a markup command: ~A"
+msgstr "「e」コマンドは、サポートされていません"
+
+#: modal-transforms.scm:38
+msgid "'from' pitch not in scale; ignoring"
+msgstr ""
+
+#: modal-transforms.scm:42 modal-transforms.scm:75
+msgid "'to' pitch not in scale; ignoring"
+msgstr ""
+
+#: modal-transforms.scm:46
+msgid "pitch to be transposed not in scale; ignoring"
+msgstr ""
+
+#: modal-transforms.scm:71
+msgid "'around' pitch not in scale; ignoring"
+msgstr ""
+
+#: modal-transforms.scm:79
+msgid "pitch to be inverted not in scale; ignoring"
+msgstr ""
+
+#: modal-transforms.scm:95
+msgid "negative replication count; ignoring"
+msgstr ""
 
-#: part-combiner.scm:598
+#: music-functions.scm:319
 #, fuzzy, scheme-format
-msgid "quoted music `~a' is empty"
-msgstr "警告: 「%s」は空のファイルです\n"
+msgid "invalid tremolo repeat count: ~a"
+msgstr "%s: 繰り返しカウントには `}' が必要です"
+
+#: music-functions.scm:348
+#, scheme-format
+msgid "unknown repeat type `~S': must be volta, unfold, percent, or tremolo"
+msgstr ""
 
-#: music-functions.scm:273
+#: music-functions.scm:352
 #, fuzzy
 msgid "More alternatives than repeats.  Junking excess alternatives"
 msgstr "繰り返しよりも選択肢が多い。超過分を捨てます。"
 
-#: music-functions.scm:302
+#: music-functions.scm:487
 #, fuzzy, scheme-format
-msgid "invalid tremolo repeat count: ~a"
-msgstr "%s: 繰り返しカウントには `}' が必要です"
+msgid "bad grob property path ~a"
+msgstr "無効な操作コード"
+
+#: music-functions.scm:511
+#, scheme-format
+msgid "bad context property ~a"
+msgstr ""
+
+#: music-functions.scm:534
+#, fuzzy, scheme-format
+msgid "bad music property ~a"
+msgstr "    -a, --alias           エイリアス名\n"
 
-#: music-functions.scm:634
+#: music-functions.scm:840
 #, fuzzy
 msgid "Bad chord repetition"
 msgstr "和音にAを追加"
 
-#: music-functions.scm:669
+#: music-functions.scm:945
 #, fuzzy, scheme-format
 msgid "music expected: ~S"
 msgstr "コロンを期待しました"
 
-#: music-functions.scm:985
+#: music-functions.scm:1295
 #, fuzzy, scheme-format
 msgid "cannot find quoted music: `~S'"
 msgstr "'%s' の URL が見つかりません"
 
-#: music-functions.scm:1123
+#: music-functions.scm:1432
 msgid "Add @var{octave-shift} to the octave of @var{pitch}."
 msgstr ""
 
-#: music-functions.scm:1183
+#: music-functions.scm:1495
 #, fuzzy, scheme-format
 msgid "Unknown octaveness type: ~S "
 msgstr "ファイルタイプが不明です"
 
-#: music-functions.scm:1184
+#: music-functions.scm:1496
 #, fuzzy
 msgid "Defaulting to 'any-octave."
 msgstr "%{エラーです。デフォルトを使います%}ト音記号"
 
-#: music-functions.scm:1521
+#: music-functions.scm:1888
 #, fuzzy, scheme-format
 msgid "unknown accidental style: ~S"
 msgstr "名前復元 (demangle) の方式 `%s' が不明です"
 
-#: define-event-classes.scm:80
-msgid "All classes must be the last in their matrilineal line."
-msgstr ""
-
-#: define-event-classes.scm:84
-msgid "All classes must have a well-defined pedigree in the existing class hierarchy."
-msgstr ""
+#: music-functions.scm:2098
+#, fuzzy
+#| msgid "silly duration"
+msgid "Missing duration"
+msgstr "馬鹿げた音長"
 
-#: define-event-classes.scm:151
+#: music-functions.scm:2626
 #, scheme-format
-msgid "event class ~A seems to be unused"
+msgid "not a symbol list: ~a"
 msgstr ""
 
-#. should be programming-error
-#: define-event-classes.scm:157
-#, scheme-format
-msgid "translator listens to nonexisting event class ~A"
-msgstr ""
+#: music-functions.scm:2629
+#, fuzzy, scheme-format
+msgid "conflicting tag group ~a"
+msgstr "拍子の要求が競合します"
 
-#: markup-macros.scm:331
-#, scheme-format
-msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
-msgstr ""
+#: output-ps.scm:290 output-svg.scm:539
+#, fuzzy, scheme-format
+msgid "unknown line-cap-style: ~S"
+msgstr "改行文字形式が一貫していません"
 
-#: markup-macros.scm:337
+#: output-ps.scm:295 output-svg.scm:545
+#, fuzzy, scheme-format
+msgid "unknown line-join-style: ~S"
+msgstr "改行文字形式が一貫していません"
+
+#: output-svg.scm:148
 #, scheme-format
-msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
+msgid "cannot decypher Pango description: ~a"
 msgstr ""
 
-#: markup-macros.scm:373
-#, fuzzy, scheme-format
-msgid "Not a markup command: ~A"
-msgstr "「e」コマンドは、サポートされていません"
-
-#: define-note-names.scm:962
+#: output-svg.scm:228
 #, fuzzy
-msgid "Select note names language."
-msgstr "言語のコードを選択してください:"
+msgid "Glyph must have a unicode value"
+msgstr ""
+"\n"
+"%s.%s: 値は boolean でなければなりません\n"
 
-#: define-note-names.scm:968
+#: output-svg.scm:280 output-svg.scm:290
 #, fuzzy, scheme-format
-msgid "Using `~a' note names..."
-msgstr "パッケージ名総数: "
+msgid "cannot find SVG font ~S"
+msgstr "'%s' の URL が見つかりません"
 
-#: define-note-names.scm:971
-#, fuzzy, scheme-format
-msgid "Could not find language `~a'.  Ignoring."
-msgstr "マスター・ブラウザが見つかりませんでした"
+#: paper.scm:121
+msgid "set-global-staff-size: not in toplevel scope"
+msgstr ""
 
-#: framework-ps.scm:250
+#: paper.scm:321
 #, fuzzy, scheme-format
-msgid "cannot embed ~S=~S"
-msgstr "%s: %s: stat できません: %s\n"
+msgid "This is not a \\layout {} object, ~S"
+msgstr "エラー: %s() の 第%d引数がオブジェクトではありません\n"
 
-#: framework-ps.scm:293
+#: paper.scm:329
 #, fuzzy, scheme-format
-msgid "cannot extract file matching ~a from ~a"
-msgstr "RPM ファイルからカタログを抽出できません。"
+msgid "Unknown paper size: ~a"
+msgstr "用紙のサイズ '%s' を認識できません (デフォルトを使用します)\n"
 
-#: framework-ps.scm:311
-#, scheme-format
-msgid "do not know how to embed ~S=~S"
+#. TODO: should raise (generic) exception with throw, and catch
+#. that in parse-scm.cc
+#: paper.scm:348
+msgid "Must use #(set-paper-size .. ) within \\paper { ... }"
 msgstr ""
 
-#: framework-ps.scm:336
-#, scheme-format
-msgid "do not know how to embed font ~s ~s ~s"
-msgstr ""
+#: parser-clef.scm:154
+#, fuzzy, scheme-format
+msgid "unknown clef type `~a'"
+msgstr "ファイルタイプが不明です"
 
-#: framework-ps.scm:686
-msgid ""
-"\n"
-"The PostScript backend does not support the\n"
-"system-by-system output.  For that, use the EPS backend instead,\n"
-"\n"
-"  lilypond -dbackend=eps FILE\n"
-"\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"
-msgstr ""
+#: parser-clef.scm:155
+#, fuzzy, scheme-format
+msgid "supported clefs: ~a"
+msgstr "サポートしていません"
 
-#: layout-beam.scm:40
-#, scheme-format
-msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
-msgstr ""
+#: parser-ly-from-scheme.scm:73
+#, fuzzy
+msgid "error in #{ ... #}"
+msgstr "「%s」でエラー: %s\n"
 
-#: layout-beam.scm:54
-#, scheme-format
-msgid "Error in beam quanting.  Expected ~S 0, found ~S."
-msgstr ""
+#: part-combiner.scm:894
+#, fuzzy, scheme-format
+msgid "quoted music `~a' is empty"
+msgstr "警告: 「%s」は空のファイルです\n"
 
-#: define-music-types.scm:752
+#: ps-to-png.scm:72 ps-to-png.scm:75
 #, fuzzy, scheme-format
-msgid "symbol expected: ~S"
-msgstr "コロンを期待しました"
+msgid "Copying `~a' to `~a'..."
+msgstr "%s から %s へ変換しています..."
 
-#: define-music-types.scm:755
+#: ps-to-png.scm:77 ps-to-png.scm:79
 #, fuzzy, scheme-format
-msgid "cannot find music object: ~S"
-msgstr "%s が共有オブジェクト %s に存在しません: %s"
+msgid "Deleting `~a'..."
+msgstr "%s 書き込み中..."
 
-#: define-music-types.scm:774
+#: to-xml.scm:190
 #, fuzzy, scheme-format
-msgid "unknown repeat type `~S'"
-msgstr "ファイルタイプが不明です"
+msgid "assertion failed: ~S"
+msgstr "malloc: 失敗したアサーション: %s\n"
 
-#: define-music-types.scm:775
-msgid "See define-music-types.scm for supported repeats"
+#: translation-functions.scm:389
+#, scheme-format
+msgid "Negative fret for pitch ~a on string ~a"
 msgstr ""
 
-#: translation-functions.scm:351
+#: translation-functions.scm:392
 #, scheme-format
-msgid "Negative fret for pitch ~a on string ~a"
+msgid "Missing fret for pitch ~a on string ~a"
 msgstr ""
 
-#: translation-functions.scm:402
+#: translation-functions.scm:435
 #, scheme-format
 msgid "No open string for pitch ~a"
 msgstr ""
 
-#: translation-functions.scm:417 translation-functions.scm:429
+#: translation-functions.scm:450 translation-functions.scm:462
 #, scheme-format
 msgid "Requested string for pitch requires negative fret: string ~a pitch ~a"
 msgstr ""
 
-#: translation-functions.scm:420
+#: translation-functions.scm:453
 msgid "Ignoring string request and recalculating."
 msgstr ""
 
-#: translation-functions.scm:432
+#: translation-functions.scm:465
 #, fuzzy
 msgid "Ignoring note in tablature."
 msgstr "'%s' が '%s' の中で重複しているので無視します"
 
-#: translation-functions.scm:455
+#: translation-functions.scm:490
 #, scheme-format
 msgid "No string for pitch ~a (given frets ~a)"
 msgstr ""
 
-#: translation-functions.scm:560
+#: translation-functions.scm:595
 #, scheme-format
 msgid ""
 "No label for fret ~a (on string ~a);\n"
 "only ~a fret labels provided"
 msgstr ""
 
-#: ps-to-png.scm:70
-#, fuzzy, scheme-format
-msgid "~a exited with status: ~S"
-msgstr "%s はステータス %d で終了しました"
+#, fuzzy
+#~ msgid "cannot find Voice `%s'"
+#~ msgstr "ディレクトリ %s が見つかりません\n"
 
-#: define-markup-commands.scm:887
-msgid "no systems found in \\score markup, does it have a \\layout block?"
-msgstr ""
+#, fuzzy
+#~ msgid "cannot find start of (de)crescendo"
+#~ msgstr "(デ)クレッシェンドの始点が見つかりません"
 
-#: define-markup-commands.scm:2614
-#, fuzzy, scheme-format
-msgid "Cannot find glyph ~a"
-msgstr "ディレクトリ %s が見つかりません\n"
+#~ msgid "already have a decrescendo"
+#~ msgstr "デクレッシェンドが既にあります"
 
-#: define-markup-commands.scm:3040
-#, scheme-format
-msgid "no brace found for point size ~S "
-msgstr ""
+#~ msgid "already have a crescendo"
+#~ msgstr "クレッシェンドが既にあります"
 
-#: define-markup-commands.scm:3041
-#, fuzzy, scheme-format
-msgid "defaulting to ~S pt"
-msgstr "%{エラーです。デフォルトを使います%}C"
+#, fuzzy
+#~ msgid "cresc starts here"
+#~ msgstr "ここにリクエストをどうぞ"
 
-#: define-markup-commands.scm:3194
-#, fuzzy, scheme-format
-msgid "not a valid duration string: ~a"
-msgstr "文字列 '%s' は有効な長さではありません。\n"
+#~ msgid "unterminated (de)crescendo"
+#~ msgstr "終端のない(デ)クレッシェンド"
 
-#: documentation-lib.scm:59
-#, fuzzy, scheme-format
-msgid "Processing ~S..."
-msgstr "処理中..."
+#, fuzzy
+#~ msgid "ignoring too many clashing note columns"
+#~ msgstr "釣り合わない音符が多すぎます。それらを無視します。"
 
-#: documentation-lib.scm:176
-#, fuzzy, scheme-format
-msgid "Writing ~S..."
-msgstr "%s 書き込み中..."
+#, fuzzy
+#~ msgid "compressing music to fit"
+#~ msgstr "画像に高さを合わせる(_F)"
 
-#: documentation-lib.scm:188
-#, fuzzy, scheme-format
-msgid "cannot find description for property `~S' (~S)"
-msgstr "'%s' の属性のハッシュを書き込めません"
+#, fuzzy
+#~ msgid "(normalized pitch)"
+#~ msgstr "音の高さを変更"
 
-#: documentation-lib.scm:209
-#, fuzzy, scheme-format
-msgid "cannot find description for property ~S (~S)"
-msgstr "'%s' の属性のハッシュを書き込めません"
+#, fuzzy
+#~ msgid "Transposing %s by %s makes alteration larger than double"
+#~ msgstr "%s の変調によって、二つを超える派生音が作られました"
 
-#: ly-syntax-constructors.scm:65
-#, fuzzy, scheme-format
-msgid "~a function cannot return ~a"
-msgstr "リターンで自動的にインデント(&R)"
+#~ msgid "unterminated slur"
+#~ msgstr "終端されていないスラー"
 
-#: ly-syntax-constructors.scm:74
-#, scheme-format
-msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
-msgstr ""
+#, fuzzy
+#~ msgid "unterminated phrasing slur"
+#~ msgstr "スラーを終了できません"
 
-#: ly-syntax-constructors.scm:187
-#, fuzzy, scheme-format
-msgid "Invalid property operation ~a"
-msgstr "無効な操作コード"
+#, fuzzy
+#~ msgid "cannot end phrasing slur"
+#~ msgstr "スラーの中に別のスラーを含むことはできません"
+
+#, fuzzy
+#~ msgid "already have phrasing slur"
+#~ msgstr "スラーを終了できません"
+
+#, fuzzy
+#~ msgid "Cyclic markup detected: %s"
+#~ msgstr "自動検出ボリューム"
+
+#, fuzzy
+#~ msgid "Too much lookahead"
+#~ msgstr "アドレスファミリの引数が多すぎます.\n"
+
+#, fuzzy
+#~ msgid "undefined: ~S"
+#~ msgstr "名前なし"
+
+#, fuzzy
+#~ msgid "old relative compatibility not used"
+#~ msgstr "GP が未定義の時に GP 関連再配置が使われました"
+
+#, fuzzy
+#~ msgid "unknown repeat type `~S'"
+#~ msgstr "ファイルタイプが不明です"
+
+#, fuzzy
+#~ msgid "~a exited with status: ~S"
+#~ msgstr "%s はステータス %d で終了しました"
 
 #~ msgid "EOF in a string"
 #~ msgstr "文字列中に EOF があります"
@@ -3805,9 +4148,6 @@ msgstr "無効な操作コード"
 #~ msgid "can't find character number: %d"
 #~ msgstr "文字番号が見つかりません: %d"
 
-#~ msgid "can't find character called: `%s'"
-#~ msgstr "呼び出された文字が見つかりません: `%s'"
-
 #~ msgid "Error parsing AFM file"
 #~ msgstr "AFM ファイルを解析中にエラー"
 
@@ -3943,9 +4283,6 @@ msgstr "無効な操作コード"
 #~ msgid "unconventional key: flats: %d, sharps: %d"
 #~ msgstr "慣習に合わないキーです: フラット: %d 個, シャープ %d 個"
 
-#~ msgid "silly duration"
-#~ msgstr "馬鹿げた音長"
-
 #~ msgid "silly pitch"
 #~ msgstr "馬鹿げたピッチ"
 
@@ -4123,9 +4460,6 @@ msgstr "無効な操作コード"
 #~ msgid "invalid running status"
 #~ msgstr "無効な動作状態"
 
-#~ msgid "unimplemented MIDI meta-event"
-#~ msgstr "未実装の MIDI メタイベント"
-
 #~ msgid "invalid MIDI event"
 #~ msgstr "無効な MIDI イベント"
 
@@ -4183,9 +4517,6 @@ msgstr "無効な操作コード"
 #~ msgid "(search path: `%s)'"
 #~ msgstr "(検索パス: `%s')"
 
-#~ msgid "unfinished beam"
-#~ msgstr "終了されていない鈎"
-
 #~ msgid "0 lines"
 #~ msgstr "0 行"
 
index 34bfbaf2db54ebcc59663af588894ff5f17477b5..91af9420db648b99cca1a9741fd9fe7c588da2bf 100644 (file)
@@ -6,10 +6,10 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.19.34\n"
+"Project-Id-Version: lilypond 2.19.36\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu."
 "lilypond.bugs\n"
-"POT-Creation-Date: 2015-12-22 11:48+0000\n"
+"POT-Creation-Date: 2016-01-31 16:19+0000\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"
@@ -36,11 +36,11 @@ msgstr ""
 msgid "Running `%s' on file `%s' to detect default page settings.\n"
 msgstr ""
 
-#: book_latex.py:219 book_texinfo.py:228
+#: book_latex.py:219 book_texinfo.py:230
 msgid "Unable to auto-detect default settings:\n"
 msgstr ""
 
-#: book_latex.py:231 book_texinfo.py:240
+#: book_latex.py:231 book_texinfo.py:242
 #, python-format
 msgid ""
 "Unable to auto-detect default settings:\n"
@@ -122,7 +122,7 @@ msgstr ""
 #. Work around a texi2pdf bug: if LANG=C is not given, a broken regexp is
 #. used to detect relative/absolute paths, so the absolute path is not
 #. detected as such and this command fails:
-#: book_texinfo.py:206
+#: book_texinfo.py:208
 #, python-format
 msgid "Running texi2pdf on file %s to detect default page settings.\n"
 msgstr ""
@@ -3413,31 +3413,31 @@ msgstr ""
 msgid "Undefined parent event class `~S'"
 msgstr ""
 
-#: define-markup-commands.scm:1191
+#: define-markup-commands.scm:1272
 msgid "no systems found in \\score markup, does it have a \\layout block?"
 msgstr ""
 
-#: define-markup-commands.scm:3031
+#: define-markup-commands.scm:3112
 #, scheme-format
 msgid "Cannot find glyph ~a"
 msgstr ""
 
-#: define-markup-commands.scm:3507
+#: define-markup-commands.scm:3588
 #, scheme-format
 msgid "no brace found for point size ~S "
 msgstr ""
 
-#: define-markup-commands.scm:3508
+#: define-markup-commands.scm:3589
 #, scheme-format
 msgid "defaulting to ~S pt"
 msgstr ""
 
-#: define-markup-commands.scm:3753
+#: define-markup-commands.scm:3847
 #, scheme-format
 msgid "not a valid duration string: ~a"
 msgstr ""
 
-#: define-markup-commands.scm:3966
+#: define-markup-commands.scm:4060
 #, scheme-format
 msgid "not a valid duration string: ~a - ignoring"
 msgstr ""
@@ -3516,27 +3516,27 @@ msgstr ""
 msgid "Writing ~a..."
 msgstr ""
 
-#: framework-ps.scm:281
+#: framework-ps.scm:286
 #, scheme-format
 msgid "cannot embed ~S=~S"
 msgstr ""
 
-#: framework-ps.scm:324
+#: framework-ps.scm:329
 #, scheme-format
 msgid "cannot extract file matching ~a from ~a"
 msgstr ""
 
-#: framework-ps.scm:342
+#: framework-ps.scm:347
 #, scheme-format
 msgid "do not know how to embed ~S=~S"
 msgstr ""
 
-#: framework-ps.scm:367
+#: framework-ps.scm:372
 #, scheme-format
 msgid "do not know how to embed font ~s ~s ~s"
 msgstr ""
 
-#: framework-ps.scm:723
+#: framework-ps.scm:728
 msgid ""
 "\n"
 "The PostScript backend does not support the\n"
@@ -3623,37 +3623,37 @@ msgstr ""
 msgid "cannot find: ~A"
 msgstr ""
 
-#: lily.scm:902
+#: lily.scm:903
 msgid "Success: compilation successfully completed"
 msgstr ""
 
-#: lily.scm:903
+#: lily.scm:904
 msgid "Compilation completed with warnings or errors"
 msgstr ""
 
-#: lily.scm:964
+#: lily.scm:965
 #, scheme-format
 msgid "job ~a terminated with signal: ~a"
 msgstr ""
 
-#: lily.scm:967
+#: lily.scm:968
 #, scheme-format
 msgid ""
 "logfile ~a (exit ~a):\n"
 "~a"
 msgstr ""
 
-#: lily.scm:989 lily.scm:1078
+#: lily.scm:990 lily.scm:1079
 #, scheme-format
 msgid "failed files: ~S"
 msgstr ""
 
-#: lily.scm:1069
+#: lily.scm:1070
 #, scheme-format
 msgid "Redirecting output to ~a..."
 msgstr ""
 
-#: lily.scm:1088
+#: lily.scm:1089
 #, scheme-format
 msgid "Invoking `~a'...\n"
 msgstr ""
@@ -3763,31 +3763,31 @@ msgstr ""
 msgid "Defaulting to 'any-octave."
 msgstr ""
 
-#: music-functions.scm:1890
+#: music-functions.scm:1872
 #, scheme-format
 msgid "unknown accidental style: ~S"
 msgstr ""
 
-#: music-functions.scm:2100
+#: music-functions.scm:2097
 msgid "Missing duration"
 msgstr ""
 
-#: music-functions.scm:2636
+#: music-functions.scm:2633
 #, scheme-format
 msgid "not a symbol list: ~a"
 msgstr ""
 
-#: music-functions.scm:2639
+#: music-functions.scm:2636
 #, scheme-format
 msgid "conflicting tag group ~a"
 msgstr ""
 
-#: output-ps.scm:290 output-svg.scm:539
+#: output-ps.scm:286 output-svg.scm:535
 #, scheme-format
 msgid "unknown line-cap-style: ~S"
 msgstr ""
 
-#: output-ps.scm:295 output-svg.scm:545
+#: output-ps.scm:291 output-svg.scm:541
 #, scheme-format
 msgid "unknown line-join-style: ~S"
 msgstr ""
index 51cb9adf11e5577a22768a946daffba8573a3958..7ded65cbf3044450d5829c0cd8e73cf32418a035 100644 (file)
--- a/po/nl.po
+++ b/po/nl.po
@@ -1,19 +1,19 @@
 # Dutch translations for GNU Lilypond.
-# Copyright (C) 2015 Free Software Foundation, Inc.
+# Copyright (C) 2016 Free Software Foundation, Inc.
 # This file is distributed under the same license as the lilypond package.
 #
 # "Dear future, gone fishing."
 #
 # Han-Wen Nienhuys <hanwen@cs.uu.nl>, 1998.
 # Jan Nieuwenhuizen <janneke@gnu.org>, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007.
-# Benno Schulenberg <benno@vertaalt.nl>, 2013, 2015.
-# Frans Spiesschaert <Frans.Spiesschaert@yucom.be>, 2015.
+# Benno Schulenberg <benno@vertaalt.nl>, 2013, 2015, 2016.
+# Frans Spiesschaert <Frans.Spiesschaert@yucom.be>, 2015, 2016
 msgid ""
 msgstr ""
 "Project-Id-Version: lilypond 2.19.26\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu.lilypond.bugs\n"
 "POT-Creation-Date: 2015-08-27 10:48+0100\n"
-"PO-Revision-Date: 2015-12-10 21:02+0100\n"
+"PO-Revision-Date: 2016-01-17 16:37+0100\n"
 "Last-Translator: Benno Schulenberg <benno@vertaalt.nl>\n"
 "Language-Team: Dutch <vertaling@vrijschrift.org>\n"
 "Language: nl\n"
@@ -1426,7 +1426,7 @@ msgstr "voor rusten s in plaats van r gebruiken"
 
 #: midi2ly.py:1085
 msgid "DUR*NUM/DEN"
-msgstr "DUUR*NOEM/TEL"
+msgstr "DUUR*NOEMER/TELLER"
 
 #: midi2ly.py:1088
 msgid "allow tuplet durations DUR*NUM/DEN"
@@ -1481,12 +1481,12 @@ msgstr "Een niet-verwerkt merkteken %s gevonden\n"
 #: musicxml2ly.py:1026
 #, python-format
 msgid "unknown span event %s"
-msgstr "onbekende tijdspannegebeurtenis %s"
+msgstr "onbekende overspanningsgebeurtenis %s"
 
 #: musicxml2ly.py:1036
 #, python-format
 msgid "unknown span type %s for %s"
-msgstr "onbekend tijdspannetype %s voor %s"
+msgstr "onbekend overspanningstype %s voor %s"
 
 #: musicxml2ly.py:1456
 msgid "Unknown metronome mark, ignoring"
@@ -2329,7 +2329,7 @@ msgstr "EXPRESSIE"
 
 #: main.cc:155
 msgid "evaluate scheme code"
-msgstr "scheme-code evalueren"
+msgstr "Scheme-code evalueren"
 
 #. Bug in option parser: --output =foe is taken as an abbreviation
 #. for --output-format.
@@ -2556,53 +2556,53 @@ msgid ""
 msgstr ""
 "ongeldig ligatuureinde:\n"
 "als de laatste noot een neergaande brevis is,\n"
-"moet de voorlaatste noot een andere zijn,\n"
+"moet de voorlaatste noot er ook een zijn,\n"
 "of de ligatuur moet LB of SSB zijn"
 
 #: mensural-ligature-engraver.cc:396
 msgid "unexpected case fall-through"
-msgstr "onverwachte 'case'-doorval"
+msgstr "onverwachte 'case'-doorval in switch statement"
 
 #: midi-control-function-performer.cc:107 staff-performer.cc:153
 #, c-format
 msgid "ignoring out-of-range value change for MIDI property `%s'"
-msgstr ""
+msgstr "het veranderen van MIDI-eigenschap '%s' naar een buiten-bereik-vallende waarde wordt genegeerd"
 
 #: midi-item.cc:93
 #, c-format
 msgid "no such MIDI instrument: `%s'"
-msgstr "onbekend MIDI instrument: `%s'"
+msgstr "onbekend MIDI-instrument: '%s'"
 
 #: midi-item.cc:179
 msgid "Time signature with more than 255 beats.  Truncating"
-msgstr ""
+msgstr "Maatsoort met meer dan 255 tellen. Wordt afgekapt"
 
 #: midi-stream.cc:38
 #, c-format
 msgid "cannot open for write: %s: %s"
-msgstr "kan bestand niet openen om te schrijven: %s: %s"
+msgstr "kan %s niet openen om te schrijven: %s"
 
 #: midi-stream.cc:54
 #, c-format
 msgid "cannot write to file: `%s'"
-msgstr "kon niet naar bestand schrijven: `%s'"
+msgstr "kan niet naar bestand '%s' schrijven"
 
 #: minimal-page-breaking.cc:40 paper-score.cc:116
 msgid "Calculating line breaks..."
-msgstr "Berekenen van regelbreuken..."
+msgstr "Berekenen van regeleinden..."
 
 #: minimal-page-breaking.cc:44
 msgid "Calculating page breaks..."
-msgstr "Berekenen van paginabreuken..."
+msgstr "Berekenen van pagina-einden..."
 
 #: multi-measure-rest.cc:152
 msgid "usable-duration-logs must be a non-empty list.  Falling back to whole rests."
-msgstr ""
+msgstr "usable-duration-logs mag geen lege lijst zijn. Teruggevallen op hele rusten."
 
 #: music.cc:150
 #, c-format
 msgid "octave check failed; expected \"%s\", found: \"%s\""
-msgstr "octaafcontrole is mislukt; verwachtte \"%s\", vond \"%s\""
+msgstr "octaafcontrole is mislukt; verwachtte \"%s\", gevonden werd \"%s\""
 
 #: new-fingering-engraver.cc:113
 msgid "cannot add text scripts to individual note heads"
@@ -2610,16 +2610,15 @@ msgstr "kan tekstscripts niet toevoegen aan individuele notenkoppen"
 
 #: new-fingering-engraver.cc:269
 msgid "no placement found for fingerings"
-msgstr "geen plaatsing gevonden voor vingers"
+msgstr "geen plaatsing gevonden voor vingerzetting"
 
 #: new-fingering-engraver.cc:270
-#, fuzzy
 msgid "placing below"
-msgstr "plaats onder"
+msgstr "ze wordt eronder geplaatst"
 
 #: note-collision.cc:510
 msgid "this Voice needs a \\voiceXx or \\shiftXx setting"
-msgstr ""
+msgstr "deze stem heeft een instelling van het type \\voiceXx of \\shiftXx nodig"
 
 #: note-column.cc:150
 msgid "cannot have note heads and rests together on a stem"
@@ -2632,7 +2631,7 @@ msgstr "geen van de notenkoppen '%s' of '%s' is gevonden"
 
 #: note-heads-engraver.cc:76
 msgid "NoteEvent without pitch"
-msgstr "NootGebeurtenis zonder toonhoogte"
+msgstr "NoteEvent zonder toonhoogte"
 
 #: open-type-font.cc:45
 #, c-format
@@ -2642,32 +2641,32 @@ msgstr "kan geen %lu bytes reserveren"
 #: open-type-font.cc:49
 #, c-format
 msgid "cannot load font table: %s"
-msgstr "kan font-tabel niet laden: %s"
+msgstr "kan lettertypetabel %s niet laden"
 
 #: open-type-font.cc:54
 #, c-format
 msgid "FreeType error: %s"
-msgstr "FreeType-fout: %s"
+msgstr "FreeType-fout %s"
 
 #: open-type-font.cc:115
 #, c-format
 msgid "unsupported font format: %s"
-msgstr "niet-ondersteund font-formaat: %s"
+msgstr "niet-ondersteunde lettertypeopmaak %s"
 
 #: open-type-font.cc:117
 #, c-format
 msgid "error reading font file %s: %s"
-msgstr "fout bij lezen van font-bestand %s: %s"
+msgstr "fout bij lezen van lettertypebestand %s: %s"
 
 #: open-type-font.cc:192
 #, c-format
 msgid "FT_Get_Glyph_Name () Freetype error: %s"
-msgstr "FT_Get_Glyph_Name () Freetype fout: %s"
+msgstr "FT_Get_Glyph_Name () Freetype-fout %s"
 
 #: open-type-font.cc:340 pango-font.cc:258
 #, c-format
 msgid "FT_Get_Glyph_Name () error: %s"
-msgstr "FT_Get_Glyph_Name () fout: %s"
+msgstr "FT_Get_Glyph_Name () fout %s"
 
 #. find out the ideal number of pages
 #: optimal-page-breaking.cc:62
@@ -2676,21 +2675,21 @@ msgstr "Zoeken naar het ideale aantal pagina's..."
 
 #: optimal-page-breaking.cc:94
 msgid "could not satisfy systems-per-page and page-count at the same time, ignoring systems-per-page"
-msgstr ""
+msgstr "kan niet tegelijkertijd tegemoetkomen aan systems-per-page en page-count; systems-per-page is genegeerd"
 
 #: optimal-page-breaking.cc:114
 msgid "Fitting music on 1 page..."
-msgstr "Muziek passend maken op 1 pagina..."
+msgstr "Muziek passend maken voor 1 pagina..."
 
 #: optimal-page-breaking.cc:116
 #, c-format
 msgid "Fitting music on %d pages..."
-msgstr "Muziek passend maken op %d pagina's..."
+msgstr "Muziek passend maken voor %d pagina's..."
 
 #: optimal-page-breaking.cc:118
 #, c-format
 msgid "Fitting music on %d or %d pages..."
-msgstr "Muziek passend maken op %d of %d pagina's..."
+msgstr "Muziek passend maken voor %d of %d pagina's..."
 
 #: optimal-page-breaking.cc:128 optimal-page-breaking.cc:181
 #, c-format
@@ -2700,7 +2699,7 @@ msgstr "proberen van %d systemen"
 #: optimal-page-breaking.cc:147 optimal-page-breaking.cc:209
 #, c-format
 msgid "best score for this sys-count: %f"
-msgstr ""
+msgstr "beste score voor dit aantal systemen: %f"
 
 #: optimal-page-breaking.cc:216 page-turn-page-breaking.cc:249
 #: paper-score.cc:156
@@ -2709,41 +2708,41 @@ msgstr "Tekenen van systemen..."
 
 #: output-def.cc:229
 msgid "margins do not fit with line-width, setting default values"
-msgstr ""
+msgstr "marges passen niet bij regellengte; worden op de standaardwaarden ingesteld"
 
 #: output-def.cc:236
 msgid "systems run off the page due to improper paper settings, setting default values"
-msgstr ""
+msgstr "er komen systemen buiten de paginarand door slechte pagina-instellingen; ze worden op de standaardwaarden ingesteld"
 
 #: page-breaking.cc:276
 msgid "ignoring min-systems-per-page and max-systems-per-page because systems-per-page was set"
-msgstr ""
+msgstr "min-systems-per-page en max-systems-per-page worden genegeerd omdat systems-per-page ingesteld werd"
 
 #: page-breaking.cc:281
 msgid "min-systems-per-page is larger than max-systems-per-page, ignoring both values"
-msgstr ""
+msgstr "min-systems-per-page is groter dan max-systems-per-page; beide waarden worden genegeerd"
 
 #: page-breaking.cc:636
 #, c-format
 msgid "page %d has been compressed"
-msgstr ""
+msgstr "pagina %d werd gecomprimeerd"
 
 #: page-layout-problem.cc:400
 msgid "A page layout problem has been initiated that cannot accommodate footnotes."
-msgstr ""
+msgstr "Er is een probleem met de paginaopmaak opgetreden waardoor geen voetnoten opgenomen kunnen worden."
 
 #: page-layout-problem.cc:729
 msgid "ragged-bottom was specified, but page must be compressed"
-msgstr ""
+msgstr "ragged-bottom werd opgegeven, maar de pagina moet gecomprimeerd worden"
 
 #: page-layout-problem.cc:732
 #, c-format
 msgid "compressing over-full page by %.1f staff-spaces"
-msgstr ""
+msgstr "comprimeren van een overvolle pagina met %.1f maal de tussenruimte tussen notenbalklijnen"
 
 #: page-layout-problem.cc:1197
 msgid "staff-affinities should only decrease"
-msgstr ""
+msgstr "staff-affinities mogen enkel afnemen"
 
 #: page-turn-page-breaking.cc:169
 #, c-format
@@ -2753,23 +2752,23 @@ msgstr "page-turn-page-breaking: afbreken van %d naar %d"
 #: page-turn-page-breaking.cc:218
 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.\n"
+"Kan de eerste paginaomslag niet op een enkele pagina ingepast krijgen.\n"
 "Overweeg om 'first-page-number' een even getal te maken."
 
 #: page-turn-page-breaking.cc:231
 #, c-format
 msgid "Calculating page and line breaks (%d possible page breaks)..."
-msgstr "Berekenen van pagina- en regelbreuken (%d mogelijke paginabreuken)..."
+msgstr "Berekenen van pagina- en regeleinden (%d mogelijke pagina-einden)..."
 
 #: page-turn-page-breaking.cc:301
 #, c-format
 msgid "break starting at page %d"
-msgstr "breuk gestart op pagina %d"
+msgstr "afbreken begint op pagina %d"
 
 #: page-turn-page-breaking.cc:302
 #, c-format
 msgid "\tdemerits: %f"
-msgstr "\tstrafpunten: %f"
+msgstr "\tminpunten: %f"
 
 #: page-turn-page-breaking.cc:303
 #, c-format
@@ -2784,12 +2783,12 @@ msgstr "\taantal bladzijden: %d"
 #: page-turn-page-breaking.cc:305
 #, c-format
 msgid "\tprevious break: %d"
-msgstr "\tvorige breuk: %d"
+msgstr "\tvorige afbreking: %d"
 
 #: pango-font.cc:247
 #, c-format
 msgid "no glyph for character U+%0X in font `%s'"
-msgstr "geen glief voor teken U+%0X in font '%s'"
+msgstr "geen symbool voor teken U+%0X in lettertype '%s'"
 
 #: pango-font.cc:274
 #, c-format
@@ -2797,41 +2796,41 @@ msgid ""
 "Glyph has no name, but font supports glyph naming.\n"
 "Skipping glyph U+%0X, file %s"
 msgstr ""
-"Glief heeft geen naam, terwijl het font gliefnamen ondersteunt.\n"
-"Glief U+%0X, bestand %s, wordt overgeslagen."
+"Symbool heeft geen naam, terwijl het lettertype symboolnamen ondersteunt.\n"
+"Symbool U+%0X, bestand %s, wordt overgeslagen."
 
 #: pango-font.cc:324
 #, c-format
 msgid "no PostScript font name for font `%s'"
-msgstr "geen PostScript-font-naam voor font '%s'"
+msgstr "geen PostScript-lettertypenaam voor lettertype '%s'"
 
 #: pango-font.cc:374
 msgid "FreeType face has no PostScript font name"
-msgstr "FreeType-lettertype heeft geen PostScript-font-naam"
+msgstr "FreeType-lettertype heeft geen PostScript-lettertypenaam"
 
 #: paper-book.cc:200
 #, c-format
 msgid "program option -dprint-pages not supported by backend `%s'"
-msgstr ""
+msgstr "de programmaoptie -dprint-pages wordt door backend '%s' niet ondersteund"
 
 #: paper-book.cc:219
 #, c-format
 msgid "program option -dpreview not supported by backend `%s'"
-msgstr ""
+msgstr "de programmaoptie -dpreview wordt door backend '%s' niet ondersteund"
 
 #: paper-column-engraver.cc:263
 msgid "forced break was overridden by some other event, should you be using bar checks?"
-msgstr "geforceerde breuk werd opgeheven door andere gebeurtenis; dient u maatcontroles te gebruiken?"
+msgstr "gedwongen afbreking werd opgeheven door andere gebeurtenis; zou u maatcontroles moeten gebruiken?"
 
 #: paper-outputter-scheme.cc:41
 #, c-format
 msgid "Layout output to `%s'..."
-msgstr "Opmaakuitvoer naar `%s'..."
+msgstr "Opmaakuitvoer naar '%s'..."
 
 #: paper-score.cc:128
 #, c-format
 msgid "Element count %d (spanners %d) "
-msgstr "Aantal elementen %d (spanners %d)"
+msgstr "Aantal elementen %d (overspanningen %d)"
 
 #: paper-score.cc:132
 msgid "Preprocessing graphical objects..."
@@ -2839,12 +2838,12 @@ msgstr "Voorbewerken van grafische objecten..."
 
 #: parse-scm.cc:124
 msgid "GUILE signaled an error for the expression beginning here"
-msgstr "GUILE signaleerde een fout voor de expressie beginnend alhier"
+msgstr "GUILE signaleerde een fout voor de hier beginnende expressie"
 
 #: pdf-scheme.cc:65
 #, c-format
 msgid "Conversion of string `%s' to UTF-16be failed: %s"
-msgstr ""
+msgstr "Conversie van tekenreeks '%s' naar UTF-16BE is mislukt: %s"
 
 #: percent-repeat-engraver.cc:148
 msgid "unterminated percent repeat"
@@ -2857,23 +2856,23 @@ msgstr "Spoor... "
 #: performance.cc:126
 #, c-format
 msgid "MIDI output to `%s'..."
-msgstr "MIDI uitvoer naar %s..."
+msgstr "MIDI-uitvoer naar '%s'..."
 
 #: piano-pedal-engraver.cc:279
 #, c-format
 msgid "expect 3 strings for piano pedals, found: %ld"
-msgstr "verwacht 3 teksten voor pianopedalen, gevonden: %ld"
+msgstr "verwacht 3 tekenreeksen voor pianopedalen, gevonden: %ld"
 
 #: piano-pedal-engraver.cc:294 piano-pedal-engraver.cc:305
 #: piano-pedal-performer.cc:104
 #, c-format
 msgid "cannot find start of piano pedal: `%s'"
-msgstr "kan start van piano pedaal niet vinden: `%s'"
+msgstr "kan begin van pianopedaal niet vinden: '%s'"
 
 #: piano-pedal-engraver.cc:340
 #, c-format
 msgid "cannot find start of piano pedal bracket: `%s'"
-msgstr "kan start van piano pedaal haak niet vinden: `%s'"
+msgstr "kan begin van pianopedaalhaakje niet vinden: '%s'"
 
 #: program-option-scheme.cc:223
 #, c-format
@@ -2887,12 +2886,12 @@ msgstr "geen grob-naam: '%s'"
 
 #: relative-octave-check.cc:49
 msgid "Failed octave check, got: "
-msgstr "Octaafcontrole is mislukt; kreeg:"
+msgstr "Octaafcontrole is mislukt; kreeg: "
 
 #: relocate.cc:56
 #, c-format
 msgid "Setting %s to %s"
-msgstr "Zetten van %s op %s"
+msgstr "Instellen van %s op %s"
 
 #. this warning should only be printed in debug mode!
 #: relocate.cc:77
@@ -2915,36 +2914,36 @@ msgstr "%s=%s (voorvoegen)\n"
 #: relocate.cc:124
 #, c-format
 msgid "not relocating, no %s/ or current/ found under %s"
-msgstr "niet verhuizen, geen %s/ of current/ gevonden onder %s"
+msgstr "er wordt niets verplaatst; er is geen %s/ of current/ gevonden onder %s"
 
 #: relocate.cc:134
 #, c-format
 msgid "Relocation: compile datadir=%s, new datadir=%s"
-msgstr "Verhuizing: samenstel datamap=%s, nieuwe datamap=%s"
+msgstr "Verplaatsing: compilatiedatamap=%s, nieuwe datamap=%s"
 
 #: relocate.cc:146
 #, c-format
 msgid "Relocation: framework_prefix=%s"
-msgstr "Verhuizing: draadwerk_voorvoegel=%s"
+msgstr "Verplaatsing: framework_prefix=%s"
 
 #: relocate.cc:172
-#, fuzzy, c-format
+#, c-format
 msgid "Relocation: is absolute: argv0=%s\n"
-msgstr "Verhuizing: is absoluut: argv0=%s"
+msgstr "Verplaatsing: pad is absoluut: argv0=%s\n"
 
 #: relocate.cc:178
-#, fuzzy, c-format
+#, c-format
 msgid "Relocation : from cwd: argv0=%s\n"
-msgstr "Verhuizing: van cwd: argv0=%s"
+msgstr "Verplaatsing: vanuit huidige werkmap: argv0=%s\n"
 
 #: relocate.cc:196
-#, fuzzy, c-format
+#, c-format
 msgid ""
 "Relocation: from PATH=%s\n"
 "argv0=%s\n"
 msgstr ""
-"Verhuizing: van PATH=%s\n"
-"argv0=%s"
+"Verplaatsing: vanuit PATH=%s\n"
+"argv0=%s\n"
 
 #: relocate.cc:222
 msgid "LILYPONDPREFIX is obsolete, use LILYPOND_DATADIR"
@@ -2953,7 +2952,7 @@ msgstr "LILYPONDPREFIX is verouderd, gebruik LILYPOND_DATADIR"
 #: relocate.cc:347
 #, c-format
 msgid "Relocation file: %s"
-msgstr "Verhuisbestand: %s"
+msgstr "Verplaatsingsbestand: %s"
 
 #: relocate.cc:351 source-file.cc:65
 #, c-format
@@ -2963,11 +2962,11 @@ msgstr "kan bestand niet openen: '%s'"
 #: relocate.cc:381
 #, c-format
 msgid "Unknown relocation command %s"
-msgstr "Onbekend verhuizingscommando %s"
+msgstr "Onbekend verplaatsingscommando %s"
 
 #: rest-collision.cc:154
 msgid "cannot resolve rest collision: rest direction not set"
-msgstr "kan rusten-botsing niet oplossen: richting van de rust is niet ingesteld"
+msgstr "kan rustbotsing niet oplossen: richting van de rust is niet ingesteld"
 
 #: rest-collision.cc:165 rest-collision.cc:274
 msgid "too many colliding rests"
@@ -2985,7 +2984,7 @@ msgstr "kan '%s' niet vinden"
 
 #: score-engraver.cc:79
 msgid "Music font has not been installed properly."
-msgstr "Muziek-font is niet correct geïnstalleerd."
+msgstr "Muzieklettertype is niet correct geïnstalleerd."
 
 #: score-engraver.cc:81
 #, c-format
@@ -3010,18 +3009,16 @@ msgstr "fouten gevonden;  muziekexpressie wordt genegeerd"
 
 #. FIXME:
 #: script-engraver.cc:115
-#, fuzzy
 msgid "do not know how to interpret articulation:"
-msgstr "weet niet hoe articulatie te vertolken: "
+msgstr "weet niet hoe articulatieteken te interpreteren:"
 
 #: script-engraver.cc:116
-#, fuzzy
 msgid " scheme encoding: "
-msgstr "scheme codering: "
+msgstr " Scheme-codering: "
 
 #: skyline-pair.cc:135
 msgid "direction must not be CENTER in ly:skyline-pair::skyline"
-msgstr ""
+msgstr "richting mag niet CENTER zijn in ly:skyline-pair::skyline"
 
 #: slur-proto-engraver.cc:51
 #, c-format
@@ -3038,7 +3035,7 @@ msgstr "heb al een %s"
 #: slur-proto-engraver.cc:183
 #, c-format
 msgid "%s without a cause"
-msgstr ""
+msgstr "%s zonder reden"
 
 #: slur-proto-engraver.cc:244
 #, c-format
@@ -3046,26 +3043,26 @@ msgid "cannot end %s"
 msgstr "kan %s niet beëindigen"
 
 #: slur.cc:436
-#, fuzzy, c-format
+#, c-format
 msgid "Ignoring grob for slur: %s.  avoid-slur not set?"
-msgstr "Negeren van grob voor boogje: %s.  avoid-slur niet gezet?"
+msgstr "Negeren van grob voor legatoboog: %s.  Is avoid-slur niet gezet?"
 
 #: source-file.cc:85
 #, c-format
 msgid "expected to read %d characters, got %d"
-msgstr "verwachtte %d tekens te lezen, kreeg %d"
+msgstr "verwachtte %d tekens te lezen, kreeg er %d"
 
 #: staff-performer.cc:301
 msgid "MIDI channel wrapped around"
-msgstr "MIDI-kanaal is klokje rond"
+msgstr "MIDI-kanaal groter dan 15"
 
 #: staff-performer.cc:302
 msgid "remapping modulo 16"
-msgstr "herafbeelden modulo 16"
+msgstr "toegewezen aan kanaal modulo 16"
 
 #: stem-engraver.cc:100
 msgid "tremolo duration is too long"
-msgstr "tremololengte is te lang"
+msgstr "tremolo duurt te lang"
 
 #: stem-engraver.cc:152
 #, c-format
@@ -3074,11 +3071,11 @@ msgstr "toevoegen van nootkop aan incompatibele stok (type = %d/%d)"
 
 #: stem-engraver.cc:155
 msgid "maybe input should specify polyphonic voices"
-msgstr "misschien moet invoer polyfonische stemmen specificeren"
+msgstr "misschien moet invoer polyfone stemmen specificeren"
 
 #: stem.cc:128
 msgid "weird stem size, check for narrow beams"
-msgstr "vreemde stoklengte; controleer op krappe waardestrepen"
+msgstr "vreemde stoklengte; controleer op smalle waardestrepen"
 
 #: system.cc:202
 #, c-format
@@ -3094,28 +3091,27 @@ msgstr "Aantal grobs: %d"
 #: text-interface.cc:139
 #, c-format
 msgid "Markup depth exceeds maximal value of %d; Markup: %s"
-msgstr ""
+msgstr "Mark-up overschrijdt maximale diepte %d; mark-up: %s"
 
 #: text-spanner-engraver.cc:72
 msgid "cannot find start of text spanner"
-msgstr "kan start van tekst-spanner niet vinden"
+msgstr "kan begin van tekstoverspanning niet vinden"
 
 #: text-spanner-engraver.cc:85
 msgid "already have a text spanner"
-msgstr "heb al een tekst-spanner"
+msgstr "heb al een tekstoverspanning"
 
 #: text-spanner-engraver.cc:130
 msgid "unterminated text spanner"
-msgstr "onbeëindigde tekst spanner"
+msgstr "onbeëindigde tekstoverspanning"
 
 #: tie-engraver.cc:121
-#, fuzzy
 msgid "unterminated tie"
-msgstr "onbeëindigde waardestreep"
+msgstr "onbeëindigde overbinding"
 
 #: tie-engraver.cc:377
 msgid "lonely tie"
-msgstr "eenzame overbinding"
+msgstr "verweesde overbinding"
 
 #.
 #. Todo: should make typecheck?
@@ -3140,12 +3136,12 @@ msgstr "Fatale fout.  Kan type niet vinden: %s"
 #: translator-group.cc:187
 #, c-format
 msgid "cannot find: `%s'"
-msgstr "kan niet vinden: '%s'"
+msgstr "kan '%s' niet vinden"
 
 #: translator.cc:310
 #, c-format
 msgid "Two simultaneous %s events, junking this one"
-msgstr "Twee gelijktijdige %s-gebeurtenissen;  deze ene wordt weggegooid"
+msgstr "Twee gelijktijdige %s-gebeurtenissen; deze ene wordt weggegooid"
 
 #: translator.cc:311
 #, c-format
@@ -3155,28 +3151,28 @@ msgstr "Vorige %s-gebeurtenis hier"
 #: ttf.cc:480 ttf.cc:528
 #, c-format
 msgid "font index %d too large for font `%s', using index 0"
-msgstr "font-index %d is te groot voor font '%s';  index 0 wordt gebruikt"
+msgstr "lettertype-index %d is te groot voor lettertype '%s'; index 0 wordt gebruikt"
 
 #: ttf.cc:512 ttf.cc:562
 msgid "font index must be non-negative, using index 0"
-msgstr "font-index mag niet negatief zijn;  index 0 wordt gebruikt"
+msgstr "lettertype-index mag niet negatief zijn; index 0 wordt gebruikt"
 
 #: tuplet-engraver.cc:110
 msgid "No tuplet to end"
-msgstr "Geen tuplet om te beëindigen"
+msgstr "Geen antimetrische figuur om te eindigen"
 
 #: vaticana-ligature-engraver.cc:400
 #, c-format
 msgid "ignored prefix(es) `%s' of this head according to restrictions of the selected ligature style"
-msgstr "voorvoegsel(s) '%s' van deze kop worden genegeerd volgens restricties van de geselecteerde ligatuurstijl"
+msgstr "voorvoegsel(s) '%s' van deze nootkop worden genegeerd volgens restricties van de geselecteerde ligatuurstijl"
 
 #: vaticana-ligature-engraver.cc:466
 msgid "Ambiguous use of dots in ligature: there are multiple dotted notes with the same pitch.  The ligature should be split."
-msgstr ""
+msgstr "Ambigue puntering gebruikt in ligatuur: er zijn meerdere gepunteerde noten met dezelfde toonhoogte.  De ligatuur zou gesplitst moeten worden. "
 
 #: vaticana-ligature-engraver.cc:524
 msgid "This ligature has a dotted head followed by a non-dotted head.  The ligature should be split after the last dotted head before this head."
-msgstr ""
+msgstr "Deze ligatuur bevat een gepunteerde nootkop gevolgd door een niet-gepunteerde nootkop.  De ligatuur zou gesplitst moeten worden na de laatste gepunteerde nootkop en voor die nootkop."
 
 #: vaticana-ligature-engraver.cc:736
 #, c-format
@@ -3185,28 +3181,28 @@ msgstr "Vaticana_ligature_engraver: instelling 'spacing-increment = %f': ptr=%ul
 
 #: vaticana-ligature.cc:94
 msgid "flexa-height undefined; assuming 0"
-msgstr "flexa-hoogte is ongedefinieerd; uitgegaan van 0"
+msgstr "toonhoogte van clivis (flexa) is niet gedefinieerd; 0 wordt verondersteld"
 
 #: vaticana-ligature.cc:99
 msgid "ascending vaticana style flexa"
-msgstr "stijgende vaticana-stijl flexa"
+msgstr "stijgende clivis (flexa) in Vaticaanse stijl"
 
 #: vertical-align-engraver.cc:95
 msgid "Ignoring Vertical_align_engraver in VerticalAxisGroup"
-msgstr ""
+msgstr "Vertical_align_engraver in VerticalAxisGroup wordt genegeerd"
 
 #. fixme: be more verbose.
 #: volta-engraver.cc:110
 msgid "cannot end volta spanner"
-msgstr "kan volta spanner niet beëindigen"
+msgstr "kan volta-overspanning niet beëindigen"
 
 #: volta-engraver.cc:120
 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-overspanning; die wordt voortijdig beëindigd"
 
 #: volta-engraver.cc:124
 msgid "also already have an ended spanner"
-msgstr "heb ook al een beëindigde spanner"
+msgstr "heb ook al een beëindigde overspanning"
 
 #: volta-engraver.cc:125
 msgid "giving up"
@@ -3218,7 +3214,7 @@ msgstr "ongeldig expressietype"
 
 #: parser.yy:859 parser.yy:1458 parser.yy:1503
 msgid "not a context mod"
-msgstr ""
+msgstr "geen contextwijziging"
 
 #: parser.yy:1054
 msgid "Missing music in \\score"
@@ -3230,11 +3226,11 @@ msgstr "\\paper kan niet gebruikt worden in \\score;  gebruik \\layout"
 
 #: parser.yy:1126
 msgid "Spurious expression in \\score"
-msgstr ""
+msgstr "Schijnbare expressie in \\score"
 
 #: parser.yy:1156
 msgid "need \\paper for paper block"
-msgstr "heb \\paper nodig voor paper blok"
+msgstr "heb \\paper nodig voor een blok van het type paper"
 
 #: parser.yy:1331
 msgid "music expected"
@@ -3246,7 +3242,7 @@ msgstr "onverwachte na-gebeurtenis"
 
 #: parser.yy:1383
 msgid "Ignoring non-music expression"
-msgstr "Negeren van non-muziekexpressie"
+msgstr "Niet-muzikale expressie wordt genegeerd"
 
 #: parser.yy:1691
 msgid "not a symbol"
@@ -3258,7 +3254,7 @@ msgstr "ongeldig pad voor grob-eigenschap"
 
 #: parser.yy:2585
 msgid "only \\consists and \\remove take non-string argument."
-msgstr "alleen \\consists en \\remove nemen een argument dat geen tekenreeks is"
+msgstr "alleen \\consists en \\remove nemen een argument dat geen tekenreeks is."
 
 #: parser.yy:2646
 msgid "bad context property path"
@@ -3290,15 +3286,15 @@ msgstr "verwachtte tekenreeks of na-gebeurtenis voor scriptdefinitie"
 
 #: parser.yy:3130
 msgid "not an articulation"
-msgstr "is geen articulatie"
+msgstr "is geen articulatieteken"
 
 #: parser.yy:3202 parser.yy:3245
 msgid "not a duration"
-msgstr "is geen lengte"
+msgstr "is geen tijdsduur"
 
 #: parser.yy:3266
 msgid "bass number expected"
-msgstr "basnummer werd verwacht"
+msgstr "verwachtte een cijfer voor de bas"
 
 #: parser.yy:3358
 msgid "have to be in Note mode for notes"
@@ -3310,11 +3306,11 @@ msgstr "moet in Chord-modus zijn voor akkoorden"
 
 #: parser.yy:3440
 msgid "markup outside of text script or \\lyricmode"
-msgstr ""
+msgstr "mark-up buiten tekstscript of \\lyricmode"
 
 #: parser.yy:3445
 msgid "unrecognized string, not in text script or \\lyricmode"
-msgstr ""
+msgstr "niet-herkende tekenreeks, niet in tekstscript of \\lyricmode"
 
 #: parser.yy:3597 parser.yy:3606
 msgid "not an unsigned integer"
@@ -3322,7 +3318,7 @@ msgstr "is geen tekenloos geheel getal"
 
 #: parser.yy:3693
 msgid "not a markup"
-msgstr ""
+msgstr "is geen mark-up"
 
 #: lexer.ll:193
 msgid "stray UTF-8 BOM encountered"
@@ -3351,12 +3347,12 @@ msgstr "geheel getal verwacht na \\sourcefileline"
 
 #: lexer.ll:300
 msgid "\\maininput not allowed outside init files"
-msgstr "\\maininput niet toegestaan buiten init bestanden"
+msgstr "\\maininput niet toegestaan buiten init-bestanden"
 
 #: lexer.ll:324
 #, c-format
 msgid "wrong or undefined identifier: `%s'"
-msgstr "verkeerde of ongedefinieerde variabele: '%s'"
+msgstr "verkeerde of ongedefinieerde variabelenaam: '%s'"
 
 #: lexer.ll:349
 msgid "string expected after \\include"
@@ -3368,7 +3364,7 @@ msgstr "afsluitend aanhalingsteken ontbreekt"
 
 #: lexer.ll:714
 msgid "EOF found inside a comment"
-msgstr "EOF gevonden in een kommentaar"
+msgstr "EOF gevonden in een commentaar"
 
 #: lexer.ll:719
 msgid "EOF found inside string"
@@ -3395,7 +3391,7 @@ msgstr "teken of afkorting is ongedefinieerd: %s"
 
 #: lexer.ll:1236
 msgid "non-UTF-8 input"
-msgstr "invoer is non-UTF-8"
+msgstr "invoer is geen UTF-8"
 
 #: lexer.ll:1280
 #, c-format
@@ -3409,16 +3405,16 @@ msgstr "bestand te oud: %s (oudste ondersteund: %s)"
 
 #: lexer.ll:1286
 msgid "consider updating the input with the convert-ly script"
-msgstr "overweeg het actualiseren van de invoer met het convert-ly script"
+msgstr "overweeg het actualiseren van de invoer met het script convert-ly"
 
 #: lexer.ll:1292
 #, c-format
 msgid "program too old: %s (file requires: %s)"
-msgstr "programma is te oud: %s  (bestand vereist: %s)"
+msgstr "programma is te oud: %s  (bestand vereist %s)"
 
 #: auto-beam.scm:147
 msgid "Beam end fits no pattern"
-msgstr ""
+msgstr "Waardestreepeinde stemt niet met een patroon overeen"
 
 #: backend-library.scm:27
 #, scheme-format
@@ -3459,42 +3455,42 @@ msgstr "Verwijderen van '~a'...\n"
 #: backend-library.scm:219
 #, scheme-format
 msgid "Writing header field `~a' to `~a'..."
-msgstr "Schrijven van header-veld '~a' naar '~a'..."
+msgstr "Schrijven van koptekstveld '~a' naar '~a'..."
 
 #: backend-library.scm:268
 #, scheme-format
 msgid "missing stencil expression `~S'"
-msgstr "ontbrekende stencilexpressie '~S'"
+msgstr "ontbrekende stencil-expressie '~S'"
 
 #: bar-line.scm:133
 #, scheme-format
 msgid "Bar glyph ~a not known. Ignoring."
-msgstr "Maatglief ~a is onbekend.  Genegeerd."
+msgstr "Maatstreepsymbool ~a is onbekend.  Genegeerd."
 
 #: bar-line.scm:161
 #, scheme-format
 msgid "Annotation '~a' is allowed in the first argument of a bar line definition only."
-msgstr ""
+msgstr "Aantekening '~a' wordt enkel toegestaan in het eerste argument van de definitie van een maatstreep."
 
 #: bar-line.scm:169
 #, scheme-format
 msgid "Replacement '~a' is allowed in the last argument of a bar line definition only."
-msgstr ""
+msgstr "Vervanging '~a' wordt enkel toegestaan in het laatste argument van de definitie van een maatstreep."
 
 #: bar-line.scm:230
 #, scheme-format
 msgid "add-bar-glyph-print-procedure: glyph '~a' has to be a single ASCII character."
-msgstr ""
+msgstr "add-bar-glyph-print-procedure: symbool '~a' moet een enkelvoudig ASCII-teken zijn."
 
 #: bar-line.scm:795
 #, scheme-format
 msgid "No span bar glyph defined for bar glyph '~a'; ignoring."
-msgstr ""
+msgstr "Geen overspanningsstreepsymbool gedefinieerd voor streepsymbool '~a'; genegeerd."
 
 #: chord-entry.scm:52
 #, scheme-format
 msgid "Spurious garbage following chord: ~A"
-msgstr ""
+msgstr "Schijnbaar staat er rommel na akkoord: ~A"
 
 #: define-context-properties.scm:31 define-grob-properties.scm:21
 #: define-music-properties.scm:21
@@ -3519,32 +3515,33 @@ msgstr "Ongedefinieerde moedergebeurtenisklasse '~S'"
 
 #: define-markup-commands.scm:1098
 msgid "no systems found in \\score markup, does it have a \\layout block?"
-msgstr "geen systemen gevonden in \\score markup; heeft het een \\layout blok?"
+msgstr "geen systemen gevonden in de mark-up van \\score; heeft het een blok van het type \\layout?"
 
 #: define-markup-commands.scm:2922
 #, scheme-format
 msgid "Cannot find glyph ~a"
-msgstr "Kan glief ~a niet vinden"
+msgstr "Kan symbool ~a niet vinden"
 
+# FIXME: trailing space?
 #: define-markup-commands.scm:3398
 #, scheme-format
 msgid "no brace found for point size ~S "
-msgstr ""
+msgstr "geen accolade gevonden voor puntgrootte ~S "
 
 #: define-markup-commands.scm:3399
 #, scheme-format
 msgid "defaulting to ~S pt"
-msgstr ""
+msgstr "de standaard van ~S pt wordt gebruikt"
 
 #: define-markup-commands.scm:3643
 #, scheme-format
 msgid "not a valid duration string: ~a"
-msgstr "geen geldige manier om een tijdsduur aan te duiden: ~a"
+msgstr "geen geldige aanduiding van een tijdsduur: ~a"
 
 #: define-markup-commands.scm:3854
 #, scheme-format
 msgid "not a valid duration string: ~a - ignoring"
-msgstr "geen geldige manier om een tijdsduur aan te duiden: ~a -> genegeerd"
+msgstr "geen geldige aanduiding van een tijdsduur: ~a -> genegeerd"
 
 #: define-music-types.scm:803
 #, scheme-format
@@ -3559,16 +3556,16 @@ msgstr "kan muziekobject niet vinden: ~S"
 #: define-music-types.scm:826
 #, scheme-format
 msgid "bad make-music argument: ~S"
-msgstr ""
+msgstr "foutief argument voor make-music: ~S"
 
 #: define-note-names.scm:1000
 msgid "Select note names language."
-msgstr ""
+msgstr "Selecteer een taal voor de nootnamen."
 
 #: define-note-names.scm:1006
 #, scheme-format
 msgid "Using `~a' note names..."
-msgstr ""
+msgstr "Nootnamen in het '~a' worden gebruikt..."
 
 #: define-note-names.scm:1009
 #, scheme-format
@@ -3578,17 +3575,17 @@ msgstr "Kan taal '~a' niet vinden.  Genegeerd."
 #: document-backend.scm:135
 #, scheme-format
 msgid "pair expected in doc ~s"
-msgstr "paar werd verwacht in doc ~s"
+msgstr "een paar werd verwacht in doc ~s"
 
 #: document-backend.scm:202
 #, scheme-format
 msgid "cannot find interface for property: ~S"
-msgstr "kan grob bediening voor eigenschap niet vinden: ~S"
+msgstr "kan geen interface vinden voor eigenschap: ~S"
 
 #: document-backend.scm:212
 #, scheme-format
 msgid "unknown Grob interface: ~S"
-msgstr "onbekende Grob-bediening: ~S"
+msgstr "onbekende Grob-interface: ~S"
 
 #: documentation-lib.scm:62
 #, scheme-format
@@ -3623,22 +3620,22 @@ msgstr "Schrijven van ~a..."
 #: framework-ps.scm:281
 #, scheme-format
 msgid "cannot embed ~S=~S"
-msgstr "kan niet inbedden ~S=~S"
+msgstr "insluiten kan niet: ~S=~S"
 
 #: framework-ps.scm:324
 #, scheme-format
 msgid "cannot extract file matching ~a from ~a"
-msgstr "kan bestand dat past op ~a niet uit ~a extraheren"
+msgstr "kan bestand dat met ~a overeenkomt niet uit ~a extraheren"
 
 #: framework-ps.scm:342
 #, scheme-format
 msgid "do not know how to embed ~S=~S"
-msgstr "weet niet hoe ~S=~S in te bedden"
+msgstr "weet niet hoe in te sluiten: ~S=~S"
 
 #: framework-ps.scm:367
 #, scheme-format
 msgid "do not know how to embed font ~s ~s ~s"
-msgstr "weet niet hoe font in te bedden: ~s ~s ~s"
+msgstr "weet niet hoe lettertype in te sluiten: ~s ~s ~s"
 
 #: framework-ps.scm:723
 msgid ""
@@ -3656,7 +3653,7 @@ msgid ""
 "  %% ****************************************************************\n"
 msgstr ""
 "\n"
-"Het PostScript-backend ondersteunt geen system-by-system uitvoer.\n"
+"Het PostScript-backend ondersteunt geen uitvoer van systeem per systeem.\n"
 "Gebruik daarvoor het EPS-backend:\n"
 "\n"
 "  lilypond -dbackend=eps BESTAND\n"
@@ -3671,35 +3668,35 @@ msgstr ""
 #: framework-svg.scm:84
 #, scheme-format
 msgid "Updating font into: ~a"
-msgstr ""
+msgstr "Bijwerken van lettertype in: ~a"
 
 #: graphviz.scm:64
 #, scheme-format
 msgid "Writing graph `~a'..."
-msgstr "Schrijven van graph '~a'..."
+msgstr "Schrijven van graaf '~a'..."
 
 #: layout-beam.scm:40
 #, scheme-format
 msgid "Error in beam quanting.  Expected (~S,~S) found ~S."
-msgstr "Fout in waardestreep kwantisering.  Verwachtte (~S,~S), gevonden ~S."
+msgstr "Fout in waardestreepdefiniëring.  Verwachtte (~S,~S), gevonden werd ~S."
 
 #: layout-beam.scm:54
 #, scheme-format
 msgid "Error in beam quanting.  Expected ~S 0, found ~S."
-msgstr "Fout in waardestreep-kwantisering.  Verwachtte ~S 0, gevonden ~S."
+msgstr "Fout in waardestreepdefiniëring.  Verwachtte ~S 0, gevonden werd ~S."
 
 #: lily-library.scm:333
 msgid "Music unsuitable for context-mod"
-msgstr ""
+msgstr "Muziek is niet geschikt voor context-mod"
 
 #: lily-library.scm:388
 #, scheme-format
 msgid "Cannot find context-def \\~a"
-msgstr ""
+msgstr "Kan contextdefinitie \\~a niet vinden"
 
 #: lily-library.scm:404
 msgid "Music unsuitable for output-def"
-msgstr ""
+msgstr "Muziek is niet geschikt voor output-def"
 
 #: lily-library.scm:904
 msgid ""
@@ -3707,6 +3704,9 @@ msgid ""
 "which produces the closest match to @var{target-val} if\n"
 "applied to function @var{getter}."
 msgstr ""
+"Vind de index die ligt tussen @var{start} en @var{end} (een geheel getal)\n"
+"en die @var{target-val} het dichtst benadert als hij op de functie\n"
+"@var{getter} toegepast wordt."
 
 #: lily-library.scm:998
 #, scheme-format
@@ -3716,19 +3716,19 @@ msgstr "onbekende eenheid: ~S"
 #: lily-library.scm:1023
 #, scheme-format
 msgid "no \\version statement found, please add~afor future compatibility"
-msgstr "geen \\version uitdrukking gevonden, voeg~atoe voor toekomstige compatibiliteit"
+msgstr "geen statement \\version gevonden; voeg ~a toe voor toekomstige compatibiliteit"
 
 #: lily.scm:93
 msgid "call-after-session used after session start"
-msgstr ""
+msgstr "call-after-session werd gebruikt nadat de sessie gestart was"
 
 #: lily.scm:111
 msgid "define-session used after session start"
-msgstr ""
+msgstr "define-session werd gebruikt nadat de sessie gestart was"
 
 #: lily.scm:417
 msgid "Using (ice-9 curried-definitions) module\n"
-msgstr ""
+msgstr "Module (ice-9 curried-definitions) wordt gebruikt\n"
 
 #: lily.scm:420
 msgid "Guile 1.8\n"
@@ -3737,15 +3737,15 @@ msgstr "Guile 1.8\n"
 #: lily.scm:477
 #, scheme-format
 msgid "cannot find: ~A"
-msgstr "kan niet vinden: ~A"
+msgstr "kan ~A niet vinden"
 
 #: lily.scm:903
 msgid "Success: compilation successfully completed"
-msgstr "Gelukt: compilatie is met succes afgesloten"
+msgstr "Gelukt: compilatie is met succes voltooid"
 
 #: lily.scm:904
 msgid "Compilation completed with warnings or errors"
-msgstr "Compilatie is afgesloten met waarschuwingen of fouten"
+msgstr "Compilatie werd voltooid met waarschuwingen of fouten"
 
 #: lily.scm:965
 #, scheme-format
@@ -3758,13 +3758,13 @@ msgid ""
 "logfile ~a (exit ~a):\n"
 "~a"
 msgstr ""
-"logbestand ~a (exit ~a):\n"
+"logbestand ~a (afsluitcode ~a):\n"
 "~a"
 
 #: lily.scm:990 lily.scm:1079
 #, scheme-format
 msgid "failed files: ~S"
-msgstr "gefaalde bestanden: ~S"
+msgstr "mislukte bestanden: ~S"
 
 # lisp-format
 #: lily.scm:1070
@@ -3775,61 +3775,61 @@ msgstr "Omleiden van uitvoer naar ~a..."
 #: lily.scm:1089
 #, scheme-format
 msgid "Invoking `~a'...\n"
-msgstr "Aanroepen van '~a'...\n"
+msgstr "Uitvoeren van '~a'...\n"
 
 #: ly-syntax-constructors.scm:27
 #, scheme-format
 msgid "~a function cannot return ~a"
-msgstr "een ~a-functie kan geen ~a teruggeven"
+msgstr "een ~a-functie kan geen terugkeerwaarde ~a hebben"
 
 #: ly-syntax-constructors.scm:60
 #, scheme-format
 msgid "wrong type for argument ~a.  Expecting ~a, found ~s"
-msgstr "Verkeerd type voor argument ~a.  Verwachtte ~a, gevonden ~s"
+msgstr "Verkeerd type voor argument ~a.  Verwachtte ~a, gevonden werd ~s"
 
 #: markup-macros.scm:331
 #, scheme-format
 msgid "Wrong number of arguments.  Expect: ~A, found ~A: ~S"
-msgstr "Verkeerd aantal argumenten.  Verwachtte ~A, gevonden ~A: ~S"
+msgstr "Verkeerd aantal argumenten.  Verwachtte ~A, gevonden werd ~A: ~S"
 
 #: markup-macros.scm:337
 #, scheme-format
 msgid "Invalid argument in position ~A.  Expect: ~A, found: ~S."
-msgstr "Ongeldig argument in positie ~A.  Verwachtte: ~A, gevonden: ~S."
+msgstr "Ongeldig argument op positie ~A.  Verwachtte: ~A, gevonden werd: ~S."
 
 #: markup-macros.scm:373
 #, scheme-format
 msgid "Not a markup command: ~A"
-msgstr ""
+msgstr "Geen mark-upcommando: ~A"
 
 #: modal-transforms.scm:38
 msgid "'from' pitch not in scale; ignoring"
-msgstr ""
+msgstr "'bron'-toonhoogte niet in toonladder; genegeerd"
 
 #: modal-transforms.scm:42 modal-transforms.scm:75
 msgid "'to' pitch not in scale; ignoring"
-msgstr ""
+msgstr "'doel'-toonhoogte niet in toonladder; genegeerd"
 
 #: modal-transforms.scm:46
 msgid "pitch to be transposed not in scale; ignoring"
-msgstr ""
+msgstr "om te zetten toonhoogte niet in toonladder; genegeerd"
 
 #: modal-transforms.scm:71
 msgid "'around' pitch not in scale; ignoring"
-msgstr ""
+msgstr "'spil'-toonhoogte niet in toonladder; genegeerd"
 
 #: modal-transforms.scm:79
 msgid "pitch to be inverted not in scale; ignoring"
-msgstr ""
+msgstr "om te keren toonhoogte niet in toonladder; genegeerd"
 
 #: modal-transforms.scm:95
 msgid "negative replication count; ignoring"
-msgstr ""
+msgstr "kopieaantal is negatief; genegeerd"
 
 #: music-functions.scm:319
 #, scheme-format
 msgid "invalid tremolo repeat count: ~a"
-msgstr "ongeldig tremolo-herhalingsaantal: ~a"
+msgstr "ongeldig aantal tremoloherhalingen: ~a"
 
 #: music-functions.scm:348
 #, scheme-format
@@ -3843,21 +3843,21 @@ msgstr "Meer alternatieven dan herhalingen.  Overtollige alternatieven zijn wegg
 #: music-functions.scm:487
 #, scheme-format
 msgid "bad grob property path ~a"
-msgstr "ongeldig pad voor grob-eigenschap: ~a"
+msgstr "foutief pad voor grob-eigenschap: ~a"
 
 #: music-functions.scm:511
 #, scheme-format
 msgid "bad context property ~a"
-msgstr "ongeldige contexteigenschap ~a"
+msgstr "foutieve contexteigenschap ~a"
 
 #: music-functions.scm:534
 #, scheme-format
 msgid "bad music property ~a"
-msgstr "ongeldige muziekeigenschap ~a"
+msgstr "foutieve muziekeigenschap ~a"
 
 #: music-functions.scm:840
 msgid "Bad chord repetition"
-msgstr "Ongeldige akkoordherhaling"
+msgstr "Foutieve akkoordherhaling"
 
 #: music-functions.scm:945
 #, scheme-format
@@ -3871,18 +3871,18 @@ msgstr "kan aangehaalde muziek niet vinden: '~S'"
 
 #: music-functions.scm:1432
 msgid "Add @var{octave-shift} to the octave of @var{pitch}."
-msgstr ""
+msgstr "Toevoegen van @var{octave-shift} aan het octaaf van @var{pitch}."
 
 # FIXME: trailing space?
 #: music-functions.scm:1495
 #, scheme-format
 msgid "Unknown octaveness type: ~S "
-msgstr "onbekend octaafheidstype: ~S "
+msgstr "Onbekend type octaaf: ~S "
 
-# FIXME: stray apostrophe
+# FIXME: stray apostrophe?
 #: music-functions.scm:1496
 msgid "Defaulting to 'any-octave."
-msgstr ""
+msgstr "De standaard 'any-octave wordt nu gebruikt."
 
 # FIXME: what does accidental mean?
 #: music-functions.scm:1888
@@ -3900,43 +3900,43 @@ msgid "not a symbol list: ~a"
 msgstr "is geen symbolenlijst: ~a"
 
 #: music-functions.scm:2629
-#, fuzzy, scheme-format
+#, scheme-format
 msgid "conflicting tag group ~a"
-msgstr "Tegenstrijdige nootgroeperingsgebeurtenissen"
+msgstr "tegenstrijdige kentekengroep ~a"
 
 #: output-ps.scm:290 output-svg.scm:539
 #, scheme-format
 msgid "unknown line-cap-style: ~S"
-msgstr "onbekende lijnkopstijl: ~S"
+msgstr "onbekende line-cap-style: ~S"
 
 #: output-ps.scm:295 output-svg.scm:545
 #, scheme-format
 msgid "unknown line-join-style: ~S"
-msgstr "onbekende lijnverbindingsstijl: ~S"
+msgstr "onbekende line-join-style: ~S"
 
 #: output-svg.scm:148
 #, scheme-format
 msgid "cannot decypher Pango description: ~a"
-msgstr "kan Pango-font-omschrijving niet ontcijferen: ~a"
+msgstr "kan Pango-omschrijving niet ontcijferen: ~a"
 
 # FIXME: capitalize Unicode
 #: output-svg.scm:228
 msgid "Glyph must have a unicode value"
-msgstr "Glief moet een Unicode-waarde hebben"
+msgstr "Symbool moet een Unicode-waarde hebben"
 
 #: output-svg.scm:280 output-svg.scm:290
 #, scheme-format
 msgid "cannot find SVG font ~S"
-msgstr "kan SVG-font ~S niet vinden"
+msgstr "kan SVG-lettertype ~S niet vinden"
 
 #: paper.scm:121
 msgid "set-global-staff-size: not in toplevel scope"
-msgstr "set-global-staff-size: niet op topniveau"
+msgstr "set-global-staff-size: niet in het hoogste geldigheidsbereik"
 
 #: paper.scm:321
 #, scheme-format
 msgid "This is not a \\layout {} object, ~S"
-msgstr "Dit is geen \\layout {} object, ~S"
+msgstr "Dit is geen object van het type \\layout {}, ~S"
 
 #: paper.scm:329
 #, scheme-format
@@ -3987,35 +3987,35 @@ msgstr "controletest is mislukt: ~S"
 #: translation-functions.scm:389
 #, scheme-format
 msgid "Negative fret for pitch ~a on string ~a"
-msgstr ""
+msgstr "Negatieve fret voor toonhoogte ~a op snaar ~a"
 
 #: translation-functions.scm:392
 #, scheme-format
 msgid "Missing fret for pitch ~a on string ~a"
-msgstr ""
+msgstr "Ontbrekende fret voor toonhoogte ~a op snaar ~a"
 
 #: translation-functions.scm:435
 #, scheme-format
 msgid "No open string for pitch ~a"
-msgstr ""
+msgstr "Geen mogelijke snaar voor toonhoogte ~a"
 
 #: translation-functions.scm:450 translation-functions.scm:462
 #, scheme-format
 msgid "Requested string for pitch requires negative fret: string ~a pitch ~a"
-msgstr ""
+msgstr "De voor de toonhoogte gevraagde snaar vereist een negatieve fret: snaar ~a toonhoogte ~a"
 
 #: translation-functions.scm:453
 msgid "Ignoring string request and recalculating."
-msgstr ""
+msgstr "De gevraagde snaar wordt genegeerd en de berekening wordt opnieuw uitgevoerd."
 
 #: translation-functions.scm:465
 msgid "Ignoring note in tablature."
-msgstr ""
+msgstr "Noot in tabulatuur wordt genegeerd."
 
 #: translation-functions.scm:490
 #, scheme-format
 msgid "No string for pitch ~a (given frets ~a)"
-msgstr ""
+msgstr "Geen snaar voor toonhoogte ~a (gezien de frets ~a)"
 
 #: translation-functions.scm:595
 #, scheme-format
@@ -4023,6 +4023,8 @@ msgid ""
 "No label for fret ~a (on string ~a);\n"
 "only ~a fret labels provided"
 msgstr ""
+"Geen label voor fret ~a (op snaar ~a);\n"
+"er zijn slechts ~a fretlabels voorzien."
 
 #~ msgid "cannot change, already in translator: %s"
 #~ msgstr "kan niet wisselen, al in vertaler: %s"
@@ -4030,14 +4032,6 @@ msgstr ""
 #~ msgid "cannot find Voice `%s'"
 #~ msgstr "kan Voice niet vinden: `%s'"
 
-#, fuzzy
-#~ msgid "Lyric syllable does not have note.  Use \\lyricsto or associatedVoice."
-#~ msgstr "Liedtekst lettergreep heeft geen noot.  Gebruik \\lyricsto of associatedVoice."
-
-#, fuzzy
-#~ msgid "Using naive multi measure rest spacing."
-#~ msgstr "enkelnootse ligatuur - overslaan"
-
 #~ msgid "(normalized pitch)"
 #~ msgstr "(genormaliseerde toonhoogte)"
 
@@ -4050,20 +4044,9 @@ msgstr ""
 #~ msgid "time signature symbol `%s' not found; reverting to numbered style"
 #~ msgstr "maatsoort-symbool '%s' niet gevonden;  teruggevallen op numerieke stijl"
 
-#, fuzzy
-#~ msgid "Too much lookahead"
-#~ msgstr "Te veel vooruitkijk"
-
 #~ msgid "score expected"
 #~ msgstr "partituur verwacht"
 
-#~ msgid "unknown repeat type `~S'"
-#~ msgstr "onbekend herhaaltype `~S'"
-
-#, fuzzy
-#~ msgid "See define-music-types.scm for supported repeats"
-#~ msgstr "Zie music-types.scm voor ondersteunde herhalingen"
-
 #~ msgid "Invalid property operation ~a"
 #~ msgstr "Ongeldige eigenschap operatie ~a"
 
@@ -4249,18 +4232,9 @@ msgstr ""
 #~ msgid "undefined: ~S"
 #~ msgstr "ongedefiniëerd: ~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)"
 
@@ -4288,9 +4262,6 @@ msgstr ""
 #~ 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."
 
@@ -4312,9 +4283,6 @@ msgstr ""
 #~ msgid "don't run LilyPond"
 #~ msgstr "draai LilyPond niet"
 
-#~ msgid "produce MIDI output only"
-#~ msgstr "produceer alleen MIDI uitvoer"
-
 #~ msgid "set the resolution of the preview to RES"
 #~ msgstr "zet de resolutie voor het testbeeld op RES"
 
@@ -4463,9 +4431,6 @@ msgstr ""
 #~ msgid "distance=%f"
 #~ msgstr "afstand=%f"
 
-#~ msgid "NaN"
-#~ msgstr "NaN"
-
 #~ msgid "no one to print a repeat brace"
 #~ msgstr "niemand om een herhalings haak af te drukken"
 
@@ -4568,15 +4533,9 @@ msgstr ""
 #~ 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)"
 
@@ -4625,15 +4584,6 @@ msgstr ""
 #~ 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 "French"
-#~ msgstr "Frans"
-
-#~ msgid "Spanish"
-#~ msgstr "Spaans"
-
-#~ msgid "German"
-#~ msgstr "Duits"
-
 #~ msgid ""
 #~ "vertical alignment called before line-breaking.\n"
 #~ "Only do cross-staff spanners with PianoStaff."
index 226ec8eb6f787b0bf8569d0dc51e6f2b99f51e92..1055615d67e413373510c133de43dd2c5aae9f43 100644 (file)
@@ -170,6 +170,8 @@ TEXINFO_INSPECTION_DOCUMENT = r'''
 
 @message{Global: textwidth=@the@hsize,exampleindent=@the@lispnarrowing}
 
+dummy
+
 @bye
 '''
 
index 362080ed9b8d72a1ede07d5d13911296b6823e9a..edd70f216dc8eaf448987f2e9f81836a4b3f7bd3 100644 (file)
@@ -306,6 +306,87 @@ line-length.
                       new-props
                       (markup #:draw-dashed-line dest))))
 
+(define-markup-command (draw-squiggle-line layout props sq-length dest eq-end?)
+  (number? number-pair? boolean?)
+  #:category graphic
+  #:properties ((thickness 0.5)
+                (angularity 0)
+                (height 0.5)
+                (orientation 1))
+  "
+@cindex drawing squiggled lines within text
+
+A squiggled line.
+
+If @code{eq-end?} is set to @code{#t}, it is ensured the squiggled line ends
+with a bow in same direction as the starting one.  @code{sq-length} is the
+length of the first bow.  @code{dest} is the end point of the squiggled line.
+To match @code{dest} the squiggled line is scaled accordingly.
+Its appearance may be customized by overrides for @code{thickness},
+@code{angularity}, @code{height} and @code{orientation}.
+@lilypond[verbatim,quote]
+\\markup
+  \\column {
+    \\draw-squiggle-line #0.5 #'(6 . 0) ##t
+    \\override #'(orientation . -1)
+    \\draw-squiggle-line #0.5 #'(6 . 0) ##t
+    \\draw-squiggle-line #0.5 #'(6 . 0) ##f
+    \\override #'(height . 1)
+    \\draw-squiggle-line #0.5 #'(6 . 0) ##t
+    \\override #'(thickness . 5)
+    \\draw-squiggle-line #0.5 #'(6 . 0) ##t
+    \\override #'(angularity . 2)
+    \\draw-squiggle-line #0.5 #'(6 . 0) ##t
+  }
+@end lilypond"
+  (let* ((line-thickness (ly:output-def-lookup layout 'line-thickness))
+         (thick (* thickness line-thickness))
+         (x (car dest))
+         (y (cdr dest))
+         (length-to-print (magnitude (make-rectangular x y)))
+         ;; Make a guess how many bows may be needed
+         (guess (max 1 (truncate (/ length-to-print sq-length))))
+         ;; If `eq-end?' is set #t, make sure squiggle-line starts and ends
+         ;; with a bow in same direction
+         (amount (if (and (even? guess) eq-end?) (1+ guess) guess))
+         ;; The lined-up bows needs to fit `length-to-print'
+         ;; Thus scale the length of first bow accordingly
+         ;; Other bows are copies
+         (guessed-squiggle-line-length (* amount sq-length))
+         (line-length-diff (- length-to-print guessed-squiggle-line-length))
+         (line-length-diff-for-each-squiggle
+           (/ line-length-diff amount))
+         (first-bow-length (+ sq-length line-length-diff-for-each-squiggle))
+         ;; Get first bows
+         ;; TODO two bows are created via `make-bow-stencil'
+         ;;      cheaper to use `ly:stencil-scale'?
+         (first-bow-end-coord
+           (cons
+             (/ (* first-bow-length x) length-to-print)
+             (/ (* first-bow-length y) length-to-print)))
+         (init-bow
+           (lambda (o)
+             (make-bow-stencil
+               '(0 . 0)
+               first-bow-end-coord
+               thick angularity height o)))
+         (init-bow-up (init-bow orientation))
+         (init-bow-down (init-bow (- orientation)))
+         ;; Get a list of starting-points for the bows
+         (list-of-starts
+           (map
+             (lambda (n)
+               (cons
+                 (* n (car first-bow-end-coord))
+                 (* n (cdr first-bow-end-coord))))
+             (iota amount))))
+    ;; The final stencil: lined-up bows
+    (apply ly:stencil-add
+      (map
+        (lambda (stil pt) (ly:stencil-translate stil pt))
+        (circular-list init-bow-up init-bow-down)
+        list-of-starts))))
+
 (define-markup-command (draw-hline layout props)
   ()
   #:category graphic
@@ -3543,9 +3624,12 @@ A feta brace in point size @var{size}, rotated 180 degrees.
 
 Construct a note symbol, with stem and flag.  By using fractional values for
 @var{dir}, longer or shorter stems can be obtained.
-Supports all note-head-styles.
+Supports all note-head-styles.  Ancient note-head-styles will get
+mensural-style-flags.  @code{flag-style} may be overridden independently.
 Supported flag-styles are @code{default}, @code{old-straight-flag},
-@code{modern-straight-flag} and @code{flat-flag}.
+@code{modern-straight-flag}, @code{flat-flag}, @code{mensural} and
+@code{neomensural}.  The latter two flag-styles will both result in
+mensural-flags.  Both are supplied for convenience.
 
 @lilypond[verbatim,quote]
 \\markup {
@@ -3556,7 +3640,8 @@ Supported flag-styles are @code{default}, @code{old-straight-flag},
 @end lilypond"
   (define (get-glyph-name-candidates dir log style)
     (map (lambda (dir-name)
-           (format #f "noteheads.~a~a" dir-name
+           (format #f "noteheads.~a~a"
+                   dir-name
                    (if (and (symbol? style)
                             (not (equal? 'default style)))
                        (select-head-glyph style (min log 2))
@@ -3642,7 +3727,9 @@ Supported flag-styles are @code{default}, @code{old-straight-flag},
                                  (sign dir) log 'default))
                 result)))
          (head-glyph (ly:font-get-glyph font head-glyph-name))
-         (ancient-flags? (or (eq? style 'mensural) (eq? style 'neomensural)))
+         (ancient-flags?
+           (member style
+                   '(mensural neomensural petrucci semipetrucci blackpetrucci)))
          (attach-indices (ly:note-head::stem-attachment font head-glyph-name))
          (stem-length (* size-factor (max 3 (- log 1))))
          ;; With ancient-flags we want a tighter stem
@@ -3658,7 +3745,10 @@ Supported flag-styles are @code{default}, @code{old-straight-flag},
                                (cdr attach-indices)))))
          ;; For a tighter stem (with ancient-flags) the stem-width has to be
          ;; adjusted.
-         (stem-X-corr (if ancient-flags? (* 0.5 dir stem-thickness) 0))
+         (stem-X-corr
+           (if (or ancient-flags?
+                   (member flag-style '(mensural neomensural)))
+                   (* 0.5 dir stem-thickness) 0))
          (stem-glyph (and (> log 0)
                           (ly:round-filled-box
                            (ordered-cons (+ stem-X-corr (car attach-off))
@@ -3696,11 +3786,15 @@ Supported flag-styles are @code{default}, @code{old-straight-flag},
                               flat-flag)
                              (else
                               (ly:font-get-glyph font
-                                                 (format #f (if ancient-flags?
-                                                                "flags.mensural~a2~a"
-                                                                "flags.~a~a")
-                                                         (if (> dir 0) "u" "d")
-                                                         log))))
+                                (format #f
+                                        (if (or (member flag-style
+                                                        '(mensural neomensural))
+                                                (and ancient-flags?
+                                                     (null? flag-style)))
+                                            "flags.mensural~a2~a"
+                                            "flags.~a~a")
+                                        (if (> dir 0) "u" "d")
+                                        log))))
                        (cons (+ (car attach-off)
                                 ;; For tighter stems (with ancient-flags) the
                                 ;; flag has to be adjusted different.
index c670eb15bf31e90ac6218fe08df33ebcd9e31847..eb487d33e9f0cc19c4443105c4b1d8c6fc26fd32 100644 (file)
@@ -507,7 +507,8 @@ messages into errors.")
             (and (eq? PLATFORM 'windows)
                  (> file-name-length 2)
                  (eq? (string-ref file-name 1) #\:)
-                 (eq? (string-ref file-name 2) #\/))))))
+                 (or (eq? (string-ref file-name 2) #\\)
+                     (eq? (string-ref file-name 2) #\/)))))))
 
 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
 ;;; If necessary, emulate Guile V2 module_export_all! for Guile V1.8.n
index 325da29dd575a147e82998a0547d9b3a5fd723c8..9c36ceaf4d4c51d3097797256c9e195c157ad330 100644 (file)
@@ -1699,173 +1699,136 @@ on the same staff line."
           (cons #f (not (or (equal? acc key-acc)
                             (and (equal? entrybn barnum) (equal? entrymp measurepos)))))))))
 
-(define-public (set-accidentals-properties extra-natural
-                                           auto-accs auto-cauts
-                                           context)
-  (context-spec-music
-   (make-sequential-music
-    (append (if (boolean? extra-natural)
-                (list (make-property-set 'extraNatural extra-natural))
-                '())
-            (list (make-property-set 'autoAccidentals auto-accs)
-                  (make-property-set 'autoCautionaries auto-cauts))))
-   context))
-
-(define-public (set-accidental-style style . rest)
-  "Set accidental style to @var{style}.  Optionally take a context
-argument, e.g. @code{'Staff} or @code{'Voice}.  The context defaults
-to @code{Staff}, except for piano styles, which use @code{GrandStaff}
-as a context."
-  (let ((context (if (pair? rest)
-                     (car rest) 'Staff))
-        (pcontext (if (pair? rest)
-                      (car rest) 'GrandStaff)))
-    (cond
+(define-session-public accidental-styles
+  ;; An alist containing specification for all accidental styles.
+  ;; Each accidental style needs three entries for the context properties
+  ;; extraNatural, autoAccidentals and autoCautionaries.
+  ;; An optional fourth entry may specify a default context for the accidental
+  ;; style, for use with the piano styles.
+  `(
      ;; accidentals as they were common in the 18th century.
-     ((equal? style 'default)
-      (set-accidentals-properties #t
-                                  `(Staff ,(make-accidental-rule 'same-octave 0))
-                                  '()
-                                  context))
+     (default #t
+              (Staff ,(make-accidental-rule 'same-octave 0))
+              ())
      ;; accidentals from one voice do NOT get canceled in other voices
-     ((equal? style 'voice)
-      (set-accidentals-properties #t
-                                  `(Voice ,(make-accidental-rule 'same-octave 0))
-                                  '()
-                                  context))
-     ;; accidentals as suggested by Kurt Stone, Music Notation in the 20th century.
-     ;; This includes all the default accidentals, but accidentals also needs canceling
-     ;; in other octaves and in the next measure.
-     ((equal? style 'modern)
-      (set-accidentals-properties #f
-                                  `(Staff ,(make-accidental-rule 'same-octave 0)
-                                          ,(make-accidental-rule 'any-octave 0)
-                                          ,(make-accidental-rule 'same-octave 1))
-                                  '()
-                                  context))
+     (voice #t
+            (Voice ,(make-accidental-rule 'same-octave 0))
+            ())
+     ;; accidentals as suggested by Kurt Stone in
+     ;; ‘Music Notation in the 20th century’.
+     ;; This includes all the default accidentals, but accidentals also need
+     ;; canceling in other octaves and in the next measure.
+     (modern #f
+             (Staff ,(make-accidental-rule 'same-octave 0)
+                    ,(make-accidental-rule 'any-octave 0)
+                    ,(make-accidental-rule 'same-octave 1))
+             ())
      ;; the accidentals that Stone adds to the old standard as cautionaries
-     ((equal? style 'modern-cautionary)
-      (set-accidentals-properties #f
-                                  `(Staff ,(make-accidental-rule 'same-octave 0))
-                                  `(Staff ,(make-accidental-rule 'any-octave 0)
-                                          ,(make-accidental-rule 'same-octave 1))
-                                  context))
-     ;; same as modern, but accidentals different from the key signature are always
-     ;; typeset - unless they directly follow a note of the same pitch.
-     ((equal? style 'neo-modern)
-      (set-accidentals-properties #f
-                                  `(Staff ,(make-accidental-rule 'same-octave 0)
-                                          ,(make-accidental-rule 'any-octave 0)
-                                          ,(make-accidental-rule 'same-octave 1)
-                                          ,neo-modern-accidental-rule)
-                                  '()
-                                  context))
-     ((equal? style 'neo-modern-cautionary)
-      (set-accidentals-properties #f
-                                  `(Staff ,(make-accidental-rule 'same-octave 0))
-                                  `(Staff ,(make-accidental-rule 'any-octave 0)
-                                          ,(make-accidental-rule 'same-octave 1)
-                                          ,neo-modern-accidental-rule)
-                                  context))
-     ((equal? style 'neo-modern-voice)
-      (set-accidentals-properties #f
-                                  `(Voice ,(make-accidental-rule 'same-octave 0)
-                                          ,(make-accidental-rule 'any-octave 0)
-                                          ,(make-accidental-rule 'same-octave 1)
-                                          ,neo-modern-accidental-rule
-                                          Staff ,(make-accidental-rule 'same-octave 0)
-                                          ,(make-accidental-rule 'any-octave 0)
-                                          ,(make-accidental-rule 'same-octave 1)
-                                          ,neo-modern-accidental-rule)
-                                  '()
-                                  context))
-     ((equal? style 'neo-modern-voice-cautionary)
-      (set-accidentals-properties #f
-                                  `(Voice ,(make-accidental-rule 'same-octave 0))
-                                  `(Voice ,(make-accidental-rule 'any-octave 0)
-                                          ,(make-accidental-rule 'same-octave 1)
-                                          ,neo-modern-accidental-rule
-                                          Staff ,(make-accidental-rule 'same-octave 0)
-                                          ,(make-accidental-rule 'any-octave 0)
-                                          ,(make-accidental-rule 'same-octave 1)
-                                          ,neo-modern-accidental-rule)
-                                  context))
+     (modern-cautionary #f
+                        (Staff ,(make-accidental-rule 'same-octave 0))
+                        (Staff ,(make-accidental-rule 'any-octave 0)
+                               ,(make-accidental-rule 'same-octave 1)))
+     ;; same as modern, but accidentals different from the key signature are
+     ;; always typeset - unless they directly follow a note of the same pitch.
+     (neo-modern #f
+                 (Staff ,(make-accidental-rule 'same-octave 0)
+                        ,(make-accidental-rule 'any-octave 0)
+                        ,(make-accidental-rule 'same-octave 1)
+                        ,neo-modern-accidental-rule)
+                 ())
+     (neo-modern-cautionary #f
+                            (Staff ,(make-accidental-rule 'same-octave 0))
+                            (Staff ,(make-accidental-rule 'any-octave 0)
+                                   ,(make-accidental-rule 'same-octave 1)
+                                   ,neo-modern-accidental-rule))
+     (neo-modern-voice #f
+                       (Voice ,(make-accidental-rule 'same-octave 0)
+                              ,(make-accidental-rule 'any-octave 0)
+                              ,(make-accidental-rule 'same-octave 1)
+                              ,neo-modern-accidental-rule
+                              Staff
+                              ,(make-accidental-rule 'same-octave 0)
+                              ,(make-accidental-rule 'any-octave 0)
+                              ,(make-accidental-rule 'same-octave 1)
+                              ,neo-modern-accidental-rule)
+                       ())
+     (neo-modern-voice-cautionary #f
+                                  (Voice ,(make-accidental-rule 'same-octave 0))
+                                  (Voice ,(make-accidental-rule 'any-octave 0)
+                                         ,(make-accidental-rule 'same-octave 1)
+                                         ,neo-modern-accidental-rule
+                                         Staff
+                                         ,(make-accidental-rule 'same-octave 0)
+                                         ,(make-accidental-rule 'any-octave 0)
+                                         ,(make-accidental-rule 'same-octave 1)
+                                         ,neo-modern-accidental-rule))
+
      ;; Accidentals as they were common in dodecaphonic music with no tonality.
      ;; Each note gets one accidental.
-     ((equal? style 'dodecaphonic)
-      (set-accidentals-properties #f
-                                  `(Staff ,(lambda (c p bn mp) '(#f . #t)))
-                                  '()
-                                  context))
+     (dodecaphonic #f
+                   (Staff ,(lambda (c p bn mp) '(#f . #t)))
+                   ())
      ;; As in dodecaphonic style with the exception that immediately
      ;; repeated notes (in the same voice) don't get an accidental
-     ((equal? style 'dodecaphonic-no-repeat)
-      (set-accidentals-properties #f
-                                  `(Staff ,dodecaphonic-no-repeat-rule)
-                                  '()
-                                  context))
+     (dodecaphonic-no-repeat #f
+                             (Staff ,dodecaphonic-no-repeat-rule)
+                             ())
      ;; Variety of the dodecaphonic style. Each note gets an accidental,
      ;; except notes that were already handled in the same measure.
-     ((equal? style 'dodecaphonic-first)
-      (set-accidentals-properties #f
-                                  `(Staff ,(make-accidental-dodecaphonic-rule 'same-octave 0))
-                                  '()
-                                  context))
+     (dodecaphonic-first #f
+                         (Staff ,(make-accidental-dodecaphonic-rule 'same-octave 0))
+                         ())
 
      ;; Multivoice accidentals to be read both by musicians playing one voice
-     ;; and musicians playing all voices.
-     ;; Accidentals are typeset for each voice, but they ARE canceled across voices.
-     ((equal? style 'modern-voice)
-      (set-accidentals-properties  #f
-                                   `(Voice ,(make-accidental-rule 'same-octave 0)
-                                           ,(make-accidental-rule 'any-octave 0)
-                                           ,(make-accidental-rule 'same-octave 1)
-                                           Staff ,(make-accidental-rule 'same-octave 0)
-                                           ,(make-accidental-rule 'any-octave 0)
-                                           ,(make-accidental-rule 'same-octave 1))
-                                   '()
-                                   context))
-     ;; same as modernVoiceAccidental eccept that all special accidentals are typeset
-     ;; as cautionaries
-     ((equal? style 'modern-voice-cautionary)
-      (set-accidentals-properties #f
-                                  `(Voice ,(make-accidental-rule 'same-octave 0))
-                                  `(Voice ,(make-accidental-rule 'any-octave 0)
-                                          ,(make-accidental-rule 'same-octave 1)
-                                          Staff ,(make-accidental-rule 'same-octave 0)
-                                          ,(make-accidental-rule 'any-octave 0)
-                                          ,(make-accidental-rule 'same-octave 1))
-                                  context))
-     ;; stone's suggestions for accidentals on grand staff.
-     ;; Accidentals are canceled across the staves in the same grand staff as well
-     ((equal? style 'piano)
-      (set-accidentals-properties #f
-                                  `(Staff ,(make-accidental-rule 'same-octave 0)
-                                          ,(make-accidental-rule 'any-octave 0)
-                                          ,(make-accidental-rule 'same-octave 1)
-                                          GrandStaff
-                                          ,(make-accidental-rule 'any-octave 0)
-                                          ,(make-accidental-rule 'same-octave 1))
-                                  '()
-                                  pcontext))
-     ((equal? style 'piano-cautionary)
-      (set-accidentals-properties #f
-                                  `(Staff ,(make-accidental-rule 'same-octave 0))
-                                  `(Staff ,(make-accidental-rule 'any-octave 0)
-                                          ,(make-accidental-rule 'same-octave 1)
-                                          GrandStaff
-                                          ,(make-accidental-rule 'any-octave 0)
-                                          ,(make-accidental-rule 'same-octave 1))
-                                  pcontext))
-
-     ;; same as modern, but cautionary accidentals are printed for all sharp or flat
-     ;; tones specified by the key signature.
-     ((equal? style 'teaching)
-      (set-accidentals-properties #f
-                                  `(Staff ,(make-accidental-rule 'same-octave 0))
-                                  `(Staff ,(make-accidental-rule 'same-octave 1)
-                                          ,teaching-accidental-rule)
-                                  context))
+     ;; and musicians playing all voices. Accidentals are typeset for each
+     ;; voice, but they ARE canceled across voices.
+     (modern-voice #f
+                   (Voice ,(make-accidental-rule 'same-octave 0)
+                          ,(make-accidental-rule 'any-octave 0)
+                          ,(make-accidental-rule 'same-octave 1)
+                          Staff
+                          ,(make-accidental-rule 'same-octave 0)
+                          ,(make-accidental-rule 'any-octave 0)
+                          ,(make-accidental-rule 'same-octave 1))
+                   ())
+     ;; same as modernVoiceAccidental except that all special accidentals
+     ;; are typeset as cautionaries
+     (modern-voice-cautionary #f
+                              (Voice ,(make-accidental-rule 'same-octave 0))
+                              (Voice ,(make-accidental-rule 'any-octave 0)
+                                     ,(make-accidental-rule 'same-octave 1)
+                                     Staff
+                                     ,(make-accidental-rule 'same-octave 0)
+                                     ,(make-accidental-rule 'any-octave 0)
+                                     ,(make-accidental-rule 'same-octave 1)))
+
+     ;; Stone's suggestions for accidentals on grand staff.
+     ;; Accidentals are canceled across the staves
+     ;; in the same grand staff as well
+     (piano #f
+            (Staff ,(make-accidental-rule 'same-octave 0)
+                   ,(make-accidental-rule 'any-octave 0)
+                   ,(make-accidental-rule 'same-octave 1)
+                   GrandStaff
+                   ,(make-accidental-rule 'any-octave 0)
+                   ,(make-accidental-rule 'same-octave 1))
+            ()
+            GrandStaff)
+     (piano-cautionary #f
+                       (Staff ,(make-accidental-rule 'same-octave 0))
+                       (Staff ,(make-accidental-rule 'any-octave 0)
+                              ,(make-accidental-rule 'same-octave 1)
+                              GrandStaff
+                              ,(make-accidental-rule 'any-octave 0)
+                              ,(make-accidental-rule 'same-octave 1))
+                       GrandStaff)
+
+     ;; same as modern, but cautionary accidentals are printed for all
+     ;; non-natural tones specified by the key signature.
+     (teaching #f
+               (Staff ,(make-accidental-rule 'same-octave 0))
+               (Staff ,(make-accidental-rule 'same-octave 1)
+                      ,teaching-accidental-rule))
 
      ;; do not set localAlterations when a note alterated differently from
      ;; localAlterations is found.
@@ -1873,22 +1836,41 @@ as a context."
      ;; remembered for the duration of a measure.
      ;; accidentals not being remembered, causing accidentals always to
      ;; be typeset relative to the time signature
-     ((equal? style 'forget)
-      (set-accidentals-properties '()
-                                  `(Staff ,(make-accidental-rule 'same-octave -1))
-                                  '()
-                                  context))
+     (forget ()
+             (Staff ,(make-accidental-rule 'same-octave -1))
+             ())
      ;; Do not reset the key at the start of a measure.  Accidentals will be
      ;; printed only once and are in effect until overridden, possibly many
      ;; measures later.
-     ((equal? style 'no-reset)
-      (set-accidentals-properties '()
-                                  `(Staff ,(make-accidental-rule 'same-octave #t))
-                                  '()
-                                  context))
-     (else
-      (ly:warning (_ "unknown accidental style: ~S") style)
-      (make-sequential-music '())))))
+     (no-reset ()
+               (Staff ,(make-accidental-rule 'same-octave #t))
+               ())
+     ))
+
+(define-public (set-accidental-style style . rest)
+  "Set accidental style to @var{style}.  Optionally take a context
+argument, e.g. @code{'Staff} or @code{'Voice}.  The context defaults
+to @code{Staff}, except for piano styles, which use @code{GrandStaff}
+as a context."
+  (let ((spec (assoc-get style accidental-styles)))
+    (if spec
+        (let ((extra-natural (first spec))
+              (auto-accs (second spec))
+              (auto-cauts (third spec))
+              (context (cond ((pair? rest) (car rest))
+                             ((= 4 (length spec)) (fourth spec))
+                             (else 'Staff))))
+          (context-spec-music
+           (make-sequential-music
+            (append (if (boolean? extra-natural)
+                        (list (make-property-set 'extraNatural extra-natural))
+                        '())
+                    (list (make-property-set 'autoAccidentals auto-accs)
+                          (make-property-set 'autoCautionaries auto-cauts))))
+           context))
+        (begin
+         (ly:warning (_ "unknown accidental style: ~S") style)
+         (make-sequential-music '())))))
 
 (define-public (invalidate-alterations context)
   "Invalidate alterations in @var{context}.
index dcec6ae939b162c26c7c0734de5b5095b852d81a..733531c3c77259a80baaa48efd8d46074fe05c80 100644 (file)
 (define-public (select-head-glyph style log)
   "Select a note head glyph string based on note head style @var{style}
 and duration-log @var{log}."
-  (case style
-    ;; "default" style is directly handled in note-head.cc as a
-    ;; special case (HW says, mainly for performance reasons).
-    ;; Therefore, style "default" does not appear in this case
-    ;; statement.  -- jr
-    ((xcircle) "2xcircle")
-    ((harmonic) "0harmonic")
-    ((harmonic-black) "2harmonic")
-    ((harmonic-mixed) (if (<= log 1) "0harmonic"
-                          "2harmonic"))
-    ((baroque)
-     ;; Oops, I actually would not call this "baroque", but, for
-     ;; backwards compatibility to 1.4, this is supposed to take
-     ;; brevis, longa and maxima from the neo-mensural font and all
-     ;; other note heads from the default font.  -- jr
-     (if (< log 0)
-         (string-append (number->string log) "neomensural")
-         (number->string log)))
-    ((altdefault)
-     ;; Like default, but brevis is drawn with double vertical lines
-     (if (= log -1)
-         (string-append (number->string log) "double")
-         (number->string log)))
-    ((mensural)
-     (string-append (number->string log) (symbol->string style)))
-    ((petrucci)
-     (if (< log 0)
-         (string-append (number->string log) "mensural")
-         (string-append (number->string log) (symbol->string style))))
-    ((blackpetrucci)
-     (if (< log 0)
-         (string-append (number->string log) "blackmensural")
-         (string-append (number->string log) (symbol->string style))))
-    ((semipetrucci)
-     (if (< log 0)
-         (string-append (number->string log) "semimensural")
-         (string-append (number->string log) "petrucci")))
-    ((neomensural)
-     (string-append (number->string log) (symbol->string style)))
-    ((kievan)
-     (string-append (number->string log) "kievan"))
-    (else
-     (if (string-match "vaticana*|hufnagel*|medicaea*" (symbol->string style))
-         (symbol->string style)
-         (string-append (number->string (max 0 log))
-                        (symbol->string style))))))
+  (if (symbol? style)
+      (case style
+        ;; "default" style is directly handled in note-head.cc as a
+        ;; special case (HW says, mainly for performance reasons).
+        ;; Therefore, style "default" does not appear in this case
+        ;; statement.  -- jr
+        ;; Though we not to care if style is '(), see below.  -- harm
+        ((xcircle) "2xcircle")
+        ((harmonic) "0harmonic")
+        ((harmonic-black) "2harmonic")
+        ((harmonic-mixed) (if (<= log 1) "0harmonic"
+                              "2harmonic"))
+        ((baroque)
+         ;; Oops, I actually would not call this "baroque", but, for
+         ;; backwards compatibility to 1.4, this is supposed to take
+         ;; brevis, longa and maxima from the neo-mensural font and all
+         ;; other note heads from the default font.  -- jr
+         (if (< log 0)
+             (string-append (number->string log) "neomensural")
+             (number->string log)))
+        ((altdefault)
+         ;; Like default, but brevis is drawn with double vertical lines
+         (if (= log -1)
+             (string-append (number->string log) "double")
+             (number->string log)))
+        ((mensural)
+         (string-append (number->string log) (symbol->string style)))
+        ((petrucci)
+         (if (< log 0)
+             (string-append (number->string log) "mensural")
+             (string-append (number->string log) (symbol->string style))))
+        ((blackpetrucci)
+         (if (< log 0)
+             (string-append (number->string log) "blackmensural")
+             (string-append (number->string log) (symbol->string style))))
+        ((semipetrucci)
+         (if (< log 0)
+             (string-append (number->string log) "semimensural")
+             (string-append (number->string log) "petrucci")))
+        ((neomensural)
+         (string-append (number->string log) (symbol->string style)))
+        ((kievan)
+         (string-append (number->string log) "kievan"))
+        (else
+         (if (string-match "vaticana*|hufnagel*|medicaea*"
+                           (symbol->string style))
+             (symbol->string style)
+             (string-append (number->string (max 0 log))
+                            (symbol->string style)))))
+      ;; 'vaticana-ligature-interface has a 'glyph-name-property for NoteHead.
+      ;; Probably best to return an empty list here, if called in a context
+      ;; without setting 'style, i.e. 'style is '(), to avoid a scheme-error.
+      '()))
 
 (define-public (note-head::calc-glyph-name grob)
   (let* ((style (ly:grob-property grob 'style))
-         (log (if (string-match "kievan*" (symbol->string style))
+         (log (if (and (symbol? style)
+                       (string-match "kievan*" (symbol->string style)))
                   (min 3 (ly:grob-property grob 'duration-log))
                   (min 2 (ly:grob-property grob 'duration-log)))))
     (select-head-glyph style log)))
index 70b13848e4aa6ad898bac04f79d33c80dfdaf838..69f277203934985a01979476b56df1803c5a1bae 100644 (file)
                                 (ly:in-event-class? cause t))
                               point-and-click))))
             (let* ((location (ly:input-file-line-char-column music-origin))
-                   (raw-file (car location))
-                   (file (if (is-absolute? raw-file)
-                             raw-file
-                             (string-append (ly-getcwd) "/" raw-file)))
                    (x-ext (ly:grob-extent grob grob X))
                    (y-ext (ly:grob-extent grob grob Y)))
 
                              ;; Backslashes are not valid
                              ;; file URI path separators.
                              (ly:string-percent-encode
-                              (ly:string-substitute "\\" "/" file))
+                              (ly:string-substitute "\\" "/" (car location)))
 
                              (cadr location)
                              (caddr location)
index 78bda3c35b8c88f376fadc6f9d471597ca1ba482..ca086318d7810d1f4769d59e6d2e88d4fc28668d 100644 (file)
                     (else (any (lambda (t)
                                  (ly:in-event-class? cause t))
                                point-and-click)))
-              (let* ((location (ly:input-file-line-char-column music-origin))
-                     (raw-file (car location))
-                     (file (if (is-absolute? raw-file)
-                               raw-file
-                               (string-append (ly-getcwd) "/" raw-file))))
-                
+              (let* ((location (ly:input-file-line-char-column music-origin)))
+
                 (ly:format "<a style=\"color:inherit;\" xlink:href=\"textedit://~a:~a:~a:~a\">\n"
                            ;; Backslashes are not valid
                            ;; file URI path separators.
                            (ly:string-percent-encode
-                            (ly:string-substitute "\\" "/" file))
-                           
+                            (ly:string-substitute "\\" "/" (car location)))
+
                            (cadr location)
                            (caddr location)
                            (1+ (cadddr location))))))))
index bec03016505e4cc5317061f08d2b80f5e416e53f..bda7e29a8f204aeb3d4fc3bce2670b1a4c90917a 100644 (file)
@@ -49,8 +49,6 @@ The higher the value of number @var{angularity}, the more angular the shape of
 the bow.
 @var{bow-height} determines the height of the bow.
 @var{orientation} determines, whether the bow is concave or convex.
-@var{orientation} should be set to @val{-1} or @val{1}, other values are
-possible but will affect the bow's height as well.
 Both variables are supplied to support independent usage.
 
 Done by calculating a horizontal unit-bow first, then moving all control-points
@@ -77,9 +75,9 @@ Limitation: s-curves are currently not supported.
           ;;;; (1) calculate control-points for the horizontal unit-bow,
                ;; y-values for 2nd/3rd control-points
                (outer-control
-                 (* 4/3 orientation (/ bow-height length-to-print)))
+                 (* 4/3 (sign orientation) (/ bow-height length-to-print)))
                (inner-control
-                 (* orientation
+                 (* (sign orientation)
                     (- (abs outer-control) (/ thickness length-to-print))))
                ;; x-values for 2nd/3rd control-points depending on `angularity'
                (offset-index
@@ -801,12 +799,19 @@ the white outline extends past the extents of stencil @var{stil}."
     (stencil-with-color (ly:round-filled-box x-ext y-ext blot) color)
     stil)))
 
-(define-public (stencil-whiteout stil style thickness line-thickness)
-  "@var{style} is a symbol that determines the shape of the white
-background.  @var{thickness} is how far, as a multiple of
-@var{line-thickness}, the white background extends past the extents
-of stencil @var{stil}. If @var{thickness} has not been specified
-by the user, an appropriate default is chosen based on @var{style}."
+(define*-public (stencil-whiteout stil
+                 #:optional style thickness (line-thickness 0.1))
+  "@var{style}, @var{thickness} and @var{line-thickness} are optional
+arguments. If set, @var{style} determines the shape of the white
+background.  Given @code{'outline} the white background is produced
+by @code{stencil-whiteout-outline}, given @code{'rounded-box} it is
+produced by @code{stencil-whiteout-box} with rounded corners, given
+other arguments (e.g. @code{'box}) or when unspecified it defaults to
+@code{stencil-whiteout-box} with square corners.  If @var{thickness} is
+specified it determines how far, as a multiple of @var{line-thickness},
+the white background extends past the extents of stencil @var{stil}.  If
+@var{thickness} has not been specified, an appropriate default is chosen
+based on @var{style}."
   (let ((thick (* line-thickness
                  (if (number? thickness)
                      thickness
index 063a346091e4c7860fcf815dac54342382009f7a..4747347a9042909e3466373ba888833f5889f8fa 100644 (file)
@@ -68,9 +68,9 @@ endif
 
 $(outdir)/%.pdf: $(outdir)/%.texi $(outdir)/version.itexi $(outdir)/%.pdf.omf $(outdir)/weblinks.itexi | $(OUT_TEXINFO_MANUALS)
 ifeq ($(WEB_VERSION),yes)
-       $(buildscript-dir)/run-and-check "cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) -D web_version -I $(abs-src-dir) $(TEXINFO_PAPERSIZE_OPTION) $(<F) < /dev/null" "$*.texi2pdf.log"
+       PDFTEX=$(PDFTEX) PDFLATEX=$(PDFLATEX) $(buildscript-dir)/run-and-check "cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) -D web_version -I $(abs-src-dir) $(TEXINFO_PAPERSIZE_OPTION) $(<F) < /dev/null" "$*.texi2pdf.log"
 else
-       $(buildscript-dir)/run-and-check "cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) -I $(abs-src-dir) $(TEXINFO_PAPERSIZE_OPTION) $(<F) < /dev/null" "$*.texi2pdf.log"
+       PDFTEX=$(PDFTEX) PDFLATEX=$(PDFLATEX) $(buildscript-dir)/run-and-check "cd $(outdir); texi2pdf $(TEXI2PDF_FLAGS) -I $(abs-src-dir) $(TEXINFO_PAPERSIZE_OPTION) $(<F) < /dev/null" "$*.texi2pdf.log"
 endif
 
 $(outdir)/%.txt: $(outdir)/%.texi $(outdir)/version.itexi $(outdir)/weblinks.itexi | $(OUT_TEXINFO_MANUALS)
index 20170d33b3e149451822e0af17d2a6fba0d2c887..7cd0e0fce581887ec9e9b804fb9df02611480650 100644 (file)
@@ -47,7 +47,7 @@ XREF_MAP_FLAGS += -I $(outdir) -I $(src-dir) $(DOCUMENTATION_INCLUDES)
 
 ###########
 ifneq ($(ISOLANG),)
-TEXI2HTML_LANG = --lang=$(ISOLANG)
+TEXI2HTML_LANG = --document-language=$(ISOLANG)
 endif
 
 TEXI2HTML_INIT = --init-file=$(top-src-dir)/Documentation/lilypond-texi2html.init
index 11838b48b00231c822c801362f720c407c52f598..f140bba94b8ddb633f72e90a31d06525199c85ed 100644 (file)
@@ -3,7 +3,7 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2015-08-17.16}
+\def\texinfoversion{2015-12-20.12}
 %
 % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
 \ifx\putwordDefopt\undefined    \gdef\putwordDefopt{User Option}\fi
 \ifx\putwordDeffunc\undefined   \gdef\putwordDeffunc{Function}\fi
 
-% Since the category of space is not known, we have to be careful.
-\chardef\spacecat = 10
-\def\spaceisspace{\catcode`\ =\spacecat}
+% Give the space character the catcode for a space.
+\def\spaceisspace{\catcode`\ =10\relax}
 
-% sometimes characters are active, so we need control sequences.
-\chardef\ampChar   = `\&
-\chardef\colonChar = `\:
-\chardef\commaChar = `\,
 \chardef\dashChar  = `\-
-\chardef\dotChar   = `\.
-\chardef\exclamChar= `\!
-\chardef\hashChar  = `\#
-\chardef\lquoteChar= `\`
-\chardef\questChar = `\?
-\chardef\rquoteChar= `\'
-\chardef\semiChar  = `\;
 \chardef\slashChar = `\/
 \chardef\underChar = `\_
 
   wide-spread wrap-around
 }
 
-% Margin to add to right of even pages, to left of odd pages.
-\newdimen\bindingoffset
-\newdimen\normaloffset
-\newdimen\pagewidth \newdimen\pageheight
-
-% For a final copy, take out the rectangles
-% that mark overfull boxes (in case you have decided
-% that the text looks ok even though it passes the margin).
-%
-\def\finalout{\overfullrule=0pt }
-
 % Sometimes it is convenient to have everything in the transcript file
 % and nothing on the terminal.  We don't just call \tracingall here,
 % since that produces some useless output on the terminal.  We also make
 \def\bigbreak{\ifnum\lastpenalty<10000\par\ifdim\lastskip<\bigskipamount
   \removelastskip\penalty-200\bigskip\fi\fi}
 
+%\f Output routine
+%
+
+% For a final copy, take out the rectangles
+% that mark overfull boxes (in case you have decided
+% that the text looks ok even though it passes the margin).
+%
+\def\finalout{\overfullrule=0pt }
+
 % Do @cropmarks to get crop marks.
 %
 \newif\ifcropmarks
 %
 % Another complication is to let the user choose whether \thischapter
 % (\thissection) refers to the chapter (section) in effect at the top
-% of a page, or that at the bottom of a page.  The solution is
-% described on page 260 of The TeXbook.  It involves outputting two
-% marks for the sectioning macros, one before the section break, and
-% one after.  I won't pretend I can describe this better than DEK...
-%
+% of a page, or that at the bottom of a page.
+
+% \domark is called twice inside \chapmacro, to add one
+% mark before the section break, and one after.
+%   In the second call \prevchapterdefs is the same as \lastchapterdefs,
+% and \prevsectiondefs is the same as \lastsectiondefs.
+%   Then if the page is not broken at the mark, some of the previous
+% section appears on the page, and we can get the name of this section
+% from \firstmark for @everyheadingmarks top.
+%   @everyheadingmarks bottom uses \botmark.
+%
+% See page 260 of The TeXbook.
 \def\domark{%
   \toks0=\expandafter{\lastchapterdefs}%
   \toks2=\expandafter{\lastsectiondefs}%
   \toks6=\expandafter{\prevsectiondefs}%
   \toks8=\expandafter{\lastcolordefs}%
   \mark{%
-                   \the\toks0 \the\toks2  % 0: top marks (\last...)
-      \noexpand\or \the\toks4 \the\toks6  % 1: bottom marks (default, \prev...)
+                   \the\toks0 \the\toks2  % 0: marks for @everyheadingmarks top
+      \noexpand\or \the\toks4 \the\toks6  % 1: for @everyheadingmarks bottom
     \noexpand\else \the\toks8             % 2: color marks
   }%
 }
+
+% \gettopheadingmarks, \getbottomheadingmarks,
+% \getcolormarks - extract needed part of mark.
+%
 % \topmark doesn't work for the very first chapter (after the title
 % page or the contents), so we use \firstmark there -- this gets us
 % the mark with the chapter defs, unless the user sneaks in, e.g.,
 \def\prevsectiondefs{}
 \def\lastcolordefs{}
 
+% Margin to add to right of even pages, to left of odd pages.
+\newdimen\bindingoffset
+\newdimen\normaloffset
+\newdimen\pagewidth \newdimen\pageheight
+
 % Main output routine.
+%
 \chardef\PAGE = 255
 \output = {\onepageout{\pagecontents\PAGE}}
 
 \newbox\headlinebox
 \newbox\footlinebox
 
-% \onepageout takes a vbox as an argument.  Note that \pagecontents
-% does insertions, but you have to call it yourself.
+% \onepageout takes a vbox as an argument.
+% \shipout a vbox for a single page, adding an optional header, footer,
+% cropmarks, and footnote.  This also causes index entries for this page
+% to be written to the auxiliary files.
+%
 \def\onepageout#1{%
   \ifcropmarks \hoffset=0pt \else \hoffset=\normaloffset \fi
   %
   \ifodd\pageno  \advance\hoffset by \bindingoffset
   \else \advance\hoffset by -\bindingoffset\fi
   %
+  % Common context changes for both heading and footing.
   % Do this outside of the \shipout so @code etc. will be expanded in
   % the headline as they should be, not taken literally (outputting ''code).
   \def\commmonheadfootline{\let\hsize=\pagewidth \texinfochars}
   %
-  \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
-  \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}%
+  % Retrieve the information for the headings from the marks in the page,
+  % and call Plain TeX's \makeheadline and \makefootline, which use the
+  % values in \headline and \footline.
+  %
+  % This is used to check if we are on the first page of a chapter.
+  \ifcase1\topmark\fi
+  \let\prevchaptername\thischaptername
+  \ifcase0\firstmark\fi
+  \let\curchaptername\thischaptername
   %
+  \ifodd\pageno \getoddheadingmarks \else \getevenheadingmarks \fi
   \ifodd\pageno \getoddfootingmarks \else \getevenfootingmarks \fi
+  %
+  \ifx\curchaptername\prevchaptername
+    \let\thischapterheading\thischapter
+  \else
+    % \thischapterheading is the same as \thischapter except it is blank
+    % for the first page of a chapter.  This is to prevent the chapter name 
+    % being shown twice.
+    \def\thischapterheading{}%
+  \fi
+  %
+  \global\setbox\headlinebox = \vbox{\commmonheadfootline \makeheadline}%
   \global\setbox\footlinebox = \vbox{\commmonheadfootline \makefootline}%
   %
   {%
+    % Set context for writing to auxiliary files like index files.
     % Have to do this stuff outside the \shipout because we want it to
     % take effect in \write's, yet the group defined by the \vbox ends
     % before the \shipout runs.
     \normalturnoffactive  % \ in index entries must not stay \, e.g., if
                % the page break happens to be in the middle of an example.
                % We don't want .vr (or whatever) entries like this:
-               % \entry{{\tt \indexbackslash }acronym}{32}{\code {\acronym}}
+               % \entry{{\indexbackslash }acronym}{32}{\code {\acronym}}
                % "\acronym" won't work when it's read back in;
                % it needs to be
-               % {\code {{\tt \backslashcurfont }acronym}
+               % {\code {{\backslashcurfont }acronym}
     \shipout\vbox{%
       % Do this early so pdf references go to the beginning of the page.
       \ifpdfmakepagedest \pdfdest name{\the\pageno} xyz\fi
 
 \newinsert\margin \dimen\margin=\maxdimen
 
+% Main part of page, including any footnotes
 \def\pagebody#1{\vbox to\pageheight{\boxmaxdepth=\maxdepth #1}}
 {\catcode`\@ =11
 \gdef\pagecontents#1{\ifvoid\topins\else\unvbox\topins\fi
 \def\nsbot{\vbox
   {\hrule height\cornerlong depth\cornerthick width\cornerthick}}
 
+
+% Argument parsing
+
 % Parse an argument, then pass it to #1.  The argument is the rest of
 % the input line (except we remove a trailing comment).  #1 should be a
 % macro which expects an ordinary undelimited TeX argument.
+% For example, \def\foo{\parsearg\fooxxx}.
 %
 \def\parsearg{\parseargusing{}}
 \def\parseargusing#1#2{%
   }%
 }
 
-% First remove any @comment, then any @c comment.
+% First remove any @comment, then any @c comment.  Also remove a @texinfoc
+% comment (see \scanmacro for details).  Pass the result on to \argcheckspaces.
 \def\argremovecomment#1\comment#2\ArgTerm{\argremovec #1\c\ArgTerm}
-\def\argremovec#1\c#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
+\def\argremovec#1\c#2\ArgTerm{\argremovetexinfoc #1\texinfoc\ArgTerm}
+\def\argremovetexinfoc#1\texinfoc#2\ArgTerm{\argcheckspaces#1\^^M\ArgTerm}
 
 % Each occurrence of `\^^M' or `<space>\^^M' is replaced by a single space.
 %
 %
 \def\finishparsearg#1 \ArgTerm{\expandafter\argtorun\expandafter{#1}}
 
+
+% \parseargdef - define a command taking an argument on the line
+%
 % \parseargdef\foo{...}
 %      is roughly equivalent to
 % \def\foo{\parsearg\Xfoo}
 % \def\Xfoo#1{...}
-%
-% Actually, I use \csname\string\foo\endcsname, ie. \\foo, as it is my
-% favourite TeX trick.  --kasal, 16nov03
-
 \def\parseargdef#1{%
   \expandafter \doparseargdef \csname\string#1\endcsname #1%
 }
     \endgraf % Not \par, as it may have been set to \lisppar.
     \global\dimen1 = \prevdepth
   \egroup           % End the \vtop.
+  \addgroupbox
+  \prevdepth = \dimen1
+  \checkinserts
+}
+
+\def\addgroupbox{
   % \dimen0 is the vertical size of the group's box.
   \dimen0 = \ht\groupbox  \advance\dimen0 by \dp\groupbox
   % \dimen2 is how much space is left on the page (more or less).
     \fi
   \fi
   \box\groupbox
-  \prevdepth = \dimen1
-  \checkinserts
 }
+
 %
 % TeX puts in an \escapechar (i.e., `@') at the beginning of the help
 % message, so this ends up printing `@group can only ...'.
@@ -939,12 +977,20 @@ where each line of input produces a line of output.}
 % @c is the same as @comment
 % @ignore ... @end ignore  is another way to write a comment
 %
-\def\comment{\begingroup \catcode`\^^M=\other%
+\def\comment{\begingroup \catcode`\^^M=\active%
+\catcode`\@=\other \catcode`\{=\other \catcode`\}=\other\commentxxx}%
+
+{\catcode`\^^M=\active%
+\gdef\commentxxx#1^^M{\endgroup%
+\futurelet\nexttoken\commentxxxx}%
+\gdef\commentxxxx{\ifx\nexttoken\aftermacro\expandafter\comment\fi}%
+}
+
+\def\c{\begingroup \catcode`\^^M=\active%
 \catcode`\@=\other \catcode`\{=\other \catcode`\}=\other%
-\commentxxx}
-{\catcode`\^^M=\other \gdef\commentxxx#1^^M{\endgroup}}
-%
-\let\c=\comment
+\cxxx}
+{\catcode`\^^M=\active \gdef\cxxx#1^^M{\endgroup}}
+% See comment in \scanmacro about why the definitions of @c and @comment differ
 
 % @paragraphindent NCHARS
 % We'll use ems for NCHARS, close enough.
@@ -1030,45 +1076,8 @@ where each line of input produces a line of output.}
 % @refill is a no-op.
 \let\refill=\relax
 
-% If working on a large document in chapters, it is convenient to
-% be able to disable indexing, cross-referencing, and contents, for test runs.
-% This is done with @novalidate (before @setfilename).
-%
-\newif\iflinks \linkstrue % by default we want the aux files.
-\let\novalidate = \linksfalse
-
-% @setfilename is done at the beginning of every texinfo file.
-% So open here the files we need to have open while reading the input.
-% This makes it possible to make a .fmt file for texinfo.
-\def\setfilename{%
-   \fixbackslash  % Turn off hack to swallow `\input texinfo'.
-   \iflinks
-     \tryauxfile
-     % Open the new aux file.  TeX will close it automatically at exit.
-     \immediate\openout\auxfile=\jobname.aux
-   \fi % \openindices needs to do some work in any case.
-   \openindices
-   \let\setfilename=\comment % Ignore extra @setfilename cmds.
-   %
-   % If texinfo.cnf is present on the system, read it.
-   % Useful for site-wide @afourpaper, etc.
-   \openin 1 texinfo.cnf
-   \ifeof 1 \else \input texinfo.cnf \fi
-   \closein 1
-   %
-   \comment % Ignore the actual filename.
-}
-
-% Called from \setfilename.
-%
-\def\openindices{%
-  \newindex{cp}%
-  \newcodeindex{fn}%
-  \newcodeindex{vr}%
-  \newcodeindex{tp}%
-  \newcodeindex{ky}%
-  \newcodeindex{pg}%
-}
+% @setfilename INFO-FILENAME - ignored
+\let\setfilename=\comment
 
 % @bye.
 \outer\def\bye{\pagealignmacro\tracingstats=1\ptexend}
@@ -1086,6 +1095,7 @@ where each line of input produces a line of output.}
 \newtoks\toksC
 \newtoks\toksD
 \newbox\boxA
+\newbox\boxB
 \newcount\countA
 \newif\ifpdf
 \newif\ifpdfmakepagedest
@@ -1143,8 +1153,8 @@ output) for that.)}
   \def\rgbDarkRed{0.50 0.09 0.12}
   \def\rgbBlack{0 0 0}
   %
-  % k sets the color for filling (usual text, etc.);
-  % K sets the color for stroking (thin rules, e.g., normal _'s).
+  % rg sets the color for filling (usual text, etc.);
+  % RG sets the color for stroking (thin rules, e.g., normal _'s).
   \def\pdfsetcolor#1{\pdfliteral{#1 rg  #1 RG}}
   %
   % Set color, and create a mark which defines \thiscolor accordingly,
@@ -1822,8 +1832,10 @@ end
 % A few fonts for @defun names and args.
 \setfont\defbf\bfshape{10}{\magstep1}{OT1}
 \setfont\deftt\ttshape{10}{\magstep1}{OT1TT}
+\setfont\defsl\slshape{10}{\magstep1}{OT1TT}
 \setfont\defttsl\ttslshape{10}{\magstep1}{OT1TT}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf
+\let\tenttsl=\defttsl \let\tensl=\defsl \bf}
 
 % Fonts for indices, footnotes, small examples (9pt).
 \def\smallnominalsize{9pt}
@@ -1954,8 +1966,10 @@ end
 % A few fonts for @defun names and args.
 \setfont\defbf\bfshape{10}{\magstephalf}{OT1}
 \setfont\deftt\ttshape{10}{\magstephalf}{OT1TT}
+\setfont\defsl\slshape{10}{\magstephalf}{OT1TT}
 \setfont\defttsl\ttslshape{10}{\magstephalf}{OT1TT}
-\def\df{\let\tentt=\deftt \let\tenbf = \defbf \let\tenttsl=\defttsl \bf}
+\def\df{\let\tentt=\deftt \let\tenbf = \defbf
+\let\tensl=\defsl \let\tenttsl=\defttsl \bf}
 
 % Fonts for indices, footnotes, small examples (9pt).
 \def\smallnominalsize{9pt}
@@ -2426,8 +2440,8 @@ end
 %
 \catcode`@=11
   \def\plainfrenchspacing{%
-    \sfcode\dotChar  =\@m \sfcode\questChar=\@m \sfcode\exclamChar=\@m
-    \sfcode\colonChar=\@m \sfcode\semiChar =\@m \sfcode\commaChar =\@m
+    \sfcode`\.=\@m \sfcode`\?=\@m \sfcode`\!=\@m
+    \sfcode`\:=\@m \sfcode`\;=\@m \sfcode`\,=\@m
     \def\endofsentencespacefactor{1000}% for @. and friends
   }
   \def\plainnonfrenchspacing{%
@@ -2615,9 +2629,9 @@ end
 
 % Allow line breaks around only a few characters (only).
 \def\urefcatcodes{%
-  \catcode\ampChar=\active   \catcode\dotChar=\active
-  \catcode\hashChar=\active  \catcode\questChar=\active
-  \catcode\slashChar=\active
+  \catcode`\&=\active \catcode`\.=\active
+  \catcode`\#=\active \catcode`\?=\active
+  \catcode`\/=\active
 }
 {
   \urefcatcodes
@@ -2774,11 +2788,6 @@ end
 %
 \def\dmn#1{\thinspace #1}
 
-% @l was never documented to mean ``switch to the Lisp font'',
-% and it is not used as such in any manual I can find.  We need it for
-% Polish suppressed-l.  --karl, 22sep96.
-%\def\l#1{{\li #1}\null}
-
 % @acronym for "FBI", "NATO", and the like.
 % We print this one point size smaller, since it's intended for
 % all-uppercase.
@@ -2831,23 +2840,24 @@ end
 \def\mathbackslash{\ifnum\fam=\ttfam \mathchar"075C \else\backslash \fi}
 %
 \def\math{%
-  \tex
-  \mathunderscore
-  \let\\ = \mathbackslash
-  \mathactive
-  % make the texinfo accent commands work in math mode
-  \let\"=\ddot
-  \let\'=\acute
-  \let\==\bar
-  \let\^=\hat
-  \let\`=\grave
-  \let\u=\breve
-  \let\v=\check
-  \let\~=\tilde
-  \let\dotaccent=\dot
-  % have to provide another name for sup operator
-  \let\mathopsup=\sup
-  $\finishmath
+  \ifmmode\else % only go into math if not in math mode already
+    \tex
+    \mathunderscore
+    \let\\ = \mathbackslash
+    \mathactive
+    % make the texinfo accent commands work in math mode
+    \let\"=\ddot
+    \let\'=\acute
+    \let\==\bar
+    \let\^=\hat
+    \let\`=\grave
+    \let\u=\breve
+    \let\v=\check
+    \let\~=\tilde
+    \let\dotaccent=\dot
+    % have to provide another name for sup operator
+    \let\mathopsup=\sup
+  $\expandafter\finishmath\fi
 }
 \def\finishmath#1{#1$\endgroup}  % Close the group opened by \tex.
 
@@ -3389,7 +3399,7 @@ end
 \newtoks\evenfootline    % footline on even pages
 \newtoks\oddfootline     % footline on odd pages
 
-% Now make TeX use those variables
+% Now make \makeheadline and \makefootline in Plain TeX use those variables
 \headline={{\textfonts\rm \ifodd\pageno \the\oddheadline
                             \else \the\evenheadline \fi}}
 \footline={{\textfonts\rm \ifodd\pageno \the\oddfootline
@@ -3445,6 +3455,10 @@ end
 % @everyheadingmarks
 % @everyfootingmarks
 
+% These define \getoddheadingmarks, \getevenheadingmarks,
+% \getoddfootingmarks, and \getevenfootingmarks, each to one of
+% \gettopheadingmarks, \getbottomheadingmarks.
+%
 \def\evenheadingmarks{\headingmarks{even}{heading}}
 \def\oddheadingmarks{\headingmarks{odd}{heading}}
 \def\evenfootingmarks{\headingmarks{even}{footing}}
@@ -3492,7 +3506,7 @@ end
 \global\evenfootline={\hfil}
 \global\oddfootline={\hfil}
 \global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapterheading\hfil\folio}}
 \global\let\contentsalignmacro = \chapoddpage
 }
 \let\contentsalignmacro = \chappager
@@ -3503,8 +3517,8 @@ end
 \global\pageno=1
 \global\evenfootline={\hfil}
 \global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\evenheadline={\line{\thischapterheading\hfil\folio}}
+\global\oddheadline={\line{\thischapterheading\hfil\folio}}
 \global\let\contentsalignmacro = \chappager
 }
 \def\HEADINGSon{\HEADINGSdouble}
@@ -3515,7 +3529,7 @@ end
 \global\evenfootline={\hfil}
 \global\oddfootline={\hfil}
 \global\evenheadline={\line{\folio\hfil\thistitle}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\oddheadline={\line{\thischapterheading\hfil\folio}}
 \global\let\contentsalignmacro = \chapoddpage
 }
 
@@ -3523,8 +3537,8 @@ end
 \def\HEADINGSsinglex{%
 \global\evenfootline={\hfil}
 \global\oddfootline={\hfil}
-\global\evenheadline={\line{\thischapter\hfil\folio}}
-\global\oddheadline={\line{\thischapter\hfil\folio}}
+\global\evenheadline={\line{\thischapterheading\hfil\folio}}
+\global\oddheadline={\line{\thischapterheading\hfil\folio}}
 \global\let\contentsalignmacro = \chappager
 }
 
@@ -3734,7 +3748,12 @@ end
    \noindent
    \hbox to 0pt{\hss \itemcontents \kern\itemmargin}%
    %
-   \vadjust{\penalty 1200}}% not good to break after first line of item.
+   \ifinner\else
+     \vadjust{\penalty 1200}% not good to break after first line of item.
+   \fi
+   % We can be in inner vertical mode in a footnote, although an
+   % @itemize looks awful there.
+  }%
   \flushcr
 }
 
@@ -4356,19 +4375,16 @@ end
 % except not \outer, so it can be used within macros and \if's.
 \edef\newwrite{\makecsname{ptexnewwrite}}
 
-% \newindex {foo} defines an index named foo.
-% It automatically defines \fooindex such that
-% \fooindex ...rest of line... puts an entry in the index foo.
-% It also defines \fooindfile to be the number of the output channel for
-% the file that accumulates this index.  The file's extension is foo.
+% \newindex {foo} defines an index named IX.
+% It automatically defines \IXindex such that
+% \IXindex ...rest of line... puts an entry in the index IX.
+% It also defines \IXindfile to be the number of the output channel for
+% the file that accumulates this index.  The file's extension is IX.
 % The name of an index should be no more than 2 characters long
 % for the sake of vms.
 %
 \def\newindex#1{%
-  \iflinks
-    \expandafter\newwrite \csname#1indfile\endcsname
-    \openout \csname#1indfile\endcsname \jobname.#1 % Open the file
-  \fi
+  \expandafter\chardef\csname#1indfile\endcsname=0
   \expandafter\xdef\csname#1index\endcsname{%     % Define @#1index
     \noexpand\doindex{#1}}
 }
@@ -4382,14 +4398,19 @@ end
 \def\defcodeindex{\parsearg\newcodeindex}
 %
 \def\newcodeindex#1{%
-  \iflinks
-    \expandafter\newwrite \csname#1indfile\endcsname
-    \openout \csname#1indfile\endcsname \jobname.#1
-  \fi
+  \expandafter\chardef\csname#1indfile\endcsname=0
   \expandafter\xdef\csname#1index\endcsname{%
     \noexpand\docodeindex{#1}}%
 }
 
+% The default indices:
+\newindex{cp}%      concepts,
+\newcodeindex{fn}%  functions,
+\newcodeindex{vr}%  variables,
+\newcodeindex{tp}%  types,
+\newcodeindex{ky}%  keys
+\newcodeindex{pg}%  and programs.
+
 
 % @synindex foo bar    makes index foo feed into index bar.
 % Do this instead of @defindex foo if you don't want it as a separate index.
@@ -4418,26 +4439,19 @@ end
   \expandafter\xdef\csname#2index\endcsname{\noexpand#1{#3}}%
 }
 
-% Define \doindex, the driver for all \fooindex macros.
+% Define \doindex, the driver for all index macros.
 % Argument #1 is generated by the calling \fooindex macro,
-%  and it is "foo", the name of the index.
-
-% \doindex just uses \parsearg; it calls \doind for the actual work.
-% This is because \doind is more useful to call from other macros.
-
-% There is also \dosubind {index}{topic}{subtopic}
-% which makes an entry in a two-level index such as the operation index.
+% and it the two-letter name of the index.
 
-\def\doindex#1{\edef\indexname{#1}\parsearg\singleindexer}
-\def\singleindexer #1{\doind{\indexname}{#1}}
+\def\doindex#1{\edef\indexname{#1}\parsearg\doindexxxx}
+\def\doindexxxx #1{\doind{\indexname}{#1}}
 
 % like the previous two, but they put @code around the argument.
-\def\docodeindex#1{\edef\indexname{#1}\parsearg\singlecodeindexer}
-\def\singlecodeindexer #1{\doind{\indexname}{\code{#1}}}
+\def\docodeindex#1{\edef\indexname{#1}\parsearg\docodeindexxxx}
+\def\docodeindexxxx #1{\doind{\indexname}{\code{#1}}}
 
-% Take care of Texinfo commands that can appear in an index entry.
-% Since there are some commands we want to expand, and others we don't,
-% we have to laboriously prevent expansion for those that we don't.
+% Used when writing an index entry out to an index file, to prevent
+% expansion of Texinfo commands that can appear in an index entry.
 %
 \def\indexdummies{%
   \escapechar = `\\     % use backslash in output files.
@@ -4453,31 +4467,6 @@ end
   \def\{{{\tt\char123}}%
   \def\}{{\tt\char125}}%
   %
-  % I don't entirely understand this, but when an index entry is
-  % generated from a macro call, the \endinput which \scanmacro inserts
-  % causes processing to be prematurely terminated.  This is,
-  % apparently, because \indexsorttmp is fully expanded, and \endinput
-  % is an expandable command.  The redefinition below makes \endinput
-  % disappear altogether for that purpose -- although logging shows that
-  % processing continues to some further point.  On the other hand, it
-  % seems \endinput does not hurt in the printed index arg, since that
-  % is still getting written without apparent harm.
-  %
-  % Sample source (mac-idx3.tex, reported by Graham Percival to
-  % help-texinfo, 22may06):
-  % @macro funindex {WORD}
-  % @findex xyz
-  % @end macro
-  % ...
-  % @funindex commtest
-  % This is not enough to reproduce the bug, but it gives the flavor.
-  %
-  % Sample whatsit resulting:
-  % .@write3{\entry{xyz}{@folio }{@code {xyz@endinput }}}
-  %
-  % So:
-  \let\endinput = \empty
-  %
   % Do the redefinitions.
   \commondummies
 }
@@ -4606,6 +4595,8 @@ end
 }
 
 % \commondummiesnofonts: common to \commondummies and \indexnofonts.
+% Define \definedumyletter, \definedummyaccent and \definedummyword before
+% using.
 %
 \def\commondummiesnofonts{%
   % Control letters and accents.
@@ -4674,21 +4665,54 @@ end
   \definedummyword\verb
   \definedummyword\w
   \definedummyword\xref
-  %
-  % Consider:
-  %   @macro mkind{arg1,arg2}
-  %   @cindex \arg2\
-  %   @end macro
-  %   @mkind{foo, bar}
-  % The space after the comma will end up in the temporary definition
-  % that we make for arg2 (see \parsemargdef ff.).  We want all this to be
-  % expanded for the sake of the index, so we end up just seeing "bar".
-  \let\xeatspaces = \eatspaces
 }
 
 % For testing: output @{ and @} in index sort strings as \{ and \}.
 \newif\ifusebracesinindexes
 
+\let\indexlbrace\relax
+\let\indexrbrace\relax
+
+{\catcode`\@=0
+\catcode`\\=13
+  @gdef@backslashdisappear{@def\{}}
+}
+
+{
+\catcode`\<=13
+\catcode`\-=13
+\catcode`\`=13
+  \gdef\indexnonalnumdisappear{%
+    \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax\else
+      % @set txiindexlquoteignore makes us ignore left quotes in the sort term.
+      % (Introduced for FSFS 2nd ed.)
+      \let`=\empty
+    \fi
+    %
+    \expandafter\ifx\csname SETtxiindexbackslashignore\endcsname\relax\else
+      \backslashdisappear
+    \fi
+    %
+    \expandafter\ifx\csname SETtxiindexhyphenignore\endcsname\relax\else
+      \def-{}%
+    \fi
+    \expandafter\ifx\csname SETtxiindexlessthanignore\endcsname\relax\else
+      \def<{}%
+    \fi
+    \expandafter\ifx\csname SETtxiindexatsignignore\endcsname\relax\else
+      \def\@{}%
+    \fi
+  }
+
+  \gdef\indexnonalnumreappear{%
+    \useindexbackslash
+    \let-\normaldash
+    \let<\normalless
+    \def\@{@}%
+  }
+}
+
+
 % \indexnofonts is used when outputting the strings to sort the index
 % by, and when constructing control sequence names.  It eliminates all
 % control sequences and just writes whatever the best ASCII sort string
@@ -4701,7 +4725,6 @@ end
   \def\definedummyletter##1{\let##1\empty}%
   % All control words become @asis by default; overrides below.
   \let\definedummyword\definedummyaccent
-  %
   \commondummiesnofonts
   %
   % Don't no-op \tt, since it isn't a user-level command
@@ -4714,16 +4737,8 @@ end
   \def\_{\normalunderscore}%
   \def\-{}% @- shouldn't affect sorting
   %
-  % Unfortunately, texindex is not prepared to handle braces in the
-  % content at all.  So for index sorting, we map @{ and @} to strings
-  % starting with |, since that ASCII character is between ASCII { and }.
-  \ifusebracesinindexes
-    \def\lbracechar{\lbracecmd}%
-    \def\rbracechar{\rbracecmd}%
-  \else
-    \def\lbracechar{|a}%
-    \def\rbracechar{|b}%
-  \fi
+  \def\lbracechar{{\indexlbrace}}%
+  \def\rbracechar{{\indexrbrace}}%
   \let\{=\lbracechar
   \let\}=\rbracechar
   %
@@ -4735,7 +4750,7 @@ end
   \def\L{L}%
   \def\OE{OE}%
   \def\O{O}%
-  \def\TH{ZZZ}%
+  \def\TH{TH}%
   \def\aa{aa}%
   \def\ae{ae}%
   \def\dh{dzz}%
@@ -4747,7 +4762,7 @@ end
   \def\o{o}%
   \def\questiondown{?}%
   \def\ss{ss}%
-  \def\th{zzz}%
+  \def\th{th}%
   %
   \def\LaTeX{LaTeX}%
   \def\TeX{TeX}%
@@ -4784,9 +4799,6 @@ end
   \def\result{=>}%
   \def\textdegree{o}%
   %
-  \expandafter\ifx\csname SETtxiindexlquoteignore\endcsname\relax
-  \else \indexlquoteignore \fi
-  %
   % 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.
   % makeinfo does not expand macros in the argument to @deffn, which ends up
@@ -4800,19 +4812,18 @@ end
   \macrolist
 }
 
-% Undocumented (for FSFS 2nd ed.): @set txiindexlquoteignore makes us
-% ignore left quotes in the sort term.
-{\catcode`\`=\active
- \gdef\indexlquoteignore{\let`=\empty}}
 
-\let\indexbackslash=0  %overridden during \printindex.
 \let\SETmarginindex=\relax % put index entries in margin (undocumented)?
 
 % Most index entries go through here, but \dosubind is the general case.
 % #1 is the index name, #2 is the entry text.
 \def\doind#1#2{\dosubind{#1}{#2}{}}
 
-% Workhorse for all \fooindexes.
+% There is also \dosubind {index}{topic}{subtopic}
+% which makes an entry in a two-level index such as the operation index.
+% TODO: Two-level index?  Operation index?
+
+% Workhorse for all indexes.
 % #1 is name of index, #2 is stuff to put there, #3 is subentry --
 % empty if called from \doind, as we usually are (the main exception
 % is with most defuns, which call us directly).
@@ -4820,6 +4831,7 @@ end
 \def\dosubind#1#2#3{%
   \iflinks
   {%
+    \requireopenindexfile{#1}%
     % Store the main index entry text (including the third arg).
     \toks0 = {#2}%
     % If third arg is present, precede it with a space.
@@ -4835,7 +4847,49 @@ end
   \fi
 }
 
-% Write the entry in \toks0 to the index file:
+% Check if an index file has been opened, and if not, open it.
+\def\requireopenindexfile#1{%
+\ifnum\csname #1indfile\endcsname=0
+  \expandafter\newwrite \csname#1indfile\endcsname
+  \edef\suffix{#1}%
+  % A .fls suffix would conflict with the file extension for the output
+  % of -recorder, so use .f1s instead.
+  \ifx\suffix\indexisfl\def\suffix{f1}\fi
+  % Open the file
+  \immediate\openout\csname#1indfile\endcsname \jobname.\suffix
+  % Using \immediate here prevents an object entering into the current box,
+  % which could confound checks such as those in \safewhatsit for preceding
+  % skips.
+\fi}
+\def\indexisfl{fl}
+
+% Output \ as {\indexbackslash}, because \ is an escape character in
+% the index files.
+\let\indexbackslash=\relax
+{\catcode`\@=0 \catcode`\\=\active
+  @gdef@useindexbackslash{@def\{{@indexbackslash}}}
+}
+
+% Definition for writing index entry text.
+\def\sortas#1{\ignorespaces}%
+
+% Definition for writing index entry sort key.  Should occur at the at
+% the beginning of the index entry, like
+%     @cindex @sortas{september} \september
+% The \ignorespaces takes care of following space, but there's no way
+% to remove space before it.
+{
+\catcode`\-=13
+\gdef\indexwritesortas{%
+  \begingroup
+  \indexnonalnumreappear
+  \indexwritesortasxxx}
+\gdef\indexwritesortasxxx#1{%
+  \xdef\indexsortkey{#1}\endgroup}
+}
+
+
+% Write the entry in \toks0 to the index file.
 %
 \def\dosubindwrite{%
   % Put the index entry in the margin if desired.
@@ -4845,14 +4899,20 @@ end
   %
   % Remember, we are within a group.
   \indexdummies % Must do this here, since \bf, etc expand at this stage
-  \def\backslashcurfont{\indexbackslash}% \indexbackslash isn't defined now
-      % so it will be output as is; and it will print as backslash.
-  %
-  % Process the index entry with all font commands turned off, to
-  % get the string to sort by.
+  \useindexbackslash % \indexbackslash isn't defined now so it will be output 
+                     % as is; and it will print as backslash.
+  % Get the string to sort by, by processing the index entry with all
+  % font commands turned off.
   {\indexnofonts
-   \edef\temp{\the\toks0}% need full expansion
-   \xdef\indexsorttmp{\temp}%
+   \indexnonalnumdisappear
+   \xdef\indexsortkey{}%
+   \let\sortas=\indexwritesortas
+   \edef\temp{\the\toks0}%
+   \setbox\dummybox = \hbox{\temp}% Make sure to execute any \sortas
+   \ifx\indexsortkey\empty
+     \xdef\indexsortkey{\temp}%
+     \ifx\indexsortkey\empty\xdef\indexsortkey{ }\fi
+   \fi
   }%
   %
   % Set up the complete index entry, with both the sort key and
@@ -4862,10 +4922,11 @@ end
   % sorted result.
   \edef\temp{%
     \write\writeto{%
-      \string\entry{\indexsorttmp}{\noexpand\folio}{\the\toks0}}%
+      \string\entry{\indexsortkey}{\noexpand\folio}{\the\toks0}}%
   }%
   \temp
 }
+\newbox\dummybox % used above
 
 % Take care of unwanted page breaks/skips around a whatsit:
 %
@@ -4991,7 +5052,9 @@ end
   % as its first line, TeX doesn't complain about mismatched braces
   % (because it thinks @} is a control sequence).
   \catcode`\@ = 11
-  \openin 1 \jobname.#1s
+  % See comment in \requireopenindexfile.
+  \def\indexname{#1}\ifx\indexname\indexisfl\def\indexname{f1}\fi
+  \openin 1 \jobname.\indexname s
   \ifeof 1
     % \enddoublecolumns gets confused if there is no text in the index,
     % and it loses the chapter title and the aux file entries for the
@@ -4999,60 +5062,82 @@ end
     % there is some text.
     \putwordIndexNonexistent
   \else
+    \catcode`\\ = 0
+    \escapechar = `\\
     %
     % If the index file exists but is empty, then \openin leaves \ifeof
     % false.  We have to make TeX try to read something from the file, so
     % it can discover if there is anything in it.
-    \read 1 to \temp
+    \read 1 to \thisline
     \ifeof 1
       \putwordIndexIsEmpty
     \else
       % Index files are almost Texinfo source, but we use \ as the escape
       % character.  It would be better to use @, but that's too big a change
       % to make right now.
-      \def\indexbackslash{\backslashcurfont}%
-      \catcode`\\ = 0
-      \escapechar = `\\
+      \def\indexbackslash{\ttbackslash}%
+      \let\indexlbrace\{   % Likewise, set these sequences for braces
+      \let\indexrbrace\}   % used in the sort key.
       \begindoublecolumns
-      \input \jobname.#1s
+      \let\entryorphanpenalty=\indexorphanpenalty
+      %
+      % Read input from the index file line by line.
+      \loopdo
+        \ifeof1
+          \let\firsttoken\relax
+        \else
+          \read 1 to \nextline
+          \edef\act{\gdef\noexpand\firsttoken{\getfirsttoken\nextline}}%
+          \act
+        \fi
+        \thisline
+        %
+        \ifeof1\else
+        \let\thisline\nextline
+      \repeat
+      %%
       \enddoublecolumns
     \fi
   \fi
   \closein 1
 \endgroup}
 
+\def\getfirsttoken#1{\expandafter\getfirsttokenx#1\endfirsttoken}
+\long\def\getfirsttokenx#1#2\endfirsttoken{\noexpand#1}
+
+\def\loopdo#1\repeat{\def\body{#1}\loopdoxxx}
+\def\loopdoxxx{\let\next=\relax\body\let\next=\loopdoxxx\fi\next}
+
 % These macros are used by the sorted index file itself.
 % Change them to control the appearance of the index.
 
-\let\normalhyphen=-
 {\catcode`\/=13 \catcode`\-=13 \catcode`\^=13 \catcode`\~=13 \catcode`\_=13
 \catcode`\|=13 \catcode`\<=13 \catcode`\>=13 \catcode`\+=13 \catcode`\"=13
 \catcode`\$=3
-\gdef\initialfonts{%
-  \usemathbackslash
-  \secfonts
+\gdef\initialglyphs{%
   % Some changes for non-alphabetic characters.  Using the glyphs from the
   % math fonts looks more consistent than the typewriter font used elsewhere
   % for these characters.
+  \def\indexbackslash{\math{\backslash}}%
+  \let\\=\indexbackslash
+  %
   % Can't get bold backslash so don't use bold forward slash
   \catcode`\/=13
-  \def/{{\secrmnotbold \normalslash}}
-  \catcode`\-=13
-  \def-{{\normalhyphen\normalhyphen}}
-  \let^=\normalcaret
-  \let~=\normaltilde
+  \def/{{\secrmnotbold \normalslash}}%
+  \def-{{\normaldash\normaldash}}% en dash `--'
+  \def^{{\chapbf \normalcaret}}%
+  \def~{{\chapbf \normaltilde}}%
   \def\_{%
-    \leavevmode \kern.07em \vbox{\hrule width.33em height.06ex}\kern .07em }
-  \def|{$\vert$}
-  \def<{$\less$}
-  \def>{$\gtr$}
-  \def+{$\normalplus$}
-  \let"=\normaldoublequote
+     \leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }%
+  \def|{$\vert$}%
+  \def<{$\less$}%
+  \def>{$\gtr$}%
+  \def+{$\normalplus$}%
 }}
 
 \def\initial{%
   \bgroup
-  \initialfonts
+  \initialglyphs
   \initialx
 }
 
@@ -5061,10 +5146,12 @@ end
   \removelastskip
   %
   % We like breaks before the index initials, so insert a bonus.
+  % The glue before the bonus allows a little bit of space at the
+  % bottom of a column to reduce an increase in inter-line spacing.
   \nobreak
-  \vskip 0pt plus 3\baselineskip
-  \penalty 0
-  \vskip 0pt plus -3\baselineskip
+  \vskip 0pt plus 5\baselineskip
+  \penalty -300 
+  \vskip 0pt plus -5\baselineskip
   %
   % Typeset the initial.  Making this add up to a whole number of
   % baselineskips increases the chance of the dots lining up from column
@@ -5072,25 +5159,24 @@ end
   % we need before each entry, but it's better.
   %
   % No shrink because it confuses \balancecolumns.
-  \vskip 1.67\baselineskip plus .5\baselineskip
-  \leftline{\secbf #1}%
+  \vskip 1.67\baselineskip plus 1\baselineskip
+  \leftline{\secfonts \kern-0.05em \secbf #1}%
+  % \secfonts is inside the argument of \leftline so that the change of
+  % \baselineskip will not affect any glue inserted before the vbox that
+  % \leftline creates.
   % Do our best not to break after the initial.
   \nobreak
   \vskip .33\baselineskip plus .1\baselineskip
-  \egroup % \initialfonts
+  \egroup % \initialglyphs
 }
 
+\newdimen\entryrightmargin
+\entryrightmargin=0pt
+
 % \entry typesets a paragraph consisting of the text (#1), dot leaders, and
 % then page number (#2) flushed to the right margin.  It is used for index
 % and table of contents entries.  The paragraph is indented by \leftskip.
 %
-% A straightforward implementation would start like this:
-%      \def\entry#1#2{...
-% But this freezes the catcodes in the argument, and can cause problems to
-% @code, which sets - active.  This problem was fixed by a kludge---
-% ``-'' was active throughout whole index, but this isn't really right.
-% The right solution is to prevent \entry from swallowing the whole text.
-%                                 --kasal, 21nov03
 \def\entry{%
   \begingroup
     %
@@ -5098,38 +5184,18 @@ end
     % affect previous text.
     \par
     %
-    % Do not fill out the last line with white space.
-    \parfillskip = 0in
-    %
     % No extra space above this paragraph.
     \parskip = 0in
     %
-    % Do not prefer a separate line ending with a hyphen to fewer lines.
-    \finalhyphendemerits = 0
-    %
-    % \hangindent is only relevant when the entry text and page number
-    % don't both fit on one line.  In that case, bob suggests starting the
-    % dots pretty far over on the line.  Unfortunately, a large
-    % indentation looks wrong when the entry text itself is broken across
-    % lines.  So we use a small indentation and put up with long leaders.
-    %
-    % \hangafter is reset to 1 (which is the value we want) at the start
-    % of each paragraph, so we need not do anything with that.
-    \hangindent = 2em
-    %
-    % When the entry text needs to be broken, just fill out the first line
-    % with blank space.
-    \rightskip = 0pt plus1fil
-    %
-    % A bit of stretch before each entry for the benefit of balancing
-    % columns.
-    \vskip 0pt plus1pt
-    %
     % When reading the text of entry, convert explicit line breaks
     % from @* into spaces.  The user might give these in long section
     % titles, for instance.
     \def\*{\unskip\space\ignorespaces}%
-    \def\entrybreak{\hfil\break}%
+    \def\entrybreak{\hfil\break}% An undocumented command
+    %
+    % A bit of stretch before each entry for the benefit of balancing
+    % columns.
+    \vskip 0pt plus0.5pt
     %
     % Swallow the left brace of the text (first parameter):
     \afterassignment\doentry
@@ -5137,45 +5203,162 @@ end
 }
 \def\entrybreak{\unskip\space\ignorespaces}%
 \def\doentry{%
+    % Save the text of the entry
+    \global\setbox\boxA=\hbox\bgroup
     \bgroup % Instead of the swallowed brace.
       \noindent
       \aftergroup\finishentry
       % And now comes the text of the entry.
+      % Not absorbing as a macro argument reduces the chance of problems
+      % with catcodes occurring.
 }
-\def\finishentry#1{%
+{\catcode`\@=11
+\gdef\finishentry#1{%
+    \egroup % end box A
+    \dimen@ = \wd\boxA % Length of text of entry
+    \global\setbox\boxA=\hbox\bgroup\unhbox\boxA
     % #1 is the page number.
     %
-    % 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.
-    \setbox\boxA = \hbox{#1}%
-    \ifdim\wd\boxA = 0pt
-      \ %
+    % Get the width of the page numbers, and only use
+    % leaders if they are present.
+    \global\setbox\boxB = \hbox{#1}%
+    \ifdim\wd\boxB = 0pt
+      \null\nobreak\hfill\ %
     \else
       %
-      % If we must, put the page number on a line of its own, and fill out
-      % this line with blank space.  (The \hfil is overwhelmed with the
-      % fill leaders glue in \indexdotfill if the page number does fit.)
-      \hfil\penalty50
       \null\nobreak\indexdotfill % Have leaders before the page number.
       %
-      % The `\ ' here is removed by the implicit \unskip that TeX does as
-      % part of (the primitive) \par.  Without it, a spurious underfull
-      % \hbox ensues.
       \ifpdf
-       \pdfgettoks#1.%
-       \ \the\toksA
+        \pdfgettoks#1.%
+        \bgroup\let\domark\relax
+          \hskip\skip\thinshrinkable\the\toksA
+        \egroup
+        % The redefinion of \domark stops marks being added in \pdflink to 
+        % preserve coloured links across page boundaries.  Otherwise the marks
+        % would get in the way of \lastbox in \insertindexentrybox.
       \else
-       \ #1%
+        \hskip\skip\thinshrinkable #1%
       \fi
     \fi
-    \par
+    \egroup % end \boxA
+    \ifdim\wd\boxB = 0pt
+      \global\setbox\entryindexbox=\vbox{\unhbox\boxA}%
+    \else
+    \global\setbox\entryindexbox=\vbox\bgroup
+      \prevdepth=\entrylinedepth
+      \noindent
+      % We want the text of the entries to be aligned to the left, and the
+      % page numbers to be aligned to the right.
+      %
+      \advance\leftskip by 0pt plus 1fil
+      \advance\leftskip by 0pt plus -1fill
+      \rightskip = 0pt plus -1fil
+      \advance\rightskip by 0pt plus 1fill
+      % Cause last line, which could consist of page numbers on their own
+      % if the list of page numbers is long, to be aligned to the right.
+      \parfillskip=0pt plus -1fill
+      %
+      \hangindent=1em
+      %
+      \advance\rightskip by \entryrightmargin
+      % Determine how far we can stretch into the margin.
+      % This allows, e.g., "Appendix H  GNU Free Documentation License" to
+      % fit on one line in @letterpaper format.
+      \ifdim\entryrightmargin>2.1em
+        \dimen@i=2.1em
+      \else
+        \dimen@i=0em
+      \fi
+      \advance \parfillskip by 0pt minus 1\dimen@i
+      %
+      \dimen@ii = \hsize
+      \advance\dimen@ii by -1\leftskip
+      \advance\dimen@ii by -1\entryrightmargin
+      \advance\dimen@ii by 1\dimen@i
+      \ifdim\wd\boxA > \dimen@ii % If the entry doesn't fit in one line
+      \ifdim\dimen@ > 0.8\dimen@ii   % due to long index text
+        \dimen@ = 0.7\dimen@ % Try to split the text roughly evenly
+        \dimen@ii = \hsize
+        \advance \dimen@ii by -1em
+        \ifnum\dimen@>\dimen@ii
+          % If the entry is too long, use the whole line
+          \dimen@ = \dimen@ii
+        \fi
+        \advance\leftskip by 0pt plus 1fill % ragged right
+        \advance \dimen@ by 1\rightskip
+        \parshape = 2 0pt \dimen@ 1em \dimen@ii
+        % Ideally we'd add a finite glue at the end of the first line only, but
+        % TeX doesn't seem to provide a way to do such a thing.
+      \fi\fi
+      \unhbox\boxA
+      %
+      % Do not prefer a separate line ending with a hyphen to fewer lines.
+      \finalhyphendemerits = 0
+      %
+      % Word spacing - no stretch
+      \spaceskip=\fontdimen2\font minus \fontdimen4\font
+      %
+      \linepenalty=1000  % Discourage line breaks.
+      \hyphenpenalty=5000  % Discourage hyphenation.
+      %
+      \par % format the paragraph
+    \egroup % The \vbox
+    \fi
   \endgroup
+  % delay text of entry until after penalty
+  \bgroup\aftergroup\insertindexentrybox
+  \entryorphanpenalty
+}}
+
+\newskip\thinshrinkable
+\skip\thinshrinkable=.15em minus .15em
+
+\newbox\entryindexbox
+\def\insertindexentrybox{%
+  \copy\entryindexbox
+  % The following gets the depth of the last box.  This is for even
+  % line spacing when entries span several lines.
+  \setbox\dummybox\vbox{%
+    \unvbox\entryindexbox
+    \nointerlineskip
+    \lastbox
+    \global\entrylinedepth=\prevdepth
+  }%
+  % Note that we couldn't simply \unvbox\entryindexbox followed by 
+  % \nointerlineskip\lastbox to remove the last box and then reinstate it, 
+  % because this resets how far the box has been \moveleft'ed to 0.  \unvbox
+  % doesn't affect \prevdepth either.
+}
+\newdimen\entrylinedepth
+
+% Default is no penalty
+\let\entryorphanpenalty\egroup
+
+% Used from \printindex.  \firsttoken should be the first token
+% after the \entry.  If it's not another \entry, we are at the last
+% line of a group of index entries, so insert a penalty to discourage
+% orphaned index entries.
+\long\def\indexorphanpenalty{%
+  \def\isentry{\entry}%
+  \ifx\firsttoken\isentry
+  \else
+    \unskip\penalty 9000
+    % The \unskip here stops breaking before the glue.  It relies on the
+    % \vskip above being there, otherwise there is an error
+    % "You can't use `\unskip' in vertical mode".  There has to be glue
+    % in the current vertical list that hasn't been added to the
+    % "current page".  See Chapter 24 of the TeXbook.  This contradicts
+    % Section 8.3.7 in "TeX by Topic," though.
+  \fi
+  \egroup % now comes the box added with \aftergroup
 }
 
 % Like plain.tex's \dotfill, except uses up at least 1 em.
+% The filll stretch here overpowers both the fil and fill stretch to push
+% the page number to the right.
 \def\indexdotfill{\cleaders
-  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1fill}
+  \hbox{$\mathsurround=0pt \mkern1.5mu.\mkern1.5mu$}\hskip 1em plus 1filll}
+
 
 \def\primary #1{\line{#1\hfil}}
 
@@ -5197,12 +5380,39 @@ end
 % Define two-column mode, which we use to typeset indexes.
 % Adapted from the TeXbook, page 416, which is to say,
 % the manmac.tex format used to print the TeXbook itself.
-\catcode`\@=11
+\catcode`\@=11  % private names
 
 \newbox\partialpage
 \newdimen\doublecolumnhsize
+\newdimen\doublecolumntopgap
+\doublecolumntopgap = 0pt
+
+% Use inside an output routine to save \topmark and \firstmark
+\def\savemarks{%
+  \global\savedtopmark=\expandafter{\topmark }%
+  \global\savedfirstmark=\expandafter{\firstmark }%
+}
+\newtoks\savedtopmark
+\newtoks\savedfirstmark
+
+% Set \topmark and \firstmark for next time \output runs.
+% Can't be run from withinside \output (because any material
+% added while an output routine is active, including 
+% penalties, is saved for after it finishes).  The page so far
+% should be empty, otherwise what's on it will be thrown away.
+\def\restoremarks{%
+  \mark{\the\savedtopmark}%
+  \bgroup\output = {%
+    \setbox\dummybox=\box\PAGE
+  }abc\eject\egroup
+  % "abc" because output routine doesn't fire for a completely empty page.
+  \mark{\the\savedfirstmark}%
+}
 
 \def\begindoublecolumns{\begingroup % ended by \enddoublecolumns
+  % If not much space left on page, start a new page.
+  \ifdim\pagetotal>0.8\vsize\vfill\eject\fi
+  %
   % Grab any single-column material above us.
   \output = {%
     %
@@ -5222,8 +5432,15 @@ end
       \unvbox\PAGE
       \kern-\topskip \kern\baselineskip
     }%
+    \savemarks
   }%
   \eject % run that output routine to set \partialpage
+  \restoremarks
+  %
+  % We recover the two marks that the last output routine saved in order
+  % to propagate the information in marks added around a chapter heading,
+  % which could be otherwise be lost by the time the final page is output.
+  %
   %
   % Use the double-column output routine for subsequent pages.
   \output = {\doublecolumnout}%
@@ -5251,13 +5468,19 @@ end
   %
   % Double the \vsize as well.  (We don't need a separate register here,
   % since nobody clobbers \vsize.)
+  \global\doublecolumntopgap = \topskip
+  \global\advance\doublecolumntopgap by -1\baselineskip
+  \advance\vsize by -1\doublecolumntopgap
   \vsize = 2\vsize
+  \topskip=0pt
+  \global\entrylinedepth=0pt\relax
 }
 
 % The double-column output routine for all double-column pages except
-% the last.
+% the last, which is done by \balancecolumns.
 %
 \def\doublecolumnout{%
+  %
   \splittopskip=\topskip \splitmaxdepth=\maxdepth
   % Get the available space for the double columns -- the normal
   % (undoubled) page height minus any material left over from the
@@ -5280,10 +5503,13 @@ end
   %
   \hsize = \doublecolumnhsize
   \wd0=\hsize \wd2=\hsize
-  \hbox to\pagewidth{\box0\hfil\box2}%
+  \vbox{%
+    \vskip\doublecolumntopgap
+    \hbox to\pagewidth{\box0\hfil\box2}}%
 }
-%
-% All done with double columns.
+
+
+% Finished with 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
@@ -5314,21 +5540,21 @@ end
   \penalty0
   %
   \output = {%
-    % Split the last of the double-column material.  Leave it on the
-    % current page, no automatic page break.
+    % Split the last of the double-column material.
+    \savemarks
     \balancecolumns
     %
-    % If we end up splitting too much material for the current page,
-    % though, there will be another page break right after this \output
-    % invocation ends.  Having called \balancecolumns once, we do not
+    % Having called \balancecolumns once, we do not
     % want to call it again.  Therefore, reset \output to its normal
-    % definition right away.  (We hope \balancecolumns will never be
-    % called on to balance too much material, but if it is, this makes
-    % the output somewhat more palatable.)
+    % definition right away.
     \global\output = {\onepageout{\pagecontents\PAGE}}%
   }%
   \eject
   \endgroup % started in \begindoublecolumns
+  \restoremarks
+  % Leave the double-column material on the current page, no automatic
+  % page break.
+  \box\balancedcolumns
   %
   % \pagegoal was set to the doubled \vsize above, since we restarted
   % the current page.  We're now back to normal single-column
@@ -5336,31 +5562,52 @@ end
   % \endgroup where \vsize got restored).
   \pagegoal = \vsize
 }
+\newbox\balancedcolumns
+\setbox\balancedcolumns=\vbox{shouldnt see this}%
 %
-% Called at the end of the double column material.
+% Only called for the last of the double column material.  \doublecolumnout 
+% does the others.
 \def\balancecolumns{%
   \setbox0 = \vbox{\unvbox255}% like \box255 but more efficient, see p.120.
   \dimen@ = \ht0
   \advance\dimen@ by \topskip
   \advance\dimen@ by-\baselineskip
-  \divide\dimen@ by 2 % target to split to
-  %debug\message{final 2-column material height=\the\ht0, target=\the\dimen@.}%
-  \splittopskip = \topskip
-  % Loop until we get a decent breakpoint.
-  {%
-    \vbadness = 10000
-    \loop
-      \global\setbox3 = \copy0
-      \global\setbox1 = \vsplit3 to \dimen@
-    \ifdim\ht3>\dimen@
-      \global\advance\dimen@ by 1pt
-    \repeat
-  }%
-  %debug\message{split to \the\dimen@, column heights: \the\ht1, \the\ht3.}%
-  \setbox0=\vbox to\dimen@{\unvbox1}%
-  \setbox2=\vbox to\dimen@{\unvbox3}%
+  \ifdim\dimen@<14\baselineskip
+    % Don't split a short final column in two.
+    \setbox2=\vbox{}%
+  \else
+    \divide\dimen@ by 2 % target to split to
+    \dimen@ii = \dimen@
+    \splittopskip = \topskip
+    % Loop until the second column is no higher than the first
+    {%
+      \vbadness = 10000
+      \loop
+        \global\setbox3 = \copy0
+        \global\setbox1 = \vsplit3 to \dimen@
+        % Remove glue from bottom of first column to
+        % make sure it is higher than the second.
+        \global\setbox1 = \vbox{\unvbox1\unpenalty\unskip}%
+      \ifdim\ht3>\ht1
+        \global\advance\dimen@ by 1pt
+      \repeat
+    }%
+    \multiply\dimen@ii by 4
+    \divide\dimen@ii by 5
+    \ifdim\ht3<\dimen@ii
+      % Column heights are too different, so don't make their bottoms
+      % flush with each other.  The glue at the end of the second column
+      % allows a second column to stretch, reducing the difference in
+      % height between the two.
+      \setbox0=\vbox to\dimen@{\unvbox1\vfill}%
+      \setbox2=\vbox to\dimen@{\unvbox3\vskip 0pt plus 0.3\ht0}%
+    \else
+      \setbox0=\vbox to\dimen@{\unvbox1}%
+      \setbox2=\vbox to\dimen@{\unvbox3}%
+    \fi
+  \fi
   %
-  \pagesofar
+  \global\setbox\balancedcolumns=\vbox{\pagesofar}%
 }
 \catcode`\@ = \other
 
@@ -5379,6 +5626,10 @@ end
     \let\lastnode=\empty      % no node to associate with
     \writetocentry{part}{#1}{}% but put it in the toc
     \headingsoff              % no headline or footline on the part page
+    % This outputs a mark at the end of the page that clears \thischapter
+    % and \thissection, as is done in \startcontents.
+    \let\pchapsepmacro\relax
+    \chapmacro{}{Yomitfromtoc}{}%
     \chapoddpage
   \endgroup
 }
@@ -5623,9 +5874,6 @@ end
 
 % @centerchap is like @unnumbered, but the heading is centered.
 \outer\parseargdef\centerchap{%
-  % Well, we could do the following in a group, but that would break
-  % an assumption that \chapmacro is called at the outermost level.
-  % Thus we are safer this way:                --kasal, 24feb04
   \let\centerparametersmaybe = \centerparameters
   \unnmhead0{#1}%
   \let\centerparametersmaybe = \relax
@@ -5749,7 +5997,11 @@ end
 
 % Define plain chapter starts, and page on/off switching for it.
 \def\chapbreak{\dobreak \chapheadingskip {-4000}}
+
+% Start a new page
 \def\chappager{\par\vfill\supereject}
+
+% \chapoddpage - start on an odd page for a new chapter
 % Because \domark is called before \chapoddpage, the filler page will
 % get the headings for the next chapter, which is wrong.  But we don't
 % care -- we just disable all headings on the filler page.
@@ -5785,7 +6037,7 @@ end
 
 \CHAPPAGon
 
-% Chapter opening.
+% \chapmacro - Chapter opening.
 %
 % #1 is the text, #2 is the section type (Ynumbered, Ynothing,
 % Yappendix, Yomitfromtoc), #3 the chapter number.
@@ -6179,7 +6431,7 @@ end
   \savepageno = \pageno
   \begingroup                  % Set up to handle contents files properly.
     \raggedbottom              % Worry more about breakpoints than the bottom.
-    \advance\hsize by -\contentsrightmargin % Don't use the full line length.
+    \entryrightmargin=\contentsrightmargin % Don't use the full line length.
     %
     % Roman numerals for page numbers.
     \ifnum \pageno>0 \global\pageno = \lastnegativepageno \fi
@@ -6284,7 +6536,7 @@ end
 
 % Chapters, in the main contents.
 \def\numchapentry#1#2#3#4{\dochapentry{#2\labelspace#1}{#4}}
-%
+
 % Chapters, in the short toc.
 % See comments in \dochapentry re vbox and related settings.
 \def\shortchapentry#1#2#3#4{%
@@ -6299,7 +6551,7 @@ end
   \setbox0 = \hbox{\putwordAppendix{} M}%
   \hbox to \wd0{\putwordAppendix{} #1\hss}}
 %
-\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\labelspace#1}{#4}}
+\def\appentry#1#2#3#4{\dochapentry{\appendixbox{#2}\hskip.7em#1}{#4}}
 
 % Unnumbered chapters.
 \def\unnchapentry#1#2#3#4{\dochapentry{#1}{#4}}
@@ -6332,6 +6584,8 @@ end
 \def\dochapentry#1#2{%
    \penalty-300 \vskip1\baselineskip plus.33\baselineskip minus.25\baselineskip
    \begingroup
+     % Move the page numbers slightly to the right
+     \advance\entryrightmargin by -0.05em
      \chapentryfonts
      \tocentry{#1}{\dopageno\bgroup#2\egroup}%
    \endgroup
@@ -6444,6 +6698,24 @@ end
 % start of the next paragraph will insert \parskip.
 %
 \def\aboveenvbreak{{%
+  % =10000 instead of <10000 because of a special case in \itemzzz and
+  % \sectionheading, q.v.
+  \ifnum \lastpenalty=10000 \else
+    \advance\envskipamount by \parskip
+    \endgraf
+    \ifdim\lastskip<\envskipamount
+      \removelastskip
+      \ifnum\lastpenalty<10000
+        % Penalize breaking before the environment, because preceding text
+        % often leads into it.
+        \penalty100
+      \fi
+      \vskip\envskipamount
+    \fi
+  \fi
+}}
+
+\def\afterenvbreak{{%
   % =10000 instead of <10000 because of a special case in \itemzzz and
   % \sectionheading, q.v.
   \ifnum \lastpenalty=10000 \else
@@ -6459,8 +6731,6 @@ end
   \fi
 }}
 
-\let\afterenvbreak = \aboveenvbreak
-
 % \nonarrowing is a flag.  If "set", @lisp etc don't narrow margins; it will
 % also clear it, so that its embedded environments do the narrowing again.
 \let\nonarrowing=\relax
@@ -6504,7 +6774,7 @@ end
   % collide with the section heading.
   \ifnum\lastpenalty>10000 \vskip\parskip \penalty\lastpenalty \fi
   %
-  \vbox\bgroup
+  \setbox\groupbox=\vbox\bgroup
       \baselineskip=0pt\parskip=0pt\lineskip=0pt
       \carttop
       \hbox\bgroup
@@ -6528,6 +6798,7 @@ end
       \egroup
       \cartbot
   \egroup
+  \addgroupbox
   \checkinserts
 }
 
@@ -7005,7 +7276,7 @@ end
   \temp
 }
 
-% \domakedefun \deffn \deffnx \deffnheader
+% \domakedefun \deffn \deffnx \deffnheader { (defn. of \deffnheader) }
 %
 % Define \deffn and \deffnx, without parameters.
 % \deffnheader has to be defined explicitly.
@@ -7343,38 +7614,43 @@ end
   }
 \fi
 
-% Used to remove a category 13 newline, added to the end of the last
-% line read in by \scantokens.
-{\catcode`\^^M=13 \gdef\gobblecr^^M{}}
+\let\aftermacroxxx\relax
+\def\aftermacro{\aftermacroxxx}
 
+% alias because \c means cedilla in @tex or @math
+\let\texinfoc=\c
+
+% Used at the time of macro expansion.
 % Argument is macro body with arguments substituted
-\def\scanmacro#1{\begingroup
+\def\scanmacro#1{%
   \newlinechar`\^^M
-  \let\xeatspaces\eatspaces
+  \def\xprocessmacroarg{\eatspaces}%
   %
-  % Undo catcode changes of \startcontents and \doprintindex
-  % When called from @insertcopying or (short)caption, we need active
-  % backslash to get it printed correctly.  Previously, we had
-  % \catcode`\\=\other instead.  We'll see whether a problem appears
-  % with macro expansion.                              --kasal, 19aug04
-  \catcode`\@=0 \catcode`\\=\active \escapechar=`\@
+  % Process the macro body under the current catcode regime.
+  \scantokens{#1\texinfoc}\aftermacro%
   %
-  % ... and for \example:
-  \spaceisspace
-  %
-  \ifnum\catcode`\^^M=5
-    % The \empty here causes a following catcode 5 newline to be eaten as
-    % part of reading whitespace after a control sequence.
-    \scantokens{#1\empty}%
-  \else
-    \catcode`\^^M=13
-    \scantokens{#1\gobblecr}%
-  \fi
-\endgroup}
+  % The \c is to remove the \newlinechar added by \scantokens, and
+  % can be noticed by \parsearg.
+  %   The \aftermacro allows a \comment at the end of the macro definition
+  % to duplicate itself past the final \newlinechar added by \scantokens:
+  % this is used in the definition of \group to comment out a newline.  We
+  % don't do the same for \c to support Texinfo files with macros that ended
+  % with a @c, which should no longer be necessary.
+  %   We avoid surrounding the call to \scantokens with \bgroup and \egroup
+  % to allow macros to open or close groups themselves.
+}
 
+% Used for copying and captions
 \def\scanexp#1{%
+  \bgroup
+  % Undo catcode changes of \startcontents and \printindex
+  % When called from @insertcopying or (short)caption, we need active
+  % backslash to get it printed correctly.
+  % FIXME: This may not be needed.
+  %\catcode`\@=0 \catcode`\\=\active \escapechar=`\@
   \edef\temp{\noexpand\scanmacro{#1}}%
   \temp
+  \egroup
 }
 
 \newcount\paramno   % Count of parameters
@@ -7440,7 +7716,6 @@ end
   \catcode`\+=\other
   \catcode`\<=\other
   \catcode`\>=\other
-  \catcode`\@=\other
   \catcode`\^=\other
   \catcode`\_=\other
   \catcode`\|=\other
@@ -7450,6 +7725,7 @@ end
 
 \def\scanargctxt{% used for copying and captions, not macros.
   \scanctxt
+  \catcode`\@=\other
   \catcode`\\=\other
   \catcode`\^^M=\other
 }
@@ -7457,6 +7733,7 @@ end
 \def\macrobodyctxt{% used for @macro definitions
   \scanctxt
   \catcode`\ =\other
+  \catcode`\@=\other
   \catcode`\{=\other
   \catcode`\}=\other
   \catcode`\^^M=\other
@@ -7468,11 +7745,11 @@ end
 % an argument to another Texinfo command.
 \def\macroargctxt{%
   \scanctxt
+  \catcode`\ =\active
+  \catcode`\^^M=\other
   \catcode`\\=\active
 }
 
-\def\\{\normalbackslash}%
-
 \def\macrolineargctxt{% used for whole-line arguments without braces
   \scanctxt
   \catcode`\{=\other
@@ -7549,59 +7826,36 @@ end
   \fi
 }
 
-% This makes use of the obscure feature that if the last token of a
-% <parameter list> is #, then the preceding argument is delimited by
-% an opening brace, and that opening brace is not consumed.
-% 
+% \getargs -- Parse the arguments to a @macro line.  Set \macname to
+% the name of the macro, and \argl to the braced argument list.
 \def\getargs#1{\getargsxxx#1{}}
 \def\getargsxxx#1#{\getmacname #1 \relax\getmacargs}
 \def\getmacname#1 #2\relax{\macname={#1}}
 \def\getmacargs#1{\def\argl{#1}}
+% This made use of the feature that if the last token of a
+% <parameter list> is #, then the preceding argument is delimited by
+% an opening brace, and that opening brace is not consumed.
 
-% For macro processing make @ a letter so that we can make
-% private-to-Texinfo macro names.
-\edef\texiatcatcode{\the\catcode`\@}
-\catcode `@=11\relax
-
-% Parse the optional {params} list.  Set up \paramno and \paramlist
-% so \defmacro knows what to do.  Define \macarg.BLAH for each BLAH
-% in the params list to some hook where the argument is to be expanded.  If
-% there are less than 10 arguments that hook is to be replaced by ##N where N
+% Parse the optional {params} list to @macro or @rmacro.
+% Set \paramno to the number of arguments,
+% and \paramlist to a parameter text for the macro (e.g. #1,#2,#3 for a
+% three-param macro.)  Define \macarg.BLAH for each BLAH in the params
+% list to some hook where the argument is to be expanded.  If there are
+% less than 10 arguments that hook is to be replaced by ##N where N
 % is the position in that list, that is to say the macro arguments are to be
 % defined `a la TeX in the macro body.  
 %
 % That gets used by \mbodybackslash (above).
 %
-% We need to get `macro parameter char #' into several definitions.
-% The technique used is stolen from LaTeX: let \hash be something
-% unexpandable, insert that wherever you need a #, and then redefine
-% it to # just before using the token list produced.
-%
-% The same technique is used to protect \eatspaces till just before
-% the macro is used.
-%
-% If there are 10 or more arguments, a different technique is used, where the
-% hook remains in the body, and when macro is to be expanded the body is
-% processed again to replace the arguments.
+% If there are 10 or more arguments, a different technique is used: see
+% \parsemmanyargdef.
 %
-% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
-% argument N value and then \edef  the body (nothing else will expand because of
-% the catcode regime underwhich the body was input).
-%
-% If you compile with TeX (not eTeX), and you have macros with 10 or more
-% arguments, no macro can have more than 256 arguments (else error).
-% 
 \def\parsemargdef#1;{%
   \paramno=0\def\paramlist{}%
   \let\hash\relax
-  \let\xeatspaces\relax
+  % \hash is redefined to `#' later to get it into definitions
+  \let\processmacroarg\relax
   \parsemargdefxxx#1,;,%
-  % In case that there are 10 or more arguments we parse again the arguments
-  % list to set new definitions for the \macarg.BLAH macros corresponding to
-  % each BLAH argument. It was anyhow needed to parse already once this list
-  % in order to count the arguments, and as macros with at most 9 arguments
-  % are by far more frequent than macro with 10 or more arguments, defining
-  % twice the \macarg.BLAH macros does not cost too much processing power.
   \ifnum\paramno<10\relax\else
     \paramno0\relax
     \parsemmanyargdef@@#1,;,% 10 or more arguments
@@ -7612,10 +7866,47 @@ end
   \else \let\next=\parsemargdefxxx
     \advance\paramno by 1
     \expandafter\edef\csname macarg.\eatspaces{#1}\endcsname
-        {\xeatspaces{\hash\the\paramno}}%
+        {\processmacroarg{\hash\the\paramno}}%
     \edef\paramlist{\paramlist\hash\the\paramno,}%
   \fi\next}
 
+% \parsemacbody, \parsermacbody
+%
+% Read recursive and nonrecursive macro bodies. (They're different since
+% rec and nonrec macros end differently.)
+% 
+% We are in \macrobodyctxt, and the \xdef causes backslashshes in the macro 
+% body to be transformed.
+% Set \macrobody to the body of the macro, and call \defmacro.
+%
+{\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{%
+\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}%
+{\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{%
+\xdef\macrobody{\eatcr{#1}}\endgroup\defmacro}}%
+
+% Make @ a letter, so that we can make private-to-Texinfo macro names.
+\edef\texiatcatcode{\the\catcode`\@}
+\catcode `@=11\relax
+
+%%%%%%%%%%%%%% Code for > 10 arguments only   %%%%%%%%%%%%%%%%%%
+
+% If there are 10 or more arguments, a different technique is used, where the
+% hook remains in the body, and when macro is to be expanded the body is
+% processed again to replace the arguments.
+%
+% In that case, the hook is \the\toks N-1, and we simply set \toks N-1 to the
+% argument N value and then \edef the body (nothing else will expand because of
+% the catcode regime under which the body was input).
+%
+% If you compile with TeX (not eTeX), and you have macros with 10 or more
+% arguments, no macro can have more than 256 arguments (else error).
+%
+% In case that there are 10 or more arguments we parse again the arguments
+% list to set new definitions for the \macarg.BLAH macros corresponding to
+% each BLAH argument. It was anyhow needed to parse already once this list
+% in order to count the arguments, and as macros with at most 9 arguments
+% are by far more frequent than macro with 10 or more arguments, defining
+% twice the \macarg.BLAH macros does not cost too much processing power.
 \def\parsemmanyargdef@@#1,{%
   \if#1;\let\next=\relax
   \else 
@@ -7631,15 +7922,6 @@ end
     \advance\paramno by 1\relax
   \fi\next}
 
-% These two commands read recursive and nonrecursive macro bodies.
-% (They're different since rec and nonrec macros end differently.)
-% Set \temp to the body of the macro, and call \defmacro.
-\catcode `\@\texiatcatcode
-{\catcode`\ =\other\long\gdef\parsemacbody#1@end macro{%
-\xdef\temp{\eatcr{#1}}\endgroup\defmacro}}%
-{\catcode`\ =\other\long\gdef\parsermacbody#1@end rmacro{%
-\xdef\temp{\eatcr{#1}}\endgroup\defmacro}}%
-\catcode `\@=11\relax
 
 \let\endargs@\relax
 \let\nil@\relax
@@ -7668,9 +7950,6 @@ end
     \getargvals@@
   \fi
 }
-
-% Internal for \getargsval@.
-%  
 \def\getargvals@@{%
   \ifx\paramlist\nilm@
       % Some sanity check needed here that \argvaluelist is also empty.
@@ -7778,16 +8057,7 @@ end
   \next
 }
 
-% Save the token stack pointer into macro #1:
-\def\texisavetoksstackpoint#1{\edef#1{\the\@cclvi}}
-%
-% Restore the token stack pointer from number in macro #1:
-\def\texirestoretoksstackpoint#1{\expandafter\mathchardef
-  \expandafter\@cclvi#1\relax}
-% Variant \newtoks that can be used non-\outer:
-\def\texinonouternewtoks{\alloc@ 5\toks \toksdef \@cclvi}
-
-% Tailing missing arguments are set to empty.
+% Trailing missing arguments are set to empty.
 % 
 \def\setemptyargvalues@{%
   \ifx\paramlist\nilm@
@@ -7818,82 +8088,130 @@ end
    \long\def#2{#4}%
 }
 
-% This defines a Texinfo @macro.  \temp has the body of the macro in it.
+
+%%%%%%%%%%%%%% End of code for > 10 arguments %%%%%%%%%%%%%%%%%%
+
+
+
+% Remove following spaces at the expansion stage.
+% This works because spaces are discarded before each argument when TeX is 
+% getting the arguments for a macro.
+% This must not be immediately followed by a }.
+\long\def\gobblespaces#1{#1}
+
+% This defines a Texinfo @macro or @rmacro, called by \parsemacbody.
+%    \macrobody has the body of the macro in it, with placeholders for
+% its parameters, looking like "\processmacroarg{\hash 1}".
+%    \paramno is the number of parameters
+%    \paramlist is a TeX parameter text, e.g. "#1,#2,#3,"
 % There are eight cases: recursive and nonrecursive macros of zero, one,
 % up to nine, and many arguments.
-% Much magic with \expandafter here.
 % \xdef is used so that macro definitions will survive the file
-% they're defined in; @include reads the file inside a group.
+% they're defined in: @include reads the file inside a group.
 %
 \def\defmacro{%
   \let\hash=##% convert placeholders to macro parameter chars
-  \ifrecursive
+  \ifnum\paramno=1
+    \def\processmacroarg{\gobblespaces}%
+    % This removes the pair of braces around the argument.  We don't
+    % use \eatspaces, because this can cause ends of lines to be lost
+    % when the argument to \eatspaces is read, leading to line-based
+    % commands like "@itemize" not being read correctly.
+  \else
+    \def\processmacroarg{\xprocessmacroarg}%
+    \let\xprocessmacroarg\relax
+  \fi
+  \ifrecursive   %%%%%%%%%%%%%% Recursive %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
     \ifcase\paramno
     % 0
       \expandafter\xdef\csname\the\macname\endcsname{%
-        \noexpand\scanmacro{\temp}}%
+        \noexpand\scanmacro{\macrobody}}%
     \or % 1
       \expandafter\xdef\csname\the\macname\endcsname{%
          \bgroup
          \noexpand\braceorline
-         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
-      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
-         \egroup\noexpand\scanmacro{\temp}}%
+         \expandafter\noexpand\csname\the\macname @@@\endcsname}%
+      \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
+         \expandafter\noexpand\csname\the\macname @@@@\endcsname{%
+           \noexpand\gobblespaces##1\empty}%
+           % The \empty is for \gobblespaces in case #1 is empty
+         }%
+      \expandafter\xdef\csname\the\macname @@@@\endcsname##1{%
+         \egroup\noexpand\scanmacro{\macrobody}}%
     \else
       \ifnum\paramno<10\relax % at most 9
+        % See non-recursive section below for comments
         \expandafter\xdef\csname\the\macname\endcsname{%
-           \bgroup\noexpand\macroargctxt
-           \noexpand\csname\the\macname xx\endcsname}%
-        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
-            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+          \bgroup
+          \noexpand\expandafter
+          \noexpand\macroargctxt
+          \noexpand\expandafter
+          \expandafter\noexpand\csname\the\macname @@\endcsname}%
+        \expandafter\xdef\csname\the\macname @@\endcsname##1{%
+            \noexpand\passargtomacro
+            \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}%
+        \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
+            \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}%
         \expandafter\expandafter
         \expandafter\xdef
         \expandafter\expandafter
-          \csname\the\macname xxx\endcsname
-            \paramlist{\egroup\noexpand\scanmacro{\temp}}%
+          \csname\the\macname @@@@\endcsname\paramlist{%
+            \egroup\noexpand\scanmacro{\macrobody}}%
       \else % 10 or more
         \expandafter\xdef\csname\the\macname\endcsname{%
           \noexpand\getargvals@{\the\macname}{\argl}%
         }%    
-        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+        \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody
         \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\gobble
       \fi
     \fi
-  \else
+  \else  %%%%%%%%%%%%%%%%%%%%%% Non-recursive %%%%%%%%%%%%%%%%%%%%%%%%%%
     \ifcase\paramno
     % 0
       \expandafter\xdef\csname\the\macname\endcsname{%
-        \noexpand\norecurse{\the\macname}%
-        \noexpand\scanmacro{\temp}\egroup}%
+        \noexpand\scanmacro{\macrobody}}%
     \or % 1
       \expandafter\xdef\csname\the\macname\endcsname{%
          \bgroup
          \noexpand\braceorline
-         \expandafter\noexpand\csname\the\macname xxx\endcsname}%
-      \expandafter\xdef\csname\the\macname xxx\endcsname##1{%
+         \expandafter\noexpand\csname\the\macname @@@\endcsname}%
+      \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
+         \expandafter\noexpand\csname\the\macname @@@@\endcsname{%
+           \noexpand\gobblespaces##1\empty}%
+           % The \empty is for \gobblespaces in case #1 is empty
+         }%
+      \expandafter\xdef\csname\the\macname @@@@\endcsname##1{%
         \egroup
-        \noexpand\norecurse{\the\macname}%
-        \noexpand\scanmacro{\temp}\egroup}%
+        \noexpand\scanmacro{\macrobody}%
+        }%
     \else % at most 9
       \ifnum\paramno<10\relax
+        % @MACNAME sets the context for reading the macro argument
+        % @MACNAME@@ gets the argument, processes backslashes and appends a 
+        % comma.
+        % @MACNAME@@@ removes braces surrounding the argument list.
+        % @MACNAME@@@@ scans the macro body with arguments substituted.
         \expandafter\xdef\csname\the\macname\endcsname{%
-           \bgroup\noexpand\macroargctxt
-           \expandafter\noexpand\csname\the\macname xx\endcsname}%
-        \expandafter\xdef\csname\the\macname xx\endcsname##1{%
-            \expandafter\noexpand\csname\the\macname xxx\endcsname ##1,}%
+          \bgroup
+          \noexpand\expandafter  % This \expandafter skip any spaces after the
+          \noexpand\macroargctxt % macro before we change the catcode of space.
+          \noexpand\expandafter
+          \expandafter\noexpand\csname\the\macname @@\endcsname}%
+        \expandafter\xdef\csname\the\macname @@\endcsname##1{%
+            \noexpand\passargtomacro
+            \expandafter\noexpand\csname\the\macname @@@\endcsname{##1,}}%
+        \expandafter\xdef\csname\the\macname @@@\endcsname##1{%
+            \expandafter\noexpand\csname\the\macname @@@@\endcsname ##1}%
         \expandafter\expandafter
         \expandafter\xdef
         \expandafter\expandafter
-        \csname\the\macname xxx\endcsname
-        \paramlist{%
-            \egroup
-            \noexpand\norecurse{\the\macname}%
-            \noexpand\scanmacro{\temp}\egroup}%
+          \csname\the\macname @@@@\endcsname\paramlist{%
+            \egroup\noexpand\scanmacro{\macrobody}}%
       \else % 10 or more:
         \expandafter\xdef\csname\the\macname\endcsname{%
           \noexpand\getargvals@{\the\macname}{\argl}%
         }%
-        \global\expandafter\let\csname mac.\the\macname .body\endcsname\temp
+        \global\expandafter\let\csname mac.\the\macname .body\endcsname\macrobody
         \global\expandafter\let\csname mac.\the\macname .recurse\endcsname\norecurse
       \fi
     \fi
@@ -7904,71 +8222,96 @@ end
 \def\norecurse#1{\bgroup\cslet{#1}{macsave.#1}}
 
 
-{\catcode`\@=0 \catcode`\\=13
-@catcode`@_=11
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%
+{\catcode`\@=0 \catcode`\\=13  % We need to manipulate \ so use @ as escape
+@catcode`@_=11  % private names
+@catcode`@!=11  % used as argument separator
 
+% \passargtomacro#1#2 -
 % Call #1 with a list of tokens #2, with any doubled backslashes in #2
 % compressed to one.
+%
+% This implementation works by expansion, and not execution (so we cannot use 
+% \def or similar).  This reduces the risk of this failing in contexts where 
+% complete expansion is done with no execution (for example, in writing out to 
+% an auxiliary file for an index entry).
+% 
+% State is kept in the input stream: the argument passed to
+% @look_ahead, @gobble_and_check_finish and @add_segment is
+%
+% THE_MACRO ARG_RESULT ! {PENDING_BS} NEXT_TOKEN  (... rest of input)
+%
+% where:
+% THE_MACRO - name of the macro we want to call
+% ARG_RESULT - argument list we build to pass to that macro
+% PENDING_BS - either a backslash or nothing
+% NEXT_TOKEN - used to look ahead in the input stream to see what's coming next
+
 @gdef@passargtomacro#1#2{%
-  @def@the_macro{#1}%
-  @def@pending_backslash{}%
-  @def@finish{@finish}%
-  @def@arg_result{}%
-  @let@next_token=@relax
-  @add_segment#2\@finish\%
-}
-
-% Input stream is just after a backslash.  If the next token is not a
-% backslash, process the rest of the argument; otherwise, remove the next
-% token.
-@gdef@look_ahead{%
-  @futurelet@next_token@look_aheadzzz}
-@gdef@look_aheadzzz{%
-  @ifx@next_token\%
-   @let@next=@gobble_and_check_finish 
-  @else
-   @let@next=@add_segment
-  @fi@next
+  @add_segment #1!{}@relax#2\@_finish\%
 }
+@gdef@_finish{@_finishx} @global@let@_finishx@relax
 
-% Double backslash found.  Add a single backslash here.
-@gdef@gobble_and_check_finish#1{%
-  @add_the_backslash
-  @def@pending_backslash{}%
-  @futurelet@next_token@add_segment
+% #1 - THE_MACRO ARG_RESULT
+% #2 - PENDING_BS
+% #3 - NEXT_TOKEN
+% #4 used to look ahead
+%
+% If the next token is not a backslash, process the rest of the argument; 
+% otherwise, remove the next token.
+@gdef@look_ahead#1!#2#3#4{%
+  @ifx#4\%
+   @expandafter@gobble_and_check_finish 
+  @else
+   @expandafter@add_segment
+  @fi#1!{#2}#4#4%
 }
 
-% append a backslash to \arg_result
-@gdef@add_the_backslash{%
-  @expandafter@gdef@expandafter@arg_result@expandafter{@arg_result\}%
+% #1 - THE_MACRO ARG_RESULT
+% #2 - PENDING_BS
+% #3 - NEXT_TOKEN
+% #4 should be a backslash, which is gobbled.
+% #5 looks ahead
+%
+% Double backslash found.  Add a single backslash, and look ahead.
+@gdef@gobble_and_check_finish#1!#2#3#4#5{%
+  @add_segment#1\!{}#5#5%
 }
 
+@gdef@is_fi{@fi}
+
+% #1 - THE_MACRO ARG_RESULT
+% #2 - PENDING_BS
+% #3 - NEXT_TOKEN
+% #4 is input stream until next backslash
+%
 % Input stream is either at the start of the argument, or just after a 
 % backslash sequence, either a lone backslash, or a doubled backslash.  
-% \next_token contains the first token in the input stream: if it is \finish, 
-% finish; otherwise, append to \arg_result the segment of the argument up until
-% the next backslash.  \pending_backslash contains a backslash to represent
+% NEXT_TOKEN contains the first token in the input stream: if it is \finish, 
+% finish; otherwise, append to ARG_RESULT the segment of the argument up until
+% the next backslash.  PENDING_BACKSLASH contains a backslash to represent
 % a backslash just before the start of the input stream that has not been
-% added to \arg_result.
-@gdef@add_segment#1\{%
-@ifx@next_token@finish
-  @let@next=@call_the_macro%
+% added to ARG_RESULT.
+@gdef@add_segment#1!#2#3#4\{%
+@ifx#3@_finish
+  @call_the_macro#1!%
 @else
-  @let@next=@look_ahead
-  %
-  % append to @arg_result
-  % token list registers might be better
-  @expandafter@expandafter@expandafter@gdef
-  @expandafter@expandafter@expandafter@arg_result
-  @expandafter@expandafter@expandafter{%
-  @expandafter@arg_result
-  @pending_backslash#1}%
-  @def@pending_backslash{\}%
-@fi@next}
+  % append the pending backslash to the result, followed by the next segment
+  @expandafter@is_fi@look_ahead#1#2#4!{\}@fi
+  % this @fi is discarded by @look_ahead.
+  % we can't get rid of it with \expandafter because we don't know how 
+  % long #4 is.
+}
 
-@gdef@call_the_macro{@expandafter@the_macro@expandafter{@arg_result}}
+% #1 - THE_MACRO
+% #2 - ARG_RESULT
+% #3 discards the res of the conditional in @add_segment, and @is_fi ends the 
+% conditional.
+@gdef@call_the_macro#1#2!#3@fi{@is_fi #1{#2}}
 
 }
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
 
 % \braceorline MAC is used for a one-argument macro MAC.  It checks
 % whether the next non-whitespace character is a {.  It sets the context
@@ -8064,6 +8407,7 @@ end
   \pdfmkdest{#1}%
   \iflinks
     {%
+      \requireauxfile
       \atdummies  % preserve commands, but don't expand them
       \edef\writexrdef##1##2{%
        \write\auxfile{@xrdef{#1-% #1 of \setref, expanded by the \edef
@@ -8103,9 +8447,12 @@ end
 % node name, #4 the name of the Info file, #5 the name of the printed
 % manual.  All but the node name can be omitted.
 %
-\def\pxref#1{\putwordsee{} \xrefX[#1,,,,,,,]}
-\def\xref#1{\putwordSee{} \xrefX[#1,,,,,,,]}
-\def\ref#1{\xrefX[#1,,,,,,,]}
+\def\pxref{\putwordsee{} \xrefXX}
+\def\xref{\putwordSee{} \xrefXX}
+\def\ref{\xrefXX}
+
+\def\xrefXX#1{\def\xrefXXarg{#1}\futurelet\tokenafterxref\xrefXXX}
+\def\xrefXXX{\expandafter\xrefX\expandafter[\xrefXXarg,,,,,,,]}
 %
 \newbox\toprefbox
 \newbox\printedrefnamebox
@@ -8249,6 +8596,12 @@ end
       %
       % output the `page 3'.
       \turnoffactive \putwordpage\tie\refx{#1-pg}{}%
+           \ifx,\tokenafterxref
+      \else\ifx.\tokenafterxref
+      \else\ifx;\tokenafterxref
+      \else\ifx)\tokenafterxref
+      \else,% add a , if xref not followed by punctuation
+      \fi\fi\fi\fi
     \fi\fi
   \fi
   \endlink
@@ -8319,6 +8672,7 @@ end
 % If its value is nonempty, SUFFIX is output afterward.
 %
 \def\refx#1#2{%
+  \requireauxfile
   {%
     \indexnofonts
     \otherbackslash
@@ -8382,6 +8736,23 @@ end
   \fi
 }
 
+% If working on a large document in chapters, it is convenient to
+% be able to disable indexing, cross-referencing, and contents, for test runs.
+% This is done with @novalidate at the beginning of the file.
+%
+\newif\iflinks \linkstrue % by default we want the aux files.
+\let\novalidate = \linksfalse
+
+% Used when writing to the aux file, or when using data from it.
+\def\requireauxfile{%
+  \iflinks
+    \tryauxfile
+    % Open the new aux file.  TeX will close it automatically at exit.
+    \immediate\openout\auxfile=\jobname.aux
+  \fi
+  \global\let\requireauxfile=\relax   % Only do this once.
+}
+
 % Read the last existing aux file, if any.  No error if none exists.
 %
 \def\tryauxfile{%
@@ -8675,6 +9046,7 @@ end
 \def\imagexxx#1,#2,#3,#4,#5,#6\finish{\begingroup
   \catcode`\^^M = 5     % in case we're inside an example
   \normalturnoffactive  % allow _ et al. in names
+  \def\xprocessmacroarg{\eatspaces}% in case we are being used via a macro
   % If the image is by itself, center it.
   \ifvmode
     \imagevmodetrue
@@ -8855,6 +9227,7 @@ end
       % \floatlabel-lof.  Besides \floatident, we include the short
       % caption if specified, else the full caption if specified, else nothing.
       {%
+        \requireauxfile
         \atdummies
         %
         % since we read the caption text in the macro world, where ^^M
@@ -9077,7 +9450,8 @@ directory should work if nowhere else does.}
 % @documentencoding sets the definition of non-ASCII characters
 % according to the specified encoding.
 %
-\parseargdef\documentencoding{%
+\def\documentencoding{\parseargusing\filenamecatcodes\documentencodingzzz}
+\def\documentencodingzzz#1{%
   % Encoding being declared for the document.
   \def\declaredencoding{\csname #1.enc\endcsname}%
   %
@@ -9454,7 +9828,7 @@ directory should work if nowhere else does.}
        \gdef\UTFviiiTmp{#2}%
       % 
       \expandafter\ifx\csname uni:#1\endcsname \relax \else
-       \errmessage{Internal error, already defined: #1}%
+       \message{Internal error, already defined: #1}%
       \fi
       %
       % define an additional control sequence for this code point.
@@ -9804,6 +10178,83 @@ directory should work if nowhere else does.}
 
   \DeclareUnicodeCharacter{02DB}{\ogonek{ }}
 
+  % Greek letters upper case
+  \DeclareUnicodeCharacter{0391}{{\it A}}
+  \DeclareUnicodeCharacter{0392}{{\it B}}
+  \DeclareUnicodeCharacter{0393}{\ensuremath{\mit\Gamma}}
+  \DeclareUnicodeCharacter{0394}{\ensuremath{\mit\Delta}}
+  \DeclareUnicodeCharacter{0395}{{\it E}}
+  \DeclareUnicodeCharacter{0396}{{\it Z}}
+  \DeclareUnicodeCharacter{0397}{{\it H}}
+  \DeclareUnicodeCharacter{0398}{\ensuremath{\mit\Theta}}
+  \DeclareUnicodeCharacter{0399}{{\it I}}
+  \DeclareUnicodeCharacter{039A}{{\it K}}
+  \DeclareUnicodeCharacter{039B}{\ensuremath{\mit\Lambda}}
+  \DeclareUnicodeCharacter{039C}{{\it M}}
+  \DeclareUnicodeCharacter{039D}{{\it N}}
+  \DeclareUnicodeCharacter{039E}{\ensuremath{\mit\Xi}}
+  \DeclareUnicodeCharacter{039F}{{\it O}}
+  \DeclareUnicodeCharacter{03A0}{\ensuremath{\mit\Pi}}
+  \DeclareUnicodeCharacter{03A1}{{\it P}}
+  %\DeclareUnicodeCharacter{03A2}{} % none - corresponds to final sigma
+  \DeclareUnicodeCharacter{03A3}{\ensuremath{\mit\Sigma}}
+  \DeclareUnicodeCharacter{03A4}{{\it T}}
+  \DeclareUnicodeCharacter{03A5}{\ensuremath{\mit\Upsilon}}
+  \DeclareUnicodeCharacter{03A6}{\ensuremath{\mit\Phi}}
+  \DeclareUnicodeCharacter{03A7}{{\it X}}
+  \DeclareUnicodeCharacter{03A8}{\ensuremath{\mit\Psi}}
+  \DeclareUnicodeCharacter{03A9}{\ensuremath{\mit\Omega}}
+
+  % Vowels with accents
+  \DeclareUnicodeCharacter{0390}{\ensuremath{\ddot{\acute\iota}}}
+  \DeclareUnicodeCharacter{03AC}{\ensuremath{\acute\alpha}}
+  \DeclareUnicodeCharacter{03AD}{\ensuremath{\acute\epsilon}}
+  \DeclareUnicodeCharacter{03AE}{\ensuremath{\acute\eta}}
+  \DeclareUnicodeCharacter{03AF}{\ensuremath{\acute\iota}}
+  \DeclareUnicodeCharacter{03B0}{\ensuremath{\acute{\ddot\upsilon}}}
+
+  % Standalone accent
+  \DeclareUnicodeCharacter{0384}{\ensuremath{\acute{\ }}}
+
+  % Greek letters lower case
+  \DeclareUnicodeCharacter{03B1}{\ensuremath\alpha}
+  \DeclareUnicodeCharacter{03B2}{\ensuremath\beta}
+  \DeclareUnicodeCharacter{03B3}{\ensuremath\gamma}
+  \DeclareUnicodeCharacter{03B4}{\ensuremath\delta}
+  \DeclareUnicodeCharacter{03B5}{\ensuremath\epsilon}
+  \DeclareUnicodeCharacter{03B6}{\ensuremath\zeta}
+  \DeclareUnicodeCharacter{03B7}{\ensuremath\eta}
+  \DeclareUnicodeCharacter{03B8}{\ensuremath\theta}
+  \DeclareUnicodeCharacter{03B9}{\ensuremath\iota}
+  \DeclareUnicodeCharacter{03BA}{\ensuremath\kappa}
+  \DeclareUnicodeCharacter{03BB}{\ensuremath\lambda}
+  \DeclareUnicodeCharacter{03BC}{\ensuremath\mu}
+  \DeclareUnicodeCharacter{03BD}{\ensuremath\nu}
+  \DeclareUnicodeCharacter{03BE}{\ensuremath\xi}
+  \DeclareUnicodeCharacter{03BF}{{\it o}} % omicron
+  \DeclareUnicodeCharacter{03C0}{\ensuremath\pi}
+  \DeclareUnicodeCharacter{03C1}{\ensuremath\rho}
+  \DeclareUnicodeCharacter{03C2}{\ensuremath\varsigma}
+  \DeclareUnicodeCharacter{03C3}{\ensuremath\sigma}
+  \DeclareUnicodeCharacter{03C4}{\ensuremath\tau}
+  \DeclareUnicodeCharacter{03C5}{\ensuremath\upsilon}
+  \DeclareUnicodeCharacter{03C6}{\ensuremath\phi}
+  \DeclareUnicodeCharacter{03C7}{\ensuremath\chi}
+  \DeclareUnicodeCharacter{03C8}{\ensuremath\psi}
+  \DeclareUnicodeCharacter{03C9}{\ensuremath\omega}
+
+  % More Greek vowels with accents
+  \DeclareUnicodeCharacter{03CA}{\ensuremath{\ddot\iota}}
+  \DeclareUnicodeCharacter{03CB}{\ensuremath{\ddot\upsilon}}
+  \DeclareUnicodeCharacter{03CC}{\ensuremath{\acute o}}
+  \DeclareUnicodeCharacter{03CD}{\ensuremath{\acute\upsilon}}
+  \DeclareUnicodeCharacter{03CE}{\ensuremath{\acute\omega}}
+
+  % Variant Greek letters
+  \DeclareUnicodeCharacter{03D1}{\ensuremath\vartheta}
+  \DeclareUnicodeCharacter{03D6}{\ensuremath\varpi}
+  \DeclareUnicodeCharacter{03F1}{\ensuremath\varrho}
+
   \DeclareUnicodeCharacter{1E02}{\dotaccent{B}}
   \DeclareUnicodeCharacter{1E03}{\dotaccent{b}}
   \DeclareUnicodeCharacter{1E04}{\udotaccent{B}}
@@ -9931,6 +10382,7 @@ directory should work if nowhere else does.}
   \DeclareUnicodeCharacter{1EF8}{\~Y}
   \DeclareUnicodeCharacter{1EF9}{\~y}
 
+  % Punctuation
   \DeclareUnicodeCharacter{2013}{--}
   \DeclareUnicodeCharacter{2014}{---}
   \DeclareUnicodeCharacter{2018}{\quoteleft}
@@ -9942,18 +10394,166 @@ directory should work if nowhere else does.}
   \DeclareUnicodeCharacter{2020}{\ensuremath\dagger}
   \DeclareUnicodeCharacter{2021}{\ensuremath\ddagger}
   \DeclareUnicodeCharacter{2022}{\bullet}
+  \DeclareUnicodeCharacter{202F}{\thinspace}
   \DeclareUnicodeCharacter{2026}{\dots}
   \DeclareUnicodeCharacter{2039}{\guilsinglleft}
   \DeclareUnicodeCharacter{203A}{\guilsinglright}
+
   \DeclareUnicodeCharacter{20AC}{\euro}
 
   \DeclareUnicodeCharacter{2192}{\expansion}
   \DeclareUnicodeCharacter{21D2}{\result}
 
+  % Mathematical symbols
+  \DeclareUnicodeCharacter{2200}{\ensuremath\forall}
+  \DeclareUnicodeCharacter{2203}{\ensuremath\exists}
+  \DeclareUnicodeCharacter{2208}{\ensuremath\in}
   \DeclareUnicodeCharacter{2212}{\minus}
-  \DeclareUnicodeCharacter{2217}{\point}
+  \DeclareUnicodeCharacter{2217}{\ast}
+  \DeclareUnicodeCharacter{221E}{\ensuremath\infty}
   \DeclareUnicodeCharacter{2225}{\ensuremath\parallel}
+  \DeclareUnicodeCharacter{2227}{\ensuremath\wedge}
+  \DeclareUnicodeCharacter{2229}{\ensuremath\cap}
   \DeclareUnicodeCharacter{2261}{\equiv}
+  \DeclareUnicodeCharacter{2264}{\ensuremath\leq}
+  \DeclareUnicodeCharacter{2265}{\ensuremath\geq}
+  \DeclareUnicodeCharacter{2282}{\ensuremath\subset}
+  \DeclareUnicodeCharacter{2287}{\ensuremath\supseteq}
+
+  \DeclareUnicodeCharacter{2016}{\ensuremath\Vert}
+  \DeclareUnicodeCharacter{2032}{\ensuremath\prime}
+  \DeclareUnicodeCharacter{210F}{\ensuremath\hbar}
+  \DeclareUnicodeCharacter{2111}{\ensuremath\Im}
+  \DeclareUnicodeCharacter{2113}{\ensuremath\ell}
+  \DeclareUnicodeCharacter{2118}{\ensuremath\wp}
+  \DeclareUnicodeCharacter{211C}{\ensuremath\Re}
+  \DeclareUnicodeCharacter{2127}{\ensuremath\mho}
+  \DeclareUnicodeCharacter{2135}{\ensuremath\aleph}
+  \DeclareUnicodeCharacter{2190}{\ensuremath\leftarrow}
+  \DeclareUnicodeCharacter{2191}{\ensuremath\uparrow}
+  \DeclareUnicodeCharacter{2193}{\ensuremath\downarrow}
+  \DeclareUnicodeCharacter{2194}{\ensuremath\leftrightarrow}
+  \DeclareUnicodeCharacter{2195}{\ensuremath\updownarrow}
+  \DeclareUnicodeCharacter{2196}{\ensuremath\nwarrow}
+  \DeclareUnicodeCharacter{2197}{\ensuremath\nearrow}
+  \DeclareUnicodeCharacter{2198}{\ensuremath\searrow}
+  \DeclareUnicodeCharacter{2199}{\ensuremath\swarrow}
+  \DeclareUnicodeCharacter{21A6}{\ensuremath\mapsto}
+  \DeclareUnicodeCharacter{21A9}{\ensuremath\hookleftarrow}
+  \DeclareUnicodeCharacter{21AA}{\ensuremath\hookrightarrow}
+  \DeclareUnicodeCharacter{21BC}{\ensuremath\leftharpoonup}
+  \DeclareUnicodeCharacter{21BD}{\ensuremath\leftharpoondown}
+  \DeclareUnicodeCharacter{21BE}{\ensuremath\upharpoonright}
+  \DeclareUnicodeCharacter{21C0}{\ensuremath\rightharpoonup}
+  \DeclareUnicodeCharacter{21C1}{\ensuremath\rightharpoondown}
+  \DeclareUnicodeCharacter{21CC}{\ensuremath\rightleftharpoons}
+  \DeclareUnicodeCharacter{21D0}{\ensuremath\Leftarrow}
+  \DeclareUnicodeCharacter{21D1}{\ensuremath\Uparrow}
+  \DeclareUnicodeCharacter{21D3}{\ensuremath\Downarrow}
+  \DeclareUnicodeCharacter{21D4}{\ensuremath\Leftrightarrow}
+  \DeclareUnicodeCharacter{21D5}{\ensuremath\Updownarrow}
+  \DeclareUnicodeCharacter{21DD}{\ensuremath\leadsto}
+  \DeclareUnicodeCharacter{2201}{\ensuremath\complement}
+  \DeclareUnicodeCharacter{2202}{\ensuremath\partial}
+  \DeclareUnicodeCharacter{2205}{\ensuremath\emptyset}
+  \DeclareUnicodeCharacter{2207}{\ensuremath\nabla}
+  \DeclareUnicodeCharacter{2209}{\ensuremath\notin}
+  \DeclareUnicodeCharacter{220B}{\ensuremath\owns}
+  \DeclareUnicodeCharacter{220F}{\ensuremath\prod}
+  \DeclareUnicodeCharacter{2210}{\ensuremath\coprod}
+  \DeclareUnicodeCharacter{2211}{\ensuremath\sum}
+  \DeclareUnicodeCharacter{2213}{\ensuremath\mp}
+  \DeclareUnicodeCharacter{2218}{\ensuremath\circ}
+  \DeclareUnicodeCharacter{221A}{\ensuremath\surd}
+  \DeclareUnicodeCharacter{221D}{\ensuremath\propto}
+  \DeclareUnicodeCharacter{2220}{\ensuremath\angle}
+  \DeclareUnicodeCharacter{2223}{\ensuremath\mid}
+  \DeclareUnicodeCharacter{2228}{\ensuremath\vee}
+  \DeclareUnicodeCharacter{222A}{\ensuremath\cup}
+  \DeclareUnicodeCharacter{222B}{\ensuremath\smallint}
+  \DeclareUnicodeCharacter{222E}{\ensuremath\oint}
+  \DeclareUnicodeCharacter{223C}{\ensuremath\sim}
+  \DeclareUnicodeCharacter{2240}{\ensuremath\wr}
+  \DeclareUnicodeCharacter{2243}{\ensuremath\simeq}
+  \DeclareUnicodeCharacter{2245}{\ensuremath\cong}
+  \DeclareUnicodeCharacter{2248}{\ensuremath\approx}
+  \DeclareUnicodeCharacter{224D}{\ensuremath\asymp}
+  \DeclareUnicodeCharacter{2250}{\ensuremath\doteq}
+  \DeclareUnicodeCharacter{2260}{\ensuremath\neq}
+  \DeclareUnicodeCharacter{226A}{\ensuremath\ll}
+  \DeclareUnicodeCharacter{226B}{\ensuremath\gg}
+  \DeclareUnicodeCharacter{227A}{\ensuremath\prec}
+  \DeclareUnicodeCharacter{227B}{\ensuremath\succ}
+  \DeclareUnicodeCharacter{2283}{\ensuremath\supset}
+  \DeclareUnicodeCharacter{2286}{\ensuremath\subseteq}
+  \DeclareUnicodeCharacter{228E}{\ensuremath\uplus}
+  \DeclareUnicodeCharacter{228F}{\ensuremath\sqsubset}
+  \DeclareUnicodeCharacter{2290}{\ensuremath\sqsupset}
+  \DeclareUnicodeCharacter{2291}{\ensuremath\sqsubseteq}
+  \DeclareUnicodeCharacter{2292}{\ensuremath\sqsupseteq}
+  \DeclareUnicodeCharacter{2293}{\ensuremath\sqcap}
+  \DeclareUnicodeCharacter{2294}{\ensuremath\sqcup}
+  \DeclareUnicodeCharacter{2295}{\ensuremath\oplus}
+  \DeclareUnicodeCharacter{2296}{\ensuremath\ominus}
+  \DeclareUnicodeCharacter{2297}{\ensuremath\otimes}
+  \DeclareUnicodeCharacter{2298}{\ensuremath\oslash}
+  \DeclareUnicodeCharacter{2299}{\ensuremath\odot}
+  \DeclareUnicodeCharacter{22A2}{\ensuremath\vdash}
+  \DeclareUnicodeCharacter{22A3}{\ensuremath\dashv}
+  \DeclareUnicodeCharacter{22A4}{\ensuremath\ptextop}
+  \DeclareUnicodeCharacter{22A5}{\ensuremath\bot}
+  \DeclareUnicodeCharacter{22A8}{\ensuremath\models}
+  \DeclareUnicodeCharacter{22B4}{\ensuremath\unlhd}
+  \DeclareUnicodeCharacter{22B5}{\ensuremath\unrhd}
+  \DeclareUnicodeCharacter{22C0}{\ensuremath\bigwedge}
+  \DeclareUnicodeCharacter{22C1}{\ensuremath\bigvee}
+  \DeclareUnicodeCharacter{22C2}{\ensuremath\bigcap}
+  \DeclareUnicodeCharacter{22C3}{\ensuremath\bigcup}
+  \DeclareUnicodeCharacter{22C4}{\ensuremath\diamond}
+  \DeclareUnicodeCharacter{22C5}{\ensuremath\cdot}
+  \DeclareUnicodeCharacter{22C6}{\ensuremath\star}
+  \DeclareUnicodeCharacter{22C8}{\ensuremath\bowtie}
+  \DeclareUnicodeCharacter{2308}{\ensuremath\lceil}
+  \DeclareUnicodeCharacter{2309}{\ensuremath\rceil}
+  \DeclareUnicodeCharacter{230A}{\ensuremath\lfloor}
+  \DeclareUnicodeCharacter{230B}{\ensuremath\rfloor}
+  \DeclareUnicodeCharacter{2322}{\ensuremath\frown}
+  \DeclareUnicodeCharacter{2323}{\ensuremath\smile}
+
+  \DeclareUnicodeCharacter{25A1}{\ensuremath\Box}
+  \DeclareUnicodeCharacter{25B3}{\ensuremath\triangle}
+  \DeclareUnicodeCharacter{25B7}{\ensuremath\triangleright}
+  \DeclareUnicodeCharacter{25BD}{\ensuremath\bigtriangledown}
+  \DeclareUnicodeCharacter{25C1}{\ensuremath\triangleleft}
+  \DeclareUnicodeCharacter{25C7}{\ensuremath\Diamond}
+  \DeclareUnicodeCharacter{2660}{\ensuremath\spadesuit}
+  \DeclareUnicodeCharacter{2661}{\ensuremath\heartsuit}
+  \DeclareUnicodeCharacter{2662}{\ensuremath\diamondsuit}
+  \DeclareUnicodeCharacter{2663}{\ensuremath\clubsuit}
+  \DeclareUnicodeCharacter{266D}{\ensuremath\flat}
+  \DeclareUnicodeCharacter{266E}{\ensuremath\natural}
+  \DeclareUnicodeCharacter{266F}{\ensuremath\sharp}
+  \DeclareUnicodeCharacter{26AA}{\ensuremath\bigcirc}
+  \DeclareUnicodeCharacter{27B9}{\ensuremath\rangle}
+  \DeclareUnicodeCharacter{27C2}{\ensuremath\perp}
+  \DeclareUnicodeCharacter{27E8}{\ensuremath\langle}
+  \DeclareUnicodeCharacter{27F5}{\ensuremath\longleftarrow}
+  \DeclareUnicodeCharacter{27F6}{\ensuremath\longrightarrow}
+  \DeclareUnicodeCharacter{27F7}{\ensuremath\longleftrightarrow}
+  \DeclareUnicodeCharacter{27FC}{\ensuremath\longmapsto}
+  \DeclareUnicodeCharacter{29F5}{\ensuremath\setminus}
+  \DeclareUnicodeCharacter{2A00}{\ensuremath\bigodot}
+  \DeclareUnicodeCharacter{2A01}{\ensuremath\bigoplus}
+  \DeclareUnicodeCharacter{2A02}{\ensuremath\bigotimes}
+  \DeclareUnicodeCharacter{2A04}{\ensuremath\biguplus}
+  \DeclareUnicodeCharacter{2A06}{\ensuremath\bigsqcup}
+  \DeclareUnicodeCharacter{2A1D}{\ensuremath\Join}
+  \DeclareUnicodeCharacter{2A3F}{\ensuremath\amalg}
+  \DeclareUnicodeCharacter{2AAF}{\ensuremath\preceq}
+  \DeclareUnicodeCharacter{2AB0}{\ensuremath\succeq}
+
+  \global\mathchardef\checkmark="1370 % actually the square root sign
+  \DeclareUnicodeCharacter{2713}{\ensuremath\checkmark}
 }% end of \utfeightchardefs
 
 % US-ASCII character definitions.
@@ -10271,11 +10871,12 @@ directory should work if nowhere else does.}
 % this is not a problem.
 \def\ifusingit#1#2{\ifdim \fontdimen1\font>0pt #1\else #2\fi}
 
-% Turn off all special characters except @
-% (and those which the user can use as if they were ordinary).
+% Set catcodes for Texinfo file
+
+% Active characters for printing the wanted glyph.
 % Most of these we simply print from the \tt font, but for some, we can
 % use math or other variants that look better in normal text.
-
+%
 \catcode`\"=\active
 \def\activedoublequote{{\tt\char34}}
 \let"=\activedoublequote
@@ -10285,12 +10886,10 @@ directory should work if nowhere else does.}
 
 \catcode`\_=\active
 \def_{\ifusingtt\normalunderscore\_}
-\let\realunder=_
-% Subroutine for the previous macro.
 \def\_{\leavevmode \kern.07em \vbox{\hrule width.3em height.1ex}\kern .07em }
+\let\realunder=_
 
-\catcode`\|=\active
-\def|{{\tt\char124}}
+\catcode`\|=\active \def|{{\tt\char124}}
 
 \chardef \less=`\<
 \catcode`\<=\active \def\activeless{{\tt \less}}\let< = \activeless
@@ -10298,6 +10897,8 @@ directory should work if nowhere else does.}
 \catcode`\>=\active \def\activegtr{{\tt \gtr}}\let> = \activegtr
 \catcode`\+=\active \def+{{\tt \char 43}}
 \catcode`\$=\active \def${\ifusingit{{\sl\$}}\normaldollar}%$ font-lock fix
+\catcode`\-=\active \let-=\normaldash
+
 
 % used for headline/footline in the output routine, in case the page
 % breaks in the middle of an @tex block.
@@ -10312,12 +10913,6 @@ directory should work if nowhere else does.}
   % in principle, all other definitions in \tex have to be undone too.
 }
 
-% If a .fmt file is being used, characters that might appear in a file
-% name cannot be active until we have parsed the command line.
-% So turn them off again, and have \everyjob (or @setfilename) turn them on.
-% \otherifyactive is called near the end of this file.
-\def\otherifyactive{\catcode`+=\other \catcode`\_=\other}
-
 % Used sometimes to turn off (effectively) the active characters even after
 % parsing them.
 \def\turnoffactive{%
@@ -10336,34 +10931,30 @@ directory should work if nowhere else does.}
 % \doublebackslash is two of them (for the pdf outlines).
 {\catcode`\\=\other @gdef@realbackslash{\} @gdef@doublebackslash{\\}}
 
-% In texinfo, backslash is an active character; it prints the backslash
+% In Texinfo, backslash is an active character; it prints the backslash
 % in fixed width font.
 \catcode`\\=\active  % @ for escape char from now on.
 
-% The story here is that in math mode, the \char of \backslashcurfont
-% ends up printing the roman \ from the math symbol font (because \char
-% in math mode uses the \mathcode, and plain.tex sets
-% \mathcode`\\="026E).  It seems better for @backslashchar{} to always
-% print a typewriter backslash, hence we use an explicit \mathchar,
+% Print a typewriter backslash.  For math mode, we can't simply use
+% \backslashcurfont: the story here is that in math mode, the \char
+% of \backslashcurfont ends up printing the roman \ from the math symbol
+% font (because \char in math mode uses the \mathcode, and plain.tex
+% sets \mathcode`\\="026E).  Hence we use an explicit \mathchar,
 % which is the decimal equivalent of "715c (class 7, e.g., use \fam;
 % ignored family value; char position "5C).  We can't use " for the
 % usual hex value because it has already been made active.
-@def@normalbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
-@let@backslashchar = @normalbackslash % @backslashchar{} is for user documents.
 
-% On startup, @fixbackslash assigns:
-%  @let \ = @normalbackslash
+@def@ttbackslash{{@tt @ifmmode @mathchar29020 @else @backslashcurfont @fi}}
+@let@backslashchar = @ttbackslash % @backslashchar{} is for user documents.
+
 % \rawbackslash defines an active \ to do \backslashcurfont.
 % \otherbackslash defines an active \ to be a literal `\' character with
 % catcode other.  We switch back and forth between these.
 @gdef@rawbackslash{@let\=@backslashcurfont}
 @gdef@otherbackslash{@let\=@realbackslash}
 
-@gdef@usemathbackslash{@def@backslashcurfont{@math{@backslash}}}
-
 % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'.  Also revert - to its normal character, in
-% case the active - from code has slipped in.
+% the literal character `\'.
 %
 {@catcode`- = @active
  @gdef@normalturnoffactive{%
@@ -10374,40 +10965,66 @@ directory should work if nowhere else does.}
    @let+=@normalplus
    @let<=@normalless
    @let>=@normalgreater
-   @let\=@normalbackslash
    @let^=@normalcaret
    @let_=@normalunderscore
    @let|=@normalverticalbar
    @let~=@normaltilde
+   @let\=@ttbackslash
    @markupsetuplqdefault
    @markupsetuprqdefault
    @unsepspaces
  }
 }
 
-% Make _ and + \other characters, temporarily.
-% This is canceled by @fixbackslash.
-@otherifyactive
+% If a .fmt file is being used, characters that might appear in a file
+% name cannot be active until we have parsed the command line.
+% So turn them off again, and have @fixbackslash turn them back on.
+@catcode`+=@other @catcode`@_=@other
 
+% \enablebackslashhack - allow file to begin `\input texinfo'
+%
 % If a .fmt file is being used, we don't want the `\input texinfo' to show up.
 % That is what \eatinput is for; after that, the `\' should revert to printing
 % a backslash.
-%
-@gdef@eatinput input texinfo{@fixbackslash}
-@global@let\ = @eatinput
+% If the file did not have a `\input texinfo', then it is turned off after
+% the first line; otherwise the first `\' in the file would cause an error.
+% This is used on the very last line of this file, texinfo.tex.
+% We also use @c to call @fixbackslash, in case ends of lines are hidden.
+{
+@catcode`@^=7
+@catcode`@^^M=13@gdef@enablebackslashhack{%
+  @global@let\ = @eatinput%
+  @catcode`@^^M=13%
+  @def@c{@fixbackslash@c}%
+  @def ^^M{@let^^M@secondlinenl}%
+  @gdef @secondlinenl{@let^^M@thirdlinenl}%
+  @gdef @thirdlinenl{@fixbackslash}%
+}}
+
+{@catcode`@^=7 @catcode`@^^M=13%
+@gdef@eatinput input texinfo#1^^M{@fixbackslash}}
 
-% On the other hand, perhaps the file did not have a `\input texinfo'. Then
-% the first `\' in the file would cause an error. This macro tries to fix
-% that, assuming it is called before the first `\' could plausibly occur.
-% Also turn back on active characters that might appear in the input
-% file name, in case not using a pre-dumped format.
-%
 @gdef@fixbackslash{%
-  @ifx\@eatinput @let\ = @normalbackslash @fi
+  @ifx\@eatinput @let\ = @ttbackslash @fi
+  @catcode13=5 % regular end of line
+  @let@c=@texinfoc
+  % Also turn back on active characters that might appear in the input
+  % file name, in case not using a pre-dumped format.
   @catcode`+=@active
   @catcode`@_=@active
+  %
+  % If texinfo.cnf is present on the system, read it.
+  % Useful for site-wide @afourpaper, etc.  This macro, @fixbackslash, gets
+  % called at the beginning of every Texinfo file.  Not opening texinfo.cnf
+  % directly in this file, texinfo.tex, makes it possible to make a format
+  % file for Texinfo.
+  %
+  @openin 1 texinfo.cnf
+  @ifeof 1 @else @input texinfo.cnf @fi
+  @closein 1
 }
 
+
 % Say @foo, not \foo, in error messages.
 @escapechar = `@@
 
@@ -10447,3 +11064,4 @@ directory should work if nowhere else does.}
 @ignore
    arch-tag: e1b36e32-c96e-4135-a41a-0b2efa2ea115
 @end ignore
+@enablebackslashhack