HTML
Markdown
AdventCalendar
マークアップ
Markup

Markdown日本語対応星取表 —— 強調箇所は分かち書き必須か

More than 1 year has passed since last update.


強調の前後にスペースが無い場合、解釈が異なる

Markdownは英語のように単語を分かち書きする言語を前提としている部分があります。

改行の扱い(スペースになる)がその典型ですが、強調マークアップに関しても分かち書きが前提になっていることがあるようなので、状況を確認しました。

問題になるのは、日本語のような分かち書きしない言語での、

それが*重要*です

のようなマークアップです。

*重要*」の前後にスペースがありませんが、強調と解釈されることを期待しています。

Markdownを受け付けるツールやサイトは多いですが、こういったケースの扱いは大きく分けると以下3通りのようです。


  • 期待通り:

    <p>それが<em>重要</em>です</p> となる

  • 概ね期待通り:

    ただし、それが*重要!!*です のように強調される文字列の端が単語を分割する記号だった場合には、強調マークアップと判断されず、<p>それが*重要!!*です</p> となってしまう

  • 期待と異なる:

    強調マークアップと判断されず、<p>それが*重要*です</p> となってしまう


上のようなケースで強調マークアップに使われる記号 *_、それらの連続である **__***___ に関して、どのように解釈されるかまとめたのが下の表です。

*
_
**
__
***
___

Markdown
ok
ok
ok
ok
ok
ok

Cmark
(ok)
NG
(ok)
NG
NG
NG

Commonmark.js
(ok)
NG
(ok)
NG
NG
NG

Marked
ok
ok
ok
ok
ok
ok

Markdown-it
(ok)
NG
(ok)
NG
NG
NG

Blackfriday
NG
NG
ok
ok
ok
ok

Pandoc
ok
NG
ok
NG
ok
NG

Stack Overflow
(ok)
NG
(ok)
NG
NG
NG

Qiita
ok
ok
ok
ok
ok
ok

Hatena Blog
ok
ok
ok
ok
ok
ok

ok: 期待通り

(ok): 概ね期待通り

NG: 期待と異なる

ちょっと厄介な印象ですが、本家MarkdownやMarkedは全ての表記がOKで、日本語で使いやすそうです。

QiitaやHatena Blogはさすがに日本語ユーザー向けにしっかり対応してますね。

どこで使っても出来るだけ崩れないマークアップを目指す場合、



  • _ より * を使った方が期待通り強調として解釈されやすい

  • 最も期待通りに解釈されやすいのは **重要** のように ** を使う強調

あたりを考慮するといいかも知れません。

もちろん、日本語でも前後にスペースを入れてしまう、という手もあります。


使用したMarkdownパーサー

オプションの指定は行わず、デフォルトで試しています。

(Stack Overflow、Qiita、Hatena Blogに関しては、投稿フォームのプレビューで本日2017年12月2日に試しました)


この記事のライセンス

クリエイティブ・コモンズ・ライセンス

この記事はCC BY 4.0(クリエイティブ・コモンズ 表示 4.0 国際 ライセンス)の元で公開します。