Communitygithub.com

WonJeong0913/paper-figure

绘制和修正研究论文中的方法、流程和架构图,以可编辑的 Claude Design 画板形式呈现,无需图像生成模型。保留作者的结构,根据目标会议(ICML、NeurIPS、ICLR、ACL、AAAI、CVPR、IEEE、ACM、Nature)调整文字大小,与参考图进行对比,按打印尺寸测量,并导出矢量 PDF 和 300 dpi PNG。适用于“制作图表”、“修正图 2”、“概览图”、“架构图”、“检查我的图表”等场景。

paper-figure 是什么?

这是一个专门为科研论文绘制高质量流程和架构图的 AI 技能。其核心理念是使用独立可编辑的元素(通过 Claude Design 画板)而非图像生成模型来构建图表,确保作者能完全控制每个细节。该技能严格遵循学术出版规范:根据目标会议(如 ICML、NeurIPS、Nature 等)预设的宽度和最小字号调整文本大小,保证在印刷尺寸下清晰可读。工作流程高度结构化,包括构建结构分类账(从代码和论文中提取模块、连接、边界等)、分析参考图、绘制多个候选方案、使用专门的审计脚本(`figure_audit.py`)测量文本大小和重叠情况,并与原始图进行对比。最终产出可嵌入 LaTeX 的矢量 PDF 和用于 Word/幻灯片的 300 dpi PNG。该技能的重点在于忠实于作者的原始设计、代码和论文,任何结构性的修改都必须征得作者同意。它通过画板提供交互式编辑环境,并将修正过程嵌入到详细的分步工作流和严格的质量检查中。

兼容平台✓Claude Code~Codex CLI~Cursor
npx skills add https://github.com/WonJeong0913/paper-figure/tree/HEAD

在你喜欢的 AI 中提问

打开一个已预加载此 Agent Skill 的新对话。

文档

paper-figure 是做什么的?

从独立可编辑的元素绘制论文图表,并按印刷尺寸进行测量。

原则

  • 不使用图像生成模型。 您或作者必须绘制每个元素。
  • 当 Claude Design 画板工具可用时,必须将图表作为画板交付。 这是强制要求。首先创建或更新画板,以便作者可以移动、重新设置样式和评论每个元素。不得仅以 PNG、PDF 或本地 HTML 文件作为最终交付物。只有当会话中没有画板工具时,才在磁盘上绘制纯 HTML 画板,并在报告中说明(references/drawing-boards.md)。
  • PDF 和 PNG 是导出产物,在作者要求或图表最终定稿时生成:一个用于 LaTeX 的包含可编辑文本的矢量 PDF,以及一个由此生成的 300 dpi PNG,用于 Word 和幻灯片。
  • 图中的文字必须与论文正文中的名称完全一致,并使用论文的语言。
  • 结构必须保留。 您可以更改形状和布局。未经询问,您不得更改模块、连接或边界(参见“结构分类账”)。
  • 在绘制前确定目标会议。 不同会议的要求不同:Nature 要求图表文字最大为 7 pt,AAAI 要求至少 9 pt。如果作者尚未选择,请选择其领域内典型的会议,并在报告中说明。
  • 质量标准是顶级会议图表水准。 首先查看参考图表,构建候选方案,并让作者选择。不要仅仅满足于方框和箭头。
  • 只有在使用 scripts/figure_audit.py 测量并亲自检查渲染结果后,才能说“通过”或“无重叠”。 这会覆盖绘图表面默认的“不验证”设置。
  • 视觉检查仅供参考。 它可能会数错元素或遗漏连接。结构问题只能通过分类账和 --compare 选项来判断。

