- NAME
- SYNOPSIS
- DESCRIPTION
- OBJECT METHODS
  - Data Accessors
- NOTES
- SEE ALSO
- AUTHORS
- COPYRIGHT

# NAME

Pod::LaTeX - Convert Pod data to formatted Latex

# SYNOPSIS

      use Pod::LaTeX;
      my $parser = Pod::LaTeX->new ( );

      $parser->parse_from_filehandle;

      $parser->parse_from_file ('file.pod', 'file.tex');

# DESCRIPTION

`Pod::LaTeX` is a module to convert documentation in the Pod format into Latex. The pod2latex command uses this module for translation.

`Pod::LaTeX` is a derived class from Pod::Select.

# OBJECT METHODS

The following methods are provided in this module. Methods inherited from `Pod::Select` are not described in the public interface.

## Data Accessors

The following methods are provided for accessing instance data. These methods should be used for accessing configuration parameters rather than assuming the object is a hash.

Default values can be supplied by using these names as keys to a hash of arguments when using the `new()` constructor.

AddPreamble

  Logical to control whether a `latex` preamble is to be written. If true, a valid `latex` preamble is written before the pod data is written. This is similar to:

        \documentclass{article}
        \usepackage[T1]{fontenc}
        \usepackage{textcomp}
        \begin{document}

  but will be more complicated if table of contents and indexing are required. Can be used to set or retrieve the current value.

        $add = $parser->AddPreamble();
        $parser->AddPreamble(1);

  If used in conjunction with `AddPostamble` a full latex document will be written that could be immediately processed by `latex`.

  For some pod escapes it may be necessary to include the amsmath package. This is not yet added to the preamble automatically.

AddPostamble

  Logical to control whether a standard `latex` ending is written to the output file after the document has been processed. In its simplest form this is simply:

        \end{document}

  but can be more complicated if a index is required. Can be used to set or retrieve the current value.

        $add = $parser->AddPostamble();
        $parser->AddPostamble(1);

  If used in conjunction with `AddPreaamble` a full latex document will be written that could be immediately processed by `latex`.

Head1Level

  The `latex` sectioning level that should be used to correspond to a pod `=head1` directive. This can be used, for example, to turn a `=head1` into a `latex` `subsection`. This should hold a number corresponding to the required position in an array containing the following elements:

       [0] chapter
       [1] section
       [2] subsection
       [3] subsubsection
       [4] paragraph
       [5] subparagraph

  Can be used to set or retrieve the current value:

        $parser->Head1Level(2);
        $sect = $parser->Head1Level;

  Setting this number too high can result in sections that may not be reproducible in the expected way. For example, setting this to 4 would imply that `=head3` do not have a corresponding `latex` section (`=head1` would correspond to a `paragraph`).

  A check is made to ensure that the supplied value is an integer in the range 0 to 5.

  Default is for a value of 1 (i.e. a `section`).

Label

  This is the label that is prefixed to all `latex` label and index entries to make them unique. In general, pods have similarly titled sections (NAME, DESCRIPTION etc) and a `latex` label will be multiply defined if more than one pod document is to be included in a single `latex` file. To overcome this, this label is prefixed to a label whenever a label is required (joined with an underscore) or to an index entry (joined by an exclamation mark which is the normal index separator). For example, `\label{text}` becomes `\label{Label_text}`.

  Can be used to set or retrieve the current value:

        $label = $parser->Label;
        $parser->Label($label);

  This label is only used if `UniqueLabels` is true. Its value is set automatically from the `NAME` field if `ReplaceNAMEwithSection` is true. If this is not the case it must be set manually before starting the parse.

  Default value is `undef`.

LevelNoNum

  Control the point at which `latex` section numbering is turned off. For example, this can be used to make sure that `latex` sections are numbered but subsections are not.

  Can be used to set or retrieve the current value:

        $lev = $parser->LevelNoNum;
        $parser->LevelNoNum(2);

  The argument must be an integer between 0 and 5 and is the same as the number described in `Head1Level` method description. The number has nothing to do with the pod heading number, only the `latex` sectioning.

  Default is 2. (i.e. `latex` subsections are written as `subsection*` but sections are numbered).

