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