+ | A.Break -> Box.Space []
+ and aux_children spacing prec terms =
+ let find_clusters =
+ let rec aux_list first clusters acc =
+ function
+ [] when acc = [] -> List.rev clusters
+ | [] -> aux_list first (List.rev acc :: clusters) [] []
+ | (A.Layout A.Break) :: tl when acc = [] ->
+ aux_list first clusters [] tl
+ | (A.Layout A.Break) :: tl ->
+ aux_list first (List.rev acc :: clusters) [] tl
+ | [hd] ->
+ aux_list false clusters
+ (aux prec hd :: acc) []
+ | hd :: tl ->
+ aux_list false clusters
+ (aux prec hd :: acc) tl
+ in
+ aux_list true [] []
+ in
+ let boxify_pres =
+ function
+ [t] -> t
+ | tl -> box_of (A.H, spacing, false) [] tl
+ in
+ List.map boxify_pres (find_clusters terms)