I have started making my changes to the Template-Latex code and have decided not to make a separate release just to remove the "latex", "pdflatex" and "dvips" parameters from the filter interface. I still hope to have a release incorporating changes to run "bibtex" and "makeindex" ready next week.

Thinking about use of TeX-related programs I realized that I also use texinfo (albeit currently not with TT2). It would be relatively trivial to add support for texinfo to the Template-Latex package (formating texinfo documentation normally requires tex (or pdftex) to be run twice then "texindex *.??" and finally tex again). I was thinking of adding a module Template::Plugin::Texinfo, which would provide a "texinfo" filter in a similar vein to the "latex" filter. The Perl code for the latex filter is defined in Template::Latex; I am reworking that code to run a sequence of programs (for latex it is (expressed in a regexp-ish way): "latex{1,3} (bibtex latex)? (makeindex latex{1,2})?"; for texinfo it would be "tex{1,2} (texindex tex)?" or "makinfo"). It could also run other sequences of tex-related programs. The obvious question is "where does one stop?". It looks like one could factor out a generic "external filter chain" plugin ,that the various tex-related filters could use, but that might also be useful in other contexts.

Any thoughts?

I also want to add a couple of configuration options (which could be passed in to the "Template->new()" call). Currently I am thinking of options to specify: the name of the temporary directory where processing takes place, a flag to instruct the code not to delete the temporary directory when the filter has finished, and settings for the TEXINPUTS environment variable. The former two options are intended for debugging - if there are Latex errors one can set the temp directory explicitly and set it not to be cleared and then go in, look at the log files that have been left and maybe run the latex commands manually to work out what is going wrong.

Are there any naming conventions for configuration options?

Regards
Andrew

Andrew Ford wrote:
Having had more of a look through the Template-Latex code I plan to make (at least) two releases in the next couple of weeks.

The first release will remove the 'latex', 'pdflatex' and 'dvips' parameters from the filter interface. These parameters allow absolute program pathnames to be specified in template code and to my mind represent a security risk. Currently the code builds command lines that are executed with system(), using either the paths configured when the module was installed (defaulting to "/usr/bin/latex", etc) or paths specified as arguments to the FILTER directive. The current code does no sanity checking of the paths, so there is nothing to stop a malicious template specifying something like "FILTER latex(latex => 'rm -rf /home')". It should still be possible though to set up these paths from perl code as configuration items when TT2 is invoked. I hope to make this first release sometime next week.

Please let me know if you have any issues with this change.

The second release will follow a week or two later and will add functionality to run "bibtex" and "makeindex" on the latex code if the plugin detects that that is necessary, plus the plugin will re-run "latex" (or "pdflatex") if it detects that there are unresolved labels. I will provide an option to turn off this behaviour, so that the plugin just runs "latex" a specified number of times: e.g. once, twice (needed if there are forward references or a table of contents) or three times (e.g. if there are forward references and a table of contents) irrespective of whether that leaves unresolved labels. I will refine this proposal and post it when I make the first release. If you have any comments on this let me know.

I also have in mind to add options to explicitly specify the temporary directory in which the latex commands are run and to suppress the subsequent removal of this directory. This would primarily be for testing and debugging and the options would not be exposed as FILTER parameters at the template level.

Regards
Andrew


--
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://lists.template-toolkit.org/mailman/listinfo/templates

Reply via email to