The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

Template::Plugin::Latex - Template Toolkit plugin for Latex

SYNOPSIS

    [% USE Latex %]

    [% FILTER latex("example.pdf") -%]
    \documentclass{article}
    \begin{document}
    This is a PDF document generated by 
    LaTeX and the Template Toolkit.
    \end{document}
    [% END -%]

DESCRIPTION

This plugin allows you to use LaTeX to generate PDF, PostScript and DVI output files from the Template Toolkit.

The latex filter was distributed as part of the core Template Toolkit until version 2.15 released in May 2006 when it was moved into the separate Template-Latex distribution. It should now be loaded as a plugin to enable the latex filter:

    [% USE Latex -%]
    [% FILTER latex %]
    ...LaTeX document...
    [% END %] 

You can specify a different filter name using the filter parameter.

    [% USE Latex(filter='pdf') -%]
    [% FILTER pdf %]
    ...LaTeX document...
    [% END %] 

The paths to the latex, pdflatex and dvips should be pre-defined as part of the installation process (i.e. when you run perl Makefile.PL). You can specify alternate values when you load the plugin.

    [% USE Latex( latex    = '/usr/bin/latex'
                  pdflatex = '/usr/bin/pdflatex'
                  dvips    = '/usr/bin/dvips' )
    %]

You can also specify the default output format. This value can be latex, pdf or dvi.

    [% USE Latex(format='pdf') %]

With the plugin loaded and a default format defined, you can now use the latex filter.

    [% FILTER latex -%]
    \documentclass{article}
    \begin{document}
    This is a PDF document generated by 
    Latex and the Template Toolkit.
    \end{document}
    [% END %]

You can pass additional arguments when you invoke the filter to set program paths or specify the output format.

    [% FILTER latex(format='pdf') -%]
       ...LaTeX document...
    [% END %]

    [% FILTER latex(latex='/path/to/latex') -%]
       ...LaTeX document...
    [% END %]

The template content between the FILTER and END directives will be piped to the appropriate program(s) to generate the document output. This is fine if you're generating a document directly from a template. For example:

example.pdf:

    [% USE Latex(format='pdf') -%]
    [% FILTER latex %]
    ...LaTeX document...
    [% END -%]

The output will be a binary format PDF, PostScript or DVI file. You should be careful not to prepend or append any extraneous characters or text outside the FILTER block as this text will be included in the file output. Notice in the above example how we use the post-chomp flags ('-') at the end of the USE and END directives to remove the trailing newline characters.

If you're redirecting the output to a file via the third argument of the Template module's process() method then you should also pass the binmode parameter set to a true value to indicate that it is a binary file.

    use Template;
    
    my $tt = Template->new({
        INCLUDE_PATH => '/path/to/templates',
        OUTPUT_PATH  => '/path/to/pdf/output',
    });
    my $vars = {
        title => 'Hello World',
    }
    $tt->process('example.tt2', $vars, 'example.pdf', binmode => 1)
        || die $tt->error();

If you want to capture the output to a template variable, you can do so like this:

    [% output = FILTER latex %]
    ...LaTeX document...
    [% END %]

If you want to write the output to a file then you can specify an output parameter.

    [% FILTER latex(output='example.pdf') %]
    ...LaTeX document...
    [% END %]

If you don't explicity specify an output format then the filename extension (e.g. 'pdf' in the above example) will be used to determine the correct format.

AUTHOR

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

Copyright (C) 1996-2006 Andy Wardley. All Rights Reserved.

This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

SEE ALSO

Template::Latex