Max Nikulin <maniku...@gmail.com> writes: >> No, **bold** it is not a bug. The parser is recursive with inner markup >> not "seeing" its parent. So, we first parse the outer bold and then >> continue parsing the contents separately, as *bold*. > > I just find the following rather confusing: > > (org-export-string-as "**bold**" 'html t) > "<p>\n<b><b>bold</b></b></p>\n" > (org-export-string-as "**inner* outer*" 'html t) > "<p>\n<b>*inner</b> outer*</p>\n" > (org-export-string-as "*outer *inner**" 'html t) > "<p>\n<b>outer <b>inner</b></b></p>\n" > (org-export-string-as "*begin *inner* end*" 'html t) > "<p>\n<b>begin *inner</b> end*</p>\n"
Maybe. It is indeed one of the edge cases. But it is following the parser logic, which is (1) first matching markup is parser; (2) parsing recursive contents is isolated. >> Be it another way, /*bold italic*/ would also not be allowed as >> we demand bol, whitespace, -, (, {, ', or " before the markup: >> https://orgmode.org/worg/org-syntax.html#Emphasis_Markers > > Certainly /*b*/ should work, but nested bold was a surprise for me. I > believed that nesting is strictly prohibited. The case of underscores is > even more tricky due to ambiguity of underline and subscript. It is not strictly prohibited on purpose. It is just a consequence of how the parser works that nesting <end> constructs is almost impossible, except certain edge cases like **b**. > P.S. Juan Manuel at certain moment discovered that pandoc allows nesting > for *b1 *b2* b3*. Which is a bug in pandoc. I think we discussed this topic a number of times in the past - our markup is a compromise between simplicity for users and simplicity of the parser. This works in many simple cases, but edge cases become problematic. Workarounds have been discussed as well. For example, creole markup and generic inline markup constructs (your idea with direct AST and the idea with inline special blocks). -- Ihor Radchenko // yantar92, Org mode contributor, Learn more about Org mode at <https://orgmode.org/>. Support Org development at <https://liberapay.com/org-mode>, or support my work at <https://liberapay.com/yantar92>