协作头脑风暴
brainstorming
在实现前澄清需求、探索设计选择,并形成清晰的开发方向。
tikz-architecture-diagram【开发与工程】学术顶刊风格的系统/平台层级架构图绘制——用 TikZ + xelatex 把「自下而上的 N 层架构」画成期刊级矢量插图(层带 + 左侧层标块 + 白色组件盒 + 层间数据流箭头),并附构建管线、文字防遮盖核验、论文嵌入全流程。只要用户提到画架构图/系统架构/平台框架/分层架构/技术栈分层图/总体框架图/论文总体架构图/顶刊风格插图/五层架构/机理图,都应使用本 skill,即使没明说"架构"。
独立 GitHub 快照 · 自动分类 · 以原作者文档为准
把"系统自下而上分为 N 层、每层若干模块"这类内容画成学术顶刊风格的矢量架构图。核心是绝对坐标布局:层带、层标块、组件盒、箭头全部用 cm 坐标先算好再写,天然杜绝部件互相遮盖;字体按 中文宋体 + 西文 Times 风格,配色用 Okabe-Ito 低饱和分层用色。
本 skill 是 math-modeling-skill 的捆绑子 skill,也可独立取出使用(把本目录整体复制到 ~/.claude/skills/tikz-architecture-diagram/ 或 ~/.workbuddy/skills/ 下即可被单独识别)。
数模论文里有两类结构图,分工严格,不要混用:
| 图 | 数量 | 位置 | 用什么画 |
|---|---|---|---|
| 论文总体架构图 | 全文 1 张 | 问题分析节(第 4 节)末尾 | 本 skill(分层架构:数据层→模型层→求解层→结果层→结论层) |
| 各小问求解流程图 | 每问 1 张 | 每问"模型建立与求解"开头 | math-modeling-skill/references/visualization.md 第 5.1.1 节的蛇形(横向)TikZ 流程图模板(现代柔和 6 色) |
判据:表达"全文如何分层组织、各问如何归位"的用本 skill;表达"某一问从输入到输出怎么一步步算"的用原流程图模板。 总体架构图承载"这篇论文的骨架",放在问题分析节收尾,让评委在读正文前先看懂全局;小问流程图承载"这一问的算法链路",不要用分层架构的形式去画,也不要把总体架构图复制成多张充当流程图。
不适用:数据图表(交给 matplotlib,见 visualization.md)、纯步骤流程图(交给 visualization.md 第 5.1.1 节的蛇形(横向)TikZ 流程图模板)。
templates/fig.tex 的结构再改内容;画布固定 17.2 × 13.8 cm(期刊整幅友好,宽 > 高)。组件多就调盒宽盒数,别压缩字号硬塞。templates/build.sh(xelatex → PDF/PNG/SVG)。Missing character(= 中文豆腐块,出现必须修);跑 scripts/check_overlap.py 确认文字零重叠零越界;核对每个标签居中落盒。\usepackage[fontset=none]{ctex}
\IfFontExistsTF{SimSun}{\setCJKmainfont{SimSun}}{% % Windows
\IfFontExistsTF{Songti SC}{\setCJKmainfont{Songti SC}}{% % macOS
\IfFontExistsTF{Noto Serif CJK SC}{\setCJKmainfont{Noto Serif CJK SC}}{% % Linux
\setCJKmainfont{FandolSong-Regular}[Extension=.otf]}}} % TeX Live 自带兜底
\IfFontExistsTF{Times New Roman}{\setmainfont{Times New Roman}}{%
\IfFontExistsTF{Liberation Serif}{\setmainfont{Liberation Serif}}{%
\IfFontExistsTF{TeX Gyre Termes}{\setmainfont{TeX Gyre Termes}}{}}}
不要硬写单一字体名(如只写 Noto Serif CJK SC),换机器就是满屏豆腐块。\IfFontExistsTF 由 fontspec 提供,ctex 已自动加载。
字号:层名 \small 加粗、职能副题 \footnotesize 灰、组件标题 \footnotesize 加粗、组件副题 \scriptsize 灰。西文缩写(POS/ERP/LLM/ETL)与数字用主字体,混排基线差异是正常的。
N 层按 冷→暖 逐层取 Okabe 色:天蓝 #56B4E9 → 蓝 #0072B2 → 青绿 #009E73 → 琥珀 #E69F00 → 洋红 #CC79A7(五层以上循环到灰色系)。一个创新亮点(如全问共享的统一符号体系、LLM 助手)用朱红 #D55E00 强调块,全图只允许一处。
\definecolor{cL1}{HTML}{56B4E9} % 层带色,按需 cL2..cL5
\tikzset{
band/.style ={rounded corners=3pt, line width=0.5pt, draw=#1!45, fill=#1!7},
head/.style ={rounded corners=2pt, line width=0.5pt, draw=#1!60, fill=#1!15},
box/.style ={rounded corners=2pt, line width=0.5pt, draw=black!25, fill=white},
boxacc/.style={rounded corners=2pt, line width=0.6pt, draw=#1!70, fill=#1!14},
fwd/.style ={-{Stealth[length=1.8mm]}, line width=0.6pt, draw=black!35},
up/.style ={-{Stealth[length=2.2mm]}, line width=0.7pt, draw=black!50},
}
原则:色带只做低饱和淡底(7%),组件一律白盒灰边,颜色信息由层带与层标块承载——多色但整体克制。
与论文正文配色的关系:架构图用 Okabe-Ito 分层色,与正文数据图选定的 nature/science/IEEE 配色不冲突(架构图是结构示意,不是数据图)。但若论文整体选了 IEEE 风格,可把层带色替换为 IEEE 系的深蓝→浅蓝渐层,保持气质统一。
画布 17.2 × 13.8 cm,自下而上排层带:
x∈[0.2,3.1](中心 1.65)、高 1.5,垂直居中于所在层带;块内层名 + 职能副题。x∈[3.4,17.0](宽 13.6,中心 10.2)。盒宽 w=(13.6-(n-1)×gap)/n,gap 取 0.16(芯片)~ 0.40(大盒);盒高 1.1~1.5,垂直居中。中心 x_i = 3.4 + w/2 + (i-1)(w+gap)。
x=10.2 画一个向上 Stealth 箭头,表数据自下而上流动。模板 templates/fig.tex 里的五层 y 坐标(已验证 17.2×13.8 精确闭合):
L1 0.25–2.45 | L2 2.85–5.85(核心层加高) | L3 6.25–8.45 | L4 8.85–11.05 | L5 11.45–13.55
三条铁律(防遮盖/防错落/防编译崩):
\layerband 集中写在最前面就是为此。yc+0.28、副题放 yc-0.30;没有副题的盒也把标题放在同样的 yc+0.28,不要"内容整体居中"——否则同一行里标题高低错落。text width 是 TeX 长度,不是 PGF 表达式。要按盒宽自适应文本宽度必须用 \dimexpr:
text width=\dimexpr#4cm-0.3cm\relax % 正确
text width={#4-0.3}cm % 报错 Unknown operator `cm'
写错的征兆:log 里冒出 Package PGF Math Error: Unknown operator 且伴随大量 6.5pt 级 Overfull(文字被挤成单字换行)。fwd 箭头(上一盒右边缘 x_i+w/2 → 下一盒左边缘 x_{i+1}-w/2),末端结果盒用 boxacc 强调。boxacc 强调块(如"统一符号体系与假设集"做成通栏长盒放核心层下方)。yc=4.75, h=1.35)+ 下行通栏强调条(yc=3.40, h=0.80),band 需加高到 3.0。xelatex -interaction=nonstopmode -halt-on-error fig.tex
pdftoppm -png -r 300 -singlefile fig.pdf fig # 300 dpi PNG
pdftocairo -svg fig.pdf fig.svg # 矢量 SVG
脚本输出 PNG(预览)+ PDF/SVG(矢量,嵌入 LaTeX 用)。构建后必须检查 log:出现 Missing character 就是中文渲染成了空心方块,属于失败,修字体后重渲,不能交付。build.sh 已内置该检测并以 exit 2 报错。
Missing character / 无 PGF Math Errorpython scripts/check_overlap.py fig.pdf 输出 overlap=0 oob=0pdfinfo fig.pdf 页面尺寸为 487.6 × 391.2 pt(= 17.2 × 13.8 cm),且仅 1 页pdftotext fig.pdf - 里找到,且位置落回对应盒总体架构图放问题分析节末尾,矢量 PDF 嵌入(不用 PNG,避免打印发虚):
\begin{figure}[H]
\centering
\includegraphics[width=0.95\textwidth]{figures/总体架构图_五层建模框架.pdf}
\caption{本文总体建模架构。全文自下而上分五层组织:数据与题面层完成赛题
拆解与附件数据清洗,得到统一口径的建模输入;模型构建层针对四个子问题分别
建立幂律回归、整数规划、排队论仿真与多目标优化模型,四问共享同一套符号体系
与假设集以保证前后一致;算法求解层按参数估计、优化求解、仿真推演、稳健性检验
的顺序实现数值计算;结果输出层给出关键指标、调度方案与敏感性区间;结论与推广
层完成模型评价与场景外延。层间箭头表示数据自下而上的单向流动。}
\label{fig:arch}
\end{figure}
要点:
[H](需 \usepackage{float})固定就近,防止架构图漂到别的节去——它必须留在问题分析节。math-modeling-skill/references/writing.md 图表说明文字规范。总体架构图_五层建模框架.pdf,不用 arch.pdf。\ref{fig:arch} 引用并点出分层逻辑,不让图自说自话。0.95\textwidth;因画布宽 > 高,占版面高度约 0.76 倍宽度,配 100–150 字 caption 后单页图表占比仍在 2/3 红线内(见 writing.md 单页图表占比规范)。templates/fig.tex —— 可编译的五层架构模板(数模总体架构图示例),坐标带注释,改标签即用templates/build.sh —— 构建脚本(PDF/PNG/SVG + 豆腐块检测)scripts/check_overlap.py —— PDF 文字重叠/越界核验脚本