我用来SOURCE_DATE_EPOCH=0 FORCE_SOURCE_DATE=1 xelatex test
创建可复制的 PDF 文件。
因为我想了解一些细节,所以我test.tex
用解压缩来写。
%\DocumentMetadata{uncompress}
\documentclass[a4paper]{article}
\special{dvipdfmx:config z 0}
\begin{document}
test
\end{document}
当然,我不喜欢使用xelatex
特定命令\special{dvipdfmx:config z 0}
来避免压缩。一切正常,显示差异,编译两次时结果相同。
如果我\special
用更通用的命令替换该命令\DocumentMetadata
,则会出现差异
$ diff -a test.pdf testX.pdf
220c220
< <rdf:li>2023-12-06T21:36:39Z</rdf:li>
---
> <rdf:li>2023-12-06T21:36:32Z</rdf:li>
226,228c226,228
< <xmp:CreateDate>2023-12-06T21:36:39Z</xmp:CreateDate>
< <xmp:ModifyDate>2023-12-06T21:36:39Z</xmp:ModifyDate>
< <xmp:MetadataDate>2023-12-06T21:36:39Z</xmp:MetadataDate>
---
> <xmp:CreateDate>2023-12-06T21:36:32Z</xmp:CreateDate>
> <xmp:ModifyDate>2023-12-06T21:36:32Z</xmp:ModifyDate>
> <xmp:MetadataDate>2023-12-06T21:36:32Z</xmp:MetadataDate>
230c230
< <xmpMM:InstanceID>uuid:70381c59-1666-4bc2-80a7-7e613d06022e</xmpMM:InstanceID>
---
> <xmpMM:InstanceID>uuid:2c37e4bc-7448-455d-8793-19c3e55d01ca</xmpMM:InstanceID>
256c256
< <</Creator(LaTeX)/Producer(xetex-0.999995)/CreationDate(D:20231206213639Z)/ModDate(D:20231206213639Z)>>
---
> <</Creator(LaTeX)/Producer(xetex-0.999995)/CreationDate(D:20231206213632Z)/ModDate(D:20231206213632Z)>>
暴露正确的CreationDate
包括时间,并且可能引入了更多的时间戳\DocumentMetadata
。
比较一个版本\special
与另一个版本\DocumentMetadata
也很有启发性。这个版本有点长,但\special
显示:
< <</Creator( XeTeX output 1970.01.01:0000)/Producer(xdvipdfmx \(20220710\))/CreationDate(D:19700101000000-00'00')>>
并CreationDate(D:19700101000000-00'00')
对应于SOURCE_DATE_EPOCH=0
,正确。
顺便说一句,\DocumentMetadata{uncompress}
用替换\DocumentMetadata{pdfversion=1.8}
也会破坏可重复性。
同样有趣的是:这种行为并不特定于xelatex
,lualatex
并且pdflatex
本质上也是这样表现的。
答案1
如果我使用
\DocumentMetadata{uncompress}
\documentclass[a4paper]{article}
%\special{dvipdfmx:config z 0}
\begin{document}
test
\end{document}
使用最新的 texlive 我没有得到任何差异,并且 xml 日期显示的不是纪元的开始,而是您的差异显示的是当前时间
<xmp:CreateDate>1970-01-01T00:00:00Z</xmp:CreateDate>
<xmp:ModifyDate>1970-01-01T00:00:00Z</xmp:ModifyDate>
<xmp:MetadataDate>1970-01-01T00:00:00Z</xmp:MetadataDate>