5 ($#ARGV >= 1) or die "Usage: toc_create.pl <input-doc-file>+";
12 my($level,$label,$name);
14 while(my $line=<FILE>) {
16 if($line=~/\\section\s*(\S\S*)\s*(.*)$/) {
21 # print "$label : $name\n";
22 push @toc,[$level,$label,$name];
23 } elsif($line=~/\\subsection\s*(\S\S*)\s*(.*)$/) {
28 # print "\t$label : $name\n";
29 push @toc,[$level,$label,$name];
30 } elsif($line=~/\\subsubsection\s*(\S\S*)\s*(.*)$/) {
35 # print "\t\t$label : $name\n";
36 push @toc,[$level,$label,$name];
41 my $outfile = "$infile.toc";
43 $outfile =~ s|\.\./||g;
45 $outfile = ".$outfile";
46 print "Create a TOC for $infile (in $outfile)\n";
47 open OUTPUT,"> ./$outfile";
48 my($current_level)=-1;
50 print OUTPUT "<!-- Automatically generated table of contents --!>\n";
51 print OUTPUT "<div class=\"toc\">\n";
52 print OUTPUT "<div class=\"tocTitle\">Table of content</div>\n";
53 foreach $entry (@toc) {
54 ($level,$label,$name) = @$entry;
56 while($current_level<$level) {
57 print OUTPUT "<ol type=\"1\">\n";
60 while($current_level>$level) {
61 print OUTPUT "</ol>\n";
64 foreach (1..$current_level) {
67 print OUTPUT "<li> <a href=\"#$label\">$name</a>\n";
70 while($current_level>-1) {
71 print OUTPUT "</ol>\n";
74 print OUTPUT "</div>\n";
75 print OUTPUT "<!-- End of automatically generated table of contents --!>\n";
80 map { handle_file($_) } @ARGV;