diff options
author | Fred Drake <fdrake@acm.org> | 1998-01-13 04:03:02 (GMT) |
---|---|---|
committer | Fred Drake <fdrake@acm.org> | 1998-01-13 04:03:02 (GMT) |
commit | 9b6f1d24f9e2f9876df4da6586232eb24f8c4c40 (patch) | |
tree | ed2f84f2605bc82ca2d965c6aa7eef317b31750e | |
parent | 1af9e79708128dd681e5be44da518eba2ade3905 (diff) | |
download | cpython-9b6f1d24f9e2f9876df4da6586232eb24f8c4c40.zip cpython-9b6f1d24f9e2f9876df4da6586232eb24f8c4c40.tar.gz cpython-9b6f1d24f9e2f9876df4da6586232eb24f8c4c40.tar.bz2 |
Override several functions from the stock latex2html to support the module
index. It works, it's ugly, and would probably have to be completely redone
if we changed latex2html versions. See the comments. ;-(
On the other hand, it works. ;-)
(Wait for myformat.perl checkin as well.)
-rw-r--r-- | Doc/.latex2html-init | 95 |
1 files changed, 95 insertions, 0 deletions
diff --git a/Doc/.latex2html-init b/Doc/.latex2html-init index 299a471..090cdfd 100644 --- a/Doc/.latex2html-init +++ b/Doc/.latex2html-init @@ -219,4 +219,99 @@ sub clean_key { } +$idx_module_mark = '<tex2html_idx_module_mark>'; +$idx_module_title = 'Module Index'; +$idxmodulefile = ''; + +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/; + } +} + + +# $idx_mark will be replaced with the real index at the end +sub do_cmd_textohtmlmoduleindex { + local($_) = @_; + $TITLE = $idx_module_title; + $idxmodulefile = $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); + 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; + #} + 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; + } + 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; +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); +} + 1; # This must be the last line |