在覆盖命令中使用 \multicolumn 和 beamer

在覆盖命令中使用 \multicolumn 和 beamer

我想要一个\multicolumn取决于幻灯片的条件命令,因此我将其放在 alt 或 only 命令中,如下所示:

\documentclass{beamer}
\usepackage[latin1]{inputenc}
\begin{document}
\begin{frame}
\begin{equation*}
  \begin{array}{rlll}
  a&b&c&d\\
  A&\multicolumn{3}{l}{BCD}\\ %this is OK
   A&B&C&D\\ %as is this obviously...
  A&\only<-+>{\multicolumn{3}{l}{BCD}}\only<.->{B&C&D}\\ %but this
  A&\alt<-+>{\multicolumn{3}{l}{BCD}}{B&C&D}\\% and this do not compile
  A&\multicolumn{3}{l}{\only<-+>{BCD}\only<+->{\begin{tabular}{lll}B&C&D\\\end{tabular}}} %this line works, but, of course, gives the wrong alignment...
\end{array}
\end{equation*}
\end{frame}
\end{document}

问题似乎是 LaTeX 希望命令\multicolumn出现在 & 或换行符之后的第一个内容……但是,正如最后一行所示,我不知道如何与其他列对齐……

目前,我正在使用该解决方案,\hspace*但这是一个有点丑陋的黑客攻击。

关于如何让它正常工作,我有什么想法吗?

答案1

我尝试\expandafter在周围撒一些神奇的仙尘,看看是否\only可以在“&”符号之前处理该部分,但结果却出现了错误。

这仅需要一个重复标记:

A\alt<-+>{&\multicolumn{3}{l}{BCD}}{&B&C&D}\

我无法让您的\only<-+>...\only<.->构造与 s 配合使用+。它确实适用于显式数字。但我认为,如果构造\alt有效,您会认为它是可取的。

完整示例:

\documentclass{beamer}
\usepackage[latin1]{inputenc}
\begin{document}
\begin{frame}
\begin{equation*}
  \begin{array}{rlll}
   a&b&c&d\\
   A&\multicolumn{3}{l}{BCD}\\ %this is OK
   A&B&C&D\\ %as is this obviously...
   A\only<1>{&\multicolumn{3}{l}{BCD}}\only<2->{&B&C&D} \\% this works now, but not with -+ etc.
   A\alt<-+>{&\multicolumn{3}{l}{BCD}}{&B&C&D}\\% this works even with -+
\end{array}
\end{equation*}
\end{frame}
\end{document}

答案2

我不太确定您想要创建什么样的布局,但我想您想要某种出现/扩展的东西。

所以对我来说这是可行的:

    \begin{frame}

      \begin{tabular}{rlll} % works also in the array/equation construct
      a&b&c&d\\
      A&\multicolumn{3}{l}{BCD}\\ %this is OK
       A&B&C&D\\ %as is this obviously...
       \only<2>{A & \multicolumn{3}{l}{BCD}\\} \only<3>{A&B&C&D\\}  % slide 2 appearing slide 3 expanding
      \only<4>{A & \multicolumn{3}{l}{ BCD}\\} \only<5>{A&B&C&D\\} %  and this do not compile
      %A& \multicolumn{3}{l}{\only<-+>{BCD} \only<+->{\noindent\begin{tabular}{lll}B&C&D\\\end{tabular}}} %
% not sure what to do with that line so im dropping it
      \end{tabular}

    \end{frame}

所以我不确定这是否符合你的期望,但它确实有效。(这不是非常有效的代码,因为你必须每次都输入 A 列。)

相关内容