6.8.10.4 Other Compositions

The csup function builds a superscripted expression. For example, ‘csup(a, b)’ looks the same as ‘a^b’ does in Big language mode. This is essentially a horizontal composition of ‘a’ and ‘b’, where ‘b’ is shifted up so that its bottom line is one above the baseline.

Likewise, the csub function builds a subscripted expression. This shifts ‘b’ down so that its top line is one below the bottom line of ‘a’ (note that this is not quite analogous to csup). Other arrangements can be obtained by using choriz and cvert directly.

The cflat function formats its argument in “flat” mode, as obtained by ‘d O’, if the current language mode is normal or Big. It has no effect in other language modes. For example, ‘a^(b/c)’ is formatted by Big mode like ‘csup(a, cflat(b/c))’ to improve its readability.

The cspace function creates horizontal space. For example, ‘cspace(4)’ is effectively the same as ‘string(" ")’. A second string (i.e., vector of characters) argument is repeated instead of the space character. For example, ‘cspace(4, "ab")’ looks like ‘abababab’. If the second argument is not a string, it is formatted in the normal way and then several copies of that are composed together: ‘cspace(4, a^2)’ yields

 2 2 2 2
a a a a

If the number argument is zero, this is a zero-width object.

The cvspace function creates vertical space, or a vertical stack of copies of a certain string or formatted object. The baseline is the center line of the resulting stack. A numerical argument of zero will produce an object which contributes zero height if used in a vertical composition.

There are also ctspace and cbspace functions which create vertical space with the baseline the same as the baseline of the top or bottom copy, respectively, of the second argument. Thus ‘cvspace(2, a/b) + ctspace(2, a/b) + cbspace(2, a/b)’ displays as:

        a
        -
a       b
-   a   a
b + - + -
a   b   b
-   a
b   -
    b