let print_student_list_latex (hpr:string -> unit) (gl:student list) 
      (groupssel:int list) = 
    let module Out = struct let exthpr = hpr end in
    let module Latex = Latex.TEXHandler(Outin 
    let max_columns = 10 in 
      (* Initialize LaTeX *)
      Latex.set_width 19.5;
      Latex.set_height 25.;
      Latex.set_pagestyle "empty";
      Latex.initialize_output();
      (* Print all groups *)
      List.iter (fun gnum -> 
           let nl = List.filter (fun s -> s.group = gnum) gl in 
             hpr (Printf.sprintf "~\\vfill\n\\begin{center}\n\\textsf{\\LARGE \\bfseries Liste des personnes du groupe n\176%d}\n\\vskip 1cm\n\n" gnum);
             hpr "\\begin{tabular}{|ll|";
             for i = 1 to max_columns do hpr "c|"done;
             hpr "}\n\\hline\n";
             hpr "\\rule[-2mm]{0pt}{6mm} \\textsf{\\bfseries NOM} & \\textsf{\\bfseries Pr\233nom}";
             for i = 1 to max_columns do hpr " & \\rule{8mm}{0pt} "done;
             hpr " \\\\ \\hline\n";
             (* Print students *)
             List.iter (print_student_latex_in_table hpr) nl;
             hpr (Printf.sprintf "\\rule[-2mm]{0pt}{6mm} Nombre : & %d" (List.length nl));
             for i = 1 to max_columns do hpr " & "done;
             hpr "\\\\ \\hline\n"
             hpr "\\end{tabular}\\end{center}\n\\vfill~\n\\pagebreak\n\n";
                ) groupssel;
      (* Finalize LaTeX *)
      Latex.finalize_output()