为了防止内容在beamer
演示文稿的幻灯片之间跳转,我想使用overlayarea
环境。通过反复试验,可以确定要保留的适当空间量。但是,我想自动确定它。为此,我想确定一个或多个环境的高度block
。
在以下示例中,“某些文本”的位置在第一张幻灯片和第二张幻灯片之间发生变化。我希望它不移动。为此,我想将块 1 和块 2 括在 中overlayarea
。我想确定块 1 和块 2 的高度以及它们之间的垂直空间,然后将其用作 的高度参数overlayarea
。
\documentclass{beamer}
\mode<presentation>
{
\usetheme{Frankfurt}
}
\begin{document}
\begin{frame}
Some text
\only<1>{
\begin{block}{Block 1}
Other text
\end{block}
\begin{block}{Block 2}
Still more text
\end{block}
}
\only<2>{
\begin{block}{Block 3}
Yet more text
\end{block}
}
\end{frame}
\end{document}
这就是我想要的结果:
\documentclass{beamer}
\mode<presentation>
{
\usetheme{Frankfurt}
}
\begin{document}
\begin{frame}
Some text
\begin{overlayarea}{\textwidth}{\myheight} %\myheight is the quantity to be determined
\only<1>{
\begin{block}{Block 1}
Other text
\end{block}
\begin{block}{Block 2}
Still more text
\end{block}
}
\only<2>{
\begin{block}{Block 3}
Yet more text
\end{block}
}
\end{overlayarea}
\end{frame}
\end{document}
注意:这个问题是关于如何找到的宽度block
,但我还没有找到任何关于找到高度的信息。
答案1
您可以通过将内容装箱,然后添加箱子的深度和高度来获得总高度:
\setbox0=\vtop{%
\begin{block}{Block 1}
Other text
\end{block}%
}
\setlength{\myheight}{\ht0}%
\addtolength{\myheight}{\dp0}%
代码:
\documentclass{beamer}
\mode<presentation>
{
\usetheme{Frankfurt}
}
\newlength{\myheight}
\begin{document}
\setbox0=\vtop{%
\begin{block}{Block 1}
Other text
\end{block}%
}
\setlength{\myheight}{\ht0}%
\addtolength{\myheight}{\dp0}%
\begin{frame}
Some text
\begin{overlayarea}{\textwidth}{\myheight} %\myheight is the quantity to be determined
\only<1>{
\begin{block}{Block 1}
Other text
\end{block}
\begin{block}{Block 2}
Still more text
\end{block}
}
\only<2>{
\begin{block}{Block 3}
Yet more text
\end{block}
}
\end{overlayarea}
\end{frame}
\end{document}
答案2
不要将\only
命令写在块外,\uncover
而应该将\visible
命令写入块内。这样 latex 会保留足够的空间。
在您的示例中,我不清楚您想要保持哪个块固定。