module L = List
+module X = Ground
+
type item = Free of string (* free text *)
+ | Text of string (* quoted text *)
| Macro of string (* macro *)
| Group of text (* group *)
+ | Note of string (* comment *)
and text = item list (* structured text *)
let file_ext = ".tex"
-let empty = [Free ""]
+let group s = Group s
+
+let arg s = Group [Text s]
+
+let free s = Group [Free s]
-let newline = [Free "%\n"]
+let mk_segs us =
+ L.rev_map arg ("" :: (L.rev us))
-let arg s = Group [Free s]
+let mk_rev_args riss is =
+ X.rev_map_append group ([] :: riss) is
-let mk_rev_args riss =
- L.rev_map (fun t -> Group t) (empty :: riss)
-
+let rev_mk_args iss is =
+ free "" :: X.rev_map_append group iss is