TeX uses the concept of “badness” as a measure of how much the glue in a box has to stretch or shrink. In the following C function, t
is the difference between the total of the natural sizes (N
) of the components in the box and the desired size of the box (d). So, t = N-d
. If the total amount of glue available for stretching or shrinking is s
, then the badness, according to the TeXbook, is $100(t/s)^3$ – note that t/s
is also known as the glue-set-ratio (often denoted r
). In reality, TeX uses an approximation to this calculation, as shown below – the C code is from the C output by Web2C.
typedef int scaled ; typedef int halfword ; halfword badness ( scaled t , scaled s ) { halfword Result; integer r ; if ( t == 0 ) Result = 0 ; else if ( s <= 0 ) Result = 10000 ; else { if ( t <= 7230584L ) r = ( t * 297 ) / s ; else if ( s >= 1663497L ) r = t / ( s / 297 ) ; else r = t ; if ( r > 1290 ) Result = 10000 ; else Result = ( r * r * r + 131072L ) / 262144L ; } return Result ; }