sig
  type alignment = [ `center | `left | `right ]
  type cell = {
    is_head : bool;
    cols_used : int;
    rows_used : int;
    align : Bracetax_commands.Table.alignment;
    cell_text : Buffer.t;
  }
  val default_default_align : Bracetax_commands.Table.alignment
  type table = {
    col_nb : int;
    label : string option;
    mutable cells : Bracetax_commands.Table.cell list;
    mutable current_cell : Bracetax_commands.Table.cell option;
    caption : Buffer.t;
    default_align : Bracetax_commands.Table.alignment;
  }
  val table_args :
    string list -> int * string option * Bracetax_commands.Table.alignment
  val cell_arguments :
    Bracetax_commands.Table.table ->
    string list -> bool * int * int * Bracetax_commands.Table.alignment
  val write : Bracetax_commands.Table.table -> string -> unit
  val start :
    string list ->
    Bracetax_commands.Table.table * [> `table of int * string option ] *
    (string -> unit)
  val cell_start :
    loc:Bracetax_commands.Error.location ->
    error:Bracetax_commands.Error.error_fun ->
    Bracetax_commands.Table.table ->
    string list ->
    [> `cell of bool * int * Bracetax_commands.Table.alignment ]
  val cell_stop :
    loc:'->
    error:Bracetax_commands.Error.error_fun ->
    Bracetax_commands.Table.table -> unit
  module Util :
    sig
      val nb_rows : Bracetax_commands.Table.table -> int
      val make_riddle :
        Bracetax_commands.Table.table -> (int * int) array array
      val fill_riddle :
        (int * int) array array -> int -> int -> int -> int -> unit
      val next_coordinates :
        (int * int) array array ->
        Bracetax_commands.Table.table -> int -> int -> int * int
      type in_table =
          [ `cell of Bracetax_commands.Table.cell
          | `filed of int * int
          | `none ]
      val matrix_next_coordinates :
        [> `none ] array array ->
        Bracetax_commands.Table.table -> int -> int -> int * int
      val cells_to_matrix :
        Bracetax_commands.Table.table ->
        int * int *
        [> `cell of Bracetax_commands.Table.cell
         | `filled of int * int
         | `none ]
        array array
    end
end