过大的稿件
我们向 arXiv 提交论文预印本时,有时候在上传了所有文件后会出现一行提示:您的一个文件或多个文件大小的总和过大。这时,虽然可以继续正常地提交并预览生成的 arXiv 相关帮助文件 所说,绝大多数文件过大的问题,往往是少数巨大的图形文件导致。这可以理解成“二八定律”的一种体现:在超大的投稿文件包中,约 20% 的图形占去了近 80% 的空间。这意味着我们往往只需要找出这些超大图形,并想办法缩小它们即可。arXiv 自身的说明文档提供了一些参考,这里则是讲讲我们自己的经验。
我们最需要注意的一个问题就是:某些“照相”而非矢量性质的图片,以过高的分辨率,甚至是原始分辨率,保存成了 ghostscript 这一工具来实现的方法:
gs -dBATCH -dNOPAUSE -q \ # 减少 gs 信息输出 -sOutputFile=output.jpg \ # 导出文件的路径 -sDEVICE=jpeg -dJPEGQ=95 -r120x120 \ # JPEG 配置选项 -dEPSCrop \ # 用 EPS BoundingBox 截幅 input.eps # 输入文件名
重要的部分是 -sDEVICE=jpeg -dJPEGQ=95 -r120x120 这一行,我们解释一下:
-sDEVICE=jpeg: 告诉 Ghostscript 选中 JPEG 导出功能。
-dJPEGQ=95: 选择 JPEG Quality (画质)参数,在 0 到 100 之间(以 95 为例)。画质越高,压缩程度越小,损失越小,但文件越大。选择过小将严重损害图像的质量。
-r120x120: 选择将矢量图点阵化时的分辨率为 120 DPI. 分辨率越高,相应的文件也越大。分辨率以适应屏幕显示和普通打印机简易打印为好,一般不需要超过 300, 经验表明 100 左右够用。纵横方向上 DPI 最好一样,否则图像会变形。
请注意不要漏掉了 -dEPSCrop 选项,这样输出的结果才能根据 EPS 文件头里的 BoundingBox 元数据确定画幅。否则,输出的图像画幅将正比于默认的纸张大小(通常是 A4 或 Letter),在页面四周留下无用的白边。
导出后,可以查看一下生成的图像画幅、文件大小、画质是否满意,否则可以微调上述几个参数。如果图像有白边,说明输入图像可能有 bug. 最常见的 bug 是某些程序生成 EPS 时没有正确地声明文件类型。这是,请用文本编辑器打开这个文件,看看文件头几行是否有类似
%!PS-Adobe-3.0 EPSF-3.0 %%BoundingBox: 42 170 467 510 %%LanguageLevel: 1
的部分(具体位置可以有些差别)。如果定义文件类型的第一行 shebang line 缺少 EPSF-x.y 的结尾(具体版本号 x.y 可能各异),Ghostscript 将不能认为这是 EPS 文件,从而忽略 BoundingBox. 这时候可以在文本编辑器里参考前面的 ImageMagick 完成。
例如,下面的命令可以将 JPEG 文件输出为 Level 2 EPS: (注意:新版本命令改为了:magick )
convert input.jpg eps2:output.eps
注意到,我们指定输出文件名时,在前面加上了指定的文件格式 eps2, 和文件名用一个冒号 (:) 隔开。如果不指明 EPS 版本等级是 eps2(即 Level 2 EPS),默认输出的是我们不想要的 Level 1 版本。
当然,我们也可以生成 Level 3 EPS 文件,只需要把格式从 eps2 换成 eps3 即可。如果担心兼容性,Level 2 是更好的选择。
方法二:使用 PDFLaTeX 直接插入 JPEG 图片
另一种办法是直接在投稿文件的 LaTeX 源码中使用刚才生成的 JPEG 图像。为了做到这一点,需要告诉 arXiv 后台的服务器开启 PDFLaTeX 支持。PDFLaTeX 支持的图像类型包括 JPEG, PNG 和 PDF. 为此,我们需要检查一下,文章中用到的所有图像是否都已经是这三种格式之一。既然我们已经将点阵图转化成了 JPEG 格式,剩下的就是考虑矢量图了。而矢量图更适合保存为 PDF 这样的矢量格式。对于 EPS 格式的矢量图,我们还可以用 Ghostscript 附带的 ps2pdf 工具转换一下:
ps2pdf -dEPSCrop input.eps output.pdf
进行这一步时仍然要注意查看所生成的 PDF 文件纸张大小是否遵从 EPS BoundingBox, 页面四周是否出现过多白边。如果有,则需要像之前所说那样,改动输入的 “EPS” 文件。
ps2pdf 可以接受 Ghostscript 的各种选项,因此如果有需要的话可以通过这些选项进行字体嵌入、RGB 到 CMYK 颜色空间转换等高级操作,这里就不一一介绍了。
另外值得说明的是,PNG 格式对某些类型的图形可能更适合。PNG 本身是一种点阵格式,但其算法适合保存以明锐边沿、几何形状为主的图像。例如,用灰度不同的格子方阵展示某个相关矩阵的构型,可以考虑 PNG 点阵图。
准备好了 PDFLaTeX 用的图像文件,就可以在正文中插入了。这只需要和往常一样,使用 LaTeX graphicx 包的 \includegraphics 宏指令即可:
\begin{figure} \caption{...} \label{...} \includegraphics[...]{filename.jpg/png/pdf} \end{figure}
最后,为了让 arXiv 后台的 LaTeX 处理程序默认调用 PDFLaTeX, 需要在主文件的前 5 行内加上一句指令:
\pdfoutput=1
矢量图和点阵图:背景介绍
论文中出现的图形,大致可以分为两种用途:一种是“可视化” (visualization), 用于将抽象的数据和理论测算、预言等,用几何的散点、线条、区块和文字注记等“要素” (elements) 加以呈现,以解释某个观点;另一种是“照相” (photograph), 用于写实地反映某些对象(如天体)以供读者观察,获取直观印象。两者用途不同决定了特点不同:前者适合描述为留白的背景之上放置的各类“要素”——每个要素不再可分割,而非排列成 M × N 格点阵的一组像素 (pixels); 后者则适合描述为像素的集合,像素之间除了“相邻”不再有别的逻辑关系。换句话说,前者适合保存为矢量图 (vector graphics), 后者适合保存为点阵图 (raster graphics).
这幅可视化图形是若干几何要素(线条、区块和文字等)的组合,它适合用矢量格式保存,如 EPS, PDF 或者 SVG.
这张 M31 星系的照片是像素组成的阵列。保存这类图像最好使用点阵格式文件,如 JPEG. (原图作者 Adam Evans, 有所裁切、旋转)
明白了这个,也就明白了为什么我们通常用 EPS 或 PDF 这样的矢量格式文件保存可视化图表。我们的图表本身“分辨率”是无限的,它们是纯几何形状。保存它的文件应该包含的是构造这些形状的指令(因此文件本身往往不大),而阅读器、打印机之类,做的事情就是按照这些指令尽量无损地在屏幕或者纸张上“渲染” (render) 出可供我们目视的点阵图。通常情况下,论文中这类图形居多,所以 EPS 等格式在科研一族中如此流行。
这种流行的一个副产物是,我们偶尔需要插入点阵图,比如某个天体的照相时,也会出于惯性保存为 EPS 等格式。这种惯性甚至都不来自我们自身——标准的 latex 程序很难接受其他格式的文件。问题在于,用矢量格式文件保存点阵图是极端低效的。此种低效的一个来源在于,点阵图中往往天然存在较高的冗余度 (redundancy). 当我们把“原始”的点阵图直接输出成 EPS(特别是 Level 1 EPS)等矢量格式的文件时,我们实际上是在保存一组“无比复杂”、几乎逐点进行的图形构造指令。这种指令本身不能提高图形固有的信息量,其复杂性对我们大脑阅读图像也毫无用处,徒增存储空间。
特别是,我们的正式投稿文件可能还多多少少需要接近“原始”的点阵图,以便出版过程中各项处理的使用。而投到 arXiv 上的预印本如果只是供读者较方便地“看看”,那么未压缩的原始无损点阵图就没什么存在的意义了,这时将其有损压缩很是划得来。
最后,如果你的文件过大的原因不是这里讲的这些,而是是因为用点阵格式保存了本应该用矢量格式保存的图表,那么请为它们立刻重新创制矢量图,而不是微调已有的点阵图。这里说的点阵图调整,仅限于图像是“照相”类的情况。
选自:https://cma.lamost.org/2014/downsizing-oversized-arxiv-submissions
发表评论 取消回复