Table of Contents(目次)
初回公開:2018/01/01
最終更新:2018/01/13
「Table of Contents Extension — Python Markdown」をつたない翻訳,勝手な解釈。
【 目次 】
要約
Table of Contents extensionは、Markdown文書から目次を生成し、HTML文書に追加します。
このextensionは標準のMarkdownライブラリに含まれています。
構文
デフォルトでは、すべてのヘッダーには、ヘッダーのテキストに基づいて生成された一意のid属性が自動的に設定されます。
この例では、3つのヘッダーすべてが同じidであることに注意してください。
#Header #Header #Header
結果:
<h1 id="header">Header</h1> <h1 id="header_1">Header</h1> <h1 id="header_2">Header</h1>
目次を表示する場所にマーカーを置きます。
次に、ドキュメント内のすべてのヘッダーのネストされたリストが、マーカーを置き換えます。
マーカーのデフォルトは[TOC]なので、次の文書のようになります。
[TOC] # Header 1 ## Header 2
これは、次の出力を生成します。
<div class="toc"> <ul> <li><a href="#header-1">Header 1</a></li> <ul> <li><a href="#header-2">Header 2</a></li> </ul> </ul> </div> <h1 id="header-1">Header 1</h1> <h1 id="header-2">Header 2</h1>
ドキュメント内にマーカが存在するかどうかにかかわらず、目次はMarkdownクラスの属性(toc)として使用できます。
これにより、ページテンプレート内の他の場所に目次を挿入することができます。
例えば:
>>> md = markdown.Markdown(extensions=['markdown.extensions.toc']) >>> html = md.convert(text) >>> page = render_some_template(context={'body': html, 'toc': md.toc})
使い方
extensionの一般的な使用法については、Extensionsを参照、extensionの名前として markdown.extensions.toc
を指定してください。
extensionの設定については、ライブラリリファレンスを参照してください。
出力を設定するには、次のオプションが用意されています。
-
marker
: 目次を見つけて置き換えるためのテキスト。
デフォルトは[TOC]。
マーカーの検索を無効にするには、空の文字列に設定します。これにより、特に長いドキュメントで時間が節約されます。 -
title
: 目次に挿入するタイトル。デフォルトはNone。 -
anchorlink
: すべてのヘッダーを自分自身にリンクさせるには、Trueに設定します。デフォルトはFalseです。 -
permalink
: 各ヘッダーの最後に永続リンクを生成するには、Trueまたは文字列に設定します。Sphinxスタイルシートに有益です。Trueに設定すると、リンクテキストとして段落記号((¶ or "
¶
")使用されます。
文字列を設定すると、指定された文字列がリンクテキストとして使用されます。 -
baselevel
: ヘッダーのベースレベル。デフォルトは1。このbaselevel設定では、ヘッダーレベルがHTMLテンプレートの階層内に収まるように自動的に調整されます。
たとえば、ページのMarkdownテキストにレベル3(<h3>
)よりも上位のヘッダーが含まれていないとします。次のことが達成されます:
>>> text = ''' ... #Some Header ... ## Next Level''' >>> from markdown.extensions.toc import TocExtension >>> html = markdown.markdown(text, extensions=[TocExtension(baselevel=3)]) >>> print html <h3 id="some_header">Some Header</h3> <h4 id="next_level">Next Level</h4>'
-
slugify
: アンカーを生成するために呼び出すことができます。デフォルト:
markdown.extensions.headerid.slugify
別のアルゴリズムを使用してid属性を定義するには、次の2つの引数をとる呼び出し可能なオブジェクト(関数)を定義して渡します。
value
: slugifyな(HTMLのid属性にそのまま含めても問題ない)文字列.separator
: ワードセパレータ。
呼び出し可能オブジェクトは、HTML id属性での使用に適した文字列を返す必要があります。
-
separator
: ワード区切り文字。idの空白を置き換える文字。デフォルトは " -"です。
訳者による蛇足
slugify
slugifyという単語の意味がよくわからなかってので、以下を参考に訳してみたけど合ってるかな?
- 用語集 | Django documentation | Django
スラグ (slug)
ある要素に対して付けられた短いラベルで、英語のアルファベット、数字、アンダーバー、ハイフンからなり、ふつうは URL に使われる。
- Slugの由来が気になる。 » サイキョウライン
- ソフトウェアの世界での slug / スラグ / スラッグの意味 - valid,invalid
titleオプションを指定してみると
蛇足ながら、titleオプションの出力を以下のコードで確認してみた。
import markdown makedown_text = u'''[TOC] # Header 1 ## Header 2 ''' print markdown.Markdown(extensions=[u"toc(title=目次)"]).convert(makedown_text)
実行結果
<div class="toc"><span class="toctitle">目次</span><ul> <li><a href="#header-1">Header 1</a><ul> <li><a href="#header-2">Header 2</a></li> </ul> </li> </ul> </div> <h1 id="header-1">Header 1</h1> <h2 id="header-2">Header 2</h2>
divタグ内の先頭にクラス属性がtoctitleのspanタグが追加されている。