diff options
Diffstat (limited to 'Master/texmf-dist/tex/generic/dratex/wotree.sty')
-rw-r--r-- | Master/texmf-dist/tex/generic/dratex/wotree.sty | 106 |
1 files changed, 106 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/generic/dratex/wotree.sty b/Master/texmf-dist/tex/generic/dratex/wotree.sty new file mode 100644 index 00000000000..78ec73999d5 --- /dev/null +++ b/Master/texmf-dist/tex/generic/dratex/wotree.sty @@ -0,0 +1,106 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% wotree.sty 2000-06-29-20:18 % +% Copyright (C) 2000 Eitan M. Gurari % +% % +% This program can redistributed and/or modified under % +% the terms of the LaTeX Project Public License % +% Distributed from CTAN archives in directory % +% macros/latex/base/lppl.txt; either version 1 of the % +% License, or (at your option) any later version. % +% % +% However, you are allowed to modify this program % +% without changing its name, if you modify its % +% signature. Changes to the signature can be introduced % +% with a directive of the form % +% \message{signature} % +% % +% gurari@cse.ohio-state.edu % +% http://www.cse.ohio-state.edu/~gurari % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\immediate\write-1{version 2000-06-29-20:18} + +\expandafter\edef\csname wo:recall\endcsname{\catcode`:=\the\catcode`:} +\catcode`\:=11 + +\Define\WO:GetY(2){\Vb=#2;} + +\Define\WOEdge(2){ + \CSeg\WO:GetY(#2,EdgeGuide) + \IF \GtDec(\Vb,0) + \MoveToNode(#2,0,-1) + \ELSE + \MoveToNode(#2,0,1) + \FI + \MarkLoc(*1) \Move(10,0) \MarkLoc(*2) + \MoveToLoc(EdgeGuide) \Move(0,10) \MarkLoc(*3) + \MoveToLL(*1,*2)(EdgeGuide,*3) \MarkLoc(*3) + \MoveToNode(#1,1,0) \Move(5,0) \LineToLoc(EdgeGuide) + \LineToLoc(*3) \CSeg[2]\Line(*1,#2) +} +\def\WOTree#1{% + \let\WO:tree=\empty + \def\:queue{\init:count#1,,//}\put:queue + \TreeSpec()()(\WOEdge) + \TreeAlign(H,-1,0)(0,0,0)% + \WO:TreeSpace + \def\wo:temp{\Tree()(}% + \expandafter\wo:temp\expandafter{\WO:tree}) + } + +\def\put:queue{% + \let\put:woitem=\empty + \ifx \WO:tree\empty \else + \expandafter\def\expandafter\WO:tree\expandafter{\WO:tree//}% + \fi + \ifx \:queue\empty \def\wo:temp##1{}\else + \let\wo:temp=\:queue \let\:queue=\empty \fi + \wo:temp\put:queue } + +\def\init:count#1,{% + \def\WO:root{#1}\I=0;\WO:count} + +\edef\wo:temp{\catcode`\noexpand\&=\the\catcode`\&} +\catcode`\&=13 + +\def\WO:count#1,{% + \def\wo:temp{#1}\ifx \wo:temp\empty + \expandafter\checkWO:root\WO:root//% + \edef\wo:temp{\put:woitem\Val\I,\beforeWO:root}% + \def\put:woitem{\noexpand&}% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\WO:root + \expandafter\expandafter\expandafter + {\expandafter\wo:temp\WO:root}% + \expandafter\expandafter\expandafter\def + \expandafter\expandafter\expandafter\WO:tree + \expandafter\expandafter\expandafter + {\expandafter\WO:tree \WO:root}% + \def\WO:root##1//{}\expandafter\WO:root + \else + \expandafter\def\expandafter\:queue + \expandafter{\:queue\init:count#1,,//}% + \I+1;\expandafter\WO:count + \fi } + +\wo:temp + +\def\checkWO:root{\futurelet\wo:temp\ckWO:root} +\def\ckWO:root#1//{\edef\beforeWO:root{\ifx \wo:temp\WO \else + \ifx \WO:tree\empty\else + \noexpand\noexpand\noexpand\WO{}\fi\fi}} + +\def\WO#1{\csname :WO:#1\endcsname} +\def\defWO#1#2{\expandafter\def\csname :WO:#1\endcsname{#2}} + +\defWO{}{\llap{$\triangleright$ }} +\defWO{not}{\hrulefill~~\WO{}} +\defWO{or}{~$\bigoplus$} +\defWO{plus}{~$+$} +\defWO{xor}{~$\bigotimes$} + +\Define\WOSpace(2){\def\WO:TreeSpace{\TreeSpace(C,#1,#2)}} +\WOSpace(10,20) + +\wo:recall +\endinput + |