@@ -868,10 +868,13 @@ idx = 1 fbimg = { elt = 'img'; --fallback attrs = { - alt = ''; + alt = obj.props.desc or obj.props.detail or ''; + title = obj.props.detail; src = uri; + width = obj.props.width; + height = obj.props.height; }; } else idx = #ctr.nodes end table.insert(ctr.nodes, idx, { @@ -972,9 +975,30 @@ rtype[2](src, top) end end local ft = flatten(top) - return ft + local cap = b.cap or obj.props.desc or obj.props.detail + if b.mode == 'inline' then + -- TODO insert caption + return ft + else + local prop = {} + if b.mode == 'open' then + prop.open = true + end + return tag('details', prop, catenate { + tag('summary', {}, + cap and ( + -- the block here should really be the relevant + -- ref definition if an override caption isn't + -- specified, but oh well + sr.htmlSpan(spanparse( + cap, b.origin + ), b, s) + ) or ''); + ft; + }) + end end function block_renderers.macro(b,s) local all = renderSubdoc(b.doc)