#!/usr/local/bin/perl -w
use strict "subs";

# $Id: extracttex,v 1.5 2000/11/10 11:27:36 freek Exp $

$key = "Definition|Record|Fixpoint|Axiom|Ax_iom|Lemma|Remark|Local";
$x{"Definition"} = ", \\emph{definition}";
$x{"Record"} = ", \\emph{record}";
$x{"Fixpoint"} = ", \\emph{fixpoint}";
$x{"Axiom"} = ", (\\emph{lemma})";
$x{"Ax_iom"} = ", (\\emph{commented out})";
$x{"Lemma"} = ", \\emph{lemma}";
$x{"Remark"} = ", \\emph{remark}";
$x{"Local"} = ", \\emph{local}";

print "% \$I"."d:\$ \n\n";
$p = 0;
$q = 0;
while (<>)
{
  if (/\(\* End_Tex_Verb \*\)/)
  {
    print STDERR "dangling \"End_Tex_Verb\": file \"$ARGV\", line $.\n" if !$p;
    $p = 0;
    $l0 = $l0+1;
    $l1 = $.-1;
    $r = $l1 != $l0 ? "$l0-$l1" : "$l0";
    print "% file \"$ARGV\", line $r *)\n";
    print "$i";
    print "\\begin{verbatim}\n";
    print "$o";
    print "\\end{verbatim}\n";
  };
  if ((/\*\)/) && $q)
  {
    $q = 0;
    $l0 = $l0+1;
    $l1 = $.-1;
    $r = $l1 != $l0 ? "$l0-$l1" : "$l0";
    print "% file \"$ARGV\", line $r *)\n";
    print "$o";
  }
  $o .= $_ if ($p || $q);
  $i .= "\\index{$2\@\\verb/$2/".$x{$1}."}\n" if
    ($p && /^ *($key) +((\w|\')+)/);
  if (/\(\* Begin_Tex_Verb \*\)/)
  {
    print STDERR "dangling \"Begin_Tex_Verb\": file \"$ARGV\", line $l0.\n" if $p;
    $p = 1;
    $l0 = $.;
    $o = "";
    $i = "";
  }
  if (/\(\* Tex_Prose/)
  {
    print STDERR "dangling \"Tex_Prose\": file \"$ARGV\", line $l0.\n" if $q;
    $q = 1;
    $l0 = $.;
    $o = "";
  }
  if ($p && eof)
  {
    print STDERR "dangling \"Begin_Tex_Verb\": file \"$ARGV\", line $l0.\n" ;
    $p = 0;
  }
  if ($q && eof)
  {
    print STDERR "dangling \"Tex_Prose\": file \"$ARGV\", line $l0.\n" ;
    $q = 0;
  }
  close(ARGV) if eof;
}
die if $p || $q;
