Joe,

Using Mohamads suggestion of using macrocall is one way to pass a value to 
a macro when that value comes from another macro or variable. It is however 
possible to reference the value in <<text>> without putting it in the 
parameters as $(text)$ (inside the macro)

\define foo()
fooStart $(text)$ fooStop
\end

As long as you have set <<text>> this will work.

There are ways to test if text is set and provide a default value if it is 
not as well.

Regards
Tony


On Sunday, 20 January 2019 06:59:55 UTC+11, Joe Armstrong wrote:
>
>
> I have two macros 
>
> \define text()
> A line of text
> \end
>
> \define foo(x)
> fooStart $x$ fooStop
> \end
>
> So
>
> <<text>> is replaced by  "A line of text"
>
> and 
>
> <<foo "abc">> is replaced by "Start abc fooStop"
>
> But <<foo <<text>> >>
>
> is replaced by "fooStart <<text fooStop >>"
>
> And NOT "fooStart A line of text fooStop" as I had expected.
>
> After a lot of head scratching I realised that this means that the 
> argument (x) to foo is the
> string "<<text" ie the first occurrence of ">>" to the left
> of the start "<<" of the macro and not the second occurrence. 
>
> ie. "<<" and ">>" do not properly nest as I had expected.
>
> This seems like a pretty big pothole for a beginner to fall into ...
>
> So what is the accepted idiom for using a macro result
> as the input argument to another macro - how does one chain macro calls 
> together?
>
> Cheers
>
> /Joe
>
>

-- 
You received this message because you are subscribed to the Google Groups 
"TiddlyWiki" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].
Visit this group at https://groups.google.com/group/tiddlywiki.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/10e8b2bd-fcff-4610-b714-3e3b9f52748e%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to