# HG changeset patch
# User Alpar Juttner <alpar@cs.elte.hu>
# Date 1215963305 -3600
# Node ID 574b963d02752d633c352469ba3dd9a8d4480642
# Parent  436fe75092b77509b67fc3c72213cfd7f4955599# Parent  4e22275a2b52ba05233b85c94e124cda790d2c93
Merge

diff -r 436fe75092b7 -r 574b963d0275 demo/graph_to_eps_demo.cc
--- a/demo/graph_to_eps_demo.cc	Sat Jul 12 09:45:11 2008 +0100
+++ b/demo/graph_to_eps_demo.cc	Sun Jul 13 16:35:05 2008 +0100
@@ -18,23 +18,22 @@
 
 /// \ingroup demos
 /// \file
-/// \brief Demo of the graph grawing function \ref graphToEps()
+/// \brief Demo of the graph drawing function \ref graphToEps()
 ///
 /// This demo program shows examples how to  use the function \ref
 /// graphToEps(). It takes no input but simply creates  six
 /// <tt>.eps</tt> files demonstrating the capability of \ref
-/// graphToEps(), and showing how to draw directed/graphs,
+/// graphToEps(), and showing how to draw directed graphs,
 /// how to handle parallel egdes, how to change the properties (like
 /// color, shape, size, title etc.) of nodes and arcs individually
 /// using appropriate \ref maps-page "graph maps".
 ///
 /// \include graph_to_eps_demo.cc
 
-#include <lemon/math.h>
-
-#include<lemon/graph_to_eps.h>
 #include<lemon/list_graph.h>
 #include<lemon/graph_utils.h>
+#include<lemon/graph_to_eps.h>
+#include<lemon/math.h>
 
 using namespace std;
 using namespace lemon;
@@ -44,6 +43,7 @@
   Palette palette;
   Palette paletteW(true);
 
+  // Create a small digraph
   ListDigraph g;
   typedef ListDigraph::Node Node;
   typedef ListDigraph::NodeIt NodeIt;
@@ -60,7 +60,7 @@
   ListDigraph::NodeMap<double> sizes(g);
   ListDigraph::NodeMap<int> colors(g);
   ListDigraph::NodeMap<int> shapes(g);
-  ListDigraph::ArcMap<int> ecolors(g);
+  ListDigraph::ArcMap<int> acolors(g);
   ListDigraph::ArcMap<int> widths(g);
   
   coords[n1]=Point(50,50);  sizes[n1]=1; colors[n1]=1; shapes[n1]=0;
@@ -69,118 +69,116 @@
   coords[n4]=Point(70,50);  sizes[n4]=2; colors[n4]=4; shapes[n4]=1;
   coords[n5]=Point(85,60);  sizes[n5]=3; colors[n5]=5; shapes[n5]=2;
   
-  Arc e;
+  Arc a;
 
-  e=g.addArc(n1,n2); ecolors[e]=0; widths[e]=1;
-  e=g.addArc(n2,n3); ecolors[e]=0; widths[e]=1;
-  e=g.addArc(n3,n5); ecolors[e]=0; widths[e]=3;
-  e=g.addArc(n5,n4); ecolors[e]=0; widths[e]=1;
-  e=g.addArc(n4,n1); ecolors[e]=0; widths[e]=1;
-  e=g.addArc(n2,n4); ecolors[e]=1; widths[e]=2;
-  e=g.addArc(n3,n4); ecolors[e]=2; widths[e]=1;
+  a=g.addArc(n1,n2); acolors[a]=0; widths[a]=1;
+  a=g.addArc(n2,n3); acolors[a]=0; widths[a]=1;
+  a=g.addArc(n3,n5); acolors[a]=0; widths[a]=3;
+  a=g.addArc(n5,n4); acolors[a]=0; widths[a]=1;
+  a=g.addArc(n4,n1); acolors[a]=0; widths[a]=1;
+  a=g.addArc(n2,n4); acolors[a]=1; widths[a]=2;
+  a=g.addArc(n3,n4); acolors[a]=2; widths[a]=1;
   
   IdMap<ListDigraph,Node> id(g);
 
