this is a rather dull patch to do with $HTML_VERSION (more interesting
patches will follow).

On Mon, Mar 10, 2003 at 07:42:54PM +1100, Ross Moore wrote:
[about why no-one is using HTML versions 1, 2.1, 2.2 or 3.1 now]

ok, and it's not important how obsolete HTML versions are handled.  my
point was specifically that the the html*.pl files for 2.1, 2.2 and 3.1
are never (in the Perl sense) required, because those numbers aren't
matched by this regex (probably deliberately) -

|     if ($HTML_VERSION =~ /(2.0|3.0|3.2|4.0|4.1)/) {
|       # Require the version specific file 
|       ...
|     } else {
|       print "\n You specified an invalid version: $HTML_VERSION\n"
|           ...
|     # Require all necessary version specific files
|       foreach ( sort <$LATEX2HTMLVERSIONS${dd}html[1-9].[0-9].pl> ) {
                                                         ^
- but nor by this fileglob, because it has a . where it needs a _ and so
doesn't match any files.  this patch just tries to fix the fileglob.

|           ...
|       };
|     }

> >    _if_ i have all that right, then the best course of action would be
> >    to stop the code rounding 4.01 to 4.0, and delete html4_1.pl.
> 
> For compatibility with any existing documents or scripts calling
> LaTeX2HTML, it would be best to catch  4_1 and make it  4.01
> where needed, as well as stopping the rounding.

that's what this patch does.  thanks for the point about catching 4.1 -
i hadn't thought of that.  i've also given 4.01 a "Transitional" DOCTYPE
(like 4.0 already has).  and added 4.01 to the POD's list of available
versions.

i moved the definitions of $TeXname et al., which depend on
$HTML_VERSION, to *after* $HTML_VERSION has been parsed; because they
could be defined incorrectly e.g. if $HTML_VERSION were "math,3.0".

finally, i turned some string comparisons with $HTML_VERSION into
numeric comparisons, like most of them already were.

applies from inside the top directory of latex2html with `patch -p1'.
also, please `rm versions/html4_1.pl' (i left that out of the patch to
keep it fairly short).

i hope you find this useful - or can tell me where i've got it wrong.

diff -u -N -r latex2html-rel-2002-2-1/Changes latex2html-2002-2-1-hv/Changes
--- latex2html-rel-2002-2-1/Changes     Sat Apr 10 06:15:08 1999
+++ latex2html-2002-2-1-hv/Changes      Wed Mar 12 06:12:28 2003
@@ -84,6 +84,7 @@
 #  bv = Boris Veytsman <[EMAIL PROTECTED]>
 #  kr = Keith Refson <[EMAIL PROTECTED]>
 #  uw = Uli Wortmann <[EMAIL PROTECTED]>
+#  pl = Phil Lanch <[EMAIL PROTECTED]>
 #
 #
 #------------------- Test Suite Manifest ----------------------------------
