[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
numbers),
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
preamble.
$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
altogether.
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