メモを取るためにmardownを使い始めました。
マークダウンノートとその美しい部分を表示するには、とマークされたを使用します。
しかし、私のノートが長くなるにつれて、私が欲しいものを見つけるのは難しいと思います。
私はmarkdownがテーブルを作成できることを知っています、しかしそれは目次を作成することができますか?
あるいは、そのようなことができるマークダウンの読者/編集者がいますか。検索も持っているのが良い機能でしょう。
一言で言えば、私はそれを本などを書くのと同じように私の素晴らしいメモ取りツールと機能にしたいです。
MultiMarkdown Composer は、編集中に役立つ目次を生成します。
TOCを生成できるライブラリもあります。 Python Markdown TOC Extension をご覧ください。
これを試してみることができます。
# Table of Contents
1. [Example](#example)
2. [Example2](#example2)
3. [Third Example](#third-example)
## Example
## Example2
## Third Example
これが便利な方法です。任意のMarkDownエディタでクリック可能な参照を生成するべきです。
# Table of contents
1. [Introduction](#introduction)
2. [Some paragraph](#paragraph1)
1. [Sub paragraph](#subparagraph1)
3. [Another paragraph](#paragraph2)
## This is the introduction <a name="introduction"></a>
Some introduction text, formatted in heading 2 style
## Some paragraph <a name="paragraph1"></a>
The first paragraph text
### Sub paragraph <a name="subparagraph1"></a>
This is a sub paragraph, formatted in heading 3 style
## Another paragraph <a name="paragraph2"></a>
The second paragraph text
を生成します。
見出し2スタイルでフォーマットされたいくつかの紹介テキスト
最初の段落テキスト
これは見出し3スタイルでフォーマットされた副段落です。
第2段落テキスト
マークダウンファイルから目次を生成するには、 このRubyスクリプト を試してください。
#!/usr/bin/env Ruby
fileName = ARGV[0]
fileName = "README.md" if !fileName
File.open(fileName, 'r') do |f|
inside_code_snippet = false
f.each_line do |line|
forbidden_words = ['Table of contents', 'define', 'pragma']
inside_code_snippet = !inside_code_snippet if line.start_with?('```')
next if !line.start_with?("#") || forbidden_words.any? { |w| line =~ /#{w}/ } || inside_code_snippet
title = line.gsub("#", "").strip
href = title.gsub(" ", "-").downcase
puts " " * (line.count("#")-1) + "* [#{title}](\##{href})"
end
end
# Table of Contents
1. [Example](#example)
2. [Example2](#example2)
3. [Third Example](#third-example)
## Example [](#){name=example}
## Example2 [](#){name=example2}
## [Third Example](#){name=third-example}
余分な値下げを使用する場合は、リンク、ヘッダー、コードフェンス、および画像に特別な属性を追加できることを忘れないでください。
https://michelf.ca/projects/php-markdown/extra/#spe-attr
Visual Studio Code ユーザーの場合は、 Markdown TOC プラグインを使用することをお勧めします。
インストールするには、VS Code Quick Openを起動します(Ctrl+P)、次のコマンドを貼り付けて、Enterキーを押します。
ext install markdown-toc
目次を生成するには、コマンドパレットを開きます(Ctrl+Shift+P)Markdown TOC:Insert/Update option
を選択するか、 Ctrl+MT。
マークダウン文書にTOC(要約)を作成する方法は2つあります。
# My Table of content
- [Section 1](#id-section1)
- [Section 2](#id-section2)
<div id='id-section1'/>
## Section 1
<div id='id-section2'/>
## Section 2
例えばあなたのために要約を生成するスクリプトを使用することができます、githubで私のプロジェクトを見てみましょう - summaryizeMD -
私は他のscript/npmモジュール(例えば doctoc )も試したことがありますが、作業アンカーを使って目次を再現する人はいません。
Atom にREADME.md
ファイルを作成している私たちの利益のために(私がこのスレッドをどのように見つけたか):
apm install markdown-toc
Javascript/node.jsツールを使用したい場合は、 markdown-toc をご覧ください。
マークダウンファイルを解析して目次をマークダウンリストとして出力するPythonスクリプトを作成しました。 md-to-toc
私が見つけた他のスクリプトとは異なり、md-to-tocは重複したタイトルを正しくサポートします。それはまたインターネット接続を必要としないので、それは公共のレポから入手可能なものだけでなく、どんなmdファイルにも働きます。
私はちょうどpython-markdown
のための拡張をコーディングしました。それは見出しを検索するためにそのパーサーを使用して、そしてローカルリンクでMarkdownフォーマットの順不同リストとしてTOCを出力します。ファイルは
...そしてそれはマークダウンインストールのmarkdown/extensions/
ディレクトリに置かれるべきです。それで、あなたがしなければならないのは、参照として<a>
属性を持つ型anchor id="..."
タグです - それで、このような入力テキストのために:
$ cat test.md
Hello
=====
## <a id="sect one"></a>SECTION ONE ##
something here
### <a id='sect two'>eh</a>SECTION TWO ###
something else
#### SECTION THREE
nothing here
### <a id="four"></a>SECTION FOUR
also...
...拡張子は次のように呼び出すことができます。
$ python -m markdown -x md_toc test.md
* Hello
* [SECTION ONE](#sect one)
* [SECTION TWO](#sect two)
* SECTION THREE
* [SECTION FOUR](#four)
...そして、この目次をマークダウン文書に貼り付けることができます(または現在開いている文書のスクリプトを呼び出して、結果の目次を同じ文書に挿入するテキストエディタのショートカットを作成できます)。
古いバージョンのpython-markdown
には__main__.py
モジュールがないため、上記のコマンドライン呼び出しはこれらのバージョンでは機能しません。
このbash one-linerを使って生成することができます。マークダウンファイルの名前はFILE.md
とします。
echo "## Contents" ; echo ;
cat FILE.md | grep '^## ' | grep -v Contents | sed 's/^## //' |
while read -r title ; do
link=$(echo $title | tr 'A-Z ' 'a-z-') ;
echo "- [$title](#$link)" ;
done
異なるMarkdownパーサによって生成されたアンカータグは偶数ではありません。
もしあなたがMarkdownパーサーGFM(GitHub Flavored Markdown)やRedcarpetを使っているのなら、私は目次を扱うためのVimプラグインを書きました。
Markdownファイルの目次を生成します。
サポートされているMarkdownパーサ:
既存の目次を更新します。
保存時に既存の目次を自動更新します。
目次を生成する
目次を追加したい行にカーソルを移動してから、適切なコマンドを入力してください。このコマンドはカーソルの後に目次を作成します。
:GenTocGFM
GFMリンクスタイルで目次を生成します。
このコマンドは、README.mdなどのGitHubリポジトリのMarkdownファイル、およびGitBookのMarkdownファイルに適しています。
:GenTocRedcarpet
Redcarpetリンクスタイルで目次を生成します。
このコマンドはJekyllに適しているか、または他の場所でそのMarkdownパーサーとしてRedcarpetを使用しています。
GFMとRedcarpetスタイルの目次リンクの違いを知るためには、 を見てください 。
既存の目次を手動で更新します
通常これを行う必要はありません。既存の目次はデフォルトで保存時に自動更新されます。手動で実行したい場合は、:UpdateToc
コマンドを使用してください。
私はちょうど同じことを始めた(Markdownでメモを取ってください)。 Sublime Text 2を MarkdownPreviewプラグイン と共に使用します。組み込みのマークダウンパーサは[TOC]
をサポートします。
pandoc
name__、 "あるマークアップフォーマットを別のマークアップフォーマットに変換するための" swiss-army knife " を使うこともできます。 --toc
引数を指定すると、出力ドキュメントに目次を自動的に生成できます。
ヒント:html
name__の出力に目次が必要な場合は、スタンドアロン文書を生成する-s
も指定する必要があります。
シェルコマンドラインの例:
./pandoc -s --toc input.md -o output.html
Typora は、ドキュメントに[TOC]
を追加することで目次を生成します。
Gitlabでは、markdownがこれをサポートしています:[[_TOC_]]
MultiMarkdown 4.7 には、目次を挿入する{{TOC}}マクロがあります。
私にとって、@Tumによって提案された解決策は、2つのレベルを持つ目次の魅力のように機能します。しかし、3番目のレベルではうまくいきませんでした。最初の2つのレベルに関してはリンクを表示せず、代わりにプレーンテキスト3.5.1. [bla bla bla](#blablabla) <br>
を表示します。
私の解決策は、3つ以上のレベルを持つ目次を必要とする人々のための@Tum(これは非常に簡単です)の解決策への追加です。
2番目のレベルでは、単純なタブでインデントが正しく行われます。しかし、それは2つのタブをサポートしません。代わりに、1つのタブを使用して、3番目のレベルを正しく揃えるために必要なだけ
を自分で追加する必要があります。
これは4つのレベルを使った例です(レベルが上がるとひどくなります):
# Table of Contents
1. [Title](#title) <br>
1.1. [sub-title](#sub_title) <br>
1.1.1. [sub-sub-title](#sub_sub_title)
1.1.1.1. [sub-sub-sub-title](#sub_sub_sub_title)
# Title <a name="title"></a>
Heading 1
## Sub-Title <a name="sub_title"></a>
Heading 2
### Sub-Sub-Title <a name="sub_sub_title"></a>
Heading 3
#### Sub-Sub-Sub-Title <a name="sub_sub_sub_title"></a>
Heading 4
これにより、目次のすべての要素が対応するセクションへのリンクになるという次の結果が得られます。同じ行にあるのではなく新しい行を追加するために<br>
にも注意してください。
見出し1
見出し2
見出し3
見出し4
Albertodebortoli回答に基づいて、追加のチェックと句読点の置換を使用して関数を作成しました。
# @fn def generate_table_of_contents markdown # {{{
# @brief Generates table of contents for given markdown text
#
# @param [String] markdown Markdown string e.g. File.read('README.md')
#
# @return [String] Table of content in markdown format.
#
def generate_table_of_contents markdown
table_of_contents = ""
i_section = 0
# to track markdown code sections, because e.g. Ruby comments also start with #
inside_code_section = false
markdown.each_line do |line|
inside_code_section = !inside_code_section if line.start_with?('```')
forbidden_words = ['Table of contents', 'define', 'pragma']
next if !line.start_with?('#') || inside_code_section || forbidden_words.any? { |w| line =~ /#{w}/ }
title = line.gsub("#", "").strip
href = title.gsub(/(^[!.?:\(\)]+|[!.?:\(\)]+$)/, '').gsub(/[!.,?:; \(\)-]+/, "-").downcase
bullet = line.count("#") > 1 ? " *" : "#{i_section += 1}."
table_of_contents << " " * (line.count("#") - 1) + "#{bullet} [#{title}](\##{href})\n"
end
table_of_contents
end
マークダウン用の目次を生成する小さなpythonスクリプトである toc.py を使用してください。
使用法:
<toc>
を追加します。$python toc.py README.md
(README.mdの代わりにマークダウンファイル名を使用してください)乾杯!
ワークフローによっては、 ストラップダウンを見たいと思うかもしれません
これは、目次の生成を追加する元のもの( http://strapdownjs.com )のフォークです。
Htmlファイルに書きたくない場合は、リポジトリにApacheの設定ファイルがあります(まだ正しく更新されていない可能性があります)。
私は https://github.com/ekalinin/github-markdown-toc を使用しました。これは、マークダウン文書から目次を自動生成するコマンドラインユーティリティを提供します。
プラグイン、マクロ、その他の依存関係はありません。ユーティリティをインストールした後、単にあなたの目次が欲しいドキュメントの場所にユーティリティの出力を貼り付けてください。使い方はとても簡単です。
$ cat README.md | ./gh-md-toc -
よくわかりませんが、値下げの公式文書は何ですか。相互参照は大括弧[Heading]
内、または空大括弧[Heading][]
内に書くことができます。
どちらも pandoc を使って動作します。そこで、mdファイルの$TOCをその目次で置き換えるクイックbashスクリプトを作成しました。 (あなたはenvsubstを必要とするでしょう、それはあなたのディストリビューションの一部ではないかもしれません)
#!/bin/bash
filename=$1
__TOC__=$(grep "^##" $filename | sed -e 's/ /1. /;s/^##//;s/#/ /g;s/\. \(.*\)$/. [\1][]/')
export __TOC__
envsubst '$__TOC__' < $filename
Visual Studio Code(VSCode)では、拡張子 Markdown All in One を使用できます。
インストールしたら、以下の手順に従います。
たまたま使用しているならEclipseあなたは使うことができます Ctrl+O (アウトライン)ショートカット、これは目次に相当するものを表示し、セクションタイトル(オートコンプリート)で検索することを可能にします。
アウトラインビュー(ウィンドウ - >ビューの表示 - >アウトライン)を開くこともできますが、オートコンプリート検索はありません。
GFMマークダウン目次を自動生成することができる gen_markdown_toc.rb というRubyスクリプトがありますが、それは他のスクリプトと似ていますが若干異なりますここに投稿しました。
次のような入力Markdownファイルがあるとします。
# Lorem Ipsum
Lorem ipsum dolor sit amet, mei alienum adipiscing te, has no possit delicata. Te nominavi suavitate sed, quis alia cum no, has an malis dictas explicari. At mel nonumes eloquentiam, eos ea dicat nullam. Sed eirmod gubergren scripserit ne, mei timeam nonumes te. Qui ut tale sonet consul, vix integre oportere an. Duis ullum at ius.
## Et cum
Et cum affert dolorem habemus. Sale malis at mel. Te pri copiosae hendrerit. Cu nec agam iracundia necessitatibus, tibique corpora adipisci qui cu. Et vix causae consetetur deterruisset, ius ea inermis quaerendum.
### His ut
His ut feugait consectetuer, id mollis nominati has, in usu insolens tractatos. Nemore viderer torquatos qui ei, corpora adipiscing ex nec. Debet vivendum ne nec, ipsum zril choro ex sed. Doming probatus euripidis vim cu, habeo apeirian et nec. Ludus pertinacia an pro, in accusam menandri reformidans nam, sed in tantas semper impedit.
### Doctus voluptua
Doctus voluptua his eu, cu ius mazim invidunt incorrupte. Ad maiorum sensibus mea. Eius posse sonet no vim, te paulo postulant salutatus ius, augue persequeris eum cu. Pro omnesque salutandi evertitur ea, an mea fugit gloriatur. Pro ne menandri intellegam, in vis clita recusabo sensibus. Usu atqui scaevola an.
## Id scripta
Id scripta alterum pri, nam audiam labitur reprehendunt at. No alia putent est. Eos diam bonorum oportere ad. Sit ad admodum constituto, vide democritum id eum. Ex singulis laboramus vis, ius no minim libris deleniti, euismod sadipscing vix id.
この目次を生成します:
$ gen_markdown_toc.rb FILE.md
#### Table of contents
1. [Et cum](#et-cum)
* [His ut](#his-ut)
* [Doctus voluptua](#doctus-voluptua)
2. [Id scripta](#id-scripta)
このトピックに関する私のブログ の投稿 もご覧ください。
最初の行に[TOC]を使用して、一番下に使用することができます。唯一必要なことは、タイトルが同じ大きなフォントであることを確認することです。目次は自動的に出てきます。 (ただし、これは一部のマークダウンエディタにしか表示されません。全部試したわけではありません)
Markdownファイルをbitbucket.orgのレポジトリに表示する場合は、目次が欲しい場所に[TOC]
を追加する必要があります。それは自動生成されます。詳細はこちら:
https://confluence.atlassian.com/bitbucket/add-a-table-of-contents-to-a-wiki-221451163.html
スライド数を追加するだけ!それは値下げioslidesで動作し、プレゼンテーションを公開します
## Table of Contents
1. [introduction](#3)
2. [section one](#5)