#!/usr/bin/perl -s use Skel::Data; skimport(); our ($d,$dir,$name); $name ||= "Conference"; use strict; use Data::Dumper; #undef $/; #$/=''; my $file = shift or die; my $b0=qr((?:[^\{\}]*)); my $b1=qr((?:\{$b0*\})); my $b2=qr((?:\{(?:$b0|$b1)*\})); my $b3=qr((?:\{(?:$b0|$b1|$b2)*\})); my $b4=qr((?:\{(?:$b0|$b1|$b2|$b3)*\})); my $num=0; my $last=0; $/="\cL"; my $deltapages=0; if($d){ $deltapages = $d;} else { open(JOP,"jop $file.pdf|") or die; while(){ print ".\n"; $deltapages++; last if(/\s1\s*\cL/) } print STDERR "DEBUG: delta = $deltapages\n"; close JOP; } my @p=(0,); my @in=(); $/="\n"; open(JOP,"$file.toc") or die; my ( $l,$l2); while(){ if(m!\\contentsline\s*\{chapter\}\{\\toc\w*\s*($b4)($b4)($b4)\}($b4)!) { $l=rc($4); $l2=fix($l); push(@in,[@p,$l2]); print "--> $l2",n("\n\n====$1 = $3 = $l") ; @p=(n($1), n($3) , $l); $last=$4; next;} if(m!\\contentsline\s*\{section\}\{\\toc\w*\s*($b4)($b4)($b4)\}($b4)!) { $l=rc($4); $l2=fix($l); push(@in,[@p,$l2]); print "-->$l2",n("\n\n= $1 = $2 = $3 = $l"); @p=("--",n($1), n($3) , $l); $last=$4;next; } if(m!\\contentsline\s*\{section\}($b4)($b4)!) { $l=rc($2); $l2=fix($l); push(@in,[@p,$l2]); my $x=n($1); if($x =~ m!\{\\textbf.*?($b4)\\\\\{.*?($b4).*?\}.*?\}!){ $x=[b($1),b($2)] } print "-->$l2",n("\n\t#### $1 = $l") ; @p=("##",$x, $l); $last=$2; next;} if(m!\\contentsline\s*\{subsection\}\{\\toc\w*\s*($b4)($b4)($b4)\}($b4)!) { $l=rc($4); $l2=fix($l); push(@in,[@p,$l2]); print "-->$l2",n("\n\t= $1 = $2 = $3 = $l") ; @p=("=",n($1), n($2), n($3) , $l); $last=$4;next; } if(m!\\contentsline\s*\{subsubsection\}\{\\toc\w*\s*($b4)($b4)($b4)\}($b4)!) { $l=rc($4); $l2=fix($l); push(@in,[@p,$l2]); print "-->$l2",n("\n\t\t= $1 = $2 = $3 = $l") ; @p=("...ignore", n($1), n($2), n($3) , $l); $last=$4; next;} } print "\n"; ## print Dumper(\@in); mydump(\@in); close JOP; sub mydump{ my $ind=shift; $dir ||= "pdf_papers"; mkdir($dir); my $lista=""; open(IND,">","$dir/articles.html") or die; open(SH,">","articles.sh") or die; for(@$ind){ my @l = @$_; my ($s1,$s2,$e1,$e2); if($l[2] =~ /\((\d+)\)(\d+)/) { ($s1,$s2)=($1,$2);} if($l[3] =~ /\((\d+)\)(\d+)/) { ($e1,$e2)=($1,$2);} if( $l[0] =~ /##/){ $num++; $num = sprintf('%03d',$num); $lista .= qq{
  • $num $l[1][0]
    $l[1][1], pp. $s1-$e1
  • \n}; print SH qq{psmallbook -nobook -pages="$s2-$e2" $file.pdf ; mv _out.pdf $dir/P$num.pdf \n}; } elsif($l[0] eq "{Capítulo}") { $lista .= CHAP({chap=>bichomp1($l[1])}) } else { ## $lista .= join(" :: ",@l)."\n"; } } print IND HTML({name=>$name, lista => $lista}); close SH; close IND; } sub bichomp1{ my $a=shift; $a =~ s!^\s*{!!; $a =~ s!}\s*$!!; $a } sub fix{ my $a=shift; $a =~ s/(\d+)/$1-1/eg; $a; } sub b{ my $a=shift; $a =~ s/^\{(.*)\}$/$1/; $a; } sub rc{ my $a=b(shift); "($a)". ( $a + $deltapages -1); } sub n{ my $a = shift; $a =~ s/\$\{\}\^\{\\b *\{o\}\}\$/º/g; $a =~ s/\$\{\}^\{\\b *\{a\}\}\$/ª/g; $a =~ s/\\'\{\\i *\}/í/g; $a =~ s/\\'\\i */í/g; $a =~ s/\\c *\{c\}/ç/g; $a =~ s/\\c c/ç/g; $a =~ s/\\\~a/ã/g; $a =~ s/\\\~o/õ/g; $a =~ s/\\\~n/ñ/g; $a =~ s/\\\'a/á/g; $a =~ s/\\\^A/Â/g; $a =~ s/\\\'A/Á/g; $a =~ s/\\\'E/É/g; $a =~ s/\\\'I/Í/g; $a =~ s/\\\'O/Ó/g; $a =~ s/\\\'U/Ú/g; $a =~ s/\\\'o/ó/g; $a =~ s/\\\'e/é/g; $a =~ s/\\\'u/ú/g; $a =~ s/\\\^a/â/g; $a =~ s/\\\^e/ê/g; $a =~ s/\\\^o/ô/g; $a =~ s/\\u \{(.)\}/$1/g; ## FIXME $a =~ s/\\IeC \{(.*?)\}/$1/g; $a =~ s/\$\^2\$/²/g; $a =~ s/\$\^3\$/³/g; $a } __DATA__ __HTML__ [% name %]

    [% name %]

    Lista de Artigos


    __CHAP__

    [% chap %]