kpathsea 和路径前缀

kpathsea 和路径前缀

在第 27 页,kpathsea 手册指出:

  • [搜索路径是用冒号分隔的路径元素列表。]
  • ...
  • 要检查特定路径元素e,Kpathsea 首先会查看预建数据库是否适用于e,即数据库是否位于前缀为 的目录中e。如果是,则将路径规范与数据库的内容进行匹配。

这篇描述的最后一句话中有些事情不太清楚。如果有人能给我一个更准确的描述或解释一下它的工作原理,我将不胜感激。以下是我的一些问题。

  1. 路径元素e可能有多个前缀。按照什么顺序搜索它们?例如,如果e等于/a/b/c,则/a/a/b都是的前缀e。(我怀疑顺序是:最长前缀优先...最短前缀最后。)
  2. e其自身的前缀吗?(我怀疑是的。)

以下是问题 1 的可能解决方案。是否有一个隐含的假设,即任何路径元素最多只有一个前缀可以包含数据库ls-R?如果是这样,包含数据库的目录应该ls-R位于 中吗TEXMFDBS?这是有道理的。例如,find /usr/local/texlive -name ls-R给出:

/usr/local/texlive/texmf-local/ls-R
/usr/local/texlive/2011/texmf/ls-R
/usr/local/texlive/2011/texmf-dist/ls-R
/usr/local/texlive/2011/texmf-var/ls-R
/usr/local/texlive/2011/texmf-config/ls-R

kpsewhich -var-value=TEXMFDBS给出:

{!!/usr/local/texlive/2011/texmf-config,
!!/usr/local/texlive/2011/texmf-var,
!!/usr/local/texlive/2011/texmf,
!!/usr/local/texlive/2011/../texmf-local,
!!/usr/local/texlive/2011/texmf-dist}

编辑(2012 年 3 月 2 日)我发了一封电邮kathsea邮件列表。我得到了Karl Berry 的回复ls-R建议从根到任何叶的一条路径上不应有多个数据库。此外,包含 ls-R 数据库的目录应位于 中TEXMFDBS

答案1

专家建议ls-R从根到任何叶的一条路径上不应有多个数据库。此外,包含 ls-R 数据库的目录应位于 中TEXMFDBS

相关内容