The following macro provides a convenient way to mix text and graphics on the same output stream.
with-room-for-graphics [Macro]
Arguments: ( &optional
stream &key
(move-cursor t ) height record-type) &body
body
Summary: Binds the dynamic environment to establish a local Cartesian coordinate system for doing graphics output onto the extended output stream designated by stream . The origin (0, 0) of the local coordinate system is placed at the current cursor position, and is in the lower left corner of the area created. If the boolean move-cursor is t (the default), then after the graphic output is completed, the cursor is positioned past (immediately below) this origin. The bottom of the vertical block allocated is at this location (that is, just below point (0, 0), not necessarily at the bottom of the output done).
The stream argument is not evaluated, and must be a symbol that is bound to a stream. If stream is t (the default), *standard-output* is used. body may have zero or more declarations as its first forms.
If height is supplied, it must be a rational number that specifies the amount of vertical space to allocate for the output, in device units. If it is not supplied, the height is computed from the output.
record-type specifies the class of output record to create to hold the graphical output. The default is standard-sequence-output-record .