summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/doc/info/texdraw.info
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2013-04-07 18:26:53 +0000
committerKarl Berry <karl@freefriends.org>2013-04-07 18:26:53 +0000
commitb04c2e1a42573e9735547702356c7b9a769a6855 (patch)
treec0753443f39500a062d7698fe6b94359c813f871 /Master/texmf-dist/doc/info/texdraw.info
parentfb0bf13304a356f197bfc1add17f98c07e96f17b (diff)
texmf -> texmf-dist: doc
git-svn-id: svn://tug.org/texlive/trunk@29714 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/doc/info/texdraw.info')
-rw-r--r--Master/texmf-dist/doc/info/texdraw.info2429
1 files changed, 2429 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/info/texdraw.info b/Master/texmf-dist/doc/info/texdraw.info
new file mode 100644
index 00000000000..2458b4f3b33
--- /dev/null
+++ b/Master/texmf-dist/doc/info/texdraw.info
@@ -0,0 +1,2429 @@
+This is texdraw, produced by makeinfo version 4.5 from texdraw.texi.
+
+ This file documents TeXdraw, a system for producing PostScript
+drawings from TeX.
+
+ Copyright (C) 1993-95 Peter Kabal
+
+ Permission is granted to make and distribute verbatim copies of this
+manual provided the copyright notice and this permission notice are
+preserved on all copies.
+
+ Permission is granted to copy and distribute modified versions of this
+manual under the conditions for verbatim copying, provided that the
+entire resulting derived work is distributed under the terms of a
+permission notice identical to this one.
+
+
+File: texdraw, Node: Top, Next: Introduction, Prev: (dir), Up: (dir)
+
+TeXdraw
+*******
+
+ TeXdraw is a collection of macros that allow drawings to be created
+from _within_ TeX.
+
+ This is edition 2.0 of the TeXdraw documentation.
+
+* Menu:
+
+* Introduction::
+* TeXdraw Commands::
+* Drawing Segments and Scaling::
+* Using TeXdraw with LaTeX::
+* More Details::
+* PostScript Commands::
+* TeXdraw Toolbox::
+* Examples::
+* Command Listing::
+
+Indices
+* Concept Index::
+* Command Index::
+
+ --- The Detailed Node Listing ---
+
+Introduction
+
+* Distribution::
+
+TeXdraw Commands
+
+* Accessing TeXdraw::
+* Command syntax::
+* TeXdraw coordinates::
+* Coordinate specification::
+* Line vectors::
+* TeX text::
+* Circles and arcs::
+* Bezier curves::
+* Fill commands::
+
+Drawing Segments and Scaling
+
+* Drawing segments::
+* Drawing paths::
+* Saving positions::
+* Scaling coordinates::
+* Drawing size::
+* Initial current position::
+
+Using TeXdraw with LaTeX
+
+* PostScript printer drivers::
+
+More Details
+
+* Errors while using TeXdraw::
+* Extending TeXdraw::
+* How TeXdraw merges graphics and text::
+
+Extending TeXdraw
+
+* Scaling::
+* Resolution::
+* Text placement::
+* Intermediate PostScript file::
+
+PostScript Commands
+
+TeXdraw Toolbox
+
+* Coordinate parsing::
+* Real arithmetic::
+* Arrow curve::
+
+Examples
+
+* Block diagram::
+* Filter response graph::
+* Geometric construction::
+
+Command Listing
+
+Command Index
+
+Concept Index
+
+
+File: texdraw, Node: Introduction, Next: TeXdraw Commands, Prev: Top, Up: Top
+
+Introduction
+************
+
+ TeX is a powerful typesetting program which allows for complex text
+layouts but by itself lacks a general graphics capability. However,
+when coupled with an appropriate printer driver program, external
+graphics files can be inserted into the printed document. In this mode,
+TeX is instructed to leave space for a drawing. The drawing is
+inserted by the printer driver program. The TeXdraw macros described
+here generate the external graphics file from within TeX and generate
+the instructions to the the print driver program to position the
+graphics at the appropriate position on the page.
+
+ TeXdraw consists of a set of TeX macros that create line drawings and
+other figures. The drawing primitives include solid lines, patterned
+lines, Bezier curves, circles and arrows. Other commands allow for the
+filling of a region with a gray level. The drawing commands generate
+PostScript code. This limits TeXdraw to systems which use PostScript
+printers. TeXdraw also provides commands to position TeX text,
+including mathematics, on the drawing. The final drawing, with text
+and graphics, can be positioned on the page like any other TeX box.
+
+ The basic TeXdraw macros for TeX use the `\special' syntax recognized
+by the printer driver program `dvips'. However, when invoked as a
+LaTeX2e package, the TeXdraw macros can be used with any of the
+PostScript printer driver programs supported by the standard `graphics'
+package for LaTeX2e.
+
+ The basic TeXdraw macros provide only simple drawing commands.
+However, TeXdraw provides a drawing segment environment which allows
+parameter changes and coordinate scaling changes to be kept local to the
+drawing segment. This facility, together with TeX's macro capabilities
+allows one to modularize drawing units and extend TeXdraw by building
+more complex graphics entities from simpler elements.
+
+* Menu:
+
+* Distribution::
+
+
+File: texdraw, Node: Distribution, Up: Introduction
+
+Distribution information
+========================
+
+ The TeXdraw routines are provided free of charge without warranty of
+any kind. Note that the TeXdraw routines are copyrighted. They may be
+distributed freely provided that the recipients also acquire the right
+to distribute them freely. The notices to this effect must be
+preserved when the source files are distributed.
+
+
+File: texdraw, Node: TeXdraw Commands, Next: Drawing Segments and Scaling, Prev: Introduction, Up: Top
+
+Using the TeXdraw Commands
+**************************
+
+ 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.
+
+* Menu:
+
+* Accessing TeXdraw::
+* Command syntax::
+* TeXdraw coordinates::
+* Coordinate specification::
+* Line vectors::
+* TeX text::
+* Circles and arcs::
+* Bezier curves::
+* Fill commands::
+
+
+File: texdraw, Node: Accessing TeXdraw, Next: Command syntax, Up: TeXdraw Commands
+
+Accessing 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'
+ Start a TeXdraw drawing. The drawing is terminated with an
+ `\etexdraw' command.
+
+`\etexdraw'
+ End a TeXdraw drawing started with a `\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}'
+ Start a TeXdraw drawing. The drawing is terminated with an
+ `\end{texdraw}' command. This command is for use with LaTeX.
+
+`\end{texdraw}'
+ End a TeXdraw drawing started with a `\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{ ... }'
+ Center a TeXdraw box horizontally. The argument contains TeXdraw
+ commands. The resulting box has the horizontal size `\hsize' and
+ height equal to the height of the drawing.
+
+`\everytexdraw{ ... }'
+ Specify TeXdraw commands to be executed at the beginning of every
+ TeXdraw drawing.
+
+ ---------- Footnotes ----------
+
+ (1) After the ninth PostScript file, the name of the intermediate
+PostScript file takes the form `NAME.p10', with the number increasing
+from 10 with each file.
+
+
+File: texdraw, Node: Command syntax, Next: TeXdraw coordinates, Prev: Accessing TeXdraw, Up: TeXdraw Commands
+
+Command syntax
+==============
+
+ 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.
+
+
+File: texdraw, Node: TeXdraw coordinates, Next: Coordinate specification, Prev: Command syntax, Up: TeXdraw Commands
+
+TeXdraw coordinates
+===================
+
+ 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)'.
+
+
+File: texdraw, Node: Coordinate specification, Next: Line vectors, Prev: TeXdraw coordinates, Up: TeXdraw Commands
+
+Coordinate specification
+========================
+
+ 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 (*note
+Saving positions::).
+
+`\drawdim DIM'
+ Set the units to DIM. The argument DIM can be any valid TeX
+ dimension unit. The units are used to interpret coordinate
+ values. Examples of valid units: `cm', `mm', `in', `pt', and `bp'.
+
+ Examples of coordinate and scaling specifications:
+`\drawdim {cm} \move(2 2)'
+ Set the units to centimetres, move to a position 2 cm to the right
+ and 2 cm up from the origin of the drawing coordinate system.
+
+`\drawdim bp'
+ Set the units to big points.
+
+`\lvec ( 2.2 +5.5) \lvec(2.3 -2) \lvec(2.2 5.4 )'
+ Examples of acceptable coordinate specifications.
+
+
+File: texdraw, Node: Line vectors, Next: TeX text, Prev: Coordinate specification, Up: TeXdraw Commands
+
+Line vectors
+============
+
+ 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)'
+ Move to coordinate `(X Y)'. The new current position is `(X Y)'.
+
+`\lvec (X Y)'
+ Draw a line from the current position to coordinate `(X Y)'. The
+ new current position is `(X Y)'.
+
+`\avec (X Y)'
+ Draw a line with an arrowhead from the current position to `(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)'
+ Move from the current position, DX units in the X direction and DY
+ units in the Y direction. The final position becomes the new
+ current position.
+
+`\rlvec (DX DY)'
+ Draw a line from the current position, DX units in the X direction
+ and DY units in the Y direction. The final position becomes the
+ new current position.
+
+`\ravec (DX DY)'
+ Draw a line with an arrowhead from the current position, DX units
+ in the X direction and Y units in the Y direction. The final
+ position becomes the new current position. The arrowhead is
+ aligned with the line, with the tip at the new current position.
+
+ 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'
+ Set the line width to WIDTH units. Initially WIDTH is 0.01 inches
+ (corresponding to 3 pixels at 300 pixels to the inch).
+
+`\lpatt (PATTERN)'
+ Set lines to have the 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'
+ Set the gray level of lines. Gray levels are real values from 0
+ (black) through intermediate values (gray) to 1 (white). The
+ initial gray level is 0 corresponding to black.
+
+`\arrowheadtype t:TYPE'
+ Set the arrowhead type to TYPE, where TYPE is one of `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'
+ Set the arrowhead size to be LENGTH units long and WIDTH units
+ wide. The width is measured across the "base" of the arrowhead.
+ The initial arrowhead size has a LENGTH of 0.16 inches and a WIDTH
+ of 0.08 inches.
+
+ 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)
+ }
+
+
+File: texdraw, Node: TeX text, Next: Circles and arcs, Prev: Line vectors, Up: TeXdraw Commands
+
+TeX text
+========
+
+ 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}'
+ The first form of this command places the TeX text TEXT
+ horizontally with the text reference point at the coordinate `(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}'
+ The first form of this command places the TeX text TEXT vertically
+ with the text reference point at the coordinate `(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}'
+ The first form of this command places the TeX text TEXT at an
+ angle with the text reference point at the coordinate `(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'
+ Set the text reference point for subsequent text commands. The
+ horizontal reference point H-REF is one of `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}
+ }
+
+
+File: texdraw, Node: Circles and arcs, Next: Bezier curves, Prev: TeX text, Up: TeXdraw Commands
+
+Circles, ellipses and arcs
+==========================
+
+ 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'
+ Draw a circle with center at the current position. The radius is
+ specified by RADIUS. This command draws a line along the
+ circumference of the circle. The drawing size is increased if
+ necessary to contain the circle.
+
+`\fcir f:LEVEL r:RADIUS'
+ Draw a filled circle with center at the current position. The
+ radius is specified by RADIUS. The circle is painted with the
+ gray level specified by LEVEL. A gray level of 1 corresponds to
+ white, with decreasing values getting darker. The level 0 is full
+ black. This command does not draw a line along the circumference.
+ The drawing size is increased if necessary to contain the circle.
+
+`\lellip rx:X-RADIUS ry:Y-RADIUS'
+ Draw an ellipse with center at the current position. The radius
+ in the X direction is specified by X-RADIUS. The radius in the Y
+ direction is specified by Y-RADIUS. The drawing size is increased
+ if necessary to contain the ellipse.
+
+`\fellip f:LEVEL rx:X-RADIUS ry:Y-RADIUS'
+ Draw a filled ellipse with center at the current position. The
+ radius in the X direction is specified by X-RADIUS. The radius in
+ the Y direction is specified by Y-RADIUS. The ellipse is painted
+ with the gray level specified by LEVEL. A gray level of 1
+ corresponds to white, with decreasing values getting darker. The
+ level 0 is full black. This command does not draw a line along
+ the boundary of the ellipse. The drawing size is increased if
+ necessary to contain the ellipse.
+
+`\larc r:RADIUS sd:START-ANGLE ed:END-ANGLE'
+ Draw a counterclockwise arc. The center of the arc is at the
+ current position. The radius is specified by RADIUS. The start
+ and end angles (in degrees) are specified by START-ANGLE and
+ END-ANGLE. This command does not affect the limits (size) of the
+ drawing.
+
+ 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.
+
+
+File: texdraw, Node: Bezier curves, Next: Fill commands, Prev: Circles and arcs, Up: TeXdraw Commands
+
+Bezier curves
+=============
+
+ 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)'
+ Draw a Bezier curve from the current position to the coordinate
+ `(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
+
+
+File: texdraw, Node: Fill commands, Prev: Bezier curves, Up: TeXdraw Commands
+
+Fill commands
+=============
+
+ 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'
+ Close the current path, draw the line around the path using the
+ current grey level for lines and paint the interior of the region
+ with specified gray level LEVEL. Gray levels are real values from
+ 0 (black) through intermediate values (grays) to 1 (white).
+
+`\ifill f:LEVEL'
+ Close the current path and paint the interior of the region with
+ gray level LEVEL. The line around the path is not drawn. Gray
+ levels are real values from 0 (black) through intermediate values
+ (grays) to 1 (white).
+
+ 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.
+
+
+File: texdraw, Node: Drawing Segments and Scaling, Next: Using TeXdraw with LaTeX, Prev: TeXdraw Commands, Up: Top
+
+Drawing Segments and Scaling
+****************************
+
+ TeXdraw provides individually scaled segments which can be used to
+create relocatable drawing modules.
+
+* Menu:
+
+* Drawing segments::
+* Drawing paths::
+* Saving positions::
+* Scaling coordinates::
+* Drawing size::
+* Initial current position::
+
+
+File: texdraw, Node: Drawing segments, Next: Drawing paths, Up: Drawing Segments and Scaling
+
+Drawing segments
+================
+
+ A TeXdraw drawing segment allows for local modifications of
+parameters and relative positioning. A TeXdraw segment is delimited by
+a `\bsegment' command and an `\esegment' command. Inside the segment,
+the initial current position is `(0 0)'. Any changes to parameters
+such as the gray level and the line width, remain local to the segment.
+Segments are implemented in TeX using a `\begingroup' and `\endgroup'.
+Segments can be nested.
+
+`\bsegment'
+ Start a drawing segment. The coordinate system is shifted such
+ that the current position corresponds to the coordinate `(0 0)'.
+ Changes to scaling, position and line parameters stay local to the
+ drawing segment.
+
+`\esegment'
+ End a drawing segment. The current position in effect before the
+ corresponding `\bsegment' command is restored. The scaling and
+ line parameter values revert to those in effect before the
+ corresponding `\bsegment' command was invoked.
+
+
+File: texdraw, Node: Drawing paths, Next: Saving positions, Prev: Drawing segments, Up: Drawing Segments and Scaling
+
+Drawing paths
+=============
+
+ Certain subtle interactions occur between drawing segments and fill
+operations. In PostScript, lines are drawn by first defining a path,
+then later stroking the path to draw the line. In TeXdraw, this
+stroking occurs when the line is terminated, say by a `\move' command.
+PostScript paths are interrupted by, but continue after a drawing
+segment. This means that a path started before a segment may not be
+stroked (drawn) until after the segment ends. Consider the following
+example.
+ \move (0 0)
+ \lvec (1 1)
+ \bsegment
+ \move (-0.25 -0.25)
+ \fcir f:0.8 r:0.5
+ \esegment
+ \move (0 0)
+A PostScript path is started at `(0 0)' and continues with a line
+to `(1 1)'. This path is interrupted by the segment. The filled
+circle is drawn next. After the segment, the path continues and is not
+stroked until the `\move (0 0)' command after the end of the segment.
+This means that the line appears on top of the filled region.
+
+ If the fill operation is to cover the line, the path must be stroked
+before the fill operation. From TeXdraw, the move commands `\move' and
+`\rmove', and the end TeXdraw command `\etexdraw' terminate a path and
+cause it to be stroked. Within a segment, the end segment command
+`\esegment' also terminates and strokes a path. In the example above,
+the line can be stroked by inserting a move command (such as a `\rmove
+(0 0)' which does not affect the position), before the start of the
+segment.
+
+
+File: texdraw, Node: Saving positions, Next: Scaling coordinates, Prev: Drawing paths, Up: Drawing Segments and Scaling
+
+Saving positions
+================
+
+ The `\savecurrpos' command saves the current position. The saved
+position is an absolute position, not one relative to a segment. The
+position saving mechanism is global; the position can be saved within a
+nested segment and then used outside of the segment. The X and Y
+coordinates of the position are saved separately as named coordinates.
+The names are of the form `*NAME', with the leading `*' being
+obligatory. A companion command, `\savepos', saves a given coordinate
+(relative to the current segment) as an absolute symbolic position.
+
+`\savecurrpos (*PX *PY)'
+ Save the current position as the absolute position referenced by
+ `(*PX *PY)'.
+
+`\savepos (X Y)(*PX *PY)'
+ Save the coordinate position `(X Y)' as the absolute position
+ referenced by `(*PX *PY)'. The coordinate `(X Y)' is interpreted
+ in the normal fashion as a coordinate relative to the current
+ segment, using the current scaling factors and drawing unit.
+
+ The symbolic names used to specify a saved position can consist of any
+characters that are not special to TeX, but must start with a `*'
+character. The symbolic names can be used as the X and/or Y coordinate
+in any command that needs a coordinate. Symbolic coordinates are not
+normally used with relative motion commands such as `\rlvec' or
+`\rmove'. If used with relative motion, the corresponding displacement
+is equal to the symbolic coordinate value.
+
+ On exit from a segment, the position and graphics state on entry is
+restored. Any changes to line types, scaling and position are
+discarded. However, it is sometimes useful alter the position on exit
+from a segment. The `\savepos' command allows for the saving of a
+position within the segment. This position can be restored after the
+`\esegment' with a `\move' command using the saved symbolic position.
+This approach can be used to build modules which operate in a manner
+analogous to the basic relative motion line vector commands.
+
+ The following example defines a macro which draws a box 0.75 inches
+wide by 0.5 inches high containing centered text. On leaving the macro
+the position will be set at a point on the righthand side of the box.
+ \def\tbox #1{\bsegment
+ \lvec (0 +0.25) \lvec (0.75 +0.25)
+ \lvec (0.75 -0.25) \lvec (0 -0.25) \lvec (0 0)
+ \textref h:C v:C \htext (0.375 0){#1}
+ \savepos (0.75 0)(*ex *ey)
+ \esegment
+ \move (*ex *ey)}
+With this definition, we can treat `\tbox' in the same way as the
+basic vector commands, stringing them together to form a block diagram
+as in this example.
+ \centertexdraw{
+ \ravec (1 0) \tbox{$H(z)$} \ravec (1 0)
+ }
+
+
+File: texdraw, Node: Scaling coordinates, Next: Drawing size, Prev: Saving positions, Up: Drawing Segments and Scaling
+
+Scaling coordinates
+===================
+
+ There are two scale factors available, the unit scale factor and the
+segment scale factor. The overall scale factor is the product of these
+two. There are absolute and relative versions of commands to change
+these scale factors.
+
+ The unit scale factor is normally used to affect global scale changes.
+Changes to the unit scale factor remains local to a segment, but
+propagate to inferior segments. The default value is unity.
+
+ The segment scale factor is used for local scale changes. It remains
+local to a segment. The segment scale factor is reset to unity on entry
+into each segment. This means that changes to the segment scale factor
+do not propagate to inferior segments.
+
+`\setunitscale SCALE'
+ Set the unit scaling to SCALE. The argument SCALE is a real
+ number which is used to scale coordinate values. The overall
+ scaling factor is the product of the unit scale factor and the
+ segment scale factor.
+
+`\relunitscale VALUE'
+ Adjust the unit scale factor by multiplying by VALUE. This has
+ the effect of multiplying the overall scale factor by the same
+ factor. The overall scaling factor is the product of the unit
+ scale factor and the segment scale factor.
+
+`\setsegscale SCALE'
+ Set the segment scale factor. The argument SCALE is a real number
+ which is used to scale coordinate values. The overall scale
+ factor is the product of the unit scale factor and the segment
+ scale factor.
+
+`\relsegscale VALUE'
+ Adjust the segment scale factor by multiplying by VALUE. This has
+ the effect of multiplying the current overall scale factor by the
+ same factor. The overall scaling factor is the product of the
+ unit scale factor and the segment scale factor.
+
+ In addition to the unit scale factor and the segment scale factor, the
+scaling can be controlled by the choice of drawing units with the
+command `\drawdim' (*note Coordinate specification::).
+
+`\drawdim cm \setunitscale 2.54'
+ Set the units to centimetres scaled by 2.54. Together these
+ commands are effectively the same as `\drawdim in'.
+
+ The segment scale can be used to allow scale changes in segments so
+that values are in more convenient units. For example suppose
+dimensions in a segment are multiples of one third of an inch. The
+segment scale can be set once to make 1 drawing unit equal 0.3333
+inches. From that point on, coordinates can be specified with integer
+values.
+
+ The following example defines a macro to draw a rectangular box which
+is twice as wide as it is high. The width is specified as an argument.
+ \def\mybox #1{\bsegment
+ \setsegscale #1
+ \lvec (0 +0.25) \lvec (1 +0.25) \lvec (1 -0.25)
+ \lvec (0 -0.25) \lvec (0 0)
+ \esegment}
+
+
+File: texdraw, Node: Drawing size, Next: Initial current position, Prev: Scaling coordinates, Up: Drawing Segments and Scaling
+
+Drawing size
+============
+
+ The effective size of the drawing is determined by the maximum
+excursions of the coordinates supplied to TeXdraw commands. The
+minimum and maximum scaled X and Y coordinates are tallied. Note that
+`\move' commands contribute to the determination of the calculated size
+of the drawing, even though they do not generate visible lines. The
+circle and ellipse commands add a compensation for the radii of circles
+and ellipses. The final TeXdraw drawing is placed in a TeX box with
+lower lefthand corner corresponding to `('X-min Y-min`)' and upper
+righthand corner at `('X-max Y-max`)'.
+
+ Text generated by `\htext', `\vtext' or `\rtext' can spill outside
+the box as determined above. Only the text reference point is
+guaranteed to be in the drawing box. Arcs can also spill outside the
+drawing box. Note also that the widths of lines, and the sizes of
+arrowheads do not affect the size of the drawing. The calculated size
+of the drawing will never be larger than the actual size of the
+drawing. In extreme cases in which text or lines extend far outside
+the drawing, extra `\move' commands should be used to establish the
+size of the drawing so that the TeXdraw box includes all of the drawing.
+
+ TeXdraw provides the `\drawbb' command to draw a box which indicates
+the effective size of the drawing. Whenever `\drawbb' is invoked, a
+ruled box is drawn around the drawing as it has been sized up to that
+point. Normally `\drawbb' is invoked just before the end of a drawing
+to indicate the effective size of the final drawing.
+
+`\drawbb'
+ Draw a ruled box around the effective size of a drawing produced by
+ TeXdraw commands.
+
+
+File: texdraw, Node: Initial current position, Prev: Drawing size, Up: Drawing Segments and Scaling
+
+Initial current position
+========================
+
+ The first operation in a drawing should be a move to establish the
+current position. The current position can be established explicitly
+through a `\move' command or a text positioning command such as
+`\htext' with a coordinate. However, if an attempt is made to use a
+drawing command which needs a current position and none has been
+established, TeXdraw implicitly sets the initial current position to
+`(0 0)'. The size of the TeXdraw figure is normally determined from
+the sequence of coordinates specified, but will include the implicit
+initial position in case another initial position has not been
+explicitly specified.
+
+
+File: texdraw, Node: Using TeXdraw with LaTeX, Next: More Details, Prev: Drawing Segments and Scaling, Up: Top
+
+Using TeXdraw with LaTeX
+************************
+
+ The LaTeX typesetting system uses a structured approach to declaring
+typesetting environments. For LaTeX2e, the `texdraw' package defines
+the `texdraw' environment. The TeXdraw environment is started with a
+`\begin{texdraw}' command and terminated with an `\end{texdraw}'
+command. All of the basic TeXdraw commands can be used within the
+`texdraw' environment.
+
+ As an example, a LaTeX2e variant of an earlier example can be
+constructed as follows.
+ \documentclass{article}
+ \usepackage{texdraw}
+ ...
+ \begin{document}
+ ...
+ \newcommand{\tbox}[1]{%
+ \bsegment
+ \lvec (0 +0.25) \lvec (0.75 +0.25)
+ \lvec (0.75 -0.25) \lvec (0 -0.25) \lvec (0 0)
+ \textref h:C v:C \htext (0.375 0){#1}
+ \savepos (0.75 0)(*ex *ey)
+ \esegment
+ \move (*ex *ey)}
+ \begin{center}
+ \begin{texdraw}
+ \ravec (1 0) \tbox{$H(z)$} \ravec (1 0)
+ \end{texdraw}
+ \end{center}
+ ...
+ \end{document}
+
+ This example illustrates the use of the LaTeX command `\newcommand'
+as an alternative to the plain TeX command `\def'. Instead of the
+basic TeXdraw command `\centertexdraw', a nested combination of the
+LaTeX centering environment and the TeXdraw environment is used.
+
+* Menu:
+
+* PostScript printer drivers::
+
+
+File: texdraw, Node: PostScript printer drivers, Up: Using TeXdraw with LaTeX
+
+PostScript printer drivers
+==========================
+
+ The `texdraw' package uses the printer driver interface provided by
+the standard LaTeX2e `graphics' package. Any options to the `texdraw'
+package are passed to the `graphics' package. Specifically, the name
+of the PostScript driver to be used can be specified as an option to
+the `texdraw' package. With no explicit printer driver option, the
+default printer driver associated with the `graphics' package is used.
+
+ The `texdraw' package can be used with any of the printer drivers
+supported by the `graphics' package that allow for the importation of
+PostScript graphics files, viz., `dvips', `xdvi', `dvi2ps', `dvialw',
+`dvilaser', `dvipsone', `dviwindo', `dvitops', `oztex', `psprint',
+`textures', `pctexps', and `pctexwin'. Not all of these drivers
+support the text rotation needed for the TeXdraw commands `\vtext' and
+`\rtext'. Of the drivers listed above, only the following support
+support text rotation: `dvips', `xdvi', `dvi2ps', `dvitops',
+`textures', and `pctexps'.
+
+
+File: texdraw, Node: More Details, Next: PostScript Commands, Prev: Using TeXdraw with LaTeX, Up: Top
+
+More Details
+************
+
+ The first part of this chapter offers some suggestions for strategies
+to isolate errors in TeX and TeXdraw input. The second part of this
+chapter discusses implementational issues. An awareness of these issues
+is useful if TeXdraw is to be extended.
+
+* Menu:
+
+* Errors while using TeXdraw::
+* Extending TeXdraw::
+* How TeXdraw merges graphics and text::
+
+
+File: texdraw, Node: Errors while using TeXdraw, Next: Extending TeXdraw, Up: More Details
+
+Errors while using TeXdraw
+==========================
+
+ TeX input is notoriously difficult to debug. If TeX reports errors,
+so much the better. If the cause is not immediately obvious, consider
+using a binary search strategy, removing sections of code with the
+premature insertion of the `\bye' (or `\end{document}' for LaTeX)
+command (with the appropriate closing of any open groups and the like).
+Other strategies include the insertion of `\message{I am here}' at
+appropriate places. Try using `\tracingmacros=1'. Many problems turn
+out to be due to an incorrect number of macro arguments or incorrectly
+delimited macro arguments. The `\tracingmacros=1' option writes the
+macro arguments and macro expansions to the TeX log file.
+
+ Certain errors may not manifest themselves until well after the
+offending command. For instance, if a closing parenthesis is missing
+from a TeXdraw coordinate, TeX continues searching for the parenthesis.
+If one is found, perhaps many lines later, the TeXdraw error message
+`invalid coordinate' will be printed at this later point.
+
+ All input in the TeXdraw environment should be intended for
+interpretation by TeXdraw commands. TeXdraw places text inside a zero
+size box (the text itself extends outside the box). Extraneous input
+manifests itself as a non-zero size TeXdraw text box. This causes the
+TeXdraw text and the PostScript graphics to be displaced from one
+another. An error message is issued if a non-zero width TeXdraw text
+box is detected. If this error message appears, look for unintended
+character sequences amongst the commands to TeXdraw.
+
+ Several TeXdraw commands pass their arguments "raw" to the PostScript
+file. That means that invalid arguments can generate PostScript errors
+when the document is printed. For instance the argument of the
+`\setgray' command is passed straight through to the PostScript file.
+If this argument is non-numeric, a PostScript error results. Not all
+PostScript printers report errors back to the user. The print may just
+stop prematurely. One approach to debugging is to use a PostScript
+previewer on a workstation. That way, one can determine at which point
+in the drawing the PostScript error occurs.
+
+
+File: texdraw, Node: Extending TeXdraw, Next: How TeXdraw merges graphics and text, Prev: Errors while using TeXdraw, Up: More Details
+
+Extending TeXdraw
+=================
+
+ TeXdraw is implemented using a combination of TeX commands and
+PostScript code. This section discusses some of the implementational
+issues as they relate to extending TeXdraw.
+
+ TeXdraw as implemented, offers a basic set of drawing features.
+These are adequate for certain tasks such as producing block diagrams.
+There are different approaches to extending TeXdraw to include other
+functions. In some cases, the desired functionality can be achieved by
+writing a TeX macro which builds on top of the existing TeXdraw
+commands. As these extensions become more complex, the limitations of
+TeX for computations become increasingly evident. In other cases,
+access to different features of PostScript is desired. The appropriate
+approach would be to write new PostScript procedures which can be
+accessed by TeX macros.
+
+ Included with TeXdraw is a set of macros for directly accessing
+PostScript functions. These are described in an appendix (*note
+PostScript Commands::).
+
+ TeXdraw also comes with a toolbox of routines for handling much of
+the user interface, converting between different coordinate
+representations and the like. The macros for coordinate decoding and
+for computations involving coordinates are described in an appendix
+(*note TeXdraw Toolbox: TeXdraw Toolbox.).
+
+* Menu:
+
+* Scaling::
+* Resolution::
+* Text placement::
+* Intermediate PostScript file::
+
+
+File: texdraw, Node: Scaling, Next: Resolution, Up: Extending TeXdraw
+
+Scaling
+-------
+
+ The scaling commands provided in TeXdraw are designed to affect only
+the coordinate values specified in commands. For instance, changing the
+`\setunitscale' value changes the interpretation of the coordinate in
+an `\avec (X Y)' command, but does not change the line width or
+arrowhead sizes in effect. None of the TeXdraw scaling commands affect
+the size of TeX text produced by, for instance, the `\htext' command.
+Scale changes will however affect the positioning of text for
+subsequent commands.
+
+ The line parameters are changed only if the corresponding commands to
+change them are issued. If the `\linewd' command is given, the current
+coordinate scaling is used to determine the line width. To achieve a
+behaviour more like a global scaling, whenever the scale factor is
+changed, the line parameters should be set again.
+
+
+File: texdraw, Node: Resolution, Next: Text placement, Prev: Scaling, Up: Extending TeXdraw
+
+Resolution
+----------
+
+ TeXdraw scales coordinates before passing them to PostScript.
+Keeping track of the coordinate scaling is necessary, in any event, to
+allow TeXdraw to compute the maximum excursions of the coordinates.
+TeXdraw uses pixel units in its PostScript code. One pixel unit is
+equal to 1/300 of an inch. TeXdraw issues PostScript commands with
+integer valued pixel coordinates. This sets the positioning resolution
+for TeXdraw. The passing of integer valued coordinates which
+correspond to the device resolution keeps lines aligned with the device
+grid; parallel lines of the same width will be rendered with the same
+width.
+
+ The position saving mechanism in TeXdraw (*note Saving positions::)
+associates the pixel coordinates of a position with the specified name.
+
+ TeXdraw uses the limited real number representation provided by TeX.
+These operations are based on the representation of dimensions as
+real-valued numbers of points. Internally in TeX, dimensions are
+stored 32-bit values, normalized so that 1 pt corresponds to the scaled
+point (sp) value of 65536. Dimensions with magnitudes between 0.000015
+pt and 32767 pt can be represented. This is also the dynamic range of
+the TeXdraw pixel coordinates passed to PostScript. TeXdraw must
+convert from user supplied coordinates using the scaling factor (which
+itself consists of two components, the unit scale and the segment scale)
+and a pixel conversion factor. The use of limited precision real
+numbers in these computations can cause accumulation of error when
+relative scaling is used repeatedly.
+
+
+File: texdraw, Node: Text placement, Next: Intermediate PostScript file, Prev: Resolution, Up: Extending TeXdraw
+
+Text placement
+--------------
+
+ While in the TeXdraw environment, TeX text is placed in a TeX box
+while PostScript code is written to the intermediate file. At the end
+of the TeXdraw environment, the size of the drawing is determined. A
+TeX box of this size is created. The TeX `\special' mechanism is used
+to instruct the PostScript driver program to position the PostScript
+drawing from the intermediate file in this area. Next, the text
+generated by TeXdraw is positioned and placed in the box. Note that
+when the document is printed, the PostScript drawing is placed on the
+page before the TeX text; TeX text will appear on top of graphics.
+
+ The rotation of text is carried out with in-line PostScript code which
+does not appear in the intermediate PostScript file. This code is sent
+to the PostScript driver with a `\special' command. This PostScript
+code is embedded in the dvi (device independent) file that TeX produces.
+
+
+File: texdraw, Node: Intermediate PostScript file, Prev: Text placement, Up: Extending TeXdraw
+
+The intermediate PostScript file
+--------------------------------
+
+ The intermediate PostScript file consists of a header, a body and a
+trailer following Encapsulated PostScript File (EPSF) standards. The
+header sets up PostScript definitions and default parameter values. The
+trailer includes the `BoundingBox' information which gives the
+coordinates in default PostScript units (72 per inch) for the lower
+lefthand corner and the upper righthand corner of the drawing. The body
+of the intermediate PostScript file contains the PostScript commands
+generated by TeXdraw.
+
+ Many moves in TeXdraw serve only to position text or to reset saved
+positions. TeXdraw buffers move commands in order to be able to
+collapse runs of moves. Only the last move of a run of moves is
+actually written to the PostScript file. However the intermediate moves
+still affect the size of the drawing. The expunging of moves means that
+the PostScript file `BoundingBox' information may indicate a drawing
+size larger than the PostScript commands themselves would warrant.
+
+ Drawing segments in TeXdraw show up in the PostScript file as saves
+and restores of the PostScript graphics state. Segment starts are
+buffered and only written out if necessary. This way "empty" segments
+do not generate output to the PostScript file. These empty segments
+arise if a segment contains only moves and text commands. The moves
+inside the segment are not needed since they are local to the segment,
+and the text commands do not generate output to the PostScript file.
+
+ If TeXdraw is used only for moves and text, no intermediate
+PostScript file will be created.
+
+
+File: texdraw, Node: How TeXdraw merges graphics and text, Prev: Extending TeXdraw, Up: More Details
+
+How TeXdraw merges graphics and text
+====================================
+
+ TeXdraw creates a box which is the same size as the graphic. The
+printer driver will place the PostScript graphic into this space. Any
+TeX text generated by the TeXdraw commands will be superimposed on this
+graphic.
+
+ The LaTeX2e front-end for TeXdraw is enabled by including the
+`texdraw' package. The `texdraw' package automatically invokes the
+standard `graphics' package distributed with LaTeX2e. The `graphics'
+package has support for a number of different printer drivers,
+including a number for PostScript printers. Any options to the
+`texdraw' package are passed on to the `graphics' package. Such an
+option can be used to select a driver other than the default one.
+
+ Within the `graphics' package, the driver option is used to select
+definitions for the low-level macros which generate the `\special'
+commands needed to request insertion of a graphics file and to rotate
+text.(1) TeXdraw uses the user-level macros defined by the `graphics'
+package (*note PostScript printer drivers::). When not used with the
+LaTeX2e front-end, TeXdraw defines versions of these macros that are
+suitable for use with the `dvips' printer driver.
+
+ ---------- Footnotes ----------
+
+ (1) Not all PostScript drivers support text rotation.
+
+
+File: texdraw, Node: PostScript Commands, Next: TeXdraw Toolbox, Prev: More Details, Up: Top
+
+PostScript Commands
+*******************
+
+ This appendix describes a set of macros for accessing some of the
+PostScript builtin functions. Each of these macros issues a single
+PostScript command. The extra services provided by TeXdraw are the
+interpretation of coordinates in user units relative to the current
+drawing segment and the writing of a pending TeXdraw move to the
+PostScript file. This last operation establishes the current point in
+PostScript. The user of these commands should be familiar with the
+concepts of path construction and filling in PostScript. Further
+details on the PostScript functions used can found in the `PostScript
+Language Reference Manual, Second Edition', Adobe Systems,
+Addison-Wesley, 1990.
+
+ These macros are distributed in file `txdps.tex'.
+
+ The `\PSsetlinecap' and `\PSsetlinejoin' commands control the way
+line ends and line joins are rendered. The default values set by
+TeXdraw (round caps and round join) are appropriate for most drawings.
+Changes to these parameters apply to the current and subsequent paths.
+
+`\PSsetlinecap TYPE'
+ Set the line cap parameter. The value `0' gives a butt cap; `1'
+ gives a round cap; and `2' gives a projecting square cap. The
+ initial value is corresponds to a round cap.
+
+`\PSsetlinejoin TYPE'
+ Set the line join parameter. The value `0' gives a miter join;
+ `1' gives a round join; and `2' gives a bevel join. The initial
+ value corresponds to a round join.
+
+ PostScript paths and fill operations can be controlled by a number of
+functions. By design, TeXdraw always maintains a defined PostScript
+current point. Some of the following macros cause the PostScript
+current point to become undefined. The PostScript current point must be
+set again (say with a `\PSmoveto' command) before invoking basic
+TeXdraw commands.
+`\PSstroke'
+ Stroke a PostScript path. The current path is stroked with the
+ current gray level (set with `\setgray') and the current line
+ pattern (set with `\lpatt'). The PostScript current point becomes
+ undefined.
+
+`\PSnewpath'
+ Establish a new path. The PostScript current point becomes
+ undefined.
+
+`\PSclosepath'
+ Close a subpath. A new subpath is started.
+
+`\PSfill'
+ Fill a region defined by a path. Each subpath is closed and the
+ enclosed regions painted with the current gray level. The
+ PostScript current point becomes undefined. The gray level can be
+ set with the TeXdraw command `\setgray'.
+
+ The following line commands interpret coordinates relative to the
+current TeXdraw scaling and drawing segment. The specified coordinate
+affects the drawing size as determined by TeXdraw.
+`\PSlineto (X Y)'
+ Add a line segment to the current path. This command is identical
+ to the TeXdraw command `\lvec'. The PostScript current point must
+ be defined before this command is issued.
+
+`\PSmoveto (X Y)'
+ Move to the coordinate specified by `(X Y)'. The PostScript
+ current point becomes defined.
+
+ The following macros provide access to the general arc commands in
+PostScript. The coordinates are interpreted relative to the current
+TeXdraw scaling and drawing segment. The specified coordinate affects
+the drawing size as determined by TeXdraw.
+`\PSarc r:RADIUS sd:START-ANGLE ed:END-ANGLE (X Y)'
+ Draw a counterclockwise arc. The center of the arc is at the given
+ position. The radius is specified by RADIUS. The start and end
+ angles (in degrees) are specified by START-ANGLE and END-ANGLE.
+ If the PostScript current point is defined, this command also
+ draws the line from the current point to the beginning of the arc.
+ The line and arc become part of the current path. The current
+ point becomes defined.
+
+`\PSarcn r:RADIUS sd:START-ANGLE ed:END-ANGLE (X Y)'
+ Draw a clockwise arc. The center of the arc is at the given
+ position. The radius is specified by RADIUS. The start and end
+ angles (in degrees) are specified by START-ANGLE and END-ANGLE.
+ If the PostScript current point is defined, this command also
+ draws the line from the current point to the beginning of the arc.
+ The line and arc become part of the current path. The current
+ point becomes defined.
+
+ The macro `\writeps' provides the general facility to write arbitrary
+PostScript commands to the PostScript file. This macro is used by the
+preceding commands and by the TeXdraw commands themselves. This
+facility has to be used with care since changes in position or scaling
+resulting from the PostScript commands are not known to TeXdraw.
+`\writeps {<PS-COMMANDS>}'
+ Write PostScript commands to the intermediate PostScript file.
+ Before the commands are inserted, any pending TeXdraw move is
+ written to the PostScript file. The PostScript scaling gives 300
+ units/inch.
+
+
+File: texdraw, Node: TeXdraw Toolbox, Next: Examples, Prev: PostScript Commands, Up: Top
+
+TeXdraw Toolbox
+***************
+
+ This appendix describes some of the macros supplied with TeXdraw
+which can be used to define additional commands for creating drawings.
+The macros described here work in the user specified coordinate system.
+Some of these toolbox macros are used by the TeXdraw commands
+themselves, others are supplied in an auxiliary file `txdtools.tex'.
+
+* Menu:
+
+* Coordinate parsing::
+* Real arithmetic::
+* Arrow curve::
+
+
+File: texdraw, Node: Coordinate parsing, Next: Real arithmetic, Up: TeXdraw Toolbox
+
+Coordinate parsing
+==================
+
+ The coordinate parsing macro `\getpos' is useful for creating new
+commands. This macro takes care of stripping leading and trailing
+blanks from coordinates specified between parentheses. In addition,
+symbolic coordinates are translated to the corresponding relative
+coordinate using the segment offset and scaling in effect.
+
+ The macro `\currentpos' returns the relative coordinates of the
+current position. The returned values are relative to the current
+segment and the current scaling. The macro `\cossin' returns the
+real-valued cosine and sine of the direction of the line joining two
+points. The macro `\vectlen' returns the length of a vector. The
+results appear as the value of user supplied macro names.
+
+`\getpos (X Y)\MX\MY'
+ Decode coordinate values. The coordinates specified by `(X Y)' are
+ decoded. Symbolic coordinates are translated to the corresponding
+ relative coordinate using the current segment offset and scaling.
+ The resulting character strings representing the real-valued
+ coordinates are assigned to the macros specified by `\MX' and
+ `\MY'.
+
+`\currentpos \MX\MY'
+ Return the coordinates of the current position. The coordinates
+ are relative to the current segment offset and scaling. The
+ resulting character strings representing the real-valued
+ coordinates are assigned to the macros specified by `\MX' and
+ `\MY'.
+
+`\cossin (X1 Y1)(X2 Y2)\COSA\SINA'
+ Return the cosine and sine of the direction of a vector joining two
+ points. The cosine and sine of the angle of the vector which goes
+ from `(X1 Y1)' to `(X2 Y2)'. The character strings representing
+ these real-valued quantities are assigned to the macros specified
+ by `\COSA' and `\SINA'.
+
+`\vectlen (X1 Y1)(X2 Y2)\LEN'
+ Return the length of a vector joining two points. The length of
+ the vector is relative to the current scaling. The character
+ string representing the real-valued length is assigned to the
+ macro specified by `\LEN'.
+
+
+File: texdraw, Node: Real arithmetic, Next: Arrow curve, Prev: Coordinate parsing, Up: TeXdraw Toolbox
+
+Real arithmetic
+===============
+
+ The TeXdraw toolbox supplies macros to perform real arithmetic on
+coordinate values. The result appears as the value of a user supplied
+macro name.
+`\realadd {VALUE1} {VALUE2} \SUM'
+ Add two real quantities, assigning the resultant character string
+ representing the sum to the macro `\SUM'.
+
+`\realmult {VALUE1} {VALUE2} \PROD'
+ Multiply two real quantities, assigning the resultant character
+ string representing the product to the macro `\PROD'.
+
+`\realdiv {VALUE1} {VALUE2} \RESULT'
+ Divide two real quantities, assigning the resultant character
+ string representing the result of VALUE1/VALUE2 to the macro
+ `\RESULT'.
+
+
+File: texdraw, Node: Arrow curve, Prev: Real arithmetic, Up: TeXdraw Toolbox
+
+Arrow curve
+===========
+
+ This example illustrates the use of the TeXdraw toolbox routines to
+do computations with the coordinates. The problem will be tackled in
+two parts. First, we will produce a macro to place an arrowhead on a
+Bezier curve. Then given this macro, we will produce a macro which can
+draw a "wiggly" line from the current position to a given coordinate.
+
+ The first macro, `\cavec', uses the `\cossin' command to determine
+the the cosine and sine of the angle of the line joining the second
+control point to the end point of the Bezier curve. Recall that the
+Bezier curve is tangent to this line at the end point. After drawing
+the Bezier curve, the scaling is set locally to absolute units of 0.05
+inches. We go back down the line from the end point by 0.05 inches and
+draw an arrow vector to the end point from there. This arrow vector is
+mostly arrowhead, with little or no tail.
+
+ \def\cavec (#1 #2)(#3 #4)(#5 #6){
+ \clvec (#1 #2)(#3 #4)(#5 #6)
+ \cossin (#3 #4)(#5 #6)\cosa\sina
+ \rmove (0 0)
+ \bsegment
+ \drawdim in \setsegscale 0.05
+ \move ({-\cosa} -\sina) \avec (0 0)
+ \esegment}
+
+ Note the use of macros as arguments to a `\move' command. Minus
+signs are put in front of the macros. However, the value of the macro
+`\cosa' or `\sina' could be negative. Fortunately, TeX accepts two
+minus signs in a row and interprets the result as positive. Note that
+the `\rmove (0 0)' command before the beginning of the segment ensures
+that the Bezier curve is stroked before the arrowhead is drawn.
+
+ The second macro `\caw' builds on `\cavec'. The goal is to produce a
+wiggly vector that can be used as a pointer in a drawing. Consider the
+following symmetrical normalized Bezier curve.
+ \centertexdraw{ \move (0 0) \cavec (1.4 0.1)(-0.4 -0.1)(1 0) }
+
+ This curve has the appropriate wiggle. Now we want to be able to draw
+this curve, appropriately scaled and rotated. The macro `\caw' needs
+to do computations on the coordinates. First, `\caw' uses the macros
+`\getpos' and `\currentpos' to get the positions of the end and start
+of the curve. Next, the length of the vector is calculated using the
+macro `\vectlen'. A local macro `\rotatecoord' is used to rotate a
+coordinate pair about the origin, using the cosine and sine of the
+rotation angle. The vector length is used to scale the normalized
+curve. The remaining code draws the rotated, normalized curve.
+
+ \def\caw (#1 #2){
+ \currentpos \xa\ya
+ \cossin ({\xa} \ya)(#1 #2)\cosa\sina
+
+ % The nominal wiggly curve is (0 0) (1+dx dy) (-dx -dy) (1 0)
+ % Find the rotated offset (dx dy) -> (du dv)
+ \rotatecoord (0.4 0.1)\cosa\sina \du\dv
+
+ % calculate the length of the vector
+ \vectlen ({\xa} \ya)(#1 #2)\len
+
+ % draw the curve in normalized units
+ \bsegment
+ \setsegscale {\len}
+ \realadd \cosa \du \tmpa \realadd \sina \dv \tmpb
+ \cavec ({\tmpa} \tmpb)({-\du} -\dv)({\cosa} \sina)
+ \esegment
+ \move (#1 #2)}
+
+ % rotate a coordinate (x y)
+ % arguments: (x y) cosa sina x' y'
+ % x' = cosa * x - sina * y; y' = sina * x + cosa * y
+ \def\rotatecoord (#1 #2)#3#4#5#6{
+ \getpos (#1 #2)\xarg\yarg
+ \realmult \xarg {#3} \tmpa \realmult \yarg {#4} \tmpb
+ \realadd \tmpa {-\tmpb} #5
+ \realmult \xarg {#4} \tmpa \realmult \yarg {#3} \tmpb
+ \realadd \tmpa \tmpb #6}
+
+ Finally, the new macro can be used as follows.
+ \centertexdraw{
+ \arrowheadtype t:W
+ \move (0 0)
+ \cavec (1.4 0.1)(-0.4 -0.1)(1 0)
+ \move (1 0) \caw (1 1) \htext{tip at \tt (1 1)}
+ \move (1 0) \caw (2 1) \htext{tip at \tt (2 1)}
+ \move (1 0) \caw (2 0) \htext{tip at \tt (2 0)}
+
+ }
+
+ Note that the Bezier curve in the macro `\cavec' lies below the
+arrowhead. The example then draws an arrowhead of type `W' to erase
+the part of the line below the arrowhead.
+
+
+File: texdraw, Node: Examples, Next: Command Listing, Prev: TeXdraw Toolbox, Up: Top
+
+Examples
+********
+
+ This appendix shows examples of the use of TeXdraw.
+
+* Menu:
+
+* Block diagram::
+* Filter response graph::
+* Geometric construction::
+
+
+File: texdraw, Node: Block diagram, Next: Filter response graph, Up: Examples
+
+Block diagram of a lattice filter
+=================================
+
+ The block diagram of a lattice filter uses a library of extended
+commands built from the basic TeXdraw commands.
+
+ The block diagram uses a "delay" block. This is defined as a segment
+which leaves the current position at the end of this block. A second
+macro, `\bdot', draws a "big" dot which is used to mark junctions of
+lines. The `\Ttext' command centers text above a given point. The
+offset to position the text is local to a segment, resulting in no
+change to the current point. Similar macros to position text below a
+point (`\Btext'), to the left of a point (`\Ltext') and to the right of
+a point (`\Rtext') are used in the final drawing.
+ \def\delay {\bsegment
+ \setsegscale 0.3
+ \lvec (0 +0.5) \lvec (1 +0.5) \lvec (1 -0.5)
+ \lvec (0 -0.5) \lvec (0 0)
+ \textref h:C v:C \htext (0.5 0){$z^{-1}$}
+ \savepos (1 0)(*ex *ey)
+ \esegment
+ \move (*ex *ey)}
+ \def\bdot {\fcir f:0 r:0.02 }
+ \def\Ttext #1{\bsegment
+ \textref h:C v:B \htext (0 +0.06){#1}
+ \esegment}
+
+ Several of the block diagram elements scale with the size of the
+summing nodes. The radius of the circles for the summing nodes is
+defined as the macro `\cradius'. The summing nodes will have enclosed
+plus signs, appropriately scaled. The plus sign is drawn by the macro
+`\pluss'. The macro `\pcir' draws both the circle and the plus sign.
+The incoming lines to a summing node will be labelled with plus or
+minus signs (characters this time), placed at the appropriate position
+with respect to the center of the summing node. These positions are
+given in terms of compass directions. The macro `\putwnw' places text
+west by north-west relative to the center of the summing node.
+ \def\cradius {0.08}
+ \def\pluss {\bsegment
+ \setsegscale {\cradius}
+ \move (-0.5 0) \lvec (+0.5 0)
+ \move (0 -0.5) \lvec (0 +0.5)
+ \esegment}
+ \def\pcir {\lcir r:{\cradius} \pluss}
+ \def\puttext (#1 #2)#3{\bsegment
+ \setsegscale {\cradius}
+ \textref h:C v:C \htext (#1 #2){#3}
+ \esegment}
+ \def\putwnw #1{\puttext (-1.7 +1.2){#1}}
+
+ The block diagram has vectors arriving and departing from the summing
+nodes (circles). One could calculate the points of intersection of the
+lines with the circles, and then enter the values into the TeXdraw
+code. However, in this example, we implement an automated procedure.
+Two macros are needed, an arrow vector to a circle (`\avectoc') and an
+arrow vector leaving from a circle (`\avecfrc'). The macros will
+calculate the point of intersection with the circle and start or end
+the vector at the intersection point.
+
+ The arrow macros use scaling and relative positioning inside of a
+drawing segment. In the case of the macro `\avectoc', a move is made
+to the final point (center of the circle), then within a drawing
+segment, a scaled move is made back towards the initial point to
+determine the intersection point with the circle.
+
+ \def\avectoc (#1 #2){\currentpos \xa\ya
+ \cossin ({\xa} \ya)(#1 #2)\cosa\sina
+ \savepos (#1 #2)(*tx *ty)
+ \bsegment
+ \move (*tx *ty)
+ \setsegscale {\cradius}
+ \rmove ({-\cosa} -\sina)
+ \savecurrpos (*ex *ey)
+ \esegment
+ \avec (*ex *ey)
+ \move (#1 #2)}
+ \def\avecfrc (#1 #2){\currentpos \xa\ya
+ \cossin ({\xa} \ya)(#1 #2)\cosa\sina
+ \bsegment
+ \setsegscale {\cradius}
+ \move ({\cosa} \sina)
+ \savecurrpos (*ex *ey)
+ \esegment
+ \move (*ex *ey)
+ \avec (#1 #2)}
+
+ Having defined these macros, we are ready to draw the block diagram.
+The first and last sections of the lattice filter are very similar,
+differing mainly in the text labels. With more effort, code could be
+shared between the commands used to draw these blocks.
+ \centertexdraw{
+ \drawdim in
+ \arrowheadtype t:F \arrowheadsize l:0.08 w:0.04
+ \def\pl {$\scriptscriptstyle +$} \def\mn {$\scriptscriptstyle -$}
+
+ \move (0 +0.63) \move (0 -0.60) \move (0 0) % compensate for the text size
+
+ % Input to the first stage
+ \bsegment
+ \Ltext{$x(n)$}
+ \lvec (0.3 0) \bdot \lvec (0.3 +0.4) \move (0.3 0) \lvec (0.3 -0.4)
+ \savepos (0.3 0)(*ex *ey)
+ \esegment
+ \move (*ex *ey)
+
+ % first lattice stage
+ \bsegment
+ \move (0 +0.4) \avectoc (1.7 +0.4)
+ \pcir \putwnw{\pl} \puts{\mn}
+ \avecfrc (2.1 +0.4)
+ \move (0 -0.4) \avec (0.4 -0.4) \delay \avectoc (1.7 -0.4)
+ \pcir \putwsw{\pl} \putn{\mn}
+ \avecfrc (2.1 -0.4)
+ \move (0.9 +0.4) \bdot \avectoc (1.7 -0.4)
+ \move (0.9 -0.4) \bdot \avectoc (1.7 +0.4)
+ \move (0.1 +0.42) \Ttext {$f_0(n)$}
+ \move (2.0 +0.42) \Ttext {$f_1(n)$}
+ \move (0.1 -0.4) \Btext {$b_0(n)$}
+ \move (2.0 -0.4) \Btext {$b_1(n)$}
+ \textref h:L v:B \htext (1.15 +0.2){$K_1$}
+ \textref h:L v:T \htext (1.15 -0.2){$K_1$}
+ \savepos (2.1 0)(*ex *ey)
+ \esegment
+ \move (*ex *ey)
+
+ % center section
+ \bsegment
+ \textref h:C v:C \htext (0.3 +0.4){$\cdots$}
+ \htext (0.3 -0.4){$\cdots$}
+ \savepos (0.6 0)(*ex *ey)
+ \esegment
+ \move (*ex *ey)
+
+ % last lattice stage
+ \bsegment
+ \move (0 +0.4) \avectoc (1.7 +0.4)
+ \pcir \putwnw{\pl} \puts{\mn}
+ \avecfrc (2.3 +0.4) \Rtext{$e(n)$}
+ \move (0 -0.4) \avec (0.4 -0.4) \delay \avectoc (1.7 -0.4)
+ \pcir \putwsw{\pl} \putn{\mn}
+ \avecfrc (2.1 -0.4)
+ \move (0.9 +0.4) \bdot \avectoc (1.7 -0.4)
+ \move (0.9 -0.4) \bdot \avectoc (1.7 +0.4)
+ \move (0.1 +0.42) \Ttext {$f_{P-1}(n)$}
+ \move (2.0 +0.42) \Ttext {$f_P(n)$}
+ \move (0.1 -0.4) \Btext {$b_{P-1}(n)$}
+ \move (2.0 -0.4) \Btext {$b_P(n)$}
+ \textref h:L v:B \htext (1.15 +0.2){$K_P$}
+ \textref h:L v:T \htext (1.15 -0.2){$K_P$}
+ \esegment
+ }
+
+ The macros used in this example are similar to the block diagram
+macros defined in the file `blockdiagram.tex'.
+
+
+File: texdraw, Node: Filter response graph, Next: Geometric construction, Prev: Block diagram, Up: Examples
+
+Filter response graph
+=====================
+
+ This example shows the response of a canonical filter. TeXdraw is
+not well suited for general purpose graphing -- it has no coordinate
+translation facility nor does it have separate X and Y scaling.
+Nonetheless, for certain simple graphs, TeXdraw is adequate.
+
+ In this example, macro `\ticklab' places a labelled axis tick at a
+given position. The data is specified in a straightforward manner,
+having been scaled beforehand to give the desired aspect ratio for the
+graph.
+
+ \centertexdraw{
+ \arrowheadtype t:F \arrowheadsize l:0.08 w:0.04
+ \def\ds {\displaystyle}
+ \def\ticklab (#1 #2)#3{\move(#1 #2)
+ \bsegment
+ \lvec (0 0.05)
+ \textref h:C v:T \htext (0 -0.05){#3}
+ \esegment}
+ \def\Rtext #1{\bsegment
+ \textref h:L v:C \htext (+0.08 0){#1}
+ \esegment}
+
+ \move (2.4 -0.3) % move to set the size
+
+ \move (0 0)
+ % Axes
+ \avec (0 +1.4)
+ \move (0 0) \avec (2.2 0) \Rtext{$\omega$}
+ \ticklab (0 0) {0}
+ \ticklab (0.8 0) {$\ds {\pi \over 2N} $}
+ \ticklab (1.2 0) {$\omega_s$}
+ \ticklab (1.6 0) {$\ds {\pi \over N} $}
+
+ \linewd 0.025
+ \move (0 1)
+ \lvec (0.4 1)
+ \lvec (0.44 0.998)
+ \lvec (0.48 0.988)
+ \lvec (0.52 0.973)
+ \lvec (0.56 0.951)
+ ...
+ \lvec (1.08 0.233)
+ \lvec (1.12 0.156)
+ \lvec (1.16 0.078)
+ \lvec (1.20 0)
+ \lvec (1.9 0)
+ }
+
+
+File: texdraw, Node: Geometric construction, Prev: Filter response graph, Up: Examples
+
+Geometric construction
+======================
+
+ This example shows a geometric construction which places an ellipse
+tangent to an enclosing circle. The size of the ellipse is determined
+from geometric considerations. Macros are used to modularize the code.
+The example alters the unit scale factor. This allows the drawing to be
+carried out in units normalized to the radius of the circle.
+
+ \centertexdraw{
+ \arrowheadtype t:V \arrowheadsize l:0.08 w:0.04
+ \linewd 0.01
+ \setunitscale 1.5 % circle will have radius 1.5 inches
+
+ \def\Btext #1{\bsegment
+ \textref h:C v:T \htext (0 -0.04){#1}
+ \esegment}
+ \def\Ttext #1{\bsegment
+ \textref h:C v:B \htext (0 +0.04){#1}
+ \esegment}
+ \def\Ltext #1{\bsegment
+ \textref h:R v:C \htext (-0.04 0){#1}
+ \esegment}
+ \def\bdot {\fcir f:0 r:0.0133 }
+ \def\vtick {\bsegment
+ \move (0 -0.05) \lvec (0 +0.05)
+ \esegment}
+ \def\htick {\bsegment
+ \move (-0.05 0) \lvec (+0.05 0)
+ \esegment}
+ \def\Hlen #1#2{\bsegment
+ \vtick \avec ({#1} 0) \vtick \avec (0 0)
+ \relsegscale 0.5
+ \move ({#1} 0) \Ttext {#2}
+ \esegment}
+ \def\Vlen #1#2{\bsegment
+ \htick \avec (0 {#1}) \htick \avec (0 0)
+ \relsegscale 0.5
+ \move (0 {#1}) \Ltext {#2}
+ \esegment}
+
+ \lcir r:1 % circle
+ \move (-1.05 0) \lvec ( 1.05 0) % axes
+ \move (0 -1.05) \lvec (0 1.05)
+
+ \move (0 0) \lvec (0.707 0.707) \bdot
+ \rmove (0.02 0.02) \textref h:L v:B \htext {X}
+ \move (0.707 -0.707) \bdot
+ \textref h:R v:T \htext(-0.02 -0.02){O}
+
+ \move (0.5 0) % center of ellipse
+ \bsegment
+ \lellip rx:0.435 ry:0.804
+ \bdot \Btext {$\beta_2$}
+ \move (0 0.15) \Hlen {0.435}{$|\beta_1{+}\beta_3|$}
+ \move (-0.7 0) \Vlen {0.804}{$|\beta_1{-}\beta_3|$}
+ \esegment
+ }
+
+
+File: texdraw, Node: Command Listing, Next: Command Index, Prev: Examples, Up: Top
+
+Alphabetic listing of commands
+******************************
+
+`\arrowheadsize l:LENGTH w:WIDTH'
+ Set the arrowhead size to be LENGTH units long and WIDTH units
+ wide. The width is measured across the "base" of the arrowhead.
+ The initial arrowhead size has a LENGTH of 0.16 inches and a WIDTH
+ of 0.08 inches.
+
+`\arrowheadtype t:TYPE'
+ Set the arrowhead type to TYPE, where TYPE is one of `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'.
+
+`\avec (X Y)'
+ Draw a line with an arrowhead from the current position to `(X
+ Y)'. The new current position is `(X Y)'. The arrowhead is
+ aligned with the line, with the tip at `(X Y)'.
+
+`\begin{texdraw}'
+ Start a TeXdraw drawing. The drawing is terminated with an
+ `\end{texdraw}' command. This command is for use with LaTeX.
+
+`\bsegment'
+ Start a drawing segment. The coordinate system is shifted such
+ that the current position corresponds to the coordinate `(0 0)'.
+ Changes to scaling, position and line parameters stay local to the
+ drawing segment.
+
+`\btexdraw'
+ Start a TeXdraw drawing. The drawing is terminated with an
+ `\etexdraw' command.
+
+`\centertexdraw { ... }'
+ Center a TeXdraw box. The argument contains TeXdraw commands.
+ The resulting box has the horizontal size `\hsize' and height equal
+ to the height of the drawing.
+
+`\clvec (X1 Y1)(X2 Y2)(X3 Y3)'
+ Draw a Bezier curve from the current position to the coordinate
+ `(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.
+
+`\drawbb'
+ Draw a ruled box around the effective size of a drawing produced by
+ TeXdraw commands.
+
+`\drawdim DIM'
+ Set the units to DIM. The argument DIM can be any valid TeX
+ dimension unit. The units are used to interpret coordinate
+ values. Examples of valid units: `cm', `mm', `in', `pt', and `bp'.
+
+`\end{texdraw}'
+ End a TeXdraw drawing started with a `\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.
+
+`\esegment'
+ End a drawing segment. The current position in effect before the
+ corresponding `\bsegment' command is restored. The scaling and
+ line parameter values revert to those in effect before the
+ corresponding `\bsegment' was invoked.
+
+`\etexdraw'
+ End a TeXdraw drawing started with a `\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.
+
+`\everytexdraw { ... }'
+ Specify TeXdraw commands to be executed at the beginning of every
+ TeXdraw drawing.
+
+`\fcir f:LEVEL r:RADIUS'
+ Draw a filled circle with center at the current position. The
+ radius is specified by RADIUS. The circle is painted with the
+ gray level specified by LEVEL. A gray level of 1 corresponds to
+ white, with decreasing values getting darker. The level 0 is full
+ black. This command does not draw a line along the circumference.
+ The drawing size is increased if necessary to contain the circle.
+
+`\fellip f:LEVEL rx:X-RADIUS ry:Y-RADIUS'
+ Draw a filled ellipse with center at the current position. The
+ radius in the X direction is specified by X-RADIUS. The radius in
+ the Y direction is specified by Y-RADIUS. The ellipse is painted
+ with the gray level specified by LEVEL. A gray level of 1
+ corresponds to white, with decreasing values getting darker. The
+ level 0 is full black. This command does not draw a line along
+ the boundary of the ellipse. The drawing size is increased if
+ necessary to contain the ellipse.
+
+`\htext (X Y){TEXT}'
+`\htext {TEXT}'
+ The first form of this command places the TeX text TEXT
+ horizontally with the text reference point at the coordinate `(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.
+
+`\ifill f:LEVEL'
+ Close the current path and paint the interior of the region with
+ gray level LEVEL. The line around the path is not drawn. Gray
+ levels are real values from 0 (black) through intermediate values
+ (grays) to 1 (white).
+
+`\larc r:RADIUS sd:START-ANGLE ed:END-ANGLE'
+ Draw a counterclockwise arc. The center of the arc is at the
+ current position. The radius is specified by RADIUS. The start
+ and end angles (in degrees) are specified by START-ANGLE and
+ END-ANGLE. This command does not affect the limits (size) of the
+ drawing.
+
+`\lcir r:RADIUS'
+ Draw a circle with center at the current position. The radius is
+ specified by RADIUS. This command draws a line along the
+ circumference of the circle. The drawing size is increased if
+ necessary to contain the circle.
+
+`\lellip rx:X-RADIUS ry:Y-RADIUS'
+ Draw an ellipse with center at the current position. The radius
+ in the X direction is specified by X-RADIUS. The radius in the Y
+ direction is specified by Y-RADIUS. The drawing size is increased
+ if necessary to contain the ellipse.
+
+`\lfill f:LEVEL'
+ Close the current path, draw the line around the path using the
+ current grey level for lines and paint the interior of the region
+ with specified gray level LEVEL. Gray levels are real values from
+ 0 (black) through intermediate values (grays) to 1 (white).
+
+`\linewd WIDTH'
+ Set the line width to WIDTH units. Initially WIDTH is 0.01 inches
+ (corresponding to 3 pixels at 300 pixels to the inch).
+
+`\lpatt (PATTERN)'
+ Set lines to have the 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 ()'.
+
+`\lvec (X Y)'
+ Draw a line from the current position to coordinate `(X Y)'. The
+ new current position is `(X Y)'.
+
+`\move (X Y)'
+ Move to coordinate `(X Y)'. The new current position is `(X Y)'.
+
+`\ravec (DX DY)'
+ Draw a line with an arrowhead from the current position, DX units
+ in the X direction and Y units in the Y direction. The final
+ position becomes the new current position. The arrowhead is
+ aligned with the line, with the tip at the new current position.
+
+`\relsegscale VALUE'
+ Adjust the segment scale factor by multiplying by VALUE. This has
+ the effect of multiplying the current overall scale factor by the
+ same factor. The overall scaling factor is the product of the
+ unit scale factor and the segment scale factor.
+
+`\relunitscale VALUE'
+ Adjust the unit scale factor by multiplying by VALUE. This has
+ the effect of multiplying the overall scale factor by the same
+ factor. The overall scaling factor is the product of the unit
+ scale factor and the segment scale factor.
+
+`\rlvec (DX DY)'
+ Draw a line from the current position, DX units in the X direction
+ and DY units in the Y direction. The final position becomes the
+ new current position.
+
+`\rmove (DX DY)'
+ Move from the current position, DX units in the X direction and DY
+ units in the Y direction. The final position becomes the new
+ current position.
+
+`\rtext td:ANGLE (x y){TEXT}'
+`\rtext td:ANGLE {TEXT}'
+ The first form of this command places the TeX text TEXT at an
+ angle with the text reference point at the coordinate `(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.
+
+`\savecurrpos (*PX *PY)'
+ Save the current position as the absolute position referenced by
+ `(*PX *PY)'.
+
+`\savepos (X Y)(*PX *PY)'
+ Save the coordinate position `(X Y)' as the absolute position
+ referenced by `(*PX *PY)'. The coordinate `(X Y)' is interpreted
+ in the normal fashion as a coordinate relative to the current
+ segment, using the current scaling factors and drawing unit.
+
+`\setgray LEVEL'
+ Set the gray level of lines. Gray levels are real values from 0
+ (black) through intermediate values (gray) to 1 (white). The
+ initial gray level is 0 corresponding to black.
+
+`\setsegscale SCALE'
+ Set the segment scale factor. The argument SCALE is a real number
+ which is used to scale coordinate values. The overall scale
+ factor is the product of the unit scale factor and the segment
+ scale factor.
+
+`\setunitscale SCALE'
+ Set the unit scaling to SCALE. The argument SCALE is a real
+ number which is used to scale coordinate values. The overall
+ scaling factor is the product of the unit scale factor and the
+ segment scale factor.
+
+`\texdrawbox { ... }'
+ Create a TeXdraw box. The argument contains TeXdraw commands.
+ This macro returns a TeX 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.
+
+`\textref h:H-REF v:V-REF'
+ Set the text reference point for subsequent text commands. The
+ horizontal reference point H-REF is one of `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'.
+
+`\vtext (x y){TEXT}'
+`\vtext {TEXT}'
+ The first form of this command places the TeX text TEXT vertically
+ with the text reference point at the coordinate `(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.
+
+
+
+File: texdraw, Node: Command Index, Next: Concept Index, Prev: Command Listing, Up: Top
+
+Command Index
+*************
+
+* Menu:
+
+* \arc: Circles and arcs.
+* \arrowheadsize: Line vectors.
+* \arrowheadtype: Line vectors.
+* \avec: Line vectors.
+* \begin{texdraw}: Accessing TeXdraw.
+* \bsegment: Drawing segments.
+* \btexdraw: Accessing TeXdraw.
+* \centertexdraw: Accessing TeXdraw.
+* \clvec: Bezier curves.
+* \cossin: Coordinate parsing.
+* \currentpos: Coordinate parsing.
+* \drawbb: Drawing size.
+* \drawdim: Coordinate specification.
+* \end{texdraw}: Accessing TeXdraw.
+* \esegment: Drawing segments.
+* \etexdraw: Accessing TeXdraw.
+* \everytexdraw: Accessing TeXdraw.
+* \fcir: Circles and arcs.
+* \fellip: Circles and arcs.
+* \getpos: Coordinate parsing.
+* \htext: TeX text.
+* \ifill: Fill commands.
+* \lcir: Circles and arcs.
+* \lellip: Circles and arcs.
+* \lfill: Fill commands.
+* \linewd: Line vectors.
+* \lvec: Line vectors.
+* \move: Line vectors.
+* \PSarc: PostScript Commands.
+* \PSarcn: PostScript Commands.
+* \PSclosepath: PostScript Commands.
+* \PSfill: PostScript Commands.
+* \PSlineto: PostScript Commands.
+* \PSmoveto: PostScript Commands.
+* \PSnewpath: PostScript Commands.
+* \PSsetlinecap: PostScript Commands.
+* \PSsetlinejoin: PostScript Commands.
+* \PSstroke: PostScript Commands.
+* \ravec: Line vectors.
+* \realadd: Real arithmetic.
+* \realdiv: Real arithmetic.
+* \realmult: Real arithmetic.
+* \relsegscale: Scaling coordinates.
+* \relunitscale: Scaling coordinates.
+* \rlvec: Line vectors.
+* \rmove: Line vectors.
+* \rtext: TeX text.
+* \savecurrpos: Saving positions.
+* \savepos: Saving positions.
+* \setgray: Line vectors.
+* \setsegscale: Scaling coordinates.
+* \setunitscale: Scaling coordinates.
+* \textref: TeX text.
+* \vectlen: Coordinate parsing.
+* \vtext: TeX text.
+* \writeps: PostScript Commands.
+* arc: PostScript Commands.
+* arcn: PostScript Commands.
+* closepath: PostScript Commands.
+* fill: PostScript Commands.
+* lineto: PostScript Commands.
+* moveto: PostScript Commands.
+* newpath: PostScript Commands.
+* setlinecap: PostScript Commands.
+* setlinejoin: PostScript Commands.
+* stroke: PostScript Commands.
+
+
+File: texdraw, Node: Concept Index, Prev: Command Index, Up: Top
+
+Concept Index
+*************
+
+* Menu:
+
+* accessing TeXdraw <1>: Accessing TeXdraw.
+* accessing TeXdraw: Using TeXdraw with LaTeX.
+* angle of a vector: Coordinate parsing.
+* arcs <1>: Circles and arcs.
+* arcs: PostScript Commands.
+* arrowhead parameters: Line vectors.
+* arrows: Line vectors.
+* Bezier curves: Bezier curves.
+* circles: Circles and arcs.
+* command syntax: Command syntax.
+* coordinate parsing: Coordinate parsing.
+* coordinate specification: Coordinate specification.
+* coordinate, symbolic: Saving positions.
+* coordinates: TeXdraw coordinates.
+* cosine of a vector direction: Coordinate parsing.
+* current position <1>: Coordinate parsing.
+* current position <2>: Line vectors.
+* current position: Initial current position.
+* current position in PostScript: PostScript Commands.
+* curves: Bezier curves.
+* dashed lines: Line vectors.
+* direction of a line: Coordinate parsing.
+* distribution: Distribution.
+* dotted lines: Line vectors.
+* drawing segments: Drawing segments.
+* dvi2ps printer driver: PostScript printer drivers.
+* dvialw printer driver: PostScript printer drivers.
+* dvilaser printer driver: PostScript printer drivers.
+* dvips printer driver <1>: PostScript printer drivers.
+* dvips printer driver <2>: Introduction.
+* dvips printer driver: How TeXdraw merges graphics and text.
+* dvipsone printer driver: PostScript printer drivers.
+* dvitops printer driver: PostScript printer drivers.
+* dviwindo printer driver: PostScript printer drivers.
+* ellipses: Circles and arcs.
+* Encapsulated PostScript File: Intermediate PostScript file.
+* errors while using TeXdraw: Errors while using TeXdraw.
+* example, arrow curve: Arrow curve.
+* example, block diagram: Examples.
+* example, circle and ellipse: Geometric construction.
+* example, graph: Filter response graph.
+* fill operations, interaction with drawing segments: Drawing paths.
+* filled circles: Circles and arcs.
+* filling regions <1>: PostScript Commands.
+* filling regions: Fill commands.
+* graphics package <1>: PostScript printer drivers.
+* graphics package <2>: Accessing TeXdraw.
+* graphics package <3>: How TeXdraw merges graphics and text.
+* graphics package: Introduction.
+* graphics placement: How TeXdraw merges graphics and text.
+* gray levels for lines: Line vectors.
+* implementation: Extending TeXdraw.
+* initial current position: Initial current position.
+* invoking TeXdraw <1>: Accessing TeXdraw.
+* invoking TeXdraw: Using TeXdraw with LaTeX.
+* LaTeX <1>: Accessing TeXdraw.
+* LaTeX <2>: Using TeXdraw with LaTeX.
+* LaTeX: Introduction.
+* length of a vector: Coordinate parsing.
+* line cap: PostScript Commands.
+* line join: PostScript Commands.
+* line width: Line vectors.
+* lines <1>: PostScript Commands.
+* lines: Line vectors.
+* listing of commands: Command Listing.
+* moves <1>: Line vectors.
+* moves: PostScript Commands.
+* oztex printer driver: PostScript printer drivers.
+* painting regions: Fill commands.
+* paths <1>: PostScript Commands.
+* paths <2>: Drawing paths.
+* paths: Fill commands.
+* pctexps printer driver: PostScript printer drivers.
+* pctexwin printer driver: PostScript printer drivers.
+* placement of graphics and text: How TeXdraw merges graphics and text.
+* plain TeX: Accessing TeXdraw.
+* position specification: Coordinate specification.
+* positions, saving: Saving positions.
+* PostScript commands: PostScript Commands.
+* PostScript printer drivers <1>: PostScript printer drivers.
+* PostScript printer drivers: How TeXdraw merges graphics and text.
+* printer drivers <1>: PostScript printer drivers.
+* printer drivers: How TeXdraw merges graphics and text.
+* problems while using TeXdraw: Errors while using TeXdraw.
+* psprint driver: PostScript printer drivers.
+* relative positioning: Line vectors.
+* relative scaling: Scaling coordinates.
+* resolution: Resolution.
+* rotated text <1>: PostScript printer drivers.
+* rotated text <2>: TeX text.
+* rotated text <3>: Text placement.
+* rotated text: How TeXdraw merges graphics and text.
+* saving positions: Saving positions.
+* scaling: Scaling.
+* scaling coordinates: Scaling coordinates.
+* segment scale: Scaling coordinates.
+* segments: Drawing segments.
+* sine of a vector direction: Coordinate parsing.
+* size of the drawing: Drawing size.
+* stroking lines <1>: PostScript Commands.
+* stroking lines: Drawing paths.
+* symbolic coordinate: Saving positions.
+* syntax of commands: Command syntax.
+* texdraw package <1>: How TeXdraw merges graphics and text.
+* texdraw package <2>: Using TeXdraw with LaTeX.
+* texdraw package: Accessing TeXdraw.
+* text commands: TeX text.
+* text placement: How TeXdraw merges graphics and text.
+* text rotation <1>: How TeXdraw merges graphics and text.
+* text rotation <2>: TeX text.
+* text rotation <3>: PostScript printer drivers.
+* text rotation: Text placement.
+* textures printer driver: PostScript printer drivers.
+* unit scale: Scaling coordinates.
+* vectors: Line vectors.
+* vertical text: TeX text.
+* width of lines: Line vectors.
+* xdvi driver: PostScript printer drivers.
+
+
+
+Tag Table:
+Node: Top606
+Node: Introduction2013
+Node: Distribution4007
+Node: TeXdraw Commands4442
+Node: Accessing TeXdraw5051
+Ref: Accessing TeXdraw-Footnote-19799
+Node: Command syntax9962
+Node: TeXdraw coordinates11150
+Node: Coordinate specification12511
+Node: Line vectors13706
+Node: TeX text19481
+Node: Circles and arcs23795
+Node: Bezier curves27792
+Node: Fill commands29776
+Node: Drawing Segments and Scaling32306
+Node: Drawing segments32733
+Node: Drawing paths33823
+Node: Saving positions35437
+Node: Scaling coordinates38329
+Node: Drawing size41305
+Node: Initial current position43113
+Node: Using TeXdraw with LaTeX43900
+Node: PostScript printer drivers45369
+Node: More Details46494
+Node: Errors while using TeXdraw46989
+Node: Extending TeXdraw49297
+Node: Scaling50855
+Node: Resolution51784
+Node: Text placement53471
+Node: Intermediate PostScript file54531
+Node: How TeXdraw merges graphics and text56274
+Ref: How TeXdraw merges graphics and text-Footnote-157642
+Node: PostScript Commands57699
+Node: TeXdraw Toolbox62660
+Node: Coordinate parsing63200
+Node: Real arithmetic65352
+Node: Arrow curve66151
+Node: Examples70212
+Node: Block diagram70459
+Node: Filter response graph77224
+Node: Geometric construction78912
+Node: Command Listing81197
+Node: Command Index92653
+Node: Concept Index96690
+
+End Tag Table