Path: utzoo!attcan!uunet!snorkelwacker.mit.edu!ira.uka.de!smurf!nadia!texnix!hwb From: hwb@texnix.stgt.sub.org (Harald Boegeholz) Newsgroups: comp.text.tex Subject: Re: Hierarchical trees (request) Summary: Here are my macros Keywords: trees Message-ID: <61433.910113@texnix.stgt.sub.org> Date: 14 Jan 91 13:44:29 GMT Reply-To: hwb@texnix.stgt.sub.org Distribution: comp Lines: 83 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: %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% {\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