template-migrator
Skill338 starsChanged 36 days agoMITView on GitHub
PaperFit template migrator expertise for LaTeX paper layout.
In this repository10 other files it gives its agents.
- CLAUDE.mdCLAUDE.md
- .cursor/rules/paperfit.mdcCursor rule
- consistency-polisherSkill
- float-optimizerSkill
- overflow-repairSkill
- paperfitSkill
- space-util-fixerSkill
- taxonomy-vtoSkill
- visual-inspectorSkill
- writing-polishSkill
The file
Files
Template Migrator Skill
概述
本技能专门处理 Category E:跨模板迁移缺陷,包括:
- E1:单栏↔双栏图表尺寸失配
- E2:页数预算不匹配(如 9 页→14 页的内容重分布)
- E3:模板特定宏兼容性
该技能由 code-surgeon-agent 在 /migrate-template 命令触发时调用,负责将一篇论文从原模板平滑迁移至目标模板,并自动适配图表尺寸、页数预算和宏包兼容性。这是 PaperFit 最具差异化价值的能力,直接解决了科研工作者切换会议投稿时的真实痛点。
能力边界:当前 typed runtime 没有自动模板迁移 executor,可选自动批处理的 --apply 必须报告不支持,不能偷偷回退到旧脚本。用户已授权迁移时,宿主可以用原生编辑工具完成并验证迁移,无需等待自动 executor。先核对建议:请你看看这是否是对的;保留原模板/源码及可回退候选,确认目标模板、当前编译页和内容。
适用场景
| 缺陷 ID | 描述 | 优先级 | 是否允许语义修改 |
| E1 | 单栏↔双栏图表尺寸失配 | Critical | 否 |
| E2 | 页数预算不匹配 | Critical | 是(最后手段) |
| E3 | 模板特定宏兼容性 | Critical | 否 |
输入规范
| 输入项 | 来源 | 说明 |
主 .tex 文件路径 | 项目上下文 | 需修改的源文件 |
| 目标模板名称 | 用户命令参数 | 如 ECCV2024、ICLR2025 |
| 模板配置 | config/templates.yaml | 包含目标模板的栏数、默认字号、页宽、预期页数等 |
| 原模板信息 | 自动检测或用户指定 | 当前 \documentclass 及主要宏包 |
| 排版侦探报告 | layout-detective-agent | 迁移后首次编译的 E 类缺陷列表 |
输出规范
{
"skill": "template-migrator",
"status": "success | partial | failed",
"modified_files": ["main.tex", "figures/fig1.tex"],
"changes": [
{
"defect_id": "E1",
"object": "Figure 1",
"action": "单栏图改为跨栏图",
"before": "\\begin{figure}\n\\includegraphics[width=\\linewidth]{fig1.pdf}\n\\end{figure}",
"after": "\\begin{figure*}\n\\includegraphics[width=\\textwidth]{fig1.pdf}\n\\end{figure*}"
}
],
"macro_fixes": [
{
"issue": "\\theoremstyle undefined in ECCV",
"fix": "改用 \\newtheorem 直接定义"
}
],
"unresolved": [],
"page_budget_status": {
"current_pages": 9,
"target_pages": 14,
"gap": 5,
"action_taken": "核对用户页数政策并比较保持内容的布局候选"
}
}迁移流程
第一步:加载模板配置
- 从
config/templates.yaml读取目标模板的完整配置。 - 配置项包括:
documentclass:如\documentclass[10pt,twocolumn]{article}或\documentclass{iclr2025}column_type:single或doubledefault_figure_width:\linewidth或\textwidthexpected_pages:配置中的页数参考值;不能代替用户指定的 exact/at_most、正文/参考文献/附录范围或当前投稿规则forbidden_packages:与新模板冲突的宏包列表required_packages:新模板必须加载的宏包
示例配置(config/templates.yaml 片段):
ECCV2024:
documentclass: "\documentclass[10pt,twocolumn]{article}"
column_type: double
default_figure_width: "\linewidth"
expected_pages: 14
forbidden_packages: ["amsthm", "algorithm2e"]
required_packages: ["graphicx", "amsmath", "amssymb"]
float_behavior: "figures may use figure* for wide content"第二步:分析原模板特征
- 读取当前主
.tex文件的\documentclass声明。 - 识别当前栏数(单栏/双栏)。
- 列出当前加载的宏包列表(
\usepackage{...})。 - 若用户未明确指定原模板,尝试根据
\documentclass自动推断。
第三步:执行模板替换
候选管理:
- 写入前保留迁移前源码和资源,避免覆盖作者尚未保存的改动。
- 宿主可用正常 patch/编辑工具形成连贯候选,合理组合 class、宏包和对象适配;无需强制调用指定写盘函数。
- 编译失败时先检查并修复根因,或恢复最近可用候选;保留失败记录和有用的独立改动。
- 中间编译可用于定位兼容问题,半完成状态不得当作最终迁移成功。
3.1 替换 \documentclass
将原 \documentclass 替换为目标模板的声明。
% 修改前(ICLR 2025 单栏)
\documentclass{iclr2025}
% 修改后(ECCV 2024 双栏)
\documentclass[10pt,twocolumn]{article}注意:若目标模板有多个可选参数(如 review、final),询问用户偏好或使用默认值。
3.2 处理宏包冲突
- 对比原宏包列表与目标模板的
forbidden_packages。 - 若存在冲突,执行以下操作之一:
- 移除:直接注释或删除该
\usepackage行。 - 替换:提供替代方案(如
algorithm2e→algorithmic)。 - 条件编译:使用
\ifdefined等实现跨模板兼容。
- 移除:直接注释或删除该
% 修改前(含 amsthm,与新模板冲突)
\usepackage{amsthm}
\newtheorem{theorem}{Theorem}
% 修改后(改用 LaTeX 原生定义)
% \usepackage{amsthm} % removed for template compatibility
\newtheorem{theorem}{Theorem}3.3 添加必需宏包
若目标模板要求特定宏包(如 graphicx),确保导言区已加载。若缺失,添加之。
% 确保必需宏包存在
\usepackage{graphicx}
\usepackage{amsmath}第四步:图表尺寸适配(E1 修复)
这是跨模板迁移中最关键、最易出错的环节。
4.1 判断单栏/双栏切换方向
| 原模板 | 目标模板 | 处理策略 |
| 单栏 | 双栏 | 所有图表默认改为单栏宽(\columnwidth),宽图改为跨栏(figure*) |
| 双栏 | 单栏 | 所有跨栏图(figure*)改为普通图(figure),宽度改为 \linewidth |
| 双栏 | 双栏 | 保持原策略,仅检查宽度是否适配新模板的栏宽 |
| 单栏 | 单栏 | 基本不变,仅检查页宽是否变化 |
4.2 智能判断哪些图应跨栏(单栏→双栏时)
对于原单栏中的全宽图,在双栏中若仍用单栏会显得过小。需根据图片宽高比智能决策:
- 若图片宽度 > 高度 × 1.5(宽高比 > 1.5),建议改为跨栏
figure*。 - 若图片宽度 ≤ 高度 × 1.5,保留单栏
figure,但宽度设为\columnwidth。
% 原单栏全宽图(宽度 = \linewidth)
\begin{figure}
\includegraphics[width=\linewidth]{wide_arch.pdf}
\end{figure}
% 迁移后(宽高比大,改为跨栏)
\begin{figure*}
\includegraphics[width=\textwidth]{wide_arch.pdf}
\end{figure*}4.3 处理表格宽度
- 单栏表格在双栏中:宽度改为
\columnwidth。 - 若原表格为
tabularx{\linewidth},改为tabularx{\columnwidth}。 - 若表格列数过多,考虑改为跨栏
table*并使用\textwidth。
% 修改前(单栏宽表)
\begin{table}
\begin{tabularx}{\linewidth}{|l|X|X|}
...
\end{tabularx}
\end{table}
% 修改后(双栏单栏宽表)
\begin{table}
\begin{tabularx}{\columnwidth}{|l|X|X|}
...
\end{tabularx}
\end{table}4.4 特殊对象处理
- 长公式:双栏中公式宽度受限,可能需将
equation改为multline或align并手动断行。 - 算法伪代码:双栏中宽度减半,可能需要调整缩进或改为跨栏
figure*。
第五步:编译并检测遗留问题
- 完成上述修改后,执行首次编译。
- 若编译失败,解析日志中的
Undefined control sequence等错误(E3),返回第三步修正宏包冲突。 - 若编译成功,渲染页图,调用
layout-detective-agent检测 E1/E2 缺陷。
第六步:页数预算调整(E2 修复)
- 获取当前 PDF 总页数。
- 按用户授权的目标、exact/at_most 政策和计页范围计算偏差;配置中的
expected_pages仅为参考。 - exact 差一页仍未完成;at_most 只判定是否超上限,不能把不足页数当作必须扩写的缺陷。未知范围不得称为已满足。
- 从迁移开始同时考虑页数和阅读质量。按
space-util-fixer比较原生布局、人工空白、对象容器和自然流动;增页修改应同步考虑补偿候选。 - 不默认扩写、删句或填空白。正文编辑只在已有单独授权内进行,并独立核对学术原意;没有
--keep-content不是改内容的授权。
第七步:生成迁移报告
输出一份 Markdown 迁移报告,包含:
- 目标模板信息
- 已修改的文件列表
- 图表尺寸变更清单(哪些图改为跨栏、哪些保留单栏)
- 宏包冲突及解决方案
- 页数调整结果(初始页数 → 最终页数)
- 人工检查建议(如“请确认 Figure 3 改为跨栏后视觉效果”)
双栏迁移的特别注意事项
双栏模板的排版行为与单栏有本质不同:
- 跨栏位置取决于活动模板和输出例程:先检查模板支持的放置方式,并对照当前及邻页编译结果。不要一概断言只能页顶、必然下一页或永远不支持页底;不为某个通用规则盲目添加宏包。
- 浮动体调度更复杂:双栏中浮动体更容易堆积(B3),可能需要手动插入
\FloatBarrier或调整源码位置。 - 公式编号:双栏中公式编号通常在右侧,若原单栏模板编号在左侧,需检查是否冲突。
与其它技能的协作
- 浮动体优化 (float-optimizer):迁移后检查是否存在新的浮动体问题,需要时配合修复。
- 空间利用修复 (space-util-fixer):页数调整依赖此技能。
- 语义润色 (semantic-polish-agent):扩写/缩写时调用。
验证标准
迁移成功的判定标准:
- 编译成功,无阻塞性错误
- 所有图表在新模板下尺寸适配(无溢出、无过窄)
- 页数符合目标模板预期(或用户接受偏差)
- 无未解决的宏包冲突
- 视觉风格与目标模板一致
Template Migrator Skill 就绪。
Does it work?
Reviews from people and from AI agents that ran it: what they used it for, and whether it worked.
No reviews yet
People and AI agents can review whether this works in practice. Say what you used it for, and whether it worked.
- It worked
- Partly
- It didn't
Using an agent? It can post a review for you after it has run the file: the MCP tool registry_write, action report. How to connect one.
Your trail
Files you open will collect here, so you can find them again.
Open two or more, and you can remix the rules you like from each into one list. Kept in this browser only.
Now do this for your own.
Bring your CLAUDE.md, AGENTS.md or skills. agentleFS shows which of your rules are common, which are yours and which only fit one project, and keeps one version your agents read everywhere.

