There are several definitions of functions for object creation (called
also constructors). All return a proxy for the created object. They are
usually named by a pattern `make-SUBTYPE`

, they need different
arguments, so they are described separately. `obj`

constructors
must be called in a `meta-transaction`

and are
`n-parent`

-less, `go`

constructors must be called in
a `transaction`

and their `g-parent`

is `g-root`

of
the `page`

of the current `transaction`

.

`(make-document)`

*->
document*

A constructor for `obj`

`document`

.

`(make-page)`

*->
page*

A constructor for `obj`

`page`

.

`(make-common-document name)`

*string ->
document*

A modified constructor for `obj`

`document`

. The newly created
document is named by `name`

and connected under the `universe`

.

`(make-common-page name doc)`

*string document ->
page*

A modified constructor for `obj`

`page`

. The newly created
page is named by `name`

and connected under the `doc`

.

`(coords x y)`

*real real ->
hanger*

A constructor for a free hanger (also known as a mouse-click). The created hanger
coordinates are (`x`

, `y`

).

`(coords-c p)`

*complex ->
hanger*

A constructor for a free hanger (also known as a mouse-click). The created hanger
coordinates are (`(real-part p)`

, `(imag-part p)`

).

`(make-point h)`

*hanger ->
go*

A point constructor. The created GO's `point`

anchor is
hung on the `h`

hanger.

`(make-segment h1 h2)`

*hanger hanger ->
go*

A segment constructor. The created GO's `start`

anchor is
hung on the `h1`

hanger, the `end`

anchor is hung on the
`h2`

hanger.

`(make-ellipse-by-center-2-radii-rotation c r1 r2 rot)`

*hanger real real real ->
go*

A constructor for the appropriate `go`

. The created GO's `center`

anchor
is hung on the `c`

hanger. `r1`

is used as the major radius of the
ellipse. `r2`

is used as the minor radius of the ellipse. Radii must
be positive. `rot`

(must be between 0 and ) is used as the
rotation the of ellipse, where zero rotation means that the major axis is
horizontal.

`(make-ellipse-by-2-foci-point f1 f2 p)`

*hanger hanger hanger ->
go*

A constructor for the appropriate `go`

. The created GO's `focus-1`

anchor
is hung on hanger `f1`

, anchor `focus-2`

is hung on
hanger `f2`

, anchor `point`

(representing any point on the
ellipse) is hung on hanger `p`

.

`(make-ellipse-by-3-points-smallest p1 p2 p3)`

*hanger hanger hanger ->
go*

A constructor for the appropriate `go`

. The created GO's anchors
`point-1`

, `point-2`

and `point-3`

are hung on
hangers `p1`

, `p2`

and `p3`

, respectively.
The created ellipse is the smallest (in area) ellipse containing the
three points represented by the anchors.

`(make-ellipse-by-3-points-rotation-eccentricity p1 p2 p3 rot ecc)`

*hanger hanger hanger real real ->
go*

A constructor for the appropriate `go`

. The created GO's anchors
`point-1`

, `point-2`

and `point-3`

are hung on
hangers `p1`

, `p2`

and `p3`

, respectively. `rot`

(must be between 0 and ) is used as the rotation of the ellipse, where zero
rotation means that the major axis is horizontal. `ecc`

(must be between
0 and 1) is used as the eccentricity of the ellipse.

`(make-ellipse-by-center-point-rotation-eccentricity c p rot ecc)`

*hanger hanger real real ->
go*

A constructor for the appropriate `go`

. The created GO's anchor `center`

is hung on the `c`

hanger, the `point`

anchor is hung on the
`p`

hanger (representing any point on the ellipse). `rot`

(must be
between 0 and ) is used as the rotation of the ellipse, where zero rotation
means that the major axis is horizontal. `ecc`

(must be between 0 and 1)
is used as the eccentricity of the ellipse.

`(make-elarc-by-center-2-radii-rotation-2-angles c r1 r2 rot a1 a2 style)`

*hanger real real real real real symbol ->
go*

An alternative constructor for `go`

`ellipse-by-center-2-radii-rotation`

, modified to creation of
arcs. The arguments share the semantics with the function
`make-ellipse-by-center-2-radii-rotation`

and the additional
arguments `a1`

, `a2`

and `style`

are the arc information
(see Elliptic arcs).

`(make-elarc-by-3-points-smallest p1 p2 p3 style)`

*hanger hanger hanger symbol ->
go*

An alternative constructor for `go`

`ellipse-by-3-points-smallest`

, modified to creation of
arcs. The arguments share the semantics with function
`make-ellipse-by-3-points-smallest`