工作流程

  1. 阅读来源:论文草稿、代码以及作者自己的绘图。每次作者说“重做”时,都要重新阅读它们。
  2. 构建结构分类账。
  3. 撰写简报并选择会议(references/venues.md)。
  4. 打开 2–3 张参考图并编写样式表。
  5. 在画布上绘制 2–3 个候选方案,它们在布局或形状词汇上有所不同,而不是微小的调整。
  6. 审计、查看、比较、批判。 不断修正直到错误为零。
  7. 展示对比表。由作者选择。
  8. 导出:一旦作者选定,将图表放入手稿,并查看该页。

结构分类账(在任何编辑之前)

图表展示了作者设计的系统。将以下每一项从作者的图表、论文和代码中提取到一个表格中。

类别项目来源
模块(方框)确切名称原始图表 / 代码路径 / 论文章节
连接(箭头)发送方 → 接收方 : 数据名称产生该数据的代码
边界每个系统、技能或工具所包含的内容原始图表 / 代码
状态和资源共享状态、预算、共享模型、语料库、学习参数原始图表 / 代码
决策和循环决策结果、反馈和递归路径策略函数 / 算法
输入和输出用户输入、最终输出、输入和输出张量原始图表 / 代码

在绘制他人的方法时,需根据原始论文的算法和官方代码构建分类账,并引用它们。

  • 分类账中的任何内容都不得消失、重命名或跨越边界。如果必须更改(例如,图表与代码不一致),请在编辑前询问作者。
  • 不要发明模块或箭头,也不要为了简化而删除连接。在图注或报告中说明有意省略的部分。
  • 布局可以更改。流向和包含关系不可更改。
  • 细节图是对概览图的分割。名称、颜色和边界必须与其匹配。
  • 对照代码检查每个箭头:它必须从实际产生该数据的模块出发。
  • 编辑后,逐行检查分类账,并运行 python3 scripts/figure_audit.py NEW --venue icml --compare ORIGINAL。脚本无法识别无标签的箭头;请手动对照分类账检查这些箭头。
  • 以“结构变更:无”或列出变更项及其是否获得作者批准作为报告的开头。

与作者合作

  • 作者自己的绘图是基线。 在其基础上移除并对齐元素。不要完全替换其结构或样式。
  • 切勿覆盖原始文件。 将每个新版本放在其旁边(例如 Fig2_v2)。由作者确认。
  • 如果作者手动编辑了画板,请重新读取最新文件并在此基础上工作。
  • 一次只添加一种类型的元素。同时添加阶段面板、药丸和输出框会使图表过于复杂。
  • 将相邻阶段保留为带有其真实名称的虚线框。不要删除它们或将它们简化为一个箭头或灰色文本。
  • 每个图表只报告更改的内容。如果发现与论文或代码不一致,请在编辑图表前说明。

简报、参考资料、样式表

简报(每个图表一份)

角色:            概览(结构+过程)/ 阶段细节 / 架构块
图表类型:        A 系统或智能体流程 / B 模型或架构
会议:            指定放置宽度和文本像素 (px)(参见 references/venues.md)
读者收获:        一句话
保留的事实:      结构分类账
省略内容:        结果数字、属于正文的句子、诸如模型名称之类的设置

参考图(2–3 张)

  • 优先级顺序:该方法的原始论文或官方仓库;同一会议近期发表的同类型图表;作者早期的图表。
  • 打开每一张,并记录:形状词汇、每种颜色的含义、字体和变量符号、布局骨架、文字数量,以及哪些不值得模仿。
  • 只采用惯例。切勿重绘参考图或复制其配色和构图。

样式表(每篇论文一份)

  • 一篇论文中的所有图表使用一套视觉词汇:字体、文本像素 (px)、颜色及其含义、形状、线条和边框宽度、圆角半径、箭头。
  • 使用 scripts/dc_board.py,STYLE 字典就是样式表。在那里更改它,不要逐元素更改。

