   _resolve_html_attributes = ( facets ) ->
     assign {}, ( { "#{facet.name}": ( _cast_attribute_value facet.value ) } for facet in facets )...
   #.........................................................................................................
-  R[ '_parse_html_open_tag' ] = ( source ) ->
+  R[ '_parse_html_open_or_lone_tag' ] = ( source ) ->
+    if is_lone_tag = source.endsWith '/>'
+      position  = 'lone'
+      source    = source[ ... source.length - 2 ] + '>'
+    else
+      position  = 'begin'
     tree    = PARSE5.parseFragment source
     throw new Error get_message source unless ( cns = tree[ 'childNodes' ] ).length is 1
     cn = cns[ 0 ]
     throw new Error get_message source unless cn[ 'childNodes' ]?.length is 0
-    return [ 'begin', cn[ 'tagName' ], ( _resolve_html_attributes cn[ 'attrs' ] ), ]
+    return [ position, cn[ 'tagName' ], ( _resolve_html_attributes cn[ 'attrs' ] ), ]
     # return [ 'begin', cn[ 'tagName' ], cn[ 'attrs' ][ 0 ] ? {}, ]
   #.........................................................................................................
   R[ '_parse_html_block' ] = ( source ) ->

    .pipe @_PRE.$flatten_inline_tokens                S
    .pipe @_PRE.$flatten_image_tokens                 S
    .pipe @_PRE.$reinject_html_blocks                 S
    # .pipe D.$observe ( event ) => debug '©1', rpr event
    .pipe @_PRE.$rewrite_markdownit_tokens            S
    # .pipe @_PRE.$define_brackets                      S
    .pipe @_PRE.$custom_entities                      S
    .pipe @_PRE.$spurious_ampersand                  S

              when 'end'
                if name is 'p' then send [ '.', name, null, meta, ]
                else                send [ ')', name, null, meta, ]
              when 'lone'
                send [ '.', name, null, meta, ]
              else throw new Error "unknown HTML tag position #{rpr position}"
          #.................................................................................................
          else
