メインコンテンツにスキップ
バージョン: 3.5.2

アドモニッション

基本的な Markdown 構文に加えて、テキストを3つのコロンのセットで囲み、その後に種類を示すラベルを付けることで、特別なアドモニッション構文を使用できます。

:::note

Some **content** with _Markdown_ `syntax`. Check [this `api`](#).

:::

:::tip

Some **content** with _Markdown_ `syntax`. Check [this `api`](#).

:::

:::info

Some **content** with _Markdown_ `syntax`. Check [this `api`](#).

:::

:::warning

Some **content** with _Markdown_ `syntax`. Check [this `api`](#).

:::

:::danger

Some **content** with _Markdown_ `syntax`. Check [this `api`](#).

:::
http://localhost:3000
注記

Markdown 構文 を含む コンテンツ です。 この api を確認してください。

ヒント

Markdown 構文 を含む コンテンツ です。 この api を確認してください。

情報

Markdown 構文 を含む コンテンツ です。 この api を確認してください。

警告

Markdown 構文 を含む コンテンツ です。 この api を確認してください。

危険

Markdown 構文 を含む コンテンツ です。 この api を確認してください。

Prettier との併用

Prettier を使用して Markdown ファイルをフォーマットする場合、Prettier はコードを無効なアドモニッション構文に自動フォーマットする可能性があります。この問題を回避するには、開始ディレクティブと終了ディレクティブの周囲に空行を追加します。これが、ここで示す例すべてにコンテンツの周囲に空行がある理由でもあります。

<!-- Prettier doesn't change this -->
:::note

Hello world

:::

<!-- Prettier changes this -->
:::note
Hello world
:::

<!-- to this -->
::: note Hello world:::

タイトルの指定

オプションのタイトルを指定することもできます。

:::note[Your Title **with** some _Markdown_ `syntax`!]

Some **content** with some _Markdown_ `syntax`.

:::
http://localhost:3000
Markdown 構文 を含むあなたのタイトル!

Markdown 構文 を含む コンテンツ です。

ネストされたアドモニッション

アドモニッションはネストできます。親アドモニッションレベルごとにコロン : を増やして使用します。

:::::info[Parent]

Parent content

::::danger[Child]

Child content

:::tip[Deep Child]

Deep child content

:::

::::

:::::
http://localhost:3000

親コンテンツ

子コンテンツ

孫コンテンツ

MDX を使用したアドモニッション

アドモニッション内で MDX を使用することもできます!

import Tabs from '@theme/Tabs';

import TabItem from '@theme/TabItem';

:::tip[Use tabs in admonitions]

<Tabs>
<TabItem value="apple" label="Apple">This is an apple 🍎</TabItem>
<TabItem value="orange" label="Orange">This is an orange 🍊</TabItem>
<TabItem value="banana" label="Banana">This is a banana 🍌</TabItem>
</Tabs>

:::
http://localhost:3000
アドモニッションでタブを使用する
これはりんごです 🍎

JSX での使用

Markdown 以外では、 `@theme/Admonition` コンポーネントを使用して同じ出力を得ることができます。

MyReactPage.jsx
import Admonition from '@theme/Admonition';

export default function MyReactPage() {
return (
<div>
<Admonition type="info">
<p>Some information</p>
</Admonition>
</div>
);
}

受け入れられるタイプは上記と同じです: `note`、`tip`、`danger`、`info`、`warning`。 オプションで、JSX 要素または文字列、またはタイトルを渡すことによってアイコンを指定できます

MyReactPage.jsx
<Admonition type="tip" icon="💡" title="Did you know...">
Use plugins to introduce shorter syntax for the most commonly used JSX
elements in your project.
</Admonition>
http://localhost:3000
💡ご存知でしたか…

プラグインを使用して、プロジェクトで最も一般的に使用される JSX 要素の短い構文を導入します。

アドモニッションのカスタマイズ

アドモニッションでは、**解析** と **レンダリング** の 2 種類のカスタマイズが可能です。

レンダリング動作のカスタマイズ

スウィズリング を介して、個々のアドモニッションタイプがどのようにレンダリングされるかをカスタマイズできます。多くの場合、単純なラッパーで目標を達成できます。たとえば、次の例では、`info` アドモニッションのアイコンのみを交換します。

src/theme/Admonition.js
import React from 'react';
import Admonition from '@theme-original/Admonition';
import MyCustomNoteIcon from '@site/static/img/info.svg';

export default function AdmonitionWrapper(props) {
if (props.type !== 'info') {
return <Admonition title="My Custom Admonition Title" {...props} />;
}
return <Admonition icon={<MyCustomNoteIcon />} {...props} />;
}

解析動作のカスタマイズ

アドモニッションは Remark プラグイン で実装されています。このプラグインは設定可能に設計されています。特定のコンテンツプラグイン(ドキュメント、ブログ、ページ)の Remark プラグインをカスタマイズするには、`admonitions` キーを介してオプションを渡します。

docusaurus.config.js
export default {
presets: [
[
'@docusaurus/preset-classic',
{
docs: {
admonitions: {
keywords: ['note', 'tip', 'info', 'warning', 'danger'],
extendDefaults: true,
},
},
},
],
],
};

プラグインは次のオプションを受け入れます

  • `keywords`:アドモニッションのタイプとして使用できるキーワードの配列。
  • `extendDefaults`:提供されたオプション(`keywords` など)を既存のデフォルトにマージする必要があります。デフォルトは `true` です。

`keyword` は `Admonition` コンポーネントの `type` プロパティとして渡されます。

カスタムアドモニッションタイプコンポーネント

デフォルトでは、テーマは `:::my-custom-admonition` などのカスタムアドモニッションキーワードをどう処理すればいいのかわかりません。テーマがそれらをどのようにレンダリングするかを知るように、各アドモニッションキーワードを React コンポーネントにマッピングするのはあなたの責任です。

次の設定を介して新しいアドモニッションタイプ `my-custom-admonition` を登録した場合

docusaurus.config.js
export default {
// ...
presets: [
[
'classic',
{
// ...
docs: {
admonitions: {
keywords: ['my-custom-admonition'],
extendDefaults: true,
},
},
},
],
],
};

次のファイルを作成することにより、 `:::my-custom-admonition` に対応する React コンポーネントを提供できます(残念ながら、React コンポーネントファイルではないため、スウィズルできません)

src/theme/Admonition/Types.js
import React from 'react';
import DefaultAdmonitionTypes from '@theme-original/Admonition/Types';

function MyCustomAdmonition(props) {
return (
<div style={{border: 'solid red', padding: 10}}>
<h5 style={{color: 'blue', fontSize: 30}}>{props.title}</h5>
<div>{props.children}</div>
</div>
);
}

const AdmonitionTypes = {
...DefaultAdmonitionTypes,

// Add all your custom admonition types here...
// You can also override the default ones if you want
'my-custom-admonition': MyCustomAdmonition,
};

export default AdmonitionTypes;

これで、Markdown ファイルで新しいアドモニッションキーワードを使用できるようになり、カスタムロジックで解析およびレンダリングされます

:::my-custom-admonition[My Title]

It works!

:::
http://localhost:3000
マイタイトル

動作します!