sig
  type attr =
      Class of string
    | Id of string
    | Style of string
    | Language of string
  type img_float = Float_left | Float_right
  type talign = Right | Left | Center | Justify
  type valign = Top | Middle | Bottom
  type padding = int * int
  type options =
      Polebrush.attr list * Polebrush.talign option * Polebrush.padding
  type phrase =
      CData of string
    | Emphasis of (Polebrush.attr list * Polebrush.phrase list)
    | Strong of (Polebrush.attr list * Polebrush.phrase list)
    | Italic of (Polebrush.attr list * Polebrush.phrase list)
    | Bold of (Polebrush.attr list * Polebrush.phrase list)
    | Citation of (Polebrush.attr list * Polebrush.phrase list)
    | Deleted of (Polebrush.attr list * Polebrush.phrase list)
    | Inserted of (Polebrush.attr list * Polebrush.phrase list)
    | Superscript of (Polebrush.attr list * Polebrush.phrase list)
    | Subscript of (Polebrush.attr list * Polebrush.phrase list)
    | Span of (Polebrush.attr list * Polebrush.phrase list)
    | Code of (Polebrush.attr list * string)
    | Nomarkup of string
    | Acronym of string * string
    | Image of Polebrush.attr list * Polebrush.img_float option * string *
        string option
    | Link of (Polebrush.attr list * Polebrush.phrase list) * string option *
        string
    | Reference of int
  type line = Polebrush.phrase list
  type element = int * Polebrush.line
  type tableoptions = Polebrush.options * Polebrush.valign option
  type celltype = Data | Head
  type cellspan = int option * int option
  type celloptions =
      Polebrush.celltype * Polebrush.tableoptions * Polebrush.cellspan
  type cell = Polebrush.celloptions * Polebrush.line list
  type row = Polebrush.tableoptions * Polebrush.cell list
  type block =
      Header of int * (Polebrush.options * Polebrush.line list)
    | Blockquote of (Polebrush.options * Polebrush.line list)
    | Footnote of int * (Polebrush.options * Polebrush.line list)
    | Paragraph of (Polebrush.options * Polebrush.line list)
    | Blockcode of (Polebrush.options * string list)
    | Pre of (Polebrush.options * string list)
    | Blocknomarkup of (Polebrush.options * string list)
    | Numlist of Polebrush.element list
    | Bulllist of Polebrush.element list
    | Table of (Polebrush.tableoptions * Polebrush.row list)
    | ToC of Polebrush.options
  val string_of_line : Polebrush.line -> string
end