mcpField
A
arxiv-figures

arxiv-figures

github.com/mathews-tom文档处理33740 次安装2 天前更新
代码仓库

关于 arxiv-figures

arxiv-figures 是面向 TeX/LaTeX 项目的图像检查与优化技能,适合准备 arXiv 投稿的作者。它根据处理器和图像内容检查格式、尺寸及分辨率,并验证优化后的编译效果。

主要功能

  1. 01扫描并登记图像文件
  2. 02检查处理器格式兼容性
  3. 03识别尺寸与分辨率问题
  4. 04转换并压缩图像
  5. 05检查编译及视觉输出

适用场景

  1. 01修复不兼容的图像格式
  2. 02减少投稿图像的文件体积
  3. 03检查缺失或超大图像
  4. 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. 分析

对每张图片进行判断:

  1. 格式合规性 — 格式是否与处理器匹配?
  2. 文件大小 — 标记单张超过 2MB、总大小超过 15MB 的图片
  3. 分辨率 — PNG/JPEG:标记超过 34 百万像素的图片(自 2026 年 2 月起的 arXiv 警告阈值)
  4. 内容类型 — 照片、示意图还是图表(用于确定最佳格式)
  5. 冗余元数据 — PNG:ICC 配置文件、Alpha 通道、EXIF、交错
  6. 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 源文件

如果图片已重命名或转换格式:

  1. 更新 \includegraphics 路径
  2. 尽可能移除显式扩展名(以便处理器灵活选择)
  3. 如果使用了 \graphicspath 设置,请进行验证
5. 验证

优化后:

  1. 尝试本地编译,确认所有图片均能正常呈现
  2. 比较优化后图片与原始图片的视觉效果
  3. 报告每张图片及全部图片的体积缩减情况
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 优化与转换
epstopdfTeX LiveEPS → PDF 转换
pdfcropTeX Live裁剪 PDF 空白区域
optipng系统软件包PNG 无损优化
pngquant系统软件包PNG 有损缩小体积
jpegoptim系统软件包JPEG 无损优化

核心原则

  • 绝不将视觉质量降到打印可读标准以下。 优化意味着去除冗余(元数据、不必要的分辨率、冗长的编码),而不是破坏信息。
  • 格式要与处理程序匹配。 图表格式错误会导致编译失败。这是优先级最高的修复项。
  • 尽可能保留矢量格式。 将矢量转换为栅格是不可逆的质量损失。仅当矢量版本异常庞大(>10MB)且无法精简时才这样做。
  • 报告所有内容。 由用户决定是否接受优化。显示优化前后的大小,并说明每项转换。

评论

支持 Markdown