-  cout << "Create 'graph_to_eps_demo_out_pure.eps'" << endl;
-  graphToEps(g,"graph_to_eps_demo_out_pure.eps").
-    //scale(10).
+  // Create five .eps files showing the digraph with different options
+  cout << "Create 'graph_to_eps_demo_out_1_pure.eps'" << endl;
+  graphToEps(g,"graph_to_eps_demo_out_1_pure.eps").
     coords(coords).
     title("Sample .eps figure").
-    copyright("(C) 2003-2007 LEMON Project").
+    copyright("(C) 2003-2008 LEMON Project").
     run();
 
-  cout << "Create 'graph_to_eps_demo_out.eps'" << endl;
-  graphToEps(g,"graph_to_eps_demo_out.eps").
-    //scale(10).
+  cout << "Create 'graph_to_eps_demo_out_2.eps'" << endl;
+  graphToEps(g,"graph_to_eps_demo_out_2.eps").
     coords(coords).
     title("Sample .eps figure").
-    copyright("(C) 2003-2007 LEMON Project").
+    copyright("(C) 2003-2008 LEMON Project").
     absoluteNodeSizes().absoluteArcWidths().
     nodeScale(2).nodeSizes(sizes).
     nodeShapes(shapes).
     nodeColors(composeMap(palette,colors)).
-    arcColors(composeMap(palette,ecolors)).
+    arcColors(composeMap(palette,acolors)).
     arcWidthScale(.4).arcWidths(widths).
     nodeTexts(id).nodeTextSize(3).
     run();
 
-
-  cout << "Create 'graph_to_eps_demo_out_arr.eps'" << endl;
-  graphToEps(g,"graph_to_eps_demo_out_arr.eps").
-    //scale(10).
+  cout << "Create 'graph_to_eps_demo_out_3_arr.eps'" << endl;
+  graphToEps(g,"graph_to_eps_demo_out_3_arr.eps").
     title("Sample .eps figure (with arrowheads)").
-    copyright("(C) 2003-2007 LEMON Project").
+    copyright("(C) 2003-2008 LEMON Project").
     absoluteNodeSizes().absoluteArcWidths().
     nodeColors(composeMap(palette,colors)).
     coords(coords).
     nodeScale(2).nodeSizes(sizes).
     nodeShapes(shapes).
-    arcColors(composeMap(palette,ecolors)).
+    arcColors(composeMap(palette,acolors)).
     arcWidthScale(.4).arcWidths(widths).
     nodeTexts(id).nodeTextSize(3).
-    drawArrows().arrowWidth(1).arrowLength(1).
+    drawArrows().arrowWidth(2).arrowLength(2).
     run();
 
-  e=g.addArc(n1,n4); ecolors[e]=2; widths[e]=1;
-  e=g.addArc(n4,n1); ecolors[e]=1; widths[e]=2;
+  a=g.addArc(n1,n4); acolors[a]=2; widths[a]=1;
+  a=g.addArc(n4,n1); acolors[a]=1; widths[a]=2;
 
-  e=g.addArc(n1,n2); ecolors[e]=1; widths[e]=1;
-  e=g.addArc(n1,n2); ecolors[e]=2; widths[e]=1;
-  e=g.addArc(n1,n2); ecolors[e]=3; widths[e]=1;
-  e=g.addArc(n1,n2); ecolors[e]=4; widths[e]=1;
-  e=g.addArc(n1,n2); ecolors[e]=5; widths[e]=1;
-  e=g.addArc(n1,n2); ecolors[e]=6; widths[e]=1;
-  e=g.addArc(n1,n2); ecolors[e]=7; widths[e]=1;
+  a=g.addArc(n1,n2); acolors[a]=1; widths[a]=1;
+  a=g.addArc(n1,n2); acolors[a]=2; widths[a]=1;
+  a=g.addArc(n1,n2); acolors[a]=3; widths[a]=1;
+  a=g.addArc(n1,n2); acolors[a]=4; widths[a]=1;
+  a=g.addArc(n1,n2); acolors[a]=5; widths[a]=1;
+  a=g.addArc(n1,n2); acolors[a]=6; widths[a]=1;
+  a=g.addArc(n1,n2); acolors[a]=7; widths[a]=1;
 
   cout << "Create 'graph_to_eps_demo_out_par.eps'" << endl;
   graphToEps(g,"graph_to_eps_demo_out_par.eps").
     //scale(10).
     title("Sample .eps figure (parallel arcs)").
