|
From: <nt...@us...> - 2010-10-02 14:49:50
|
Revision: 7599
http://mupad-combinat.svn.sourceforge.net/mupad-combinat/?rev=7599&view=rev
Author: nthiery
Date: 2010-10-02 14:49:44 +0000 (Sat, 02 Oct 2010)
Log Message:
-----------
Added VertexId and VertexRanker options to Graph::DotTeX
Modified Paths:
--------------
trunk/MuPAD-Combinat/lib/GRAPH/dotTeX.mu
Modified: trunk/MuPAD-Combinat/lib/GRAPH/dotTeX.mu
===================================================================
--- trunk/MuPAD-Combinat/lib/GRAPH/dotTeX.mu 2010-10-02 14:48:22 UTC (rev 7598)
+++ trunk/MuPAD-Combinat/lib/GRAPH/dotTeX.mu 2010-10-02 14:49:44 UTC (rev 7599)
@@ -4,7 +4,7 @@
Graph::dotTeX :=
proc(G: Graph) : DOM_STRING
- local weights, vertexRanker, vertex, child, result, options, edge, fixquoting, rankdir, vertexOptions, edgeOptions, arrow, knownEdges, pair, group;
+ local weights, vertexRanker, vertexId, vertex, child, result, options, edge, fixquoting, rankdir, vertexOptions, edgeOptions, arrow, knownEdges, pair, group;
begin
options := prog::getOptions([ Groups = [],
EdgeColors = table(),
@@ -14,7 +14,7 @@
VertexOptions = (()->{}),
Loops = TRUE,
Dot2TeXOptions = "",
- RankSep, NodeSep
+ RankSep, NodeSep, VertexId, NodeTeX = generate::TeX
],
table(EdgeColors = Type::TableOf(Graph::getEdges(G), DOM_STRING),
Direction = [Left, Right, Up, Down],
@@ -24,6 +24,7 @@
Groups = Type::ListOf(DOM_LIST),
VertexOptions = Type::Morphism(),
EdgeOptions = Type::Morphism(),
+ VertexId = Type::Morphism(),
Loops = DOM_BOOL,
Dot2TeXOptions = DOM_STRING
),
@@ -38,7 +39,12 @@
if weights = FAIL then
weights := table();
end_if;
- vertexRanker := combinat::rankers::onFly()[1];
+ if contains(options, VertexId) then
+ vertexId := options[VertexId];
+ else
+ vertexRanker := combinat::rankers::onFly()[1];
+ vertexId := node -> "N_".vertexRanker(node);
+ end_if;
// vertexRanker := dom::vertexRanker;
rankdir := table(Left = "RL", Right = "LR", Up = "BT");
@@ -70,10 +76,16 @@
for vertex in dom::getVertices(G) do
vertexOptions := table(op(options[VertexOptions](vertex)));
result := _concat(result,
- "N_", vertexRanker(vertex),
+ vertexId(vertex),
" [ label = \" \", texlbl = \"$",
- fixquoting(generate::TeX(vertex)),
+ fixquoting(options[NodeTeX](vertex)),
"$\",",
+ if contains(vertexOptions, Coordinates) then
+ " x = ".vertexOptions[Coordinates][1].", ",
+ " y = ".vertexOptions[Coordinates][2].", "
+ else
+ ()
+ end_if,
if contains(vertexOptions, Color) then
"lblstyle = ".vertexOptions[Color].", "
else
@@ -103,11 +115,11 @@
end_if;
result:= _concat(result,
if edgeOptions[Backward] then
- "N_".vertexRanker(child), arrow,
- "N_".vertexRanker(vertex)
+ vertexId(child), arrow,
+ vertexId(vertex)
else
- "N_".vertexRanker(vertex), arrow,
- "N_".vertexRanker(child)
+ vertexId(vertex), arrow,
+ vertexId(child)
end_if,
" [ ",
if not edgeOptions[Directed] then
@@ -159,8 +171,8 @@
for group in options[Groups] do
for pair in combinat::subwords(group, 2) do
result := _concat(result,
- "N_" .vertexRanker(pair[1]), " -- ",
- " N_".vertexRanker(pair[2]),
+ vertexId(pair[1]), " -- ",
+ " ".vertexId(pair[2]),
" [ weight = 2,",
" constraint = \"false\",",
" style = \"invis\" ",
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|