![我可以暂时清除 LaTeX3 中的文件搜索路径吗?](https://linux22.com/image/334989/%E6%88%91%E5%8F%AF%E4%BB%A5%E6%9A%82%E6%97%B6%E6%B8%85%E9%99%A4%20LaTeX3%20%E4%B8%AD%E7%9A%84%E6%96%87%E4%BB%B6%E6%90%9C%E7%B4%A2%E8%B7%AF%E5%BE%84%E5%90%97%EF%BC%9F.png)
我正在使用以下代码使用 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 树中搜索文件。