-    copyright("(C) 2003-2007 LEMON Project").
+    copyright("(C) 2003-2008 LEMON Project").
     absoluteNodeSizes().absoluteArcWidths().
     nodeShapes(shapes).
     coords(coords).
     nodeScale(2).nodeSizes(sizes).
     nodeColors(composeMap(palette,colors)).
-    arcColors(composeMap(palette,ecolors)).
+    arcColors(composeMap(palette,acolors)).
     arcWidthScale(.4).arcWidths(widths).
     nodeTexts(id).nodeTextSize(3).
     enableParallel().parArcDist(1.5).
     run();
-  
-  cout << "Create 'graph_to_eps_demo_out_par_arr.eps'" << endl;
-  graphToEps(g,"graph_to_eps_demo_out_par_arr.eps").
-    //scale(10).
+
+  cout << "Create 'graph_to_eps_demo_out_4_par_arr.eps'" << endl;
+  graphToEps(g,"graph_to_eps_demo_out_4_par_arr.eps").
     title("Sample .eps figure (parallel arcs and arrowheads)").
-    copyright("(C) 2003-2007 LEMON Project").
+    copyright("(C) 2003-2008 LEMON Project").
     absoluteNodeSizes().absoluteArcWidths().
     nodeScale(2).nodeSizes(sizes).
     coords(coords).
     nodeShapes(shapes).
     nodeColors(composeMap(palette,colors)).
-    arcColors(composeMap(palette,ecolors)).
+    arcColors(composeMap(palette,acolors)).
     arcWidthScale(.3).arcWidths(widths).
     nodeTexts(id).nodeTextSize(3).
     enableParallel().parArcDist(1).
     drawArrows().arrowWidth(1).arrowLength(1).
     run();
 
-  cout << "Create 'graph_to_eps_demo_out_a4.eps'" << endl;
-  graphToEps(g,"graph_to_eps_demo_out_a4.eps").scaleToA4().
+  cout << "Create 'graph_to_eps_demo_out_5_par_arr_a4.eps'" << endl;
+  graphToEps(g,"graph_to_eps_demo_out_5_par_arr_a4.eps").
     title("Sample .eps figure (fits to A4)").
-    copyright("(C) 2003-2007 LEMON Project").
+    copyright("(C) 2003-2008 LEMON Project").
+    scaleToA4().
     absoluteNodeSizes().absoluteArcWidths().
     nodeScale(2).nodeSizes(sizes).
     coords(coords).
     nodeShapes(shapes).
     nodeColors(composeMap(palette,colors)).
-    arcColors(composeMap(palette,ecolors)).
+    arcColors(composeMap(palette,acolors)).
     arcWidthScale(.3).arcWidths(widths).
     nodeTexts(id).nodeTextSize(3).
     enableParallel().parArcDist(1).
     drawArrows().arrowWidth(1).arrowLength(1).
     run();
 
+  // Create an .eps file showing the colors of a default Palette
   ListDigraph h;
   ListDigraph::NodeMap<int> hcolors(h);
   ListDigraph::NodeMap<Point> hcoords(h);
@@ -188,21 +186,22 @@
   int cols=int(sqrt(double(palette.size())));
   for(int i=0;i<int(paletteW.size());i++) {
     Node n=h.addNode();
-    hcoords[n]=Point(i%cols,i/cols);
+    hcoords[n]=Point(1+i%cols,1+i/cols);
     hcolors[n]=i;
   }
   
