From: Jean-Charles Malahieude Date: Sat, 20 May 2017 08:54:15 +0000 (+0200) Subject: Merge branch 'master' into translation X-Git-Url: https://git.donarmstrong.com/?p=lilypond.git;a=commitdiff_plain;h=7719b3925322a347391fc6c5520a1d763695560f;hp=78b7ffda242f80920184cd6f1126b50a3c4c0395 Merge branch 'master' into translation --- diff --git a/Documentation/changes.tely b/Documentation/changes.tely index b9782edbb8..77ddfb2b74 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -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. diff --git a/Documentation/included/gsoc.itexi b/Documentation/included/gsoc.itexi index 78eb25f274..3a0a36b719 100644 --- a/Documentation/included/gsoc.itexi +++ b/Documentation/included/gsoc.itexi @@ -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: diff --git a/Documentation/learning/common-notation.itely b/Documentation/learning/common-notation.itely index b51766c0a2..b9b62cf3b3 100644 --- a/Documentation/learning/common-notation.itely +++ b/Documentation/learning/common-notation.itely @@ -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 diff --git a/Documentation/notation/spacing.itely b/Documentation/notation/spacing.itely index fb455c1fdd..daf43ec540 100644 --- a/Documentation/notation/spacing.itely +++ b/Documentation/notation/spacing.itely @@ -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 diff --git a/Documentation/web/news-headlines.itexi b/Documentation/web/news-headlines.itexi index 3373c5a0e2..ec6bbc8b6a 100644 --- a/Documentation/web/news-headlines.itexi +++ b/Documentation/web/news-headlines.itexi @@ -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 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}} diff --git a/Documentation/web/news-new.itexi b/Documentation/web/news-new.itexi index 0fd7af19a8..65383474ac 100644 --- a/Documentation/web/news-new.itexi +++ b/Documentation/web/news-new.itexi @@ -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 diff --git a/Documentation/web/news-old.itexi b/Documentation/web/news-old.itexi index e8116edb54..17b31caf53 100644 --- a/Documentation/web/news-old.itexi +++ b/Documentation/web/news-old.itexi @@ -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 f1f40c7d2b..e1d368af38 100644 --- 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 index 0000000000..0e5cbbc052 --- /dev/null +++ b/input/regression/page-layout-extra-offset.ly @@ -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 + } + } +} diff --git a/lily/lexer.ll b/lily/lexer.ll index 7abad93058..93184ebe08 100644 --- a/lily/lexer.ll +++ b/lily/lexer.ll @@ -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 } { - {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 } } { - {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 } { - {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 diff --git a/lily/parser.yy b/lily/parser.yy index 8c9c468ca4..f81dc69e9b 100644 --- a/lily/parser.yy +++ b/lily/parser.yy @@ -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 { diff --git a/ly/Welcome-to-LilyPond-MacOS.ly b/ly/Welcome-to-LilyPond-MacOS.ly index 3d9dddac34..28f7a8443e 100644 --- a/ly/Welcome-to-LilyPond-MacOS.ly +++ b/ly/Welcome-to-LilyPond-MacOS.ly @@ -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" diff --git a/ly/Welcome_to_LilyPond.ly b/ly/Welcome_to_LilyPond.ly index 1118dae394..cee729e18e 100644 --- a/ly/Welcome_to_LilyPond.ly +++ b/ly/Welcome_to_LilyPond.ly @@ -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" diff --git a/po/lilypond.pot b/po/lilypond.pot index d2573e74dc..8d8c78a691 100644 --- a/po/lilypond.pot +++ b/po/lilypond.pot @@ -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 \n" "Language-Team: LANGUAGE \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 "" diff --git a/scm/page.scm b/scm/page.scm index c6e69658ce..20e58b61e2 100644 --- a/scm/page.scm +++ b/scm/page.scm @@ -227,7 +227,7 @@ system-separator-markup) #f)) - (page-stencil (ly:make-stencil '())) + (page-stencil empty-stencil) (last-system #f) (last-y 0.0) @@ -243,12 +243,14 @@ (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)) diff --git a/scm/stencil.scm b/scm/stencil.scm index 00f8503487..391e80882f 100644 --- a/scm/stencil.scm +++ b/scm/stencil.scm @@ -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)