From e0174e46955329347268e756e2662e77441cf09b Mon Sep 17 00:00:00 2001 From: Radek Czajka Date: Wed, 22 Dec 2010 17:16:51 +0100 Subject: [PATCH 1/1] morefloats control --- librarian/pdf.py | 11 +++++++---- librarian/xslt/wl2tex.xslt | 16 +++++++++++----- scripts/book2pdf | 19 ++++++++++++++++--- 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/librarian/pdf.py b/librarian/pdf.py index 32fa571..5debb68 100644 --- a/librarian/pdf.py +++ b/librarian/pdf.py @@ -158,7 +158,8 @@ def package_available(package, args='', verbose=False): return p == 0 -def transform(provider, slug=None, file_path=None, output_file=None, output_dir=None, make_dir=False, verbose=False, save_tex=None): +def transform(provider, slug=None, file_path=None, + output_file=None, output_dir=None, make_dir=False, verbose=False, save_tex=None, morefloats=None): """ produces a PDF file with XeLaTeX provider: a DocProvider @@ -169,6 +170,7 @@ def transform(provider, slug=None, file_path=None, output_file=None, output_dir= make_dir: writes output to //.pdf istead of /.pdf verbose: prints all output from LaTeX save_tex: path to save the intermediary LaTeX file to + morefloats (old/new/none): force specific morefloats """ # Parse XSLT @@ -183,9 +185,10 @@ def transform(provider, slug=None, file_path=None, output_file=None, output_dir= document = load_including_children(provider, slug=slug) # check for LaTeX packages - if not package_available('morefloats', 'maxfloats=19'): - # using old morefloats or none at all - document.edoc.getroot().set('old-morefloats', 'yes') + if morefloats: + document.edoc.getroot().set('morefloats', morefloats.lower()) + elif package_available('morefloats', 'maxfloats=19'): + document.edoc.getroot().set('morefloats', 'new') # hack the tree move_motifs_inside(document.edoc) diff --git a/librarian/xslt/wl2tex.xslt b/librarian/xslt/wl2tex.xslt index 0e2dbfe..61b22b0 100644 --- a/librarian/xslt/wl2tex.xslt +++ b/librarian/xslt/wl2tex.xslt @@ -20,16 +20,22 @@ - + - \IfFileExists{morefloats.sty}{ - \usepackage{morefloats} - }{} + \usepackage[maxfloats=64]{morefloats} + + + \usepackage{morefloats} + + + - \usepackage[maxfloats=64]{morefloats} + \IfFileExists{morefloats.sty}{ + \usepackage{morefloats} + }{} diff --git a/scripts/book2pdf b/scripts/book2pdf index a4382fe..fd69970 100755 --- a/scripts/book2pdf +++ b/scripts/book2pdf @@ -23,6 +23,8 @@ if __name__ == '__main__': help='specifies the output file') parser.add_option('-O', '--output-dir', dest='output_dir', metavar='DIR', help='specifies the directory for output') + parser.add_option('-m', '--morefloats', dest='morefloats', metavar='old/new/none', + help='force morefloats in old (<1.0c), new (>=1.0c) or none') (options, args) = parser.parse_args() if len(args) < 1: @@ -30,13 +32,16 @@ if __name__ == '__main__': exit(1) try: + if options.output_dir and options.output_file: + raise ValueError("Either --output-dir or --output file should be specified") + for main_input in args: if options.verbose: print main_input path, fname = os.path.realpath(main_input).rsplit('/', 1) provider = DirDocProvider(path) - output_dir = output_file = None + output_file = output_dir = None if options.output_dir: output_dir = options.output_dir elif options.output_file: @@ -44,9 +49,17 @@ if __name__ == '__main__': else: output_dir = path - pdf.transform(provider, file_path=main_input, output_file=output_file, output_dir=output_dir, make_dir=options.make_dir, verbose=options.verbose, save_tex=options.save_tex) + pdf.transform(provider, + file_path=main_input, + output_file=output_file, + output_dir=output_dir, + verbose=options.verbose, + make_dir=options.make_dir, + save_tex=options.save_tex, + morefloats=options.morefloats + ) except ParseError, e: - print '%(file)s:%(name)s:%(message)s' % { + print '%(file)s:%(name)s:%(message)s; use -v to see more output' % { 'file': main_input, 'name': e.__class__.__name__, 'message': e.message -- 2.20.1