]> git.donarmstrong.com Git - lilypond.git/commitdiff
* scripts/lilypond-book.py (do_options): --psfonts doesn't take
authorHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 1 Jun 2005 13:16:26 +0000 (13:16 +0000)
committerHan-Wen Nienhuys <hanwen@xs4all.nl>
Wed, 1 Jun 2005 13:16:26 +0000 (13:16 +0000)
argument anymore.

* make/ly-vars.make (DVIPS_FLAGS): use .psfonts as extension.

* input/tutorial/lbook-latex-test.tex: add line length test.

* scripts/lilypond-book.py (set_default_options): new
function. Call this before dissecting snippets, so linewidth
settings reach the snippets.

ChangeLog
Documentation/user/lilypond-book.itely
input/tutorial/lbook-latex-test.tex
make/ly-rules.make
make/ly-vars.make
python/fontextract.py
scripts/lilypond-book.py

index 380c3d2ecc1a8d24310053b3fa9d7e42ea1e4280..12c696f5a965e51b44932ac7459b94bfc6f99a38 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2005-06-01  Han-Wen Nienhuys  <hanwen@xs4all.nl>
+
+       * scripts/lilypond-book.py (do_options): --psfonts doesn't take
+       argument anymore.
+
+       * make/ly-vars.make (DVIPS_FLAGS): use .psfonts as extension.
+
+       * input/tutorial/lbook-latex-test.tex: add line length test.
+
+       * scripts/lilypond-book.py (set_default_options): new
+       function. Call this before dissecting snippets, so linewidth
+       settings reach the snippets.
+
 2005-06-01  Jan Nieuwenhuizen  <janneke@gnu.org>
 
        * scm/lily.scm (PLATFORM, slashify): Remove double slashes.
index 5ec8f5a06251c63baa5d7f85beaf414cff8ec3b6..c29e882b61bbc4c55cabc90eea9cc82db64beb28 100644 (file)
@@ -93,7 +93,7 @@ Under Unix, you can view the results as follows
 @example
 cd input/tutorial
 mkdir -p out/
-lilypond-book --output=out --psfonts=psfonts lilybook.tex
+lilypond-book --output=out --psfonts lilybook.tex
 @emph{lilypond-book (GNU LilyPond) 2.6.0}
 @emph{Reading lilybook.tex...}
 @emph{..lots of stuff deleted..}
@@ -107,7 +107,7 @@ xdvi lilybook
 To convert the file into a PDF document, run the following commands
 
 @example
-dvips -Ppdf -h psfonts lilybook
+dvips -Ppdf -h lilybook.psfonts lilybook
 ps2pdf lilybook.ps
 @end example
 
@@ -285,13 +285,13 @@ a PostScript file, add the following options to the @command{dvips}
 command line:
 
 @example
--Ppdf -h psfonts
+-Ppdf -h @var{file}.psfonts
 @end example
 
 @noindent
-where the @command{psfonts} file is obtained from
+where the @var{file}@command{psfonts} file is obtained from
 @command{lilypond-book}, @xref{Invoking lilypond-book} for details. PDF
-can then be produced with a PostScript to PDF translator like 
+can then be produced with a PostScript to PDF translator like
 @code{ps2pdf} (which is part of GhostScript).
 
 @cindex international characters
@@ -567,7 +567,7 @@ To produce PDF output from the lilypond-book file (here called
 @code{yourfile.lytex}), you should do
 
 @example
-lilypond-book --psfonts=tempfonts.ps yourfile.lytex
+lilypond-book --psfonts yourfile.lytex
 latex yourfile.tex
 dvips -h tempfonts.ps -Ppdf yourfile.dvi
 ps2pdf yourfile.ps
@@ -639,9 +639,9 @@ Process LilyPond snippets using @var{command}.  The default command is
 @code{lilypond}.  @code{lilypond-book} will not --filter and --process
 at the same time.
 
-@itemx --psfonts=FILE
-extract all PostScript fonts into FILE for LaTeX.  This is necessary
-for @command{dvips -h FILE}.
+@itemx --psfonts
+extract all PostScript fonts into @file{@var{file}.psfonts} for dvips.
+This is necessary for @command{dvips -h @var{file}.psfonts}.
 
 @item -V
 @itemx --verbose
index f5cfa1c515e060ca5f449fa54ad803fa07d4bfd5..393044389109017a18e1c0cf246733a791d16b6e 100644 (file)
@@ -22,4 +22,27 @@ Larger examples can be put in a separate file, and introduced with
 
 %\lilypondfile[quote,noindent]{screech-boink.ly}
 
+
+
+The line length of a \LaTeX{} document matches the length of music
+fragment: bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
+bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
+bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
+bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla bla
+bla bla bla bla bla bla
+
+\begin{lilypond}
+{
+c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c''
+c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c''
+c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c''
+c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c''
+c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c''
+c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c''
+c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c''
+c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c'' c''4 c'' c'' c''
+}
+\end{lilypond}
+
+
 \end{document}
