[texhax] Specifying baseline-to-baseline skip in TeX

Uwe Lück uwe.lueck at web.de
Wed Oct 14 11:20:57 CEST 2009


Thanks a lot, Donald.

At 16:17 12.10.09, Donald Arseneau wrote:
>Uwe Lück <uwe.lueck at web.de> writes:
>
> > The /designer/ has specified the skip from the last \chapter baseline 
> to the
> > next baseline. A simple \vskip(glue) closing the chapter macros [apart from
> > \@afterheading] would result in a baseline-to-baseline distance of 
> (glue)+(b)
> > where (b) is the \baselineskip associated with either \normalsize or
> > \section, I don't know ...
>
>The descenders of large-font chapter and section titles
>screw up surrounding \baselineskips, often causing \lineskip
>to be used.

I sometimes thought I will rule this out by \nointerlineskip, then realized 
that this needs estimating ascender heights, worse than \baselineskip, then 
forgot ...

>You can get a specific ad-hoc baseline-skip between paragraphs
>using something like:
>
>\newdimen\prevdepthcalc
>
>\def\blskipper#1{\par
>\prevdepthcalc=\prevdepth
>\advance\prevdepthcalc -#1\relax
>\advance\prevdepthcalc\baselineskip
>\advance\prevdepthcalc\parskip

\parskip and/or \baselineskip may have shrink/stretch which may be wanted 
to remove => \newskip

>\ifdim\prevdepthcalc<-99pt
>   \vskip-99pt
>   \vskip-\prevdepthcalc
>   \prevdepthcalc=-99pt
>\fi

Why this? Did you mean "999" to prevent implicit \nointerlineskip?

>\prevdepth=\prevdepthcalc
>}

What about the \lineskip problem? We might rather \vskip some 
\prevdepthcalc results and then \prevdepth=0, or even less (in case of 
accent stacks in the first following line ...).

>It has to have the \baselineskip for the following
>paragrah already set, but that is not possible in general
>(the paragraph could end like {\small\par}). If you
>want to delay operation until \everypar, then you
>will have to back out of the paragraph, do \blskipper,
>and re-start the paragraph.  That goes roughly like:
>
>\begingroup
>   \everypar{}%
>   \setbox\@tempboxa\lastbox
>   \@@par
>   \vskip-\parskip
>   \blskipper{xxxxpt}%
>   \ifvoid\@tempboxa \noindent \else \indent \fi
>\endgroup

Ah, just for a possible indent, I understand.

>But you have to make sure this gets executed *first*, before
>whatever other code is executed by \everypar.

I thought a little /LaTeX/ package could be made right now. In the meantime 
I thought of modifying \@setfontsize and \fontsize, testing for vmode, but 
\everypar may be even better. Moreover, the "next baselineskip" could be 
specified by the font size command (read baseline skip from expansion) or 
even the sectioning command (read the font size command from its expansion).

Another problem to solve for the \everypar approach is \@afterheading, 
especially with \chapter etc.

In my own case, I am assuming \normalsize text is following and suspecting: 
the designer was not aware of \section, however the few pt exceeding the 
specification with a larger font are favourable, it is nice if the white 
space is about the same with a larger following font.

Best,

     Uwe.


>If you are worried about the positioning below chapter
>heads with [twocolumn] you are out of luck.  See bug
>report latex/3126.

Indeed, the index. But there were suggestions, it seems they were worth 
trying? (The book class I am working for uses multicol instead.)



More information about the texhax mailing list