我必须将不同的图形放置在完全重叠的位置,每个图形位于不同的框架上。除了图形之外,每个图形还有一些文本,因此这回答不起作用,因为也有文本。
问题是,如果存在文本,图形将无法正确定位。如以下 MWE 中第六帧有一些文本“你好”因此乙与所有其他完全重叠的图形偏移。
我猜想需要进行一些绝对定位才能正确定位第六个图形,但我不知道如何捕获它前面的图形的位置坐标,以便定义位移图形的位置。抱歉,我是 TeX 这个美丽世界的新手。:)
任何线索都会有帮助。谢谢。
\documentclass{beamer}
\usepackage{tikz}
\usepackage{capt-of}
\begin{document}
\begin{frame}
\begin{center}
\begin{tikzpicture}
\node<1> (img1) {\includegraphics[width=.5\linewidth]{example-image-a}};
\node<2> (img2) {\includegraphics[width=.5\linewidth]{example-image-b}};
\node<3> (img3) {\includegraphics[width=.5\linewidth]{example-image-c}};
\end{tikzpicture}
\end{center}
\end{frame}
\begin{frame}
\begin{center}
\begin{tikzpicture}
\node<1> (img1) {\includegraphics[width=.5\linewidth]{example-image-a}};
% \node<2> (img2) {\includegraphics[width=.5\linewidth]{example-image-b}};
% \node<3> (img3) {\includegraphics[width=.5\linewidth]{example-image-c}};
\end{tikzpicture}
\end{center}
\end{frame}
\begin{frame}
hello
\begin{center}
\begin{tikzpicture}
% \node<1> (img1) {\includegraphics[width=.5\linewidth]{example-image-a}};
\node<1> (img2) {\includegraphics[width=.5\linewidth]{example-image-b}};
% \node<3> (img3) {\includegraphics[width=.5\linewidth]{example-image-c}};
\end{tikzpicture}
\captionof{figure}{A caption.}
\end{center}
\end{frame}
\begin{frame}
\begin{center}
\begin{tikzpicture}
% \node<1> (img1) {\includegraphics[width=.5\linewidth]{example-image-a}};
% \node<2> (img2) {\includegraphics[width=.5\linewidth]{example-image-b}};
\node<1> (img3) {\includegraphics[width=.5\linewidth]{example-image-c}};
\end{tikzpicture}
\end{center}
\end{frame}
\end{document}
答案1
这可能不是一个完美的解决方案。使用tikz
remember picture,overlay
选项将图形放在页面的绝对中心位置。然后您需要仔细决定在哪里输入文本和标题,否则它们可能会与图形重叠。这就是我\vspace{5.5cm}
在 hello 字和标题文本之间放置的原因。但是,所有图形都将位于每个框架的完全相同的位置。请参阅以下代码。希望它能满足您的要求。
\documentclass{beamer}
\usepackage{tikz}
\usepackage{caption}
\begin{document}
\begin{frame}
\begin{tikzpicture}[remember picture,overlay]
\only<1>{\node (img1) at (current page.center) {\includegraphics[width=.5\linewidth]{example-image-a}};}
\only<2>{\node (img2) at (current page.center) {\includegraphics[width=.5\linewidth]{example-image-b}};}
\only<3>{\node (img3) at (current page.center) {\includegraphics[width=.5\linewidth]{example-image-c}};}
\only<4>{\node (img3) at (current page.center) {\includegraphics[width=.5\linewidth]{example-image-a}};}
\end{tikzpicture}
\only<3>{hello
\vspace{5.5cm}\captionof{figure}{A caption.}}
\end{frame}
\end{document}
编辑:不知道您到底想输入什么。这是一个可能的不同文本位置的示例。我使用 tikzpicture 内的节点来放置标题。您也可以使用 tikzpicture 内的节点来放置文本。这样,它们将在不同的框架中处于完全相同的位置。我
[t]
也在框架环境中添加了选项。这将使文本从框架顶部对齐(默认为[c]
,居中对齐)。所以现在更容易用来\vspace{}
定位文本。
\documentclass{beamer}
\usepackage{tikz}
\usepackage{caption}
\begin{document}
\begin{frame}[t]
\begin{tikzpicture}[remember picture,overlay]
\only<1>{\node (img1) at (current page.center) {\includegraphics[width=.5\linewidth]{example-image-a}};}
\only<2>{\node (img2) at (current page.center) {\includegraphics[width=.5\linewidth]{example-image-b}};}
\only<3>{\node (img3) at (current page.center) {\includegraphics[width=.5\linewidth]{example-image-c}};\node [text width=\linewidth,below] at (img3.south) {\captionof{figure}{A caption.}};}
\only<4>{\node (img4) at (current page.center) {\includegraphics[width=.5\linewidth]{example-image-a}};\node [text width=\linewidth,below] at (img4.south) {\captionof{figure}{B caption.}};}
\end{tikzpicture}
\only<3>{
\vspace{1cm}\begin{center}Title Name\end{center}
}
\only<4>{\par\vspace{3.75cm} hello word!
}
\end{frame}
\end{document}