我可以暂时清除 LaTeX3 中的文件搜索路径吗?

我可以暂时清除 LaTeX3 中的文件搜索路径吗?

我正在使用以下代码使用 LaTeX3 搜索文件:

% List of known image extensions:
\clist_new:N \l__htmv_grext_clist
\clist_set:Nn \l__htmv_grext_clist {png,PNG,jpg,JPG,jpeg,JPEG,gif,GIF}
\DeclareDocumentCommand \findFile {o m}
{
  \tl_set:Nn \l_tmpa_tl {#2}
  \file_if_exist:nF {#2}
  {
    \clist_map_inline:Nn \l__htmv_grext_clist
    {
      \file_if_exist:nT {#2.##1}
      {
        \tl_set:Nn \l_tmpa_tl {#2.##1}
        \clist_map_break:
      }
    }
  }
  \tl_show:N \l_tmpa_tl
}

简而言之,这个想法是允许用户指定完整的文件名或保留扩展名,然后它会在已知扩展名列表中查找第一个匹配项。

这很好用……除非文件名恰好也存在于标准 TeX 搜索路径的某个地方。此外,如果它以标准 TeX 扩展名存在,那么初始检查就会找到它。让我困惑的是一个名为的文件chord.tex,当我输入\findFile{chord}时,它找到了而不是它应该找到的chord.tex本地。chord.png

我最想做的是只在当前目录和子目录中搜索。我知道可以从 L3 中使用的搜索路径中添加或删除特定路径,但我想做的是(暂时,也就是本地)清除所有内容(当前目录和子目录除外;我也可以接受必须明确添加子目录的解决方案,因为可以要求用户在序言中提供要搜索的子目录列表)。

答案1

您可以使用 ./file.ext 将搜索限制在当前目录中,请参阅我的问题中的示例首先在 texmf 树中搜索文件

相关内容