]> granicus.if.org Git - graphviz/commitdiff
Add source for info pages to CVS
authorerg <devnull@localhost>
Tue, 15 Apr 2008 17:20:25 +0000 (17:20 +0000)
committererg <devnull@localhost>
Tue, 15 Apr 2008 17:20:25 +0000 (17:20 +0000)
doc/infosrc/arrows.2 [new file with mode: 0644]
doc/infosrc/attrs [new file with mode: 0644]

diff --git a/doc/infosrc/arrows.2 b/doc/infosrc/arrows.2
new file mode 100644 (file)
index 0000000..470a98d
--- /dev/null
@@ -0,0 +1,75 @@
+</TABLE>
+<P>
+The primitive shapes are:
+<CENTER>
+<TABLE>
+  <TR>
+    <TD>"box"<TD><IMG SRC="a_box.gif">
+    <TD>"crow"<TD><IMG SRC="a_crow.gif">
+    <TD>"diamond"<TD><IMG SRC="a_diamond.gif">
+  </TR>
+  <TR>
+    <TD>"dot"<TD><IMG SRC="a_dot.gif">
+    <TD>"inv"<TD><IMG SRC="a_inv.gif">
+    <TD>"none"<TD><IMG SRC="a_none.gif">
+  </TR>
+  <TR>
+    <TD>"normal"<TD><IMG SRC="a_normal.gif">
+    <TD>"tee"<TD><IMG SRC="a_tee.gif">
+    <TD>"vee"<TD><IMG SRC="a_open.gif">
+  </TR>
+</TABLE>
+</CENTER>
+<P>
+As for the modifiers:
+<DL>
+<DT>'l'
+  <DD> Clip the shape, leaving only the part to the left of the edge.
+<DT>'r'
+  <DD> Clip the shape, leaving only the part to the right of the edge.
+<DT>'o'
+  <DD> Use an open (non-filled) version of the shape.
+</DL>
+Left and right are defined as those directions determined by looking
+from the edge towards the point where the arrow "touches" the node.
+<P>
+As an example, the arrow shape <TT>lteeoldiamond</TT> is parsed as
+<TT>'l' 'tee' 'o' 'l' 'diamond'</TT> and corresponds to the shape
+<CENTER>
+<IMG SRC="a_lteeoldiamond.gif">
+</CENTER>
+Note that the first arrow shape specified occurs closest to the node.
+The second arrow shape, if provided, occurs further from the node.
+<P>
+Not all syntactically legal combinations of modifiers are meaningful
+or semantically valid.
+For example, none of the modifiers make any sense with <TT>none</TT>.
+The following table indicates which modifiers are allowed with which shapes.
+<P>
+<CENTER>
+<TABLE BORDER=2>
+<TR ALIGN=CENTER>
+ <TH>Modifier</TH>
+ <TH>box
+ <TH>crow
+ <TH>diamond
+ <TH>dot
+ <TH>inv
+ <TH>none
+ <TH>normal
+ <TH>tee
+ <TH>vee
+</TR>
+<TR ALIGN=CENTER><TD>'l'/'r'<TD>X<TD>X<TD>X<TD>&nbsp;<TD>X<TD>&nbsp;<TD>X<TD>X<TD>X</TR>
+<TR ALIGN=CENTER><TD>'o'    <TD>X<TD>&nbsp;<TD>X<TD>X<TD>X<TD>&nbsp;<TD>X<TD>&nbsp;<TD>&nbsp;</TR>
+</TABLE>
+</CENTER>
+<P>
+This yields 36 different arrow shapes. The optional second shape
+can independently be any of the 36, but since <TT>nonenone</TT> 
+is redundant, there are 36 * 35 = 1260 different combinations.
+<P>
+The following display contains the 36 combinations possible with a single
+arrow shape. The node attached to the arrow is not drawn but would appear
+on the right side of the edge.
+<P>
diff --git a/doc/infosrc/attrs b/doc/infosrc/attrs
new file mode 100644 (file)
index 0000000..c5cb2ab
--- /dev/null
@@ -0,0 +1,1031 @@
+# Graphviz attributes
+# Each item consist of a header line, followed by a description in HTML.
+#
+# The header line has the format
+#    :name:uses:kind[:dflt[:minv]];  [notes]
+# where
+#  name has the format name1[/namei]*[ notes]
+#    the note can be used as a comment
+#
+#  uses is a string consisting of G,C,N,E, indicating that the attribute
+#    applies to graphs, clusters, nodes and edges, respectively.
+#
+#  kind has the format type[/typei]*
+#    type can be int, bool, string, double, or a special <typename>.
+#    In the last case, we assume there is an entry for <typename> in
+#    the types file.
+#
+#  dflt has the format dflt[/dflti]*
+#    dflt gives a description of the default value of the attribute.
+#    It can contain arbitrary text but ':' must be preceded by a space.
+#
+#  minv has the format min[/mini]*
+#    minv gives a description of the minimum value of the attribute.
+#    It can contain arbitrary text.
+#
+#  the notes field, if present, consists of a comma-separated list of:
+#    
+#   bitmap cmap map ps svg - attribute limited to specified output formats
+#   dot neato twopi circo fdp - attribute limited to specified layouts
+#   notdot - attribute use in all layouts but dot
+#   write - attribute is write-only
+#   obsolete - attribute is obsolete
+#
+# Obviously, for any field which allows multiple subfields separated by '/'
+# the subfields cannot contain the '/' character.
+#
+# In the summary table, attributes are anchored with a:<name>.
+# In the description list, attributes are anchored with d:<name>.
+# There can be more than one item with the same name.
+# The attributes are alphabetized on output.
+# 
+# The current program generating HTML is a shell script. This should
+# cause no problems except with '\', which may require some number of
+# escaping '\' to get the right final output.
+#    
+:Damping:G:double:0.99:0.0; neato
+Factor damping force motions. On each iteration, a nodes movement
+is limited to this factor of its potential motion. By being less than
+1.0, the system tends to ``cool'', thereby preventing cycling.
+#:Nodefactor:G:double:1.0;
+#  Set by attribute, overwritten, unused
+#:Nodesep:G:double:1.0;
+#  Set by attribute, overwritten, unused
+:URL:ENGC:lblString:<none>;   map,ps,svg
+Hyperlinks incorporated into device-dependent output.
+At present, used in ps2, cmap, i*map and svg formats.
+For all these formats, URLs can be attached to nodes, edges and
+clusters. URL attributes can also be attached to the root graph in ps2,
+cmap and i*map formats. This serves as the base URL for relative URLs in the
+former, and as the default image map file in the latter.
+<P>
+For svg, cmapx and imap output, the active area for a node is its
+visible image.
+For example, an unfilled
+node with no drawn boundary will only be active on its label.
+For other output, the active area is its bounding box.
+The active area for a cluster is its bounding box.
+For edges, the active areas are small circles where the edge contacts its head
+and tail nodes. In addition, for svg, cmapx and imap, the active area
+includes a thin polygon approximating the edge. The circles may
+overlap the related node, and the edge URL dominates.
+If the edge has a label, this will also be active.
+Finally, if the edge has a head or tail label, this will also be active.
+<P>
+Note that, for edges, the attributes <A HREF=#d:headURL>headURL</A>,
+<A HREF=#d:tailURL>tailURL</A>, <A HREF=#d:labelURL>labelURL</A> and
+<A HREF=#d:edgeURL>edgeURL</A> allow control of various parts of an
+edge.
+Also note that, if active areas of two edges overlap, it is unspecified
+which area dominates.
+:arrowhead:E:arrowType:normal;
+Style of arrowhead on the head node of an edge.
+See also the <A HREF=#d:dir>dir</A> attribute,
+and a <A HREF=#h:undir_note>limitation</A>.
+:arrowsize (E_arrowsz):E:double:1.0:0.0;
+Multiplicative scale factor for arrowheads.
+:arrowtail:E:arrowType:normal;
+Style of arrowhead on the tail node of an edge.
+See also the <A HREF=#d:dir>dir</A> attribute,
+and a <A HREF=#h:undir_note>limitation</A>.
+:bb:G:rect; write
+Bounding box of drawing in integer points.
+:bgcolor:GC:color:<none>;
+When attached to the root graph, this color is used as the background for
+entire canvas. When a cluster attribute, it is used as the initial
+background for the cluster. If a cluster has a filled
+<A HREF=#d:style>style</A>, the
+cluster's <A HREF=#d:fillcolor>fillcolor</A> will overlay the
+background color.
+<P>
+If no background color is specified for the root graph, no graphics
+operation are performed on the background. This works fine for
+PostScript but for bitmap output, all bits are initialized to something.
+This means that when the bitmap output is included in some other
+document, all of the bits within the bitmap's bounding box will be
+set, overwriting whatever color or graphics where already on the page.
+If this effect is not desired, and you only want to set bits explicitly
+assigned in drawing the graph, set <B>bgcolor</B>="transparent".
+#bottomlabel:N:string:"";
+#  Additional label near bottom of nodes of shape M*.
+:center:G:bool:false;
+If true, the drawing is centered in the output canvas.
+:charset:G:string:"UTF-8";
+Specifies the character encoding used when interpreting string input
+as a text label. The default value is <TT>"UTF-8"</TT>.
+The other legal value is <TT>"iso-8859-1"</TT> or,
+equivalently,
+<TT>"Latin1"</TT>. The <B>charset</B> attribute is case-insensitive.
+Note that if the character encoding used in the input does not
+match the <B>charset</B> value, the resulting output may be very strange.
+:clusterrank:G:clusterMode:local;  dot
+Mode used for handling clusters. If <B>clusterrank</B> is "local", a
+subgraph whose name begins with "cluster" is given special treatment.
+The subgraph is laid out separately, and then integrated as a unit into
+its parent graph, with a bounding rectangle drawn about it.
+If the cluster has a <A HREF=#d:label>label</A> parameter, this label
+is displayed within the rectangle.
+Note also that there can be clusters within clusters.
+At present, the modes "global" and "none"
+appear to be identical, both turning off the special cluster processing.
+:color:ENC:color/colorList:black;
+Basic drawing color for graphics, not text. For the latter, use the
+<A HREF=#d.fontcolor>fontcolor</A> attribute.
+<P>
+For edges, the value
+can either be a single color or a <A HREF=#k:colorList>colorList</A>.
+In the latter case, the edge is drawn using parallel splines or lines,
+one for each color in the list, in the order given.
+The head arrow, if any, is drawn using the first color in the list,
+and the tail arrow, if any, the second color. This supports the common
+case of drawing opposing edges, but using parallel splines instead of
+separately routed multiedges. For example, the graph
+<PRE>
+digraph G {
+  a -> b [dir=both color="red:blue"]
+}
+</PRE>
+yields<BR>
+<IMG SRC="colorlist.gif">
+:colorscheme:ENCG:string:"";
+This attribute specifies a color scheme namespace. If defined, it specifies
+the context for interpreting color names. In particular, if a
+<A HREF=#k:color>color</A> value has form <TT>"xxx"</TT> or <TT>"//xxx"</TT>,
+then the
+color <TT>xxx</TT> will be evaluated according to the current color scheme.
+If no color scheme is set, the standard X11 naming is used.
+For example, if <TT>colorscheme=bugn9</TT>, then <TT>color=7</TT>
+is interpreted as <TT>"/bugn9/7"</TT>.
+:comment:ENG:string:"";
+Comments are inserted into output. Device-dependent
+:compound:G:bool:false;  dot
+If true, allow edges between clusters. (See <A HREF=#d:lhead>lhead</A>
+and <A HREF=#d:ltail>ltail</A> below.)
+:concentrate:G:bool:false;  dot
+If true, use edge concentrators.
+:constraint (E_constr):E:bool:true;  dot
+If false, the edge is not used in ranking the nodes. For example,
+in the graph
+<PRE>
+digraph G {
+  a -> c;
+  a -> b;
+  b -> c [constraint=false];
+}
+</PRE>
+the edge <CODE>b -> c</CODE> does not add a constraint during rank
+assignment, so the only constraints are that a be above b and c,
+yielding the graph:<BR>
+<IMG SRC="constraint.gif">
+:defaultdist:G:double:1+(avg. len)*sqrt(|V|):epsilon; neato
+This specifies the distance between nodes in separate connected
+components. If set too small, connected components may overlap.
+Only applicable if <A HREF=#d:pack>pack</A>=false.
+:decorate:E:bool:false;
+If true, attach edge label to edge by a 2-segment
+polyline, underlining the label, then going to the closest point of spline.
+:dim:G:int:2:2; neato,fdp
+Set the number of dimensions used for the layout. The maximum value
+allowed is 10.
+:dir:E:dirType:forward(directed)/none(undirected);
+Set edge type for drawing arrowheads. This indicates which ends of the
+edge should be decorated with an arrowhead. The actual style of the
+arrowhead can be specified using the <A HREF=#d:arrowhead>arrowhead</A>
+and <A HREF=#d:arrowtail>arrowtail</A> attributes.
+See <A HREF=#h:undir_note>limitation</A>.
+:diredgeconstraints:G:string/bool:false;   neato
+Only valid when <A HREF=#d:mode>mode</A>="ipsep".
+If true, constraints are generated for each edge in the largest (heuristic)
+directed acyclic subgraph such that the edge must point downwards.
+If "hier", generates level constraints similar to those used with
+<A HREF=#d:mode>mode</A>="hier". The main difference is that, in the latter
+case, only these constraints are involved, so a faster solver can be used.
+:distortion:N:double:0.0:-100.0;
+Distortion factor for <A HREF=#d:shape><B>shape</B></A>=polygon.
+Positive values cause top part to
+be larger than bottom; negative values do the opposite.
+:dpi:G:double:96.0/0.0;  bitmap,svg
+This specifies the expected number of pixels per inch on a display device.
+For bitmap output, this guarantees that text rendering will be
+done more accurately, both in size and in placement. For SVG output,
+it is used to guarantee that the dimensions in the output correspond to
+the correct number of points or inches.
+:edgeURL:E:lblString:"";  map,svg
+If <B>edgeURL</B> is defined, this is the link used for the non-label
+parts of an edge. This value overrides any <A HREF=#d:URL>URL</A>
+defined for the edge.
+Also, this value is used near the head or tail node unless overridden
+by a <A HREF=#d:headURL>headURL</A> or <A HREF=#d:tailURL>tailURL</A> value,
+respectively.
+See <A HREF=#h:undir_note>limitation</A>.
+:edgehref:E:lblString:"";  map,svg
+Synonym for <A HREF=#d:edgeURL>edgeURL</A>.
+:edgetarget:E:escString:<none>;   map,svg
+If the edge has a <A HREF=#d:URL>URL</A> or <A HREF=#d:edgeURL>edgeURL</A>
+attribute, this attribute determines which window of the
+browser is used
+for the URL attached to the non-label part of the edge.
+Setting it to "_graphviz" will open a new window if it
+doesn't already exist, or reuse it if it does.
+If undefined, the value of the <A HREF=#d:target>target</A> is used.
+:edgetooltip:E:escString:"";    cmap,svg
+Tooltip annotation attached to the non-label part of an edge.
+This is used only if the edge has a <A HREF=#d:URL>URL</A>
+or <A HREF=#d:edgeURL>edgeURL</A> attribute.
+:epsilon:G:double:.0001 * # nodes(mode == KK)/.0001(mode == major);  neato
+Terminating condition. If the length squared of all energy gradients are
+< <B>epsilon</B>, the algorithm stops.
+:esep:G:double/pointf:+3; notdot
+Margin used around polygons for purposes of spline edge routing.
+The interpretation is the same as given for <A HREF=#d:sep>sep</A>.
+This should normally be strictly less than <A HREF=#d:sep>sep</A>.
+:fillcolor:NC:color:lightgrey(nodes)/black(clusters);
+Color used to fill the background of a node or cluster
+assuming <A HREF=#d:style>style</A>=filled.
+If <B>fillcolor</B> is not defined, <A HREF=#d:color>color</A> is
+used. (For clusters, if <B>color</B> is not defined,
+<A HREF=#d:bgcolor>bgcolor</A> is used.) If this is not defined,
+the default is used, except for
+<A HREF=#d:shape><B>shape</B></A>=point or when the output
+format is MIF,
+which use black by default.
+<P>
+Note that a cluster inherits the root graph's attributes if defined.
+Thus, if the root graph has defined a <B>fillcolor</B>, this will override a
+<B>color</B> or <B>bgcolor</B> attribute set for the cluster.
+:fixedsize  (N_fixed):N:bool:false;
+If true, the node size is specified by the values of the
+<A HREF=#d:width><B>width</B></A>
+and <A HREF=#d:height><B>height</B></A> attributes only
+and is not expanded to contain the text label.
+:fontcolor:ENGC:color:black;
+Color used for text.
+:fontnames:G:string:"";    svg
+Allows user control of how basic fontnames are represented in SVG output.
+If <TT>fontnames</TT> is undefined or <TT>"svg"</TT>,
+the output will try to use known SVG fontnames. For example, the
+default font  <TT>"Times-Roman"</TT> will be mapped to the
+basic SVG font <TT>"serif"</TT>. This can be overridden by setting
+<TT>fontnames</TT> to  <TT>"ps"</TT> or  <TT>"gd"</TT>.
+In the former case, known PostScript font names such as
+<TT>"Times-Roman"</TT> will be used in the output.
+In the latter case, the fontconfig font conventions
+are used. Thus, <TT>"Times-Roman"</TT> would be treated as
+<TT>"Nimbus Roman No9 L"</TT>. These last two options are useful
+with SVG viewers that support these richer fontname spaces.
+:fontname:ENGC:string:"Times-Roman";
+Font used for text. This very much depends on the output format and, for
+non-bitmap output such as PostScript or SVG, the availability of the font
+when the graph is displayed or printed. As such, it is best to rely on
+font faces that are generally available, such as Times-Roman, Helvetica or
+Courier.
+<P>
+If Graphviz was built using the
+<A HREF=http://pdx.freedesktop.org/~fontconfig/fontconfig-user.html>fontconfig library</A>, the latter library
+will be used to search for the font. However, if the <TT>fontname</TT> string
+contains a slash character "/", it is treated as a pathname for the font
+file, though font lookup will append the usual font suffixes.
+<P>
+If Graphviz does not use fontconfig, <TT>fontname</TT> will be
+considered the name of a Type 1 or True Type font file.
+If you specify <TT>fontname=schlbk</TT>, the tool will look for a
+file named  <TT>schlbk.ttf</TT> or <TT>schlbk.pfa</TT> or <TT>schlbk.pfb</TT>
+in one of the directories specified by
+the <A HREF=#d:fontpath>fontpath</A> attribute.
+The lookup does support various aliases for the common fonts.
+:fontpath:G:string:system-dependent;
+Directory list used by libgd to search for bitmap fonts if Graphviz
+was not built with the fontconfig library.
+If <B>fontpath</B> is not set, the environment
+variable <TT>DOTFONTPATH</TT> is checked.
+If that is not set, <TT>GDFONTPATH</TT> is checked.
+If not set, libgd uses its compiled-in font path.
+Note that fontpath is an attribute of the root graph.
+:fontsize:ENGC:double:14.0:1.0;
+Font size, <A HREF=#points>in points</A>, used for text.
+:group:N:string:"";  dot
+If the end points of an edge belong to the same group, i.e., have the
+same group attribute, parameters are set to avoid crossings and keep
+the edges straight.
+:headURL:E:lblString:"";   map,svg
+If <B>headURL</B> is defined, it is
+output as part of the head label of the edge.
+Also, this value is used near the head node, overriding any
+<A HREF=#d:URL>URL</A> value.
+See <A HREF=#h:undir_note>limitation</A>.
+:headclip:E:bool:true;
+If true, the head of an edge is clipped to the boundary of the head node;
+otherwise, the end of the edge goes to the center of the node, or the
+center of a port, if applicable.
+:headhref:E:lblString:"";  map,svg
+Synonym for <A HREF=#d:headURL>headURL</A>.
+:headlabel:E:lblString:"";
+Text label to be placed near head of edge.
+See <A HREF=#h:undir_note>limitation</A>.
+:headport:E:portPos:center;
+Indicates where on the head node to attach the head of the edge.
+In the default case, the edge is aimed towards the center of the node,
+and then clipped at the node boundary.
+See <A HREF=#h:undir_note>limitation</A>.
+:headtarget:E:escString:<none>;   map,svg
+If the edge has a <A HREF=#d:headURL>headURL</A>,
+this attribute determines which window of the
+browser is used
+for the URL. Setting it to "_graphviz" will open a new window if it
+doesn't already exist, or reuse it if it does.
+If undefined, the value of the <A HREF=#d:target>target</A> is used.
+:headtooltip:E:escString:"";    cmap,svg
+Tooltip annotation attached to the head of an edge. This is used only
+if the edge has a <A HREF=#d:headURL>headURL</A> attribute.
+:height:N:double:0.5:0.02;
+Height of node, in inches. This is taken as the initial, minimum height
+of the node. If <A HREF=#d:fixedsize><B>fixedsize</B></A> is true, this
+will be the final height of the node. Otherwise, if the node label
+requires more height to fit, the node's height will be increased to
+contain the label. Note also that, if the output format is dot, the
+value given to <B>height</B> will be the final value.
+:href:E:lblString:"";  map,ps,svg
+Synonym for <A HREF=#d:URL>URL</A>.
+:image:N:string:"";
+Gives the name of a file containing an image to be displayed inside
+a node. The image file must be in one of the recognized formats,
+typically JPEG, PNG, GIF or Postscript, and be able to be converted
+into the desired output format.
+<P>
+Unlike with the <A HREF=#d:shapefile>shapefile</A> attribute,
+the image is treated as node
+content rather than the entire node. In particular, an image can
+be contained in a node of any shape, not just a rectangle.
+:imagescale:N:bool/string:false:;
+Attribute controlling how an image fills its
+containing node. In general, the image is given its natural size,
+(cf. <A HREF=#d:dpi>dpi</A>),
+and the node size is made large enough to contain its image, its
+label, its margin, and its peripheries.
+Its width and height will also be at least as large as its
+minimum <A HREF=#d:width>width</A> and <A HREF=#d:height>height</A>.
+If, however, <TT>fixedsize=true</TT>,
+the width and height attributes specify the exact size of the node.
+<P>
+During rendering, in the default case (<TT>imagescale=false</TT>),
+the image retains its natural size.
+If <TT>imagescale=true</TT>,
+the image is uniformly scaled (i.e., its aspect ration is
+preserved) to fit inside the node.
+At least one dimension of the image will be as large as possible
+given the size of the node.
+When <TT>imagescale=width</TT>,
+the width of the image is scaled to fill the node width.
+The corresponding property holds when <TT>imagescale=height</TT>.
+When <TT>imagescale=both</TT>,
+both the height and the width are scaled separately to fill the node.
+<P>
+In all cases, if a dimension of the image is larger than the
+corresponding dimension of the node, that dimension of the
+image is scaled down to fit the node. As with the case of
+expansion, if  <TT>imagescale=true</TT>, width and height are
+scaled uniformly.
+:K:GC:double:0.3:0;  fdp
+Spring constant used in virtual physical model. It roughly corresponds
+to an ideal edge length (in inches), in that increasing K tends to
+increase the distance between nodes.
+Note that the edge attribute <A HREF=#d:len>len</A> can be used to
+override this value for adjacent nodes.
+:label:ENGC:lblString:"\\\\N" (nodes)/"" (otherwise);
+Text label attached to objects.
+If a node's <A HREF=#d:shape>shape</A> is record, then the label can
+have a <A HREF=shapes.html#record>special format</A>
+which describes the record layout.
+:labelURL:E:lblString:"";  map,svg
+If <B>labelURL</B> is defined, this is the link used for the label
+of an edge. This value overrides any <A HREF=#d:URL>URL</A>
+defined for the edge.
+:labelangle:E:double:-25.0:-180.0;
+This, along with <A HREF=#d:labeldistance>labeldistance</A>, determine
+where the
+headlabel (taillabel) are placed with respect to the head (tail)
+in polar coordinates. The origin in the coordinate system is
+the point where the edge touches the node. The ray of 0 degrees
+goes from the origin back along the edge, parallel to the edge
+at the origin.
+<P>
+The angle, in degrees, specifies the rotation from the 0 degree ray,
+with positive angles moving counterclockwise and negative angles
+moving clockwise.
+:labeldistance:E:double:1.0:0.0;
+Multiplicative scaling factor adjusting the distance that
+the headlabel(taillabel) is from the head(tail) node.
+The default distance is 10 points. See <A HREF=#d:labelangle>labelangle</A>
+for more details.
+:labelfloat (E_label_float):E:bool:false;
+If true, allows edge labels to be less constrained in position.
+In particular, it may appear on top of other edges.
+:labelfontcolor:E:color:black;
+Color used for headlabel and taillabel.
+If not set, defaults to edge's fontcolor.
+:labelfontname:E:string:"Times-Roman";
+Font used for headlabel and taillabel.
+If not set, defaults to edge's fontname.
+:labelfontsize:E:double:14.0:1.0;
+Font size, <A HREF=#points>in points</A>, used for headlabel and taillabel.
+If not set, defaults to edge's fontsize.
+:labelhref:E:lblString:"";  map,svg
+Synonym for <A HREF=#d:labelURL>labelURL</A>.
+:labeljust:GC:string:"c";
+Justification for cluster labels. If "r", the label
+is right-justified within bounding rectangle; if "l", left-justified;
+else the label is centered.
+Note that a subgraph inherits attributes from its parent. Thus, if
+the root graph sets <B>labeljust</B> to "l", the subgraph inherits
+this value.
+:labelloc:GC:string:"t"(clusters)/"b"(root graphs);
+Top/bottom placement of graph and cluster labels.
+If the attribute is "t", place label at the top;
+if the attribute is "b", place label at the bottom.
+By default, root
+graph labels go on the bottom and cluster labels go on the top.
+Note that a subgraph inherits attributes from its parent. Thus, if
+the root graph sets <B>labelloc</B> to "b", the subgraph inherits
+this value.
+:labelloc:N:string:"c"(clusters);
+Vertical placement of node label. By default, if the height of a node
+is larger than the height of its label, the label is vertically centered.
+If <TT>labelloc</TT> is set to "t", "c", or "b", the label is aligned
+with the top, centered, or aligned with the bottom of the node, respectively.
+:labeltarget:E:escString:<none>;   map,svg
+If the edge has a <A HREF=#d:URL>URL</A> or <A HREF=#d:labelURL>labelURL</A>
+attribute, this attribute determines which window of the
+browser is used
+for the URL attached to the label.
+Setting it to "_graphviz" will open a new window if it
+doesn't already exist, or reuse it if it does.
+If undefined, the value of the <A HREF=#d:target>target</A> is used.
+:labeltooltip:E:escString:"";    cmap,svg
+Tooltip annotation attached to label of an edge.
+This is used only if the edge has a <A HREF=#d:URL>URL</A>
+or <A HREF=#d:labelURL>labelURL</A> attribute.
+:landscape:G:bool:false;
+If true, the graph is rendered in landscape mode. Synonymous with
+<A HREF=#d:rotate><TT>rotate=90</TT></A> or
+<A HREF=#d:orientation><TT>orientation=landscape</TT></A>.
+:layer:EN:layerRange:"";
+Specifies layers in which the node or edge is present.
+:layers:G:layerList:"";
+Specifies a linearly ordered list of layer names attached to the graph
+The graph is then output in separate layers. Only those components
+belonging to the current output layer appear. For more information,
+see the page <A HREF="http://www.graphviz.org/Documentation/html/layers/">How to use drawing layers (overlays)</A>.
+:layersep:G:string:" :\\\\t";
+Specifies the separator characters used to split the
+<A HREF=#d:layers>layers </A>attribute into a list of layer names.
+:len:E:double:1.0(neato)/0.3(fdp); neato,fdp
+Preferred edge length, in inches.
+:levelsgap:G:double:0.0;  neato
+Specifies strictness of level constraints in neato
+when <TT><A HREF=#d:mode>mode</A>="ipsep" or "hier"</TT>.
+Larger positive values mean stricter constraints, which demand more
+separation between levels. On the other hand, negative values will relax
+the constraints by allowing some overlap between the levels.
+:lhead:E:string:""; dot
+Logical head of an edge. When <A HREF=#d:compound><B>compound</B></A> is true,
+if <B>lhead</B> is defined and is the name of a cluster containing
+the real head,
+the edge is clipped to the boundary of the cluster.
+See <A HREF=#h:undir_note>limitation</A>.
+:lp:EGC:point; write
+Label position, <A HREF=#points>in points</A>.
+The position indicates the center of the label.
+:ltail:E:string:""; dot
+Logical tail of an edge. When <A HREF=#d:compound><B>compound</B></A> is true,
+if <B>ltail</B> is defined and is the name of a cluster
+containing the real tail,
+the edge is clipped to the boundary of the cluster.
+See <A HREF=#h:undir_note>limitation</A>.
+:margin:NG:double/pointf:<device-dependent>;
+For graphs, this sets x and y margins of canvas, in inches. If the margin
+is a single double, both margins are set equal to the given value.
+<P>
+Note that the margin is not part of the drawing but just empty space
+left around the drawing. It basically corresponds to a translation of
+drawing, as would be necessary to center a drawing on a page. Nothing
+is actually drawn in the margin. To actually extend the background of
+a drawing, see the <A HREF=#d:pad>pad</A> attribute.
+<P>
+For nodes, this attribute specifies space left around the node's label.
+By default, the value is <TT>0.11,0.055</TT>.
+:maxiter:G:int:100 \\* # nodes(mode == KK)/200(mode == major)/600(fdp);  neato,fdp
+Sets the number of iterations used.
+:mclimit:G:double:1.0;  dot
+Multiplicative scale factor used to alter the MinQuit (default = 8)
+and MaxIter (default = 24) parameters used during crossing
+minimization. These correspond to the
+number of tries without improvement before quitting and the
+maximum number of iterations in each pass.
+:mindist:G:double:1.0:0.0;  circo
+Specifies the minimum separation between all nodes.
+:minlen:E:int:1:0;  dot
+Minimum edge length (rank difference between head and tail).
+:mode:G:string:"major";  neato
+Technique for optimizing the layout. If <B>mode</B> is <TT>"major"</TT>,
+neato uses stress majorization. If <B>mode</B> is <TT>"KK"</TT>,
+neato uses a version of the gradient descent method. The only advantage
+to the latter technique is that it is sometimes appreciably faster for
+small (number of nodes < 100) graphs. A significant disadvantage is that
+it may cycle.
+<P>
+There are two new, experimental modes in neato, "hier", which adds a top-down
+directionality similar to the layout used in dot, and "ipsep", which
+allows the graph to specify minimum vertical and horizontal distances
+between nodes. (See the <A HREF=#d:sep>sep</A> attribute.)
+:model:G:string:"shortpath";  neato
+This value specifies how the distance matrix is computed for the input
+graph. The distance matrix specifies the ideal distance between every
+pair of nodes. neato attemps to find a layout which best achieves
+these distances. By default, it uses the length of the shortest path,
+where the length of each edge is given by its <A HREF=#d:len>len</A>
+attribute. If <B>model</B> is <TT>"circuit"</TT>, neato uses the
+circuit resistance
+model to compute the distances. This tends to emphasize clusters. If
+<B>model</B> is <TT>"subset"</TT>, neato uses the subset model. This sets the
+edge length to be the number of nodes that are neighbors of exactly one
+of the end points, and then calculates the shortest paths. This helps
+to separate nodes with high degree.
+:mosek:G:bool:false;    neato
+If Graphviz is built with MOSEK defined, mode=ipsep and mosek=true,
+the Mosek software (www.mosek.com) is use to solve the ipsep constraints.
+:nodesep:G:double:0.25:0.02; dot
+Minimum space between two adjacent nodes in the same rank, in inches.
+:nojustify:GCNE:bool:false;
+By default, the justification of multi-line labels is done within the
+largest context that makes sense. Thus, in the label of a polygonal
+node, a left-justified line will align with the left side of the node
+(shifted by the prescribed <A HREF=#d:margin>margin</A>).
+In record nodes, left-justified
+line will line up with the left side of the enclosing column of fields.
+If <B>nojustify</B> is <TT>"true"</TT>, multi-line labels will be justified
+in the context of itself. For example, if the attribute is set,
+the first label line is long, and the second is shorter and left-justified,
+the second will align with the left-most character in the first line,
+regardless of  how large the node might be.
+:normalize:G:bool:false; notdot
+If set, normalize coordinates of final
+layout so that the first point is at the origin, and then rotate the
+layout so that the first edge is horizontal.
+:nslimit/nslimit1:G:double;  dot
+Used to set number of iterations in
+network simplex applications. <B>nslimit</B> is used in
+computing node x coordinates, <B>nslimit1</B> for ranking nodes.
+If defined, # iterations =  <B>nslimit(1)</B> * # nodes;
+otherwise,  # iterations = MAXINT.
+:ordering:G:string:""; dot
+If "out" for a graph G, and n is a node in G, then edges n->* appear
+left-to-right in the same order in which they are defined.
+If "in", the edges *->n appear
+left-to-right in the same order in which they are defined for all
+nodes n.
+:orientation:N:double:0.0:360.0;
+Angle, in degrees, used to rotate node shapes.
+:orientation:G:string:"";
+If "[lL]*", set graph orientation to landscape
+Used only if <A HREF=#d:rotate><B>rotate</B></A> is not defined.
+:outputorder:G:outputMode:breadthfirst;
+Specify order in which nodes and edges are drawn.
+:overlap:G:string/bool:true;  notdot
+Determines if and how node overlaps should be removed. Nodes are first
+enlarged using the <A HREF=#d:sep><B>sep</B></A> attribute.
+If "true" , overlaps are retained.
+If the value is "scale", overlaps are removed by uniformly scaling in x and y.
+If the value converts to "false", node overlaps are removed by a
+Voronoi-based technique.
+If the value is "scalexy", x and y are separately
+scaled to remove overlaps.
+If the value is "orthoxy" or "orthoyx", overlaps
+are moved by optimizing two constraint problems, one for the x axis and
+one for the y. The suffix indicates which axis is processed first.
+If the value is "ortho", the technique is similar to "orthoxy" except a
+heuristic is used to reduce the bias between the two passes.
+If the value is "ortho_yx", the technique is the same as "ortho", except
+the roles of x and y are reversed.
+The values "portho", "porthoxy", "porthoxy", and "portho_yx" are similar
+to the previous four, except only pseudo-orthogonal ordering is
+enforced.
+<P>
+If the value is "compress", the layout will be scaled down as much as
+possible without introducing any overlaps, obviously assuming there are
+none to begin with.
+<P>
+If the value is "vpsc", overlap removal is similarly to "ortho", except
+quadratic optimization is used to minimize node displacement.
+<P>
+If the layout is done by neato with <A HREF=#d:mode>mode</A>="ipsep",
+then one can use <TT>overlap=ipsep</TT>.
+In this case, the overlap removal constraints are
+incorporated into the layout algorithm itself.
+N.B. At present, this only supports one level of clustering.
+<P>
+Except for fdp, the layouts assume <TT>overlap="true"</TT> as the default.
+Fdp first uses a number of passes using built-in, force-directed technique
+to remove overlaps. Thus, fdp accepts <B>overlap</B> with an integer
+prefix followed by a colon, specifying the number of tries. If there is
+no prefix, no initial tries will be performed. If there is nothing following
+a colon, none of the above methods will be attempted. By default, fdp
+uses <TT>overlap="9:portho"</TT>. Note that <TT>overlap="true"</TT>,
+<TT>overlap="0:true"</TT> and <TT>overlap="0:"</TT> all turn off all overlap
+removal.
+<P>
+Except for the Voronoi method, all of these transforms preserve the
+orthogonal ordering of the original layout. That is, if the x coordinates
+of two nodes are originally the same, they will remain the same, and if
+the x coordinate of one node is originally less than the x coordinate of
+another, this relation will still hold in the transformed layout. The
+similar properties hold for the y coordinates.
+This is not quite true for the "porth*" cases. For these, orthogonal
+ordering is only preserved among nodes related by an edge.
+<P>
+<B>NOTE: </B>The methods "orthoxy" and "orthoyx" are still evolving. The
+semantics of these may change, or these methods may disappear altogether.
+:pack:G:bool/int:false; notdot
+This is true if the value of pack is "true" (case-insensitive) or a
+non-negative integer. If true, each connected component of the graph is
+laid out separately, and then the graphs are packed tightly.
+If pack has an integral value, this is used as the size,
+in <A HREF=#points>points</A>, of
+a margin around each part; otherwise, a default margin of 8 is used.
+If pack is interpreted as false, the entire graph is laid out together.
+The granularity and method of packing is influenced by the
+<A HREF=#d:packmode>packmode</A> attribute.
+<P>
+For layouts which always do packing, such a twopi, the <B>pack</B>
+attribute is just used to set the margin.
+:packmode:G:packMode:node; notdot
+This indicates the granularity and method used for packing
+(cf. <A HREF=#k:packMode>packMode</A>). Note that defining
+<B>packmode</B> will automatically turn on packing as though one had
+set <B>pack=true</B>.
+:pad:G:double/pointf:0.0555 (4 points);
+The pad attribute specifies how much, in inches, to extend the
+drawing area around the minimal area needed to draw the graph.
+If the pad is a single double, both the x and y pad values are set
+equal to the given value. This area is part of the
+drawing and will be filled with the background color, if appropriate.
+<P>
+Normally, a small pad is used for aesthetic reasons, especially when
+a background color is used, to avoid having nodes and edges abutting
+the boundary of the drawn region.
+:page:G:pointf;
+Width and height of output pages, in inches. If this is set and is
+smaller than the size of the layout, a rectangular array of pages of
+the specified page size is overlaid on the layout, with origins
+aligned in the lower-left corner, thereby partitioning the layout
+into pages. The pages are then produced one at a time, in
+<A HREF=#d:pagedir>pagedir</A> order.
+<P>
+At present, this only works for PostScript output. For other types of
+output, one should use another tool to split the output into multiple
+output files. Or use the <A HREF=#d:viewport>viewport</A> to generate
+multiple files.
+:pagedir:G:pagedir:BL;
+If the <A HREF=#d:page>page</A> attribute is set and applicable,
+this attribute specifies the order in which the pages are emitted.
+This is limited to one of the 8 row or column major orders.
+:pencolor:C:color:black;
+Color used to draw the bounding box around a cluster.
+If <B>pencolor</B> is not defined, <A HREF=#d:color><B>color</B></A> is
+used. If this is not defined, <A HREF=#d:bgcolor>bgcolor</A> is used.
+If this is not defined, the default is used.
+<P>
+Note that a cluster inherits the root graph's attributes if defined.
+Thus, if the root graph has defined a <B>pencolor</B>, this will override a
+<B>color</B> or <B>bgcolor</B> attribute set for the cluster.
+:penwidth:CNE:double:1.0:0.0;
+Specifies the width of the pen, in points, used to draw lines and curves,
+including the boundaries of edges and clusters. The value is inherited
+by subclusters.
+It has no effect on text.
+<P>
+Previous to 31 January 2008, the effect of <TT>penwidth=<I>W</I></TT>
+was achieved by including <TT>setlinewidth(<I>W</I>)</TT>
+as part of a <A HREF=#d:style><TT>style</TT></A> specification.
+If both are used, <TT>penwidth</TT> will be used.
+:peripheries:NC:int:shape default(nodes)/1(clusters):0;
+Set number of peripheries used in polygonal shapes and cluster
+boundaries. Note that
+<A HREF=shapes.html#epsf>user-defined shapes</A> are treated as a
+form of box shape, so the default
+peripheries value is 1 and the user-defined shape will be drawn in
+a bounding rectangle. Setting <TT>peripheries=0</TT> will turn this off.
+Also, 1 is the maximum peripheries value for clusters.
+:pin:N:bool:false;   neato,fdp
+If true and the node has a pos attribute on input, neato prevents the
+node from moving from the input position. This property can also be specified
+in the pos attribute itself (cf. the <A HREF=#d:point>point</A> type).
+<P>
+<B>Note:</B> Due to an artifact of the implementation, final coordinates
+are translated to the origin. Thus, if you look at the output coordinates
+given in the (x)dot or plain format, pinned nodes will not have the same
+output coordinates as were given on input. If this is important, a
+simple workaround is to maintain the coordinates of a pinned node. The vector
+difference between the old and new coordinates will give the translation,
+which can then be subtracted from all of the appropriate coordinates.
+:pos:EN:point/splineType;
+Position of node, or spline control points.
+For nodes, the position indicates the center of the node.
+On output, the coordinates are in <A HREF=#points>points</A>.
+<P>
+In neato and fdp, pos can be used to set the initial position of a node.
+By default, the coordinates are assumed to be in inches. However, the
+<A HREF=command.html#d:s>-s</A> command line flag can be used to specify
+different units.
+<P>
+When the <A HREF=command.html#d:n>-n</A> command line flag is used with
+neato, it is assumed the positions have been set by one of the layout
+programs, and are therefore in points. Thus, <TT>neato -n</TT> can accept
+input correctly without requiring a <TT>-s</TT> flag and, in fact,
+ignores any such flag.
+:quantum:G:double:0.0:0.0;
+If <B>quantum</B> > 0.0, node label dimensions
+will be rounded to integral multiples of the quantum.
+:rank:S:rankType:; dot
+Rank constraints on the nodes in a subgraph.
+If <B>rank</B>="same", all nodes are placed on the same rank.
+If <B>rank</B>="min", all nodes are placed on the minimum rank.
+If <B>rank</B>="source", all nodes are placed on the minimum rank, and
+the only nodes on the minimum rank belong to some subgraph whose
+rank attribute is "source" or "min".
+Analogous criteria hold for <B>rank</B>="max" and <B>rank</B>="sink".
+(Note: the
+minimum rank is topmost or leftmost, and the maximum rank is bottommost
+or rightmost.)
+:rankdir:G:rankdir:TB; dot
+Sets direction of graph layout. For example, if <B>rankdir</B>="LR",
+and barring cycles, an edge <CODE>T -> H;</CODE> will go
+from left to right. By default, graphs are laid out from top to bottom.
+<P>
+This attribute also has a side-effect in determining how record nodes
+are interpreted. See <A HREF="shapes.html#record">record shapes</A>.
+:ranksep:G:double:0.5(dot)/1.0(twopi):0.02;   dot,twopi
+In dot, this gives the desired rank separation, in inches. This is
+the minimum vertical distance between the bottom of the nodes in one
+rank and the tops of nodes in the next. If the value
+contains "equally", the centers of all ranks are spaced equally apart.
+Note that both
+settings are possible, e.g., ranksep = "1.2 equally".
+In twopi, specifies radial separation of concentric circles.
+:ratio:G:double/string;
+Sets the aspect ratio (drawing height/drawing width) for the drawing.
+Note that this is adjusted before
+the <A HREF=#d:size><B>size</B></A> attribute constraints are enforced.
+<P>
+If <B>ratio</B> is numeric, it is taken as the desired aspect ratio.
+Then, if the actual aspect ratio is less than the desired ratio,
+the drawing height is scaled up to achieve the
+desired ratio; if the actual ratio is greater than that desired ratio,
+the drawing width is scaled up.
+<P>
+If <B>ratio</B> = "fill" and the <A HREF=#d:size><B>size</B></A>
+attribute is set, node positions are scaled, separately in both x
+and y, so that the final drawing exactly fills the specified size.
+<P>
+If <B>ratio</B> = "compress" and the <A HREF=#d:size><B>size</B></A>
+attribute is set, dot attempts to compress the initial layout to fit
+in the given size. This achieves a tighter packing of nodes but
+reduces the balance and symmetry. This feature only works in dot.
+<P>
+If <B>ratio</B> = "expand", the <A HREF=#d:size><B>size</B></A>
+attribute is set, and both the width and the height of the graph are
+less than the value in  <A HREF=#d:size><B>size</B></A>, node positions are scaled
+uniformly until at least
+one dimension fits <A HREF=#d:size><B>size</B></A> exactly.
+Note that this is distinct from using <A HREF=#d:size><B>size</B></A> as the
+desired size, as here the drawing is expanded before edges are generated and
+all node and text sizes remain unchanged.
+<P>
+If <B>ratio</B> = "auto", the <A HREF=#d:page><B>page</B></A>
+attribute is set and the graph cannot be drawn on a single page,
+then <A HREF=#d:size><B>size</B></A> is set to an ``ideal'' value.
+In particular, the size in a given dimension will be the smallest integral
+multiple of the page size in that dimension which is at least half the
+current size. The two dimensions are then scaled independently to the
+new size. This feature only works in dot.
+:rects:N:rect; write
+Rectangles for fields of records, <A HREF=#points>in points</A>.
+:regular:N:bool:false;
+If true, force polygon to be regular.
+:remincross:G:bool:false;  dot
+If true and there are multiple clusters, run cross
+minimization a second time.
+:resolution:G:double:96.0/0.0;  bitmap,svg
+This is a synonym for the <A HREF=#d:dpi>dpi</A> attribute.
+:root:GN:string/bool:""(graphs)/false(nodes);  twopi,circo
+This specifies nodes to be used as the center of the
+layout and the root of the generated spanning tree. As a graph attribute,
+this gives the name of the node. As a node attribute (circo only), it
+specifies that the node should be used as a central node. In twopi,
+this will actually be the central node. In circo, the block containing
+the node will be central in the drawing of its connected component.
+If not defined,
+twopi will pick a most central node, and circo will pick a random node.
+:rotate:G:int:0;
+If 90, set drawing orientation to landscape.
+:samehead:E:string:"";  dot
+Edges with the same head and the same <B>samehead</B> value are aimed
+at the same point on the head.
+See <A HREF=#h:undir_note>limitation</A>.
+:sametail:E:string:"";  dot
+Edges with the same tail and the same <B>sametail</B> value are aimed
+at the same point on the tail.
+See <A HREF=#h:undir_note>limitation</A>.
+:samplepoints:N:int:8(output)/20(overlap and image maps);
+If the input graph defines the <A HREF=#d:vertices><B>vertices</B></A>
+attribute, and output is dot or xdot, this gives
+the number of points used for a node whose shape is a circle or ellipse.
+It plays the same role in neato, when adjusting the layout to avoid
+overlapping nodes, and in image maps.
+:searchsize:G:int:30; dot
+During network simplex, maximum number of edges with negative cut values
+to search when looking for one with minimum cut value.
+:sep:G:double/pointf:+4; notdot
+Specifies margin to leave around nodes when removing node overlap.
+This guarantees a minimal non-zero distance between nodes.
+<P>
+If the attribute begins with a plus sign '+', an additive margin is
+specified. That is, "+w,h" causes the node's bounding box to be increased 
+by w
+points on the left and right sides, and by h points on the top and bottom.
+Without a plus sign, the node is scaled by 1 + w in the x coordinate
+and 1 + h in the y coordinate.
+<P>
+If only a single number is given, this is used for both dimensions.
+<P>
+If unset but <A HREF=#d:esep>esep</A> is defined, the <tt>sep</tt> values
+will be set to the <tt>esep</tt> values divided by <tt>0.8</tt>. 
+If <tt>esep</tt> is unset, the default value is used.
+:shape:N:shape:ellipse;
+Set the shape of a node.
+:shapefile:N:string:"";
+(Deprecated) If defined, shapefile specifies a file containing user-supplied node content.
+The <A HREF=#d:shape><B>shape</B></A> of the node is set to box.
+The image in the shapefile must be
+rectangular. The image formats supported as well as the precise semantics of
+how the file is used depends on the
+<A HREF="http://www.graphviz.org/doc/info/output.html">output format</A>.  For further details, see
+<A HREF=http://www.graphviz.org/Documentation/html/shapehowto.html#ext_image>External PostScript files</A>.
+<P>
+There is one exception to this usage.
+If <B>shape</B> is set to "epsf", shapefile gives
+a filename containing a definition of the node in PostScript.
+The graphics defined must be contain all of the
+node content, including any desired boundaries.
+For further details, see
+<A HREF=http://www.graphviz.org/Documentation/html/shapehowto.html#ext_ps>
+External PostScript files</A>.
+:showboxes:ENG:int:0:0; dot
+Print guide boxes in PostScript at the beginning of
+routesplines if 1, or at the end if 2. (Debugging)
+:sides:N:int:4:0;
+Number of sides if <A HREF=#d:shape><B>shape</B></A>=polygon.
+:size:G:pointf;
+Maximum width and height of drawing, in inches.
+If defined and the drawing is too large, the drawing is uniformly
+scaled down so that it fits within the given size.
+<P>
+If <TT>size</TT> ends in an exclamation point (<TT>!</TT>),
+then it is taken to be
+the desired size. In this case, if both dimensions of the drawing are
+less than <TT>size</TT>, the drawing is scaled up uniformly until at
+least one dimension equals its dimension in <TT>size</TT>.
+<P>
+Note that there is some interaction between the <B>size</B> and
+<A HREF=#d:ratio><B>ratio</B></A> attributes.
+:skew:N:double:0.0:-100.0;
+Skew factor for <A HREF=#d:shape><B>shape</B></A>=polygon. Positive values
+skew top of polygon to right; negative to left.
+:splines:G:bool/string;
+Controls how, and if, edges are represented. If true, edges are drawn as
+splines routed around nodes; if false, edges are drawn as line segments.
+If set to "", no edges are drawn at all.
+<P>
+(1 March 2007) The values <TT>line</TT> and <TT>spline</TT> can be
+used as synonyms for <TT>false</TT> and <TT>true</TT>, respectively.
+In addition, the value <TT>polyline</TT> specifies that edges should be
+drawn as polylines.
+<P>
+By default, the attribute is unset. How this is interpreted depends on
+the layout. For dot, the default is to draw edges as splines. For all
+other layouts, the default is to draw edges as line segments. Note that
+for these latter layouts, if <TT>splines="true"</TT>, this
+requires non-overlapping nodes (cf. <A HREF=#d:overlap><B>overlap</B></A>).
+If fdp is used for layout and <TT>splines="compound"</TT>, then the edges are
+drawn to avoid clusters as well as nodes.
+:start:G:startType:""; neato,fdp
+Parameter used to determine the initial layout of nodes. If unset, the
+nodes are randomly placed in a unit square with
+the same seed is always used for the random number generator, so the
+initial placement is repeatable.
+:style:ENC:style:;
+Set style for node or edge. For cluster subgraph, if "filled", the
+cluster box's background is filled.
+:stylesheet:G:string:"";  svg
+A URL or pathname specifying an XML style sheet, used in SVG output.
+:tailURL:E:lblString:""; map,svg
+If <B>tailURL</B> is defined, it is
+output as part of the tail label of the edge.
+Also, this value is used near the tail node, overriding any
+<A HREF=#d:URL>URL</A> value.
+See <A HREF=#h:undir_note>limitation</A>.
+:tailclip:E:bool:true;
+If true, the tail of an edge is clipped to the boundary of the tail node;
+otherwise, the end of the edge goes to the center of the node, or the
+center of a port, if applicable.
+:tailhref:E:lblString:"";  map,svg
+Synonym for <A HREF=#d:tailURL>tailURL</A>.
+:taillabel:E:lblString:"";
+Text label to be placed near tail of edge.
+See <A HREF=#h:undir_note>limitation</A>.
+:tailport:E:portPos:center;
+Indicates where on the tail node to attach the tail of the edge.
+See <A HREF=#h:undir_note>limitation</A>.
+:tailtarget:E:escString:<none>;   map,svg
+If the edge has a <A HREF=#d:tailURL>tailURL</A>,
+this attribute determines which window of the
+browser is used
+for the URL. Setting it to "_graphviz" will open a new window if it
+doesn't already exist, or reuse it if it does.
+If undefined, the value of the <A HREF=#d:target>target</A> is used.
+:tailtooltip:E:escString:"";    cmap,svg
+Tooltip annotation attached to the tail of an edge. This is used only
+if the edge has a <A HREF=#d:tailURL>tailURL</A> attribute.
+:target:ENGC:escString/string:<none>;   map,svg
+If the object has a URL, this attribute determines which window
+of the browser is used for the URL.
+See <A HREF="http://www.w3.org/TR/html401/present/frames.html#adef-target">W3C documentation</A>.
+:tooltip:NEC:escString:"";    cmap,svg
+Tooltip annotation attached to the node or edge. If unset, Graphviz
+will use the object's <A HREF=#d:label>label</A> if defined.
+Note that if the label is a record specification or an HTML-like
+label, the resulting tooltip may be unhelpful. In this case, if
+tooltips will be generated, the user should set a <TT>tooltip</TT>
+attribute explicitly.
+#toplabel:N:string:"";
+#  Additional label near top of nodes of shape M*.
+:truecolor:G:bool:;  bitmap
+If set explicitly to true or false, the value determines whether or not
+internal bitmap rendering relies on a truecolor color model or uses
+a color palette.
+If the attribute is unset, truecolor is not used
+unless there is a <A HREF=#d:shapefile>shapefile</A> property
+for some node in the graph.
+The output model will use the input model when possible.
+<P>
+Use of color palettes results in less memory usage during creation of the
+bitmaps and smaller output files.
+<P>
+Usually, the only time it is necessary to specify the truetype model
+is if the graph uses more than 256 colors.
+However, if one uses <A HREF=#d:bgcolor>bgcolor</A>=transparent with
+a color palette, font
+antialiasing can show up as a fuzzy white area around characters.
+Using <B>truecolor</B>=true avoids this problem.
+:vertices:N:pointfList; write
+If the input graph defines this attribute, the node is polygonal,
+and output is dot or xdot, this attribute provides the
+coordinates of the vertices of the node's polygon, in inches.
+If the node is an ellipse or circle, the
+<A HREF=#d:samplepoints>samplepoints</A> attribute affects
+the output.
+:viewport:G:viewPort:""; ps,map,cmap,bitmap
+Clipping window on final drawing.
+:voro_margin:G:double:0.05:0.0; notdot
+Factor to scale up drawing to allow margin for expansion in
+Voronoi technique. dim' = (1+2*margin)*dim.
+#voro_pmargin:G:double; neato
+#  Obsolete, replaced by sep
+#w:E:double:1.0; neato
+#  Redundant definition of weight in neato, cf. bug 9.
+:weight:E:double:1.0:0(dot)/1(neato);
+Weight of edge. In dot, the heavier the weight, the shorter,
+straighter and more vertical the edge is. In neato, the heavier the
+weight, the more neato will try to place the end points so that the
+length of the edge is <A HREF=#d:len>len</A>.
+:width:N:double:0.75:0.01;
+Width of node, in inches. This is taken as the initial, minimum width
+of the node. If <A HREF=#d:fixedsize><B>fixedsize</B></A> is true, this
+will be the final width of the node. Otherwise, if the node label
+requires more width to fit, the node's width will be increased to
+contain the label. Note also that, if the output format is dot, the
+value given to <B>width</B> will be the final value.
+:z:N:double:0.0:-MAXFLOAT/-1000;
+Provides z coordinate value for 3D layouts and displays. If the
+graph has <A HREF=#d:dim><B>dim</B></A> set to 3 (or more),
+neato will use a node's <B>z</B> value
+for the z coordinate of its initial position if
+its <A HREF=#d:pos><B>pos</B></A> attribute is also defined.
+<P>
+Even if no <B>z</B> values are specified in the input, it is necessary to
+declare a <B>z</B> attribute for nodes, e.g, using <TT>node[z=""]</TT>
+in order to get z values on output.
+Thus, setting <TT>dim=3</TT> but not declaring <B>z</B> will
+cause <TT>neato -Tvrml</TT> to
+layout the graph in 3D but project the layout onto the xy-plane
+for the rendering. If the <B>z</B> attribute is declared, the final rendering
+will be in 3D.