index b9581518ca2974720a01b114857e0f2fb79b86a2..7900db9cf42053c03df2c5d77f516e6314ee156f 100644 (file)
@@ -1,18 +1,19 @@
 .SUFFIXES: .doc .dvi .tely .texi .ly
 
 
-$(outdir)/%.latex $(outdir)/%.fonts.ps:  %.doc
+$(outdir)/%.latex $(outdir)/%.psfonts:  %.doc
        $(PYTHON) $(LILYPOND_BOOK) $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND) $(LILYPOND_BOOK_INCLUDES)' --output=$(outdir) --verbose $(LILYPOND_BOOK_FLAGS) $<
 
 # don't do ``cd $(outdir)'', and assume that $(outdir)/.. is the src dir.
 # it is not, for --srcdir builds
 $(outdir)/%.texi: %.tely
        rm -f $$(grep -LF '% eof' $(outdir)/lily-*systems.tex 2>/dev/null)
-       $(PYTHON) $(LILYPOND_BOOK) --psfonts=$(basename $<).fonts.ps $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND) $(LILYPOND_BOOK_INCLUDES)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) --verbose $(LILYPOND_BOOK_FLAGS) $<
+       $(PYTHON) $(LILYPOND_BOOK) --psfonts $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND) $(LILYPOND_BOOK_INCLUDES)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) --verbose $(LILYPOND_BOOK_FLAGS) $<
+
 
 $(outdir)/%.texi: $(outdir)/%.tely
        rm -f $$(grep -LF '% eof' $(outdir)/lily-*systems.tex 2>/dev/null)
-       $(PYTHON) $(LILYPOND_BOOK) --psfonts=$(notdir $(basename $<)).fonts.ps $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND) $(LILYPOND_BOOK_INCLUDES)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) --verbose $(LILYPOND_BOOK_FLAGS) $<
+       $(PYTHON) $(LILYPOND_BOOK) --psfonts $(LILYPOND_BOOK_INCLUDES) --process='$(LILYPOND) $(LILYPOND_BOOK_INCLUDES)' --output=$(outdir) --format=$(LILYPOND_BOOK_FORMAT) --verbose $(LILYPOND_BOOK_FLAGS) $<
 #
 # DON'T REMOVE SOURCE FILES, otherwise the .TEXI ALWAYS OUT OF DATE.
 #      rm -f $<
index 7f574563db88107b3d2b9edd5405681c727ef5dc..9135bc4741aea4d599b52b4d12d7096e03c307ae 100644 (file)
@@ -17,4 +17,4 @@ TEXINFO_SOURCES += $(TELY_FILES) $(ITELY_FILES) $(ITEXI_FILES)
 EXTRA_DIST_FILES +=$(TELY_FILES) $(LY_FILES) $(ITEXI_FILES) $(ITELY_FILES) $(ILY_FILES)
 
 
-DVIPS_FLAGS= -h $(subst pdf,fonts.ps,$(subst .ps,.fonts.ps, $(notdir $@ )))
+DVIPS_FLAGS= -h $(subst .pdf,.psfonts,$(subst .ps,.psfonts, $(notdir $@ )))
index 7066df3f79eafd65a78baa5d6ef529957ca90cf5..1233921be8b8c1c3b65325256d864abbb09bfd0c 100644 (file)
@@ -81,7 +81,6 @@ def extract_fonts_from_file (extract_from_this, font_dict, filename):
                                          % (string.join (extract_from_this, ', '), filename))
 
 def write_extracted_fonts (output_file_name, font_dict):
-
        if verbose:
                sys.stderr.write( _('Writing fonts to %s') % output_file_name + '\n')
        output = open (output_file_name, 'w')
index 8dfaa411dfd1246c0dee93d9e3a47447e9331479..1c17298915553aed488a8afae4e1dad7100c7938 100644 (file)
@@ -13,6 +13,9 @@ classic lilypond-book:
      lilypond-book --process="lilypond" BOOK.tely
 
 TODO:
+
+    *  this script is too complex. Modularize.
+    
     *  ly-options: intertext?
     *  --linewidth?
     *  eps in latex / eps by lilypond -b ps?
@@ -93,9 +96,9 @@ option_definitions = [
          _ ("write output to DIR")),
        (_ ("COMMAND"), 'P', 'process',
          _ ("process ly_files using COMMAND FILE...")),
