Resumo
Esta aula estende a tabela legível da aula anterior aos casos que a grade simples não resolve. Ensina a unir células na horizontal com \multicolumn, para agrupar cabeçalhos sob um filete parcial e para mudar o alinhamento de uma só célula, e deduz para onde vai a largura que sobra de um cabeçalho agrupado; ensina a unir células na vertical com \multirow e a decidir quando convém evitá-lo; compara três maneiras de dar a uma tabela a largura da linha (o tabularx com sua coluna X, o tabular* com \extracolsep, e a escala com \resizebox, que se desaconselha); compõe tabelas de várias páginas com o longtable, com seu cabeçalho repetido e as passadas de que precisa; apresenta a rotação de páginas para tabelas muito largas; gera tabelas a partir de um arquivo de dados com o csvsimple e o pgfplotstable, criando o arquivo com filecontents; mostra o tabularray como alternativa moderna; e termina com os erros típicos, lidos em logs reais.
Objetivos de aprendizagem
- Construir cabeçalhos agrupados com
\multicolumne\cmidrule, contar as células de cada linha e prever o resultado quando a conta não bate. - Decidir entre
\multirowe a célula vazia da tradição do booktabs, justificando a escolha pela leitura. - Ajustar uma tabela à largura da linha com o tabularx ou com o
tabular*, e explicar por que não se escala com\resizebox. - Compor com o longtable uma tabela de várias páginas com cabeçalho e rodapé próprios, interpretar seus avisos e saber por que ela não pode ir dentro de um flutuante.
- Gerar uma tabela a partir de um arquivo de dados e explicar o que se ganha com uma única origem dos dados.
Células que abrangem colunas
O comando \multicolumn{n}{alinhamento}{texto} ocupa o lugar de n células contíguas de uma linha e as substitui por uma só, com o alinhamento indicado no segundo argumento, que se escreve como no preâmbulo da tabela (l, c, r, p{…}, e também @{}). Daí decorre uma regra de contagem que o autor deve verificar em cada linha: a soma das células simples e das larguras declaradas em cada \multicolumn deve ser, no máximo, o número de colunas do preâmbulo.
Mudar o alinhamento de uma só célula
O uso mais modesto de \multicolumn abrange uma só coluna: \multicolumn{1}{c}{…} não une nada, mas impõe a essa célula um alinhamento diferente do de sua coluna. É a maneira de centralizar o cabeçalho de uma coluna de números alinhados à direita, ou de alinhar à direita o rótulo de uma linha de total, que deve ficar junto do seu número.
\documentclass{article}\usepackage{fontspec}\usepackage[brazilian]{babel}\usepackage{booktabs}\begin{document}\begin{tabular}{llr}\topruleRubrica & Detalhamento & \multicolumn{1}{c}{Valor} \\\midruleViagens & Duas visitas ao arquivo & 1\,200 \\Material & Papel e discos externos & 300 \\Serviços & Digitalização de acervos & 850 \\\midrule\multicolumn{2}{r}{Total} & 2\,350 \\\bottomrule\end{tabular}\end{document}O cabeçalho “Valor” fica centralizado sobre uma coluna que continua alinhada à direita, e o rótulo “Total”, que abrange as duas primeiras colunas, alinha-se à direita, junto do seu número.
Cabeçalhos agrupados
Quando várias colunas compartilham uma categoria, a tabela ganha com um cabeçalho de dois níveis: em cima, o nome do grupo, que abrange suas colunas; embaixo, o de cada coluna. Entre os dois níveis, o booktabs oferece o filete parcial \cmidrule{2-3}, que sublinha só as colunas 2 a 3; com as opções (lr), \cmidrule(lr){2-3}, o filete é encurtado um pouco à esquerda e à direita, de modo que dois filetes contíguos não se toquem e o olho veja dois grupos.
\documentclass{article}\usepackage{fontspec}\usepackage[brazilian]{babel}\usepackage{booktabs}\begin{document}\begin{tabular}{lrrrr}\toprule& \multicolumn{2}{c}{Grupo de controle}& \multicolumn{2}{c}{Grupo experimental} \\\cmidrule(lr){2-3} \cmidrule(lr){4-5}Medição & Média & DP & Média & DP \\\midruleInicial & 52,1 & 8,3 & 51,7 & 7,9 \\Final & 54,0 & 8,1 & 61,2 & 7,4 \\\bottomrule\end{tabular}\end{document}A primeira linha tem uma célula vazia (o & inicial) e duas células de duas colunas: um mais dois mais dois, cinco, como o preâmbulo. Observe-se que a coluna do desvio padrão do grupo experimental é mais larga que a do grupo de controle.
Para onde vai a largura que sobra
A diferença de larguras do exemplo anterior não é casual. Se o texto de um \multicolumn é mais largo que a soma das colunas que abrange, a tabela precisa alargar-se, e o motor dá todo o excesso à última dessas colunas; as demais conservam sua largura natural. “Grupo experimental” é mais largo que “Média” e “DP” juntos, e a diferença vai para a segunda. Com um cabeçalho muito mais longo que seus dados, o efeito deixa de ser discreto.
\documentclass{article}\usepackage{fontspec}\usepackage[brazilian]{babel}\usepackage{booktabs}\begin{document}\begin{tabular}{lrr}\toprule& \multicolumn{2}{c}{Grupo experimental após a intervenção} \\\cmidrule(lr){2-3}Medição & Média & DP \\\midruleInicial & 51,7 & 7,9 \\Final & 61,2 & 7,4 \\\bottomrule\end{tabular}\end{document}O número da média fica longe do de seu desvio, separados por um branco que não significa nada. A correção não é tipográfica, mas de redação: um cabeçalho breve (“Experimental”) e a explicação na legenda da tabela ou no texto.
Carregando o conteúdo…