Skip to content
Back to skills

Space Util Fixer

ASecurity

本技能专门处理 **Category A:空间利用缺陷**,包括:

  • 337 stars
  • 0 votes
  • 0 copies
  • 1 view
  • Added May 26, 2026
developmentgoperformance

Security analysis

A100/100

Scanned October 1, 2026

npx -y skills add OpenRaiser/PaperFit --skill space-util-fixer --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Space Util Fixer?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Space Util Fixer
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/openraiser-space-util-fixer/badge)](https://www.skillsdirectory.com/skills/openraiser-space-util-fixer)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
# Space Utilization Fixer Skill

## 概述

本技能专门处理 **Category A:空间利用缺陷**,包括:

- **A1**:孤行/寡行(Widow/Orphan Lines)
- **A2**:末页大面积留白(Excessive Trailing Whitespace)
- **A3**:页数预算违反(Page Budget Violation)
- **A4**:双栏末页左右栏高度不齐(Unbalanced Column Heights)
- **A5**:双栏页内列竖向空洞(栏内中段大块无图无表空白,常与 `figure*`/`[H]`/不当断页有关)

该技能由 `code-surgeon-agent` 或 `semantic-polish-agent` 调用,通过对段落级排版控制、浮动体调度和最小语义改写的组合运用,优化页面空间分配,使文档达到专业级的视觉均衡。

空间利用问题的修复常常需要多轮迭代,因为局部调整会影响全局分页。因此,每次修改后必须重新编译并审查页图。

Source-changing 边界:本技能默认只生成空间利用 repair plan、风险和 approval 状态;只有显式 `--apply` 或宿主等价授权存在时才写回源码。多轮写回必须同时显式启用 `--apply --max-rounds N`,并由 runtime 的 `second_round_apply_readiness`、approval carry-forward、artifact freshness、candidate approval scope gate 和 gatekeeper `CONTINUE` 控制。

---

## 适用场景

| 缺陷 ID | 描述 | 优先级 | 是否允许语义修改 |
|---------|------|--------|-----------------|
| A1 | 孤行/寡行 | High | 是(最后手段) |
| A2 | 末页大面积留白 | High | 是(最后手段) |
| A3 | 页数预算违反 | Critical | 是(最后手段) |
| A4 | 双栏末页左右栏高度不齐 | Medium | 否 |
| A5 | 双栏页内列竖向空洞(非末页、栏内大块无正文空白) | High | 视情况 |

---

## 输入规范

| 输入项 | 来源 | 说明 |
|--------|------|------|
| 主 `.tex` 文件路径 | 项目上下文 | 需修改的源文件 |
| 排版侦探报告 | `layout-detective-agent` 输出 | 包含 A 类缺陷的页码和描述 |
| 目标页数(若适用) | 用户约束 | A3 修复必须提供 |
| 模板类型 | `templates.yaml` 或上下文 | 单栏/双栏 |

---

## 输出规范

```json
{
  "skill": "space-util-fixer",
  "status": "success | partial | failed",
  "modified_files": ["main.tex"],
  "changes": [
    {
      "defect_id": "A1",
      "object": "第4页顶部孤行",
      "action": "在段落前添加 \\looseness=-1",
      "before_snippet": "The proposed method achieves...",
      "after_snippet": "{\\looseness=-1 The proposed method achieves...}"
    }
  ],
  "unresolved": []
}
```

---

## 修复策略

### 通用原则

1. **先排版,后语义**:优先使用 LaTeX 原生的排版控制命令,仅在无效时才考虑语义级改写。
2. **局部修改,全局验证**:改动一段可能影响后续多页分页,必须完整编译并检查全文档。
3. **避免硬性分页**:禁止滥用 `\newpage` 或 `\clearpage` 来“凑页数”,这会破坏文档结构的自然性。

---

### A1:孤行/寡行修复

**问题特征**:
- 段落最后一行单独出现在下一页顶部(孤行)。
- 段落第一行单独留在上一页底部(寡行)。
- 段落末尾仅含 1-3 个单词的短行(段尾小尾巴)。

**修复策略(严格按优先级顺序尝试)**:

#### 策略 1:段落级收紧 (`\looseness=-1`)

通过在段落前设置 `\looseness=-1`,指示 TeX 引擎尝试将段落收缩一行,从而消除孤行或小尾巴。

```latex
% 修改前
The proposed method achieves state-of-the-art performance on several
benchmarks, demonstrating the effectiveness of our approach.

% 修改后
{\looseness=-1 The proposed method achieves state-of-the-art performance on several
benchmarks, demonstrating the effectiveness of our approach.}
```

*注意*:
- 必须将整个段落用花括号 `{ }` 括起,以限制 `\looseness` 的作用范围。
- 若段落本身很短,收缩可能导致过紧的行距,需在页图上确认可接受。

#### 策略 2:段落级扩张 (`\looseness=1`)

若段落太紧,可尝试扩张一行,使段末行变长。

```latex
{\looseness=1 This paragraph will be typeset with one more line...}
```

#### 策略 3:调整段落间胶水 (`\emergencystretch`)

为特定段落增加紧急拉伸量,允许行间略微拉伸以调整断行。

```latex
{\emergencystretch=1em This paragraph content...}
```

#### 策略 4:微调上下文句长分布(需 `semantic-polish-agent`)

若排版控制无效,则进行最小语义改写:
- 在段落中增删 3-8 个单词(如将 `in order to` 改为 `to`,或将 `demonstrate` 改为 `show`)。
- 调整从句结构,但不改变学术原意。

```latex
% 修改前
The proposed method achieves state-of-the-art performance on several
benchmarks, demonstrating the effectiveness of our approach.

% 修改后
The proposed method achieves state-of-the-art results on several
benchmarks, showing the effectiveness of our approach.
```

*语义改写必须由 `semantic-polish-agent` 执行,本技能仅提出请求。*

#### 策略 5:全局调整 widow/orphan 惩罚

在导言区增加以下设置(通常模板已包含,可作为兜底):

```latex
\widowpenalty=10000
\clubpenalty=10000
\displaywidowpenalty=10000
```

*注意*:此设置影响全局,需谨慎。若模板已设置,则无需重复。

---

### A2:末页大面积留白修复

**问题特征**:
- 最后一页(参考文献前或后)空白区域超过页面高度的 20%。

**修复策略(按优先级)**:

#### 策略 1:前移浮动体

检查倒数第二、第三页是否有可前移的图表。调整其位置参数 `[htbp]`,使其占据末页空白区域。

```latex
% 将原本放在倒数第二页的图强制前移
\begin{figure}[t]  →  \begin{figure}[ht]
```

#### 策略 2:调整局部垂直间距

在不影响整体美观的前提下,微调末页前的某些垂直间距(如 `\vspace`、章节间距)。

```latex
% 轻微缩小最后一节前的间距
\vspace{-0.5em}
\section{Conclusion}
```

*注意*:不要制造新的视觉不协调。

#### 策略 3:适当扩写结论或讨论部分(需语义润色)

在结论、讨论或分析段落中增加有实质内容的 2-4 行文本(约 30-60 词),以自然填充空白。

*此操作必须由 `semantic-polish-agent` 执行。*

#### 策略 4:增加附录或致谢(最后手段)

若用户同意,可将部分非核心内容(如额外消融实验)从正文移至附录,或在末页后增加致谢部分。

---

### A3:页数预算修复

**问题特征**:
- 实际总页数与目标页数不符(如会议要求 9 页,实际 8 页或 10 页)。

**修复策略**:

本缺陷修复需要系统性操作,通常结合多种手段。

#### 情况 1:超页(实际页数 > 目标页数)

**优先级从高到低**:

1. **压缩浮动体**  
   - 缩小超大图片(`width=0.95\linewidth` 代替 `\linewidth`)。
   - 将跨页长表格改为 `longtable`(可跨页,避免独占一页)。
   - 调整浮动体位置,使其更紧凑地填充页面。

2. **缩减垂直间距**  
   - 使用 `\vspace{-0.2cm}` 微调节标题、图表与正文的间距。
   - 检查是否有冗余的 `\newline` 或空行。

3. **精炼文字(语义级)**  
   在非核心段落(Related Work、Introduction 末尾)进行精简:
   - 删除冗余修饰词。
   - 合并短句。
   - 将被动语态改为主动语态(通常更短)。

4. **压缩参考文献**  
   若参考文献过多,使用 `\bibliographystyle{abbrv}` 或类似缩写样式,或使用 `biblatex` 的压缩选项。

5. **缩小页边距(谨慎)**  
   若模板允许,使用 `\usepackage[margin=...]{geometry}` 微调边距。*必须在模板允许范围内。*

#### 情况 2:缺页(实际页数 < 目标页数)

**优先级从高到低**:

1. **检查浮动体堆积**  
   是否因 `\FloatBarrier` 或 `[H]` 导致页面空白?若是,先按 B 类缺陷修复。

2. **适当扩写结论、讨论或分析段落**  
   增加 5-10 行有实质内容的分析,例如:
   - 深入解释某个实验结果的含义。
   - 补充一个简短的局限性讨论。
   - 强化与相关工作的对比。

3. **增加附录或补充材料**  
   若会议允许附录且不计入页数限制,可将部分内容移至附录,使正文恰好满页。

4. **微调图表尺寸**  
   将部分图片略微放大(`width=1.0\linewidth` 代替 `0.95\linewidth`),使其占据更多空间但不溢出。

5. **增加分页点**  
   在合适位置(如章节末尾)添加 `\newpage` 迫使内容分页,但必须确保不产生孤页。

---

### A4:双栏末页左右栏高度不齐

**问题特征**:
- 双栏模板最后一页,左栏和右栏底部高度差超过 2 行。

**修复策略**:

#### 策略 1:使用 `\balance` 或 `flushend` 宏包

在导言区加载 `flushend` 宏包,自动平衡末页两栏高度。

```latex
\usepackage{flushend}
```

*注意*:`flushend` 与某些宏包(如 `multicol`)可能冲突,需在特定模板下测试。

#### 策略 2:手动平衡

若自动平衡无效,在最后一节结束前插入 `\balance` 命令(需 `balance` 宏包)。

```latex
\usepackage{balance}
...
\section{Conclusion}
...
\balance
\end{document}
```

#### 策略 3:微调最后一段的断行

对末页最后一段使用 `\looseness=-1` 或 `\looseness=1`,改变其行数,从而影响两栏高度。

#### 策略 4:调整浮动体位置

若末页有浮动体,尝试将其移至前一页或强制放在当前页底部,以改变栏内内容分布。

---

### A5:双栏页内列竖向空洞

**问题特征**:某一页左栏或右栏在标题/段落后出现大块竖向空白(无图无表),另一栏同期仍有连续正文;常见于 `figure*` 顶到下一页后在栏内留下“断层”、滥用 `\\` / `\clearpage`、`\FloatBarrier`、`[H]` 等。

**修复策略**(优先浮动体与断页,再动正文):

1. 检查本页及前后页的 `figure*` / `table*`:尝试将浮动环境在源码中前移/后移,或改为单栏 `figure`/`table`(若尺寸允许)。
2. 搜索并移除不当的 `\\`(段内强制换行)、`\newpage`、`\vfill`;慎用 `[H]`。
3. 若使用 `\FloatBarrier`,评估是否可删除或挪到节末。
4. 与 **float-optimizer** 协同:处理 `Float too large` 日志后再看栏内空洞是否消失。
5. 最后手段:对空洞下方段落使用 `\looseness` 或最小语义扩写,使分栏断点上移。

---

## 修复验证

每完成一项修复后:

1. **重新编译至少两次**(确保交叉引用稳定)。
2. **渲染页图**,对照缺陷逐项检查:
   - A1:孤行/寡行是否消失?
   - A2:末页空白比例是否降至 20% 以下?
   - A3:总页数是否达到目标?
   - A4:双栏末页高度差是否 ≤ 2 行?
   - A5:该页逐栏检查,栏内中段竖向空洞是否消失?
3. 若未通过,回滚并尝试下一策略。

---

## 与其它技能的协作

- **浮动体修复 (float-optimizer)**:A2 和 A3 常需配合浮动体调整。
- **语义润色 (writing-polish)**:当排版手段用尽时,请求语义改写。
- **一致性检查 (consistency-polisher)**:修改字号、间距后需确保全局一致。

---

**Space Utilization Fixer Skill 就绪。** 等待调用,优化页面空间分配。

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.