我刚刚对 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
kpsewhich
(kpathsea
通常)不会先搜索完整的本地树然后再搜索全局树,而是使用一种曲折的道路:首先搜索本地树中的一条路径,然后搜索全局树中的这条路径,然后搜索本地树中的第二条路径,依此类推。
具体道路取决于发动机,例如latex
和的道路不同xelatex
,以及 的设置texmf.cnf
。详细信息可在手册中找到kpathsea
。
这种曲折很有用。例如,您可以拥有引擎相关的配置文件:您可以hyphen.cfg
在 的本地树中拥有tex/xelatex
,在 的全局树中拥有另一个tex/latex
,并且xelatex
将使用本地的和latex
另一个。
因此,请将您的文件放入/Users/stacey/Library/texmf/tex/generic/
与全局文件相同的子路径中。