我们的所有文档均使用 LaTeX,其中包括多个产品线和多份手册。这些手册与安装程序一同使用我们的自动构建服务器构建。
我们已经开发了一个非常复杂的 LaTeX“核心”,它是各种包(一些是自己构建的)、类、字体、样板文本等的 TDS 树。它用于我们所有的文档中,并且经常以各种方式进行改进和修订,其中一些与“我们以前的方式”不兼容。(尽管我尽量表现得像我所能的。:)
随着我们的发展,新产品(或产品的新版本)使用最新核心,而旧版本应使用旧核心。为此,我们将核心设为所有 GIT 存储库的子模块。它会进行分支和修订,就像我们制作的产品会进行修订一样。
问题:
我需要一种方法来在编译手册之前动态添加 TDS 树。也就是说,在任何给定开发人员的计算机(可能是 Mac 或 PC)上,他们可能打开了多个项目分支/版本,每个分支/版本(可能)都有不同的核心。当他们在 WinEDT 或 TextMate 中点击“编译”时,我希望系统自动获取该项目的核心。
理想情况下,我希望能够说出类似这样的话:
lualatex --tdstree "../core" mymainfile.tex
据我所知,这完全是编造的。:) 除此之外,是否有某种相对跨平台的方式来做同样的事情?我的问题是:
- 当前项目的相对路径非常棘手,因为没有开发人员会将本地源文件放在同一个位置,而且 PC 和 Mac 上的“home”也不相同。我认为不可能真的说“相对于正在处理的文件,TEXMFHOME 目录位于后面一个位置,名为 core”。
- 一旦设置了 TDS 树,我似乎永远无法弄清楚每个平台需要什么。我想我可以弄清楚,但可能只是
sudo texhash
和luatools --generate
。问题是我不想让他们每次切换时都必须记住这一点,如果我在每次编译之前运行每个命令,那将花费太长时间(更不用说密码问题了)。我相信我可以texhash
通过 TDS 条目末尾的“//”跳过命令,但我不相信我可以跳过luatools --generate
。至少在 Mac 上luatools
似乎不需要。sudo
有没有其他人找到一种方法来轻松地将 TDS 树添加为编译命令的一部分?我可能遗漏了一些非常简单的东西。:P
答案1
我想您在两个平台上都使用 TeXlive。
动态添加 TDS 树意味着要么摆弄环境,要么使用已修补的texmf.cnf
(可以在当前工作目录中)。动态修补texmf.cnf
可能更具可移植性。