Espaçamento entre linhas dentro de tabelas

Os mecanismos do (La)TeX para manter os espaços entre linhas (as “entrelinhas”) se baseia no construtor de parágrafos do TeX, que compara a forma de linhas consecutivas e ajusta o espaço entre elas.

Esses mecanismos não podem funcionar exatamente da mesma maneira quando o (La)TeX está construindo uma tabela, porque o construtor de parágrafo não consegue ver as linhas propriamente ditas. Como resultado disso, as tabelas, às vezes, são compostas com linhas desconfortavelmente próximas (ou, ocasionalmente, ridiculamente afastadas).

As prensas tradicionais (com tipos móveis de metal) ajustariam o espaçamento entre linhas de uma tabela usando um “strut” (um espaçador de metal). Um usuário do TeX pode fazer exatamente a mesma coisa: a maioria dos pacotes de macro define um comando \strut, que define um espaço apropriado para o tamanho do texto em questão; colocar um comando \strut no final de uma linha problemática é a solução mais simples para o problema — se funcionar. Outras soluções abaixo são específicas do LaTeX, mas algumas podem ser traduzidas de forma simples para comandos do Plain TeX.

Se sua tabela exibir um problema sistemático (ou seja, cada linha está errada na mesma quantidade) use o \extrarowheight, que é definido pelo pacote array:

\usepackage{array}% in the preamble
...
\setlength{\extrarowheight}{length}
\begin{tabular}{....}

Para corrigir uma única linha cujo desajuste não seja corrigido por um comando \strut , você pode definir o seu próprio, usando \rule{0pt}{length} — que é uma aproximação do comando que fica dentro de um \strut. O pacote bigstrut define um comando strut que você pode usar para este propósito: \bigstrut por si só abre espaço acima e abaixo da linha em questão; \bigstrut[t] abre espaço acima da linha, e \bigstrut[b] abre espaço abaixo da linha.

Soluções gerais estão disponíveis, no entanto. O pacote tabls gera automaticamente um "strut" de tamanho apropriado no final de cada linha. Suas desvantagens são que ele é muito lento na operação (já que ele fica no caminho de tudo dentro das tabelas) e sua (falta de) compatibilidade com outros pacotes.

O pacote makecell fornece um comando \gape que pode ser usado para aplicar expansão de “strut” para uma única célula de uma tabela:

\begin{tabular}{lll}
  ... & \gape{cell contents} & ... \\
  ...
\end{tabular}
O comando similar \Gape, do mesmo pacote, fornece a mesma função, mas com argumentos opcionais que permitem ajustar os espaços superior e inferior. Para ajustar todas as células em tabelas inteiras, o \setcellgapes{‹value›} define o valor de ajuste (um argumento opcional de “t” ou “b” restringe o ajuste da parte superior ou inferior de cada célula, respectivamente). Depois de dado o comando \setcellgapes, o comando \makegapedcells ativa a expansão da célula, e o \nomakegapedcells a desativa novamente.

O pacote cellspace faz o trabalho (possivelmente inferior) definindo um novo tipo de coluna “S” de tabela/matriz, que você aplica a cada especificação de coluna. Então, por exemplo,

\begin{tabular}{l l l p{3cm}}
tornar-se-ia
\begin{tabular}{Sl Sl Sl Sp{3cm}}
e assim por diante. Esta técnica promete não interferir tanto com outros pacotes, mas este autor não ouviu nenhum relato do campo.

O pacote booktabs vem com um ensaio instigante sobre como as tabelas devem ser desenhadas. Como os problemas de espaçamento entre linhas de tabelas aparecem mais frequentemente em colisões com traços, a tese do autor, de que os usuários do LaTeX tendem muito frequentemente a colocar traços em suas tabelas, é interessante. O pacote fornece comandos de traço para apoiar o esquema do autor, mas lida com o espaçamento entre linhas também. A versão mais recente do booktabs ostenta compatibilidade com pacotes tais como o longtable.

array.sty
Distributed as part of 2etools
bigstrut.sty
bigstrut
booktabs.sty
booktabs
cellspace.sty
cellspace
makecell.sty
makecell
tabls.sty
tabls

This answer last edited: 2011-05-02


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