初步问题:

初步问题:

我正在尝试使用从相同的源目录构建模块的多个变体l3build

我打算提供多种build.lua配置,每种配置一种。

初步问题:

就我而言,我无法指定应该使用l3build哪个build.lua,对吗?如果这有可能的话,我只需创建文件build-varA.luabuild-varB.lual3build在每个配置中调用。如果可能的话,我想知道怎么做,然后我的问题的其余部分就变得过时了。

根据 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"

因为这将允许在字符串中使用.和。/

相关内容