%From: hwb@texnix.stgt.sub.org (Harald Boegeholz) %Newsgroups: comp.text.tex %Date: 14 Jan 91 13:44:29 GMT % %Hi! % %Some time ago I wrote some TeX-macros to typeset trees. Since %two people asked recently, here they are (quite short, so I thought %I might post). Be aware, though, of two possible problems: % 1. The macros use the \specials defined by emTeX. If your DVI-driver % doesn't support these, you won't see any lines. % 2. The semantic nest size required is considerable (too many boxes % inside of boxes inside of boxes...), so you'll possibly need % a TeX which is "large" in this respect for typesetting complex trees. % %Hope this helps %Harald %------------------ cut here with a sharp knife ------------------------ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % tree macros by Harald Boegeholz % This file uses the \specials defined by emTeX to draw the lines! %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcount\pointnumber \pointnumber=0 \newcount\father \font\nodefont=cmr7 \def\nextpoint{\global\advance\pointnumber by 1\relax} \def\endsubtrees{\endsubtrees} \def\tn#1{\vbox{% \vskip.5mm \hbox{\nodefont\hskip1ex\relax #1\hskip1ex} \vskip.5mm }% } \def\tree#1#2{% \vtop{% \nextpoint \father=\pointnumber \halign{\hfil##\hfil\cr #1\cr \special{em:point \number\father}\cr \noalign{\vskip5mm} \hbox{\subtrees#2\endsubtrees}\cr }% }% }% \def\subtrees#1{\ifx#1\endsubtrees\let\next\relax\else \vbox{\halign{\hfil##\hfil\cr \nextpoint \special{em:point \number\pointnumber}% \special{em:line \number\pointnumber h,\number\father h}\cr #1\cr }}% \let\next\subtrees\fi \next } \def\labeledtree#1#2{\vbox{\offinterlineskip\halign{\hfil##\hfil\cr #1\cr \noalign{\vskip3pt}% $\scriptstyle#2$\cr }}} \parindent0pt \raggedbottom %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % macros end here ... sample follows: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \endinput {\labeledtree{% {\tree{\tn{1}}{% {\tree{\tn{2}}{% {\tn{3}}% {\tn{4}}% }}% {\tree{\tn{5}}{% {\tn{6}}% }}% }}% }{[1,2,2,1,5]}}% \bye ------------------ cut here with a sharp knife ------------------------ -- Harald Boegeholz |Home: hwb@texnix.stgt.sub.org (read daily) |University: boegehol@az3.informatik.uni-stuttgart.de | ^ please use the latter for large (>100k) mails