关于 light-typesetting
light-typesetting 是将已批准的作者材料整理为经过检查的 PDF 投稿包的技能。它协调保留来源记录的预检、LaTeX 编译、基于投稿规范的合规检查和就绪度证据,并区分工具缺失与稿件错误。
主要功能
- 01验证输入并保留来源记录
- 02选择 LaTeX 引擎和参考文献后端
- 03编译并分类构建状态
- 04按投稿规范执行合规检查
- 05生成交付与就绪度材料
- 06单独报告不可用工具
适用场景
- 01根据已批准稿件构建 PDF
- 02定位首个 LaTeX 编译错误
- 03依据投稿规则检查材料
- 04准备供投稿匹配使用的可追溯材料包
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ light0305/ light-skills --skill light-typesetting安装后在 Claude Code 中输入/light-typesetting确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references.mdtypesetting-resource-map.mdreferences/build_contract.mdlatex_errors.mdscripts/build_submission.pycompile_driver.pydesk_reject_gate.pyprecheck_log.pysubmission_check.pysubmission_readiness.pytemplates/acm_sigconf.texctex_chinese.texelsevier_elsarticle.texieee_bare_conf.texspringer_llncs.texsubmission-readiness.example.jsontypesetting_input.json详细介绍
排版 · 阶段 11
将已批准的作者材料转换为可复现的 PDF 投稿包。工作不只是让 LaTeX 编译通过:还要保留来源信息,选择一致的引擎/后端,预检依赖项,编译至收敛,定位首个根因,运行由配置文件驱动的拒稿前检查,并向投稿 venue 匹配流程提供准确的 PDF/页数信息。
运行实际构建前,请阅读 typesetting-resource-map.md。编写或使用机器生成的材料前,请阅读 references/build_contract.md。只有在已知首个可定位到源文件的错误后,才使用 references/latex_errors.md。仅当 templates/ 下的 venue 模板与当前作者资料包匹配时才使用该模板;随附副本仅供起步参考,不代表当前 venue 的真实要求。
不容妥协的边界
- 使用引文交付中的
delivery.json、references.bib和citekey-audit.json。要求delivery.status=DELIVERED、存在已声明的deliverable_hashes、引文失败项为空,且声明审查遗留项为空。已声明的引文交付物必须是位于引文交付目录内的相对路径,并且构建快照必须在来源信息中保留审计、失败和声明审查附属文件。检查暂存的键和编译结果。不要重新判定 DOI 是否存在、元数据冲突、撤稿或声明相关性。 - 使用图文件、已声明的尺寸/DPI 和源清单。要求清单为
light.figure_delivery.v1或light.figure_build.v1,并要求嵌入的文件哈希与已声明的输出哈希匹配。对于实证图交付,要求有已确认的结果分析证据关联。检查文件是否存在、是否嵌入、浮动体/布局以及编译结果。不要重新检查视觉诚信、科学内容或出版尺寸生成。 - 使用已批准的论文写作稿件。不要为了满足页数预算而捏造声明、 参考文献、实验或数字。
- 页数、匿名性、模板、字体和页面框规则只能依据用户输入或带有 URL/日期来源信息的当前权威说明。绝不嵌入通用 venue 限制。
- 将工具/资源故障标记为
UNAVAILABLE。绝不要将其称为稿件ERROR,绝不要将其称为PASS,也绝不要将交付标记为DELIVERED。 - 将第 11 阶段的关键范围限定为排版。安全/网络/工具不可用不会扩大该范围。
ROUTES没有键 11;应在第 11 阶段内修复故障,绝不要虚构反向边。
本地 LaTeX 环境约定
实际构建 PDF 时,必须先检测本地工具链,再声称构建成功:
- 核心:Python 标准库以及 LaTeX 发行版,例如 TeX Live、MiKTeX、 MacTeX 或 TinyTeX;
- 编译驱动:优先使用
latexmk;仅当tectonic支持的后端与稿件匹配时才使用它; - 引擎:根据源文件/配置文件触发条件选择
pdflatex、xelatex和lualatex; - 参考文献:传统的
\bibliography{}使用bibtex,biblatex使用biber,除非另有明确声明; - PDF 检查:需要页面框、页数或嵌入字体信息时使用
pdfinfo和pdffonts。
如果缺少编译器、引擎、后端、软件包或 PDF 检查工具,请将状态标记为
UNAVAILABLE,说明缺少的组件,并询问用户是要安装/配置该组件还是切换工具链。绝不要静默安装系统工具,绝不要将缺少工具链称为稿件错误,也绝不要声称 PDF 已交付,除非构建实际生成并检查了该 PDF。
工作流
1. 冻结输入契约
复制 templates/typesetting_input.json。记录:
- 论文写作入口及所有必需源文件;
- 每个图的源文件、目标相对路径、尺寸/DPI 和交付/构建清单;
- 引用的
delivery.json和所需暂存 BibTeX 文件名;编辑引用后必须重新生成交付文件,使哈希与引用文件匹配; light.typesetting_venue_profile.v1,包括源类型、URL(如有)、检查日期和规则。
如果某项投稿 venue 规则未知,请将其保留为 null、0 或不填写。不要从其他 venue 或去年的模板中推断。
2. 编译前预检
python scripts/build_submission.py --spec typesetting-input.json --preflight-only
要求提供保留来源信息的 source/ 快照。检查缺失输入、\input/\include、图形、标签/引用、引用交付模式/状态、交付文件哈希、已交付 citekey 审计、空引用失败/审查交接、当前暂存的 citekey、图清单输出哈希、实证图证据绑定、文档类、必需宏包及本地宏包可用性。每次迭代使用新的/空的输出目录;构建器会拒绝过时的运行目录。
分类:
| 证据 | 状态 |
|---|---|
| 缺少稿件/图/BibTeX/键/标签、上游哈希过时、引用审查未完成、实证图证据未经确认或后端冲突 | ERROR |
| 缺少必需引擎/后端/宏包/工具,或无法执行 | UNAVAILABLE |
| 无阻塞项 | PASS |
3. 选择引擎和参考文献后端
检测到 fontspec、xeCJK、ctex、unicode-math 或
polyglossia 时使用 XeLaTeX;检测到 Lua 触发条件时使用 LuaLaTeX;否则使用 pdfLaTeX。将传统的 \bibliography 检测为 BibTeX,将 biblatex 检测为 Biber,除非其 backend= 选项另有说明。
如果 profile 引擎与 XeLaTeX/LuaLaTeX 硬性源触发条件冲突,或其后端与源文件不同,则以根因 ERROR 停止;不要混用 BibTeX 和 Biber。对于其他与 pdfLaTeX 兼容的源文件,profile 可以有意选择 XeLaTeX。记录可执行文件的绝对路径、版本探测结果、工作目录、命令数组和 shell 命令格式。
4. 编译并判定收敛状态
python scripts/build_submission.py --spec typesetting-input.json
优先使用本地 latexmk;仅在后端受支持时使用 Tectonic。从快照中的稿件目录编译,以便相对输入路径能够解析。保存 latexmk 规则/运行记录、日志/PDF 的 SHA-256 和页数。
严格使用以下四种编译状态:
PASS:返回码为零、PDF 存在,且没有未解决的未定义引用/交叉引用或重新运行信号。ERROR:稿件/后端/输入导致构建失败(返回码非零)或未生成 PDF。UNAVAILABLE:必需的本地工具/资源无法启动或完成。UNRESOLVED:PDF 存在,但引用/交叉引用尚未收敛。
ERROR 和 UNRESOLVED 的退出码为 1。对于命令门控边界,UNAVAILABLE 的退出码为 0,但仍视为未交付。
5. 从第一个根因开始诊断
先阅读 compile-report.json,然后阅读完整日志。在次要警告之前,报告第一个 file.tex:line、编译器消息和通俗易懂的原因。先修复最早出现的错误;每次只做一项最小修复后重新编译。绝不悄悄改写正文、删除数据或添加伪造的参考文献。
如果修复循环反复出现相同特征,请停止并报告 UNRESOLVED,而不是进行推测性修改。
6. 运行由 profile 驱动的 desk-reject 门控
python scripts/desk_reject_gate.py `
--tex typesetting-build/source/paper.tex `
--pdf typesetting-build/compile/paper.pdf `
--bib typesetting-build/source/references.bib `
--log typesetting-build/compile/paper.log `
--profile venue-profile.json `
--report desk-reject-findings.json
客观的 profile 违规可能构成关键问题:超过页数限制、作者/PDF Author 元数据未匿名、文档类错误、缺少必需宏包、页面尺寸错误或字体未嵌入。除非当前权威 profile 规定了客观的硬性规则,否则 TODO、致谢、自我引用、链接和方框警告均视为警告。
静态检查无法证明语义层面的匿名性、解读含糊的 venue 规则,也无法评判最终的视觉质量。提交前请检查渲染后的 PDF 和当前官方分析工具/说明。
7. 生成规范工件
必须包含:
build-manifest.json;compile-report.json和编译日志;compliance-report.json和初审拒稿检查结果;- 生成的 PDF;
- 运行失败或不可用时的
failure.json; venue-handoff.json;delivery.json。
只有 compile=PASS、compliance=PASS 且 compliance critical 为零,才能标记为
DELIVERED。
保留失败报告;它们可以证明 fail→fix 的转换过程。
8. 推导就绪状态,不要合并证据
构建本地就绪数据包并运行:
python scripts/submission_readiness.py `
--input templates/submission-readiness.example.json --as-of YYYY-MM-DD `
--out submission-readiness-report.json
公开模板有意设为 UNKNOWN,必须以退出码 1 退出。状态链为
INVENTORIED → SOURCE_BUILDABLE → TECHNICALLY_CHECKED → VISUALLY_CHECKED → METADATA_MATCHED → VENUE_READY → USER_APPROVED。编译退出码为
0,不能跳过未解决的引用、编译 page_count、同一 PDF 绑定、逐页渲染与审查、元数据匿名性、当前官方配置文件或精确的文章类型绑定。visual.source_pdf_sha256、
metadata.source_pdf_sha256、compliance.source_pdf_sha256 和任何
user_approval.pdf_sha256 都必须等于 compile.pdf_sha256;visual.page_count
必须等于 compile.page_count;每条视觉页面记录都必须包含 render_sha256、
render_tool、review_status=PASS、reviewer/reviewer_id 和非未来的
reviewed_at。合规记录还必须指定与配置文件相同的 venue 和
article_type。Artifact
Available/Functional/Reusable/Reproduced/Replicated 仍然彼此独立;脚本会记录证据,但绝不授予 ACM 或 venue 徽章。
9. 运行阶段 11 并移交
运行 compile 命令门禁和 desk_reject 检查点:
python ../light-orchestrator/scripts/run_checkpoint.py `
--file .light/passport.yaml --stage 11 `
--gate "compile=python scripts/compile_driver.py --compile paper.tex --outdir build --json-out compile-report.json --quiet" `
--findings desk-reject-findings.json --ts <ISO8601> --write
若 critical 检查失败,修复阶段 11 并重新运行,直至状态为 delivered。进行 venue 匹配时,核对 venue-handoff.json 中的 PDF 路径/哈希、页数、页面尺寸、配置文件来源和合规报告。不要声称已走过 ROUTES[11],也不要创建反向边。--quiet 可使 Windows 命令门禁不受区域设置影响;完整诊断记录仍保存在 compile-report.json 中。
执行 / 询问 / 绝不
执行:
- 修改前快照声明的输入。
- 运行预检、编译、渲染后 PDF 审查、初审拒稿门禁和检查点。
- 保留准确的命令、哈希、状态和失败工件。
询问:
- venue 规则/来源缺失或含糊时,先询问。
- 删除科学内容、更改参考文献系统或替换用户的官方模板之前,先询问。
- 对语义匿名性和边界布局,询问是否需要人工确认。
绝不:
- 绝不声称运行过实际并未运行的编译、收敛、页数或元数据检查。
- 绝不将缺少工具视为稿件错误或成功交付。
- 绝不重新执行引文真实性核查、图表科学质量保证或论文写作。
- 绝不让核心流程依赖付费 Overleaf、私钥、浏览器插件或大量使用 npm 的工具。
交付自检
- 输入来源和 SHA-256 行涵盖稿件、图表、图表清单、引文交付/BibTeX/审计/失败/审阅工件及配置文件。
- 引文交付状态为
DELIVERED;交付文件的哈希与暂存文件一致;引文失败项和声明审阅遗留项均为空。 - 图表源清单声明嵌入输出哈希;实证图表附有已确认的结果分析证据绑定。
- 引擎/后端选择与源文件及配置文件一致。
- 编译状态为四种规范状态之一;PASS 状态下有带哈希的 PDF。
- 编译器提供原因时,根本原因包含文件/行号;警告单独列出。
- 引文键、图表、标签和交叉引用保持一致。
- Desk-reject 关键问题为零,否则不得标记为已交付。
- 每条视觉/元数据/合规/用户批准记录均绑定到已编译 PDF 的哈希;每个 PDF 页面都有渲染哈希、渲染工具、审阅者/日期及审阅 PASS 记录;配置文件为最新版本,且绑定到确切的文章类型。
- 作者团队的可重复性未被重新标记为独立复现/重复验证。
- 场所匹配使用真实的 PDF/页面/合规事实。
- 阶段 11 仅使用
compile和desk_reject;未添加路由/反向边。