关于 arxiv-figures
arxiv-figures 是面向 TeX/LaTeX 项目的图像检查与优化技能,适合准备 arXiv 投稿的作者。它根据处理器和图像内容检查格式、尺寸及分辨率,并验证优化后的编译效果。
主要功能
- 01扫描并登记图像文件
- 02检查处理器格式兼容性
- 03识别尺寸与分辨率问题
- 04转换并压缩图像
- 05检查编译及视觉输出
适用场景
- 01修复不兼容的图像格式
- 02减少投稿图像的文件体积
- 03检查缺失或超大图像
- 04优化后验证论文编译
安装
复制下面的命令,在终端中运行。
$
npx skills add https:/ / github.com/ mathews-tom/ armory --skill arxiv-figures安装后在 Claude Code 中输入/arxiv-figures确认已加载。
附带文件evals/cases.yaml
详细介绍
arXiv 图优化器
用途
分析、优化并转换 TeX/LaTeX 项目中的图片,以满足 arXiv 的要求和大小限制。生成格式正确、压缩高效且可无错误编译的图片。
配套技能:
arxiv-preflight— 全面验证投稿内容arxiv-package— 打包 tarball
格式规则
按处理器分类
| 处理器 | 接受格式 | 不接受格式 |
|---|---|---|
| LaTeX(DVI 模式) | .ps、.eps | .pdf、.png、.jpg |
| PDFLaTeX | .pdf、.png、.jpg | .ps、.eps |
按内容类型分类
| 内容 | 最佳格式 | 理由 |
|---|---|---|
| 照片 | JPEG | 有损压缩适合连续色调 |
| 线稿/示意图 | PDF(矢量) | 可缩放,任何分辨率下都清晰 |
| 带文本标签的图表 | PDF(矢量) | 文本保持清晰且可搜索 |
| 屏幕截图/光栅图 | PNG | 无损压缩可保留清晰边缘 |
| 照片与文本混合 | PNG 或 PDF | 视主要内容而定 |
工作流
1. 清点
扫描项目中的所有图片:
- 从所有
.tex文件中解析\includegraphics调用 - 根据文档导言区或构建配置,识别 TeX 处理器(DVI 或 PDFLaTeX)
- 对每张图片记录路径、格式、文件大小、尺寸(像素或矢量边界)
- 标记缺失图片、格式错误的图片和过大的图片
2. 分析
对每张图片进行判断:
- 格式合规性 — 格式是否与处理器匹配?
- 文件大小 — 标记单张超过 2MB、总大小超过 15MB 的图片
- 分辨率 — PNG/JPEG:标记超过 34 百万像素的图片(自 2026 年 2 月起的 arXiv 警告阈值)
- 内容类型 — 照片、示意图还是图表(用于确定最佳格式)
- 冗余元数据 — PNG:ICC 配置文件、Alpha 通道、EXIF、交错
- EPS 效率 — 绘图程序生成的冗长 PostScript(matplotlib、R、MATLAB 中较常见)
3. 优化
按影响程度依次应用转换:
格式转换(格式不符合处理器要求时)
# EPS → PDF (for PDFLaTeX)
epstopdf figure.eps
# or
ps2pdf -dEPSCrop figure.eps figure.pdf
# PDF/PNG/JPG → EPS (for DVI mode)
convert figure.png figure.eps
缩小体积 — 矢量图片
# Distill verbose EPS
eps2eps input.eps output.eps
# or convert to PDF
ps2pdf -dEPSCrop input.eps output.pdf
缩小体积 — 光栅图片
# Strip PNG metadata, remove alpha, optimize compression
convert input.png -strip -alpha remove -define png:compression-level=9 output.png
# Reduce oversized PNG resolution (keep ≤300 DPI at print size)
convert input.png -resize 3000x3000\> -strip output.png
# JPEG quality optimization (80-90 is visually lossless for most content)
convert input.jpg -quality 85 -strip output.jpg
# Downsample oversized JPEG
convert input.jpg -resize 3000x3000\> -quality 85 -strip output.jpg
PNG 优化(避免 arXiv 警告)
- 如无必要,移除调色板索引
- 背景为纯色时,移除 Alpha 通道
- 去除 ICC 色彩配置文件
- 移除元数据块
- 禁用交错
EPS 边界框修复(避免出现 Missing number, treated as zero)
- 确认
%%BoundingBox出现在文件开头附近,而不只是在末尾 - 如果文件中只有
%%BoundingBox: (atend),提取实际值并放到文件开头
4. 更新 TeX 源文件
如果图片已重命名或转换格式:
- 更新
\includegraphics路径 - 尽可能移除显式扩展名(以便处理器灵活选择)
- 如果使用了
\graphicspath设置,请进行验证
5. 验证
优化后:
- 尝试本地编译,确认所有图片均能正常呈现
- 比较优化后图片与原始图片的视觉效果
- 报告每张图片及全部图片的体积缩减情况
6. 报告
# Figure Optimization Report
**Processor:** [detected]
**Total figures:** [count]
**Size before:** [total MB]
**Size after:** [total MB]
**Reduction:** [percentage]
## Changes Made
| Figure | Original | Optimized | Size Before | Size After | Action |
|--------|----------|-----------|-------------|------------|--------|
| fig1 | fig1.eps | fig1.pdf | 12.3 MB | 0.4 MB | EPS→PDF conversion |
| fig2 | fig2.png | fig2.png | 8.1 MB | 1.2 MB | Strip metadata, downsample |
## Warnings
[Any remaining issues — e.g., figures still above thresholds]
工具参考
| 工具 | 安装方式 | 使用场景 |
|---|---|---|
ImageMagick(convert) | 系统软件包 | 格式转换、调整大小、去除数据 |
Ghostscript(ps2pdf、eps2eps) | 系统软件包 | EPS/PS 优化与转换 |
epstopdf | TeX Live | EPS → PDF 转换 |
pdfcrop | TeX Live | 裁剪 PDF 空白区域 |
optipng | 系统软件包 | PNG 无损优化 |
pngquant | 系统软件包 | PNG 有损缩小体积 |
jpegoptim | 系统软件包 | JPEG 无损优化 |
核心原则
- 绝不将视觉质量降到打印可读标准以下。 优化意味着去除冗余(元数据、不必要的分辨率、冗长的编码),而不是破坏信息。
- 格式要与处理程序匹配。 图表格式错误会导致编译失败。这是优先级最高的修复项。
- 尽可能保留矢量格式。 将矢量转换为栅格是不可逆的质量损失。仅当矢量版本异常庞大(>10MB)且无法精简时才这样做。
- 报告所有内容。 由用户决定是否接受优化。显示优化前后的大小,并说明每项转换。
评论
支持 Markdown