let print_student_list_html (hpr : string -> unit) (gl:student list) = 
    let colsp = (if !do_assign_resp then 3 else 2) in 
    let paddl = get_all_project_addresses () in 
(*     let paddl = get_all_project_addresses_for gl in  *)
      (* Begin table *)
      hpr "<center>\n<table width='90%%' frame='hsides' \nrules='groups' border='3' summary='Groupes' style='font-size:xx-small;'>\n<colgroup align=\"left\" span='3'/>\n";
      if (not(!nologin_mode)) then hpr "<colgroup align='center' span='1'/>\n";
      if (not(!nogrades_mode)) then begin 
        List.iter (fun _ -> 
          hpr (Printf.sprintf "<colgroup align='center' span='%d'/>\n" colsp);
                   ) paddl;
      end;
      (* Print all groups *)
      List.iter (fun gnum ->
                   print_header_html_in_table hpr gl paddl gnum;
                   print_student_list_html_in_table hpr gl paddl gnum;
                   print_mean_html_in_table hpr gl paddl gnum) !num_groups;
      (* End table *)
      hpr "</table>\n</center>\n"