-  cout << "Create 'graph_to_eps_demo_out_colors.eps'" << endl;
-  graphToEps(h,"graph_to_eps_demo_out_colors.eps").
-    //scale(60).
+  cout << "Create 'graph_to_eps_demo_out_6_colors.eps'" << endl;
+  graphToEps(h,"graph_to_eps_demo_out_6_colors.eps").
+    scale(60).
     title("Sample .eps figure (Palette demo)").
-    copyright("(C) 2003-2007 LEMON Project").
+    copyright("(C) 2003-2008 LEMON Project").
     coords(hcoords).
     absoluteNodeSizes().absoluteArcWidths().
     nodeScale(.45).
     distantColorNodeTexts().
-    //    distantBWNodeTexts().
     nodeTexts(hcolors).nodeTextSize(.6).
     nodeColors(composeMap(paletteW,hcolors)).
     run();
+    
+  return 0;
 }
diff -r 436fe75092b7 -r 574b963d0275 lemon/color.h
--- a/lemon/color.h	Sat Jul 12 09:45:11 2008 +0100
+++ b/lemon/color.h	Sun Jul 13 16:35:05 2008 +0100
@@ -108,11 +108,11 @@
   public:
     ///Constructor
 
-    ///Constructor 
-    ///\param have_white indicates whether white is amongst the
+    ///Constructor.
+    ///\param have_white Indicates whether white is among the
     ///provided initial colors (\c true) or not (\c false). If it is true,
     ///white will be assigned to \c 0.
-    ///\param num the number of the allocated colors. If it is \c -1,
+    ///\param num The number of the allocated colors. If it is \c -1,
     ///the default color configuration is set up (26 color plus optionaly the
     ///white).  If \c num is less then 26/27 then the default color
     ///list is cut. Otherwise the color list is filled repeatedly with
@@ -153,7 +153,6 @@
         colors.push_back(Color(0,.5,1));
         colors.push_back(Color(.5,0,1));
       } while(int(colors.size())<num);
-      //    colors.push_back(Color(1,1,1));
       if(num>=0) colors.resize(num);
     }
     ///\e
@@ -171,13 +170,13 @@
     {
       colors[i%colors.size()]=c;
     }
-    ///Add a new color to the end of the color list.
+    ///Adds a new color to the end of the color list.
     void add(const Color &c) 
     {
       colors.push_back(c);
     }
 
-    ///Sets the number of the exiting colors.
+    ///Sets the number of the existing colors.
     void resize(int s) { colors.resize(s);}
     ///Returns the number of the existing colors.
     int size() const { return int(colors.size());}
diff -r 436fe75092b7 -r 574b963d0275 lemon/graph_to_eps.h
--- a/lemon/graph_to_eps.h	Sat Jul 12 09:45:11 2008 +0100
+++ b/lemon/graph_to_eps.h	Sun Jul 13 16:35:05 2008 +0100
@@ -63,7 +63,7 @@
   
 ///Default traits class of \ref GraphToEps
 
-///Default traits class of \ref GraphToEps
+///Default traits class of \ref GraphToEps.
 ///
 ///\c G is the type of the underlying graph.
 template<class G>
@@ -140,12 +140,11 @@
   ///Constructor
 
   ///Constructor
-  ///\param _g is a reference to the graph to be printed
-  ///\param _os is a reference to the output stream.
-  ///\param _os is a reference to the output stream.
+  ///\param _g  Reference to the graph to be printed.
+  ///\param _os Reference to the output stream.
+  ///\param _os Reference to the output stream. By default it is <tt>std::cout</tt>.
   ///\param _pros If it is \c true, then the \c ostream referenced by \c _os
   ///will be explicitly deallocated by the destructor.
-  ///By default it is <tt>std::cout</tt>
   DefaultGraphToEpsTraits(const G &_g,std::ostream& _os=std::cout,
 			  bool _pros=false) :
     g(_g), os(_os),
@@ -173,7 +172,9 @@
 
 ///Auxiliary class to implement the named parameters of \ref graphToEps()
 
