BACK TO ARCHIVE
Guide Markdown Components MDX

Markdown Style Guide & Components

05.22.2024 ADUCG RESEARCH

欢迎阅读 ADUCG Research 风格指南。本文档展示了在文章中可用的标准 Markdown 语法以及受 Starlight 启发的自定义 MDX 组件。


Standard Markdown

Headings

支持从 H1 到 H6 的标准 Markdown 标题。

Heading 1

Heading 2

Heading 3

Heading 4

Heading 5
Heading 6

Text Formatting

基本的文本格式包括粗体、斜体、删除线和行内代码。

粗体文本 (Bold text) 用于突出重要信息。 斜体文本 (Italic text) 用于轻微强调术语或概念。 粗斜体 (Bold and italic) 结合了两种风格以达到最大强调效果。 删除线文本 (Strikethrough text) 表示已弃用或过时的信息。 使用 inline code (行内代码) 来标记技术术语或文件路径。

Horizontal Rules

使用水平分隔线来从视觉上分割内容。你可以使用三个或更多的连字符、星号或下划线。


---
***
___

Lists

Unordered List

  • 列表中的第一项
  • 带有 粗体文本 的第二项
  • 带有 斜体文本 的第三项
  • 嵌套项
    • 子项一
    • 子项二
      • 深层嵌套项

Ordered List

  1. 流程的第一步
  2. 带有更多细节的第二步
  3. 包含以下内容的第三步:
    • 一个子步骤
    • 另一个子步骤
  4. 完成流程的最后一步

Task List

  • 已完成的任务
  • 待处理的任务
  • 另一个已完成的任务

Blockquotes

Basic Blockquote

这是一个基本的引用块,用于高亮重要信息或引用外部来源。

> 这是一个基本的引用块,用于高亮重要信息或引用外部来源。

Nested Blockquotes

包含重要信息的主引用块。

用于补充上下文的嵌套引用块。

用于复杂讨论的深层嵌套引用。

> 包含重要信息的主引用块。
>
> > 用于补充上下文的嵌套引用块。
> >
> > > 用于复杂讨论的深层嵌套引用。

Blockquotes with Attribution

预测未来的最好方法就是去创造它。

— Alan Kay

> 预测未来的最好方法就是去创造它。
>
> — Alan Kay

Tables

表格支持对齐语法并可包含格式化内容。

Feature (功能)Status (状态)Description (描述)
Markdown完整的 Markdown 支持
Syntax highlighting代码块高亮显示
Responsive design移动端友好的布局
Custom components扩展的功能性
| Feature (功能) | Status (状态) | Description (描述) |
| :--- | :---: | :--- |
| Markdown | ✅ | 完整的 Markdown 支持 |
| Syntax highlighting | ✅ | 代码块高亮显示 |
| Responsive design | ✅ | 移动端友好的布局 |
| Custom components | ✅ | 扩展的功能性 |

Code Blocks

Code blocks support syntax highlighting, titles, and line highlighting.

Basic Syntax with Title

You can add a file title by appending title="filename.ext" to the code block info string.

greeting.js
console.log('Hello, World!');
```js title="greeting.js"
console.log('Hello, World!');
```

Line Highlighting

Highlight specific lines using {line_number} syntax. Ranges are supported (e.g., {1-3, 5}).

App.tsx
export default function App() {
  const [count, setCount] = useState(0);
  return <button onClick={() => setCount(count + 1)}>{count}</button>;
}
```tsx {2-3} title="App.tsx"
export default function App() {
  const [count, setCount] = useState(0);
  return <button onClick={() => setCount(count + 1)}>{count}</button>;
}
```

Text Wrapping

Long lines of code will automatically wrap to the next line to prevent horizontal scrolling.

terminal-command.sh
npx create-astro@latest --template starlight --install --git --typescript --skip-houston --yes

Custom Components

Asides (Admonitions)

使用 <Aside> 来高亮重要信息。支持的类型包括 note (默认), tip, caution, 和 danger

Note

这是一个默认的提示 (note)。它适用于需要突出的常规信息。

<Aside>
  这是一个默认的提示 (note)。它适用于需要突出的常规信息。
</Aside>
Tip

Pro Tip: 你可以在 aside 内部使用 Markdown 格式,例如 斜体代码

<Aside type="tip">
  **Pro Tip:** 你可以在 aside 内部使用 Markdown 格式,例如 *斜体*`代码`
</Aside>
Caution

请小心!这用于警告用户潜在的陷阱或边缘情况。

<Aside type="caution">
  请小心!这用于警告用户潜在的陷阱或边缘情况。
</Aside>
Danger

危险区域 (Danger Zone): 可能导致数据丢失或系统故障的严重警告。

<Aside type="danger">
  **危险区域 (Danger Zone):** 可能导致数据丢失或系统故障的严重警告。
</Aside>

Steps

使用 <Steps> 可视化顺序流程。该组件会自动将步骤开头的粗体文本解析为标题。

