X-Git-Url: https://git.donarmstrong.com/?a=blobdiff_plain;f=scripts%2Flilypond-book.py;h=dd495fc7509e213d10fbe49c3153aefc5e4e9489;hb=8be47fcb0708d3c1d9f7749be6b89bcdb35c720a;hp=472101b8b53338edd2d542bcd60c0feee1ea9e57;hpb=8f5cd22af76fcb5c77853a5ede8b94ebef97caef;p=lilypond.git diff --git a/scripts/lilypond-book.py b/scripts/lilypond-book.py index 472101b8b5..dd495fc750 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' @@ -1100,8 +1109,7 @@ class Lilypond_snippet (Snippet): and (self.relevant_contents (self.full_ly ()) == self.relevant_contents (open (ly_file).read ()))): return None - if global_options.verbose: - print 'OUT OF DATE: ', ly_file + return self def png_is_outdated (self): @@ -1439,10 +1447,12 @@ def process_snippets (cmd, ly_snippets, texstr_snippets, png_snippets): be_verbose=global_options.verbose, progress_p=1) - if global_options.format in (HTML, TEXINFO): + if global_options.format in (HTML, TEXINFO) and '--formats' not in cmd: cmd += ' --formats=png ' - if global_options.format in (DOCBOOK): + elif global_options.format in (DOCBOOK) and '--formats' not in cmd: cmd += ' --formats=png,pdf ' + + # UGH # the --process=CMD switch is a bad idea # it is too generic for lilypond-book. @@ -1554,6 +1564,7 @@ def write_file_map (lys, name): snippet_map = open ('snippet-map.ly', 'w') snippet_map.write (""" #(define version-seen #t) +#(define output-empty-score-list #f) #(ly:add-file-name-alist '( """) for ly in lys: @@ -1566,7 +1577,7 @@ def write_file_map (lys, name): def do_process_cmd (chunks, input_name): all_lys = filter (lambda x: is_derived_class (x.__class__, Lilypond_snippet), - chunks) + chunks) write_file_map (all_lys, input_name) ly_outdated = filter (lambda x: is_derived_class (x.__class__, @@ -1762,6 +1773,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 +1817,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 +1850,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 ()