Weird Fieldstack problem
![](https://secure.gravatar.com/avatar/117a058bed6945e7fa1b40ff2f6e7aa7.jpg?s=120&d=mm&r=g)
Hi, I've written the following test file: ====================== \setupcolors[state=start] \setuppagenumbering[state=stop] \setupinteraction [state=start] \starttext \MPdrawingdonetrue \startMPdrawing draw (0,0)--(2cm,2cm); \stopMPdrawing \definesymbol[aa][\getMPdrawing] \startMPdrawing draw (2cm,2cm)--(2cm,0); \stopMPdrawing \definesymbol[bb][\getMPdrawing] \startMPdrawing draw (0,0)--(2cm,0); \stopMPdrawing \definesymbol[cc][\getMPdrawing] \definefieldstack[somemap][aa,bb,cc][height=fit,width=fit,frame=on] \fieldstack[somemap] \goto{here} [JS(Walk_Field{somemap})] \stoptext ====================== It seems that the fieldstack does not work. Is there anything wrong? -- Best Regards Chen ---------------------------------------------------------------- Zhi-chu Chen | Shanghai Synchrotron Radiation Facility No. 2019 | Jialuo Rd. | Jiading | Shanghai | P.R. China tel: 086 21 5955 3405 | zhichu.chen.googlepages.com | www.sinap.ac.cn ----------------------------------------------------------------
![](https://secure.gravatar.com/avatar/c5ae4f9aa0d3a9bd5376e92b322c3e50.jpg?s=120&d=mm&r=g)
On Fri, 8 Jun 2007, Zhichu Chen wrote:
Hi,
I've written the following test file:
====================== \setupcolors[state=start] \setuppagenumbering[state=stop] \setupinteraction [state=start]
\starttext
\MPdrawingdonetrue
\startMPdrawing draw (0,0)--(2cm,2cm); \stopMPdrawing \definesymbol[aa][\getMPdrawing]
\startMPdrawing draw (2cm,2cm)--(2cm,0); \stopMPdrawing
\definesymbol[bb][\getMPdrawing]
\startMPdrawing draw (0,0)--(2cm,0); \stopMPdrawing
\definesymbol[cc][\getMPdrawing]
\definefieldstack[somemap][aa,bb,cc][height=fit,width=fit,frame=on]
\fieldstack[somemap] \goto{here} [JS(Walk_Field{somemap})]
\stoptext ======================
It seems that the fieldstack does not work. Is there anything wrong?
I haven't tested this, but I think that all elements in the fieldstack should have the same bounding box. Look at the widget manual, where Hans shows how to make sure that all elements have the same bounding box. Aditya
![](https://secure.gravatar.com/avatar/117a058bed6945e7fa1b40ff2f6e7aa7.jpg?s=120&d=mm&r=g)
Hi Aditya,
Actually, they should have the same boundingbox, the first MPdrawing
environment draws a line from (0,0) to (2cm,2cm) and the sequence MPdrawing
environments just add two lines that are in the previous boundingbox.
I know what's happening now. \definesymbol doesn't define a symbol
from \getMPdrawing at once.
On 6/8/07, Aditya Mahajan
On Fri, 8 Jun 2007, Zhichu Chen wrote:
Hi,
I've written the following test file:
====================== \setupcolors[state=start] \setuppagenumbering[state=stop] \setupinteraction [state=start]
\starttext
\MPdrawingdonetrue
\startMPdrawing draw (0,0)--(2cm,2cm); \stopMPdrawing \definesymbol[aa][\getMPdrawing]
\startMPdrawing draw (2cm,2cm)--(2cm,0); \stopMPdrawing
\definesymbol[bb][\getMPdrawing]
\startMPdrawing draw (0,0)--(2cm,0); \stopMPdrawing
\definesymbol[cc][\getMPdrawing]
\definefieldstack[somemap][aa,bb,cc][height=fit,width=fit,frame=on]
\fieldstack[somemap] \goto{here} [JS(Walk_Field{somemap})]
\stoptext ======================
It seems that the fieldstack does not work. Is there anything wrong?
I haven't tested this, but I think that all elements in the fieldstack should have the same bounding box. Look at the widget manual, where Hans shows how to make sure that all elements have the same bounding box.
Aditya
___________________________________________________________________________________ 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://tex.aanhet.net archive : https://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net
___________________________________________________________________________________
-- Best Regards Chen ---------------------------------------------------------------- Zhi-chu Chen | Shanghai Synchrotron Radiation Facility No. 2019 | Jialuo Rd. | Jiading | Shanghai | P.R. China tel: 086 21 5955 3405 | zhichu.chen.googlepages.com | www.sinap.ac.cn ----------------------------------------------------------------
![](https://secure.gravatar.com/avatar/c5ae4f9aa0d3a9bd5376e92b322c3e50.jpg?s=120&d=mm&r=g)
Quoting Zhichu Chen
Hi Aditya,
Actually, they should have the same boundingbox, the first MPdrawing environment draws a line from (0,0) to (2cm,2cm) and the sequence MPdrawing environments just add two lines that are in the previous boundingbox.
I know what's happening now. \definesymbol doesn't define a symbol from \getMPdrawing at once.
Yes, \definesymbol[a][b] is roughly equal to \def\a{b}, for example \starttext \def\something{aa} \definesymbol[aa][\something] \symbol[aa] \def\something{bb} \symbol[aa] \stoptext This is what is also happening in your case. You need to go back to the definebuffer and processbuffer as suggested in metafun manual. I do not know if it makes sense to have a \edef version of definesymbol. In any case, getting expansion to work with \getMPdrawing is going to be difficult. Aditya
![](https://secure.gravatar.com/avatar/117a058bed6945e7fa1b40ff2f6e7aa7.jpg?s=120&d=mm&r=g)
Hi Aditya,
In my situation, I can't use buffer conveniently. So is there an easy way to
\includeMPgraphic recurrently? I've tried
====================================
\newcount\steps
%%%%%%%% repeat the following block several times
\advance\steps\plusone
\startuseMPgraphics{step\the\steps}
. . . % Some random graphics
\stopuseMPgraphic
%%%%%%%%%%%%%%%%%%%%%%%%%
\startuseMPgraphic{aa}
\dorecurse{\the\steps}
{\includeMPgraphic{step\recurselevel}}
\stopuseMPgraphic
====================================
but, it's not working.
On 6/9/07, Aditya Mahajan
Quoting Zhichu Chen
: Hi Aditya,
Actually, they should have the same boundingbox, the first MPdrawing environment draws a line from (0,0) to (2cm,2cm) and the sequence MPdrawing environments just add two lines that are in the previous boundingbox.
I know what's happening now. \definesymbol doesn't define a symbol from \getMPdrawing at once.
Yes, \definesymbol[a][b] is roughly equal to \def\a{b}, for example
\starttext
\def\something{aa}
\definesymbol[aa][\something] \symbol[aa]
\def\something{bb} \symbol[aa]
\stoptext
This is what is also happening in your case. You need to go back to the definebuffer and processbuffer as suggested in metafun manual.
I do not know if it makes sense to have a \edef version of definesymbol. In any case, getting expansion to work with \getMPdrawing is going to be difficult.
Aditya
___________________________________________________________________________________ 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://tex.aanhet.net archive : https://foundry.supelec.fr/projects/contextrev/ wiki : http://contextgarden.net
___________________________________________________________________________________
-- Best Regards Chen ---------------------------------------------------------------- Zhi-chu Chen | Shanghai Synchrotron Radiation Facility No. 2019 | Jialuo Rd. | Jiading | Shanghai | P.R. China tel: 086 21 5955 3405 | zhichu.chen.googlepages.com | www.sinap.ac.cn ----------------------------------------------------------------
participants (2)
-
Aditya Mahajan
-
Zhichu Chen