6.8.10.3 Vertical Compositions

The cvert function makes a vertical composition. Each component of the vector is centered in a column. The baseline of the result is by default the top line of the resulting composition. For example, ‘f(cvert([a, bb, ccc]), cvert([a^2 + 1, b^2]))’ formats in Big mode as

f( a ,  2    )
  bb   a  + 1
  ccc     2
         b

There are several special composition functions that work only as components of a vertical composition. The cbase function controls the baseline of the vertical composition; the baseline will be the same as the baseline of whatever component is enclosed in cbase. Thus ‘f(cvert([a, cbase(bb), ccc]), cvert([a^2 + 1, cbase(b^2)]))’ displays as

        2
       a  + 1
   a      2
f(bb ,   b   )
  ccc

There are also ctbase and cbbase functions which make the baseline of the vertical composition equal to the top or bottom line (rather than the baseline) of that component. Thus ‘cvert([cbase(a / b)]) + cvert([ctbase(a / b)]) + cvert([cbbase(a / b)])’ gives

        a
a       -
- + a + b
b   -
    b

There should be only one cbase, ctbase, or cbbase function in a given vertical composition. These functions can also be written with no arguments: ‘ctbase()’ is a zero-height object which means the baseline is the top line of the following item, and ‘cbbase()’ means the baseline is the bottom line of the preceding item.

The crule function builds a “rule,” or horizontal line, across a vertical composition. By itself ‘crule()’ uses ‘-’ characters to build the rule. You can specify any other character, e.g., ‘crule("=")’. The argument must be a character code or vector of exactly one character code. It is repeated to match the width of the widest item in the stack. For example, a quotient with a thick line is ‘cvert([a + 1, cbase(crule("=")), b^2])’:

a + 1
=====
  2
 b

Finally, the functions clvert and crvert act exactly like cvert except that the items are left- or right-justified in the stack. Thus ‘clvert([a, bb, ccc]) + crvert([a, bb, ccc])’ gives:

a   +   a
bb     bb
ccc   ccc

Like choriz, the vertical compositions accept a second argument which gives the precedence to use when formatting the components. Vertical compositions do not support separator strings.