mcpField
L
light-typesetting

light-typesetting

github.com/light0305文档处理81462 次安装16 周前更新
代码仓库

关于 light-typesetting

light-typesetting 是将已批准的作者材料整理为经过检查的 PDF 投稿包的技能。它协调保留来源记录的预检、LaTeX 编译、基于投稿规范的合规检查和就绪度证据,并区分工具缺失与稿件错误。

主要功能

  1. 01验证输入并保留来源记录
  2. 02选择 LaTeX 引擎和参考文献后端
  3. 03编译并分类构建状态
  4. 04按投稿规范执行合规检查
  5. 05生成交付与就绪度材料
  6. 06单独报告不可用工具

适用场景

  1. 01根据已批准稿件构建 PDF
  2. 02定位首个 LaTeX 编译错误
  3. 03依据投稿规则检查材料
  4. 04准备供投稿匹配使用的可追溯材料包

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/light0305/light-skills --skill light-typesetting

安装后在 Claude Code 中输入/light-typesetting确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references.md
typesetting-resource-map.md
references/
build_contract.md
latex_errors.md
scripts/
build_submission.py
compile_driver.py
desk_reject_gate.py
precheck_log.py
submission_check.py
submission_readiness.py
templates/
acm_sigconf.tex
ctex_chinese.tex
elsevier_elsarticle.tex
ieee_bare_conf.tex
springer_llncs.tex
submission-readiness.example.json
typesetting_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;未添加路由/反向边。

评论

支持 Markdown