![投影仪中 \only 和图形 (pdf) 对齐的问题](https://linux22.com/image/249721/%E6%8A%95%E5%BD%B1%E4%BB%AA%E4%B8%AD%20%5Conly%20%E5%92%8C%E5%9B%BE%E5%BD%A2%20(pdf)%20%E5%AF%B9%E9%BD%90%E7%9A%84%E9%97%AE%E9%A2%98.png)
我一直尝试使用这个简单的命令将 pdf 图形包含在文档中:
\documentclass{beamer}
\begin{document}
\begin{frame}
\only<1>{\includegraphics[width=\textwidth]{test}}
\only<2>{\includegraphics[width=\textwidth]{test}}
\only<3>{\includegraphics[width=\textwidth]{test}}
\end{frame}
\end{document}
不幸的是,这三张图片(应该是相同的)并没有完全对齐(从顶部开始)。
这是用于生成pdf的test.pdf:http://imgur.com/1nOiT
这是生成的pdf:http://imgur.com/UUu0v(正如您所见(没有?)),第一张和第二张图像没有对齐。
现在有人知道为什么它会这样吗?在这里我放了一个 VME,因为在我看来,除了 Beamer 类之外,没有其他包是必要的。我尝试过我的“常用”包,也许我只是错过了正确的包?
只是想让你知道,我目前能够做什么:如果我把一个放在~
后面{test}
,那么它就会对齐(请注意,它不适用于这个最小的例子,缺少一些包)。
我还注意到了一件事(因为我第一次遇到这个问题时,我遇到了更多\only
),总是倒数第二行出错!无论有多少行\only
,最后一个行都会与前一个行对齐(这就是为什么我们至少需要三行)。
答案1
这是众所周知的事实;Beamer 文档在第9.5 动态更改文本或图像:
这种方法(使用命令)的问题
\only
在于,它可能会导致线条高度出现轻微但令人讨厌的差异,这可能会导致整个框架在幻灯片之间“摆动”。如果替换文本有几行长,这个问题会变得更加严重。要解决这个问题,您可以使用两个环境:overlayarea 和 overprint。第一个更灵活,但不太方便用户使用。
因此,您可以使用overlayarea
:
\documentclass{beamer}
\begin{document}
\begin{frame}
\begin{overlayarea}{\textwidth}{\textheight}
\only<1>{\includegraphics[width=\textwidth]{test}}
\only<2>{\includegraphics[width=\textwidth]{test}}
\only<3>{\includegraphics[width=\textwidth]{test}}
\end{overlayarea}
\end{frame}
\end{document}
答案2
这只是垂直模式下 whatsit 节点的常见问题。使用颜色变化(甚至没有beamer
)也会出现同样的情况。
如果你确保它们处于水平模式,那么一切都会正常进行。
\documentclass{beamer}
\begin{document}
\begin{frame}
\mbox{\only<1>{\includegraphics[width=\textwidth]{test}}%
\only<2>{\includegraphics[width=\textwidth]{test}}%
\only<3>{\includegraphics[width=\textwidth]{test}}}
\end{frame}
\end{document}
答案3
正如 Roly 指出的那样,我发现最有效的解决方案是在%
除最后一个命令之外的所有命令末尾添加一个\includegraphics
(行末百分号(%)有什么用?)。
因此这是可行的:
\begin{frame}
\frametitle{Slide 1}
\begin{figure}[H]
\centering
\only<1>{\includegraphics[width=0.7\textwidth]{thinBody/thinBody0.png}}%
\only<2>{\includegraphics[width=0.7\textwidth]{thinBody/thinBody1.png}}%
\only<3>{\includegraphics[width=0.7\textwidth]{thinBody/thinBody2.png}}%
\only<4>{\includegraphics[width=0.7\textwidth]{thinBody/thinBody3.png}}%
\only<5>{\includegraphics[width=0.7\textwidth]{thinBody/thinBody4.png}}
\caption{The caption}
\label{fig:label}
\end{figure}
\end{frame}
或者对于问题中的代码:
\begin{frame}
\only<1>{\includegraphics[width=\textwidth]{test}}%
\only<2>{\includegraphics[width=\textwidth]{test}}%
\only<3>{\includegraphics[width=\textwidth]{test}}
\end{frame}
我不知道为什么会发生这种情况,但效果很好。也许有人可以给我们启发。
答案4
我认为\begin{overprint}
有\forloop
更好的解决方案。编码和拟合更少:
\documentclass{beamer}
\usepackage{forloop}
\newcounter{slideno}
\begin{document}
\begin{frame}
\begin{figure}
\centering
\begin{overprint}
\forloop{slideno}{1}{\value{slideno} < 27}{%
\only<\value{slideno}>{
\includegraphics[page=\value{slideno}]
{tikz/my_standalone_beamer_slides}}}
\end{overprint}
\caption{Add caption here}
\end{figure}
\end{frame}
\end{document}