| LaTeX-Driver documentation | Contained in the LaTeX-Driver distribution. |
LaTeX::Driver::FilterProgram
use LaTeX::Driver::FilterProgram; LaTeX::Driver::FilterProgram->execute(format => $format);
This module is not intended to be used except by the programs
latex2pdf, latex2ps and latex2dvi that are included in the
LaTeX::Driver distribution. It implements the guts of those filter
programs.
execute(%params)This is the only method. It implements the guts of the filter
programs, gathering the parameters for the LaTeX::Driver object
constructor from the command line options, along with the options
passed from the calling script, which should be the format option.
Having constructed a driver object it then runs the driver.
If the -tt2 option is specified then the source document is taken
to be a Template Toolkit template and a Template object is constructed
and the template processed through that before being fed to the
LaTeX::Driver module for latex formatting. Template variables may
defined with the -define option and these are passed to the
Template Toolkit processing stage (they are ignored if the -tt2
option is not specified).
The module invokes the LaTeX::Driver module and optionally the
Template module. Any errors from those modules are propogated
outwards.
The module invokes the latex family of programs via the
LaTeX::Driver module. Those programs have their own set of
environment variables and configuration files.
The module requires that the Template Toolkit is installed for the -tt2 option.
None known.
None known.
Andrew Ford <a.ford@ford-mason.co.uk>
Copyright (C) 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.
| LaTeX-Driver documentation | Contained in the LaTeX-Driver distribution. |
#============================================================= -*-perl-*- # # LaTeX::Driver::FilterProgram # # DESCRIPTION # Implements the guts of the latex2xxx filter programs # # AUTHOR # Andrew Ford <a.ford@ford-mason.co.uk> # # COPYRIGHT # Copyright (C) 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. # # HISTORY # # $Id: Paths.pm 45 2007-09-28 10:33:19Z andrew $ #======================================================================== package LaTeX::Driver::FilterProgram; use strict; use warnings; use Carp; use LaTeX::Driver; use Getopt::Long; use File::Slurp; sub execute { my ($class, %options) = @_; my ($source, $output, $tt2mode, $debug, @vars, %var); GetOptions( 'output:s' => \$output, 'tt2mode' => \$tt2mode, 'define:s' => \@vars, 'debug' => \$debug ); if ( @ARGV ) { $source = shift @ARGV; } else { my $input = join '', <STDIN>; $source = \$input; } if ($tt2mode) { eval { use Template; }; if ($@) { die "Cannot load the Template Toolkit - tt2 mode is unavailable\n"; } if (!ref $source) { ${$source} = read_file($source); } foreach (@vars) { my ($name, $value) = split / \s* = \s* /mx; printf(STDERR "defining %s as '%s'\n", $name, $value) if $debug; $var{$name} = $value; } my $input; my $tt2 = Template->new({}); $tt2->process($source, \%var, \$input) or die $tt2->error(), "\n"; $source = \$input; } if (!$output or $output eq '-') { my $tmp; $output = \$tmp; } eval { my $drv = LaTeX::Driver->new( source => $source, output => $output, format => $options{format} ); $drv->run; }; if (my $e = LaTeX::Driver::Exception->caught()) { $e->show_trace(1); # my $extra = sprintf("\nat %s line %d (%s)\n%s", $e->file, $e->line, $e->package, $e->trace); die $e; #sprintf("%s\n%s", "$e", $e->trace); } if (ref $output) { print ${$output}; } return; } 1; __END__