构图规则

  • 一个方框内只放置函数名称。解释性句子放在正文中。
  • 箭头携带数据名称标签。不要给数据编号。
  • 不要使用占位符名称,如 A/B/C 或 “发送至 B / 来自 A” 。使用真实的模块名称。
  • 边界仅包围实际执行该工作的部分。
  • 方框内的文本是关键词:不要使用句子,不超过 15 个单词,不要粘贴正文,不要列方程。简短的数据示例例外。
  • 阶段上不要有步骤编号徽章。图中不要有标题;标题就是图注。
  • 概览图同时展示结构和过程:输入 → 处理 → 输出 在几秒钟内从左到右阅读,反馈循环用虚线表示,输出清晰可见。
  • 在所有细节图中运行一个完整的示例,以盒子内部的小芯片形式呈现。
  • 考虑将概览图和细节图合并为一个图的 a 和 b 面板(堆叠,或宏观-微观缩放线)。将两种方案都作为候选方案绘制。
  • 当规则冲突时,按此顺序决定:关系和方向与代码和论文匹配 → 流程在几秒钟内可读 → 在印刷尺寸下可读 → 对齐 → 美观。

形状词汇、字体、颜色和线条:references/style.md。选择词汇 A(系统流程线:图标卡、芯片、面板)或 B(架构:形状表示类型),并且在一篇论文中不要混合使用。

尺寸

印刷文本(pt)= 文本 px × 放置宽度(pt)÷ 画板宽度(px)。同一个画板在不同会议中印刷尺寸不同,因此每当会议更改时都需重新测量。预设值和 px 尺寸:references/venues.md。

  • 保持一个图表中的文本大小基本一致。不要为了适应而缩小某些文本:将文本移至图注,放大方框或画板,换行,或分割图表。
  • 文本不得超出其方框,或距离边框 6 px 以内。
  • 一行中放置五个或更多方框会导致宽度不足:将标题拆分为 2–3 行,然后改为两行。
  • 宽图使用整行文本宽度(figure*)。在一列中,其文本大小减半。
  • 如果有多个面板,请精确对齐各行,或者用 7 px 或更大的间距分隔它们。

审计循环

设置:pip install playwright numpy pillow && python3 -m playwright install chromium (poppler-utils 启用 PDF 检查)。

python3 scripts/figure_audit.py project/Fig2.dc.html --venue icml --png fig2.png     # 测量 + 渲染
python3 scripts/figure_audit.py project/Fig2.dc.html --venue nature --column         # 单列图表
python3 scripts/figure_audit.py project/Fig2.dc.html --placed-mm 165 --min-pt 8      # 无预设的会议
python3 scripts/figure_audit.py project/Fig2.dc.html --venue icml --cvd fig2         # 灰度 + 色盲
python3 scripts/figure_audit.py project/Fig2_v2.dc.html --venue icml --compare project/Fig2.dc.html   # 标签保留了吗?
  1. 修复直到错误 (ERROR) 为零:超出限制的文本、方框外的文本、重叠的文本、画布外的文本、原始图中缺失的标签。对于每个警告 (WARN)(文本紧贴边框、文本穿过线条、后备字形、灰色背景上的文本、低于最小值的线条、接近但对齐失败),放大渲染结果并做出判断。
  2. 以放置尺寸查看渲染结果,并查看三张 --cvd 图像。
  3. 再次对照分类账、代码和论文检查箭头和标签。
  4. 使用检查表评分,并与参考图进行比较。
  5. 每轮保留之前的文件,并仅记录更改的内容。

修复顺序(防止返工):画布和边距 → 大区域和堆叠顺序 → 形状尺寸 → 填充和边框 → 连接器端点 → 文本 → 装饰。

完成意味着全部满足:审计通过,您查看了放置尺寸,并且检查结果高于通过线。仅审计通过是不够的。如果在五轮后仍有问题,则布局本身有误:告知作者并共同决定。

候选方案和检查

制作 2–3 个具有相同结构但不同布局或词汇的画板(a/b 面板与缩放线对比,从左到右与从下到上对比,词汇 A 与 B 对比)。将候选方案和参考图堆叠成一幅图像并展示:

