Github Flavored Markdownを使用して自動目次を生成することは可能ですか?
18 に答える
github-flavored-markdown の toc を生成するための 2 つのオプションを作成しました。
DocToc コマンド ライン ツール (ソース) にはnode.jsが必要です
インストール:npm install -g doctoc
doctoc .
現在およびすべてのサブディレクトリ内のすべてのマークダウンファイルに目次を追加します。
DocToc ウェブアプリ
最初にオンラインで試してみたい場合は、doctocサイトに移動し、マークダウン ページのリンクを貼り付けると、マークダウン ファイルの先頭に挿入できる目次が生成されます。
Github Wiki とアンカー
以下のコメントで Matthew Flaschen が指摘したように、その wiki ページについて、GitHub は以前、doctoc
依存するアンカーを生成しませんでした。
更新: ただし、この問題は修正されました。
GitHub Pages (基本的には Jekyll のラッパー)は、すべての Marukuを実装する kramdown を使用しているように見えるため、属性を介して自動生成された目次をサポートしています。toc
* auto-gen TOC:
{:toc}
最初の行は順序付けられていないリストを開始するだけで、実際には破棄されます。
これにより、ドキュメントのヘッダーを使用して、順序付けられていないリストのネストされたセットが作成されます。
注:これは、コメントや wiki ページで使用される GitHub Flavored Markdown (GFM) ではなく、GitHub ページで機能するはずです。私の知る限り、そのための解決策は存在しません。
Vim で Markdown ファイルを編集する場合は、このプラグインvim-markdown-tocを試すことができます。
使い方は簡単で、目次を追加したい場所にカーソルを移動して実行するだけです:GenTocGFM
。
スクリーンショット:
特徴:
Markdown ファイルの toc を生成します。(GitHub Flavored Markdown と Redcarpet をサポート)
既存のトピックを更新します。
保存時に toc を自動更新します。
2021 年 3 月の更新: GitHub が公式の回避策を追加しました
README を下にスクロールすると、次のような ToC が表示されるようになりました。
デモ: https://github.com/cirosantilli/test-git-web-interface/tree/master/d
より良い Ctrl + F を望んでいたように、ドキュメント内でレンダリングされませんが、何もないよりはましです。
README 以外でも機能します。例: https://github.com/cirosantilli/test-git-web-interface/blob/master/md.md
また、リポジトリ設定を追加して、それを無効にします。とても奇妙です。誰がそれを無効にしたいと思うでしょうか? https://github.com/cirosantilli/test-git-web-interface/settings機能の下:
目次
このリポジトリ内の Markdown ファイルの目次を自動生成します。目次は、ファイルの上部近くに表示されます。
元の答え
提案された回避策を除いて、それは不可能です。
Kramdown TOC 拡張とその他の可能性を support@github.com とStevenに提案しました! ラグナロクはいつものように答えた:
提案とリンクをありがとう。チームが確認できるように、内部の機能リクエスト リストに追加します。
それが起こるまで、この質問に賛成票を投じましょう。
もう 1 つの回避策は、TOC をレンダリングするMarkdown の代わりに Asciidoc を使用することです。私は今日、自分のコンテンツに対してこのアプローチに移行しました。
Github Flavored Markdown は RedCarpet を Markdown エンジンとして使用しています。RedCarpet リポジトリから:
:with_toc_data - 出力 HTML の各ヘッダーに HTML アンカーを追加して、各セクションへのリンクを許可します。
このフラグを設定するには、レンダラー レベルで取得する必要があるようですが、Github では明らかに不可能です。ただし、Github Pages の最新の更新では、ヘッダーの自動アンカーがオンになっており、リンク可能な見出しが作成されているようです。まさにあなたが望むものではありませんが、ドキュメントの目次を少し簡単に作成するのに役立ちます (手動ではありますが)。
ファイルからhttp://documentup.com/の Web ページを自動生成することが可能です。README.md
TOC を作成するわけではありませんが、多くの人にとって、TOC を作成したい理由が解決される可能性があります。
Documentup の別の代替手段は Flatdoc です: http://ricostacruz.com/flatdoc/
Gitdownは、Github のマークダウン プリプロセッサです。
Gitdown を使用すると、次のことができます。
- 目次を生成する
- 無効な URL とフラグメント識別子を見つける
- 変数を含める
- インクルード ファイル
- ファイルサイズを取得する
- バッジを生成する
- 印刷日
- リポジトリ自体に関する情報を出力します
Gitdown は、GitHub リポジトリのドキュメント ページの維持に関連する一般的なタスクを簡素化します。
それを使用するのは簡単です:
var Gitdown = require('gitdown');
Gitdown
// Gitdown flavored markdown.
.read('.gitdown/README.md')
// GitHub compatible markdown.
.write('README.md');
別のスクリプトとして使用することも、ビルド スクリプト ルーチン ( Gulpなど) の一部として使用することもできます。
これは、このために今日一緒に投げたシェルスクリプトです。必要に応じて微調整する必要があるかもしれませんが、出発点としては適切です。
cat README.md \
| sed -e '/```/ r pf' -e '/```/,/```/d' \
| grep "^#" \
| tail -n +2 \
| tr -d '`' \
| sed 's/# \([a-zA-Z0-9`. -]\+\)/- [\1](#\L\1)/' \
| awk -F'(' '{for(i=2;i<=NF;i++)if(i==2)gsub(" ","-",$i);}1' OFS='(' \
| sed 's/^####/ /' \
| sed 's/^###/ /' \
| sed 's/^##/ /' \
| sed 's/^#//'
これらの最後の # 置換を行うより良い方法を誰かが知っている場合は、コメントを追加してください。いろいろ試してみましたが、どれも満足できなかったので、力ずくでやってみました。