@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..}
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
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
@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
@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
.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 $<
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?
_ ("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',
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 = ''
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 ''
source = in_handle.read ()
ly.progress ('\n')
+ set_default_options (source)
+
+
# FIXME: Containing blocks must be first, see
# find_toplevel_snippets.
snippet_types = (
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])
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)
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 ()
ly.exit (2)
file = files[0]
+
+ basename = os.path.splitext (file)[0]
+
global process_cmd, format
if not format:
format = guess_format (files[0])
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,
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__':