let draw_vertex_neighborhood edg fac col voi = 
      let size = List.length edg in 
      ext "\\noindent{\\begin{tabular}{ll}\n";
      ext (Printf.sprintf "Degree : & %i\\\\\n" size);
      ext "Next vector : & \\\\\n";
      ext "Inverse vector : & \\\\\n";
      ext "\\end{tabular}}\\hskip 1.5cm\n";
      set_window (-2.,-2.,2.,2.);
      set_unit_factor 1.5;
      initialize_pspicture();
      ext (Printf.sprintf "\t\\SpecialCoor\\degrees[%d]\n" size);
      if (col<>0) then 
        ext (Printf.sprintf 
               "  \\pscircle*[linecolor=vertexcolor%i](0,0){3pt}\n" col);
      ext "  \\cnode[linewidth=0.4pt](0,0){3pt}{A}\n";
      for i = 1 to (size) do
        let col = (List.nth (fac) (i-1)) in 
        let lin = (if ((size<9)&&(size>3)) then ",linearc=0.25" else ",linearc=0.08"in
          ext (Printf.sprintf
                 "  \\pscustom[fillstyle=solid,fillcolor=facecolorlight%i,%%\n            linecolor=facecolor%i%s]{%%\n" col col lin);
          ext (Printf.sprintf "  \\pspolygon(0.25;%.1f)(1.3;%f)(1.3;%f)}\n" 
            ((float i)-.0.5) ((float i)-.0.9) ((float i)-.0.1));
          ext (Printf.sprintf "  \\rput(%.2f;%.1f){\\psscaleboxto(0,0.22){%%\n            \\textcolor{facecolor%i}{$\\strut%s$}}}\n" 
            (cos(3.1415/.(float size))*.0.8+.0.2) 
            ((float i)-.0.5) col (greek_of_int col));
      done;
      ext "\n%% Edges\n";
      for i = 1 to (size) do
        if (col<>0) then 
          ext (Printf.sprintf " \\pscircle*[linecolor=vertexcolor%i](1;%i){2pt}\n" 
            (List.nth voi (i-1)) (i-1));
        ext (Printf.sprintf "  \\cnode[linewidth=0.4pt](1;%i){2pt}{A%i}\n" (i-1) i);
        ext (Printf.sprintf "  \\ncline[linewidth=1.5pt,linecolor=edgecolor%i]{A}{A%i}\n" 
          (List.nth (edg) (i-1)) i);
        ext (Printf.sprintf "  \\rput(1.20;%i){\\psscaleboxto(0,0.12){$%i$}}\n" (i-1) i);
      done;
      ext (Printf.sprintf "  \\psarc{->}(0,0){0.2}{0}{%i}\n" (size-1));
      finalize_pspicture()