let cell_start ~loc ~(error:Error.error_fun) tab args =
    let head, rnb, cnb, align = cell_arguments tab args in
    let def_cell = `cell (head, cnb, align) in
    begin match tab.current_cell with
    | Some c -> 
        error (Error.mk loc `error `cell_inside_cell);
        def_cell
    | None ->
        let cell_t = {
          is_head= head;
          cols_used = cnb;
          rows_used = rnb;
          align = align;
          cell_text = Buffer.create 64;
        } in
        tab.current_cell <- Some cell_t;
        def_cell
    end