from PIL import Image
ims = [Image.open(p).convert("RGB") for p in ["vA.png", "vB.png", "ref.png"]]
W = 1584; ims = [im.resize((W, round(im.size[1] * W / im.size[0]))) for im in ims]
sheet = Image.new("RGB", (W, sum(im.size[1] + 30 for im in ims)), "white"); y = 0
for im in ims: sheet.paste(im, (0, y)); y += im.size[1] + 30
sheet.save("compare_sheet.png")

每个维度评分 0–2.5(总计 10 分)。任何一票否决 (Veto) 都会使该维度得分为 0。

维度含义一票否决
忠实度在图注范围内展示方法;合理简化是可以的发明了模块或连接、流向反转、缺少必要的连接、超出范围、文本损坏或公式造假
简洁性信噪比高的视觉总结方框内有句子(超过 15 个字)、粘贴正文、方程列表
可读性一目了然的流程,清晰的文本图内有标题或图注、冗余标签、重叠、微小或不均匀的文本、杂乱的流程
美观度顶级会议水准的处理网格伪影、形状损坏、霓虹色或冲突色、剪贴画、混合字体、未对齐、黑色背景

通过线:期刊 8.5,会议 8.0,毕业论文 8.0,海报 7.0,幻灯片 6.5。同时为每个维度写下“优于 / 等于 / 劣于参考图”,并附上一行理由。

导出

python3 scripts/dc_export.py <root> Fig2.dc.html --out paperfigs --venue icml
  • 生成 Fig2.pdf(矢量,画板尺寸)和 Fig2.png(在放置宽度下为 300 dpi)。
  • PDF 检查必须通过:所有字体都已嵌入,无 Type 3 字体,无光栅图像。如果失败,首先修复字体列表(references/style.md)。
  • LaTeX: 在 figure* 内部使用 \includegraphics[width=\textwidth]{figures/fig2.pdf}。不要使用 \resizebox 或 scale= 缩小。单列图表使用 figure 和 \columnwidth。
  • Word 和幻灯片:在图表宽度处插入 PNG,然后检查该页是否有重叠和分页符。
  • 在替换手稿中的图表之前备份之前的图表,并且仅在作者决定后替换。
  • 图注遵循会议模板。在图注中说明示例符号的含义、有意省略的内容,以及示例是说明性的。

禁止事项

  • 未经作者确认,添加、删除或重命名模块、连接或边界。
  • 使用图像生成模型,交付仅位图的最终图表,或复制参考图。
  • 当画布工具可用时,仅交付 PNG、PDF 或本地文件。
  • 在方法图中放置结果数字,或在同一篇论文的不同图表之间改变颜色规则、文本大小或词汇。
  • 将文本置于灰色背景上,使用分数像素的 CSS 边框,或交付包含 Type 3 字体的 PDF。
  • 覆盖作者的原始文件,未经请求交换手稿中的图表,或替作者选择候选方案。
  • 未经测量就声称“可读”或“无重叠”。

文件

文件用途
scripts/dc_board.py从简短的 Python 代码构建画板:卡片、图标卡、梯形、操作圆、张量、面板、箭头
scripts/figure_audit.py以打印尺寸测量图表;支持 --venue, --compare, --cvd
scripts/dc_export.py画板 → 矢量 PDF + 300 dpi PNG,包含 PDF 字体和光栅检查
references/venues.md会议预设值:宽度、既定规则、最小文本尺寸(px)
references/style.md形状词汇 A 和 B,字体,颜色,线条,密度
references/drawing-boards.md在 Claude Design 画布或纯 HTML 画板上绘图;dc_board.py 调用;TiKZ 笔记
references/credits.md借用流程的来源及其许可证
examples/可通过审计的可运行图表:react-agent(词汇 A), transformer-block(词汇 B), rag-pipeline(最小化)

相关技能