tinymarkdown で書けること #
記事は、わざと小さく絞った Markdown のサブセットで書いている。 対応していない書き方はそのままテキストとして表示されるので、<b>これ</b> もエスケープされたまま出る。 **太字** や *強調* も同じで、記号ごと表示される。
セクション #
# から ##### までの見出しが、入れ子のセクションを開く。
見出しにはその文字列から作った id が付き、末尾の # からその場所へリンクできる。同じ id が重なると -1、-2 を足して分ける。決め方は 見出しに id と permalink を付けた に書いた。
3 段目の見出し #
4 段目の見出し #
5 段目の見出し #
###### 6 段目はサポート外で、段落のテキストになる
リスト #
当初は - だけに絞っていたが、生成される文章には * の箇条書きも出てくる。
結局、記事を書くたびに直さなくて済むように、* にも対応を追加した。
- 1 行に 1 項目で、
-または*で始める。記号の後ろには半角スペースが必要。 - この項目は
*で書いている。-と混ぜても同じ箇条書きになる。 - 字下げした次の行は、 直前の項目の続きになる。
-または*で始まる字下げした行は、いちばん近い上の項目の入れ子になる。- こう書くと、この行が上の項目の子になる。親と子で記号が違ってもよい。
- 番号付きリストはない。
- 空行でリストが終わる。
*強調* や **太字** のように記号の直後にスペースがないものは、箇条書きにはならない。
インラインの強調記法にも対応していないので、これまでどおり記号ごとテキストとして表示される。
引用 #
>で始まる行が引用になる。中身はもう一度ドキュメントとしてパースされるので、
- リストや
- コードブロック、入れ子の引用も書ける。
アラート #
引用の先頭行が [!NOTE]、[!TIP]、[!IMPORTANT]、[!WARNING]、[!CAUTION] のどれかだけのとき、その引用はアラートになる。種類の大文字小文字は区別しない。
Note
こう書くと、種類ごとの色とアイコンの付いたアラートとして描かれる。
種類と描き方は GitHub のアラート記法に対応した に書いた。
表 #
GitHub 風のパイプ区切りの表に対応している。
| 書き方 | 結果 |
|---|---|
`code` | インラインのコード |
[text](url) | リンク |
a | b | セルの中の | |
2 行目は | --- | --- | のような区切り行で、列の数がヘッダーと同じでなければ表にならない。先頭の | は必要で、末尾は省略できる。足りないセルは空、多いセルは捨てる。区切り行の :---: は受け付けるが、揃え方は無視する。
インライン #
段落、リスト、見出し、表のセルの中では、`code` とリンクだけが使える。
コードはバッククォートの数を揃えて閉じ、複数行にまたがると改行は空白になる。
リンクのテキストにはコードを書けるが、[ ] や入れ子のリンクは書けない。
リンクの行き先は URL の形で決まる。http、https、mailto はそのままリンクし、/ や # で始まる URL もそのまま使う。リポジトリ内の相対パスはファイルの置き場所から解決し、記事や文書ならこのサイトのページ、それ以外のファイルは GitHub の main ブランチへリンクする。ほかのスキームはテキストのままになる。
たとえば tinymarkdown の設計メモ はこのサイトの /docs/ のページへ、
パッケージのソース は GitHub へリンクする。
コードブロック #
フェンスはちょうど 3 つのバッククォート。開始行の後ろの文字列(go など)は読み飛ばし、svg のときだけ中身を生のマークアップとしてそのまま埋め込む(インライン SVG になる)。それ以外の言語名は無視され、ハイライトはない。開始行を字下げすると、その分だけ中身の行頭も取り除く(CommonMark と同じ)。閉じるフェンスは前後の空白を無視し、閉じないまま終わると最後までをコードブロックとする。長い行は折り返さず、ブロックの中で横にスクロールする。ブロックの右上の Copy ボタンを押すと、中身がクリップボードにコピーされる。
func Render(w io.Writer, n Node, r Renderer) error {
switch n := n.(type) {
case TextNode:
return r.Text(w, n) // a long line to check that narrow screens scroll horizontally instead of wrapping
}
return nil
}字下げしたフェンスも使える。ソースではフェンスも中身も 3 文字ぶん字下げしてあるが、描画されるときにはその 3 文字が取り除かれる。
x := 1コードブロックの後のテキストは、また段落に戻る。
試す #
ヘッダーの preview(/preview)では、書いた Markdown がこのサイトでどう見えるかをその場で確かめられる。記事と同じ renderer をブラウザーで動かしているので、見出しの id と permalink、アラート、表、コードブロックの Copy ボタンまで、記事と同じ形で出る。詳しくは Markdown をその場で試せる /preview を付けた に書いた。