#!/usr/bin/perl

sub min { ($a,$b)=@_; if($a<$b) { return $a;} return $b; }

@indentation_start = ();
$indentation_start[1] = "\\documentclass[a4paper,14pt]{article}
\\usepackage{xspace,colortbl}

\\usepackage[T1]{fontenc}
\\usepackage[utf8]{inputenc}

\\usepackage[screen,nopanel]{pdfscreen}
\\margins{.75in}{.75in}{.75in}{.75in}
\\screensize{6.25in}{8in}

\\begin{document}\n";
$indentation_start[2] = "\n";
$indentation_start[3] = "\\begin{itemize}\n";

@indentation_item = ();
$indentation_item[1] = sub {
    return "\\begin{center}
    \\section*{$_[1]. $_[0]}
    \\end{center}\n";
};
$indentation_item[2] = sub {
    return "\\section*{$_[1].$_[2]. $_[0]}\n";
};
$indentation_item[3] = sub {
    return "\\item $_[0]\n";
};

@indentation_stop = ();
$indentation_stop[1] = "\\end{document}\n";
$indentation_stop[2] = "\n";
$indentation_stop[3] = "\\end{itemize}\n";

@section_numbers = ();
$resv = quotemeta('#$%&~_^{}\\');
$indent = 1;
$output = "";
print $indentation_start[1];
while (<>) {
    ($_ =~ /^(\*+) (.+?)$/) || next;
    $new_indent = length($1);
    $section_numbers[0] = $2;
    $section_numbers[0] =~ s/([$resv])/\\$1/sog;

    if ($new_indent == 2 && $indent > $new_indent) {
	$output = $big_output;
	$indent = 1;
    }

    while ($new_indent > $indent) {
	$indent++;
	$output .= $indentation_start[min($indent,$#indentation_start)];
    }
    while ($new_indent < $indent) {
	$output .= $indentation_stop[min($indent,$#indentation_stop)];
	$section_numbers[$indent] = 0;
	$indent--;
    }
    if ($new_indent == 1) {
	$output = "";
	$indent = 1;
    }

    if ($section_numbers[$indent] >= 1) {
	$section_numbers[$indent]++;
    } else {
	$section_numbers[$indent] = 1;
    }

    $item = $indentation_item[min($indent,$#indentation_item)];
    $output .= $item->(@section_numbers);
    if ($indent == 1) {
	$big_output = $output;
    }

    print $output;
    $tmp_indent = $indent;
    while ($tmp_indent > 1) {
	print $indentation_stop[min($tmp_indent,$#indentation_stop)];
	$tmp_indent--;
    }
    print "\\newpage\n";
}
print "\n";

while ($indent > 0) {
    print $indentation_stop[min($indent,$#indentation_stop)];
    $indent--;
}
