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,
},
};
Fonts
"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.
Colors
"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}',
Rules
"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_GLOBAL"
If 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_GLOBAL"
Code that controls the width of the rules. See for example the "colortbl" documentation.
'RULES_WIDTH_GLOBAL' =>
'\setlength\arrayrulewidth{1pt}\setlength\doublerulesep{0pt}',
"RULES_CMD"
A 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' ];
"BOOKTABS"
Use 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' ];
Misc
"EXTRA_ROW_HEIGHT"
Will 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_CENTERED"
This 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.