Skip to main content

delivery-assurance

Meta-model-agent 完成编译、版式、匿名、页数、引用与提交前合规验收。适用于提交质量验收。

Ir para a instalação

Informações da origem

Repositório
WuXinbo-bo/Math-model-skills
Última atividade na origem
29 de agosto de 2026 às 09:54
Idioma detectado do SKILL.md
Vários idiomas
Estrelas
90
Forks
2

Opções de instalação

Por padrão, está selecionado o prompt que primeiro revisa a origem. Você pode mudar para um comando direto ou baixar uma cópia local.

Revise os arquivos de origem

Leia o SKILL.md e os arquivos complementares exibidos pelo SkillsMP antes de decidir se vai instalar.

Exibindo SKILL.md

SKILL.md
Instruções da origem · Visualização somente leitura
name
delivery-assurance
description
Meta-model-agent 完成编译、版式、匿名、页数、引用与提交前合规验收。适用于提交质量验收。
# 提交质量验收 ## 数据准备一致性验收 有数据时,核对论文独立“数据预处理”小节、`全部结果.json.data_preparation`、`数据/processed/` 文件哈希和模型代码读取路径一致,并确认处理前后质量统计与泄漏说明真实可复核。无数据时确认存在明确豁免且没有伪造的处理后数据或清洗结论。 ## 模型身份与摘要一致性验收 逐问核验审计身份与论文表达卡。正式名称必须显式暴露线性/整数/鲁棒/随机规划、回归、时间序列、状态空间、车辆路径、网络流、多指标决策等标准结构;论文展示名称应简洁并保留主要结构。比较、验证或应用类问题必须说明继承关系,不得强造独立模型。摘要和正文先说明模型或继承关系,再说明核心方法;关键词至少包含一个标准模型族。 `建模报告.md` 的审计身份与 `全部结果.json.model_identity` 必须逐字一致;摘要和正文与论文表达卡保持语义一致,不得复制身份卡字段标签。最终摘要还必须拦截内部术语、完整算法链、未解释方案缩写、数字流水账和缺失的模型边界。 ## 发布声明、公式与页面构成验收 - 核对 `全部结果.json.publication_claims` 的来源键、派生关系与正文显示值;同一指标在摘要、正文、图表、表格和结论中不得冲突。 - 核对真实问题数、逐问章节文件和主文件 `\input/\include` 一一闭合,禁止章节存在但最终 PDF 漏问。 - 读取 `latex-math.md`,检查原生公式、符号与量纲、`\eqref/\ref/\cref`、重复标签和硬编码图表公式编号。 - 读取 `page-composition.md` 并在实际 PDF 上执行页面审计。编译成功、页数合规和页面质量是三个独立门禁。 - Overfull box、裁切、标题孤悬、图题分离和不可读小字在冠军模式下不得带入终稿;低占用页面必须人工确认是否来自章节自然结束,而不是用空白或大图填页。 ## 必读的版面子协议 - 始终读取 `参考资料/paper-layout/core.md` 与 `body-density.md`。 - PDF/LaTeX 验收读取 `latex-figures.md`。 - PDF/LaTeX 验收同时读取 `latex-math.md` 与 `page-composition.md`。 - DOCX 验收读取 `docx-figures.md`。 - 子协议中的尺寸和页数语义优先于本文件中的旧示例。 DOCX 路线使用 `python 工具/docx_export.py --workspace .` 生成 `论文/数模论文.docx` 和 `论文/docx_report.json`。不得对 DOCX 路线执行 XeLaTeX/BibTeX;验收以 Markdown 正文、DOCX 包、尺寸报告以及可选的 LibreOffice PDF 预览为准。 ## 竞赛专用硬门禁 编译前必须读取 `状态/工作流状态.json` 中的竞赛 Profile 和 `参考资料/竞赛规则.md`: - CUMCM:核验当届官方通知、匿名电子正文、模板、引用、图表及编号/附件要求。 - 51MCM:核验 `51mcmthesis`、`withoutpreface`、报名号/题号/组别字段,以及正文不存在学校、成员、邮箱和电话信息。 - MCM/ICM:核验全英文、12pt、Summary Sheet、已填写 Control Number、A--F 题号、无个人/学校身份信息,完整 PDF 不超过 25 页。 编译成功不能覆盖竞赛 Profile 门禁失败。 ## 稳定执行契约 - **执行目标**:完成论文编译、版式、匿名、页数、引用与提交文件的终局验收。 - **调用参数**:[paper-directory]。 - **权威输入**:论文/论文正文.tex、论文/章节/、图表资产、模板规则与竞赛要求。 - **允许交付**:论文/数模论文.pdf、论文/编译日志.log及必要的验收记录;仅可做有边界的修复。 - **禁止写入**:不得越权修改已冻结的上游事实、用户原始文件或本协议未授权的目录。 - **可用工具边界**:Bash(*), Read, Write, Edit, Grep, Glob。 - **最小交付**:PDF可打开、编译无关键错误、引用闭合、模板完整、匿名与页数合规。 - **恢复入口**:优先读取当前工作、状态记录和已有产物,从最近一次通过门禁的位置继续。 - **失败回退**:最多按既定次数修复编译;模型或结果问题必须回退上游,不得在验收阶段擅改事实。 - **收口顺序**:先核对输入,再完成产物,再运行本环节门禁,最后登记状态;门禁未通过不得宣告完成。 Compile and validate: **$ARGUMENTS** ## 运行参数 - **ENGINE = `xelatex`** - **MAX_COMPILE_ATTEMPTS = 3** - **PAPER_DIR = `论文/`** - **MAX_PAGES** / **COMPETITION** — From Additional Parameters. ## 执行流程 ### 工作节点 1:Validate environment ```bash if ! which xelatex 2>/dev/null; then echo "xelatex not found, attempting install..." if which miktex 2>/dev/null; then miktex packages install xetex ctex xecjk gbt7714 fontspec miktex fndb refresh elif which initexmf 2>/dev/null; then initexmf --set-config-value=[MPM]AutoInstall=1 fi fi which xelatex && which bibtex && echo "ready" || echo "xelatex/bibtex not found" fc-list :lang=zh | head -5 kpsewhich gbt7714.sty 2>/dev/null || echo "gbt7714.sty not found (will auto-install on first compile)" ``` ### 工作节点 2:Pre-compile cleanup ```bash if [ -f "工具/compile_utils.sh" ]; then bash 工具/compile_utils.sh 论文/ elif [ -f "skills/shared-scripts/compile_utils.sh" ]; then bash skills/shared-scripts/compile_utils.sh 论文/ else echo "compile_utils.sh not found, manual cleanup needed" fi ``` This utility auto-handles: special chars cleanup, table format fixes, includegraphics path correction (`图表/` → `../图表/`), hidelinks, 图表/图表/ nesting, math_commands conflicts, wide table resizebox wrapping, narrow table resizebox removal, light-color text fixes, TikZ library injection. If script not found, perform these steps manually. **⛔ 表格行结束符修复(Misplaced \noalign 的根因):** ```bash # 检测并修复 tabular/longtable 中的单 \ 行结束符(应该是 \\) # 这是 heredoc 不加引号导致 \\ 被转义为 \ 的常见问题 for f in 论文/章节/*.tex; do [ -f "$f" ] || continue # 检测:tabular 环境内,行末只有单个 \ 后跟换行(应该是 \\) if grep -P '(?<!\\)\\(?!\\)(?=\s*$)' "$f" | grep -v '\\begin\|\\end\|\\hline\|\\toprule\|\\midrule\|\\bottomrule\|\\caption\|\\label\|\\centering\|\\input\|\\include\|\\usepackage\|\\section\|\\subsection' > /dev/null 2>&1; then echo "⚠ $(basename $f): 可能有表格行结束符问题(单 \\ 应为 \\\\)" # 在 tabular/longtable 环境内,把行末的单 \ 替换为 \\ python3 -c " import re with open('$f', 'r', encoding='utf-8') as fh: content = fh.read() # 只在 tabular/longtable 环境内修复 def fix_table_endings(match): table = match.group(0) # 把数据行末尾的单 \ (后跟换行) 替换为 \\\\ fixed = re.sub(r'(?<=&[^&\n]*)\\\s*\n', r'\\\\\\\\\n', table) return fixed for env in ['tabular', 'longtable']: pattern = r'(\\\\begin\{' + env + r'[*]?\}.*?\\\\end\{' + env + r'[*]?\})' content = re.sub(pattern, fix_table_endings, content, flags=re.DOTALL) with open('$f', 'w', encoding='utf-8') as fh: fh.write(content) " 2>/dev/null fi done ``` Additionally validate ref/label matching and embed missing visuals: ```bash mkdir -p 临时文件 grep -oh '\\ref{[^}]*}' 论文/章节/*.tex 论文/论文正文.tex 2>/dev/null | sort -u > 临时文件/_refs.txt grep -oh '\\label{[^}]*}' 论文/章节/*.tex 论文/论文正文.tex 2>/dev/null | sort -u > 临时文件/_labels.txt comm -23 <(sed 's/\\ref/\\label/g' 临时文件/_refs.txt) 临时文件/_labels.txt > 临时文件/_missing_labels.txt cat 临时文件/_missing_labels.txt ``` **⛔ 中文引号统一为全角引号(避免 PDF 出现 ''乱码或两个堆叠反引号):** 中文论文用 xeCJK,全角引号 `"..."` 会自动化渲染为漂亮的对称弯引号。 LaTeX 风格 `` ``...'' `` 在中文字体下会呈现成两个堆叠的反引号,很丑。 ASCII 直引号 `"..."` 在 LaTeX 中渲染为右右引号 `''...''`。 统一替换为全角引号。 ```bash # 把所有错误引号统一为全角引号 for f in 论文/章节/*.tex; do [ -f "$f" ] || continue python3 -c " import re content = open('$f', 'r', encoding='utf-8').read() # 保护数学环境 placeholders = [] def stash(m): placeholders.append(m.group(0)); return f'\\x00M{len(placeholders)-1}\\x00' content = re.sub(r'\\\$[^\\\$]*\\\$', stash, content) content = re.sub(r'\\\\\\[.*?\\\\\\]', stash, content, flags=re.DOTALL) # 保护 \begin{verbatim}/lstlisting 等代码环境 content = re.sub(r'\\\\begin\{(verbatim|lstlisting|minted)\}.*?\\\\end\{\\1\}', stash, content, flags=re.DOTALL) # 1. LaTeX 风格 ``...'' → 全角双引号 content = re.sub(r\"\`\`([^\`'\\\\n]+?)''\", '\u201c\\\\g<1>\u201d', content) # 2. ASCII 直引号 \"...\" → 全角双引号(成对处理) parts = content.split('\"') if len(parts) > 2: result = parts[0] for i, p in enumerate(parts[1:], 1): result += ('\u201c' if i % 2 == 1 else '\u201d') + p content = result # 还原 for i, ph in enumerate(placeholders): content = content.replace(f'\\x00M{i}\\x00', ph) open('$f', 'w', encoding='utf-8').write(content) " 2>/dev/null done ``` If labels are missing, find corresponding figure/table code in `图表/*.tex` and embed into the correct section file. Also verify compile_utils.sh output for "UNEMBEDDED" warnings against `figure_manifest.json`. Only an item selected for publication is a blocking omission. **MANDATORY FIX LOOP — do NOT proceed to compilation until every `publish=true` figure and every table selected by the manuscript embedding plan is embedded:** ```bash UNEMBED=0 # Validate PDF visuals for pdf in 图表/*.pdf; do [ -f "$pdf" ] || continue bn=$(basename "$pdf") python3 -c "import json,sys; d=json.load(open('图表/figure_manifest.json',encoding='utf-8')); sys.exit(0 if any(x.get('publish') and x.get('path','').replace('\\\\','/').endswith('/'+sys.argv[1]) for x in d.get('figures',[])) else 1)" "$bn" || continue grep -rq "$bn" 论文/章节/*.tex 论文/论文正文.tex 2>/dev/null || { echo "UNEMBEDDED PDF: $bn"; UNEMBED=$((UNEMBED+1)); } done # Validate only TABLE_*.tex files selected by the manuscript embedding plan for tbl in 图表/TABLE_*.tex; do [ -f "$tbl" ] || continue bn=$(basename "$tbl") python3 -c "import json,sys; d=json.load(open('图表/figure_manifest.json',encoding='utf-8')); sys.exit(0 if any(x.get('publish') and x.get('path','').replace('\\\\','/').endswith('/'+sys.argv[1]) for x in d.get('tables',[])) else 1)" "$bn" || continue # Validate if any label from this table file appears in sections for lbl in $(grep -oh '\\label{[^}]*}' "$tbl" 2>/dev/null); do grep -rq "$lbl" 论文/章节/*.tex 论文/论文正文.tex 2>/dev/null || { echo "UNEMBEDDED TABLE: $lbl (from $bn)"; UNEMBED=$((UNEMBED+1)); } done done # Raw 图表引用.tex labels are diagnostic; the published asset loops above remain authoritative echo "Total unembedded: $UNEMBED" ``` If UNEMBED > 0, you MUST fix all selected publication items before compiling. For each unembedded item: - **PDF figure**: copy the `\begin{figure}...\end{figure}` block from `图表/图表引用.tex` into the target section - **TABLE_*.tex**: copy the `\begin{table}...\end{table}` block from `图表/TABLE_*.tex` into the target section (use `\input{../图表/TABLE_xxx.tex}` or paste the tabular code directly) - Add 1-2 sentences of lead-in text before and 3-5 sentences of analysis after each embedded item - Re-run the count verify above — repeat until UNEMBED = 0 **Do NOT compile with unembedded publication figures or selected正文 tables. Unpublished diagnostic assets are allowed to remain outside the paper.** ```bash # Diagnose generated PDFs; only publish=true omissions are blocking for pdf in 图表/*.pdf; do [ -f "$pdf" ] || continue bn=$(basename "$pdf") python3 -c "import json,sys; d=json.load(open('图表/figure_manifest.json',encoding='utf-8')); sys.exit(0 if any(x.get('publish') and x.get('path','').replace('\\\\','/').endswith('/'+sys.argv[1]) for x in d.get('figures',[])) else 1)" "$bn" || continue grep -rq "$bn" 论文/章节/*.tex 论文/论文正文.tex 2>/dev/null || echo "⚠ $bn not referenced" done ``` ### 执行节点 3:Compile (manual steps, no latexmk) ```bash cd 论文/
Ver no GitHub
Este SKILL.md e muito grande, entao o SkillsMP mostra aqui apenas a primeira secao. Ver no GitHub