Macro argument handling problem!
Hi, I try this example from the wiki page System Macros/Argument handling: \def\dodefinesomething[#1][#2]% {\getparameters[\??xx#1][#2]} \def\definesomething% {\dodoubleargumentwithset\dodefinesomething} \starttext \definesomething[alfa][variable=test] \stoptext Running this yields ! Undefined control sequence I'm trying to write a few macros with optional delimited arguments with key-value sets and started reading the appropriate pages, but can't figure out why this example fails to run. Anybody any idea? Regards, Gerard Verhaag
Am 21.04.2011 um 12:28 schrieb Verhaag, G.C.H.M.:
Hi,
I try this example from the wiki page System Macros/Argument handling:
\def\dodefinesomething[#1][#2]% {\getparameters[\??xx#1][#2]}
\def\definesomething% {\dodoubleargumentwithset\dodefinesomething}
\starttext \definesomething[alfa][variable=test] \stoptext
Running this yields
! Undefined control sequence
I'm trying to write a few macros with optional delimited arguments with key-value sets and started reading the appropriate pages, but can't figure out why this example fails to run.
Anybody any idea?
I guess the message comes from your namespace which is in this form only allowed in unprotected mode, to enter you need \unprotect before and \protect after your command declarations. Another problem is that you use a system namespace (two “?” and two letters) but for modules we use now four “?” and also more than two letter, e.g. \def\????something{@@@@something} \def\definesomething {\dodoubleargumentwithset\dodefinesomething} \def\dodefinesomething[#1][#2]% {\getparameters[\????something#1][#2]} You should also take a look at the \definenamespace command which creates the \define… and \setup… commands for you: - http://wiki.contextgarden.net/Module_Namespaces - http://tex.stackexchange.com/questions/15157/how-to-make-a-ruler/15185#15185 Wolfgang
On Thu, Apr 21, 2011 at 1:32 PM, Wolfgang Schuster
Am 21.04.2011 um 12:28 schrieb Verhaag, G.C.H.M.:
Hi,
I try this example from the wiki page System Macros/Argument handling:
\def\dodefinesomething[#1][#2]% {\getparameters[\??xx#1][#2]}
\def\definesomething% {\dodoubleargumentwithset\dodefinesomething}
\starttext \definesomething[alfa][variable=test] \stoptext
Running this yields
! Undefined control sequence
I'm trying to write a few macros with optional delimited arguments with key-value sets and started reading the appropriate pages, but can't figure out why this example fails to run.
Anybody any idea?
I guess the message comes from your namespace which is in this form only allowed in unprotected mode, to enter you need \unprotect before and \protect after your command declarations
! Undefined control sequence. system > tex > error on line 8 in file test.tex: Undefined control sequence ... 1 \unprotect 2 \def\definesomething% 3 {\dodoubleargumentwithset\dodefinesomething} 4 \def\dodefinesomething[#1][#2]% 5 {\getparameters[\??xx#1][#2]} 6 \protect 7 \starttext 8 >> \definesomething[alfa][variable=test] 9 \stoptext 10 11 12 <argument> \??xx alfa \setsomevalue #1#2->\@EA \def \csname #1 #2\endcsname \p!doassign ...EAEA \setsomevalue \fi \fi {#1}{#2} {#3} \xprocesscommaitem ...@relax@ #1==\empty \@relax@ \@EAEAEA \xprocesscommaite... \xdogetparameters #1]->\xprocesscommaitem #1,] ,\@relax@ \next1 #1,->\@@dodowithsetcommand {#1} \doprocesscommaitem ... l.8 \definesomething[alfa][variable=test] -- luigi
Am 21.04.2011 um 13:35 schrieb luigi scarso:
On Thu, Apr 21, 2011 at 1:32 PM, Wolfgang Schuster
wrote: Am 21.04.2011 um 12:28 schrieb Verhaag, G.C.H.M.:
Hi,
I try this example from the wiki page System Macros/Argument handling:
\def\dodefinesomething[#1][#2]% {\getparameters[\??xx#1][#2]}
\def\definesomething% {\dodoubleargumentwithset\dodefinesomething}
\starttext \definesomething[alfa][variable=test] \stoptext
Running this yields
! Undefined control sequence
I'm trying to write a few macros with optional delimited arguments with key-value sets and started reading the appropriate pages, but can't figure out why this example fails to run.
Anybody any idea?
I guess the message comes from your namespace which is in this form only allowed in unprotected mode, to enter you need \unprotect before and \protect after your command declarations
! Undefined control sequence.
system > tex > error on line 8 in file test.tex: Undefined control sequence ...
1 \unprotect 2 \def\definesomething% 3 {\dodoubleargumentwithset\dodefinesomething} 4 \def\dodefinesomething[#1][#2]% 5 {\getparameters[\??xx#1][#2]} 6 \protect 7 \starttext 8 >> \definesomething[alfa][variable=test] 9 \stoptext 10 11 12
<argument> \??xx alfa \setsomevalue #1#2->\@EA \def \csname #1 #2\endcsname \p!doassign ...EAEA \setsomevalue \fi \fi {#1}{#2} {#3} \xprocesscommaitem ...@relax@ #1==\empty \@relax@ \@EAEAEA \xprocesscommaite... \xdogetparameters #1]->\xprocesscommaitem #1,] ,\@relax@ \next1 #1,->\@@dodowithsetcommand {#1} \doprocesscommaitem ... l.8 \definesomething[alfa][variable=test]
\definenamespace [something] [ type=module, name=something, command=yes] \starttext \definesomething[alfa][variable=test] \stoptext Wolfgang
On 04/21/2011 01:32 PM, Wolfgang Schuster wrote:
Am 21.04.2011 um 12:28 schrieb Verhaag, G.C.H.M.:
Hi,
I try this example from the wiki page System Macros/Argument handling:
\def\dodefinesomething[#1][#2]% {\getparameters[\??xx#1][#2]}
\def\definesomething% {\dodoubleargumentwithset\dodefinesomething}
\starttext \definesomething[alfa][variable=test] \stoptext
Running this yields
! Undefined control sequence
I'm trying to write a few macros with optional delimited arguments with key-value sets and started reading the appropriate pages, but can't figure out why this example fails to run.
Anybody any idea?
I guess the message comes from your namespace which is in this form only allowed in unprotected mode, to enter you need \unprotect before and \protect after your command declarations. Another problem is that you use a system namespace (two “?” and two letters) but for modules we use now four “?” and also more than two letter, e.g.
\def\????something{@@@@something}
\def\definesomething {\dodoubleargumentwithset\dodefinesomething}
\def\dodefinesomething[#1][#2]% {\getparameters[\????something#1][#2]}
You should also take a look at the \definenamespace command which creates the \define… and \setup… commands for you:
- http://wiki.contextgarden.net/Module_Namespaces - http://tex.stackexchange.com/questions/15157/how-to-make-a-ruler/15185#15185
Wolfgang
Hi, Thanks for the tips and the references to the appropriate wiki pages! Regards, Gerard Verhaag
participants (3)
-
luigi scarso
-
Verhaag, G.C.H.M.
-
Wolfgang Schuster