Currently, the img directive creates a <img>
tag for images (which is fine) but also creates a traditional
<table>
structure around it to show the caption when the caption
parameter is passed. This is less fine.
HTML5 introduced the <figure>
element, and particularly the
figcaption element, which is particularly relevant here. It is
not filtered by the html scrubber (or so it seems), so it's currently
possible to use it in Markdown documents already, like so:
<figure>
<img src="example.jpg" />
<figcaption>Foo</figcaption>
</figure>
This is standard and works well, except there are bits of style
missing, because Ikiwiki's stylesheet assumes its peculiar table image
layout. doc/style.css
, for example, has this:
.img caption {
font-size: 80%;
caption-side: bottom;
text-align: center;
}
... which is a good start to format tables, but is ineffective for
figcaption
. In my tests, I have used this to good effect:
.img caption, figcaption {
text-align: center;
/* assuming that relative size is more responsive than arbitrary percentages */
font-size: smaller;
caption-side: bottom;
}
The figcaption
stylesheet reuses the <table>
semantics so the
above just works, as far as I can tell.
The final step would be to unmangle the <img>
directive output. It
should output the above <figure>
snippet if HTML5 is enabled in the
wiki.
Otherwise we might also want to get rid of the <table>
stuff
anyways, as most examples out there use a <div>
in HTML4. Here is an
example from the W3C or bootstrap. The former suggests
something like this:
<div class="figure">
<p><img src="example.jpg" />
<p>Foo
</div>
The CSS, in that case, would be simply:
div.figure {
text-align: center;
font-size: smaller;
}
The double-<p>
is what allows pushing the caption upwards with CSS
in their later example, with this CSS:
div.figure {
display: table;
}
div.figure p + p {
display: table-caption;
caption-side: top;
}
The <div>
mechanism seems much simpler than the current table-based
markup. I'd be happy to provide patches to do the above if there's
interest. Considering that most of my images are hosted outside of
ikiwiki, I cannot use of the img
directive in the first place so I
don't need to patch img.pm
and don't want to carry yet another
delta... But I could sure use upstreaming the CSS fixes.
Thanks! -- anarcat