]> git.donarmstrong.com Git - lilypond.git/commitdiff
Merge branch 'master' into translation
authorJean-Charles Malahieude <lilyfan@orange.fr>
Sat, 20 May 2017 08:54:15 +0000 (10:54 +0200)
committerJean-Charles Malahieude <lilyfan@orange.fr>
Sat, 20 May 2017 08:54:15 +0000 (10:54 +0200)
16 files changed:
Documentation/changes.tely
Documentation/included/gsoc.itexi
Documentation/learning/common-notation.itely
Documentation/notation/spacing.itely
Documentation/web/news-headlines.itexi
Documentation/web/news-new.itexi
Documentation/web/news-old.itexi
VERSION
input/regression/page-layout-extra-offset.ly [new file with mode: 0644]
lily/lexer.ll
lily/parser.yy
ly/Welcome-to-LilyPond-MacOS.ly
ly/Welcome_to_LilyPond.ly
po/lilypond.pot
scm/page.scm
scm/stencil.scm

index b9782edbb85486b12fc6cc9575408c4564771b0f..77ddfb2b74873ef7715da9a5bbc374f1236a00d3 100644 (file)
@@ -61,6 +61,15 @@ which scares away people.
 
 @end ignore
 
+@item
+It is now possible to move systems with reference to their current
+position using the @code{extra-offset} subproperty of
+@code{NonMusicalPaperColumn.line-break-system-details}.  Both vertical
+and horizontal changes are possible.  This feature is especially useful
+for making slight adjustments to the default vertical position of
+individual systems. See @ruser{Explicit staff and system positioning} for
+more information.
+
 @item
 It is now possible to add text to analysis brackets through the
 @code{HorizontalBracketText} object.
index 78eb25f274a22844040f92134bf81575a0e72160..3a0a36b719e25a5f338b5b53076bc2520270f57a 100644 (file)
@@ -22,21 +22,15 @@ 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}.
 
-We have had GSoC participants in 2012, 2015 and 2016 and encourage
-students to apply for the 2017 program.
-
-If you are interested to apply for the program with LilyPond as a
-project, please read the information below and don't hesitate to write
-us on our developer mailing list (see @ref{Contact}).  The student
-application window is March 20 to April 3, 2017, but we strongly
-encourage you to get in touch with our community ahead of that.
+We have had GSoC participants in 2012, 2015, 2016 and 2017.  This site
+will be updated in time before the 2018 season will start.
 
 @divEnd
 
 @divClass{column-center-middle-color2 bigger-subsubheadings}
 @subheading Project Ideas List
 
-Below is a list of GSoC project ideas (last update: January 2017), but
+Below is a list of GSoC project ideas (last update: May 2017), but
 if you have other ideas for a project you may complete within the three
 months of the program you're welcome to make a suggestion on our
 developer mailing list (see @ref{Contact}).  There are a number of areas
