Francesc Romà i Frigolé wrote:
Hi Andrew,

Thank you very much for your work on the latex plugins.

I wonder if it's possible to use the latex_encode filter as a TT filter instead of filtering the data from the perl program.
latex_encode is provided as a TT2 filter with Template::Plugin::Latex (version 3). Version 3 is essentially a rewrite of the LaTeX plugin, with the low level code factored out into the separate LaTeX::Driver module. I really don't want to support version 2 of the plugin and would like to shake out the bugs in version 3, so I will do some more testing on it and upload as a proper release (rather than the developer release that is currently on CPAN).

I'm using catalyst and DBIX::Class so I don't explicitly fetch the data from the database and pass it to my templates. Instead in my html templates I do something like [% table.field | html %] to filter my database content for html encoding. For my latex templates I'd like to be able to do something like:
    [% USE Latex %]
    [% FILTER latex('pdf') %]
    ...LaTeX doc...
         [% table.field | latex_encode %]
    ...
    [% END %]

is that possible?
That looks OK to me.

Regarding the TEXTINPUTS feature, I haven't tried the version 3 of your plugin, but for version 2.x I set up the TEXTINPUTS environment variable before calling the plugin, and I've noticed that relative paths don't work: So \includegraphics{./figure.eps} won't work but \includegraphics{figure.eps} will. I know it's a latex issue, but It would be nice if your filter would take care of it, since would make reusing latex files easier.
The new version of the plugin should sort out your relative paths for LaTeX file inclusions as it sets up TEXINPUTS (not TEXTINPUTS) to include the original source directory (the source file is normally copied to a temporary directory for formatting, so without fiddling with TEXINPUTS relative paths are not going to work).

I've noticed that in your summary for the LaTeX::Driver module you don't mention pdflatex. Does it mean that it is not used anymore? I'm asking because pdflatex has some missing features (it doesn't support psfrag for example) and it would be very useful to be able to at least have the option of generating pdfs using latex + dvips + ps2pdf.
The LaTeX::Driver module man page does mention pdflatex, but I will have a look at the documentation and see about making it clearer. By default if you ask for PDF output then it is pdflatex that is run, but you can specify "pdf(dvi)" in which case a dvi file is generated with latex and then that is converted to PDF with dvipdfm, or "pdf(ps)" in which case the dvi is converted to PostScript with dvips and then that file is run through ps2pdf.

Thanks for emailing me - its nice to know that someone is looking at my code, and it might kick me into making a new release.

