Hi, 

You've troubleshot it pretty well yourself, and you've run into a big 
difference between WikiText and the kind of programming you might be used 
to. To quote the docs <https://tiddlywiki.com/#Macros>, "Macros are in fact 
just parameterised variables". Things don't get evaluated everywhere we put 
them; generally they get substituted, and only at particular points do they 
get evaluated. It takes some adjustment to get used to.

The way I look at it, it's not so much that  "{{!!dico}}" and "{{!!index}}" 
are *not* wikified (evaluated) within the double square bracket. It's more 
that TW *does* wikify the non-linked ones to render the tiddler. 

The *text* widget is a useful way of checking whether your macro outputs 
something that TiddlyWiki will wikify into the result you want.

Try

<$text text=<<spaceDemo dico:{{!!dico}} index:{{!!index}}>> />

to see what it really looks like when TiddlyWiki goes to wikify it for 
rendering:

space demo for "{{!!index}}" in "{{!!dico}}" [[{{!!dico}}]] (not 
[[{{!!dico}}|{{!!index}}]])

As you've noticed,  a text reference like that doesn't work inside the 
double square brackets of the link shorthand. If you type that out into a 
tiddler, you'll get the same result as if you run the macro. 

The most obvious way I can think of to get the output you expect is to 
write out the link widget:

\define spaceDemo2(dico index)
space demo for "$index$" in "$dico$" <$link to=$dico$/> (not 
<$link to=$index$>$dico$</$link>)
\end

Best,
Chris
On Tuesday, April 6, 2021 at 9:19:36 AM UTC-4 jn.pierr...@gmail.com wrote:

> I wanted to check if having space within a dictionary name or an index 
> name was a go or a no-go for tw. So I wrote a macro to check it up (BTW, 
> the answer is: no, it doesn't matter).
>
> OK, now for what I want to say here, the macro will only print its 
> arguments as is and as a wiki link.
>
>
> \define spaceDemo(dico index)
> !!! space demo for "$index$" in "$dico$" [[$dico$]] (not 
> [[$dico$|$index$]])
> \end
>
> and now the invocation was
>
> <<spaceDemo dico:"mon autre dico" index:"ma citation">>
> <<spaceDemo dico:"mon autre dico" index:"ma-citation">>
> <<spaceDemo dico:"mon-autre-dico" index:"ma citation">>
> <<spaceDemo dico:"mon-autre-dico" index:"ma-citation">>
>
> and I got what I thought I would get, like
>
> space demo for "ma citation" in "mon autre dico" mon autre dico (not mon 
> autre dico)
>
> witg tge first link pointing to "mon autre dico" and the second to "ma 
> citation".
>
> But then I added two fields within thi tidder calling the macro:
> * a "dico" field containing "mon autre dico"
> * an "index" field containing "ma citation"
>
> and I called the macro thus:
>
> <<spaceDemo dico:{{!!dico}} index:{{!!index}}>>
>
> and then, surprise!, I got:
>
> space demo for "ma citation" in "mon autre dico" {{!!dico}} (not 
> {{!!dico}})
>
> with the first link to the litteral "{{!dico}}" and the second to 
> "{{!!index}}".
>
> I would have thought the argument transmitted would have been interpreted 
> before calling the macro. And why then this differences of treatment? What 
> is the mechanism responsible of this?
>
> Practical interest, BTW: with" [[$arg$]]" you can see 
> how really was written the argument "arg" when the macro was called.
>
> Regards,
>
>
>
>
>
>
>

-- 
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 tiddlywiki+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/tiddlywiki/ef0e765c-e9c5-4565-b35b-03a45ccf8cc8n%40googlegroups.com.

Reply via email to