たまにREADME.mdを引用する時などで、MarkdownをMarkdown記法として書こうとすると、コードブロックがネスト
していた場合にうまくいかず困っていました。
が、調べてみるとネストさせる方法がちゃんと書かれていたのでメモしておくことにしました。
どういうことをやりたかったか見せた方が早いので、先に載せておきましょう。
# heading abcde. ```java public class Test { } ``` fghij.
このMarkdownのコードブロックをどう書いているかというと````markdownで始まり````で終わる(backtick quote 4つ)という
ことになっています。
※なお、このコードブロックは先にbacktick quoteをひとつ書き、ひとつスペースを空けた後に4つbacktick quoteを書いています
そして、中にbacktick quote 3つでjavaが挟まっています。
つまり、こう書いています。
※このコードブロックを書くために、1番外側はbacktick quote 5つにしています
````markdown
# heading
abcde.
```java
public class Test {
}
```
fghij.
````
これに関しては、以下あたりがヒントになります。
To include a literal backtick character within a code span, you can use multiple backticks as the opening and closing delimiters:
The backtick delimiters surrounding a code span may include spaces — one after the opening, one before the closing. This allows you to place literal backtick characters at the beginning or end of a code span:
CommonMark Spec / Leaf blocks / Fenced code blocks
Creating and highlighting code blocks - GitHub Docs
CommonMarkの仕様を見ると、改行を含むコードブロックだからといってbacktick quote 3つにこだわる必要がないことが
わかります。
たとえば、以下のコードはbacktick quote 3つではなく~~~pythonと書いています。
def say(): return "Hello"
知らなかったのと、全然違うエスケープ方法を想像していたのでメモということで。
ちゃんと調べるべきですね…。