ikiwiki/doc/bugs/footnotes-look-weird.mdwn

128 lines
5.3 KiB
Markdown

Multimarkdown footnotes are pretty useful. If they are enabled in a
wiki, they don't look so good with the default stylesheet, however, as
the references are in the same size and positioning as everything
else.
This particular wiki does not use multimarkdown, so there's no easy
way to demonstrate this here, you'll have to trust me on this. :)
The following stylesheet should be added to `style.css`:
a.footnote { vertical-align: super; font-size: xx-small; }
div.footnotes { font-size: small; }
This is a typical style that user-agents apply to the `<sup>` tag. For
example, chromium has this builtin style for `<sup>`:
vertical-align: super;
font-size: smaller;
Bootstrap uses this instead:
sup {
top: -.5em;
}
sub, sup {
position: relative;
font-size: 75%;
line-height: 0;
vertical-align: baseline;
}
I settled on `xx-small` because it's the only size that doesn't affect
line-height here. However, Bootstrap's way may be better.
At any rate, the correct way to fix this is to *avoid* custom styling
and use the `<sup>` tag for the footnote reference, as it has
*meaning* which is important to have proper semantic output (e.g. for
screen readers), as detailed in [this Stack Overflow discussion][].
--[[anarcat]]
[this Stack Overflow discussion]: http://stackoverflow.com/questions/501671/superscript-in-css-only
> ikiwiki code does not interpret Markdown or translate it into HTML.
> If I'm interpreting what you say correctly, you seem to be implying
> that you think [[!cpan Text::MultiMarkdown]] is producing incorrect
> HTML for footnotes (is an `<a>` with a `class`, should be a `<sup>`).
> If so, please report that as a MultiMarkdown bug, not an ikiwiki bug,
> or alternatively don't use MultiMarkdown.
>
> The recommended backend for the [[plugins/mdwn]] plugin is
> [[!cpan Text::Markdown::Discount]], which optionally implements
> footnotes using the same syntax as MultiMarkdown (originating in
> "PHP Markdown Extra"). However, ikiwiki doesn't currently enable
> that particular feature. Maybe it should, at least via a site-wide
> option.
>
> What remains after eliminating the MultiMarkdown bug seems to be:
> ikiwiki's default stylesheet does not contain the necessary styling
> to work around the non-semantic markup produced by the non-default
> Text::MultiMarkdown Markdown implementation. Is that an accurate
> summary?
> --[[smcv]]
>> That is an accurate summary.
>>
>> I didn't realize that Discount didn't actually support footnotes in
>> Ikiwiki by default. I guess I enabled Multimarkdown exactly for that
>> kind of stuff that was missing... It seems to me it would be
>> reasonable to enable footnotes in Ikiwiki. There's already a lot of
>> stuff that Discount does that is way more exotic (e.g. tables) and
>> non-standard (e.g. `abbr:`).
>>
>> Ideally, users would get to configure which
>> [Discount flags](http://www.pell.portland.or.us/~orc/Code/markdown/#flags)
>> are enabled in their configuration, but I understand that makes the
>> configuration more complicated and error-prone.
>>
>>> Discount enables enough features by default that adding footnotes doesn't
>>> seem bad to me. I'm also tempted by something like
>>>
>>> ```
>>> mdwn_enable: [footnotes]
>>> mdwn_disable: [alphalist, superscript]
>>> ```
>>>
>>> where the default for anything that was neither specifically enabled
>>> nor specifically disabled would be to enable everything that we don't
>>> think is a poor fit for the processing model (pandoc-style document
>>> headers) or likely to trigger by mistake (typographic quotes and
>>> [[maybe alpha lists|forum/"S."_gets_replace_by_"a."_in_my_ikiwiki]]).
>>> --[[smcv]]
>>>
>>>> Makes perfect sense to me. --[[anarcat]]
>>>
>> For example, to enable footnotes, one needs to call Discount like this:
>>
>> Text::Markdown::Discount::markdown($text, Text::Markdown::Discount::MKD_EXTRA_FOOTNOTE())
>>
>> That being said, Discount generates proper semantic markup when
>> footnotes, so this bug doesn't apply to the default Discount mode,
>> if we ignore the fact that it doesn't support footnotes at all.
>> Should I open a todo about this and the above?
>>
>> Also, it seems this *is* a bug with multimarkdown - I have
>> [reported the issue there](https://github.com/bobtfish/text-multimarkdown/issues/30).
>>
>> In the meantime, wouldn't it be better to have some styling here to
>> workaround the problem in MMD?
>>
>>> Honestly, I'd rather have ikiwiki's level of support for the non-preferred
>>> Markdown implementation be: if you are stuck on a platform with no C compiler
>>> or Perl headers, you can use the pure-Perl Markdown flavours, and they
>>> will sort of mostly work (but might not look great).
>>>
>>> I'm a little concerned that styling these rather generically-named classes
>>> might interfere with the implementations of footnotes in other Markdown
>>> implementations, or indeed non-Markdown - I wouldn't want to style
>>> `a.footnote` if the HTML produced by some other htmlize hook was
>>> `<sup><a class="footnote" ...>[1]</a></sup>` for instance.
>>> But they're probably harmless.
>>>
>>>> Alright, your call. :) At least this bug will be available as a workaround
>>>> for others that stumble upon the same problem! :) --[[anarcat]]
Note that I also make the bottom `<div>` small as well so that it has
less weight than the rest of the text. -- [[anarcat]]