Henning Hraban Ramm schrieb am 28.10.2024 um 16:26:
Am 28.10.24 um 16:18 schrieb Wolfgang Schuster:
Henning Hraban Ramm schrieb am 28.10.2024 um 12:18:
Hi, I’m trying to use a command line argument in parameter names – color name in the example below, variable namespace in my actual project.
I guess I need more expansion, but where?
Or what’s the problem here?

"""
\setupbodyfont[plex,18pt]

% set \OEM to the parameter name, fall back to "fiee"
\expanded\define\OEM{\expanded\doifelsedocumentargument{OEM} {\expanded\getdocumentargument{OEM}}{fiee}}

\doifelsedocumentargument{OEM}
   {\def\OEM{\getdocumentargument{OEM}}}
   {\def\OEM{fiee}}

or

\def\OEM
   {\ifempty{\getdocumentargument{OEM}}%
      fiee%
    \else
      \getdocumentargument{OEM}%
    \fi}

Thank you, both works (of course, if you say so…).
Also in my actual project.

Can you explain why
\define\OEM{\doifelsedocumentargument{OEM}{\getdocumentargument{OEM}}{fiee}}
doesn’t?

1. \define creates an unexpandable command which can't be used as name placeholder for \color.

%%%% begin example
\starttext

\protected\def\GELB{yellow} % \defineexpandable\GELB{...}
          \def\BLAU{blue}   %           \define\BLAU{...}

\color[\GELB]{yellow}

\color[\BLAU]{blue}

\stoptext
%%%% end example

2. The \doifelsedocumentargument command is not expandable as well which makes it impossible to use it to pick the correct color name within the argument of \color.

Wolfgang
___________________________________________________________________________________
If your question is of interest to others as well, please add an entry to the 
Wiki!

maillist : ntg-context@ntg.nl / 
https://mailman.ntg.nl/mailman3/lists/ntg-context.ntg.nl
webpage  : https://www.pragma-ade.nl / https://context.aanhet.net (mirror)
archive  : https://github.com/contextgarden/context
wiki     : https://wiki.contextgarden.net
___________________________________________________________________________________

Reply via email to