| LaTeX-Table documentation | Contained in the LaTeX-Table distribution. |
LaTeX::Table::Themes::ThemeI - Interface for LaTeX table themes.
package MyThemes::Custom;
use Moose;
with 'LaTeX::Table::Themes::ThemeI';
sub _definition {
return { CENTRALPARK =>
{
'HEADER_FONT_STYLE' => 'bf',
'HEADER_FONT_COLOR' => 'white',
'HEADER_BG_COLOR' => 'latextbl',
'DATA_BG_COLOR_ODD' => 'latextbl!25',
'DATA_BG_COLOR_EVEN' => 'latextbl!10',
'DEFINE_COLORS' => '\definecolor{latextbl}{RGB}{93,127,114}',
'HEADER_CENTERED' => 1,
'VERTICAL_RULES' => [ 1, 0, 0 ],
'HORIZONTAL_RULES' => [ 1, 1, 0 ],
'BOOKTABS' => 0,
'EXTRA_ROW_HEIGHT' => '1pt',
}};
}
1;
This is the theme interface (or Moose role), that all theme objects must use.
A theme is defined as an hash reference containing all options:
# a very ugly theme...
my $theme = {
'Duisburg' => {
'HEADER_FONT_STYLE' => 'sc',
'HEADER_FONT_COLOR' => 'white',
'HEADER_BG_COLOR' => 'blue',
'HEADER_CENTERED' => 1,
'DATA_BG_COLOR_ODD' => 'blue!30',
'DATA_BG_COLOR_EVEN' => 'blue!10',
'CAPTION_FONT_STYLE' => 'sc',
'VERTICAL_RULES' => [ 1, 2, 1 ],
'HORIZONTAL_RULES' => [ 1, 2, 0 ],
'EXTRA_ROW_HEIGHT' => '2pt',
'BOOKTABS' => 0,
},
};
HEADER_FONT_STYLE, CAPTION_FONT_STYLE. Valid values are bf (bold),
it (italics), sc (caps) and tt (typewriter). When this option is
undef, then header (or caption, respectively) is written in normal font.
HEADER_FONT_COLOR can be used to specify a different font color for the
header. Requires the xcolor LaTeX package.
Set HEADER_BG_COLOR to use a background color in the header,
DATA_BG_COLOR_EVEN and DATA_BG_COLOR_ODD for even and odd data rows.
Requires the colortbl and the xcolor LaTeX package.
You can define colors with DEFINE_COLORS, for example:
'DEFINE_COLORS' => '\definecolor{latextbl}{RGB}{78,130,190}',
VERTICAL_RULES, HORIZONTAL_RULES A reference to an array with three integers, e.g. [ 1, 2, 0 ]. The first
integer defines the number of outer rules. The second the number of rules
after the header and after the first column. The third is the number of inner
rules. For example Dresden is defined as:
'Dresden' => {
...
'VERTICAL_RULES' => [ 1, 2, 1 ],
'HORIZONTAL_RULES' => [ 1, 2, 0 ],
}
The first integers define one outer rule - vertical and horizontal. So a box is drawn around the table. The second integers define two rules between header and table and two vertical rules between first and second column. And finally the third integers define that columns are separated by a single vertical rule whereas rows are not separated by horizontal lines.
RULES_COLOR_GLOBALIf your theme uses the colortbl LaTeX package, this command should handle
the coloring of the rules. See the colortbl documentation.
'RULES_COLOR_GLOBAL' =>
'\arrayrulecolor{white}\doublerulesepcolor{black}',
RULES_WIDTH_GLOBALCode that controls the width of the rules. See for example the colortbl
documentation.
'RULES_WIDTH_GLOBAL' =>
'\setlength\arrayrulewidth{1pt}\setlength\doublerulesep{0pt}',
RULES_CMDA reference to an array with four LaTeX commands for the top, mid (between header and data), inner and bottom rules.
RULES_CMD => [ '\toprule', '\midrule', '\midrule', '\bottomrule' ];
BOOKTABSUse the booktabs LaTeX package for "Publication quality tables". Instead of
\hline, LaTeX::Table then uses \toprule, \midrule and
\bottomrule. 0 (don't use this package) or 1 (use it). A shortcut for
RULES_CMD => [ '\toprule', '\midrule', '\midrule', '\bottomrule' ];
EXTRA_ROW_HEIGHTWill set \extrarowheight in the floating environment. Requires the array
LaTeX package.
STUB_ALIGN Defines how the left-hand column, the stub, is aligned. Default is 'l' (left aligned).
HEADER_CENTEREDThis controls the alignment of the header columns, excluding the stub when
STUB_ALIGN is defined. Valid values are 0 (not centered) or 1 (centered).
Typically, it is recommended to center headers, but sometimes this does not
look right. In this case, (left) align the header manually.
You can either quickly add themes after initiation of an LaTeX::Table:
$table->set_custom_themes($theme);
Or, you can build a "THEME MODULE" and extend the list of predefined themes.
Now, to build a theme that you can easily load, take the "SYNOPSIS"
template, change it and then make it accessible in LaTeX::Table by saving
it under the LaTeX::Table::Themes::* namespace.
Alternatively, you can use the search_path() method to add custom paths. For
example save the "SYNOPSIS" module as ./MyThemes/Custom.pm and then add
MyThemes in the script that uses the new theme:
# in ./script.pl $table->search_path( add => 'MyThemes');
If your theme looks nice, please contribute it.
Copyright (c) 2006-2010 <limaone@cpan.org>
This module is free software; you can redistribute it and/or modify it under the same terms as Perl itself. See perlartistic.
| LaTeX-Table documentation | Contained in the LaTeX-Table distribution. |
package LaTeX::Table::Themes::ThemeI; use strict; use warnings; use Moose::Role; use version; our $VERSION = qv('1.0.6'); requires '_definition'; around '_definition' => sub { my $orig = shift; my $self = shift; my $ret = $orig->( $self, @_ ); for my $theme ( keys %{$ret} ) { if ( defined $ret->{$theme}->{BOOKTABS} && $ret->{$theme}->{BOOKTABS} ) { $ret->{$theme}->{RULES_CMD} = [ '\toprule', '\midrule', '\midrule', '\bottomrule' ]; } } return $ret; }; 1; __END__
# vim: ft=perl sw=4 ts=4 expandtab