我有几个*.cls
文件作为我们公司文档的模板。它将创建标题页、版权声明、将公司徽标添加到标准格式的页眉/页脚等。我如何打包我的cls
文件和图像资源,以便作者在文件位置方面有更大的灵活性*.tex
。
目前,所有内容都部署在平面文件结构的版本控制系统中。例如,我们的 25 个课程和数千个tex
文档都位于一个目录中。这是因为我们需要将*.cls
文件与文件放在同一目录中,以便*.tex
能够访问pdflatex
它们。
它变得越来越难以维护。
相反,我希望将我的文件部署到 Debian 系统范围内的软件包中,这样作者就可以在自己选择的位置*.cls
使用自己的文件创建自己的项目。然后,他们或以与默认、或类相同的方式执行此操作。*.tex
\documentclass{servicebulletin}
\documentclass{testmanual}
article
report
book
这是否像制作一个将我的类部署到的 Debian 包一样简单/usr/share/texlive/texmf-dist/tex/latex/base/
?
答案1
创建你的 texmf 树
*.cls
文件和其他资源应该放在texmf
树中。这是带有tex/latex/*.cls
或tex/latex/<anysubdir>/*.cls
该树可能位于几个地方。下面是它们在基于 Debian 的发行版上的位置。使用kpsewhich -var-value <variable>
找出它们在您的安装中的位置。
TEXMFHOME
($HOME/texmf
) 适用于特定于用户的树。部署系统范围的包时,这并不合适。TEXMFLOCAL
(/usr/local/share/texmf
) 适用于系统范围的本地树。这些通常由用户使用包管理器以外的其他工具(例如make install
或git 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 特定说明
tlmgr
apt
可能与或冲突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.cnf
texlive 使用的 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