中间有一个问题的替代填空题

中间有一个问题的替代填空题

我想用答案代替填空题。我的问题与这个问题有关:如何进行填空演示 但我的愿望清单上还有一些额外的规格:

  1. 我想替换下划线,所以我真正想要的是替换空白,而不是填空。

  2. 我想在空白处水平居中放置一个问号(这样学生就能更清楚地知道它的位置)。我会给问号和空白行涂上颜色。

  3. 我不希望从覆盖过渡时出现任何跳跃。

  4. 我希望该命令可以在数学内部和外部发挥作用。

我将我的幼稚尝试粘贴在下面。它有几个问题:我不知道如何在空白处放置一个水平居中的问号;最后一个覆盖层上有跳跃,我猜是因为下划线占用了一些垂直空间。

\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}

在此处输入图片描述

相关内容