关于 extract-tikz
从 Beamer 源文件提取 TikZ 图表,编译为多页 PDF,再转换成供 Quarto 幻灯片使用的 SVG。该技能还检查源文件同步与图表规则,并安排视觉审查。
主要功能
- 01核对提取文件与 Beamer 源码
- 02检查 TikZ 预防规则
- 03编译多页 PDF
- 04逐页转换为 SVG
- 05同步文件并进行视觉审查
适用场景
- 01将 Beamer 中的图表用于 Quarto 幻灯片
- 02更新 TikZ 源码后重新生成 SVG
- 03检查图表标签和几何布局
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ pedrohcgs/ claude-code-my-workflow --skill extract-tikz安装后在 Claude Code 中输入/extract-tikz确认已加载。
详细介绍
将 TikZ 图表提取为 SVG
从 Beamer 源文件中提取 TikZ 图表,编译为多页 PDF,并将每页转换为 SVG,以便用于 Quarto 幻灯片。
要新建图表,而不是提取现有图表? 使用
/new-diagram— 它会基于templates/tikz-snippets/搭建框架,并预先应用防护规则。
步骤
步骤 0:时效性检查(必须执行)
编译前,请确认 extract_tikz.tex 与当前 Beamer 源文件一致。
- 查找 Beamer 源文件:
ls Slides/$ARGUMENTS*.tex - 从 Beamer 中提取所有
\begin{tikzpicture}代码块 - 与
Figures/$ARGUMENTS/extract_tikz.tex进行比较 - 如果存在任何差异:根据 Beamer 源文件更新 extract_tikz.tex
- 如果 extract_tikz.tex 不存在:从头创建
步骤 1:防护预检查(必须执行 — 发现违规时停止)
编译前,请确认 Figures/$ARGUMENTS/extract_tikz.tex 中的每个 \begin{tikzpicture} 代码块都符合 .claude/rules/tikz-prevention.md 中的防护规则。此预检查使用与 /new-diagram 共享的小型 Python 脚本,以确保两个技能执行相同的行为:
python3 scripts/check-tikz-prevention.py "Figures/$ARGUMENTS/extract_tikz.tex"
检查内容:
- P3 — 使用
scale=X却未缩放节点。 单独使用scale=会缩小坐标,但不会缩小文本。允许的形式:scale=X, every node/.style={scale=X}或scale=X, transform shape。检查器会解析完整的\begin{tikzpicture}[...]选项块,即使该选项块跨越多行也不例外。 - P4 — 边标签缺少方向关键词。 每个边标签(
\draw中的node)都必须包含above、below、left、right或复合方向(例如above left)。单独的midway是路径位置,而非方向。检查器会扫描完整的\draw ...;语句,因此即使\draw和node[...]{...}分处不同的行,也能将它们关联起来。
请注意,预检查不会强制执行:P1(带边框节点的显式尺寸)和 P2(坐标映射注释)属于结构性规则,将在步骤 8 中由 tikz-reviewer 标记,而非在此处检查。
退出码:0 = 所有文件均通过,1 = 存在一个或多个 P3/P4 违规(stderr 会列出文件、行号、代码片段和规则),2 = 用法错误。
如果退出码非零:停止,报告违规行,并要求用户修复 Beamer 源文件(唯一事实来源)。不要编译。
步骤 2:导航到讲座对应的 Figures 目录
cd Figures/$ARGUMENTS
步骤 3:编译 extract_tikz.tex 文件
TEXINPUTS=../../Preambles:$TEXINPUTS xelatex -interaction=nonstopmode extract_tikz.tex
步骤 4:统计页数
pdfinfo extract_tikz.pdf | grep "Pages:"
步骤 5:使用从 0 开始的索引将每页转换为 SVG
重要:PDF 页码从 1 开始,但输出 SVG 文件的索引从 0 开始!
PAGES=$(pdfinfo extract_tikz.pdf | grep "Pages:" | awk '{print $2}')
for i in $(seq 1 $PAGES); do
idx=$(printf "%02d" $((i-1)))
pdf2svg extract_tikz.pdf tikz_exact_$idx.svg $i
done
步骤 6:同步到 docs/ 以供部署
cd ../..
./scripts/sync_to_docs.sh $ARGUMENTS
步骤 7:验证 SVG 文件
- 读取 2-3 个 SVG 文件,确认其中包含有效的 SVG 标记
- 确认文件大小合理(不为 0 字节)
步骤 8:视觉质量审查(tikz-reviewer)
使用 Agent 工具,并设置 subagent_type=tikz-reviewer,启动 tikz-reviewer Agent 审查 TikZ 源代码块,以查找标签重叠、几何错误和视觉不一致。审查者会引用 .claude/rules/tikz-measurement.md 中的具体通行标准和公式。如果返回 NEEDS REVISION 或 REJECTED,则循环执行:
- 在 Beamer
.tex源文件中应用建议的修复(唯一事实来源)。 - 将更新后的代码块重新复制到
extract_tikz.tex。 - 重新运行防护预检查(步骤 1)并编译。
- 重新生成 SVG 并再次同步。
- 再次调用 tikz-reviewer。
当 tikz-reviewer 返回 APPROVED 时停止(最多 5 轮)。
步骤 9:报告结果
唯一事实来源提醒
必须先在 Beamer .tex 文件中编辑 TikZ 图表,然后逐字复制到 extract_tikz.tex。请参阅 .claude/rules/single-source-of-truth.md。