% % qtree.sty, a LaTeX macro package for drawing trees from descriptions % given in bracket notation. % % VERSION 2 -- June 1994 % % QobiTree tree macros written by Jeffrey Mark Siskind (Qobi@cis.upenn.edu). % Front end by Alexis Dimitriadis (alexis@babel.ling.upenn.edu). % % Please direct questions/comments to alexis@babel.ling.upenn.edu. % \newcounter{treecount} \newcounter{branchcount} \setcounter{treecount}{0} \newsavebox{\parentbox} \newsavebox{\treebox} \newsavebox{\treeboxone} \newsavebox{\treeboxtwo} \newsavebox{\treeboxthree} \newsavebox{\treeboxfour} \newsavebox{\treeboxfive} \newsavebox{\treeboxsix} \newsavebox{\treeboxseven} \newsavebox{\treeboxeight} \newsavebox{\treeboxnine} \newsavebox{\treeboxten} \newsavebox{\treeboxeleven} \newsavebox{\treeboxtwelve} \newsavebox{\treeboxthirteen} \newsavebox{\treeboxfourteen} \newsavebox{\treeboxfifteen} \newsavebox{\treeboxsixteen} \newsavebox{\treeboxseventeen} \newsavebox{\treeboxeighteen} \newsavebox{\treeboxnineteen} \newsavebox{\treeboxtwenty} \newlength{\treeoffsetone} \newlength{\treeoffsettwo} \newlength{\treeoffsetthree} \newlength{\treeoffsetfour} \newlength{\treeoffsetfive} \newlength{\treeoffsetsix} \newlength{\treeoffsetseven} \newlength{\treeoffseteight} \newlength{\treeoffsetnine} \newlength{\treeoffsetten} \newlength{\treeoffseteleven} \newlength{\treeoffsettwelve} \newlength{\treeoffsetthirteen} \newlength{\treeoffsetfourteen} \newlength{\treeoffsetfifteen} \newlength{\treeoffsetsixteen} \newlength{\treeoffsetseventeen} \newlength{\treeoffseteighteen} \newlength{\treeoffsetnineteen} \newlength{\treeoffsettwenty} \newlength{\treeshiftone} \newlength{\treeshifttwo} \newlength{\treeshiftthree} \newlength{\treeshiftfour} \newlength{\treeshiftfive} \newlength{\treeshiftsix} \newlength{\treeshiftseven} \newlength{\treeshifteight} \newlength{\treeshiftnine} \newlength{\treeshiftten} \newlength{\treeshifteleven} \newlength{\treeshifttwelve} \newlength{\treeshiftthirteen} \newlength{\treeshiftfourteen} \newlength{\treeshiftfifteen} \newlength{\treeshiftsixteen} \newlength{\treeshiftseventeen} \newlength{\treeshifteighteen} \newlength{\treeshiftnineteen} \newlength{\treeshifttwenty} \newlength{\treewidthone} \newlength{\treewidthtwo} \newlength{\treewidththree} \newlength{\treewidthfour} \newlength{\treewidthfive} \newlength{\treewidthsix} \newlength{\treewidthseven} \newlength{\treewidtheight} \newlength{\treewidthnine} \newlength{\treewidthten} \newlength{\treewidtheleven} \newlength{\treewidthtwelve} \newlength{\treewidththirteen} \newlength{\treewidthfourteen} \newlength{\treewidthfifteen} \newlength{\treewidthsixteen} \newlength{\treewidthseventeen} \newlength{\treewidtheighteen} \newlength{\treewidthnineteen} \newlength{\treewidthtwenty} \newlength{\daughteroffsetone} \newlength{\daughteroffsettwo} \newlength{\daughteroffsetthree} \newlength{\daughteroffsetfour} \newlength{\branchwidthone} \newlength{\branchwidthtwo} \newlength{\branchwidththree} \newlength{\branchwidthfour} \newlength{\parentoffset} \newlength{\treeoffset} \newlength{\daughteroffset} \newlength{\branchwidth} \newlength{\parentwidth} \newlength{\treewidth} % \newcommand{\ontop}[1]{\begin{tabular}{c}#1\end{tabular}} % \newcommand{\poptree}{% \ifnum\value{treecount}=0\typeout{QobiTeX warning---Tree stack underflow}\fi \addtocounter{treecount}{-1}% \setlength{\treeoffsettwo}{\treeoffsetthree}% \setlength{\treeoffsetthree}{\treeoffsetfour}% \setlength{\treeoffsetfour}{\treeoffsetfive}% \setlength{\treeoffsetfive}{\treeoffsetsix}% \setlength{\treeoffsetsix}{\treeoffsetseven}% \setlength{\treeoffsetseven}{\treeoffseteight}% \setlength{\treeoffseteight}{\treeoffsetnine}% \setlength{\treeoffsetnine}{\treeoffsetten}% \setlength{\treeoffsetten}{\treeoffseteleven}% \setlength{\treeoffseteleven}{\treeoffsettwelve}% \setlength{\treeoffsettwelve}{\treeoffsetthirteen}% \setlength{\treeoffsetthirteen}{\treeoffsetfourteen}% \setlength{\treeoffsetfourteen}{\treeoffsetfifteen}% \setlength{\treeoffsetfifteen}{\treeoffsetsixteen}% \setlength{\treeoffsetsixteen}{\treeoffsetseventeen}% \setlength{\treeoffsetseventeen}{\treeoffseteighteen}% \setlength{\treeoffseteighteen}{\treeoffsetnineteen}% \setlength{\treeoffsetnineteen}{\treeoffsettwenty}% \setlength{\treeshifttwo}{\treeshiftthree}% \setlength{\treeshiftthree}{\treeshiftfour}% \setlength{\treeshiftfour}{\treeshiftfive}% \setlength{\treeshiftfive}{\treeshiftsix}% \setlength{\treeshiftsix}{\treeshiftseven}% \setlength{\treeshiftseven}{\treeshifteight}% \setlength{\treeshifteight}{\treeshiftnine}% \setlength{\treeshiftnine}{\treeshiftten}% \setlength{\treeshiftten}{\treeshifteleven}% \setlength{\treeshifteleven}{\treeshifttwelve}% \setlength{\treeshifttwelve}{\treeshiftthirteen}% \setlength{\treeshiftthirteen}{\treeshiftfourteen}% \setlength{\treeshiftfourteen}{\treeshiftfifteen}% \setlength{\treeshiftfifteen}{\treeshiftsixteen}% \setlength{\treeshiftsixteen}{\treeshiftseventeen}% \setlength{\treeshiftseventeen}{\treeshifteighteen}% \setlength{\treeshifteighteen}{\treeshiftnineteen}% \setlength{\treeshiftnineteen}{\treeshifttwenty}% \setlength{\treewidthtwo}{\treewidththree}% \setlength{\treewidththree}{\treewidthfour}% \setlength{\treewidthfour}{\treewidthfive}% \setlength{\treewidthfive}{\treewidthsix}% \setlength{\treewidthsix}{\treewidthseven}% \setlength{\treewidthseven}{\treewidtheight}% \setlength{\treewidtheight}{\treewidthnine}% \setlength{\treewidthnine}{\treewidthten}% \setlength{\treewidthten}{\treewidtheleven}% \setlength{\treewidtheleven}{\treewidthtwelve}% \setlength{\treewidthtwelve}{\treewidththirteen}% \setlength{\treewidththirteen}{\treewidthfourteen}% \setlength{\treewidthfourteen}{\treewidthfifteen}% \setlength{\treewidthfifteen}{\treewidthsixteen}% \setlength{\treewidthsixteen}{\treewidthseventeen}% \setlength{\treewidthseventeen}{\treewidtheighteen}% \setlength{\treewidtheighteen}{\treewidthnineteen}% \setlength{\treewidthnineteen}{\treewidthtwenty}% \setbox\treeboxtwo \box\treeboxthree \setbox\treeboxthree \box\treeboxfour \setbox\treeboxfour \box\treeboxfive \setbox\treeboxfive \box\treeboxsix \setbox\treeboxsix \box\treeboxseven \setbox\treeboxseven \box\treeboxeight \setbox\treeboxeight \box\treeboxnine \setbox\treeboxnine \box\treeboxten \setbox\treeboxten \box\treeboxeleven \setbox\treeboxeleven \box\treeboxtwelve \setbox\treeboxtwelve \box\treeboxthirteen \setbox\treeboxthirteen \box\treeboxfourteen \setbox\treeboxfourteen \box\treeboxfifteen \setbox\treeboxfifteen \box\treeboxsixteen \setbox\treeboxsixteen \box\treeboxseventeen \setbox\treeboxseventeen \box\treeboxeighteen \setbox\treeboxeighteen \box\treeboxnineteen \setbox\treeboxnineteen \box\treeboxtwenty } % \newcommand{\leaf}[1]{% \ifnum\value{treecount}=20\typeout{QobiTeX warning---Tree stack overflow}\fi% \addtocounter{treecount}{1}% \setbox\treeboxtwenty \box\treeboxnineteen \setbox\treeboxnineteen \box\treeboxeighteen \setbox\treeboxeighteen \box\treeboxseventeen \setbox\treeboxseventeen \box\treeboxsixteen \setbox\treeboxsixteen \box\treeboxfifteen \setbox\treeboxfifteen \box\treeboxfourteen \setbox\treeboxfourteen \box\treeboxthirteen \setbox\treeboxthirteen \box\treeboxtwelve \setbox\treeboxtwelve \box\treeboxeleven \setbox\treeboxeleven \box\treeboxten \setbox\treeboxten \box\treeboxnine \setbox\treeboxnine \box\treeboxeight \setbox\treeboxeight \box\treeboxseven \setbox\treeboxseven \box\treeboxsix \setbox\treeboxsix \box\treeboxfive \setbox\treeboxfive \box\treeboxfour \setbox\treeboxfour \box\treeboxthree \setbox\treeboxthree \box\treeboxtwo \setbox\treeboxtwo \box\treeboxone \sbox{\treeboxone}{\ontop{#1}}% \sbox{\treeboxone}{\raisebox{-\ht\treeboxone}{\usebox{\treeboxone}}}% \setlength{\treeoffsettwenty}{\treeoffsetnineteen}% \setlength{\treeoffsetnineteen}{\treeoffseteighteen}% \setlength{\treeoffseteighteen}{\treeoffsetseventeen}% \setlength{\treeoffsetseventeen}{\treeoffsetsixteen}% \setlength{\treeoffsetsixteen}{\treeoffsetfifteen}% \setlength{\treeoffsetfifteen}{\treeoffsetfourteen}% \setlength{\treeoffsetfourteen}{\treeoffsetthirteen}% \setlength{\treeoffsetthirteen}{\treeoffsettwelve}% \setlength{\treeoffsettwelve}{\treeoffseteleven}% \setlength{\treeoffseteleven}{\treeoffsetten}% \setlength{\treeoffsetten}{\treeoffsetnine}% \setlength{\treeoffsetnine}{\treeoffseteight}% \setlength{\treeoffseteight}{\treeoffsetseven}% \setlength{\treeoffsetseven}{\treeoffsetsix}% \setlength{\treeoffsetsix}{\treeoffsetfive}% \setlength{\treeoffsetfive}{\treeoffsetfour}% \setlength{\treeoffsetfour}{\treeoffsetthree}% \setlength{\treeoffsetthree}{\treeoffsettwo}% \setlength{\treeoffsettwo}{\treeoffsetone}% \setlength{\treeoffsetone}{0.5\wd\treeboxone}% \setlength{\treeshifttwenty}{\treeshiftnineteen}% \setlength{\treeshiftnineteen}{\treeshifteighteen}% \setlength{\treeshifteighteen}{\treeshiftseventeen}% \setlength{\treeshiftseventeen}{\treeshiftsixteen}% \setlength{\treeshiftsixteen}{\treeshiftfifteen}% \setlength{\treeshiftfifteen}{\treeshiftfourteen}% \setlength{\treeshiftfourteen}{\treeshiftthirteen}% \setlength{\treeshiftthirteen}{\treeshifttwelve}% \setlength{\treeshifttwelve}{\treeshifteleven}% \setlength{\treeshifteleven}{\treeshiftten}% \setlength{\treeshiftten}{\treeshiftnine}% \setlength{\treeshiftnine}{\treeshifteight}% \setlength{\treeshifteight}{\treeshiftseven}% \setlength{\treeshiftseven}{\treeshiftsix}% \setlength{\treeshiftsix}{\treeshiftfive}% \setlength{\treeshiftfive}{\treeshiftfour}% \setlength{\treeshiftfour}{\treeshiftthree}% \setlength{\treeshiftthree}{\treeshifttwo}% \setlength{\treeshifttwo}{\treeshiftone}% \setlength{\treeshiftone}{0pt}% \setlength{\treewidthtwenty}{\treewidthnineteen}% \setlength{\treewidthnineteen}{\treewidtheighteen}% \setlength{\treewidtheighteen}{\treewidthseventeen}% \setlength{\treewidthseventeen}{\treewidthsixteen}% \setlength{\treewidthsixteen}{\treewidthfifteen}% \setlength{\treewidthfifteen}{\treewidthfourteen}% \setlength{\treewidthfourteen}{\treewidththirteen}% \setlength{\treewidththirteen}{\treewidthtwelve}% \setlength{\treewidthtwelve}{\treewidtheleven}% \setlength{\treewidtheleven}{\treewidthten}% \setlength{\treewidthten}{\treewidthnine}% \setlength{\treewidthnine}{\treewidtheight}% \setlength{\treewidtheight}{\treewidthseven}% \setlength{\treewidthseven}{\treewidthsix}% \setlength{\treewidthsix}{\treewidthfive}% \setlength{\treewidthfive}{\treewidthfour}% \setlength{\treewidthfour}{\treewidththree}% \setlength{\treewidththree}{\treewidthtwo}% \setlength{\treewidthtwo}{\treewidthone}% \setlength{\treewidthone}{\wd\treeboxone}} % \newcommand{\branch}[2]{% \setcounter{branchcount}{#1}% \ifnum\value{branchcount}=1\sbox{\parentbox}{\ontop{#2}}% \setlength{\parentoffset}{\treeoffsetone}% \addtolength{\parentoffset}{-0.5\wd\parentbox}% \setlength{\daughteroffset}{0in}% \ifdim\parentoffset<0in% \setlength{\daughteroffset}{-\parentoffset}% \setlength{\parentoffset}{0in}\fi% \setlength{\parentwidth}{\parentoffset}% \addtolength{\parentwidth}{\wd\parentbox}% \setlength{\treeoffset}{\daughteroffset}% \addtolength{\treeoffset}{\treeoffsetone}% \setlength{\treewidth}{\wd\treeboxone}% \addtolength{\treewidth}{\daughteroffset}% \ifdim\treewidth<\parentwidth\setlength{\treewidth}{\parentwidth}\fi% \sbox{\treebox}{\begin{minipage}{\treewidth}% \begin{flushleft}% \hspace*{\parentoffset}\usebox{\parentbox}\\ {\setlength{\unitlength}{2ex}% \hspace*{\treeoffset}\begin{picture}(0,1)% \put(0,0){\line(0,1){1}}% \end{picture}}\\ \vspace{-\baselineskip}% \hspace*{\daughteroffset}% \raisebox{-\ht\treeboxone}{\usebox{\treeboxone}}% \end{flushleft}% \end{minipage}}% \setlength{\treeoffsetone}{\parentoffset}% \addtolength{\treeoffsetone}{0.5\wd\parentbox}% \setlength{\treeshiftone}{0pt}% \setlength{\treewidthone}{\treewidth}% \sbox{\treeboxone}{\usebox{\treebox}}% \else\ifnum\value{branchcount}=2\sbox{\parentbox}{\ontop{#2}}% \setlength{\branchwidthone}{\treewidthtwo}% \addtolength{\branchwidthone}{\treeoffsetone}% \addtolength{\branchwidthone}{-\treeshiftone}% \addtolength{\branchwidthone}{-\treeoffsettwo}% \setlength{\branchwidth}{\branchwidthone}% \setlength{\daughteroffsetone}{\branchwidth}% \addtolength{\daughteroffsetone}{-\branchwidthone}% \addtolength{\daughteroffsetone}{-\treeshiftone}% \setlength{\parentoffset}{-0.5\wd\parentbox}% \addtolength{\parentoffset}{\treeoffsettwo}% \addtolength{\parentoffset}{0.5\branchwidth}% \setlength{\daughteroffset}{0in}% \ifdim\parentoffset<0in% \setlength{\daughteroffset}{-\parentoffset}% \setlength{\parentoffset}{0in}\fi% \setlength{\parentwidth}{\parentoffset}% \addtolength{\parentwidth}{\wd\parentbox}% \setlength{\treeoffset}{\daughteroffset}% \addtolength{\treeoffset}{\treeoffsettwo}% \setlength{\treewidth}{\wd\treeboxone}% \addtolength{\treewidth}{\daughteroffsetone}% \addtolength{\treewidth}{\treewidthtwo}% \addtolength{\treewidth}{\daughteroffset}% \ifdim\treewidth<\parentwidth\setlength{\treewidth}{\parentwidth}\fi% \sbox{\treebox}{\begin{minipage}{\treewidth}% \begin{flushleft}% \hspace*{\parentoffset}\usebox{\parentbox}\\ {\setlength{\unitlength}{0.5\branchwidth}% \hspace*{\treeoffset}\begin{picture}(2,0.5)% \put(0,0){\line(2,1){1}}% \put(2,0){\line(-2,1){1}}% \end{picture}}\\ \vspace{-\baselineskip} \hspace*{\daughteroffset}% \makebox[\treewidthtwo][l]% {\raisebox{-\ht\treeboxtwo}{\usebox{\treeboxtwo}}}% \hspace*{\daughteroffsetone}% \raisebox{-\ht\treeboxone}{\usebox{\treeboxone}}% \end{flushleft}% \end{minipage}}% \setlength{\treeoffsetone}{\parentoffset}% \addtolength{\treeoffsetone}{0.5\wd\parentbox}% \setlength{\treeshiftone}{0pt}% \setlength{\treewidthone}{\treewidth}% \sbox{\treeboxone}{\usebox{\treebox}}\poptree% \else\ifnum\value{branchcount}=3\sbox{\parentbox}{\ontop{#2}}% \setlength{\branchwidthone}{\treewidthtwo}% \addtolength{\branchwidthone}{\treeoffsetone}% \addtolength{\branchwidthone}{-\treeshiftone}% \addtolength{\branchwidthone}{-\treeoffsettwo}% \setlength{\branchwidthtwo}{\treewidththree}% \addtolength{\branchwidthtwo}{\treeoffsettwo}% \addtolength{\branchwidthtwo}{-\treeshifttwo}% \addtolength{\branchwidthtwo}{-\treeoffsetthree}% \setlength{\branchwidth}{\branchwidthone}% \ifdim\branchwidthtwo>\branchwidth% \setlength{\branchwidth}{\branchwidthtwo}\fi% \setlength{\daughteroffsetone}{\branchwidth}% \addtolength{\daughteroffsetone}{-\branchwidthone}% \addtolength{\daughteroffsetone}{-\treeshiftone}% \setlength{\daughteroffsettwo}{\branchwidth}% \addtolength{\daughteroffsettwo}{-\branchwidthtwo}% \addtolength{\daughteroffsettwo}{-\treeshifttwo}% \setlength{\parentoffset}{-0.5\wd\parentbox}% \addtolength{\parentoffset}{\treeoffsetthree}% \addtolength{\parentoffset}{\branchwidth}% \setlength{\daughteroffset}{0in}% \ifdim\parentoffset<0in% \setlength{\daughteroffset}{-\parentoffset}% \setlength{\parentoffset}{0in}\fi% \setlength{\parentwidth}{\parentoffset}% \addtolength{\parentwidth}{\wd\parentbox}% \setlength{\treeoffset}{\daughteroffset}% \addtolength{\treeoffset}{\treeoffsetthree}% \setlength{\treewidth}{\wd\treeboxone}% \addtolength{\treewidth}{\daughteroffsetone}% \addtolength{\treewidth}{\treewidthtwo}% \addtolength{\treewidth}{\daughteroffsettwo}% \addtolength{\treewidth}{\treewidththree}% \addtolength{\treewidth}{\daughteroffset}% \ifdim\treewidth<\parentwidth\setlength{\treewidth}{\parentwidth}\fi% \sbox{\treebox}{\begin{minipage}{\treewidth}% \begin{flushleft}% \hspace*{\parentoffset}\usebox{\parentbox}\\ {\setlength{\unitlength}{0.5\branchwidth}% \hspace*{\treeoffset}\begin{picture}(4,1)% \put(0,0){\line(2,1){2}}% \put(2,0){\line(0,1){1}}% \put(4,0){\line(-2,1){2}}% \end{picture}}\\ \vspace{-\baselineskip}% \hspace*{\daughteroffset}% \makebox[\treewidththree][l]% {\raisebox{-\ht\treeboxthree}{\usebox{\treeboxthree}}}% \hspace*{\daughteroffsettwo}% \makebox[\treewidthtwo][l]% {\raisebox{-\ht\treeboxtwo}{\usebox{\treeboxtwo}}}% \hspace*{\daughteroffsetone}% \raisebox{-\ht\treeboxone}{\usebox{\treeboxone}}% \end{flushleft}% \end{minipage}}% \setlength{\treeoffsetone}{\parentoffset}% \addtolength{\treeoffsetone}{0.5\wd\parentbox}% \setlength{\treeshiftone}{0pt}% \setlength{\treewidthone}{\treewidth}% \sbox{\treeboxone}{\usebox{\treebox}}\poptree\poptree% \else\ifnum\value{branchcount}=4\sbox{\parentbox}{\ontop{#2}}% \setlength{\branchwidthone}{\treewidthtwo}% \addtolength{\branchwidthone}{\treeoffsetone}% \addtolength{\branchwidthone}{-\treeshiftone}% \addtolength{\branchwidthone}{-\treeoffsettwo}% \setlength{\branchwidthtwo}{\treewidththree}% \addtolength{\branchwidthtwo}{\treeoffsettwo}% \addtolength{\branchwidthtwo}{-\treeshifttwo}% \addtolength{\branchwidthtwo}{-\treeoffsetthree}% \setlength{\branchwidththree}{\treewidthfour}% \addtolength{\branchwidththree}{\treeoffsetthree}% \addtolength{\branchwidththree}{-\treeshiftthree}% \addtolength{\branchwidththree}{-\treeoffsetfour}% \setlength{\branchwidth}{\branchwidthone}% \ifdim\branchwidthtwo>\branchwidth% \setlength{\branchwidth}{\branchwidthtwo}\fi% \ifdim\branchwidththree>\branchwidth% \setlength{\branchwidth}{\branchwidththree}\fi% \setlength{\daughteroffsetone}{\branchwidth}% \addtolength{\daughteroffsetone}{-\branchwidthone}% \addtolength{\daughteroffsetone}{-\treeshiftone}% \setlength{\daughteroffsettwo}{\branchwidth}% \addtolength{\daughteroffsettwo}{-\branchwidthtwo}% \addtolength{\daughteroffsettwo}{-\treeshifttwo}% \setlength{\daughteroffsetthree}{\branchwidth}% \addtolength{\daughteroffsetthree}{-\branchwidththree}% \addtolength{\daughteroffsetthree}{-\treeshiftthree}% \setlength{\parentoffset}{-0.5\wd\parentbox}% \addtolength{\parentoffset}{\treeoffsetfour}% \addtolength{\parentoffset}{1.5\branchwidth}% \setlength{\daughteroffset}{0in}% \ifdim\parentoffset<0in% \setlength{\daughteroffset}{-\parentoffset}% \setlength{\parentoffset}{0in}\fi% \setlength{\parentwidth}{\parentoffset}% \addtolength{\parentwidth}{\wd\parentbox}% \setlength{\treeoffset}{\daughteroffset}% \addtolength{\treeoffset}{\treeoffsetfour}% \setlength{\treewidth}{\wd\treeboxone}% \addtolength{\treewidth}{\daughteroffsetone}% \addtolength{\treewidth}{\treewidthtwo}% \addtolength{\treewidth}{\daughteroffsettwo}% \addtolength{\treewidth}{\treewidththree}% \addtolength{\treewidth}{\daughteroffsetthree}% \addtolength{\treewidth}{\treewidthfour}% \addtolength{\treewidth}{\daughteroffset}% \ifdim\treewidth<\parentwidth\setlength{\treewidth}{\parentwidth}\fi% \sbox{\treebox}{\begin{minipage}{\treewidth}% \begin{flushleft}% \hspace*{\parentoffset}\usebox{\parentbox}\\ {\setlength{\unitlength}{0.5\branchwidth}% \hspace*{\treeoffset}\begin{picture}(6,1)% \put(0,0){\line(3,1){3}}% \put(2,0){\line(1,1){1}}% \put(4,0){\line(-1,1){1}}% \put(6,0){\line(-3,1){3}}% \end{picture}}\\ \vspace{-\baselineskip}% \hspace*{\daughteroffset}% \makebox[\treewidthfour][l]% {\raisebox{-\ht\treeboxfour}{\usebox{\treeboxfour}}}% \hspace*{\daughteroffsetthree}% \makebox[\treewidththree][l]% {\raisebox{-\ht\treeboxthree}{\usebox{\treeboxthree}}}% \hspace*{\daughteroffsettwo}% \makebox[\treewidthtwo][l]% {\raisebox{-\ht\treeboxtwo}{\usebox{\treeboxtwo}}}% \hspace*{\daughteroffsetone}% \raisebox{-\ht\treeboxone}{\usebox{\treeboxone}}% \end{flushleft}% \end{minipage}}% \setlength{\treeoffsetone}{\parentoffset}% \addtolength{\treeoffsetone}{0.5\wd\parentbox}% \setlength{\treeshiftone}{0pt}% \setlength{\treewidthone}{\treewidth}% \sbox{\treeboxone}{\usebox{\treebox}}\poptree\poptree\poptree% \else\ifnum\value{branchcount}=5\sbox{\parentbox}{\ontop{#2}}% \setlength{\branchwidthone}{\treewidthtwo}% \addtolength{\branchwidthone}{\treeoffsetone}% \addtolength{\branchwidthone}{-\treeshiftone}% \addtolength{\branchwidthone}{-\treeoffsettwo}% \setlength{\branchwidthtwo}{\treewidththree}% \addtolength{\branchwidthtwo}{\treeoffsettwo}% \addtolength{\branchwidthtwo}{-\treeshifttwo}% \addtolength{\branchwidthtwo}{-\treeoffsetthree}% \setlength{\branchwidththree}{\treewidthfour}% \addtolength{\branchwidththree}{\treeoffsetthree}% \addtolength{\branchwidththree}{-\treeshiftthree}% \addtolength{\branchwidththree}{-\treeoffsetfour}% \setlength{\branchwidthfour}{\treewidthfive}% \addtolength{\branchwidthfour}{\treeoffsetfour}% \addtolength{\branchwidthfour}{-\treeshiftfour}% \addtolength{\branchwidthfour}{-\treeoffsetfive}% \setlength{\branchwidth}{\branchwidthone}% \ifdim\branchwidthtwo>\branchwidth% \setlength{\branchwidth}{\branchwidthtwo}\fi% \ifdim\branchwidththree>\branchwidth% \setlength{\branchwidth}{\branchwidththree}\fi% \ifdim\branchwidthfour>\branchwidth% \setlength{\branchwidth}{\branchwidthfour}\fi% \setlength{\daughteroffsetone}{\branchwidth}% \addtolength{\daughteroffsetone}{-\branchwidthone}% \addtolength{\daughteroffsetone}{-\treeshiftone}% \setlength{\daughteroffsettwo}{\branchwidth}% \addtolength{\daughteroffsettwo}{-\branchwidthtwo}% \addtolength{\daughteroffsettwo}{-\treeshifttwo}% \setlength{\daughteroffsetthree}{\branchwidth}% \addtolength{\daughteroffsetthree}{-\branchwidththree}% \addtolength{\daughteroffsetthree}{-\treeshiftthree}% \setlength{\daughteroffsetfour}{\branchwidth}% \addtolength{\daughteroffsetfour}{-\branchwidthfour}% \addtolength{\daughteroffsetfour}{-\treeshiftfour}% \setlength{\parentoffset}{-0.5\wd\parentbox}% \addtolength{\parentoffset}{\treeoffsetfive}% \addtolength{\parentoffset}{2\branchwidth}% \setlength{\daughteroffset}{0in}% \ifdim\parentoffset<0in% \setlength{\daughteroffset}{-\parentoffset}% \setlength{\parentoffset}{0in}\fi% \setlength{\parentwidth}{\parentoffset}% \addtolength{\parentwidth}{\wd\parentbox}% \setlength{\treeoffset}{\daughteroffset}% \addtolength{\treeoffset}{\treeoffsetfive}% \setlength{\treewidth}{\wd\treeboxone}% \addtolength{\treewidth}{\daughteroffsetone}% \addtolength{\treewidth}{\treewidthtwo}% \addtolength{\treewidth}{\daughteroffsettwo}% \addtolength{\treewidth}{\treewidththree}% \addtolength{\treewidth}{\daughteroffsetthree}% \addtolength{\treewidth}{\treewidthfour}% \addtolength{\treewidth}{\daughteroffsetfour}% \addtolength{\treewidth}{\treewidthfive}% \addtolength{\treewidth}{\daughteroffset}% \ifdim\treewidth<\parentwidth\setlength{\treewidth}{\parentwidth}\fi% \sbox{\treebox}{\begin{minipage}{\treewidth}% \begin{flushleft}% \hspace*{\parentoffset}\usebox{\parentbox}\\ {\setlength{\unitlength}{0.5\branchwidth}% \hspace*{\treeoffset}\begin{picture}(8,1)% \put(0,0){\line(4,1){4}}% \put(2,0){\line(2,1){2}}% \put(4,0){\line(0,1){1}}% \put(6,0){\line(-2,1){2}}% \put(8,0){\line(-4,1){4}}% \end{picture}}\\ \vspace{-\baselineskip}% \hspace*{\daughteroffset}% \makebox[\treewidthfive][l]% {\raisebox{-\ht\treeboxfour}{\usebox{\treeboxfive}}}% \hspace*{\daughteroffsetfour}% \makebox[\treewidthfour][l]% {\raisebox{-\ht\treeboxfour}{\usebox{\treeboxfour}}}% \hspace*{\daughteroffsetthree}% \makebox[\treewidththree][l]% {\raisebox{-\ht\treeboxthree}{\usebox{\treeboxthree}}}% \hspace*{\daughteroffsettwo}% \makebox[\treewidthtwo][l]% {\raisebox{-\ht\treeboxtwo}{\usebox{\treeboxtwo}}}% \hspace*{\daughteroffsetone}% \raisebox{-\ht\treeboxone}{\usebox{\treeboxone}}% \end{flushleft}% \end{minipage}}% \setlength{\treeoffsetone}{\parentoffset}% \addtolength{\treeoffsetone}{0.5\wd\parentbox}% \setlength{\treeshiftone}{0pt}% \setlength{\treewidthone}{\treewidth}% \sbox{\treeboxone}{\usebox{\treebox}}\poptree\poptree\poptree\poptree% \else\typeout{QobiTeX warning--- Can't handle #1 branching}\fi\fi\fi\fi\fi} % \newcommand{\faketreewidth}[1]{% \sbox{\parentbox}{\ontop{#1}}% \setlength{\treewidthone}{0.5\wd\parentbox}% \addtolength{\treewidthone}{\treeoffsetone}% \setlength{\treeshiftone}{\treeoffsetone}% \addtolength{\treeshiftone}{-0.5\wd\parentbox}} % \newdimen\qbog \newcommand{\qobitree}{% \leavevmode \qbog=\ht\treeboxone \advance\qbog by -.7\baselineskip %\fbox{\raise-\qbog \box\treeboxone} \raise-\qbog \box\treeboxone \setlength{\treeoffsetone}{\treeoffsettwo}% \setbox\treeboxone \box\treeboxtwo \poptree } %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Front end for qobitree. Reads a tree in bracketed notation and % generates commands to build the specified tree. % Tokens are space-delimited; brackets {} may be used to alter grouping. % % Alexis Dimitriadis (alexis@babel.ling.upenn.edu), Dec 6, 1993. % % Sample input: % \Tree [ [ John ].NP [ has [ [ seen ].V [ {the book} ].NP ].T ].IP ].S % To insert extra material, precede token with an exclamation mark, e.g. % ... ].V !\faketreewidth{VPP} ... %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Very messy stack macros, to make up for lack of nested environments in % qobitree. % % \Spush\Stack{X} Push X on stack \Stack. % \Spop\Stack Pop top element off \Stack, leave in the input stream. % \Spopd\Stack\to\v Define \v to be the top element of \Stack, pop it. % % This will trigger a LaTeX diagnostic if we pop too far. \def\qbstack{} \def\qnstack{} \newtoks\qta \newtoks\qtb % Expand #2 and push on stack #1. Things already pushed are not % reexpanded. \long\def\Spush#1#2{\qta=\expandafter{#1}% \edef#1{{#2}\noexpand\@@STP{\the\qta}}} % Push #2 on stack #1 unexpanded. % \long\def\SpushU#1#2{\qta=\expandafter{#1}\qtb={#2}% \edef#1{{\the\qtb}\noexpand\@@STP{\the\qta}}} \def\@@STP{\def\@@StpV} % Pop the top element of stack #1, leaving in the input stream. % \def\Spop#1{#1\let#1=\@@StpV} % Pop the top element of stack #1, expand it, and define #2 to it. % \def\SpopD#1#2{\expandafter\qta#1\let#1=\@@StpV\edef#2{\the\qta}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % This is the front end proper. Everything else is just sugar. % (the stack macros are necessary). % \newcount\nbranches \newif\ifqtreecenter \qtreecentertrue \def\Tree{\ifqtreecenter\hskip 0pt plus 1fil\fi \bgroup \automath \nbranches=0\relax \recurse } % The empty hbox is a hack to move the trees to the left a little \def\endTree{\qobitree \egroup \ifqtreecenter\hbox to 0.5in{}\fi } \def\doanode#1 {\advance\nbranches by1 \leaf{#1 }\lookfornodes} \def\recurse[{\@ifnextchar.{\@recurse}{\@recurse. }} \def\@recurse.#1 {\SpushU\qnstack{#1}% \Spush\qbstack{\number\nbranches}\nbranches=0\relax \lookfornodes } \def\closeoff]{\@ifnextchar.{\expandafter\@closeoff}{\expandafter\@closeoff. }} % If either label is missing, use the other. % Otherwise, disallow mismatched labels % Push and pop right argument to make sure the tokens are in same state... \def\@closeoff.#1 {% \def\rarg{#1} \SpopD\qnstack\larg \ifx\larg\@empty \let\larg=\rarg \else \ifx\rarg\@empty \let\rarg=\larg \fi\fi \ifx\larg\rarg \else \message{}\errmessage{MISMATCHED LABELS, [.\larg ... ].\rarg}% \fi \@@closeoff\larg } \def\@@closeoff#1{% \branch{\number\nbranches}{#1}% \SpopD\qbstack\x\nbranches=\x \relax % \showthe\nbranches \ifnum\nbranches>0\relax \expandafter\lookfornodes \else \expandafter\endTree \fi} \def\lookfornodes{\@ifnextchar]{\closeoff}{% \@ifnextchar[{\advance\nbranches by1\relax \recurse}{% \@ifnextchar!{\pushliteral}{\doanode}}}} \def\pushliteral!#1 {#1\relax \lookfornodes} % Include eepic if found, else warn \@input{eepic.sty} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % and another odd convenience: % % Make _, ^ go into math mode automatically in the scope of \automath % { % Temporarily change catcodes \catcode`\_=\active \catcode`\^=\active %\catcode`\'=\active % \global\def\automath{% \catcode`\_=\active \catcode`\^=\active \def_##1{\ifmmode\sb {##1} \else $\sb{##1} $\fi}% \def^##1{\ifmmode\sp {##1} \else $\sp{##1} $\fi}% }} \def\noautomath{% \catcode`\_=8 \catcode`\^=7 } % Let \0, \1, \2 produce ^0, $'$, $''$ \def\0{\ifmmode ^0 \else $^0$ \fi} \def\1{\ifmmode ' \else $'$ \fi} \def\0{\ifmmode '' \else $''$ \fi} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % qroof: Build a triangular ``roof'' with label #2 and contents (under the % roof) #1. The width of the roof is computed automatically. The contents % may contain line breaks (\\). % % The slope of the roof built by qroof (may be changed anywhere). \newcount\qroofx \newcount\qroofy \qroofx=3 \qroofy=1 \newbox\@scratchbox \def\qroof#1.#2 {{% \tabcolsep=0pt \setbox\@scratchbox=\hbox{\ \begin{tabular}{l} #1 \end{tabular}}% \begin{tabular}{c} #2 \\ \def\wwd{\count1}% \wwd=\wd\@scratchbox \count0=\wwd \multiply\count0 by \qroofy \divide \count0 by 2 \divide\count0 by \qroofx \unitlength=1sp \begin{picture}(\wwd,\count0) \put(0, 0){\line(1,0){\wwd}} \count0=\wwd \divide\wwd by 2 \put(0, 0){\line(\qroofx, \qroofy){\wwd}} \put(\count0, 0){\line(-\qroofx, \qroofy){\wwd}} \end{picture}% \\[-0.6ex] %Pushes the text closer to the roof \box\@scratchbox \end{tabular}}}