[texhax] \noalign{\nobreak} seems not work!
doug waud
douglas.waud at umassmed.edu
Mon Jul 14 16:23:45 CEST 2003
Hi
Rodolfo Medina wrote:
> Something strange seems to happen:
> In the TeXbook, page 193, it is said that the command
> \noalign{\nobreak}
> after the \cr in \eqalignno
> will prohibit a page break after that line.
>
> I tried it, but it does not seem to work!
> Can anyone tell me about this?
>
> On the contrary,
> \noalign{\break}
> seems to perfectly work in forcing a page breaking.
> I can't explain to myself!
This posting caught my attention and I quickly found myself in over my
head! :-)
I created a test file with an \eqalingnno with 12 lines positioned at
the bottom of where the first page should end and then some. TeX broke
it after line 3. I confirmed your observations --- break worked and
nobreak did not.
I then spent some time rereading the Texbook and, in particular inserted
a \tracingpages=1 along the lines of page 112. The cost reached a
minimum after the third line of that \eqalignno and then began to rise
and finally blew up when the glue on the total would no longer shrink
down to the goal. At this point things went back to that best (lowest)
cost. So far ok.
I then tried inserting nobreaks (aka penalty 10000) and they did not
appear in the \tracingpages output! All I saw was relatively small
penalties of the order of 100. In contrast, inserting a break gave a
line with a penalty of -10000 and an immediate page break. So the
problem is reproduced in the log with \tracingpages.
I also found that, if I put a break after lines four to about 9 or ten,
I could force a break there. In other words I stumbled onto a kludge
which gave the effect of a nobreak at the lines between the original
break and that inserted break! :-). Examination of the log file with
\tracingpages on showed the reason. Where before the cost had started
slowly to climb up, it now did so until it hit that -10000 penalty and
immediately prefered that point to the old favorite.
So now the question became how did the breaks get rhough TeX's innards
but not the nobreaks.
I think the answer may lie on page 314 in the answer to exercise 14.10.
There it says that if you have two penalties in a row TeX takes the
lower one. Now, the log output indicated a penalty of about 100 without
the an inserted nobreak (I did not chase down where this came from; I
suspect it would be found in the definition of \noeqalignno) so adding
one of 10000 would do nothing.
Now it would appear that the behaviour matches the Texbook except for
the original statement you reported on P 193. Is the Texbook is
self-contradictory.
If anyone more skilled (a large set!) out there is reading this, I'd
like to know what you think.
doug
More information about the texhax
mailing list