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
make_dir: writes output to <output_dir>/<author>/<slug>.pdf istead of <output_dir>/<slug>.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
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)
</TeXML>
<xsl:choose>
- <xsl:when test="@old-morefloats">
+ <xsl:when test="@morefloats = 'new'">
<TeXML escape="0">
- \IfFileExists{morefloats.sty}{
- \usepackage{morefloats}
- }{}
+ \usepackage[maxfloats=64]{morefloats}
</TeXML>
</xsl:when>
+ <xsl:when test="@morefloats = 'old'">
+ <TeXML escape="0">
+ \usepackage{morefloats}
+ </TeXML>
+ </xsl:when>
+ <xsl:when test="@morefloats = 'none'" />
<xsl:otherwise>
<TeXML escape="0">
- \usepackage[maxfloats=64]{morefloats}
+ \IfFileExists{morefloats.sty}{
+ \usepackage{morefloats}
+ }{}
</TeXML>
</xsl:otherwise>
</xsl:choose>
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:
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:
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