glfs/general/genutils/graphviz.xml
Xi Ruoyao 17aa21c551
Change all http://*.sourceforge.net/ URLs to https
Now all sourceforge.net subdomains have a valid SSL certificate.  The
changes are automatically done via a sed.  I've reviewed the changes and
reverted the changes in archive/*, pst/xml/docbook-xsl.xml, and
stylesheets/lfs-xsl/lfs-l10n.xml.  Other changes should (hopefully) be
fine.
2023-01-29 12:35:23 +08:00

958 lines
33 KiB
XML

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE sect1 PUBLIC "-//OASIS//DTD DocBook XML V4.5//EN"
"http://www.oasis-open.org/docbook/xml/4.5/docbookx.dtd" [
<!ENTITY % general-entities SYSTEM "../../general.ent">
%general-entities;
<!ENTITY graphviz-download-http "https://gitlab.com/graphviz/graphviz/-/archive/&graphviz-version;/graphviz-&graphviz-version;.tar.bz2">
<!ENTITY graphviz-download-ftp " ">
<!ENTITY graphviz-md5sum "495f7da354be58309d91a2e0d377ae3b">
<!ENTITY graphviz-size "26 MB">
<!ENTITY graphviz-buildsize "193 MB">
<!ENTITY graphviz-time "0.6 SBU (using parallelism=4)">
]>
<sect1 id="graphviz" xreflabel="Graphviz-&graphviz-version;">
<?dbhtml filename="graphviz.html"?>
<title>Graphviz-&graphviz-version;</title>
<indexterm zone="graphviz">
<primary sortas="a-Graphviz">Graphviz</primary>
</indexterm>
<sect2 role="package">
<title>Introduction to Graphviz</title>
<para>
The <application>Graphviz</application> package contains graph
visualization software. Graph visualization is a way of representing
structural information as diagrams of abstract graphs and networks.
<application>Graphviz</application> has several main graph layout
programs. It also has web and interactive graphical interfaces, auxiliary
tools, libraries, and language bindings.
</para>
&lfs112_checked;
<bridgehead renderas="sect3">Package Information</bridgehead>
<itemizedlist spacing="compact">
<listitem>
<para>
Download (HTTP): <ulink url="&graphviz-download-http;"/>
</para>
</listitem>
<listitem>
<para>
Download (FTP): <ulink url="&graphviz-download-ftp;"/>
</para>
</listitem>
<listitem>
<para>
Download MD5 sum: &graphviz-md5sum;
</para>
</listitem>
<listitem>
<para>
Download size: &graphviz-size;
</para>
</listitem>
<listitem>
<para>
Estimated disk space required: &graphviz-buildsize;
</para>
</listitem>
<listitem>
<para>
Estimated build time: &graphviz-time;
</para>
</listitem>
</itemizedlist>
<bridgehead renderas="sect3">Graphviz Dependencies</bridgehead>
<note>
<para>
<application>Graphviz</application> basic usage does not need any
libraries out of what is found in the LFS book. Its <quote>core</quote>
rendering engine allows to generate several graphic formats, such as
Postscript, SVG, VML, .fig, and Tk. Those formats can be converted
to almost any other format using for example tools from
<xref role="nodep" linkend="imagemagick"/>. The dependencies below add
the ability to generate graph images in bitmap format, to display the
graph image on screen, to edit a graph by viewing the resulting image
directly, or to view large graphs. Since
<application>Graphviz</application> is a dependency
of several other packages in this book, it is suggested to first build
it without any dependencies, then to rebuild it when you have built
enough packages to suit your needs.
</para>
</note>
<bridgehead renderas="sect4">Optional, for various bitmap outputs</bridgehead>
<para role="optional">
<xref linkend="pango"/>, with
<xref linkend="cairo"/>,
<xref linkend="xorg7-lib"/>,
<xref linkend="fontconfig"/>, and
<xref linkend="libpng"/>, to generate images in bitmap SVG, postscript,
PNG, and PDF formats, or displaying the image on screen. The PNG
output is required for building <xref role="nodep" linkend="gegl"/>
</para>
<para role="optional">
Adding
<xref linkend="gtk2"/> with
<xref linkend="libjpeg"/> adds support for JPEG, BMP, TIF, and ICO
formats, and allows displaying the image in a GTK+ window
</para>
<para role="optional">
<ulink url="https://www.libgd.org/">GD Library</ulink> may be used
instead of <application>Pango</application>. It adds the ability to
generate images in GIF, VRML, and GD formats, but
<application>Pango</application> provides better outputs for the other
formats, and is needed for displaying images
</para>
<para role="optional">
Other formats may be added with
<xref linkend="libwebp"/> (WebP support is considered experimental),
<ulink url="https://openil.sourceforge.net/projects.php">DevIL</ulink>,
<ulink url="https://sourceforge.net/projects/lasi/">libLASi</ulink>, and
<ulink url="https://www.freedesktop.org/wiki/Software/glitz">glitz</ulink>
<!-- deprecated <ulink url="http://www.libming.org/">libming</ulink> (Adobe
Flash)-->
</para>
<bridgehead renderas="sect4">Optional, to load graphic images that may be
displayed inside the nodes of a graph</bridgehead>
<para role="optional">
<filename class="libraryfile">libgs.so</filename> from
<xref linkend="gs"/>,
<xref linkend="librsvg"/>, and
<xref linkend="poppler"/>
</para>
<bridgehead renderas="sect4">Optional, to build more tools</bridgehead>
<para role="optional">
<xref linkend="freeglut"/> (with <xref linkend="libglade"/>,
<ulink url="https://sourceforge.net/projects/gtkglext/">GtkGLExt</ulink>, and
<ulink url="https://gts.sourceforge.net/">libGTS</ulink>, for building
the <command>smyrna</command> large graph viewer, which is
considered experimental), and
<xref linkend="qt5"/> (for building the <command>gvedit</command>
graph editor.)
</para>
<bridgehead renderas="sect4">Optional (To Build Language Bindings)</bridgehead>
<para role="optional">
<xref linkend="swig"/> (<application>SWIG</application> must be
installed or no bindings will be built),
<xref linkend="gcc"/> (for the go compiler),
<xref linkend="guile"/>,
<xref linkend="openjdk"/>,
<xref linkend="lua"/>,
<xref linkend="php"/>,
<xref linkend="ruby"/>,
<xref linkend="tk"/>,
<ulink url="https://iolanguage.org/">Io</ulink>,
<ulink url="https://www.mono-project.com/Main_Page">Mono</ulink>,
<ulink url="https://ocaml.org/">OCaml</ulink>, and
<ulink url="https://www.r-project.org/">R</ulink>
</para>
<bridgehead renderas="sect4">Optional (building tools)</bridgehead>
<para role="optional">
<ulink url="https://github.com/Snaipe/Criterion">Criterion</ulink>
(framework for tests) and
<ulink url="https://linux.softpedia.com/get/Programming/Debuggers/Electric-Fence-3305.shtml/">Electric Fence</ulink>
</para>
<bridgehead renderas="sect4">Optional (for building the pdf documentation)</bridgehead>
<para role="optional">
<xref linkend="gs"/> (for the <command>ps2pdf</command> command)
</para>
<para condition="html" role="usernotes">User Notes:
<ulink url="&blfs-wiki;/graphviz"/>
</para>
</sect2>
<sect2 role="installation">
<title>Installation of Graphviz</title>
<para>
Install <application>Graphviz</application> by running the following
commands:
</para>
<screen><userinput>sed -i '/LIBPOSTFIX="64"/s/64//' configure.ac &amp;&amp;
./autogen.sh &amp;&amp;
./configure --prefix=/usr \
--docdir=/usr/share/doc/graphviz-&graphviz-version;</userinput></screen>
<note>
<para>
A warning is generated by <command>autogen.sh</command> because the
build tree is not a git repository. As a result, the build date is set
to 0. To get a meaningful date in the version string, you can run:
</para>
<screen><userinput>sed -i "s/0/$(date +%Y%m%d)/" builddate.h</userinput></screen>
</note>
<para>
Whether or not you fix the date, proceed to compile the package:
</para>
<screen><userinput>make</userinput></screen>
<para>
This package does not come with a test suite that provides
meaningful results.
</para>
<para>
Now, as the <systemitem class="username">root</systemitem> user:
</para>
<screen role="root"><userinput>make install</userinput></screen>
</sect2>
<sect2 role="commands">
<title>Command Explanations</title>
<para>
<command>sed ... configure.ac</command>: This command is needed to
avoid installing files in /usr/lib64.
</para>
<para>
<option>--with-javaincludedir="$JAVA_HOME/include
-I$JAVA_HOME/include/linux"</option>:
If you have built <xref linkend="openjdk"/> in /opt, and you want to
build the JAVA bindings, it is necessary to specify the location of the
JAVA header files to configure. The configure switch is designed for
only one directory, but two directories need to be included.
This is possible nevertheless by using the -I switch inside the variable.
</para>
<para>
<option>--with-webp</option>: Even if <xref linkend="libwebp"/> is
installed, it is not included in the build without this option.
</para>
<para>
<option>--with-smyrna</option>: Even if the needed dependencies are
installed, the interactive graph viewer <command>smyrna</command> is not
built without this option.
</para>
</sect2>
<sect2 role="configuration">
<title>Configuring Graphviz</title>
<sect3 id="graphviz-config">
<title>Config Files</title>
<para>
<filename>/usr/lib/graphviz/config</filename>
</para>
<indexterm zone="graphviz graphviz-config">
<primary sortas="e-usr-share-graphviz-config">/usr/share/graphviz/config</primary>
</indexterm>
</sect3>
<sect3>
<title>Configuration Information</title>
<para>
There are no specific configuration requirements for
<application>Graphviz</application>. You may consider installing the
additional plugins and tools available from the download page at
<ulink url="https://graphviz.org/download/source/"/> for additional
capabilities. If additional plugins are installed, you can run
<command>dot -c</command> (as the
<systemitem class="username">root</systemitem> user) to update the
<filename>config</filename> file in
<filename class="directory">/usr/lib/graphviz</filename>.
</para>
</sect3>
</sect2>
<sect2 role="content">
<title>Contents</title>
<segmentedlist>
<segtitle>Installed Programs</segtitle>
<segtitle>Installed Libraries</segtitle>
<segtitle>Installed Directories</segtitle>
<seglistitem>
<seg>
acyclic, bcomps, ccomps, circo, cluster, <!--diffimg,--> dijkstra,
dot, dot2gxl, dot_builtins, edgepaint, fdp, gc, gml2gv,
graphml2gv, gv2gml, gv2gxl, gvcolor, gvedit, gvgen, gvmap, gvmap.sh,
gvpack, gvpr, gxl2dot, gxl2gv, mm2gv, neato, nop,
osage, patchwork, prune, sccmap, sfdp, tred, twopi,
unflatten, and vimdot
</seg>
<seg>
libcdt.so, libcgraph.so, libgvc.so, libgvpr.so, liblab_gamut.so,
libpathplan.so, libxdot.so, and several plugins in /usr/lib/graphviz.
There are also several in subdirectories of
/usr/lib/{lua,perl5,php,python&python3-majorver;,tcl8.6}.
Unfortunately, some libraries are duplicated.
</seg>
<seg>
/usr/include/graphviz,
/usr/lib/graphviz,
/usr/lib/tcl8.6/graphviz,
/usr/share/doc/graphviz-&graphviz-version;, and
/usr/share/graphviz
</seg>
</seglistitem>
</segmentedlist>
<variablelist>
<bridgehead renderas="sect3">Short Descriptions</bridgehead>
<?dbfo list-presentation="list"?>
<?dbhtml list-presentation="table"?>
<varlistentry id="acyclic">
<term><command>acyclic</command></term>
<listitem>
<para>
is a filter that takes a directed graph as input and outputs a
copy of the graph with sufficient edges reversed to make the
graph acyclic
</para>
<indexterm zone="graphviz acyclic">
<primary sortas="b-acyclic">acyclic</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="bcomps">
<term><command>bcomps</command></term>
<listitem>
<para>
decomposes graphs into their biconnected components,
printing the components to standard output
</para>
<indexterm zone="graphviz bcomps">
<primary sortas="b-bcomps">bcomps</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="ccomps">
<term><command>ccomps</command></term>
<listitem>
<para>
decomposes graphs into their connected components,
printing the components to standard output
</para>
<indexterm zone="graphviz ccomps">
<primary sortas="b-ccomps">ccomps</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="circo">
<term><command>circo</command></term>
<listitem>
<para>
draws graphs using a circular layout
</para>
<indexterm zone="graphviz circo">
<primary sortas="b-circo">circo</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="cluster">
<term><command>cluster</command></term>
<listitem>
<para>
takes a graph in DOT format as input, finds node clusters
and then augments the graph with this information
</para>
<indexterm zone="graphviz cluster">
<primary sortas="b-cluster">cluster</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="diffimg">
<term><command>diffimg</command></term>
<listitem>
<para>
(needs <ulink url="https://www.libgd.org/">GD Library</ulink>)
generates an image where each pixel is the
difference between the corresponding pixel in
each of the two source images
</para>
<indexterm zone="graphviz diffimg">
<primary sortas="b-diffimg">diffimg</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="dijkstra">
<term><command>dijkstra</command></term>
<listitem>
<para>
reads a stream of graphs and for each computes the distance of
every node from sourcenode
</para>
<indexterm zone="graphviz dijkstra">
<primary sortas="b-dijkstra">dijkstra</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="dot">
<term><command>dot</command></term>
<listitem>
<para>
draws directed graphs. It works well on DAGs and other graphs
that can be drawn as hierarchies. It reads attributed graph files and
writes drawings. By default, the output format dot is the input file
with layout coordinates appended
</para>
<indexterm zone="graphviz dot">
<primary sortas="b-dot">dot</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="dot2gxl">
<term><command>dot2gxl</command></term>
<listitem>
<para>
converts between graphs represented in GXL and in the DOT
language. Unless a conversion type is specified using a flag,
<command>gxl2dot</command> will deduce the type of conversion from
the suffix of the input file, a
<filename class="extension">.dot</filename> suffix causing a
conversion from DOT to GXL, and a
<filename class="extension">.gxl</filename> suffix causing a
conversion from GXL to DOT
</para>
<indexterm zone="graphviz dot2gxl">
<primary sortas="b-dot2gxl">dot2gxl</primary>
</indexterm>
</listitem>
</varlistentry>
<!--
<varlistentry id="dotty">
<term><command>dotty</command></term>
<listitem>
<para>
is a graph editor for the X Window System. It may be run as a
standalone editor, or as a front end for applications that use
graphs. It can control multiple windows viewing different graphs
</para>
<indexterm zone="graphviz dotty">
<primary sortas="b-dotty">dotty</primary>
</indexterm>
</listitem>
</varlistentry>
-->
<varlistentry id="edgepaint">
<term><command>edgepaint</command></term>
<listitem>
<para>
performs edge coloring to disambiguate crossing edges
</para>
<indexterm zone="graphviz edgepaint">
<primary sortas="b-edgepaint">edgepaint</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="fdp">
<term><command>fdp</command></term>
<listitem>
<para>
draws undirected graphs using a <quote>spring</quote> model. It
relies on a force-directed approach in the spirit of Fruchterman
and Reingold
</para>
<indexterm zone="graphviz fdp">
<primary sortas="b-fdp">fdp</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gc-graphviz">
<term><command>gc</command></term>
<listitem>
<para>
is a graph analogue to <command>wc</command> in that it prints
to standard output the number of nodes, edges, connected components
or clusters contained in the input files. It also prints a total
count for all graphs if more than one graph is given
</para>
<indexterm zone="graphviz gc-graphviz">
<primary sortas="b-gc">gc</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gml2gv">
<term><command>gml2gv</command></term>
<listitem>
<para>
converts a graph specified in the GML format to
a graph in the GV (formerly DOT) format
</para>
<indexterm zone="graphviz gml2gv">
<primary sortas="b-gml2gv">gml2gv</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="graphml2gv">
<term><command>graphml2gv</command></term>
<listitem>
<para>
converts a graph specified in the GRAPHML format to a graph in
the GV (formerly DOT) format
</para>
<indexterm zone="graphviz graphml2gv">
<primary sortas="b-graphml2gv">graphml2gv</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gv2gml">
<term><command>gv2gml</command></term>
<listitem>
<para>
converts a graph specified in the GV format to a graph in the GML format
</para>
<indexterm zone="graphviz gv2gml">
<primary sortas="b-gv2gml">gv2gml</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gv2gxl">
<term><command>gv2gxl</command></term>
<listitem>
<para>
converts a graph specified in the GV format to a graph in the GXL format
</para>
<indexterm zone="graphviz gv2gxl">
<primary sortas="b-gv2gxl">gv2gxl</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gvcolor">
<term><command>gvcolor</command></term>
<listitem>
<para>
is a filter that sets node colors from initial seed values.
Colors flow along edges from tail to head, and are averaged (as HSB
vectors) at nodes
</para>
<indexterm zone="graphviz gvcolor">
<primary sortas="b-gvcolor">gvcolor</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gvedit">
<term><command>gvedit</command></term>
<listitem>
<para>
provides a simple graph editor and viewer. It allows many
graphs to be viewed at the same time. The text of each
graph is displayed in its own text window
</para>
<indexterm zone="graphviz gvedit">
<primary sortas="b-gvedit">gvedit</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gvgen">
<term><command>gvgen</command></term>
<listitem>
<para>
generates a variety of simple, regularly-structured
abstract graphs
</para>
<indexterm zone="graphviz gvgen">
<primary sortas="b-gvgen">gvgen</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gvmap">
<term><command>gvmap</command></term>
<listitem>
<para>
takes as input a graph in DOT format, finds node
clusters and produces a rendering of the graph as
a geographic-style map, with clusters highlighted,
in xdot format
</para>
<indexterm zone="graphviz gvmap">
<primary sortas="b-gvmap">gvmap</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gvmap.sh">
<term><command>gvmap.sh</command></term>
<listitem>
<para>
is a pipeline for running gvmap
</para>
<indexterm zone="graphviz gvmap.sh">
<primary sortas="b-gvmap.sh">gvmap.sh</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gvpack">
<term><command>gvpack</command></term>
<listitem>
<para>
reads in a stream of graphs, combines the graphs into a single layout,
and produces a single graph serving as the union of the input graphs
</para>
<indexterm zone="graphviz gvpack">
<primary sortas="b-gvpack">gvpack</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gvpr">
<term><command>gvpr</command></term>
<listitem>
<para>
is a graph stream editor inspired by <command>awk</command>. It
copies input graphs to its output, possibly transforming their
structure and attributes, creating new graphs, or printing arbitrary
information
</para>
<indexterm zone="graphviz gvpr">
<primary sortas="b-gvpr">gvpr</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gxl2dot">
<term><command>gxl2dot</command></term>
<listitem>
<para>
converts between graphs represented in GXL and in the DOT
language. Unless a conversion type is specified using a flag,
<command>gxl2dot</command> will deduce the type of conversion from
the suffix of the input file, a
<filename class="extension">.dot</filename> suffix causing a
conversion from DOT to GXL, and a
<filename class="extension">.gxl</filename> suffix causing a
conversion from GXL to DOT
</para>
<indexterm zone="graphviz gxl2dot">
<primary sortas="b-gxl2dot">gxl2dot</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="gxl2gv">
<term><command>gxl2gv</command></term>
<listitem>
<para>
converts between graphs represented in GXL and in
the GV language
</para>
<indexterm zone="graphviz gxl2gv">
<primary sortas="b-gxl2gv">gxl2gv</primary>
</indexterm>
</listitem>
</varlistentry>
<!--
<varlistentry id="lefty">
<term><command>lefty</command></term>
<listitem>
<para>
is a two-view graphics editor for technical pictures
</para>
<indexterm zone="graphviz lefty">
<primary sortas="b-lefty">lefty</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="lneato">
<term><command>lneato</command></term>
<listitem>
<para>
is a graph editor for the X Window System. It may be run as a
standalone editor, or as a front end for applications that use
graphs. It can control multiple windows viewing different graphs
</para>
<indexterm zone="graphviz lneato">
<primary sortas="b-lneato">lneato</primary>
</indexterm>
</listitem>
</varlistentry>
-->
<varlistentry id="mm2gv">
<term><command>mm2gv</command></term>
<listitem>
<para>
converts a sparse matrix of the Matrix Market format
to a graph in the GV (formerly DOT) format
</para>
<indexterm zone="graphviz mm2gv">
<primary sortas="b-mm2gv">mm2gv</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="neato">
<term><command>neato</command></term>
<listitem>
<para>
draws undirected graphs using <quote>spring</quote> models. Input
files must be formatted in the <command>dot</command> attributed
graph language. By default, the output of <command>neato</command>
is the input graph with layout coordinates appended
</para>
<indexterm zone="graphviz neato">
<primary sortas="b-neato">neato</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="nop">
<term><command>nop</command></term>
<listitem>
<para>
reads a stream of graphs and prints each in pretty-printed (canonical)
format on stdout. If no files are given, it reads from stdin
</para>
<indexterm zone="graphviz nop">
<primary sortas="b-nop">nop</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="osage">
<term><command>osage</command></term>
<listitem>
<para>
draws clustered graphs. It takes any graph in DOT format as input
</para>
<indexterm zone="graphviz osage">
<primary sortas="b-osage">osage</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="patchwork">
<term><command>patchwork</command></term>
<listitem>
<para>
draws clustered graphs using a squarified treemap layout.
It takes any graph in DOT format as input
</para>
<indexterm zone="graphviz patchwork">
<primary sortas="b-patchwork">patchwork</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="prune">
<term><command>prune</command></term>
<listitem>
<para>
reads directed graphs in the same format used by
<command>dot</command> and removes subgraphs rooted at nodes
specified on the command line via options
</para>
<indexterm zone="graphviz prune">
<primary sortas="b-prune">prune</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="sccmap">
<term><command>sccmap</command></term>
<listitem>
<para>
decomposes digraphs into strongly connected components and an
auxiliary map of the relationship between components. In this map,
each component is collapsed into a node. The resulting graphs are
printed to stdout
</para>
<indexterm zone="graphviz sccmap">
<primary sortas="b-sccmap">sccmap</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="sfdp">
<term><command>sfdp</command></term>
<listitem>
<para>
draws undirected graphs using the <quote>spring</quote> model,
but it uses a multi-scale approach to produce layouts of large
graphs in a reasonably short time
</para>
<indexterm zone="graphviz sfdp">
<primary sortas="b-sfdp">sfdp</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="tred">
<term><command>tred</command></term>
<listitem>
<para>
computes the transitive reduction of directed graphs, and
prints the resulting graphs to standard output. This removes edges
implied by transitivity. Nodes and subgraphs are not otherwise
affected
</para>
<indexterm zone="graphviz tred">
<primary sortas="b-tred">tred</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="twopi">
<term><command>twopi</command></term>
<listitem>
<para>
draws graphs using a radial layout. Basically, one node is
chosen as the center and put at the origin. The remaining nodes are
placed on a sequence of concentric circles centered about the origin,
each a fixed radial distance from the previous circle
</para>
<indexterm zone="graphviz twopi">
<primary sortas="b-twopi">twopi</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="unflatten">
<term><command>unflatten</command></term>
<listitem>
<para>
is a preprocessor to <command>dot</command> that is used to
improve the aspect ratio of graphs having many leaves or disconnected
nodes. The usual layout for such a graph is generally very wide or tall
</para>
<indexterm zone="graphviz unflatten">
<primary sortas="b-unflatten">unflatten</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="vimdot">
<term><command>vimdot</command></term>
<listitem>
<para>
is a simple script which launches the <command>gvim</command>
or <command>vim</command> editor along with a GUI window
showing the <command>dot</command> output of the edited file
</para>
<indexterm zone="graphviz vimdot">
<primary sortas="b-vimdot">vimdot</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libcdt">
<term><filename class="libraryfile">libcdt.so</filename></term>
<listitem>
<para>
manages run-time dictionaries using standard container data
types: unordered set/multiset, ordered set/multiset, list, stack,
and queue
</para>
<indexterm zone="graphviz libcdt">
<primary sortas="c-libcdt">libcdt.so</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libcgraph">
<term><filename class="libraryfile">libcgraph.so</filename></term>
<listitem>
<para>
supports graph programming by maintaining graphs in memory and
reading and writing graph files. Graphs are composed of nodes,
edges, and nested subgraphs
</para>
<indexterm zone="graphviz libcgraph">
<primary sortas="c-libcgraph">libcgraph.so</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libgvc">
<term><filename class="libraryfile">libgvc.so</filename></term>
<listitem>
<para>
provides a context for applications wishing to manipulate
and render graphs. It provides command line parsing interfaces,
common rendering code, and a plugin mechanism for renderers
</para>
<indexterm zone="graphviz libgvc">
<primary sortas="c-libgvc">libgvc.so</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libpathplan">
<term><filename class="libraryfile">libpathplan.so</filename></term>
<listitem>
<para>
contains functions to find the shortest path between two points
in a simple polygon
</para>
<indexterm zone="graphviz libpathplan">
<primary sortas="c-libpathplan">libpathplan.so</primary>
</indexterm>
</listitem>
</varlistentry>
<varlistentry id="libxdot">
<term><filename class="libraryfile">libxdot.so</filename></term>
<listitem>
<para>
provides support for parsing and deparsing graphical
operations specified by the xdot language
</para>
<indexterm zone="graphviz libxdot">
<primary sortas="c-libxdot">libxdot.so</primary>
</indexterm>
</listitem>
</varlistentry>
</variablelist>
</sect2>
</sect1>