mcpField
N
new-diagram

new-diagram

github.com/pedrohcgs设计与 UI1.7k38 次安装4 周前更新
代码仓库

关于 new-diagram

new-diagram 是从 TikZ 片段模板创建并审核图表的工作流,适用于需要为 Beamer 或 Quarto 制作图表的人。它包含预防规则检查、独立编译和视觉审查,并可选转换为 SVG。

主要功能

  1. 01从 TikZ 片段模板搭建图表
  2. 02检查图表预防规则
  3. 03独立编译为 PDF
  4. 04循环进行视觉审查与修订
  5. 05可选转换为 SVG

适用场景

  1. 01创建因果图或流程图
  2. 02绘制事件研究或时间线图
  3. 03生成供 Quarto 使用的 SVG 图表

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/pedrohcgs/claude-code-my-workflow --skill new-diagram

安装后在 Claude Code 中输入/new-diagram确认已加载。

详细介绍

创建新的 TikZ 图示

从 templates/tikz-snippets/ 搭建图示,依据预防规则进行检查,编译为独立文档,使用测量依据引用运行审查,并反复修改,直到图示通过。请使用此流程,不要从头编写 TikZ;这些代码片段内置了 tikz-prevention.md 要求的不变规则。

输入

  • $0(可选)——代码片段名称(不带 .tex)。必须是 templates/tikz-snippets/ 中的一个文件名。如果省略,请列出图库并让用户选择。
  • $1(可选)——输出路径。默认为 Figures/new_diagram.tex——如果此目标已存在,请先询问用户,以免覆盖文件。

工作流程

步骤 1:选择代码片段
ls -1 templates/tikz-snippets/*.tex

当前图库(说明见 templates/tikz-snippets/README.md):

  • dag-basic — 3 节点因果 DAG(X → Y,带混杂因素 U)
  • dag-mediation — X → M → Y,带直接路径
  • did-two-period — 两期双重差分
  • event-study — 事件时间系数及 95% 置信区间
  • timeline — 带错开事件的水平时间线
  • regression-scatter — 散点图 + OLS 拟合 + 置信带
  • flowchart-3step — 带判定菱形的垂直流程
  • supply-demand — 带需求曲线移动的供需图

如果 $0 不是其中之一,或未提供,请询问用户要使用哪一个。

步骤 2:将代码片段复制到输出路径
SRC="templates/tikz-snippets/$0.tex"
DST="${1:-Figures/new_diagram.tex}"

# Confirm before overwriting
if [ -f "$DST" ]; then
  echo "Output path already exists: $DST"
  # Ask the user whether to overwrite. Do NOT clobber silently.
fi

mkdir -p "$(dirname "$DST")"
cp "$SRC" "$DST"
步骤 3:根据用户意图编辑内容

询问用户图示应展示什么。使用 Edit 工具编辑 $DST:

  1. 更新顶部的注释块,使意图句符合用户目标。
  2. 如果坐标发生变化,更新坐标映射注释。
  3. 重命名节点并编辑标签。除非含义确实发生变化,否则保留节点样式(dag-node、flow-node 等)。
  4. 不要在 tikzpicture 选项中添加单独的 scale=X。坐标会缩小,文本不会——这会导致元素碰撞。允许的形式:scale=X, every node/.style={scale=X} 或 scale=X, transform shape。完整规则见 tikz-prevention.md P3,关于 scale=1.1 的惯例见 tikz-visual-quality.md。
  5. 每个新边标签都必须带有方向关键词(above、below、left、right、above left 等)。单独使用 midway 只是路径位置,并非方向——这违反 P4。
步骤 4:预防规则预检查(必须执行)

运行 /extract-tikz 使用的同一个共享 Python 检查器——这是唯一能在两项技能中一致执行 P3 和 P4 的工具:

python3 scripts/check-tikz-prevention.py "$DST"
  • 退出码 0 → 通过,继续。
  • 退出码 1 → 存在违规(stderr 会报告行号、规则和代码片段)。修复 $DST 并重新运行,直到违规数为零。
  • 退出码 2 → 用法错误(例如缺少文件)。

不要在命令中内联重新实现 grep。Python 检查器能正确处理多行 \begin{tikzpicture}[...] 选项和多行 \draw ... node {...} 跨行内容,而按行处理的 grep 无法识别这些情况。

步骤 5:编译为独立文档

所有代码片段都使用 \documentclass[border=4pt]{standalone},因此无需 Beamer 框架,也无需 Preambles/header.tex 即可编译:

cd "$(dirname "$DST")"
xelatex -interaction=nonstopmode "$(basename "$DST")" > /tmp/tikz-compile.log 2>&1

检查退出码和 *.pdf 文件大小。如果编译失败,请读取 /tmp/tikz-compile.log 并修复 .tex 源文件。

步骤 6:通过 tikz-reviewer 进行视觉审查

使用 Task(subagent_type=tikz-reviewer)启动 tikz-reviewer Agent。提供 .tex 源文件和编译后的 .pdf 路径。现在,审查者必须为每项 CRITICAL/MAJOR 发现引用 tikz-measurement.md 中的检查项和公式——含糊的报告会被驳回。

循环执行:

  1. 如果结果为 APPROVED → 进入步骤 7。
  2. 如果结果为 NEEDS REVISION 或 REJECTED → 修改 $DST,重新运行步骤 4(预防规则预检查)、重新编译(步骤 5),并再次调用审查者。

最多 5 轮。 如果经过 5 轮后,审查者仍报告 CRITICAL 问题,请向用户说明情况——可能需要重新设计代码片段或调整请求内容,而不只是微调。

第 7 步:可选 — 转换为 SVG,以用于 Quarto

如果用户计划在 Quarto 幻灯片中使用该图(而不只是用于 Beamer),请将编译后的 PDF 转换为 SVG:

pdf2svg "${DST%.tex}.pdf" "${DST%.tex}.svg" 1

基于片段的图表只有一页,因此这里使用与 .tex 同名的单个 .svg 文件是正确的。这与 /extract-tikz 不同,后者会从 Figures/LectureN/extract_tikz.tex 主文件生成多页 PDF,并将输出命名为 tikz_exact_00.svg, tikz_exact_01.svg, ...(PDF 页码从 1 开始,而文件名从 0 开始)。如果需要用于逐页显示的多页输出,请改用 /extract-tikz。

第 8 步:清理构建产物
cd "$(dirname "$DST")"
rm -f *.aux *.log *.out *.synctex.gz

保留 .pdf 和 .svg(如果已生成)。下游工具会使用它们。

第 9 步:报告

打印摘要:

  • 使用的片段 → 输出路径
  • 审核者的结论和轮数
  • .pdf 大小和页数
  • .svg 路径(如果已生成)
  • 提醒在目标 Beamer/Quarto 文件中使用 \input 或 \includegraphics 插入该图

为什么从片段开始?

从头编写 TikZ 往往会导致元素重叠,因为作者无法通过视觉估算曲线和标签的位置。片段内置了 tikz-prevention.md 要求的不变量——坐标映射、明确的节点尺寸、带方向的边标签——因此图表按设计即可通过预防性预检。你始终可以偏离片段;相关规则仍然适用。

交叉引用

评论

支持 Markdown