diff -u -N -r latex2html-rel-2002-2-1/latex2html.pin 
latex2html-2002-2-1-hv/latex2html.pin
--- latex2html-rel-2002-2-1/latex2html.pin      Fri Aug 23 06:15:01 2002
+++ latex2html-2002-2-1-hv/latex2html.pin       Wed Mar 12 10:04:36 2003
@@ -3203,7 +3203,7 @@
 sub special_env {
     # Modifies $contents in its caller
     local($next)='';
-    local ($allow) = $HTML_VERSION ge '3.0' ?
+    local ($allow) = $HTML_VERSION >= 3.0 ?
         "[^#\$%&~\\\\{}]|\\limits" : "[^^#\$%&~_\\\\{}]";
     #JKR: Use italics instead of bold #HWS: Generalize to include more symbols.
 #    $contents =~ s/^\$(\s*($html_specials_inv_rx|$allow)*\s*)\$(.)?/
@@ -7127,7 +7127,7 @@
        , "  Jens Lippmann, Marek Rouchal, Martin Wilck and others"
            . " -->\n<HTML>\n<HEAD>\n<TITLE>".$title."</TITLE>"
        , &meta_information($title)
-       ,  ($CHARSET && $HTML_VERSION ge "2.1" ? 
+       ,  ($CHARSET && $HTML_VERSION >= 2.1 ? 
              "<META HTTP-EQUIV=\"Content-Type\" CONTENT=\"text/html; 
charset=$this_charset\">" 
              : "" )
        , $LATEX2HTML_META
@@ -9475,7 +9475,7 @@
 sub revert_to_raw_tex {
     local($_) = @_;
     local($character_map) = "";
-    if ( $CHARSET && $HTML_VERSION ge "2.1" ) {
+    if ( $CHARSET && $HTML_VERSION >= 2.1 ) {
        $character_map = $CHARSET;
        $character_map =~ tr/-/_/; }
     while (s/$O\s*\d+\s*$C/\{/o) { s/$&/\}/;}
@@ -10333,7 +10333,7 @@
     my($character_map,$enc);
     local ($this);
 
-    if ( $CHARSET && $HTML_VERSION ge "2.1" ) {
+    if ( $CHARSET && $HTML_VERSION >= 2.1 ) {
        # see if it is a character in the charset
        $character_map = ((($charset =~ /utf/)&&!$NO_UTF)?
                          'iso_10646' : $CHARSET );
@@ -15525,12 +15525,6 @@
        . "\n<META HTTP-EQUIV=\"Content-Style-Type\" CONTENT=\"text/css\">"
              unless ($LATEX2HTML_META);
 
-    $TeXname = (($HTML_VERSION ge "3.0")? "T<SMALL>E</SMALL>X" : "TeX");
-    $Laname = (($HTML_VERSION ge "3.0")? "L<SUP><SMALL>A</SMALL></SUP>" : "La");
-    $MFname = (($HTML_VERSION ge "3.0")? "M<SMALL>ETAFONT</SMALL>" : "Metafont");
-    $Xyname = (($HTML_VERSION ge "3.0")? "X<SUB><BIG>Y</BIG></SUB>" : "Xy");
-    $AmSname = (($HTML_VERSION ge "3.0")? "A<SUB><BIG>M</BIG></SUB>S" : "AmS");
-
     $EQN_TAGS = "R" unless ($EQN_TAGS);
     $EQNO_START = "(";
     $EQNO_END   = ")";
@@ -15599,10 +15593,17 @@
     foreach ( @HTML_VERSION ) {
        if (/^[\d\.]+$/) {
            # Make sure $HTML_VERSION is in the right range and in the right format.
+           #PL: The right format is with either 1 or 2 digits after the decimal
+           #    point.  (Algorithm: Format it with exactly 2 digits after the
+           #    point; then, if it ends with `0', remove the trailing `0'.)
            $HTML_VERSION = 0.0 + $_;
            $HTML_VERSION = 2 if ( $HTML_VERSION < 2 );
            $HTML_VERSION = 9 if ( $HTML_VERSION > 9 );
-           $HTML_VERSION = sprintf("%3.1f",$HTML_VERSION);
+           $HTML_VERSION = sprintf("%.2f",$HTML_VERSION);
+           $HTML_VERSION =~ s/0$//;
+           # For compatibility with earlier versions of LaTeX2HTML,
+           # in which one had to ask for 4.1 in order to get 4.01:
+           $HTML_VERSION = 4.01 if $HTML_VERSION == 4.1;
        } else {
            $HTML_OPTIONS .= "$_,";
        }
@@ -15616,18 +15617,18 @@
     &do_require_extension('latin1');
     $charset = $CHARSET = $PREV_CHARSET = '';
 
-    if ($HTML_VERSION =~ /(2.0|3.0|3.2|4.0|4.1)/) {
+    if ($HTML_VERSION =~ /^(2\.0|3\.0|3\.2|4\.01?)$/) {
        # Require the version specific file 
        do { $_ = "$LATEX2HTMLVERSIONS${dd}html$1.pl";
-            if (!(-f $_)) {  s/(\d).(\d.pl)$/$1_$2/ };
-            if (!(-f $_)) {  s/(\d)_(\d.pl)$/$1-$2/ };
+            if (!(-f $_)) {  s/(\d)\.(\d\d?\.pl)$/$1_$2/ };
+            if (!(-f $_)) {  s/(\d)_(\d\d?\.pl)$/$1-$2/ };
             require $_ || die "\n*** Could not load $_ ***\n";
             print "\nHTML version: loading $_\n";
        } unless ($HTML_VERSION =~ /2.0/);
        $DOCTYPE = "-//".(($HTML_VERSION eq "2.0")? "IETF" : "W3C")
            . "//DTD HTML $HTML_VERSION"
            .(($HTML_VERSION eq "3.2")? " Final" : "")
-           .(($HTML_VERSION eq "4.0")? " Transitional" : "");
+           .(($HTML_VERSION =~ /^4\.01?$/)? " Transitional" : "");
 
        if ($HTML_OPTIONS) {
            local($ext);
@@ -15649,11 +15650,13 @@
            . "  i18n  table  math  frame  latin1  unicode  etc.\n";
 
     # Require all necessary version specific files
-       foreach ( sort <$LATEX2HTMLVERSIONS${dd}html[1-9].[0-9].pl> ) {
-           last if ( $_ gt "$LATEX2HTMLVERSIONS${dd}html$HTML_VERSION.pl" );
+       foreach ( sort <$LATEX2HTMLVERSIONS${dd}html[1-9]_[0-9]*.pl> ) {
+           my ($version) = /([1-9]_[0-9][1-9]?)\.pl$/;
+           $version =~ s/_/./;
+           last if ( $version > $HTML_VERSION );
            do { print "\nloading $_" if ($DEBUG);
                 require $_; } unless (
-               ($NO_SIMPLE_MATH)&&($_ eq "$LATEX2HTMLVERSIONS${dd}html3.1.pl"));
+               ($NO_SIMPLE_MATH)&&($_ eq "$LATEX2HTMLVERSIONS${dd}html3_1.pl"));
        };
        $STRICT_HTML = 0;
     }
@@ -15664,6 +15667,12 @@
      , '10pt' , 1 , '11pt' , 1 , '12pt' , 1
      , %styles_loaded );
 
+    $TeXname = (($HTML_VERSION >= 3.0)? "T<SMALL>E</SMALL>X" : "TeX");
+    $Laname = (($HTML_VERSION >= 3.0)? "L<SUP><SMALL>A</SMALL></SUP>" : "La");
+    $MFname = (($HTML_VERSION >= 3.0)? "M<SMALL>ETAFONT</SMALL>" : "Metafont");
+    $Xyname = (($HTML_VERSION >= 3.0)? "X<SUB><BIG>Y</BIG></SUB>" : "Xy");
+    $AmSname = (($HTML_VERSION >= 3.0)? "A<SUB><BIG>M</BIG></SUB>S" : "AmS");
+
 
     %declarations =
     ('em' , '<EM></EM>',
@@ -17329,8 +17338,8 @@
 =item B<-html_version> I<list>
 
 Which HTML version should be generated. Currently available are:
-C<2.0>, C<3.0>, C<3.2>, C<4.0>. Some additional options that may be
-added are: C<math> (parse mathematics), C<i18n> (?), 
+C<2.0>, C<3.0>, C<3.2>, C<4.0>, C<4.01>. Some additional options that
+may be added are: C<math> (parse mathematics), C<i18n> (?), 
 C<table> (generate tables), C<frame> (generate frames),
 C<latin1>...C<latin9> (use ISO-Latin-x encoding),
 C<unicode> (generate unicode characters). Separate the options with ',',

-- 
Phil Lanch
D95B33E3
D78D 598D A663 5CF3 2AB2  4593 C989 94B7 D95B 33E3

Attachment: pgp00000.pgp
Description: PGP signature

_______________________________________________
latex2html mailing list
[EMAIL PROTECTED]
http://tug.org/mailman/listinfo/latex2html

Reply via email to