NAME¶
LaTeX::Encode - encode characters for LaTeX formatting
SYNOPSIS¶
use LaTeX::Encode;
$latex = latex_encode($text, %options);
VERSION¶
This manual page describes version 0.03 of the "LaTeX::Encode" module.
DESCRIPTION¶
This module provides a function to encode text that is to be formatted with
LaTeX. It encodes characters that are special to LaTeX or that are represented
in LaTeX by LaTeX commands.
The special characters are: "\" (command character), "{"
(open group), "}" (end group), "&" (table column
separator), "#" (parameter specifier), "%" (comment
character), "_" (subscript), "^" (superscript),
"~" (non-breakable space), "$" (mathematics mode).
Note that some of the LaTeX commands for characters are defined in the LaTeX
"textcomp" package. If your text includes such characters, you will
need to include the following lines in the preamble to your LaTeX document.
\usepackage[T1]{fontenc}
\usepackage{textcomp}
The function is useful for encoding data that is interpolated into LaTeX
document templates, say with "Template::Plugin::Latex" (shameless
plug!).
SUBROUTINES/METHODS¶
- "latex_encode($text, %options)"
- Encodes the specified text such that it is suitable for
processing with LaTeX. The behaviour of the filter is modified by the
options:
- "except"
- Lists the characters that should be excluded from encoding.
By default no special characters are excluded, but it may be useful to
specify "except = "\\{}"" to allow the input string to
contain LaTeX commands such as "this is \\textbf{bold} text"
(the doubled backslashes in the strings represent Perl escapes, and will
be evaluated to single backslashes).
- "iquotes"
- If true then single or double quotes around words will be
changed to LaTeX single or double quotes; double quotes around a phrase
will be converted to "``" and "''" and single quotes
to "`" and "'". This is sometimes called
"intelligent quotes"
- "use_textcomp"
- By default the "latex_encode" filter will encode
characters with the encodings provided by the "textcomp" LaTeX
package (for example the Pounds Sterling symbol is encoded as
"\\textsterling{}"). Setting "use_textcomp = 0" turns
off these encodings. NOT YET IMPLEMENTED
EXAMPLES¶
The following snippet shows how data from a database can be encoded and inserted
into a LaTeX table, the source of which is generated with
"LaTeX::Table".
my $sth = $dbh->prepare('select col1, col2, col3 from table where $expr');
$sth->execute;
while (my $href = $sth->fetchrow_hashref) {
my @row;
foreach my $col (qw(col1 col2 col3)) {
push(@row, latex_encode($href->{$col}));
}
push @data, \@row;
}
my $headings = [ [ 'Col1', 'Col2', 'Col3' ] ];
my $table = LaTeX::Table->new( { caption => 'My caption',
label => 'table:caption',
type => 'xtab',
header => $header,
data => \@data } );
my $table_text = $table->generate_string;
Now $table_text can be interpolated into a LaTeX document template.
DIAGNOSTICS¶
None. You could probably break the "latex_encode" function by passing
it an array reference as the options, but there are no checks for that.
CONFIGURATION AND ENVIRONMENT¶
Not applicable.
DEPENDENCIES¶
The "HTML::Entities" and "Pod::LaTeX" modules were used for
building the encoding table in "LaTeX::Encode::EncodingTable", but
this is not rebuilt at installation time. The "LaTeX::Driver" module
is used for formatting the character encodings reference document.
INCOMPATIBILITIES¶
None known.
BUGS AND LIMITATIONS¶
Not all LaTeX special characters are included in the encoding tables (more may
be added when I track down the definitions).
The "use_textcomp" option is not implemented.
AUTHOR¶
Andrew Ford <a.ford@ford-mason.co.uk>
LICENSE AND COPYRIGHT¶
Copyright (C) 2007 Andrew Ford. All Rights Reserved.
This module is free software; you can redistribute it and/or modify it under the
same terms as Perl itself.
This software is distributed in the hope that it will be useful, but WITHOUT ANY
WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
A PARTICULAR PURPOSE.
SEE ALSO¶
Template::Plugin::Latex