diff --git a/Doc/.latex2html-init b/Doc/.latex2html-init index e263d876bb7..1737d56c9d3 100644 --- a/Doc/.latex2html-init +++ b/Doc/.latex2html-init @@ -4,96 +4,18 @@ $INFO = 1; # 0 = do not make a "About this document..." section $MAX_LINK_DEPTH = 3; +$NUMBERED_FOOTNOTES = 1; + # Python documentation uses section numbers to support references to match # in the printed and online versions. # $SHOW_SECTION_NUMBERS = 1; -$HTML_VERSION = '3.0'; $ICONSERVER = '../icons'; -# This replacement adds the "BORDER=0" attribute to the generated icon -# markup. This is done for no better reason than that it looks better. -# -sub img_tag { - local($icon) = @_; - ( ($icon =~ /(gif)/) ? - do { - $icon =~ /(up|next|previous|next_page|previous_page|change_begin|change_end|change_delete|contents|index)/; - join('','',$1,
-	      '') - } : - $icon); -} +$CHILDLINE = "\n


\n"; +$VERBOSITY = 0; -# This replacement for process_command() is needed to add the case for -# "\,"; it is unfortunate we need to do it this way. -# -sub process_command { - local ($cmd_rx, *ref_contents) = @_; - local($ref_before, $cmd, $after); - local($cmd_sub, $cmd_msub, $cmd_trans, $mathentity); - local (@open_font_tags,@open_size_tags); - $ref_contents = &convert_iso_latin_chars($ref_contents); - for (;;) { # Do NOT use the o option - last unless ($ref_contents =~ /$cmd_rx/ ); - ($ref_before, $cmd, $after) = ($`, $1, "$2$'"); - print("."); -# $after =~ s/^[ ]+/ /o; Collapse all spaces that follow a command - if ($cmd =~ /[a-zA-Z]$/) { # Eat redundant spaces that follow a command - $after =~ s/^[ \t]+//o; } - else { - $after =~ s/^[ \t]+/ /o; } - if ( $cmd = &normalize($cmd) ) { - ($cmd_sub, $cmd_msub, $cmd_trans, $mathentity) = - ("do_cmd_$cmd", "do_math_cmd_$cmd", - $declarations{$cmd}, $mathentities{$cmd}); - if (defined &$cmd_sub) { - # $ref_before may also be modified ... - if ($cmd =~ /$sizechange_rx/o) { - $after = &$cmd_sub($after, @open_size_tags); - } else { - $after = &$cmd_sub($after, @open_font_tags); - }; - } - elsif (defined &$cmd_msub) { - # $ref_before may also be modified ... - $after = &$cmd_msub($after, @open_font_tags); - if ( !$math_mode ) { - $after = "" . $after . ""; - ++$commands_outside_math{$cmd}; - }; - } - elsif ($cmd_trans) { # One to one transform - $cmd_trans =~ m|&$mathentity;" . $after; - ++$commands_outside_math{$cmd}; - }; } - # Here's the hack: - elsif ($cmd == ',' && ! $AUX_FILE) { - $ref_before = $ref_before . ","; - } - elsif ($ignore{$cmd}) { # Ignored command - print "."} - elsif ($cmd =~ /^the(.+)$/) { # Counter - $counter = $1; - $after = &do_cmd_thecounter($after);} - else { - # Do not add if reading an auxiliary file - ++$unknown_commands{$cmd} unless $AUX_FILE; - } - } - $ref_contents = join('', $ref_before, $after); - } - $ref_contents; -} sub top_navigation_panel { @@ -113,13 +35,13 @@ sub top_navigation_panel { ($PREVIOUS_TITLE ? " Previous: $PREVIOUS_TITLE\n" : undef) . # Line Break, horizontal rule (3-d dividing line) and new paragraph - "

\n" + "


" } sub bot_navigation_panel { # Start with a horizontal rule (3-d dividing line) - "\n

" } +# 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 = ".$anchors\n"; +# } elsif ($anchors) { +# # keep it short and simple! +# $text = "$text"; +# } elsif (!($text =~ /"; +# } else { +# # there are embedded anchors; these cannot be nested +# local ($tmp) = $text; +# $tmp =~ s/\n" . $` . "\n<" . $'; +# $text = "\n" . $` . ""; +# $pre_anchors = "<" . $'; +# if ($pre_anchors =~ /^(${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 = "$anchor_invisible_mark
\n$text"; +# } else { +# # Is it a tag enclosing the anchor ? +# $after =~ s/^(\w)*[\s|>]/$tmp = $1;''/eo; +# if ($after =~ //) { +# # it encloses an anchor, so use anchor_mark + break +# $text = "$anchor_invisible_mark
\n$text"; +# } else { +# # take up to the anchor +# $text =~ s/^(.*)$1$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"); - "$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"); +# "$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 .= "
\n"; - $level++; - } - while ($count < $level) { - $index .= "
\n"; - $level--; - } - foreach $term (@current[$count .. $#current-1]) { - # need to "step in" a little - $index .= "
" . $term . "\n
\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 . ""; } - else { - $index .= "\n
$index{$key}" . $str . ""; } - @previous = @current; - } - while ($count < $level) { - $index .= "
\n"; - $level--; - } - s/$idx_mark/
$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 .= "
\n"; +# $level++; +# } +# while ($count < $level) { +# $index .= "
\n"; +# $level--; +# } +# foreach $term (@current[$count .. $#current-1]) { +# # need to "step in" a little +# $index .= "
" . $term . "\n
\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 . ""; } +# else { +# $index .= "\n
$index{$key}" . $str . ""; } +# @previous = @current; +# } +# while ($count < $level) { +# $index .= "
\n"; +# $level--; +# } +# s/$idx_mark/
$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 - $_ -} +# sub clean_key { +# local ($_) = @_; +# tr/A-Z/a-z/; +# s/\s//; +# s/^<[a-z][-._a-z0-9]*>//; # Remove leading +# $_; +# } $idx_module_mark = ''; @@ -235,68 +210,88 @@ sub add_module_idx { } -sub remove_general_markers { - s/$lof_mark/
    $figure_captions<\/UL>/o; - s/$lot_mark/
      $table_captions<\/UL>/o; - &replace_citations if /$bbl_mark/; - &add_toc if (/$toc_mark/); - &add_idx if (/$idx_mark/); - &add_module_idx if (/$idx_module_mark/); - &replace_cross_references if /$cross_ref_mark/; - &replace_external_references if /$external_ref_mark/; - &replace_cite_references if /$cite_mark/; - if (defined &replace_user_references) { - &replace_user_references if /$user_ref_mark/; - } -} +# sub remove_general_markers { +# s/$lof_mark/
        $figure_captions<\/UL>/o; +# s/$lot_mark/
          $table_captions<\/UL>/o; +# &replace_citations if /$bbl_mark/; +# &add_toc if (/$toc_mark/); +# &add_idx if (/$idx_mark/); +# &add_module_idx if (/$idx_module_mark/); +# &replace_cross_references if /$cross_ref_mark/; +# &replace_external_references if /$external_ref_mark/; +# &replace_cite_references if /$cite_mark/; +# if (defined &replace_user_references) { +# &replace_user_references if /$user_ref_mark/; +# } +# } # In addition to the standard stuff, add label to allow named node files. sub do_cmd_tableofcontents { local($_) = @_; - $tocfile = $CURRENT_FILE; $TITLE = $toc_title; + $tocfile = $CURRENT_FILE; + local($closures,$reopens) = &preserve_open_tags(); &anchor_label("contents",$CURRENT_FILE,$_); # this is added - join('', '

          ', &make_section_heading($toc_title, "H2"), $toc_mark, $_); + join('', "
          \n", $closures + , &make_section_heading($toc_title, "H2"), $toc_mark + , $reopens, $_); } - # In addition to the standard stuff, add label to allow named node files. sub do_cmd_listoffigures { local($_) = @_; $TITLE = $lof_title; $loffile = $CURRENT_FILE; - &anchor_label("figures",$CURRENT_FILE,$_); # this is added - join('', '

          ' , &make_section_heading($lof_title, "H2"), $lof_mark, $_); -} - + local($closures,$reopens) = &preserve_open_tags(); + &anchor_label("lof",$CURRENT_FILE,$_); # this is added + join('', "
          \n", $closures + , &make_section_heading($lof_title, "H2"), $lof_mark + , $reopens, $_); +} # In addition to the standard stuff, add label to allow named node files. sub do_cmd_listoftables { local($_) = @_; $TITLE = $lot_title; $lotfile = $CURRENT_FILE; - &anchor_label("tables",$CURRENT_FILE,$_); # this is added - join('', '

          ' , &make_section_heading($lot_title, "H2"), $lot_mark, $_); + local($closures,$reopens) = &preserve_open_tags(); + &anchor_label("lot",$CURRENT_FILE,$_); # this is added + join('', "
          \n", $closures + , &make_section_heading($lot_title, "H2"), $lot_mark + , $reopens, $_); } - # In addition to the standard stuff, add label to allow named node files. sub do_cmd_textohtmlinfopage { local($_) = @_; - if ($INFO) { + if ($INFO) { # &anchor_label("about",$CURRENT_FILE,$_); # this is added - } + } # ( ($INFO == 1) - ? join('', "$t_title

          \nThis document was generated using the LaTeX2HTML translator Version $TEX2HTMLVERSION Copyright © 1993, 1994, 1995, 1996, Nikos Drakos, Computer Based Learning Unit, University of Leeds.

          The command line arguments were:
          -latex2html $argv.

          The translation was initiated by $address_data[0] on $address_data[1]", $_) - : join('',$INFO,$_)) + ? join('', $close_all + , "$t_title

          \nThis document was generated using the\n" + , "LaTeX2HTML" + , " translator Version $TEX2HTMLVERSION\n" + , "

          Copyright © 1993, 1994, 1995, 1996, 1997,\n" + , "Nikos Drakos, \n" + , "Computer Based Learning Unit, University of Leeds.\n" + , "

          The command line arguments were:
          \n " + , "latex2html $argv.\n" + , "

          The translation was initiated by $address_data[0] on $address_data[1]" + , $open_all, $_) + : join('', $close_all, $INFO,"\n", $open_all, $_)) } -# $idx_mark will be replaced with the real index at the end. -# In addition to the standard stuff, add label to allow named node files. +# $idx_mark will be replaced with the real index at the end sub do_cmd_textohtmlindex { local($_) = @_; $TITLE = $idx_title; $idxfile = $CURRENT_FILE; + if (%index_labels) { &make_index_labels(); } + if (($SHORT_INDEX) && (%index_segment)) { &make_preindex(); } + else { $preindex = ''; } + 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 - join('','

          ' , &make_section_heading($idx_title, "H2"), $idx_mark, $_); + join('',"
          \n" , $pre, $_); } # $idx_module_mark will be replaced with the real index at the end @@ -324,17 +319,24 @@ sub do_cmd_textohtmlmoduleindex { # it. sub add_bbl_and_idx_dummy_commands { - local($id); + local($id) = $global{'max_id'}; + + $section_commands{'textohtmlmoduleindex'} = 2; + s/([\\]begin\s*$O\d+$C\s*thebibliography)/$bbl_cnt++; $1/eg; -#print STDERR "\nthebibliography: $bbl_cnt\n"; - #if ($bbl_cnt == 1) { - s/([\\]begin\s*$O\d+$C\s*thebibliography)/do { $id = ++$global{'max_id'}; "\\bibliography$O$id$C$O$id$C $1"}/geo; + s/([\\]begin\s*$O\d+$C\s*thebibliography)/$id++; "\\bibliography$O$id$C$O$id$C $1"/geo + #if ($bbl_cnt == 1) + ; #} - local(@parts) = split(/\\begin\s*$O\d+$C\s*theindex/); - if (scalar(@parts) == 3) { - print "\n&add_bbl_and_idx_dummy_commands ==> adding module index"; - s/([\\]begin\s*$O\d+$C\s*theindex)/\\textohtmlmoduleindex $1/o; - } + #----------------------------------------------------------------------# + # (FLD) This was added # + local(@parts) = split(/\\begin\s*$O\d+$C\s*theindex/); # + if (scalar(@parts) == 3) { # + print "\n&add_bbl_and_idx_dummy_commands ==> adding module index"; # + s/([\\]begin\s*$O\d+$C\s*theindex)/\\textohtmlmoduleindex $1/o; # + } # + #----------------------------------------------------------------------# + $global{'max_id'} = $id; s/([\\]begin\s*$O\d+$C\s*theindex)/\\textohtmlindex $1/o; s/[\\]printindex/\\textohtmlindex /o; &lib_add_bbl_and_idx_dummy_commands() if defined(&lib_add_bbl_and_idx_dummy_commands); @@ -344,22 +346,54 @@ sub add_bbl_and_idx_dummy_commands { # etc. must appear in the contents table at the same level as the outermost # sectioning command. This subroutine finds what is the outermost level and # sets the above to the same level; -sub set_depth_levels { - $section_headings['textohtmlmoduleindex'] = 'h1'; - # Sets $outermost_level - local($level); - 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;}); - $MAX_SPLIT_DEPTH = $MAX_SPLIT_DEPTH + $level; - %section_commands = ('tableofcontents', $level, 'listoffigures', $level, - 'listoftables', $level, 'bibliography', $level, - 'textohtmlindex', $level, - 'textohtmlmoduleindex', $level, - %section_commands); + +%section_commands = ('textohtmlmoduleindex', 2, %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 +# patch to LaTeX2HTML is released and tested. +# +sub protect_useritems { + local(*_) = @_; + local($preitems, $thisitem); + while (/\\item\s*\[/) { + $preitems .= $`; $_ = $'; + $thisitem = $&.'<<'.++$global{'max_id'}.'>>'; + s/^(((($O|$OP)\d+($C|$CP)).*\3|<[^<>]*>|[^\]<]+)*)\]/$thisitem.=$1;''/e; + $preitems .= $thisitem.'<<'.$global{'max_id'}.'>>]'; s/^]//; + } + $_ = $preitems . $_; } - + 1; # This must be the last line