1# Usage: rofftoc PerlTOC.xxx.raw 2# 3# Post-processes roffitall output. Called from roffitall to produce 4# a formatted table of contents. 5# 6# Author: Tom Christiansen 7 8print <<'EOF'; 9.de NP 10'.sp 0.8i 11.tl ''- % -'' 12'bp 13'sp 0.5i 14.tl ''\fB\s+2Perl Table of Contents\s0\fR'' 15'sp 0.3i 16.. 17.wh -1i NP 18.af % i 19.sp 0.5i 20.tl ''\fB\s+5Perl Table of Contents\s0\fR'' 21.sp 0.5i 22.nf 23.na 24EOF 25while (<>) { 26 #chomp; 27 s/Index://; 28 ($type, $page, $desc) = split ' ', $_, 3; 29 $desc =~ s/^"(.*)"$/$1/; 30 if ($type eq 'Title') { 31 ($name = $desc) =~ s/ .*//; 32 next; 33 } elsif ($type eq 'Name') { 34 #print STDERR $page, "\t", $desc; 35 print ".ne 5\n"; 36 print ".in 0\n"; 37 print ".sp\n"; 38 print ".ft B\n"; 39 print "$desc\n"; 40 print ".ft P\n"; 41 print ".in 5n\n"; 42 } elsif ($type eq 'Header') { 43 print ".br\n", $page, "\t", $desc; 44 } elsif ($type eq 'Subsection') { 45 print ".br\n", $page, "\t\t", $desc; 46 } elsif ($type eq 'Item') { 47 next if $desc =~ /\\bu/; 48 next unless $name =~ /POSIX|func/i; 49 print ".br\n", $page, "\t\t\t", $desc; 50 } 51} 52__END__ 53Index:Title 1 "PERL 1" 54Index:Name 1 "perl - Practical Extraction and Report Language" 55Index:Header 1 "NAME" 56Index:Header 1 "SYNOPSIS" 57Index:Header 2 "DESCRIPTION" 58Index:Item 2 "\(bu Many usability enhancements" 59Index:Item 2 "\(bu Simplified grammar" 60Index:Item 2 "\(bu Lexical scoping" 61Index:Item 2 "\(bu Arbitrarily nested data structures" 62Index:Item 2 "\(bu Modularity and reusability" 63