为什么 kpathsea 没有选择我的本地版本文件?

为什么 kpathsea 没有选择我的本地版本文件?

我刚刚对 TeX 包中的一个文件做了一个小改动。我将其复制到我的本地 texmf 树中并在那里进行了更改。当我尝试kpsewhich <filename>测试它是否找到了我的本地版本时,它返回了原始版本而不是新版本。事实上,原始文件已经来自我的本地 texmf 树,所以我将旧文件重命名为一个简单的名字。现在kpsewhich <filename>返回了系统文件的版本。为了检查文件是否存在,我尝试kpsewhich -all <filename>并获得了正确的两个文件版本:我修改的版本和系统版本(按此顺序)。如果我用另一个我知道在两个地方都存在的文件尝试此操作,则kpsewhich <filename>返回我的本地文件。

以下是各种调用及其结果:

~% kpsewhich pgfsys-pdftex.def
/usr/local/texlive/2012/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def
~% kpsewhich -all pgfsys-pdftex.def 
/Users/stacey/Library/texmf/tex/latex/bzr/pgfsys-pdftex.def
/usr/local/texlive/2012/texmf-dist/tex/generic/pgf/systemlayer/pgfsys-pdftex.def
~% kpsewhich tqft.sty              
/Users/stacey/Library/texmf/tex/latex/bzr/tqft.sty
~% kpsewhich -all tqft.sty
/Users/stacey/Library/texmf/tex/latex/bzr/tqft.sty
/usr/local/texlive/2012/texmf-dist/tex/latex/tqft/tqft.sty

这个扩展有什么特别之处吗.def?我是不是忘了运行什么命令了?还有其他选项kpsewhich可以帮助我调试吗?

答案1

kpsewhichkpathsea通常)不会先搜索完整的本地树然后再搜索全局树,而是使用一种曲折的道路:首先搜索本地树中的一条路径,然后搜索全局树中的这条路径,然后搜索本地树中的第二条路径,依此类推。

具体道路取决于发动机,例如latex和的道路不同xelatex,以及 的设置texmf.cnf。详细信息可在手册中找到kpathsea

这种曲折很有用。例如,您可以拥有引擎相关的配置文件:您可以hyphen.cfg在 的本地树中拥有tex/xelatex,在 的全局树中拥有另一个tex/latex,并且xelatex将使用本地的和latex另一个。

因此,请将您的文件放入/Users/stacey/Library/texmf/tex/generic/与全局文件相同的子路径中。

相关内容