我在 Beamer 演示文稿中有表格,我想使用叠加规范按顺序(不一定按行顺序)突出显示表格行。因此,我希望能够编写类似于以下的代码:
\begin{tabular}
\color<1>{red}
Row 1 & Row 1 \\
\color<2>{red}
Row 2 & Row 2
\end{tabular}
效果是第一张幻灯片中第 1 行以红色突出显示,第二张幻灯片中第 2 行以红色突出显示。
我使用tabu
带有dcolumn
类型列的环境。以下是有关我迄今为止发现的一些其他详细信息:
- 在另一篇帖子
dcolcolor
我找到了定义能够为文本着色的命令的代码dcolumn
。 - 为了给整行的文本着色而无需单独指定每个单元格,我使用了
\rowfont
fromtabu
。 - 为了使
\rowfont{\dcolcolor{...}}
覆盖规范感知,我尝试遵循 beamer 用户指南第 9.6.1 节中的说明。
但是,我无法让它工作。因此,我尝试使用only
on\rowfont{...}
而不尝试定义新的、可感知覆盖规范的命令,结果出现了错误。以下是 MWE:
\documentclass{beamer}
\usepackage{dcolumn}
\usepackage{tabu}
\newcolumntype{d}[1]{D{.}{.}{#1}}
\makeatletter
\def\DC@endright{$\hfil\egroup\@dcolcolor\box\z@\box\tw@\dcolreset}
\def\dcolcolor#1{\gdef\@dcolcolor{\color{#1}}}
\def\dcolreset{\dcolcolor{black}}
\dcolcolor{black}
\makeatother
\begin{document}
\begin{frame}
\begin{tabu}{ld{2}d{2}}
% All of row 1 should be red on all slides
\rowfont{\color{red}\dcolcolor{red}}
Row 1 & 1.234 & 1.234 \
% All of row 2 should be red on second slide only
\only<2>{\rowfont{\color{red}\dcolcolor{red}}}
Row 2 & 2.345 & 2.345 \\
\end{tabu}
\end{frame}
\end{document}
当我编译时,我得到了一些错误,例如
! Misplaced \noalign.
\rowfont ->\ifdim \baselineskip =\z@ \noalign
\fi {\ifnum 0=`}\fi \tabu@row@...
l.28 \end{frame}
输出结果有两页。第一页是正确的,第一行被高亮显示(尽管第一列似乎没有左对齐)。在第二页上,第一行按预期高亮显示,但第二行只高亮显示数字,而不是第一列。以下是屏幕截图:
答案1
\rowfont{\only<2>{\color{red}\dcolcolor{red}}}