![使用 \rowfont (tabu) 和 beamer 自动覆盖表格行](https://linux22.com/image/338889/%E4%BD%BF%E7%94%A8%20%5Crowfont%20(tabu)%20%E5%92%8C%20beamer%20%E8%87%AA%E5%8A%A8%E8%A6%86%E7%9B%96%E8%A1%A8%E6%A0%BC%E8%A1%8C.png)
我在演示文稿中有一个表格,我想在显示时为每行的文本着色。我目前正在使用 beamer 包和相关解决方案这需要指定每行的幻灯片编号。
下面是一个 MWE,说明了我当前的“手动”方法,该方法具有预期的最终结果。
\documentclass{beamer}
\usepackage{tabu}
\newcommand{\rowcolor}[1]{\rowfont{\leavevmode\temporal<#1>{\color{white}}{\color{blue}}{\color{normal text.fg}}}}
\begin{document}
\begin{frame}{A Table}
\begin{tabu}{lll}
\rowcolor{1} cell 1 & cell 2 & cell 3\\
\rowcolor{2} cell 4 & cell 5 & cell 6\\
\rowcolor{3} cell 7 & cell 8 & cell 9
\end{tabu}
\end{frame}
\end{document}
我尝试将 \rowcolor 函数包含在 \everyrow 函数中
...
\everyrow{\rowcolor{+}}
\begin{tabu}{lll}
...
然而,显然 \rowfont 将其参数插入到行的每个单元格中前内容由 beamer 进行评估,因此 <+> 规范将针对每个单元格增加,而不仅仅是针对每一行。
有没有办法增加幻灯片编号前\rowfont 是否执行?或者是否有更好的方法来自动增加幻灯片,而不必为每行明确指定幻灯片编号?
答案1
类似这样的方法可能会奏效(需要> = 2次编译才能获得正确结果):
\documentclass{beamer}
\usepackage{tabu}
\usepackage{totcount}
\newtotcounter{totalrows}
\begin{document}
\begin{frame}
\frametitle{A Table}
bla\pause
test\pause
\everyrow{%
\ifnum\thetaburow<\totvalue{totalrows}
\only<+>{\rowfont{\leavevmode\color{blue}}}
\fi
}
\begin{tabu}{lll}
cell 1 & cell 2 & cell 3\\
cell 4 & cell 5 & cell 6\\
cell 7 & cell 8 & cell 9
\setcounter{totalrows}{\thetaburow}
\end{tabu}
\end{frame}
\end{document}