diff options
author | Fred Drake <fdrake@acm.org> | 1998-03-17 06:28:05 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 1998-03-17 06:28:05 (GMT) |
commit | 13210ed55f1e75d2b2a3a143948210de1e4a056b (patch) | |
tree | e35ac808a7cb9ba11091ddf6617b894246043d7c /Doc/perl | |
parent | bd2796e972e31ce03e4d81b91ea7142ea45bee25 (diff) | |
download | cpython-13210ed55f1e75d2b2a3a143948210de1e4a056b.zip cpython-13210ed55f1e75d2b2a3a143948210de1e4a056b.tar.gz cpython-13210ed55f1e75d2b2a3a143948210de1e4a056b.tar.bz2 |
Get the index working at least partway again.
Some small cleanups.
Diffstat (limited to 'Doc/perl')
-rw-r--r-- | Doc/perl/l2hinit.perl | 319 |
1 files changed, 126 insertions, 193 deletions
diff --git a/Doc/perl/l2hinit.perl b/Doc/perl/l2hinit.perl index 75c39a8..3b2cbf7 100644 --- a/Doc/perl/l2hinit.perl +++ b/Doc/perl/l2hinit.perl @@ -1,5 +1,10 @@ #LaTeX2HTML Version 96.1 : dot.latex2html-init -*- perl -*- # +# Significantly revised by Fred L. Drake, Jr. <fdrake@acm.org> for use +# with the Python documentation. +# +# New name to avoid distributing "dot" files with the Python documentation. +# $INFO = 1; # 0 = do not make a "About this document..." section $MAX_LINK_DEPTH = 3; @@ -47,187 +52,115 @@ $mydir = getcwd() . "$dd$mydir" $LATEX2HTMLSTYLES = "$mydir$envkey$LATEX2HTMLSTYLES"; -sub top_navigation_panel { - - # Now add a few buttons with a space between them - "<div class=navigation>\n" . - "$NEXT\n$UP\n$PREVIOUS\n$CONTENTS\n$INDEX $CUSTOM_BUTTONS" . - - "<br>\n" . # Line break - - # If ``next'' section exists, add its title to the navigation panel - ($NEXT_TITLE ? "<b> Next:</b> $NEXT_TITLE\n" : undef) . - - # Similarly with the ``up'' title ... - ($UP_TITLE ? "<b>Up:</b> $UP_TITLE\n" : undef) . - - # ... and the ``previous'' title - ($PREVIOUS_TITLE ? "<b> Previous:</b> $PREVIOUS_TITLE\n" : undef) . +sub make_nav_panel{ + ($NEXT_TITLE ? "$NEXT\n" : '') + . ($UP_TITLE ? "$UP\n" : '') + . ($PREVIOUS_TITLE ? "$PREVIOUS\n" : '') + . "$CONTENTS\n$INDEX" +# . " $CUSTOM_BUTTONS" + . "<br>\n" + . ($NEXT_TITLE ? "<b> Next:</b> $NEXT_TITLE\n" : '') + . ($UP_TITLE ? "<b>Up:</b> $UP_TITLE\n" : '') + . ($PREVIOUS_TITLE ? "<b>Previous:</b> $PREVIOUS_TITLE\n" : ''); +} - # Line Break, horizontal rule (3-d dividing line) and new paragraph - "<br><hr><p></div>" +sub top_navigation_panel { + "<div class=navigation>\n" + . &make_nav_panel + . "<br><hr><p></div>" } sub bot_navigation_panel { - - # Start with a horizontal rule (3-d dividing line) - "<div class=navigation><hr>". - - # Now add a few buttons with a space between them - "$NEXT\n$UP\n$PREVIOUS\n$CONTENTS\n$INDEX $CUSTOM_BUTTONS" . - - "<br>\n" . # Line break - - # If ``next'' section exists, add its title to the navigation panel - ($NEXT_TITLE ? "<b> Next:</b> $NEXT_TITLE\n" : undef) . - - # Similarly with the ``up'' title ... - ($UP_TITLE ? "<b>Up:</b> $UP_TITLE\n" : undef) . - - # ... and the ``previous'' title - ($PREVIOUS_TITLE ? "<b> Previous:</b> $PREVIOUS_TITLE\n" : undef) . - - "</div>" + "<div class=navigation><hr>" + . &make_nav_panel + . "</div>" } -# sub make_section_heading { -# local($text, $level, $anchors) = @_; -# local($section_tag) = join('', @curr_sec_id); -# local($align,$pre_anchors); -# # separate any invisible anchors or alignment, if this has not already been done -# if (!($anchors)){ ($anchors,$text) = &extract_anchors($text) } -# else { -# $anchors =~ s/(ALIGN=\"\w*\")/$align = " $1";''/e; -# $anchors = &translate_commands($anchors) if ($anchors =~ /\\/); -# } -# if (!($text)) { -# # anchor to a single `.' only -# $text = "<a name=SECTION$section_tag>.</a>$anchors\n"; -# } elsif ($anchors) { -# # keep it short and simple! -# $text = "<a name=SECTION$section_tag>$text</a>"; -# } elsif (!($text =~ /<A[^\w]/io)) { -# # no embedded anchors, so anchor it all -# $text = "<a name=SECTION$section_tag>\n" . $text . "</a>"; -# } else { -# # there are embedded anchors; these cannot be nested -# local ($tmp) = $text; -# $tmp =~ s/<//o ; # find 1st < -# if ($`) { # anchor text before the first < -# # $text = "<A NAME=\"SECTION$section_tag\">\n" . $` . "</A>\n<" . $'; -# $text = "<a name=SECTION$section_tag>\n" . $` . "</a>"; -# $pre_anchors = "<" . $'; -# if ($pre_anchors =~ /^(<A NAME=\"[^\"]+>${anchor_invisible_mark}<\/A>\s*)+$/) { -# $pre_anchors .= "\n" -# } else { $text .= $pre_anchors; $pre_anchors = '' } -# } else { -# # $text starts with a tag -# local($after,$tmp) = ($',''); -# if ( $after =~ /^A[^\w]/i ) { -# # it is an anchor already, so need a separate line -# $text = "<a name=SECTION$section_tag>$anchor_invisible_mark</a><br>\n$text"; -# } else { -# # Is it a tag enclosing the anchor ? -# $after =~ s/^(\w)*[\s|>]/$tmp = $1;''/eo; -# if ($after =~ /<A.*<\/$tmp>/) { -# # it encloses an anchor, so use anchor_mark + break -# $text = "<a name=SECTION$section_tag>$anchor_invisible_mark</a><br>\n$text"; -# } else { -# # take up to the anchor -# $text =~ s/^(.*)<A([^\w])/"<a name=SECTION$section_tag>$1<A$2"/oe; -# } -# } -# } -# } -# "$pre_anchors\n<$level$align>$text\n<\/$level>"; -# } - - sub gen_index_id { # this is used to ensure common index key generation and a stable sort local($str,$extra) = @_; sprintf("%s###%s%010d", $str, $extra, ++$global{'max_id'}); } -# sub make_index_entry { -# local($br_id,$str) = @_; -# # If TITLE is not yet available (i.e the \index command is in the title of the -# # current section), use $ref_before. -# $TITLE = $ref_before unless $TITLE; -# # Save the reference -# $str = gen_index_id($str, ''); -# $index{$str} .= &make_half_href("$CURRENT_FILE#$br_id"); -# "<a name=\"$br_id\">$anchor_invisible_mark<\/a>"; -# } +sub make_index_entry { + local($br_id,$str) = @_; + # If TITLE is not yet available (i.e the \index command is in the title of the + # current section), use $ref_before. + $TITLE = $ref_before unless $TITLE; + # Save the reference + $str = gen_index_id($str, ''); + $index{$str} .= &make_half_href("$CURRENT_FILE#$br_id"); + "<a name=\"$br_id\">$anchor_invisible_mark<\/a>"; +} -# sub add_idx { -# print "\nDoing the index ..."; -# local($key, $str, @keys, $index, $level, $count, @previous, @current); -# @keys = keys %index; -# @keys = sort keysort @keys; -# $level = 0; -# foreach $key (@keys) { -# @current = split(/!/, $key); -# $count = 0; -# while ($current[$count] eq $previous[$count]) { -# $count++; -# } -# while ($count > $level) { -# $index .= "<dl compact>\n"; -# $level++; -# } -# while ($count < $level) { -# $index .= "</dl>\n"; -# $level--; -# } -# foreach $term (@current[$count .. $#current-1]) { -# # need to "step in" a little -# $index .= "<dt>" . $term . "\n<dl compact>\n"; -# $level++; -# } -# $str = $current[$#current]; -# $str =~ s/\#\#\#\d+$//o; # Remove the unique id's -# $str =~ s/\#\#\#[DR]EF\d+$//o; # Remove the unique id's -# if (&index_key_eq(join('',@current), join('',@previous))) { -# $index .= ",\n$index{$key}" . $cross_ref_visible_mark . "</a>"; } -# else { -# $index .= "\n<dt>$index{$key}" . $str . "</a>"; } -# @previous = @current; -# } -# while ($count < $level) { -# $index .= "</dl>\n"; -# $level--; -# } -# s/$idx_mark/<dl compact>$index<\/dl>/o; -# } +sub add_idx { + print "\nDoing the index ..."; + local($key, $str, @keys, $index, $level, $count, @previous, @current); + @keys = keys %index; + @keys = sort keysort @keys; + $level = 0; + foreach $key (@keys) { + @current = split(/!/, $key); + $count = 0; + while ($current[$count] eq $previous[$count]) { + $count++; + } + while ($count > $level) { + $index .= "<dl compact>\n"; + $level++; + } + while ($count < $level) { + $index .= "</dl>\n"; + $level--; + } + foreach $term (@current[$count .. $#current-1]) { + # need to "step in" a little + $index .= "<dt>" . $term . "\n<dl compact>\n"; + $level++; + } + $str = $current[$#current]; + $str =~ s/\#\#\#\d+$//o; # Remove the unique id's + $str =~ s/\#\#\#[DR]EF\d+$//o; # Remove the unique id's + if (&index_key_eq(join('',@current), join('',@previous))) { + $index .= ",\n$index{$key}" . $cross_ref_visible_mark . "</a>"; } + else { + $index .= "\n<dt>$index{$key}" . $str . "</a>"; } + @previous = @current; + } + while ($count < $level) { + $index .= "</dl>\n"; + $level--; + } + s/$idx_mark/<dl compact>$index<\/dl>/o; +} -# sub index_key_eq { -# local($a,$b) = @_; -# $a = &clean_key($a); -# $a =~ s/\#\#\#\d+$//o; # Remove the unique id's -# $a =~ s/\#\#\#[dr]ef\d+$//o; # Remove the unique id's -# $b = &clean_key($b); -# $b =~ s/\#\#\#\d+$//o; # Remove the unique id's -# $b =~ s/\#\#\#[dr]ef\d+$//o; # Remove the unique id's -# $a eq $b; -# } +sub index_key_eq{ + local($a,$b) = @_; + $a = &clean_key($a); + $a =~ s/\#\#\#\d+$//o; # Remove the unique id's + $a =~ s/\#\#\#[dr]ef\d+$//o; # Remove the unique id's + $b = &clean_key($b); + $b =~ s/\#\#\#\d+$//o; # Remove the unique id's + $b =~ s/\#\#\#[dr]ef\d+$//o; # Remove the unique id's + $a eq $b; +} # need to remove leading <...> -# sub clean_key { -# local ($_) = @_; -# tr/A-Z/a-z/; -# s/\s//; -# s/^<[a-z][-._a-z0-9]*>//; # Remove leading <gi> -# $_; -# } +sub clean_key{ + local ($_) = @_; + tr/A-Z/a-z/; + s/\s//; + s/^<[a-z][-._a-z0-9]*>//; # Remove leading <gi> (no attributes) + $_; +} $idx_module_mark = '<tex2html_idx_module_mark>'; $idx_module_title = 'Module Index'; -sub add_module_idx { +sub add_module_idx{ print "\nDoing the module index ..."; local($key, @keys, $index); $index = "<p>"; @@ -261,7 +194,7 @@ sub do_cmd_tableofcontents { $TITLE = $toc_title; $tocfile = $CURRENT_FILE; local($closures,$reopens) = &preserve_open_tags(); - &anchor_label("contents",$CURRENT_FILE,$_); # this is added + &anchor_label("contents",$CURRENT_FILE,$_); # this is added join('', "<BR>\n", $closures , &make_section_heading($toc_title, "H2"), $toc_mark , $reopens, $_); @@ -272,7 +205,7 @@ sub do_cmd_listoffigures { $TITLE = $lof_title; $loffile = $CURRENT_FILE; local($closures,$reopens) = &preserve_open_tags(); - &anchor_label("lof",$CURRENT_FILE,$_); # this is added + &anchor_label("lof",$CURRENT_FILE,$_); # this is added join('', "<BR>\n", $closures , &make_section_heading($lof_title, "H2"), $lof_mark , $reopens, $_); @@ -283,7 +216,7 @@ sub do_cmd_listoftables { $TITLE = $lot_title; $lotfile = $CURRENT_FILE; local($closures,$reopens) = &preserve_open_tags(); - &anchor_label("lot",$CURRENT_FILE,$_); # this is added + &anchor_label("lot",$CURRENT_FILE,$_); # this is added join('', "<BR>\n", $closures , &make_section_heading($lot_title, "H2"), $lot_mark , $reopens, $_); @@ -320,7 +253,7 @@ sub do_cmd_textohtmlindex { local($heading) = join('',&make_section_heading($idx_title, "H2"), $idx_mark); local($pre,$post) = &minimize_open_tags($heading); - &anchor_label("genindex",$CURRENT_FILE,$_); # this is added + &anchor_label("genindex",$CURRENT_FILE,$_); # this is added join('',"<BR>\n" , $pre, $_); } @@ -377,38 +310,38 @@ sub add_bbl_and_idx_dummy_commands { # sectioning command. This subroutine finds what is the outermost level and # sets the above to the same level; -%section_commands = ('textohtmlmoduleindex', 2, %section_commands); +#%section_commands = ('textohtmlmoduleindex', 1, %section_commands); -# sub set_depth_levels { -# # Sets $outermost_level -# local($level); -# #RRM: do not alter user-set value for $MAX_SPLIT_DEPTH -# foreach $level ("part", "chapter", "section", "subsection", -# "subsubsection", "paragraph") { -# last if (($outermost_level) = /\\($level)$delimiter_rx/); -# } -# $level = ($outermost_level ? $section_commands{$outermost_level} : -# do {$outermost_level = 'section'; 3;}); - -# #RRM: but calculate value for $MAX_SPLIT_DEPTH when a $REL_DEPTH was given -# if ($REL_DEPTH && $MAX_SPLIT_DEPTH) { -# $MAX_SPLIT_DEPTH = $level + $MAX_SPLIT_DEPTH; -# } elsif (!($MAX_SPLIT_DEPTH)) { $MAX_SPLIT_DEPTH = 1 }; - -# %unnumbered_section_commands = ( -# 'tableofcontents', $level -# , 'listoffigures', $level -# , 'listoftables', $level -# , 'bibliography', $level -# , 'textohtmlindex', $level -# , 'textohtmlmoduleindex', $level -# ); - -# %section_commands = ( -# %unnumbered_section_commands -# , %section_commands -# ); -# } +sub set_depth_levels { + # Sets $outermost_level + local($level); + #RRM: do not alter user-set value for $MAX_SPLIT_DEPTH + foreach $level ("part", "chapter", "section", "subsection", + "subsubsection", "paragraph") { + last if (($outermost_level) = /\\($level)$delimiter_rx/); + } + $level = ($outermost_level ? $section_commands{$outermost_level} : + do {$outermost_level = 'section'; 3;}); + + #RRM: but calculate value for $MAX_SPLIT_DEPTH when a $REL_DEPTH was given + if ($REL_DEPTH && $MAX_SPLIT_DEPTH) { + $MAX_SPLIT_DEPTH = $level + $MAX_SPLIT_DEPTH; + } elsif (!($MAX_SPLIT_DEPTH)) { $MAX_SPLIT_DEPTH = 1 }; + + %unnumbered_section_commands = ( + 'tableofcontents', $level + , 'listoffigures', $level + , 'listoftables', $level + , 'bibliography', $level + , 'textohtmlindex', $level + , 'textohtmlmoduleindex', $level + ); + + %section_commands = ( + %unnumbered_section_commands + , %section_commands + ); +} # Fix from Ross Moore for ']' in \item[...]; this can be removed once the next |