Latex 类部署

Latex 类部署

我有几个*.cls文件作为我们公司文档的模板。它将创建标题页、版权声明、将公司徽标添加到标准格式的页眉/页脚等。我如何打包我的cls文件和图像资源,以便作者在文件位置方面有更大的灵活性*.tex

目前,所有内容都部署在平面文件结构的版本控制系统中。例如,我们的 25 个课程和数千个tex文档都位于一个目录中。这是因为我们需要将*.cls文件与文件放在同一目录中,以便*.tex能够访问pdflatex它们。

它变得越来越难以维护。

相反,我希望将我的文件部署到 Debian 系统范围内的软件包中,这样作者就可以在自己选择的位置*.cls使用自己的文件创建自己的项目。然后,他们或以与默认、或类相同的方式执行此操作。*.tex\documentclass{servicebulletin}\documentclass{testmanual}articlereportbook

这是否像制作一个将我的类部署到的 Debian 包一样简单/usr/share/texlive/texmf-dist/tex/latex/base/

答案1

创建你的 texmf 树

*.cls文件和其他资源应该放在texmf树中。这是带有tex/latex/*.clstex/latex/<anysubdir>/*.cls

该树可能位于几个地方。下面是它们在基于 Debian 的发行版上的位置。使用kpsewhich -var-value <variable>找出它们在您的安装中的位置。

  • TEXMFHOME( $HOME/texmf) 适用于特定于用户的树。部署系统范围的包时,这并不合适。
  • TEXMFLOCAL( /usr/local/share/texmf) 适用于系统范围的本地树。这些通常由用户使用包管理器以外的其他工具(例如make installgit clone)安装。如果您使用包管理器,这也不合适。
  • TEXMFDIST( /usr/share/texlive/texmf-dist) 是 texlive 发行版。虽然您可以在此处部署文件,但最好将您的内容放在远离官方发行版的地方,以免污染它。
  • TEXMFAUXTREES{})。这是 latex 将用来查找文件的附加树列表。这太完美了!

将你的类部署到某个路径。以下是适合包的路径:

/usr/share/texlive/texmf-mycompany/tex/latex/companytemplate.cls

现在我们需要告诉 Latex 在哪里寻找它。


非 Debian 说明

您可以使用tlmgr添加辅助树(您可能需要sudo):

tlmgr conf auxtrees add /usr/share/texlive/texmf-mycompany

确认已添加:

$ tlmgr conf auxtrees
List of auxiliary texmf trees:
  /usr/share/texlive/texmf-mycompany
$ cat /usr/share/texlive/texmf.cnf 
TEXMFAUXTREES = /usr/share/texlive/texmf-mycompany,

Debian 特定说明

tlmgrapt可能与或冲突apt-get。因此tlmgr仅限于用户模式,不考虑全局效果。相反,我们需要部署/etc/texmf/texmf.d/01mycompany.cnf。文件名无关紧要:只要它位于该目录中并以 结尾即可.cnf。它应该包含以下内容:

TEXMFAUXTREES = /usr/local/texlive/texmf-local,

然后在 中postinst运行update-texmf。这将连接 中的所有文件/etc/texmf/texmf.d/并生成/etc/texmf/web2c/texmf.cnftexlive 使用的 IS。


确认一切正常:

$ kpsewhich -var-value TEXMFAUXTREES
/usr/share/texlive/texmf-mycompany,      <-- You need to see your path here
                                             that means it will be searched
$ kpsewhich myclass.cls
/usr/share/texlive/texmf-mycompany/tex/latex/myclass.cls

如果这些对您不起作用,那么您可以通过查看*.cnf已加载的文件及其位置来排除故障:

$ kpsewhich -all texmf.cnf
/etc/texmf/web2c/texmf.cnf
/usr/share/texmf/web2c/texmf.cnf
/usr/share/texlive/texmf-dist/web2c/texmf.cnf

$ kpsewhich -show-path texmf.cnf
/etc/texmf/web2c:/usr/local/share/texmf/web2c:/usr/share/texmf/web2c:/usr/share/texlive/texmf-dist/web2c://share/texmf/web2c

相关内容