let label_of_path_opt (doc_settings : t_doc_settings) (path : t_path) : string option = match path with | [] -> None | hd :: tl -> match hd with | CH_NODE _ -> ( match doc_settings.ch_prefix, string_of_path doc_settings path with | None, p -> Some p | Some (lbl,_), p -> Some (lbl ^ "\u{00A0}" ^ p) ) | SEC_NODE _ -> ( match doc_settings.sec_prefix, string_of_path doc_settings path with | None, p -> Some p | Some (lbl,_), p -> Some (lbl ^ "\u{00A0}" ^ p) ) | APP_NODE _ -> ( match doc_settings.app_prefix, string_of_path doc_settings path with | None, p -> Some p | Some (lbl,_), p -> Some (lbl ^ "\u{00A0}" ^ p) ) | PAR_NODE _ -> ( match doc_settings.par_prefix, string_of_path doc_settings path with | None, p -> Some p | Some (lbl,_), p -> Some (lbl ^ "\u{00A0}" ^ p) ) | ITM_NODE _ | BLT_NODE | DSP_LINE_NODE _ -> string_of_node_opt doc_settings tl hd | ABSTRACT_NODE -> ( match doc_settings.abstract_hdr with |Some (lbl,_) -> Some lbl |None -> None ) | REFS_NODE -> ( match doc_settings.refs_hdr with |Some (lbl,_) -> Some lbl |None -> None ) |NTE_NODE n -> Some (superscript_string_of_int n) | _ -> None