xiaohongshu
xiaohongshu
make_latex_model
LaTeX 模板高保真优化器,支持任意 LaTeX 模板的样式参数对齐、标题文字对齐、标题格式对比(加粗)、HTML 可视化报告、LaTeX 自动修复建议和像素级 PDF 对比验证
Full skill instructions
@config.tex 的样式定义模式main.tex 的参考范围:
main.tex 中的 \section{}、\subsection{} 标题文本main.tex 中的 \input{} 引用的正文内容文件确保 LaTeX 渲染的 PDF 与 Word 版打印的 PDF 像素级对齐:
本技能采用**"硬编码工具 + AI 规划"**的混合模式:
以下步骤由 Python 脚本自动执行,无需 AI 干预:
| 步骤 | 脚本工具 | 输入 | 输出 |
|---|---|---|---|
| 状态检查 | scripts/check_state.py | 项目路径 | 状态报告 |
| PDF 样式分析 | scripts/analyze_pdf.py | Word PDF | *_analysis.json |
| 标题文字对比 | scripts/compare_headings.py | Word .docx + LaTeX | 对比报告 |
| 样式参数验证 | scripts/run_validators.py | 项目路径 | 验证报告 |
| 编译检查 | xelatex 命令 | .tex 文件 |
以下步骤需要 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 决策点的详细规范已整合到"第 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")
config.yaml 的 workspace 节配置清理策略用户在以下场景触发本技能:
| 参数 | 类型 | 必需 | 说明 |
|---|---|---|---|
project | string | 是 | 项目名称(如 NSFC_Young、NSFC_General) |
word_template_year | string | 是 | Word 模板年份(如 2025) |
optimization_level | string | 否 | 优化级别:minimal(最小改动)|moderate(中等)|thorough(彻底),默认 moderate |
dry_run | boolean | 否 | 预览模式,不实际修改文件,默认 false |
AI 在开始任何优化工作前,必须先执行状态检查:
python3 skills/make_latex_model/scripts/check_state.py projects/{project}
根据状态报告决定后续行动:
has_baseline=false:提示用户先生成 Word PDFcompilation_status=failed:先修复编译错误baseline_source=quicklook:调整像素对比权重输入数据:
*_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,
"差异": diff
})
输出格式:
| 参数 | 当前值 | 目标值 | 差异 | 容忍度 | 是否需修改 |
|------|--------|--------|------|--------|-----------|
| 行距 | 1.5 | 1.2 | 0.3 | 0.1 | ✅ 是 |
| MsBlue RGB | (0,112,190) | (0,112,192) | 2 | 2 | ⚠️ 边界 |
projects/{project}/extraTex/@config.tex,重点分析:
方案 0:用户已提供 PDF(最快)
如果用户已经从 Word 模板导出了 PDF 文件,直接使用即可:
# 复制用户提供的 PDF 到工作空间
cp /path/to/user/provided/word.pdf \
skills/make_latex_model/workspace/{project}/baseline/word.pdf
要求:
方案 1:LibreOffice 命令行自动转换(主推)
如果用户只有 Word 模板文件(.doc/.docx),使用 LibreOffice 自动转换:
# 自动检测并转换 Word 模板为 PDF
python3 skills/make_latex_model/scripts/generate_baseline.py \
--project NSFC_Young \
--template-year 2025
脚本会自动完成:
workspace/{project}/baseline/word.pdfpdftoppm)环境要求:
LibreOffice 安装:
# macOS
brew install --cask libreoffice
# Ubuntu/Debian
sudo apt-get install libreoffice
# Windows
# 从 https://www.libreoffice.org/ 下载安装
方案 2:Microsoft Word COM 自动化(Windows 仅)
如果在 Windows 环境且无法安装 LibreOffice,可使用 Microsoft Word COM 自动化(需 Python pywin32 库):
python3 skills/make_latex_model/scripts/generate_baseline.py \
--project NSFC_Young \
--template-year 2025 \
--use-msword
渲染质量说明:
| 渲染引擎 | 精度 | 自动化程度 | 推荐度 |
|---|---|---|---|
| 用户已提供 PDF | 取决于来源 | 零操作 | ⭐⭐⭐⭐⭐ |
| LibreOffice | 高(与 Word 99% 一致) | 完全自动化 | ⭐⭐⭐⭐⭐ |
| Microsoft Word COM | 最高(100% Word 原生) | 自动化(Windows 仅) | ⭐⭐⭐⭐ |
| QuickLook 预览 | 低(断行/行距有差异) | 自动化但不准确 | ⚠️ 不推荐 |
为什么不用 QuickLook:
使用 analyze_pdf.py 工具自动提取 Word PDF 的样式参数:
# 安装依赖(首次使用)
pip install PyMuPDF
# 分析 Word PDF 基准
python3 skills/make_latex_model/scripts/analyze_pdf.py \
projects/NSFC_Young/template/word_baseline.pdf
输出内容:
*_analysis.json,可用于后续对比输出示例:
============================================================
页面布局
============================================================
页面尺寸: 21.01 cm x 29.71 cm
边距:
左: 3.20 cm
右: 3.14 cm
上: 2.54 cm
下: 2.54 cm
============================================================
字体使用统计
============================================================
字体: TimesNewRomPSMT
使用次数: 245
字号: [12.0, 14.0, 15.0]
颜色 (RGB): [[0, 0, 0], [0, 112, 192]]
是否加粗: False
字体: KaiTi_GB2312
使用次数: 128
字号: [12.0, 15.0, 16.0]
颜色 (RGB): [[0, 0, 0], [0, 112, 192]]
是否加粗: True
============================================================
行距分析
============================================================
平均行距: 18.00 pt
详细分析结果已保存到: word_baseline_analysis.json
优势:
自动化工具:使用 compare_headings.py 自动对比标题文字
安装依赖(首次使用):
pip install python-docx
自动对比 Word 和 LaTeX 标题:
# 生成 HTML 可视化报告
python3 skills/make_latex_model/scripts/compare_headings.py \
projects/NSFC_Young/template/最新word模板-青年科学基金项目(C类)-正文.docx \
projects/NSFC_Young/main.tex \
--report heading_report.html
查看报告:
heading_report.html 查看可视化对比结果格式对比(加粗):
# 检查标题内的加粗格式是否一致
python3 skills/make_latex_model/scripts/compare_headings.py \
projects/NSFC_Young/template/最新word模板-青年科学基金项目(C类)-正文.docx \
projects/NSFC_Young/main.tex \
--check-format \
--report heading_format_report.txt
--check-format 参数可以检测 LaTeX 是否正确实现了加粗样式🎨 HTML 可视化报告:
# 生成包含格式对比的 HTML 报告
python3 skills/make_latex_model/scripts/compare_headings.py \
projects/NSFC_Young/template/最新word模板-青年科学基金项目(C类)-正文.docx \
projects/NSFC_Young/main.tex \
--check-format \
--report heading_format_report.html
<b> 标签高亮显示🔧 LaTeX 修复建议:
# 自动生成 LaTeX 修复代码
python3 skills/make_latex_model/scripts/compare_headings.py \
projects/NSFC_Young/template/最新word模板-青年科学基金项目(C类)-正文.docx \
projects/NSFC_Young/main.tex \
--check-format \
--fix-file heading_fix_suggestions.tex
\textbf{} 标记% LaTeX 标题格式修复建议
% section_1: (一)立项依据与研究内容
\section{\textbf{(一)立项依据}与研究内容}
自动转换 .doc 为 .docx(如需要):
# 脚本会自动检测并转换 .doc 格式
python3 skills/make_latex_model/scripts/compare_headings.py \
projects/NSFC_Young/template/最新word模板-青年科学基金项目(C类)-正文.doc \
projects/NSFC_Young/main.tex \
--auto-convert \
--report heading_report.html
手动验证(可选,用于调试):
--fix-file 参数自动生成修复代码minimal:仅修改明显错误的样式(如颜色值错误)moderate(默认):调整与 Word 不一致的样式,保持结构稳定thorough:重构样式系统,实现最大保真度输入: 修改清单(来自决策点 1)
AI 任务:
@config.tex 中的相关代码段输出示例:
% 修改行距:1.5 → 1.2
- \renewcommand{\baselinestretch}{1.5}
+ \renewcommand{\baselinestretch}{1.2}
% 修改 MsBlue 颜色
- \definecolor{MsBlue}{RGB}{0,112,190}
+ \definecolor{MsBlue}{RGB}{0,112,192}
约束条件:
\titleformat 中的字号(精度 0.1pt)、颜色、间距参数\geometry 中的边距值(精度 0.1mm)\newcommand 字号定义中的 pt 值\XeTeXinterchartokenstate、字间距、或字号 ±0.1pt\ifwindows)\newcommand 而非修改现有命令% 新增样式注释@config.tex(样式配置层):
main.tex 中的标题文本(⚠️ 仅限标题,不触碰正文内容):
\section{}、\subsection{})不变\input{extraTex/xxx.tex} 的引用关系extraTex/*.tex)工具: 使用 Edit 工具精确修改
流程:
@config.tex验证:
# 检查编译是否成功
cd projects/{project}
xelatex -interaction=nonstopmode main.tex
编译检查:
cd projects/{project}
xelatex -interaction=nonstopmode main.tex
自动化验证(推荐):
# 运行完整验证脚本(包括标题文字一致性检查)
cd skills/make_latex_model
./scripts/validate.sh
验证脚本会自动检查:
compare_headings.py 自动对比)像素级 PDF 对比验证:
pdftoppm + Pillow)微调与迭代(最多 3 轮):
compare_headings.py 报告修改 main.tex 中的标题./scripts/validate.sh 自动检查各项指标验收标准(优先级从高到低):
输入:
run_validators.py 输出)判断逻辑:
# 伪代码
优先级1_通过 = 编译成功 and 无警告
优先级2_通过 = 样式参数一致 and 标题文字一致
if 优先级1_通过 and 优先级2_通过:
返回 "完成"
elif 失败项减少:
返回 "方向正确,继续微调"
elif 失败项增加:
返回 "回滚修改,重新分析"
else:
返回 "保持现状,人工判断"
迭代策略:
本步骤实现全自动的"优化-对比-调整"循环,推荐在需要精细调整时使用。
# 全自动迭代优化
python3 skills/make_latex_model/scripts/enhanced_optimize.py \
--project NSFC_Young \
--max-iterations 10 \
--report
脚本会自动完成:
\input{} 行)预计耗时:5-15 分钟(取决于迭代轮数)
WHILE 未达到收敛条件:
1. 编译 LaTeX 项目(xelatex -> bibtex -> xelatex -> xelatex)
2. 执行像素级 PDF 对比(compare_pdf_pixels.py)
3. 检测是否收敛(convergence_detector.py)
4. IF 未收敛:
- 分析差异特征(intelligent_adjust.py)
- 生成参数调整方案
- 应用调整到 @config.tex(需 AI 介入)
5. 记录本轮指标
6. 保存或回滚配置
END WHILE
| 条件 | 阈值 | 说明 |
|---|---|---|
| 编译失败 | - | 立即停止,需人工修复 |
| 像素差异收敛 | changed_ratio < 0.03 | 达到像素级对齐 |
| 连续无改善 | 3 轮 | 指标不再优化,收敛 |
| 最大迭代 | 10 轮 | 强制停止 |
脚本 intelligent_adjust.py 根据差异特征自动推断参数调整:
| 差异特征 | 推断参数 | 调整策略 |
|---|---|---|
| 换行位置大面积差异 | 字间距/字号 | ±0.1pt |
| 文本垂直偏移 | 行距 | ±0.05 倍 |
| 颜色不一致 | RGB 值 | ±1 |
| 左右边距差异 | geometry | ±0.05cm |
| 标题位置偏移 | titleformat | 调整 spacing |
| 脚本 | 功能 |
|---|---|
enhanced_optimize.py | 一键迭代优化入口 |
prepare_main.py | 预处理/恢复 main.tex |
generate_baseline.py | 生成 Word PDF 基准 |
convergence_detector.py | 收敛检测与报告 |
intelligent_adjust.py | 智能参数调整建议 |
将变更记录有机地追加到 projects/{project}/extraTex/@CHANGELOG.md:
记录原则:
记录内容:
@config.tex)格式参考:
## [v1.0.1] - YYYY-MM-DD
### Changed(样式优化)
- **一级标题字号**:14pt → 15pt(Word 最新模板要求)
- **行距**:1.5 → 1.45(通过 PDF 叠加对比确定)
- **页边距**:调整上下边距为 2.54cm(与 Word 完全一致)
### Added(新增样式)
- 新增三级标题编号格式 1.1、1.2(Word 最新模板新增要求)
### Fixed(修复)
- 修复 MsBlue 颜色值误差(原 RGB 0,112,190 → 正确的 0,112,192)
对 @config.tex 进行精确修改,保留:
\ifwindows)main.tex📋 完整验证清单:参见第 6 节"验证清单(按优先级排序)"
快速验证(推荐):
cd skills/make_latex_model
./scripts/validate.sh
这将自动检查:
compare_headings.py)⚠️ 永不触碰 main.tex 中的正文段落内容
main.tex 中的 \input{extraTex/*.tex} 引用的正文内容文件extraTex/*.tex 文件中的用户撰写内容✅ 允许修改 main.tex 中的标题文本
\section{标题文字} 中的标题文字\subsection{标题文字} 中的标题文字⚠️ 边界示例:
% ✅ 允许修改:标题文字
\section{{\bfseries(一)立项依据与研究内容}(建议8000字以内):} % 修改为
\section{{\bfseries(一)研究依据与内容}(建议8000字以内):}
% ❌ 禁止修改:正文内容
\input{extraTex/1.1.立项依据.tex} % 不改变引用关系
% extraTex/1.1.立项依据.tex 中的具体内容不修改
moderate 级别thorough 级别\ifwindows 条件判断./fonts/)使用自动化验证脚本进行快速检查:
cd skills/make_latex_model
./scripts/validate.sh
这将自动检查:
运行性能基准测试,评估编译性能:
cd skills/make_latex_model
./scripts/benchmark.sh
这将输出:
xelatex -> bibtex -> xelatex -> xelatex 无错误extraTex/*.tex)无需修改即可使用@config.tex 顶部添加注释说明A: 本技能支持用户已提供 PDF 或自动生成
如果用户已经从 Word 模板导出了 PDF 文件,直接复制到工作空间即可:
# 复制用户提供的 PDF 到工作空间
cp /path/to/user/provided/word.pdf \
skills/make_latex_model/workspace/{project}/baseline/word.pdf
要求:
如果用户只有 Word 模板文件(.doc/.docx),使用 LibreOffice 自动转换:
# 一键生成 Word PDF 基准
python3 skills/make_latex_model/scripts/generate_baseline.py \
--project NSFC_Young \
--template-year 2025
脚本会自动完成:
环境准备:
# macOS
brew install --cask libreoffice poppler
# Ubuntu/Debian
sudo apt-get install libreoffice poppler-utils
python3 skills/make_latex_model/scripts/generate_baseline.py \
--project NSFC_Young \
--template-year 2025 \
--use-msword
| 渲染引擎 | 精度 | 自动化程度 | 推荐度 |
|---|---|---|---|
| 用户已提供 PDF | 取决于来源 | 零操作 | ⭐⭐⭐⭐⭐ |
| LibreOffice | 高(与 Word 99% 一致) | 完全自动化 | ⭐⭐⭐⭐⭐ |
| Microsoft Word COM | 最高(100% Word 原生) | 自动化(Windows 仅) | ⭐⭐⭐⭐ |
| QuickLook 预览 | 低(断行/行距有差异) | 自动化但不准确 | ⚠️ 不推荐 |
问题场景:修改行距从 1.8 倍 → 1.2 倍(更接近 Word 模板)
原因分析:
正确判断:
行动建议:
A: 能。本技能仅修改样式定义(@config.tex),不改变内容文件的接口。
A: 参考以下标准:
A:
@config.tex 中添加必要的样式定义main.tex 或 extraTex/*.tex 中添加新章节xiaohongshu
technical spec
product ux expert
database patterns
Conduct multi-agent task orchestration and workflow coordination.
Initialize project with Conductor artifacts (product definition,
Expert in web animations, transitions, and motion design using Framer Motion and CSS
Creates Mermaid and ASCII diagrams for flowcharts, architecture, ERDs, state machines, mindmaps, and more. Use when user mentions diagram, flowchart, mermaid, ASCII diagram, text diagram, terminal diagram, visualize, C4, mindmap, architecture diagram, sequence diagram, ERD, or needs visual docume...
PostgreSQL bindings for H3 hexagonal grid system. Use when working with H3 cells in Postgres, including spatial indexing, geometry/geography integration, and raster analysis.
Context-Driven Development skill for projects using Conductor. Use this skill when you detect a `conductor/` directory in the project, when working on tasks defined in a `plan.md` file, or when the user asks about tracks, specs, or plans. Automatically applies TDD workflow, tracks task completion...
Display project status, active tracks, and next actions
Official Stakpak application containerization standard operating procedure, a step-by-step guidline to properly dockerize applications. This is a rule book curated by the Stakpak Team.
Generate, edit, and beat-sync AI video with leading models in one workspace.
The world's fastest calendar for remote work
Transform Your Design with AI Designer by ImgCreator.ai
Revolutionizing Video Production with AI-Powered Creativity
Extend an image past the frame and let AI fill the new aspect ratio.
Discover your celebrity doppelgänger with StarByFace!
ChainClarity explains 700+ crypto whitepapers in plain English, with layered summaries, comparisons, research tools, alerts, and a $4.99 Pro plan.
Opus.ai: Revolutionize Your Web Experience