ltxtemplate : A Perl script to create LaTeX templates
Nicola L C Talbot
Contents
- Introduction
- Notes
- Examples
- Initialisation File
- Contact Details
Introduction
This script is deprecated and no longer supported. Try TeXplate instead.The Perl script ltxtemplate can be used to create template LaTeX documents using the specified class file. It is free software distributed under the GNU General Public License, see the file LICENSE for details. You need to have Perl installed before you can use ltxtemplate. The software is available for download as a zip archive from http://www.dickimaw-books.com/apps/ltxtemplate/. ltxtemplate can be invoked from the command line either by:
ltxtemplate [options] <filename>or
perl ltxtemplate [options] <filename>where <filename> is the name of the LaTeX file to be created (with or without the .tex extension) and the options may be one or more of the following:
-h |
Include the hyperref package. |
-d |
Include the datetime package. |
-c |
Insert the current date in the \date command. |
-n |
Don't use initialisation file. |
-m |
Also create associated Makefile. |
-b |
When used with -m , add bibtex to Makefile. |
-x |
When used with -m , add makeindex to Makefile. |
-g |
When used with -m , add makeglos1 to Makefile. |
-i |
Prompt before overwriting files. |
-t <cls> |
Use the <cls> document class (article if omitted). |
-o <opts> |
Pass <opts> to the documentclass
(a4paper if omitted). |
-l <language> |
Include babel package with specified language. |
The -h
, -d
, -c
, -i
, -m
,
-b
, -x
and -g
options can be
combined,
e.g. ltxtemplate -hdc sample.tex
, but not the -n
option.
Notes
If the -h
option is used, the ifpdf package will
also be used, and the command \pdfinfo
will be inserted.
The \pdfinfo
command will use \@title
in the
/Title
field, so be careful if your title includes non-PDF
information. For example, in this document, the title was specified
as
\title{ltxtemplate : A Perl script to create \LaTeX\ templates}So I had to modify the
/Title
field as:
/Title (ltxtemplate : A Perl script to create LaTeX templates)
If the -d
option is used in conjunction with
the -h
option the \pdfinfo
command will also
include the /ModDate
field with the \pdfdate
command defined in the datetime package.
Note that if you use both -c
and -d
, the current
date will be formatted using \formatdate
, whereas if you
just use -c
without -d
, then the current date
will simply be entered as <day>/<month>/<year>.
The Perl script performs a simple parsing of the class file (as given
by the -t
option) to determine whether a letter-type of
class file is being used. If it determines that the document is a
letter, the commands \title
, \author
,
\pdfinfo
and \maketitle
will be omitted.
If the class options (as specified by the -o
switch)
contains one of the European letter sizes (e.g. a4paper
),
the typearea package will be included.
Examples
- The following command
ltxtemplate sample
will create a file called sample.tex that contains the following (note that the author's name will be substituted with your own name, as defined by your system):
\documentclass[a4paper]{article} \usepackage{typearea}% use European page layout \title{Untitled} \author{Dr Nicola L C Talbot} \begin{document} \maketitle \end{document}
If you also include the
-m
switch:ltxtemplate -m sample
then the following Makefile will also be created:
pdf : sample.pdf dvi : sample.dvi ps : sample.ps sample.pdf : sample.tex pdflatex sample pdflatex sample sample.dvi : sample.tex latex sample latex sample sample.ps : sample.dvi dvips -o sample.ps sample clean : rm -f sample.{aux,log,out,toc,dvi,pdf,ps}
- The following command
ltxtemplate -o "letter,landscape" sample-ltr
will create a file called sample-ltr.tex that contains the following (again note that the author's name will be substituted with your own name, as defined by your system):
\documentclass[letter,landscape]{article} \title{Untitled} \author{Dr Nicola L C Talbot} \begin{document} \maketitle \end{document}
- The following command
ltxtemplate -hdc sample-hdc
will create a file called sample-hdc.tex that contains the following (again note that the author's name will be substituted with your own name, as defined by your system, and the date will be replaced by the current date):
\documentclass[a4paper]{article} \usepackage{datetime} \usepackage{typearea}% use European page layout \usepackage{ifpdf} \usepackage[colorlinks,plainpages=false]{hyperref} \title{Untitled} \author{Dr Nicola L C Talbot} \date{\formatdate{12}{7}{2006}} \ifpdf \makeatletter \pdfinfo{ /Author (Dr Nicola L C Talbot) /Title (\@title) /CreationDate (D:20060712112528) /ModDate (D:\pdfdate) /Subject () /Keywords () } \makeatother \fi \begin{document} \maketitle \end{document}
- The following command
ltxtemplate -l french sample-fr
will create a file called sample-fr.tex that contains the following (again note that the author's name will be substituted with your own name, as defined by your system, and the date will be replaced by the current date):
\documentclass[a4paper]{article} \usepackage[french]{babel} \usepackage{typearea}% use European page layout \title{Untitled} \author{Dr Nicola L C Talbot} \begin{document} \maketitle \end{document}
- The following command
ltxtemplate -o "" -l english -dc -t scrlttr2 sample-scrl
will create a file called sample-scrl.tex that contains the following (again note that the date will be replaced by the current date, note also that the Perl script has detected that the class file used is part of the Koma bundle, and so has not included the typearea package. It has also detected that the class file is a letter, so no\title
or\author
is used):
\documentclass{scrlttr2} \usepackage[english]{babel} \usepackage{datetime} \date{\formatdate{12}{7}{2006}} \begin{document} \begin{letter}{To Name\\To Address} \opening{Dear Sir/Madam} \closing{Yours Faithfully} \end{letter} \end{document}
Initialisation File
The ltxtemplate Perl script will check for one of the following files:
$HOME/.ltxtemplate-init
$HOME/ltxtemplate-init
$USERPROFILE/ltxtemplate-init
./ltxtemplate-init
You can use this file to override ltxtemplate's default values. You can change any of the following Perl variables:
$opt_t
: This is the document class, e.g.$opt_t = 'report';
$opt_o
: This is the document class options, e.g.$opt_o = 'letter,12pt';
$opt_l
: This is the language to pass to the babel package (if set to''
, the babel package is not used) e.g.$opt_l = 'french';
$opt_d
: Set to 1 to include the datetime package, e.g.$opt_d = 1;
$opt_c
: Set to 1 to explicitly set the current date, e.g.$opt_c = 1;
$opt_h
: Set to 1 to include the hyperref package, e.g.$opt_h = 1;
$opt_m
: Set to 1 to additionally create an associated Makefile, e.g.$opt_m = 1;
$opt_b
: Set to 1 to include bibtex in Makefile, e.g.$opt_b = 1;
$opt_x
: Set to 1 to include makeindex in Makefile.$opt_g
: Set to 1 to include makeglos in Makefile$opt_i
: Set to 1 to prompt before overwriting an existing file.$author
: Use this to set the author's name, e.g.$author = "A.N. Other";
$title
: Use this to set the title (``Untitled'' used by default), e.g.$title = "No Title";
$hyperref_opt
: Options to pass to the hyperref package (defaultcolorlinks,plainpages=false
), e.g.$hyperref_opt = ''; # use hyperref's default options
$datetime_opt
: Options to pass to the datetime package (default is''
), e.g.$datetime_opt='us'; # use U.S. (standard LaTeX) date format
$otherpackages
: Other packages to add (these will go before the other packages), e.g.$otherpackages="\\usepackage{amsmath}\n\\usepackage{graphicx}";
$preamble
: Extra stuff to go in the preamble (these will go after the hyperref package), e.g.$preamble = "\\newcommand{\\someCmd}{Some command I always define}";
Note that if you want any packages that should go after the hyperref package (e.g. the glossary package), these should be included in$preamble
e.g.$preamble = "\\usepackage{glossary}";
$toName
: The text to enter if the document is a letter (default ``To Name'')$toAddress
: The text to enter if the document is a letter (default ``To Address'')$opening
: The text to enter in the argument to\opening
if the document is a letter (default ``Dear Sir/Madam'')$closing
: The text to enter in the argument to\closing
if the document is a letter (default ``Yours Faithfully'')&isLetter
: subroutine to determine whether the argument (a string containing the name of the document class) is a letter. Default:sub isLetter{ local($_) = @_; m/le?tte?r/; }
&preambleHook
: subroutine to add extra bits just before\begin{document}
for example, the following will detect if you are using the letter class file, and if so, add the\signature
command:sub preambleHook{ if ($opt_t eq 'letter') { &write_tex("\\signature{$author}\n"); } }
&documentHook
: subroutine to add extra bits just before\\end{document}
for example, the following will add a\tableofcontents
if the document isn't a letter:sub documentHook{ unless (&isLetter($opt_t)) { &write_tex("\\tableofcontents\n"); } }
Contact Details
Dr Nicola Talbot |
Dickimaw Books |
http://www.dickimaw-books.com/ |
Footnotes
- ... makeglos1
- The Perl script makeglos.pl is distributed with the glossary package