在下面的文件中:
\documentclass{report}
\usepackage{tikz}
\begin{document}
This is a test.
\end{document}
注释和取消{tikz}
注释条目会更改生成的 PDF 文件。由于未使用 tikz —— PDF 文件会以哪些方式更改?
答案1
长话短说,有两个区别:
颜色由默认颜色改为明确的黑色;
纸张尺寸从 TeX 分发设置的默认尺寸更改为信纸。
发生变化的一件事是 PDF 元数据,其中包含生成日期和使用该信息生成的唯一 ID。您可以使用 (参考):
\pdfinfoomitdate=1
\pdfsuppressptexinfo=-1
\pdftrailerid{}
(假设您正在使用pdfTeX)。
也就是说,您可以禁用压缩以使 PDF 易于阅读(或尽可能接近):
\pdfcompresslevel=0
\pdfobjcompresslevel=0
然后pdflatex
在两个文件上运行diff
它们:
$ diff -a notikz.pdf tikz.pdf
3c3
< 3 0 obj
---
> 6 0 obj
5c5
< /Length 103
---
> /Length 144
7a8,10
> 0 g 0 G
> 0 g 0 G
> 0 g 0 G
9c12,15
< /F8 9.9626 Tf 148.712 707.125 Td [(This)-333(is)-334(a)-333(test.)]TJ 154.421 -567.87 Td [(1)]TJ
---
> /F8 9.9626 Tf 148.712 657.235 Td [(This)-333(is)-334(a)-333(test.)]TJ
> 0 g 0 G
> 154.421 -567.87 Td [(1)]TJ
> 0 g 0 G
14c20
< 2 0 obj
---
> 5 0 obj
17,20c23,26
< /Contents 3 0 R
< /Resources 1 0 R
< /MediaBox [0 0 595.276 841.89]
< /Parent 5 0 R
---
> /Contents 6 0 R
> /Resources 4 0 R
> /MediaBox [0 0 612 792]
> /Parent 8 0 R
23c29
< 1 0 obj
---
> 4 0 obj
25c31,32
< /Font << /F8 4 0 R >>
---
> /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R
> /Font << /F8 7 0 R >>
29c36,45
< 6 0 obj
---
> 1 0 obj
> <<>>
> endobj
> 2 0 obj
> <<>>
> endobj
> 3 0 obj
> << /pgfprgb [/Pattern /DeviceRGB] >>
> endobj
> 9 0 obj
32c48
< 7 0 obj
---
> 10 0 obj
128c144
< 8 0 obj
---
> 11 0 obj
141c157
< /FontFile 7 0 R
---
> /FontFile 10 0 R
144c160
< 4 0 obj
---
> 7 0 obj
149c165
< /FontDescriptor 8 0 R
---
> /FontDescriptor 11 0 R
152c168
< /Widths 6 0 R
---
> /Widths 9 0 R
155c171
< 5 0 obj
---
> 8 0 obj
159c175
< /Kids [2 0 R]
---
> /Kids [5 0 R]
162c178
< 9 0 obj
---
> 12 0 obj
165c181
< /Pages 5 0 R
---
> /Pages 8 0 R
168c184
< 10 0 obj
---
> 13 0 obj
176c192
< 0 11
---
> 0 14
178,179c194,198
< 0000000287 00000 n
< 0000000176 00000 n
---
> 0000000440 00000 n
> 0000000460 00000 n
> 0000000480 00000 n
> 0000000321 00000 n
> 0000000217 00000 n
181,187c200,206
< 0000011782 00000 n
< 0000011919 00000 n
< 0000000354 00000 n
< 0000000750 00000 n
< 0000011544 00000 n
< 0000011976 00000 n
< 0000012025 00000 n
---
> 0000011964 00000 n
> 0000012102 00000 n
> 0000000533 00000 n
> 0000000929 00000 n
> 0000011724 00000 n
> 0000012159 00000 n
> 0000012209 00000 n
189,191c208,210
< << /Size 11
< /Root 9 0 R
< /Info 10 0 R
---
> << /Size 14
> /Root 12 0 R
> /Info 13 0 R
194c213
< 12105
---
> 12289
看上去很多,其实相关的改动就那么几点,上面大部分都是对PDF对象的地址改动,比如第一个区别:
3c3
< 3 0 obj
---
> 6 0 obj
表示差异在于一个对象原来是编号的3
,现在被编号了6
。稍后对该对象的引用也会发生变化(已编辑):
17,20c23,26
< /Contents 3 0 R
---
> /Contents 6 0 R
而且,最后,由于文件已经改变,文件中对象的地址(以字节为单位的偏移量)也会改变。
唯一相关的变化有三处:
7a8,10
> 0 g 0 G
> 0 g 0 G
> 0 g 0 G
9c12,15
< /F8 9.9626 Tf 148.712 707.125 Td [(This)-333(is)-334(a)-333(test.)]TJ 154.421 -567.87 Td [(1)]TJ
---
> /F8 9.9626 Tf 148.712 657.235 Td [(This)-333(is)-334(a)-333(test.)]TJ
> 0 g 0 G
> 154.421 -567.87 Td [(1)]TJ
> 0 g 0 G
17,20c23,26
< /Contents 3 0 R
< /Resources 1 0 R
< /MediaBox [0 0 595.276 841.89]
< /Parent 5 0 R
---
> /Contents 6 0 R
> /Resources 4 0 R
> /MediaBox [0 0 612 792]
> /Parent 8 0 R
25c31,32
< /Font << /F8 4 0 R >>
---
> /ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R
> /Font << /F8 7 0 R >>
第一个是你实际打印的文本。没有的流tikz
是:
stream
BT
/F8 9.9626 Tf 148.712 707.125 Td [(This)-333(is)-334(a)-333(test.)]TJ 154.421 -567.87 Td [(1)]TJ
ET
endstream
并随之tikz
变成:
stream
0 g 0 G
0 g 0 G
0 g 0 G
BT
/F8 9.9626 Tf 148.712 657.235 Td [(This)-333(is)-334(a)-333(test.)]TJ
0 g 0 G
154.421 -567.87 Td [(1)]TJ
0 g 0 G
ET
endstream
这0 g 0 G
是插入 PDF 中的颜色规范。这些更改实际上是由颜色驱动程序插入的,如果您愿意,您可以看到它们\usepackage{color}
。它们明确表示文本是黑色,而不是默认颜色(也是黑色 :)。
第三个区别也与颜色驱动程序有关,它为加载的字体添加了颜色信息:
/ColorSpace 3 0 R /Pattern 2 0 R /ExtGState 1 0 R
(还记得对象编号 3 变为 6 吗?该语句指向新的对象编号 3)。
最后,第二部分与显卡驱动有关:
17,20c23,26
< /Contents 3 0 R
< /Resources 1 0 R
< /MediaBox [0 0 595.276 841.89]
< /Parent 5 0 R
---
> /Contents 6 0 R
> /Resources 4 0 R
> /MediaBox [0 0 612 792]
> /Parent 8 0 R
除了对象引用之外,它还改变了 的值/MediaBox
,也就是纸张大小。当您将\usepackage{graphics}
纸张大小从默认大小(取决于您的 TeX 发行版的设置方式)更改为信纸时。