[Python-checkins] CVS: python/dist/src/Doc/perl python.perl,1.101,1.102

Fred L. Drake fdrake@users.sourceforge.net
Fri, 15 Jun 2001 14:32:00 -0700


Update of /cvsroot/python/python/dist/src/Doc/perl
In directory usw-pr-cvs1:/tmp/cvs-serv5388/perl

Modified Files:
	python.perl 
Log Message:

Implement the \verbatiminput LaTeX macro; this contains more magic than
it should, but only enough that LaTeX2HTML doesn't bite us.


Index: python.perl
===================================================================
RCS file: /cvsroot/python/python/dist/src/Doc/perl/python.perl,v
retrieving revision 1.101
retrieving revision 1.102
diff -C2 -r1.101 -r1.102
*** python.perl	2001/05/11 01:00:30	1.101
--- python.perl	2001/06/15 21:31:57	1.102
***************
*** 1661,1664 ****
--- 1661,1710 ----
  }
  
+ sub do_cmd_verbatiminput{
+     local($_) = @_;
+     my $fname = next_argument();
+     my $file;
+     my $found = 0;
+     my $texpath;
+     # Search TEXINPUTS for the input file, the way we're supposed to:
+     foreach $texpath (split /$envkey/, $TEXINPUTS) {
+         $file = "$texpath$dd$fname";
+         last if ($found = (-f $file));
+     }
+     my $text;
+     if ($found) {
+         open(MYFILE, "<$file") || die "\n$!\n";
+         read(MYFILE, $text, 1024*1024);
+         close(MYFILE);
+         #
+         # These rewrites convert the raw text to something that will
+         # be properly visible as HTML and also will pass through the
+         # vagaries of conversion through LaTeX2HTML.  The order in
+         # which the specific rewrites are performed is significant.
+         #
+         $text =~ s/\&/\&amp;/g;
+         # These need to happen before the normal < and > re-writes,
+         # since we need to avoid LaTeX2HTML's attempt to perform
+         # ligature processing without regard to context (since it
+         # doesn't have font information).
+         $text =~ s/--/-&\#45;/g;
+         $text =~ s/<</\&lt;\&\#60;/g;
+         $text =~ s/>>/\&gt;\&\#62;/g;
+         # Just normal re-writes...
+         $text =~ s/</\&lt;/g;
+         $text =~ s/>/\&gt;/g;
+         # These last isn't needed for the HTML, but is needed to get
+         # past LaTeX2HTML processing TeX macros.  We use &#92; instead
+         # of &sol; since many browsers don't support that.
+         $text =~ s/\\/\&\#92;/g;
+     }
+     else {
+         $text = '<b>Could not locate requested file <i>$fname</i>!</b>\n';
+     }
+     return ($alltt_start
+             . $text
+             . $alltt_end
+             . $_);
+ }
  
  1;				# This must be the last line