[l2h] Tabular problems - solved
John O'Gorman
john.ogorman at zombie.co.nz
Sun Feb 22 10:57:36 CET 2004
My most grateful thanks Ross.
I'm amazed that you could penetrate so deeply into the cause of the
problem in so little time.
I will alter the perl as you suggest.
Warmest regards
John O'Gorman
Ross Moore wrote:
> Hi John,
>
> 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