如何检查图像是否存在?

如何检查图像是否存在?

我正在研究 Sweave 并将includegraphics其动态地包含在报告中。

伪代码:

 <<>
     for ( i to 100)   # run loop 1 to 100
     {
          includegraphics(image.i)    # include image in article.
     }
 @

在上面的代码中,我使用循环添加了 100 张图像,但image.i在将图像包含在报告中之前,我需要先检查是否存在。有没有办法先检查一下。

答案1

把这个放入你的序言中:

\newcommand\includegraphicsifexists[2][width=\linewidth]{\IfFileExists{#2}{\includegraphics[#1]{#2}}{}}

然后您可以安全地使用以下内容,唯一的问题是您始终必须添加扩展:

\includegraphicsifexists[width=\linewidth]{nonexistingfile.pdf}

-------------------------------------------------------------------

您可以制作一个版本,使整个图形出现或不出现,具体取决于文件是否存在(再次,这转到序言):

% arguments: [parameters for includegraphics]{filename}[float placement]{caption}
\makeatletter
\def\FIF@nopl[#1]#2#3{\IfFileExists{#2}{\begin{figure}\centering
  \includegraphics[#1]{#2}\caption{#3}\end{figure}}{}}
\def\FIF@pl[#1]#2[#3]#4{\IfFileExists{#2}{\begin{figure}[#3]\centering
  \includegraphics[#1]{#2}\caption{#4}\end{figure}}{}}
\newcommand\FigureIfExists[2][width=\linewidth]{\@ifnextchar[%
  {\FIF@pl[#1]{#2}}%
  {\FIF@nopl[#1]{#2}}%
}

请注意,我认为[width=\linewidth]这是一个很好的默认参数,\includegraphics但你当然可以更改它。用法很简单:

\FigureIfExists{myfile.pdf}[!t]{Caption of this nice figure.\label{fig:myfile}}

\FigureIfExists[scale=0.3]{nofile.pdf}[p]{This figure won't exist,
  nor the label.\label{fig:nofile}}

相关内容