From cb450634463914e57cabd743c3b9b04c3d7147fa Mon Sep 17 00:00:00 2001 From: Han-Wen Nienhuys Date: Sat, 30 Dec 2006 14:41:20 +0100 Subject: [PATCH] Make -deps-box-padding take a positive argument in mm. Fixes #199. Add --left-padding option to lilypond-book, document and set to 3.0 by default. Shorten music lines correspondingly. --- Documentation/user/lilypond-book.itely | 11 ++++++ scm/framework-ps.scm | 6 ++- scm/lily.scm | 10 +++-- scripts/lilypond-book.py | 54 ++++++++++++++++---------- 4 files changed, 56 insertions(+), 25 deletions(-) diff --git a/Documentation/user/lilypond-book.itely b/Documentation/user/lilypond-book.itely index 587df0ee40..d326bafb9d 100644 --- a/Documentation/user/lilypond-book.itely +++ b/Documentation/user/lilypond-book.itely @@ -775,6 +775,17 @@ cd out ... @end example +@itemx --padding=@var{amount} +Pad EPS boxes by this much. @var{amount} is measured in milimeters, +and is 3.0 by default. This option should be used if the lines of +music stick out of the right margin. + +The width of a tightly clipped systems can vary, due to notation +elements that stick into the left margin, such as bar numbers and +instrument names. This option will shorten each line and move each +line to the right by the same amount. + + @item -P @var{process} @itemx --process=@var{command} Process LilyPond snippets using @var{command}. The default command is diff --git a/scm/framework-ps.scm b/scm/framework-ps.scm index 23d0f10dfc..e63cb262e8 100644 --- a/scm/framework-ps.scm +++ b/scm/framework-ps.scm @@ -487,7 +487,11 @@ (let* ((xext (ly:stencil-extent dump-me X)) (yext (ly:stencil-extent dump-me Y)) - (left-overshoot (ly:get-option 'eps-box-padding)) + (left-overshoot (* + -1 + (ly:get-option 'eps-box-padding) + (ly:output-def-lookup paper 'mm) + )) (bbox (map (lambda (x) diff --git a/scm/lily.scm b/scm/lily.scm index 7f73a3dfde..a403861990 100644 --- a/scm/lily.scm +++ b/scm/lily.scm @@ -31,16 +31,18 @@ ensure that all refs to parsed objects are dead. This is an internal option, an "delete unusable PostScript files") (dump-signatures #f "dump output signatures of each system") (dump-tweaks #f "dump page layout and tweaks for each score having the tweak-key layout property set.") + + (eps-box-padding #f "Pad EPS bounding box left edge by this much to guarantee alignment between systems") + (gs-load-fonts #f "load fonts via Ghostscript.") + (gui #f "running from gui; redirect stderr to log file") + (include-book-title-preview #t "include book-titles in preview images.") (include-eps-fonts #t "Include fonts in separate-system EPS files.") (job-count #f "Process in parallel") - - (eps-box-padding #f "Pad EPS bounding box left edge by this much to guarantee alignment between systems") - - (gui #f "running from gui; redirect stderr to log file") (log-file #f "redirect output to log FILE.log") + (old-relative #f "relative for simultaneous music works similar to chord syntax") diff --git a/scripts/lilypond-book.py b/scripts/lilypond-book.py index 472101b8b5..340c1f0e44 100644 --- a/scripts/lilypond-book.py +++ b/scripts/lilypond-book.py @@ -80,7 +80,6 @@ _ ("Process LilyPond snippets in hybrid HTML, LaTeX, texinfo or DocBook document authors = ('Jan Nieuwenhuizen ', 'Han-Wen Nienhuys ') - ################################################################ def exit (i): if global_options.verbose: @@ -139,11 +138,19 @@ def get_option_parser (): metavar=_ ("DIR"), action='append', dest='include_path', default=[os.path.abspath (os.getcwd ())]) + + p.add_option ('--left-padding', + metavar=_("PAD"), + dest="padding_mm", + help="Pad left side of music to align music inspite of uneven bar numbers. (in mm)", + type="float", + default=-3.0) p.add_option ("-o", '--output', help=_ ("write output to DIR"), metavar=_ ("DIR"), action='store', dest='output_name', default='') + p.add_option ('-P', '--process', metavar=_ ("COMMAND"), help = _ ("process ly_files using COMMAND FILE..."), action='store', @@ -698,6 +705,8 @@ PREAMBLE_LY = '''%%%% Generated by %(program_name)s #(define dump-extents #t) %(font_dump_setting)s %(paper_string)s + force-assignment = #"" + line-width = #(- line-width (* mm %(padding_mm)f)) } \layout { @@ -1052,7 +1061,7 @@ class Lilypond_snippet (Snippet): '\n ') % vars () preamble_string = string.join (compose_dict[PREAMBLE], '\n ') % override - + padding_mm = global_options.padding_mm font_dump_setting = '' if FONTLOAD in self.option_dict: font_dump_setting = '#(define-public force-eps-font-include #t)\n' @@ -1762,6 +1771,22 @@ def do_options (): return args +def psfonts_warning (options, basename): + if options.format in (TEXINFO, LATEX): + psfonts_file = os.path.join (options.output_name, basename + '.psfonts') + output = os.path.join (options.output_name, basename + '.dvi' ) + + if not options.create_pdf: + if not options.psfonts: + warning (_ ("option --psfonts not used")) + warning (_ ("processing with dvips will have no fonts")) + else: + progress ('\n') + progress (_ ("DVIPS usage:")) + progress ('\n') + progress (" dvips -h %(psfonts_file)s %(output)s" % vars ()) + progress ('\n') + def main (): # FIXME: 85 lines of `main' macramee?? files = do_options () @@ -1790,15 +1815,16 @@ def main (): if global_options.format in (TEXINFO, LATEX): ## prevent PDF from being switched on by default. global_options.process_cmd += ' --formats=eps ' - - if (global_options.format in (TEXINFO, LATEX) - and global_options.create_pdf): - global_options.process_cmd += "--pdf -dinclude-eps-fonts -dgs-load-fonts " + if global_options.create_pdf: + global_options.process_cmd += "--pdf -dinclude-eps-fonts -dgs-load-fonts " if global_options.verbose: global_options.process_cmd += " --verbose " - global_options.process_cmd += " -dread-file-list -deps-box-padding=-3 " + if global_options.padding_mm: + global_options.process_cmd += " -deps-box-padding=%f " % global_options.padding_mm + + global_options.process_cmd += " -dread-file-list " identify () @@ -1822,19 +1848,7 @@ def main (): except Compile_error: exit (1) - if global_options.format in (TEXINFO, LATEX): - psfonts_file = os.path.join (global_options.output_name, basename + '.psfonts') - output = os.path.join (global_options.output_name, basename + '.dvi' ) - - if not global_options.psfonts and not global_options.create_pdf: - warning (_ ("option --psfonts not used")) - warning (_ ("processing with dvips will have no fonts")) - else: - progress ('\n') - progress (_ ("DVIPS usage:")) - progress ('\n') - progress (" dvips -h %(psfonts_file)s %(output)s" % vars ()) - progress ('\n') + psfonts_warning (global_options, basename) inputs = note_input_file ('') inputs.pop () -- 2.39.5