let create
    ?(make_links=`when_labeled) ?(list_type=`enum) ?(numbering=`none) () =
  let me = 
    { current = None; title_buffer = Buffer.create 42;
      sections = []; make_links = make_links;
      list_type = list_type; numbering = numbering } in
  {
    Generic_printer.

    start_text = (fun _ -> "");
    terminate = termination me;
    start_raw = (fun _ _ -> "");
    raw_line = (fun _ _ -> "");
    stop_raw = (fun _ _ -> "");

    line = store_opt_nonunit me;
    comment_line = (fun _ -> "");

    quotation_open = (fun style ->
                        store_opt me (spr "{q %s|" style) ());
    quotation_close = (fun style ->
                         store_opt me "}" ());

    start_italic = store_opt me "{i|";
    start_bold = store_opt me "{b|";
    start_type = store_opt me "{t|";
    start_sup = store_opt me "{sup|";
    start_sub = store_opt me "{sub|";
    stop_italic = store_opt me "}";
    stop_bold = store_opt me "}";
    stop_type = store_opt me "}";
    stop_sup = store_opt me "}";
    stop_sub = store_opt me "}";

    list_start = (fun _ -> "");
    list_first_item = (fun _ -> "");
    list_item = (fun _ -> "");
    list_stop = (fun _ -> "");

    section_start = start_section me;
    section_stop  = stop_section me;

    paragraph  = store_opt me "{p}";
    new_line  = store_opt me "{br}";
    non_break_space  = store_opt me "{~}";
    horizontal_ellipsis  = store_opt me "{...}";
    en_dash = store_opt me "{--}";
    em_dash = store_opt me "{---}";

    open_brace  = store_opt me "{{}";
    close_brace  = store_opt me "{}}";
    sharp  = store_opt me "{#}";

    utf8_char = (fun i -> store_opt me (spr "{utf %d}" i) ());

    link = (fun _ _ _ -> "");

    start_header = (fun () -> "");
    start_title = (fun () -> "");
    start_authors = (fun () -> "");
    start_subtitle = (fun () -> "");
    stop_header = (fun () -> "");
    stop_title = (fun () -> "");
    stop_authors = (fun () -> "");
    stop_subtitle = (fun () -> "");

    start_image = (fun _ _ _ -> ""); 
    stop_image  = (fun _ _ _ -> ""); 

    print_table = (fun _ _ -> ());

    start_note = (fun () -> "");
    stop_note = (fun () -> "");

    start_quote = (fun () -> "");
    stop_quote = (fun () -> "");

  }