NAME
Text::Amuse::Compile - Compiler for Text::Amuse
VERSION
Version 0.37
SYNOPSIS
use Text::Amuse::Compile;
my $compiler = Text::Amuse::Compile->new;
$compiler->compile($file1, $file2, $file3)
METHODS/ACCESSORS
CONSTRUCTOR
new(ttdir => '.', pdf => 1, ...);
Constructor. It will accept the following options
Format options (by default all of them are activated);
- cleanup
-
Remove auxiliary files after compilation (.status)
- webfontsdir
-
If you want to embed fonts in the EPUB, pass the directory with the fonts and the specification file (see Text::Amuse::Compile::Webfonts) in this option.
- luatex
-
Use lualatex instead of xelatex.
- tex
-
LaTeX output. Compatible with
xelatex
andlualatex
(see below for the packages needed). -
Plain PDF without any imposition
- a4_pdf
-
PDF imposed on A4 paper
- lt_pdf
-
PDF imposed on Letter paper
- html
-
Full HTML output
- epub
-
The EPUB
- bare_html
-
The bare HTML, non <head>
- zip
-
The zipped sources
- extra
-
An hashref of key/value pairs to pass to each template in the
options
namespace. - standalone
-
Do not force bcor=0 and oneside for plain tex and pdf
- debug
-
Slow down the compilation sleeping for a while. DO NOT USE.
Template directory:
- ttdir
-
The directory where to look for templates, named as format.tt
You can retrieve the value by calling them on the object.
available_methods
Return a list of all the available compilation methods
compile_methods
Return the list of the methods which are going to be used.
METHODS
templates
The Text::Amuse::Compile::Templates object, which will provide the templates string references.
webfonts
The Text::Amuse::Compile::Webfonts object, constructed from the the webfontsdir
option.
version
Report version information
logger($sub)
Accessor/setter for the subroutine which will handle the logging. Defaults to printing to the standard output.
recursive_compile($directory)
Compile recursive a directory, comparing the timestamps of the status file with the muse file. If the status file is newer, the file is ignored.
Return a list of absolute path to the files processed. To infer the success or the failure of each file look at the status file or at the logs.
find_muse_files($directory)
Return a sorted list of files with extension .muse excluding illegal names (including hidden files and directories).
find_new_muse_files($directory)
As above, but check the age of the status file and skip already processed files.
compile($file1, $file2, ...);
Main method to get the job done, passing the list of muse files. You can inspect the errors calling errors
. It does produce some output.
The file may also be an hash reference. In this case, the compile will act on a list of files and will merge them. Beware that so far only the pdf
and tex
options will work, while the other html methods will throw exceptions or (worse probably) produce empty files. This will be fixed soon. This feature is marked as experimental and could change in the future.
virtual file hashref
The hash reference should have those mandatory fields:
- files
-
An arrayref of filenames without extension.
- path
-
A mandatory directory where to find the above files.
Optional keys
- name
-
Default to virtual. This is the basename of the files which will be produced. It's up to you to provide a sensible name we don't do any check on that.
- suffix
-
Defaults to '.muse' and you have no reason to change this.
Every other key is the metadata of the new document, so usually you want to set title
and optionally author
.
Example:
$c->compile({
# mandatory
path => File::Spec->catdir(qw/t merged-dir/),
files => [qw/first second/],
# recommended
name => 'my-new-test',
title => 'My new shiny test',
# optional
subtitle => 'Another one',
date => 'Today!',
source => 'Text::Amuse::Compile',
});
You can pass as many hashref you want.
file_needs_compilation
Returns true if the file has already been compiled, false if some output file is missing or stale.
report_failure_sub(sub { push @problems, $_[0] });
You can set the sub to be used to report problems using this accessor. It will receive as first argument the file which led to failure.
The actual errors are logged by the logger
sub.
errors
Accessor to the catched errors. It returns a list of strings.
add_errors($error1, $error2,...)
Add an error. [Internal]
reset_errors
Reset the errors
TeX live packages needed.
You need the xetex scheme plus the following packages: fontspec, polyglossia, pzdr, wrapfig, footmisc, ulem, microtype, zapfding.
For the luatex options, same as above plus luatex (and the lualatex format), luatexbase, luaotfload.
The luatex option could give better microtypography results but is slower (x4) and requires more memory (x2).
AUTHOR
Marco Pessotto, <melmothx at gmail.com>
BUGS
Please mail the author and provide a minimal example to add to the test suite.
SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Text::Amuse::Compile
LICENSE
This program is free software; you can redistribute it and/or modify it under the terms of either: the GNU General Public License as published by the Free Software Foundation; or the Artistic License.
See http://dev.perl.org/licenses/ for more information.