diff options
-rw-r--r-- | Doc/.latex2html-init | 460 |
1 files changed, 247 insertions, 213 deletions
diff --git a/Doc/.latex2html-init b/Doc/.latex2html-init index e263d87..1737d56 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('','<img ',$iconsizes{$1},' align=bottom alt="',$1, - '" src="',$ICONSERVER,"/$icon",'" border=0>') - } : - $icon); -} +$CHILDLINE = "\n<p><hr>\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 = "<math>" . $after . "</math>"; - ++$commands_outside_math{$cmd}; - }; - } - elsif ($cmd_trans) { # One to one transform - $cmd_trans =~ m|</.*$|; - $after = $` . $after . $&; - push(@open_font_tags, $cmd) if ($cmd =~ /$fontchange_rx/o); - push(@open_size_tags, $cmd) if ($cmd =~ /$sizechange_rx/o);} - elsif ($mathentity) { - if ( $math_mode ) { - $after = "&$mathentity;" . $after; - } else { - $after = "<math>&$mathentity;</math>" . $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 ? "<b> Previous:</b> $PREVIOUS_TITLE\n" : undef) . # Line Break, horizontal rule (3-d dividing line) and new paragraph - "<br><hr><p></div>\n" + "<br><hr><p></div>" } sub bot_navigation_panel { # Start with a horizontal rule (3-d dividing line) - "\n<div class=navigation><hr>". + "<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" . @@ -135,88 +57,141 @@ sub bot_navigation_panel { # ... and the ``previous'' title ($PREVIOUS_TITLE ? "<b> Previous:</b> $PREVIOUS_TITLE\n" : undef) . - "</div>\n" + "</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 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 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 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> +# $_; +# } $idx_module_mark = '<tex2html_idx_module_mark>'; @@ -235,68 +210,88 @@ sub add_module_idx { } -sub remove_general_markers { - s/$lof_mark/<UL>$figure_captions<\/UL>/o; - s/$lot_mark/<UL>$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/<UL>$figure_captions<\/UL>/o; +# s/$lot_mark/<UL>$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('', '<P>', &make_section_heading($toc_title, "H2"), $toc_mark, $_); + join('', "<BR>\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('', '<P>' , &make_section_heading($lof_title, "H2"), $lof_mark, $_); -} - + local($closures,$reopens) = &preserve_open_tags(); + &anchor_label("lof",$CURRENT_FILE,$_); # this is added + join('', "<BR>\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('', '<P>' , &make_section_heading($lot_title, "H2"), $lot_mark, $_); + local($closures,$reopens) = &preserve_open_tags(); + &anchor_label("lot",$CURRENT_FILE,$_); # this is added + join('', "<BR>\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('', "<STRONG>$t_title</STRONG><P>\nThis document was generated using the <A HREF=\"$TEX2HTMLADDRESS\"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A> translator Version $TEX2HTMLVERSION Copyright © 1993, 1994, 1995, 1996, <A HREF=\"$AUTHORADDRESS\">Nikos Drakos</A>, Computer Based Learning Unit, University of Leeds. <P> The command line arguments were: <BR> -<STRONG>latex2html</STRONG> <tt>$argv</tt>. <P>The translation was initiated by $address_data[0] on $address_data[1]", $_) - : join('',$INFO,$_)) + ? join('', $close_all + , "<STRONG>$t_title</STRONG><P>\nThis document was generated using the\n" + , "<A HREF=\"$TEX2HTMLADDRESS\"><STRONG>LaTeX</STRONG>2<tt>HTML</tt></A>" + , " translator Version $TEX2HTMLVERSION\n" + , "<P>Copyright © 1993, 1994, 1995, 1996, 1997,\n" + , "<A HREF=\"$AUTHORADDRESS\">Nikos Drakos</A>, \n" + , "Computer Based Learning Unit, University of Leeds.\n" + , "<P>The command line arguments were: <BR>\n " + , "<STRONG>latex2html</STRONG> <tt>$argv</tt>.\n" + , "<P>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('','<P>' , &make_section_heading($idx_title, "H2"), $idx_mark, $_); + join('',"<BR>\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 |