* vardef with @# not working within context
@ 2009-09-21 11:56 Matthijs Kooijman
2009-09-21 12:20 ` Aditya Mahajan
0 siblings, 1 reply; 10+ messages in thread
From: Matthijs Kooijman @ 2009-09-21 11:56 UTC (permalink / raw)
To: Mailing list for ConTeXt users
[-- Attachment #1.1: Type: text/plain, Size: 1254 bytes --]
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 xy@# = (@#,@#) 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
[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
[-- Attachment #2: Type: text/plain, Size: 487 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://tex.aanhet.net
archive : https://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: vardef with @# not working within context
2009-09-21 11:56 vardef with @# not working within context Matthijs Kooijman
@ 2009-09-21 12:20 ` Aditya Mahajan
2009-09-21 13:42 ` Hans Hagen
0 siblings, 1 reply; 10+ messages in thread
From: Aditya Mahajan @ 2009-09-21 12:20 UTC (permalink / raw)
To: mailing list for ConTeXt users
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
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: vardef with @# not working within context
2009-09-21 12:20 ` Aditya Mahajan
@ 2009-09-21 13:42 ` Hans Hagen
2009-09-21 15:38 ` Aditya Mahajan
2009-09-22 8:50 ` Matthijs Kooijman
0 siblings, 2 replies; 10+ messages in thread
From: Hans Hagen @ 2009-09-21 13:42 UTC (permalink / raw)
To: mailing list for ConTeXt users
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
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: vardef with @# not working within context
2009-09-21 13:42 ` Hans Hagen
@ 2009-09-21 15:38 ` Aditya Mahajan
2009-09-21 17:42 ` Hans Hagen
2009-09-22 8:50 ` Matthijs Kooijman
1 sibling, 1 reply; 10+ messages in thread
From: Aditya Mahajan @ 2009-09-21 15:38 UTC (permalink / raw)
To: mailing list for ConTeXt users
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 xy@# = (@#,@#) enddef ;
draw xy0mm -- xy10mm;
\stopMPcode
\stoptext
! Illegal parameter number in definition of \@MPG@@@.
<to be read again>
vardef xy@## .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
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: vardef with @# not working within context
2009-09-21 15:38 ` Aditya Mahajan
@ 2009-09-21 17:42 ` Hans Hagen
2009-09-21 18:04 ` Aditya Mahajan
0 siblings, 1 reply; 10+ messages in thread
From: Hans Hagen @ 2009-09-21 17:42 UTC (permalink / raw)
To: mailing list for ConTeXt users
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 xy@# = (@#,@#) 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
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: vardef with @# not working within context
2009-09-21 17:42 ` Hans Hagen
@ 2009-09-21 18:04 ` Aditya Mahajan
2009-09-21 18:30 ` Hans Hagen
0 siblings, 1 reply; 10+ messages in thread
From: Aditya Mahajan @ 2009-09-21 18:04 UTC (permalink / raw)
To: mailing list for ConTeXt users
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 xy@# = (@#,@#) 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 xy@## = (@##,@##) 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
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: vardef with @# not working within context
2009-09-21 18:04 ` Aditya Mahajan
@ 2009-09-21 18:30 ` Hans Hagen
2009-09-21 18:34 ` Aditya Mahajan
0 siblings, 1 reply; 10+ messages in thread
From: Hans Hagen @ 2009-09-21 18:30 UTC (permalink / raw)
To: mailing list for ConTeXt users
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 xy@# = (@#,@#) 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 xy@## = (@##,@##) 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
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: vardef with @# not working within context
2009-09-21 18:30 ` Hans Hagen
@ 2009-09-21 18:34 ` Aditya Mahajan
0 siblings, 0 replies; 10+ messages in thread
From: Aditya Mahajan @ 2009-09-21 18:34 UTC (permalink / raw)
To: mailing list for ConTeXt users
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 xy@# = (@#,@#) 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 xy@## = (@##,@##) 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
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: vardef with @# not working within context
2009-09-21 13:42 ` Hans Hagen
2009-09-21 15:38 ` Aditya Mahajan
@ 2009-09-22 8:50 ` Matthijs Kooijman
2009-09-22 9:56 ` Hans Hagen
1 sibling, 1 reply; 10+ messages in thread
From: Matthijs Kooijman @ 2009-09-22 8:50 UTC (permalink / raw)
To: mailing list for ConTeXt users
[-- Attachment #1.1: Type: text/plain, Size: 449 bytes --]
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
[-- Attachment #1.2: Digital signature --]
[-- Type: application/pgp-signature, Size: 197 bytes --]
[-- Attachment #2: Type: text/plain, Size: 487 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://tex.aanhet.net
archive : https://foundry.supelec.fr/projects/contextrev/
wiki : http://contextgarden.net
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 10+ messages in thread
* Re: vardef with @# not working within context
2009-09-22 8:50 ` Matthijs Kooijman
@ 2009-09-22 9:56 ` Hans Hagen
0 siblings, 0 replies; 10+ messages in thread
From: Hans Hagen @ 2009-09-22 9:56 UTC (permalink / raw)
To: mailing list for ConTeXt users
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
___________________________________________________________________________________
^ permalink raw reply [flat|nested] 10+ messages in thread
end of thread, other threads:[~2009-09-22 9:56 UTC | newest]
Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2009-09-21 11:56 vardef with @# not working within context Matthijs Kooijman
2009-09-21 12:20 ` Aditya Mahajan
2009-09-21 13:42 ` Hans Hagen
2009-09-21 15:38 ` Aditya Mahajan
2009-09-21 17:42 ` Hans Hagen
2009-09-21 18:04 ` Aditya Mahajan
2009-09-21 18:30 ` Hans Hagen
2009-09-21 18:34 ` Aditya Mahajan
2009-09-22 8:50 ` Matthijs Kooijman
2009-09-22 9:56 ` Hans Hagen
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).