web-dev-qa-db-ja.com

github-flavoured-markdownの自動目次

Github Flavored Markdown を使用して自動目次を生成することは可能ですか?

202
Roberto Aloi

Github-flavored-markdownのtocを生成する2つのオプションを作成しました。

DocTocコマンドラインツール( source )には node.js が必要

npm install -g doctoc

doctoc .は、現在およびすべてのサブディレクトリ内のすべてのマークダウンファイルに目次を追加します。

DocToc WebApp

最初にオンラインで試してみたい場合は、 doctoc サイトに移動して、マークダウンページのリンクを貼り付けます。マークダウンファイルの上部に挿入できる目次が生成されます。

Github Wikiとアンカー

Matthew Flaschenが以下のコメントで指摘したように、Wikiページについては、GitHubは以前doctocが依存するアンカーを生成していませんでした。

更新:ただし、修正された この問題

135
Thorsten Lorenz

GitHub Pages(これは基本的にJekyllのラッパーです) kramdownを使用しているようです 、これは Marukuのすべてを実装 であり、したがって 自動生成されたテーブル内容 atoc属性経由:

* auto-gen TOC:
{:toc}

最初の行は、順序付けられていないリストを開始するだけで、実際には破棄されます。

これにより、ドキュメント内のヘッダーを使用して、順序付けられていないリストのネストされたセットが作成されます。

注:これは、コメントまたはWikiページで使用されるGitHub Flavored Markdown(GFM)ではなく、GitHub Pagesで機能するはずです。知る限り、そのためのソリューションは存在しません。

23
Ben Scott

自動ではありませんが、Notepad ++正規表現を使用します。

最初をすべて2番目に置き換える(ヘッダーのないすべての行を削除する)

