#!/usr/bin/perl -s our($s,$e,$x,$l,$skp,$debug,$q, ## slides ; evince ; xelatex ; lualatex ; quiet ; $lang,$ps,$a,$notoc,$geo,$t, $b6, $ag); ## language(for dici); #toc(for md) #geo(for md) ; type use strict; my $f = shift or die; $x = $x ?'-x' :''; $l = $l ?'-l' :''; my $toc = $notoc ?'' :'--toc'; $ps = $ps ?'-ps' :''; ## FIXME for abc -> pdf $skp = $skp ?'-skp':''; $lang //= "PT"; $geo //= "a4paper,margin=2cm" ; $geo = "b6paper,margin=1.2cm" if $b6 ; #$geo = "paperwidth=105.67mm,paperheight=226mm,margin=1cm,bottom=1.5cm" if $ag; $geo = "paperwidth=135.67mm,paperheight=296mm,margin=1.5cm,bottom=1.5cm" if $ag; #$geo="paperwidth=116mm,paperheight=246mm,margin=15mm,bottom=12mm,mag=900" if $ag; my $ap = $a ? "-a $a" : ""; my $MF="TFMFONTS=/usr/share/texlive/texmf-dist/fonts//:/home/jj/.texlive2018/texmf-var/fonts//"; unlink(<__ppdflatex__*>); if( ($f =~ /(.*)\.(lhs)$/) or ### a.tex a.tlpp a. (not -f $f and -f "${f}lhs" )){ my $a=$1; _syst("teximporter $f > $a._lhs")==0 or die("Error\n"); _syst("lhs2TeX $a._lhs -o $a.ptex")==0 or die("Error\n"); _syst("$MF ppdflatex -s -Q $a.ptex")==0 or die("Error\n"); if(-f $f) { $f="$a.pdf" ;} else { $f="${f}pdf";} # if(-f $f) { $f="$a._tex" ;} # else { $f="${f}_tex";} } if( ($f =~ /(.*)\.(pre|[p]?tex|tlpp)$/) or ### a.tex a.tlpp a. (not -f $f and -f "${f}tex" )){ my $a=$1; _syst("$MF ppdflatex $skp $x $l -Q $f")==0 or die("Error\n"); if(-f $f) { $f="$a.pdf" ;} else { $f="${f}pdf";} } if( $t eq "abc" or $f =~ /(.*)\.abc$/){ ### a.abc my $a = $1; my $b=join(" ",map {"'$_'"} @ARGV); if($ps){ _syst ("abcm2ps $ap -c '$f' $b -O _.ps"); _syst ("ps2pdf -sPAPERSIZE=a4 _.ps _.pdf"); } else { _syst ("abcm2ps $ap -c -v '$f' $b -O _jpdf.svg","ok"); _syst ("rsvg-convert -f pdf _jpdf0*.svg -o _.pdf"); unlink(<_jpdf0*>); } $f = "_.pdf"; } if($f =~ /(.*)\.svg/){ ### a.svg my $a = $1; _syst ("rsvg-convert -f pdf $1.svg -o _.pdf"); $f = "_.pdf"; } if($f =~ /(.*)\.ipynb/){ ### a.md my $a = $1; my $b=join(" ",map {"'$_'"} @ARGV); if ($s){ # _syst ("pandoc -V numbersections --slide-level 2 --toc -t beamer '$1.ipynb' -o _.pdf"); _syst ("pandoc '$1.ipynb' $b -s -d $ENV{HOME}/.jpdf/slides-pandoc.def -t beamer -o _.pdf"); } else { warn ("pandoc -V geometry:$geo -V numbersections $toc -t pdf '$1.ipynb' $b -o _.pdf"); _syst ("pandoc -V geometry:$geo -V numbersections $toc -t pdf '$1.ipynb' $b -o _.pdf"); } $f = "_.pdf"; } if( $t eq "md" or $f =~ /(.*)\.md/){ ### a.md my $a = $t ? $f : $1 ; my $b=join(" ",map {"'$_'"} @ARGV); if ($s){ # _syst ("pandoc -V numbersections --slide-level 2 --toc -t beamer '$a.md' -o _.pdf"); _syst ("pandoc '$a.md' $b -s -d $ENV{HOME}/.jpdf/slides-pandoc.def -t beamer -o _.pdf"); } else { warn ("pandoc -V geometry:$geo -V numbersections $toc -t pdf '$a.md' $b -o _.pdf"); _syst ("pandoc -V geometry:$geo -V numbersections $toc -t pdf '$a.md' $b -o _.pdf"); } $f = "_.pdf"; } if($f =~ /(.*)\.dici/){ ### a.dici my $a = $1; _syst ("dici -lang=$lang < '$a.dici' > '__$a.tex'"); _syst ("jpdf -q '__$a.tex'"); $f = "__$a.pdf"; } if($f =~ /(.*)\.naterm/){ ### a.naterm my $a = $a; _syst ("naterm -lua -lang=$lang < '$a.naterm' > '__$a.tex'"); _syst ("jpdf -l -q '__$a.tex'"); $f = "__$a.pdf"; } if($f =~ /(.*\/)?(.*)\.tmx/){ ### a.tmx _syst ("tmx2pdf-prince '$1$2.tmx' "); $f = "${1}__$2.pdf"; } if( $f =~ /(.*)\.odp$/ ### a.odp or $f =~ /(.*)\.pptx$/ ### a.pptx or $f =~ /(.*)\.ppt$/){ ### a.ppt unless(-f "__$1.pdf" and -M $f > -M "__$1.pdf") { _syst ("unoconv -T 10 -o '__$1.pdf' -d presentation $f ");} $f = "__$1.pdf"; } if($f =~ /(.*)\.dot$/){ ### a.dot _syst ("dot -Tpdf -O '$f'"); $f = "$f.pdf"; } exit if $q; # if ($s and $e){ _syst("evince -w --presentation -p 1 '$f'"); } if ($s and $e){ _syst("evince --presentation -p 1 '$f'"); } elsif($s ){ _syst("xpdf -fullscreen '$f'"); } elsif($e ){ _syst("evince --fullscreen -p 1 '$f'"); } else { _syst("xpdf -fullscreen -z cont '$f'"); } sub _syst{ my ($a,$b)=@_; $b ||= "die"; # print STDERR "debug: $a\n"; if(system($a) != 0){ if($b eq "die"){ die ("system $a failed:\n\t $? $!")} else { warn("system $a failed:\n\t $? $!")} } } __END__ =head1 NAME jpdf - xpdf de Latex, abc, dot, ... =head1 SYNOPSIS jpdf f.tex jpdf a.pdf jpdf a.{svg,dot,abc} jpdf a. =head1 DESCRIPTION Convert file to PDF and shows it using xpdf, full width, continuos. =head2 Options jpdf -s slidest.tex -s = fullscreen (not continuos) -e use evince (default: xpdf) -x use xelatex -l use lualatex -skp skip ppdflatex preprocessor -q quiet (dont preview result) -lang=po define a language for dici format -ps for abc files abcm2ps → ps → pdf -a -geo=b6paper,margin=1.2cm Latex page geometry(def: "a4paper,margin=2cm") =head1 AUTHOR J.Joao Almeida, jj@di.uminho.pt =head1 SEE ALSO perl(1), xpdf =cut