diff options
Diffstat (limited to 'metapost/context/base/mpiv/mp-node.mpiv')
-rw-r--r-- | metapost/context/base/mpiv/mp-node.mpiv | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/metapost/context/base/mpiv/mp-node.mpiv b/metapost/context/base/mpiv/mp-node.mpiv index c7b0bcabe..fdd308ad1 100644 --- a/metapost/context/base/mpiv/mp-node.mpiv +++ b/metapost/context/base/mpiv/mp-node.mpiv @@ -21,17 +21,25 @@ boolean context_node ; context_node := true ; % returns a pair suffix if the path is unknown vardef makenode@#(suffix p)(text t) = - save i ; numeric i ; + save i, b ; numeric i ; string b ; for a = t : if unknown i : % first argument is the index i = a ; - if not picture p.pic[i] : picture p.pic[] ; fi - if not pair p.pos[i] : pair p.pos[] ; fi + if isarray p : % % note that one needs to declare "path p[] ; picture p[]pic[] ;" % before calling node() if one is to use a pseudo-array for p % because "picture p1.pic[] ;" is not a valid syntax! % + % The following works, but is a bit awkward... + % + b := prefix p ; + if not picture p.pic[i] : scantokens("picture " & b & "[]pic[] ;") ; fi + if not pair p.pos[i] : scantokens("pair " & b & "[]pos[] ;") ; fi + else : + if not picture p.pic[i] : picture p.pic[] ; fi + if not pair p.pos[i] : pair p.pos[] ; fi + fi else : if known p.pic[i] : addto p.pic[i] also @@ -140,7 +148,7 @@ vardef nodeboundingpoint@#(suffix p)(expr i) = fi enddef ; -% returns pair: scaled laboff direction +% returns pair: scaled laboff direction vardef relative@#(expr s) = (mfun_laboff@# scaled s) |