The main TeXdraw macros (commands) are defined in the file `texdraw.tex'. These macros may be used directly in TeX. The file `texdraw.sty' provides an interface for use with LaTeX2e. The following sections describe the basic commands for TeXdraw.
The form of the user command to run the TeX program depends on which version of TeX is being used, and which other macro packages are preloaded as format files. Typically, installations have at least two versions of TeX -- plain TeX which includes basic typesetting macros (usually invoked as `tex') and LaTeX2e which includes the LaTeX2e typesetting macros (usually invoked as `latex'). An older version of LaTeX, version 2.09, may also be available. The TeXdraw macros can be used with plain TeX and with either version of LaTeX.
For use with plain TeX, the user must read in the TeXdraw macros from the file `texdraw.tex'.
\input texdraw % Read in the TeXdraw macros ... \btexdraw ... % TeXdraw commands to generate a drawing \etexdraw
For use with LaTeX version 2.09, the user reads in the TeXdraw
macros from the file `texdraw.tex' and optionally defines the
\begin{texdraw}
/ \end{texdraw}
environment.
\documentstyle[11pt]{article} % Article style with the 11pt size options ... \input texdraw % Read in the TeXdraw macros \newenvironment{texdraw}{\leavevmode\btexdraw}{\etexdraw} ... \begin{texdraw} ... % TeXdraw commands to generate a drawing \end{texdraw} ... \end{document}
For use with LaTeX2e, the user must load the texdraw
package
(file `texdraw.sty'). This package file defines the
\begin{texdraw}
/ \end{texdraw}
environment, brings in
the standard graphics
package and reads in the file
`texdraw.tex' containing the definitions of the TeXdraw macros.
\documentclass[11pt]{article} % Article class with the 11pt size option \usepackage{texdraw} % TeXdraw commands \begin{document} ... \begin{texdraw} ... % TeXdraw commands to generate a drawing \end{texdraw} ... \end{document}
As the TeXdraw commands are processed by TeX, an intermediate PostScript file is generated. The intermediate PostScript has a name of the form `name.ps1'. The name part is derived from the name of the main TeX file being processed. If more than one drawing is produced, the digit in the file name extension is incremented.(1)
The TeXdraw commands to produce a drawing are inserted between
\btexdraw
and \etexdraw
commands, or for LaTeX, between
\begin{texdraw}
and \end{texdraw}
commands. This
results in a TeX box of appropriate size containing the drawing
generated by the TeXdraw commands. The TeXdraw box can be
positioned in a document like any other TeX box.
The \centertexdraw{...}
macro centers the box generated by
TeXdraw. The vertical space taken up is equal to the vertical size
of the drawing. The \centertexdraw
macro is normally used in
vertical mode (between paragraphs). A \par
command (a blank line
will do also) before a \centertexdraw
command will terminate
horizontal mode and return to vertical mode. For LaTeX, a structured
equivalent to the \centertexdraw{...}
command is shown below.
\begin{center} \begin{texdraw} ... \end{texdraw} \end{center}
The \everytexdraw
command can be used to define a set of
TeXdraw commands that will be executed at the beginning of every
TeXdraw drawing. It is invoked as \everytexdraw{ ...}
,
with the desired TeXdraw commands as arguments.
\btexdraw
\etexdraw
command.
\etexdraw
\btexdraw
command. The
resulting TeXdraw drawing is placed in a box with height equal to the
height of the drawing and width equal to the width of the drawing. The
depth of the box is zero.
\begin{texdraw}
\end{texdraw}
command. This command is for use with LaTeX.
\end{texdraw}
\begin{texdraw}
command. The resulting TeXdraw drawing is placed in a box with
height equal to the height of the drawing and width equal to the width
of the drawing. The depth of the box is zero. This command is for use
with LaTeX.
\centertexdraw{ ... }
\hsize
and
height equal to the height of the drawing.
\everytexdraw{ ... }
Generally TeXdraw commands that take a single argument need a terminating blank or newline after the argument. Arguments that are self-delimiting, such as coordinates within parentheses and text within braces, do not need the terminating blank. However, even when not needed by the defining syntax of the command, blanks following command arguments are allowed and ignored within the TeXdraw environment.
On entering the TeXdraw environment, TeX is in internal vertical
mode (vertical mode inside a \vbox
). In this mode, spaces can be
placed freely between commands. However, any other extraneous input
that generates output that is not part of the TeXdraw environment is
disallowed.
Blank lines are interpreted as paragraph breaks, equivalent to a
\par
command. The TeXdraw macro \centertexdraw
is
defined with the \long
attribute to allow \par
commands
and blank lines to be interspersed between TeXdraw commands. The
\btexdraw
and \etexdraw
commands also allow \par
command and blank lines to be included.
The TeXdraw coordinate system has increasing x to the right and increasing y upward. The coordinates (without the unit) are floating point numbers. Integer values can be written without a decimal point. The size of the drawing is determined by the maximum excursions of the coordinates specified in TeXdraw commands.
Consider the following example of TeXdraw commands to draw a simple figure.
\centertexdraw{ \drawdim cm \linewd 0.02 \move(2 2) \lvec(3 3) \lvec(2 4) \lvec(1 3) \lvec(2 2) \textref h:C v:C \htext(2 3){$\sum \rho_n$} }
This drawing uses units of centimetres, with a line width of 0.02 cm.
The x coordinate ranges between 1 and 3 while the y
coordinate ranges between 2 and 4. When included into a document, the
size of the drawing is 2 cm by 2 cm. The drawing is placed in a TeX
box, with the lower lefthand corner of the box corresponding to
TeXdraw coordinate (1 2)
and the upper righthand corner at
(3 4)
. The \centertexdraw
command centers the drawing
horizontally. The \textref
command controls the centering of the
text. The text in this drawing is centered (both horizontally and
vertically) at the coordinate (2 3)
.
Coordinates are specified within parentheses, with blanks (but no comma)
between the values. Leading blanks and trailing blanks are permitted
within the parentheses. The coordinates refer to units, which are
specified by the \drawdim
command. The default is inches, but
any valid TeX dimension unit can be specified. Symbolic
specification of saved coordinate values will be discused later
(see section 3.3 Saving positions).
\drawdim dim
cm
, mm
, in
,
pt
, and bp
.
Examples of coordinate and scaling specifications:
\drawdim {cm} \move(2 2)
\drawdim bp
\lvec ( 2.2 +5.5) \lvec(2.3 -2) \lvec(2.2 5.4 )
TeXdraw implements moves, line vectors and arrow vectors. There are
both absolute and relative motion versions of these vector commands.
TeXdraw maintains a current position. Lines are drawn from the
current position to a new coordinate, with the new coordinate becoming
the new current position. An explicit move can be used to establish a
new current position. The position (0 0)
is used if there is no
move to an initial current position.
The \move
and \rmove
commands establish a new current
position without drawing a line. The \lvec
and \rlvec
commands draw a line from the current position to a new position, which
then becomes the new current position. The \avec
and
\ravec
commands draw a line with an arrowhead from the current
position to a new coordinate, which then becomes the new current
position. The tip of the arrow is at the new current position. The
direction of the arrow follows the direction of the line. Since this
direction is undefined for zero length vectors, these are not allowed
for \avec
or \ravec
. Zero length arrow vectors will
generate a PostScript print error: undefinedresult
. For any
non-zero length vector, the full size arrowhead is drawn, even if that
arrowhead is longer than the line length.
The absolute motion versions of these commands specify the coordinate of the final position.
\move (x y)
(x y)
. The new current position
is (x y)
.
\lvec (x y)
(x
y)
. The new current position is (x y)
.
\avec (x y)
(x y)
. The new current position is (x
y)
. The arrowhead is aligned with the line, with the tip at
(x y)
.
The relative motion versions of these commands interpret the coordinates
as displacements relative to the current position. Given the
displacements (dx dy)
as a parameter, each of the
relative motion commands moves dx units in the x direction
and dy units in the y direction.
\rmove (dx dy)
\rlvec (dx dy)
\ravec (dx dy)
Lines can be customized with commands to change the line width, line pattern and line gray level rendition. In addition, commands for changing the type and size of the arrowhead are available.
\linewd width
\lpatt (pattern)
(pattern)
. A pattern is a
sequence of on/off lengths separated by blanks and enclosed in parentheses.
The lengths alternately specify the length of a dash and the length of a
gap between dashes. Each length is interpreted using the current
scaling and drawing units. The pattern is used cyclically. The empty
pattern signifies a solid line. The initial line pattern is a solid
line, corresponding to the empty pattern \lpatt ()
.
\setgray level
\arrowheadtype t:type
F
, T
, W
, V
, or H
. There are two
kinds of arrowheads. The first kind is a triangle. There are 3
variants: type T
is an empty triangle, type F
is a filled
triangle (using the current gray level for lines), type W
is a
triangle filled with white. The second kind of arrowhead is an open
ended Vee. There are 2 variants: type V
has the stem continue to
the tip, type H
has the stem stop at the base of the arrowhead.
The initial arrowhead type is T
.
\arrowheadsize l:length w:width
Note that the lines which outline the arrowhead will be drawn with the
same line pattern used for the stem. Normally, arrow vectors are drawn
with the line pattern set for a solid line. Note that the fill level
used for the F
variant of the arrowhead uses the same gray level
as used for lines. The difference between the T
variant and the
W
variant only shows up if the arrowhead is placed over non-white
areas of the drawing. The W
variant obliterates the area under
the arrowhead.
Examples of line parameter and arrowhead settings are shown in the following code.
\centertexdraw{ \drawdim in \linewd 0.03 \setgray 0.6 \arrowheadtype t:F \avec(0 0.5) \linewd 0.01 \setgray 0 \arrowheadtype t:V \avec(0.5 0.5) \linewd 0.015 \lpatt(0.067 0.1) \lvec (1 0) \linewd 0.02 \lpatt() \arrowheadtype t:T \avec(1.5 0.5) \arrowheadtype t:H \avec(2.0 0.5) \setgray 0.4 \arrowheadtype t:W \avec(3.0 0) }
Text may be superimposed on the drawing. The text argument of the
\htext
command is in horizontal mode. This text can be ordinary
text, math mode expressions, or even more complicated boxes consisting
of tables and the like. The resulting TeX text is placed in a box.
The reference point of the box can be chosen to be one of nine
locations: horizontally left, center or right; vertically top, center or
bottom. The \htext
command takes one of two forms.
\htext (x y){text}
\htext {text}
(x y)
. The new current position is (x
y)
. The second form of this command places the TeX text
text horizontally with the text reference point at the current
position. The text reference point is set with the \textref
command.
Text can be placed vertically using the \vtext
command. The text
argument is in horizontal mode. The TeX text is placed in a box and
then rotated counterclockwise. The reference point is the point in the
box, before rotation of the text. Not all PostScript printer
drivers support vertical text.
\vtext (x y){text}
\vtext {text}
(x y)
. The new current position is (x
y)
. The second form of this command places the TeX text
text vertically with the text reference point at the current
position. In both cases, the TeX text is placed in a box and the box
is rotated counterclockwise by 90 degrees about the text reference
point. The text reference point is set with the \textref
command.
Text can be placed at an arbitrary angle using the \rtext
command. The text argument is in horizontal mode. The TeX text is
placed in a box and then rotated counterclockwise. The reference point
is the point in the box, before rotation of the text. Not all
PostScript printer drivers support rotated text.
\rtext td:angle (x y){text}
\rtext td:angle {text}
(x
y)
. The new current position is (x y)
. The
second form of this command places the TeX text text at an
angle with the text reference point at the current position. In both
cases, the TeX text is placed in a box and the box is rotated
counterclockwise by angle degrees about the text reference point.
The text reference point is set with the \textref
command.
The reference point for subsequent TeX text in a \htext
,
\vtext
or \rtext
command is set with the \textref
command.
\textref h:h-ref v:v-ref
L
, C
or
R
(left, center or right). The vertical reference point
v-ref is one of T
, C
or B
(top, center or
bottom). For rotated text, the reference point is determined before
rotation. The initial text reference point corresponds to
\textref h:L v:B
.
The font used to render the text is determined as for any other TeX text. Normally the font used outside of TeXdraw is in effect. If desired, other fonts can be specified as part of the text. Any font changes within a TeXdraw text command remain local to that command.
Only the coordinate of the text reference point in a \htext
,
\vtext
or \rtext
command is used in calculating the size
of the drawing. This means that text itself can spill outside of the
drawing area determined by TeXdraw. The area of the drawing can be
increased to include the text by issuing additional \move
commands.
\centertexdraw{ \avec(-0.75 -0.25) \textref h:R v:C \htext{H-text} \move(0 0) \avec(-0.75 +0.25) \textref h:R v:B \htext{H-text} \move(0 0) \avec(0 +0.5) \textref h:L v:T \vtext{V-text} \move(0 0) \avec(+0.75 +0.25) \textref h:L v:B \htext{H-text} \move(0 0) \avec(+0.75 -0.25) \textref h:L v:C \htext{H-text} }
TeXdraw supplies commands to generate circles, ellipses and arcs.
There are two forms of the circle command. The \lcir
command
draws a circle of given radius. The \fcir
command draws a filled
circle. In the latter case, the circle is filled by a specified gray
level. For the filled circle, the line defining the circumference of
the circle is not drawn. Note that the gray level area filled in by the
\fcir
command is opaque, even if the fill is chosen to be white.
For either form of the circle command, the drawing size is increased if
necessary to contain the circle.
The \lellip
command generates an ellipse specified by the radius
of the ellipse in the x direction and the radius of the ellipse in
the y direction. The ellipse is symmetrical about horizontal and
vertical lines drawn through the current point. The \fellip
command draws a filled ellipse. In the latter case, the ellipse is
filled by a specified gray level. For the filled ellipse, the line
defining the boundary of the ellipse is not drawn. For either form of
the ellipse command, the drawing size is increased if necessary to
contain the ellipse.
The \larc
command generates a counterclockwise arc specified by a
start angle in degrees and an end angle in degrees. The center of the
arc is the current position. Only the arc is drawn, not the line
joining the center to the beginning of the arc. Note that the
\larc
command does not affect the size of the drawing.
\lcir r:radius
\fcir f:level r:radius
\lellip rx:x-radius ry:y-radius
\fellip f:level rx:x-radius ry:y-radius
\larc r:radius sd:start-angle ed:end-angle
As an example, the following commands draw a filled circle, and superimpose an arc.
\centertexdraw{ \linewd 0.02 \fcir f:0.7 r:1 \larc r:1 sd:45 ed:135 \lvec (+0.707 +0.707) \move (0 0) \lvec (-0.707 +0.707) }
Note that for the arc command, the resulting figure can spill outside of the TeXdraw box as determined by the maximum excursions of the coordinates. Extra moves can be used to compensate for the size of the arc.
Bezier curves in TeXdraw use 4 reference coordinates, two as the end
points and two others to control the shape of the curve. Let the 4
points be (x0 y0)
, (x1 y1)
,
(x2 y2)
and (x3 y3)
. The curve
starts out tangent to the line joining the first two points and ends up
tangent to the line joining the second two points. The control points
"pull" at the curve to control the curvature. The amount of pull
increases with the distance of the control point from the endpoint.
As the parameter u varies from 0 to 1, the coordinates of the Bezier curve are given by a pair of parametric cubic equations,
x(u) = (1-u)^3 x0 + 3u (1-u)^2 x1 + 3u^2 (1-u) x2 + u^3 x3 y(u) = (1-u)^3 y0 + 3u (1-u)^2 y1 + 3u^2 (1-u) y2 + u^3 y3 .
\clvec (x1 y1)(x2 y2)(x3 y3)
(x3 y3)
which becomes the new current position. The
coordinates (x1 y1)
and (x2 y2)
serve as control points for the curve. Only the last coordinate given
is used to update the size of the drawing.
Note that only 3 coordinate pairs are specified. The other point is the
current position before the \clvec
command is executed. Only the
last coordinate specified in the \clvec
command is used to
determine the extent of the drawing. While the Bezier curve passes
through the old current position and the new current position, in
general the curve will not reach the intermediate control points. The
curve is always entirely enclosed by the convex quadrilateral defined by
the two end points and the two control points. Note that the curve may
pass outside the limits of the drawing as determined by the end point of
the curve.
A simple Bezier curve is produced by the following example.
\btexdraw \move (0 0) \clvec (0 1)(1 0)(1 1) \etexdraw
PostScript deals with paths consisting of line segments. The paths can
be closed and the interior of the closed region filled. From
TeXdraw, paths start with a \move
or \rmove
command and
continue with \lvec
, \rlvec
or \clvec
commands.
The TeXdraw fill commands close the path and fill the interior of the
closed region. Closing the path means that effectively another
\lvec
line is drawn from the last point specified to the initial
point. TeXdraw provides two forms of the fill command. The
\ifill
fills the interior of the region with the given gray
level. The lines defining the path are not drawn. The \lfill
command fills the region defined by the closed path and draws a line
along the enclosing path. Note for both forms of the fill command, the
gray level used for filling is opaque, even if the gray level is chosen
to be white.
\lfill f:level
\ifill f:level
The following example draws a "flag" with the interior filled in. The
path around the boundary is given in a clockwise order to define a
closed path. We could take advantage of the fact that the fill command
will close an open path to eliminate one of the \lvec
commands.
\centertexdraw{ \move (0.5 0) \lvec (0 0.5) \clvec (0.5 0.85)(1 0.65)(1.5 1) \lvec (2 0.5) \clvec (1.5 0.15)(1 0.35)(0.5 0) \lfill f:0.8 }
In TeXdraw, the \move
command always terminates any previous
paths and starts a new path. Commands that change line parameters
(e.g. \setgray
or \lpatt
) also terminate paths and start
new paths. The circle, ellipse and arc commands do not affect the
definition of the current path. The \avec
command is not
appropriate for defining a path to be filled. It ends a subpath at its
tail and begins a new subpath at its tip. Filling a region defined by a
path with subpaths is more complicated in that each subpath is closed
before filling.
Go to the first, previous, next, last section, table of contents.