Hello,
On Mon, Jul 19, 2004 at 11:00:34PM +0300, geolsoft at mail.ru wrote:
> When \abovelistpenalty=10000, page break can still occur before the first
> list item
...
> So this is roughly what we end up with in the vertical list, before the first
> item's box:
>> \vpenalty\abovelistpenalty
> \vskip\abovelistskipamount
> \write{...}
> \parskip
you haven't expressed another subtle problem: even for \abovelistpenalty=0,
it's possible that the \parskip glue will be selected for a page break, which
would mean that the cross reference would point to the wrong place.
Though I see no problem with the solution you proposed, I beleive there is
a simpler solution; see the patch below.
Cheers,
Stepan Kasal
2004-07-20 Stepan Kasal <kasal at ucw.cz>
* xeplain.tex (\printitem): Add \nobreak before \vskip-\parskip
and (implicite) \vskip\parskip, so that a page break cannot
appear here, between the indexing \write a the start of the item.
--- xeplain.tex.orig 2004-02-15 22:41:08.000000000 +0100
+++ xeplain.tex 2004-07-20 11:44:35.000000000 +0200
@@ -1038,6 +1038,7 @@
%
\def\printitem{%
\par
+ \nobreak
\vskip-\parskip
\noindent
\printmarker\marker