<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">%% Copyright  1999 Wolfgang Sternefeld
%% This program can be 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 any later version.
%% ps-trees.sty version 2.0
%% Author: Wolfgang.Sternefeld@uni-tuebingen.de
%% filedate 99/27/04
\ProvidesPackage{ps-trees}[1999/04/27 Linguistic trees in tabular form v. 2.0]
\RequirePackage{tree-dvips}
\newtoks\AllNodes
\newtoks\CollectedNodes
\newtoks\CollectedTNodes
\newif\ifIsElement
\newlength{\MinNodeWidth}
\newlength{\NodeWidth}
\newcommand{\NodeWidthNo}[1]{\setlength{\MinNodeWidth}{\the\wd#1}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newif\ifTNode
\newcommand{\AddToToks}[2]{%
      \expandafter\expandafter\expandafter%
        \global#1\expandafter{%
          \the#1#2}}
\def\TestAndAdd#1{\def\yy{#1}%
     \ifx\yy\empty\relax\else%
       \ifTNode\AddToToks{\CollectedTNodes}{\\{#1}}%
          \else\AddToToks{\CollectedNodes}{\\{#1}}\fi\fi
     \IfIsNodeName{#1}%
      \typeout{*** Warning: Node Name `#1' already exists ***}\fi
    }
\let\oldnode=\node
\newenvironment{psTree}{\tabcolsep0pt\nodemargin0pt%    
    \def\node##1##2{\AddToToks{\AllNodes}{\\{##1}}\oldnode{##1}{##2\strut}}%
    }%
   {\let\\=\EveryNode\the\CollectedNodes%
           \let\\=\EveryTNode\the\CollectedTNodes%
    \global\AllNodes={}\global\CollectedNodes={}\global\CollectedTNodes={}%
    \global\setlength{\MinNodeWidth}{0pt}%\hspace{\fill}
    }
\newcommand{\EveryNode}[1]{\ConnectNode#1 }
\newcommand{\EveryTNode}[1]{\ConnectTNode#1 }
\def\ConnectNode#1#2 {\IfIsNodeName{#2}\nodeconnect{#2}{#1#2}%
     \else\NoNodeWarning{#2}\fi}
\def\ConnectTNode#1#2 {\IfIsNodeName{#2}\nodeconnect{#2}[tl]{#1#2}%
       \nodeconnect{#2}[tr]{#1#2}\nodeconnect[tl]{#1#2}[tr]{#1#2}%
     \else\NoNodeWarning{#2}\fi}
\newcommand{\IsElementOf}[2]{\IsElementfalse\def\xx{#1}\bgroup
     \let\\=\Compare\the#2\egroup}
\newcommand{\IfIsNodeName}[1]{\IsElementOf{#1}{\AllNodes}\ifIsElement}
\newcommand{\Compare}[1]{\def\yy{#1}\ifx\yy\xx\global\IsElementtrue\fi}
\newcommand{\NoNodeWarning}[1]{\typeout{*** Fatal Error. Node Name `#1'
     does'nt exist ***}}
\newenvironment{treetab}{\begin{psTree}\begin{tabular}}{\end{tabular}%
     \end{psTree}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\Node}{\@ifnextchar[{\OptionNode}{\@Node}}
\newcommand{\@Node}[2]{\TestAndAdd{#1}\settowidth{\NodeWidth}{#2}%
  \ifdim\NodeWidth&lt;\MinNodeWidth% 
       \makebox[\MinNodeWidth]{\hfill\node{#1}{#2}\hfill}%
     \else\node{#1}{#2}%
  \fi}
\def\OptionNode[#1]#2#3{\TestAndAdd{#2}\makebox[\the\wd#1]{\hfill
           \node{#2}{#3}\hfill}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand{\NodeNo}[1]{\@ifnextchar[{\OptionNodeNo{#1}}{\@NodeNo{#1}}}
\newcommand{\@NodeNo}[2]{\@Node{#2}{\unhcopy#1}}
\def\OptionNodeNo#1[#2]#3{\TestAndAdd{#3}%
     \makebox[\the\wd#2]{\hfill\node{#3}{\unhcopy#1}\hfill}}
\newcommand{\NodeZ}[2]{\TestAndAdd{#1}%
     \hfill\node{#1}{\makebox[0pt]{#2\strut}}}
\newcommand{\NodeT}[2]{\TNodetrue
      \Node{#1}{#2}\TNodefalse}
\newcommand{\NodeZT}[2]{\TNodetrue\TestAndAdd{#1}%
     \hfill\makebox[0pt]{\node{#1}{#2\strut}}\TNodefalse}
\let\NodeTZ=\NodeZT
\newcommand{\NodeTNo}[2]{\TNodetrue\NodeNo{#1}{#2}\TNodefalse}
\newcommand{\NodeZTNo}[2]{\hfill\makebox[0pt]{\NodeTNo{#1}{#2}}}
\let\NodeTZNo=\NodeZTNo
\newcommand{\nodeZ}[2]{\IfIsNodeName{#1}%
       \typeout{*** Warning: Node Name `#1' already exists ***}\fi
     \hfill\node{#1}{\makebox[0pt]{#2}}}
%%%%%%%%%%%%%%%%%%%% END %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

</pre></body></html>