latex-paper-formatter
当使用者说“整理建模论文 LaTeX”“修编译错误和引用”“统一公式、表格和图注”“按比赛模板排版”“检查交叉引用与缺图”时使用。先冻结内容并做基线编译,再在不改变数学含义、数字、引用或作者措辞的前提下修结构、符号格式、标签、表图、文献与版面;运行静态检查和实际编译,记录引擎、命令、警告与输出。只格式化和诊断,不补造公式、结果、来源或论文内容。
Files3
View on GitHubSKILL.mdskills/modeling/latex-paper-formatter/SKILL.md
GitHubLaTeX 建模论文排版 / LaTeX Paper Formatter
把内容已经冻结的建模论文整理成可编译、可追踪、符合正式模板的 LaTeX。格式问题与内容问题分开处理: 发现公式疑似错误时报告给作者,不借“排版修复”擅自改数学。
何时使用 / When to use
- 论文内容基本确定,需要套官方 class / template 并统一格式
- 有未定义引用、重复标签、缺图、bibliography 或编译警告
- 公式环境、编号、符号样式、单位、表格、图注与交叉引用不一致
- 页面溢出、表格裁切、浮动体乱序、公式断行或 PDF 视觉检查不过
- 需要记录可复现的编译命令、引擎、警告和最终 PDF
不适用于 / Not for:
- 需要改变论文主张、章节论证或补分析 —— 用
paper-structure-coach/paper-enhancement-builder - 需要修改模型方程、数据或代码 —— 方程与假设用
modeling-assumption-builder,数据处理与代码用modeling-code-builder - 要求补写引用、实验或结果以“填满版面” —— 本 skill 不生成内容
- 只有 Word / Google Docs 且不需要 LaTeX —— 使用对应文档格式工具
需要的输入 / Inputs
| 输入 | 必填 | 说明 |
|---|---|---|
| LaTeX 根文件 | 是 | 主 .tex、子文件、class / style、bibliography 与图表路径 |
| 官方模板 / 规则 | 是 | 编译引擎、页数、纸张、字号、匿名、参考文献和附件规则;没有时保留项目现状 |
| 内容冻结范围 | 是 | 哪些文字、公式、数字、图表和引用不允许改变 |
| 构建方式 | 否 | Makefile、latexmk、tectonic 或项目命令;已有命令优先 |
| 目标环境 | 否 | 本地 / CI / Overleaf、TeX 发行版与版本;用于解释差异 |
| 当前日志 / PDF | 否 | 用于定位错误和做前后视觉对照 |
材料不全时先做静态审计,不新建一套假定模板。正式比赛规则若无法核对,标 unverified 并请使用者提供,
不能凭往届经验补页数或匿名要求。
内容冻结 / Content preservation
格式化前记录内容指纹或至少保存 diff 基线,并把改动分成三类:
- 安全机械项:空白、环境、label / ref 连接、文件路径、模板明确要求的样式
- 需作者确认:符号冲突、单位不一致、疑似错公式、数字精度、图表与正文矛盾、缺引文
- 禁止补造:新公式、结果、引用元数据、作者信息、实验与结论
公式的括号、上下标、求和范围、微分变量、向量 / 标量、负号和单位都可能改变含义,不属于纯视觉字符。
流程 / Process
1. 识别模板与构建合同
读取根文件、class / style、构建脚本和正式规则,确定:
- 根入口、引擎、bibliography backend 与完整构建命令
- 允许 / 禁止的 package 和模板不可改区域
- 纸张、边距、栏数、字号、页数、匿名与附件要求
- 生成图表、参考文献和最终 PDF 的依赖
遵循已有模板,不把个人偏好的 class、字体或 package 强加进去。
2. 先做基线静态检查与编译
运行:
python3 scripts/check_latex.py path/to/main.tex
命令里的 scripts/ 相对本 skill 目录;在别的目录运行时写脚本的完整路径。不加 --root 时,读取范围是当前目录
(它包含全部根文件时)或根文件所在目录;论文用到这个范围以外的文件(例如 ../figures/)时,加 --root <论文项目根>。
脚本按 TeX 的规则从根文件所在目录解析 \input / \include、bibliography 和 figure 路径(子文件里写的也一样),逐级比对
磁盘上文件名的大小写(macOS 默认不分大小写也照报),并检查 label / ref、常用 natbib / biblatex citation、手工编号(含
“公式 (3)”“式(5)”)和占位符;它不判断数学正确,也不能代替编译。--selftest 运行脚本自带的回归用例。
随后运行项目原有构建命令并记录:引擎 / 版本、命令、退出状态、首个根因错误、未定义引用、重复 label、缺字形、
overfull / underfull box、package conflict 与 PDF 页数。若不能编译,保留状态 not-run 或 failed,不能写“已修复”。
3. 建格式审计表
按类别列位置、现状、目标、是否会影响内容和验证方式:
- 模板与文档结构
- 符号、数学环境、编号和交叉引用
- 单位、数值精度与符号首次定义
- 表格、图、图注、浮动与可读性
- bibliography、citation、数据 / 图表来源
- 页眉页脚、目录、匿名、页数与提交要求
- 构建、路径、生成文件与复现
遇到数学、数字、来源或作者决定,移入“需确认”,不要在同一补丁里猜。
4. 小批修改机械格式
优先从最可证伪的根因开始,每批只处理一类:
- 用稳定
\label+\ref / \eqref替代手工编号 - 将错误数学环境换成语义等价环境,保持表达式原样
- 统一已有符号命令、向量 / 矩阵 / 算子样式和单位接口
- 按模板整理表格宽度、列标题单位、精度、图尺寸与图注
- 修 bibliography 连接与已有、已核对条目的格式
- 修相对路径、文件大小写、构建顺序和生成文件位置
详细约定按需读 references/latex-conventions.md。新增 package 前检查 class、现有 package、目标引擎与比赛模板,
不为一项局部格式引入冲突。
每个实质批次后立刻重新静态检查和编译;失败就修当前局部,不继续堆改动。
5. 处理警告与版面
- 错误、未定义 ref / cite、重复 label 与缺文件必须清零
- overfull 逐项定位:先修长公式 / 表 / URL / 不可断文本,不全局缩字号
- underfull 结合 PDF 目视判断,不为消除日志数字制造更差排版
- 浮动体按论证顺序靠近首次引用,不用大量
[H]把页面挤坏 - 表图过宽时优先修源、拆表或横置,不把文字缩到不可读
- 页数超限先回到内容结构删重复,不能通过改官方边距或字号作弊
6. PDF 视觉验收
在目标纸张和实际缩放检查:封面 / 匿名、目录、页码、空白页、章节层级、公式断行、表格裁切、图中文字、图注、 参考文献、附录与最后一页。对照冻结基线确认数字、符号、公式、引用目标和结论没有变化。
编译通过不代表视觉通过;视觉通过也不代表内容正确。
7. 交付审计与复现记录
输出修改文件、机械改动、需作者确认项、静态检查结果、编译命令 / 环境 / 状态、警告和 PDF 路径。 有改动无法验证时明确说明,不把“理论上应当”写成完成。
输出格式 / Output
## 格式审计
| 类别 | 位置 | 发现 | 拟修 / 已修 | 是否影响内容 | 验证状态 |
## 符号与单位
| 符号 / 数值 | 含义 | 单位 | 首次定义 | 冲突 / 决定 |
## 交叉引用与资源
| 对象 | label / key / path | 引用位置 | 状态 |
## 编译验证
- root / template:
- engine / version:
- command:
- static check:
- compile result:
- warnings:
- page count / PDF:
## 内容保全
- 仅格式改动:<文件 / 类型>
- 需作者确认:<公式、数字、来源或措辞>
- 未验证:<工具或环境缺口>
工具与跨 Agent 降级 / Tool fallback
- 能读写和执行时:基线检查 -> 小补丁 -> 静态检查 -> 编译 -> PDF 目视验收。
- 只能读不能写时:给定位明确的审计和最小 diff 建议,不声称文件已修。
- 能写不能编译时:只做低风险机械改动,返回准确命令并将编译标
not-run。 - 没有 Python 时:按脚本检查项人工审计;没有 TeX 时:静态检查不能冒充编译。
- 没有 PDF 查看能力时:报告编译状态,并把视觉验收列为必须由使用者完成的未决项。
- 不依赖某个 Agent API;脚本只用 Python 标准库,核心步骤可由任意 shell / 编辑器映射。
边界 / Boundaries
- 不改数学含义:疑似错误只报告并询问,不能顺手“修正”。
- 不补写内容:不添加模型、推导、实验、结果、限制或结论来填版面。
- 不造引用:作者、标题、年份、DOI、页码与访问日期必须可核对;缺 key 不代表可以编一条。
- 不改官方模板作弊:不缩边距、字号、行距或隐藏内容绕页数与匿名规则。
- 不把静态检查当编译:脚本没发现问题不等于 TeX 或 PDF 正确。
- 不把编译成功当内容正确:LaTeX 能排出错误方程和虚假数字。
- 不静默覆盖用户宏与样式:先判断其用途和调用范围,局部修复优先。
- 不隐藏警告与未验证项:失败、未运行、通过有警告、完全通过分开报告。
- 不代替作者最终核对:公式、数字、署名、匿名、引用和 PDF 提交前由团队逐项确认。
Token 控制 / Token discipline
- 先读根文件、导言区、构建脚本和日志首个根因,不默认展开所有子文件
- 静态脚本一次扫描交叉引用与资源,避免逐个手搜
- 编译日志只保留错误上下文与警告摘要;完整日志留文件
- 按错误类别小批修改,验证后再进入下一类
- 视觉检查按页记录问题,不把 PDF 全文转成对话文本
参考资料 / References
references/latex-conventions.md—— 数学、单位、表格、图、文献、构建与视觉约定scripts/check_latex.py—— 标准库静态检查;支持项目根限制、多个根文件、--json、--strict与--selftest; 退出码 0 无 error,1 有 error(--strict时 warning 也算)或自检失败,2 命令行用法错误../_shared/paper-argument-checklist.md—— 需要判断表图与主张职责时读取,不用于改内容
变更记录 / Changelog
| 版本 | 日期 | 变更 | 类型 |
|---|---|---|---|
| 0.1.1 | 2026-09-26 | check_latex.py 改按根文件目录解析 \input、bibliography、图片与 \graphicspath,只在子文件目录下成立的路径报错;逐级比对真实文件名大小写(macOS 上也报);补中文“公式 (3)”“式(5)”手工编号与带点文件名补 .tex;不传 --root 时从 skill 目录照文档运行也能读到论文;新增 --selftest;“不适用于”改为实名路由 | patch |
| 0.1.0 | 2026-08-17 | 初始草稿:内容冻结、基线编译、机械格式批次、静态检查脚本与 PDF 视觉验收 | minor |