我想用答案代替填空题。我的问题与这个问题有关:如何进行填空演示 但我的愿望清单上还有一些额外的规格:
我想替换下划线,所以我真正想要的是替换空白,而不是填空。
我想在空白处水平居中放置一个问号(这样学生就能更清楚地知道它的位置)。我会给问号和空白行涂上颜色。
我不希望从覆盖过渡时出现任何跳跃。
我希望该命令可以在数学内部和外部发挥作用。
我将我的幼稚尝试粘贴在下面。它有几个问题:我不知道如何在空白处放置一个水平居中的问号;最后一个覆盖层上有跳跃,我猜是因为下划线占用了一些垂直空间。
\documentclass{beamer}
\usepackage{ulem}
\newcommand{\doblankQ}[1]{\alert<.(1)>{\alt<+->{#1}{\textcolor{orange} {\uline{\phantom{#1}}}}}}
\begin{document}
\begin{frame}[<+->]
\begin{itemize}
\item One plus one is \doblankQ{two}.
\item And in math: $ 1 + 1 = \doblankQ{2}$.
\end{itemize}
\end{frame}
\end{document}
答案1
为了避免跳跃问题,您可以\smash
添加下划线以避免其影响垂直空间。
要在中间添加?
,我建议测量间隙的宽度,然后使用\makebox[<width of the gap>]{?}
而不是\phantom{#1}
:
\documentclass{beamer}
\newlength{\gapwidth}
\makeatletter
\newcommand{\doblankQ}[1]{%
\ifmmode
\if@display
\settowidth{\gapwidth}{$\displaystyle #1$}%
\else
\settowidth{\gapwidth}{$#1$}%
\fi
\else
\settowidth{\gapwidth}{#1}%
\fi
\alert<.(1)>{%
\alt<+->{%
#1%
}{%
\vphantom{#1}\smash{\underline{\makebox[\gapwidth]{?}}}%
}%
}%
}
\makeatother
\begin{document}
\begin{frame}[<+->]
\begin{itemize}
\item One plus one is \doblankQ{two}.
\item And in math: $ 1 + 1 = \doblankQ{2}$.
\item $\doblankQ{E(X_i)=40.}$
\end{itemize}
\end{frame}
\end{document}