見出しと目次
Markdown見出し
通常のMarkdown見出しを使用できます。
## Level 2 title
### Level 3 title
#### Level 4 title
各Markdown見出しは、目次エントリとして表示されます。
見出しID
各見出しには、自動生成されるか、明示的に指定できるIDがあります。見出しIDを使用すると、MarkdownまたはJSX内で特定のドキュメントの見出しにリンクできます。
[link](#heading-id)
<Link to="#heading-id">link</Link>
デフォルトでは、Docusaurusは見出しテキストに基づいて見出しIDを自動生成します。たとえば、`### Hello World`のIDは`hello-world`になります。
生成されたIDには**いくつかの制限**があります。
- IDが見栄えが悪くなる可能性があります。
- 既存のIDを更新せずに、テキストを**変更または翻訳**したい場合があります。
特別なMarkdown構文を使用すると、**明示的な見出しID**を設定できます。
### Hello World {#my-explicit-id}
すべてのMarkdownドキュメントに明示的なIDを追加するには、**`write-heading-ids`** CLIコマンドを使用します。
生成された見出しIDは各ページで一意であることが保証されますが、カスタムIDを使用する場合は、各IDが各ページに正確に1回だけ表示されるようにしてください。そうでないと、同じIDを持つ2つのDOM要素が発生し、これは無効なHTMLセマンティクスとなり、見出しの1つがリンク不可能になります。
目次見出しレベル
各Markdownドキュメントには、右上に目次が表示されます。デフォルトでは、この目次にはh2とh3の見出しのみが表示されますが、これはページ構造の概要としては十分です。表示する見出しの範囲を変更する必要がある場合は、ページごとまたはグローバルに見出しの最小レベルと最大レベルをカスタマイズできます。
特定のページの見出しレベルを設定するには、`toc_min_heading_level`と`toc_max_heading_level`のフロントマターを使用します。
---
# Display h2 to h5 headings
toc_min_heading_level: 2
toc_max_heading_level: 5
---
すべてのページの見出しレベルを設定するには、`themeConfig.tableOfContents`オプションを使用します。
export default {
themeConfig: {
tableOfContents: {
minHeadingLevel: 2,
maxHeadingLevel: 5,
},
},
};
グローバルにオプションを設定した場合でも、フロントマターを使用してローカルで上書きできます。
`themeConfig`オプションは、サイト上のすべての目次(インライン目次を含む)に適用されますが、フロントマターオプションは右上の目次にのみ影響します。各`<TOCInline />`コンポーネントをカスタマイズするには、`minHeadingLevel`と`maxHeadingLevel`のプロパティを使用する必要があります。
インライン目次
MDXのおかげで、Markdownドキュメント内にインライン目次を直接表示することも可能です。
`toc`変数は、すべてのMDXドキュメントで使用でき、MDXドキュメントの見出しをすべて含んでいます。デフォルトでは、目次には`h2`と`h3`の見出しのみが表示されます。個々の`TOCInline`コンポーネントの`minHeadingLevel`または`maxHeadingLevel`を設定することで、表示する見出しレベルを変更できます。
import TOCInline from '@theme/TOCInline';
<TOCInline toc={toc} />
グローバルな`toc`は、見出しアイテムのリストです
declare const toc: {
value: string;
id: string;
level: number;
}[];
グローバルな`toc`はフラットな配列であるため、不要なノードを簡単に削除したり、追加のノードを挿入したりして、新しい目次ツリーを作成できます。
import TOCInline from '@theme/TOCInline';
<TOCInline
// Only show h2 and h4 headings
toc={toc.filter((node) => node.level === 2 || node.level === 4)}
minHeadingLevel={2}
// Show h4 headings in addition to the default h2 and h3 headings
maxHeadingLevel={4}
/>
目次生成のカスタマイズ
目次は、Remarkプラグインを使用してMarkdownソースを解析することで生成されます。偽陽性と偽陰性が生成される既知のエッジケースがあります。
非表示可能な領域内のMarkdown見出しは、目次にも表示されます。`Tabs`や`details`内の見出しは除外されません。
Markdown以外の見出しは、目次に表示されません。これは、前述の問題に対処するために有利に使用できます。
<details>
<summary>Some details containing headings</summary>
<h2 id="#heading-id">I'm a heading that will not show up in the TOC</h2>
Some content...
</details>
追加の見出しを人間工学的に挿入したり、特定の見出しを無視したりする機能は、現在開発中です。この機能が重要な場合は、このissueでユースケースを報告してください。
以下は、現在のページで使用可能な目次項目をより多く持つためのダミーコンテンツです。
例セクション1
Lorem ipsum
例サブセクション1 a
Lorem ipsum
例サブサブセクション1 a I
例サブサブセクション1 a II
例サブサブセクション1 a III
例サブセクション1 b
Lorem ipsum
例サブサブセクション1 b I
例サブサブセクション1 b II
例サブサブセクション1 b III
例サブセクション1 c
Lorem ipsum
例サブサブセクション1 c I
例サブサブセクション1 c II
例:小節 1 c III
例:セクション 2
Lorem ipsum
例:小節 2 a
Lorem ipsum
例:小節 2 a I
例:小節 2 a II
例:小節 2 a III
例:小節 2 b
Lorem ipsum
例:小節 2 b I
例:小節 2 b II
例:小節 2 b III
例:小節 2 c
Lorem ipsum
例:小節 2 c I
例:小節 2 c II
例:小節 2 c III
例:セクション 3
Lorem ipsum
例:小節 3 a
Lorem ipsum
例:小節 3 a I
例:小節 3 a II
例:小節 3 a III
例:小節 3 b
Lorem ipsum
例:小節 3 b I
例:小節 3 b II
例:小節 3 b III
例:小節 3 c
Lorem ipsum