diff options
author | Karl Berry <karl@freefriends.org> | 2015-12-21 23:32:42 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-12-21 23:32:42 +0000 |
commit | c5e89419297f1c23c42a0c11bab9fb3c12b97f91 (patch) | |
tree | fe216e80909f3182b6341572c282812791dc7e7b /Master/texmf-dist/doc | |
parent | 3b683dc6d3ccfc16f1bdeb50e6d086143f119f72 (diff) |
pn2pdf script for petri-nets (Enrico Gregorio mail, 21 Dec 2015 12:35:28)
git-svn-id: svn://tug.org/texlive/trunk@39165 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc')
-rw-r--r-- | Master/texmf-dist/doc/generic/petri-nets/pn2pdf | 211 |
1 files changed, 0 insertions, 211 deletions
diff --git a/Master/texmf-dist/doc/generic/petri-nets/pn2pdf b/Master/texmf-dist/doc/generic/petri-nets/pn2pdf deleted file mode 100644 index c42f9c38f30..00000000000 --- a/Master/texmf-dist/doc/generic/petri-nets/pn2pdf +++ /dev/null @@ -1,211 +0,0 @@ -#!/usr/bin/perl - -## This file is part of the Petri-nets packages. See file README for -## copyright notice. - -use strict; -use Digest::MD5 qw(md5_hex); -use Getopt::Long; - -## -## read options -## - -Getopt::Long::Configure ("bundling"); - -my $keep = 0; -my $force = 0; -my $verbose = 0; - -GetOptions ("k|keep" => \$keep, - "f|force" => \$force, - "v|verbose" => \$verbose, - "t|test" => \&Test, - "d|delete" => \&Delete, - "b|batch" => \&Batch, - "h|help" => \&Help); - -&Help if scalar @ARGV > 1; - -## -## Global variables -## - -my $figure = shift @ARGV; -my $basename = $figure; $basename =~ s/\.pn$//; -my $jobname = $basename; $jobname =~ s/-fig\d+$//; -my $data = ""; -my %sum; - -## -## Load checksums -## - -if (-f "$jobname.sum") { - open SUM, "$jobname.sum" - or &Error ("could not open $jobname.sum -- $!"); - while (<SUM>) { - next unless /^(.+)\s+(.+)$/; - $sum{$1} = $2; - } - close SUM; -} - -## -## Get preamble -## - -if (-f "$jobname.pre") { - # read the existing preamble - my @lines; - open PRE, "$jobname.pre" - or &Error ("could not open $jobname.sum -- $!"); - @lines = <PRE>; - close PRE; - $data .= join "", @lines; -} else { - # create a new preamble - open TEX, "$jobname.tex" - or &Error ("could not open $jobname.tex -- $!"); - while (<TEX>) { - $data .= $_; - last if /\\begin\{document\}/; - } - close TEX; - $data =~ s/(\\begin\{document\}).*$/$1\n/; - $data .= "\\pagestyle\{empty\}\n"; - # save it - open PRE, ">$jobname.pre" - or &Error ("could not create $jobname.sum -- $!"); - print PRE $data; - close PRE; -} - -## -## Read the figure -## - -{ - my $pre = 1; - open TEX, $figure or &Error ("could not open $figure -- $!"); - open PRE, ">>$jobname.pre" - or &Error ("could not append $jobname.pre -- $!"); - while (<TEX>) { - $pre = 0 if /^\\begin\{petrinet\}/; - print PRE if $pre; - $data .= $_; - } - close TEX; - close PRE; -} - -## -## Generate the EPDF -## - -if (&SumChanged ($figure, "$data") or $force or (! -f "$basename.pdf")) { - open TEX, ">$basename.tex" - or &Error ("could not create file $basename.tex -- $!\n"); - print TEX "$data\\end\{document\}\n"; - close TEX; - system "latex", "$basename.tex"; - system "dvips", "-E", "-Ppdf", "-o", "$basename.eps", "$basename"; - system "epstopdf", "$basename.eps"; -} - -unlink ("$basename.tex", "$basename.log", "$basename.aux", - "$basename.dvi", "$basename.eps", "$basename.pn") unless $keep; - -## -## Save checksums -## - -open SUM, ">$jobname.sum" - or die "pn2pdf: could not create file $jobname.sum -- $!\n"; -foreach my $file (sort keys %sum) { - print SUM "$file $sum{$file}\n"; -} -close SUM; - -exit 0; - -## -## Sub programs -## - -sub Help { - print <<"EOF"; -Usage: pn2pdf [OPTIONS] -Create EPDF files for Petri net figures. - - FIGURE process FIGURE - -b, --batch FILE process the commands in FILE - -k, --keep keep temporary files - -f, --force force the rendering of all pictures - -t, --test FILES create FILES for test purpose - -d, --delete FILES delete FILES (may be patterns) - -h, --help display this help and exit - -Report bugs to <pommereau\@univ-paris12.fr> -EOF - exit 0; } - -sub Error { - foreach my $line (@_) { - warn "pn2pdf: $line\n"; - } - exit 1; -} - -sub Verbose { - return unless $verbose; - foreach my $line (@_) { - warn "[pn2pdf] $line\n"; - } -} - -sub SumChanged { - my ($file, $lines) = @_; - my $md5 = md5_hex ($lines); - if ($md5 eq $sum{$file}) { - return 0; - } else { - $sum{$file} = $md5; - return 1; - } -} - -sub Test { - foreach my $file (@ARGV) { - open FILE, ">$file" or &Error ("could not create $file -- $!"); - close FILE; - } - exit 0; -} - -sub Delete { - foreach my $pattern (@ARGV) { - unlink glob $pattern unless $keep; - } - exit 0; -} - -sub Batch { - my @lines; - foreach my $file (@ARGV) { - $file =~ s/(\.[a-z]{3})?$/.bpn/i; - open FILE, $file or &Error ("could not open $file -- $!"); - while (<FILE>) { - next unless /^pn2pdf\s/; - s/^pn2pdf\s/pn2pdf --keep / if $keep; - s/^pn2pdf\s/pn2pdf --force / if $force; - s/^pn2pdf\s/pn2pdf --verbose / if $verbose; - push @lines, $_; - } - close FILE; - } - foreach (@lines) { - system $_; - } - exit 0; -} |