[Python-checkins] CVS: python/dist/src/Doc/perl l2hinit.perl,1.42,1.43

Fred L. Drake python-dev@python.org
Mon, 31 Jul 2000 10:53:48 -0700


Update of /cvsroot/python/python/dist/src/Doc/perl
In directory slayer.i.sourceforge.net:/tmp/cvs-serv8122/perl

Modified Files:
	l2hinit.perl 
Log Message:

Many changes to work with newer versions of LaTeX2HTML.  This has been 
tested with version 99.2beta8.


Index: l2hinit.perl
===================================================================
RCS file: /cvsroot/python/python/dist/src/Doc/perl/l2hinit.perl,v
retrieving revision 1.42
retrieving revision 1.43
diff -C2 -r1.42 -r1.43
*** l2hinit.perl	2000/04/03 04:41:18	1.42
--- l2hinit.perl	2000/07/31 17:53:45	1.43
***************
*** 1,21 ****
! #LaTeX2HTML Version 96.1 : dot.latex2html-init		-*- perl -*-
! #
! #  Significantly revised by Fred L. Drake, Jr. <fdrake@acm.org> for use
! #  with the Python documentation.
! #
! #  New name to avoid distributing "dot" files with the Python documentation.
! #
! 
! package Override;
! 
! use Cwd qw(getcwd);
! 
  
  package main;
  
  $HTML_VERSION = 4.0;
  
  $MAX_LINK_DEPTH = 2;
- $MAX_SPLIT_DEPTH = 5;      # split at subsections but not sub-subsections
  $ADDRESS = '';
  
--- 1,11 ----
! # LaTeX2HTML support base for use with Python documentation.
  
  package main;
  
+ use L2hos;
+ 
  $HTML_VERSION = 4.0;
  
  $MAX_LINK_DEPTH = 2;
  $ADDRESS = '';
  
***************
*** 35,41 ****
  $AUTO_NAVIGATION = 0;
  
