假设我想为某个或某些expl3
模块编写补丁。据我所知,要测试补丁,我必须执行以下操作:
- 编辑模块的
.dtx
文件; - 运行
l3.ins
编译(除其他外)expl3-code.tex
)全部l3kernel
模块; - 包括
expl3
来自我的主要测试文档的包。
对于编写更复杂的补丁,需要您反复编辑和测试代码,这是繁琐且不切实际的。
理想情况下,我想直接修改.dtx
文件并仅将更新后的包包含到主文件中。由于expl3
似乎包含所有包,所以这行不通;之后包含单独的包会因定义重复而导致错误。(我在这里的第一个问题已经是如何.sty
从.dtx
文件正确创建文件。)
我的问题是:
有没有办法
expl3
在已经加载的包之上有选择地导入包,或者准备一个特殊版本,从各个文件而不是一个大的内核转储中expl3
提取代码?.sty
活跃的 LaTeX3 开发人员的工作流程是怎样的?你们有专门的构建脚本或工具吗?
除了提到的几个命令之外,是否还有其他调试选项或工具(特别是针对软件包
expl3
)需要注意interface3.pdf
?
答案1
过去,我们确实会单独加载所有.sty
文件,但加载顺序要求使这个过程变得乏味。单独加载每个文件.sty
都会导致版本不匹配的问题。因此,我们已转向使用单个文件。部分原因是它expl3
本身非常稳定,因此对它的更改次数通常有限。
对于 的工作expl3
,我使用两种工作流程之一,具体取决于细节。对于简单的更改,我只需设置一个包含我想要使用的代码的测试文档,gset
而不是new
。我在“本地”测试它,然后复制回源并进行必要的调整。因为它无论如何都需要通过测试套件,所以这通常没问题。
对于较大的更改,另一种方法是简单地修改文件.dtx
并执行install
将其放入我的本地树中,然后再次运行一些“本地”测试。这是使用完成的l3build
。再次强调,我们需要在添加新代码之前进行测试,因此总是需要这样做。