Hi David, I hope you feel better now ;)
So the only thing I can do here is : Try to explain how the parser algorithm works, so that you can see, why it behaves the way as it does. =========================== The tiddlywiki parser knows 2 types of rules - block rules and - inline rules For the whole tiddler content it always starts with "block mode" and starts to "scan" for "block rules". If a block is found it switches to "inline mode" and starts to look for "inline rules". ... I call this the "context" here in the post. Here comes some ''bold'' text. It detects the whole text as a paragraph "block" ... which will be rendered like this: -> Here comes some *bold* text As HTML code it looks like this: <p>Here comes some <strong>bold</strong> text.</p> The P element defines the "block" The ''bold'' wikitext is an *inline-rule* per definition. That make sense. right? -------------- So the question now is, how does the parser detect different blocks of text, to create paragraph tags around them. ... We all know this rule: 2 NewLines .. will split 2 text elements into separated paragraphs. eg: paragraph 1 paragraph 2 That makes sense. right? --------------------- text 1 text 2 Doesn't contain 2 new-lines but 1 ... It's inline mode and it will be translated to the following HTML code <p>text 1 text 2</p> You can see the new-line is still there BUT HTML ignores whitespace per specification. ... So the browser shows the text like this text 1text 2 So it's not a TW problem, it's the browser that follows the rules. ... TiddlyWiki has a wikitext rule to compensate this problem <https://tiddlywiki.com/#Hard%20Linebreaks%20in%20WikiText>. Hard-Linebreaks """ text 1 text 2 """ Which creates this: <p>text 1<br>text 2<br></p> which tells the browser to add line-breaks. A second method to achieve a similar result is Hard linebreaks with CSS <https://tiddlywiki.com/#Hard Linebreaks with CSS:[[Hard Linebreaks with CSS]] [[Hard Linebreaks with CSS - Example]]>. Which works well for wikitext. It may cause problems with macros and widgets. ================================ You may say: BUT the following macros only have 1 new-line between them. <<macrocall>> <<macrocall2>> I say: Yes, you are right. ... But *macros *and *transclusions *have to be able to inherit the mode from their context. ... eg: \define bold(text) ''$text$'' Here comes some <<bold bold>> text. The parser starts at line 1 character 1 and detects some text. The "end marker" for text blocks is .... 2 new-lines After the block of text is detected, it switches to *inline-mode*. It detects the macro within this context, so the macro is rendered in inline mode. The text is translated to the following HTML code: <p>Here comes some <strong>bold</strong> text.</p> That's what we expect. Right? ---------- As written above macros and transclusions do inherit the mode from their context. Back to your example: Let's have a look at the "context" here. ... \define macrocall() aaa \define macrocall2() bbb <<macrocall>> <<macrocall2>> The context is the whole tiddler body, which starts as block mode. Then the parser detects the start << and the end >> of a macro in line 1. ... There is no other info The mode is still block mode, that's why the macro is rendered in block mode like this: <p>aaa</p> The parser detects macro start / end in line 2, which will be rendered like this: <p>bbb</p> That may not be, what you expected, but the behaviour is consistent. Humans may see the 2 macros as 1 block. ... The wiki parser does not. Try this a) xxxx - <<macrocall>> <<macrocall2>> and this b) xxxx - <<macrocall>> <<macrocall2>> ------------ add a) You can see that it detects some text in front of macro 1. So macro 1 and macro 2 will be part of the text block and will be rendered in inline-mode HTML output <p>xxxx - aaa bbb </p> add b) Now the xxxx text and macro 1 belong together and macro 2 gets it's own block. HTML output <p>xxxx - aaa</p><p>bbb</p> -------------------- If you compare the HTML output with my descriptions, you will see the algorithm is consistent. ... BUT it may not always be what we expect. I hope my descriptions are good enough to show how the "block" and "inline" detection works. have fun! mario -- 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/777abd37-9df9-4b28-a5da-db1af00172dbn%40googlegroups.com.