@@ -50,27 +44,6 @@ A full list of all the current open issues can be found
 @uref{http://sourceforge.net/p/testlilyissues/issues/, here}.
 
 
-@subsubheading Improve internal chord structure
-
-The internal representation of LilyPond chords is not powerful enough
-to capture the nomenclature of jazz chords.  Currently the chord has
-a root, a bass and an inversion.  It would be nice to be able to handle
-stacked or polychords, minor/major, etc.  In order to do this, an
-internal representation with the ability to capture the essence of
-complex chords must be developed.  As a bonus, once the internal
-representation is developed, the output formatting of chord names can
-be improved.
-
-@emph{Difficulty:} Easy/medium
-
-@emph{Requirements:} Scheme (Guile), but the level necessary can be
-easily learned
-
-@emph{Recommended:} Chord theory and naming
-
-@emph{Mentor:} Carl Sorensen
-
-
 @subsubheading Adopt the SMuFL music font encoding standard
 
 For several years now a new standard for music fonts has been around:
index b51766c0a2e4a70f69430cbf61e7ac2d350a62ca..b9b62cf3b321452ec117290c7f9b68cf4246e39b 100644 (file)
@@ -1343,9 +1343,9 @@ Variables may be used for many other types of objects in
 the input.  For example,
 
 @example
-width = 4.5\cm
-name = "Wendy"
-aFivePaper = \paper @{ paperheight = 21.0 \cm @}
+myWidth = 60      % a number to pass to a \paper variable (the unit is millimeter)
+myName = "Wendy"  % a string to pass to a markup
+aFivePaper = \paper @{ #(set-paper-size "a5") @}
 @end example
 
 Depending on its contents, the variable can be used in different
@@ -1354,11 +1354,11 @@ places.  The following example uses the above variables:
 @example
 \paper @{
   \aFivePaper
-  line-width = \width
+  line-width = \myWidth
 @}
 
 @{
-  c4^\name
+  c4^\myName
 @}
 @end example
 
index fb455c1fdd55f52c4e03459eef336c44f0a6f2e5..daf43ec540aec955bf7cfa3d5a5b5bef0ebcb2a1 100644 (file)
@@ -2440,11 +2440,12 @@ padding, @code{NonMusicalPaperColumn.line-break-system-details}
 can specify exact vertical positions on the page.
 
 @code{NonMusicalPaperColumn.line-break-system-details} accepts
-an associative list of three different settings:
+an associative list of four different settings:
 
 @itemize
 @item @code{X-offset}
 @item @code{Y-offset}
+@item @code{extra-offset}
 @item @code{alignment-distances}
 @end itemize
 
@@ -2557,6 +2558,41 @@ potentially many values, but that we set only one value here.  Note,
 too, that the @code{Y-offset} property here determines the exact vertical
 position on the page at which each new system will render.
 
+In contrast to the absolute positioning available through
+@code{Y-offset} and @code{X-offset}, relative positioning is possible
+with the @code{extra-offset} property of
+@code{line-break-system-details}.  Placement is relative to the
+default layout or to the absolute positioning created by setting
+@code{X-offset} and @code{Y-offset}.  The property @code{extra-offset}
+accepts a @code{pair} consisting of displacements along the X-axis and
+Y-axis.
+
+@lilypond[verbatim,quote,staffsize=16]
+\header { tagline = ##f }
+\paper { left-margin = 0\mm }
+\book {
+  \score {
+    <<
+      \new Staff <<
+        \new Voice {
+          s1*5 \break
+          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
+            #'((extra-offset . (0 . 10)))
+          s1*5 \break
+          \overrideProperty Score.NonMusicalPaperColumn.line-break-system-details
+            #'((extra-offset . (0 . 10)))
+          s1*5 \break
+        }
+        \new Voice { \repeat unfold 15 { c'4 c' c' c' } }
+      >>
+      \new Staff {
+        \repeat unfold 15 { d'4 d' d' d' }
+      }
+    >>
+  }
+}
+@end lilypond
+
 Now that we have set the vertical startpoint of each system
 explicitly, we can also set the vertical distances between staves
 within each system manually.  We do this using the @code{alignment-distances}
@@ -2642,9 +2678,10 @@ Some points to consider:
 do not count as a staff.
 
 @item The units of the numbers passed to @code{X-offset},
-@code{Y-offset} and @code{alignment-distances} are interpreted as multiples
-of the distance between adjacent staff lines.  Positive values move staves
-and lyrics up, negative values move staves and lyrics down.
+@code{Y-offset}, @code{extra-offset} and @code{alignment-distances} are
+interpreted as multiples of the distance between adjacent staff lines.
+Positive values move staves and lyrics up, negative values move staves
+and lyrics down.
 
 @item Because the @code{NonMusicalPaperColumn.line-break-system-details}
 settings given here allow the positioning of staves and systems anywhere
index 3373c5a0e2422e75941f74b5c3dffb2d910e39d8..ec6bbc8b6a9dc9c6527f191a563c0d91fbdff4de 100644 (file)
@@ -11,7 +11,7 @@
 @ifclear web_version
   @c no anchor links, just link to News page
 
-@ref{News, LilyPond 2.19.59 released - @emph{April 09, 2017}}
+@ref{News, LilyPond 2.19.60 released - @emph{May 08, 2017}}
 
 @ref{News, Two LilyPond projects in Google Summer of Code 2016 - @emph{April 23, 2016}}
 
@@ -23,8 +23,8 @@
 @ifset web_version
   @c anchor links, link to individual news items by their <a> tag
 
-@uref{news.html#LilyPond-2_002e19_002e59-released-April-09_002c-2017,
-  LilyPond 2.19.59 released - @emph{April 09, 2017}}
+@uref{news.html#LilyPond-2_002e19_002e60-released-May-08_002c-2017,
+  LilyPond 2.19.60 released - @emph{May 08, 2017}}
 
 @uref{news.html#Two-LilyPond-projects-in-Google-Summer-of-Code-2016-April-23_002c-2016,
   Two LilyPond projects in Google Summer of Code 2016 - @emph{April 23, 2016}}
index 0fd7af19a8617690cbc70dfaeeb3cb6c53708fe4..65383474ac072fc9a5b2d4f96778194ecba25779 100644 (file)
@@ -9,10 +9,10 @@
 @c used for news about the upcoming release; see CG on Release Work
 
 @newsItem
-@subheading LilyPond 2.19.59 released  @emph{April 09, 2017}
+@subheading LilyPond 2.19.60 released  @emph{May 08, 2017}
 
 We are happy to announce the release of LilyPond
-2.19.59.  This release includes a number of enhancements, and contains some
+2.19.60.  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 e8116edb54cbdd99a0c0665bb33e2bf494e24838..17b31caf5310aeaa14cf8efb2e8feb29ff1928ce 100644 (file)
@@ -26,6 +26,18 @@ NOTE:
   * don't duplicate entries from news-new.itexi
 @end ignore
 
+@newsItem
+@subheading LilyPond 2.19.59 released  @emph{April 09, 2017}
+
+We are happy to announce the release of LilyPond
+2.19.59.  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.58 released  @emph{March 26, 2017}
 
diff --git a/VERSION b/VERSION
index f1f40c7d2b1748614f5d51af74e51d534a414bd7..e1d368af3833aa5a9b9f8a8cd9184fd3a78a63ef 100644 (file)
--- a/VERSION
+++ b/VERSION
@@ -1,7 +1,7 @@
 PACKAGE_NAME=LilyPond
 MAJOR_VERSION=2
 MINOR_VERSION=19
-PATCH_LEVEL=60
+PATCH_LEVEL=61
 MY_PATCH_LEVEL=
 VERSION_STABLE=2.18.2
-VERSION_DEVEL=2.19.59
+VERSION_DEVEL=2.19.60
diff --git a/input/regression/page-layout-extra-offset.ly b/input/regression/page-layout-extra-offset.ly
new file mode 100644 (file)
index 0000000..0e5cbbc
--- /dev/null
@@ -0,0 +1,45 @@
+\version "2.19.60"
+
+\header {
+  texidoc = "By setting @code{extra-offset} within the
+@code{line-break-system-details} of @code{NonMusicalPaperColumn},
+systems may be moved in relation either to their default position on the
+printable area of the page or the absolute position specified by
+@code{X-offset} or @code{Y-offset} within
+@code{line-break-system-details}."
+
+}
+
+#(set-default-paper-size "a6" 'portrait)
+
+\paper {
+  indent = 0.0
+  oddHeaderMarkup = "header"
+  oddFooterMarkup = "footer"
+  system-separator-markup = \slashSeparator
+  ragged-right = ##t
+}
+
+\book {
+  \score {
+    {
+      \overrideProperty
+      Score.NonMusicalPaperColumn.line-break-system-details
+      #'((extra-offset . (8.0 . 0.0)))
+      c1 c1 \break
+
+      \overrideProperty
+      Score.NonMusicalPaperColumn.line-break-system-details
+      #'((extra-offset . (12.0 . 8.0)))
+      c1 c1 \break
+
+      \overrideProperty
+      Score.NonMusicalPaperColumn.line-break-system-details
+      #'((X-offset . 8.0)
+         (Y-offset . 36.0)
+         (extra-offset . (-8.0 . 30.0))
+      )
+      c1 c1
+    }
+  }
+}
index 7abad9305830f0e41a1d06fcd4512daf8cca7690..93184ebe085dc2d432274a06d4eeb887e565fe01 100644 (file)
@@ -157,8 +157,8 @@ A           [a-zA-Z\200-\377]
 AA             {A}|_
 N              [0-9]
 ANY_CHAR       (.|\n)
-WORD           {A}([-_]{A}|{A})*
-COMMAND                \\{WORD}
+SYMBOL         {A}([-_]{A}|{A})*
+COMMAND                \\{SYMBOL}
 /* SPECIAL category is for every letter that needs to get passed to
  * the parser rather than being redefinable by the user */
 SPECIAL                [-+*/=<>{}!?_^'',.:]
@@ -362,7 +362,7 @@ BOM_UTF8    \357\273\277
 
     /* Flex picks the longest matching pattern including trailing
      * contexts.  Without the backup pattern, r-. does not trigger the
-     * {RESTNAME} rule but rather the {WORD}/[-_] rule coming later,
+     * {RESTNAME} rule but rather the {SYMBOL}/[-_] rule coming later,
      * needed for avoiding backup states.
      */
 
@@ -476,8 +476,8 @@ BOM_UTF8    \357\273\277
 }
 
 <notes,figures>{
-       {WORD}/[-_]     | // backup rule
-       {WORD}  {
+       {SYMBOL}/[-_]   | // backup rule
+       {SYMBOL}        {
                return scan_bare_word (YYText_utf8 ());
        }
        \\\"    {
@@ -583,7 +583,7 @@ BOM_UTF8    \357\273\277
                s = lyric_fudge (s);
                yylval = ly_string2scm (s);
 
-               return WORD;
+               return SYMBOL;
        }
        /* This should really just cover {} */
        [{}] {
@@ -592,8 +592,8 @@ BOM_UTF8    \357\273\277
        }
 }
 <chords>{
-       {WORD}/[-_]     | // backup rule
-       {WORD}  {
+       {SYMBOL}/[-_]   | // backup rule
+       {SYMBOL}        {
                return scan_bare_word (YYText_utf8 ());
        }
        \\\"    {
@@ -702,7 +702,7 @@ BOM_UTF8    \357\273\277
                string s (YYText_utf8 ()); 
 
                yylval = ly_string2scm (s);
-               return WORD;
+               return SYMBOL;
        }
        [{}]  {
                 yylval = SCM_UNSPECIFIED;
@@ -756,8 +756,8 @@ BOM_UTF8    \357\273\277
 }
 
 <INITIAL>{
-       {WORD}/[-_]     | // backup rule
-       {WORD}  {
+       {SYMBOL}/[-_]   | // backup rule
+       {SYMBOL}        {
                return scan_bare_word (YYText_utf8 ());
        }
        \\\"    {
@@ -927,7 +927,7 @@ Lily_lexer::scan_escaped_word (const string &str)
 
        yylval = ly_string2scm (str);
 
-       return STRING; // WORD would cause additional processing
+       return STRING; // SYMBOL would cause additional processing
 }
 
 int
@@ -1038,7 +1038,7 @@ Lily_lexer::scan_bare_word (const string &str)
                return state;
        }
        yylval = ly_string2scm (str);
-       return WORD;
+       return SYMBOL;
 }
 
 int
index 8c9c468ca474f4a4fc0adb64758d09b7e5fd08eb..f81dc69e9b56faa2e82b4052f86448b492c1a347 100644 (file)
@@ -375,7 +375,7 @@ If we give names, Bison complains.
 %token STRING
 %token SYMBOL_LIST
 %token TONICNAME_PITCH
-%token WORD
+%token SYMBOL
 
 %left '-' '+'
 
@@ -672,7 +672,7 @@ header_block:
 */
 assignment_id:
        STRING
-       | WORD
+       | SYMBOL
        ;
 
 assignment:
@@ -1768,7 +1768,7 @@ symbol_list_element:
 
 
 symbol_list_part_bare:
-       WORD
+       SYMBOL
        {
                $$ = try_word_variants (Lily::key_list_p, $1);
                if (SCM_UNBNDP ($$)) {
@@ -1934,7 +1934,7 @@ function_arglist_nonbackup_reparse:
                else
                        MYREPARSE (@4, $2, SCM_ARG, $4);
        }
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup WORD
+       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_nonbackup SYMBOL
        {
                $$ = $3;
                SCM res = try_word_variants ($2, $4);
@@ -2204,7 +2204,7 @@ function_arglist_backup:
                        MYBACKUP (STRING, $4, @4);
                }
        }
-       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup WORD
+       | EXPECT_OPTIONAL EXPECT_SCM function_arglist_backup SYMBOL
        {
                SCM res = try_word_variants ($2, $4);
                if (!SCM_UNBNDP (res))
@@ -2445,7 +2445,7 @@ function_arglist_common_reparse:
                        // know the predicate to be false.
                        MYREPARSE (@3, $1, SCM_ARG, $3);
        }
-       | EXPECT_SCM function_arglist_optional WORD
+       | EXPECT_SCM function_arglist_optional SYMBOL
        {
                $$ = $2;
                SCM res = try_word_variants ($1, $3);
@@ -2773,7 +2773,7 @@ context_mod:
        | context_def_mod STRING {
                $$ = scm_list_2 ($1, $2);
        }
-       | context_def_mod WORD {
+       | context_def_mod SYMBOL {
                $$ = scm_list_2 ($1, $2);
        }
        | context_def_mod embedded_scm
@@ -2918,13 +2918,13 @@ music_property_def:
 
 string:
        STRING
-       | WORD
+       | SYMBOL
        | full_markup
        ;
 
 text:
        STRING
-       | WORD
+       | SYMBOL
        | full_markup
        | embedded_scm_bare
        {
@@ -2938,7 +2938,7 @@ text:
        ;
 
 simple_string: STRING
-       | WORD
+       | SYMBOL
        | embedded_scm_bare
        {
                if (scm_is_string ($1)) {
@@ -2954,7 +2954,7 @@ symbol:
        STRING {
                $$ = scm_string_to_symbol ($1);
        }
-       | WORD
+       | SYMBOL
        {
                if (!is_regular_identifier ($1, false))
                        parser->parser_error (@1, (_ ("symbol expected")));
@@ -3341,7 +3341,7 @@ gen_text_def:
                        make_simple_markup ($1));
                $$ = t->unprotect ();
        }
-       | WORD {
+       | SYMBOL {
                // Flag a warning? could be unintentional
                Music *t = MY_MAKE_MUSIC ("TextScriptEvent", @$);
                t->set_property ("text",
@@ -3488,7 +3488,7 @@ tremolo_type:
 bass_number:
        UNSIGNED
        | STRING
-       | WORD
+       | SYMBOL
        | full_markup
        | embedded_scm_bare
        {
@@ -3675,7 +3675,7 @@ lyric_element:
                        parser->parser_error (@1, _ ("markup outside of text script or \\lyricmode"));
                $$ = $1;
        }
-       | WORD {
+       | SYMBOL {
                if (!parser->lexer_->is_lyric_state ())
                        parser->parser_error (@1, _f ("not a note name: %s", ly_scm2string ($1)));
                $$ = $1;
@@ -4068,7 +4068,7 @@ simple_markup:
        STRING {
                $$ = make_simple_markup ($1);
        }
-       | WORD {
+       | SYMBOL {
                $$ = make_simple_markup ($1);
        }
        | SCORE {
index 3d9dddac34d9abfad4e9377358fcfa6ba352ca24..28f7a8443eed1aec5685bf08f30b193d80a0e8f9 100644 (file)
@@ -23,7 +23,7 @@ That's it.  For more information, visit http://lilypond.org .
 
 %}
 
-\version "2.19.59"  % necessary for upgrading to future LilyPond versions.
+\version "2.19.60"  % necessary for upgrading to future LilyPond versions.
 
 \header{
   title = "A scale in LilyPond"
index 1118dae394a25f4f6449a4e6652eeb1c4a6e616a..cee729e18ea52741358fb56312e33f08010f9bb8 100644 (file)
@@ -32,7 +32,7 @@ Good luck with LilyPond!  Happy engraving.
 
 %}
 
-\version "2.19.59"  % necessary for upgrading to future LilyPond versions.
+\version "2.19.60"  % necessary for upgrading to future LilyPond versions.
 
 \header{
   title = "A scale in LilyPond"
index d2573e74dc4bb5803344bb34220ebc5167c7d350..8d8c78a6911b9c3fb24ca2342a88b7f43dc65f38 100644 (file)
@@ -6,10 +6,10 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: lilypond 2.19.59\n"
+"Project-Id-Version: lilypond 2.19.60\n"
 "Report-Msgid-Bugs-To: http://post.gmane.org/post.php?group=gmane.comp.gnu."
 "lilypond.bugs\n"
-"POT-Creation-Date: 2017-04-09 11:00+0100\n"
+"POT-Creation-Date: 2017-05-07 11:40+0100\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"
@@ -1870,20 +1870,15 @@ msgstr ""
 msgid "cannot find context to switch to"
 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
+#. No enclosing context of the right kind was found
+#. and the iterator's immediate context is the kind that was sought.
+#: change-iterator.cc:74
 #, c-format
 msgid "not changing to same context type: %s"
 msgstr ""
 
 #. FIXME: incomprehensible message
-#: change-iterator.cc:82
+#: change-iterator.cc:78
 msgid "none of these in my family"
 msgstr ""
 
@@ -3281,120 +3276,124 @@ msgstr ""
 msgid "giving up"
 msgstr ""
 
-#: parser.yy:482 parser.yy:649 parser.yy:988 parser.yy:1069 parser.yy:1305
+#: parser.yy:485 parser.yy:652 parser.yy:992 parser.yy:1073 parser.yy:1309
 msgid "bad expression type"
 msgstr ""
 
-#: parser.yy:901 parser.yy:1508 parser.yy:1570
+#: parser.yy:905 parser.yy:1512 parser.yy:1574
 msgid "not a context mod"
 msgstr ""
 
-#: parser.yy:982 parser.yy:1061 parser.yy:1213
+#: parser.yy:986 parser.yy:1065 parser.yy:1217
 msgid "need \\paper for paper block"
 msgstr ""
 
-#: parser.yy:1095
+#: parser.yy:1099
 msgid "Missing music in \\score"
 msgstr ""
 
-#: parser.yy:1132
+#: parser.yy:1136
 msgid "\\paper cannot be used in \\score, use \\layout instead"
 msgstr ""
 
-#: parser.yy:1183
+#: parser.yy:1187
 msgid "Spurious expression in \\score"
 msgstr ""
 
-#: parser.yy:1387
+#: parser.yy:1391
 msgid "music expected"
 msgstr ""
 
-#: parser.yy:1397 parser.yy:1431
+#: parser.yy:1401 parser.yy:1435
 msgid "unexpected post-event"
 msgstr ""
 
-#: parser.yy:1439
+#: parser.yy:1443
 msgid "Ignoring non-music expression"
 msgstr ""
 
-#: parser.yy:1749 parser.yy:1768
+#: parser.yy:1754 parser.yy:1775
 msgid "not a key"
 msgstr ""
 
-#: parser.yy:2628 parser.yy:2746 parser.yy:2759 parser.yy:2768
+#: parser.yy:2685 parser.yy:2806 parser.yy:2819 parser.yy:2828
 msgid "bad grob property path"
 msgstr ""
 
-#: parser.yy:2726
+#: parser.yy:2786
 msgid "only \\consists and \\remove take non-string argument."
 msgstr ""
 
-#: parser.yy:2787
+#: parser.yy:2847
 msgid "bad context property path"
 msgstr ""
 
-#: parser.yy:2872
+#: parser.yy:2934
 msgid "markup expected"
 msgstr ""
 
-#: parser.yy:2884
+#: parser.yy:2947
 msgid "simple string expected"
 msgstr ""
 
-#: parser.yy:2901
+#: parser.yy:2960 parser.yy:2970
 msgid "symbol expected"
 msgstr ""
 
-#: parser.yy:3041
+#: parser.yy:3110
 msgid "not a rhythmic event"
 msgstr ""
 
-#: parser.yy:3091
+#: parser.yy:3160
 msgid "post-event expected"
 msgstr ""
 
-#: parser.yy:3100 parser.yy:3105
+#: parser.yy:3169 parser.yy:3174
 msgid "have to be in Lyric mode for lyrics"
 msgstr ""
 
-#: parser.yy:3181
+#: parser.yy:3250
 msgid "expecting string or post-event as script definition"
 msgstr ""
 
-#: parser.yy:3285
+#: parser.yy:3361
 msgid "not an articulation"
 msgstr ""
 
-#: parser.yy:3351 parser.yy:3403
+#: parser.yy:3427 parser.yy:3479
 msgid "not a duration"
 msgstr ""
 
-#: parser.yy:3424
+#: parser.yy:3501
 msgid "bass number expected"
 msgstr ""
 
-#: parser.yy:3516
+#: parser.yy:3593
 msgid "have to be in Note mode for notes"
 msgstr ""
 
-#: parser.yy:3555
+#: parser.yy:3632
 msgid "have to be in Chord mode for chords"
 msgstr ""
 
-#: parser.yy:3598
+#: parser.yy:3675
 msgid "markup outside of text script or \\lyricmode"
 msgstr ""
 
-#: parser.yy:3603
+#: parser.yy:3680
 #, c-format
 msgid "not a note name: %s"
 msgstr ""
 
-#: parser.yy:3755 parser.yy:3764
+#: parser.yy:3685
+msgid "string outside of text script or \\lyricmode"
+msgstr ""
+
+#: parser.yy:3837 parser.yy:3846
 msgid "not an unsigned integer"
 msgstr ""
 
-#: parser.yy:3851
+#: parser.yy:3933
 msgid "not a markup"
 msgstr ""
 
@@ -3467,25 +3466,25 @@ msgstr ""
 msgid "undefined character or shorthand: %s"
 msgstr ""
 
-#: lexer.ll:1236
+#: lexer.ll:1247
 msgid "non-UTF-8 input"
 msgstr ""
 
-#: lexer.ll:1280
+#: lexer.ll:1291
 #, c-format
 msgid "Invalid version string \"%s\""
 msgstr ""
 
-#: lexer.ll:1285
+#: lexer.ll:1296
 #, c-format
 msgid "file too old: %s (oldest supported: %s)"
 msgstr ""
 
-#: lexer.ll:1286
+#: lexer.ll:1297
 msgid "consider updating the input with the convert-ly script"
 msgstr ""
 
-#: lexer.ll:1292
+#: lexer.ll:1303
 #, c-format
 msgid "program too old: %s (file requires: %s)"
 msgstr ""
@@ -3504,34 +3503,34 @@ msgstr ""
 msgid "`~a' failed (~a)\n"
 msgstr ""
 
-#: backend-library.scm:108
+#: backend-library.scm:109
 #, scheme-format
 msgid "Converting to `~a'...\n"
 msgstr ""
 
 #. Do not try to guess the name of the png file,
 #. GS produces PNG files like BASE-page%d.png.
-#: backend-library.scm:118
+#: backend-library.scm:119
 #, scheme-format
 msgid "Converting to ~a..."
 msgstr ""
 
-#: backend-library.scm:134
+#: backend-library.scm:135
 #, scheme-format
 msgid "Copying to `~a'...\n"
 msgstr ""
 
-#: backend-library.scm:200
+#: backend-library.scm:201
 #, scheme-format
 msgid "Deleting `~a'...\n"
 msgstr ""
 
-#: backend-library.scm:219
+#: backend-library.scm:220
 #, scheme-format
 msgid "Writing header field `~a' to `~a'..."
 msgstr ""
 
-#: backend-library.scm:268
+#: backend-library.scm:269
 #, scheme-format
 msgid "missing stencil expression `~S'"
 msgstr ""
@@ -3611,12 +3610,12 @@ msgstr ""
 msgid "defaulting to ~S pt"
 msgstr ""
 
-#: define-markup-commands.scm:3863
+#: define-markup-commands.scm:3867
 #, scheme-format
 msgid "not a valid duration string: ~a"
 msgstr ""
 
-#: define-markup-commands.scm:4076
+#: define-markup-commands.scm:4080
 #, scheme-format
 msgid "not a valid duration string: ~a - ignoring"
 msgstr ""
@@ -3777,7 +3776,7 @@ msgstr ""
 msgid "Font export directory `~a' already exists."
 msgstr ""
 
-#: framework-ps.scm:901
+#: framework-ps.scm:907
 msgid ""
 "\n"
 "The PostScript backend does not support the\n"
@@ -3985,44 +3984,53 @@ msgstr ""
 msgid "Bad chord repetition"
 msgstr ""
 
-#: music-functions.scm:966
+#: music-functions.scm:968
+#, scheme-format
+msgid "Bad voice id: ~a"
+msgstr ""
+
+#: music-functions.scm:979
+msgid "\\voices needs more ids"
+msgstr ""
+
+#: music-functions.scm:998
 #, scheme-format
 msgid "music expected: ~S"
 msgstr ""
 
-#: music-functions.scm:1316
+#: music-functions.scm:1348
 #, scheme-format
 msgid "cannot find quoted music: `~S'"
 msgstr ""
 
-#: music-functions.scm:1453
+#: music-functions.scm:1485
 msgid "Add @var{octave-shift} to the octave of @var{pitch}."
 msgstr ""
 
-#: music-functions.scm:1516
+#: music-functions.scm:1548
 #, scheme-format
 msgid "Unknown octaveness type: ~S "
 msgstr ""
 
-#: music-functions.scm:1517
+#: music-functions.scm:1549
 msgid "Defaulting to 'any-octave."
 msgstr ""
 
-#: music-functions.scm:1916
+#: music-functions.scm:1948
 #, scheme-format
 msgid "unknown accidental style: ~S"
 msgstr ""
 
-#: music-functions.scm:2141
+#: music-functions.scm:2173
 msgid "Missing duration"
 msgstr ""
 
-#: music-functions.scm:2662
+#: music-functions.scm:2694
 #, scheme-format
 msgid "not a symbol list: ~a"
 msgstr ""
 
-#: music-functions.scm:2665
+#: music-functions.scm:2697
 #, scheme-format
 msgid "conflicting tag group ~a"
 msgstr ""
index c6e69658cea45b8c1cfac5f770b7b9ce10c0a3e9..20e58b61e21c4bf0bcdac8a61318a15cebace630 100644 (file)
                                                        system-separator-markup)
                                      #f))
 
-       (page-stencil (ly:make-stencil '()))
+       (page-stencil empty-stencil)
 
        (last-system #f)
        (last-y 0.0)
        (add-system
         (lambda (system)
           (let* ((stencil (paper-system-stencil system))
-                 (y (ly:prob-property system 'Y-offset 0))
+                 (extra-offset (ly:prob-property system 'extra-offset '(0 . 0)))
+                 (x (+ (ly:prob-property system 'X-offset 0.0)
+                       (car extra-offset)))
+                 (y (+ (ly:prob-property system 'Y-offset 0.0)
+                       (cdr extra-offset)))
                  (is-title (paper-system-title?
                             system)))
-            (add-to-page stencil
-                         (ly:prob-property system 'X-offset 0.0)
-                         y)
+            (add-to-page stencil x y)
             (if (and (ly:stencil? system-separator-stencil)
                      last-system
                      (not (paper-system-title? system))
index 00f8503487b7f0cd185b48acfb1d81af3f9231da..391e80882f3f42f73e5fba4358ff52427f8de46e 100644 (file)
@@ -727,10 +727,12 @@ box, remains the same."
     replaced-stil))
 
 (define-public (stencil-with-color stencil color)
-  (ly:make-stencil
-   (list 'color color (ly:stencil-expr stencil))
-   (ly:stencil-extent stencil X)
-   (ly:stencil-extent stencil Y)))
+  (if (color? color)
+      (ly:make-stencil
+       (list 'color color (ly:stencil-expr stencil))
+       (ly:stencil-extent stencil X)
+       (ly:stencil-extent stencil Y))
+      stencil))
 
 (define*-public (stencil-whiteout-outline
                  stil #:optional (thickness 0.3) (color white)