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.