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
controls the baseline of the vertical composition; the baseline
will be the same as the baseline of whatever component is enclosed
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
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
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
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
crvert act exactly
cvert except that the items are left- or right-justified
in the stack. Thus `clvert([a, bb, ccc]) + crvert([a, bb, ccc])'
a + a bb bb ccc ccc
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.