sig
  type 'a t
  type pr_context =
    Pprintf.pr_context = {
    ind : int;
    bef : string;
    aft : string;
    dang : string;
  }
  val make : string -> 'a Eprinter.t
  val apply : 'a Eprinter.t -> Eprinter.pr_context -> 'a -> string
  val apply_level :
    'a Eprinter.t -> string -> Eprinter.pr_context -> 'a -> string
  val clear : 'a Eprinter.t -> unit
  val print : 'a Eprinter.t -> unit
  type position =
      First
    | Last
    | Before of string
    | After of string
    | Level of string
  type 'a pr_fun = Eprinter.pr_context -> 'a -> string
  type 'a pr_rule =
      ('a,
       'a Eprinter.pr_fun ->
       'a Eprinter.pr_fun -> Eprinter.pr_context -> string)
      Extfun.t
  val extend :
    'a Eprinter.t ->
    Eprinter.position option ->
    (string option * ('a Eprinter.pr_rule -> 'a Eprinter.pr_rule)) list ->
    unit
end