Index: src/tre/tre
===================================================================
--- src/tre/tre	(revision d6a59cafdfbc9011692eb1b8d2000e543f1c07ea)
+++ src/tre/tre	(revision f924e4be28d072d97f44c81e8b0ec09d610a1673)
@@ -233,15 +233,38 @@
 end
 
+# old:
+# def printpar(root,arcs)
+#   print nodeinfo(root)
+#   deps = arcs.select{ |a| a[0]==root }.sort{|a,b| a[1]<=>b[1] }
+#   unless deps == []
+#     print '('
+#     cont=false
+#     for arc in deps
+#       if cont then print ',' else cont=true end
+#       print arc[2],':' if $INFO =~ /l/
+#       printpar(arc[1],arcs)
+#     end
+#     print ')'
+#   end
+# end
+
 def printpar(root,arcs)
-  print nodeinfo(root)
-  deps = arcs.select{ |a| a[0]==root }.sort{|a,b| a[1]<=>b[1] }
-  unless deps == []
-    print '('
-    cont=false
-    for arc in deps
-      if cont then print ',' else cont=true end
-      print arc[2],':' if $INFO =~ /l/
-      printpar(arc[1],arcs)
-    end
+  
+  ldeps = arcs.select{|a| a[0]==root and $gphid[a[1]] < $gphid[root]}.sort{|a,b| $gphid[a[1]]<=>$gphid[b[1]] }
+  rdeps = arcs.select{|a| a[0]==root and $gphid[a[1]] > $gphid[root]}.sort{|a,b| $gphid[a[1]]<=>$gphid[b[1]] }
+
+  for arc in ldeps
+    print ' ('
+    print arc[2].upcase if $INFO =~ /l/
+    printpar(arc[1],arcs)
+    print ')'
+  end
+
+  print ' ',nodeinfo(root)
+
+  for arc in rdeps
+    print ' ('
+    print arc[2].upcase if $INFO =~ /l/
+    printpar(arc[1],arcs)
     print ')'
   end
