diff options
author | Karl Berry <karl@freefriends.org> | 2010-09-13 23:54:13 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2010-09-13 23:54:13 +0000 |
commit | a81b00b60192cde6eceb35cca61ea7f3e08898a5 (patch) | |
tree | 337396c5c4d6dfd159a202d0dfd4366f91285eef /Master | |
parent | 19908bf03185813a2c3bb24b2db83f04978c28b9 (diff) |
automata update (13sep10)
git-svn-id: svn://tug.org/texlive/trunk@19717 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master')
-rw-r--r-- | Master/texmf-dist/doc/metapost/automata/README | 5 | ||||
-rw-r--r-- | Master/texmf-dist/doc/metapost/automata/example.mp | 55 | ||||
-rw-r--r-- | Master/texmf-dist/doc/metapost/automata/example.pdf | bin | 56311 -> 90447 bytes | |||
-rw-r--r-- | Master/texmf-dist/doc/metapost/automata/example.tex | 5 | ||||
-rw-r--r-- | Master/texmf-dist/metapost/automata/automata.mp | 157 |
5 files changed, 158 insertions, 64 deletions
diff --git a/Master/texmf-dist/doc/metapost/automata/README b/Master/texmf-dist/doc/metapost/automata/README index 9345ec96569..ee2805fc3c6 100644 --- a/Master/texmf-dist/doc/metapost/automata/README +++ b/Master/texmf-dist/doc/metapost/automata/README @@ -1,4 +1,4 @@ -AUTOMATA.MP - version 0.2 +AUTOMATA.MP - version 0.3 This package is a collection of macros for METAPOST to make easier to draw finite-state machines, automata, @@ -38,5 +38,4 @@ License and it can be downloaded from the web page by following the link "Other links". -Gabriele Puppis - gabriele.puppis@dimi.uniud.it -University of Udine - Italy +Gabriele Puppis - gabriele.puppis@gmail.com diff --git a/Master/texmf-dist/doc/metapost/automata/example.mp b/Master/texmf-dist/doc/metapost/automata/example.mp index 88cbc2eca43..79adb2f68e3 100644 --- a/Master/texmf-dist/doc/metapost/automata/example.mp +++ b/Master/texmf-dist/doc/metapost/automata/example.mp @@ -12,56 +12,65 @@ verbatimtex etex -% SIMPLE EXAMPLE FOR THE PACKAGE automata.mp +% EXAMPLE FOR THE PACKAGE automata.mp beginfig(0); - % settings for some global parameters + % Setting of some global parameters. + size := 15; incominglength := 25; loopsize := 22; - % instead of using `spacing := (36,29)' - % one could use `with spacing((36,29))' to temporarily change the value of the parameter + % The following command defines a grid of nodes with 7 rows and 10 columns. + % Instead of using "spacing := (36,29)" and thus change the global parameter for the ditance + % between nodes, one can use `with spacing((36,29))' to temporarily change the value of this + % parameter. + with spacing((36,29)) matrix.a(7,10); - % one can use directives btex etex to include LaTeX-compiled labels + % Next, one declares the shape of the nodes and possibly their labels. One can use the directives + % "btex" and "etex" to include LaTeX-compiled labels in nodes, or just "" to leave them unlabeled. + % Moreover, one can use several shapes for the nodes. There are some predefined shorhands for + % modified styles of nodes and arrows (e.g., "node_double" is equivalent to "with border(double) node") + node.a[4][0](btex $s_0$ etex); - node.a[4][2](btex $s_1$ etex); - node.a[4][4](btex $s_2$ etex); - node.a[4][6](btex $s_3$ etex); - node.a[4][8](btex $s_4$ etex); + with shape(boxed) node.a[4][2](btex $s_1$ etex); + with shape(fixedbox) node.a[4][4](btex $s_2$ etex); + with size(18) with shape(diamond) node.a[4][6](btex $s_3$ etex); + with size(22) with shape(utriangle) node.a[4][8](btex $s_4$ etex); node.a[2][2](btex $s_5$ etex); node.a[2][5](btex $s_6$ etex); node.a[1][6](btex $s_7$ etex); - % there are some predefined shorhands for modified styles of nodes and arrows - % (e.g., `node_double ...' is equivalent to `with border(double) node ...') node_double.a[1][8](btex $s_8$ etex); + % One can define arrows of different forms. Each arrow follow a path from an initial node to a + % final node and this path must be explicitly given as a MetaPost path expression (e.g., point..point--point). + % Note that labels of nodes and arrows can be rotated using the MetaPost directive "rotated". + incoming(0, "") (a[4][0]) 120; loop.bot(.65, btex \small $a$ etex) (a[4][0]) -165; - % paths can be simple expressions (e.g., point..point) ... arrow_dash.bot(.5, btex \small $b$ etex) (a[4][0],a[4][2]) a[4][0].c..a[4][2].c; arrow.bot(.5, btex \small $a$ etex) (a[4][2],a[4][4]) a[4][2].c..a[4][4].c; arrow.bot(.5, btex \small $a$ etex) (a[4][4],a[4][6]) a[4][4].c..a[4][6].c; arrow.bot(.5, btex \small $a$ etex) (a[4][6],a[4][8]) a[4][6].c..a[4][8].c; - % ...or more complex expressions (e.g., point..point---point...point) - % (BUG: directive `{dir <angle>}' does not work with arrows, but `{up}' does) arrow.bot(.5, btex \small $c$ etex) (a[4][8],a[4][0]) a[4][8].c..a[5][7].c---a[5][1].c..a[4][0].c; - % one can rotate labels as usual in MetaPost arrow_dash.rt(.5, btex \small $a$ etex rotated 90) (a[4][2],a[2][2]) a[4][2].c..a[2][2].c; arrow.bot(.5, btex \small $c$ etex rotated 39) (a[2][2],a[4][0]) a[2][2].c..a[4][0].c; - arrow_dash.bot(.5, btex \small $a$ etex) (a[2][2],a[2][5]) a[2][2].c..a[2][5].c; + arrow_dash.bot(.5, btex \small $a$ etex) (a[2][2],a[2][5]) a[2][2].c{dir-30}..a[2][5].c; arrow_dash.rt(.5, btex \small $a$ etex rotated 90) (a[4][6],a[1][6]) a[4][6].c..a[1][6].c; arrow.top(.5, btex \small $a$ etex) (a[1][6],a[1][8]) a[1][6].c..a[1][8].c; - % again some complex paths for arrows... - arrow.bot(.38, btex \small $c$ etex) (a[2][5],a[4][0]) - a[2][5].c..a[1][4].c---a[1][2].c shifted(-10,0)..a[2][1].c shifted (-10,0)---a[4][0].c; - arrow_bold.bot(.5, btex \small $c$ etex) (a[1][8],a[4][0]) - a[1][8].c..a[2][9].c---a[5][9].c..a[6][8].c---a[6][1].c..a[5][0].c---a[4][0].c; - arrow_bold.top(.38, btex \small $c$ etex) (a[1][8],a[4][0]) - a[1][8].c..a[0][7].c---a[0][1].c..a[1][0].c---a[4][0].c; + arrow.bot(.38, btex \small $c$ etex) (a[2][5],a[4][0]) a[2][5].c..a[1][4].c---a[1][2].c shifted(-10,0)..a[2][1].c shifted (-10,0)---a[4][0].c; + arrow_bold.bot(.5, btex \small $c$ etex) (a[1][8],a[4][0]) a[1][8].c..a[2][9].c---a[5][9].c..a[6][8].c---a[6][1].c..a[5][0].c---a[4][0].c; + arrow_bold.top(.38, btex \small $c$ etex) (a[1][8],a[4][0]) a[1][8].c..a[0][7].c---a[0][1].c..a[1][0].c---a[4][0].c; + + % Finally, one may want to highligh a given set of nodes. This can done using the macro + % "enclose"/"enclosure", which draws/returns a path that goes around the given sequence + % of vertices (it is always a good idea if the sequence is given in clockwise order and + % if it defines a convex region!). + with enclosuremargin(20) draw enclosure(a[4][4].c--a[2][5].c--a[1][6].c--a[4][6].c--cycle) withcolor light.light.green withpen pencircle scaled 3; + endfig; end.
\ No newline at end of file diff --git a/Master/texmf-dist/doc/metapost/automata/example.pdf b/Master/texmf-dist/doc/metapost/automata/example.pdf Binary files differindex 0d2ab2d5735..8fa83dc5c45 100644 --- a/Master/texmf-dist/doc/metapost/automata/example.pdf +++ b/Master/texmf-dist/doc/metapost/automata/example.pdf diff --git a/Master/texmf-dist/doc/metapost/automata/example.tex b/Master/texmf-dist/doc/metapost/automata/example.tex index d84c855c67f..4544ebb0325 100644 --- a/Master/texmf-dist/doc/metapost/automata/example.tex +++ b/Master/texmf-dist/doc/metapost/automata/example.tex @@ -10,8 +10,7 @@ \title{An example of automaton generated\\with the MetaPost package \url{automata.mp}} \author{Gabriele Puppis\\ - \emph{Dipartimento di Matematica e Informatica, Università di Udine, Italy}\\ - \url{gabriele.puppis@dimi.uniud.it}} + \url{gabriele.puppis@gmail.com}} \maketitle @@ -30,7 +29,7 @@ and the transitions of the automaton (you can find some documentation inside the \begin{figure}[!!h] \centering\includegraphics{example.0} -\caption{An example pf automaton}\label{fig:example} +\caption{An example of automaton}\label{fig:example} \end{figure} \end{document}
\ No newline at end of file diff --git a/Master/texmf-dist/metapost/automata/automata.mp b/Master/texmf-dist/metapost/automata/automata.mp index 35ed9e6ae73..f3e1e24c4e6 100644 --- a/Master/texmf-dist/metapost/automata/automata.mp +++ b/Master/texmf-dist/metapost/automata/automata.mp @@ -1,5 +1,4 @@ % PACKAGE FOR METAPOST TO DRAW FINITE STATE MACHINES, GRAPHS, TREES, ETC. -% Version 0.2 % Author: gabriele puppis % declares a grid of equally-spaced nodes @@ -104,8 +103,8 @@ enddef; % % syntax: movepos.<name>(x,y); % -% example: movepos.a(100,100); -% movepos.b[0][0](100,100); +% example: movepos.a(10,10); +% movepos.b[0][0](10,10); vardef movepos@# expr p = @#.c := @#.c shifted p; @#.h := @#.h shifted p; @@ -121,13 +120,13 @@ enddef; % parameters: size = 7 | ... % nodemargin = 1.5 | ... % shape = circle | utriangle | ltriangle | btriangle | rtriangle | -% box | fixedbox | rbox | rfixedbox | none +% boxed | fixedbox | roundbox | roundfixedbox | diamond | none % boxmargin = 5 | ... -% fixedboxwidth = 7 | ... -% fixedboxheight = 7 | ... +% fixedboxwidth = 14 | ... +% fixedboxheight = 14 | ... % border = solid | bold | dash | double | none % bordercolor = black | white | ... -% filling = none | solid | left | right +% filling = none | solid | lefthalf | righthalf % fillingcolor = black | white | ... % nodelabel = yes | no % nodelabelcolor = black | white | ... @@ -171,7 +170,7 @@ vardef node@#(expr l) = @#.h := @#.c shifted (0.5xpart(@#.s),0); fs := (size,size); fm := 4solidsize; - elseif (shape=box): + elseif (shape=boxed): @#.s := urcorner pic - llcorner pic + (boxmargin,boxmargin); @#.f := squarepath; @#.h := @#.c; @@ -183,18 +182,24 @@ vardef node@#(expr l) = @#.h := @#.c; fs := @#.s; fm := 0; - elseif (shape=rbox): + elseif (shape=roundbox): @#.s := urcorner pic - llcorner pic; @#.f := rrectangle(xpart(@#.s),ypart(@#.s)); @#.h := @#.c; fs := @#.s; fm := 0; - elseif (shape=rfixedbox): + elseif (shape=roundfixedbox): @#.s := (fixedboxwidth,fixedboxheight); @#.f := rrectangle(xpart(@#.s),ypart(@#.s)); @#.h := @#.c; fs := @#.s; fm := 0; + elseif (shape=diamond): + @#.s := (size,size); + @#.f := diamondpath; + @#.h := @#.c; + fs := (size,size); + fm := 0; elseif (shape=none): @#.s := (0,0); @#.f := (0,0)..(0,0); @@ -216,7 +221,7 @@ vardef node@#(expr l) = fill @#.f xscaled xpart(fs) yscaled ypart(fs) shifted @#.c withcolor fillingcolor; fi - elseif (filling=left): + elseif (filling=lefthalf): if (border=double): fill buildcycle(@#.f,(0,-1)--(0,1)) xscaled (xpart(fs)-2doublesize) yscaled (ypart(fs)-2doublesize) @@ -226,7 +231,7 @@ vardef node@#(expr l) = xscaled xpart(fs) yscaled ypart(fs) shifted @#.c withcolor fillingcolor; fi - elseif (filling=right): + elseif (filling=righthalf): if (border=double): fill buildcycle(@#.f,(0,-1)--(0,1)) rotated 180 xscaled (xpart(fs)-2doublesize) yscaled (ypart(fs)-2doublesize) @@ -282,10 +287,11 @@ enddef; % % example: arrow.top(0.5, btex $a$ etex)(a[0][0],a[0][1]) a[0][0].c{dir90}..a[0][1].c; % -% parameters: style = solid | bold | dash | bolddash +% parameters: style = solid | bold | dash | bolddash | invisible % arrowcolor = black | white | ... % arrowlabel = yes | no % unfillonarrowlabel = yes | no +% unfillcolor = white | black | ... % arrowlabelcolor = black | white | ... % tipangle = 25 | ...; % tipsharpness = 10 | ...; @@ -335,6 +341,7 @@ vardef arrow@#(expr o,l)(suffix a,b) expr p = elseif (style=bolddash): draw cutp withpen pencircle scaled boldsize dashed evenly scaled dashsize withcolor arrowcolor; draw tip withpen pencircle scaled boldsize withcolor arrowcolor; + elseif (style=invisible): else: errmessage("Arrow style not defined"); fi @@ -344,7 +351,7 @@ vardef arrow@#(expr o,l)(suffix a,b) expr p = picture lab; lab := thelabel.@#(l, point o*length(cutp) of cutp); if (unfillonarrowlabel=yes): - unfill (bbox lab); + fill (bbox lab) withcolor unfillcolor; fi draw lab withcolor arrowlabelcolor; %label.@#(l, point o*length(cutp) of cutp) withcolor arrowlabelcolor; @@ -363,8 +370,8 @@ enddef; % example: loop.top(0.5, btex $a$ etex)(a[0][0]) 90; % % parameters: loopsize = 15 | ... -% looporientation = counterclockwise | clockwise -% style = solid | bold | dash | bolddash +% looporientation = counterclockwiseorientation | clockwiseorientation +% style = solid | bold | dash | bolddash | invisible % arrowcolor = black | white | ... % arrowlabel = yes | no % tipangle = 25 | ...; @@ -376,9 +383,9 @@ enddef; vardef loop@#(expr o,l)(suffix a) expr d = save p; path p; - if (looporientation=clockwise): + if (looporientation=clockwiseorientation): p := (-0.5*loopsize,0)..(0,0.5*loopsize)..(0.5*loopsize,0)..(0,-0.5*loopsize)..cycle; - elseif (looporientation=counterclockwise): + elseif (looporientation=counterclockwiseorientation): p := (-0.5*loopsize,0)..(0,-0.5*loopsize)..(0.5*loopsize,0)..(0,0.5*loopsize)..cycle; else: errmessage("Loop orientation not defined"); @@ -445,44 +452,82 @@ vardef outgoing@#(expr o,l)(suffix a) expr d = enddef; +% this function can be used to enclose a sequence of points inside a bounding area +% +% syntax: enclose <path>; +% where <path> is a closed path, whose points are listed in clockwise order +% +% example: enclose a[0][0].c--a[0][1].c--a[1][1].c--cycle; +% +% parameters: style = solid | bold | dash | bolddash +% enclosurecolor = black | white | ... +% enclosuremargin = 5 | ... +% solidsize = 0.9 | ... +% boldsize = 1.5 | ... +% dashsize = 0.75 | ... +vardef enclose expr p = + if (style=solid): + draw enclosure(p) withpen pencircle scaled solidsize withcolor enclosurecolor; + elseif (style=bold): + draw enclosure(p) withpen pencircle scaled boldsize withcolor enclosurecolor; + elseif (style=dash): + draw enclosure(p) withpen pencircle scaled solidsize dashed evenly scaled dashsize withcolor enclosurecolor; + elseif (style=bolddash): + draw enclosure(p) withpen pencircle scaled boldsize dashed evenly scaled dashsize withcolor enclosurecolor; + else: + errmessage("Arrow style not defined"); + fi +enddef; + + % shorthand macros def node_circle = with shape(circle) node enddef; def node_utriangle = with shape(utriangle) node enddef; def node_ltriangle = with shape(ltriangle) node enddef; def node_dtriangle = with shape(dtriangle) node enddef; def node_rtriangle = with shape(rtriangle) node enddef; +def node_diamond = with shape(diamond) node enddef; def node_unfilled = with filling(none) node enddef; def node_filled = with filling(solid) node enddef; -def node_filledleft = with filling(left) node enddef; -def node_filledright = with filling(right) node enddef; +def node_filledleft = with filling(lefthalf) node enddef; +def node_filledright = with filling(righthalf) node enddef; def node_solid = with border(solid) node enddef; def node_bold = with border(bold) node enddef; def node_dash = with border(dash) node enddef; def node_double = with border(double) node enddef; def node_hidden = with border(none) node enddef; -def node_box = with shape(box) node enddef; +def node_boxed = with shape(boxed) node enddef; def node_fixed = with shape(fixedbox) node enddef; -def node_rbox = with shape(rbox) node enddef; -def node_rfixed = with shape(rfixedbox) node enddef; +def node_roundbox = with shape(roundbox) node enddef; +def node_roundfixed = with shape(roundfixedbox) node enddef; def node_marker = with shape(none) node enddef; def arrow_solid = with style(solid) arrow enddef; def arrow_bold = with style(bold) arrow enddef; def arrow_dash = with style(dash) arrow enddef; def arrow_bolddash = with style(bolddash) arrow enddef; +def arrow_invisible = with style(invisible) arrow enddef; def loop_solid = with style(solid) loop enddef; def loop_bold = with style(bold) loop enddef; def loop_dash = with style(dash) loop enddef; def loop_bolddash = with style(bolddash) loop enddef; -def loop_cw = with looporientation(clockwise) loop enddef; -def loop_ccw = with looporientation(counterclockwise) loop enddef; +def loop_invisible = with style(invisible) loop enddef; +def loop_cw = with looporientation(clockwiseorientation) loop enddef; +def loop_ccw = with looporientation(counterclockwiseorientation) loop enddef; def incoming_solid = with style(solid) incoming enddef; def incoming_bold = with style(bold) incoming enddef; def incoming_dash = with style(dash) incoming enddef; def incoming_bolddash = with style(bolddash) incoming enddef; +def incoming_invisible = with style(invisible) incoming enddef; def outgoing_solid = with style(solid) outgoing enddef; def outgoing_bold = with style(bold) outgoing enddef; def outgoing_dash = with style(dash) outgoing enddef; def outgoing_bolddash = with style(bolddash) outgoing enddef; +def outgoing_invisible = with style(invisible) outgoing enddef; +def enclose_solid = with style(solid) enclose enddef; +def enclose_bold = with style(bold) enclose enddef; +def enclose_dash = with style(dash) enclose enddef; +def enclose_bolddash = with style(bolddash) enclose enddef; +def enclose_thin = with style(dash) dashsize(0.5) enclose enddef; % e.g. with fillingcolor(black) node ... vardef with@#(expr v) text e = push.@#; @# := v; e; pop.@# enddef; % e.g. light.gray, light.light.gray, ... @@ -502,9 +547,34 @@ def ltrianglepath = (trianglepath rotated 90) enddef; def btrianglepath = (trianglepath rotated 180) enddef; def rtrianglepath = (trianglepath rotated 270) enddef; def squarepath = ((0.5,-0.5)--(-0.5,-0.5)--(-0.5,0.5)--(0.5,0.5)--cycle) enddef; +def diamondpath = ((0.5,0)--(0,0.5)--(-0.5,0)--(0,-0.5)--cycle) enddef; +def urdiamondpath = ((0,0.5)--(0.5,0)--(0,0)--cycle) enddef; +def uldiamondpath = ((-0.5,0)--(0,0.5)--(0,0)--cycle) enddef; +def lrdiamondpath = ((0.5,0)--(0,-0.5)--(0,0)--cycle) enddef; +def lldiamondpath = ((0,0)--(0,-0.5)--(-0.5,0)--cycle) enddef; vardef rrectangle(expr w,h) = (((0.5w-0.25h,-0.5h)---(-0.5w+0.25h,-0.5h).. (-0.5w+0.25h,0.5h)---(0.5w-0.25h,0.5h)..cycle) xscaled (1/w) yscaled (1/h)) enddef; +vardef sqr(expr x) = ((x)*(x)) enddef; +vardef firstenclosurepoint(expr p,q) = ((ypart(p)-ypart(q)) * sqrt(sqr(enclosuremargin) / (sqr(xpart(p)-xpart(q)) + sqr(ypart(p)-ypart(q)))) + xpart(p), + (xpart(q)-xpart(p)) * sqrt(sqr(enclosuremargin) / (sqr(xpart(p)-xpart(q)) + sqr(ypart(p)-ypart(q)))) + ypart(p)) enddef; +vardef secondenclosurepoint(expr p,q) = ((ypart(p)-ypart(q)) * sqrt(sqr(enclosuremargin) / (sqr(xpart(p)-xpart(q)) + sqr(ypart(p)-ypart(q)))) + xpart(q), + (xpart(q)-xpart(p)) * sqrt(sqr(enclosuremargin) / (sqr(xpart(p)-xpart(q)) + sqr(ypart(p)-ypart(q)))) + ypart(q)) enddef; vardef enclosuresegment(expr p,q) = firstenclosurepoint(p,q)---secondenclosurepoint(p,q) enddef; +vardef enclosure(expr p) = + save enc; + save i; + path enc; + if (pair p): + enc := circlepath scaled (2*enclosuremargin) shifted point 1 of p; + else: + enc := enclosuresegment(point 0 of p, point 1 of p); + for i=1 upto length(p)-1: + enc := enc..enclosuresegment(point i of p, point i+1 of p); + endfor; + enc := enc..cycle; + fi + enc +enddef; % general appearence constants and variables @@ -516,19 +586,21 @@ def utriangle = 11 enddef; def ltriangle = 12 enddef; def btriangle = 13 enddef; def rtriangle = 14 enddef; -def box = 15 enddef; +def boxed = 15 enddef; def fixedbox = 16 enddef; -def rbox = 17 enddef; -def rfixedbox = 18 enddef; +def roundbox = 17 enddef; +def roundfixedbox = 18 enddef; +def diamond = 19 enddef; def solid = 20 enddef; -def left = 21 enddef; -def right = 22 enddef; +def lefthalf = 21 enddef; +def righthalf = 22 enddef; def bold = 30 enddef; def dash = 31 enddef; def bolddash = 32 enddef; def double = 33 enddef; -def clockwise = 40 enddef; -def counterclockwise = 41 enddef; +def invisible = 34 enddef; +def clockwiseorientation = 40 enddef; +def counterclockwiseorientation = 41 enddef; pair spacing; pair offset; @@ -557,11 +629,14 @@ numeric dashsize; numeric doublesize; numeric nodemargin; numeric arrowmargin; +numeric enclosuremargin; color bordercolor; color fillingcolor; color nodelabelcolor; color arrowcolor; color arrowlabelcolor; +color unfillcolor; +color enclosurecolor; spacing = (60,30); offset = (0,0); @@ -569,19 +644,20 @@ numbering = (0,0); size := 5; shape := circle; boxmargin := 5; -fixedboxwidth := 7; -fixedboxheight := 7; +fixedboxwidth := 14; +fixedboxheight := 14; border := solid; filling := none; style := solid; nodelabel := yes; arrowlabel := yes; unfillonarrowlabel := no; +unfillcolor := white; tipangle := 20; tipsharpness := 15; tipsize := 4; loopsize := 14; -looporientation := counterclockwise; +looporientation := counterclockwiseorientation; incominglength := 20; outgoinglength := 20; solidsize := 0.7; @@ -590,11 +666,13 @@ dashsize := 0.7; doublesize := 1.3; nodemargin := 1.5; arrowmargin := 3.8; +enclosuremargin := 5; bordercolor = black; fillingcolor = black; nodelabelcolor = black; arrowcolor = black; arrowlabelcolor = black; +enclosurecolor = gray; linecap := butt; linejoin := mitered; @@ -627,11 +705,14 @@ numeric dashsize.back[]; numeric doublesize.back[]; numeric nodemargin.back[]; numeric arrowmargin.back[]; +numeric enclosuremargin.back[]; color bordercolor.back[]; color fillingcolor.back[]; color nodelabelcolor.back[]; color arrowcolor.back[]; color arrowlabelcolor.back[]; +color unfillcolor.back[]; +color enclosurecolor.back[]; numeric spacing.count; numeric offset.count; @@ -647,6 +728,7 @@ numeric style.count; numeric nodelabel.count; numeric arrowlabel.count; numeric unfillonarrowlabel.count; +numeric unfillcolor.count; numeric tipangle.count; numeric tipsharpness.count; numeric tipsize.count; @@ -660,11 +742,13 @@ numeric dashsize.count; numeric doublesize.count; numeric nodemargin.count; numeric arrowmargin.count; +numeric enclosuremargin.count; numeric bordercolor.count; numeric fillingcolor.count; numeric nodelabelcolor.count; numeric arrowcolor.count; numeric arrowlabelcolor.count; +numeric enclosurecolor.count; spacing.count := 0; offset.count := 0; @@ -680,6 +764,7 @@ style.count := 0; nodelabel.count := 0; arrowlabel.count := 0; unfillonarrowlabel.count := 0; +unfillcolor.count := 0; tipangle.count := 0; tipsharpness.count := 0; tipsize.count := 0; @@ -693,8 +778,10 @@ dashsize.count := 0; doublesize.count := 0; nodemargin.count := 0; arrowmargin.count := 0; +enclosuremargin.count := 0; bordercolor.count := 0; fillingcolor.count := 0; nodelabelcolor.count := 0; arrowcolor.count := 0; arrowlabelcolor.count := 0; +enclosurecolor.count := 0; |