[texhax] Alignments and Knuth's uncertainty principle ...

Philip TAYLOR chaa006 at gmail.com
Wed Jan 28 10:44:01 CET 2009



Donald Arseneau wrote:

> No, the width can be negative in natural-width \halign if 
> a column has no singleton cells, but cannot be merged 
> with another column due to overlapping spans.

Right, thank you for the clarification, Donald.
> 
>> get the idea).  The problem was that the name spanning
>> columns 1 and 2 caused column 2 to grow in width, whereas
>> I had (very naively) thought that column 2 would take
>> the width of half an "=" minus the width of an "|",
>> leaving column 1 to grow as necessary in order to
>> accommodate the name.
> 
> So this is a different matter, and it sounds like there are
> individual entries in each column.

No, columns 2 & 4 have no individual entries;
they are coalesced with 1 & 3, and 3 & 5,
respectively.  But we should not waste too much
time here : your original explanation was
very helpful, and led me to add sufficient
visual debugging to see clearly where I was
going wrong.

> This case *is* covered explicitly in The TeXbook.  In my
> old copy it is a paragraph on page 245: "...sometimes they
> produce undesirable effects... all the excess width is
> allocated to the third [final] column." 

Yes, I read that; "undesirable" is an understatement !

> An old standby automatic solution is a finite shrinkable 
> \tabskip, if you are using {tabular*} ot \halign to{} 
> to force a specific overall width.

Interesting idea, and not one that I had considered,
although I played with \tabskip for a bit; however,
the \halign has no preferred size, so it probably
won't help here.

Just for the benefit of anyone else following this
thread, my idea yesterday "to (somehow) cause the
earlier column to \rlap by the maximum width of the
later column into the latter ..." turned out to
be quite simple : the preamble now reads --

> #&\hbox spread -0,5 \equalswidth {#\hss}&#&\hbox spread -0,5 \equalswidth {\hss#}&#\cr

** Phil.


More information about the texhax mailing list