diff options
Diffstat (limited to 'Master/texmf-dist/source/generic/xypic/xydvitops.doc')
-rw-r--r-- | Master/texmf-dist/source/generic/xypic/xydvitops.doc | 346 |
1 files changed, 346 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/generic/xypic/xydvitops.doc b/Master/texmf-dist/source/generic/xypic/xydvitops.doc new file mode 100644 index 00000000000..c6e0c0a6423 --- /dev/null +++ b/Master/texmf-dist/source/generic/xypic/xydvitops.doc @@ -0,0 +1,346 @@ +%% $Id: xydvitops.doc,v 3.3 1996/12/18 09:14:36 ross Exp $ +%% +%% Xy-pic ``DVITOPS-driver'' option. +%% Copyright (c) 1995-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{dvitops}{DVITOPS driver}{\stripRCS$Revision: 3.3 $}% + {Ross Moore}{ross@mpce.mq.edu.au}% + {Mathematics Department, Macquarie University, NSW~2109, Australia} + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def\DVITOPS{{\sc dvitops}} +This file provides support for the \DVITOPS\ driver by James +Clark. As of September 1995, it has not been fully tested. + +\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\paragraph*{Header:}\leavevmode +\DOCHEADER + +\DOCMODE( +\xydef@\dvitops@@#1{\dvimessage@{DVITOPS}{#1}} + +\newdriver{% + \xyaddsupport{color}\dvitopsColor@@ + \xyaddsupport{crayon}\dvitopsCrayon@@ + \xyaddsupport{ps}\dvitopsPS@@ + \xyaddsupport{rotate}\dvitopsRotate@@ + \xyaddsupport{line}\dvitopsLine@@ + \xyaddsupport{frame}\dvitopsFrames@@ + \xyaddsupport{tile}\dvitopsTiles@@ +% \xyaddsupport{tpic}\dvitopsTPIC@@ + \xyaddsupport{cmtip}\relax +} +\DOCMODE) + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +Supported |\special| effects are... +% +\begin{itemize} + +\item colour, using direct color specials for |gray|, |rgb| and |hsb| colour + models; and \PS\ colour within diagrams; + +\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\DVITOPS\ has a method for using colours locally, however it only colours +``regions'', which cannot be nested. To use this within \Xy-pic\ +diagrams would be just asking for trouble. + +\DOCMODE( +\xydef@\dvitopsColor@@{\dvitops@Color@} + +\xydef@\dvitops@Color@{\dvitopsPStypes@ + \let\xylocalColor@=\xyDVITOPScolor@ + \let\xycolor@push\xycolor@push@@ + \def\xycolor@{\xycolor@@}\let\xycolorwarning@=\relax + \expandafter\ifx\csname xyps-psloaded\endcsname\empty\DN@{% + \xyinputorelse@{xyps-c}{\xydrivernoload@{ps-c}}\xycatcodes + \installPScolor@ }\else\DN@{}\fi \next@ + \ifx\xycolor@@\xyNoColor@ \let\xycolor@@=\xycolor@raw@@\fi + \ifx\xycrayolaloaded\empty \DN@{\xystandardcolors@\dvitopsCrayon@{}}% + \else\let\next@=\xystandardcolors@ + \fi \next@ + \let\dvitops@Color@@=\relax + \let\UnloadColor@@=\NoDVITOPScolor@ + }% + +\xydef@\NoDVITOPScolor@{% + \def\xycolor@{\xycolor@@}% + \let\xycolor@@=\xyNoColor@ + \let\xylocalColor@=\xyNoColor@@ + \let\xycolorwarning@=\xycolorwarning@@ + \let\dvitops@Color@@=\dvitops@Color@ + } +\DOCMODE) + +\DOCMODE( +\xydef@\xyDVITOPScolor@{\bgroup \DN@##1##2{\egroup}% + \ifInvisible@\else\ifHidden@\else\DNii@{\no@@}\ifx\nextii@\Connect@@ + \else\DN@{\xyDVITOPScolor@i}\fi\fi\fi \next@ } + +\xydef@\xyDVITOPScolor@i#1#2{\checkXyStyle@ + \DN@{#2}\ifx\next@\empty + \def\tmp@##1{\DN@{\xycolor@begin##1\xycolor@end{#1}}}% + \else\DNii@{gray}\ifx\next@\nextii@ + \def\tmp@##1{\DN@{\xycolor@begin##1\xycolor@end{gray}{#1}}}% + \else\DNii@{rgb}\ifx\next@\nextii@ + \def\tmp@##1{\DN@{\xycolor@begin##1\xycolor@end{rgbcolor}{#1}}}% + \else\DNii@{hsb}\ifx\next@\nextii@ + \def\tmp@##1{\DN@{\xycolor@begin##1\xycolor@end{hsbcolor}{#1}}}% + \else \DN@{\xywarning@{DVITOPS cannot support color: #2 #1}}% + \fi\fi\fi\fi + \toks@={\egroup \let\xy@style@=\relax \def\Drop@@}% + \expandafter\tmp@\expandafter{\Drop@@}% + \expandafter\addtotoks@\expandafter{\expandafter{\next@}\def\Connect@@}% + \expandafter\tmp@\expandafter{\Connect@@}% + \expandafter\addtotoks@\expandafter{\expandafter{\next@}}% + \the\toks@ }% + +\xydef@\xycolor@begin{\dvitopsBegin@{color}} +\xydef@\xycolor@end{\dvitopsEnd@{color}\dvitopsColor@x} +\DOCMODE) + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\item crayon colours. + +\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +The 68 colours are those that |dvips| recognizes by name, +thanks to Tomas Rokicki. + +\DOCMODE( +\xydef@\dvitopsCrayon@@{\dvitopsColor@@\dvitopsCrayon@} +\xydef@\dvitopsCrayon@{\installCrayolaColors@}% +\DOCMODE) + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\item \PS\ back-end. +\DOCMODE( +\xydef@\dvitopsPS@@{\dvipsPS@} + +\xydef@\dvitopsPS@unload{\UnloadPS@ + \let\UnloadPS@@=\UnloadPS@ + \let\dvitopsPS@@=\dvitopsPS@ } +\DOCMODE) + +\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\DVITOPS\ has two kinds of |\special| which can be used; `inline' and +`prolog' for including header files. Also there are the `begin' and `end' +types for defining regions. + +\DOCMODE( +\xydef@\dvitopsPStypes@{% + \xyinputorelse@{xyps-ps}{\xydrivernoload@{ps-ps}}% + \ifx\PSspecial@@\dvitopsSpecial@\else + \let\PSspecial@@=\dvitopsSpecial@ + \let\PSmacro@@=\dvitopsMacro@ + \let\PSdict@@=\dvitopsDict@ + \let\PSspecialdict@@=\dvitopsDict@ + \let\PSraw@@=\dvitopsRaw@ + \let\PSinclude@@=\dvitopsInclude@ + \let\xyPSobeylines@@=\obeyDVIPSlines@ + \let\xyPScurrpt@@=\dvitopsCurrpt@@ + \dvitops@@{PostScript}% + \fi +% \xyinputorelse@{xyps-ps}{\xydrivernoload@{ps-ps}}% + \XYpredict@ } + +\xywarnifdefined\dvitopsSpecial@ +\xywarnifdefined\dvitopsMacro@ +\xywarnifdefined\dvitopsDict@ +\xywarnifdefined\dvitopsInclude@ +\xywarnifdefined\dvitopsRaw@ +\xywarnifdefined\dvitopsOrigin@ +\xywarnifdefined\dvitopsBegin@ +\xywarnifdefined\dvitopsEnd@ +\xywarnifdefined\dvitopsRotate@x +\xywarnifdefined\dvitopsTransform@x +\xywarnifdefined\dvitopsColor@x +{\catcode`\:=11 + \gdef\dvitopsSpecial@#1{\special{dvitops: inline #1}} + \gdef\dvitopsMacro@#1{\special{dvitops: inline {#1}xy}} + \gdef\dvitopsDict@#1{\special{dvitops: inline #1}} + \gdef\dvitopsInclude@#1{\special{dvitops: prolog #1}} + \gdef\dvitopsRaw@#1{\special{dvitops: inline #1}} +% + \gdef\dvitopsOrigin@#1{\special{dvitops: origin #1}} + \gdef\dvitopsBegin@#1{\special{dvitops: begin #1}} + \gdef\dvitopsEnd@#1{\special{dvitops: end #1}} + \gdef\dvitopsRotate@x#1{\special{dvitops: rotate #1}} + \gdef\dvitopsTransform@x#1{\special{dvitops: transform #1}} + \gdef\dvitopsColor@x#1#2{\special{dvitops: #1 color #2}} +} + +\catcode`\^^M=\active % + \gdef\next{\catcode`\^^M=\active \let^^M=\space }}% +\xylet@\obeyDVIPSlines@=\next +\DOCMODE) + +Rotations and transformations use a different mechanism, so |\xyPScurrpt@@| +can be set to |\relax|. + +\DOCMODE( +\xydef@\dvitopsCurrpt@{\global\let\xyPScurrpt@@=\relax}% +\DOCMODE) + +\medskip + +This installs the \PS\ backend. + +\DOCMODE( +\xydef@\dvitopsPS@{\dvitopsPStypes@ + \let\installxyps@@=\relax \installxyps@ } +\DOCMODE) + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\item rotated/scaled diagrams and text, using \DVITOPS\ specials; + however these may not be nested. + +\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\DOCMODE( +\xydef@\dvitopsRotate@@{\dvitopsRotate@} + +\xydef@\dvitopsRotate@{\dvitopsPStypes@ + \expandafter\ifx\csname xyps-psloaded\endcsname\empty + \DN@{\xyinputorelse@{xyps-r}{\xydrivernoload@{ps-r}}% + \installDVITOPSrotate@ }% + \else\DN@{\xydriverfail@{rotations are}\UnloadRotate@\relax}\fi + \next@ } + +\xydef@\dvitopsRotScale@{% + \def\xyrot@start{\dvitopsBegin@{rot}\dvitopsOrigin@{rot}}% + \def\xyrot@end(##1){\dvitopsEnd@{rot}\dvitopsRotate@x{##1}}% + \def\xyscale@start{\dvitopsBegin@{scal}\dvitopsOrigin@{scal}}% + \def\xyscale@end(##1,##2){% + \dvitopsEnd@{scal}\dvitopsTransform@x{##1 0 ##2 0}}% + } + +\xydef@\installDVITOPSrotate@{\installPSstyle@ + \let\xyRotate@@=\dvitopsRotate@ + \let\doSpecialRotate@@=\dvitopsSpecialRotate@ + \let\xyscale@@=\dvitopsScale@ + \dvitopsCurrpt@ + \dvitopsRotScale@ \xyPSshapes@true } + +\xydef@\UnloadDVITOPSrotate@{\UnloadRotate@\relax} +\DOCMODE) + +\DOCMODE( + \xydef@\dvitopsRotate@#1{\xyPSsplitPS@ + {\dvitopsBegin@{rot}\dvitopsOrigin@{rot}}% + {\dvitopsEnd@{rot}\dvitopsRotate@x{#1}}}% + + \xydef@\dvitopsScale@#1#2{\xyPSsplitPS@ + {\dvitopsBegin@{scal}\dvitopsOrigin@{scal}}% + {\dvitopsEnd@{scal}\dvitopsTransform@x{#1 0 #2 0}}} + + \xydef@\dvitopsSpecialRotate@#1@@{\dvitopsRotate@{#1}} +\DOCMODE) + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\item variable line-widths and poly-lines, using \PS. +\DOCMODE( +\xydef@\dvitopsLine@@{\dvitopsLine@} + +\xydef@\dvitopsLine@{\dvitopsPStypes@ + \expandafter\ifx\csname xyps-psloaded\endcsname\empty\DN@{% + \xyinputorelse@{xyps-l}{\xydrivernoload@{ps-l}}\installPSline@ }% + \else\DN@{\xydriverfail@{line-widths are}\UnloadLine@\relax}\fi + \next@ } +\DOCMODE) + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\item extra frames and fills, using \PS. +\DOCMODE( +\xydef@\dvitopsFrames@@{\dvitopsFrames@} + +\xydef@\dvitopsFrames@{\dvitopsPStypes@ + \expandafter\ifx\csname xyps-psloaded\endcsname\empty\DN@{% + \xyinputorelse@{xyps-f}{\xydrivernoload@{ps-f}}\installPSframes@ }% + \else\DN@{\xydriverfail@{frames are}\UnloadFrames@\relax}\fi + \next@ } +\DOCMODE) + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\item patterns and tiles, using \PS\ +\DOCMODE( +\xydef@\dvitopsTiles@{\dvitopsPStypes@ + \expandafter\ifx\csname xyps-psloaded\endcsname\empty\DN@{% + \xyinputorelse@{xyps-t}{\xydrivernoload@{ps-t}}\installPSpatterns@ }% + \else\DN@{\xydriverfail@{Patterns are}\UnloadPSpatterns@\relax}\fi + \next@ } +\DOCMODE) + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\item \TPIC\ drawing commands. +\DOCMODE( +\xydef@\dvitopsTPIC@@{\dvitopsTPIC@} + +\xydef@\dvitopsTPIC@{\setupxyTPIC@} +\DOCMODE) + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\end{itemize} + +\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\paragraph*{The end \& Log}\leavevmode + +\DOCMODE( +\xyendinput + +% $Log: xydvitops.doc,v $ +% Revision 3.3 1996/12/18 09:14:36 ross +% minor improvements to file-loading commands +% +% Revision 3.2 1995/09/19 18:21:41 ross +% Bug fix release. +% +% Revision 3.1 1995/09/05 20:28:57 ross +% Releasing version 3.1! +% +% NEW for version 3. +\DOCMODE) + +\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +% Tell Emacs that this is a LaTeX document and how it is formatted: +% Local Variables: +% mode:latex +% fill-prefix:"\t" +% fill-column:77 +% paragraph-separate:"^[ \t\f]*$\\|^[^\t]\\|\\\\\\\\\\|\\$\\$\\|[^\n\\\\][%&]" +% paragraph-start:"^[ \t\f]*$\\|^[^\t]\\|\\\\\\\\\\|\\$\\$\\|[^\n\\\\][%&]" +% End: |