我正在研究 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}}