.B \-nguv?
]
[
-.BI -m margin
+.BI \-m margin
]
[
-.BI -o outfile
+.BI \-o outfile
]
[
-.BI -G name\fB=\fPvalue
+.BI \-G name\fB=\fPvalue
]
[
.I files
input graphs. The input graphs must be in dot format, and must have
all necessary layout information. Acceptable input is produced
by applying a Graphviz layout program, such as \fBdot\fP or \fBneato\fP,
-with no \fB-T\fP flag.
+with no \fB\-T\fP flag.
.P
By default, the packing is done at the cluster level. Thus, parts of
-one graph will not intrude into any top-level clusters or overlap
+one graph will not intrude into any top\(hylevel clusters or overlap
any nodes or edges of another.
.P
The output of \fBgvpack\fP can be used to produce concrete output
-by applying \fBneato -s -n2\fP with the desired \fB-T\fP flag.
+by applying \fBneato \-s \-n2\fP with the desired \fB\-T\fP flag.
.SH OPTIONS
The following options are supported:
.TP
.B gvpack
returns
.B 0
-if there were no problems, and non-zero otherwise.
+if there were no problems, and non\(hyzero otherwise.
.SH EXAMPLES
.EX
-ccomps -x abc.dot | dot | gvpack | neato -s -n2 -Tps
+ccomps \-x abc.dot | dot | gvpack | neato \-s \-n2 \-Tps
.EE
This pipeline decomposes the graph in \fIabc.dot\fP into its
connected components, lays out each using \fBdot\fP, packs them all together
layout. Since \fBgvpack\fP ignores root graph labels, resulting layout
may contain some extra space.
.P
-\fBgvpack\fP unsets the bounding box attribute of all non-cluster
+\fBgvpack\fP unsets the bounding box attribute of all non\(hycluster
subgraphs.
.SH AUTHORS
Emden R. Gansner <erg@research.att.com>
These allow efficient representation and direct access to values
such as marks, weights, and pointers for writing graph algorithms.
External attributes, on the other hand, are character strings
-(name-value pairs) dynamically allocated at runtime and accessed
+(name\(hyvalue pairs) dynamically allocated at runtime and accessed
through \fIlibgraph\fP calls. External attributes are used in
graph file I/O; internal attributes are not. Conversion between
internal and external attributes must be explicitly programmed.
The subgraphs in a main graph are represented by an auxiliary directed
-graph (a meta-graph). Meta-nodes correspond to subgraphs, and meta-edges
+graph (a meta\(hygraph). Meta\(hynodes correspond to subgraphs, and meta\(hyedges
signify containment of one subgraph in another.
\f5agmetanode\fP and \f5agusergraph\fP map between
-subgraphs and meta-nodes. The nodes and edges of the meta-graph may
+subgraphs and meta\(hynodes. The nodes and edges of the meta\(hygraph may
be traversed by the usual \fIlibgraph\fP functions for this purpose.
.SH USE
(This is a macro that calls \f5aginitlib()\fP to define the sizes
of Agraphinfo_t, Agnodeinfo_t, and Agedgeinfo_t.)
-3. Compile with -lgraph -lcdt.
+3. Compile with \-lgraph \-lcdt.
Except for the \fBu\fP fields, \fIlibgraph\fP
-data structures must be considered read-only.
+data structures must be considered read\(hyonly.
Corrupting their contents by direct updates can cause
catastrophic errors.
AGRAPH, AGRAPHSTRICT, AGDIGRAPH, or AGDIGRAPHSTRICT.
There are related macros for testing the properties of a graph:
AG_IS_DIRECTED(g) and AG_IS_STRICT(g).
-Strict graphs cannot have self-arcs or multi-edges.
+Strict graphs cannot have self\(hyarcs or multi\(hyedges.
\fBattr\fP is the array of external attribute values.
\fBuniv\fP points to values shared by all subgraphs of a main graph.
\fBnodes\fP, \fBinedges\fP, and \fBoutedges\fP are sets maintained
by \fBcdt(3)\fP. Normally you don't access these dictionaries
-directly, though the edge dictionaries may be re-ordered to support
-programmer-defined ordered edges (see \f5dtreorder\fP in \fIcdt(3)\fP).
+directly, though the edge dictionaries may be re\(hyordered to support
+programmer\(hydefined ordered edges (see \f5dtreorder\fP in \fIcdt(3)\fP).
\fBproto\fP is a stack of templates for node and edge initialization.
The attributes of these nodes and edges are set in the usual way (\f5agget\fP,
\f5agset\fP, etc.) to set defaults.
\f5agnode\fP attempts to create a node.
If one with the requested name already exists, the old node
is returned unmodified.
-Otherwise a new node is created, with attributed copied from g->proto->n.
+Otherwise a new node is created, with attributed copied from g\->proto\->n.
\f5agfstnode\fP (\f5agnxtnode\fP) return the first (next) element
in the node set of a graph, respectively, or NULL.
\f5aglstnode\fP (\f5agprvnode\fP) return the last (previous) element
} Agedge_t;
\fP
.fi
-\f5agedge\fP creates a new edge with the attributes of g->proto->e
+\f5agedge\fP creates a new edge with the attributes of g\->proto\->e
including its key if not empty.
\f5agfindedge\fP finds the first (u,v) edge in \f5g\fP.
\f5agfstedge\fP (\f5agnxtedge\fP) return the first (next) element
in the edge set of a graph, respectively, or NULL.
\f5agfstin\fP, \f5agnxtin\fP, \f5agfstout\fP, \f5agnxtout\fP
-refer to in- or out-edge sets.
+refer to in\(hy or out\(hyedge sets.
The idiomatic usage in a directed graph is:
.sp
\f5 for (e = agfstout(g,n); e; e = agnextout(g,e)) your_fun(e);\fP
.P
An edge is uniquely identified by its endpoints and its \f5key\fP
attribute (if there are multiple edges).
-If the \f5key\fP of \f5g->proto->e\fP is empty,
+If the \f5key\fP of \f5g\->proto\->e\fP is empty,
new edges are assigned an internal value.
Edges also have \f5tailport\fP and \f5headport\fP values.
These have special syntax in the graph file language but are
Here is a program fragment to print node attribute names:
.nf
\f5attrsym_t *aptr;
- for (i = 0; aptr = g->univ->nodedict->list[i]; i++) puts(aptr->name);\fP
+ for (i = 0; aptr = g\->univ\->nodedict\->list[i]; i++) puts(aptr\->name);\fP
.fi
.SH EXAMPLE GRAPH FILES
.nf
graph any_name { /* an undirected graph */
- a -- b; /* a simple edge */
- a -- x1 -- x2 -- x3; /* a chain of edges */
- "x3.a!" -- a; /* quotes protect special characters */
- b -- {q r s t}; /* edges that fan out */
+ a \-\- b; /* a simple edge */
+ a \-\- x1 \-\- x2 \-\- x3; /* a chain of edges */
+ "x3.a!" \-\- a; /* quotes protect special characters */
+ b \-\- {q r s t}; /* edges that fan out */
b [color="red",size=".5,.5"]; /* set various node attributes */
node [color=blue]; /* set default attributes */
- b -- c [weight=25]; /* set edge attributes */
+ b \-\- c [weight=25]; /* set edge attributes */
subgraph sink_nodes {a b c}; /* make a subgraph */
}
digraph G {
size="8.5,11"; /* sets a graph attribute */
- a -> b; /* makes a directed edge */
- chip12.pin1 -> chip28.pin3; /* uses named node "ports" */
+ a \-> b; /* makes a directed edge */
+ chip12.pin1 \-> chip28.pin3; /* uses named node "ports" */
}
.fi
.BR libdict (3)
.br
S. C. North and K. P. Vo, "Dictionary and Graph Libraries''
-1993 Winter USENIX Conference Proceedings, pp. 1-11.
+1993 Winter USENIX Conference Proceedings, pp. 1\(hy11.
.SH AUTHOR
Stephen North (north@ulysses.att.com), AT&T Bell Laboratories.
extern GVC_t *gvNEWcontext(char **info, char *user);
extern char *gvUsername(void);
-/* set up a graphviz context - alternative */
+/* set up a graphviz context \(hy alternative */
/* (wraps the above two functions using info built into libgvc) */
extern GVC_t *gvContext(void);
-/* parse command line args - minimally argv[0] sets layout engine */
+/* parse command line args \(hy minimally argv[0] sets layout engine */
extern int gvParseArgs(GVC_t *gvc, int argc, char **argv);
extern graph_t *gvNextInputGraph(GVC_t *gvc);
/* Render layout in a specified format to an open FILE */
extern int gvRenderFilename(GVC_t *gvc, graph_t *g, char *format, char *filename);
-/* Render layout according to -T and -o options found by gvParseArgs */
+/* Render layout according to \-T and \-o options found by gvParseArgs */
extern int gvRenderJobs(GVC_t *gvc, graph_t *g);
-/* Clean up layout data structures - layouts are not nestable (yet) */
+/* Clean up layout data structures \(hy layouts are not nestable (yet) */
extern int gvFreeLayout(GVC_t *gvc, graph_t *g);
/* Clean up graphviz context */