Basic Steps

  1. 初始化项目 - 运行 npm init 创建一个新的 package.json 文件。

  2. 安装依赖 - 使用 npm install 添加必要的包。

  3. 构建与部署 - 运行构建脚本并部署你的应用程序。

<Steps>
 
1. **初始化项目** - 运行 `npm init` 创建一个新的 `package.json` 文件。
 
2. **安装依赖** - 使用 `npm install` 添加必要的包。
 
3. **构建与部署** - 运行构建脚本并部署你的应用程序。
 
</Steps>

Complex Steps with Mixed Content

步骤中可以包含代码块、表格和其他元素。

  1. 项目设置 - 首先设置你的开发环境。

    在继续之前,请确保你已安装 Node.js 18 或更高版本。

  2. 配置 - 使用必要的设置配置你的项目。

    SettingValueDescription
    titlestring站点标题
    descriptionstring站点描述
  3. 测试 - 测试你的配置以确保一切正常工作。

    npm run test
<Steps>
 
1. **项目设置** - 首先设置你的开发环境。
 
   在继续之前,请确保你已安装 Node.js 18 或更高版本。
 
2. **配置** - 使用必要的设置配置你的项目。
 
   | Setting | Value | Description |
   |---------|-------|-------------|
   | `title` | `string` | 站点标题 |
   | `description` | `string` | 站点描述 |
 
3. **测试** - 测试你的配置以确保一切正常工作。
 
   ```bash
   npm run test
   ```
 
</Steps>

Tabs

Tabs (标签页) 将内容组织成可切换的视图。

Basic Tabs

此标签页提供主题的概览。

此标签页包含详细信息和示例。

<Tabs>
  <TabItem label="概览">
    此标签页提供主题的概览。
  </TabItem>
  <TabItem label="详情">
    此标签页包含详细信息和示例。
  </TabItem>
</Tabs>

Tabs with Icons and Code

npm install @astrojs/starlight
pnpm add @astrojs/starlight
yarn add @astrojs/starlight
<Tabs>
  <TabItem label="npm" icon="seti:npm">
    ```bash
    npm install @astrojs/starlight
    ```
  </TabItem>
  <TabItem label="pnpm" icon="pnpm">
    ```bash
    pnpm add @astrojs/starlight
    ```
  </TabItem>
  <TabItem label="yarn" icon="seti:yarn">
    ```bash
    yarn add @astrojs/starlight
    ```
  </TabItem>
</Tabs>

File Tree

显示带有语法高亮和注释的目录结构。

  • .github/
    • workflows/
      • deploy.yml
  • src/
    • components/
      • Header.astro
    • content/
      • config.ts
    • pages/
      • index.astro
  • astro.config.mjs
  • package.json
<FileTree>
 
- .github/
  - workflows/
    - deploy.yml
- src/
  - components/
    - **Header.astro**
  - content/
    - config.ts
  - pages/
    - index.astro
- astro.config.mjs
- package.json
 
</FileTree>

Feature Cards

star 特性一

此卡片展示了第一个特性,带有图标和描述。

moon 特性二

此卡片展示了带有不同图标的第二个特性。

<CardGrid>
  <Card title="特性一" icon="star">
    此卡片展示了第一个特性,带有图标和描述。
  </Card>
  <Card title="特性二" icon="moon">
    此卡片展示了带有不同图标的第二个特性。
  </Card>
</CardGrid>

链接卡片 (Link cards) 是用于导航的可点击区域。

<CardGrid>
  <LinkCard title="文档" href="/docs" description="浏览我们全面的文档" />
  <LinkCard title="示例" href="/examples" description="查看实用示例和用例" />
</CardGrid>

Details (Collapsible)

使用 <Details> 将复杂或可选的内容隐藏在可切换的摘要下。

Basic Usage

点击显示隐藏内容

此内容默认隐藏。这对于 FAQ、长代码块或可能使主视图混乱的可选详细信息非常有用。

<Details summary="点击显示隐藏内容">
  此内容默认隐藏。这对于 FAQ、长代码块或可能使主视图混乱的可选详细信息非常有用。
</Details>

Nested Details

主主题

这是顶级内容。

子主题

这是主主题内的嵌套内容。

<Details summary="主主题">
  这是顶级内容。
  
  <Details summary="子主题">
    这是主主题内的嵌套内容。
  </Details>
</Details>

Complex Content

配置选项

以下是可用的配置标志:

FlagTypeDefault
verbosebooleanfalse
timeoutnumber3000
{
  "verbose": true,
  "timeout": 5000
}
<Details summary="配置选项">
  以下是可用的配置标志:
  
  | Flag | Type | Default |
  | :--- | :--- | :--- |
  | `verbose` | `boolean` | `false` |
  | `timeout` | `number` | `3000` |
  
  ```json
  {
    "verbose": true,
    "timeout": 5000
  }
  ```
</Details>
End of Article