diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-12 23:46:03 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-12 23:46:03 +0000 |
commit | 873660d1a83ece926fe7206288dda9c36b349c1b (patch) | |
tree | a48f77125c309a355b5d0eb58d6b24446abe9d62 /Master/texmf-dist/tex/generic/xypic/xyline.tex | |
parent | 2939242967231097459df0fc3150fabc2f639111 (diff) |
generic 1
git-svn-id: svn://tug.org/texlive/trunk@613 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/generic/xypic/xyline.tex')
-rw-r--r-- | Master/texmf-dist/tex/generic/xypic/xyline.tex | 238 |
1 files changed, 238 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/xypic/xyline.tex b/Master/texmf-dist/tex/generic/xypic/xyline.tex new file mode 100644 index 00000000000..a6cee47e41a --- /dev/null +++ b/Master/texmf-dist/tex/generic/xypic/xyline.tex @@ -0,0 +1,238 @@ +%% xyline.tex from $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} +\xydefcsname@{*stylechar@|@}#1{\xyFN@\xywidthchar@#1@@}% +\xydefcsname@{style [thinner]}{\xyshape@thinner@} +\xydefcsname@{style [thicker]}{\xyshape@thicker@} +\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@}% + \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@ *@@{\recoverXyStyle@}% + \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@} +\xydef@\xylinecap@{2} +\xydef@\xylinejoin@{2} +\xydef@\xylinemiter@{10} +\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@} +\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@}} +\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}}} +\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@ +\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@ +\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@ +\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@}}% +\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}}@@} +\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 } +\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@ } +\xylet@\xy@polystyle@@=\xypolynospec@ +\xydef@\UninstallPolylines@{% + \UnloadpolySpecials@ + \let\xy@polystyle@@=\xypolynospec@ } +\UninstallPolylines@ +\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@}@@}% +\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} +\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@ +\xydef@\transxyline@#1{\edef\next@{\removePT@#1}} +\xylet@\transxyline@@=\DN@ +\xylet@\xylineSpecial@@=\eat@ +\xyendinput |