[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



More information about the texhax mailing list