为什么仅仅包含包颜色就会改变页面大小,以及如何确定包颜色是否真正被使用?

为什么仅仅包含包颜色就会改变页面大小,以及如何确定包颜色是否真正被使用?

假设一个系统,其中 A4 是默认纸张尺寸,输入

\documentclass{article}
\usepackage{color}% take it or leave it
\begin{document}
test
\end{document}

使用 时\usepackage{color},运行latex+ dvipdf(使用默认选项) 或lualatexpdflatex都会产生一个信纸大小的 PDF 文件(如 所报告的pdfinfo),而如果没有\usepackage{color},PDF 输出将保持在 A4 大小(同样,如 所报告的pdfinfo)。

  1. 为什么页面尺寸会改变?直观地说,添加颜色支持不应该让页面尺寸保持不变吗?

为了确定color在较长的非最小文档中是否确实需要(例如,15 页的 LLNCS 类,如果不花几个小时甚至几天的时间,您就无法理解),我们决定按color需要格式化文档,并尽可能强制执行字母大小。对于我们的最小示例,我们运行mwe.tex包含

\documentclass[letterpaper]{article}
\usepackage{color}% take it or leave it
\begin{document}
test
\end{document}

latex main && latex main && dvips -t letter -Ppdf -q -f main.dvi | gs -q -P- -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sstdout=%stderr -sOutputFile=main.pdf -sPAPERSIZE=letter -。唉,结果的比较令人警醒:

输出

diffpdf说有区别(在更大的文档中,有区别到处),但您看不到任何差别。也许,在低分辨率下,colored 版本可能比非colored 版本稍微灰一点,但您无法真正分辨出来,而且即使存在这种微小的差异,对您来说也无关紧要。

在您询问之前:我们尝试了[a4paper](而不是[letterpaper])和latex main && latex main && dvips -t a4 -Ppdf -q -f main.dvi | gs -q -P- -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sstdout=%stderr -sOutputFile=main.pdf -sPAPERSIZE=a4 -。结果是一样的:diffpdf报告差异,而我们没有看到任何差异(或任何重要的差异)。

  1. 您如何确定使用该包是否color确实会产生明显的可见差异?

编辑:按照 David 的建议,我们latex继续

\documentclass[a4paper]{article}
\usepackage[nosetpagesize]{color}% take it or leave it
\showoutput
\begin{document}
test
\end{document}

并得到

Completed box being shipped out [1]
\vbox(682.0+0.0)x398.0
.\hbox(0.0+0.0)x0.0
..\special{header=l3backend-dvips.pro}
.\glue 17.0
.\vbox(665.0+0.0)x345.0, shifted 53.0
..\vbox(12.0+0.0)x345.0, glue set 12.0fil
...\glue 0.0 plus 1.0fil
...\hbox(0.0+0.0)x345.0
....\special{color push  Black}
....\hbox(0.0+0.0)x345.0
....\special{color pop}
..\glue 25.0
..\glue(\lineskip) 0.0
..\vbox(598.0+0.0)x345.0, glue set 587.9372fil
...\write-{}
...\glue(\topskip) 3.84921
...\hbox(6.15079+0.0)x345.0, glue set 313.83331fil
....\hbox(0.0+0.0)x15.0
....\OT1/cmr/m/n/10 t
....\OT1/cmr/m/n/10 e
....\OT1/cmr/m/n/10 s
....\OT1/cmr/m/n/10 t
....\penalty 10000
....\glue(\parfillskip) 0.0 plus 1.0fil
....\glue(\rightskip) 0.0
...\glue 0.0 plus 1.0fil
...\glue 0.0
...\glue 0.0 plus 0.0001fil
..\glue(\baselineskip) 23.55556
..\hbox(6.44444+0.0)x345.0
...\special{color push  Black}
...\hbox(6.44444+0.0)x345.0, glue set 170.0fil
....\glue 0.0 plus 1.0fil
....\OT1/cmr/m/n/10 1
....\glue 0.0 plus 1.0fil
...\special{color pop}
.\kern 0.0

差异 (左侧有color,右侧无) 如下:

(/usr/share/texlive/texmf-dist/tex/latex/graphics/color.sty        <
(/usr/share/texlive/texmf-dist/tex/latex/graphics-cfg/color.cfg)   <
(/usr/share/texlive/texmf-dist/tex/latex/graphics-def/dvips.def)   <
(/usr/share/texlive/texmf-dist/tex/latex/graphics/dvipsnam.def))   <
....\special{color push  Black}                                    <
....\special{color pop}                                            <
...\special{color push  Black}                                     <
...\special{color pop}                                             <
Output written on main.dvi (1 page, 332 bytes).                    |    Output written on main.dvi (1 page, 248 bytes).

这些\special命令会以某种方式影响文本吗?我们不知道 Postscript,所以我们无法判断……

相关内容