let build ?(print_comments=false)
    ?make_section_links
    ?separate_header ?img_hook ?url_hook ?class_hook ~writer () =
  let t =
    create ~writer ?make_section_links
      ?class_hook ?separate_header ?img_hook ?url_hook () in
  { Signatures.
      print_comment =
      if print_comments then 
        (handle_comment_line t)
      else 
        (fun a b -> ());
    print_text =    handle_text t;
    enter_cmd =     start_command t;
    leave_cmd =     stop_command t;
    terminate =     terminate t;
    is_raw = Commands.Raw.is_raw_cmd;
    default_raw_end = Commands.Raw.default_raw_end;
    enter_raw =     start_raw_mode t;
    print_raw =     handle_raw_text t;
    leave_raw =     stop_raw_mode t;
    error = writer.Signatures.w_error; }