我有一张想要用浮动文本、箭头和圆圈来解释的图片。为此,我考虑创建一个textblock
环境(用于放置文本)和一个图片环境(用于放置箭头和椭圆),并将其嵌套在一个onlyenv
环境中。在一个独特的框架中,我可以放置\onlyenv
任意数量的文本、箭头和圆圈,以便在图片周围移动。
预期行为:textblock
和图片环境应该只出现在环境定义的层中onlyenv
。
观察到的行为:只有图片环境遵循\onlyenv
设置。textblock
环境出现在所有图层中。
例如,考虑以下LaTeX
文件
\documentclass{beamer}
\usepackage{lipsum}
\usepackage[absolute,overlay]{textpos}
% graphical config
\setlength{\unitlength}{1cm} % set default length
\thicklines
\begin{document}
\begin{frame}{Title}
\begin{onlyenv}<+>
\begin{figure}
\vspace{3cm}
% \centering
\includegraphics[scale=0.25]{example-image-a}
\end{figure}
\begin{picture}(1,1)
\put(6.5,5){\vector(1,-1){0.85}}
\put(8.7,3.1){\oval(3.1,2.5)}
\put(8.7,3.1){\thebeamerpauses}
\end{picture}
\begin{textblock}{10}(1,3)
\lipsum[66] \thebeamerpauses
\end{textblock}
\end{onlyenv}
\begin{onlyenv}<+>
\begin{figure}
\vspace{3cm}
% \centering
\includegraphics[scale=0.25]{example-image-b}
\end{figure}
\begin{picture}(1,1)
\put(6.5,1){\vector(1,-1){0.85}}
\put(6.7,2.1){\oval(3.1,2.5)}
\put(6.7,2.1){\thebeamerpauses}
\end{picture}
\begin{textblock}{10}(1,9)
\lipsum[75] \thebeamerpauses
\end{textblock}
\end{onlyenv}
\end{frame}
\end{document}
这得出
答案1
[overlay]选项textpos
使用一种相当简单的机制来控制元素添加到输出页面的顺序。环境beamer
会执行相当复杂的操作来控制页面上的定位,而这些操作不太可能与 [overlay] 模式很好地交互。
相反,使用textpos
不带选项:\usepackage{textpos}
。在此模式下,{textblock}
环境只会向页面添加一个零尺寸框,偏移量(hpos,ypos)
相对于此框在页面上的位置。具体来说,在此模式下,textpos
添加材料时不会采取任何巧妙措施,因此不会混淆或被 beamer 混淆。
如果你将 移动{textblock}
到 的开头{frame}
,它将具有一致、可预测的位置,并写入
\begin{onlyenv}<+>
\begin{textblock}{10}(0,0)
\lipsum[66] \thebeamerpauses
\end{textblock}
\begin{figure}
....
那么您可能会得到您想要的效果。