- $SUPPRESS_CONTENTS = 0;
- $SUPPRESS_INDEXES = 0;
- 
  # these exactly match the python.org colors
  $BODYTEXT = ('bgcolor="#ffffff" text="#000000"'
--- 25,28 ----
***************
*** 50,61 ****
  
  # 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";
  push (@INC, $mydir);
--- 37,54 ----
  
  # 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).  Testing
! # an existing definition of $mydir is needed since it cannot be computed when
! # run under mkhowto with recent versions of LaTeX2HTML, since this file is
! # not read directly by LaTeX2HTML any more.  mkhowto is required to prepend
! # the required definition at the top of the actual input file.
! #
! if (!defined $mydir) {
!     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";
  push (@INC, $mydir);
***************
*** 85,89 ****
  
  
! sub custom_driver_hook{
      #
      # This adds the directory of the main input file to $TEXINPUTS; it
--- 78,82 ----
  
  
! sub custom_driver_hook {
      #
      # This adds the directory of the main input file to $TEXINPUTS; it
***************
*** 92,153 ****
      #
      my $file = @_[0];
!     my($jobname,$dir,$ext) = fileparse($file, '\..*');
!     $dir = make_directory_absolute($dir);
      $dir =~ s/$dd$//;
      $TEXINPUTS = "$dir$envkey$mytexinputs";
!     print "\nadding $dir to \$TEXINPUTS\n";
  }
  
- # Defining this allows us to remove all table of contents and index
- # processing using an init file; this is required to get rid of the
- # Table of Contents or we'd get a blank page.  Based on a suggestion
- # from Ross Moore <ross@ics.mq.edu.au>.
- #
- # Seems to require a more recent version of LaTeX2HTML than I've
- # been using, though.
- #
- sub preprocess{
-     if ($SUPPRESS_CONTENTS) {
- 	s/\\(tableofcontents|listof(figures|tables))/\2/g;
-     }
-     if ($SUPPRESS_INDEXES) {
- 	s/\\(print|make)index//g;
-     }
- }
- 
  
! sub set_icon_size{
!     my($name, $w, $h) = @_;
!     $iconsizes{$name} = "width=$w height=$h";
! }
! 
! foreach $name (split(/ /, 'up next previous contents index modules blank')) {
!     set_icon_size($name, 32, 32);
! }
! sub adjust_icon_information{
!     # The '_motif' is really annoying, and makes the HTML larger with no value
!     # added, so strip it off:
!     foreach $name (keys %icons) {
!         my $icon = $icons{$name};
!         # Strip off the wasteful '_motif':
!         $icon =~ s/_motif//;
!         # Change the greyed-out icons to be blank:
!         $icon =~ s/[a-z]*_gr[.]/blank./;
!         # make sure we're using the latest $IMAGE_TYPE
!         $icon =~ s/[.](gif|png)$/.$IMAGE_TYPE/;
!         $icons{$name} = $icon;
!     }
!     $icons{'blank'} = 'blank.' . $IMAGE_TYPE;
!     
!     $CUSTOM_BUTTONS = '';
!     $BLANK_ICON = "\n<td>" . img_tag('blank.' . $IMAGE_TYPE) . "</td>";
!     $BLANK_ICON =~ s/alt="blank"/alt=""/;
!     $NAV_BGCOLOR = " bgcolor=\"#99CCFF\"";
! }
! 
! adjust_icon_information();
  
! 
! sub make_nav_sectref{
      my($label,$title) = @_;
      if ($title) {
--- 85,100 ----
      #
      my $file = @_[0];
!     my($jobname, $dir, $ext) = fileparse($file, '\..*');
!     $dir = L2hos->Make_directory_absolute($dir);
      $dir =~ s/$dd$//;
      $TEXINPUTS = "$dir$envkey$mytexinputs";
!     print "\nAdding $dir to \$TEXINPUTS\n";
  }
  
  
! $CUSTOM_BUTTONS = '';
! $NAV_BGCOLOR = " bgcolor=\"#99CCFF\"";
  
! sub make_nav_sectref {
      my($label,$title) = @_;
      if ($title) {
***************
*** 157,198 ****
      return '';
  }
  
! sub make_nav_panel{
      my $s;
!     $s = "<table align='center' width='100%' cellpadding='0' cellspacing='2'>"
!          . "\n<tr>"
! 	 . "\n<td>$NEXT</td>"
! 	 . "\n<td>$UP</td>"
! 	 . "\n<td>$PREVIOUS</td>";
!     if ($SUPPRESS_CONTENTS && $SUPPRESS_INDEXES) {
! 	$s .= ("\n<td align=right$NAV_BGCOLOR width=\"100%\">"
! 	       . "\n <b class=title>$t_title\&nbsp;\&nbsp;\&nbsp;</b></td>");
!     }
!     else {
! 	$s .= ("\n<td align=center$NAV_BGCOLOR width=\"100%\">"
! 	       . "\n <b class=title>$t_title</b></td>"
! 	       . ($CONTENTS ? "\n<td>$CONTENTS</td>" : $BLANK_ICON)
! 	       . "\n<td>$CUSTOM_BUTTONS</td>" # module index
! 	       . ($INDEX ? "\n<td>$INDEX</td>" : $BLANK_ICON));
!     }
!     $s .= ("\n</tr></table>"
! 	   . make_nav_sectref("Next", $NEXT_TITLE)
! 	   . make_nav_sectref("Up", $UP_TITLE)
! 	   . make_nav_sectref("Previous", $PREVIOUS_TITLE));
!     # remove these; they are unnecessary and cause error from validation
!     $s =~ s/ NAME="tex2html\d+"\n//g;
      return $s;
  }
  
  sub top_navigation_panel {
!     "<div class='navigation'>\n"
!       . make_nav_panel()
!       . '<br><hr></div>';
  }
  
  sub bot_navigation_panel {
!     "<p>\n<div class='navigation'><hr>"
!       . make_nav_panel()
!       . '</div>';
  }
  
--- 104,181 ----
      return '';
  }
+ 
+ sub make_my_icon {
+     my($name, $text) = @_;
+     my $iconserver = ($ICONSERVER eq '.') ? '' : "$ICONSERVER/";
+     return "<img src=\"$iconserver$name.$IMAGE_TYPE\" border=\"0\""
+            . " height=\"32\"\n  alt=\"$text\" width=\"32\">";
+ }
+ 
+ $BLANK_ICON = make_my_icon("blank", "");
+ 
+ @my_icons = ();
+ $my_icons{'next_page_inactive'} = $BLANK_ICON;
+ $my_icons{'previous_page_inactive'} = $BLANK_ICON;
+ $my_icons{'up_page_inactive'} = $BLANK_ICON;
+ $x = make_my_icon("next", "Next Page");
+ $my_icons{'next_page'} = $x;
+ $my_icons{'next'} = $x;
+ $x = make_my_icon("previous", "Previous Page");
+ $my_icons{'previous_page'} = $x;
+ $my_icons{'previous'} = $x;
+ $my_icons{'up'} = make_my_icon("up", "Up One Level");
+ $my_icons{'contents'} = make_my_icon("contents", "Contents");
+ $my_icons{'index'} = make_my_icon("index", "Index");
+ $my_icons{'modules'} = make_my_icon("modules", "Module Index");
+ 
+ 
+ sub use_my_icon {
+     my $s = @_[0];
+     $s =~ s/\<tex2html_([a-z_]+)_visible_mark\>/$my_icons{$1}/;
+     return $s;
+ }
  
! sub make_nav_panel {
      my $s;
!     $NEXT = use_my_icon("$NEXT");
!     $UP = use_my_icon("$UP");
!     $PREVIOUS = use_my_icon("$PREVIOUS");
!     $CONTENTS = use_my_icon("$CONTENTS");
!     $INDEX = $INDEX ? use_my_icon("$INDEX") : $BLANK_ICON;
!     if (!$CUSTOM_BUTTONS) {
!         $CUSTOM_BUTTONS = $BLANK_ICON;
!     }
!     $s = ('<table align="center" width="100%" cellpadding="0" cellspacing="2">'
!           . "\n<tr>"
!           # left-hand side
!           . "\n<td>$NEXT</td>"
!           . "\n<td>$UP</td>"
!           . "\n<td>$PREVIOUS</td>"
!           # title box
!           . "\n<td align=\"center\"$NAV_BGCOLOR width=\"100%\">"
!           . "\n <b class=\"title\">$t_title</b></td>"
!           # right-hand side
!           . "\n<td>$CONTENTS</td>"
!           . "\n<td>$CUSTOM_BUTTONS</td>" # module index
!           . "\n<td>$INDEX</td>"
!           . "\n</tr></table>\n"
!           # textual navigation
!           . make_nav_sectref("Next", $NEXT_TITLE)
!           . make_nav_sectref("Up", $UP_TITLE)
!           . make_nav_sectref("Previous", $PREVIOUS_TITLE));
!     # remove these; they are unnecessary and cause errors from validation
!     $s =~ s/ NAME="tex2html\d+"\n */ /g;
      return $s;
  }
  
+ 
  sub top_navigation_panel {
!     return make_nav_panel()
!            . '<br><hr>';
  }
  
  sub bot_navigation_panel {
!     return "<p><hr>"
!            . make_nav_panel();
  }
  
***************
*** 202,205 ****
--- 185,189 ----
      my($dummy, $file, $title) = split($delim,
  				      $section_info{join(' ',@link)});
+     $icon =~ s/\<tex2html_([_a-z]+)_visible_mark\>/$my_icons{$1}/;
      if ($title && ($file ne $current_file)) {
          $title = purify($title);
***************
*** 207,280 ****
  	return (make_href($file, $icon), make_href($file, "$title"))
  	}
!     elsif ($icon eq $up_visible_mark && $EXTERNAL_UP_LINK) {
   	return (make_href($EXTERNAL_UP_LINK, $icon),
  		make_href($EXTERNAL_UP_LINK, "$EXTERNAL_UP_TITLE"))
  	}
!     elsif (($icon eq $previous_visible_mark
! 	    || $icon eq $previous_page_visible_mark)
  	   && $EXTERNAL_PREV_LINK && $EXTERNAL_PREV_TITLE) {
  	return (make_href($EXTERNAL_PREV_LINK, $icon),
  		make_href($EXTERNAL_PREV_LINK, "$EXTERNAL_PREV_TITLE"))
  	}
!     elsif (($icon eq $next_visible_mark
! 	    ||  $icon eq $next_page_visible_mark)
  	   && $EXTERNAL_DOWN_LINK && $EXTERNAL_DOWN_TITLE) {
  	return (make_href($EXTERNAL_DOWN_LINK, $icon),
  		make_href($EXTERNAL_DOWN_LINK, "$EXTERNAL_DOWN_TITLE"))
  	}
!     (&inactive_img($icon), "");
  }
  
  sub add_special_link {
      my($icon, $file, $current_file) = @_;
!     (($file && ($file ne $current_file)) ? make_href($file, $icon) : undef)
  }
  
! sub img_tag {
!     local($icon) = @_;
!     my $alt;
!     my $align = " align=bottom ";
! 
!     # having this list hardcoded here is really bogus....
!     $alt = join('|', 'up', 'next_group', 'previous_group'
! 		, 'next', 'previous', 'change_begin_right', 'change_begin'
! 		, 'change_end_right', 'change_end', 'change_delete_right'
! 		, 'change_delete', 'contents', 'index', 'modules', 'blank');
! 
!     if ($icon =~ /(gif|png)$/) {
! 	$used_icons{$icon} = 1;
! 	if ($icon =~ /change_(begin|end|delete)_right/) { $align = ' ' };
! 	my $nav_border = "$NAV_BORDER";
! 	if ($icon =~ /($alt)/) {
! 	    $alt = $1;
! 	    $alt = ""
! 	      if ($alt eq "blank");
! 	}
! 	else {
! 	    $nav_border = '1';
! 	    $alt = '[*]';
! 	};
! 	if ($LOCAL_ICONS) {
! 	    return join('', '<img ', $iconsizes{$1}, $align
! 			,'border=', $nav_border, ' alt="', $alt
! 			,'" src="', $icon, '">' );
! 	}
! 	my $s = join('', '<img ', $iconsizes{$1}, $align,
!                      'border=', $nav_border, ' alt="', $alt, "\"\n",
!                      ' src="', $ICONSERVER, "/$icon", '">' );
!         # if $ICONSERVER starts with "./", remove "./":
!         $s =~ s|src="(.\/)+|src="|;
!         return $s;
!     }
!     else {
! 	return $icon;
!     }
! }
! 
  
  sub do_cmd_arabic {
      # get rid of that nasty <SPAN CLASS="arabic">...</SPAN>
!     local($ctr, $val, $id, $_) = &read_counter_value(@_[0]);
!     return ($val ? &farabic($val) : "0") . $_;
  }
  
--- 191,231 ----
  	return (make_href($file, $icon), make_href($file, "$title"))
  	}
!     elsif ($icon eq $my_icons{"up"} && $EXTERNAL_UP_LINK) {
   	return (make_href($EXTERNAL_UP_LINK, $icon),
  		make_href($EXTERNAL_UP_LINK, "$EXTERNAL_UP_TITLE"))
  	}
!     elsif ($icon eq $my_icons{"previous"}
  	   && $EXTERNAL_PREV_LINK && $EXTERNAL_PREV_TITLE) {
  	return (make_href($EXTERNAL_PREV_LINK, $icon),
  		make_href($EXTERNAL_PREV_LINK, "$EXTERNAL_PREV_TITLE"))
  	}
!     elsif ($icon eq $my_icons{"next"}
  	   && $EXTERNAL_DOWN_LINK && $EXTERNAL_DOWN_TITLE) {
  	return (make_href($EXTERNAL_DOWN_LINK, $icon),
  		make_href($EXTERNAL_DOWN_LINK, "$EXTERNAL_DOWN_TITLE"))
  	}
!     return (&inactive_img($icon), "");
  }
  
  sub add_special_link {
      my($icon, $file, $current_file) = @_;
!     $icon =~ s/\<tex2html_([_a-z]+)_visible_mark\>/$my_icons{$1}/;
!     return (($file && ($file ne $current_file))
!             ? make_href($file, $icon)
!             : undef)
  }
  
! # The img_tag() function seems only to be called with the parameter
! # 'anchor_invisible_mark', which we want to turn into ''.  Since
! # replace_icon_marks() is the only interesting caller, and all it really
! # does is call img_tag(), we can just define the hook alternative to be
! # a no-op instead.
! #
! sub replace_icons_hook {}
  
  sub do_cmd_arabic {
      # get rid of that nasty <SPAN CLASS="arabic">...</SPAN>
!     my($ctr, $val, $id, $text) = &read_counter_value(@_[0]);
!     return ($val ? farabic($val) : "0") . $text;
  }
  
***************
*** 286,290 ****
  }
  
