[l2h] Tabular problems - malformed tabular after section or subsection

Ross Moore ross at maths.mq.edu.au
Sun Feb 22 01:29:14 CET 2004

Hi John,

On 22/02/2004, at 2:31 AM, John O'Gorman wrote:

> Ross Moore wrote:
>> Hello John,
>> Please send an example where this has failed for you.
> Thanks Ross for your incredibly speedy response.
> In comparison, I have been a little tardy in setting up the website.

   I've looked at the examples, thanks.
   As I thought, the problem was rather subtle:

   The \providecommand  replacement of \tabularnewline  was not
   taking place, when the document has sections --- unless the table
   occurs *before* the first \section (or \chapter, etc.) command.

   Following the logic of the command-replacement coding, it became
   apparent that a Perl variable $within_preamble  was not being
   reset to 0 after the first sectioned-segment of the full document;
   i.e., after the preamble has been fully processed, for documents
   containing multiple (sub-)sections, etc.

   The value of $within_preamble only affects the handling of macros
   defined using \providecommand, and for which there is no
   \renewcommand definition also. (It's used to indicate the need to
   put the \providecommand line itself into the preamble constructed
   for generating images.)

   Also, if the macro was expanding into ordinary text, then there
   would probably not have been a noticeable problem, as the replacement
   would then have taken place later in the processing.

   However, since the intended expansion is  \tabularnewline --> \\
   to create the delimiter for table rows, your example produces
   something rather unexpected --- but explainable.
   In fact, you would get the same result if you replace all
   (in fact, the first is enough) instances of \tabularnewline
   by \newline .

   So here's a simple fix, which I'm rather confident is robust,
   and will be included in the next update of LaTeX2HTML.

   In the  latex2html  script (any version, so I won't give line 
   find the following code portion, and insert the indicated lines:

             } else { push(@pieces, $this_cmd) }
           push(@pieces, $after);
#### INSERT the next 2 lines:
           # after the first segment we should no longer be in the 
           $within_preamble = 0;
#### end of INSERT
         print " $replacements new-command replacements\n"
             if (($VERBOSITY>1) && $replacements);
         # recombine the processed pieces

> Go to http://www.og.co.nz and follow the aubit4gl link.
> I have agreed to do the documentation for the Aubit 4GL project.
> I have put 3 triplets there based on table.lyx and badtable.lyx.
> The generated .tex and html trees are href'd on that page.
> These are the minimal examples of a good and a bad table. For me it 
> seems that putting a table after any section or subsection causes the 
> problem. Note that I am using -split 3 -link 4 in order to get a node 
> for each section with a toc at the top of the page.
> The aubit file above are also big examples of the problem (the pdf is 
> good, the htmls have only the 1st row of tables int them.

Yes. When LaTeX2HTML finds excess cells in a line, they are omitted 
This is better than trying to guess the correct structure of a table,
because HTML browser do really weird, unfriendly things with incomplete
and badly-formed tables.
However, there should be a warning message that something is wrong;
so I'll look into adding that for future releases.

> Happy hunting!

Thanks for the bug report.
That was a rather special combination of circumstances
which had not been anticipated, hence went untested,
when devising the support for \providecommand .

Best regards,

	Ross Moore

> John O'Gorman
Ross Moore                                         ross at maths.mq.edu.au
Mathematics Department                             office: E7A-419
Macquarie University                               tel: +61 +2 9850 8955
Sydney, Australia                                  fax: +61 +2 9850 8114

More information about the latex2html mailing list