mcpField
E
extract-tikz

extract-tikz

github.com/pedrohcgs文档处理1.7k51 次安装4 周前更新
代码仓库

关于 extract-tikz

从 Beamer 源文件提取 TikZ 图表,编译为多页 PDF,再转换成供 Quarto 幻灯片使用的 SVG。该技能还检查源文件同步与图表规则,并安排视觉审查。

主要功能

  1. 01核对提取文件与 Beamer 源码
  2. 02检查 TikZ 预防规则
  3. 03编译多页 PDF
  4. 04逐页转换为 SVG
  5. 05同步文件并进行视觉审查

适用场景

  1. 01将 Beamer 中的图表用于 Quarto 幻灯片
  2. 02更新 TikZ 源码后重新生成 SVG
  3. 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 源文件一致。

  1. 查找 Beamer 源文件:ls Slides/$ARGUMENTS*.tex
  2. 从 Beamer 中提取所有 \begin{tikzpicture} 代码块
  3. 与 Figures/$ARGUMENTS/extract_tikz.tex 进行比较
  4. 如果存在任何差异:根据 Beamer 源文件更新 extract_tikz.tex
  5. 如果 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,则循环执行:

  1. 在 Beamer .tex 源文件中应用建议的修复(唯一事实来源)。
  2. 将更新后的代码块重新复制到 extract_tikz.tex。
  3. 重新运行防护预检查(步骤 1)并编译。
  4. 重新生成 SVG 并再次同步。
  5. 再次调用 tikz-reviewer。

当 tikz-reviewer 返回 APPROVED 时停止(最多 5 轮)。

步骤 9:报告结果

唯一事实来源提醒

必须先在 Beamer .tex 文件中编辑 TikZ 图表,然后逐字复制到 extract_tikz.tex。请参阅 .claude/rules/single-source-of-truth.md。

评论

支持 Markdown