%%
%% This is file `rrgtrees.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% rrgtrees.dtx  (with options: `package')
%% Copyright (c) D. J. Gardner 2001-2004
%% 
%% This program may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either version 1.2
%% of this license or (at your option) any later version.
%% The latest version of this license is in
%%   http://www.latex-project.org/lppl.txt
%% and version 1.2 or later is part of all distributions of LaTeX
%% version 1999/12/01 or later.
%% 
%% This program consists of the files rrgtree.dtx and rrgtree.ins
%% 
%% This program 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.
%% 
%% Error reports in case of UNCHANGED versions to
%% David Gardner:  djardner at softhome dot net
%% rrgtrees.dtx.  Copyright (c) D. J. Gardner 2001-2004


\def\rrgversion{1.1}
\def\rrgversiondate{Nov 14 2004}
\def\rrgdocversiondate{Dec 14 2004}
\ProvidesPackage{rrgtrees}[2004/11/14 RRG tree drawing]
\RequirePackage{pst-node,pst-tree}
\newcommand{\pred}[2][]{\textbf{#2}\ensuremath{'_{#1}}}
\newcommand\SEML{\textsf{SEML}\,}
\newcommand\INGR{\textsf{INGR}\,}
\newcommand\BECOME{\textsf{BECOME}\,}
\newcommand\CAUSE{\textsf{CAUSE}\,}
\newcommand\NOT{\textsf{NOT}\,}
\newcommand\prddo{\pred{do}}
\newcommand\prdDO{\pred{DO}}
\def\Sentence{{\scshape Sentence}}
\def\Clause{{\scshape Clause}}
\def\Core{{\scshape Core}}
\def\Conj{{\scshape Conj}}
\def\CMPLtext{{\scshape cmpl}}
\def\Nuc{{\scshape Nuc}}
\def\Arg{{\scshape Arg}}
\def\aaj{{\scshape AAJ}}
\def\pp{{\scshape PP}}
\def\np{{\scshape NP}}
\def\Periphery{{\scshape Periphery}}
\newlength\rrgoprsep
\newlength\rrg@tmpdim
\newlength\rrg@tmpdima
\newlength\rrg@tmpdimb
\setlength{\rrgoprsep}{1.5em}
\def\rrg@empty@toks{\global\let\rrg@dolinks\@empty}
\rrg@empty@toks
\def\dolinks{\rrg@dolinks\rrg@empty@toks}
\def\@once@tmp{}
\def\rrg@addlinks{\g@addto@macro\rrg@dolinks}
\newcommand{\rrg@newnode}[1]{\@namedef{rrg@node@#1}{\null}}
%%Broken code:
%%\newcommand{\rrg@do@or@add@link}[3]{\@ifundefined{rrg@node@#1}{\typeout{#1
%% undefined}\rrg@addlinks{#3}}{\@ifundefined{rrg@node@#2}
%% {\typeout{#2 undefined}\rrg@addlinks{#3}}{#3}}}

\newcommand{\rightangle@link}[7]{
\settowidth{\rrg@tmpdim}{#4}%
\skiplevels{#1}%
\rrg@newnode{#2}%
\ifdim\rrg@tmpdim>0pt
\pstree{\TR[edge=none, name=#2]{#4}}{%
#5}%
\else%
\TR[edge=none,name=#2]{#5}%
\fi%
\endskiplevels%
\rrg@addlinks{\ncangle[angleA=90,angleB=#7,armB=0]{->}{#2}{#3}%
\ncput*[npos=1]{#6}}}

\newcommand{\diag@link}[8]{
\settowidth{\rrg@tmpdim}{#4}%
\expandafter\typeout{\the\rrg@tmpdim}
\skiplevels{#1}%
\rrg@newnode{#2}%
\ifdim\rrg@tmpdim>0pt
\pstree{\TR[edge=none, name=#2]{#4}}{%
#5}%
\else%
\typeout{#4:#5}%
\TR[edge=none,name=#2]{#5}%
\fi%
\endskiplevels%
\rrg@addlinks{\ncdiagg[angleA=#7,armA=#8]{<-}{#3}{#2}%
\ncput*[npos=1]{#6}}}
\newcommand{\@NUCa}[3]{\pstree{\TR{\@do@once\Nuc}}{
\pstree{\TR{#1}}{\pstree{\TR[name=verb]{\ncput*[npos=1.5]{\scshape{Pred}}#2}}{#3}}}}
\newcommand{\@NUCn}[2]{\pstree{\TR{\@do@once\Nuc}}{\pstree{\TR{#1}}%
{\TR[name=verb]{\ncput*[npos=1.5]{\scshape{Pred}}#2}}}}

\newcommand{\CMPL}[3][CLAUSE]{\rightangle@link{#2}{CMPL#1}{#1}{}{#3}{\CMPLtext}{180}}
\newcommand{\lCMPL}{\CMPL}
\newcommand{\rCMPL}[3][CLAUSE]{\rightangle@link{#2}{CMPL#1}{#1}{}{#3}{\CMPLtext}{0}}
\newcommand{\LCMPL}[4][CLAUSE]{\diag@link{#2}{CMPL#1}{#1}{}{#3}{\CMPLtext}{180}{#4}}
\newcommand{\RCMPL}[4][CLAUSE]{\diag@link{#2}{CMPL#1}{#1}{}{#3}{\CMPLtext}{0}{#4}}
\newcommand{\lPERIPH}[4][]{\rightangle@link{#2}{PERIPH#1}{CORE#1}%
{#3}{#4}{\Periphery}{180}}
\newcommand{\rPERIPH}[4][]{\rightangle@link{#2}{PERIPH#1}{CORE#1}%
{#3}{#4}{\Periphery}{0}}
\newcommand{\LPERIPH}[5][]{\diag@link{#2}{PERIPH#1}{CORE#1}{#3}%
{#4}{\Periphery}{180}{#5}}
\newcommand{\RPERIPH}[5][]{\diag@link{#2}{PERIPH#1}{CORE#1}{#3}%
{#4}{\Periphery}{0}[#5]}

\newcommand{\NUC}[2][V]{\@ifnextchar\bgroup{\@NUCa{#1}{#2}}{\@NUCn{#1}{#2}}}
\newcommand{\TOP}[1]{\pstree[thislevelsep=0pt,linestyle=none]{\Tn}%
{\psset{linestyle=solid}#1}}
\newcommand{\SENTENCE}[2][SEN]{\pstree{\TR[name=#1]{\Sentence}\@do@once}{#2}}
\newcommand{\CLAUSE}[2][CLS]{\pstree{\TR[name=#1]{\Clause}\@do@once}{#2}}
\newcommand{\CORE}[2][CORE]{\pstree{\TR[name=#1]{\Core}\@do@once}{#2}}
\newcommand{\ARG}[2][arg]{\pstree{\TR[name=#1]{\Arg}\@do@once}{#2}}
\newcommand{\AAJ}[2][aaj]{\pstree{\TR[name=#1]{\aaj}\@do@once}{#2}}
\newcommand{\PP}[2][PP]{\pstree{\TR[name=#1]{\pp}\@do@once}{#2}}
\newcommand{\NP}[2][NP]{\pstree{\TR[name=#1]{\np}\@do@once}{#2}}
\newcommand{\NCORE}[2][NC]{\pstree{\TR[name=#1]{\Core\subN}\@do@once}{#2}}
\newcommand{\NNUC}[2][NN]{\pstree{\TR[name=#1]{\Nuc\subN}\@do@once}{#2}}
%% |\WORD| tries to be flexible in the arguments it gets.
%% The user may optionally include the (part of speach) a |[name]| for the
%% |{word}| node, and possibly being followed by an |{operator projection}|.
%% E.g. |\WORD{hello}|, |\WORD[hi]{hello}|, |\WORD(N){cat}|,
%% |\WORD(N)[pussy]{cat}|
%% are all permitted, as is any of the above with an operator projection
\newcommand{\WORD}{\let\@word@tmp=\empty\@ifnextchar(%) bracket match
{\@word@ii}{\@word@i}}
\newcommand{\@word@i}[2][x]{\@end{#1}{#2}} % Nice easy single level word
\def\@word@ii(#1){\@ifnextchar[%] bracket match % we have a fuller tree.
{\@word@iii{#1}}{\@word@iii{#1}[x]}}
\def\@word@iii#1[#2]#3{\@ifnextchar\bgroup% operators follow
{\@word@iv{#1}{#2}{#3}}{\pstree{\TR{#1}\@do@once}{\TR[name=#2]{#3}}}}

\newcommand{\@word@iv}[4]{\pstree{\TR{#1}\@do@once}{\pstree{\TR[name=#2]{#3}}{#4}}}
\newcommand{\@do@once}{\@once@tmp\def\@once@tmp{}}
\newcommand{\UNJOINED}{\def\@once@tmp{\global\let\psedge\@save@edge}%
\let\@save@edge\psedge\def\psedge##1##2{}}
\newcommand{\OPR}[3][opr]{\skiplevels{#2}{\TR[edge=none,name=#1]{#3}}\endskiplevels}
\newcommand\OP[2][op]{\psset{levelsep=\rrgoprsep}\@end{#1}{\@do@once#2}}
\newcommand{\oprlink}[4]{%
\ncput*[npos=1 #1]{\rnode{label}{#4}}%
\ncline[linestyle=dashed]{#2}{label}\ncline{->}{label}{#3}%
}
\newcommand{\LLINK}[5][]{%
\ncdiagg[linestyle=none,angleA=180,armA=#2]{#4}{#3}%
\oprlink{#1}{#3}{#4}{#5}
}
\newcommand{\RLINK}[5][]{%
\ncdiagg[linestyle=none,angleA=0,armA=#2]{<-}{#4}{#3}%
\oprlink{#1}{#3}{#4}{#5}
}
\newcommand{\rLINK}[4][]{\ncangle[linestyle=none,angleA=-90,angleB=0 #1]{#2}{#3}%
\oprlink{}{#2}{#3}{#4}
}
\newcommand{\LINK}[4][]{\ncangle[linestyle=none,angleA=-90,angleB=180 #1]{#2}{#3}%
\oprlink{}{#2}{#3}{#4}
}
\newcommand{\lLINK}{\LINK}
\newcommand{\End}[2][x]{\@end{#1}{#2}}

\newcommand{\@end}[2]{\@ifnextchar\bgroup% matching
{\@are@ops{#1}{#2}}{\@end@{#1}{#2}}}
\newcommand{\@end@}[2]{\TR[name=#1]{#2}}
\def\@are@ops#1#2#3{\pstree{\@end@{#1}{#2}}{#3}}
\def\rrgfantweak{-1pt}
\newcommand{\FanEnd}[3][fan]{%
\@ifnextchar\bgroup{\@fanend{#1}{#2}{#3}}{\@@fanend{#1}{1}{#2}{#3}}}
\def\@fanend#1#2#3#4{\@@fanend{#1}{#2}{#3}{#4}}
\newcommand{\@@fanend}[4]{
\setbox\@tempboxa\hbox{#4}%
\setlength{\rrg@tmpdim}{\wd\@tempboxa}%
\addtolength{\rrg@tmpdim}{-1ex}%
\setlength{\rrg@tmpdimb}{\psk@levelsep}%
\setlength{\rrg@tmpdima}{\psk@levelsep}%
\setlength{\rrg@tmpdimb}{#2\rrg@tmpdima}%
\addtolength{\rrg@tmpdimb}{+0.7ex}%
\addtolength{\rrg@tmpdimb}{-\ht\@tempboxa}%
\addtolength{\rrg@tmpdimb}{-\pslabelsep}%
\addtolength{\rrg@tmpdimb}{\rrgfantweak}%
\pstree[thislevelsep=\rrg@tmpdimb]{\TR{#3}}{\Tfan[fansize=\rrg@tmpdim]%
\nbput*[npos=1.5,name=#1]{#4}}
}
\DeclareRobustCommand*\textsubscript[1]{%
  \@textsubscript{\selectfont#1}}
\def\@textsubscript#1{%
  {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}}
\newcommand{\spr}[1]{\textsuperscript{#1}}
\newcommand{\sub}[1]{\textsubscript{#1}}
\newcommand{\subN}{\textsubscript{\scshape{n}}}
%%Args for |\OPJoin| are:
%% [Offset from centre] \{node\} \{node\} \{Text/structure\}
\newcommand{\OPJoin}[4][2\rrgoprsep]{\ncline[linestyle=none]{#2}{#3}%
\nbput[labelsep=#1,npos=0.5]{\Rnode{join-#2-#3}{#4}%
}\ncline[linestyle=solid]{#2}{join-#2-#3}%
\ncdiag[armA=0,armB=0]{#3}{join-#2-#3}}
\def\psedge{\ncdiag}
\psset{levelsep=3.5em,nodesep=1pt,angleA=-90,angleB=90,armA=0,armB=0}
\endinput
%%
%% End of file `rrgtrees.sty'.
