[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/\&/\&/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/<</\<\&\#60;/g;
+ $text =~ s/>>/\>\&\#62;/g;
+ # Just normal re-writes...
+ $text =~ s/</\</g;
+ $text =~ s/>/\>/g;
+ # These last isn't needed for the HTML, but is needed to get
+ # past LaTeX2HTML processing TeX macros. We use \ instead
+ # of / 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