make_latex_model

from huangwb8/chineseresearchlatex

中国科研常用LaTeX模板集

720 stars88 forksUpdated Jan 25, 2026
npx skills add https://github.com/huangwb8/chineseresearchlatex --skill make_latex_model

SKILL.md

NSFC LaTeX 模板高保真优化器

📋 文档目录


深度参考

  • 本项目的 CLAUDE.mdskills/README.md 规范
  • 现有某个 project 的 @config.tex 的样式定义模式
  • ⚠️ 关于 main.tex 的参考范围
    • 允许参考main.tex 中的 \section{}\subsection{} 标题文本
    • 禁止参考main.tex 中的 \input{} 引用的正文内容文件

核心目标

确保 LaTeX 渲染的 PDF 与 Word 版打印的 PDF 像素级对齐

样式要素(必须完全一致)

  • 标题层级格式(一级、二级、三级、四级)
  • ⚠️ 标题文字内容(每年度的 Word 模板标题可能不同)
  • 字体(中文楷体 + 英文 Times New Roman)
  • 字号(三号、四号、小四等)
  • 颜色(MsBlue RGB 0,112,192)
  • 间距(行距、段前段后、缩进)
  • 列表样式(编号格式、缩进)
  • 页面设置(边距、版心)

⚠️ 关键 1:标题文字对齐

  • 标题的文字内容必须与 Word 完全相同
  • 标题的编号格式必须与 Word 完全相同(如"1." vs "1.")
  • 标点符号必须与 Word 完全相同(如全角/半角符号)
  • 例如:Word 是"1. 项目的立项依据",LaTeX 必须完全一致

⚠️ 关键 2:每行字数对齐

  • 每行的字数必须与 Word 完全相同
  • 换行位置必须与 Word 完全一致
  • 这需要精确调整:字号、字间距、行距、段间距

执行模式说明

本技能采用**"硬编码工具 + AI 规划"**的混合模式:

自动模式(硬编码脚本)

以下步骤由 Python 脚本自动执行,无需 AI 干预:

步骤脚本工具输入输出
状态检查scripts/check_state.py项目路径状态报告
PDF 样式分析scripts/analyze_pdf.pyWord PDF*_analysis.json
标题文字对比scripts/compare_headings.pyWord .docx + LaTeX对比报告
样式参数验证scripts/run_validators.py项目路径验证报告
编译检查xelatex 命令.tex 文件.pdf

AI 规划模式(需要智能决策)

以下步骤需要 AI 根据分析结果进行规划和执行:

决策点输入数据AI 任务输出
决策点 1: 是否需要修改样式?PDF 分析结果 + 当前配置判断差异是否超出容忍度修改清单或跳过
决策点 2: 生成具体修改方案差异分析结果规划 LaTeX 代码修改具体修改内容
决策点 3: 应用修改到配置文件修改方案使用 Edit 工具修改修改后的 @config.tex
决策点 4: 验证结果是否达标修改前后的验证报告判断是否需要迭代继续微调/完成

协作流程

Word 模板 → [自动] analyze_pdf.py → 分析结果
                                    ↓
                          当前 @config.tex
                                    ↓
                         [AI 决策点 1] 是否需修改?
                                    ↓
                           是 → [AI 决策点 2] 生成方案
                                    ↓
                          [AI 决策点 3] 应用修改
                                    ↓
                          [自动] 编译 + 验证
                                    ↓
                         [AI 决策点 4] 是否达标?
                                    ↓
                     否 → 微调 → 返回 [AI 决策点 2]
                     是 → 完成

关键原则:

  • 数据提取 由硬编码工具完成(精确、稳定)
  • 决策判断 由 AI 完成(灵活、可解释)
  • 代码修改 由 AI + Edit 工具完成(可控、可回溯)

:AI 决策点的详细规范已整合到"第 3 节 执行流程"的相应步骤中。

工作空间说明

本 skill 使用专用工作空间存储所有工作产物,避免污染用户项目目录。

工作空间结构

skills/make_latex_model/workspace/{project_name}/
├── baseline/          # Word PDF 基准文件
│   ├── word.pdf
│   ├── word_analysis.json
│   └── quality_report.json
├── iterations/        # 迭代历史记录
│   ├── iteration_001/
│   │   ├── main.pdf
│   │   ├── config.tex
│   │   └── metrics.json
│   └── iteration_002/
├── reports/           # 生成的报告
│   ├── diff_report.html
│   └── optimization_report.html
├── backup/            # 备份文件
│   └── main_*.tex.bak
└── cache/             # 缓存文件
    └── pdf_renders/

路径管理

所有脚本统一使用 WorkspaceManager 获取路径:

from core.workspace_manager import WorkspaceManager

ws_manager = WorkspaceManager()
baseline_dir = ws_manager.get_baseline_path("NSFC_Young")
report_path = ws_manager.get_reports_path("NSFC_Young")

清理策略

  • 缓存文件默认保留 24 小时
  • 迭代历史默认保留最近 10 轮
  • 可通过 config.yamlworkspace 节配置清理策略

触发条件

用户在以下场景触发本技能:

  • NSFC 发布了新的年度 Word 模板
  • 当前 LaTeX 模板与 Word 模板存在明显样式差异
  • 用户主动要求"对齐 Word 样式""更新模板格式"

输入参数

参数类型必需说明
projectstring项目名称(如 NSFC_YoungNSFC_General
word_template_yearstringWord 模板年份(如 2025
optimization_levelstring优化级别:minimal(最小改动)|moderate(中等)|thorough(彻底),默认 moderate
dry_runboolean预览模式,不实际修改文件,默认 false

执行流程

步骤 0:预检查(AI 必须首先执行)

AI 在开始任何优化工作前,必须先执行状态检查

python3 skills/make_latex_model/scripts/check_state.py projects/{project}

根据状态报告决定后续行动:

  • 如果 has_baseline=false:提示用户先生成 Word PDF
  • 如果 compilation_status=failed:先修复编译错误
  • 如果 baseline_source=quicklook:调整像素对比权重

AI 决策点 1:是否需要修改样式?

输入数据:

  • *_analysis.json: Word PDF 分析结果
  • extraTex/@config.tex: 当前样式配置
  • config.yaml: 容忍度配置

判断逻辑:

# 伪代码
for 参数 in ["行距", "字号", "颜色", "边距"]:
    word_value = analysis[参数]
    latex_value = extract_from_config(config_tex)
    diff = abs(word_value - latex_value)
    tolerance = config["validation"]["tolerance"][参数]

    if diff > tolerance:
        需要修改 = True
        修改清单.append({
            "参数": 参数,
            "当前值": latex_value,
            "目标值": word_value,
            "差

...
Read full content

Repository Stats

Stars720
Forks88
LicenseMIT License