MakeIndex

  Controls whether `latex` commands for creating an index are to be inserted into the preamble and postamble

        $makeindex = $parser->MakeIndex;
        $parser->MakeIndex(0);

  Irrelevant if both `AddPreamble` and `AddPostamble` are false (or equivalently, `UserPreamble` and `UserPostamble` are set).

  Default is for an index to be created.

ReplaceNAMEwithSection

  This controls whether the `NAME` section in the pod is to be translated literally or converted to a slightly modified output where the section name is the pod name rather than "NAME".

  If true, the pod segment

        =head1 NAME

        pod::name - purpose

        =head1 SYNOPSIS

  is converted to the `latex`

        \section{pod::name\label{pod_name}\index{pod::name}}

        Purpose

        \subsection*{SYNOPSIS\label{pod_name_SYNOPSIS}%
                     \index{pod::name!SYNOPSIS}}

  (dependent on the value of `Head1Level` and `LevelNoNum`). Note that subsequent `head1` directives translate to subsections rather than sections and that the labels and index now include the pod name (dependent on the value of `UniqueLabels`).

  The `Label` is set from the pod name regardless of any current value of `Label`.

        $mod = $parser->ReplaceNAMEwithSection;
        $parser->ReplaceNAMEwithSection(0);

  Default is to translate the pod literally.

StartWithNewPage

  If true, each pod translation will begin with a `latex` `\clearpage`.

        $parser->StartWithNewPage(1);
        $newpage = $parser->StartWithNewPage;

  Default is false.

TableOfContents

  If true, a table of contents will be created. Irrelevant if `AddPreamble` is false or `UserPreamble` is set.

        $toc = $parser->TableOfContents;
        $parser->TableOfContents(1);

  Default is false.

UniqueLabels

  If true, the translator will attempt to make sure that each `latex` label or index entry will be uniquely identified by prefixing the contents of `Label`. This allows multiple documents to be combined without clashing common labels such as `DESCRIPTION` and `SYNOPSIS`

        $parser->UniqueLabels(1);
        $unq = $parser->UniqueLabels;

  Default is true.

UserPreamble

  User supplied `latex` preamble. Added before the pod translation data.

  If set, the contents will be prepended to the output file before the translated data regardless of the value of `AddPreamble`. `MakeIndex` and `TableOfContents` will also be ignored.

UserPostamble

  User supplied `latex` postamble. Added after the pod translation data.

  If set, the contents will be prepended to the output file after the translated data regardless of the value of `AddPostamble`. `MakeIndex` will also be ignored.

# NOTES

Compatible with `latex2e` only. Can not be used with `latex` v2.09 or earlier.

A subclass of `Pod::Select` so that specific pod sections can be converted to `latex` by using the `select` method.

Some HTML escapes are missing and many have not been tested.

# SEE ALSO

Pod::Parser, Pod::Select, pod2latex, Pod::Simple.

# AUTHORS

Tim Jenness <tjenness@cpan.org>

Bug fixes and improvements have been received from: Simon Cozens <simon@cozens.net>, Mark A. Hershberger <mah@everybody.org>, Marcel Grunauer <marcel@codewerk.com>, Hugh S Myers <hsmyers@sdragons.com>, Peter J Acklam <jacklam@math.uio.no>, Sudhi Herle <sudhi@herle.net>, Ariel Scolnicov <ariels@compugen.co.il>, Adriano Rodrigues Ferreira <ferreira@triang.com.br>, R. de Vries <r.de.vries@dutchspace.nl> and Dave Mitchell <davem@iabyn.com>.

# COPYRIGHT

Copyright (C) 2011 Tim Jenness. Copyright (C) 2000-2004 Tim Jenness. All Rights Reserved.

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