---
title: table 增强
icon: mdi:table-plus
createTime: 2025/07/25 16:57:42
permalink: /guide/markdown/table/
badge: 新
---

## 概述

markdown 默认的表格功能相对比较简单，但在实际使用场景中，常常需要在表格中添加一些额外的信息，比如表格的标题；
或者额外的功能，如复制表格的内容等。

在不破坏表格语法的前提下，主题提供了 `::: table` 容器，可以方便的对表格进行扩展。

::: tip 表格增强容器在持续开发中，如果有其他的功能建议请在 [Issue](https://github.com/pengzhanbo/vuepress-theme-plume/issues) 中反馈。
:::

## 配置

该功能默认不启用，您需要在 `theme` 配置中启用它。

```ts title=".vuepress/config.ts"
export default defineUserConfig({
  theme: plumeTheme({
    markdown: {
      // table: true, // 启用默认功能
      table: {
        // 表格默认对齐方式 'left' | 'center' | 'right'
        align: 'left',
        // 表格宽度是否为最大内容宽度
        // 行内元素不再自动换行，超出容器宽度时表格显示滚动条
        maxContent: false,
        // 表格宽度默认占据整行
        fullWidth: false,
        /**
         * 复制为 html/markdown
         * true 相当于 `all`，相当于同时启用 html 和 markdown
         */
        copy: true, // true | 'all' | 'html' | 'md'
      }
    },
  })
})
```

## 语法

直接将 表格 包裹在 `:::table` 中即可。

```md
:::table title="标题" align="center" max-content copy="all"
| xx | xx | xx |
| -- | -- | -- |
| xx | xx | xx |
:::
```

### Props

:::: field-group

::: field name="title" type="string" optional
表格标题，显示在表格的下方
:::

::: field name="align" type="'left' | 'center' | 'right'" optional default="'left'"
表格对齐方式
:::

::: field name="copy" type="boolean | 'all' | 'html' | 'md'" optional default="true"
在表格的右上角显示复制按钮，可以复制为 html / markdown

- `true` 等同于 `all`
- `false` 不显示复制按钮
- `all` 同时启用 `html` 和 `md`
- `html` 启用复制为 html
- `md` 启用复制为 markdown
:::

::: field name="maxContent" type="boolean" optional default="false"
行内元素不再自动换行，超出容器宽度时表格显示滚动条
:::

::: field name="fullWidth" type="boolean" optional default="false"
表格宽度默认占据整行
:::

::: field name="hl-rows" type="string" optional
配置表格中的行高亮。

值使用 `type:row1,row2` 的格式，可以使用 `;` 组合多个 type row。

示例：

- `hl-rows="warning:1"`: 将第一行设置为 warning 颜色
- `hl-rows="danger:1,2"`: 将第一行和第二行设置为 danger 颜色
- `hl-rows="warning:1,2;danger:3,4"`: 将第一行和第二行设置为 warning 颜色，第三行和第四行设置为 danger 颜色

`type` 内置支持：`tip/note/info/success/warning/danger/caution/important`。

`row` 从 1 开始计数。
:::

::: field name="hl-cols" type="string" optional
配置表格中的列高亮。

值使用 `type:col1,col2` 的格式，可以使用 `;` 组合多个 type col。

示例：

- `hl-cols="warning:1"`: 将第一列设置为 warning 颜色
- `hl-cols="danger:1,2"`: 将第一列和第二列设置为 danger 颜色
- `hl-cols="warning:1,2;danger:3,4"`: 将第一列和第二列设置为 warning 颜色，第三列和第四列设置为 danger 颜色

`type` 内置支持：`tip/note/info/success/warning/danger/caution/important`。

`col` 从 1 开始计数。
:::

::: field name="hl-cells" type="string" optional
配置表格中的单元格高亮。

值使用 `type:(row,col)` 的格式，可以使用 `;` 组合多个 type cell。

示例：

- `hl-cells="warning:(1,1)"`: 将第一行第一列设置为 warning 颜色
- `hl-cells="danger:(1,1)(2,2)"`: 将第一行第一列，第二行第二列设置为 danger 颜色
- `hl-cells="warning:(1,1)(2,2);danger:(3,3)(4,4)"`: 将第一行第一列，第二行第二列设置为 warning 颜色，第三行第三列，第四行第四列设置为 danger 颜色

`type` 内置支持：`tip/note/info/success/warning/danger/caution/important`。

`row` 从 1 开始计数，`col` 从 1 开始计数。

:::
::::

## 示例

### 表格标题

**输入：**

```md
::: table title="这是表格标题"
| Header 1 | Header 2 | Header 3 |
|----------|----------|----------|
| Cell 1   | Cell 2   | Cell 3   |
| Row 2    | Data     | Info     |
:::
```

**输出：**

::: table title="这是表格标题"

| Header 1 | Header 2 | Header 3 |
|----------|----------|----------|
| Cell 1   | Cell 2   | Cell 3   |
| Row 2    | Data     | Info     |

:::

### 表格对齐

**输入：**

```md
::: table title="这是表格标题" align="center"
| Header 1 | Header 2 | Header 3 |
|----------|----------|----------|
| Cell 1   | Cell 2   | Cell 3   |
| Row 2    | Data     | Info     |
:::
```

**输出：**

::: table title="这是表格标题" align="center"

| Header 1 | Header 2 | Header 3 |
|----------|----------|----------|
| Cell 1   | Cell 2   | Cell 3   |
| Row 2    | Data     | Info     |

:::

### 表格内容宽度

**输入：**

```md
:::table title="这是表格标题" max-content

| ID | Description                                                                 | Status       |
|----|-----------------------------------------------------------------------------|--------------|
| 1  | This is an extremely long description that should trigger text wrapping in most table implementations. | In Progress  |
| 2  | Short text                                                                  | ✅ Completed |
:::
```

**输出：**

:::table title="这是表格标题" max-content

| ID | Description                                                                 | Status       |
|----|-----------------------------------------------------------------------------|--------------|
| 1  | This is an extremely long description that should trigger text wrapping in most table implementations. | In Progress  |
| 2  | Short text                                                                  | ✅ Completed |

:::

**输入：**

```md
::: table full-width
| Header 1 | Header 2 | Header 3 |
|----------|----------|----------|
| Cell 1   | Cell 2   | Cell 3   |
| Row 2    | Data     | Info     |
:::
```

**输出：**

::: table full-width

| Header 1 | Header 2 | Header 3 |
|----------|----------|----------|
| Cell 1   | Cell 2   | Cell 3   |
| Row 2    | Data     | Info     |

:::

### 表格行高亮

**输入：**

```md
::: table title="这是表格标题" hl-rows="tip:1;warning:2;important:3,4"
| row1 | row1 | row1 |
| ---- | ---- | ---- |
| row2 | row2 | row2 |
| row3 | row3 | row3 |
| row4 | row4 | row4 |
:::
```

**输出：**

::: table title="这是表格标题" hl-rows="tip:1;warning:2;important:3,4"

| row1 | row1 | row1 |
| ---- | ---- | ---- |
| row2 | row2 | row2 |
| row3 | row3 | row3 |
| row4 | row4 | row4 |

:::

### 表格列高亮

**输入：**

```md
::: table title="这是表格标题" hl-cols="success:1;warning:2;danger:3,4"
| col1 | col2 | col3 | col4 |
| ---- | ---- | ---- | ---- |
| col1 | col2 | col3 | col4 |
| col1 | col2 | col3 | col4 |
| col1 | col2 | col3 | col4 |
:::
```

**输出：**

::: table title="这是表格标题" hl-cols="success:1;warning:2;danger:3,4"

| col1 | col2 | col3 | col4 |
| ---- | ---- | ---- | ---- |
| col1 | col2 | col3 | col4 |
| col1 | col2 | col3 | col4 |
| col1 | col2 | col3 | col4 |

:::

### 表格单元格高亮

#### 方式一

在表格容器上使用 `hl-cells="type:(row,col)"` 的格式，可以使用 `;` 组合多个 type cell。

**输入：**

```md
::: table title="这是表格标题" hl-cells="danger:(1,1)(2,2);success:(3,3)(4,4);warning:(1,4)(2,3);important:(3,2)(4,1)"
| (1,1) | (1,2) | (1,3) | (1,4) |
| ----- | ----- | ----- | ----- |
| (2,1) | (2,2) | (2,3) | (2,4) |
| (3,1) | (3,2) | (3,3) | (3,4) |
| (4,1) | (4,2) | (4,3) | (4,4) |
:::
```

**输出：**

::: table title="这是表格标题" hl-cells="danger:(1,1)(2,2);success:(3,3)(4,4);warning:(1,4)(2,3);important:(3,2)(4,1)"

| (1,1) | (1,2) | (1,3) | (1,4) |
| ----- | ----- | ----- | ----- |
| (2,1) | (2,2) | (2,3) | (2,4) |
| (3,1) | (3,2) | (3,3) | (3,4) |
| (4,1) | (4,2) | (4,3) | (4,4) |

:::

#### 方式二

使用 [属性支持](./attrs.md) 语法

**输入：**

```md
::: table title="这是表格标题"
| (1,1) {.danger}    | (1,2)              | (1,3)            | (1,4)  {.warning} |
| ------------------ | ------------------ | ---------------- | ----------------- |
| (2,1)              | (2,2) {.danger}    | (2,3) {.warning} | (2,4)             |
| (3,1)              | (3,2) {.important} | (3,3) {.danger}  | (3,4)             |
| (4,1) {.important} | (4,2)              | (4,3)            | (4,4) {.danger}   |
:::
```

**输出：**

::: table title="这是表格标题"

| (1,1) {.danger}    | (1,2)              | (1,3)            | (1,4)  {.warning} |
| ------------------ | ------------------ | ---------------- | ----------------- |
| (2,1)              | (2,2) {.danger}    | (2,3) {.warning} | (2,4)             |
| (3,1)              | (3,2) {.important} | (3,3) {.danger}  | (3,4)             |
| (4,1) {.important} | (4,2)              | (4,3)            | (4,4) {.danger}   |

:::

## 自定义高亮类型

在 [自定义 CSS 样式](../custom/style.md) 中，通过以下格式可以自定义高亮类型：

```css
.vp-table table th.type,
.vp-table table td.type {
  color: #000;
  background-color: #fff;
}
```

比如，添加一个 `blue` 的高亮类型:

```css
.vp-table table th.blue,
.vp-table table td.blue {
  color: #4a7cb9;
  background-color: #a3c6e5;
}
```

<style>
.vp-table table th.blue,
.vp-table table td.blue {
  color: #4a7cb9;
  background-color: #a3c6e5;
}
</style>

然后就可以在表格中使用：

```md
::: table hl-rows="blue:1" hl-cols="blue:1" hl-cells="blue:(3,3)"
| Header 1 | Header 2 | Header 3 |
| -------- | -------- | -------- |
| Cell 1   | Cell 2   | Cell 3   |
| Cell 4   | Cell 5   | Cell 6   |
:::
```

::: table hl-rows="blue:1" hl-cols="blue:1" hl-cells="blue:(3,3)"

| Header 1 | Header 2 | Header 3 |
| -------- | -------- | -------- |
| Cell 1   | Cell 2   | Cell 3   |
| Cell 4   | Cell 5   | Cell 6   |

:::

## 表格单元格合并

表格单元格合并由 [markdown-it-attrs](https://github.com/arve0/markdown-it-attrs) 属性支持语法提供实现。
因此它不需要在 `:::table` 容器中使用，你可以在何人表格中使用它。

在表格单元格内，末尾部分使用 属性支持语法 `{}` 中，添加 `rowspan=rows` 或者 `{colspan=cols}` ，或组合使用，
即可实现表格单元格合并。

**输入：**

```md
| A                       | B   | C   | D                |
| ----------------------- | --- | --- | ---------------- |
| 1                       | 11  | 111 | 1111 {rowspan=3} |
| 2 {colspan=2 rowspan=2} | 22  | 222 | 2222             |
| 3                       | 33  | 333 | 3333             |
```

**输出：**

| A                       | B   | C   | D                |
| ----------------------- | --- | --- | ---------------- |
| 1                       | 11  | 111 | 1111 {rowspan=3} |
| 2 {colspan=2 rowspan=2} | 22  | 222 | 2222             |
| 3                       | 33  | 333 | 3333             |
