如何让一个命令对表格某一行的所有元素生效?

如何让一个命令对表格某一行的所有元素生效?

我正在考虑一些类似于\rowfonttabu\rowcolor的东西xcolor,但要在表格标准环境中工作。

我不知道这是否是一个合理的愿望,就像在立柱的情况下一样。我认为目前还没有实施任何类似的事情。

答案1

\rowfontand \rowcolor(来自colortblnot xcolor)使用这里显示的相同机制,您可以隐藏一些语法,但这只是语法糖。

在此处输入图片描述

\documentclass{article}

\usepackage{array}

\begin{document}

\let\zz\relax
\begin{tabular}{>{\zz}c | >{\zz}l |  >{\zz}c}
aaa & bbb & ccc\\
\noalign{\global\let\zz\bfseries}
aaa & bbb & ccc\\
\noalign{\global\let\zz\relax}
aaa & bbb & ccc\\  
\noalign{\global\let\zz\Large}
aaa & bbb & ccc\\
\noalign{\global\let\zz\relax}
aaa & bbb & ccc\\  
\end{tabular}
\end{document}

答案2

对 David 的回答做了一点补充。我尝试保留经典的array语法。但是,我无法避免使用新的列类型。第二个限制是\rowstyle只能管理一个宏作为输入。有什么建议吗?

\documentclass{article}

\let\zz\relax
\newcommand\rowstyle[1]{\noalign{\global\let\zz #1}}
\def\mytabnewline{\global\let\zz\relax\tabularnewline}
\newcolumntype{z}{>{\zz\let\\\mytabnewline}c}

\begin{document}

\begin{tabular}{zzz}
aaa & bbb & ccc\\
\rowstyle{\bfseries}
aaa & bbb & ccc\\
\rowstyle{\Large}
aaa & bbb & ccc \\
\end{tabular}

\end{document}

相关内容