Six and Tollis, GD '99 and ALENEX '99, and
Kaufmann and Wiese, GD '02.)
The tool identifies biconnected components and draws the nodes of
-the component on a circle. The block-cutpoint tree
+the component on a circle. The block\(hycutpoint tree
is then laid out using a recursive radial algorithm. Edge
crossings within a circle are minimized by placing as many edges on
the circle's perimeter as possible.
In particular, if the component is outerplanar, the component will
have a planar layout.
.PP
-If a node belongs to multiple non-trivial biconnected components,
+If a node belongs to multiple non\(hytrivial biconnected components,
the layout puts the node in one of them. By default, this is the first
-non-trivial component found in the search from the root component.
+non\(hytrivial component found in the search from the root component.
.PP
.I fdp
draws undirected graphs using a ``spring'' model. It relies on a
-force-directed approach in the spirit of Fruchterman and Reingold
-(cf. Software-Practice & Experience 21(11), 1991, pp. 1129-1164).
+force\(hydirected approach in the spirit of Fruchterman and Reingold
+(cf. Software\(hyPractice & Experience 21(11), 1991, pp. 1129\(hy1164).
.SH OUTPUT FORMATS
Dot uses an extensible plugin mechanism for its output renderers,
so to see what output formats your installation of dot supports
-you can use ``dot -Txxx'' (where xxx is an unlikely format)
+you can use ``dot \-Txxx'' (where xxx is an unlikely format)
and check the warning message.
Also, The plugin mechanism supports multiple implementations
of the output formats.
-To see what variants are available, use, for example: ``dot -Tpng:''
-and to force a particular variant, use, for example: ``dot -Tpng:gd''
+To see what variants are available, use, for example: ``dot \-Tpng:''
+and to force a particular variant, use, for example: ``dot \-Tpng:gd''
.P
Traditionally, dot supports the following:
-\fB-Tps\fP (PostScript),
-\fB-Tsvg\fP \fB-Tsvgz\fP (Structured Vector Graphics),
-\fB-Tfig\fP (XFIG graphics),
-\fB-Tmif\fP (FrameMaker graphics),
-\fB-Thpgl\fP (HP pen plotters), and \fB-Tpcl\fP (Laserjet printers),
-\fB-Tpng\fP \fB-Tgif\fP (bitmap graphics),
-\fB-Tdia\fP (GTK+ based diagrams),
-\fB-Timap\fP (imagemap files for httpd servers for each node or edge
-that has a non-null "href" attribute.),
-\fB-Tcmapx\fP (client-side imagemap for use in html and xhtml).
-Additional less common or more special-purpose output formats
+\fB\-Tps\fP (PostScript),
+\fB\-Tsvg\fP \fB\-Tsvgz\fP (Structured Vector Graphics),
+\fB\-Tfig\fP (XFIG graphics),
+\fB\-Tmif\fP (FrameMaker graphics),
+\fB\-Thpgl\fP (HP pen plotters), and \fB\-Tpcl\fP (Laserjet printers),
+\fB\-Tpng\fP \fB\-Tgif\fP (bitmap graphics),
+\fB\-Tdia\fP (GTK+ based diagrams),
+\fB\-Timap\fP (imagemap files for httpd servers for each node or edge
+that has a non(hynull "href" attribute.),
+\fB\-Tcmapx\fP (client\(hyside imagemap for use in html and xhtml).
+Additional less common or more special\(hypurpose output formats
can be found at http://www.graphviz.org/cvs/doc/info/output.html.)
.SH GRAPH FILE LANGUAGE
Here is a synopsis of the graph file language, traditionally using the extension \fB.dot\fR, for graphs:
.PP
-[\fBstrict\fR] (\fBgraph\fR|\fBdigraph\fR) \fIname\fP { \fIstatement-list\fP }\fR
+[\fBstrict\fR] (\fBgraph\fR|\fBdigraph\fR) \fIname\fP { \fIstatement\(hylist\fP }\fR
.br
-Is the top level graph. If the graph is \fBstrict\fR then multiple edges are not allowed between the same pairs of nodes. If it is a directed graph, indicated by \fBdigraph\fR, then the \fIedgeop\fR must be "->". If it is an undirected \fBgraph\fR then the \fIedgeop\fR must be "--".
+Is the top level graph. If the graph is \fBstrict\fR then multiple edges are
+not allowed between the same pairs of nodes.
+If it is a directed graph, indicated by \fBdigraph\fR,
+then the \fIedgeop\fR must be "\->". If it is an undirected \fBgraph\fR
+then the \fIedgeop\fR must be "\-\-".
Statements may be:
.PP
\fIname\fB=\fIval\fB;\fR
their attributes according to the optional list.
Creates nodes as necessary.
.PP
-[\fBsubgraph \fIname\fB] { \fIstatement-list \fB}\fR
+[\fBsubgraph \fIname\fB] { \fIstatement\(hylist \fB}\fR
.br
Creates a subgraph. Subgraphs may be used in place
of \fBn0\fP, ..., \fBnn\fP in the above statements to create edges.
[\fBsubgraph \fIname\fR] is optional;
if missing, the subgraph is assigned an internal name.
.PP
-Comments may be /*C-like*/ or //C++-like.
+Comments may be /*C\(hylike*/ or //C++\(hylike.
.PP
-Attribute names and values are ordinary (C-style) strings.
+Attribute names and values are ordinary (C\(hystyle) strings.
The following sections describe attributes that control graph layout.
.SH "GRAPH ATTRIBUTES"
.PP
\fBranksep=\fIf\fR sets the minimum separation between ranks.
.PP
-\fBordering=out\fR constrains order of out-edges in a subgraph
+\fBordering=out\fR constrains order of out\(hyedges in a subgraph
according to their file sequence.
.PP
-\fBrankdir=LR|RL|BT\fR requests a left-to-right, right-to-left, or bottom-to-top, drawing.
+\fBrankdir=LR|RL|BT\fR requests a left\(hyto\(hyright, right\(hyto\(hyleft, or bottom\(hyto\(hytop, drawing.
.PP
\fBpagedir=\fR[TBLR][TBLR] sets the major and minor order of pagination.
.PP
\fBrotate=90\fR sets landscape mode.
(\fBorientation=land\fR is backward compatible but obsolete.)
.PP
-\fBcenter=\fIn\fR a non-zero value centers the drawing on the page.
+\fBcenter=\fIn\fR a non\(hyzero value centers the drawing on the page.
.PP
\fBnslimit=\fIf\fR or \fBmclimit=\fIf\fR adjusts the bound on the
number of network simplex or mincross iterations by the given ratio.
\fBlayers="\fIid:id:id:id\fR" is a sequence of layer identifiers for
overlay diagrams. The PostScript array variable \fIlayercolorseq\fR
sets the assignment of colors to layers. The least index is 1 and
-each element must be a 3-element array to be interpreted as a color coordinate.
+each element must be a 3\(hyelement array to be interpreted as a color coordinate.
.PP
\fBcolor=\fIcolorvalue\fR sets foreground color (\fBbgcolor\fP for background).
.PP
\fBURL=\fI"url"\fR ("URL" is a synonym for "href".)
.PP
\fBstylesheet=\fI"file.css"\fR includes a reference to a stylesheet
-in -Tsvg and -Tsvgz outputs. Ignored by other formats.
+in \-Tsvg and \-Tsvgz outputs. Ignored by other formats.
.PP
-\fB(neato-specific attributes)\fR
+\fB(neato\(hyspecific attributes)\fR
.br
\fBstart=\fIval\fR. Requests random initial placement and seeds
the random number generator. If \fIval\fP is not an integer,
drawn as splines if nodes don't overlap. The default is \fIfalse\fR.
.PP
-\fB(twopi-specific attributes)\fR
+\fB(twopi\(hyspecific attributes)\fR
.br
\fBroot=\fIctr\fR. This specifies the node to be used as the center of
the layout. If not specified, \fItwopi\fP will randomly pick one of the
This is also the default style.
.PP
-\fB(circo-specific attributes)\fR
+\fB(circo\(hyspecific attributes)\fR
.br
\fBroot=\fInodename\fR. Specifies the name of a node occurring in the
root block. If the graph is disconnected, the \fBroot\fP node attribute
This is also the default style.
.PP
-\fB(fdp-specific attributes)\fR
+\fB(fdp\(hyspecific attributes)\fR
.br
\fBK=\fIval\fR. Sets the default ideal node separation
in the layout.
\fBstart=\fIval\fR. Adjusts the random initial placement of nodes
with no specified position. If \fIval\fP is is an integer,
it is used as the seed for the random number generator.
-If \fIval\fP is not an integer, a random system-generated integer,
+If \fIval\fP is not an integer, a random system\(hygenerated integer,
such as the process ID or current time, is used as the seed.
.PP
\fBsplines=\fIval\fR. If \fIval\fR is "true", edges are drawn
.PP
The following attributes apply only to polygon shape nodes:
.PP
-\fBregular=\fIn\fR if \fIn\fR is non-zero then the polygon is made
+\fBregular=\fIn\fR if \fIn\fR is non\(hyzero then the polygon is made
regular, i.e. symmetric about the x and y axis, otherwise the
polygon takes on the aspect ratio of the label.
\fIbuiltin_polygons\fR that are not already regular are made regular
.PP
\fBdistortion=\fIf\fR sets the amount of broadening of the top and
narrowing of the bottom of the polygon (relative to its orientation).
-Floating point values between -1 and +1 are suggested.
+Floating point values between \-1 and +1 are suggested.
This attribute is ignored by \fIbuiltin_polygons\fR.
.PP
-\fBskew=\fIf\fR sets the amount of right-displacement of the top and
-left-displacement of the bottom of the polygon (relative to its
+\fBskew=\fIf\fR sets the amount of right\(hydisplacement of the top and
+left\(hydisplacement of the bottom of the polygon (relative to its
orientation).
-Floating point values between -1 and +1 are suggested.
+Floating point values between \-1 and +1 are suggested.
This attribute is ignored by \fIbuiltin_polygons\fR.
.PP
\fBhref=\fI"url"\fR sets the url for the node in imagemap, PostScript and SVG
.PP
\fBURL=\fI"url"\fR ("URL" is a synonym for "href".)
.PP
-\fBtarget=\fI"target"\fR is a target string for client-side imagemaps
+\fBtarget=\fI"target"\fR is a target string for client\(hyside imagemaps
and SVG, effective when nodes have a URL.
The target string is used to determine which window of the browser is used
for the URL. Setting it to "_graphviz" will open a new window if it doesn't
The substring '\\N' is substituted in the same manner as
for the node label attribute.
.PP
-\fBtooltip=\fI"tooltip"\fR is a tooltip string for client-side imagemaps
+\fBtooltip=\fI"tooltip"\fR is a tooltip string for client\(hyside imagemaps
and SVG, effective when nodes have a URL. The tooltip string defaults to be the
same as the label string, but this attribute permits nodes without
labels to still have tooltips thus permitting denser graphs.
for the node label attribute.
.PP
-\fB(circo-specific attributes)\fR
+\fB(circo\(hyspecific attributes)\fR
.br
\fBroot=\fItrue/false\fR. This specifies that the block containing the given
node be treated as the root of the spanning tree in the layout.
.PP
-\fB(fdp-specific attributes)\fR
+\fB(fdp\(hyspecific attributes)\fR
.br
\fBpin=\fIval\fR. If \fIval\fR is "true", the node will remain at
its initial position.
\\\|n, \\\|l, or \\\|r for centered, left, or right justified lines.
If the substring '\\T' is found in a label it will be replaced by the tail_node name.
If the substring '\\H' is found in a label it will be replaced by the head_node name.
-If the substring '\\E' value is found in a label it will be replaced by: tail_node_name->head_node_name
-or by: tail_node_name--head_node_name for undirected graphs.
+If the substring '\\E' value is found in a label it will be replaced by: tail_node_name\->head_node_name
+or by: tail_node_name\-\-head_node_name for undirected graphs.
.PP
\fBfontsize=\fIn\fR sets the label type size to \fIn\fP points.
.PP
.PP
\fBURL=\fI"url"\fR ("URL" is a synonym for "href".)
.PP
-\fBtarget=\fI"target"\fR is a target string for client-side imagemaps
+\fBtarget=\fI"target"\fR is a target string for client\(hyside imagemaps
and SVG, effective when edges have a URL.
If the target string is empty, the default,
then no target attribute is included in the output.
The substrings '\\T', '\\H', and '\\E' are substituted in the same manner as
for the edge label attribute.
.PP
-\fBtooltip=\fI"tooltip"\fR is a tooltip string for client-side imagemaps
+\fBtooltip=\fI"tooltip"\fR is a tooltip string for client\(hyside imagemaps
effective when edges have a URL. The tooltip string defaults to be the
same as the edge label string.
The substrings '\\T', '\\H', and '\\E' are substituted in the same manner as
.PP
\fBheadURL=\fI"url"\fR ("headURL" is a synonym for "headhref".)
.PP
-\fBheadtarget=\fI"headtarget"\fR is a target string for client-side imagemaps
+\fBheadtarget=\fI"headtarget"\fR is a target string for client\(hyside imagemaps
and SVG, effective when edge heads have a URL.
The headtarget string is used to determine which window of the browser is used
for the URL. If the headtarget string is empty, the default,
The substrings '\\T', '\\H', and '\\E' are substituted in the same manner as
for the edge label attribute.
.PP
-\fBheadtooltip=\fI"tooltip"\fR is a tooltip string for client-side imagemaps
+\fBheadtooltip=\fI"tooltip"\fR is a tooltip string for client\(hyside imagemaps
effective when head ports have a URL. The tooltip string defaults to be the
same as the headlabel string.
The substrings '\\T', '\\H', and '\\E' are substituted in the same manner as
.PP
\fBtailURL=\fI"url"\fR ("tailURL" is a synonym for "tailhref".)
.PP
-\fBtailtarget=\fI"tailtarget"\fR is a target string for client-side imagemaps
+\fBtailtarget=\fI"tailtarget"\fR is a target string for client\(hyside imagemaps
and SVG, effective when edge tails have a URL.
The tailtarget string is used to determine which window of the browser is used
for the URL. If the tailtarget string is empty, the default,
The substrings '\\T', '\\H', and '\\E' are substituted in the same manner as
for the edge label attribute.
.PP
-\fBtailtooltip=\fI"tooltip"\fR is a tooltip string for client-side imagemaps
+\fBtailtooltip=\fI"tooltip"\fR is a tooltip string for client\(hyside imagemaps
effective when tail ports have a URL. The tooltip string defaults to be the
same as the taillabel string.
The substrings '\\T', '\\H', and '\\E' are substituted in the same manner as
The empty string means no layers (invisible).
.PP
-\fB(neato-specific attributes)\fR
+\fB(neato\(hyspecific attributes)\fR
.br
\fBw=\fIf\fR sets the weight (spring constant) of an edge
to the given floating point value. The default is 1.0;
\fBlen=\fIf\fR sets the optimal length of an edge.
The default is 1.0.
.PP
-\fB(fdp-specific attributes)\fR
+\fB(fdp\(hyspecific attributes)\fR
.br
\fBweight=\fIf\fR sets the weight of an edge
to the given floating point value. The default is 1.0;
\fB\-N\fP sets a default node attribute.
.br
\fB\-E\fP sets a default edge attribute.
-Example: \fB\-Gsize="7,8" -Nshape=box -Efontsize=8\fR
+Example: \fB\-Gsize="7,8" \-Nshape=box \-Efontsize=8\fR
.PP
\fB\-l\fIfile\fR loads custom PostScript library files.
Usually these define custom shapes or styles.
-If \fB-l\fP is given by itself, the standard library is omitted.
+If \fB\-l\fP is given by itself, the standard library is omitted.
.PP
\fB\-T\fIlang\fR sets the output language as described above.
.PP
-\fB-n\fR[\fB1\fR|\fB2\fR] (no-op)
+\fB\-n\fR[\fB1\fR|\fB2\fR] (no\(hyop)
If set, neato assumes nodes have already been positioned and all
nodes have a pos attribute giving the positions.
-It then performs an optional adjustment to remove node-node overlap,
+It then performs an optional adjustment to remove node\(hynode overlap,
depending on the value of the overlap attribute,
computes the edge layouts, depending on the value of the \fBsplines\fR attribute,
and emits the graph in the appropriate format.
.nf
num = 1
.fi
-Equivalent to -n.
+Equivalent to \-n.
.nf
num > 1
.fi
Use node positions as specified,
-with no adjustment to remove node-node overlaps,
+with no adjustment to remove node\(hynode overlaps,
and use any edge layouts already specified by the pos attribute.
neato computes an edge layout for any edge that does not have a pos attribute.
As usual, edge layout is guided by the \fBsplines\fR attribute.
\fB\-?\fP prints the usage and exits.
.SH "EXAMPLES"
.nf
-\f5digraph test123 {
+digraph test123 {
a \-> b \-> c;
a \-> {x y};
b [shape=box];
c [label="hello\\\|nworld",color=blue,fontsize=24,
- fontname="Palatino-Italic",fontcolor=red,style=filled];
+ fontname="Palatino\-Italic",fontcolor=red,style=filled];
a \-> z [label="hi", weight=100];
- x \-> z [label="multi-line\\\|nlabel"];
+ x \-> z [label="multi\-line\\\|nlabel"];
edge [style=dashed,color=red];
b \-> x;
{rank=same; b x}
-}\fP
+}
.fi
.PP
.nf
-\f5graph test123 {
+graph test123 {
a \-\- b \-\- c;
a \-\- {x y};
x \-\- c [w=10.0];
x \-\- y [w=5.0,len=3];
-}\fP
+}
.fi
.SH "CAVEATS"
Edge splines can overlap unintentionally.
.PP
The Truetype font renderer is from
the Freetype Project (David Turner, Robert Wilhelm, and Werner Lemberg)
-(who can be contacted at freetype-devel@lists.lrz-muenchen.de).
+(who can be contacted at freetype\-devel@lists.lrz\-muenchen.de).
.SH "SEE ALSO"
This man page contains only a small amount of the information related
to the Graphviz layout programs. The most complete information can be
found at http://www.graphviz.org/Documentation.php, especially in the
-on-line reference pages. Most of these documents are also available in the
+on\(hyline reference pages. Most of these documents are also available in the
\fIdoc\fP and \fIdoc/info\fP subtrees in the source and binary distributions.
.PP
dotty(1)
.br
libgraph(3)
.PP
-E. R. Gansner, S. C. North, K. P. Vo, "DAG - A Program to Draw Directed Graphs", Software - Practice and Experience 17(1), 1988, pp. 1047-1062.
+E. R. Gansner, S. C. North, K. P. Vo, "DAG \(hy A Program to Draw Directed Graphs", Software \(hy Practice and Experience 17(1), 1988, pp. 1047\(hy1062.
.br
-E. R. Gansner, E. Koutsofios, S. C. North, K. P. Vo, "A Technique for Drawing Directed Graphs," IEEE Trans. on Soft. Eng. 19(3), 1993, pp. 214-230.
+E. R. Gansner, E. Koutsofios, S. C. North, K. P. Vo, "A Technique for Drawing Directed Graphs," IEEE Trans. on Soft. Eng. 19(3), 1993, pp. 214\(hy230.
.br
S. North and E. Koutsofios, "Applications of graph visualization",
-Graphics Interface 94, pp. 234-245.
+Graphics Interface 94, pp. 234\(hy245.
.br
E. Koutsofios and S. C. North, "Drawing Graphs with dot,"
Available on research.att.com in dist/drawdag/dotguide.ps.Z.
)
.SH SYNOPSIS
.B gvpr
-[\fB-icV?\fP]
+[\fB\-icV?\fP]
[
-.BI -o
+.BI \-o
.I outfile
]
[
-.BI -a
+.BI \-a
.I args
]
[
.I 'prog'
|
-.BI -f
+.BI \-f
.I progfile
]
[
Basically,
.B gvpr
traverses each input graph, denoted by \fB$G\fP, visiting each node and edge,
-matching it with the predicate-action rules supplied in the input program.
+matching it with the predicate\(hyaction rules supplied in the input program.
The rules are evaluated in order.
For each predicate evaluating to true, the corresponding
action is performed.
The following options are supported:
.TP
.BI \-a " args"
-The string \fIargs\fP is split into whitespace-separated tokens,
+The string \fIargs\fP is split into whitespace\(hyseparated tokens,
with the individual tokens
available as strings in the \fBgvpr\fP program
-as \fBARGV[\fI0\fP],...,ARGV[ARGC-1]\fR.
+as \fBARGV[\fI0\fP],...,ARGV[ARGC\-1]\fR.
Whitespace characters within single or double quoted substrings, or
preceded by a backslash, are ignored as separators.
In general, a backslash character turns off any special meaning of the
following character.
-Note that the tokens derived from multiple \fB-a\fP flags are concatenated.
+Note that the tokens derived from multiple \fB\-a\fP flags are concatenated.
.TP
.B \-c
Use the source graph as the output graph.
.TP
.B \-i
-Derive the node-induced subgraph extension of the output graph in the context
+Derive the node\(hyinduced subgraph extension of the output graph in the context
of its root graph.
.TP
.BI \-o " outfile"
.B \-f
is not given,
.B gvpr
-will use the first non-option argument as the program.
+will use the first non\(hyoption argument as the program.
.TP
.B \-V
Causes the program to print version information and exit.
.I files
Names of files containing 1 or more graphs in the dot language.
If no
-.B -f
+.B \-f
option is given, the first name is removed from the list and used
as the input program. If the list of files is empty, \fBstdin\fP will be used.
.SH PROGRAMS
A
.B gvpr
-program consists of a list of predicate-action clauses, having one
+program consists of a list of predicate\(hyaction clauses, having one
of the forms:
.IP
.BI "BEGIN { " action " }"
\fBEND_G\fP and \fBEND\fP clauses.
There can be any number of \fBN\fP and \fBE\fP statements,
the first applied to nodes, the second to edges.
-The top-level semantics of a \fBgvpr\fP program are:
+The top\(hylevel semantics of a \fBgvpr\fP program are:
.PP
.ta \w'\f(CWdelete array[expression]'u
.RS
library.
The only difference between predicates and actions is that the former
must have a type that may interpreted as either true or false.
-Here the usual C convention is followed, in which a non-zero value is
-considered true. This would include non-empty strings and non-empty
+Here the usual C convention is followed, in which a non\(hyzero value is
+considered true. This would include non\(hyempty strings and non\(hyempty
references to nodes, edges, etc. However, if a string can be
converted to an integer, this value is used.
.PP
In addition to the usual C base types
-(\f5void\fP, \f5int\fP, \f5char\fP, \f5float\fP, \f5long\fP,
-\f5unsigned\fP and \f5double\fP),
-\fBgvpr\fP \fRprovides \f5string\fP as a synonym for \f5char*\fP, and
-the graph-based types \f5node_t\fP,
-\f5edge_t\fP, \f5graph_t\fP and \f5obj_t\fP.
-The \f5obj_t\fP type can be viewed as a supertype of the other 3 concrete types;
+(\fbvoid\fP, \fbint\fP, \fbchar\fP, \fbfloat\fP, \fblong\fP,
+\fbunsigned\fP and \fbdouble\fP),
+\fBgvpr\fP \fRprovides \fbstring\fP as a synonym for \fbchar*\fP, and
+the graph\(hybased types \fbnode_t\fP,
+\fbedge_t\fP, \fbgraph_t\fP and \fbobj_t\fP.
+The \fbobj_t\fP type can be viewed as a supertype of the other 3 concrete types;
the correct base type is maintained dynamically.
Besides these base types, the only other supported type expressions
are (associative) arrays.
Patterns use
.IR ksh (1)
file match pattern syntax.
-\fBgvpr\fP accepts C++ comments as well as cpp-type comments.
+\fBgvpr\fP accepts C++ comments as well as cpp\(hytype comments.
For the latter, if a line begins with a '#' character, the rest of
the line is ignored.
.PP
\fBgvpr\fP will attempt to use an expression as a string or numeric value
as appropriate.
.PP
-Expressions of graphical type (i.e., \f5graph_t, node_t,
+Expressions of graphical type (i.e., \fBgraph_t, node_t,
edge_t, obj_t\fP) may be followed by a field reference in the
form of \fB.\fP\fIname\fP. The resulting value is the value
of the attribute named \fIname\fP of the given object.
.PP
As usual in the
.IR libagraph (3)
-model, attributes are string-valued.
+model, attributes are string\(hyvalued.
In addition,
.B gvpr
-supports certain pseudo-attributes of graph objects, not necessarily
-string-valued. These reflect intrinsic properties of the graph objects
+supports certain pseudo\(hyattributes of graph objects, not necessarily
+string\(hyvalued. These reflect intrinsic properties of the graph objects
and cannot be set by the user.
.TP
\fBhead\fR : \fBnode_t\fR
.TP
\fBname\fR : \fBstring\fR
the name of an edge, node or graph. The name of an edge has the
-form "\fI<tail-name><edge-op><head-name>\fB[\fI<key>\fB]\fR",
-where \fI<edge-op>\fP is "\fB->\fP" or "\fB--\fP" depending on
+form "\fI<tail\(hyname><edge\(hyop><head\(hyname>\fB[\fI<key>\fB]\fR",
+where \fI<edge\(hyop>\fP is "\fB\->\fP" or "\fB\-\-\fP" depending on
whether the graph is directed or not. The bracket part \fB[\fI<key>\fB]\fR
-only appears if the edge has a non-trivial key.
+only appears if the edge has a non\(hytrivial key.
.TP
\fBindegree\fR : \fBint\fR
the indegree of a node.
the number of nodes in the graph
.TP
\fBdirected\fR : \fBint\fR
-true (non-zero) if the graph is directed
+true (non\(hyzero) if the graph is directed
.TP
\fBstrict\fR : \fBint\fR
-true (non-zero) if the graph is strict
-.SH "BUILT-IN FUNCTIONS"
+true (non\(hyzero) if the graph is strict
+.SH "BUILT\(hyIN FUNCTIONS"
.PP
The following functions are built into \fBgvpr\fP. Those functions
returning references to graph objects return \fBNULL\fP in case of failure.
\fBgraph\fP(\fIs\fP : \fBstring\fP, \fIt\fP : \fBstring\fP) : \fBgraph_t\fP
creates a graph whose name is \fIs\fP and whose type is
specified by the string \fIt\fP. Ignoring case, the characters
-\f5U, D, S, N\fR have the interpretation undirected, directed,
-strict, and non-strict, respectively. If \fIt\fP is empty,
-a directed, non-strict graph is generated.
+\fBU, D, S, N\fR have the interpretation undirected, directed,
+strict, and non\(hystrict, respectively. If \fIt\fP is empty,
+a directed, non\(hystrict graph is generated.
.TP
\fBsubg\fP(\fIg\fP : \fBgraph_t\fP, \fIs\fP : \fBstring\fP) : \fBgraph_t\fP
creates a subgraph in graph \fIg\fP with name \fIs\fP. If the subgraph
any attribute values \fItgt\fP may initially have.
.TP
\fBinduce\fP(\fIg\fP : \fBgraph_t\fP) : \fBvoid\fP
-extends \fIg\fP to its node-induced subgraph extension in its root graph.
+extends \fIg\fP to its node\(hyinduced subgraph extension in its root graph.
.TP
\fBaget\fP(\fIsrc\fP : \fBobj_t\fP, \fIname\fP : \fBstring\fP) : \fBstring\fP
returns the value of attribute \fIname\fP in object \fIsrc\fP. This is
.TP
\fBaset\fP(\fIsrc\fP : \fBobj_t\fP, \fIname\fP : \fBstring\fP, \fIvalue\fP : \fBstring\fP) : \fBint\fP
sets the value of attribute \fIname\fP in object \fIsrc\fP to \fIvalue\fP.
-Returns 0 on success, non-zero on failure. See \fBaget\fP above.
+Returns 0 on success, non\(hyzero on failure. See \fBaget\fP above.
.TP
\fBgetDflt\fP(\fIg\fP : \fBgraph_t\fP, \fIkind\fP : \fBstring\fP, \fIname\fP : \fBstring\fP) : \fBstring\fP
returns the default value of attribute \fIname\fP in objects in \fIg\fP of
objects in \fIg\fP of
the given \fIkind\fP. For nodes, edges, and graphs, \fIkind\fP
should be "N", "E", and "G", respectively.
-Returns 0 on success, non-zero on failure. See \fBsetDflt\fP above.
+Returns 0 on success, non\(hyzero on failure. See \fBsetDflt\fP above.
.TP
\fBcompOf\fP(\fIg\fP : \fBgraph_t\fP, \fIn\fP : \fBnode_t\fP) : \fBgraph_t\fP
returns the connected component of the graph \fIg\fP containing node \fIn\fP,
.TP
\fBindex\fP(\fIs\fP : \fBstring\fP, \fIt\fP : \fBstring\fP) : \fBint\fP
returns the index of the character in string \fIs\fP where the leftmost
-copy of string \fIt\fP can be found, or -1 if \fIt\fP is not a
+copy of string \fIt\fP can be found, or \-1 if \fIt\fP is not a
substring of \fIs\fP.
.TP
\fBmatch\fP(\fIs\fP : \fBstring\fP, \fIp\fP : \fBstring\fP) : \fBint\fP
returns the index of the character in string \fIs\fP where the leftmost
-match of pattern \fIp\fP can be found, or -1 if no substring of \fIs\fP
+match of pattern \fIp\fP can be found, or \-1 if no substring of \fIs\fP
matches \fIp\fP.
.TP
\fBcanon\fP(\fIs\fP : \fBstring\fP) : \fBstring\fP
specifies how the file is opened. The arguments are the same as for
the C function
.IR fopen (3).
-It returns an integer denoting the stream, or -1 on error.
+It returns an integer denoting the stream, or \-1 on error.
.sp
As usual, streams 0, 1 and 2 are already open as \fBstdin\fP, \fBstdout\fP,
and \fBstderr\fP, respectively. Since \fBgvpr\fP may use \fBstdin\fP to
returns the sine of \fId\fP.
.TP
\fBatan2\fP(\fIy\fP : \fBdouble\fP, \fIx\fP : \fBdouble\fP) : \fBdouble\fP
-returns the arctangent of \fIy/x\fP in the range -pi to pi.
+returns the arctangent of \fIy/x\fP in the range \-pi to pi.
.SS "Miscellaneous"
.TP
\fBexit\fP() : \fBvoid\fP
defaults to 0 if omitted.
.TP
\fBrand\fP() : \fBdouble\fP
-returns a pseudo-random double between 0 and 1.
+returns a pseudo\(hyrandom double between 0 and 1.
.TP
\fBsrand\fP() : \fBint\fP
.TP
the seed; if it is omitted, the current time is used. The previous seed
value is returned. \fBsrand\fP should be called before any calls to
\fBrand\fP.
-.SH "BUILT-IN VARIABLES"
+.SH "BUILT\(hyIN VARIABLES"
.PP
.B gvpr
-provides certain special, built-in variables, whose values are set
+provides certain special, built\(hyin variables, whose values are set
automatically by \fBgvpr\fP depending on the context. Except as noted,
the user cannot modify their values.
.TP
\fB$O\fP : \fBgraph_t\fP
denotes the output graph. Before graph traversal, it is initialized
to the target graph. After traversal and any \fBEND_G\fP actions,
-if it refers to a non-empty graph, that graph is printed onto the output stream.
+if it refers to a non\(hyempty graph, that graph is printed onto the output stream.
It is only valid in \fBN\fP, \fBE\fP and \fBEND_G\fP clauses.
The output graph may be set by the user.
.TP
.TP
\fB$tgtname\fP : \fBstring\fP
denotes the name of the target graph.
-By default, it is set to \f5"gvpr_result"\fP.
+By default, it is set to \fB"gvpr_result"\fP.
If used multiple times during the execution of
.BR gvpr ,
the name will be appended with an integer.
.TP
\fB$tvroot\fP : \fBnode_t\fP
indicates the starting node for a (directed or undirected)
-depth-first traversal of the
+depth\(hyfirst traversal of the
graph (cf. \fB$tvtype\fP below).
The default value is \fBNULL\fP for each input graph.
.TP
.TP
\fBARGC\fP : \fBint\fP
denotes the number of arguments specified by the
-\fB-a\fP \fIargs\fP command-line argument.
+\fB\-a\fP \fIargs\fP command\(hyline argument.
.TP
\fBARGV\fP : \fBstring array\fP
denotes the array of arguments specified by the
-\fB-a\fP \fIargs\fP
-command-line argument. The \fIi\fPth argument is given
+\fB\-a\fP \fIargs\fP
+command\(hyline argument. The \fIi\fPth argument is given
by \fBARGV[\fIi\fP]\fR.
-.SH "BUILT-IN CONSTANTS"
+.SH "BUILT\(hyIN CONSTANTS"
.PP
There are several symbolic constants defined by \fBgvpr\fP.
.TP
of the nodes.
.TP
\fBTV_dfs\fR : \fItvtype_t\fR
-a traversal of the graph using a depth-first search on the
+a traversal of the graph using a depth\(hyfirst search on the
underlying undirected graph.
To do the traversal, \fBgvpr\fP will check the value of
\fB$tvroot\fP. If this has the same value that it had previously
\fBTV_dfs\fP and \fB$tvroot\fP, it is possible to create an infinite loop.
.TP
\fBTV_fwd\fR : \fItvtype_t\fR
-a traversal of the graph using a depth-first search on the
+a traversal of the graph using a depth\(hyfirst search on the
graph following only forward arcs. In
.TP
\fBTV_bfs\fR : \fItvtype_t\fR
-a traversal of the graph using a bread-first search on the
+a traversal of the graph using a bread\(hyfirst search on the
graph ignoring edge directions. See the item on \fBTV_dfs\fR above
for the role of \fB$tvroot\fP.
.IR libagraph (3),
same as described for \fBTV_dfs\fR above.
.TP
\fBTV_rev\fR : \fItvtype_t\fR
-a traversal of the graph using a depth-first search on the
+a traversal of the graph using a depth\(hyfirst search on the
graph following only reverse arcs. In
.IR libagraph (3),
edges in undirected graphs are given an arbitrary direction, which is
.ta \w'\f(CWdelete array[expression]'u
.RS
.nf
-\f5gvpr -i 'N[color=="blue"]' file.dot\fP
+\fBgvpr \-i 'N[color=="blue"]' file.dot\fP
.fi
.RE
.DT
.PP
-Generate the node-induced subgraph of all nodes with color blue.
+Generate the node\(hyinduced subgraph of all nodes with color blue.
.PP
.ta \w'\f(CWdelete array[expression]'u
.RS
.nf
-\f5gvpr -c 'N[color=="blue"]{color = "red"}' file.dot\fP
+\fBgvpr \-c 'N[color=="blue"]{color = "red"}' file.dot\fP
.fi
.RE
.DT
.ta \w'\f(CWdelete array[expression]'u
.RS
.nf
-\f5BEGIN { int n, e; int tot_n = 0; int tot_e = 0; }
+\fBBEGIN { int n, e; int tot_n = 0; int tot_e = 0; }
BEG_G {
n = nNodes($G);
e = nEdges($G);
.ta \w'\f(CWdelete array[expression]'u
.RS
.nf
-\f5gvpr -c ""\fP
+\fBgvpr \-c ""\fP
.fi
.RE
.DT
.ta \w'\f(CWdelete array[expression]'u
.RS
.nf
-\f5BEG_G { graph_t g = graph ("merge", "S"); }
+\fBBEG_G { graph_t g = graph ("merge", "S"); }
E {
node_t h = clone(g,$.head);
node_t t = clone(g,$.tail);
.ta \w'\f(CWdelete array[expression]'u
.RS
.nf
-\f5BEGIN {node_t n; int deg[]}
+\fBBEGIN {node_t n; int deg[]}
E{deg[head]++; deg[tail]++; }
END_G {
for (deg[n]) {
.SH ENVIRONMENT
.TP
.B GPRPATH
-Colon-separated list of directories to be searched to find
-the file specified by the -f option.
+Colon\(hyseparated list of directories to be searched to find
+the file specified by the \-f option.
.SH BUGS
When the program is given as a command line argument, the usual
shell interpretation takes place, which may affect some of the