$npx -y skills add OpenRaiser/PaperFit --skill taxonomy-vto本技能为 Visual Typesetting Optimization (VTO) 任务提供完整的视觉排版缺陷分类知识库。它是 layout-detective-agent 进行逐页视觉诊断的核心参考手册,定义了每一类缺陷的视觉特征、诊断方法、严重等级判定以及与编译日志信号的对应关系。
| 1 | # VTO Taxonomy Knowledge Base |
| 2 | |
| 3 | ## 概述 |
| 4 | |
| 5 | 本技能为 **Visual Typesetting Optimization (VTO)** 任务提供完整的视觉排版缺陷分类知识库。它是 `layout-detective-agent` 进行逐页视觉诊断的核心参考手册,定义了每一类缺陷的**视觉特征、诊断方法、严重等级判定**以及与编译日志信号的对应关系。 |
| 6 | |
| 7 | **使用方式**:排版侦探 Agent 在对 PDF 页图进行审查时,应逐项对照本手册中的缺陷定义,识别并记录发现的缺陷,输出结构化诊断报告。 |
| 8 | |
| 9 | --- |
| 10 | |
| 11 | ## 分类体系总览 |
| 12 | |
| 13 | VTO 缺陷分为五大类别,每个类别下包含若干具体缺陷类型: |
| 14 | |
| 15 | | 类别 | 名称 | 缺陷数量 | 默认严重等级 | |
| 16 | |------|------|----------|-------------| |
| 17 | | A | 空间利用缺陷 | 4 | Major | |
| 18 | | B | 浮动体缺陷 | 4 | Major | |
| 19 | | C | 排版一致性缺陷 | 3 | Minor | |
| 20 | | D | 溢出与对齐缺陷 | 3 | Major | |
| 21 | | E | 跨模板迁移缺陷 | 3 | Critical | |
| 22 | |
| 23 | 严重等级说明: |
| 24 | - **Critical**:必须修复,否则论文不符合投稿要求(编译失败、页数严重不符等) |
| 25 | - **Major**:严重影响视觉专业度,强烈建议修复 |
| 26 | - **Minor**:影响美观但不致命,可在时间充裕时修复 |
| 27 | |
| 28 | --- |
| 29 | |
| 30 | ## Category A:空间利用缺陷 |
| 31 | |
| 32 | 此类缺陷关注页面空间的分配效率与视觉平衡,核心是判断“空白是否合理”、“段落是否完整”。 |
| 33 | |
| 34 | ### A1:孤行/寡行 (Widow/Orphan Lines) |
| 35 | |
| 36 | **定义**: |
| 37 | - **孤行 (Widow)**:段落最后一行单独出现在下一页顶部。 |
| 38 | - **寡行 (Orphan)**:段落第一行单独留在上一页底部。 |
| 39 | - **段尾小尾巴**:段落末尾一行仅含 1-3 个单词,长度不足栏宽的 1/4。 |
| 40 | |
| 41 | **视觉诊断方法**: |
| 42 | 1. 逐页检查页面的顶部和底部区域。 |
| 43 | 2. 若页面顶部第一行为某段落的末行 → **孤行**。 |
| 44 | 3. 若页面底部最后一行为某段落的首行 → **寡行**。 |
| 45 | 4. 对于任意段落末行,目测其长度:若远短于同行其他行(明显短于栏宽的 1/4),记为**段尾小尾巴**(与孤行/寡行同等对待)。 |
| 46 | |
| 47 | **严重等级判定**: |
| 48 | - 出现任意孤行或寡行 → **Major** |
| 49 | - 仅出现段尾小尾巴(非跨页)→ **Minor**(但若多处出现,升级为 Major) |
| 50 | |
| 51 | **与日志信号的关联**:无直接日志警告。 |
| 52 | |
| 53 | **常见误判提醒**: |
| 54 | - 公式环境或列表环境后的短行可能为正常现象,需结合上下文判断。 |
| 55 | - 双栏布局中,左右栏的段落独立判断,不要跨栏比较。 |
| 56 | |
| 57 | **诊断记录格式**: |
| 58 | ``` |
| 59 | - defect_id: A1 |
| 60 | - page: 5 |
| 61 | - location: "第 5 页顶部第一行" |
| 62 | - description: "段尾小尾巴:仅含单词 'the proposed method',长度不足栏宽 1/5" |
| 63 | - severity: minor/major |
| 64 | ``` |
| 65 | |
| 66 | --- |
| 67 | |
| 68 | ### A2:末页大面积留白 (Excessive Trailing Whitespace) |
| 69 | |
| 70 | **定义**:论文最后一页(参考文献之前或之后)存在超过页面高度 20% 的连续空白区域。 |
| 71 | |
| 72 | **视觉诊断方法**: |
| 73 | 1. 定位 PDF 的最后一页(参考文献所在页或其后的附录/致谢页)。 |
| 74 | 2. 目测或估算空白区域占页面内容区域的比例。 |
| 75 | - 若空白集中在页面下半部分,且面积明显超过 1/5 页面高度,判定为缺陷。 |
| 76 | 3. 特别注意:若参考文献后仍有内容(如附录),则最后一页为附录末页。 |
| 77 | |
| 78 | **阈值参考**: |
| 79 | - 空白比例 < 15%:可接受 |
| 80 | - 空白比例 15%-20%:建议优化 |
| 81 | - 空白比例 > 20%:**缺陷 (Major)** |
| 82 | |
| 83 | **严重等级**:**Major** |
| 84 | |
| 85 | **与日志信号的关联**:无。 |
| 86 | |
| 87 | **常见误判提醒**: |
| 88 | - 若末页是参考文献的开始且参考文献未满一页,此时空白为正常现象(参考文献允许跨页),不视为缺陷。仅当参考文献后仍有大段空白时才判定。 |
| 89 | |
| 90 | **诊断记录格式**: |
| 91 | ``` |
| 92 | - defect_id: A2 |
| 93 | - page: 9 |
| 94 | - description: "末页空白面积约占页面高度的 35%" |
| 95 | - severity: major |
| 96 | ``` |
| 97 | |
| 98 | |
| 99 | ### A3:页数预算违反 (Page Budget Violation) |
| 100 | |
| 101 | **定义**:论文总页数超出或不足用户指定的目标页数(通常来自会议/期刊要求)。 |
| 102 | |
| 103 | **视觉诊断方法**: |
| 104 | 1. 获取用户输入的目标页数(如未提供,则跳过此项检测)。 |
| 105 | 2. 检查 PDF 总页数。 |
| 106 | 3. 若实际页数 ≠ 目标页数,记录偏差。 |
| 107 | |
| 108 | **严重等级**:**Critical** |
| 109 | |
| 110 | **与日志信号的关联**:无。 |
| 111 | |
| 112 | **诊断记录格式**: |
| 113 | ``` |
| 114 | - defect_id: A3 |
| 115 | - description: "实际 10 页,目标 9 页,超出 1 页" |
| 116 | - severity: critical |
| 117 | ``` |
| 118 | |
| 119 | --- |
| 120 | |
| 121 | ### A4:双栏末页左右栏高度不齐 (Unbalanced Column Heights) |
| 122 | |
| 123 | **定义**:在双栏排版的最后一页,左右两栏的底部高度不一致,高度差超过 2 行。 |
| 124 | |
| 125 | **视觉诊断方法**: |
| 126 | 1. 仅适用于双栏模板(如 IEEE、ACM、ECCV 等)。 |
| 127 | 2. 定位最后一页,在左右栏底部画一条水平参考线。 |
| 128 | 3. 若两栏底部高度差超过约 2 行正文的高度,判定为缺陷。 |
| 129 | |
| 130 | **严重等级**:**Minor**(若与其他缺陷叠加,可升级) |
| 131 | |
| 132 | **与日志信号的关联**:无。 |
| 133 | |
| 134 | **诊断记录格式**: |
| 135 | ``` |
| 136 | - defect_id: A4 |
| 137 | - page: 12 |
| 138 | - description: "左右栏底部高度差约 4 行" |
| 139 | - severity: minor |
| 140 | ``` |
| 141 | |
| 142 | --- |
| 143 | |
| 144 | ### A5:双栏页内列竖向空洞 (Intra-Column Vertical Void) |
| 145 | |
| 146 | **定义**:在双栏排版的**任意一页**(不限于末页),左栏或右栏在节标题/段落后出现**占该栏可排版高度约 30% 以上**的连续竖向空白,且空白内无图、无表、无正文;而**同一页另一栏**在相近纵坐标区间仍有连续正文。典型诱因:本页或邻页的 `figure*`/`table*` 顶出造成的栏内“断层”、滥用 `\\` / `\newpage` / `\vfill`、`[H]` 固定浮动体、`\FloatBarrier` 等。 |
| 147 | |
| 148 | **与 A2/A4 的区分**: |
| 149 | - **A2**:仅**最后一页**正文结束后的**尾部**大面积留白。 |
| 150 | - **A4**:仅**最后一页**左右栏**底部**不齐。 |
| 151 | - **A5**:**任意页**、**单列内部**的中段竖向空洞,常伴随列间密度严重失衡。 |
| 152 | |
| 153 | **视觉诊断方法**(layout-detective 必做): |
| 154 | 1. 确认模板为双栏;对该页分别只看左栏、只看右栏( mentally 画竖线分割)。 |
| 155 | 2. 在每一栏内,自上而下追踪**正文墨迹**的纵坐标区间;若两墨迹块之间出现高度 ≥ 约 **8 行正文**且无图无表的间隙,记为候选。 |
| 156 | 3. 若同一纵坐标带内另一栏为连续段落,候选升级为 **A5**。 |
| 157 | 4. 对照 `compile.log` 中 `Float too large`、`Underfull \vbox` 等作为佐证。 |
| 158 | |
| 159 | **严重等级**:默认 **Major**(若空洞超过半栏可升为 Critical)。 |
| 160 | |
| 161 | **诊断记录格式**: |
| 162 | ``` |
| 163 | - defect_id: A5 |
| 164 | - page: 4 |
| 165 | - column: left |
| 166 | - description: "Experiments 标题下方约 55% 栏高无内容,右栏同期为连续正文" |
| 167 | - severity: major |
| 168 | - visual_evidence: "左栏中段整带空白,无 figure/table" |
| 169 | ``` |
| 170 | |
| 171 | **OpenCV 辅助(推荐)**:对已渲染页图执行 **`paperfit run scripts/detect_column_void.py data/pages --glob 'page_*.png' -o data/column_void_report.json`**,读取 JSON 中的 `a5_candidates` 与上述人工步骤交叉验证。 |
| 172 | |
| 173 | |
| 174 | ## Category B:浮动体缺陷 |
| 175 | |
| 176 | 此类缺陷关注图表的放置位置、尺寸匹配度以及对阅读流的干扰。 |
| 177 | |
| 178 | ### B1:浮动体远离首次引用 (Float-Reference Distance) |
| 179 | |
| 180 | **定义**:图表出现在距离其首次被引用的页面过远的位置(通常页码差 ≥ 2)。 |
| 181 | |
| 182 | **视觉诊断方法**: |
| 183 | 1. 在 PDF 中搜索图表标签(如 "Figure 1"、"Table 2")的首次出现位置。 |
| 184 | 2. 找到该图表实际出现的页面。 |
| 185 | 3. 计算页码差:`|图表页码 - 首次引用页码|`。 |
| 186 | 4. 若差值 ≥ 2,记录缺陷。 |
| 187 | |
| 188 | **严重等级**:**Major**(若差值 ≥ 3,升级为 Critical) |
| 189 | |
| 190 | **与日志信号的关联**: |
| 191 | - 编译日志中可能出现 `LaTeX Warning: Float too large for page` 或浮动体放置相关的 warning,作为辅助证据。 |
| 192 | |
| 193 | **诊断记录格式**: |
| 194 | ``` |
| 195 | - defect_id: B1 |
| 196 | - object: "Figure 3" |
| 197 | - reference_page: 4 |
| 198 | - float_page: 6 |
| 199 | - distance: 2 |
| 200 | - severity: major |
| 201 | ``` |
| 202 | |
| 203 | --- |
| 204 | |
| 205 | ### B2:浮动体大小不适配栏宽 (Float Width Mismatch) |
| 206 | |
| 207 | **定义**:图片或表格的宽度未充分利用栏宽,过窄(两侧留白过大)或超宽(溢出或被截断)。 |
| 208 | |
| 209 | **视觉诊断方法**: |
| 210 | 1. 对于单栏图表:对比图表宽度与栏宽,目测利用率。 |
| 211 | - 若图表宽度 < 栏宽的 85%,视为**过窄**。 |
| 212 | - 若图表宽度 > 栏宽(内容伸出右边界),视为**超宽**。 |
| 213 | 2. 对于跨栏图表(`figure*`/`table*`):对比图表宽度与页宽,标准同上。 |
| 214 | |
| 215 | **严重等级**: |
| 216 | - 过窄:**Minor**(若多图表均过窄,升级为 Major) |
| 217 | - 超宽/溢出:**Major** |
| 218 | |
| 219 | **与日志信号的关联**: |
| 220 | - 超宽常伴随 `Overfull \hbox` 警告(参见 D1)。 |
| 221 | |
| 222 | **诊断记录格式**: |
| 223 | ``` |
| 224 | - defect_id: B2 |
| 225 | - object: "Figure 2" |
| 226 | - page: 3 |
| 227 | - description: "图片宽度仅占栏宽约 60%,两侧留白过大" |
| 228 | - severity: minor |
| 229 | ``` |
| 230 | |
| 231 | --- |
| 232 | |
| 233 | ### B3:浮动体连续堆叠 (Float Clustering) |
| 234 | |
| 235 | **定义**:同一页或连续两页出现 3 个或以上的图表,且中间几乎无正文间隔,形成“图表页”。 |
| 236 | |
| 237 | **视觉诊断方法**: |
| 238 | 1. 检查每一页的图表数量。 |
| 239 | 2. 若某页包含 ≥ 3 个图表,且正文少于 3 行,视为**浮动体堆叠**。 |
| 240 | 3. 若连续两页累计图表 ≥ 4 且中间正文极少,同样视为缺陷。 |
| 241 | |
| 242 | **严重等级**:**Minor**(但若导致阅读体验严重下降,可标为 Major) |
| 243 | |
| 244 | **与日志信号的关联**:无直接日志,但大量浮动体可能引发 placement warning。 |
| 245 | |
| 246 | **诊断记录格式**: |
| 247 | ``` |
| 248 | - defect_id: B3 |
| 249 | - page: 7 |
| 250 | - description: "该页包含 3 个图表,正文仅 2 行" |
| 251 | - severity: minor |
| 252 | ``` |