hugoで目次(tableOfContents)を表示する方法

2020.1.10

hugoのページにも目次を表示したい人向けに書いています。

config.tomlの設定

まずは、config.tomlを開き次のような設定を追加します。

[markup]
    [markup.tableOfContents]
        endLevel = 2
        ordered = true
        startLevel = 2

それぞれの設定について説明します。

startLevel = 2endLevel = 2は目次を生成するレベルを指定しています。

この設定は##でマークアップしたh2レベルの項目だけ目次が生成されることになります。

endLevel = 3 とすれば、#####の項目が目次生成されます。

ordered = true<ol>タグで生成するか<ul>タグで生成するかを指定できます。 trueの場合は<ol>でタグが生成されます。

レイアウトファイルの編集

設定が完了したら、テーマファイルへ{{ .TableOfContents }}を追加します。

layouts\_default\single.htmlを開き、次のようなコードを追加すれば目次が表示されるようになります。

<h2>目次</h2>
{{ .TableOfContents }}

私の場合は、項目を作らないページの場合はタグを生成したくないのでこのようにしています。

{{ if gt (len .TableOfContents) 33 }}
<h2>目次</h2>
{{ .TableOfContents }}
{{ end }}

項目が一切無い場合でも、<nav id="TableOfContents"></nav>が生成されますので、.TableOfContentsが33文字より少ないときは生成しないようにしています。

公式サイトにも設定方法が書かれていますので、参考にしてください。

https://gohugo.io/content-management/toc

https://gohugo.io/getting-started/configuration-markup#table-of-contents

Related.