[[ナビゲーション (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()
```