summaryrefslogtreecommitdiff
path: root/macros/generic/diagrams/xypic/texinputs/xyline.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/generic/diagrams/xypic/texinputs/xyline.tex')
-rw-r--r--macros/generic/diagrams/xypic/texinputs/xyline.tex237
1 files changed, 237 insertions, 0 deletions
diff --git a/macros/generic/diagrams/xypic/texinputs/xyline.tex b/macros/generic/diagrams/xypic/texinputs/xyline.tex
new file mode 100644
index 0000000000..d70d6f84ab
--- /dev/null
+++ b/macros/generic/diagrams/xypic/texinputs/xyline.tex
@@ -0,0 +1,237 @@
+%% xyline.tex from $Id: xyline.doc,v 3.10 2011/03/14 20:14:00 krisrose Exp $
+%%
+%% Xy-pic ``Line Width'' extension.
+%% Copyright (c) 1993-1996 Ross Moore <ross.moore@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-2011 Kristoffer H. Rose <krisrose@tug.org>
+%%
+%% 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, see http://www.gnu.org/licenses/.
+%%
+\ifx\xyloaded\undefined \input xy \fi
+\xyprovide{line}{Line styles extension}{\stripRCS$Revision: 3.10 $}%
+ {Ross Moore}{ross.moore@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