! sub insert_index{
      my($mark,$datafile,$columns,$letters,$prefix) = @_;
      my $prog = "$myrootdir/tools/buildindex.py";
--- 237,241 ----
  }
  
! sub insert_index {
      my($mark,$datafile,$columns,$letters,$prefix) = @_;
      my $prog = "$myrootdir/tools/buildindex.py";
***************
*** 299,303 ****
  }
  
! sub add_idx{
      print "\nBuilding HTML for the index ...";
      close(IDXFILE);
--- 250,254 ----
  }
  
! sub add_idx {
      print "\nBuilding HTML for the index ...";
      close(IDXFILE);
***************
*** 309,313 ****
  $idx_module_title = 'Module Index';
  
! sub add_module_idx{
      print "\nBuilding HTML for the module index ...";
      my $key;
--- 260,264 ----
  $idx_module_title = 'Module Index';
  
! sub add_module_idx {
      print "\nBuilding HTML for the module index ...";
      my $key;
***************
*** 357,361 ****
  
  # replace both indexes as needed:
! sub add_idx_hook{
      add_idx() if (/$idx_mark/);
      add_module_idx() if (/$idx_module_mark/);
--- 308,312 ----
  
  # replace both indexes as needed:
! sub add_idx_hook {
      add_idx() if (/$idx_mark/);
      add_module_idx() if (/$idx_module_mark/);
***************
*** 368,374 ****
  sub do_cmd_tableofcontents {
      local($_) = @_;
- #     if ($SUPPRESS_CONTENTS) {
- # 	return $_;
- #     }
      $TITLE = $toc_title;
      $tocfile = $CURRENT_FILE;
--- 319,322 ----
***************
*** 466,494 ****
      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;
!     #----------------------------------------------------------------------
!     # (FLD) This was added
!     if ($SUPPRESS_INDEXES) {
! 	$CUSTOM_BUTTONS .= img_tag('blank.' . $IMAGE_TYPE);
      }
      else {
! 	my(@parts) = split(/\\begin\s*$O\d+$C\s*theindex/);
! 	if (scalar(@parts) == 3) {
! 	    # Be careful to re-write the string in place, since $_ is *not*
! 	    # returned explicity;  *** nasty side-effect dependency! ***
! 	    print "\nadd_bbl_and_idx_dummy_commands ==> adding module index";
! 	    my $rx = "([\\\\]begin\\s*$O\\d+$C\\s*theindex[\\s\\S]*)"
! 	      . "([\\\\]begin\\s*$O\\d+$C\\s*theindex)";
! 	    s/$rx/\\textohtmlmoduleindex \1 \\textohtmlindex \2/o;
! 	    # Add a button to the navigation areas:
! 	    $CUSTOM_BUTTONS .= ("<a\n href=\"modindex.html\">"
! 				. img_tag('modules.'.$IMAGE_TYPE) . "</a>");
! 	}
! 	else {
! 	    $CUSTOM_BUTTONS .= img_tag('blank.' . $IMAGE_TYPE);
! 	    $global{'max_id'} = $id; # not sure why....
! 	    s/([\\]begin\s*$O\d+$C\s*theindex)/\\textohtmlindex $1/o;
  	    s/[\\]printindex/\\textohtmlindex /o;
  	}
-     }
      #----------------------------------------------------------------------
      lib_add_bbl_and_idx_dummy_commands()
--- 414,434 ----
      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;
!     my(@parts) = split(/\\begin\s*$O\d+$C\s*theindex/);
!     if (scalar(@parts) == 3) {
!         # Be careful to re-write the string in place, since $_ is *not*
!         # returned explicity;  *** nasty side-effect dependency! ***
!         print "\nadd_bbl_and_idx_dummy_commands ==> adding module index";
!         my $rx = "([\\\\]begin\\s*$O\\d+$C\\s*theindex[\\s\\S]*)"
!           . "([\\\\]begin\\s*$O\\d+$C\\s*theindex)";
!         s/$rx/\\textohtmlmoduleindex \1 \\textohtmlindex \2/o;
!         # Add a button to the navigation areas:
!         $CUSTOM_BUTTONS .= $my_icons{'modules'};
      }
      else {
!         $CUSTOM_BUTTONS .= $BLANK_ICON;
!         $global{'max_id'} = $id; # not sure why....
!         s/([\\]begin\s*$O\d+$C\s*theindex)/\\textohtmlindex $1/o;
  	    s/[\\]printindex/\\textohtmlindex /o;
  	}
      #----------------------------------------------------------------------
      lib_add_bbl_and_idx_dummy_commands()
***************
*** 532,553 ****
  
  
- # Fix from Ross Moore for ']' in \item[...]; this can be removed once the next
- # patch to LaTeX2HTML is released and tested ... if the patch gets included.
- # Be very careful to keep this around, just in case things break again!
- #
- 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 . $_;
- }
- 
  # This changes the markup used for {verbatim} environments, and is the
  # best way I've found that ensures the <dl> goes on the outside of the
--- 472,475 ----
***************
*** 567,578 ****
  # page.
  sub make_head_and_body {
!     local($title,$body) = @_;
!     local($DTDcomment) = '';
!     local($version,$isolanguage) = ($HTML_VERSION, 'EN');
!     local(%isolanguages) = (  'english',  'EN'   , 'USenglish', 'EN.US'
! 			    , 'original', 'EN'   , 'german'   , 'DE'
! 			    , 'austrian', 'DE.AT', 'french'   , 'FR'
! 			    , 'spanish',  'ES'
! 			    , %isolanguages );
      $isolanguage = $isolanguages{$default_language};
      $isolanguage = 'EN' unless $isolanguage;
--- 489,499 ----
  # page.
  sub make_head_and_body {
!     my($title, $body) = @_;
!     my $DTDcomment = '';
!     my($version, $isolanguage) = ($HTML_VERSION, 'EN');
!     my %isolanguages = (  'english',  'EN'   , 'USenglish', 'EN.US'
!                         , 'original', 'EN'   , 'german'   , 'DE'
!                         , 'austrian', 'DE.AT', 'french'   , 'FR'
!                         , 'spanish',  'ES');
      $isolanguage = $isolanguages{$default_language};
      $isolanguage = 'EN' unless $isolanguage;