[HN Gopher] Overlapping Markup
       ___________________________________________________________________
        
       Overlapping Markup
        
       Author : ripe
       Score  : 47 points
       Date   : 2026-01-18 10:37 UTC (12 hours ago)
        
 (HTM) web link (en.wikipedia.org)
 (TXT) w3m dump (en.wikipedia.org)
        
       | tannhaeuser wrote:
       | FIY the Wikipedia article rightfully says SGML CONCUR usage is
       | uncommon, but compared to the stated alternatives for overlapping
       | markup, it's basically the only one that is tolerable to use as
       | actual markup language for use with a text editor. This is what
       | it looks like:                   <!doctype d -- element decls for
       | a, b ... -->         <!doctype e -- element decls for a, x ...
       | -->         <(d|e)a>           <(d)b>bla bla <(e)x>bla </(d)b>
       | bla</(e)x>         </(d|e)a>
       | 
       | where the third "bla" span is marked up with overlap.
       | 
       | Basically, in case you've ever wondered, SGML CONCUR is the only
       | reason that the element name in end-element tags needs to be
       | specified. In strictly nested markup (XML) it always must refer
       | to the most recently opened start-element tag hence it's
       | redundant. SGML actually has "</>" but it didn't make it into
       | XML.
        
       | jancsika wrote:
       | Music has a lot of these. A fugue subject may traverse the
       | boundaries between two metric groupings, _and_ between two clear
       | sections of the form.
       | 
       | There are also non-contiguous examples. Smack in the middle of
       | Wagner's _Tristan und Isolde_ you hear the final theme that
       | signals they are about to win the main boss battle. Then one of
       | the NPCs screams _right before the final chord_. The audience
       | instead hears the danger signal and realizes it was a fake boss
       | and there 's another two hours of game play. Only when Isolde
       | beats the final boss at the end do we get the final chord.
        
         | ramblurr wrote:
         | It also affects the digital markup of music. Music can't be
         | expressed with a tree structure as there is lots of overlap.
         | 
         | A simple example is a slur. It crosses bar lines. <bar1> ...
         | <slur> ... </bar1> ... </slur> <bar2> uhoh!
         | 
         | In fact there are many mutually incompatible hierarchies in
         | music engraving.
         | 
         | It's funny though MusicXML is a popular interchange format, but
         | internally looks nothing like what one would naively expect.
        
           | afandian wrote:
           | Ditto control flow. It's tempting to think of repeat bars, DC
           | al fines, codas etc hierarchical structures when in fact they
           | are imperative GOTOs and always have been.
        
       | bfgeek wrote:
       | HTML parsing supports some of this, e.g:                 text
       | <b>bold <i>bold-italic</b> italic</i>
        
         | dorianmariecom wrote:
         | that becomes:                   text <b>bold <i>bold-
         | italic</i></b><i> italic</i>
        
           | moralestapia wrote:
           | Yeah. After parsing.
        
       | gegtik wrote:
       | Naturally this makes me think of the brilliant Justine Tunney's
       | https://justine.lol/ape.html /
       | https://github.com/jart/cosmopolitan / https://redbean.dev/
        
       | frizlab wrote:
       | Wow I did not know this thing that was a bit hard to implement in
       | my project[0] had a name!
       | 
       | Basically you can, with my lib, define the tokens `*` and `_` (or
       | anything else) to resp. make text go bold and italic, and use it
       | as such:                   This text is *bold _and* italic_!
       | 
       | [0] https://github.com/Frizlab/XibLoc (Readme is lacking...)
        
       ___________________________________________________________________
       (page generated 2026-01-18 23:00 UTC)