Hi,


> On 3 Jan 2019, at 11:31, Fabrice Couvreur <fabrice1.couvr...@gmail.com> wrote:
> 
> Hi,
> It is true that Alan has already answered this question but I was misled 
> because the file that I compiled without problem is this one, even leaving 
> pair z[ ] (I can think that it is because of this instruction   z := point 
> 3.6 of p ;)

It works because of the "pair z” statement. Attempted explanation:


Metapost variable names are built up hierarchically. When you
say “path p” or “color V.Q” or “numeric z[]” or “vardef z”, it 
changes the type of just the last segment, not other segments
(not even the immediately preceding one).

Note that in the case of z[], the last variable segment is the 
common subscript [] not the ‘alphabetical segment’ “z”. 

It is actually OK to say e,g, 

        pair z ; 
        color z[];
        numeric z[].a;
        z := point 3.6 of p ;
        z[1] := red;
        path z[]; % z[1] is now undefined again after this line,
                  % but z[].a is still numeric
        z[3] = unitsquare;
        z[2].a = 5;

Redeclaration of intermediate segments works for all declarations except 
for ‘vardef’. The reason behind this is that vardefs can have suffixes, 
and metapost does not really differentiate between vardefs defined with
and without suffixes (except when called). Of course actual suffixes 
would interfere with the parsing of any potentially following name 
segments, which is why re-declarations ‘below’ a vardef’d segment are 
illegal.

I hope that makes sense, it is not the easiest thing to explain.

Best wishes,
Taco 


> 
> \starttext
> \startMPpage[offset=2pt]
>      path p, q, r, b ; pair z ;
>      p := unitsquare scaled 4cm ;
>      z := point 3.6 of p ;
>      q := z--urcorner p ;
>      r := z--urcorner p-- reverse bottomboundary p--cycle ;
>      b := reverse bottomboundary p ; 
>      %r := q -- reverse bottomboundary p -- cycle ; definition of Hans
>      draw b--q withpen pencircle scaled 1mm withcolor red ;
>      draw p ;
>      draw r numberstriped (.25,10,5) withcolor magenta ;
>      label.llft("B", p) ;
>      label.lrt("C", p) ;
>      label.ulft("A", p) ;
>      label.urt("D", p) ;
>      label.lft("M", p) ;
> \stopMPpage
> \startMPpage[offset=2pt]
>   defaultfont := "texgyrepagella-regular*default" ;
>   defaultscale :=0.8 ;
>   path p, q, r, b ; pair z[];
>   p  := unitsquare xyscaled (9cm,5cm) ;
>   z[0] = (2cm,0cm) ;
>   z[1] = (2cm,2cm) ;
>   z[2] = (0cm,2cm) ;
>   q := llcorner p--z[0]--z[1]--z[2]--cycle ;
>   r := unitsquare xyscaled (7cm,3cm) shifted(2cm,2cm) ;
>   b := z[2]--z[1]--ulcorner r--urcorner p--lrcorner r--z[1]--z[0]--llcorner 
> p--cycle ;
>   draw p ;
>   draw b numberstriped (.25,15,5) withcolor magenta ;
>   label.llft("A", p) ;
>   label.lrt("D", p) ;
>   label.ulft("C", p) ;
>   label.urt("B", p) ;
>   label.lft("M", z[2]) ;
>   label.ulft("N", z[1]) ;
>   label.bot("P", z[0]) ;
>   label.top("J", ulcorner r) ;
>   label.rt("I", lrcorner r) ;
>   label.bot(btex $x$ etex,(llcorner p+z[0])/2);
>   label.lft(btex $x$ etex,(llcorner p+z[2])/2);
> \stopMPpage
>    
> \stoptext
> 
> Le jeu. 3 janv. 2019 à 07:12, Alan Braslau <braslau.l...@comcast.net> a écrit 
> :
> On Thu, 3 Jan 2019 16:22:06 +1300 (UTC)
> Henri Menke <henrime...@gmail.com> wrote:
> 
> > z is a MetaPost intrinsic, something along the lines of
> > 
> >     vardef z@#=(x@#,y@#) enddef;
> > 
> > so you can't use the same name for a pair.  Actually you can simply
> > delete the declaration
> > 
> >    pair z[];
> 
> I had already told Fabrice this a couple of days ago...
> 
> Alan
> ___________________________________________________________________________________
> If your question is of interest to others as well, please add an entry to the 
> Wiki!
> 
> maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
> archive  : https://bitbucket.org/phg/context-mirror/commits/
> wiki     : http://contextgarden.net
> ___________________________________________________________________________________
> ___________________________________________________________________________________
> If your question is of interest to others as well, please add an entry to the 
> Wiki!
> 
> maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
> webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
> archive  : https://bitbucket.org/phg/context-mirror/commits/
> wiki     : http://contextgarden.net
> ___________________________________________________________________________________

Taco Hoekwater
Elvenkind BV




___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / http://www.ntg.nl/mailman/listinfo/ntg-context
webpage  : http://www.pragma-ade.nl / http://context.aanhet.net
archive  : https://bitbucket.org/phg/context-mirror/commits/
wiki     : http://contextgarden.net
___________________________________________________________________________________

Reply via email to