| Template-Plugin-Latex documentation | view source | Contained in the Template-Plugin-Latex distribution. |
Template::Latex - Latex support for the Template Toolkit
use Template::Latex;
my $tt = Template::Latex->new({
INCLUDE_PATH => '/path/to/templates',
OUTPUT_PATH => '/path/to/pdf/output',
LATEX_FORMAT => 'pdf',
});
my $vars = {
title => 'Hello World',
}
$tt->process('example.tt2', $vars, 'example.pdf', binmode => 1)
|| die $tt->error();
The Template::Latex module is a wrapper of convenience around the Template module, providing additional support for generating PDF, PostScript and DVI documents from LaTeX templates.
You use the Template::Latex module exactly as you would the Template module.
my $tt = Template::Latex->new(\%config);
$tt->process($input, \%vars, $output)
|| die $t->error();
It supports a number of additional configuration parameters. The
LATEX_PATH, PDFLATEX_PATH and DVIPS_PATH options can be used
to specify the paths to the latex, pdflatex and dvips program
on your system, respectively. These are usually hard-coded in the
Template::Latex $LATEX, $PDFLATEX and $DVIPS package
variables based on the values set when you run perl Makefile.PL to
configure Template::Latex at installation time. You only need to
specify these paths if they've moved since you installed
Template::Latex or if you want to use different versions for some
reason.
my $tt = Template::Latex->new({
LATEX_PATH => '/usr/bin/latex',
PDFLATEX_PATH => '/usr/bin/pdflatex',
DVIPS_PATH => '/usr/bin/dvips',
});
It also provides the LATEX_FORMAT option to specify the default
output format. This can be set to pdf, ps or dvi.
my $tt = Template::Latex->new({
LATEX_FORMAT => 'pdf',
});
The latex filter is automatically defined when you use the
Template::Latex module. There's no need to load the Latex plugin in
this case, although you can if you want (e.g. to set some
configuration defaults). If you're using the regular Template module
then you should first load the Latex plugin to define the latex
filter.
[% USE Latex %]
[% FILTER latex('example.pdf') %]
...LaTeX doc...
[% END %]
The Template::Latex module is a subclass of the Template module and
inherits all its methods. Please consult the documentation for the
Template module for further information on using it for template
processing. Wherever you see Template substitute it for
Template::Latex.
In addition to those inherted from the Template module, the following methods are also defined.
Method to get or set the paths to the latex, pdflatex and
dvips programs. These values are stored in the Template::Latex
$LATEX, $PDFLATEX and $DVIPS package variables, respectively.
It can be called as either a class or object method.
Template::Latex->latex_paths({
latex => '/usr/bin/latex',
pdflatex => '/usr/bin/pdflatex',
dvips => '/usr/bin/dvips',
});
my $paths = Template::Latex->latex_paths();
print $paths->{ latex }; # /usr/bin/latex
Method to get or set the $Template::Latex::LATEX package
variable which defines the location of the latex program on your
system. It can be called as a class or object method.
Template::Latex->latex_path('/usr/bin/latex');
print Template::Latex->latex_path(); # '/usr/bin/latex'
Method to get or set the $Template::Latex::PDFLATEX package
variable which defines the location of the pdflatex program on your
system. It can be called as a class or object method.
Template::Latex->pdflatex_path('/usr/bin/pdflatex');
print Template::Latex->pdflatex_path(); # '/usr/bin/pdflatex'
Method to get or set the $Template::Latex::DVIPS package
variable which defines the location of the dvips program on your
system. It can be called as a class or object method.
Template::Latex->dvips_path('/usr/bin/dvips');
print Template::Latex->dvips_path(); # '/usr/bin/dvips'
Method to get or set the $Template::Latex::BIBTEX package
variable which defines the location of the bibtex program on your
system. It can be called as a class or object method.
Template::Latex->bibtex_path('/usr/bin/bibtex');
print Template::Latex->bibtex_path(); # '/usr/bin/bibtex'
Method to get or set the $Template::Latex::MAKEINDEX package
variable which defines the location of the makeindex program on your
system. It can be called as a class or object method.
Template::Latex->makeindex_path('/usr/bin/makeindex');
print Template::Latex->makeindex_path(); # '/usr/bin/makeindex'
This section is aimed at a technical audience. It documents the internal methods and subroutines as a reference for the module's developers, maintainers and anyone interesting in understanding how it works. You don't need to know anything about them to use the module and can safely skip this section.
This class method installs the latex filter in the context passed
as the first argument. The second argument is a hash reference
containing any default filter parameters (e.g. those specified when
the Template::Plugin::Latex plugin is loaded via a USE directive).
Template::Latex->define_filter($context, { format => 'pdf' });
The filter is installed as a dynamic filter factory. This is just
a fancy way of saying that the filter generates a new filter
subroutine each time it is used to account for different invocation
parameters. The filter subroutine it creates is effectively a wrapper
(a "closure" in technical terms) around the filter() subroutine
(see below) which does the real work. The closure keeps track of any
configuration parameters specified when the filter is first defined
and/or when the filter is invoked. It passes the merged configuration
as the second argument to the filter() subroutine (see below).
See the Template::Filters module for further information on how filters work.
This is the main LaTeX filter subroutine which is called by the Template Toolkit to generate a LaTeX document from the text passed as the first argument. The second argument is a reference to a hash array of configuration parameters. These are usually provided by the filter subroutine that is generated by the filter factory.
Template::Latex::filter($latex, {
latex => '/usr/bin/latex',
pdflatex => '/usr/bin/pdflatex',
dvips => '/usr/bin/dvips',
output => 'example.pdf',
});
Subroutine which throws a Template::Exception error using die.
The exception type is set to latex.
Template::Latex::throw("I'm sorry Dave, I can't do that");
Debugging subroutine which print all argument to STDERR. Set the
$DEBUG package variable to enable debugging messages.
$Template::Latex::DEBUG = 1;
Andrew Ford <a.ford@ford-mason.co.uk> (current maintainer)
Andy Wardley <abw@wardley.org> http://wardley.org/
The original Latex plugin on which this is based was written by Craig Barratt with additions for Win32 by Richard Tietjen.
Copyright (C) 1996-2006 Andy Wardley. All Rights Reserved.
Copyright (C) 2006-2007 Andrew Ford. All Rights Reserved.
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.
| Template-Plugin-Latex documentation | view source | Contained in the Template-Plugin-Latex distribution. |