Qiita の Note 記法をリストにネストして遊ぼう
この遊びは近いうちに修正され、遊べなくなる可能性があります。
リストにネストされた Note 記法の問題点
Qiita の Note 記法をリストにネストすると、不思議なことが起こります。
- `note info`
:::note info
ここは `note info` です。
下に謎の `::` が表示されてしまいます。
:::
- `note warn`
:::note warn
`:::` で Note の終了を宣言しなくても、Note 記法は閉じるようになります。
- `note alert`
:::note alert
`:::` で Note の終了を宣言しても、ネストされたブロックは Note 内に含まれてしまいます。
:::
ここは Note の外ですが、Note の中に含まれてしまいます。
-
note info
ここは
note info
です。
下に謎の::
が表示されてしまいます。
:: -
note warn
:::
で Note の終了を宣言しなくても、Note 記法は閉じるようになります。 -
note alert
:::
で Note の終了を宣言しても、ネストされたブロックは Note 内に含まれてしまいます。
::ここは Note の外ですが、Note の中に含まれてしまいます。
この問題はすでに GitHub Discussion で報告しています。
リスト内のNote記法がうまく閉じられない · Discussion #303 · increments/qiita-discussions
Note 記法は Note 記法でネスト出来ない
Note 記法は Note 記法をネストすることは出来ません。次のような結果を得ることになります。
:::note info
ここは `note info` です。
:::note warn
ここは `note warn` です。
:::
ここは `note info` です。
:::
ここは note info
です。
:::note warn
ここは note warn
です。
ここは note info
です。
:::
そもそも、Note 記法がネストされる状況は奇妙ですし、想定されていないのでしょう。
ネストが想定されていなくても、もう少し綺麗な表示がされるとありがたいなと思ったりはしますが()
これでちょっと遊んでみよう
先ほど、リストにネストされた Note 記法は終了を宣言しても終了しないことを示しました。また、Note 記法は Note 記法でネスト出来ないことも示しました。
では、Note 記法が Note 記法でネスト出来ない問題をリストに含めることで実現してみましょう。
次のようにしてみます。
- Note 記法を Note 記法でネストする
:::note info
ここは `note info`
:::
- ここも `note info`
:::note warn
ここは `note warn`
:::
- ここも `note warn`
:::note alert
ここは `note alert`
:::
-
Note 記法を Note 記法でネストする
ここは
note info
::- ここも
note info
ここは
note warn
::- ここも
note warn
ここは
note alert
::- ここも
note alert
- ここも
Note 記法が Note 記法でネストできた!!
もちろん、どんどんネストすることが出来る。これは YAVAI
-
Note 記法を Note 記法でネストする
ここは
note info
::- ここも
note info
ここは
note warn
::- ここも
note warn
ここは
note alert
::- ここも
note alert
ここは
note info
::- ここも
note info
ここは
note warn
::- ここも
note warn
ここは
note alert
::- ここも
note alert
ここは
note info
::- ここも
note info
ここは
note warn
::- ここも
note warn
ここは
note alert
::- ここも
note alert
- ここも
幅の狭い端末で見ると、余計にすごくなる。
さいごに
悪用するな (自戒)
そろそろ Qiita 運営チームに怒られるのでは?と思っている
もう一つ変なの見つけた
この記事を書いているときに、変な挙動を見つけました。
Note 記法内で Indented code bolck や Fenced code block をすると奇妙になります。
ふつうのコードブロックを含める分には問題ない。(ここで言う “ふつう” とは、コードブロック内に :::
が含まれないコードのことを言う。)
:::note info
print("Hello World")
:::
print("Hello World")
Note 記法をコードブロックにすると……
:::note warn
Note 記法は次のように書きます。
:::note info
Indent code block された Note 記法
:::
簡単ですね。
:::
Note 記法は次のように書きます。
:::note info
Indent code block された Note 記法
簡単ですね。
なぜか Indent code block のあとに書いた文章が Note の外に出てしまいました。それも、この文と続いた状態です。
また、コードブロックには :::
の行が一つ足りません。怪しいですね。
Fenced code block のときでは、よりひどい結果になります。
コードブロック内の :::
が Note 記法の終了と誤解されてしまうせいで……
:::note warn
Fenced code block に `:::` が含まれています。
```
:::
```
コードブロックされた `:::` はどこに……???
代わりに、ここには本文が書けなくなってしまいました。
:::
もうコードブロックから逃れられません。無限監獄です。
Fenced code block に :::
が含まれています。
コードブロックされた `:::` はどこに……???
代わりに、ここには本文が書けなくなってしまいました。
:::
もうコードブロックから逃れられません。無限監獄です。
コードブロックから逃れられないので、この記事はおしまいです。
ありがとうございました。
嘘です。本文中で ```
を書いておけば、途中でコードブロック監獄から脱出することが出来ます。やったネ!!
この問題はこの記事を書きながら気づいた問題なので、まだ GitHub Discussion で報告していません。だれか報告しておいてください(他力本願)
追記:報告しました。
Note記法内のコードブロックに
:::
があるとNoteが終了してしまう · Discussion #306 · increments/qiita-discussions
この記事はここで本当におしまいです。本当にありがとうございました!!
うーん、なんだこの記事は(反省)