-///Auxiliary class to implement the named parameters of \ref graphToEps()
+///Auxiliary class to implement the named parameters of \ref graphToEps().
+///
+///For detailed examples see the \ref graph_to_eps_demo.cc demo file.
 template<class T> class GraphToEps : public T 
 {
   // Can't believe it is required by the C++ standard
@@ -258,7 +259,7 @@
 public:
   ///Node shapes
 
-  ///Node shapes
+  ///Node shapes.
   ///
   enum NodeShapes { 
     /// = 0
@@ -335,7 +336,7 @@
   ///Sets the map of the node coordinates
 
   ///Sets the map of the node coordinates.
-  ///\param x must be a node map with dim2::Point<double> or
+  ///\param x must be a node map with \ref dim2::Point "dim2::Point<double>" or
   ///\ref dim2::Point "dim2::Point<int>" values. 
   template<class X> GraphToEps<CoordsTraits<X> > coords(const X &x) {
     dontPrint=true;
@@ -347,7 +348,7 @@
   };
   ///Sets the map of the node sizes
 
-  ///Sets the map of the node sizes
+  ///Sets the map of the node sizes.
   ///\param x must be a node map with \c double (or convertible) values. 
   template<class X> GraphToEps<NodeSizesTraits<X> > nodeSizes(const X &x)
   {
@@ -376,9 +377,9 @@
   };
   ///Sets the text printed on the nodes
 
-  ///Sets the text printed on the nodes
+  ///Sets the text printed on the nodes.
   ///\param x must be a node map with type that can be pushed to a standard
-  ///ostream. 
+  ///\c ostream. 
   template<class X> GraphToEps<NodeTextsTraits<X> > nodeTexts(const X &x)
   {
     dontPrint=true;
@@ -393,14 +394,14 @@
 
   ///With this command it is possible to insert a verbatim PostScript
   ///block to the nodes.
-  ///The PS current point will be moved to the centre of the node before
+  ///The PS current point will be moved to the center of the node before
   ///the PostScript block inserted.
   ///
   ///Before and after the block a newline character is inserted so you
   ///don't have to bother with the separators.
   ///
   ///\param x must be a node map with type that can be pushed to a standard
-  ///ostream.
+  ///\c ostream.
   ///
   ///\sa nodePsTextsPreamble()
   template<class X> GraphToEps<NodePsTextsTraits<X> > nodePsTexts(const X &x)
@@ -415,7 +416,7 @@
   };
   ///Sets the map of the arc widths
 
-  ///Sets the map of the arc widths
+  ///Sets the map of the arc widths.
   ///\param x must be an arc map with \c double (or convertible) values. 
   template<class X> GraphToEps<ArcWidthsTraits<X> > arcWidths(const X &x)
   {
@@ -429,7 +430,7 @@
   };
   ///Sets the map of the node colors
 
-  ///Sets the map of the node colors
+  ///Sets the map of the node colors.
   ///\param x must be a node map with \ref Color values.
   ///
   ///\sa Palette
@@ -445,7 +446,7 @@
   };
   ///Sets the map of the node text colors
 
-  ///Sets the map of the node text colors
+  ///Sets the map of the node text colors.
   ///\param x must be a node map with \ref Color values. 
   ///
   ///\sa Palette
@@ -463,7 +464,7 @@
   };
   ///Sets the map of the arc colors
 
-  ///Sets the map of the arc colors
+  ///Sets the map of the arc colors.
   ///\param x must be an arc map with \ref Color values. 
   ///
   ///\sa Palette
@@ -487,9 +488,9 @@
   /// \sa nodeSizes()
   /// \sa autoNodeScale()
   GraphToEps<T> &nodeScale(double d=.01) {_nodeScale=d;return *this;}
-  ///Turns on/off the automatic node width scaling.
+  ///Turns on/off the automatic node size scaling.
 
-  ///Turns on/off the automatic node width scaling.
+  ///Turns on/off the automatic node size scaling.
   ///
   ///\sa nodeScale()
   ///
@@ -497,9 +498,9 @@
     _autoNodeScale=b;return *this;
   }
 
-  ///Turns on/off the absolutematic node width scaling.
+  ///Turns on/off the absolutematic node size scaling.
 
