見出しと目次
Markdown headings
You can use regular Markdown headings.
## 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
」は「hello-world
」というIDを持つことになります。
生成されたIDには次のようないくつかの制限があります。
- IDの見た目が悪い場合がある
- 既存のIDを更新することなく、テキストを変更したり翻訳したりしたくてもできない場合がある
A special Markdown syntax lets you set an explicit heading id:
### ハローワールド {#my-explicit-id}
write-heading-ids
CLIコマンドを使用すると、すべてのMarkdown文書に明示的なIDを追加することができます。
生成された見出しIDは各ページで一意であることが保証されますが、カスタムIDを使用する場合は、それぞれが各ページに1つだけあるようにしてください。そうしないと、同じIDを持つ2つのDOM要素が存在することになりますが、これは無効なHTMLセマンティクスであり、一つの見出しがリンク不能となることに繋がります。
目次の見出しレベル
Each Markdown document displays a table of contents on the top-right corner. デフォルトでは、この目次にはh2およびh3の見出しのみが表示されますが、ページ構造の概要を知るには十分でしょう。 見出しの表示範囲を変更する必要がある場合、最小および最大の見出しレベルをページごとまたはグローバルにカスタマイズすることができます。
特定のページの見出しレベルを設定するには、フロントマター内でtoc_min_heading_level
とtoc_max_heading_level
を使用します。
---
# h2〜h5の見出しを表示
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文書内に直接目次を表示することもできます。
The toc
variable is available in any MDX document and contains all the headings of an MDX document. By default, only h2
and h3
headings are displayed in the TOC. You can change which heading levels are visible by setting minHeadingLevel
or maxHeadingLevel
for individual TOCInline
components.
import TOCInline from '@theme/TOCInline';
<TOCInline toc={toc} />
The toc
global is just a list of heading items:
declare const toc: {
value: string;
id: string;
level: number;
}[];
Note that the toc
global is a flat array, so you can easily cut out unwanted nodes or insert extra nodes, and create a new TOC tree.
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}
/>
目次の生成をカスタマイズ
The table-of-contents is generated by parsing the Markdown source with a Remark plugin. There are known edge-cases where it generates false-positives and false-negatives.
Markdown headings within hideable areas will still show up in the TOC. For example, headings within Tabs
and details
will not be excluded.
Non-Markdown headings will not show up in the TOC. This can be used to your advantage to tackle the aforementioned issue.
<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>
The ability to ergonomically insert extra headings or ignore certain headings is a work-in-progress. If this feature is important to you, please report your use-case in this issue.
Below is just some dummy content to have more table of contents items available on the current page.
Example Section 1
Lorem ipsum
Example Subsection 1 a
Lorem ipsum
Example subsubsection 1 a I
Example subsubsection 1 a II
Example subsubsection 1 a III
Example Subsection 1 b
Lorem ipsum
Example subsubsection 1 b I
Example subsubsection 1 b II
Example subsubsection 1 b III
Example Subsection 1 c
Lorem ipsum
Example subsubsection 1 c I
Example subsubsection 1 c II
Example subsubsection 1 c III
Example Section 2
Lorem ipsum
Example Subsection 2 a
Lorem ipsum
Example subsubsection 2 a I
Example subsubsection 2 a II
Example subsubsection 2 a III
Example Subsection 2 b
Lorem ipsum
Example subsubsection 2 b I
Example subsubsection 2 b II
Example subsubsection 2 b III
Example Subsection 2 c
Lorem ipsum
Example subsubsection 2 c I
Example subsubsection 2 c II
Example subsubsection 2 c III
Example Section 3
Lorem ipsum
Example Subsection 3 a
Lorem ipsum
Example subsubsection 3 a I
Example subsubsection 3 a II
Example subsubsection 3 a III
Example Subsection 3 b
Lorem ipsum
Example subsubsection 3 b I
Example subsubsection 3 b II
Example subsubsection 3 b III
Example Subsection 3 c
Lorem ipsum