diff options
Diffstat (limited to 'Master/texmf-dist/source/generic/xypic/xyrotate.doc')
-rw-r--r-- | Master/texmf-dist/source/generic/xypic/xyrotate.doc | 538 |
1 files changed, 538 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/generic/xypic/xyrotate.doc b/Master/texmf-dist/source/generic/xypic/xyrotate.doc new file mode 100644 index 00000000000..0500208b343 --- /dev/null +++ b/Master/texmf-dist/source/generic/xypic/xyrotate.doc @@ -0,0 +1,538 @@ +%% $Id: xyrotate.doc,v 3.3 1996/12/18 09:40:16 ross Exp $ +%% +%% Xy-pic ``Rotate and Scale extension'' option. +%% Copyright (c) 1993-1996 Ross Moore <ross@mpce.mq.edu.au> +%% +%% This file is part of the Xy-pic package for graphs and diagrams in TeX. +%% See the companion README and INSTALL files for further information. +%% Copyright (c) 1991-1996 Kristoffer H. Rose <krisrose@brics.dk> +%% +%% The Xy-pic package is free software; you can redistribute it and/or modify +%% it under the terms of the GNU General Public License as published by the +%% Free Software Foundation; either version 2 of the License, or (at your +%% option) any later version. +%% +%% The Xy-pic package is distributed in the hope that it will be useful, but +%% WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY +%% or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License +%% for more details. +%% +%% You should have received a copy of the GNU General Public License along +%% with this package; if not, write to the Free Software Foundation, Inc., +%% 675 Mass Ave, Cambridge, MA 02139, USA. +%% +\ifx\xyloaded\undefined \input xy \fi + +\xyprovide{rotate}{Rotate and Scale extension}{\stripRCS$Revision: 3.3 $}% + {Ross Moore}{ross@mpce.mq.edu.au}% + {Mathematics Department, Macquarie University, NSW~2109, Australia} + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +This extension provides the ability to request that any object be displayed +rotated at any angle as well as scaled in various ways. + +\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\paragraph*{Header:}\leavevmode +\DOCHEADER +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +These are effects which are not normally available within \TeX. +Instead they require a suitable `back-end' option to provide the necessary +|\special| commands, or extra fonts, together with appropriate +commands to implement the effects. Thus +$$ +\xy + *+\txt<.8\hsize>{Using this extension will have no effect on the output + unless used with a backend that explicitly supports it.} + *\frm{-} +\endxy +$$ + +\DOCMODE( +\xydef@\xyundefinedRotate@#1#2@@{%\egroup % + \xywarning@{The #1 #2 effect is not implemented with the current driver.}}% +\DOCMODE) + +The extension provides special effects that can be used with any \Xy-pic +<object> by defining |[|<shape>|]| modifiers. +The modification is local to the <object> currently being built, +so will have no effect if this object is never actually used. + +The following table lists the modifiers that have so far been +defined. They come in two types -- either +a single keyword, or a key-character with the following text treated +as a single argument. +% +\begin{defs} + |[@]| & align with current direction\cr + |[@|<direction>|]| & align to <direction>\cr + |[@!|<number>|]| & rotate <number> degrees\cr +% |[@=|<word>|]| & make |[|<word>|]| repeat the current transformations\cr +% |[@*]| & use previous transformations \cr +\noalign{\smallskip} + |[*|<number>|]| & scale by <number> \cr + |[*|<num>$_x$,<num>$_y$|]| & scale $x$ and $y$ separately \cr +%\noalign{\smallskip} +% |[<|<direction>|]| & shear y-axis to <direction> \cr +\noalign{\smallskip} + |[left]| & rotate anticlockwise by 90$^\circ$ \cr + |[right]| & rotate (clockwise) by 90$^\circ$ \cr + |[flip]| & rotate by 180$^\circ$; same as |[*-1,-1]| \cr + |[dblsize]| & scale to double size \cr + |[halfsize]| & scale to half size \cr +\end{defs} +% +These |[|<shape>|]| modifiers specify transformations of the <object> +currently being built. If the object has a rectangle edge then the size of +the rectangle is transformed to enclose the transformed object; with +a circle edge the radius is altered appropriately. + +\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\TODO: +There should be an + |[@*]| form which repeats the set of transformations applied to the last +object which has been transformed, possibly in an earlier diagram. +Also an |[@=|<word>|]| form allowing a set of transformations to be saved +and used later, simply by specifying |[|<word>|]|. + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\medskip + +Each successive transformation acts upon the result of all previous. One +consequence of this is that the order of the shape modifiers can make a +significant difference in appearance---in general, transformations do not +commute. Even successive rotations can give different sized rectangles if +taken in the reverse order. + +Sometimes this change of size is not desirable. The following commands are +provided to modify this behaviour. +% +\begin{defs} + |\NoResizing| & prevents size adjustment \cr + |\UseResizing| & restores size adjustments \cr +\end{defs} +% +\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\DOCMODE( +\xydef@\NoResizing{\xyNoResizing@} +\xydef@\UseResizing{\xyUseResizing@} + +\xydef@\xyNoResizing@{% + \global\let\origxyrescale@=\xyrescale@ + \global\let\origxyrotSizeMod@=\xyrotateSizeMod@ + \global\let\xyNoResizing@=\xyNoResizing@@ + \global\let\xyUseResizing@=\xyUseResizing@@ + \xyNoResizing@@ } + +\xydef@\xyNoResizing@@{% + \global\let\xyrescale@=\xyignorescale@ + \global\let\xyrotateSizeMod@=\xyignoreSizeMod@ + } + +\xylet@\xyUseResizing@=\relax +\xydef@\xyUseResizing@@{% + \global\let\xyrescale@=\origxyrescale@ + \global\let\xyrotateSizeMod@=\origxyrotSizeMod@ + } +\DOCMODE) + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\noindent +The |\NoResizing| command is also useful to have at the beginning of a +document being typeset using a driver that cannot support scaling effects, +in particular when applied to whole diagrams. In any case an unscaled +version will result, but now the spacing and positioning will be appropriate +to the unscaled rather than the scaled size. + +\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\paragraph*{Interface} + +Recognize the <shape> characters and keywords. + +\DOCMODE( +\xydefcsname@{shape [@...]}#1{\xyrotatechar@#1@@}% +\xydefcsname@{shape [<...]}#1{\xyshearchar@{#1}@@}% +\xydefcsname@{shape [*...]}#1{\xyscalechar@{#1}@@}% + +\xydefcsname@{shape [left]}{\xyshape@left@} +\xydefcsname@{shape [right]}{\xyshape@right@} +\xydefcsname@{shape [flip]}{\xyshape@flip@} +\xydefcsname@{shape [halfsize]}{\xyshape@halfsize@} +\xydefcsname@{shape [dblsize]}{\xyshape@dblsize@} +\xydefcsname@{shape [vflip]}{\xyshape@vflip@} +\xydefcsname@{shape [hflip]}{\xyshape@hflip@} +\DOCMODE) + +\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Each style modifier adds code to one, or both, of two global lists. +These contents of these lists, called |\preXYtransform@@| +and |\postXYtransform@@|. +An implementation must define macros which are to be bound +to the control sequence names |\preXYtransform@| and |\postXYtransform@|, +which are prepended and appended to the |\Drop@@| and |Connect@@| methods +for the current <object>. + +Also |\Drop@@| and |\Connect@@| must be modified, if this has not already +been done as indicated by |\xy@transform@| having expansion |\relax|. + +\DOCMODE( +\xydef@\preXYtransform@{} +\xydef@\postXYtransform@{} + +\xywarnifdefined\preXYtransform@@ +\xywarnifdefined\postXYtransform@@ + \gdef\preXYtransform@@{} + \gdef\postXYtransform@@{} +\xydef@\xy@transform@{} +\xydef@\preShape@@{} +\xydef@\postShape@@{} +\DOCMODE) + +The transformations must be implemented by emulating the adjoint coordinate +transformations. This requires that code be added to |preXYtransform@@| +in reverse order to the order of occurrence of the <shape> modifiers. +The code is added to |\postXYtransform@@| in natural order, so that each +addition to |\preXYtransform@@| can be closed off, if necessary, +in a correctly nested sequence. + +\DOCMODE( +\xydef@\modXYtransform@{% + \ifx\xy@transform@\empty + \transformDrop@\transformConnect@\resetTransform@\fi +%\show\preShape@@ + \DN@##1{\expandafter\def\expandafter\tmp@\expandafter{##1}}% + \expandafter\next@\expandafter{\preShape@@}% + \DN@##1{\expandafter\gdef\expandafter\preXYtransform@@\expandafter{% + \tmp@ ##1}}\expandafter\next@\expandafter{\preXYtransform@@}% + \DN@##1{\expandafter\def\expandafter\tmp@\expandafter{##1}}% + \expandafter\next@\expandafter{\postShape@@}% + \DN@##1{\expandafter\gdef\expandafter\postXYtransform@@\expandafter{% + \postXYtransform@@ ##1}}\expandafter\next@\expandafter{\tmp@}}% + +\xydef@\transformDrop@{\let\xy@transform@=\relax + \expandafter\def\expandafter\Drop@@\expandafter{% + \expandafter\preXYtransform@\Drop@@\postXYtransform@}} + +\xydef@\transformConnect@{\let\xy@transform@=\relax + \expandafter\def\expandafter\Connect@@\expandafter{% + \expandafter\preXYtransform@\Connect@@\postXYtransform@}} + +\xydef@\resetTransform@{\gdef\preXYtransform@@{}\gdef\postXYtransform@@{}} +\DOCMODE) + +\BUG: The reference point does not move correctly in \PS\ when a shift +modifier has been applied before a rotation. The object prints outside +of its bounding |\rectangleEdge|. Fix this!! + +Global macros are used, so that the same styles can be reused by +successive objects without having to re-interpret <shape> modifiers, +as described next. + +\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\paragraph*{Saving transformations} + +Once specified for an <object>, the collection of transformations can be +assigned a name, via |[>|<name>|]|. +The <name> here is any collection of letters +or other characters up to the closing |]|. +Subsequent use of |[>|<name>|]|, with the same or other <objects>s, +will re-establish the saved transformations, acting on the new <object> +with initial reference point appropriate to this <object>. + +\NOTE: Such namings are global and permanent. +They are intended to allow a particular set of transformations to be +easily repeated for different objects inside various pictures and diagrams +within the same document. + +\DOCMODE( +\xydef@\xynametransform@#1{% + \DN@{\expandafter\gdef\expandafter#1\expandafter{\the\toks@}}\next@ } +\DOCMODE) + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\paragraph*{Scaling and Scaled Text} + +The <shape> modifier can contain either a single scale factor, or a pair +indicating different factors in the $x$- and $y$-directions. +Negative values are allowed, to obtain reflections in the +coordinate axes, but not zero. + +\DOCMODE( +\xydef@\xyscalechar@#1@@{\xyscalechars@#1,#1,@@} + +\xydef@\xyscalechars@#1,#2,#3@@{% + \DN@{\xyrescale@(#1,#2)}% + \dimen@=#1\p@ + \ifdim\dimen@>\z@ \else \ifdim\dimen@<\z@ \else + \DN@{\xywarning@{invalid scaling factors #1, #2}}% + \fi\fi \dimen@=#2\p@ + \ifdim\dimen@>\z@ \else \ifdim\dimen@<\z@ \else + \DN@{\xywarning@{invalid scaling factors #1, #2 }}% + \fi\fi \next@ } + +\xydef@\xyrescale@(#1,#2){% + \setboxz@h{\xyscale@@{#1}{#2}% + \dimen@=\ifx-#1\R@c\advance\dimen@-\R@c \dimen@=-\dimen@ + \else#1\L@c \advance\dimen@-\L@c\fi + \kern\dimen@\boxz@\kern-\dimen@}% + \R@c=\if-#1\L@c\else#1\R@c\fi + \L@c=\if-#1\R@c\else#1\L@c\fi + \U@c=\if-#2\D@c\else#2\U@c\fi + \D@c=\if-#2\U@c\else#2\D@c\fi } + +\xydef@\xyignorescale@(#1,#2){\xywarning@{Ignoring rescale: #1,#2}% + \setboxz@h{\xyscale@@{#1}{#2}\boxz@}}% +\DOCMODE) + +\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Some particular scalings. + +\DOCMODE( +\xydef@\xyshape@halfsize@{\xyrescale@(.5,.5)} +\xydef@\xyshape@dblsize@{\xyrescale@(2,2)} +\xydef@\xyshape@flip@{\xyrescale@(-1,-1)} +\xydef@\xyshape@vflip@{\xyrescale@(1,-1)} +\xydef@\xyshape@hflip@{\xyrescale@(-1,1)} +\DOCMODE) + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\paragraph*{Rotation and Rotated Text} + +Within |[@...]| the |...| are parsed as a <direction> locally, based on the +current direction. The value of count register |\Direction| contains the +information to determine the requested direction. +When no <direction> is parsed then |[@]| requests a rotation to align with +the current direction. + +The special sequence |[@!...]| is provided to pass an angle directly to +the back-end. The \Xy-pic size and shape of the <object> with |\rectangleEdge| +is unchanged, even though the printed form may appear rotated. +This is a feature that must be implemented specially by the back-end. +For example, using the \PS\ back-end, |[@!45]| will show the object rotated +by 45$^\circ$ inside a box of the size of the unrotated object. + +\DOCMODE( +\xydef@\xyrotatechar@{\bgroup + \afterDIRECTIONorEMPTY{\xyrotateSizeMod@}{\xyFN@\xySpecialRotate@i}} + +\xydef@\xySpecialRotate@i{% + \ifx \space@\next \expandafter\DN@\space{\xyFN@\xySpecialRotate@i}% + \else\ifx @\next \let\next@=\xyrotateSizeMod@ + \else\addEQ@\ifx \next + \addEQ@\DN@##1@@{%\transformDrop@ + \expandafter\xynametransform@\csname shape [##1]\endcsname\egroup}% + \else\ifx !\next \DN@!{\egroup\getSpecialRotate@}% + \else\ifx *\next \DN@*@@{\egroup\transformDrop@}% + \else \DN@{\xySpecialRotate@@}% + \fi\fi\fi\fi\fi \next@ } + +\xydef@\getSpecialRotate@{\doSpecialRotate@@} +\DOCMODE) + +\TODO: Provide example of repeated, named transformation. + +\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\paragraph*{Installation} + +Initially there is no support for the actual effects. +They will be processed according to size/shape requirements, +but the actual rotation or re-sizing is ommitted. +A <driver> file is required to implement the effects. +It need to define alternative expansions to which +|\xyRotate@@#1|, |\xySpecialRotate@@#1@@|, |\doSpecialRotate@@#1@@| +and |\xyscale@@#1#2| can be bound. + +\DOCMODE( +\xydef@\xyRotate@#1{\xyundefinedRotate@{rotate}{#1}@@} +\xydef@\xySpecialRotate@#1@@{\xyundefinedRotate@{rotate}{#1}@@\egroup} +\xydef@\doSpecialRotate@#1@@{\xyundefinedRotate@{special rotate}{#1}@@} +\xydef@\xyscale@#1#2{\xyundefinedRotate@{scale}{#1,#2}@@} + +\xydef@\UnloadRotate@#1{% + \ifx#1\relax\else\xyunload@{rotation extension}\fi + \let\xyRotate@@=\xyRotate@ + \let\xySpecialRotate@@=\xySpecialRotate@ + \let\doSpecialRotate@@=\doSpecialRotate@ + \let\xyscale@@=\xyscale@ } + +\UnloadRotate@\relax + +\xyaddunsupport{rotate}{\UnloadRotate@\relax} +\DOCMODE) + +\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +This adjusts the sizes of |\L@c|, |\R@c|, |\U@c| and |\D@c| appropriately. + +\DOCMODE( +\xydef@\xyrotateSizeMod@ @@{% + \L@p=\L@c \R@p=\R@c \U@p=\U@c \D@p=\D@c + \ifdim\cosDirection\p@>\z@ + \R@c=\cosDirection\R@p \L@c=\cosDirection\L@p + \U@c=\cosDirection\U@p \D@c=\cosDirection\D@p + \else + \R@c=\cosDirection\L@p \L@c=\cosDirection\R@p + \U@c=\cosDirection\D@p \D@c=\cosDirection\U@p + \fi + \advance\L@c \if-\sinDirection\D@p\else\sinDirection\U@p\fi + \advance\R@c \if-\sinDirection\U@p\else\sinDirection\D@p\fi + \advance\U@c \if-\sinDirection\L@p\else\sinDirection\R@p\fi + \advance\D@c \if-\sinDirection\R@p\else\sinDirection\L@p\fi + \dimen@ii=\L@c \advance\dimen@ii-\L@p + \edef\tmp@{\egroup \L@c=\the\L@c \R@c=\the\R@c \U@c=\the\U@c \D@c=\the\D@c + \dimen@ii=\the\dimen@ii \noexpand\setboxz@h\bgroup + \noexpand\xyRotate@@{\the\Direction}}\tmp@ + \xydropRotated@ } + +\xydef@\xydropRotated@@{% + \kern\dimen@ii \boxz@ \kern-\dimen@ii \modXYtransform@ \egroup } +\xylet@\xydropRotated@=\xydropRotated@@ + +\xydef@\xyignoreSizeMod@ @@{\xywarning@{Ignoring rotation}} +\DOCMODE) + +Some particular rotations. + +\DOCMODE( +\xydef@\xyshape@left@{\xyrotatechar@ v(0,1)@@} +\xydef@\xyshape@right@{\xyrotatechar@ v(0,-1)@@} +\DOCMODE) + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\paragraph*{Reflections} + +Reflections can be specified by a combination of rotation and a flip --- +either |[hflip]| or |[vflip]|. + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\paragraph*{Shear transformations} + +\DOCMODE( +\xydef@\xyshearchar@{\xyundefinedRotate@{shearing}} +\DOCMODE) + +\TODO: Provide the structure to support these; then implement it in \PS. + +\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +The following diagram requires various options to be loaded and installed. +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\xyrequire{rotate}\xyrequire{color}\xyrequire{crayon}\xyrequire{line}% +\xyuncatcodes + +\paragraph*{Example} + +The diagram in figure~??[rotate and flips] illustrates many of the effects +described above as well as some additional ones defined by the |color| and +|rotate| extensions. + +\begin{figure*}[t] +\begin{code} +\UseCrayolaColors +\xy\drop[*1.25]\xybox{\POS +(0,0)*{A};(100,40)*{B}**{} + ?<<*[@_][red][o]=<5pt>{\heartsuit}; + ?>>>*[@_][Plum][o]=<3pt>{\clubsuit} + **[|*][|.5pt][thicker]\dir{-}, +?(.1)*[left]!RD\txt{label 1}*[red]\frm{.} +?(.2)*[!gsave newpath + xyXpos xyYpos moveto 50 dup rlineto + 20 setlinewidth 0 0 1 setrgbcolor stroke + grestore][psxy]{.}, +?(.2)*[@]\txt{label 2}*[red]\frm{.}, +?(.2)*[BurntOrange]{*}, +?(.3)*[halfsize]\txt{label 3}*[red]\frm{.} +?(.375)*[flip]\txt{label 4}*[red]\frm{.} +?(.5)*[dblsize]\txt{label 5}*[red]\frm{.} +?(.5)*[WildStrawberry]{*}, +?(.7)*[hflip]\txt{label 6}*[red]\frm{.} +?(.8)*[vflip]\txt{label 7}*[red]\frm{.} +?(.9)*[right]!LD\txt{label 8}*[red]\frm{.} +?(.5)*[@][*.66667]!/^30pt/ + \txt{special effect: aligned text} + *[red]\frm{.} +}\endxy +\end{code} +$$\docode$$ +\caption{Rotations, scalings and flips} +??=[rotate and flips] +\end{figure*} + +\begin{exercise} +Suggest the code used by the author to typeset ??[rotate and flips]. +\answercode +\answertext{This is how the author specified the diagram:} +\answertext\displaycode +\end{exercise} + +The actual code is given in the solution to the exercise. +Use it as a test of the capabilities of your DVI-driver. +The labels should fit snugly inside the accompanying rectangles, +rotated and flipped appropriately. + +\BUG: This figure also uses colours, alters line-thickness and includes +some \PS\ drawing. +The colours may print as shades of gray, +with the line from $A$ to $B$ being thicker than normal. +The wider band sloping downwards may have different width and length +according to the DVI-driver used; this depends on the coordinate system +used by the driver, when `raw' \PS\ code is included. + +\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\paragraph*{The end \& Log}\leavevmode + +\DOCMODE( +\xyendinput + +% $Log: xyrotate.doc,v $ +% Revision 3.3 1996/12/18 09:40:16 ross +% no changes +% +% Revision 3.2 1995/09/19 18:21:41 ross +% Bug fix release. +% +% Revision 3.1 1995/09/05 20:36:33 ross +% Release! +% +% Revision 3.0 1995/07/07 20:13:19 ross +% Major release w/new User's Guide! +% +% Revision 2.13 1995/07/04 15:04:51 ross +% Ready for release of v3. +% +% Revision 2.12 1994/10/25 03:01:14 ross +% Final 3beta release [bug fixes & AMS-LaTeX fitting]. +% +% Revision 2.11 1994/07/05 06:38:37 ross +% some documentation was left out previously +% +% Revision 2.10 1994/06/15 12:46:03 ross +% Second release 3beta. +% Colour and line style saving works; label colouring bug fixed. +% +% Revision 2.9 1994/06/09 14:39:49 ross +% Release 3beta. +% +% NEW file to go in version 2.9 by Ross Moore. +\DOCMODE) + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Tell Emacs that this is a LaTeX document and how it is formatted: +% Local Variables: +% mode:latex +% fill-column:77 +% fill-prefix:"" +% End: |