为了包含我们自己编写的类,我们目前使用相对路径(\documentclass{../ourclass}
),这会触发警告(提供错误的类)并且相当丑陋。 这些问题讨论了此问题的解决方案,例如:
但是这些问题都没有讨论版本化的多用户/平台 git 存储库。理想的情况是,新成员或拥有新计算机的成员只需签出存储库并构建文档,只要他拥有最新的标准 TeX 发行版即可。这样存储库就完全独立,不需要为每个成员/计算机/操作系统调整本地PATH
或texmf
内容 - 所有项目特定的配置都应在 git 存储库中定义。
针对这种情况有什么好的方法?如何将用户或每台计算机的配置保持在最低限度并将所有构建配置存储在中央存储库中?
答案1
我假设您有一个包含自定义类的 Git 存储库,但并非每个使用该类生成的文档都包含在同一个(或任何其他)存储库中,而可能仅作为本地副本存在。
(1)向 CTAN 提交你的课程
如果课程来源不包含任何敏感信息,你可以将您的课程上传至 CTAN。一段时间后,它将在 TeXLive/MikTeX 发行版中可用,并且每个拥有最新 TeXLive/MikTeX 安装的用户都可以使用\documentclass{ourclass}
。如果该类已达到一定成熟度并且预计只需要很少的维护,这将特别有用。
(2)多次克隆 Git 存储库
通常,类文件/文件夹的大小不超过几百千字节,已经包括矢量图像文件、自定义书目样式等。因此,每个团队成员在创建新项目文件夹后,都可以git clone
在特定项目文件夹中调用。通过本地存储库的副本和选项--reference
,git clone
可以优化网络使用。也许您可以向团队成员提供脚本,以自动化和优化初始cloning
和后续pulling
。
(3)项目文件夹结构
(1)和(2)无需相对路径即可工作,这正是您所要求的。但是,更改团队计算机上的文件夹结构可能也值得考虑,例如
/home/.../git/ (or C:\Users\...\git\)
.../customclass/class.cls
.../project-1
.../project-2
...
然后,继续练习\documentclass{../customclass/class}
。这需要忽略警告。如果我可以补充一点个人意见:我不完全理解为什么忽略这个特定的警告会有问题。
答案2
如果类/样式文件要由用户电脑上的各种文档使用,那么恕我直言,你无法避免在某些 texmf 结构中进行某些安装。
因此,您的用户可以将存储库克隆到某个现有的 texmf 树中(例如 texlive 系统中的 texmflocal 或 texmfhome,或 miktex 中的 UserData(之后您需要更新 FNDB)。或者 git 存储库可以创建一个新的 texmf 树,然后用户必须让 tex 系统知道这个 texmf 树:在 miktex 中,这可以通过 GUI 或调用的批处理文件来完成initexmf --register-root
,在 texlive 中没有内置解决方案,因此必须更改 texmf.cnf,或者添加本地 texmf.cnf 文件并更改 TEXMFCNF 环境变量以指向它(但也应该可以使用脚本来执行此操作)。
答案3
如果你使用构建系统,例如Makefile
,latexmk
,您可以设置环境变量TEXINPUTS
——它是 TeX 在编译期间搜索文件的路径。
TEXINPUTS=.//:../relative/path/to/class//:
因此,在shell 脚本中或以其他方式设置Makefile
,将允许您使用该目录中的文件,就像它们位于当前目录中一样 — 而不会引发警告。请参阅埃格尔的回答TEXINPUTS 变量的定义。