#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


\n"; $VERBOSITY = 0; # Locate a file that's been "require"d. Assumes that the file name of interest # is unique within the set of loaded files, after directory names have been # stripped. Only the directory is returned. # sub find_my_file{ local($myfile,$key,$tmp,$mydir) = (@_[0], '', '', ''); foreach $key (keys %INC) { $tmp = "$key"; $tmp =~ s|^.*/||o; if ($tmp eq $myfile) { #print "\nfound $tmp: $key --> ", $INC{$key}, "\n"; $mydir = $INC{$key}; } } $mydir =~ s|/[^/]*$||; $mydir; } # A little painful, but lets us clean up the top level directory a little, # and not be tied to the current directory (as far as I can tell). # use Cwd; use File::Basename; ($myname, $mydir, $myext) = fileparse(__FILE__, '\..*'); chop $mydir; # remove trailing '/' $mydir = getcwd() . "$dd$mydir" unless $mydir =~ s|^/|/|; $LATEX2HTMLSTYLES = "$mydir$envkey$LATEX2HTMLSTYLES"; sub top_navigation_panel { # Now add a few buttons with a space between them "" } sub bot_navigation_panel { # Start with a horizontal rule (3-d dividing line) "" } # 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 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; # } # need to remove leading <...> # sub clean_key { # local ($_) = @_; # tr/A-Z/a-z/; # s/\s//; # s/^<[a-z][-._a-z0-9]*>//; # Remove leading # $_; # } $idx_module_mark = ''; $idx_module_title = 'Module Index'; sub add_module_idx { print "\nDoing the module index ..."; local($key, @keys, $index); $index = "

"; @keys = keys %Modules; @keys = sort keysort @keys; foreach $key (@keys) { $index .= "$Modules{$key}$key
\n"; } s/$idx_module_mark/$index

/o; } # 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($_) = @_; $TITLE = $toc_title; $tocfile = $CURRENT_FILE; local($closures,$reopens) = &preserve_open_tags(); &anchor_label("contents",$CURRENT_FILE,$_); # this is added 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; 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; 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) { # &anchor_label("about",$CURRENT_FILE,$_); # this is added } # ( ($INFO == 1) ? 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 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('',"
      \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('', '

      ' , &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