使用 l3build 比较 pdf 时,pdftex 以外的引擎可能会失败

使用 l3build 比较 pdf 时,pdftex 以外的引擎可能会失败

我有以下测试文件(testdefinitioninheritance.lvt),它生成了一些输出。

\input{regression-test}
\documentclass{minimal}
\usepackage{docvar}
\begin{document}
\START


\OMIT
\definedocvar{title}
\setdocvar{title}{Long Title Sentence}
\definedocvar[inherit=title]{subtitle}
\TIMO


\getdocvar{subtitle}

\showoutput
\vfill\break
\END
\end{document}

我运行保存命令

texlua build.lua save -p testdefinitioninheritance

保存的 pdf 文件看起来不错。

如果我事后进行检查

texlua build.lua check -p testdefinitioninheritance

检查pdftex总是通过,但和xetex失败luatex。我发现有一个build/test/testdefinitioninheritance.ref.pdf用构建的文件pdftex。每个引擎不应该都有一个 pdf 文件吗?

(注意:运行最新更新的 TL2017)。

答案1

首先,需要注意的是:这里的设置可能会有所改变,因为团队认为使用开关可能不是改变测试结果的最佳方式。这反映了团队目前不使用基于 PDF 的测试这一事实,因此该领域在某种程度上是实验性的。

使用 PDF 的二进制比较进行测试与比较不同的日志输出有很大不同,因为我们无法进行任何标准化:要么两个结果完全相同的或者不是。使用不同的引擎,您将得到结果之间的差异,部分原因是它们故意做不同的事情(例如生产者字符串),部分原因是它们具有不同的代码流(例如XeTeX 走向通过因此PDF.xdv的创建与 pdfTeX 中的创建有很大不同)。

目前,l3build创建参考 PDF 文件与创建参考文件使用相同的逻辑.tlg:除非使用开关调用-e,否则参考文件将使用默认引擎(通常为 pdfTeX)创建。因此,如果您想对多个引擎进行基于 PDF 的比较,则需要将它们全部单独保存

texlua build.lua save -epdftex,xetex,luatex -p testdefinitioninheritance

我认为值得记住的是,基于 PDF 的比较可能最适合于只有一个引擎需要测试的情况。对于跨引擎工作,通常可以.tlg创建一个或多个文件。

相关内容