読者です 読者をやめる 読者になる 読者になる

Panda Noir

JavaScript の限界を究めるブログです。

マークダウンで間違えがちなところ

(この記事はQiitaで僕が書いたものを移行した記事です。記事中のコメントはQiitaの該当記事を参照ください)

この投稿を持ってQiitaへの投稿は終わりとさせていただきます。そして、今まで書いた記事(この記事ふくむ)をすべてブログへ移行します。そのお知らせのついでの記事です。内容はペラッペラです。

見出し(heading)に関する注意点

スペースを#と見出しの間にはさみます。

まず、見出しは以下のように書きます

# heading
this is a dummy text.

# heading2

* list1
* list2

このように、#とheadingの間は1つ以上のスペースをはさみます。タブはNGです。

(ただし、CommonMarkではそのように決められていますが、ほとんどの実装(Qiitaも含む)ではスペースがなくてもとりあえず見出しとして動きます。しかし、Qiitaからブログへ移行した際などに正常に動かなくなる場合があることを考えるとやはりスペースを入れておいたほうがいいです)

#とheadingの間のスペースは長さに関係なく全て無視されます。

ちなみに、#の前には0〜3個のスペースを置くことができます。

とじ#なるものがあります

誰も知らなそうな仕様ですが、とじ#が存在します。

# heading ##
## heading2 #
### heading ##########

このように任意の数の#を行末に置くことができます。ただし、headingとの間に1つ以上スペースが必要です。タブはNGです。

見出しの直後は改行いらないです

いらない、というとやや不適切ですが基本的にはいらないです。

# heading
this is a dummy text.

ただし、直前に改行が必要なものがマークダウンには存在します。だから、それのための改行をする場合はあります。

# heading

* list1
* list2

このようにリストは改行が必要なので見出し直後でも改行します。それ以外の場合はすべて改行は不要です(あっても無視されます)。

末尾にスペースを2つ並べると改行になります。

これは知らない人、結構多そうですね。

例えば下のようなケースの場合、普通なら改行されずに表示されます。

て
す
と

…はずですが、Qiitaだとなぜか改行されますね…はてなブログでは改行されずにスペースになるのですが…

まあ気を取り直して、これを改行させるのにこうしている人いませんか?

て

す

と

これだと段落として区切られてしまいます。だから「て」と「す」の間に空行ができます。

このように段落を作るのではなく、ただ改行を1つはさみたいときは末尾にスペースを2つ置きます。

て(スペース)(スペース)
す(スペース)(スペース)
と(スペース)(スペース)

これで意図したとおりに表示されます。

インラインコード表示とブロックコード表示を区別しよう

これゴッチャにしてる人あまりいませんかね。まあでも僕はやっちゃってたので書いておきます。

マークダウンでコードを示すには2通りの書き方があります。以下の2つです(もっとありますが、とりあえず説明したいのがこの2つなのでツッコミなしで)。

this is
```
block
```
code.

this is `inline` code.

このように、ブロック要素としてのコードはバッククォート3つ、インライン要素としてのコードはバッククォート1つ(もしくは2つ)で書くのが大原則です。僕の昔の記事ではなぜかインラインのコードなのにバッククォート3つになってたりして大変でした…

ブロック要素としてのコードと段落の間は空行を挟まなくていい…らしい

CommonMarkによると、

Fenced code blocks can interrupt paragraphs, and can be followed directly by paragraphs, without a blank line between:

訳すと

「囲まれたコードブロックは、間に空行を挟むことなく、段落を途中でさまたげることができ、また、直接後ろに段落を続けることができます。」

と書いてあります。つまり、

paragraph1
```
code block
```
paragraph2

とすることができます。できますが、Qiitaだと場合によってはこれでアウトとなることがあります。よく法則がわからないのでアレですが、とりあえず空行を挟むのがいいと思います。余分な空行は無視されるだけなので。