%% %% This is file `dyntree.sty', %% generated with the docstrip utility. %% %% The original source files were: %% %% dyntree.dtx (with options: `package') %% %% This is a generated file %% %% This file may be distributed and/or modified under the %% conditions of the GNU Lesser General Product License %% \NeedsTeXFormat{LaTeX2e}[1999/12/01] \ProvidesPackage{dyntree} [2006/08/14 v1 Dynkin Tree Typsetting] \RequirePackage{coollist} \RequirePackage{calc} \RequirePackage{epic} \RequirePackage{eepic} \RequirePackage{amsmath} \RequirePackage{amssymb} %% \CharacterTable %% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z %% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z %% Digits \0\1\2\3\4\5\6\7\8\9 %% Exclamation \! Double quote \" Hash (number) \# %% Dollar \$ Percent \% Ampersand \& %% Acute accent \' Left paren \( Right paren \) %% Asterisk \* Plus \+ Comma \, %% Minus \- Point \. Solidus \/ %% Colon \: Semicolon \; Less than \< %% Equals \= Greater than \> Question mark \? %% Commercial at \@ Left bracket \[ Backslash \\ %% Right bracket \] Circumflex \^ Underscore \_ %% Grave accent \` Left brace \{ Vertical bar \| %% Right brace \} Tilde \~} \newlength{\DYNTREE@widechar}% \newlength{\DYNTREE@thinchar}% \newlength{\DYNTREE@cartancoefwidth}% \newlength{\DYNTREE@marginwidth}% \newlength{\DYNTREE@colsepwidth}% \newlength{\DYNTREE@dynboxheight}% \newlength{\DYNTREE@dynboxdepth}% \newlength{\DYNTREE@dynboxvlen}% \newlength{\DYNTREE@dynboxwidth}% \settowidth{\DYNTREE@widechar}{$-1$}% \settowidth{\DYNTREE@thinchar}{$1$}% \setlength{\DYNTREE@cartancoefwidth}% {\DYNTREE@widechar*1/2 + \DYNTREE@thinchar*1/2}% \settowidth{\DYNTREE@marginwidth}% {$\begin{array}{|c|}\hline 1 \\ \hline \end{array}$}% \addtolength{\DYNTREE@marginwidth}{-\DYNTREE@thinchar}% \settowidth{\DYNTREE@colsepwidth}% {$\begin{array}{|cc|}\hline 1 & 1 \\ \hline \end{array}$}% \addtolength{\DYNTREE@colsepwidth}{-\DYNTREE@marginwidth - \DYNTREE@thinchar*2}% \settoheight{\DYNTREE@dynboxheight}% {$\begin{array}{|c|}\hline 1 \\ \hline \end{array}$}% \settodepth{\DYNTREE@dynboxdepth}% {$\begin{array}{|c|}\hline 1 \\ \hline \end{array}$}% \setlength{\DYNTREE@dynboxvlen}{\DYNTREE@dynboxheight + \DYNTREE@dynboxdepth}% \newcounter{DYNTREE@numlevel}% \newcounter{DYNTREE@nextlevel}% \newcounter{DYNTREE@numboxes}% \newcounter{DYNTREE@nextnumboxes}% \newcounter{DYNTREE@target}% \newcounter{DYNTREE@listlen}% \newcounter{DYNTREE@xCoord}% \newcounter{DYNTREE@yCoord}% \newcounter{DYNTREE@xPos}% \newcounter{DYNTREE@yPos}% \newcounter{DYNTREE@xComp}% \newcounter{DYNTREE@yComp}% \newcounter{DYNTREE@leftX}% \newcounter{DYNTREE@ct}% \newcounter{DYNTREE@counter}% \newcounter{DYNTREE@index}% \newcounter{DYNTREE@root}% \newlength{\DYNTREE@dynboxsep}% \newlength{\DYNTREE@levelsep}% \newlength{\DYNTREE@leftmostX}% \newlength{\DYNTREE@rightmostX}% \newlength{\DYNTREE@unitlen}% \newlength{\DYNTREE@templen}% \newlength{\DYNTREE@holdlen}% \newcommand{\DYNTREE@treestop}{\&\&\&}% \newcommand{\DYNTREE@treeend}{\%\%\%}% \newcommand{\lend}{\&\%\&\%}% \newcommand{\dynbox}{}% \setlength{\DYNTREE@dynboxsep}{\DYNTREE@colsepwidth}% \setlength{\DYNTREE@levelsep}{1cm}% \def\DYNTREE@gobbletree#1\lend#2\DYNTREE@treeend{% \addtocounter{DYNTREE@numlevel}{1}% \setcounter{DYNTREE@numboxes}{0}% \setcounter{DYNTREE@nextnumboxes}{0}% \DYNTREE@gobbledynboxes#1\lend% \expandafter\xdef% \csname DYNTREE@level@\roman{DYNTREE@numlevel}@numbox\endcsname% {\arabic{DYNTREE@numboxes}}% \ifthenelse{ \equal{#2}{\DYNTREE@treestop} }% {% }% {% \DYNTREE@gobbletree#2\DYNTREE@treeend% }% }% \def\DYNTREE@gobbledynboxes#1\dynbox#2#3#4{% \addtocounter{DYNTREE@numboxes}{1}% \expandafter\newbox% \csname DYNTREE@box@\roman{DYNTREE@numlevel}@\roman{DYNTREE@numboxes}\endcsname% \expandafter\setbox% \csname DYNTREE@box@\roman{DYNTREE@numlevel}@\roman{DYNTREE@numboxes}\endcsname=% \hbox{$\begin{array}{|*{\DYNTREE@numroots}{c}|}\hline #2 \\ \hline \end{array}$}% \listlenstore{DYNTREE@listlen}{#3}% \expandafter\xdef \csname DYNTREE@childline@\roman{DYNTREE@numlevel}@\roman{DYNTREE@numboxes}@boxnum\endcsname% {\arabic{DYNTREE@listlen}}% \ifthenelse{\value{DYNTREE@listlen} > \DYNTREE@numroots}% {% \PackageError{dyntree}% {% Length of descendant of \arabic{DYNTREE@numboxes}% on level \arabic{DYNTREE@numlevel} exceeds number of roots% (\DYNTREE@numroots)% }% }% {}% \liststore{#3}{DYNTREE@templist@}% \liststore{#3}% {DYNTREE@childlist@\roman{DYNTREE@numlevel}@\roman{DYNTREE@numboxes}@}% \setcounter{DYNTREE@ct}{1}% \whiledo{ \NOT \(\value{DYNTREE@ct} > \value{DYNTREE@listlen}\) \AND \NOT\(\value{DYNTREE@ct} > \DYNTREE@numroots\) }% {% \setcounter{DYNTREE@counter}{\csname DYNTREE@templist@\roman{DYNTREE@ct}\endcsname}% \ifthenelse{ \(\value{DYNTREE@counter} > \DYNTREE@numroots\) \OR \(\value{DYNTREE@counter} < 1\) }% {% \ifthenelse{\value{DYNTREE@counter} = 0}% {% }% {% \PackageError{dyntree}% {% Descendant root of \arabic{DYNTREE@numboxes} on level% \arabic{DYNTREE@numlevel} out of bounds% (\arabic{DYNTREE@counter} > \DYNTREE@numroots)% }% }% }% {% \setlength{\DYNTREE@templen}% {\csname DYNTREE@level@\roman{DYNTREE@numlevel}@\roman{DYNTREE@numboxes}@X\endcsname}% \addtolength{\DYNTREE@templen}% {\csname DYNTREE@rootX@\roman{DYNTREE@counter}\endcsname*(-1)}% \ifthenelse{\DYNTREE@templen < \DYNTREE@leftmostX}% {% \setlength{\DYNTREE@leftmostX}{\DYNTREE@templen}% }% {}% \setlength{\DYNTREE@holdlen}{\DYNTREE@templen}% \addtolength{\DYNTREE@holdlen}{\DYNTREE@dynboxwidth}% \ifthenelse{ \DYNTREE@holdlen > \DYNTREE@rightmostX }% {% \setlength{\DYNTREE@rightmostX}{\DYNTREE@holdlen}% }% {}% \setlength{\DYNTREE@holdlen}% {\expandafter\csname DYNTREE@dynboxX@\roman{DYNTREE@counter}\endcsname}% \addtolength{\DYNTREE@holdlen}{\DYNTREE@templen}% \setcounter{DYNTREE@xPos}{\DYNTREE@holdlen}% \setcounter{DYNTREE@counter}{\value{DYNTREE@nextnumboxes}}% \setcounter{DYNTREE@nextlevel}{\value{DYNTREE@numlevel} + 1}% \ifthenelse{\value{DYNTREE@counter} = 0}% {% \expandafter\xdef% \csname DYNTREE@level@\roman{DYNTREE@nextlevel}@i@X\endcsname% {\the\DYNTREE@templen}% \addtocounter{DYNTREE@nextnumboxes}{1}% }% {% \edef\DYNTREE@temparray% {\csname DYNTREE@level@\roman{DYNTREE@nextlevel}@\roman{DYNTREE@counter}@X\endcsname}% \edef\DYNTREE@tempinsert{\the\DYNTREE@templen}% \whiledo{ \(\value{DYNTREE@counter} > 0\) \AND \lengthtest{\DYNTREE@tempinsert < \DYNTREE@temparray} }% {% \edef\DYNTREE@temparray% {\csname DYNTREE@level@\roman{DYNTREE@nextlevel}@\roman{DYNTREE@counter}@X\endcsname}% \addtocounter{DYNTREE@counter}{-1}% }% \setcounter{DYNTREE@target}{\value{DYNTREE@counter} + 1}% \ifthenelse{ \NOT \lengthtest{\DYNTREE@tempinsert = \DYNTREE@temparray} }% {% \setcounter{DYNTREE@counter}{\value{DYNTREE@nextnumboxes} + 1}% \whiledo{ \value{DYNTREE@counter} > \value{DYNTREE@target} }% {% \addtocounter{DYNTREE@counter}{-1}% \edef\DYNTREE@tempswap% {% \csname DYNTREE@level@\roman{DYNTREE@nextlevel}@\roman{DYNTREE@counter}@X\endcsname% }% \addtocounter{DYNTREE@counter}{1}% \expandafter\xdef% \csname DYNTREE@level@\roman{DYNTREE@nextlevel}@\roman{DYNTREE@counter}@X\endcsname% {\DYNTREE@tempswap}% \addtocounter{DYNTREE@counter}{-1}% }% \expandafter\xdef% \csname DYNTREE@level@\roman{DYNTREE@nextlevel}@\roman{DYNTREE@target}@X\endcsname% {\DYNTREE@tempinsert}% \addtocounter{DYNTREE@nextnumboxes}{1}% }% {% }% }% }% \addtocounter{DYNTREE@ct}{1}% }% \ifthenelse{\equal{#4}{\lend}}% {% }% {% %% Eat the boxes until there are no more \DYNTREE@gobbledynboxes#4% }% }% \def\start#1#2#3\finish#4% {% \ifthenelse{\equal{#1}{#4} \AND \equal{#4}{dyntree}}% {% \providecommand{\DYNTREE@numroots}{#2}% \setlength{\DYNTREE@dynboxwidth} {% \DYNTREE@marginwidth + \DYNTREE@cartancoefwidth*\DYNTREE@numroots + \DYNTREE@colsepwidth*(\DYNTREE@numroots-1) }% \setlength{\DYNTREE@leftmostX}{0pt}% \setlength{\DYNTREE@rightmostX}{\DYNTREE@dynboxwidth}% \expandafter\gdef\csname DYNTREE@level@i@i@X\endcsname{0pt}% \setcounter{DYNTREE@numlevel}{0}% \setcounter{DYNTREE@ct}{1}% \whiledo{\NOT \(\value{DYNTREE@ct}>\DYNTREE@numroots\)}% {% \setlength{\DYNTREE@templen}% {% (\DYNTREE@dynboxwidth + \DYNTREE@dynboxsep)*\value{DYNTREE@ct}% -(\DYNTREE@dynboxwidth + \DYNTREE@dynboxsep)*1/2% -(\DYNTREE@dynboxwidth + \DYNTREE@dynboxsep)*\DYNTREE@numroots/2% }% \expandafter\xdef\csname DYNTREE@rootX@\roman{DYNTREE@ct}\endcsname% {\the\DYNTREE@templen}% \setlength{\DYNTREE@templen}% {% \DYNTREE@dynboxwidth/2/\DYNTREE@numroots + \DYNTREE@dynboxwidth*(\value{DYNTREE@ct}-1)/\DYNTREE@numroots }% \expandafter\xdef\csname DYNTREE@dynboxX@\roman{DYNTREE@ct}\endcsname% {\the\DYNTREE@templen}% \addtocounter{DYNTREE@ct}{1}% }% \DYNTREE@gobbletree#3\DYNTREE@treestop\DYNTREE@treeend% \setlength{\DYNTREE@unitlen}{\unitlength}% \setlength{\unitlength}{1sp}% \setcounter{DYNTREE@xCoord}{\DYNTREE@rightmostX - \DYNTREE@leftmostX}% \setcounter{DYNTREE@leftX}{\DYNTREE@leftmostX}% \setcounter{DYNTREE@yCoord}% {% \DYNTREE@dynboxvlen*\value{DYNTREE@numlevel} + \DYNTREE@levelsep*(\value{DYNTREE@numlevel} - 1) }% \begin{picture}% (\arabic{DYNTREE@xCoord},\arabic{DYNTREE@yCoord})% (\value{DYNTREE@leftX},0)% \setcounter{DYNTREE@ct}{1}% \whiledo{\NOT \(\value{DYNTREE@ct} > \value{DYNTREE@numlevel}\)}% {% \setcounter{DYNTREE@counter}{1}% \setlength{\DYNTREE@templen}% {% \DYNTREE@dynboxvlen*\value{DYNTREE@numlevel} - \DYNTREE@dynboxvlen*\value{DYNTREE@ct} + \DYNTREE@levelsep*\value{DYNTREE@numlevel} - \DYNTREE@levelsep*\value{DYNTREE@ct} + \DYNTREE@dynboxdepth }% \setcounter{DYNTREE@yCoord}{\DYNTREE@templen}% \def\DYNTREE@tempboxnum{\csname DYNTREE@level@\roman{DYNTREE@ct}@numbox\endcsname}% \whiledo{\NOT \( \value{DYNTREE@counter} > \DYNTREE@tempboxnum \)}% {% \xdef\DYNTREE@tempxCoord% {% \expandafter% \csname DYNTREE@level@\roman{DYNTREE@ct}@\roman{DYNTREE@counter}@X\endcsname% }% \setlength{\DYNTREE@holdlen}{\DYNTREE@tempxCoord}% \setcounter{DYNTREE@xCoord}{\DYNTREE@holdlen}% \put(\arabic{DYNTREE@xCoord},\arabic{DYNTREE@yCoord})% {% \expandafter% \copy\csname DYNTREE@box@\roman{DYNTREE@ct}@\roman{DYNTREE@counter}\endcsname% }% \setcounter{DYNTREE@listlen}% {% \expandafter% \csname DYNTREE@childline@\roman{DYNTREE@ct}@\roman{DYNTREE@counter}@boxnum\endcsname% }% \setcounter{DYNTREE@index}{1}% \whiledo{\NOT \(\value{DYNTREE@index} > \value{DYNTREE@listlen}\)}% {% \xdef\DYNTREE@childroot% {% \expandafter% \csname DYNTREE@childlist@\roman{DYNTREE@ct}@\roman{DYNTREE@counter}@\roman{DYNTREE@index}\endcsname% }% \ifthenelse{\NOT \DYNTREE@childroot = 0 }% {% \setcounter{DYNTREE@root}{\DYNTREE@childroot}% \setcounter{DYNTREE@xPos}{\value{DYNTREE@xCoord}}% \setcounter{DYNTREE@xComp}{\value{DYNTREE@xCoord}}% \setcounter{DYNTREE@yPos}{\value{DYNTREE@yCoord}}% \setcounter{DYNTREE@yComp}{\value{DYNTREE@yCoord}}% \xdef\DYNTREE@temprootX% {\expandafter\csname DYNTREE@rootX@\roman{DYNTREE@root}\endcsname}% \setlength{\DYNTREE@templen}{\DYNTREE@temprootX}% \addtocounter{DYNTREE@xPos}{\DYNTREE@templen*(-1)}% \xdef\DYNTREE@dynoffset% {\expandafter\csname DYNTREE@dynboxX@\roman{DYNTREE@root}\endcsname}% \setlength{\DYNTREE@templen}{\DYNTREE@dynoffset}% \addtocounter{DYNTREE@xPos}{\DYNTREE@templen}% \addtocounter{DYNTREE@xComp}{\DYNTREE@templen}% \setlength{\DYNTREE@templen}{1pt}% for frame thickness \addtocounter{DYNTREE@yPos}% {\DYNTREE@levelsep*(-1) - \DYNTREE@dynboxdepth - \DYNTREE@templen}% \addtocounter{DYNTREE@yComp}{\DYNTREE@dynboxdepth*(-1) - \DYNTREE@templen}% \put(0,0)% {% \drawline% (\arabic{DYNTREE@xComp},\arabic{DYNTREE@yComp})% (\arabic{DYNTREE@xPos},\arabic{DYNTREE@yPos})% }% }% {% }% \addtocounter{DYNTREE@index}{1}% }% \addtocounter{DYNTREE@counter}{1}% }% \addtocounter{DYNTREE@ct}{1}% }% \end{picture}% \setlength{\unitlength}{\DYNTREE@unitlen}% }% {% \PackageError{dyntree}{Invalid start(#1)/finish(#4) call}% }% }% \endinput %% %% End of file `dyntree.sty'.