-       (_('FILE'), '', 'psfonts',
-        _ ('''extract all PostScript fonts into FILE for LaTeX
-        must use this with dvips -h FILE''')),
+       (_(''), '', 'psfonts',
+        _ ('''extract all PostScript fonts into INPUT.psfonts for LaTeX
+        must use this with dvips -h INPUT.psfonts''')),
        ('', 'V', 'verbose',
          _ ("be verbose")),
        ('', 'v', 'version',
@@ -111,7 +114,7 @@ lilypond_binary = os.path.join ('@bindir@', 'lilypond')
 if '@bindir@' == ('@' + 'bindir@') or not os.path.exists (lilypond_binary):
        lilypond_binary = 'lilypond'
 
-psfonts_file = ''
+psfonts_p = 0
 use_hash_p = 1
 format = 0
 output_name = ''
@@ -650,6 +653,27 @@ def split_options (option_string):
 def invokes_lilypond ():
        return re.search ('^[\'\"0-9A-Za-z/]*lilypond', process_cmd)
 
+def set_default_options (source):
+       global default_ly_options
+       if not default_ly_options.has_key (LINEWIDTH):
+               if format == LATEX:
+                       textwidth = get_latex_textwidth (source)
+                       default_ly_options[LINEWIDTH] = \
+                         '''%.0f\\pt''' % textwidth
+               elif format == TEXINFO:
+                       for (k, v) in texinfo_linewidths.items ():
+                               # FIXME: @layout is usually not in
+                               # chunk #0:
+                               #
+                               #  \input texinfo @c -*-texinfo-*-
+                               #
+                               # Bluntly search first K items of
+                               # source.
+                               # s = chunks[0].replacement_text ()
+                               if re.search (k, source[:1024]):
+                                       default_ly_options[LINEWIDTH] = v
+                                       break
+
 class Chunk:
        def replacement_text (self):
                return ''
@@ -1417,6 +1441,9 @@ def do_file (input_filename):
                source = in_handle.read ()
                ly.progress ('\n')
 
+               set_default_options (source)
+
+
                # FIXME: Containing blocks must be first, see
                #        find_toplevel_snippets.
                snippet_types = (
@@ -1433,27 +1460,6 @@ def do_file (input_filename):
                chunks = find_toplevel_snippets (source, snippet_types)
                ly.progress ('\n')
 
-               global default_ly_options
-               textwidth = 0
-               if not default_ly_options.has_key (LINEWIDTH):
-                       if format == LATEX:
-                               textwidth = get_latex_textwidth (source)
-                               default_ly_options[LINEWIDTH] = \
-                                 '''%.0f\\pt''' % textwidth
-                       elif format == TEXINFO:
-                               for (k, v) in texinfo_linewidths.items ():
-                                       # FIXME: @layout is usually not in
-                                       # chunk #0:
-                                       #
-                                       #  \input texinfo @c -*-texinfo-*-
-                                       #
-                                       # Bluntly search first K items of
-                                       # source.
-                                       # s = chunks[0].replacement_text ()
-                                       if re.search (k, source[:1024]):
-                                               default_ly_options[LINEWIDTH] = v
-                                               break
-
                if filter_cmd:
                        write_if_updated (output_filename,
                                          [c.filter_text () for c in chunks])
@@ -1487,7 +1493,7 @@ def do_file (input_filename):
                raise Compile_error
 
 def do_options ():
-       global format, output_name, psfonts_file
+       global format, output_name, psfonts_p
        global filter_cmd, process_cmd, verbose_p
 
        (sh, long) = ly.getopt_args (option_definitions)
@@ -1532,7 +1538,7 @@ def do_options ():
                elif o == '--verbose' or o == '-V':
                        verbose_p = 1
                elif o == '--psfonts':
-                       psfonts_file = a
+                       psfonts_p = 1 
                elif o == '--warranty' or o == '-w':
                        if 1 or status:
                                ly.warranty ()
@@ -1546,6 +1552,9 @@ def main ():
                ly.exit (2)
 
        file = files[0]
+
+       basename = os.path.splitext (file)[0]
+       
        global process_cmd, format
        if not format:
                format = guess_format (files[0])
@@ -1566,11 +1575,13 @@ def main ():
 
        try:
                chunks = do_file (file)
-               if psfonts_file and invokes_lilypond ():
+               if psfonts_p and invokes_lilypond ():
                        fontextract.verbose = verbose_p
                        snippet_chunks = filter (lambda x: is_derived_class (x.__class__,
                                                                              Lilypond_snippet),
                                                 chunks)
+
+                       psfonts_file = basename + '.psfonts' 
                        if not verbose_p:
                                ly.progress (_ ("Writing fonts to %s...") % psfonts_file)
                        fontextract.extract_fonts (psfonts_file,
@@ -1583,20 +1594,17 @@ def main ():
                ly.exit (1)
 
        if format == TEXINFO or format == LATEX:
-               psfonts = 'PSFONTS-FILE'
-               if not psfonts_file:
-                       ly.warning (_ ("option --psfonts=FILE not used"))
+               if not psfonts_p:
+                       ly.warning (_ ("option --psfonts not used"))
                        ly.warning (_ ("processing with dvips will have no fonts"))
-               else:
-                       psfonts = os.path.join (output_name, psfonts_file)
-                       
-               output = os.path.join (output_name,
-                                      os.path.splitext (os.path.basename
-                                                        (file))[0]) + '.dvi'
+
+               psfonts_file = os.path.join (output_name, basename + '.psfonts')
+               output = os.path.join (output_name, basename +  '.dvi' )
+               
                ly.progress ('\n')
                ly.progress (_ ("DVIPS usage:"))
                ly.progress ('\n')
-               ly.progress ("    dvips -h %(psfonts)s %(output)s" % vars ())
+               ly.progress ("    dvips -h %(psfonts_file)s %(output)s" % vars ())
                ly.progress ('\n')
 
 if __name__ == '__main__':