#! @mgp_cv_path_perl@ # mgp2latex.pl # converts MagicPoint input file to latex "seminar" style document. # $Id: mgp2latex.pl.in,v 1.8 1998/08/26 05:30:12 itojun Exp $ # # Copyright (C) 1997 and 1998 WIDE Project. All rights reserved. # # Redistribution and use in source and binary forms, with or without # modification, are permitted provided that the following conditions # are met: # 1. Redistributions of source code must retain the above copyright # notice, this list of conditions and the following disclaimer. # 2. Redistributions in binary form must reproduce the above copyright # notice, this list of conditions and the following disclaimer in the # documentation and/or other materials provided with the distribution. # 3. Neither the name of the project nor the names of its contributors # may be used to endorse or promote products derived from this software # without specific prior written permission. # # THIS SOFTWARE IS PROVIDED BY THE PROJECT AND CONTRIBUTORS ``AS IS'' AND # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE # ARE DISCLAIMED. IN NO EVENT SHALL THE PROJECT OR CONTRIBUTORS BE LIABLE # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF # SUCH DAMAGE. @keywords = split(/\s+/, <) { s/\n$//; $_ = '' if (/^#/o); if ($_ eq '' || $_ =~ /^[^%]/) { $line++; if ($default[$line] && !$nodefault) { &cmds($default[$line]); } next if ($ignoremode); next if ($page == -1); &output($_); next; } &cmds($_); } &pageepilogue; &epilogue; exit 0; sub cmds { local($_) = @_; # special directives if (/^%page/i) { if ($page != -1) { &alignreset; &pageepilogue; } else { $page = 0; } &pageprologue; $line = 0; $nodefault = 0; next; } elsif (/^%default/i) { $x = (split(/\s+/, $_))[1]; $default[$x] = $_; $default[$x] =~ s/^%default\s+\d+\s+/\%/; next; } elsif (/^%%/) { &output(''); next; } # parsed directives @dirs = split(/,\s*/, substr($_, 1)); foreach $j (@dirs) { @dir = split(/\s+/, $j); $dir[0] =~ tr/A-Z/a-z/; if ($dir[0] eq 'image') { # if (!$doimage) { # # don't use images # } elsif (scalar(@dir) == 2 || scalar(@dir) == 3) { # print "\"$dir[1]\"\n"; # } elsif (scalar(@dir) == 4) { # # interpretation wrong # print "\"$dir[1]\"\n"; # } elsif (scalar(@dir) >= 5) { # # interpretation wrong # print "\"$dir[1]\"\n"; # } } elsif ($dir[0] eq 'nodefault') { $nodefault++; } elsif ($dir[0] =~ /^(left|right|center)$/) { $dir[0] =~ tr/A-Z/a-z/; &alignreset; &alignmode($dir[0]); } elsif ($dir[0] =~ /^filter$/) { $ignoremode = 1; } elsif ($dir[0] =~ /^endfilter$/) { $ignoremode = 0; } elsif (grep($dir[0] eq $_, @keywords)) { # unsupported directive with 1 parameter } else { die "unsupported directive $dir[0]\n"; } } } sub prologue { print <