加载但不使用 TikZ 会更改文件

加载但不使用 TikZ 会更改文件

在下面的文件中:

\documentclass{report}

\usepackage{tikz}

\begin{document}
 This is a test.
\end{document}

注释和取消{tikz}注释条目会更改生成的 PDF 文件。由于未使用 tikz —— PDF 文件会以哪些方式更改?

答案1

长话短说,有两个区别:

  1. 颜色由默认颜色改为明确的黑色;

  2. 纸张尺寸从 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 发行版的设置方式)更改为信纸时。

相关内容