let b_space = Space [None, "width", "0.5em"]
let b_kw = b_text (RenderingAttrs.object_keyword_attributes `BoxML)
+let pp_attr attr =
+ let pp (ns, n, v) =
+ Printf.sprintf "%s%s=%s" (match ns with None -> "" | Some s -> s ^ ":") n v
+ in
+ String.concat " " (List.map pp attr)
+
+let get_attr = function
+ | Text (attr, _)
+ | Space attr
+ | Ink attr
+ | H (attr, _)
+ | V (attr, _)
+ | HV (attr, _)
+ | HOV (attr, _)
+ | Object (attr, _)
+ | Action (attr, _) ->
+ attr
+
+let set_attr attr = function
+ | Text (_, x) -> Text (attr, x)
+ | Space _ -> Space attr
+ | Ink _ -> Ink attr
+ | H (_, x) -> H (attr, x)
+ | V (_, x) -> V (attr, x)
+ | HV (_, x) -> HV (attr, x)
+ | HOV (_, x) -> HOV (attr, x)
+ | Object (_, x) -> Object (attr, x)
+ | Action (_, x) -> Action (attr, x)
+
and attr = (string option * string * string) list
+val get_attr: 'a box -> attr
+val set_attr: attr -> 'a box -> 'a box
+
val smallskip : 'expr box
val skip: 'expr box
val indent : 'expr box -> 'expr box
val b_space: 'expr box
val b_kw: string -> 'expr box
+val pp_attr: attr -> string
+