#!/usr/bin/perl -s our($tit,$cap,$pdf,$o); use strict; use Skel::Data; use Data::Dumper; skimport(); my $output=$o || "_cropped.pdf"; my $hhead=[qw(batata cebola peras tomates)]; my $vhead=[qw(vinho cerveja rum leite sumo água )]; my $mat =[ map {my $x=$_; [ map { length($_ . $x)} @$hhead ] } @$vhead ]; my $p={ head => $hhead, vhead => $vhead, mat =>$mat, -default => "", }; $p->{title} = $tit if $tit; $p->{caption} = $cap if $cap; pdfcroped( LATEX($p)); sub pdfcroped{ my $t=shift; open(F,">","_tmp.tex"); print F $t; close F; system("pdflatex _tmp.tex") ==0 or die("cant pdflatex\n"); system("pdfcrop.pl _tmp.pdf $output") ==0 or die("cant pdfcrop\n"); } sub _colrows{my %v=@_; skzip($v{vhead},[map { join("&",@$_) } @{$v{mat}}]); } __DATA__ __LATEX__ [% default:{ title => "", ## colrows => sub{my %v=@_; skzip($v{vhead},[map { join("&",@$_) } @{$v{mat}}])}, colrows => sub{ main::_colrows(@_); }, tabdecl => sub{my %v=@_; join("|",map {'@{}c@{}'} @{$v{head}})}, tabheadh => sub{my %v=@_; join("&",map { sprintf('\rr{%s}',$_)} @{$v{head}})}} %] \documentclass[portuges,a4paper]{article} \usepackage{babel} %\usepackage{ucs} \usepackage[mathletters]{ucs} \usepackage[utf8x]{inputenc} \usepackage[T1]{fontenc} [% !MATpackages %] \begin{document} [% !MATinit %] \thispagestyle{empty} \begin{centering} {\Large [% title %]} {\Large [% caption %]} [% !MATRIX2 %] \end{centering} \end{document} __MATpackages__ \usepackage{rotating} \usepackage{dcolumn} __MATinit__ \newcolumntype{K}[1]{% >{\begin{turn}{90}\begin{minipage}{#1}% \raggedright\hspace{0pt}}c% <{\end{minipage}\end{turn}}% } \newcolumntype{R}[0]{>{\begin{turn}{90}}c<{\end{turn}}} \def\rr#1{\begin{turn}{90}\rule[-2pt]{0pt}{15pt}#1\end{turn}} \def\hh#1{\rule{0pt}{12pt}#1} __MATRIX2__ \begin{tabular}{r|[% tabdecl %]|} & [% tabheadh %] \\ \hline [% colrows*MAT %] \end{tabular} \rule{0pt}{25pt}\\[3mm] __MAT__ \hh{[% 1 %]}& [% 2 %]\\ \hline __END__ =head1 NAME =head1 SYNOPSIS =head1 DESCRIPTION =head2 Language =head3 Metadata section =head3 Entries =head1 AUTHOR J.Joao Almeida, jj@di.uminho.pt =head1 SEE ALSO =cut