From 4921d3518f4961abcfaf9ea243bec33efc943574 Mon Sep 17 00:00:00 2001 From: Keith OHara Date: Sat, 8 Jan 2011 03:21:41 -0800 Subject: [PATCH] Correct convert-ly of page spacing Add a new rule to convert assignments to some page spacing variables from mm to staff spaces Add a NOT_SMART for variables the rule is unable to convert Correct text of a NOT_SMART --- Documentation/changes.tely | 8 ++++++ input/regression/morgenlied.ly | 4 +-- input/regression/typography-demo.ly | 4 +-- python/convertrules.py | 40 +++++++++++++++++++++-------- 4 files changed, 39 insertions(+), 17 deletions(-) diff --git a/Documentation/changes.tely b/Documentation/changes.tely index 70e022276a..635984362f 100644 --- a/Documentation/changes.tely +++ b/Documentation/changes.tely @@ -454,6 +454,14 @@ from being typeset. @item The vertical spacing engine has been drastically changed, making it more flexible and easier to control. +The spacing between staves within a system can now change +to better use the space on the page. +User-defined contexts may participate in this flexible spacing, +depending on how their @code{staff-affinity} is defined. +Some page formatting variables (@code{page-top-space}, +@code{between-system-space -padding}, and +@code{before- between- after-title-space}) have been replaced +by flexible vertical dimensions. @end itemize diff --git a/input/regression/morgenlied.ly b/input/regression/morgenlied.ly index 4b5cd97dd4..7a9c3b7c70 100644 --- a/input/regression/morgenlied.ly +++ b/input/regression/morgenlied.ly @@ -38,8 +38,7 @@ manuscriptBreak = { \break } %#(set-global-staff-size (* 5.8 mm)) line-width = #(* mm 160) indent = 8\mm - interscoreline = 2.\mm - between-system-space = 15\mm + system-system-spacing #'basic-distance = #10.3 ragged-bottom = ##t } @@ -171,7 +170,6 @@ pianoLH = \relative c'' \repeat volta 2 { \layout { \context { \Lyrics - \override VerticalAxisGroup #'minimum-Y-extent = #'(-0.5 . 2.5) \override LyricText #'font-size = #-1 } \context { diff --git a/input/regression/typography-demo.ly b/input/regression/typography-demo.ly index a28757a871..d3d7d1c2f4 100644 --- a/input/regression/typography-demo.ly +++ b/input/regression/typography-demo.ly @@ -19,8 +19,7 @@ ignoreMelismaOff = \unset ignoreMelismata %#(set-global-staff-size (* 5.8 mm)) indent = #(* mm 4) line-width = #(* mm 140) - interscoreline = 2.\mm - between-system-space = 15\mm + system-system-spacing #'basic-distance = #10.3 ragged-bottom = ##t } @@ -146,7 +145,6 @@ pianoLH = \relative c'' \repeat volta 2\new Voice { \layout { \context { \Lyrics - \override VerticalAxisGroup #'minimum-Y-extent = #'(-0.85 . 2.2) \override LyricText #'font-size = #-1 } \context { diff --git a/python/convertrules.py b/python/convertrules.py index 06e144a23f..c3cbc21338 100644 --- a/python/convertrules.py +++ b/python/convertrules.py @@ -2964,22 +2964,29 @@ def conv(str): '(Note|Rest|Skip_event)_swallow_translator|String_number_engraver)"*', '', str) - str = re.sub (r"page-top-space\s*=\s*#([0-9.]+)", - r"top-system-spacing #'space = #\1", + # match through the end of assignments in the form "x = 30", "x = 1 \in", or "x = #3" + str = re.sub (r"(page-top-space)\s*=\s*(([+-]?[.\d]*\s*\\[-\w]+)|(#?\s*[-+]?[.\d]+))", + r"obsolete-\g<0>" + r" top-system-spacing #'space = #(/ obsolete-\1 staff-space)", str) - str = re.sub (r"between-system-space\s*=\s*#([0-9.]+)", - r"between-system-spacing #'space = #\1\nbetween-scores-system-spacing #'space = #\1", + str = re.sub (r"(between-system-space)\s*=\s*(([+-]?[.\d]*\s*\\[-\w]+)|(#?\s*[-+]?[.\d]+))", + r"obsolete-\g<0>" + r" between-system-spacing #'space = #(/ obsolete-\1 staff-space)" + r" between-scores-system-spacing #'space = #(/ obsolete-\1 staff-space)", str) - str = re.sub (r"between-system-padding\s*=\s*#([0-9.]+)", - r"between-system-spacing #'padding = #\1\nbetween-scores-system-spacing #'padding = #\1", + str = re.sub (r"(between-system-padding)\s*=\s*(([+-]?[.\d]*\s*\\[-\w]+)|(#?\s*[-+]?[.\d]+))", + r"obsolete-\g<0>" + r" between-system-spacing #'padding = #(/ obsolete-\1 staff-space)" + r" between-scores-system-spacing #'padding = #(/ obsolete-\1 staff-space)", str) - str = re.sub (r"(after|between|before)-title-space\s*=\s*#([0-9.]+)", - r"\1-title-spacing #'space = #\2", + str = re.sub (r"((before|between|after)-title-space)\s*=\s*(([+-]?[.\d]*\s*\\[-\w]+)|(#?\s*[-+]?[.\d]+))", + r"obsolete-\g<0>" + r" \2-title-spacing #'space = #(/ obsolete-\1 staff-space)", str) - if re.search(r'minimum-Y-extent', str): + if re.search(r"VerticalAxisGroup\s*#\s*'minimum-Y-extent", str): stderr_write("\n") - stderr_write(NOT_SMART % _("vertical spacing has been changed; minimum-Y-extent is obsolete.\n")) + stderr_write(NOT_SMART % _("minimum-Y-extent; vertical spacing no longer depends on the Y-extent of a VerticalAxisGroup.\n")) stderr_write(UPDATE_MANUALLY) return str @@ -3131,7 +3138,8 @@ def conv(str): @rule ((2, 13, 46), _ ("Change stringTunings from a list of semitones to a list of pitches.\n"\ - "Change tenor and baritone ukulele names in string tunings.")) + "Change tenor and baritone ukulele names in string tunings.\n"\ + "Generate messages for manual conversion of vertical spacing if required.")) def conv(str): def semitones2pitch(semitones): @@ -3161,6 +3169,16 @@ def conv(str): new_tunings , str) str = re.sub (r"ukulele-(tenor|baritone)-tuning", r"\1-ukulele-tuning", str) + + if re.search (r"[^-]page-top-space", str): + stderr_write (NOT_SMART % "page-top-space. " + UPDATE_MANUALLY) + if re.search (r"[^-]between-system-(space|padding)", str): + stderr_write (NOT_SMART % "between-system-space, -padding. " + UPDATE_MANUALLY) + if re.search (r"[^-](before|between|after)-title-space", str): + stderr_write (NOT_SMART % "-title-space. " + UPDATE_MANUALLY) + if re.search (r"\\name\s", str): + stderr_write("\n" + _("Vertical spacing changes might affect user-defined contexts. ") + UPDATE_MANUALLY) + return str # Guidelines to write rules (please keep this at the end of this file) -- 2.39.2