我使用 foreach 自动生成幻灯片:
\foreach \n in {1,...,200} {%
\begin{frame}{Slide with jpeg number \n}
\includegraphics[height=3cm]{FileA_\n.jpg}
\includegraphics[height=3cm]{FileB_\n.jpg}
\end{frame}%
}
.jpg 来自其他来源,有时其中一些缺失,导致整个 pdf 生成中断:“未找到包 pdftex.def Error.File‘FileB_17.jpg’”。
如果两个 .jpg 中任何一个都不存在,我希望跳过它所属的幻灯片,但继续编译其余幻灯片。我如何在 LaTex 中编程实现这一点?
我使用 knitr 在 RStudio 中工作。
答案1
您可以\IfFileExists
在循环中使用条件
\documentclass{beamer}
\usepackage{tikz}
\usepackage{mwe} %<-- For dummy images
\begin{document}
\foreach \n in {a,...,e,a,b} {%
\IfFileExists{example-image-\n.jpg}{
\begin{frame}{Slide with prefix \n}
\includegraphics[height=3cm]{example-image-\n}
\end{frame}%
}{}
}
\end{document}
包中mwe
只有 a、b、c 示例图像,因此循环会跳过 d、e 图像。
答案2
我不知道是否丢失了帧,但你可以避免错误
\IfFileExists{FileA_\n.jpg}}
{\includegraphics{FileA_\n.jpg}}}
{\typeout{missing: FileA_\n.jpg}}