* ! Declared variable conflicts with previous vardef [Metapost] @ 2019-01-03 1:43 Fabrice Couvreur 2019-01-03 3:22 ` Henri Menke 0 siblings, 1 reply; 5+ messages in thread From: Fabrice Couvreur @ 2019-01-03 1:43 UTC (permalink / raw) To: mailing list for ConTeXt users [-- Attachment #1.1: Type: text/plain, Size: 1246 bytes --] Hi, I have a problem compiling this file. Thanks. Fabrice ###### test file ################################################ \starttext \setupbodyfont [pagella,9pt] \startMPpage[offset=2pt] 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 ############################################################# ! Declared variable conflicts with previous vardef. <to be read again> ; <*> path p, q, r, b ; pair z[] ; z[0] = (2cm,0cm) ; z[1] = (2cm,2cm) ; z[2] ... You can't use, e.g., `numeric foo[]' after `vardef foo'. Proceed, and I'll ignore the illegal redeclaration. [-- Attachment #1.2: Type: text/html, Size: 3037 bytes --] [-- Attachment #2: Type: text/plain, Size: 492 bytes --] ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: ! Declared variable conflicts with previous vardef [Metapost] 2019-01-03 1:43 ! Declared variable conflicts with previous vardef [Metapost] Fabrice Couvreur @ 2019-01-03 3:22 ` Henri Menke 2019-01-03 6:11 ` Alan Braslau 0 siblings, 1 reply; 5+ messages in thread From: Henri Menke @ 2019-01-03 3:22 UTC (permalink / raw) To: ntg-context 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[]; from your file and it will work as intended. If you insist on using your own declaration of z, then you have to stash away MetaPost's definition using save z; pair z[]; I recommend the former, just delete pair z[]; On 3/01/19 2:43 PM, Fabrice Couvreur wrote: > Hi, > I have a problem compiling this file. > Thanks. > Fabrice > > ###### test file ################################################ > \starttext > \setupbodyfont [pagella,9pt] > \startMPpage[offset=2pt] > 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 > ############################################################# > ! Declared variable conflicts with previous vardef. > <to be read again> > ; > <*> path p, q, r, b ; pair z[] ; > z[0] = (2cm,0cm) ; z[1] = (2cm,2cm) ; z[2] ... > You can't use, e.g., `numeric foo[]' after `vardef foo'. > Proceed, and I'll ignore the illegal redeclaration. > > > ___________________________________________________________________________________ > 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: ! Declared variable conflicts with previous vardef [Metapost] 2019-01-03 3:22 ` Henri Menke @ 2019-01-03 6:11 ` Alan Braslau 2019-01-03 10:31 ` Fabrice Couvreur 0 siblings, 1 reply; 5+ messages in thread From: Alan Braslau @ 2019-01-03 6:11 UTC (permalink / raw) To: Henri Menke; +Cc: mailing list for ConTeXt users On Thu, 3 Jan 2019 16:22:06 +1300 (UTC) Henri Menke <henrimenke@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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: ! Declared variable conflicts with previous vardef [Metapost] 2019-01-03 6:11 ` Alan Braslau @ 2019-01-03 10:31 ` Fabrice Couvreur 2019-01-03 11:03 ` Taco Hoekwater 0 siblings, 1 reply; 5+ messages in thread From: Fabrice Couvreur @ 2019-01-03 10:31 UTC (permalink / raw) To: mailing list for ConTeXt users [-- Attachment #1.1: Type: text/plain, Size: 2734 bytes --] 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 ;) \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.list@comcast.net> a écrit : > On Thu, 3 Jan 2019 16:22:06 +1300 (UTC) > Henri Menke <henrimenke@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 > > ___________________________________________________________________________________ [-- Attachment #1.2: Type: text/html, Size: 4495 bytes --] [-- Attachment #2: Type: text/plain, Size: 492 bytes --] ___________________________________________________________________________________ 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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: ! Declared variable conflicts with previous vardef [Metapost] 2019-01-03 10:31 ` Fabrice Couvreur @ 2019-01-03 11:03 ` Taco Hoekwater 0 siblings, 0 replies; 5+ messages in thread From: Taco Hoekwater @ 2019-01-03 11:03 UTC (permalink / raw) To: mailing list for ConTeXt users Hi, > On 3 Jan 2019, at 11:31, Fabrice Couvreur <fabrice1.couvreur@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.list@comcast.net> a écrit : > On Thu, 3 Jan 2019 16:22:06 +1300 (UTC) > Henri Menke <henrimenke@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 ___________________________________________________________________________________ ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2019-01-03 11:03 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2019-01-03 1:43 ! Declared variable conflicts with previous vardef [Metapost] Fabrice Couvreur 2019-01-03 3:22 ` Henri Menke 2019-01-03 6:11 ` Alan Braslau 2019-01-03 10:31 ` Fabrice Couvreur 2019-01-03 11:03 ` Taco Hoekwater
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).