缺少内容时跳过每个框架

缺少内容时跳过每个框架

我使用 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}}

相关内容