diff options
Diffstat (limited to 'Master/texmf-dist/source/generic/xypic/xyline.doc')
-rw-r--r-- | Master/texmf-dist/source/generic/xypic/xyline.doc | 664 |
1 files changed, 0 insertions, 664 deletions
diff --git a/Master/texmf-dist/source/generic/xypic/xyline.doc b/Master/texmf-dist/source/generic/xypic/xyline.doc deleted file mode 100644 index 40fa19abedb..00000000000 --- a/Master/texmf-dist/source/generic/xypic/xyline.doc +++ /dev/null @@ -1,664 +0,0 @@ -%% $Id: xyline.doc,v 3.6 1998/03/06 01:28:05 krisrose Exp $ -%% -%% Xy-pic ``Line Width'' extension. -%% 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@ens-lyon.fr> -%% -%% 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{line}{Line styles extension}{\stripRCS$Revision: 3.6 $}% - {Ross Moore}{ross@mpce.mq.edu.au}% - {Mathematics Department, Macquarie University, NSW~2109, Australia} - -\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - - This extension provides the ability to request various effects related - to the appearance of straight lines; \eg. thickness, non-standard dashing, - and colour. - -\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 -$$ - -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. - -\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\paragraph*{Adjusting line thickness} - - -The following table lists the modifiers primarily to alter the thickness -of lines used by \Xy-pic. They come in two types --- either a single keyword, -or using the key-character |||| with the following text parsed. -% -\begin{defs}% - |[thicker]| & double line thickness \cr - |[thinner]| & halve line thickness \cr - |[||(|<num>|)]| & multiple of usual thickness\cr - |[||<|<dimen>|>]| & set thickness to <dimen>\cr - |[|||<dimen>|]| & also sets to <dimen>\cr - |[||=|<word>|]| & make |[|<word>|]| set current style settings\cr - |[||*]| & reuse previous style\cr - |[butt]| & butt cap at ends\cr - |[roundcap]| & round cap at ends\cr - |[projcap]| & projecting square cap.\cr -\end{defs} -% -\noindent -Later settings of the linewidth override earlier settings; -multiple calls to |[thicker]| and |[thinner]| compound, -but the other variants set an absolute thickness. -The line-thickness specification affects arrow-tips as well as the -thickness of straight lines and curves. -Three kinds of line-caps are available; they are discussed below -in the section on `poly-lines'. -% -\begin{code} -\xy/r8pc/:*++\txt\huge{C}="c" -,0*++\txt\huge{P}="p", -,"p",{\ar@*{[|(1)]}"p";"c"<20pt>} -,"p",{\ar@*{[|(4)]}"p";"c"<14pt>} -,"p",{\ar@*{[|(10)]}"p";"c"<4pt>} -,"p",{\ar@*{[|(20)]}"p";"c"<-16pt>} -\endxy -\end{code} -$$\docode$$ -\medskip -\displaycode -% -Using the \PS\ back-end, the size of the arrow-head grows -aesthetically with the thickness of the line used to draw it. -This growth varies as the square-root of the thickness; -thus for very thick lines (20+ times normal) the arrowhead -begins to merge with the stem. - -\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -Load the |style| extension to establish the necessary infra-structure. - -\DOCMODE( -%\xydefcsname@{shape [|...]}#1{\xyFN@\xywidthchar@#1@@}% -\xydefcsname@{*stylechar@|@}#1{\xyFN@\xywidthchar@#1@@}% - -%\xydefcsname@{shape [thinner]}{\xyshape@thinner@} -%\xydefcsname@{shape [thicker]}{\xyshape@thicker@} -\xydefcsname@{style [thinner]}{\xyshape@thinner@} -\xydefcsname@{style [thicker]}{\xyshape@thicker@} -\DOCMODE) - -\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\paragraph*{Implementation} - -Record the line thickness locally in a dimen register. -The initial value is read from the |xydash10| font. -Each time |\xylinethick@| is changed, its previous value is stored -as the expansion of |\xyprevwidth@@|, in case this is needed by -a specific back-end. - -\DOCMODE( -\xynew@{dimen}\xylinethick@ \xylinethick@=\xydashw@ - -\xydef@\xyshape@thicker@{\xylinewidth@i{\multiply\xylinethick@\tw@}} -\xydef@\xyshape@thinner@{\xylinewidth@i{\divide\xylinethick@\tw@}} - -\xydef@\xylinewidth@i#1{\edef\xyprevwidth@@{\the\xylinethick@}% - #1\edef\next@{\xylinethick@=\the\xylinethick@}% - \edef\next@ii{\noexpand\addtotoks@{% - \noexpand\xylinewidth@@{\next@}{\xyprevwidth@@}}}% - \next@ii } - - -\xydef@\xywidthchar@{% - \ifx \space@\next \expandafter\DN@\space{\xyFN@\xywidthchar@}%gobble spaces -% \else\ifx @\next \DN@ @@{\addtotoks@{\checkXyStyle@}}% - \else\ifx @\next \DN@ @@{\checkXyStyle@}% - \else\ifx (\next \DN@ (##1)##2@@{% - \xylinewidth@i{\xylinethick@=##1\xydashw@}}% - \else\addLT@\ifx \next \addGT@{\addLT@\DN@ ##1}##2@@{% - \xylinewidth@i{\xylinethick@=##1\relax}}% -% \else\ifx *\next \DN@ *@@{\addtotoks@{\checkXyStyle@}}% -% \else\ifx *\next \DN@ *@@{\checkXyStyle@}% - \else\ifx *\next \DN@ *@@{\recoverXyStyle@}% -% \else\addEQ@\ifx \next \addEQ@\DN@##1@@{% -% \addtotoks@{\checkXyStyle@\xynamestyle@{##1}}}% - \else\addEQ@\ifx \next \addEQ@\DN@##1@@{\checkXyStyle@ - \addtotoks@{\xynamestyle@{##1}}}% - \else\ifx C\next \DN@ C##1@@{\xysetlinecap@{##1}@}% - \else\ifx J\next \DN@ J##1@@{\xysetlinejoin@{##1}@}% - \else\ifx M\next \DN@ M(##1)@@{\xymiterlimit@{##1}@}% - \else \DN@##1@@{\xylinewidth@i{\xylinethick@=##1\relax}}% - \fi\fi\fi\fi\fi\fi\fi\fi\fi \next@} -\DOCMODE) - -\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -The diagram in figure~??g[xyrotate.doc:rotate and flips], -page~??gp[xyrotate.doc:rotate and flips], uses different line-thicknesses -and colours. - -\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\paragraph*{Poly-lines} - -By a `poly-line' we mean a path built from straight line segments having no -gaps where each segment abuts the next. The poly-line could be the edges of -a polygon, either closed or open if the end-points are different. - -The reason for considering a poly-line as a separate <object>, rather than -simply as a <path> built from straight lines, becomes apparent only when -the lines have appreciable thickness. Then there are several standard ways -to fashion the `joins' (where segments meet). Also the shape of the `caps' -at either end of the poly-line can be altered. - -The following modifiers are used to determine the shapes of the line `caps' -and `joins': -% -\begin{defs}% - |[||J|<val>|]| & join style, <val> = 0, 1 or 2\cr - |[mitre]| & mitre-join, same as |[||J0]|\cr - |[roundjoin]| & round join, same as |[||J1]|\cr - |[bevel]| & bevel-join, same as |[||J2]|\cr - |[||C|<val>|]| & end-cap, <val> = 0, 1 or 2\cr - |[butt]| & ``butt'' cap, same as |[||C0]|\cr - |[roundcap]| & round cap, same as |[||C1]|\cr - |[projcap]| & ``projecting square'' cap,\hfil\break same as |[||C2]|\cr - |[||M(|<num>|)]| & set mitrelimit to <num>$\ge1$\cr -\end{defs} -% -\noindent -These effects are currently implemented only with the \PS\ back-end -or when using |\xypolyline| (described below) with a \PS\ <driver>. -In this case the `cap' setting can be applied to any segment, straight -or curved, whether part of a poly-line or not; however the `join' setting -applies only to poly-lines. Arrow-tips are not affected. -The defaults are to use round joins and round-cap ends. - -Adjusting the miter-limit affects how far miters are allowed to protrude -when two wide lines meet at small angles. The <num> is in units of the -line-thickness. Higher values mean using bevels only at smaller angles, -while the value of 1 is equivalent to using bevels at all angles. -The default miter-limit is 10. - -\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -Current values are stored in case these are needed within nested portions -of diagrams. - -\DOCMODE( -\xydef@\xylinecap@{2} -\xydef@\xylinejoin@{2} -\xydef@\xylinemiter@{10} -\DOCMODE) - -%These are simple methods that alter the stored values. -% -%\DOCMODE( -%\xydef@\xysetlinecap@@#1{\xylinestyle@{C}{#1}{\def\xylinecap@{#1}}} -%\xydef@\xysetlinejoin@@#1{\xylinestyle@{J}{#1}{\def\xylinejoin@{#1}}} -%\xydef@\xysetmiterlimit@@#1{\xylinestyle@{M}{#1}{\def\xylinemiter@{#1}}} -%\DOCMODE) -% -%Finally we need the interface to pass the new values to a <driver>. -% -%\DOCMODE( -%\xydef@\xynolinestyle@@#1#2#3{\let\next=#1\relax #3% -% \ifx\next C\DN@{\xyundefinedLine@{linecap}{#2}@@}% -% \else\ifx\next J\DN@{\xyundefinedLine@{linejoin}{#2}@@}% -% \else\ifx\next M\DN@{\xyundefinedLine@{miterlimit}{#2}@@}% -% \fi\fi\fi \next@ } -% -%\xylet@\xylinestyle@\xynolinestyle@@ -%\DOCMODE) - -\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -Recognise keywords for `line-caps' and `line-joins': - -\DOCMODE( -\xydefcsname@{style [bevel]}{\xyshape@bevel@} -\xydefcsname@{style [roundjoin]}{\xyshape@rdjoin@} -\xydefcsname@{style [miter]}{\xyshape@miter@} -% -\xydefcsname@{style [butt]}{\xyshape@butt@} -\xydefcsname@{style [roundcap]}{\xyshape@rdcap@} -\xydefcsname@{style [projcap]}{\xyshape@projcap@} -\DOCMODE) - -\DOCMODE( -\xydef@\xyshape@butt@{\xysetlinecap@@0} -\xydef@\xyshape@rdcap@{\xysetlinecap@@1} -\xydef@\xyshape@projcap@{\xysetlinecap@@2} - -\xydef@\xyshape@miter@{\xysetlinejoin@@0} -\xydef@\xyshape@rdjoin@{\xysetlinejoin@@1} -\xydef@\xyshape@bevel@{\xysetlinejoin@@2} - -\xydef@\xysetlinecap@#1@{\DN@ii{#1}\count@=#1\relax - \expandafter\DN@\expandafter{\the\count@}% - \ifx\next@\next@ii\else - \xywarning@{ignoring extra tokens in line-cap: \next@}\fi - \expandafter\xysetlinecap@@\expandafter{\next@}} - -\xydef@\xysetlinejoin@#1@{\DN@ii{#1}\count@=#1\relax - \expandafter\DN@\expandafter{\the\count@}% - \ifx\next@\next@ii\else - \xywarning@{ignoring extra tokens in line-join: \next@}\fi - \expandafter\xysetlinejoin@@\expandafter{\next@}} - -\xydef@\xysetmiterlimit@#1@{\DN@ii{#1}\dimen@=#1\p@\relax - \edef\next@{\expandafter\removePT@\the\dimen@}% - \ifx\next@\next@ii\else - \xywarning@{ignoring extra tokens in miter-limit: \next@}\fi - \expandafter\xysetmiterlimit@@\expandafter{\next@}} -\DOCMODE) - -\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -These use the more sophisticated approach that is easier to adjust for -different <driver>s. - -\DOCMODE( -\xydef@\xysetlinecap@@#1{\xy@linecap@i{\def\xylinecap@{#1}}} -\xydef@\xysetlinejoin@@#1{\xy@linejoin@i{\def\xylinejoin@{#1}}} -\xydef@\xysetmiterlimit@@#1{% - \xy@linemiter@i{\def\xylinemiter@{#1}}} - -\xydef@\xy@linecap@i#1{#1\addtotoks@{\xy@linecap@@{#1}}} -\xydef@\xy@linejoin@i#1{#1\addtotoks@{\xy@linejoin@{#1}}} -\xydef@\xy@linemiter@i#1{#1\addtotoks@{\xy@linemiter@{#1}}} -\DOCMODE) - -Implementation of line-caps: - -\DOCMODE( -\xydef@\xy@linecap@#1{\checkXyStyle@ \edef\xyprevcap@@{\xylinecap@}% - #1\let\prexylinecap@=\prexylinecap@@ \let\postxylinecap@=\postxylinecap@@ - \applyLIFOstyle@\prexylinecap@{\xylinecap@}% - \postxylinecap@{\xyprevcap@@}} - -\xydef@\prexylinecap@@{\let\prexylinecap@=\eat@ - \let\postxylinecap@=\postxylinecap@@ \outputxylinecap@ } -\xydef@\postxylinecap@@{\let\postxylinecap@=\eat@ - \let\prexylinecap@=\prexylinecap@@ \resetxylinecap@@ } -\xylet@\prexylinecap@=\prexylinecap@@ -\xylet@\postxylinecap@=\postxylinecap@@ - -\xydef@\outputxylinecap@#1{\xycapSpecial@@{#1}} -\xydef@\resetxylinecap@#1{\resetxylinecap@i{#1}\outputxylinecap@{#1}} -\xydef@\resetxylinecap@i#1{\def\xylinecap@{#1}} -\xylet@\resetxylinecap@@=\resetxylinecap@ - -\xylet@\xycapSpecial@@=\eat@ -\DOCMODE) - -Implementation of line-joins: - -\DOCMODE( -\xydef@\xy@linejoin@#1{\checkXyStyle@ - \edef\xyprevjoin@@{\xylinejoin@}#1% - \let\prexylinejoin@=\prexylinejoin@@ - \let\postxylinejoin@=\postxylinejoin@@ - \applyLIFOstyle@\prexylinejoin@{\xylinejoin@}% - \postxylinecap@{\xyprevjoin@@}} - -\xydef@\prexylinejoin@@{\let\prexylinejoin@=\eat@ - \let\postxylinejoin@=\postxylinejoin@@ \outputxylinejoin@ } -\xydef@\postxylinejoin@@{\let\postxylinejoin@=\eat@ - \let\prexylinejoin@=\prexylinejoin@@ \resetxylinejoin@@ } -\xylet@\prexylinejoin@=\prexylinejoin@@ -\xylet@\postxylinejoin@=\postxylinejoin@@ - -\xydef@\outputxylinejoin@#1{\xyjoinSpecial@@{#1}} -\xydef@\resetxylinejoin@#1{\resetxylinejoin@i{#1}\outputxylinejoin@{#1}} -\xydef@\resetxylinejoin@i#1{\def\xylinejoin@{#1}} -\xylet@\resetxylinejoin@@=\resetxylinejoin@ - -\xylet@\xyjoinSpecial@@=\eat@ -\DOCMODE) - -Implementation of miter-limit: - -\DOCMODE( -\xydef@\xy@linemiter@#1{\checkXyStyle@ - \edef\xyprevmiter@@{\xylinemiter@}#1% - \let\prexylinemiter@=\prexylinemiter@@ - \let\postxylinemiter@=\postxylinemiter@@ - \applyLIFOstyle@\prexylinemiter@{\xylinemiter@}% - \postxylinecap@{\xyprevmiter@@}} - -\xydef@\prexylinemiter@@{\let\prexylinemiter@=\eat@ - \let\postxylinemiter@=\postxylinemiter@@ \outputxylinemiter@ } -\xydef@\postxylinemiter@@{\let\postxylinemiter@=\eat@ - \let\prexylinemiter@=\prexylinemiter@@ \resetxylinemiter@@ } -\xylet@\prexylinemiter@=\prexylinemiter@@ -\xylet@\postxylinemiter@=\postxylinemiter@@ - -\xydef@\outputxylinemiter@#1{\xymiterSpecial@@{#1}} -\xydef@\resetxylinemiter@#1{\resetxylinemiter@i{#1}\outputxylinemiter@{#1}} -\xydef@\resetxylinemiter@i#1{\def\xylinemiter@{#1}} -\xylet@\resetxylinemiter@@=\resetxylinemiter@ - -\xylet@\xymiterSpecial@@=\eat@ -\DOCMODE) - -\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -The path taken by the `poly-line' this is read as the list of <pos>itions -in the current `stack', ignoring size extents. -The macro |\xypolyline| is used as a <decor>; it reads the <pos>itions from -the stack, but leaves the stack intact for later use. - -\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -Implementation of `poly-lines'. - -\DOCMODE( -\xydef@\xypolyline#1{\xypolyline@{#1}} - -\xydef@\xypolyline@#1{\hbox\bgroup - \enter@{\pfromthep@ \basefromthebase@ \cfromthec@}% - \def\xyps@list{}\edef\smapp@@{\s@bot}% - \smapxy@i{\enter@{\pfromthep@ \basefromthebase@ }% - \edef\xyps@list{\expandafter\removePT@\the\X@c\space - \expandafter\removePT@\the\Y@c\space \xyps@list}\leave@}% - \leave@ \xy@polystyle@@{#1}\xydopoly@style\egroup - \def\Drop@@{\styledboxz@}\def\Connect@@{\styledboxz@}}% -\DOCMODE) - -\DOCMODE3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -The following diagram illustrates the use of line-thickness, line-joins -and line-caps with poly-lines. It contains an example of each of the styles. - -\begin{code} -\xycompileto{poly}% -{/r4pc/:,*[|<5pt>][thicker]\xybox{% - *+(3,2){}="X" -;@={p+CU,p+LU,p+LD,p+RD,p+RU,p+CU} - ,{0*[miter]\xypolyline{}} - ,{\xypolyline{*}},@i@) -,"X",*+(2.5,1.5){}="X" -,@={!CU,!LU,!LD,!RD,!RU,!CU} - ,{0*[gray][roundjoin]\xypolyline{}} - ,{0*[gray]\xypolyline{*}},@i@) -,"X",*+(2,1){}="X" -,@={!CU,!LU,!LD,!RD,!RU,!CU} - ,{0*[white]\xypolyline{*}} - ,{0*[bevel]\xypolyline{}},@i@) -,"X"-(.7,0)*++\txt\LARGE{A}="a" -,"X"+(.7,0)*++\txt\LARGE{B}="b" -,{\ar@{-}@*{[butt][thinner]}"a";"b"<1pc>} -,{\ar@{-}@*{[roundcap][thinner]}"a";"b"} -,{\ar@{-}@*{[projcap][thinner]}"a";"b"<-1pc>} -}} -\end{code} -$$\docode$$ -\displaycode -\noindent -Note the use of |{0*[...]\xypolyline{..}}| to apply style-modifiers -to a polyline. The |@={!..}| method for loading the stack gives -equivalent results to using |;@={p+..}|, since |\xypolyline| -ignores the edge extents of each <pos> in the stack. - -Note also that the argument |#1| to |\xypolyline| affects what -is typeset. Allowable arguments are: -% -\begin{defs} -|\xypolyline{}| & solid line\cr -|\xypolyline{.}| & dotted line\cr -|\xypolyline{-}| & dashed line\cr -|\xypolyline{*}| & fill enclosed polygon\cr -|\xypolyline{?}| & fill enclosed polygon using even-odd rule\cr -|\xypolyline{{*}}| & use |\dir{*}| for lines\cr -|\xypolyline{<toks>}|\kern-20pt & \kern20pt using |\dir{<toks>}| \cr -\end{defs} -\noindent -The latter cases one has |**\dir{...}| being used to connect the vertices -of the polyline, with |{{*}}| being needed to get |**\dir{*}|. -Similarly |**\dir| is used when a <driver> is not available to specifically -support polylines; in particular the two `fill' options |*| and |?| will -result in a dotted polygon outline the region intended to be filled. - -In all cases it is up to the user to load the stack before calling -|\xypolyline{|\dots|}|. A particularly common case is the outline of -an existing \Xy-pic <object>, as in the example above. Future extensions -to |\frm| will provide a simplified mechanism whereby the user need not -call |\xypolyline| explicitly for such effects. - -\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\DOCMODE( -\xylet@\xypolyline@Special=\eat@ -\xylet@\xypolyfill@Special=\eat@ -\xylet@\xypolyeofill@Special=\eat@ -\xylet@\xypolydot@Special=\eat@ -\xylet@\xypolydash@Special=\eat@ - -\xydef@\UnloadpolySpecials@{% - \let\xypolyline@Special=\eat@ - \let\xypolyfill@Special=\eat@ - \let\xypolyeofill@Special=\eat@ - \let\xypolydot@Special=\eat@ - \let\xypolydash@Special=\eat@ -} - -\xydef@\xy@polystyle@#1{% - \let\poly@style@@=\xypolyline@Special - \DNii@{#1}\ifx\nextii@\empty - \else\DN@{*}\ifx\next@\nextii@ \let\poly@style@@=\xypolyfill@Special - \else\DN@{?}\ifx\next@\nextii@ \let\poly@style@@=\xypolyeofill@Special - \else\expandafter\DN@\expandafter{\addDOT@{}}\ifx\next@\nextii@ - \let\poly@style@@=\xypolydot@Special - \else\expandafter\DN@\expandafter{\addDASH@{}}\ifx\next@\nextii@ - \let\poly@style@@=\xypolydash@Special - \else\DN@{{*}}\ifx\next@\nextii@ \def\poly@style@@{\xypolystraight@{*}}% - \else \def\poly@style@@{\xypolystraight@{#1}}% - \fi\fi\fi\fi\fi\fi } - -\xydef@\xydopoly@style{\expandafter\poly@style@@\expandafter{\xyps@list}} -\xydef@\xynopolystyle@#1#2{\xyundefinedLine@{polyline}{{#1}}@@} -\DOCMODE) - -\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -When there is no special support this handles the various cases using -ordinary thin line types. - -\DOCMODE( -\xydef@\xypolynospec@#1{\DNii@{#1}% - \ifx\nextii@\empty\def\poly@style@@{\xypolystraight@{-}}% - \else\DN@{.}\ifx\next@\nextii@ \def\poly@style@@{\xypolystraight@{.}}% - \else\DN@{-}\ifx\next@\nextii@ \def\poly@style@@{\xypolystraight@{--}}% - \else\DN@{*}\ifx\next@\nextii@ \def\poly@style@@{\xypolystraight@{.}}% - \else\DN@{?}\ifx\next@\nextii@ \def\poly@style@@{\xypolystraight@{.}}% - \else\DN@{{*}}\ifx\next@\nextii@ \def\poly@style@@{\xypolystraight@{*}}% - \else \def\poly@style@@{\xypolystraight@{#1}}% - \fi\fi\fi\fi\fi\fi } -\DOCMODE) - -Gobble the collected positions in |{\xyps@list}|; recover the vertices -from the stack, then set straight lines in the appropriate style. - -\DOCMODE( -\xydef@\xypolystraight@#1#2{% - \enter@{\pfromthep@ \basefromthebase@ \cfromthec@}% - \edef\smapp@@{\s@bot}\csname S@0\endcsname\czeroEdge@\pfromc@\def\smapp@@{0}% - \smapxy@i{\czeroEdge@\enter@{\pfromthec@}{\connect@\dir{#1}}\leave@}\leave@ } -\DOCMODE) - -\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -Initially poly-lines are uninstalled, until loaded by a <driver>. - -\DOCMODE( -\xylet@\xy@polystyle@@=\xypolynospec@ - -\xydef@\UninstallPolylines@{% - \UnloadpolySpecials@ - \let\xy@polystyle@@=\xypolynospec@ } -\UninstallPolylines@ -\DOCMODE) - -\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% -\paragraph*{Installation} - -Initially there is no support for the actual effects. - -\DOCMODE( -\xydef@\xyundefinedLine@#1#2@@{% - \xywarning@{The #1 #2 effect is not implemented with the current driver.}}% - -\xydef@\xynolinewidth@#1#2{% - \xyundefinedLine@{linewidth}{\the\xylinethick@}@@}% -\xydef@\xynolinecap@#1{\xyundefinedLine@{linecap}{\xylinecap@}@@}% -\xydef@\xynolinejoin@#1{\xyundefinedLine@{linejoin}{\xylinejoin@}@@}% -\xydef@\xynolinemiter@#1{\xyundefinedLine@{miterlimit}{\xylinemiter@}@@}% -\DOCMODE) - -Nothing further can be done unless allowed by a specific <driver>, which -must establish an alternative expansions to be bound to |\xylinewidth@@| -and the other hooks. - -\DOCMODE( -\xylet@\xylinewidth@@=\xynolinewidth@ -\xylet@\xy@linecap@@=\xynolinecap@ -\xylet@\xy@linejoin@@=\xynolinejoin@ -\xylet@\xy@linemiter@@=\xynolinemiter@ - -\xydef@\UnloadLine@#1{% - \ifx#1\relax\else\xyunload@{line width extension}\fi - \let\resetxyline@@=\resetxyline@ - \let\resetxylinecap@@=\resetxylinecap@ - \let\resetxylinejoin@@=\resetxylinejoin@ - \let\resetxylinemiter@@=\resetxylinemiter@ - \let\transxyline@@=\DN@ - \let\xylineSpecial@@=\eat@ - \let\xycapSpecial@@=\eat@ - \let\xyjoinSpecial@@=\eat@ - \let\xymiterSpecial@@=\eat@ - \let\xylinewidth@@=\xynolinewidth@ - \let\xy@linecap@@=\xynolinecap@ - \let\xy@linejoin@@=\xynolinejoin@ - \let\xy@linemiter@@=\xynolinemiter@ - \UninstallPolylines@ } - -\xyaddunsupport{line}{\UnloadLine@\relax} -\DOCMODE) - -\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -This is a possible alternative for |\xylinewidth@@|. Indeed it is used -with the \PS\ support, which then redefines just |\xylineSpecial@@|. - -\DOCMODE( -\xydef@\xylinewidth@#1#2{\checkXyStyle@ - #1\let\prexyline@=\prexyline@@ \let\postxyline@=\postxyline@@ - \applyLIFOstyle@\prexyline@{\the\xylinethick@}\postxyline@{#2}} -\xydef@\prexyline@@{\let\prexyline@=\eat@ - \let\postxyline@=\postxyline@@ \outputxyline@ } -\xydef@\postxyline@@{\let\postxyline@=\eat@ - \let\prexyline@=\prexyline@@ \resetxyline@@ } -\xylet@\prexyline@=\prexyline@@ -\xylet@\postxyline@=\postxyline@@ - -\xydef@\resetxyline@#1{\resetxyline@i{#1}\outputxyline@{#1}} -\xydef@\resetxyline@i#1{\xylinethick@=#1\relax} -\xydef@\outputxyline@#1{\transxyline@@{#1}% - \expandafter\xylineSpecial@@\expandafter{\next@}} -\xylet@\resetxyline@@=\resetxyline@ -\DOCMODE) - -These need to be rebound by a back-end which supports variation in the -line-thickness. - -\DOCMODE( -\xydef@\transxyline@#1{\edef\next@{\removePT@#1}} - -\xylet@\transxyline@@=\DN@ -\xylet@\xylineSpecial@@=\eat@ -\DOCMODE) - -\DOCMODE2%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% - -\paragraph*{The end \& Log}\leavevmode - -\DOCMODE( -\xyendinput - -% $Log: xyline.doc,v $ -% Revision 3.6 1998/03/06 01:28:05 krisrose -% Releasing (with Y&Y fonts). -% -% Revision 3.3 1996/12/18 09:22:29 ross -% adjustments for styles now within the kernel code -% fixed problem with line-widths -% -% 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 09:27:49 ross -% fixed documentation bug -% -% 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 for 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: |