diff options
Diffstat (limited to 'Master/texmf-dist/doc/texdraw/texdraw_2.html')
-rw-r--r-- | Master/texmf-dist/doc/texdraw/texdraw_2.html | 882 |
1 files changed, 882 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/texdraw/texdraw_2.html b/Master/texmf-dist/doc/texdraw/texdraw_2.html new file mode 100644 index 00000000000..25abbb1af0e --- /dev/null +++ b/Master/texmf-dist/doc/texdraw/texdraw_2.html @@ -0,0 +1,882 @@ +<HTML> +<HEAD> +<!-- Created by texi2html 1.56k from texdraw.texi on 10 March 2004 --> + +<TITLE>TeXdraw - 2. Using the TeXdraw Commands</TITLE> +</HEAD> +<BODY> +Go to the <A HREF="texdraw_1.html">first</A>, <A HREF="texdraw_1.html">previous</A>, <A HREF="texdraw_3.html">next</A>, <A HREF="texdraw_11.html">last</A> section, <A HREF="texdraw_toc.html">table of contents</A>. +<P><HR><P> + + +<H1><A NAME="SEC3" HREF="texdraw_toc.html#TOC3">2. Using the TeXdraw Commands</A></H1> + +<P> +The main TeXdraw macros (commands) are defined in the file +<TT>`texdraw.tex'</TT>. These macros may be used directly in TeX. The +file <TT>`texdraw.sty'</TT> provides an interface for use with LaTeX2e. +The following sections describe the basic commands for TeXdraw. + + + +<UL> +<LI><A HREF="texdraw_2.html#SEC4">Accessing TeXdraw</A> +<LI><A HREF="texdraw_2.html#SEC5">Command syntax</A> +<LI><A HREF="texdraw_2.html#SEC6">TeXdraw coordinates</A> +<LI><A HREF="texdraw_2.html#SEC7">Coordinate specification</A> +<LI><A HREF="texdraw_2.html#SEC8">Line vectors</A> +<LI><A HREF="texdraw_2.html#SEC9">TeX text</A> +<LI><A HREF="texdraw_2.html#SEC10">Circles and arcs</A> +<LI><A HREF="texdraw_2.html#SEC11">Bezier curves</A> +<LI><A HREF="texdraw_2.html#SEC12">Fill commands</A> +</UL> + + + +<H2><A NAME="SEC4" HREF="texdraw_toc.html#TOC4">2.1 Accessing TeXdraw</A></H2> +<P> +<A NAME="IDX5"></A> +<A NAME="IDX6"></A> + + +<P> +<A NAME="IDX7"></A> +<A NAME="IDX8"></A> +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 <TT>`tex'</TT>) and LaTeX2e which includes the +LaTeX2e typesetting macros (usually invoked as <TT>`latex'</TT>). 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. + + +<P> +For use with plain TeX, the user must read in the TeXdraw macros +from the file <TT>`texdraw.tex'</TT>. + +<PRE> +\input texdraw % Read in the TeXdraw macros + ... +\btexdraw + ... % TeXdraw commands to generate a drawing +\etexdraw +</PRE> + +<P> +For use with LaTeX version 2.09, the user reads in the TeXdraw +macros from the file <TT>`texdraw.tex'</TT> and optionally defines the +<CODE>\begin{texdraw}</CODE> / <CODE>\end{texdraw}</CODE> environment. + +<PRE> +\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} +</PRE> + +<P> +<A NAME="IDX9"></A> +<A NAME="IDX10"></A> +For use with LaTeX2e, the user must load the <CODE>texdraw</CODE> package +(file <TT>`texdraw.sty'</TT>). This package file defines the +<CODE>\begin{texdraw}</CODE> / <CODE>\end{texdraw}</CODE> environment, brings in +the standard <CODE>graphics</CODE> package and reads in the file +<TT>`texdraw.tex'</TT> containing the definitions of the TeXdraw macros. + +<PRE> +\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} +</PRE> + +<P> +As the TeXdraw commands are processed by TeX, an intermediate +PostScript file is generated. The intermediate PostScript has a name of +the form <TT>`<VAR>name</VAR>.ps1'</TT>. 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.<A NAME="DOCF1" HREF="texdraw_foot.html#FOOT1">(1)</A> + + +<P> +The TeXdraw commands to produce a drawing are inserted between +<CODE>\btexdraw</CODE> and <CODE>\etexdraw</CODE> commands, or for LaTeX, between +<CODE>\begin{texdraw}</CODE> and <CODE>\end{texdraw}</CODE> 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. + + +<P> +The <CODE>\centertexdraw{...}</CODE> macro centers the box generated by +TeXdraw. The vertical space taken up is equal to the vertical size +of the drawing. The <CODE>\centertexdraw</CODE> macro is normally used in +vertical mode (between paragraphs). A <CODE>\par</CODE> command (a blank line +will do also) before a <CODE>\centertexdraw</CODE> command will terminate +horizontal mode and return to vertical mode. For LaTeX, a structured +equivalent to the <CODE>\centertexdraw{...}</CODE> command is shown below. + +<PRE> +\begin{center} +\begin{texdraw} + ... +\end{texdraw} +\end{center} +</PRE> + +<P> +The <CODE>\everytexdraw</CODE> 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 <CODE>\everytexdraw{ ...}</CODE>, +with the desired TeXdraw commands as arguments. + + +<DL COMPACT> + +<DT><CODE>\btexdraw</CODE> +<DD> +<A NAME="IDX11"></A> + +Start a TeXdraw drawing. The drawing is terminated with an +<CODE>\etexdraw</CODE> command. +<A NAME="IDX12"></A> +<DT><CODE>\etexdraw</CODE> +<DD> +End a TeXdraw drawing started with a <CODE>\btexdraw</CODE> 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. +<A NAME="IDX13"></A> +<DT><CODE>\begin{texdraw}</CODE> +<DD> +Start a TeXdraw drawing. The drawing is terminated with an +<CODE>\end{texdraw}</CODE> command. This command is for use with LaTeX. +<A NAME="IDX14"></A> +<DT><CODE>\end{texdraw}</CODE> +<DD> +End a TeXdraw drawing started with a <CODE>\begin{texdraw}</CODE> +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. +<A NAME="IDX15"></A> +<DT><CODE>\centertexdraw{ ... }</CODE> +<DD> +Center a TeXdraw box horizontally. The argument contains TeXdraw +commands. The resulting box has the horizontal size <CODE>\hsize</CODE> and +height equal to the height of the drawing. +<A NAME="IDX16"></A> +<DT><CODE>\everytexdraw{ ... }</CODE> +<DD> +Specify TeXdraw commands to be executed at the beginning of every +TeXdraw drawing. +</DL> + + + +<H2><A NAME="SEC5" HREF="texdraw_toc.html#TOC5">2.2 Command syntax</A></H2> +<P> +<A NAME="IDX17"></A> +<A NAME="IDX18"></A> + + +<P> +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. + + +<P> +On entering the TeXdraw environment, TeX is in internal vertical +mode (vertical mode inside a <CODE>\vbox</CODE>). 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. + + +<P> +Blank lines are interpreted as paragraph breaks, equivalent to a +<CODE>\par</CODE> command. The TeXdraw macro <CODE>\centertexdraw</CODE> is +defined with the <CODE>\long</CODE> attribute to allow <CODE>\par</CODE> commands +and blank lines to be interspersed between TeXdraw commands. The +<CODE>\btexdraw</CODE> and <CODE>\etexdraw</CODE> commands also allow <CODE>\par</CODE> +command and blank lines to be included. + + + + +<H2><A NAME="SEC6" HREF="texdraw_toc.html#TOC6">2.3 TeXdraw coordinates</A></H2> +<P> +<A NAME="IDX19"></A> + + +<P> +The TeXdraw coordinate system has increasing <VAR>x</VAR> to the right and +increasing <VAR>y</VAR> 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. + + +<P> +Consider the following example of TeXdraw commands to draw a simple +figure. + +<PRE> +\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$} +} +</PRE> + +<P> +This drawing uses units of centimetres, with a line width of 0.02 cm. +The <VAR>x</VAR> coordinate ranges between 1 and 3 while the <VAR>y</VAR> +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 <CODE>(1 2)</CODE> and the upper righthand corner at +<CODE>(3 4)</CODE>. The <CODE>\centertexdraw</CODE> command centers the drawing +horizontally. The <CODE>\textref</CODE> command controls the centering of the +text. The text in this drawing is centered (both horizontally and +vertically) at the coordinate <CODE>(2 3)</CODE>. + + + + +<H2><A NAME="SEC7" HREF="texdraw_toc.html#TOC7">2.4 Coordinate specification</A></H2> +<P> +<A NAME="IDX20"></A> +<A NAME="IDX21"></A> + + +<P> +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 <CODE>\drawdim</CODE> command. The default is inches, but +any valid TeX dimension unit can be specified. Symbolic +specification of saved coordinate values will be discused later +(see section <A HREF="texdraw_3.html#SEC16">3.3 Saving positions</A>). + + +<DL COMPACT> + +<DT><CODE>\drawdim <VAR>dim</VAR></CODE> +<DD> +<A NAME="IDX22"></A> + +Set the units to <VAR>dim</VAR>. The argument <VAR>dim</VAR> can be any valid +TeX dimension unit. The units are used to interpret coordinate +values. Examples of valid units: <CODE>cm</CODE>, <CODE>mm</CODE>, <CODE>in</CODE>, +<CODE>pt</CODE>, and <CODE>bp</CODE>. +</DL> + +<P> +Examples of coordinate and scaling specifications: +<DL COMPACT> + +<DT><CODE>\drawdim {cm} \move(2 2)</CODE> +<DD> +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. +<DT><CODE>\drawdim bp</CODE> +<DD> +Set the units to big points. +<DT><CODE>\lvec ( 2.2 +5.5) \lvec(2.3 -2) \lvec(2.2 5.4 )</CODE> +<DD> +Examples of acceptable coordinate specifications. +</DL> + + + +<H2><A NAME="SEC8" HREF="texdraw_toc.html#TOC8">2.5 Line vectors</A></H2> +<P> +<A NAME="IDX23"></A> +<A NAME="IDX24"></A> +<A NAME="IDX25"></A> +<A NAME="IDX26"></A> +<A NAME="IDX27"></A> + + +<P> +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 <CODE>(0 0)</CODE> is used if there is no +move to an initial current position. + + +<P> +The <CODE>\move</CODE> and <CODE>\rmove</CODE> commands establish a new current +position without drawing a line. The <CODE>\lvec</CODE> and <CODE>\rlvec</CODE> +commands draw a line from the current position to a new position, which +then becomes the new current position. The <CODE>\avec</CODE> and +<CODE>\ravec</CODE> 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 <CODE>\avec</CODE> or <CODE>\ravec</CODE>. Zero length arrow vectors will +generate a PostScript print error: <CODE>undefinedresult</CODE>. For any +non-zero length vector, the full size arrowhead is drawn, even if that +arrowhead is longer than the line length. + + +<P> +The absolute motion versions of these commands specify the coordinate of +the final position. + + +<DL COMPACT> + +<DT><CODE>\move (<VAR>x</VAR> <VAR>y</VAR>)</CODE> +<DD> +<A NAME="IDX28"></A> + +Move to coordinate <CODE>(<VAR>x</VAR> <VAR>y</VAR>)</CODE>. The new current position +is <CODE>(<VAR>x</VAR> <VAR>y</VAR>)</CODE>. +<A NAME="IDX29"></A> +<DT><CODE>\lvec (<VAR>x</VAR> <VAR>y</VAR>)</CODE> +<DD> +Draw a line from the current position to coordinate <CODE>(<VAR>x</VAR> +<VAR>y</VAR>)</CODE>. The new current position is <CODE>(<VAR>x</VAR> <VAR>y</VAR>)</CODE>. +<A NAME="IDX30"></A> +<DT><CODE>\avec (<VAR>x</VAR> <VAR>y</VAR>)</CODE> +<DD> +Draw a line with an arrowhead from the current position to +<CODE>(<VAR>x</VAR> <VAR>y</VAR>)</CODE>. The new current position is <CODE>(<VAR>x</VAR> +<VAR>y</VAR>)</CODE>. The arrowhead is aligned with the line, with the tip at +<CODE>(<VAR>x</VAR> <VAR>y</VAR>)</CODE>. +</DL> + +<P> +<A NAME="IDX31"></A> +The relative motion versions of these commands interpret the coordinates +as displacements relative to the current position. Given the +displacements <CODE>(<VAR>dx</VAR> <VAR>dy</VAR>)</CODE> as a parameter, each of the +relative motion commands moves <VAR>dx</VAR> units in the <VAR>x</VAR> direction +and <VAR>dy</VAR> units in the <VAR>y</VAR> direction. + + +<DL COMPACT> + +<DT><CODE>\rmove (<VAR>dx</VAR> <VAR>dy</VAR>)</CODE> +<DD> +<A NAME="IDX32"></A> + +Move from the current position, <VAR>dx</VAR> units in the <VAR>x</VAR> direction +and <VAR>dy</VAR> units in the <VAR>y</VAR> direction. The final position becomes +the new current position. +<A NAME="IDX33"></A> +<DT><CODE>\rlvec (<VAR>dx</VAR> <VAR>dy</VAR>)</CODE> +<DD> +Draw a line from the current position, <VAR>dx</VAR> units in the <VAR>x</VAR> +direction and <VAR>dy</VAR> units in the <VAR>y</VAR> direction. The final +position becomes the new current position. +<A NAME="IDX34"></A> +<DT><CODE>\ravec (<VAR>dx</VAR> <VAR>dy</VAR>)</CODE> +<DD> +Draw a line with an arrowhead from the current position, <VAR>dx</VAR> units +in the <VAR>x</VAR> direction and <VAR>y</VAR> units in the <VAR>y</VAR> direction. +The final position becomes the new current position. The arrowhead is +aligned with the line, with the tip at the new current position. +</DL> + +<P> +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. + + +<P> +<A NAME="IDX35"></A> +<A NAME="IDX36"></A> +<A NAME="IDX37"></A> +<A NAME="IDX38"></A> +<A NAME="IDX39"></A> +<A NAME="IDX40"></A> +<DL COMPACT> + +<DT><CODE>\linewd <VAR>width</VAR></CODE> +<DD> +<A NAME="IDX41"></A> + +Set the line width to <VAR>width</VAR> units. Initially <VAR>width</VAR> is 0.01 +inches (corresponding to 3 pixels at 300 pixels to the inch). +<DT><CODE>\lpatt (<VAR>pattern</VAR>)</CODE> +<DD> +Set lines to have the pattern <CODE>(<VAR>pattern</VAR>)</CODE>. 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 <CODE>\lpatt ()</CODE>. +<A NAME="IDX42"></A> +<DT><CODE>\setgray <VAR>level</VAR></CODE> +<DD> +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. +<A NAME="IDX43"></A> +<DT><CODE>\arrowheadtype t:<VAR>type</VAR></CODE> +<DD> +Set the arrowhead type to <VAR>type</VAR>, where <VAR>type</VAR> is one of +<CODE>F</CODE>, <CODE>T</CODE>, <CODE>W</CODE>, <CODE>V</CODE>, or <CODE>H</CODE>. There are two +kinds of arrowheads. The first kind is a triangle. There are 3 +variants: type <CODE>T</CODE> is an empty triangle, type <CODE>F</CODE> is a filled +triangle (using the current gray level for lines), type <CODE>W</CODE> is a +triangle filled with white. The second kind of arrowhead is an open +ended Vee. There are 2 variants: type <CODE>V</CODE> has the stem continue to +the tip, type <CODE>H</CODE> has the stem stop at the base of the arrowhead. +The initial arrowhead type is <CODE>T</CODE>. +<A NAME="IDX44"></A> +<DT><CODE>\arrowheadsize l:<VAR>length</VAR> w:<VAR>width</VAR></CODE> +<DD> +Set the arrowhead size to be <VAR>length</VAR> units long and <VAR>width</VAR> +units wide. The width is measured across the "base" of the arrowhead. +The initial arrowhead size has a <VAR>length</VAR> of 0.16 inches and a +<VAR>width</VAR> of 0.08 inches. +</DL> + +<P> +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 <CODE>F</CODE> variant of the arrowhead uses the same gray level +as used for lines. The difference between the <CODE>T</CODE> variant and the +<CODE>W</CODE> variant only shows up if the arrowhead is placed over non-white +areas of the drawing. The <CODE>W</CODE> variant obliterates the area under +the arrowhead. + + +<P> +Examples of line parameter and arrowhead settings are shown in the +following code. + +<PRE> +\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) +} +</PRE> + + + +<H2><A NAME="SEC9" HREF="texdraw_toc.html#TOC9">2.6 TeX text</A></H2> +<P> +<A NAME="IDX45"></A> + + +<P> +Text may be superimposed on the drawing. The text argument of the +<CODE>\htext</CODE> 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 <CODE>\htext</CODE> command takes one of two forms. + + +<DL COMPACT> + +<DT><CODE>\htext (<VAR>x</VAR> <VAR>y</VAR>){<VAR>text</VAR>}</CODE> +<DD> +<A NAME="IDX46"></A> + +<DT><CODE>\htext {<VAR>text</VAR>}</CODE> +<DD> +The first form of this command places the TeX text <VAR>text</VAR> +horizontally with the text reference point at the coordinate +<CODE>(<VAR>x</VAR> <VAR>y</VAR>)</CODE>. The new current position is <CODE>(<VAR>x</VAR> +<VAR>y</VAR>)</CODE>. The second form of this command places the TeX text +<VAR>text</VAR> horizontally with the text reference point at the current +position. The text reference point is set with the <CODE>\textref</CODE> +command. +</DL> + +<P> +<A NAME="IDX47"></A> +<A NAME="IDX48"></A> +<A NAME="IDX49"></A> +Text can be placed vertically using the <CODE>\vtext</CODE> 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, <EM>before</EM> rotation of the text. Not all PostScript printer +drivers support vertical text. + + +<DL COMPACT> + +<DT><CODE>\vtext (x y){<VAR>text</VAR>}</CODE> +<DD> +<A NAME="IDX50"></A> + +<DT><CODE>\vtext {<VAR>text</VAR>}</CODE> +<DD> +The first form of this command places the TeX text <VAR>text</VAR> +vertically with the text reference point at the coordinate +<CODE>(<VAR>x</VAR> <VAR>y</VAR>)</CODE>. The new current position is <CODE>(<VAR>x</VAR> +<VAR>y</VAR>)</CODE>. The second form of this command places the TeX text +<VAR>text</VAR> 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 <CODE>\textref</CODE> +command. +</DL> + +<P> +<A NAME="IDX51"></A> +<A NAME="IDX52"></A> +Text can be placed at an arbitrary angle using the <CODE>\rtext</CODE> +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, <EM>before</EM> rotation of the text. Not all +PostScript printer drivers support rotated text. + + +<DL COMPACT> + +<DT><CODE>\rtext td:<VAR>angle</VAR> (x y){<VAR>text</VAR>}</CODE> +<DD> +<A NAME="IDX53"></A> + +<DT><CODE>\rtext td:<VAR>angle</VAR> {<VAR>text</VAR>}</CODE> +<DD> +The first form of this command places the TeX text <VAR>text</VAR> at an +angle with the text reference point at the coordinate <CODE>(<VAR>x</VAR> +<VAR>y</VAR>)</CODE>. The new current position is <CODE>(<VAR>x</VAR> <VAR>y</VAR>)</CODE>. The +second form of this command places the TeX text <VAR>text</VAR> 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 <VAR>angle</VAR> degrees about the text reference point. +The text reference point is set with the <CODE>\textref</CODE> command. +</DL> + +<P> +The reference point for subsequent TeX text in a <CODE>\htext</CODE>, +<CODE>\vtext</CODE> or <CODE>\rtext</CODE> command is set with the <CODE>\textref</CODE> +command. + + +<DL COMPACT> + +<DT><CODE>\textref h:<VAR>h-ref</VAR> v:<VAR>v-ref</VAR></CODE> +<DD> +<A NAME="IDX54"></A> + +Set the text reference point for subsequent text commands. The +horizontal reference point <VAR>h-ref</VAR> is one of <CODE>L</CODE>, <CODE>C</CODE> or +<CODE>R</CODE> (left, center or right). The vertical reference point +<VAR>v-ref</VAR> is one of <CODE>T</CODE>, <CODE>C</CODE> or <CODE>B</CODE> (top, center or +bottom). For rotated text, the reference point is determined before +rotation. The initial text reference point corresponds to +<CODE>\textref h:L v:B</CODE>. +</DL> +<P> + + +<P> +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. + + +<P> +Only the coordinate of the text reference point in a <CODE>\htext</CODE>, +<CODE>\vtext</CODE> or <CODE>\rtext</CODE> 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 <CODE>\move</CODE> +commands. + + + +<PRE> +\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} +} +</PRE> + + + +<H2><A NAME="SEC10" HREF="texdraw_toc.html#TOC10">2.7 Circles, ellipses and arcs</A></H2> +<P> +<A NAME="IDX55"></A> +<A NAME="IDX56"></A> +<A NAME="IDX57"></A> +<A NAME="IDX58"></A> + + +<P> +TeXdraw supplies commands to generate circles, ellipses and arcs. +There are two forms of the circle command. The <CODE>\lcir</CODE> command +draws a circle of given radius. The <CODE>\fcir</CODE> 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 +<CODE>\fcir</CODE> 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. + + +<P> +The <CODE>\lellip</CODE> command generates an ellipse specified by the radius +of the ellipse in the <VAR>x</VAR> direction and the radius of the ellipse in +the <VAR>y</VAR> direction. The ellipse is symmetrical about horizontal and +vertical lines drawn through the current point. The <CODE>\fellip</CODE> +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. + + +<P> +The <CODE>\larc</CODE> 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 +<CODE>\larc</CODE> command does not affect the size of the drawing. + + +<DL COMPACT> + +<DT><CODE>\lcir r:<VAR>radius</VAR></CODE> +<DD> +<A NAME="IDX59"></A> + +Draw a circle with center at the current position. The radius is +specified by <VAR>radius</VAR>. This command draws a line along the +circumference of the circle. The drawing size is increased if necessary +to contain the circle. +<A NAME="IDX60"></A> +<DT><CODE>\fcir f:<VAR>level</VAR> r:<VAR>radius</VAR></CODE> +<DD> +Draw a filled circle with center at the current position. The radius is +specified by <VAR>radius</VAR>. The circle is painted with the gray level +specified by <VAR>level</VAR>. 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. +<A NAME="IDX61"></A> +<DT><CODE>\lellip rx:<VAR>x-radius</VAR> ry:<VAR>y-radius</VAR></CODE> +<DD> +Draw an ellipse with center at the current position. The radius in the +<VAR>x</VAR> direction is specified by <VAR>x-radius</VAR>. The radius in the +<VAR>y</VAR> direction is specified by <VAR>y-radius</VAR>. The drawing size is +increased if necessary to contain the ellipse. +<A NAME="IDX62"></A> +<DT><CODE>\fellip f:<VAR>level</VAR> rx:<VAR>x-radius</VAR> ry:<VAR>y-radius</VAR></CODE> +<DD> +Draw a filled ellipse with center at the current position. The radius +in the <VAR>x</VAR> direction is specified by <VAR>x-radius</VAR>. The radius in +the <VAR>y</VAR> direction is specified by <VAR>y-radius</VAR>. The ellipse is +painted with the gray level specified by <VAR>level</VAR>. 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. +<A NAME="IDX63"></A> +<DT><CODE>\larc r:<VAR>radius</VAR> sd:<VAR>start-angle</VAR> ed:<VAR>end-angle</VAR></CODE> +<DD> +Draw a counterclockwise arc. The center of the arc is at the current +position. The radius is specified by <VAR>radius</VAR>. The start and end +angles (in degrees) are specified by <VAR>start-angle</VAR> and +<VAR>end-angle</VAR>. This command does not affect the limits (size) of the +drawing. +</DL> + +<P> +As an example, the following commands draw a filled circle, and +superimpose an arc. + +<PRE> +\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) +} +</PRE> + +<P> +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. + + + + +<H2><A NAME="SEC11" HREF="texdraw_toc.html#TOC11">2.8 Bezier curves</A></H2> +<P> +<A NAME="IDX64"></A> +<A NAME="IDX65"></A> + + +<P> +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 <CODE>(<VAR>x0</VAR> <VAR>y0</VAR>)</CODE>, <CODE>(<VAR>x1</VAR> <VAR>y1</VAR>)</CODE>, +<CODE>(<VAR>x2</VAR> <VAR>y2</VAR>)</CODE> and <CODE>(<VAR>x3</VAR> <VAR>y3</VAR>)</CODE>. 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. + + +<P> +As the parameter u varies from 0 to 1, the coordinates of the Bezier +curve are given by a pair of parametric cubic equations, + + +<P> +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 . + + +<DL COMPACT> + +<DT><CODE>\clvec (<VAR>x1</VAR> <VAR>y1</VAR>)(<VAR>x2</VAR> <VAR>y2</VAR>)(<VAR>x3</VAR> <VAR>y3</VAR>)</CODE> +<DD> +<A NAME="IDX66"></A> + +Draw a Bezier curve from the current position to the coordinate +<CODE>(<VAR>x3</VAR> <VAR>y3</VAR>)</CODE> which becomes the new current position. The +coordinates <CODE>(<VAR>x1</VAR> <VAR>y1</VAR>)</CODE> and <CODE>(<VAR>x2</VAR> <VAR>y2</VAR>)</CODE> +serve as control points for the curve. Only the last coordinate given +is used to update the size of the drawing. +</DL> +<P> +Note that only 3 coordinate pairs are specified. The other point is the +current position before the <CODE>\clvec</CODE> command is executed. Only the +last coordinate specified in the <CODE>\clvec</CODE> 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. + + +<P> +A simple Bezier curve is produced by the following example. + +<PRE> +\btexdraw + \move (0 0) + \clvec (0 1)(1 0)(1 1) +\etexdraw +</PRE> + + + +<H2><A NAME="SEC12" HREF="texdraw_toc.html#TOC12">2.9 Fill commands</A></H2> +<P> +<A NAME="IDX67"></A> +<A NAME="IDX68"></A> +<A NAME="IDX69"></A> + + +<P> +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 <CODE>\move</CODE> or <CODE>\rmove</CODE> command and +continue with <CODE>\lvec</CODE>, <CODE>\rlvec</CODE> or <CODE>\clvec</CODE> commands. +The TeXdraw fill commands close the path and fill the interior of the +closed region. Closing the path means that effectively another +<CODE>\lvec</CODE> line is drawn from the last point specified to the initial +point. TeXdraw provides two forms of the fill command. The +<CODE>\ifill</CODE> fills the interior of the region with the given gray +level. The lines defining the path are not drawn. The <CODE>\lfill</CODE> +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. + + +<DL COMPACT> + +<DT><CODE>\lfill f:<VAR>level</VAR></CODE> +<DD> +<A NAME="IDX70"></A> + +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 <VAR>level</VAR>. Gray levels are real values from 0 (black) +through intermediate values (grays) to 1 (white). +<A NAME="IDX71"></A> +<DT><CODE>\ifill f:<VAR>level</VAR></CODE> +<DD> +Close the current path and paint the interior of the region with gray +level <VAR>level</VAR>. The line around the path is not drawn. Gray levels +are real values from 0 (black) through intermediate values (grays) to 1 +(white). +</DL> + +<P> +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 <CODE>\lvec</CODE> commands. + +<PRE> +\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 +} +</PRE> + +<P> +In TeXdraw, the <CODE>\move</CODE> command always terminates any previous +paths and starts a new path. Commands that change line parameters +(e.g. <CODE>\setgray</CODE> or <CODE>\lpatt</CODE>) also terminate paths and start +new paths. The circle, ellipse and arc commands do not affect the +definition of the current path. The <CODE>\avec</CODE> 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. + + +<P><HR><P> +Go to the <A HREF="texdraw_1.html">first</A>, <A HREF="texdraw_1.html">previous</A>, <A HREF="texdraw_3.html">next</A>, <A HREF="texdraw_11.html">last</A> section, <A HREF="texdraw_toc.html">table of contents</A>. +</BODY> +</HTML> |