The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.
#!/usr/bin/perl
#===============================================================================
#
#         FILE: pod6latex
#
#  DESCRIPTION:  save pod6 as latex
#       AUTHOR:  Aliaksandr P. Zahatski ,  <zahatski@gmail.com>
#===============================================================================
use strict;
use warnings;
use Getopt::Long;
use Pod::Usage;
use Perl6::Pod::To::Latex;
use Perl6::Pod::Writer::Latex;
my ( $help, $man, $doctype, $add_head, $custom_formatter, %use_block );
my %opt = ( help => \$help, man => \$man, );
GetOptions(
    \%opt, 'help|?', 'man',
    'doctype|t=s'   => \$doctype,
    'add_head|ah'   => \$add_head,
    'formatter|f=s' => \$custom_formatter,
    'use_block=s'   => \%use_block
) or pod2usage(2);
pod2usage(1) if $help;
pod2usage( -exitstatus => 0, -verbose => 2 ) if $man;

my $infile = shift;
my $in_fd;
if ($infile) {
    $in_fd = new IO::File:: "< $infile" or die "$infile: $!";
}
else {
    $in_fd = \*STDIN;
}
my $text;
{
    local $/;
    $text = <$in_fd>
}

my $renderer = new Perl6::Pod::To::Latex::
  writer  => new Perl6::Pod::Writer::Latex( out => \*STDOUT ),
  doctype => $doctype,
  header  => $add_head;
    use Perl6::Pod::Utl;
    my $tree = Perl6::Pod::Utl::parse_pod( $text, default_pod => 1 )
      || return "Error";
    $renderer->w->raw(<<TXT);
\\documentclass{article}
\\begin{document}
TXT
    $renderer->write($tree);
    $renderer->w->raw('\end{document}');


exit;

=head1 NAME

    pod6latex  - convert pod6 to Latex

=head1 SYNOPSIS

  pod6latex < somefile.pod6 > somefile.tex
  pod6latex somefile.pod6  > somefile.tex


   options:
    -doctype|t - set docbook type ( ie chapter, article, book ...). Default chapter;
    -add_head|ah - If this option is set , pod6latex will emit a DOCTYPE as the first line of output.
    -formatter|f - set output formatter class, default Perl6::Pod::To::Latex
    -use_block MOD_NAME=Block_name  - set module for handle Block_name. Equivalent for:
         =begin pod
         =use MOD_NAME Block_name
         =end pod

    -help  - print help message
    -man   - print man page

=head1 OPTIONS

=over 8

=item B<-help>

Print a brief help message and exits

=item B<-man>

Prints manual page and exits

=item B<-doctype>, B<-t>

Set docbook type ( ie chapter, article, book ...). Default chapter

=item B<-add_head>,B<-ah>

If this option is set , pod6latex will emit a DOCTYPE as the first line of output

=item B<-formatter>, B<-f>

Set output formatter class, default Perl6::Pod::To::Latex

=item B<-use_block>

Set module for handle Block_name Equivalent for B<=use> direcive :

         =begin pod
         =use MOD_NAME Block_name
         =end pod

=back

=head1 DESCRIPTION

  B<pod6latex>  - convert pod6 to Latex

=head1 EXAMPLE

  pod6latex < somefile.pod6 > somefile.tex


=head1 AUTHOR

Zahatski Aliaksandr, E<lt>zahatski@gmail.comE<gt>

=head1 COPYRIGHT AND LICENSE

Copyright 2009-2013 by Zahatski Aliaksandr

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

=cut