Andrew
On Oct 3, 2007 5:53 PM, Andrew Ford <[EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>> wrote:

    I have uploaded a new version of the TT2 Latex plugin to CPAN (version
    3.00_03).

    The main new features are:

       * This version uses the LaTeX::Driver module to do the formatting,
         so the Template::Plugin::Latex code has become very slim.  The
         LaTeX::Driver module includes the scripts "latex2dvi", "latex2ps"
         and "latex2pdf", which convert from a LaTeX file to the
         appropriate output format.  The scripts can be used as classic
         Unix-style filters (they set up a temporary directory to do the
         formatting internally), and take a -tt2 option which specifies
         that the input document is a Template Toolkit template, so the
         input is processed through tt2 first before being formatted as a
         LaTeX document.  (There is also a -define=key=value option to
         define variables that are passed to tt2).  The scripts are
    not yet
         fully documented (partly because I have not quite appreciated all
         the flexibility that they have).  The scripts work as sort of
         specialized versions of "tpage".
       * The plugin also defines a latex_encode filter, which is an
         interface to my new LaTeX::Encode module, which knows how to
         encode about 250 Unicode characters.  It has an except option to
         specify characters that are not to be encoded, and an iquotes
         option (for intelligent quotes), which will turn  <He said,
         "something."> into <He said, ``something.''> (the doubled
         back-ticks and doubled single quotes are LaTeX's commands for
         typographically correct quotation characters).  This filter will
         take care of the fact that '&', '^', '#', '$', '_', '\', etc are
         special to LaTeX and will transform them to '\&', '\^{ }', '\$',
         '\_', '\textbackslash', etc, so you can filter your data fetched
         from databases or elsewhere through this filter before
         interpolating it into a LaTeX document template and be fairly
         confident of not getting LaTeX errors.
       * The plugin also defines a "table()" method, which is an interface
         to the LaTeX::Table module, which will take arrays of data items
         and headers, and other attributes of a table, and generate the
         LaTeX commands to typeset the table, so you could say

             [% USE Latex;
                data = [ [ 1, 2, 3 ],
                         [ 4, 5, 6 ] ];
                headings = [ [ 'A', 'B', 'C' ] ];

                text = Latex.table( caption = 'Sample table',
                                    label   = 'table:sample',
                                    headings = headings,
                                    data     = data );
             %]

         and the variable "text" will contain all the LaTeX commands
    to set
         the table.

    That is about it.  The module is nearing completion (and has
    spawned two
    other modules: LaTeX::Encode and LaTeX::Driver).

    What is left to do is flesh out the documentation and the test scripts
    (for the plugin module and also for the other two modules), and
    look at
    how the LaTeX environment variables (TEXINPUTS, TEXINPUTS_latex, etc)
    should interact with the filter options.  I'll probably put out
    another
    developer version (or two) in the next couple of weeks, then it is
    about
    ready for prime time.

    As always I welcome feedback.

    Andrew

    Andrew Ford wrote:
    > I have finally released a developer version of the TT2 Latex
    plugin to
    > CPAN (version 3.00_01).  This requires my LaTeX::Driver module
    version
    > 0.05.  The files are also updates on svn.tt2.org
    <http://svn.tt2.org>.
    >
    > The main new features are:
    >
    >     * internally it uses LaTeX::Driver to ensure that the
    document is
    >       run through (pdf)latex, bibtex, makeindex, dvips, dvipdfm
    and/or
    >       ps2pdf as many times as is necessary to format the
    document (with
    >       an upper limit of maxruns times)
    >
    >     * the TEXINPUTS path can be specified, so that one can
    include other
    >       tex, ist, bib files from other directories than the document
    >       directory - the document directory is included in the path, so
    >       that including files that are local to the source document
    should
    >       work, even when running ttree
    >
    >     * the Template::Latex module is deprecated
    >
    >     * the plugin includes a latex_encode filter that will encode
    special
    >       characters, so that "20% of $42" becomes "20\% of \$42".  I am
    >       still working on this feature and it will be possible to
    specify
    >       which characters to exclude so you can say
    >
    >           "my company is \textbf{Ford & Mason Ltd}" |
    >       latex_encode(exclude = "\\{}")
    >
    >       and get out "my company is \textbf{Ford \& Mason Ltd}".
     This will
    >       allow you to embed LaTeX formatting commands in your data
    while
    >       having the non-excluded special characters escaped for you.
    >
    > There are probably other changes I've forgotten to mention but I
    just
    > want to get something out there for people to play with.
    >
    > I am still working on the documentation and the test suite, although
    > most of the tests do pass (and test useful things).  I will be
    including
    > an examples directory with some scripts that show how to use the
    plugin
    > for database publishing and generating personalized PDF files, etc.
    >
    > I would welcome any feedback.
    >
    > Andrew
    >
    >

    --
    Andrew Ford,  Director    Pauntley Prints / Ford & Mason Ltd
    [EMAIL PROTECTED] <mailto:[EMAIL PROTECTED]>   South
    Wing Compton House
    pauntley-prints.co.uk <http://pauntley-prints.co.uk>     Compton
    Green, Redmarley  Tel: +44 1531 829900
    ford-mason.co.uk <http://ford-mason.co.uk>          Gloucester
    GL19 3JB       Fax: +44 1531 829901
    refcards.com <http://refcards.com> cronolog.org
    <http://cronolog.org> Great Britain          Mobile: +44 7785 258278



    _______________________________________________
    templates mailing list
    [email protected] <mailto:[email protected]>
    http://lists.template-toolkit.org/mailman/listinfo/templates



______________________________________________________________________
This email has been scanned by the MessageLabs Email Security System.
For more information please visit http://www.messagelabs.com/email
______________________________________________________________________

--
Andrew Ford, Director Pauntley Prints / Ford & Mason Ltd [EMAIL PROTECTED] South Wing Compton House pauntley-prints.co.uk Compton Green, Redmarley Tel: +44 1531 829900
ford-mason.co.uk          Gloucester GL19 3JB       Fax: +44 1531 829901
refcards.com cronolog.org Great Britain          Mobile: +44 7785 258278


_______________________________________________
templates mailing list
[email protected]
http://mail.template-toolkit.org/mailman/listinfo/templates

Reply via email to