D3 海报 (会议/研究)
<skill-dir>在这个技能中指的是技能自身的基础目录,当技能加载时 Claude Code 会显示该路径(作为插件安装:${CLAUDE_PLUGIN_ROOT}/skills/d3-poster;手动复制:~/.claude/skills/d3-poster)。在每条命令中替换为实际路径。<wording-dir>指的是<skill-dir>/../d3-scientific-wording,这是每个 D3 插件都附带的共享措辞技能。
使用 D3 (数据驱动决策) 和维尔茨堡大学 2026 年企业设计规范,创建专业的 A0 纵向研究海报。基于 baposter 类的网格布局,通过一个轻量级的 D3 重新设计 (d3-poster.sty) 来绘制大学海报模板的框架(深蓝色页眉框,带有白色大学 logo、白色标题和作者以及蓝色印章;灰色分区栏,带有深蓝色文字;具有深蓝色分隔线的页脚,D3 logo 居首的 logo 行以及一个参考文献槽),设置 D3 调色板(大学深蓝色,D3 橙色强调色),并移植了 d3-abstract 中的 \highlight / \keypoint / infobox / card 宏。使用 XeLaTeX 或 LuaLaTeX 编译以使用大学字体 Inclusive Sans UW;回退到 pdfLaTeX 并带有 Helvetica 克隆字体。
页眉中的印章是一个临时选择:大学的 CD 手册在教学和主席交流中将其替换为院系装饰图案,而该院系包尚未发布。一旦发布,请替换 uw-seal-blue.pdf。
参考文件(按需加载)
下面的技能主体是工作流程;较长的参考资料位于 references/ 中。当某个主题出现时,加载对应的参考文件:
| 文件 | 何时加载 |
|---|---|
references/extraction.md | 即将从论文(任何层级)中提取内容时。包含按层级划分的提取命令、PDF 图形提取(优先矢量)、低分辨率光栅协议、磁盘格式优先级、架构图访谈。 |
references/tikz-recipes.md | 即将用 TikZ 从头绘制图形时。包含 4 个已验证编译的食谱(框图、流程图、分层架构、比较图)以及通用 TikZ 规则。 |
references/error-handling.md | 遇到编译错误或可见渲染错误时。包含 8 个已知问题(缺少类、缺少字体、siunitx \d 冲突、页眉渐变而非实心填充、Calibri 错误、静默裁剪、消失的希腊字母或符号、标题块设置过小)。 |
references/dual-agent-review.md | 审核深度为 standard 或 full 时(见审核部分)。包含审稿人提示、full 的迭代循环(最多 4 轮)、分数到 README 的协议。 |
references/macros-and-styling.md | 编写海报正文时需要确认宏名称、颜色值、字体大小、表格规范时。 |
模板文件和资源
<skill-dir>/
├── SKILL.md # 本文件
├── baposter.cls # 类文件(复制到每个项目的 drafts/ 目录)
├── example-poster.tex # 参考示例 -- 不要复制到用户项目中
├── references/ # 渐进式披露参考文件(见上表)
└── assets/ # 整个文件夹将被复制到用户项目中
├── d3-poster.sty
├── logos/ # uw-logo-white.pdf, uw-logo-navy.pdf, uw-seal-blue.pdf, logo-d3.pdf, DataDrivenDecisions.png
└── fonts/ # InclusiveSansUW-{Regular,Italic,Medium,SemiBold,Bold}.ttf, OFL-InclusiveSansUW.txt
两条放置规则:
baposter.cls位于技能根目录,而不是assets/下。\documentclass无法可靠地接受路径前缀,因此类文件必须在编译时与 .tex 文件同级。example-poster.tex位于技能根目录,而不是assets/内部。切勿将其复制到用户项目中。 它是一个参考文件,当你需要记住模式时阅读。如果你整体复制assets/,你不会复制example-poster.tex——这正好是正确的,因为将其与用户的poster.tex一起发布会混淆 Overleaf 的“主要文档”选择器,并留下一个过时的example-poster.pdf。用户的项目应包含一个 .tex 文件,其文件名与编译出的 .pdf 文件一致。
项目设置(保存位置 + 文件夹结构)
保存位置优先级
海报通常与一篇论文相关联。保存位置决定了协作者在本地 LaTeX 不可用时是否能在 Overleaf 上编译。在创建任何文件之前确定保存位置:
- 检测到论文子模块 →
<submodule>/poster/。如果.gitmodules列出了包含论文的子模块(路径类似于paper/、manuscript/、overleaf/,或任何内容包含\title{}+\begin{abstract}.tex 文件的子模块),则保存到该子模块内。实验室惯例:论文子模块存在于 GitHub 上,对应的 Overleaf 项目通过 Overleaf 的 GitHub 同步功能同步——远程仓库将是github.com/...,而不是git.overleaf.com。 - 没有子模块但存在论文文件夹 →
<paper-folder>/poster/。仍然放在论文文件夹下。 - 回退 →
./poster/在当前工作目录的根目录。
检测命令:
test -f .gitmodules && git submodule status
for sm in $(git config --file .gitmodules --get-regexp path 2>/dev/null | awk '{print $2}'); do
find "$sm" -maxdepth 3 -name "*.tex" -exec grep -l "\\\\begin{abstract}" {} \; 2>/dev/null
done
在创建文件前打印并与用户确认:
[HH:MM:SS] 保存位置: <选择路径>/poster/
原因: [论文子模块位于 paper/ (托管在 GitHub,与 Overleaf 同步) | paper/ 文件夹存在 | 仓库根目录回退]
可在 Overleaf 上访问? [yes -- 推送子模块到 GitHub,Overleaf 将同步 | no -- 仅限本地编译]
文件夹结构
<保存目标>/poster/
├── progress.md
├── SUMMARY.md
├── drafts/
│ ├── baposter.cls # 从技能复制(与 poster.tex 同级)
│ ├── assets/ # 从技能复制(d3-poster.sty, logos, fonts)
│ ├── figures/ # 可选:海报专用图形
│ ├── poster.tex # 唯一的工作文件(通过 git 进行版本管理)
│ ├── poster.pdf # 始终与 .tex 文件同名
│ └── revision_notes.md
└── final/
├── baposter.cls # 为独立上传到 Overleaf 而复制
├── assets/ # 为独立上传到 Overleaf 而复制
├── poster.tex # 与 drafts/ 中的文件名相同 -- 文件名不变
├── poster.pdf
└── README.md # 日期、标题、会议、审核分数
设置命令:
POSTER_DIR=<已解析路径>/poster
mkdir -p "$POSTER_DIR/drafts" "$POSTER_DIR/final"
cp <skill-dir>/baposter.cls "$POSTER_DIR/drafts/baposter.cls"
cp -r <skill-dir>/assets "$POSTER_DIR/drafts/assets"
# 不要复制 example-poster.tex -- 它保留在技能根目录。
命名规则(对 Overleaf 至关重要): 工作文件始终是 poster.tex,生成 poster.pdf。文件名一致。版本控制使用 git,而不是文件名前缀——不要使用 v1_poster.tex,不要使用 YYYYMMDD_title.tex。此技能的早期版本曾使用此类前缀;实际上,这混淆了 Overleaf 的上传(用户会将 v2_poster.tex 设为主文档,但旁边缓存的 v1_poster.pdf 使人不清楚哪个是真正的输出)。
为什么要在 drafts/ 和 final/ 中都复制 baposter.cls + assets/? 每个副本约 1 MB,但这保证了每个文件夹可以独立上传到 Overleaf——打开 final/ 的协作者不需要 drafts/ 中的任何内容。
文档框架
每张海报必须以此结构开始:
%! TEX program = xelatex
\documentclass[a0paper]{baposter}
\usepackage{relsize}
\usepackage{url}
\usepackage{multicol}
\usepackage{amsmath,amssymb}
\usepackage{natbib}
\usepackage{graphicx}
\usepackage{assets/d3-poster} % D3 重新设计:颜色、字体、宏
\DeclareMathOperator*{\argmin}{arg\,min}
\renewcommand{\vec}[1]{\boldsymbol{#1}} % 可选:粗体数学向量
\begin{document}
\begin{poster}{
columns=2, % 默认 2 列。仅在内容确实需要时才使用 3 列。
grid=false,
eyecatcher=false,
% 来自 d3-poster.sty 的大学框架:25 毫米边距,深蓝色页眉框,
% 带有 logo 行和参考文献的页脚。这两个长度适合模板。
headerheight=\dthreeheaderheight,
colspacing=\dthreecolspacing,
background=plain,
bgColorOne=white,
bgColorTwo=white,
% 分区栏:#ECECEC 配深蓝色 SemiBold 文字。对于单个框,
% 键 `emphasis` 提供矢车菊蓝栏和白色文字。
borderColor=d3-headergray,
headerColorOne=d3-headergray,
headerColorTwo=d3-headergray,
headerFontColor=d3-navy,
headerfont=\dthreesectionfont,
headershape=rectangle,
headershade=plain, % 纯色 headerColorOne 填充;baposter 的默认 `shadeLR` 是
% 渐变色。见 references/error-handling.md #4。
headerborder=none,
boxColorOne=white,
boxshade=plain,
boxpadding=0.6em,
textborder=none
}
%%% 眼图(空;大学 logo 占据此位置)%%%
{}
%%% 标题 -- 纯文本;在深蓝色页眉框中设置为白色加粗。默认无副标题。
{您的海报标题}
%%% 作者 -- 单行,白色,位于标题下方。
{作者姓名, Data Driven Decisions 团队\enspace|\enspace [email protected]}
%%% 页脚 logo 行:前两个单元格放置 D3 logo
{\dthreelogos}
%%% 动机(第 0 列,第 0 行)
\headerbox{动机}{name=Motivation,column=0,row=0}{
引导段落:为什么这项工作重要,有什么新意,关键指标。
在关键术语上少量使用 \highlight{}。
}
%%% 问题(第 0 列,填充到底部)
\headerbox{问题}{name=Problem,column=0,below=Motivation,above=bottom}{
形式化问题设定。领域相关的数学表达。
\keypoint{一句话要点总结。}
}
%%% 方法(第 1 列,顶部)
\headerbox{方法}{name=Approach,column=1,row=0}{
方法论。以方法概述图结束(无需标题——在正文中描述)。
}
%%% 结果(第 1 列,填充到底部)
\headerbox{实证结果}{name=Results,column=1,below=Approach,above=bottom}{
包含指标的信息框 + 一个 booktabs 比较表格。
}
%%% 文献 -- 页脚参考文献槽(3 条参考文献,无独立框)
\dthreereferences{
作者1 (年份, \textit{会议/期刊}); 作者2 (年份, \textit{会议/期刊}); 作者3 (年份, \textit{会议/期刊}).
}
\end{poster}
\end{document}
关键: 使用 \usepackage{assets/d3-poster}(带 assets/ 前缀)——包装器期望从项目根目录加载,该根目录下需要有 assets/d3-poster.sty 和一个同级的 baposter.cls。
d3-poster.sty 绘制的内容(来自大学的 A0 海报模板;几何尺寸随纸张缩放,因此 A1 和其他尺寸保持比例):
- 25 毫米边距。贯穿全宽的深蓝色页眉框,高 119 毫米,左上角为白色大学 logo,标题(白色加粗,A0 上为 50 pt,与模板一致)和作者(白色,34 pt)位于模板的文本区域,蓝色印章与框的右边缘和底部边缘齐平。
- 分区栏高约 24 毫米:
#ECECEC配深蓝色 SemiBold 文字。在框的键中添加emphasis可切换为模板的第二种样式,即矢车菊蓝栏配白色文字。 - 列下方的页脚:一条深蓝色分隔线;左侧是一个 72 × 39 毫米的 logo 行单元格,由
\begin{poster}的第 5 个参数填充(\dthreelogos= D3 logo 横跨前两个单元格,高约 30 毫米;\dthreelogocell{file.pdf}可添加合作伙伴 logo,最多三个);右侧是参考文献槽(\dthreereferences{...})。 - 早期的海报仍可编译:它们的选项块保留旧的栏外观,页眉和页脚无论如何都会被绘制,并且
\dthreelogos现在填充页脚的 logo 行而不是页眉。
盒子定位、列数、标题
列数 — 默认 2 列,仅在需要时使用 3 列
默认使用 columns=2。仅在以下情况下使用 columns=3:
- 论文有 5 个以上真正不同的内容部分且无法合并(罕见)
- 用户为需要它的会议明确要求这样做
在每种布局中,将文献放入页脚的参考文献槽,使用 \dthreereferences{...}(一个简短的列表,例如“作者1 (年份, 会议); 作者2 (年份, 会议); ...”),而不是放入一个盒子中。大学模板将页脚的右半部分用于此目的,并且这样可以避免在 A0 纵向布局下三列通常会产生拥挤的文献框。适合 3-5 条短参考文献;较长的块会被设置得更小,日志中会说明。
默认两列网格
+-----------------------------------------------+
| [大学 logo] 标题, 作者 (白色) [印章] | 深蓝色页眉框
+-----------------------+-----------------------+
| 动机 | 方法 |
| (第 0 列, 顶部) | (第 1 列, 顶部) |
+-----------------------+-----------------------+
| 问题 | 实证结果 |
| (第 0 列, 填充到 | (第 1 列, 填充到 |
| 底部) | 底部) |
+-----------------------+-----------------------+
| -------------------- 深蓝色分隔线 ----------- |
| [D3 logo] [合作伙伴] | 参考文献 | 页脚
+-----------------------+-----------------------+
三列变体(罕见)
+---------------+---------------+---------------+
| 动机 | 方法 | 实证 |
| (第 0 列) | (第 1 列, | 结果 |
+---------------+ 全高) | (第 2 列, |
| 问题 | | 全高) |
| (第 0 列) | | |
+---------------+---------------+---------------+
| 页脚: logo 行 (D3 居首) | 参考文献 |
+---------------+---------------+---------------+
\headerbox 键
| 键 | 用途 | 示例 |
|---|---|---|
name=X | 用于交叉引用的唯一标识符 | name=Motivation |
column=N | 从 0 开始的列索引 | column=0 |
row=N | 从顶部开始的 0 基行索引 | row=0 |
below=Y | 直接位于盒子 Y 下方 | below=Motivation |
above=bottom | 拉伸至页面底部 | above=bottom |
height=1 | 填充整个列的高度 | 在双列布局中很少需要 |
span=方向 | 跨越网格中的列(方向=1,2,3...) | 用于跨列标题部分 |
内容提取(渐进式披露)
海报的内容通常来自一篇论文。提取的层级(由用户确定)决定了流程的深度:
- 快速(无提取):手动选择要点,无自动内容解析。
- 标准:从论文 .tex 文件中提取文本,但使用引用材料中的现有图形。
- 完整:提取所有内容,包括从 PDF 中提取图形。
有关详细的提取命令和图形处理,请在到达该步骤时加载 references/extraction.md。
标准提取流程(最常见)
# 假设论文在 paper/ 目录中
# 1. 定位主 .tex 文件(通常在 paper/main.tex 或 paper/paper.tex)
PAPER_TEX=$(find paper/ -maxdepth 2 -name "*.tex" -exec grep -l "\\begin{document}" {} \; | head -n1)
# 2. 提取抽象/引言部分以获取关键信息
grep -A20 "\\begin{abstract}" "$PAPER_TEX" | head -25
# 3. 找到章节标题以制作海报的骨骼结构
grep -E "\\section\{|\\subsection\{" "$PAPER_TEX"
# 4. 查找关键图形和表格
# 找到图形引用:
grep -E "includegraphics|\\begin{figure}" "$PAPER_TEX"
# 找到表格引用:
grep -E "\\begin{table}|\\begin{tabular}" "$PAPER_TEX"
# 5. 提取参考书目以填充页脚参考文献槽
grep -E "\\cite\{|\\bibitem" "$PAPER_TEX"
完整提取流程(深入)
对于更复杂的工作,加载 references/extraction.md。它包含:
- 按层级划分的命令(快速、标准、完整)
- PDF 图形提取(优先矢量)
- 低分辨率光栅协议
- 磁盘格式优先级
- 架构图访谈提示
使用 TikZ 绘制图形
当需要从原始数据或架构模式创建自定义图形时,加载 references/tikz-recipes.md。该文件包含:
- 框图食谱:用于说明流程或组件交互的理想选择。
- 流程图食谱:用于表示流程、流水线或算法步骤。
- 分层架构食谱:用于软件系统、神经网络架构或抽象层。
- 比较图食谱:用于并排对比方法或结果。
每个食谱都附带一个完整的 LaTeX 代码块,该代码块已通过编译验证。
海报的宏和样式
d3-poster.sty 包提供了几个宏,以保持整个技能的一致设计和功能:
| 宏 | 用途 | 示例 |
|---|---|---|
\highlight{文字} | 用 D3 橙色强调色突出显示关键术语 | \highlight{重要发现} |
\keypoint{文字} | 以带边框的要点框标记主要结论 | \keypoint{主要贡献} |
\infobox{标题}{内容} | 创建包含指标或副结果的信息框 | \infobox{准确性}{98.5\%} |
\card{标题}{内容} | 创建一个内容卡片(用于布局分组) | \card{方法}{描述} |
\dthreelogos | 在页脚中插入 D3 和合作伙伴 logo 行 | {\dthreelogos} |
\dthreelogocell{file.pdf} | 在 logo 行中添加合作伙伴 logo | \dthreelogocell{partner-logo.pdf} |
\dthreereferences{...} | 在页脚部分设置参考文献列表 | \dthreereferences{作者1...; 作者2...} |
\dthreeheaderheight | 页眉框的高度(根据模板预设) | 用于 headerheight 键 |
\dthreecolspacing | 列间距(根据模板预设) | 用于 colspacing 键 |
\dthreesectionfont | 分区栏标题的字体样式 | 用于 headerfont 键 |
有关详细的配置参数(颜色值、字体大小、表格约定),请在编写海报正文时加载 references/macros-and-styling.md。
编译和错误处理
编译命令:
# 在 drafts/ 目录内编译
cd <海报目录>/drafts
# 使用 xelatex(推荐,用于完整的字体支持)
xelatex poster.tex
xelatex poster.tex # 两次编译确保交叉引用正确
# 或者使用 lualatex
lualatex poster.tex
lualatex poster.tex
# 如果包括参考文献
bibtex poster.aux
xelatex poster.tex
xelatex poster.tex
已知问题
遇到编译错误时,加载 references/error-handling.md。常见问题包括:
- 缺少类文件:确保
baposter.cls与poster.tex同级。 - 缺少字体:
assets/fonts/必须存在于编译目录中。 - siunitx
\d冲突:在\usepackage{siunitx}之后为宏添加\providecommand。 - 页眉渐变而非纯色:将
headershade=shadeLR改为headershade=plain。 - Calibri 错误:系统字体缺失;回退到包中包含的
InclusiveSansUW字体。 - 静默裁剪:检查列是否对齐到网格。
- 消失的希腊字母或符号:确保包含
amsmath和amssymb。 - 标题块过小:检查
headerheight是否设置为\dthreeheaderheight。
审核流程
对于合作项目,此技能包含一个可选的同行审核流程。审核深度可以是 standard 或 full。
标准审核
- 检查布局一致性(列、边距、字体)。
- 验证内容结构(章节是否按逻辑顺序排列)。
- 识别缺失的元素(参考文献、图形、关键指标)。
完整审核
- 模拟审稿人的评估(基于标准论文审核标准)。
- 对清晰度、影响力和视觉设计进行评分。
- 迭代改进(最多 4 轮)。
发起审核时,加载 references/dual-agent-review.md。
审核完成后,标准协议是将评分和反馈记录在 README.md 文件中,位于 final/ 目录内。
版本历史记录
此文档追踪了海报创建技能的重大变更。
| 版本 | 日期 | 变更描述 |
|---|---|---|
| 1.0 | 2024-05-15 | 初始版本。基于 baposter 的 D3 海报创建技能。 |
| 1.1 | 2024-08-20 | 增加字体回退处理。添加了 d3-poster.sty。 |
| 1.2 | 2025-01-10 | 修复了 Overleaf 的命名规则。标准化了文件夹结构。 |
有关更多详细信息或问题,请咨询 D3 技能库或联系 D3 团队。