glenda.party
term% ls -F
term% cat index.txt
IDEAL(1)                    General Commands Manual                   IDEAL(1)



delim $$

NAME
       ideal - troff preprocessor for drawing pictures

SYNOPSIS
       ideal [ -p ] [ -4 ] [ -n ] [ files ]

DESCRIPTION
       Ideal  is  yet  another  troff(1) preprocessor for drawing figures on a
       typesetter.  A line beginning `.IS' marks the start of  an  ideal  pro‐
       gram.   An ideal program ends with `.IE' or `.IF'; `.IE' leaves you be‐
       low the bottom of the picture, while `.IF' (flyback) leaves you at  the
       same place you were when you said `.IS'.

       When  invoked  with the -p option, ideal produces plot(1) instructions.
       The erases come at every `.IS', and they come fast and furious, so  you
       might  prefer  using  the  -4 option, which produces instructions for a
       Tektronix 4014, and waits at each `.IE' for an input  character  before
       erasing  and  starting  the  next  picture.  The -n option produces raw
       ideal output, which passes unharmed through nroff.

       The building block for ideal programs is a ``box''; boxes look  like  C
       functions,  in  that they are named, and delimited by braces.  They may
       include the following kinds of statements, each terminated by  a  semi‐
       colon:

       var    declares  one or more complex variables local to the box.  Vari‐
              able names are made up of letters and digits, and start  with  a
              letter;  do  not  use  any of the following keywords as variable
              names: at, bdlist, boundary, box, conn, construct,  draw,  exte‐
              rior,  interior, left, opaque, put, right, spline, text, to, us‐
              ing, var

       equation
              declares relative positions of significant points of the box

       conn   asks for a straight-line path through named points

       pen    asks for a box to be replicated along a line between two points

       left   left-justifies text with respect to a point

       text   centers text with respect to a point

       right  right-justifies text with respect to a point

       spline draws a spline guided by the named points

       put    asks for an instance of a box to be drawn

       opaque asks for a box to erase lines already in the  picture  that  are
              covered by its bounding polygon

       boundary
              specifies the bounding polygon for an opaque box

       construct
              builds a partial picture on a separate ``sheet of paper''

       draw   adds  the  contents  of the named constructed box to the current
              picture

       Ideal expects all components of a picture to be specified as boxes; in‐
       structions  to  draw  the  entire  picture should comprise a box called
       ``main.''  Boxes are remembered across .IS-.IE boundaries; if you won't
       need  a  box  again, you can reclaim the space it requires by including
       the command `...forget boxname' on a line between any .IS-.IE pair  af‐
       ter the last use of boxname.  Box main is an exception to this rule: it
       is always forgotten when the .IE is processed.

       During its first pass, ideal solves all the equations to determine  the
       locations of all points it needs to know.  These equations must be lin‐
       ear equations in complex variables, although they may include  non-lin‐
       ear  operators:  ideal plugs in for as many variables, and does as much
       function evaluation, as it can before solving the linear equation.   It
       waits until it has absolutely no hope of reducing an equation to a lin‐
       ear equation before complaining.  Ideal knows about the following func‐
       tions:

       α[z,w] $==~z+ alpha (w-z)$, $alpha$ of the way from $z$ to $w$

       re(z)  real part of complex number

       im(z)  imaginary part of complex number

       conj(z)
              complex conjugate of complex number

       abs(z) absolute value (modulus) of complex number

       cis(x) a unit vector in the direction of the real part of its argument,
              which is an angle in degrees (radians if the  line  `...radians'
              appeared more recently in the file than the line `...degrees')

       E(x)   $==~cis (360x)$ if $x$ is measured in degrees

       angle(z)
              angle of complex number, arctan $(im(z)/re(z))$

       During the second pass, ideal draws the picture.

       To  draw a circle, include the line `...libfile circle' between the .IS
       and .IE lines, and put the box named circle, giving enough  information
       that  the  circle  can be determined; for instance, give the center and
       the radius, or give three points through which the  circle  passes,  or
       give  the center and a point on the circle.  The circle has center cen‐
       ter, radius radius, and passes through z1, z2, and z3.

       To draw an arc, include the line `...libfile arc'  between the .IS  and
       .IE  lines,  and put the box named arc, again giving enough information
       to determine the arc; for instance, give the center, radius, and start‐
       ing and ending angles, or give three points on the arc--where to start,
       where to end, and somewhere in between.  The arc has center center, ra‐
       dius  radius, starts at point start, passes through point midway at an‐
       gle midang, and ends at point end at angle endang.   If  no  midway  is
       specified, the arc is drawn counterclockwise from start to end.

       The  picture  will be scaled to a default width of four inches and cen‐
       tered in a column of six inches.  The default width can be changed by a
       `...width'  command,  which  includes  a number in inches.  The default
       column width can be  changed  by  a  `...colwid'  command.   To  defeat
       ideal's notion of the size of the picture, you can include lines of the
       form `...minx', `...miny', `...maxx', or `...maxy'; these give the var‐
       ious  coordinates  of the bounding box of the picture in the coordinate
       system used by the picture.

       Ideal supports both C-style comments (between /* and */  brackets,  and
       they nest), and shell-style comments (between # and newline).

SEE ALSO
       C. J. Van Wyk, IDEAL User's Manual , C. J. Van Wyk.
       pic(1), ped(9.1), doctype(1)

BUGS
       Ideal is relatively unforgiving about syntax errors.  Bounding box com‐
       putation is naive for arcs and text strings.



                                                                      IDEAL(1)