Kaoyan fix-table-pipe

修复 Markdown 表格渲染问题,包括:(1) Callout 块内表格前缺少空行;(2) LaTeX 绝对值符号 $|f(x)|$ 中管道符被误解析为表格分隔符。**自动触发**:每次写入包含表格的文件后,自动检查表格格式是否符合 Obsidian Markdown 规范。手动触发:当用户提到"表格格式错误"、"表格显示异常"、"表格渲染问题"、"Callout 表格"时使用此 skill。

install
source · Clone the upstream repo
git clone https://github.com/Treasoni/kaoyan
Claude Code · Install into ~/.claude/skills/
T=$(mktemp -d) && git clone --depth=1 https://github.com/Treasoni/kaoyan "$T" && mkdir -p ~/.claude/skills && cp -r "$T/.claude/skills/fix-table-pipe" ~/.claude/skills/treasoni-kaoyan-fix-table-pipe && rm -rf "$T"
manifest: .claude/skills/fix-table-pipe/SKILL.md
source content

自动触发机制

🔴 强制触发(自动检查)

每次使用 Write 或 Edit 工具修改包含表格的 .md 文件后,必须执行本技能进行格式检查!

检查时机:

  1. ✅ Write 工具写入包含表格的内容后
  2. ✅ Edit 工具修改了表格相关内容后
  3. ✅ 任何包含
    | 列名 |
    格式的文件操作后

工作流程

[Write/Edit 完成]
      ↓
[检查文件内容是否包含表格]
      ↓
[是] → 执行表格规范检查 → 修复问题 → 写回文件
[否] → 跳过检查

修复表格渲染问题

常见问题类型

问题 1:Callout 内表格前缺少空行 ⚠️ 最常见

症状:表格显示为纯文本,或列错位、内容丢失

原因:Callout 内的表格必须前面有空行才能正确渲染

# ❌ 错误 - 表格不会渲染
> **标题**:
> | 列1 | 列2 |
> |-----|-----|
> | A   | B   |

# ✅ 正确 - 表格会正确渲染
> **标题**:
>
> | 列1 | 列2 |
> |-----|-----|
> | A   | B   |

修复方法:在表格前添加

>
空行

问题 2:LaTeX 绝对值管道符冲突

症状:表格列数比预期多,内容被截断

原因

$|x|$
中的
|
被误认为表格分隔符

# ❌ 错误
| $|f(x)|$ 的值 | 说明 |

# ✅ 正确
| $\vert f(x) \vert$ 的值 | 说明 |

修复方法:将

|...|
转换为
\vert...\vert

工作流程

自动检查模式(推荐)

触发条件:每次 Write/Edit 包含表格的文件后自动执行

检查清单

  • 识别文件中所有表格(查找
    | 列1 | 列2 |
    模式)
  • 检查表格是否在 Callout 块内(前行有
    >
  • 检查 Callout 内表格前是否有空行
    >
  • 检查表格内容是否包含
    $|...|$
    格式
  • 修复所有发现的问题
  • 使用 Edit 工具写回文件

Step 1:识别问题

  1. 检查表格是否在 Callout 块内(行首有
    >
  2. 检查 Callout 内表格前是否有空行
    >
  3. 检查表格内容是否包含
    $|...|$
    格式

Step 2:修复 Callout 内表格空行问题

检测规则

  • 找到 Callout 块内的表格(以
    > |
    开头的行)
  • 检查表格前一行是否为空行
    >
  • 如果不是空行,在表格前插入
    >

修复示例

# 修复前
> **逐项转换**:
> | 原来的 | 变成 | 说明 |

# 修复后
> **逐项转换**:
>
> | 原来的 | 变成 | 说明 |

Step 3:修复管道符冲突

转换规则

原始格式转换后
`$expr
`$$expr

不处理的情况

  • 已使用
    \vert
    $\vert f(x) \vert$
  • 已使用
    \left\right
    $\left| f(x) \right|$
  • 代码块内

Step 4:写回文件

使用 Edit 工具更新文件,保持原有缩进和格式。

完整示例

输入(Callout 内表格缺少空行 + 管道符问题):

> [!example] 例题
> **表格**:
> | $|f(x)|$ 的值 | 说明 |
> |:---:|:---:|
> | 1 | 正常 |

输出

> [!example] 例题
> **表格**:
>
> | $\vert f(x) \vert$ 的值 | 说明 |
> |:---:|:---:|
> | 1 | 正常 |

注意事项

  1. 自动检查优先:每次 Write/Edit 包含表格的文件后,必须执行本技能
  2. 优先修复空行问题:Callout 内表格缺少空行是最常见的问题
  3. 保持 Callout 格式:空行必须是
    >
    而不是完全空行
  4. 批量处理:一次修复文件中所有类似问题

快速检查命令

在每次 Write/Edit 后,执行以下检查:

# 检查文件中是否有 Callout 内表格缺少空行
grep -n '> \|' "文件路径.md" | grep -v '^*>$'

与其他技能的协同

技能协同场景
mistake-book整理错题时,检查错题本中的表格格式
obsidian-markdown创建包含表格的笔记时,自动检查表格格式
kaoyan-math-notes生成数学笔记时,检查公式表格格式

版本: 2.0.0 - 增加自动触发机制