オーバーレイを介してテーブル内のテキストを置き換えると、テーブルが移動する: beamer

オーバーレイを介してテーブル内のテキストを置き換えると、テーブルが移動する: beamer

私はBeamerを使っていて、オーバーレイを介して表の単語を変更しようとしています。そのため、一部のスライドには「定数」が表示され、他のスライドには「非定数」が表示される必要があります。同じボックス。(この同じボックスが、この質問を他の質問と異なるものにしていると思います。)

onslide で実行すると、beamer は両方の単語にスペースを確保しますが、これは私が望んでいることではなく、醜い表のスペースになります。一方、only で実行すると、beamer は単語の変更中に表を下に移動します。私は後者の現象の最小限の例だと考えているものを含めています。(前者は標準です。) 表の最初の行 (問題のある行の上にある行) を削除し、代わりに問題のある行の下に行を追加すると、問題はなくなることに注意してください。(人々がこれを理解するのに役立つ場合に備えて報告します。)

ありがとう!

\documentclass[xcolor=table]{beamer}
\usetheme{Frankfurt}
\usecolortheme{crane}
\begin{document}
\begin{frame}[t]{Test}
\onslide<2->{
\begin{center}
\begin{tabular}{| c || c c c c |}
\hline
& P4 & \onslide<1->{P3} &\onslide<1->{P2} & \onslide<1->{P1} \\ \hline
\only<6>{\cellcolor{yellow}}  Cognition 1 & \only<6>
{\cellcolor{yellow}} $(a,c_{*})$ & \only<6>{\cellcolor{yellow}}
\onslide<1->{Constant} & \only<6>{\cellcolor{yellow}} \onslide<1-
{Constant} & \only<6>{\cellcolor{yellow}} \onslide<1->{Constant} \\
\only<5>{\cellcolor{yellow}} \only<1-7>{Cognition 2}\only<8>
{\alert{Cognition 3}}\only<9->{\alert{Cognition 4}} & \only<5>
{\cellcolor{yellow}} $(a,c_{*})$ & \only<5>{\cellcolor{yellow}} 
\onslide<1->{$(a,b_{*})$} & \only<5>{\cellcolor{yellow}} \only<1-7,9>
{Constant}% 
\only<8>{\alert{Non-Constant}} & \only<5>{\cellcolor{yellow}} 
\only<1-8>{Constant}%
\only<9->{\alert{Non-Constant}} \\
\hline
\end{tabular}   
\end{center}
}
\end{frame}
\end{document}

答え1

コメントで述べたように、問題の原因はテーブルを壊すことです。次の 2 つの方法で解決できます。

  • 小さいフォントを使用する
  • 表の列間のスペースのサイズを縮小します。

\setlength\tabcolsep{3pt}を使用すると満足のいく結果が得られるようです:

\documentclass[xcolor=table]{beamer}
%\usetheme{Frankfurt}
%\usecolortheme{crane}
\begin{document}
\begin{frame}[t]{Test}
\onslide<2->{
\begin{center}\setlength\tabcolsep{3pt}
\begin{tabular}{| c || c c c c |}
\hline
& P4 & \onslide<1->{P3} &\onslide<1->{P2} & \onslide<1->{P1} \\ \hline
\only<6>{\cellcolor{yellow}}  Cognition 1 & \only<6>
{\cellcolor{yellow}} $(a,c_{*})$ & \only<6>{\cellcolor{yellow}}
\onslide<1->{Constant} & \only<6>{\cellcolor{yellow}} \onslide<1-
{Constant} & \only<6>{\cellcolor{yellow}} \onslide<1->{Constant} \\
\only<5>{\cellcolor{yellow}} \only<1-7>{Cognition 2}\only<8>
{\alert{Cognition 3}}\only<9->{\alert{Cognition 4}} & \only<5>
{\cellcolor{yellow}} $(a,c_{*})$ & \only<5>{\cellcolor{yellow}}
\onslide<1->{$(a,b_{*})$} & \only<5>{\cellcolor{yellow}} \only<1-7,9>
{Constant}%
\only<8>{\alert{Non-Constant}} & \only<5>{\cellcolor{yellow}}
\only<1-8>{Constant}%
\only<9->{\alert{Non-Constant}} \\
\hline
\end{tabular}
\end{center}
}
\end{frame}
\end{document}

補遺: 上記の可能な解決策の他に、もう 1 つ挙げてみましょう。

  • フレームのテキスト幅を局所的に拡大します。

これは別の方法でも実現できます。1つの可能性は、パッケージ˛changepage and its macroadjustwidth`を使用することです。この場合、コードは次のようになります。

\documentclass[xcolor=table]{beamer}
%\usetheme{Frankfurt}
%\usecolortheme{crane}

\usepackage{changepage}

\begin{document}
\begin{frame}[t]{Test}
\onslide<2->{

\begin{adjustwidth}{-1em}{-1em}
\begin{center}
\begin{tabular}{| c || c c c c |}
\hline
& P4 & \onslide<1->{P3} &\onslide<1->{P2} & \onslide<1->{P1} \\ \hline
\only<6>{\cellcolor{yellow}}  Cognition 1 & \only<6>
{\cellcolor{yellow}} $(a,c_{*})$ & \only<6>{\cellcolor{yellow}}
\onslide<1->{Constant} & \only<6>{\cellcolor{yellow}} \onslide<1-
{Constant} & \only<6>{\cellcolor{yellow}} \onslide<1->{Constant} \\
\only<5>{\cellcolor{yellow}} \only<1-7>{Cognition 2}\only<8>
{\alert{Cognition 3}}\only<9->{\alert{Cognition 4}} & \only<5>
{\cellcolor{yellow}} $(a,c_{*})$ & \only<5>{\cellcolor{yellow}}
\onslide<1->{$(a,b_{*})$} & \only<5>{\cellcolor{yellow}} \only<1-7,9>
{Constant}%
\only<8>{\alert{Non-Constant}} & \only<5>{\cellcolor{yellow}}
\only<1-8>{Constant}%
\only<9->{\alert{Non-Constant}} \\
\hline
\end{tabular}
\end{center}
\end{adjustwidth}
}
\end{frame}
\end{document}

関連情報