summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/metapost/metapost-examples/mp2html.pl
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2009-05-23 00:01:24 +0000
committerKarl Berry <karl@freefriends.org>2009-05-23 00:01:24 +0000
commit002586642116a741d40c197b07191c63515d35dd (patch)
treebcc824fc6046261ea3a69af08d34b6cdf8570cae /Master/texmf-dist/doc/metapost/metapost-examples/mp2html.pl
parent8518c1ff40dd53799254c0b0f88a6a8ae85173e6 (diff)
move metapost docs out of texmf-doc
git-svn-id: svn://tug.org/texlive/trunk@13402 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/metapost/metapost-examples/mp2html.pl')
-rw-r--r--Master/texmf-dist/doc/metapost/metapost-examples/mp2html.pl170
1 files changed, 170 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/metapost/metapost-examples/mp2html.pl b/Master/texmf-dist/doc/metapost/metapost-examples/mp2html.pl
new file mode 100644
index 00000000000..143e2314e0a
--- /dev/null
+++ b/Master/texmf-dist/doc/metapost/metapost-examples/mp2html.pl
@@ -0,0 +1,170 @@
+#! perl -w
+
+#
+# Builds an HTML file and a bunch of GIF files from a Metapost file
+# Also creates a PS file
+#
+# (c) Vincent Zoonekynd <zoonek@math.jussieu.fr>
+# August 1999
+# modified in august 2001
+# distributed under the GPL
+#
+
+$main = $ARGV[0] || "examples";
+$main =~ s/\.mp$//i;
+
+# On crée les images GIF
+# BUG : à chaque fois qu'il y a des fontes, ça plante.
+# C'est normal pour deux raisons :
+# - si j'utilisais prologuse:=2, il ne trouverait pas les fontes.
+# - Comme j'utilise prologues:=0, c'est encore pire...
+# L'idéal serait de créer un fichier LaTeX pour chaque fichier postscript,
+# de lancer later puis dvips dessus et de récupérer le fichier postscript.
+
+# 1. Compile the examples
+
+system "TEX=latex mpost --interaction=nonstopmode $main";
+
+# 2. Create a LaTeX file encompassing the examples and compile it
+
+open(LATEX,'>', "$main.tex") || die "Cannot open examples.tex for writing: $!";
+print LATEX '\documentclass[a4paper]{article}' ."\n";
+print LATEX '\usepackage{graphicx}' ."\n";
+print LATEX '\begin{document}' ."\n";
+print LATEX '\begin{verbatim}' ."\n";
+open(MP, "<", "$main.mp") || die "cannot open $main.mp for reading: $!";
+while(<MP>){
+ if (m/^\s*beginfig\s*\((.*)\)/) {
+ print LATEX '\end{verbatim}' . "\n";
+ print LATEX "\\includegraphics{${main}_$1.mps}\n";
+ print LATEX '\begin{verbatim}' . "\n";
+ print LATEX $_;
+ } elsif (m/^\s*endfig/) {
+ print LATEX $_;
+ print LATEX '\end{verbatim}' ."\n";
+ print LATEX '\hrulefill' . "\n";
+ print LATEX '\begin{verbatim}' . "\n";
+ } else {
+ print LATEX $_;
+ }
+}
+print LATEX '\end{verbatim}' . "\n";
+print LATEX '\end{document}' ."\n";
+close MP;
+close LATEX;
+
+opendir(DIR,"./") || die "Cannot open ./ directory for reading : $!";
+foreach $file (readdir DIR) {
+ if ($file =~ m/^$main.[0-9]+$/) {
+ my $new = $file;
+ $new =~ s/\./_/g;
+ $new .= ".mps";
+ symlink $file, $new;
+ }
+}
+closedir(DIR);
+
+system "latex --interaction=nonstopmode $main.tex";
+system "dvips -o $main.ps $main.dvi";
+#system "pdflatex --interaction=nonstopmode $main.tex";
+
+# 3. Create the GIF pictures
+
+opendir(DIR,"./") || die "Cannot open ./ directory for reading : $!";
+foreach $file (readdir DIR) {
+ if ($file =~ m/^$main.[0-9]+$/) {
+
+ ## Création du fichier PS
+ symlink "$file", "$file.eps";
+ open(TEX,">$file.tex") || die "cannot open $file.tex for writing : $!";
+ print TEX '\nonstopmode' ."\n" ;
+ print TEX '\documentclass[a4paper,10pt]{article}' ."\n" ;
+ print TEX '\usepackage[T1]{fontenc}\usepackage[latin1]{inputenc}' ."\n" ;
+ print TEX '\usepackage{graphicx,amsmath,amssymb}' ."\n" ;
+ print TEX '\pagestyle{empty}' ."\n" ;
+ print TEX '\begin{document}' ."\n" ;
+ print TEX '\includegraphics{'. "$file.eps" .'}' ."\n" ;
+ print TEX '\end{document}' ."\n" ;
+ close TEX;
+ system "latex $file.tex";
+ system "dvips -E -f $file.dvi -o $file.ps";
+
+ ## Transformation en GIF
+ my ($bbx,$bby,$bbw,$bbh);
+ open(PS,"$file.ps");
+ while (<PS>) {
+ if (/^%%BoundingBox:\s+(-?\d+)\s+(-?\d+)\s+(-?\d+)\s+(-?\d+)/) {
+ $bbx = 0-$1; $bby = 0-$2;
+ $bbw = $3+$bbx; $bbh = $4+$bby;
+# print "*** Seen BBOX\n";
+ }
+ last if /^%%EndComments/;
+ }
+ close(PS);
+
+ my $scale = 3;
+ my $density = 72*$scale;
+ $bbw = $scale * $bbw;
+ $bbh = $scale * $bbh;
+# print "*** gs -q -dNOPAUSE -dNO_PAUSE -sDEVICE=ppmraw -g${bbw}x${bbh} -r$density -sOutputFile=$file.ppm\n";
+ open(GS, "|gs -q -dNOPAUSE -dNO_PAUSE -sDEVICE=ppmraw -g${bbw}x${bbh} -r$density -sOutputFile=$file.ppm");
+ print GS "$bbx $bby translate\n";
+ print GS "($file.ps) run\n";
+ print GS "showpage\n";
+ print GS "quit\n";
+ close(GS);
+
+ system("pnmcrop $file.ppm | ppmquant 256 | ppmtogif > $file.gif");
+
+ unlink "$file.ppm";
+ }
+}
+
+
+# 4. Create the HTML file
+open(MP,"$main.mp") || die "cannot open $main.mp for reading: $!";
+open(HTML,">$main.html") || die "cannot open $main.html for writing: $!";
+select HTML;
+print "<HTML><HEAD><TITLE>Metapost : exemples</TITLE></HEAD><BODY>\n";
+print "<H1> Métapost : exemples </H1>\n";
+print "<HR><PRE>\n";
+while(<MP>){
+ if (m/^\s*beginfig\s*\((.*)\)/) {
+ print "</PRE><IMG SRC=\"$main.$1.gif\"><PRE>\n";
+ print ;
+ } elsif (m/^\s*endfig/) {
+ print;
+ print "</PRE><HR><PRE>\n";
+ } else {
+ print;
+ }
+}
+print "</PRE>\n";
+print "</BODY></HTML>\n";
+close HTML;
+close MP;
+
+# 5. Remove unnecessary files
+
+opendir(DIR,"./") || die "Cannot open ./ directory for reading : $!";
+foreach $file (readdir DIR) {
+ if ($file =~ m/^$main.[0-9]+$/) {
+ unlink $file;
+ unlink "$file.tex";
+ unlink "$file.dvi";
+ unlink "$file.aux";
+ unlink "$file.log";
+ unlink "$file.eps";
+ unlink "$file.ps";
+ my $new = $file;
+ $new =~ s/\./_/g;
+ $new .= ".mps";
+ unlink $new;
+ } elsif( $file =~ m/\.mpx$/ ) {
+ unlink $file;
+ }
+}
+closedir DIR;
+unlink "$main.aux";
+unlink "$main.log";
+