Macro in a macro with optional argument
Hello, I try to define automatically some macros to include cliparts in my TikZ drawings and I've defined the following macro : \def\clipart#1#2{% \expandafter\def\csname tk#1\endcsname{\dosingleempty\expandafter\csname dotk#1\endcsname}% \expandafter\def\csname dotk#1\endcsname[##1]{\iffirstargument\image{cisco/#1}{##1}\else\image{cisco/#1}{#2}\fi} } \clipart{pc}{.8} % defines the macro \tkpc to include the picture "cisco/pc" The issue arises when I use the newly defined \tkpc : the argument is not optional and I have to put \kpc[.5] for example. To add insult to injury, the value passed in argument is ignored also : \iffirtargument return always false... Do you have any idea ? Best regards, Pierre-François. -- Bonnefoi Pierre-Francois | E-mail : bonnefoi@unilim.fr http://p-fb.net/ Universite de Limoges, Laboratoire XLIM | Tel : 06 28 18 03 38 123 av Albert Thomas | Mrs. Peel, we're needed... 87060 Limoges CEDEX - FRANCE | The Avengers.
On Tue, Feb 12, 2019 at 8:27 AM Pierre-Francois Bonnefoi < bonnefoi.pf@gmail.com> wrote:
Hello,
I try to define automatically some macros to include cliparts in my TikZ drawings and I've defined the following macro :
\def\clipart#1#2{% \expandafter\def\csname tk#1\endcsname{\dosingleempty\expandafter\csname dotk#1\endcsname}% \expandafter\def\csname dotk#1\endcsname[##1]{\iffirstargument\image{cisco/#1}{##1}\else\image{cisco/#1}{#2}\fi} }
\clipart{pc}{.8} % defines the macro \tkpc to include the picture "cisco/pc"
The issue arises when I use the newly defined \tkpc : the argument is not optional and I have to put \kpc[.5] for example. To add insult to injury, the value passed in argument is ignored also : \iffirtargument return always false...
Do you have any idea ?
Best regards, Pierre-François.
could be that \dosingleempty sees \expandafter ? try \expandafter\def\csname tk#1\endcsname{\dosingleempty{\expandafter\csname dotk#1\endcsname}}% -- luigi
Pierre-Francois Bonnefoi schrieb am 11.02.19 um 12:35:
Hello,
I try to define automatically some macros to include cliparts in my TikZ drawings and I've defined the following macro :
\def\clipart#1#2{% \expandafter\def\csname tk#1\endcsname{\dosingleempty\expandafter\csname dotk#1\endcsname}% \expandafter\def\csname dotk#1\endcsname[##1]{\iffirstargument\image{cisco/#1}{##1}\else\image{cisco/#1}{#2}\fi} }
\clipart{pc}{.8} % defines the macro \tkpc to include the picture "cisco/pc"
The issue arises when I use the newly defined \tkpc : the argument is not optional and I have to put \kpc[.5] for example. To add insult to injury, the value passed in argument is ignored also : \iffirtargument return always false...
Do you have any idea ?
\define[2]\clipart {\setuvalue{tk#1}{\dotripleempty\doclipart[#1][#2]}} % \def\doclipart[#1][#2][#3]% % {\image{cisco/#1}{\ifthirdargument#3\else#2\fi}} \def\doclipart[#1][#2][#3]% {\ifthirdargument \image{cisco/#1}{#3}% \else \image{cisco/#1}{#2}% \fi} Wolfgang
participants (3)
-
luigi scarso
-
Pierre-Francois Bonnefoi
-
Wolfgang Schuster