diff options
author | Fred Drake <fdrake@acm.org> | 1998-03-06 21:18:55 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 1998-03-06 21:18:55 (GMT) |
commit | bc7101dff008a5e901756114b9b66f2c592f98c3 (patch) | |
tree | a80b8a04ee84d5b0d0dfe410e488159cba67ef80 | |
parent | bc772f466ced4cf4a6cbd09b36ad9a81c8f1f422 (diff) | |
download | cpython-bc7101dff008a5e901756114b9b66f2c592f98c3.zip cpython-bc7101dff008a5e901756114b9b66f2c592f98c3.tar.gz cpython-bc7101dff008a5e901756114b9b66f2c592f98c3.tar.bz2 |
Relocated .latex2html-init to l2hinit.perl.
howto.perl is new; supports LaTeX2HTML for HOWTO documents.
-rw-r--r-- | Doc/perl/howto.perl | 11 | ||||
-rw-r--r-- | Doc/perl/l2hinit.perl | 406 |
2 files changed, 417 insertions, 0 deletions
diff --git a/Doc/perl/howto.perl b/Doc/perl/howto.perl new file mode 100644 index 0000000..ee8f3a4 --- /dev/null +++ b/Doc/perl/howto.perl @@ -0,0 +1,11 @@ +# -*- perl -*- +# +# This implements the Python howto class. All it really needs to do it +# load the "python" style. + +package main; + +&do_require_package("article"); +&do_require_package("python"); + +1; # sheesh.... diff --git a/Doc/perl/l2hinit.perl b/Doc/perl/l2hinit.perl new file mode 100644 index 0000000..4da0963 --- /dev/null +++ b/Doc/perl/l2hinit.perl @@ -0,0 +1,406 @@ +#LaTeX2HTML Version 96.1 : dot.latex2html-init -*- perl -*- +# + +$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; + +$ICONSERVER = '../icons'; + +$CHILDLINE = "\n<p><hr>\n"; +$VERBOSITY = 0; + +# a little painful, but lets us clean up the top level directory just a little +$mywd = `pwd`; +chop $mywd; +$LATEX2HTMLSTYLES = "$mywd${dd}perl$envkey$LATEX2HTMLSTYLES"; + +#print "\n\$LATEX2HTMLSTYLES = $LATEX2HTMLSTYLES\n\n"; + + +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) . + + # Line Break, horizontal rule (3-d dividing line) and new paragraph + "<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>" +} + + +# 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; +# } + +# need to remove leading <...> +# 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>'; +$idx_module_title = 'Module Index'; + +sub add_module_idx { + print "\nDoing the module index ..."; + local($key, @keys, $index); + $index = "<p>"; + @keys = keys %Modules; + @keys = sort keysort @keys; + foreach $key (@keys) { + $index .= "$Modules{$key}$key</a><br>\n"; + } + s/$idx_module_mark/$index<p>/o; +} + + +# 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($_) = @_; + $TITLE = $toc_title; + $tocfile = $CURRENT_FILE; + local($closures,$reopens) = &preserve_open_tags(); + &anchor_label("contents",$CURRENT_FILE,$_); # this is added + 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; + 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; + 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) { # + &anchor_label("about",$CURRENT_FILE,$_); # this is added + } # + ( ($INFO == 1) + ? 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 +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('',"<BR>\n" , $pre, $_); +} + +# $idx_module_mark will be replaced with the real index at the end +sub do_cmd_textohtmlmoduleindex { + local($_) = @_; + local($key) = q/modindex/; + $TITLE = $idx_module_title; + &anchor_label("modindex",$CURRENT_FILE,$_); + join('', '<p>' , &make_section_heading($idx_module_title, "h2"), + $idx_module_mark, $_); +} + +# The bibliography and the index should be treated as separate sections +# in their own HTML files. The \bibliography{} command acts as a sectioning command +# that has the desired effect. But when the bibliography is constructed +# manually using the thebibliography environment, or when using the +# theindex environment it is not possible to use the normal sectioning +# mechanism. This subroutine inserts a \bibliography{} or a dummy +# \textohtmlindex command just before the appropriate environments +# to force sectioning. + +# XXX This *assumes* that if there are two {theindex} environments, the +# first is the module index and the second is the standard index. This +# is sufficient for the current Python documentation, but that's about +# it. + +sub add_bbl_and_idx_dummy_commands { + local($id) = $global{'max_id'}; + + $section_commands{'textohtmlmoduleindex'} = 2; + + s/([\\]begin\s*$O\d+$C\s*thebibliography)/$bbl_cnt++; $1/eg; + s/([\\]begin\s*$O\d+$C\s*thebibliography)/$id++; "\\bibliography$O$id$C$O$id$C $1"/geo + #if ($bbl_cnt == 1) + ; + #} + #----------------------------------------------------------------------# + # (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); +} + +# The bibliographic references, the appendices, the lists of figures and tables +# 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; + +%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 |