补充

补充

我经常记不住kpsewhich命令的名称。如果我明白这个名字的来源,也许我会更容易记住它,所以问题是:

这个立场代表什么kpse

答案1

arl 的阿斯东南arch 库哪个

答案2

如上所述info kpathsea(在线手册这里)Kpathsea 是一个路径搜索.sty(例如,为了在一组可能很大的 TEXMF 树中快速定位给定文件,没有每次需要给定文件时都执行递归目录树遍历;这在使用多个包编译 LaTeX 文档时很重要,因为这些包本身需要其他包,可能还需要各种字体文件等)。

路径搜索给出pathse部分,缩写为pse。 “which” 让人想起 Unixwhich实用程序,它根据您的 PATH 环境变量告诉您​​给定命令的可执行文件运行的路径。例如:

$ which find
/usr/bin/find

我相信“k”代表“Karl Berry”。:-)

补充

which和之间的比较kpsewhich远不止于此。由于 Unix shell 通常会维护 PATH 目录中的可执行文件的缓存,以便提供高效的命令完成查找,因此 Kpathsea 库会维护文件名数据库(由ls-R每个 TEXMF 树中的文件组成),以便为 TeX 相关程序提供类似的快速查找。

在 Unix shell 中,当您从 PATH 添加或删除可执行文件并希望在不重新启动 shell 的情况下刷新缓存时,通常可以使用 hash 命令(hash -r在 Bash 中,rehash在 Zsh 中)更新缓存;对于 Kpathsea 库,相应的操作是使用 完成的mktexlsr,也称为texhash

最后,在 PATH 1which中列出的目录中查找给定的可执行文件,某种程度上类似于使用磁盘查找或仅使用文件名数据库来查找 TeX 相关文件(这取决于 TEXMF 树前面是否带有在2中使用它的位置)。然而,它比典型的内置命令更复杂,因为它可以根据给出的内容返回不同的结果,具有可以在 中设置的变量的概念,可以根据 中的每个目录设置仅在缓存中或磁盘上查找,等等。kpsewhich!!texmf.cnfkpsewhichwhich-prognametexmf.cnftexmf.cnf


脚注

  1. 至少在 Bash 和 Zsh 中,它似乎确实在搜索 PATH:如果你将新的可执行文件添加到 PATH 的目录中,则which这些 shell 的内置命令会立即找到它,而无需运行hash -rrehash(对于命令完成可能并非如此)。

  2. 例如参见/usr/share/texlive/texmf-dist/web2c/texmf.cnfDebian。

相关内容