-  ///Turns on/off the absolutematic node width scaling.
+  ///Turns on/off the absolutematic node size scaling.
   ///
   ///\sa nodeScale()
   ///
@@ -508,9 +509,6 @@
   }
 
   ///Negates the Y coordinates.
-
-  ///Negates the Y coordinates.
-  ///
   GraphToEps<T> &negateY(bool b=true) {
     _negY=b;return *this;
   }
@@ -557,86 +555,47 @@
     _absoluteArcWidths=b;return *this;
   }
   ///Sets a global scale factor for the whole picture
-
-  ///Sets a global scale factor for the whole picture
-  ///
-
   GraphToEps<T> &scale(double d) {_scale=d;return *this;}
   ///Sets the width of the border around the picture
-
-  ///Sets the width of the border around the picture
-  ///
   GraphToEps<T> &border(double b=10) {_xBorder=_yBorder=b;return *this;}
   ///Sets the width of the border around the picture
-
-  ///Sets the width of the border around the picture
-  ///
   GraphToEps<T> &border(double x, double y) {
     _xBorder=x;_yBorder=y;return *this;
   }
   ///Sets whether to draw arrows
-
-  ///Sets whether to draw arrows
-  ///
   GraphToEps<T> &drawArrows(bool b=true) {_drawArrows=b;return *this;}
   ///Sets the length of the arrowheads
-
-  ///Sets the length of the arrowheads
-  ///
   GraphToEps<T> &arrowLength(double d=1.0) {_arrowLength*=d;return *this;}
   ///Sets the width of the arrowheads
-
-  ///Sets the width of the arrowheads
-  ///
   GraphToEps<T> &arrowWidth(double d=.3) {_arrowWidth*=d;return *this;}
   
   ///Scales the drawing to fit to A4 page
-
-  ///Scales the drawing to fit to A4 page
-  ///
   GraphToEps<T> &scaleToA4() {_scaleToA4=true;return *this;}
   
   ///Enables parallel arcs
-
-  ///Enables parallel arcs
   GraphToEps<T> &enableParallel(bool b=true) {_enableParallel=b;return *this;}
   
-  ///Sets the distance 
-  
-  ///Sets the distance 
-  ///
+  ///Sets the distance between parallel arcs
   GraphToEps<T> &parArcDist(double d) {_parArcDist*=d;return *this;}
   
   ///Hides the arcs
-  
-  ///Hides the arcs
-  ///
   GraphToEps<T> &hideArcs(bool b=true) {_showArcs=!b;return *this;}
   ///Hides the nodes
-  
-  ///Hides the nodes
-  ///
   GraphToEps<T> &hideNodes(bool b=true) {_showNodes=!b;return *this;}
   
   ///Sets the size of the node texts
-  
-  ///Sets the size of the node texts
-  ///
   GraphToEps<T> &nodeTextSize(double d) {_nodeTextSize=d;return *this;}
 
   ///Sets the color of the node texts to be different from the node color
 
   ///Sets the color of the node texts to be as different from the node color
-  ///as it is possible
-  ///
+  ///as it is possible.
   GraphToEps<T> &distantColorNodeTexts()
   {_nodeTextColorType=DIST_COL;return *this;}
   ///Sets the color of the node texts to be black or white and always visible.
 
   ///Sets the color of the node texts to be black or white according to
-  ///which is more 
-  ///different from the node color
-  ///
+  ///which is more different from the node color.
   GraphToEps<T> &distantBWNodeTexts()
   {_nodeTextColorType=DIST_BW;return *this;}
 
@@ -648,18 +607,18 @@
   GraphToEps<T> & nodePsTextsPreamble(const char *str) {
     _nodePsTextsPreamble=str ;return *this;
   }
-  ///Sets whether the the graph is undirected
+  ///Sets whether the graph is undirected
 
-  ///Sets whether the the graph is undirected.
+  ///Sets whether the graph is undirected.
   ///
   ///This setting is the default for undirected graphs.
   ///
   ///\sa directed()
    GraphToEps<T> &undirected(bool b=true) {_undirected=b;return *this;}
 
