LaTeX::Table::Themes::ThemeI(3pm) | User Contributed Perl Documentation | LaTeX::Table::Themes::ThemeI(3pm) |
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, }, };
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}',
'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' => '\arrayrulecolor{white}\doublerulesepcolor{black}',
'RULES_WIDTH_GLOBAL' => '\setlength\arrayrulewidth{1pt}\setlength\doublerulesep{0pt}',
RULES_CMD => [ '\toprule', '\midrule', '\midrule', '\bottomrule' ];
RULES_CMD => [ '\toprule', '\midrule', '\midrule', '\bottomrule' ];
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.
LaTeX::Table
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.
2022-06-15 | perl v5.34.0 |