Islands in the byte stream

Technical notes by a software engineer

CommonMark v0.28 のイマイチなところ

作業メモとして。なお、 CommonMark ≒ GitHub Flavored Markdown くらいの感覚で書いてます(実際にはGFMはCommonMark + いくつかの独自拡張)。

膠着語分かち書きしない言語におけるスペースで区切られないトークンとインライン記法について

膠着語というのは、日本語や中国語のように単語と単語の間にスペースをいれないタイプの言語です。 膠着語は分かち書きしない言語のことではありませんでした…。素直に「分かち書きしない言語」というのがよさそうです。

CommonMarkは分かち書きしなくてもそれなりに動くように定義されていますが、エッジケースではまだ思った通りに動かないということがあるようです。

ひとつ仕様のバグっぽいのをみつけたので起票しましたが、これ系の話は中国語のコンテキストで議論されてるっぽいので見守り。

Non-spaced tokens with emphasis seems not parsed as expected · Issue #488 · commonmark/CommonMark

脚注記法

CommonMarkには(ついでにGFMにも)脚注記法は存在しません。存在しないこと自体はまあいいのですが、PandocやQiitaなど多数のmarkdownサービスで採用されている脚注記法(以下pandoc’s footnotes)が、CommonMarkのLink reference definitionという記法と一部かぶっていて意味がまったく違うため、CommonMarkとの互換性をとるとpandoc’s footnotesを実装することが不可能であるという問題があります。

これはCommonMarkの仕様を変えるかpandoc’s footnotesを諦めるかの二択なので困ったものです。

これも起票済み。

Footnote extensions vs Link Reference Definition - Extensions - CommonMark Discussion

参考スレッド:

見出し記号(#)のあとにスペースが必要な件

CommonMark以前の仕様が未定義だったGFMでは #foo で見出しになっていたのが、CommonMark化後のGFMで見出しにならないのはだいたいこのせいです。これはおそらく、GitHubで多用するissue記法(#123)と明確に区別するためにスペースを必要にしたのだと思います。GitHubはCommonMark仕様策定に噛んでますからね。

これは受け入れるしかないのですが、影響範囲がそれなりにあるのでどうしたものかなという感じです。