你们中有谁使用 PDF 来测试其包的良好输出吗?
我计划做以下事情。
- 手工构建我认为正确的示例:TEX + PDF 文件。
- 每次我更新源代码时,我都会重新编译第一步的 TEX 文件,以将它们的 PDF 与标记为正确的 PDF 进行比较。
你会这样做吗?是否有现成的脚本可以做到这一点?
答案1
这可以通过 l3build 自动完成
目录布局包含
build.lua
pkg.sty
testfiles/test1.lvt
构建文件
module = "pkg"
sourcefiles={"*.sty"}
软件包
\ProvidesPackage{pkg}[2022-11-19 l3build example package]
\def\foo{abc}
测试文件/test1.lvt
\documentclass{article}
\usepackage{pkg}
\input{regression-test}
\begin{document}
\START
\TEST{basic expansion}{\show\foo}
\showoutput
abc \foo
\foo
\end{document}
您可以自动运行测试。
build.lua
设置包,我需要.sty
在这里指定源,因为通常它假定.sty 是从.dtx
源生成的。
测试文件是一个 latex 文档,但通常给出.lvt
扩展名。您可以用各种方式进行测试,这里我使用,\show
但也\showoutput
显示了 pdf 输出的符号表示。
然后
l3build save test1
将运行 latex 并保存规范化的测试结果日志文件,test1.tlg
假设这看起来不错,这通常会被签入到源代码控制中。
l3build check
然后将运行所有测试
$ l3build check
Running checks on
test1 (1/1)
--> failed
Check failed with difference files
- ./build/test/test1.luatex.diff
- ./build/test/test1.xetex.diff
由于 luatex 使用的是 latin modern opentype 而我们保存的结果 showoutput 使用的是 computer modern,因此保存引擎特定的参考结果:
cp ./build/test/test1.luatex.log testfiles/test1.luatex.tlg
cp ./build/test/test1.xetex.log testfiles/test1.xetex.tlg
然后再次检查:
$ l3build check
Running checks on
test1 (1/1)
All checks passed
现在如果我们对包进行更改
\ProvidesPackage{pkg}[2022-11-19 l3build example package]
\def\foo{
% egreg left a space
abc}
并运行检查:
$ l3build check
Running checks on
test1 (1/1)
--> failed
Check failed with difference files
- ./build/test/test1.luatex.diff
- ./build/test/test1.pdftex.diff
- ./build/test/test1.xetex.diff
然后您需要检查差异并撤销更改,或者更新 tlg 文件。