#!/usr/bin/perl -s 

our ($n) ;  ## -n subsections as   "1.1. title" / defaul "== title"
undef $/;

my %save=();
my $n1=0;

sub saveit{$save{++$n1}=$_[0];"__SSAVE${n1}__"}
sub loadit{my $t = shift; 
  $t =~ s{__SSAVE(\d+)__}{$save{$1}}g;
  $t;
}

while(<>){
 s{( \\verb(\W) .*? \2)
        }{ saveit($1)}xges;            ## save \verb

 s{( \\begin\{[Vv]erbatim\} .*? \\end\{[Vv]erbatim\})
        }{ saveit($1)}xges;            ## save verbatim

 s{([^\\]) (\%.*)
        }{$1 .saveit($2)}xge;          ## save comm

 s/(?::\s*)\\begin{itemize}\s*(\n\s*)\\item/\x01:$1./g;
 s/\\begin{itemize}\s*(\n\s*)\\item/\x01\\:$1./g;
 s/\\end{itemize}/#\x02/g;
 s/(?::\s*)\\begin{enumerate}\s*(\n\s*)\\item/\x03:$1.1/g;
 s/\\begin{enumerate}\s*(\n\s*)\\item/\x03\\:$1.1/g;
 s/\\end{enumerate}/#\x04/g;
 s/(?::\s*)\\begin{description}\s*(\n\s*)\\item/\x05:$1./g;
 s/\\begin{description}\s*(\n\s*)\\item/\x05\\:$1./g;
 s/\\end{description}/#\x06/g;

 while( s/\x01([^\x01-\x06]*)\x02/pr(1,$1)/e  or 
        s/\x03([^\x01-\x06]*)\x04/pr(2,$1)/e  or 
        s/\x05([^\x01-\x06]*)\x06/pr(3,$1)/e ) {};

 s/\\item\b/.##PROBLEM##/g;
 s/[\x01\x02\x03\x04]/##PROBLEM##/g;

 s/\\section{(.*?)}/\n= $1\n/g           unless $n  ;
 s/\\subsection{(.*?)}/\n== $1\n/g       unless $n  ;
 s/\\subsubsection{(.*?)}/\n=== $1\n/g   unless $n  ;
 s/\\section{(.*?)}/\n1. $1\n/g            if $n;
 s/\\subsection{(.*?)}/\n1.1. $1\n/g       if $n;
 s/\\subsubsection{(.*?)}/\n1.1.1. $1\n/g  if $n;

 s/\\section\*{(.*?)}/\n=* $1\n/g          ;
 s/\\subsection\*{(.*?)}/\n==* $1\n/g      ;
 s/\\subsubsection\*{(.*?)}/\n===* $1\n/g  ;

 s{\n[\ \t]*
     \\begin\{frame\}(?:\[fragile\])?\{(.*?)\}
     (.*?)
     \\end\{frame\}
  }{\n=. $1$2\n}xsg;

 s{\n[\ \t]*
     \\begin\{frame\} \s*
     \\frametitle\{(.*?)\}
     (.*?)
     \\end\{frame\}
  }{\n=. $1$2\n}xsg;

 s{\n[\ \t]*
     \\begin\{frame\} \s*
     \[fragile\] \s*
     \\frametitle\{(.*?)\}
     (.*?)
     \\end\{frame\}
  }{\n=. $1$2\n}xsg;

# s/\n[ \t]*\\begin\{frame\}\[fragile\]\s*\\frametitle\{(.*?)\}/\n=. $1/g;
 s/(\n[ \t]*\\begin\{frame\}\s*(\\partpage)\s*\\end\{frame\})/saveit($1)/eg;
# s/\n[ \t]*\\begin\{frame\}/\n=. \n%%/g;
# s/\n[ \t]*\\end\{frame\}[ \t]*\n/\n%% end of frame\n/g;

 print loadit($_);
}

sub pr{ my ($a,$b)=@_;
  if ($a == 1) {$b =~ s/(\n\s*)\\item/$1./g; }
  if ($a == 2) {$b =~ s/(\n\s*)\\item/$1.1/g; }
  if ($a == 3) {$b =~ s/(\n\s*)\\item/$1./g; }
  $b
}

__END__

=head1 NAME

tex2ptex - convert latex to prelatex notation

=head1 SYNOPSIS

tex2ptex [-n] file.tex > file.ptex

=head1 DESCRIPTION

Simpifies latex notation to prelatex;

 a:                     a:
 \begin{itemize}          . the larch
   \item the larch      #
 \end{itemize}

 a:                     a:
 \begin{enumerate}        .1 the larch
   \item the larch      #
 \end{enumerate}

 a:                        a:
 \begin{description}         .[the larch] tree
   \item[the larch] tree   #
 \end{description}

 \section{title1}          = title1
 \subsection{title1}       == title1
 \subsubsection{title1}    === title1
 \section*{title1}         =* title1
 
 ### for beamer
 \begin{frame}[fragile]    =. title1
   \frametitle{title1}     ...
   ...
 \end{frame}

=head2 Options

 -n     makes    section (subsection etc) as     1. title 
                                   defaul is     = title

=head1 AUTHOR

J.Joao Almeida, jj@di.uminho.pt

=head1 SEE ALSO

perl(1).

prel(1)

ppdflatex(1)

=cut