Markdown
如何撰寫文件
介紹
Fumadocs 為 MDX(一種標記語言)提供了許多實用的擴充功能。以下是 Fumadocs UI 預設 MDX 語法的簡要介紹。
MDX 不是 Fumadocs 唯一支援的格式。實際上,你可以使用任何渲染器,如 next-mdx-remote
或 CMS。
Markdown
我們使用 GFM(GitHub 風格的 Markdown),這是 Markdown(CommonMark)的超集。 請參見 GFM 規範。
# Heading
## Heading
### Heading
#### Heading
Hello World, **Bold**, _Italic_, ~~Hidden~~
```js
console.log('Hello World');
```
1. First
2. Second
3. Third
- Item 1
- Item 2
> Quote here

| Table | Description |
| ----- | ----------- |
| Hello | World |
自動連結
內部連結使用 next/link
元件,允許預取並避免硬重載。
外部連結將獲得預設的 rel="noreferrer noopener" target="_blank"
屬性以增強安全性。
[My Link](https://github.github.com/gfm)
This also works: https://github.github.com/gfm.
MDX
MDX 是 Markdown 的超集,支援 JSX 語法。 它允許你匯入元件,並直接在文件中使用它們,甚至匯出值。
import { Component } from './component';
<Component name="Hello" />
請參見 MDX 語法 了解更多資訊。
卡片
對於新增連結很實用,預設包含。
<Cards>
<Card
href="https://nextjs.org/docs/app/building-your-application/data-fetching/fetching-caching-and-revalidating"
title="Fetching, Caching, and Revalidating"
>
Learn more about caching in Next.js
</Card>
</Cards>
圖示
你可以為卡片指定圖示。
import { HomeIcon } from 'lucide-react';
<Cards>
<Card icon={<HomeIcon />} href="/" title="Home">
Go back to home
</Card>
</Cards>
無 href
<Cards>
<Card title="Fetching, Caching, and Revalidating">
Learn more about `fetch` in Next.js.
</Card>
</Cards>
Fetching, Caching, and Revalidating
Learn more about fetch
in Next.js.
提示框
對於新增提示/警告很實用,預設包含。
<Callout>Hello World</Callout>
標題
指定提示框標題。
<Callout title="Title">Hello World</Callout>
Title
類型
你可以指定提示框的類型。
info
(預設)warn
error
<Callout title="Title" type="error">
Hello World
</Callout>
Title
Hello World
自訂元件
請參見所有 MDX 元件和可用選項。
標題
每個標題會自動套用錨點,它會清理空格等無效字元。(例如,Hello World
變為 hello-world
)
# Hello `World`
目錄設定
目錄 (TOC) 將基於標題生成,你還可以自訂標題的效果:
# Heading [!toc]
This heading will be hidden from TOC.
# Another Heading [toc]
This heading will **only** be visible in TOC, you can use it to add additional TOC items.
Like headings rendered in a React component:
<MyComp />
自訂錨點
你可以新增 [#slug]
來自訂標題錨點。
# heading [#my-heading-id]
你也可以將其與目錄設定鏈結起來,例如:
# heading [toc] [#my-heading-id]
要將使用者連結到特定標題,請將標題 ID 新增到雜湊片段:/page#my-heading-id
。
前言
我們支援 YAML 前言。這是一種指定文件常見資訊(例如標題)的方式。 將其放在文件頂部。
---
title: Hello World
---
## Title
有關前言可用屬性的清單,請參見頁面慣例。
程式碼區塊
預設使用 Rehype Code 支援語法醒目提示。
```js
console.log('Hello World');
```
你可以為程式碼區塊新增標題。
```js title="My Title"
console.log('Hello World');
```
醒目提示行
你可以透過新增 [!code highlight]
來醒目提示特定行。
```tsx
<div>Hello World</div> // [\!code highlight]
<div>Hello World</div>
<div>Goodbye</div>
<div>Hello World</div>
```
醒目提示單字
你可以透過新增 [!code word:<match>]
來醒目提示特定單字。
```js
// [\!code word:config]
const config = {
reactStrictMode: true,
};
```
差異比較
```ts
console.log('hewwo'); // [\!code --]
console.log('hello'); // [\!code ++]
```
console.log('hewwo');
console.log('hello');
分頁群組
你可以使用 <Tab />
元件與程式碼區塊一起使用。
import { Tab, Tabs } from 'fumadocs-ui/components/tabs';
<Tabs items={['Tab 1', 'Tab 2']}>
<Tab value='Tab 1'>
```ts
console.log('A');
```
</Tab>
<Tab value='Tab 2'>
```ts
console.log('B');
```
</Tab>
</Tabs>
注意,你可以在 MDX 檔案中新增 MDX 元件,而不必匯入它們。
console.log('A');
console.log('B');
使用 Typescript Twoslash
撰寫帶有懸停類型資訊和檢測到類型錯誤的 Typescript 程式碼區塊。
預設情況下未啟用。請參見 Twoslash。
圖片
所有內建內容來源都能正確處理圖片。
圖片會自動為 next/image
最佳化。

可選功能
一些你可以啟用的可選外掛。
數學方程式
使用 TeX 撰寫數學方程式。
```mdx
f(x) = x * e^{2 pi i \xi x}
```
f(x) = x * e^{2 pi i \xi x}
要啟用,請參見 Math Integration。
套件安裝
透過套件管理器(JS/Node.js)生成安裝套件的程式碼區塊。
```mdx
npm i next -D
```
npm i next -D
要啟用,請參見 Remark Install。
更多
你可以查看 Fumadocs 支援的外掛清單。