我在 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 创建指向文件的符号链接。但这些方法并不完全令人满意,因为更新r
或gnuplot
可能会更改可用文件,从而破坏符号链接或导致链接不完整。
因此,我猜想最好添加一个额外的 TEXMF 树。但是,我不确定这样做是否有缺点,或者如何最好地做到这一点。如果我不需要在那里创建文件数据库,那肯定会更好。因此,如果这是可行的方法,我怀疑我应该将额外的树设置为在磁盘上搜索。(由于这里可能只有少数几个文件,我无法想象这会成为问题。)
或者也许操纵 TEXINPUTS 会更好。我不确定这种方法的相对优势或劣势是什么。
集成文件的最佳方法是什么,/usr/share/texmf
以便我的 TeX Live 安装可以无缝使用它们,而不会出现任何意外?
答案1
我认为实现这一目标的最佳方法如下:
TEXMFDISTRO = /usr/share/texmf
在 中添加一行/usr/local/texlive/2015/texmf.cnf
,如果不存在则创建它。TEXMF
复制和的定义TEXMFDBS
从/usr/local/texlive/2015/texmf-dist/web2c/texmf.cnf
到/usr/local/texlive/2015/texmf.cnf
- 在 的定义中在和
TEXMFDISTRO
之间添加,并在 的定义中类似TEXMFLOCAL
!!$TEXMFDIST
TEXMF
TEXMFDBS
最后/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
需要一个文件。如果您希望在必要时实际搜索树,请删除!!
。