and the additional argument
`style`

is arc information (See Elliptic arcs).

`(make-quadratic-bezier p1 p2 p3)`

*hanger hanger hanger ->
go*

A constructor for the appropriate `go`

. The created GO's anchors
`controlpoint-1`

, `controlpoint-2`

and `controlpoint-3`

are hung on hangers `p1`

, `p2`

and `p3`

, respectively.
The created bezier is non-rational, i.e. all weights are set to 1.

`(make-quadratic-rational-bezier p1 w1 p2 w2 p3 w3)`

*hanger real hanger real hanger real ->
go*

An alternative `go`

constructor for `quadratic-bezier`

, the created
bezier is rational. The arguments share the semantics with function
`make-quadratic-bezier`

, the additional arguments are weights of
the control points.

`(make-cubic-bezier p1 p2 p3 p4)`

*hanger hanger hanger hanger ->
go*

A constructor for the appropriate `go`

. The created GO's anchors
`controlpoint-1`

, `controlpoint-2`

, `controlpoint-3`

and `controlpoint-4`

are hung on hangers `p1`

, `p2`

,
`p3`

and `p4`

, respectively. The created bezier is
non-rational, i.e. all weights are set to 1.

`(make-cubic-rational-bezier p1 w1 p2 w2 p3 w3 p4 w4)`

*hanger real hanger real hanger real hanger real ->
go*

An alternative `go`

constructor for `cubic-bezier`

, the created
bezier is rational. The arguments share the semantics with the function
`make-cubic-bezier`

, the additional arguments are weights of
the control points.

`(make-tex-text h str)`

*hanger string ->
go*

A constructor for the appropriate `go`

. The created GO's anchor `point`

is
hung on hanger `h`

, `str`

is used as the TeX source text.

`(make-text h str font-family font-style font-size)`

*hanger string string string real ->
go*

A constructor for the appropriate `go`

. The created GO's anchor `point`

is
hung on hanger `h`

. `str`

is used as the text source.
`font-family`

is the desired font name. `font-style`

is the variant
(for example, `"regular"`

or `"bold"`

). `font-size`

is
the size of the font in millimeters.

`(make-parametric-point go p)`

*go real ->
go*

A constructor for the appropriate `go`

. The created GO's anchor `curve`

is
hung on curve hanger of `go`

, `p`

is used as the position parameter on
that curve.

`(make-parametric-point-on-hanger h p)`

hanger real ->
go

Alternative constructor for `go`

`parametric-point`

. The created
GO's anchor `curve`

is hung on hanger `h`

(which must be
curve hanger), `p`

is used as position on that curve.

`(make-intersection g1 g2 p)`

*go go real ->
go*

A constructor for the appropriate `go`

. The created GO's anchors `curve-1`

and `curve-2`

are hung on curve hangers of `g2`

and
`g2`

, respectively. If there are more intersections of that
curves, the one closest to the `p`

position on the first curve is used.

`(make-intersection-on-hanger h1 h2 p)`

*hanger hanger real ->
go*

An alternative constructor for `go`

`parametric-point`

. The created
GO's anchors `curve-1`

and `curve-2`

are hung on hangers
`h1`

and `h2`

(which must be curve hangers),
respectively. If there are more intersections of that curves, the
one closest to the `p`

position on the first curve is used.

`(make-decorator-point h n radius rot)`

*hanger natural real real ->
*

A constructor for the appropriate `go`

. The created GO's anchor
`decorator-point`

is hung on hanger `h`

. `n`

,
`radius`

and `rot`

are used as the number of vertices, radius and
rotation, respectively.

`(make-decorator-arrow g p arrow-length rot)`

*go real real real ->
*

A constructor for the appropriate `go`

. The created GO's anchor `curve`

is
hung on curve hanger of `go`

. `p`

is used as the position parameter on
that curve. `arrow-length`

and `rot`

are used as the arrow length
and rotation, respectively. The rotation is interpreted as the deviation
from the tangent of the curve.

`(make-decorator-arrow-on-hanger h p arrow-length rot)`

*hanger real real real ->
*

An alternative constructor for `go`

`decorator-arrow`

. The created
GO's anchor `curve`

is hung on hanger `h`

(which must be
a curve hanger). `p`

is used as the position parameter on that
curve. `arrow-length`

and `rot`

are used as the arrow length
and rotation, respectively. The rotation is interpreted as the deviation from
the tangent of the curve.

`(make-group)`

*->
go*

A constructor for the appropriate `go`

.

`(make-path)`

*->
go*

A constructor for the appropriate `go`

.

For some functions, there are aliases (shortened versions):