**Core 機能** — 常に有効です。見出し ID は階層形式です。

## 概要

`h2` 以上のすべての見出しに以下が自動的に付与されます。

1. zfb 独自の `slugify` で見出しテキストから生成されたスラグベースの `id` 属性（github-slugger に近い挙動ですが、`.` や `/` などの記号を除去せず `-` にまとめます）。
2. 見出しテキストの後に追加される、空の自己参照アンカー要素。読者がページ内の直接リンクをコピーできます。
3. 重複解消: 同じスラグが複数生成される場合、カウンターサフィックスが付与されます（`overview`、`overview-1`、`overview-2` など）。

`h1` には `id` が付与されません。ドキュメント唯一の `h1` はフロントマターのページタイトルです。

## 階層 ID

zudo-doc は常に zfb の階層見出し ID を有効にします。パッケージプリセットと右側 TOC の抽出処理は同じ割り当て規約を使うため、ユーザー向けの方式設定なしでレンダリング ID と TOC アンカーが同期します。

```ts
// zudoDoc() が内部的に配線する内容
markdown: {
  features: {
    headingIds: { strategy: "hierarchical" },
  },
}
```

各見出しの `id` は、祖先の連なりを `-` で結合したプレフィックスを持ちます。

```md
## Foo

### Moo

#### Mew
```

は `id="foo"`、`id="foo-moo"`、`id="foo-moo-mew"` としてレンダリングされます。見出し内アンカーの `href`、右側 TOC、[Heading Marker TOC](https://zudo-doc.takazudomodular.com/ja/docs/markdown-features/heading-marker-toc)、[TOC export](https://zudo-doc.takazudomodular.com/ja/docs/markdown-features/toc-export) はすべて同じ ID に従います。

詳細:

- 完全パスが重複した場合は重複カウンターが付与されます（`a-b`、`a-b-1`）。
- 重複解消された親はその **最終** ID を子に与えます。2 つ目の `## Foo` は `foo-1` となり、その配下の `### Bar` は `foo-1-bar` になります。
- 階層アンカーは見出しのアウトラインから再構築でき、衝突を減らせます（URL が長くなる代わりに）。

## 他のページからのディープリンク

各見出しに安定した `id` が付与されるため、別のページの特定セクションにリンクできます。ネストした見出しには祖先プレフィックス付きの形式を使います。

```md
[Moo セクションを参照](./other-page.mdx#foo-moo)
```

## 補足

- zudo-doc の右側 TOC ビルダー（`pages/lib/_extract-headings.ts`）も同じ割り当て処理をミラーしているため、TOC の `href="#…"` 値は常にレンダリングされた見出し `id` と一致します。
- オプトインの Heading Marker TOC 機能は、このプラグインが生成した安定した見出し識別子に依存します。`headingMarkerToc` が有効な場合、Heading Links の後で実行されます。