コンテンツにスキップ

Material for MkDocsで目次(TOC)を非表示にする

Material for MkDocsで目次(TOC)を非表示にします。

解決したいこと

Material for MkDocsでは、以下のように目次(TOC)が表示されてしまいます。 コンテンツの幅が狭くなってしまうので非表示にしたいです。 MkDocsの目次

解決策1 meta(frontmatter)にhide:tocを追加

Material for MkDocsの公式ガイドで調べると以下が見つかりました。 目次ですが、"Navigation"の扱いになっており探すのに苦労しました・・・

Hiding the sidebars

ガイドどおりmeta情報に以下のようにhideオプションを追加すれば目次を非表示にできました。

---
date: 2024-08-12
title: Material for MkDocsで目次(TOC)を非表示
slug: mkdocs-hide-toc
categories:
  - mkdocs
hide:
  - toc
---

解決策2 hooksで一律オプションを追加

解決策1の方法だと、毎回hideオプションを追加することになるので辛いです。 全ドキュメントでhideオプションがONにできる方法を探しました。

結果、MkDocsにhooksというカスタマイズ方法があり、これで解決できました。

まずはhooksを有効にするために、"mkdocs.yml"に以下を追加します。 これでMkDocsの各イベントで"myhooks.py"にある関数を読んでくれるようになります。

hooks:
  - myhooks.py

"myhooks.py"をMkDocsのプロジェクト直下(mkdocs.ymlと同じディレクトリ)に作成します。 コードは以下です。

def on_page_markdown(markdown, page, config, files):
    if "hide" in page.meta:
        if not "toc" in page.meta["hide"]:
            page.meta["hide"].append("toc")
    else:
        page.meta["hide"] = ["toc"]
    return markdown

これでMkDocsの全ページの目次(TOC)を非表示にすることができました。

以上です。