^##(#?)(#?)(.*?)$(.|\r|\n)*?(?=^##|\z)
-\1\2 [\3](#\3)\n

次に(ヘッダーIIIをスペースに変換します)

-##
        -

次に(ヘッダーIIをスペースに変換します)

-#
    -

次に(リンクタイトルの最初と最後にある未使用の文字を削除します)

\[ *((?:(?![ .:#!\?;]*\])[^#])*)[ #:!\?;]*\]
[\1]

次に(最後のトークンを小文字に変換し、スペースではなくダッシュ)

\]([^ \r\n]*) ([^\r\n ]*)
]\L\1-\2

未使用の最終ポンドと最初のダッシュを削除します。

(?:()[-:;!\?#]+$|(\]#)-)
\1\2

リンク内の不要な文字を削除します。

(\].*?)(?:\(|\))
\1

最後に、最終リンクの周りに括弧を追加します。

\](?!\()(.*?)$
\]\(\1\)

そしてほら!十分な時間を繰り返す場合、これをグローバルマクロに入れることもできます。

9
Mikaël Mayer

VimでMarkdownファイルを編集する場合、このプラグイン vim-markdown-toc を試すことができます。

使い方は簡単です。目次を追加したい場所にカーソルを移動し、:GenTocGFMを実行してください!

スクリーンショット:

vim-markdown-toc

特徴:

  1. Markdownファイルのtocを生成します。 (GitHub Flavored MarkdownおよびRedcarpetをサポート)

  2. 既存のTOCを更新します。

  3. 保存時にTOCを自動更新します。

8
Zhuang Ma

Github Flavored Markdownは、MarkdownエンジンとしてRedCarpetを使用します。 RedCarpetリポジトリ から:

:with_toc_data-出力HTMLの各ヘッダーにHTMLアンカーを追加して、各セクションへのリンクを許可します。

このフラグを設定するには、レンダラーレベルで取得する必要があるようですが、これは明らかにGithubでは不可能です。ただし、Github Pagesの 最新の更新 では、ヘッダーの自動アンカーがオンになっており、リンク可能な見出しが作成されているようです。必要なものではありませんが、ドキュメントの目次を作成するのに少し手間がかかる場合があります(手動ではありますが)。

7
Kevin Suttle

提案された回避策を除き、それは不可能です。

I 提案 Kramdown TOC拡張と[email protected]のその他の可能性、および Steven!Ragnarök 通常の応答:

提案とリンクをありがとう。チームが確認できるように、内部機能要求リストに追加します。

それが起こるまでこの質問に賛成しましょう。

別の(一般に受け入れられない)回避策は、Markdownの代わりにasciidocを使用することです TOCをレンダリングします

README.mdファイルから http://documentup.com/ を使用して、Webページを自動的に生成することができます。 TOCを作成することではありませんが、多くの場合、TOCを作成する理由を解決するかもしれません。

Documentupの別の代替手段はFlatdocです: http://ricostacruz.com/flatdoc/

4
Nils

Visual Studio Codeを使用してmardownファイルの目次を作成する非常に便利な方法は、拡張子 Markdown-TOC です。

既存のマークダウンファイルにTOCを追加し、保存時にTOCを最新の状態に保つこともできます。

enter image description here

3
Mathias Dpunkt

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 など)。

3
Gajus

coryfklein/doctocthlorenz/doctoc のフォークを使用し、「generated with」を追加しない DocToc "すべての目次へ。

npm install -g coryfklein/doctoc
2
Cory Klein

同僚の@schmiedcと私は、優れたh1ライブラリを使用してmarkdown-jsボタンの左側に新しいTOCボタンをインストールする GreaseMonkeyスクリプト を作成しました。目次を更新します。

Doctocのようなソリューションに対する利点は、GitHubのwikiエディターに統合され、ユーザーがコマンドラインで作業する必要がないことです(そして、ユーザーにnode.jsなどのツールをインストールする必要があります)。 Chromeでは、拡張機能ページにドラッグアンドドロップすることで機能します。Firefoxでは、GreaseMonkey拡張機能をインストールする必要があります。

プレーンマークダウンで動作します(つまり、マークダウンのGitHub拡張機能であるため、コードブロックを正しく処理しません)。寄付を歓迎します。

1

現在は 不可能 マークダウン構文を使用しています(進行中の GitHubでの議論 を参照)が、次のような外部ツールを使用できます。


または、代わりにAsciiDocを使用します(例:README.adoc)。

:toc: macro
:toc-title:
:toclevels: 99
# Title

## A

### A2

## B

### B2

これで提案されているように コメント 。デモを確認してください here

0
kenorb

GithubのTexteditor Atomのために、この素​​晴らしいプラグイン(またはAtom-lingoの「パッケージ」)をチェックして、「解析されたマークダウンからの見出しのTOC(目次)」ファイル:

markdown-toc

Atomパッケージとしてインストールすると、ショートカットctrl-alt-cを使用して、現在のカーソル位置にあるmarkdown-doc-structureに基づいてTOCを挿入できます...

スクリーンショット:

enter image description here

Atomキーバインド

markdown-tocは、Atomのプラグインを制御するために次のデフォルトのキーバインディングを提供します。

  • ctrl-alt-c =>カーソル位置に目次を作成
  • ctrl-alt-u =>目次を更新
  • ctrl-alt-r =>目次を削除

プラグイン機能(プロジェクトのREADMEから)

  • アンカータグを介した自動リンク。 # A 1#a-1
  • depthFrom:1およびdepthTo:6を使用した深さ制御[1-6]
  • withLinks:1を使用してリンクを有効または無効にします
  • updateOnSave:1で保存時にリストを更新
  • orderedList:0で順序付きリスト(1. ...、2 ...)を使用します
0
Mayinx

これを実現するために今日一緒に投げたシェルスクリプトを次に示します。ニーズに合わせて微調整する必要があるかもしれませんが、良い出発点になるはずです。

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/^#//'

これらの最終的な#置換を行うより良い方法を誰かが知っているなら、コメントを追加してください。私はいろいろなことを試してみましたが、どれにも満足していなかったので、私はそれを強引に強制しました。

0
John Eikenberry

多くの人が回避策を提供しているため、これはこの質問に対する直接的な答えではありません。 TOCの生成は、これまでにGithubによって公式にサポートされているとは思わない。 GitHubでGFMプレビューページに目次を自動的に表示する場合は、公式の 機能要求の問題 のディスカッションに参加してください。

0
Xiaodong Qi