我正在尝试使用从相同的源目录构建模块的多个变体l3build
。
我打算提供多种build.lua
配置,每种配置一种。
初步问题:
就我而言,我无法指定应该使用l3build
哪个build.lua
,对吗?如果这有可能的话,我只需创建文件build-varA.lua
,build-varB.lua
并l3build
在每个配置中调用。如果可能的话,我想知道怎么做,然后我的问题的其余部分就变得过时了。
根据 l3build 作者 Joseph Wright 的评论,目前这是不可能的。
主要问题
由于我不指望对我的初步问题得到肯定的答复,因此我设置了以下结构:
<project root>
|-varA
| |-build.lua
|-varB
| |-build.lua
|-tex
| |-images
| | |-exampleimage.png
| |-latex
| | |-mytemplates
| | | |-mypackage.sty
此时内容并不重要(如果复制,您可能只需创建空的虚拟文件)。
看起来应该build.lua
是这样的:
-- varA/build.lua
#!/usr/bin/env texlua
module = "mymodulename"
pkgversion = "0.1-varA"
pkgdate = "26.06.2023"
-- create artefacts in the parent directory
maindir = ".."
-- look for source files in parent directory
sourcefiledir = "../src"
sourcefiles= {"**/*.dtx", "*.ins"}
-- look for documentation files in the common root
docfiledir = "../doc"
typesetfiles = {"*.tex"}
-- include partial tds trees
tdsdirs = { tex = "tex", fonts = "fonts", ../tex = "tex"}
-- keep the directory tree structure in build and tds
flatten = false
flattentds = false
- 关键部分是变量的语法
tdsdirs
:键是我的项目中的目录,以及值文件被复制到的 tds 树位置是(参见l3build 文档)。 *.dtx
我此时省略了任何内容,因为它似乎不相关。- 我省略了所有文档文件,因为它们看起来不相关。
但是,配置不起作用。如果我删除../tex = tex
键值对,配置可以正常工作,但它会搜索<project root>/varA/tex
要包含的目录,而不是包含<project root>/tex
。
我需要的是一种在 tdsdirs 中指定相对/父路径作为键的方法。这可能吗?如何实现?
答案1
你需要记住 Lua 只允许“快捷方式”语法
foo = { name = "value" }
当name
是字母数字时。在这里,您需要以“完整”的方式执行操作:
tdsdirs["../tex"] = "tex"
因为这将允许在字符串中使用.
和。/