我正在创建一个包含多张图片的 Beamer 演示文稿,其中一些图片包含在多个帧中。我还创建了article
此演示文稿的一个版本,其中包含
\documentclass[hidelinks,titlepage]{article}
\usepackage{beamerarticle}
在文章版本中,我希望所有图像仅包含一次。更具体地说,我希望仅包含每个图像的实例。
我知道可以通过\mode<beamer>{...}
在该图像的第一个实例之后出现的所有图像实例上使用来实现这一点,但是这种策略容易出错,因为我可能会意外忘记在\mode<beamer>{...}
应该使用包装器的地方使用包装器,或者我可能会移动帧,这样没有包装器的实例最终就不是该图像的第一个实例了。
那么,是否可以自动包装同一图像的所有实例(不是该图像的第一个实例)\mode<beamer>{...}
?
答案1
像 MWE 这样的概念证明:
\documentclass[]{beamer}
%\documentclass{article}
%\usepackage{beamerarticle}
\RequirePackage{graphicx}
\usepackage{letltxmacro}
\LetLtxMacro\includegraphicsBAK\includegraphics
\renewcommand{\includegraphics}[2][]{%
\ifcsname image_#2\endcsname% macro already exists
\mode<beamer>{\includegraphicsBAK[#1]{#2}}%
\else%
\expandafter\gdef\csname image_#2\endcsname{}%
\includegraphicsBAK[#1]{#2}%
\fi}
\begin{document}
\begin{frame}{foo}{bar}%>>>
\includegraphics[width=0.4\textwidth]{example-image}
\includegraphics[width=0.4\textwidth]{example-image}
\end{frame}%<<<
\end{document}