在 GNU/Linux 系统上使用上游的 TeX Live 时,如何合并由发行版的包管理器管理的 TEXMF 树?

在 GNU/Linux 系统上使用上游的 TeX Live 时,如何合并由发行版的包管理器管理的 TEXMF 树?

我在 GNU/Linux 系统上使用上游的 TeX Live,除了使用符号链接以方便在不同版本的 TL 之间切换外,其他路径均是默认路径。例如,TEXMFMAIN 是/usr/local/texlive/2015/texmf-dist,TEXMFLOCAL 是/usr/local/texlive/texmf-local,TEXMFHOME 是~/texmf。我认为,所有这些都非常标准。

例如,当我要求它安装编辑器时,我使用“虚拟”包来使我的发行版的包管理器相信 TeX Live 已安装并且依赖关系已满足。

一切都运行良好。

但是,这不适用于将文件安装到 TEXMF 树中但由我的发行版的包管理器管理的附加软件。我正在考虑r和之类的事情gnuplot。在这些情况下,TeX 文件当然是次要的:软件的主要点不是 TeX,但 TeX 文件是集成所必需的。

这些文件安装在/usr/share/texmf但我的 TeX 安装当然不知道TEXMF 树。这里没有文件数据库,并且树不在 kpathsea 搜索的路径中。

显然,有多种方法可以解决此类问题。您可以从工作目录、TEXMFHOME 中的适当位置或 TEXMFLOCAL 创建指向文件的符号链接。但这些方法并不完全令人满意,因为更新rgnuplot可能会更改可用文件,从而破坏符号链接或导致链接不完整。

因此,我猜想最好添加一个额外的 TEXMF 树。但是,我不确定这样做是否有缺点,或者如何最好地做到这一点。如果我不需要在那里创建文件数据库,那肯定会更好。因此,如果这是可行的方法,我怀疑我应该将额外的树设置为在磁盘上搜索。(由于这里可能只有少数几个文件,我无法想象这会成为问题。)

或者也许操纵 TEXINPUTS 会更好。我不确定这种方法的相对优势或劣势是什么。

集成文件的最佳方法是什么,/usr/share/texmf以便我的 TeX Live 安装可以无缝使用它们,而不会出现任何意外?

答案1

我认为实现这一目标的最佳方法如下:

  1. TEXMFDISTRO = /usr/share/texmf在 中添加一行/usr/local/texlive/2015/texmf.cnf,如果不存在则创建它。
  2. TEXMF复制和的定义TEXMFDBS/usr/local/texlive/2015/texmf-dist/web2c/texmf.cnf/usr/local/texlive/2015/texmf.cnf
  3. 在 的定义中在和TEXMFDISTRO之间添加,并在 的定义中类似TEXMFLOCAL!!$TEXMFDISTTEXMFTEXMFDBS

最后/usr/local/texlive/2015/texmf.cnf应该看起来像(或包含)以下几行:

TEXMFDISTRO = /usr/share/texmf
TEXMF = {$TEXMFCONFIG,$TEXMFVAR,$TEXMFHOME,!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFLOCAL,!!$TEXMFDISTRO,!!$TEXMFDIST}
TEXMFDBS = {!!$TEXMFSYSCONFIG,!!$TEXMFSYSVAR,!!$TEXMFLOCAL,!!$TEXMFDISTRO,!!$TEXMFDIST}

我现在已经完成了这个(我的安装在~/tl/2105),当我搜索所有内容时,preview.sty我得到了:

$ kpsewhich -all preview.sty
/usr/share/texmf/tex/latex/preview/preview.sty
/home/norbert/tl/2015/texmf-dist/tex/latex/preview/preview.sty

如果你希望已安装的上游 TeX Live 优先,那么你必须添加TEXMFDISTRO条目在最后上述两个定义。

在上面的例子中,我使用!!前面的,因此ls-R需要一个文件。如果您希望在必要时实际搜索树,请删除!!

相关内容