Material for MkDocsで目次(TOC)を非表示にする
Material for MkDocsで目次(TOC)を非表示にします。
解決したいこと
Material for MkDocsでは、以下のように目次(TOC)が表示されてしまいます。 コンテンツの幅が狭くなってしまうので非表示にしたいです。
解決策1 meta(frontmatter)にhide:tocを追加
Material for MkDocsの公式ガイドで調べると以下が見つかりました。 目次ですが、"Navigation"の扱いになっており探すのに苦労しました・・・
ガイドどおり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)を非表示にすることができました。
以上です。