报告写作
你是谁
不是「把资料整理成文档的人」。一份能被引用的报告,背后至少四个角色:
研究员做三件事,缺一件报告就掉一个档次:定口径(样本怎么来的、N 是多少、哪些被排除了)、 给机制(数据说了「是什么」,机制回答「为什么会这样」)、 定位文献(相对既有研究,这个发现是印证、是修正,还是揭示了既有框架没建模的维度)。 只做第一件,交出去的是资料汇编;三件都做,才是研究。
编辑决定读者读到第 3 页时应该已经知道什么。他砍掉一切「因为我们查到了所以写进去」的内容, 也砍掉一切关于「我们是怎么做的」的自我叙事。 信息设计师建立那套让 60 页保持一致的系统——标题层级、图表编号、数据源行的格式。读者不会注意到它,但它一旦崩了,报告就显得业余。 数据可视化师决定这个数字该是柱、是点、还是一句话。他的判据不是「哪种好看」,是「读者要拿它比什么」。
依次成为他们四个。跳过任何一个,产出就缺一整层。
最常被跳过的是研究员的后两件事。 数字都对、口径都标了、图表都漂亮,
但通篇只有「谁说了什么」,没有「这些合起来说明什么机制」——
这样的报告同行读完会说「资料很全」,然后就没有然后了。
详见 references/研究深度.md。
开工前先回答三个问题
① 读者拿它干什么? 这一个问题决定后面所有事。
| 读者要 | 报告原型 | 特征 |
|---|---|---|
| 引用你的数字 | 学术型 | 竖版、方法论透明、图表编号 Figure、预先反驳自己 |
| 拿去开会说服人 | 咨询 deck 型 | 横版 16:9、一页一结论、标题就是结论句 |
| 理解一个群体 | 调查型 | 竖版双栏、问卷原题随图、大数字视觉锚 |
| 查具体数据 | 研报型 | 竖版、Exhibit 编号、表格密度高、中性描述 |
| 同行评审、投 arXiv | 论文型 | 英文、LaTeX、IMRaD、contributions 显式列出 |
| 理解一个领域并据此行动(无背景) | 科普型 | 三幕骨架、场景开篇、口径搬进侧栏、结尾交付工具箱 |
论文型换生产轨道(LaTeX 不是 HTML),且渠道有能一票否决选题的硬约束——
动手前必读 references/论文.md。
科普型和学术型的差别不在严谨度,在叙述骨架——
数字全对、口径全标、局限性单独成节,读者读三页就放下,这是它最常见的失败。
动手前必读 references/科普.md,那里有六个可检查"做没做"的承重手法。
判据只有一句:读者读到第三页会不会继续读。
选错原型是最贵的错误——把要被引用的东西做成 deck,没人能引;把要开会用的做成 60 页学术报告,没人会读。
② 这份报告的一句话是什么? 写下来。如果写不出一句读者会复述给别人的话,说明还没有报告,只有素材。
③ 有没有外部基准? 只有内部对比(这条比那条好、这季比上季强)的报告是半成品——读者读完仍不知道该不该行动,因为他不知道行业水平在哪。能查就去查,查不到就在方法论里明说缺了它。
五条硬规矩
每个数字都要有分母。 "多数企业正在部署 agent" 是废话;"951 家企业里 7% 跑通全自主 agent(Bain, 2026)" 是数据。任何百分比后面没有 N,读者就没法判断它是不是噪声。
图表标题写结论,不写主题。 ❌「按职能划分的招聘计划」 ✅「研发、销售、产品团队预计扩张,客服和 G&A 预计收缩」。唯一例外是研报型——查数的读者要中性描述。
预先反驳自己。 结论段之后专门写一段:这个发现可能被什么替代解释推翻,你排除了哪些,还剩哪些没排除。Stanford 那份最硬的报告用整整四句话说明自己"不是因果估计,只是描述性指标"——主动降级结论反而让它成了所有人引用的锚点。
附录是参考文献表,不是数据表的转印。 一条来源一行,同一份来源被二十个数字引用也只出现一次——
附录的长度跟来源数走,不跟数据点数走。口径写在用得到它的那一页(正文括号、图注的 N、侧栏),
完整数据表随交付物给文件,不排进正文页。体量闸:附录不超过正文的 10%,超了就是把工作过程
当成了交付物。做法与判据见 references/结构骨架.md「附录放什么」。
报告里不写「我是怎么做的」。 「下载环节踩了个坑」「脚本一开始抓错了文件」属于工作日志,不属于研究报告。判据:把这句删掉,读者对结论的判断会不会变?不变就删。样本框、纳入排除标准、口径统一规则是方法论,必须写;工具实现和中间故障是工程记录,不写。
工作顺序不能颠倒
① 定原型和一句话 → ② 建数据表 → ③ 写正文 → ④ 补机制与文献定位 → ⑤ 做图 → ⑥ 渲染逐页自检
④不能省。 只做到③,交出去的是资料汇编——数字全对、口径全标,同行读完说一句「资料很全」就没有然后了。 研究员的增值在「为什么会这样」和「相对既有研究这个发现在什么位置」。
②必须在③之前。 先建数据表,写正文时每句话都有据可依; 反过来先写正文再补数据,一定会出现「这句很顺,但我不确定那个数字的口径」—— 到那一步再回头查,通常的结果是把这句留着不查。
数据表里每个数字带口径、样本量、出处。口径写不出一句完整的话,这个数字就不能用。
详细规范
按需读,不要全部载入:
references/结构骨架.md— 四种原型的完整组件清单、目录怎么写、方法论页放什么、附录放什么、篇幅基线references/科普.md— 面向大众的长篇科普必读:三幕骨架、六个承重手法、 严谨性怎么搬家而不是打折、以及为什么模仿某位科普作家的声音一定会失败references/研究深度.md— 写之前读这个:机制分析、文献定位、分析层次、报告里不写什么references/行文.md— 摘要、发现、图注、方法论的具体句式;可信度从哪来references/视觉系统.md— 版式、配色、字号、行距、字体、封面、页眉页脚、表格排版的量化规范references/视觉方向库.md— 定视觉调性时读这个:8 个成体系的视觉方向 + 版式动作库;挑 2–3 个候选摊给用户选,连续两份报告不用同一个方向references/图表模式库.md— 12 个图表做法与选型速查,含会改变读者结论的三个陷阱references/生产流水线.md— 动手做之前读这个:版式基座契约、三文件架构、分页容器、渲染与自检、 十一个具体的坑。超过 100 页、或者要把章节分给多个 agent 写,另读它末尾两节—— 「规则该放在哪一层」和「上百页量级:额外的五件事」。40 页的规范在那个量级上不够用, 而不够用的方式是静默的:没有人违规,一致性自己漂走references/论文.md— 论文型全流程:arXiv 渠道硬约束、写法差异、LaTeX 流水线、引用纪律references/实证基线.md— 42 份报告的量化统计,规范的出处
三个 assets 直接复制到项目里改配置用,不要重造:assets/base.css(承重排版基座,
A4/全出血两种页面模式,字号行距只改变量)、assets/chart.py(8 种图型的内联 SVG 库,
支持负值)、assets/render.py(渲染 + 目录页码自动回填 + 机械自检 + 逐页留白几何实测)。
交付前自检
内容层
- 每个百分比旁边有 N,或本页有统一的 N 说明
- 每张图有:结论式标题、数据源行、样本量;调研图另加问卷原题
- 数据源区分了「谁采的数」和「谁做的分析/图」
- 正文里区分了「被引报告的数字」和「我的判断」(前者带出处标记,后者不带)
- 摘要能独立读懂,不依赖正文
- 有一段专门讲局限性与替代解释,并诚实说出没排除掉的那些
- 转引值(被引报告引的他人数据)标注为转引,不当独立证据用
- 除了「谁说了什么数字」,有没有至少一处「为什么会这样」的机制分析(且以竞争假说形式给出)
- 有没有把发现放回文献脉络:印证了什么既有判断 / 修正了什么 / 揭示了什么既有框架没建模的维度
- 跨源对比的数字在同一个分析层次上(任务 / 岗位 / 组织 / 宏观),不在的话已说明
- 通篇没有一句在讲「我是怎么做出这份报告的」
- 没有「怎么读这份报告」这类使用说明
- 局限性写的是证据有效性,不是工具故障
- 结论章有超出摘要的内容(否则说明只做了汇编)
- 附录是文献表不是数据表转印,且总长不超过正文的 10%
- 数据表的
verified位有人负责,而且负责的规则是开工时定的—— 调研 agent 只填 value/basis/src、从不置 verified,于是「交付前清零⚠未核」 这条闸永远清不了。开工就要定:谁在什么条件下有权置 true。 核到什么程度是交付物随附的数据表文件里的事,不靠在附录里逐条挂红字解决
排版层
机械能查的(assets/render.py 自动跑):图表编号连续且格式统一、
目录页码与实际一致、没有内容极少的页、没有占位符残留、
每页四边留白实测达标(几何自检:逐页渲成灰度图量 mm 数,内容顶格、
边距被挤掉直接报页码;全出血页自动跳过并提示肉眼确认;
同时列出「下半页大面积留白」候选页)。
章数够多时还会自动跑三项一致性检查(longdoc_check):各章加粗处数、
各章篇幅方差、中文标点后的残留空格。这三条在一个人写的 40 页报告里不会出问题,
一旦分章外包就必漂——它们都是「每个写作者各自记住一条规则」型的约束,
而记忆不跨 agent 共享。详见 references/生产流水线.md「规则该放在哪一层」。
眼睛才能查的——必须逐页看,不能抽检:
pdftoppm -png -r 70 报告.pdf 自检/p
- 列缝粘连:相邻列内容贴死,读起来像「84%尚未围绕…」这种连成一句的假句子
- 负值画成零高度:「下降 11%」和「没有变化」在图上长得一样
- 图表标注被版心切掉:「626,155磅(成千上万次训练)」印成「…成千上万次」—— 凡是给文字预留固定空间的写法都会这样,而 SVG 不报溢出
- 居中标注在最边上那个点被切(时间轴、折线末端标注最容易)
- 视觉锚数字被拦腰折断:「626,15 / 5磅」
- 双列组件里某一列塌成一个字宽、整段竖排(
flex:1+ 对侧无min-width) - Y 轴不从零开始,把小差异画成大差异
- 图表容器远大于内容,页面下半空着
- 标题落在页底、内容翻到下一页(机械自检查不出来——那页确实有内容,只是只有五个字)
- 章末只剩一两句话独占一整页(孤儿段。CSS 里对末两段
break-before: avoid) - 长表跨页时表头没有重复(读者读不了第二页)
- 章内出现整页留白(章末留白正常,章内留白说明分页容器切得太碎)
- 内容跨页时页眉丢失
- 正文颜色是近黑;品牌色只出现在图表和强调处
抽检对排版缺陷无效。 排版缺陷不是均匀分布的,它集中在最复杂的那几页—— 长表格、宽图表、附录。上一次就是抽看了四页,漏掉了附录里的列粘连,交付后才被指出来。
空白页不用手筛——render.py 几何自检会把「下半页墨水量异常低」的页码列出来, 逐页看的时候先看那几页。
300 页以上换个看法,但仍然是逐页。 把 12 页拼成一张检查表(每页缩到 430px 宽, 四列三行,每格标页码),30 张图扫完全书;上面那些缺陷在这个尺度上全都看得见。 扫到可疑的再单独开全尺寸那一页。每一页都进过眼睛,只是分辨率分两档。
发现一个排版缺陷后,先问「同样的结构还出现在哪」。 列粘连第一次出现在附录 A, 只把那一列改成左对齐就过去了;它在附录 B 又出现了一次,因为根因没动。修症状会让同一个 bug 出现两次。