[texhax] Orphan section heads
Uwe Lück
uwe.lueck at web.de
Fri Oct 28 11:22:17 CEST 2005
Dear Phil and all involved,
the diagnosis is rather simple. The LTUGproc subsections
are embedded into the following text (the "next skip" is negative).
The authors of \@startsection seem not to have thought of
the possibility that an embedded heading could precede a
paragraph environment. In Standard LaTeX, the same would happen
with \paragraph. The environment is even likely to set a penalty
that overrides the \clupenalty (a general TeX problem).
I don't find good ways out so easily.
In your case I would suggest:
\makeatletter
\def \expandafter \verbatim \expandafter{\expandafter
\@beginparpenalty\expandafter\@M\verbatim}
\makeatother
-- This should also prevent the \skip in \@verbatim
from breaking.
One may also try the samepage trick or
\parbox{\columnwidth}, I am not experienced with that.
Best Regards,
Uwe.
At 16:32 24.10.05, Philip TAYLOR wrote:
>Dear Uwe -- the relevant part of the log, as requested,
>as 1435 lines, and is at
>
> http://personal.rhul.ac.uk/chaa/006/log.log.txt
>
>the input was :
>
> \tracingmacros = 1
> \subsection {explanation.cases}
> \begin{verbatim}
> 0
> 1
> 2
> \end{verbatim}
> \tracingmacros = 0
>
>Note that this is a boundary case; one fewer lines in the
>verbatim text and it is all fitted on the current page.
>
>Looking at the first few lines of the log, I fear this
>is complicated (and perhaps even caused) by TUGboat's
>intervention : I am therefore cc'ing Barbara, who may
>wish to look at her part of the code ...
>
>** Phil.
>--------
>Uwe Lück wrote:
>>Sorry, sorry, sorry ... those orphan section headings are
>>still a mystery to me, and I haven't found any LaTeX bug
>>as claimed (they are at best "weaknesses", yet LaTeX
>>cares about them). \@startsection, through \@xsect,
>>indeed puts \penalty10000\vskip... to the list (in the vertical
>>case) and immediately following \vskip's aren't possible
>>points to break (TeXbook p. 110). The \write from \label
>>(or \addcontentsline; similarly \mark...) after \@startsection
>>neither enables breaking at a following \vskip -- the latter is
>>preceded by a \nobreak from \protected at write. This is what
>>\@nobreaktrue is for.
>>Phil, you might put \tracingmacros=1 before \subsection and
>>\tracingmacros=0 after \end{verbatim} and send the .log to me.
>>Similarly Michael Barr / Florian Knorn -- it should be possible
>>to delete confidential material from the .log (unless your bugged
>>sectioning macros are confidential).
>>-- Uwe.
>>
>>>I bet I've got it, at least concerning Philip Taylor's sketch
>>>of an example. I see two bugs in LaTeX that might be
>>>responsible or raise the danger of orphan headings.
>>>
>>>At 16:12 21.09.05, Philip TAYLOR wrote:
>>>
>>>>Hmmm, sadly I can now demonstrate that it
>>>>is only too easy to get an orphaned subsection
>>>>head : this accomplishes it for me, though
>>>>I very much wish that it didn't :-(((
>>>>
>>>> \documentclass [final]{ltugproc}
>>>> \usepackage {graphicx}
>>>> \hfuzz = 1\jot
>>>> \overfullrule = 1\jot
>>>> \hyphenation {legit-imately}
>>>> \flushbottom
>>>> . . .
>>>> \subsection {byz-data.dat}
>>>> \begin{verbatim}
>>>> . . .
More information about the texhax
mailing list