-  ///Sets whether the the graph is directed
+  ///Sets whether the graph is directed
 
-  ///Sets whether the the graph is directed.
+  ///Sets whether the graph is directed.
   ///Use it to show the edges as a pair of directed ones.
   ///
   ///This setting is the default for digraphs.
@@ -716,7 +675,6 @@
     os << "%!PS-Adobe-2.0 EPSF-2.0\n";
     if(_title.size()>0) os << "%%Title: " << _title << '\n';
      if(_copyright.size()>0) os << "%%Copyright: " << _copyright << '\n';
-//        << "%%Copyright: XXXX\n"
     os << "%%Creator: LEMON, graphToEps()\n";
 
     {    
@@ -748,7 +706,7 @@
       double max_w=0;
       for(ArcIt e(g);e!=INVALID;++e)
 	max_w=std::max(double(_arcWidths[e]),max_w);
-      ///\todo better 'epsilon' would be nice here.
+      //\todo better 'epsilon' would be nice here.
       if(max_w>EPSILON) {
 	_arcWidthScale/=max_w;
       }
@@ -758,7 +716,7 @@
       double max_s=0;
       for(NodeIt n(g);n!=INVALID;++n)
 	max_s=std::max(double(_nodeSizes[n]),max_s);
-      ///\todo better 'epsilon' would be nice here.
+      //\todo better 'epsilon' would be nice here.
       if(max_s>EPSILON) {
 	_nodeScale/=max_s;
       }
@@ -1114,18 +1072,12 @@
   ///@{
 
   ///An alias for arcWidths()
-
-  ///An alias for arcWidths()
-  ///
   template<class X> GraphToEps<ArcWidthsTraits<X> > edgeWidths(const X &x)
   {
     return arcWidths(x);
   }
 
   ///An alias for arcColors()
-
-  ///An alias for arcColors()
-  ///
   template<class X> GraphToEps<ArcColorsTraits<X> >
   edgeColors(const X &x)
   {
@@ -1133,39 +1085,24 @@
   }
 
   ///An alias for arcWidthScale()
-
-  ///An alias for arcWidthScale()
-  ///
   GraphToEps<T> &edgeWidthScale(double d) {return arcWidthScale(d);}
 
   ///An alias for autoArcWidthScale()
-
-  ///An alias for autoArcWidthScale()
-  ///
   GraphToEps<T> &autoEdgeWidthScale(bool b=true)
   {
     return autoArcWidthScale(b);
   }
   
   ///An alias for absoluteArcWidths()
-
-  ///An alias for absoluteArcWidths()
-  ///
   GraphToEps<T> &absoluteEdgeWidths(bool b=true)
   {
     return absoluteArcWidths(b);
   }
   
   ///An alias for parArcDist()
-
-  ///An alias for parArcDist()
-  ///
   GraphToEps<T> &parEdgeDist(double d) {return parArcDist(d);}
   
   ///An alias for hideArcs()
-  
-  ///An alias for hideArcs()
-  ///
   GraphToEps<T> &hideEdges(bool b=true) {return hideArcs(b);}
 
   ///@}
@@ -1185,9 +1122,9 @@
 
 ///\ingroup eps_io
 ///Generates an EPS file from a graph.
-///\param g is a reference to the graph to be printed
-///\param os is a reference to the output stream.
-///By default it is <tt>std::cout</tt>
+///\param g Reference to the graph to be printed.
+///\param os Reference to the output stream.
+///By default it is <tt>std::cout</tt>.
 ///
 ///This function also has a lot of
 ///\ref named-templ-func-param "named parameters",
@@ -1198,6 +1135,9 @@
 ///              .nodeScale(2).nodeSizes(sizes)
 ///              .arcWidthScale(.4).run();
 ///\endcode
+///
+///For more detailed examples see the \ref graph_to_eps_demo.cc demo file.
+///
 ///\warning Don't forget to put the \ref GraphToEps::run() "run()"
 ///to the end of the parameter list.
 ///\sa GraphToEps