[[ナビゲーション (MkDocs)|ナビゲーション]]は通常[[YAML]]ファイルで管理するが、[[Markdown]]ファイルで管理する方法。[[Obsidian]]などの[[Markdown]]エディタと相性がいいというメリットがある。 ## 基本的な方法 [[Awesome Nav for MkDocs]]で`filename`に[[マークダウンファイル]]を指定する。 ```yaml plugins: - awesome-nav: filename: nav.md ``` ## [[wikiリンク]]で表現する方法 同様に[[Awesome Nav for MkDocs]]を使う。設定はデフォルトでOK。 ```yaml plugins: - awesome-nav ``` さらに[[mkdocs-gen-files]]を使って、`nav.md` から仮想的に `.nav.yml` を生成する。 ```yaml plugins: - gen-files: scripts: - gen_nav.py ``` `gen_nav.py` を作成。 ```python import re from pathlib import Path import mkdocs_gen_files WIKI_LINK = re.compile(r"\[\[([^\]]+)\]\]") def transform_nav(text: str) -> str: def repl(m: re.Match) -> str: inner = m.group(1) target, alias = inner.split("|", 1) if "|" in inner else (inner, None) path = f"{target}.md" return f"{alias}: {path}" if alias else path return WIKI_LINK.sub(repl, text) def main(): src = Path(mkdocs_gen_files.config["docs_dir"]) / "nav.md" dst_filename = ".nav.yml" with mkdocs_gen_files.open(dst_filename, "w") as f: print(transform_nav(src.read_text()), file=f) main() ```