Re: [NTG-context] vardef with @# not working within context
Hi Hans, it's more that tex likes to duplicate the # internally Ah, yes, I've seen some mentions on @## in error messages, but I thought that was just part of the way metapost handled @#. Apparently not :-) how about adding let @## = @# ; to mp-tool.mp (you need to remake the context format in mkiv or the metafun format in mkii) This worked for me in MkIV. Will this be included in the next beta? Gr. Matthijs signature.asc Description: Digital signature ___ 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 ___
Re: [NTG-context] vardef with @# not working within context
Matthijs Kooijman wrote: Hi Hans, it's more that tex likes to duplicate the # internally Ah, yes, I've seen some mentions on @## in error messages, but I thought that was just part of the way metapost handled @#. Apparently not :-) how about adding let @## = @# ; to mp-tool.mp (you need to remake the context format in mkiv or the metafun format in mkii) This worked for me in MkIV. Will this be included in the next beta? sure - Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl - ___ 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 ___
[NTG-context] vardef with @# not working within context
Hi all, I've been fiddling around with metaobj a bit, but defining my own objects failed. After some debugging, I've reduced this to a metapost / context MkIV issue (so no metaobj specifics anymore). What happens, is that vardefs that use @# as a placeholder in their name only work when they are defined in an external .mp file. When I define them inside context (\startMPcode or \startMPinclusions), I get funny errors (mostly Isolated expression, which seems to mean that the macro is not defined). I suspect this is because the way context extracts metapost code. Is this a fundamental problem, or could it be fixed? The following context file will easily reproduce the problem: \starttext \startMPcode vardef foo = draw (0mm,0mm)--(10mm,10mm); enddef; foo; vardef x...@# = (@#,@#) enddef ; draw xy0mm -- xy10mm; \stopMPcode \stoptext Running this file gives the following (first) error: mplib | mp terminal: xy0mm ! Improper `addto'. To illustrate that this is specific to the use of @#, I've included the foo vardef which does work properly. When I move the vardef xy.. line to a separate file, say foo.mp, and replace it with input foo;, the errors disappear. Gr. Matthijs signature.asc Description: Digital signature ___ 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 ___
Re: [NTG-context] vardef with @# not working within context
On Mon, 21 Sep 2009, Matthijs Kooijman wrote: Hi all, I've been fiddling around with metaobj a bit, but defining my own objects failed. After some debugging, I've reduced this to a metapost / context MkIV issue (so no metaobj specifics anymore). What happens, is that vardefs that use @# as a placeholder in their name only work when they are defined in an external .mp file. When I define them inside context (\startMPcode or \startMPinclusions), I get funny errors (mostly Isolated expression, which seems to mean that the macro is not defined). I suspect this is because the way context extracts metapost code. Is this a fundamental problem, or could it be fixed? You need to escape # inside any \startMPwhatever...\stopMPwhatever. This has to do with the fact that TeX processes the contents before they are passed to metapost, and TeX does not like isolated #. Try replacing # with \# or \string# Hans, does it make sense to parse all MP environments (ironically except \startMPenvironment, but that is almost redundant in MKIV) with a separate catcode regime where # has catcode other. After all, it is highly unlikely that anyone will define a TeX maco inside \startMPcode or \startMPinclusions. 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 ___
Re: [NTG-context] vardef with @# not working within context
Aditya Mahajan wrote: On Mon, 21 Sep 2009, Matthijs Kooijman wrote: Hi all, I've been fiddling around with metaobj a bit, but defining my own objects failed. After some debugging, I've reduced this to a metapost / context MkIV issue (so no metaobj specifics anymore). What happens, is that vardefs that use @# as a placeholder in their name only work when they are defined in an external .mp file. When I define them inside context (\startMPcode or \startMPinclusions), I get funny errors (mostly Isolated expression, which seems to mean that the macro is not defined). I suspect this is because the way context extracts metapost code. Is this a fundamental problem, or could it be fixed? You need to escape # inside any \startMPwhatever...\stopMPwhatever. This has to do with the fact that TeX processes the contents before they are passed to metapost, and TeX does not like isolated #. Try replacing # with \# or \string# it's more that tex likes to duplicate the # internally Hans, does it make sense to parse all MP environments (ironically except \startMPenvironment, but that is almost redundant in MKIV) with a separate catcode regime where # has catcode other. After all, it is highly unlikely that anyone will define a TeX maco inside \startMPcode or \startMPinclusions. how about adding let @## = @# ; to mp-tool.mp (you need to remake the context format in mkiv or the metafun format in mkii) seems to work Hans - Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl - ___ 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 ___
Re: [NTG-context] vardef with @# not working within context
On Mon, 21 Sep 2009, Hans Hagen wrote: how about adding let @## = @# ; to mp-tool.mp (you need to remake the context format in mkiv or the metafun format in mkii) seems to work Works in mkiv, but in mkii I get an error with \starttext \startMPcode vardef foo = draw (0mm,0mm)--(10mm,10mm); enddef; foo; vardef x...@# = (@#,@#) enddef ; draw xy0mm -- xy10mm; \stopMPcode \stoptext ! Illegal parameter number in definition of \...@mpg@@@. to be read again vardef x...@## .m,10mm); enddef; draw ... = (@##,@##) enddef ; \dodostartuseMPgraphic ...useMPgraphic {#1}{#2}{#3 }}\elabelgroup \dostartMPcode ...graphic {@@}#1\stopuseMPgraphic \useMPgraphic {@@}\endgroup l.9 \stopMPcode 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 ___
Re: [NTG-context] vardef with @# not working within context
Aditya Mahajan wrote: On Mon, 21 Sep 2009, Hans Hagen wrote: how about adding let @## = @# ; to mp-tool.mp (you need to remake the context format in mkiv or the metafun format in mkii) seems to work Works in mkiv, but in mkii I get an error with \starttext \startMPcode vardef foo = draw (0mm,0mm)--(10mm,10mm); enddef; foo; vardef x...@# = (@#,@#) enddef ; draw xy0mm -- xy10mm; \stopMPcode \stoptext ! Illegal parameter number in definition of \...@mpg@@@. to be read again hm, weird. did you remake the metafun format? - Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl - ___ 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 ___
Re: [NTG-context] vardef with @# not working within context
On Mon, 21 Sep 2009, Hans Hagen wrote: Aditya Mahajan wrote: On Mon, 21 Sep 2009, Hans Hagen wrote: how about adding let @## = @# ; to mp-tool.mp (you need to remake the context format in mkiv or the metafun format in mkii) seems to work Works in mkiv, but in mkii I get an error with \starttext \startMPcode vardef foo = draw (0mm,0mm)--(10mm,10mm); enddef; foo; vardef x...@# = (@#,@#) enddef ; draw xy0mm -- xy10mm; \stopMPcode \stoptext ! Illegal parameter number in definition of \...@mpg@@@. to be read again hm, weird. did you remake the metafun format? I did. Just to verify, I created an mp file beginfig(1) ; vardef x...@## = (@##,@##) enddef ; draw xy0mm -- xy10mm; endfig; end; and ran mpost -progname=metafun test.mp which gives me the correct output, so @## is defined. I am using 2009.09.18. I'll try later with the latest beta. 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 ___
Re: [NTG-context] vardef with @# not working within context
Aditya Mahajan wrote: On Mon, 21 Sep 2009, Hans Hagen wrote: Aditya Mahajan wrote: On Mon, 21 Sep 2009, Hans Hagen wrote: how about adding let @## = @# ; to mp-tool.mp (you need to remake the context format in mkiv or the metafun format in mkii) seems to work Works in mkiv, but in mkii I get an error with \starttext \startMPcode vardef foo = draw (0mm,0mm)--(10mm,10mm); enddef; foo; vardef x...@# = (@#,@#) enddef ; draw xy0mm -- xy10mm; \stopMPcode \stoptext ! Illegal parameter number in definition of \...@mpg@@@. to be read again hm, weird. did you remake the metafun format? I did. Just to verify, I created an mp file beginfig(1) ; vardef x...@## = (@##,@##) enddef ; draw xy0mm -- xy10mm; endfig; end; and ran mpost -progname=metafun test.mp which gives me the correct output, so @## is defined. I am using 2009.09.18. I'll try later with the latest beta. in supp-mps.mkii, patch: \long\def\runtimeobeyMPlines {\catcode35=11\relax % goodie \ifx\rawcharacter\undefined better than nothing - Hans Hagen | PRAGMA ADE Ridderstraat 27 | 8061 GH Hasselt | The Netherlands tel: 038 477 53 69 | fax: 038 477 53 74 | www.pragma-ade.com | www.pragma-pod.nl - ___ 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 ___
Re: [NTG-context] vardef with @# not working within context
On Mon, 21 Sep 2009, Hans Hagen wrote: Aditya Mahajan wrote: On Mon, 21 Sep 2009, Hans Hagen wrote: Aditya Mahajan wrote: On Mon, 21 Sep 2009, Hans Hagen wrote: how about adding let @## = @# ; to mp-tool.mp (you need to remake the context format in mkiv or the metafun format in mkii) seems to work Works in mkiv, but in mkii I get an error with \starttext \startMPcode vardef foo = draw (0mm,0mm)--(10mm,10mm); enddef; foo; vardef x...@# = (@#,@#) enddef ; draw xy0mm -- xy10mm; \stopMPcode \stoptext ! Illegal parameter number in definition of \...@mpg@@@. to be read again hm, weird. did you remake the metafun format? I did. Just to verify, I created an mp file beginfig(1) ; vardef x...@## = (@##,@##) enddef ; draw xy0mm -- xy10mm; endfig; end; and ran mpost -progname=metafun test.mp which gives me the correct output, so @## is defined. I am using 2009.09.18. I'll try later with the latest beta. in supp-mps.mkii, patch: \long\def\runtimeobeyMPlines {\catcode35=11\relax % goodie \ifx\rawcharacter\undefined better than nothing This works. 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 ___