「マークダウン書く時なんか崩れちゃうんだよな」ポイントをなくす

## これは何

最近マークダウン記法を使い始めたのですが、最初プレビューでよく崩れを起こして戸惑ったのでマークダウン崩れちゃうポイントと対処法についてまとめました。

## はじめに

この後マークダウン崩れちゃうんだよなポイントを書いていきますが、いちいち読んだり覚えたりするのは面倒だなという方に是非お勧めしたいのが、VS Codeの拡張機能の「[markdownlint](https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint)」です。

追加すると、マークダウンの書き方が間違えている箇所があるとビシバシ指摘してくれます。

https://marketplace.visualstudio.com/items?itemName=DavidAnson.vscode-markdownlint

間違えた書き方をすると、該当箇所に波線のアンダーラインが出て、ホバーすると「fix this ~~」と修正方法が出てきます。これをクリックすると、バグを修正してくれます。

![](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/e4897bab-ec6c-e759-9d65-4aa64f7e34af.gif)

体感ですが、これで2、3回マークダウンでまとまった文章を書けばマークダウンの書き方がかなり矯正されるのではないかと思います。

以下は`markdownlint`を使いながらMarkdown始めたての頃によく自分が引っかかったポイントをまとめたものになります。

## タイトル

### `#`の後ろにスペースを入れていない

```markdown
❌
##タイトル

⭕️
##␣タイトル
```

### タイトルの前後に改行を入れていない

```markdown
❌
# タイトル1
## タイトル2
本文

⭕️
↩︎
## タイトル
↩︎
```

### 階層構造が崩れている

階層構造が崩れていると目次が崩れる原因になります。

```markdown
❌

### Heading4

## Heading2

### Heading3

# Heading1

⭕️

# Heading1

## Heading2

### Heading3

#### Heading4

```

上記の例の目次を見比べてみると、❌の階層構造が乱れている方は目次に階層がうまく反映されておらず、⭕️の方はきちんと階層構造が反映されています。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/dd4c6220-219e-a599-4001-613731b83580.png)

階層構造は図にして考えてみるとわかりやすいです。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/c49817d3-7828-3ea5-ac3b-a904cdc48ebf.png)

#### ✅ タイトルは1段階ずつ下げていく

## テキストの装飾

### 装飾のための記号とテキストの間にスペースを入れている

太字や斜体、打ち消し線のための記号とテキストの間にスペースが入っているとこんな感じで表示が崩れます

❌

これは本文でここが** 太字 **です

これは本文でここが* 斜体 *です

これは本文でここが~~ 打ち消し線 ~~です

⭕️

これは本文でここが**太字**です

これは本文でここが*斜体*です

これは本文でここが~~打ち消し線~~です

#### ✅ 装飾のための記号とテキストの間にスペースを入れない

## リスト

### リストの前後に改行を入れていない

リストが崩れる原因は十中八九これです。

```markdown
❌
何かテキスト
- リスト
    - リスト
    - リスト
何かテキスト

⭕️
↩︎
- リスト
    - リスト
    - リスト
↩︎
```

リストは前後の列に改行が必要な為、改行を入れていないとこんな風にリストとして認識してもらえません。
- リスト
    - リスト

#### ✅ リストの前後には改行↩︎を入れる

### インデントの数がずれている

リストのリライトを重ねていたり、スペースキーでインデントを作ると起きがちです。

```markdown
❌
- リスト
␣␣- リスト
␣␣␣␣- リスト
␣␣␣- リスト

⭕️
- リスト
␣␣␣␣- リスト
␣␣␣␣␣␣␣␣- リスト
␣␣␣␣␣␣␣␣- リスト
```

インデントのスペースの数がずれているとこんな風に階層構造が正しく表示されません。

- リスト
  - リスト
    - リスト
   - リスト

#### ✅ インデントは``スペースキー``ではなく``tabキー``で設定する

### リストの階層を飛ばしている

```markdown
❌
␣␣␣␣- リスト
␣␣␣␣␣␣␣␣␣␣␣␣- リスト
␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣␣- リスト

⭕️
- リスト
␣␣␣␣- リスト
␣␣␣␣␣␣␣␣- リスト
```

