# [texhax] A question about stretchability and shrinkability

Rodolfo Medina rodolfo.medina at gmail.com
Tue Jun 16 12:36:21 CEST 2009

Rodolfo Medina wrote:

>> Suppose that in a certain place of my text I say something like, e.g.:
>>
>> \vskip 25 pt
>>
>> and I mean exactly 25 pt with no stretchability neither shrinkability. Will
>> it be enough to say:
>>
>> \vskip 25 pt plus 0 pt minus 0 pt
>>
>> ?  Am I sure this way that plain TeX will shift what follows by exactly 25
>> pt, nothing more, nothing less?  Or should I achieve that by some other
>> commands?

Pierre MacKay <pierre.mackay at comcast.net> writes:

> It will be too much.  \vskip will not insert stretchable glue unless you tell
> it to.
>
> But you can get some surprises if you do not take account of interline glue
> values.  If you want a strict baseline to baseline 25 points, you also have
> to make sure that there is no descender depth counted before the transition
> from hmode into vmode.  My own crude but effective way of handling this is to
> insert a vrule of specific depth greater than any glyph depth possible, and
> then either cancel it or subtract that amount from the following \vskip.
> Inelegant, perhaps, but it has saved a lot of trouble for the past ten years.
> It is one way to get \vadjust material on the same baseline as the preceding
> hmode text.
>
> You can usually check out the accuracy of the \vskip by turning on
> \tracingpages and looking at the log file, although the log sometimes
> unaccountably skips reporting on one or more lines.

Ivan Ramos Pagnossin <ivan.pagnossin at gmail.com> writes:

> Rodolfo, 25 pt is indeed 25 pt whatever the place, but there are some
> notices: if this vertical space lies on a page break, it will be completely
> dismissed. Other thing you must take into account is that you may have more
> vertical space than that you declared: \parskip and \baselineskip, for
> example, usually are rubber lengths (or glues, if you prefer). Another: plain
> TeX allows you to set a magnification for your entire document. So, if you
> define a magnification 2, you will get 50 pt instead. Ah, "25 pt" is exactly
> the same as "25pt plus 0pt minus 0pt". Did I forget something?

"Stanislaw Romanski" <s.romanski at datos.pl> writes:

> Maybe
>    \vglue 25 pt
> is what you are looking for.
> This is "definite" vertical space; it will never disappear.
> \vskip is removed in certain contexts,
> e.g. in the begin or end of page.

Thanks for your help.  I'll explain my problem: I have the following macro:

\def\subchapter#1{%
\vskip0pt plus.3\vsize\vskip0pt plus-.3\vsize
\bigskip\bigskip\vskip\parskip
\leftline{#1}
\vskip0pt plus.3\vsize\vskip0pt plus-.3\vsize
\bigskip\vskip\parskip
\par\nobreak\noindent\ignorespaces
\vtop to 0pt
\bgroup
\vskip -25pt
<some stuff>
\vss
\egroup
\ignorespaces
}

Now, what I noticed is that the \vskip that I set to -25pt slightly varies, in
the output, from place to place.

Why does this happen, and what should put instead to prevent that lenght to
change?

Thanks again
Rodolfo