GFM: GitHub Flavored Markdown において、取り消し線は ~~strikethrough~~ と表現するだけだと思っていませんか?
取り消し線におけるチルダ (~) の数
では、さっそく GFM 仕様を見てみましょう。
Strikethrough text is any text wrapped in a matching pair of one or two tildes (
~).
チルダ (~) の数は 1 つか 2 つとされています。
「取り消し線はチルダ 2 つで囲う」と覚えていた方も多いのではないでしょうか。実際、いくつかの GFM を紹介する記事では ~~ とすると書かれています。
しかし実は、現在の GFM Version 0.29-gfm (2019-04-06) において、取り消し線のチルダの数は 1 つか 2 つです。
ここで “現在の” としているのは、Version 0.29-gfm (2019-04-06) の仕様に変更が加わっているからです。
仕様の静かな更新
GFM のバージョン名は Version 0.29-gfm (2019-04-06) とされており、これは 2019 年 4 月 6 日に公開されてから変更されていません。しかし、その仕様は変更されています。
取り消し線がどのように変更されているか Wayback Machine で調べてみました。
これを見ると以下のように、2022 年 9 月 5 日から 2022 年 9 月 17 日の間に取り消し線に関して変更がありました。
-
変更前(2022 年 9 月 5 日):
Strikethrough text is any text wrapped in two tildes (
~). -
変更後(2022 年 9 月 17 日):
Strikethrough text is any text wrapped in a matching pair of one or two tildes (
~).これに加えて、3 つ以上の
~で囲った場合では取り消し線にならないことへの言及が追加されています。
そのため、変更前までは取り消し線を ~~strikethrough~~ と表現していましたが、変更後では ~strikethrough~ としても取り消し線を表現できるようになりました。(実際のところ、GFM 0.29 以前では ~strikethrough~ でも取り消し線になっていたため、後方互換を思い出したという形でしょう 1)
余談
バージョン名を更新しないなら、仕様の中身を更新するな ![]()
私は 4 年近く経ってようやく気付いたので、本当にサイレント更新はやめてほしい。
ちなみに、Qiita は GFM に準拠すると謳っていますが、~strikethrough~ としても取り消し線として解釈されないので、GFM に完全に準拠しているとは言い難いのかもしれません。
-
GFM 0.29 で
~~で囲うことのみとなったのは、他の Markdown ではH~2~OをH<sub>2</sub>Oと解釈することが多く、この競合を嫌ったのだと思われます。 ↩