如何在 \includegraphics 中使用通配符?

如何在 \includegraphics 中使用通配符?

我想用\includegraphics{folder/*.pdf}这种简单的方法,我有一个文件夹,里面有不同的文件,我只想选择 pdf 文件。这可能吗?

答案1

假设一个Unix系统:

\documentclass{article}
\usepackage{xparse}
\usepackage{graphicx}

\ExplSyntaxOn
\NewDocumentCommand{\includegraphicsfromfolder}{O{}mm}
 {% #1 = options, #2 = folder path, #3 = extension
  \sys_get_shell:nnN { ls~-m~#2/* } { } \l_tmpa_tl
  \seq_set_split:NnV \l_tmpa_seq { , } \l_tmpa_tl
  \seq_map_inline:Nn \l_tmpa_seq
   {
    \regex_match:nnT { \.#3\Z } { ##1 }
     {
      \includegraphics[#1]{##1}
      \seq_map_break:
     }
   }
 }
\ExplSyntaxOff

\begin{document}

\includegraphicsfromfolder[width=4cm]{folder}{pdf}

\includegraphicsfromfolder[height=2cm]{folder}{png}

\end{document}

这需要-shell-escape选择。

我们ls从给定的文件夹中获取一个,其中条目用逗号分隔;然后列表在逗号处拆分,并测试每个条目以所需的扩展名结尾;如果成功,则包含图像并停止映射。

可以添加代码以确保在找不到合适的图像时发出警告。

在此处输入图片描述

folder示例的子目录包含

> ls folder
example-image-a.png example-image.pdf

相关内容