即使添加了类选项 ,我也无法使用 Beamer 将内容顶部对齐t
。理想情况下,我希望无论从什么内容开始,内容都能刷新到相同的垂直高度。但以itemize
或显示方程式开头的幻灯片在框架标题和内容之间有一些额外的垂直空间。没有成功,我尝试添加\vspace{-\topsep}
beforeitemize
和\vspace{-\abovedisplayskip}
before align*
。
最后,我想使用 Metropolis 主题,但我怀疑问题与主题无关。
梅威瑟:
\documentclass[t]{beamer}
% \usetheme[sectionpage=none]{metropolis}
\begin{document}
\begin{frame}{First frame}
Hello, world!
\end{frame}
\begin{frame}{Second frame}
% \vspace{-\topsep}
\begin{itemize}
\item Hello, world!
\end{itemize}
\end{frame}
\begin{frame}{Third frame}
% \vspace{-\abovedisplayskip}
\begin{align*}
Hello, world!
\end{align*}
\end{frame}
\end{document}
答案1
我不确定是否有一个好的方法来实现这一点。另外,我不知道哪个标签或环境导致了这种情况(据我所知,不同主题可能会有所不同),但我认为您的\vspace{-...}
方法可能是目前可行的方法。
在这种情况下,我通常会TikZ
在相关页面(或幻灯片)上绘制一个网格,并相应地调整我的值:
\documentclass[t]{beamer}
\usepackage{tikz}
\begin{document}
\newcommand\drawgrid{
\tikzset{strong lines/.style={black!25, very thin}}
\begin{tikzpicture}[remember picture, overlay]
\draw[style=strong lines,step=2.5mm]
(current page.south west) grid (current page.north east);
\end{tikzpicture}}
\begin{frame}[t]{First frame}
\drawgrid
Hello, world!
\end{frame}
\begin{frame}{Second frame}
\drawgrid
\vspace{-.6ex}
\begin{itemize}
\item Hello, world!
\end{itemize}
\end{frame}
\begin{frame}{Third frame}
\drawgrid
\vspace{-5.1ex}
\begin{align*}
Hello, world!
\end{align*}
\end{frame}
\end{document}
我承认这不是一个优雅的解决方案,但在紧急情况下应该有用。我必须让其他人找出导致问题的原因以及如何“正确”地修复它。
答案2
\vspace{}
可能是可行的方法。疯狂的方法(按照这个答案) 似乎是显示的方程式开始一个新段落(因此,vspace{-\baselineskip}
),然后添加跳过(因此,\vspace{-\abovedisplayskip}
)。至于列表,\vspace{-\topsep}
是因为在假设的前面的段落中添加了空格。但是,背后的逻辑\vspace{-\itemsep}
让我难以理解。
\documentclass[t]{beamer}
% \usetheme[sectionpage=none]{metropolis}
\begin{document}
\begin{frame}{First frame}
Hello, world!
\end{frame}
\begin{frame}{Second frame}
\vspace{-\topsep}\vspace{\itemsep}
\begin{itemize}
\item Hello, world!
\end{itemize}
\end{frame}
\begin{frame}{Third frame}
\vspace{-\baselineskip}\vspace{-\abovedisplayskip}
\begin{align*}
Hello, world!
\end{align*}
\end{frame}
\end{document}