リストの階層を飛ばしているとこんな感じで表示が崩れてしまいます。

    - リスト
            - リスト
                    - リスト

#### ✅ 階層を作るときは1段階ずつ階層を下げる

### 中身のないリストがある

```markdown
❌
- リスト
- 
- リスト
```

中身のないリストがあるとこんな感じで表示が崩れてしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/cbd5ffd3-1a4f-50b6-eef3-32c4d11c456a.png)

リストの中身がないときは、Enterを押すとリストが削除されるので削除しておきましょう。

#### ✅ 中身がないリストは削除する

### リスト記号の後ろに半角スペースを入れていない

```markdown
❌
-リスト
-□リスト

⭕️
-␣リスト
-␣リスト
```

リスト記号の後ろに半角スペースがなかったり全角スペースを使っているとこんな風に表示が崩れてしまいます。

-リスト
-　リスト

#### ✅ リスト記号の後ろにスペースを入れる

#### ✅ リスト記号の後ろのスペースは半角スペースを使う

### 数字付きリストの数字が飛んでいる

```markdown
❌
2. リスト
5. リスト
8. リスト

⭕️
1. リスト
2. リスト
3. リスト

⭕️
1. リスト
1. リスト
1. リスト
```

⬆️の例をプレビューで確認すると全てのリストがこのように1から始まって1ずつ増えていくリストで表示されます。

2. リスト
5. リスト
8. リスト

#### ✅ マークダウンとプレビューで数字がずれているときは数字を飛ばしていないか確認する

## コードブロック

マークダウンにはバッククォート（`）記号を使って文中にコードを挿入することができます。

### 本文中のテキストがマークダウンやHTMLの記法とかぶっている

```markdown
❌
#FigmaでTwitterに投稿！
ここの<p>テスト</p>の部分を変更したいです。
```
このようにマークダウンやHTMLの記法とかぶっているテキストをマークダウンの文中に書くと、テキストが意図しない形で変換されてしまいます。
上の例では``#``がタイトルに変換されてしまったり、pタグがHTMLに変換されてしまいます。
![image.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/0d916afa-1b34-2216-1de4-611e6cff74b8.png)

バッククォーテーション（`）で単語を囲むことでこうしたマークダウンやHTMLの記法を本文中に記述することができます。

⭕️
`#Figma`でTwitterに投稿！
ここの`<p>テスト</p>`の部分を変更したいです。

バッククォーテーションは`Shift + @`で挿入できます。

#### ✅ マークダウンやHTMLの記法とかぶるテキストはバッククォートで囲む

### コードブロックの前後に改行を入れていない

![image 14.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/577501/ce9494d2-2117-6e06-2fb5-3d07a48427fd.png)

前後に空行を入れずにコードブロックを記述するとこんな感じで表示が崩れてしまいます。

素敵なコードの説明文
```
素敵なコード
```
素敵なコードの説明文

#### ✅ コードブロックの前後には改行↩︎を入れる

## 引用文

マークダウンにはブロッククォート記号`>`を用いて引用文を入れることができます。

### 引用文の前後に改行を入れていない

```markdown
❌
本文
> 引用文
本文

⭕️
↩︎
> 引用文
↩︎
```

引用文の前後に改行がないとこんな風に表示が崩れてしまいます。

本文
> 引用文
本文

#### ✅ 引用文の前後には改行↩︎を入れる

### 引用文を空白行で区切っている

空白行のみで区切られた引用文はツールによって1つの引用文として扱われたり2つの引用文として扱われたりする為想定外の表示の原因になります。

```
❌

> 引用文1

> 引用文2

---

⭕️ 2つの引用文を区切りたい場合

> 引用文1

空白行以外の行を入れる

> 引用文

⭕️ 1つの引用文として扱う場合

> 引用文1
> 
> 引用文2

```

#### ✅ 引用文を区切る場合は空白行以外で区切る

#### ✅ 引用文中に空白行を入れる場合もブロッククォート記号`>`を用いる