Há algum tempo, @robintw fez uma pergunta prática: Deixe a primeira linha da tabela em negrito
Ele usa o pacote array para injetar código de formatação de maneira inteligente nas colunas da linha do cabeçalho.
Solução inteligente de formatação de linha de tabela
\usepackage{array}
\newcolumntype{$}{>{\global\let\currentrowstyle\relax}} % Always set currentrowstyle to \relax in case no \rowstyle is used
\newcolumntype{^}{>{\currentrowstyle}} % set \currentrowstyle to \bfseries or whatever (>{\bfseries}c)
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}% set global definition for \currentrowstyle
#1\ignorespaces
}
O Código Problemático
Eu gostaria de ver suporte para múltiplas colunas e múltiplas linhas. Eu tentei o seguinte com base emhttps://tex.stackexchange.com/a/4816/13552, o que não funciona.
\documentclass{article}
\usepackage{array}
\newcolumntype{$}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
#1\ignorespaces
}
\begin{document}
\begin{tabular}{$l^c^c^r}
\rowstyle{\bfseries}
%\multicolumn{2}{^l}{span2} & \multicolumn{2}{^r}{span2} \\ % Uncomment this to see problem
col1 & col2 & col3 & col4 \\
dat1 & dat2 & dat3 & dat4 \\
\end{tabular}
\end{document}
Responder1
O problema tem a ver com o fato de que o $>
tipo de coluna nunca é usado na primeira linha da tabela.
Você pode resolver isso usando:
\multicolumn{2}{$l}{}
Para o primeiro conjunto de colunas estendidas. No entanto, o problema é que as coisas são feitas na ordem errada. \rowstyle{\bfseries}
está agora antes do início da primeira célula. Para resolver isso, você pode incluí-lo na especificação da primeira célula
\multicolumn{2}{$l}{\rowstyle{\bfseries}span2}
que produz
que, se bem entendi, é o resultado esperado.
Código completo
\documentclass{article}
\usepackage{array}
\newcolumntype{$}{>{\global\let\currentrowstyle\relax}}
\newcolumntype{^}{>{\currentrowstyle}}
\newcommand{\rowstyle}[1]{\gdef\currentrowstyle{#1}%
#1\ignorespaces
}
\begin{document}
\begin{tabular}{$l^c^c^r}
\multicolumn{2}{$l}{\rowstyle{\bfseries}span2} & \multicolumn{2}{^r}{span2} \\ % Uncomment this to see problem
col1 & col2 & col3 & col4 \\
dat1 & dat2 & dat3 & dat4 \\
\end{tabular}
\end{document}