ツール
入力
結果
結果はここに表示されます。目次が役に立つのはすべてのリンクがどこかに飛べる場合だけですが、手書きのアンカーは決まったパターンで壊れます。GitHub は句読点を削除し、中国語の文字は残し、すべてを小文字にし、繰り返し出てくる見出しには文書内の順に -1、-2 と番号を付けるからです。このツールは Markdown を読み込み、コードフェンスとフロントマターの外にあるすべての見出しを見つけ、github.com の挙動を再現するライブラリ github-slugger と同じ規則でアンカーを付けた入れ子のリストを書き出します。コマンドラインツール markdown-toc の慣習である <!-- toc --> と <!-- tocstop --> のマーカーの間にリストを入れることもできるため、再実行すると 2 つ目のリストが追加されるのではなく、古いリストが置き換えられます。
動作のしくみ
- # 形式の見出しと、下線形式(=== と ---)の見出しの両方を検出します。``` や ~~~ のフェンス内の行、YAML フロントマター、HTML コメントはスキップします。
- アンカーは GitHub がレンダリングするテキストから作ります。リンク、強調、インラインコードはテキストだけになり、句読点は削除され、スペースはハイフンになります。
- 重複見出しの -1、-2 の番号付けには、選んだ深さより深い見出しも含めてすべての見出しが数えられます。GitHub がすべてに番号を振るためです。
- 最大の深さ、箇条書きの記号、文書タイトル(先頭の H1)を除外するかどうか、そしてマーカーの間にリストを挿入した文書全体を返すかどうかを設定できます。
データの行き先
どこにも行きません。このツールは完全にブラウザ内で動作します。貼り付けたテキストはページが処理し、サーバーに送信されることも、ログに記録されることもありません。
このツールは無料で登録不要です。結果は開いているページの中にだけあり、どこにも保存されません。
必要なポイント
このツールは無料です。ログインもポイントも必要ありません。
よくある質問
- 中国語の見出しのアンカーで文字がそのまま残るのはなぜですか?
- GitHub が残すからです。GitHub のスラッグ規則は句読点と記号だけを取り除くため、## 安装与使用 は #安装与使用 に、## FAQ:为什么选择 Rust? は #faq为什么选择-rust にリンクします。全角のコロンと疑問符は消え、文字は残ります。ブラウザーはリンクをたどる際にパーセントエンコードしますが、これは想定どおりの動作です。
- GitLab や Gitea でもリンクは機能しますか?
- おおむね機能します。GitLab と Gitea の見出しのスラッグ化は GitHub とよく似ており、単純な英語の見出しならどこでも同じアンカーになります。違いが出るのは、繰り返される見出し、一部の句読点、古いバージョンでの非ラテン文字といった境界的なケースです。GitHub 以外のサイトでは、公開後に一度リンクをクリックして確認してください。
- セクションを追加した後、目次を更新するにはどうすればよいですか?
- リストを置きたい場所に <!-- toc --> を単独の行で置き、その後に <!-- tocstop --> を置いて、マーカー間への挿入をオンにし、文書全体を実行します。マーカーの間はすべて置き換えられ、古いリスト内の見出しは無視されるため、再実行しても実行のたびにリストが増えることはなく、同じ結果になります。
- <h2> のように HTML で書かれた見出しも読み取りますか?
- いいえ。リストに載るのは Markdown の見出し、つまり # で始まる行と === または --- で下線を引いた行だけです。Markdown 内の <h2> タグはリストから外れます。含めたい場合は ## に書き換えてください。
背後にあるオープンソース
このツールは外部ライブラリを同梱しない独自実装です。jonschlinkert/markdown-toc(MIT)はコードとして同じ仕事をします。自分のプログラムで同じことをしたいなら、Web ページを呼ぶのではなくそちらから始めてください。
jonschlinkert/markdown-toc別の呼び方
- markdown 目次 生成
- markdown toc
- readme 目次 自動生成
- github markdown アンカー リンク
- markdown 目次 作り方
- markdown toc generator