![在 beamer 中添加 onslide 命令时,公式和 itemize(使用 enumitem)之间出现空格](https://linux22.com/image/478405/%E5%9C%A8%20beamer%20%E4%B8%AD%E6%B7%BB%E5%8A%A0%20onslide%20%E5%91%BD%E4%BB%A4%E6%97%B6%EF%BC%8C%E5%85%AC%E5%BC%8F%E5%92%8C%20itemize%EF%BC%88%E4%BD%BF%E7%94%A8%20enumitem%EF%BC%89%E4%B9%8B%E9%97%B4%E5%87%BA%E7%8E%B0%E7%A9%BA%E6%A0%BC.png)
我遇到了这种情况:当我使用 enumitem 包时,公式后面会添加一个空格,并且 onslide 命令在 itemize 之前结束。有没有人知道如何去除公式后面的空格以及它为什么会出现在那里?我尝试过在有和没有 enumitem 包的情况下添加 %,为 itemize 添加 nosep 选项,但空格仍然存在。
\documentclass{beamer}
\usepackage{enumitem}
\usepackage{blindtext}
\begin{document}
\begin{frame}
\blindtext
\begin{equation*}
A=A
\end{equation*}
\begin{itemize}
\item AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
\end{itemize}
\blindtext
\end{frame}
\begin{frame}
\blindtext
\onslide<2->{
\begin{equation*}
A=A
\end{equation*}
}
\begin{itemize}
\item AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
\end{itemize}
\blindtext
\end{frame}
\end{document}
答案1
使用 \align 代替 \equation 并将 \onslide 放在 align 环境中可以解决问题。但仍然对这种行为的起源感到困惑。
\documentclass{beamer}
\usepackage{enumitem}
\usepackage{blindtext}
\begin{document}
\begin{frame}
\blindtext
\begin{align*}
\onslide<2->{A=A}
\end{align*}
\begin{itemize}
\item AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
\end{itemize}
\blindtext
\end{frame}
\end{document}
答案2
编辑:(更接近您想要的结果) 经过改进,可以很好地处理可以在小页面中添加的所有内容。
\documentclass{beamer} \usepackage{enumitem} \usepackage{blindtext} \usepackage{tikz}
\newsavebox{\mybox} \newcommand{\myonly}[2]{\alt<#1>{\begin{minipage}[inner sep=0,outer sep=0]{\linewidth}#2\end{minipage}}{\savebox\mybox{\vbox{\begin{minipage}[inner sep=0,outer sep=0]{\linewidth}#2\end{minipage}}}\par\rule{0pt}{\dimexpr\ht\mybox+\dp\mybox-\baselineskip}\par}} \begin{document}
\begin{frame} \blindtext[1] \begin{align*}
A&=A\\
B&=f(x)\\ \end{align*} \begin{itemize}
\item AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA \end{itemize} \blindtext[1]
\end{frame}
\begin{frame} \blindtext[1] \myonly{2-}{\begin{align*}
A&=A\\
B&=f(x)\\ \end{align*}} \begin{itemize}
\item AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA \end{itemize} \blindtext[1]
\end{frame}
\end{document}
(旧答案) 不完美但接近完美:
\documentclass{beamer}
\usepackage{enumitem}
\usepackage{blindtext}
\newsavebox{\mybox}
\newcommand{\myonly}[2]{\alt<#1>{#2}{\savebox\mybox{\vbox{#2}}\vspace*{\dimexpr\ht\mybox+\dp\mybox}\par}
}
\begin{document}
\begin{frame}
\blindtext
\begin{equation*}
A=A
\end{equation*}
\begin{itemize}
\item AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
\end{itemize}
\blindtext
\end{frame}
\begin{frame}
\blindtext
\myonly{2-}{\begin{equation*}
A=A
\end{equation*}}
\begin{itemize}
\item AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
\end{itemize}
\blindtext
\end{frame}
\end{document}