Mesclando células em uma coluna de uma tabela

É fácil inventar uma tabela que necessite de uma célula que abranja várias linhas. Um exemplo é quando a coluna mais à esquerda rotula o restante da tabela; isso pode ser feito (em casos simples) usando uma separação diagonal na célula do canto, mas essa técnica limita rigorosamente o que pode ser usado como conteúdo da célula.

O pacote multirow permite que você construa essas células de múltiplas linhas de uma maneira muito simples. Para o uso mais simples possível, pode-se escrever:

\begin{tabular}{|c|c|}
\hline
\multirow{4}{*}{Common g text} 
      & Column g2a\\
      & Column g2b \\
      & Column g2c \\
      & Column g2d \\
\hline
\end{tabular}
e o multirow vai colocar “Common g text” no centro vertical do espaço definido pelas outras linhas. Observe que as linhas que não contêm a especificação de “várias linhas” devem ter células vazias onde a múltipla linha será exibida.

O “*” pode ser substituído por uma especificação de largura de coluna. Nesse caso, o argumento pode conter quebras de linha forçadas:

\begin{tabular}{|c|c|}
\hline
\multirow{4}{25mm}{Common\\g text} 
      & Column g2a\\
      & Column g2b \\
      & Column g2c \\
      & Column g2d \\
\hline
\end{tabular}
Um efeito similar (com a possibilidade de um pouco mais de sofisticação) pode ser alcançado colocando-se uma tabela menor que alinha o texto dentro de uma \multirow com um *.

O comando \multirow também pode ser usado para escrever rótulos verticalmente em um ou outro lado de uma tabela (com a ajuda do pacote graphics ou graphicx, que fornecem o comando \rotatebox):

\begin{tabular}{|l|l|}
\hline
\multirow{4}{*}{\rotatebox{90}{hi there}}
      & Column g2a\\
      & Column g2b \\
      & Column g2c \\
      & Column g2d \\
\hline
\end{tabular}
(que resulta em texto de baixo para cima; use o ângulo de -90 para texto de cima para baixo, é claro).

Para fazer uma célula multilinha \multicolumn em uma tabela, você tem que incluir um \multirow dentro de um \multicolumn — o contrário não funciona; então:

\begin{tabular}{|c|c|c|}\hline
\multicolumn{2}{|c|}{\multirow{2}{*}{combined cells}}
     &top right\\ \cline{3-3}
\multicolumn{2}{|c|}{}
     &middle right\\ \hline
bottom left
     &bottom center
     &bottom right\\ \hline
\end{tabular}
O Multirow está configurado para interagir com o pacote bigstrut (que também é discutido na resposta sobre Espaçamento entre linhas em tabelas). Você usa um argumento opcional do comando \multirow para dizer quantas das linhas na multilinha foram abertas com o \bigstrut.

A documentação, tanto do multirow quanto do bigstrut pode ser encontrada, como comentários, nos próprios arquivos dos pacotes.

bigstrut.sty
bigstrut
multirow.sty
multirow


Do you have any question? Ask on: latex.net.br - we love qood questions!